From e2d5167fd9a8d316f588f1344cf51f00b78199d6 Mon Sep 17 00:00:00 2001 From: xeolabs Date: Fri, 23 Apr 2021 01:39:31 +0200 Subject: [PATCH] ESDoc updates --- .esdoc.json | 76 +- assets/esdocTemplate/class.html | 66 + assets/esdocTemplate/css/github.css | 83 + assets/esdocTemplate/css/identifiers.css | 37 + assets/esdocTemplate/css/manual.css | 134 + .../esdocTemplate/css/prettify-tomorrow.css | 132 + assets/esdocTemplate/css/search.css | 84 + assets/esdocTemplate/css/source.css | 55 + assets/esdocTemplate/css/style.css | 609 + assets/esdocTemplate/css/test.css | 58 + assets/esdocTemplate/details.html | 95 + assets/esdocTemplate/file.html | 3 + assets/esdocTemplate/identifiers.html | 15 + assets/esdocTemplate/image/badge.svg | 17 + .../image/esdoc-logo-mini-black.png | Bin 0 -> 5651 bytes .../esdocTemplate/image/esdoc-logo-mini.png | Bin 0 -> 6504 bytes assets/esdocTemplate/image/manual-badge.svg | 17 + assets/esdocTemplate/image/search.png | Bin 0 -> 12704 bytes assets/esdocTemplate/index.html | 1 + assets/esdocTemplate/layout.html | 45 + assets/esdocTemplate/manual.html | 1 + assets/esdocTemplate/manualCardIndex.html | 14 + assets/esdocTemplate/manualIndex.html | 7 + assets/esdocTemplate/nav.html | 5 + assets/esdocTemplate/properties.html | 16 + .../esdocTemplate/script/inherited-summary.js | 28 + assets/esdocTemplate/script/inner-link.js | 32 + assets/esdocTemplate/script/manual.js | 12 + .../esdocTemplate/script/patch-for-local.js | 8 + .../script/prettify/Apache-License-2.0.txt | 202 + .../esdocTemplate/script/prettify/prettify.js | 46 + assets/esdocTemplate/script/pretty-print.js | 25 + assets/esdocTemplate/script/search.js | 117 + assets/esdocTemplate/script/test-summary.js | 54 + assets/esdocTemplate/single.html | 3 + assets/esdocTemplate/source.html | 24 + assets/esdocTemplate/summary.html | 33 + assets/esdocTemplate/test.html | 11 + assets/esdocTemplate/testInterface.html | 4 + .../AngleMeasurementsPlugin.js.json | 4208 +- .../FastNavPlugin/FastNavPlugin.js.json | 71712 +++++++++------- .../TreeViewPlugin/ModelTreeView.js.json | 23751 ++--- docs/ast/source/viewer/Viewer.js.json | 1228 +- .../scene/CameraControl/CameraControl.js.json | 61654 +++++++------ .../CameraControl/lib/CameraUpdater.js.json | 1097 +- .../MousePanRotateDollyHandler.js.json | 56083 ++++++------ .../lib/handlers/MousePickHandler.js.json | 16441 ++-- .../PointsInstancingLayer.js.json | 6208 +- ...anglesBatchingColorQualityRenderer.js.json | 8950 +- ...glesInstancingColorQualityRenderer.js.json | 25346 +++--- .../source/viewer/scene/postfx/SAO.js.json | 46 +- .../ContextMenu.js~ContextMenu.html | 2 - .../AngleMeasurement.js~AngleMeasurement.html | 2 - ...tsControl.js~AngleMeasurementsControl.html | 2 - ...entsPlugin.js~AngleMeasurementsPlugin.html | 2 - .../Annotation.js~Annotation.html | 2 - ...nnotationsPlugin.js~AnnotationsPlugin.html | 2 - .../AxisGizmoPlugin.js~AxisGizmoPlugin.html | 2 - ...ewpointsPlugin.js~BCFViewpointsPlugin.html | 2 - ...nceMeasurement.js~DistanceMeasurement.html | 2 - ...ontrol.js~DistanceMeasurementsControl.html | 2 - ...sPlugin.js~DistanceMeasurementsPlugin.html | 2 - .../FastNavPlugin.js~FastNavPlugin.html | 599 +- ...ltDataSource.js~GLTFDefaultDataSource.html | 2 - .../GLTFLoaderPlugin.js~GLTFLoaderPlugin.html | 2 - .../NavCubePlugin.js~NavCubePlugin.html | 2 - .../OBJLoaderPlugin.js~OBJLoaderPlugin.html | 2 - ...ultDataSource.js~STLDefaultDataSource.html | 2 - .../STLLoaderPlugin.js~STLLoaderPlugin.html | 2 - ...onPlanesPlugin.js~SectionPlanesPlugin.html | 2 - .../SkyboxesPlugin.js~SkyboxesPlugin.html | 2 - .../StoreyViewsPlugin/Storey.js~Storey.html | 2 - .../StoreyMap.js~StoreyMap.html | 2 - ...toreyViewsPlugin.js~StoreyViewsPlugin.html | 2 - .../ModelTreeView.js~ModelTreeView.html | 2 - .../TreeViewNode.js~TreeViewNode.html | 2 - .../TreeViewPlugin.js~TreeViewPlugin.html | 2 - .../ViewCullPlugin.js~ViewCullPlugin.html | 2 - ...ultDataSource.js~XKTDefaultDataSource.html | 2 - .../XKTLoaderPlugin.js~XKTLoaderPlugin.html | 2 - ...ML3DLoaderPlugin.js~XML3DLoaderPlugin.html | 2 - docs/class/src/viewer/Plugin.js~Plugin.html | 4 +- docs/class/src/viewer/Viewer.js~Viewer.html | 6 +- .../metadata/MetaModel.js~MetaModel.html | 2 - .../metadata/MetaObject.js~MetaObject.html | 2 - .../metadata/MetaScene.js~MetaScene.html | 2 - .../CameraControl.js~CameraControl.html | 112 +- .../viewer/scene/Component.js~Component.html | 4 +- .../src/viewer/scene/Entity.js~Entity.html | 2 - .../ImagePlane/ImagePlane.js~ImagePlane.html | 2 - .../PerformanceModel.js~PerformanceModel.html | 2 - .../viewer/scene/camera/Camera.js~Camera.html | 2 - ...ghtAnimation.js~CameraFlightAnimation.html | 2 - .../camera/CameraPath.js~CameraPath.html | 2 - ...aPathAnimation.js~CameraPathAnimation.html | 2 - .../CustomProjection.js~CustomProjection.html | 2 - .../scene/camera/Frustum.js~Frustum.html | 2 - .../viewer/scene/camera/Ortho.js~Ortho.html | 2 - .../camera/Perspective.js~Perspective.html | 2 - .../viewer/scene/canvas/Canvas.js~Canvas.html | 2 - .../scene/canvas/Spinner.js~Spinner.html | 2 - .../scene/geometry/Geometry.js~Geometry.html | 2 - .../ReadableGeometry.js~ReadableGeometry.html | 2 - .../geometry/VBOGeometry.js~VBOGeometry.html | 2 - .../viewer/scene/input/Input.js~Input.html | 2 - .../lights/AmbientLight.js~AmbientLight.html | 2 - .../lights/CubeTexture.js~CubeTexture.html | 2 - .../scene/lights/DirLight.js~DirLight.html | 2 - .../viewer/scene/lights/Light.js~Light.html | 2 - .../scene/lights/LightMap.js~LightMap.html | 2 - .../lights/PointLight.js~PointLight.html | 2 - .../ReflectionMap.js~ReflectionMap.html | 2 - .../viewer/scene/lights/Shadow.js~Shadow.html | 2 - .../LogDepthBuf.js~LogDepthBuf.html | 2 - .../viewer/scene/marker/Marker.js~Marker.html | 2 - .../EdgeMaterial.js~EdgeMaterial.html | 2 - .../EmphasisMaterial.js~EmphasisMaterial.html | 2 - .../scene/materials/Fresnel.js~Fresnel.html | 2 - .../LambertMaterial.js~LambertMaterial.html | 2 - .../LinesMaterial.js~LinesMaterial.html | 2 - .../scene/materials/Material.js~Material.html | 2 - .../MetallicMaterial.js~MetallicMaterial.html | 2 - .../PhongMaterial.js~PhongMaterial.html | 2 - .../PointsMaterial.js~PointsMaterial.html | 2 - .../SpecularMaterial.js~SpecularMaterial.html | 2 - .../scene/materials/Texture.js~Texture.html | 2 - .../CameraMemento.js~CameraMemento.html | 2 - .../ModelMemento.js~ModelMemento.html | 2 - .../ObjectsMemento.js~ObjectsMemento.html | 2 - .../src/viewer/scene/mesh/Mesh.js~Mesh.html | 2 - ...derSource.js~PickTriangleShaderSource.html | 2 - .../scene/metriqs/Metriqs.js~Metrics.html | 2 - .../src/viewer/scene/nodes/Node.js~Node.html | 2 - .../CubicBezierCurve.js~CubicBezierCurve.html | 2 - .../viewer/scene/paths/Curve.js~Curve.html | 2 - .../src/viewer/scene/paths/Path.js~Path.html | 2 - ...icBezierCurve.js~QuadraticBezierCurve.html | 2 - .../paths/SplineCurve.js~SplineCurve.html | 2 - .../src/viewer/scene/postfx/SAO.js~SAO.html | 8 +- .../viewer/scene/scene/Scene.js~Scene.html | 2 - .../SectionPlane.js~SectionPlane.html | 2 - .../viewer/scene/skybox/Skybox.js~Skybox.html | 2 - .../scene/viewport/Viewport.js~Viewport.html | 2 - .../scene/webgl/PickResult.js~PickResult.html | 2 - .../OcclusionLayer.js~OcclusionLayer.html | 2 - .../OcclusionTester.js~OcclusionTester.html | 2 - docs/coverage.json | 92 +- docs/css/style.css | 1 + .../extras/ContextMenu/ContextMenu.js.html | 2 - .../AngleMeasurement.js.html | 2 - .../AngleMeasurementsControl.js.html | 2 - .../AngleMeasurementsPlugin.js.html | 2 - .../AnnotationsPlugin/Annotation.js.html | 2 - .../AnnotationsPlugin.js.html | 2 - .../AxisGizmoPlugin/AxisGizmoPlugin.js.html | 2 - .../BCFViewpointsPlugin.js.html | 2 - .../DistanceMeasurement.js.html | 2 - .../DistanceMeasurementsControl.js.html | 2 - .../DistanceMeasurementsPlugin.js.html | 2 - .../FastNavPlugin/FastNavPlugin.js.html | 103 +- .../GLTFDefaultDataSource.js.html | 2 - .../GLTFLoaderPlugin/GLTFLoaderPlugin.js.html | 2 - .../GLTFPerformanceModelLoader.js.html | 2 - .../GLTFSceneGraphLoader.js.html | 2 - .../NavCubePlugin/CubeTextureCanvas.js.html | 2 - .../NavCubePlugin/NavCubePlugin.js.html | 2 - .../OBJLoaderPlugin/OBJLoaderPlugin.js.html | 2 - .../OBJSceneGraphLoader.js.html | 2 - .../STLDefaultDataSource.js.html | 2 - .../STLLoaderPlugin/STLLoaderPlugin.js.html | 2 - .../STLSceneGraphLoader.js.html | 2 - .../SectionPlanesPlugin/Control.js.html | 2 - .../SectionPlanesPlugin/Overview.js.html | 2 - .../plugins/SectionPlanesPlugin/Plane.js.html | 2 - .../SectionPlanesPlugin.js.html | 2 - .../SkyboxesPlugin/SkyboxesPlugin.js.html | 2 - .../IFCStoreyPlanObjectStates.js.html | 2 - .../plugins/StoreyViewsPlugin/Storey.js.html | 2 - .../StoreyViewsPlugin/StoreyMap.js.html | 2 - .../StoreyViewsPlugin.js.html | 2 - .../TreeViewPlugin/ModelTreeView.js.html | 3 +- .../TreeViewPlugin/TreeViewNode.js.html | 2 - .../TreeViewPlugin/TreeViewPlugin.js.html | 2 - .../TreeViewPlugin/modelValidation.js.html | 2 - .../ViewCullPlugin/ViewCullPlugin.js.html | 2 - .../XKTDefaultDataSource.js.html | 2 - .../XKTLoaderPlugin/XKTLoaderPlugin.js.html | 2 - .../XKTLoaderPlugin/parsers/ParserV1.js.html | 2 - .../XKTLoaderPlugin/parsers/ParserV2.js.html | 2 - .../XKTLoaderPlugin/parsers/ParserV3.js.html | 2 - .../XKTLoaderPlugin/parsers/ParserV4.js.html | 2 - .../XKTLoaderPlugin/parsers/ParserV5.js.html | 2 - .../XKTLoaderPlugin/parsers/ParserV6.js.html | 2 - .../XKTLoaderPlugin/parsers/ParserV7.js.html | 2 - .../XKTLoaderPlugin/parsers/lib/pako.js.html | 2 - .../XML3DLoaderPlugin.js.html | 2 - .../XML3DSceneGraphLoader.js.html | 2 - .../lib/culling/ObjectCullStates.js.html | 2 - docs/file/src/plugins/lib/html/Dot.js.html | 2 - docs/file/src/plugins/lib/html/Label.js.html | 2 - docs/file/src/plugins/lib/html/Wire.js.html | 2 - docs/file/src/viewer/Plugin.js.html | 2 - docs/file/src/viewer/Viewer.js.html | 4 +- .../metadata/IFCObjectDefaultColors.js.html | 2 - .../viewer/metadata/IFCObjectDefaults.js.html | 2 - .../src/viewer/metadata/MetaModel.js.html | 2 - .../src/viewer/metadata/MetaObject.js.html | 2 - .../src/viewer/metadata/MetaScene.js.html | 2 - .../scene/CameraControl/CameraControl.js.html | 3 - .../CameraControl/lib/CameraUpdater.js.html | 4 - .../lib/controllers/PanController.js.html | 2 - .../lib/controllers/PickController.js.html | 2 - .../lib/controllers/PivotController.js.html | 2 - .../handlers/KeyboardAxisViewHandler.js.html | 2 - .../KeyboardPanRotateDollyHandler.js.html | 2 - .../lib/handlers/MouseMiscHandler.js.html | 2 - .../MousePanRotateDollyHandler.js.html | 115 +- .../lib/handlers/MousePickHandler.js.html | 4 +- .../TouchPanRotateAndDollyHandler.js.html | 2 - .../lib/handlers/TouchPickHandler.js.html | 2 - docs/file/src/viewer/scene/Component.js.html | 2 - docs/file/src/viewer/scene/Entity.js.html | 2 - .../scene/ImagePlane/ImagePlane.js.html | 2 - .../PerformanceModel/PerformanceModel.js.html | 2 - .../PerformanceModel/lib/ENTITY_FLAGS.js.html | 2 - .../lib/PerformanceMesh.js.html | 2 - .../lib/PerformanceNode.js.html | 2 - .../lib/RENDER_PASSES.js.html | 2 - .../lib/ScratchMemory.js.html | 2 - .../PerformanceModel/lib/compression.js.html | 2 - .../linesBatching/LinesBatchingBuffer.js.html | 2 - .../linesBatching/LinesBatchingLayer.js.html | 2 - .../LinesBatchingRenderers.js.html | 2 - .../LinesBatchingColorRenderer.js.html | 2 - .../LinesBatchingSilhouetteRenderer.js.html | 2 - .../LinesInstancingLayer.js.html | 2 - .../LinesInstancingRenderers.js.html | 2 - .../LinesInstancingColorRenderer.js.html | 2 - .../LinesInstancingSilhouetteRenderer.js.html | 2 - .../PointsBatchingBuffer.js.html | 2 - .../PointsBatchingLayer.js.html | 2 - .../PointsBatchingRenderers.js.html | 2 - .../PointsBatchingColorRenderer.js.html | 2 - .../PointsBatchingOcclusionRenderer.js.html | 2 - .../PointsBatchingPickDepthRenderer.js.html | 2 - .../PointsBatchingPickMeshRenderer.js.html | 2 - .../PointsBatchingShadowRenderer.js.html | 2 - .../PointsBatchingSilhouetteRenderer.js.html | 2 - .../PointsInstancingLayer.js.html | 24 +- .../PointsInstancingRenderers.js.html | 2 - .../PointsInstancingColorRenderer.js.html | 2 - .../PointsInstancingDepthRenderer.js.html | 2 - .../PointsInstancingOcclusionRenderer.js.html | 2 - .../PointsInstancingPickDepthRenderer.js.html | 2 - .../PointsInstancingPickMeshRenderer.js.html | 2 - .../PointsInstancingShadowRenderer.js.html | 2 - ...PointsInstancingSilhouetteRenderer.js.html | 2 - .../TrianglesBatchingBuffer.js.html | 2 - .../TrianglesBatchingLayer.js.html | 2 - .../TrianglesBatchingRenderers.js.html | 2 - ...anglesBatchingColorQualityRenderer.js.html | 6 +- .../TrianglesBatchingColorRenderer.js.html | 2 - .../TrianglesBatchingDepthRenderer.js.html | 2 - ...rianglesBatchingEdgesColorRenderer.js.html | 2 - .../TrianglesBatchingEdgesRenderer.js.html | 2 - .../TrianglesBatchingNormalsRenderer.js.html | 2 - ...TrianglesBatchingOcclusionRenderer.js.html | 2 - ...TrianglesBatchingPickDepthRenderer.js.html | 2 - .../TrianglesBatchingPickMeshRenderer.js.html | 2 - ...ianglesBatchingPickNormalsRenderer.js.html | 2 - .../TrianglesBatchingShadowRenderer.js.html | 2 - ...rianglesBatchingSilhouetteRenderer.js.html | 2 - .../TrianglesInstancingLayer.js.html | 2 - .../TrianglesInstancingRenderers.js.html | 2 - ...glesInstancingColorQualityRenderer.js.html | 8 +- .../TrianglesInstancingColorRenderer.js.html | 2 - .../TrianglesInstancingDepthRenderer.js.html | 2 - ...anglesInstancingEdgesColorRenderer.js.html | 2 - .../TrianglesInstancingEdgesRenderer.js.html | 2 - ...TrianglesInstancingNormalsRenderer.js.html | 2 - ...ianglesInstancingOcclusionRenderer.js.html | 2 - ...ianglesInstancingPickDepthRenderer.js.html | 2 - ...rianglesInstancingPickMeshRenderer.js.html | 2 - ...nglesInstancingPickNormalsRenderer.js.html | 2 - .../TrianglesInstancingShadowRenderer.js.html | 2 - ...anglesInstancingSilhouetteRenderer.js.html | 2 - .../src/viewer/scene/camera/Camera.js.html | 2 - .../camera/CameraFlightAnimation.js.html | 2 - .../viewer/scene/camera/CameraPath.js.html | 2 - .../scene/camera/CameraPathAnimation.js.html | 2 - .../scene/camera/CustomProjection.js.html | 2 - .../src/viewer/scene/camera/Frustum.js.html | 2 - .../src/viewer/scene/camera/Ortho.js.html | 2 - .../viewer/scene/camera/Perspective.js.html | 2 - .../src/viewer/scene/canvas/Canvas.js.html | 2 - .../src/viewer/scene/canvas/Spinner.js.html | 2 - docs/file/src/viewer/scene/core.js.html | 2 - .../viewer/scene/geometry/Geometry.js.html | 2 - .../scene/geometry/ReadableGeometry.js.html | 2 - .../viewer/scene/geometry/VBOGeometry.js.html | 2 - .../builders/buildBoxGeometry.js.html | 2 - .../builders/buildBoxLinesGeometry.js.html | 2 - .../builders/buildCylinderGeometry.js.html | 2 - .../builders/buildGridGeometry.js.html | 2 - .../builders/buildPlaneGeometry.js.html | 2 - .../builders/buildSphereGeometry.js.html | 2 - .../builders/buildTorusGeometry.js.html | 2 - .../builders/buildVectorTextGeometry.js.html | 2 - .../geometry/loaders/load3DSGeometry.js.html | 2 - .../geometry/loaders/loadOBJGeometry.js.html | 2 - .../file/src/viewer/scene/input/Input.js.html | 2 - .../viewer/scene/libs/canvas2image.js.html | 2 - docs/file/src/viewer/scene/libs/k3d.js.html | 2 - .../viewer/scene/lights/AmbientLight.js.html | 2 - .../viewer/scene/lights/CubeTexture.js.html | 2 - .../src/viewer/scene/lights/DirLight.js.html | 2 - .../src/viewer/scene/lights/Light.js.html | 2 - .../src/viewer/scene/lights/LightMap.js.html | 2 - .../viewer/scene/lights/PointLight.js.html | 2 - .../viewer/scene/lights/ReflectionMap.js.html | 2 - .../src/viewer/scene/lights/Shadow.js.html | 2 - .../scene/logDepthBuf/LogDepthBuf.js.html | 2 - .../src/viewer/scene/marker/Marker.js.html | 2 - .../scene/materials/EdgeMaterial.js.html | 2 - .../scene/materials/EmphasisMaterial.js.html | 2 - .../viewer/scene/materials/Fresnel.js.html | 2 - .../scene/materials/LambertMaterial.js.html | 2 - .../scene/materials/LinesMaterial.js.html | 2 - .../viewer/scene/materials/Material.js.html | 2 - .../scene/materials/MetallicMaterial.js.html | 2 - .../scene/materials/PhongMaterial.js.html | 2 - .../scene/materials/PointsMaterial.js.html | 2 - .../scene/materials/SpecularMaterial.js.html | 2 - .../viewer/scene/materials/Texture.js.html | 2 - .../src/viewer/scene/math/Frustum.js.html | 2 - .../scene/math/buildEdgeIndices.js.html | 2 - .../math/geometryCompressionUtils.js.html | 2 - docs/file/src/viewer/scene/math/math.js.html | 2 - .../src/viewer/scene/math/rtcCoords.js.html | 2 - .../scene/mementos/CameraMemento.js.html | 2 - .../scene/mementos/ModelMemento.js.html | 2 - .../scene/mementos/ObjectsMemento.js.html | 2 - docs/file/src/viewer/scene/mesh/Mesh.js.html | 2 - .../scene/mesh/draw/DrawRenderer.js.html | 2 - .../scene/mesh/draw/DrawShaderSource.js.html | 2 - .../emphasis/EmphasisEdgesRenderer.js.html | 2 - .../EmphasisEdgesShaderSource.js.html | 2 - .../emphasis/EmphasisFillRenderer.js.html | 2 - .../emphasis/EmphasisFillShaderSource.js.html | 2 - .../mesh/occlusion/OcclusionRenderer.js.html | 2 - .../occlusion/OcclusionShaderSource.js.html | 2 - .../scene/mesh/pick/PickMeshRenderer.js.html | 2 - .../mesh/pick/PickMeshShaderSource.js.html | 2 - .../mesh/pick/PickTriangleRenderer.js.html | 2 - .../pick/PickTriangleShaderSource.js.html | 2 - .../scene/mesh/shadow/ShadowRenderer.js.html | 2 - .../mesh/shadow/ShadowShaderSource.js.html | 2 - .../src/viewer/scene/metriqs/Metriqs.js.html | 2 - docs/file/src/viewer/scene/nodes/Node.js.html | 2 - .../scene/paths/CubicBezierCurve.js.html | 2 - .../file/src/viewer/scene/paths/Curve.js.html | 2 - docs/file/src/viewer/scene/paths/Path.js.html | 2 - .../scene/paths/QuadraticBezierCurve.js.html | 2 - .../viewer/scene/paths/SplineCurve.js.html | 2 - docs/file/src/viewer/scene/postfx/SAO.js.html | 10 +- .../file/src/viewer/scene/scene/Scene.js.html | 2 - .../scene/sectionPlane/SectionPlane.js.html | 2 - .../src/viewer/scene/skybox/Skybox.js.html | 2 - docs/file/src/viewer/scene/stats.js.html | 2 - docs/file/src/viewer/scene/utils.js.html | 2 - docs/file/src/viewer/scene/utils/Map.js.html | 2 - .../file/src/viewer/scene/utils/Queue.js.html | 2 - .../viewer/scene/viewport/Viewport.js.html | 2 - .../src/viewer/scene/webgl/ArrayBuf.js.html | 2 - .../src/viewer/scene/webgl/Attribute.js.html | 2 - .../src/viewer/scene/webgl/Drawable.js.html | 2 - .../viewer/scene/webgl/FrameContext.js.html | 2 - .../src/viewer/scene/webgl/PickResult.js.html | 2 - .../src/viewer/scene/webgl/Pickable.js.html | 2 - .../src/viewer/scene/webgl/Program.js.html | 2 - .../viewer/scene/webgl/RenderBuffer.js.html | 2 - .../viewer/scene/webgl/RenderFlags.js.html | 2 - .../viewer/scene/webgl/RenderState.js.html | 2 - .../src/viewer/scene/webgl/Renderer.js.html | 2 - .../src/viewer/scene/webgl/Sampler.js.html | 2 - .../src/viewer/scene/webgl/Shader.js.html | 2 - .../src/viewer/scene/webgl/Texture2D.js.html | 2 - .../webgl/occlusion/OcclusionLayer.js.html | 2 - .../webgl/occlusion/OcclusionTester.js.html | 2 - .../sao/SAODepthLimitedBlurRenderer.js.html | 2 - .../webgl/sao/SAOOcclusionRenderer.js.html | 2 - .../src/viewer/scene/webgl/webglEnums.js.html | 2 - docs/file/src/viewer/scene/webglInfo.js.html | 2 - docs/function/index.html | 2 - docs/identifiers.html | 70 - docs/index.html | 2 - docs/index.json | 12374 ++- docs/script/search_index.js | 96 +- docs/source.html | 104 +- docs/variable/index.html | 2 - package.json | 6 +- 401 files changed, 154661 insertions(+), 138644 deletions(-) create mode 100644 assets/esdocTemplate/class.html create mode 100644 assets/esdocTemplate/css/github.css create mode 100644 assets/esdocTemplate/css/identifiers.css create mode 100644 assets/esdocTemplate/css/manual.css create mode 100644 assets/esdocTemplate/css/prettify-tomorrow.css create mode 100644 assets/esdocTemplate/css/search.css create mode 100644 assets/esdocTemplate/css/source.css create mode 100644 assets/esdocTemplate/css/style.css create mode 100644 assets/esdocTemplate/css/test.css create mode 100644 assets/esdocTemplate/details.html create mode 100644 assets/esdocTemplate/file.html create mode 100644 assets/esdocTemplate/identifiers.html create mode 100644 assets/esdocTemplate/image/badge.svg create mode 100644 assets/esdocTemplate/image/esdoc-logo-mini-black.png create mode 100644 assets/esdocTemplate/image/esdoc-logo-mini.png create mode 100644 assets/esdocTemplate/image/manual-badge.svg create mode 100644 assets/esdocTemplate/image/search.png create mode 100644 assets/esdocTemplate/index.html create mode 100644 assets/esdocTemplate/layout.html create mode 100644 assets/esdocTemplate/manual.html create mode 100644 assets/esdocTemplate/manualCardIndex.html create mode 100644 assets/esdocTemplate/manualIndex.html create mode 100644 assets/esdocTemplate/nav.html create mode 100644 assets/esdocTemplate/properties.html create mode 100644 assets/esdocTemplate/script/inherited-summary.js create mode 100644 assets/esdocTemplate/script/inner-link.js create mode 100644 assets/esdocTemplate/script/manual.js create mode 100644 assets/esdocTemplate/script/patch-for-local.js create mode 100644 assets/esdocTemplate/script/prettify/Apache-License-2.0.txt create mode 100755 assets/esdocTemplate/script/prettify/prettify.js create mode 100644 assets/esdocTemplate/script/pretty-print.js create mode 100644 assets/esdocTemplate/script/search.js create mode 100644 assets/esdocTemplate/script/test-summary.js create mode 100644 assets/esdocTemplate/single.html create mode 100644 assets/esdocTemplate/source.html create mode 100644 assets/esdocTemplate/summary.html create mode 100644 assets/esdocTemplate/test.html create mode 100644 assets/esdocTemplate/testInterface.html diff --git a/.esdoc.json b/.esdoc.json index bc2cba7da3..ba9436c0aa 100644 --- a/.esdoc.json +++ b/.esdoc.json @@ -1,31 +1,51 @@ { - "source": "./src/", - "destination": "./docs", - "excludes": [ - "(workers|zipjs)" - ], - "plugins": [ - { - "name": "esdoc-standard-plugin", - "includeSource": true, - "option": { - "lint": {"enable": true}, - "coverage": {"enable": true}, - "accessor": {"access": ["public"], "autoPrivate": true}, - "undocumentIdentifier": {"enable": true}, - "unexportedIdentifier": {"enable": false}, - "typeInference": {"enable": true}, - - "brand": { - "logo": "./assets/images/logo.jpg", - "title": "xeokit-sdk", - "description": "3D engineering graphics in the browser", - "repository": "https://github.com/xeokit/xeokit-sdk", - "site": "http://xeokit.io", - "author": "http://xeolabs.com", - "image": "./images/logo.jpg" + "source": "./src/", + "destination": "./docs", + "excludes": [ + "(workers|zipjs)" + ], + "plugins": [ + { + "name": "esdoc-publish-html-plugin", + "option": { + "template": "assets/esdocTemplate" + } + }, + { + "name": "esdoc-standard-plugin", + "includeSource": true, + "option": { + "lint": { + "enable": true + }, + "coverage": { + "enable": true + }, + "accessor": { + "access": [ + "public" + ], + "autoPrivate": true + }, + "undocumentIdentifier": { + "enable": true + }, + "unexportedIdentifier": { + "enable": false + }, + "typeInference": { + "enable": true + }, + "brand": { + "logo": "./assets/images/logo.jpg", + "title": "xeokit-sdk", + "description": "3D engineering graphics in the browser", + "repository": "https://github.com/xeokit/xeokit-sdk", + "site": "http://xeokit.io", + "author": "http://xeolabs.com", + "image": "./images/logo.jpg" + } + } } - } - } - ] + ] } \ No newline at end of file diff --git a/assets/esdocTemplate/class.html b/assets/esdocTemplate/class.html new file mode 100644 index 0000000000..9f4d80e657 --- /dev/null +++ b/assets/esdocTemplate/class.html @@ -0,0 +1,66 @@ +
+
+ + + | variation + | version + | since + | +
+ +
+

+ +
+ You can directly use an instance of this class. + +
+ +

Expression Extends:

+

Mixin Extends:

+

Extends:

+

Direct Subclass:

+

Indirect Subclass:

+

Implements:

+

Indirect Implements:

+

Direct Implemented:

+

Indirect Implemented:

+ +
+
+
+

Decorators:

+ +

See:

+ +
+

Example:

+
+
+
+
+
+ +
+

Test:

+
    +
  • +
+
+ +

TODO:

+
+ +

Static Member Summary

+

Static Method Summary

+

Constructor Summary

+

Member Summary

+

Method Summary

+ +

Inherited Summary

+ +
+
+
+
+
diff --git a/assets/esdocTemplate/css/github.css b/assets/esdocTemplate/css/github.css new file mode 100644 index 0000000000..db9ca23f91 --- /dev/null +++ b/assets/esdocTemplate/css/github.css @@ -0,0 +1,83 @@ +/* github markdown */ +.github-markdown { + font-size: 16px; +} + +.github-markdown h1, +.github-markdown h2, +.github-markdown h3, +.github-markdown h4, +.github-markdown h5 { + margin-top: 1em; + margin-bottom: 16px; + font-weight: bold; + padding: 0; +} + +.github-markdown h1:nth-of-type(1) { + margin-top: 0; +} + +.github-markdown h1 { + font-size: 2em; + padding-bottom: 0.3em; +} + +.github-markdown h2 { + font-size: 1.75em; + padding-bottom: 0.3em; +} + +.github-markdown h3 { + font-size: 1.5em; +} + +.github-markdown h4 { + font-size: 1.25em; +} + +.github-markdown h5 { + font-size: 1em; +} + +.github-markdown ul, .github-markdown ol { + padding-left: 2em; +} + +.github-markdown pre > code { + font-size: 0.85em; +} + +.github-markdown table { + margin-bottom: 1em; + border-collapse: collapse; + border-spacing: 0; +} + +.github-markdown table tr { + background-color: #fff; + border-top: 1px solid #ccc; +} + +.github-markdown table th, +.github-markdown table td { + padding: 6px 13px; + border: 1px solid #ddd; +} + +.github-markdown table tr:nth-child(2n) { + background-color: #f8f8f8; +} + +.github-markdown hr { + border-right: 0; + border-bottom: 1px solid #e5e5e5; + border-left: 0; + border-top: 0; +} + +/** badge(.svg) does not have border */ +.github-markdown img:not([src*=".svg"]) { + max-width: 100%; + box-shadow: 1px 1px 1px rgba(0,0,0,0.5); +} diff --git a/assets/esdocTemplate/css/identifiers.css b/assets/esdocTemplate/css/identifiers.css new file mode 100644 index 0000000000..52c8461c33 --- /dev/null +++ b/assets/esdocTemplate/css/identifiers.css @@ -0,0 +1,37 @@ +.identifiers-wrap { + display: flex; + align-items: flex-start; +} + +.identifier-dir-tree { + background: #fff; + border: solid 1px #ddd; + border-radius: 0.25em; + top: 52px; + position: -webkit-sticky; + position: sticky; + max-height: calc(100vh - 155px); + overflow-y: scroll; + min-width: 200px; + margin-left: 1em; +} + +.identifier-dir-tree-header { + padding: 0.5em; + background-color: #fafafa; + border-bottom: solid 1px #ddd; +} + +.identifier-dir-tree-content { + padding: 0 0.5em 0; +} + +.identifier-dir-tree-content > div { + padding-top: 0.25em; + padding-bottom: 0.25em; +} + +.identifier-dir-tree-content a { + color: inherit; +} + diff --git a/assets/esdocTemplate/css/manual.css b/assets/esdocTemplate/css/manual.css new file mode 100644 index 0000000000..138a07f134 --- /dev/null +++ b/assets/esdocTemplate/css/manual.css @@ -0,0 +1,134 @@ +.github-markdown .manual-toc { + padding-left: 0; +} + +.manual-index .manual-cards { + display: flex; + flex-wrap: wrap; +} + +.manual-index .manual-card-wrap { + width: 280px; + padding: 10px 20px 10px 0; + box-sizing: border-box; +} + +.manual-index .manual-card-wrap > h1 { + margin: 0; + font-size: 1em; + font-weight: 600; + padding: 0.2em 0 0.2em 0.5em; + border-radius: 0.1em 0.1em 0 0; + border: none; +} + +.manual-index .manual-card-wrap > h1 span { + color: #555; +} + +.manual-index .manual-card { + height: 200px; + overflow: hidden; + border: solid 1px rgba(230, 230, 230, 0.84); + border-radius: 0 0 0.1em 0.1em; + padding: 8px; + position: relative; +} + +.manual-index .manual-card > div { + transform: scale(0.4); + transform-origin: 0 0; + width: 250%; +} + +.manual-index .manual-card > a { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(210, 210, 210, 0.1); +} + +.manual-index .manual-card > a:hover { + background: none; +} + +.manual-index .manual-badge { + margin: 0; +} + +.manual-index .manual-user-index { + margin-bottom: 1em; + border-bottom: solid 1px #ddd; +} + +.manual-root .navigation { + padding-left: 4px; + margin-top: 4px; +} + +.navigation .manual-toc-root > div { + padding-left: 0.25em; + padding-right: 0.75em; +} + +.github-markdown .manual-toc-title a { + color: inherit; +} + +.manual-breadcrumb-list { + font-size: 0.8em; + margin-bottom: 1em; +} + +.manual-toc-title a:hover { + color: #039BE5; +} + +.manual-toc li { + margin: 0.75em 0; + list-style-type: none; +} + +.navigation .manual-toc [class^="indent-h"] a { + color: #666; +} + +.navigation .manual-toc .indent-h1 a { + color: #555; + font-weight: 600; + display: block; +} + +.manual-toc .indent-h1 { + display: block; + margin: 0.4em 0 0 0.25em; + padding: 0.2em 0 0.2em 0.5em; + border-radius: 0.1em; +} + +.manual-root .navigation .manual-toc li:not(.indent-h1) { + margin-top: 0.5em; +} + +.manual-toc .indent-h2 { + display: none; + margin-left: 1.5em; +} +.manual-toc .indent-h3 { + display: none; + margin-left: 2.5em; +} +.manual-toc .indent-h4 { + display: none; + margin-left: 3.5em; +} +.manual-toc .indent-h5 { + display: none; + margin-left: 4.5em; +} + +.manual-nav li { + margin: 0.75em 0; +} diff --git a/assets/esdocTemplate/css/prettify-tomorrow.css b/assets/esdocTemplate/css/prettify-tomorrow.css new file mode 100644 index 0000000000..b6f92a78db --- /dev/null +++ b/assets/esdocTemplate/css/prettify-tomorrow.css @@ -0,0 +1,132 @@ +/* Tomorrow Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* Pretty printing styles. Used with prettify.js. */ +/* SPAN elements with the classes below are added by prettyprint. */ +/* plain text */ +.pln { + color: #4d4d4c; } + +@media screen { + /* string content */ + .str { + color: #718c00; } + + /* a keyword */ + .kwd { + color: #8959a8; } + + /* a comment */ + .com { + color: #8e908c; } + + /* a type name */ + .typ { + color: #4271ae; } + + /* a literal value */ + .lit { + color: #f5871f; } + + /* punctuation */ + .pun { + color: #4d4d4c; } + + /* lisp open bracket */ + .opn { + color: #4d4d4c; } + + /* lisp close bracket */ + .clo { + color: #4d4d4c; } + + /* a markup tag name */ + .tag { + color: #c82829; } + + /* a markup attribute name */ + .atn { + color: #f5871f; } + + /* a markup attribute value */ + .atv { + color: #3e999f; } + + /* a declaration */ + .dec { + color: #f5871f; } + + /* a variable name */ + .var { + color: #c82829; } + + /* a function name */ + .fun { + color: #4271ae; } } +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { + color: #060; } + + .kwd { + color: #006; + font-weight: bold; } + + .com { + color: #600; + font-style: italic; } + + .typ { + color: #404; + font-weight: bold; } + + .lit { + color: #044; } + + .pun, .opn, .clo { + color: #440; } + + .tag { + color: #006; + font-weight: bold; } + + .atn { + color: #404; } + + .atv { + color: #060; } } +/* Style */ +/* +pre.prettyprint { + background: white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 12px; + line-height: 1.5; + border: 1px solid #ccc; + padding: 10px; } +*/ + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; } + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ } + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ } diff --git a/assets/esdocTemplate/css/search.css b/assets/esdocTemplate/css/search.css new file mode 100644 index 0000000000..9940a54ae6 --- /dev/null +++ b/assets/esdocTemplate/css/search.css @@ -0,0 +1,84 @@ +/* search box */ +.search-box { + position: absolute; + top: 10px; + right: 50px; + padding-right: 8px; + padding-bottom: 10px; + line-height: normal; + font-size: 12px; +} + +.search-box img { + width: 20px; + vertical-align: top; +} + +.search-input { + display: inline; + visibility: hidden; + width: 0; + padding: 2px; + height: 1.5em; + outline: none; + background: transparent; + border: 1px #0af; + border-style: none none solid none; + vertical-align: bottom; +} + +.search-input-edge { + display: none; + width: 1px; + height: 5px; + background-color: #0af; + vertical-align: bottom; +} + +.search-result { + position: absolute; + display: none; + height: 600px; + width: 100%; + padding: 0; + margin-top: 5px; + margin-left: 24px; + background: white; + box-shadow: 1px 1px 4px rgb(0,0,0); + white-space: nowrap; + overflow-y: scroll; +} + +.search-result-import-path { + color: #aaa; + font-size: 12px; +} + +.search-result li { + list-style: none; + padding: 2px 4px; +} + +.search-result li a { + display: block; +} + +.search-result li.selected { + background: #ddd; +} + +.search-result li.search-separator { + background: rgb(37, 138, 175); + color: white; +} + +.search-box.active .search-input { + visibility: visible; + transition: width 0.2s ease-out; + width: 300px; +} + +.search-box.active .search-input-edge { + display: inline-block; +} + diff --git a/assets/esdocTemplate/css/source.css b/assets/esdocTemplate/css/source.css new file mode 100644 index 0000000000..3b9c92dedf --- /dev/null +++ b/assets/esdocTemplate/css/source.css @@ -0,0 +1,55 @@ +table.files-summary { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; + text-align: right; +} + +table.files-summary tbody tr:hover { + background: #eee; +} + +table.files-summary td:first-child, +table.files-summary td:nth-of-type(2) { + text-align: left; +} + +table.files-summary[data-use-coverage="false"] td.coverage { + display: none; +} + +table.files-summary thead { + background: #fafafa; +} + +table.files-summary td { + border: solid 1px #ddd; + padding: 4px 10px; + vertical-align: top; +} + +table.files-summary td.identifiers > span { + display: block; + margin-top: 4px; +} +table.files-summary td.identifiers > span:first-child { + margin-top: 0; +} + +table.files-summary .coverage-count { + font-size: 12px; + color: #aaa; + display: inline-block; + min-width: 40px; +} + +.total-coverage-count { + position: relative; + bottom: 2px; + font-size: 12px; + color: #666; + font-weight: 500; + padding-left: 5px; +} diff --git a/assets/esdocTemplate/css/style.css b/assets/esdocTemplate/css/style.css new file mode 100644 index 0000000000..ba76e193b3 --- /dev/null +++ b/assets/esdocTemplate/css/style.css @@ -0,0 +1,609 @@ +@import url(https://fonts.googleapis.com/css?family=Roboto:400,300,700); +@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400italic,600,700); +@import url(./manual.css); +@import url(./source.css); +@import url(./test.css); +@import url(./identifiers.css); +@import url(./github.css); +@import url(./search.css); + +* { + margin: 0; + padding: 0; + text-decoration: none; +} + +html +{ + font-family: 'Source Sans Pro', 'Roboto', sans-serif; + line-height: 1.5; + overflow: auto; + /*font-size: 14px;*/ + /*color: #4d4e53;*/ + /*color: rgba(0, 0, 0, .68);*/ + color: #555; + background-color: #fff; +} + +a { + /*color: #0095dd;*/ + /*color:rgb(37, 138, 175);*/ + color: #039BE5; +} + +code a:hover { + text-decoration: underline; +} + +ul, ol { + padding-left: 20px; +} + +ul li { + list-style: disc; + margin: 4px 0; +} + +ol li { + margin: 4px 0; +} + +h1 { + margin-bottom: 10px; + font-size: 34px; + font-weight: 300; + border-bottom: solid 1px #ddd; +} + +h2 { + margin-top: 24px; + margin-bottom: 10px; + font-size: 20px; + border-bottom: solid 1px #ddd; + font-weight: 300; +} + +h3 { + position: relative; + font-size: 16px; + margin-bottom: 12px; + padding: 4px; + font-weight: 300; +} + +details { + cursor: pointer; +} + +del { + text-decoration: line-through; +} + +p { + margin-bottom: 15px; + line-height: 1.5; +} + +code { + font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; +} + +pre > code { + display: block; +} + +pre.prettyprint, pre > code { + padding: 4px; + margin: 1em 0; + background-color: #f5f5f5; + border-radius: 3px; +} + +pre.prettyprint > code { + margin: 0; +} + +p > code, +li > code { + padding: 0.2em 0.5em; + margin: 0; + font-size: 85%; + background-color: rgba(0,0,0,0.04); + border-radius: 3px; +} + +.code { + font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; + font-size: 13px; +} + +.import-path pre.prettyprint, +.import-path pre.prettyprint code { + margin: 0; + padding: 0; + border: none; + background: white; +} + +.layout-container { + /*display: flex;*/ + /*flex-direction: row;*/ + /*justify-content: flex-start;*/ + /*align-items: stretch;*/ +} + +.layout-container > header { + display: flex; + height: 40px; + line-height: 40px; + font-size: 16px; + padding: 0 10px; + margin: 0; + position: fixed; + width: 100%; + z-index: 1; + background-color: #fafafa; + top: 0; + border-bottom: solid 1px #ddd; +} +.layout-container > header > a{ + margin: 0 5px; + color: #444; +} + +.layout-container > header > a.repo-url-github { + font-size: 0; + display: inline-block; + width: 20px; + height: 38px; + background: url("../image/github.png") no-repeat center; + background-size: 20px; + vertical-align: top; +} + +.navigation { + position: fixed; + top: 0; + left: 0; + box-sizing: border-box; + width: 250px; + height: 100%; + padding-top: 40px; + padding-left: 15px; + padding-bottom: 2em; + margin-top:1em; + overflow-x: scroll; + box-shadow: rgba(255, 255, 255, 1) -1px 0 0 inset; + border-right: 1px solid #ddd; +} + +.navigation ul { + padding: 0; +} + +.navigation li { + list-style: none; + margin: 4px 0; + white-space: nowrap; +} + +.navigation li a { + color: #666; +} + +.navigation .nav-dir-path { + display: block; + margin-top: 0.7em; + margin-bottom: 0.25em; + font-weight: 600; +} + +.kind-class, +.kind-interface, +.kind-function, +.kind-typedef, +.kind-variable, +.kind-external { + margin-left: 0.75em; + width: 1.2em; + height: 1.2em; + display: inline-block; + text-align: center; + border-radius: 0.2em; + margin-right: 0.2em; + font-weight: bold; + line-height: 1.2em; +} + +.kind-class { + color: #009800; + background-color: #bfe5bf; +} + +.kind-interface { + color: #fbca04; + background-color: #fef2c0; +} + +.kind-function { + color: #6b0090; + background-color: #d6bdde; +} + +.kind-variable { + color: #eb6420; + background-color: #fad8c7; +} + +.kind-typedef { + color: #db001e; + background-color: #edbec3; +} + +.kind-external { + color: #0738c3; + background-color: #bbcbea; +} + +.summary span[class^="kind-"] { + margin-left: 0; +} + +h1 .version, +h1 .url a { + font-size: 14px; + color: #aaa; +} + +.content { + margin-top: 40px; + margin-left: 250px; + padding: 10px 50px 10px 20px; +} + +.header-notice { + font-size: 14px; + color: #aaa; + margin: 0; +} + +.expression-extends .prettyprint { + margin-left: 10px; + background: white; +} + +.extends-chain { + border-bottom: 1px solid#ddd; + padding-bottom: 10px; + margin-bottom: 10px; +} + +.extends-chain span:nth-of-type(1) { + padding-left: 10px; +} + +.extends-chain > div { + margin: 5px 0; +} + +.description table { + font-size: 14px; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +.description thead { + background: #999; + color: white; +} + +.description table td, +.description table th { + border: solid 1px #ddd; + padding: 4px; + font-weight: normal; +} + +.flat-list ul { + padding-left: 0; +} + +.flat-list li { + display: inline; + list-style: none; +} + +table.summary { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +table.summary thead { + background: #fafafa; +} + +table.summary td { + border: solid 1px #ddd; + padding: 4px 10px; +} + +table.summary tbody td:nth-child(1) { + text-align: right; + white-space: nowrap; + min-width: 64px; + vertical-align: top; +} + +table.summary tbody td:nth-child(2) { + width: 100%; + border-right: none; +} + +table.summary tbody td:nth-child(3) { + white-space: nowrap; + border-left: none; + vertical-align: top; +} + +table.summary td > div:nth-of-type(2) { + padding-top: 4px; + padding-left: 15px; +} + +table.summary td p { + margin-bottom: 0; +} + +.inherited-summary thead td { + padding-left: 2px; +} + +.inherited-summary thead a { + color: white; +} + +.inherited-summary .summary tbody { + display: none; +} + +.inherited-summary .summary .toggle { + padding: 0 4px; + font-size: 12px; + cursor: pointer; +} +.inherited-summary .summary .toggle.closed:before { + content: "▶"; +} +.inherited-summary .summary .toggle.opened:before { + content: "▼"; +} + +.member, .method { + margin-bottom: 24px; +} + +table.params { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +table.params thead { + background: #eee; + color: #aaa; +} + +table.params td { + padding: 4px; + border: solid 1px #ddd; +} + +table.params td p { + margin: 0; +} + +.content .detail > * { + margin: 15px 0; +} + +.content .detail > h3 { + color: black; + background-color: #f0f0f0; +} + +.content .detail > div { + margin-left: 10px; +} + +.content .detail > .import-path { + margin-top: -8px; +} + +.content .detail + .detail { + margin-top: 30px; +} + +.content .detail .throw td:first-child { + padding-right: 10px; +} + +.content .detail h4 + :not(pre) { + padding-left: 0; + margin-left: 10px; +} + +.content .detail h4 + ul li { + list-style: none; +} + +.return-param * { + display: inline; +} + +.argument-params { + margin-bottom: 20px; +} + +.return-type { + padding-right: 10px; + font-weight: normal; +} + +.return-desc { + margin-left: 10px; + margin-top: 4px; +} + +.return-desc p { + margin: 0; +} + +.deprecated, .experimental, .instance-docs { + border-left: solid 5px orange; + padding-left: 4px; + margin: 4px 0; +} + +tr.listen p, +tr.throw p, +tr.emit p{ + margin-bottom: 10px; +} + +.version, .since { + color: #aaa; +} + +h3 .right-info { + position: absolute; + right: 4px; + font-size: 14px; +} + +.version + .since:before { + content: '| '; +} + +.see { + margin-top: 10px; +} + +.see h4 { + margin: 4px 0; +} + +.content .detail h4 + .example-doc { + margin: 6px 0; +} + +.example-caption { + position: relative; + bottom: -1px; + display: inline-block; + padding: 4px; + font-style: italic; + background-color: #f5f5f5; + font-weight: bold; + border-radius: 3px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.example-caption + pre.source-code { + margin-top: 0; + border-top-left-radius: 0; +} + +footer, .file-footer { + text-align: right; + font-style: italic; + font-weight: 100; + font-size: 13px; + margin-right: 50px; + margin-left: 270px; + border-top: 1px solid #ddd; + padding-top: 30px; + margin-top: 20px; + padding-bottom: 10px; +} + +footer img { + width: 24px; + vertical-align: middle; + padding-left: 4px; + position: relative; + top: -3px; + opacity: 0.6; +} + +pre.source-code { + padding: 4px; +} + +pre.raw-source-code > code { + padding: 0; + margin: 0; + font-size: 12px; + background: #fff; + border: solid 1px #ddd; + line-height: 1.5; +} + +pre.raw-source-code > code > ol { + counter-reset:number; + list-style:none; + margin:0; + padding:0; + overflow: hidden; +} + +pre.raw-source-code > code > ol li:before { + counter-increment: number; + content: counter(number); + display: inline-block; + min-width: 3em; + color: #aaa; + text-align: right; + padding-right: 1em; +} + +pre.source-code.line-number { + padding: 0; +} + +pre.source-code ol { + background: #eee; + padding-left: 40px; +} + +pre.source-code li { + background: white; + padding-left: 4px; + list-style: decimal; + margin: 0; +} + +pre.source-code.line-number li.active { + background: rgb(255, 255, 150) !important; +} + +pre.source-code.line-number li.error-line { + background: #ffb8bf; +} + +.inner-link-active { + /*background: rgb(255, 255, 150) !important;*/ + background: #039BE5 !important; + color: #fff !important; + padding-left: 0.1em !important; +} + +.inner-link-active a { + color: inherit; +} diff --git a/assets/esdocTemplate/css/test.css b/assets/esdocTemplate/css/test.css new file mode 100644 index 0000000000..8ce126692c --- /dev/null +++ b/assets/esdocTemplate/css/test.css @@ -0,0 +1,58 @@ +table.test-summary thead { + background: #fafafa; +} + +table.test-summary thead .test-description { + width: 50%; +} + +table.test-summary { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +table.test-summary thead .test-count { + width: 3em; +} + +table.test-summary tbody tr:hover { + background-color: #eee; +} + +table.test-summary td { + border: solid 1px #ddd; + padding: 4px 10px; + vertical-align: top; +} + +table.test-summary td p { + margin: 0; +} + +table.test-summary tr.test-interface .toggle { + display: inline-block; + float: left; + margin-right: 4px; + cursor: pointer; + font-size: 0.8em; + padding-top: 0.25em; +} + +table.test-summary tr.test-interface .toggle.opened:before { + content: '▼'; +} + +table.test-summary tr.test-interface .toggle.closed:before { + content: '▶'; +} + +table.test-summary .test-target > span { + display: block; + margin-top: 4px; +} +table.test-summary .test-target > span:first-child { + margin-top: 0; +} diff --git a/assets/esdocTemplate/details.html b/assets/esdocTemplate/details.html new file mode 100644 index 0000000000..9faaec7c2f --- /dev/null +++ b/assets/esdocTemplate/details.html @@ -0,0 +1,95 @@ +

+
+

+ + + + + + + + + version + since + + +

+ +
+
+
+
+ +

Override:

+ +
+ +
+

Return:

+ + + + + + + +
+
+
+ +
+

Emit:

+ + + + + + + +

+
+ +
+

Listen:

+ + + + + + + +

+
+ +
+

Throw:

+ + + + + + + +

+
+ +

Decorators:

+ +
+

Example:

+
+
+
+
+
+ +
+

Test:

+
    +
  • +
+
+ +

See:

+

TODO:

+
diff --git a/assets/esdocTemplate/file.html b/assets/esdocTemplate/file.html new file mode 100644 index 0000000000..7764123826 --- /dev/null +++ b/assets/esdocTemplate/file.html @@ -0,0 +1,3 @@ +

+
+

Sorry, this documentation does not provide source code.

diff --git a/assets/esdocTemplate/identifiers.html b/assets/esdocTemplate/identifiers.html new file mode 100644 index 0000000000..11c523999c --- /dev/null +++ b/assets/esdocTemplate/identifiers.html @@ -0,0 +1,15 @@ +

References

+ +
+
+
+

+
+
+
+ +
+
Directories
+
+
+
diff --git a/assets/esdocTemplate/image/badge.svg b/assets/esdocTemplate/image/badge.svg new file mode 100644 index 0000000000..b18426b856 --- /dev/null +++ b/assets/esdocTemplate/image/badge.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + document + document + @ratio@ + @ratio@ + + diff --git a/assets/esdocTemplate/image/esdoc-logo-mini-black.png b/assets/esdocTemplate/image/esdoc-logo-mini-black.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5f9a254a27bdd14a2156eb3c66fbe2daa89459 GIT binary patch literal 5651 zcmY*d2UJtdwmt!Zp;zf86hWkgE*%2W3`L{`P)aC4S|C(G2u*qurArqD=>pPAKoF#Z zNC!nJA`qoW6E6PuzWd%gYt5ONz4v_Ie0$BDwbzL?GSH?XXCnsyfJ#?K)A+Ji``aL- zm+x{Hucgb5#93Wm9RO;RDbDP`mvbme$5eE)oDvE={-%0PuwYz;{~!P{;%T zW=w9&9i>YL8Ab<*1po?$zYPRr=du6*2&33+*WahRmIq@?I&geW%9!^bW_ z)C0@+Z;=1N(R9S3yj?IpE}kCHzqoexp1wZHyu5#j{`>rUpFS>5|I6fo{g13mf#QEX z;u2yo@&969E>-$#RWS5+alB;yi?1S~^iSmfv;BuhN&GMQ|JlsHmHuPBl&V6mB>vyD zsgNV^f=B>hLOGG@svstB_ zrWm`Ox%8gLS?SW%>$}c9A;OeCH!6OG>Q7Rvu;~n0c9Wggr+RKOC--3LRl}0iMzbEc zG{p2+*D-6*{$TVO&dL4Fuq;;PWTV(-Y7Gaq5cH(lU3mI19s=y8b5}EiU<`hXzMss7 zvt_n~1q{tLc^*qX@F=qU*r$#PA7rx&DVOlnV;Pn4SU5@?RXL?p2Z=$Z7evr3w_apm z_N4FbPLT;kp+G=ZfP=>R5^rso|W&8+^QMsnqa z(NMGZ?iQ_6!3EEv^qJJAS|pOPJ|tJuc4wHHnAATTI4v58V9Raxc2(e;Iv=u5ya%Q4 zQ&L`TUG$q*W24Sq{o9R)!{$ug)E%jE7%ThK>KR*y2lJfxq-rGL5Ul>+sm5QL0JQ z8e?A**woDI@!D`s^ls;cO7Ou)bEvbT|Bm%*`5XuvS!ly_o6Bc>l>cNbEn_@FqD_t@ zBn=1-Tl8OUZx;xKQyyqe#!YXjoFAv7VMGC` zR!JzQEg_LG8_l5Of3C$og;Oo9BwYdLTLc9#i{4bH@Jlb9-jWw)a8#7qKHOPU+~1y; zlcL;>st#lLqwL9WU^xlY~xX<>SjMBl> z-D%O+ua3TD*pzE(Bu-bGJj(mdDU~$@MRw`EY`|36?^4kNPSvrlynEv4?nBFzlBks_ zmdPuyd-aVU#9AYzMsD)$Z;bOHGGRPz2h&!dZd)q%`Nntlh{+w&qed2TVe=}=cxG|x z-Hua_qm!-bL@$z9N8D;v_rnC!djoYv;LrK58e@xonvA!U7s6*=0SoIAL86gsWuIK^ zm`1TY&JdoJ)1V)<+D&WOu6QuBwXKtWPI!7&9byI(Lt#M#cbP2JpK+~j9}0(+Z@*n$ z!kAUxci$oLpev{~z?YeZijN;Qp}BDQDe6#16dVcC6te7^)HIAa9)%`PLd?P`EmB zyjVMW_Kowp*`!St8a-YVl^E;fhN{WF%#Ii$_vSb`u~^GS5oRsR`Ed`m;*cLP23M+| zV|kBoMQfN-diOt6W4s^z18A$T{n8g5~{TZ?HniWU_v+M z{CNG!HsteTb`Kb+X0R}t>p?)KWGir zGFi~vTmi6x%pngt*oLEp#LPFZ@eKLN8GPnXCX>>oDE8L9CCZw2zuyHfYd`%*MLh}w z>8tQ;-EPDTT+6Tkwl1X|eTf$*k_ky}(xRwIfpJVzt{b!U;cUr4IHc`S`e+>!~v+{?()31rtO%sUnTJ4M4S!|8ooP248 z=pN<@IkKC#J6sOEz(L~yGox$Y^zV54Cj6olX?jIFfuf5c18)o4+JR+mOzEbQzKNUg zvu(aSDRsP1Mf+Yz5c3|g+2HUUv(3=pS)JrTMP@Dj&EZK!IO=dEf@VZ7Ms_V1J2DVL z=)QvdMnootV%)D=4&Kv0tnKHLQUc4qc0?kb#Y?3z( z0;M5mk10Wp?EUIK-CwW-U(~v5H5?0f#L1GOGgZpAyTXWvf5c8XxW)0U^}9u(Cn->~ zWQ>`J_&+BHQt@5O-F9uObv?9FEk2v}-^R7MqeyNSC8?et74#Sd9L_q6GT8=#J#f6P z4q*NV`Y#efzjK1vlFO;+`zChh4o@D`B^@3rrOgW&{usRO32rbpYrIG`>&gVU~Oh0*xotspb#YDZOcT=6yf;>5|h z44V*_N9d%5d;Y|S1_iv>h+`t`ese`Bjr{=AILGKW0&DMFt^_TcnwlnEt{gz}tY~)b z3wMTI{!!8)eI7mNz2G)7dsDz(l1{$byXa>qwW6jgVmxd+VG#tE?MtC3m0iNoAslIzvln<#1W(j31=zsI?8F0lZk8{!*$?XXdo z^0xAy{mFE6Ed}POz;n`@=-OLPB#9yABu#*2Ur4B2C!~GaS-kw} z^rY};h%jN^t4ldVJ+%k!Mvzj~J&$0w(GyyMGk)MXZvGM{j3<2V5f!w3G)EVCrl3ab zlTIH#xAoJBDCMwHLp^G%>g@Ep&Q*ruTScO3)LrmiAUK~-VjjxOV*%=>z(Y)$!0E&) zt4+L$zZbBg8SBzydv34MwA~Wv@??HWQc1-JI1n-Zqqz;I-@Lor{Na(4+PEA!1FqGS zzuBUpv1VMfi=+VjDTb_Lf(bm7_J;{iaEGAo7$YHl(q1nH(gdv>oJL8LZDVZsG&41e zhp-d6g0l)u#2#TaN|^BIi()%oC792K5f+?$)S*%ZQL`bdc~vHF-gnO5bP8cmJDX0w z>lLz(Sc@WKviHgZEsb+HKlH$XPI6i6lMN$!q|74JB(oA6y;mmI0#<$vwV^XDFqhSH zmJwM8_2xl)r4ChUUk&;`+o}8t>rWTZ(cYJsr#eC%?00q8?;0|M!(gTmC&RU)^4$}s ztLP`^J|G%WI@(b**KNJk8iDDE7XU|FjpVc=<;vFi{@oEY@->NtB>!2|{s$R`rCb-b z?HS>c<~w!!-%Kj5Fhv;cdx2@F@q2`1f4yu5=qttu_>z+JxKO|U)jo`2G@xpL)1%|q>2_Tc;7A2*uZCQf@NMm=^IoF-9yV+!Es#-kkzT{p zf7p8#DDLC4BxEf_GaX5z1qx6^B?R~ps~8=v!(#ALzESQW@8y&seVWZuCGCY>X64*g zGn`Q83q#dE(rt%xuIXqV%?eEkVUEiZ*RNDZ_*w(0xs3(p`AN`iph;#o@ON$$kx?kM zZcw1G3o4Fj-U?0-$M5HqlIfvStJTrr71SAB%D}H+72A{pP)Qq!$b&}Fki&2nVt&P7 zUEUY(a;35okQ7uq{1A$CN zZpE@`g7$+6$FeXja9i(Hiv-&Zt1k_o?z?IpeY-B$C72&PK`z&PR&k3PP87|b*(V9{ zrp^=t(G(ij2t+;{6ne=*-tX2Slf+6a)V)J$%XOPai&5f_<@kH^Lf`T~Pr)>PTkdJS zst3JH^TQ@jIZOxN3b=$VAxb;iiY1xU^ggt=Eq_d{?}COUclCB(VO|M9C=T(c>9I{X zA-K8Kt6IL_P&8OwhU5Z2wo=@^B}H?!vGn~%&w=0B#SIaZiCa^XD%Z z^_{Wf1D3Cv1%|L-e#5aZDk+&bwHRVR)!%Elh8P&(_Z7l`QV)q>+uYhS^vL+YKUVP6 zz$3QE!(-*oIwwKTjt?y87byhk_b|ph-1!3Go^ekECC zz;6}beQD63rnj(?l|N&50s((MIlKQd){K2f&Q5IHFN0_;W`^d`E&X@>f|LOowR4ZI zrwzCXf)G>T?Y#vQg(bA(l5m{MN{R+`t*dB=T(9AMTFP{Fj^^`|tsV^;Wrw%AZZCVO zDxLAV$omq%M8v}Qvio9=Kkyp2D|gPUc#Ea1tZG2iof?dX@^AFzeGC^-o2|*e#^+6g zj^7w|N&54sn@BNXwwY_vPYptH6Ne>1I{5lFB#QPZWjp4qMn9JTG2D~EA#w|Y;eq!m97s&hZ)3Od{U>EyMP)M+|ukM0?I+`yZU zrn;2ljY&PuXkg z)g7muqqmSo|4x>7zIw1x-t@0y)$;3Ql<^?Ldk1&#v3*cihJWCBdGe$}5593DTsx*9 zB=!0jhQe)O{ViJ`EfFFf?du8DDMxDBG8_%1v(v@{L*;5IQic7t7g7KNN1$>`gdv_UxV7U3OV0%d0Es?^ z;D5*cEJLs`$RbqQsqayR57Xg9S6KPP^$cHs-4%>Y#vVLOu3O z1ylHre28dj|20AXEb!y%m$H$Q$sIIR4#D{inD*0tN*)P*gRQ@;Gg(jWnV6UUhF7XjZ{(!~X@J%1mzn literal 0 HcmV?d00001 diff --git a/assets/esdocTemplate/image/esdoc-logo-mini.png b/assets/esdocTemplate/image/esdoc-logo-mini.png new file mode 100644 index 0000000000000000000000000000000000000000..76ba5b7d8e547bb469f0479736e96707453718b4 GIT binary patch literal 6504 zcmY*;bzD?W-}a%U86yUr-GCsor|Oo z-uM09@AI6`XU@!AbIoV__G5*$QuB-et<%D0Kkh60CueaKq4Igs9$BZXiGf| z;J#8ZMgRal`QL&De8>U;0GhFbo{^`KhPs4}n+vbCts4}^>+ACBfeipsz7h{j7nr9t zldp@jD?-8-!u&6W#6$Zp3}$Bf7sb;F!fd3W#iZco0b>&872@S%md0aZVv_Q(g-hrt zD*tEtLl44i@9FtU0u1)?@!|Cm}FOMsN<=-Oz zPe&1ku<>ws<>}z&%Jf&)8tUfd31MdbYxLje-|O^rfd79dSHyq9dI%8wcLdDO%Lo3i z_QO=Ezo>+!hXd@v`LDh-ztq2&{|Ebzj}-W?`TttXza#w@`Vgu#o)q}MpG_K1z2~X% z!w&eVD$42kqHSmTC7A1H4+LL!RL-a>$cM;=)Npi%^iF@I!c(H-NP*xA(bj^v)p}`W zyJ<`6YWlHDYu|h-N%}Bdz)d6ac#O5%8bMJgr)-8q;?;3T;$kkzPmcr~txB#<9Ic*R zw~z0=R7d{tEwfnL&I%Ymx`cEd+>Sfccb<{mRbDaD)5j18?|ibC#UO4!Pl{jbT(HP^ z?5+q856`f$4R-qAz2v*WI*g6|;u374H*|e75)MCU!XClYvY%*QKAKkbpOK7o7_$`; z5~2vUvM*VRT_4btsuc<7kI7kw*Q?(R?$~c$U=V@C9k+-3dr{%&2cPfnKX-P@e4`{g zEkgSqLrl=yFhMBltes7r_Na8CmtX!a&TNeWI85?&Y9c2E1X254T@2eokS8N` zy5}4A{D{d0ol>(n1mR?W+fM8p19NYirQd>zE}cdaY5Qxl_)A3x|B=+%+E(KBO`?!G zK(WD*(&kWai4$NdFrT#qfyBgAlY%F?!PWgIw>dgP8KIww(hXEE5DL`k#Ip*>)omk{ zeYEmCOXIG#srT%#rRqA47G9o|`@InTa*K6I=e|6zy${#+P@hjLE*3tZ5a_)5zyjE^ z!%jrRI~0C>`>lLV{DQUC`cCgwQxf4XI+q?wTD8tFV*J4(^&cQcc{7nCu6or6weQ5T zM8IyHGP_an`2E{bWN2s=)>gbp^El!BTiD3Bdi{P~#@ue0_Smcug>c~>d<>pdD1bAF z8mBlf)Z0iiN$M5c5W}XSnQUc!nYQ2QeGurmCjBIM>{YO^d#E2x^J;}zhdlGO=CoVy zY~hoYnorJiWlA^u;fv^sL0FL}Mm=n2kBh+-cg7&VxHLUB&IGkzPsM35czyjLv29?~ zgvYU}3(2w&HAXsDlYybs3zucCsWPq%o&6f%u?OZPfV;T+q(s zf`zfxb5mI@=$s`QwJNEB<*P|=SWBLnyd@L)TzPyz1)FvNC;NK*?s!(?bb0dRt>Czr zeE6T{^x#Z5Q{t-K^pK;32s{H>`Z%!Rf*uhQ+jf?1(0K(PVF;XczV;lk@E^*Ehfg%w zPe8`b!yQUhrN2}UR^4rbQ(cyO)idWDS35kXRYhEW>6FuZrxRA2I}xIhO=QzOk5z8W zDT=KXszjzDur^mUd5t~1JmpAiKi&pxI%!!19z{GgjHWoSg9t28O2div=FP zdq1a=K-B4ofi7dCPv^?UH*Y~zGa{-rN-h>y;-FF9yBbK@T(U*g!a~Pu)Kc+t(Qge7 z0dkA%08e(>qTm_dAOC!9>J3WvHEp7nif1Ckq-lmV!=X4P+ihox>rU*PwR$aCyV8jq zb}TG-!CUjB!DHS+HgEfq;!dAL8XYX!m`gz4NgwFkG5dugn@ly!6PnLc{M$K6t}P!k zbgbW>jZ2afyBjj(symPuVTKUJO^>#Ak9gg?j7p6TX-bz?y}jp8~qvB#5Se5^V=}aW80I%R>_i8 zBEv;?G;412xzG%IwF07IC2+fEEW^Z8iUAGf@bKySLzoT_MT{8Xb&Br}Fz1MN>iA{L zfSrD2Xi1r!(RYd-YnM}78*o^AUD<3RA@pWlAlXq7hu$g?zLeowj7yrPSU~otmhrZ0 zHwpW^(|hBcK{A)pOwl&>`Os4yiQ8io_zQ%IHE)U{B+&n^4n{m`UJs8TmC)2C$*n51 z?D6}it6BK_N{7N+JSxbkV|H=MHIO1b__uX=&<44I3F&hq z%rkUs$#n+c5)_1~fj-_xuSz1D*ei2)cU0+qbCCMz>kDfc+Pwu+)K`SX(He{2W(4Td zlL;-IbHDRGe5$Xj&HfkBB`3p#bS*FB41usi-!}`+7S$ZiVB?jRez|kW==5O*|G~1{ zKW$^b7YCg8MLTQP!LPe3#W(iVSq^ukdN+1C^;F^$cYS8^U{ zNgj%oxBZ07|6ZElUTIs(TeTSbr^^XLu04gqd%;e>Jdj1TZbCm^>NGI@Pei01^jfld;$<3;r#y?$SmVa7OW{(=8!6JQ+ z{bYP|aj{5_2~0G(O*=h*36$ZmH{ixQt{AIW)eN6TXw>`V=Cz5-lbKFBfJp++4g6&` z>DFqJV&;k_UiU))UfyI)uv+l5D4Y!l>e%?j_8uLy?CJ}nSBwvWj{)HCO6W4onPI@g+O;RPdB8wY5UTIq<5 z{&wwQwkaR-yH{8NM|V`($wk6OznJJpNqA)j7|!^((m{ml?8nj%x4;nrnvR|C z;aK`h{@~Wp%@8B$PPV-3s-mTeJ<-!KHxu?W^y`ZZNC;CY4a-{c6*?Bslsz)8yymxZgOG+*F=gf(< zISZrQb~LRiNIp#H(;j!z#`_?rK>^W@ONby^cMQtHGx0*j(wyx0E&}|Ns0)HZCjN4? zncg%K6uU#@)^iD#PC*PfmIJidIDbLzJom2l?Xrzyc1zkYyR|Q31kGH4w!)Wa=vb_I z?cEYe+w}KLOW}SWVxNN_0|cD0eWpn?6+exq{R`5X$Ns!s3f{mix2Jl6=P+RV{xvo$ zsxdzJt0P%}87;y0!$)B~@jkQq+cf^R+ySZJ=DHAd{`a)thRqjfQX#*L+ZG4%HO`7< z8jA`l%Q*NyNG>Qit9K9+f(=2$CF_A!U&6DmLnD6shSvDGW zQm%tTr3|v@f%WVrh;ovoxU;AV_|-}e4dR&IHGOLU_)h(}GE;f8D~aQkZ=(g` zfS71bZjt`tijQv>Avb5afv61yVqs#-3{}vF3a#P}Da`&m{&~HFU(XNJ5I>A!VznLa z*NIadvQ8ye6RSZ_!+uttKaJ9{pL!JS7eR}RrgG;2<{>AFM6wh-tdR@YvO8Rzd2V&L zhntk0EK!G>O2A3m4I*TjN@4cPZxr9eAeL3pw(w>FIwU24$J*zks+A|r3=NO-QjgtB zNsa3~9d(gr9)RlN;+5B2zR!0wAJdaH&<3Y<)u>hbP6 z34+Q$X(wZ;q2iR`D@j0LbPhS)cedTj)y(otGfw9CPhKes7oU%qHA1QDM!0ZJ?WUeY zZnf>MqFGhP;dwjvUO2Of`)z5SK;m84c6c!H2=XMr0#O%x)y@1oflrphX}Nad-99(1 z{j~Jz$TzotmbVGLlJs9NpEqh8X5I!_3F+>y*T)ri1E(5kd8F%dr3!(`FhtwCu=b5W zB3Wd@VwDb-q=+sx2o5I+tP{r5zcUs@WBOuf;gD~F*BXHFXbdEmXc-;wR03dT>Gx=! ztFn)FXUPz#=(5uz{rJ>m&Jrp1PEM*+z9K~QQ|Doypr|}lw9Lyz`27|AS|P0ZWlEo? zj^HOIWxlxeM7&<;=gY4M7rkpu)*YunXAH&QUup(2SGMK$JeoxV`snER-v@8s)T9Z^ z>#CViTerOn0<|fst@Td?yAEjvK}qK=Y~U}dzTX5i{4RU!S1@O6mT0R)#*WiPlL%7r zk%-2aymF+^#yvu4+wlFvoE~O1k5;G|IQ&+a&Z~0%H4nIyiF6pR>MHxl7kw6jg~?nd z@V*foG*tvP{gL{5q`A{&>?mkKo%G3tt0K%kR*_2$x{aQIZIA?0%5A5uR$n&nlbgi^ z^@}YQRz3n-c-D>*g&a+k6Sg+ALm)OEepcf5=069~@$dX{g%tZ@5)ud+ZTB}Wm=sVx zRvyBQwC-7xe-0t9IO;d3s7Wg5vopS|%^UW<`JS^t}IC?7M0An)*EzIG~ zkpdY7eQfql!=`S%p#%nY?kqczMn2hNl^zVVOp2X?aX>bIlmL-`IGX1G%a z>nXgm6-Dt+oJFIm>Q)gn5W@SWV?@Xg`Vb!v^lvMs>DQh>?;_nrbP*;8wC|>ayKBuvxhEn;m(%F->~1( z?jBK3U;TXfDcFLWd>cKNR|4h!`=dTcQQdEu4zAb6(<@t3MajmkY62fV@iBrUo&QYb z(EKz%sq_IYAIn1A-*!RQm0Y{^NvsfWrCz==tPn{K?HXKGtQ8x{DOl;aIx}sf)GatZ zPBoS76U)--9iOE%+9B!zQA|-I7*MC90c95$Z<1ncVhEX*v}gUoU4yOYwOSiDAy#U! z$Gpg(0Qa8rY;Y?Le&c#(rJ8|`%mp_cW#w{_P6i0~l(zzl^%=2;*r!L4k^yh5fP`AL zrTz_?4GePse(7Fk7k$RkIKU9u%4UA{GF z(-r`QvhEOyhv)ayQjp$>WyZZH!nC5OodrK3`=W9}p8yU4FoTI@B~8$4_+kT`h&`j+ z(*eu4O*AB^7M$HT1oky<4sfr5epI=cYA8fsh74g}m}L$9Q;f`(Ys0``RNOl)>M^I1 zH(EE4vxU*=#4st!Q?LQ=Wn6B+2Wasf#@BTz%Katj6i2dNwjVNI#CYz@Hecq%)7?x< zj~o^ZCwI6=H3Ai<8 z?Tnh${RjUIKNc@9O^NDnG?Jq${(6DBQr4Kjh+V@DXkePfuAJ@&*0geywfaADseQ>v znd!_V3QGHChs=Ek6=&+;97!f!1)0qO_{P~t>Ya^c={e&v1sbp%+l+-tIuWO(vGi>< zG}O#Y*v7O0nt#s45%#^sJ8IX2o6X2#+U`2_z}-$-g{b8jX(VSIL@@~li(6uYt5tl$ zbT+@in0f!0ofz#&zCVM3*a1E(_M4)nJP};7EL-EU%0}W*)A}DdH9x23D-iVxj4peq4Q z3UOO|$(HmCFPUt;XCtF4yKG%ZN0!rA$Jrvf-V7Q2UKe(9-tVX5nHeIf)0$y3_c{=X zwHJIV{B8yJIztQdd7WvY&UDk&7~jzx{QwU;hY-$a+%zxNUK+P}b+e9fZQ&B8MbIV} z#zx&J@|mPm!I#X=yGmg%rZ98*UWQ9OleR^FaNDFKUYwXx7^#wg)JINutje@c6q2YG zMYfX2_-9dB=*vD@osX>4$K)plGavGKFJ4UEg%b^bJ5c;a-B5Q6qmhY-o!YpYuej>0 zS>t4o7#36Lb1GnR<~(Y>TwU;>b%GblbAQ7{@F6R16~FEnb~KToIL1(Glk#qA@5^WQjCjA;>Ytl6Gov!q$Nz6(KZyNiBF z(|mtb+rn*%c2+ZQ`T2_I@S=ti5MuJ$AAmN9B%poXYE-sK$52IoUer_xpkF`Ru>R^L z`8x=1N}y!Y?PvC}39s%HMG{Bxis#VO39Y5L5`;ovV(KBq)?P@wreAu;D=kAZzf-O^ zyi6acxN@C#Ca`(F$QsGog5LE!t7|I(^XIWxlrkS0ZrL)|@~d3JhtxyJ`hZ|}Qb(ch zmWpJ~RfKn+Aoldiq>_V+k^GI=y~k~Q-j}!D4P_qdrL()am&UE$`Eet!I!bl@ z2V{QnqRmF%#*n9fMG(d3+b<)2CWhJVaFfhi_`*Y(fknthP9K4jFZkd9?FCbB2{r@z z4;V1SEUrR+;}Xn!s8ka6wxUOI=-N`s=VJE{44t~tOq}!Vbr~r;*qIGyvs+w>uuinN zRxCm9wQwosmGcx*J<;2JiJwbV;}}2&=%czj?uKjux+|68dc;+Xh=kZ zx{ejY=f+HzWzzf0yZNeiE+PGIZ!&O&ue?qzR+j%EQjM`Nue1H3LQy&Q>0J;JE2YLV zbiFCQhlilfnpv4SVzLxP>Xc>%otco9TnHW$xc@`QrbBLg|8NyKYnLuiB3lR4``UVQ zGSWr_m&z!0mdx8!eyab~hR9kT8u-Kj}4bJNgB^55|;N-T6gwg!yF=mA&?& zZHS({Iv`FK3?XGUq{hp832YTB4x&i*oiqL5O;srtg@$W_XQ6%tR0<5&xw|dqz@!{t z-9+@nb(2LdyOL7n|jXx%fF6*^yFNl2`^~&;H+_0|+zFIXChjxtJo2 zO>EDkj0K|-D`uw&hbg_MM)yk4U{X))lcEUDTy7AN9%P4?=VXVn; zf2H;7he_13>fwrZkQ@%N;#?uU3iPD6mcnb91T^ToBV%@<+#J#+4e$fgp|*q4VrSVl z%s(jZ37@8T`Ix8S;Tnyo8WqY>JOeNwOR-4H@7+U0#l8qgLCKgnLRU0{J-6bz9UGlRJ>h`G$ z0TWW&`srbzFmk(F^5{`rGbrn-b8fuI{iOyPljj2A zqg}C#?sd$u%hwQwlA+xEP@l7Q2?)}U2)Dh+hfc*D|KoGI7gleBy1h3)G`i~N7n9I|KRMVuNYQI*{uBipP{PsQn5 + + + + + +
+ Home + Manual + Reference + Source + Test + +
+ + + +
+ + + + + + + + + + + + diff --git a/assets/esdocTemplate/manual.html b/assets/esdocTemplate/manual.html new file mode 100644 index 0000000000..b8a732c2a2 --- /dev/null +++ b/assets/esdocTemplate/manual.html @@ -0,0 +1 @@ +
diff --git a/assets/esdocTemplate/manualCardIndex.html b/assets/esdocTemplate/manualCardIndex.html new file mode 100644 index 0000000000..2960997023 --- /dev/null +++ b/assets/esdocTemplate/manualCardIndex.html @@ -0,0 +1,14 @@ +
+
+ +

+ +
+
+
+
+ +
+
+
+
diff --git a/assets/esdocTemplate/manualIndex.html b/assets/esdocTemplate/manualIndex.html new file mode 100644 index 0000000000..75365838ab --- /dev/null +++ b/assets/esdocTemplate/manualIndex.html @@ -0,0 +1,7 @@ +
+
+
    +
  • +
+
+
diff --git a/assets/esdocTemplate/nav.html b/assets/esdocTemplate/nav.html new file mode 100644 index 0000000000..8c685e68c0 --- /dev/null +++ b/assets/esdocTemplate/nav.html @@ -0,0 +1,5 @@ +
+
    +
  • +
+
diff --git a/assets/esdocTemplate/properties.html b/assets/esdocTemplate/properties.html new file mode 100644 index 0000000000..147db1d8cc --- /dev/null +++ b/assets/esdocTemplate/properties.html @@ -0,0 +1,16 @@ +
+

+ + + + + + + + + + + + +
NameTypeAttributeDescription
+
diff --git a/assets/esdocTemplate/script/inherited-summary.js b/assets/esdocTemplate/script/inherited-summary.js new file mode 100644 index 0000000000..0a35b6df8d --- /dev/null +++ b/assets/esdocTemplate/script/inherited-summary.js @@ -0,0 +1,28 @@ +(function(){ + function toggle(ev) { + var button = ev.target; + var parent = ev.target.parentElement; + while(parent) { + if (parent.tagName === 'TABLE' && parent.classList.contains('summary')) break; + parent = parent.parentElement; + } + + if (!parent) return; + + var tbody = parent.querySelector('tbody'); + if (button.classList.contains('opened')) { + button.classList.remove('opened'); + button.classList.add('closed'); + tbody.style.display = 'none'; + } else { + button.classList.remove('closed'); + button.classList.add('opened'); + tbody.style.display = 'block'; + } + } + + var buttons = document.querySelectorAll('.inherited-summary thead .toggle'); + for (var i = 0; i < buttons.length; i++) { + buttons[i].addEventListener('click', toggle); + } +})(); diff --git a/assets/esdocTemplate/script/inner-link.js b/assets/esdocTemplate/script/inner-link.js new file mode 100644 index 0000000000..ad1c942913 --- /dev/null +++ b/assets/esdocTemplate/script/inner-link.js @@ -0,0 +1,32 @@ +// inner link(#foo) can not correctly scroll, because page has fixed header, +// so, I manually scroll. +(function(){ + var matched = location.hash.match(/errorLines=([\d,]+)/); + if (matched) return; + + function adjust() { + window.scrollBy(0, -55); + var el = document.querySelector('.inner-link-active'); + if (el) el.classList.remove('inner-link-active'); + + // ``[ ] . ' " @`` are not valid in DOM id. so must escape these. + var id = location.hash.replace(/([\[\].'"@$])/g, '\\$1'); + var el = document.querySelector(id); + if (el) el.classList.add('inner-link-active'); + } + + window.addEventListener('hashchange', adjust); + + if (location.hash) { + setTimeout(adjust, 0); + } +})(); + +(function(){ + var els = document.querySelectorAll('[href^="#"]'); + var href = location.href.replace(/#.*$/, ''); // remove existed hash + for (var i = 0; i < els.length; i++) { + var el = els[i]; + el.href = href + el.getAttribute('href'); // because el.href is absolute path + } +})(); diff --git a/assets/esdocTemplate/script/manual.js b/assets/esdocTemplate/script/manual.js new file mode 100644 index 0000000000..de0bfe2517 --- /dev/null +++ b/assets/esdocTemplate/script/manual.js @@ -0,0 +1,12 @@ +(function(){ + var matched = location.pathname.match(/\/(manual\/.*\.html)$/); + if (!matched) return; + + var currentName = matched[1]; + var cssClass = '.navigation .manual-toc li[data-link="' + currentName + '"]'; + var styleText = cssClass + '{ display: block; }\n'; + styleText += cssClass + '.indent-h1 a { color: #039BE5 }'; + var style = document.createElement('style'); + style.textContent = styleText; + document.querySelector('head').appendChild(style); +})(); diff --git a/assets/esdocTemplate/script/patch-for-local.js b/assets/esdocTemplate/script/patch-for-local.js new file mode 100644 index 0000000000..5756d135ba --- /dev/null +++ b/assets/esdocTemplate/script/patch-for-local.js @@ -0,0 +1,8 @@ +(function(){ + if (location.protocol === 'file:') { + var elms = document.querySelectorAll('a[href="./"]'); + for (var i = 0; i < elms.length; i++) { + elms[i].href = './index.html'; + } + } +})(); diff --git a/assets/esdocTemplate/script/prettify/Apache-License-2.0.txt b/assets/esdocTemplate/script/prettify/Apache-License-2.0.txt new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/assets/esdocTemplate/script/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/assets/esdocTemplate/script/prettify/prettify.js b/assets/esdocTemplate/script/prettify/prettify.js new file mode 100755 index 0000000000..3b74b5bdaa --- /dev/null +++ b/assets/esdocTemplate/script/prettify/prettify.js @@ -0,0 +1,46 @@ +!function(){/* + + Copyright (C) 2006 Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function T(a){function d(e){var b=e.charCodeAt(0);if(92!==b)return b;var a=e.charAt(1);return(b=w[a])?b:"0"<=a&&"7">=a?parseInt(e.substring(1),8):"u"===a||"x"===a?parseInt(e.substring(2),16):e.charCodeAt(1)}function f(e){if(32>e)return(16>e?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return"\\"===e||"-"===e||"]"===e||"^"===e?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[0-9A-Fa-f]{4}|\\x[0-9A-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\s\S]|-|[^-\\]/g);e= +[];var a="^"===b[0],c=["["];a&&c.push("^");for(var a=a?1:0,g=b.length;ak||122k||90k||122h[0]&&(h[1]+1>h[0]&&c.push("-"),c.push(f(h[1])));c.push("]");return c.join("")}function v(e){for(var a=e.source.match(/(?:\[(?:[^\x5C\x5D]|\\[\s\S])*\]|\\u[A-Fa-f0-9]{4}|\\x[A-Fa-f0-9]{2}|\\[0-9]+|\\[^ux0-9]|\(\?[:!=]|[\(\)\^]|[^\x5B\x5C\(\)\^]+)/g),c=a.length,d=[],g=0,h=0;g/,null])):d.push(["com",/^#[^\r\n]*/,null,"#"]));a.cStyleComments&&(f.push(["com",/^\/\/[^\r\n]*/,null]),f.push(["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null]));if(b=a.regexLiterals){var v=(b=1|\\/=?|::?|<>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+ +("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+v+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+v+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&f.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&f.push(["kwd",new RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),null]);d.push(["pln",/^\s+/,null," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");f.push(["lit",/^@[a-z_$][a-z_$@0-9]*/i,null],["typ",/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],["pln",/^[a-z_$][a-z_$@0-9]*/i, +null],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],["pln",/^\\[\s\S]?/,null],["pun",new RegExp(b),null]);return G(d,f)}function L(a,d,f){function b(a){var c=a.nodeType;if(1==c&&!A.test(a.className))if("br"===a.nodeName)v(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((3==c||4==c)&&f){var d=a.nodeValue,q=d.match(n);q&&(c=d.substring(0,q.index),a.nodeValue=c,(d=d.substring(q.index+q[0].length))&& +a.parentNode.insertBefore(l.createTextNode(d),a.nextSibling),v(a),c||a.parentNode.removeChild(a))}}function v(a){function b(a,c){var d=c?a.cloneNode(!1):a,k=a.parentNode;if(k){var k=b(k,1),e=a.nextSibling;k.appendChild(d);for(var f=e;f;f=e)e=f.nextSibling,k.appendChild(f)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;a=b(a.nextSibling,0);for(var d;(d=a.parentNode)&&1===d.nodeType;)a=d;c.push(a)}for(var A=/(?:^|\s)nocode(?:\s|$)/,n=/\r\n?|\n/,l=a.ownerDocument,m=l.createElement("li");a.firstChild;)m.appendChild(a.firstChild); +for(var c=[m],p=0;p=+v[1],d=/\n/g,A=a.a,n=A.length,f=0,l=a.c,m=l.length,b=0,c=a.g,p=c.length,w=0;c[p]=n;var r,e;for(e=r=0;e=h&&(b+=2);f>=k&&(w+=2)}}finally{g&&(g.style.display=a)}}catch(x){E.console&&console.log(x&&x.stack||x)}}var E=window,C=["break,continue,do,else,for,if,return,while"], +F=[[C,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,restrict,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],H=[F,"alignas,alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,noexcept,noreturn,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"], +O=[F,"abstract,assert,boolean,byte,extends,finally,final,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],P=[F,"abstract,add,alias,as,ascending,async,await,base,bool,by,byte,checked,decimal,delegate,descending,dynamic,event,finally,fixed,foreach,from,get,global,group,implicit,in,interface,internal,into,is,join,let,lock,null,object,out,override,orderby,params,partial,readonly,ref,remove,sbyte,sealed,select,set,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,value,var,virtual,where,yield"], +F=[F,"abstract,async,await,constructor,debugger,enum,eval,export,function,get,implements,instanceof,interface,let,null,set,undefined,var,with,yield,Infinity,NaN"],Q=[C,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],R=[C,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],C=[C,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"], +S=/^(DIR|FILE|array|vector|(de|priority_)?queue|(forward_)?list|stack|(const_)?(reverse_)?iterator|(unordered_)?(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,W=/\S/,X=y({keywords:[H,P,O,F,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",Q,R,C],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),I={};t(X,["default-code"]);t(G([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),"default-markup htm html mxml xhtml xml xsl".split(" "));t(G([["pln",/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null, +"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],["pun",/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);t(G([],[["atv",/^[\s\S]+/]]),["uq.val"]);t(y({keywords:H, +hashComments:!0,cStyleComments:!0,types:S}),"c cc cpp cxx cyc m".split(" "));t(y({keywords:"null,true,false"}),["json"]);t(y({keywords:P,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:S}),["cs"]);t(y({keywords:O,cStyleComments:!0}),["java"]);t(y({keywords:C,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);t(y({keywords:Q,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);t(y({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END", +hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);t(y({keywords:R,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);t(y({keywords:F,cStyleComments:!0,regexLiterals:!0}),["javascript","js","ts","typescript"]);t(y({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0, +regexLiterals:!0}),["coffee"]);t(G([],[["str",/^[\s\S]+/]]),["regex"]);var Y=E.PR={createSimpleLexer:G,registerLangHandler:t,sourceDecorator:y,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:E.prettyPrintOne=function(a,d,f){f=f||!1;d=d||null;var b=document.createElement("div");b.innerHTML="
"+a+"
"; +b=b.firstChild;f&&L(b,f,!0);M({j:d,m:f,h:b,l:1,a:null,i:null,c:null,g:null});return b.innerHTML},prettyPrint:E.prettyPrint=function(a,d){function f(){for(var b=E.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;p' + pair[2] + ''); + } + } + + var innerHTML = ''; + for (kind in html) { + var list = html[kind]; + if (!list.length) continue; + innerHTML += '
  • ' + kind + '
  • \n' + list.join('\n'); + } + result.innerHTML = innerHTML; + if (innerHTML) result.style.display = 'block'; + selectedIndex = -1; + }); + + // down, up and enter key are pressed, select search result. + input.addEventListener('keydown', function(ev){ + if (ev.keyCode === 40) { + // arrow down + var current = result.children[selectedIndex]; + var selected = result.children[selectedIndex + 1]; + if (selected && selected.classList.contains('search-separator')) { + var selected = result.children[selectedIndex + 2]; + selectedIndex++; + } + + if (selected) { + if (current) current.classList.remove('selected'); + selectedIndex++; + selected.classList.add('selected'); + } + } else if (ev.keyCode === 38) { + // arrow up + var current = result.children[selectedIndex]; + var selected = result.children[selectedIndex - 1]; + if (selected && selected.classList.contains('search-separator')) { + var selected = result.children[selectedIndex - 2]; + selectedIndex--; + } + + if (selected) { + if (current) current.classList.remove('selected'); + selectedIndex--; + selected.classList.add('selected'); + } + } else if (ev.keyCode === 13) { + // enter + var current = result.children[selectedIndex]; + if (current) { + var link = current.querySelector('a'); + if (link) location.href = link.href; + } + } else { + return; + } + + ev.preventDefault(); + }); + + // select search result when search result is mouse over. + result.addEventListener('mousemove', function(ev){ + var current = result.children[selectedIndex]; + if (current) current.classList.remove('selected'); + + var li = ev.target; + while (li) { + if (li.nodeName === 'LI') break; + li = li.parentElement; + } + + if (li) { + selectedIndex = Array.prototype.indexOf.call(result.children, li); + li.classList.add('selected'); + } + }); + + // clear search result when body is clicked. + document.body.addEventListener('click', function(ev){ + selectedIndex = -1; + result.style.display = 'none'; + result.innerHTML = ''; + }); + +})(); diff --git a/assets/esdocTemplate/script/test-summary.js b/assets/esdocTemplate/script/test-summary.js new file mode 100644 index 0000000000..2abad3bcd8 --- /dev/null +++ b/assets/esdocTemplate/script/test-summary.js @@ -0,0 +1,54 @@ +(function(){ + function toggle(ev) { + var button = ev.target; + var parent = ev.target.parentElement; + while(parent) { + if (parent.tagName === 'TR' && parent.classList.contains('test-interface')) break; + parent = parent.parentElement; + } + + if (!parent) return; + + var direction; + if (button.classList.contains('opened')) { + button.classList.remove('opened'); + button.classList.add('closed'); + direction = 'closed'; + } else { + button.classList.remove('closed'); + button.classList.add('opened'); + direction = 'opened'; + } + + var targetDepth = parseInt(parent.dataset.testDepth, 10) + 1; + var nextElement = parent.nextElementSibling; + while (nextElement) { + var depth = parseInt(nextElement.dataset.testDepth, 10); + if (depth >= targetDepth) { + if (direction === 'opened') { + if (depth === targetDepth) nextElement.style.display = ''; + } else if (direction === 'closed') { + nextElement.style.display = 'none'; + var innerButton = nextElement.querySelector('.toggle'); + if (innerButton && innerButton.classList.contains('opened')) { + innerButton.classList.remove('opened'); + innerButton.classList.add('closed'); + } + } + } else { + break; + } + nextElement = nextElement.nextElementSibling; + } + } + + var buttons = document.querySelectorAll('.test-summary tr.test-interface .toggle'); + for (var i = 0; i < buttons.length; i++) { + buttons[i].addEventListener('click', toggle); + } + + var topDescribes = document.querySelectorAll('.test-summary tr[data-test-depth="0"]'); + for (var i = 0; i < topDescribes.length; i++) { + topDescribes[i].style.display = ''; + } +})(); diff --git a/assets/esdocTemplate/single.html b/assets/esdocTemplate/single.html new file mode 100644 index 0000000000..8395a2ae7d --- /dev/null +++ b/assets/esdocTemplate/single.html @@ -0,0 +1,3 @@ +

    +
    +
    diff --git a/assets/esdocTemplate/source.html b/assets/esdocTemplate/source.html new file mode 100644 index 0000000000..4b52a07fcd --- /dev/null +++ b/assets/esdocTemplate/source.html @@ -0,0 +1,24 @@ +

    Source

    + + + + + + + + + + + + + + + + + + + + + + +
    FileIdentifierDocumentSizeLinesUpdated
    diff --git a/assets/esdocTemplate/summary.html b/assets/esdocTemplate/summary.html new file mode 100644 index 0000000000..608791dd75 --- /dev/null +++ b/assets/esdocTemplate/summary.html @@ -0,0 +1,33 @@ + + + + + + + + + +
    + + + + + + +
    +

    + + + + +

    +
    +
    +
    +
    +
    +
    +
    + version + since +
    diff --git a/assets/esdocTemplate/test.html b/assets/esdocTemplate/test.html new file mode 100644 index 0000000000..5c2f448928 --- /dev/null +++ b/assets/esdocTemplate/test.html @@ -0,0 +1,11 @@ +

    Test

    + + + + + + + + + +
    DescriptionIdentifier
    diff --git a/assets/esdocTemplate/testInterface.html b/assets/esdocTemplate/testInterface.html new file mode 100644 index 0000000000..8dcd123c1c --- /dev/null +++ b/assets/esdocTemplate/testInterface.html @@ -0,0 +1,4 @@ + + + + diff --git a/docs/ast/source/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js.json b/docs/ast/source/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js.json index 75d5654876..ac39bb3481 100644 --- a/docs/ast/source/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js.json +++ b/docs/ast/source/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js.json @@ -1,7 +1,7 @@ { "type": "File", "start": 0, - "end": 10388, + "end": 10389, "loc": { "start": { "line": 1, @@ -15,7 +15,7 @@ "program": { "type": "Program", "start": 0, - "end": 10388, + "end": 10389, "loc": { "start": { "line": 1, @@ -290,7 +290,7 @@ "type": "CommentBlock", "value": "*\n * {@link Viewer} plugin for measuring angles.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)\n *\n * * [[Example 1: Model with angle measurements](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_modelWithMeasurements)]\n * * [[Example 2: Create angle measurements with mouse](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)]\n *\n * ## Overview\n *\n * * An {@link AngleMeasurement} shows the angle between two connected 3D line segments, given\n * as three positions on the surface(s) of one or more {@link Entity}s.\n * * As shown on the screen capture above, a AngleMeasurement has two wires that show the line segments, with a label that shows the angle between them.\n * * Create AngleMeasurements programmatically with {@link AngleMeasurementsPlugin#createMeasurement}.\n * * Create AngleMeasurements interactively using the {@link AngleMeasurementsControl}, located at {@link AngleMeasurementsPlugin#control}.\n * * Existing AngleMeasurements are registered by ID in {@link AngleMeasurementsPlugin#measurements}.\n * * Destroy AngleMeasurements using {@link AngleMeasurementsPlugin#destroyMeasurement}.\n * * Configure global measurement units and scale via {@link Metrics}, located at {@link Scene#metrics}\n *\n * ## Example 1: Creating AngleMeasurements Programmatically\n *\n * In our first example, we'll use an {@link XKTLoaderPlugin} to load a model, and then use a AngleMeasurementsPlugin to programmatically create two {@link AngleMeasurement}s.\n *\n * Note how each AngleMeasurement has ````origin````, ````corner```` and ````target````, which each indicate a 3D World-space\n * position on the surface of an {@link Entity}. These can be aon the same Entity, or on different Entitys.\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_modelWithMeasurements)]\n *\n * ````JavaScript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {AngleMeasurementsPlugin} from \"../src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\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 angleMeasurements = new AngleMeasurementsPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\"\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * const myMeasurement1 = angleMeasurements.createMeasurement({\n * id: \"myAngleMeasurement1\",\n * origin: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [0.044, 5.998, 17.767]\n * },\n * corner: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [0.044, 5.998, 17.767]\n * },\n * target: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [4.738, 3.172, 17.768]\n * },\n * visible: true\n * });\n *\n * const myMeasurement2 = angleMeasurements.createMeasurement({\n * id: \"myAngleMeasurement2\",\n * origin: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FNr2\"],\n * worldPos: [0.457, 2.532, 17.766]\n * },\n * corner: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FNr2\"],\n * worldPos: [0.457, 2.532, 17.766]\n * },\n * target: {\n * entity: viewer.scene.objects[\"1CZILmCaHETO8tf3SgGEXu\"],\n * worldPos: [0.436, 0.001, 22.135]\n * },\n * visible: true\n * });\n * });\n * ````\n *\n * ## Example 2: Creating AngleMeasurements Interactively\n *\n * In our second example, we'll use an {@link XKTLoaderPlugin} to load a model, then we'll use the AngleMeasurementsPlugin's {@link AngleMeasurementsControl} to interactively create {@link AngleMeasurement}s with mouse or touch input.\n *\n * After we've activated the AngleMeasurementsControl, the first click on any {@link Entity} begins constructing a AngleMeasurement, fixing its\n * origin to that Entity. The next click on any Entity will fix the AngleMeasurement's corner, and the next click after\n * that will fix its target and complete the AngleMeasurement.\n *\n * The AngleMeasurementControl will then wait for the next click on any Entity, to begin constructing\n * another AngleMeasurement, and so on, until deactivated again.\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)]\n *\n * ````JavaScript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {AngleMeasurementsPlugin} from \"../src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\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 angleMeasurements = new AngleMeasurementsPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\"\n * });\n *\n * angleMeasurements.control.activate(); // <------------ Activate the AngleMeasurementsControl\n * ````\n ", "start": 176, - "end": 5947, + "end": 5948, "loc": { "start": { "line": 5, @@ -306,8 +306,8 @@ }, { "type": "Identifier", - "start": 5948, - "end": 10353, + "start": 5949, + "end": 10354, "loc": { "start": { "line": 131, @@ -320,8 +320,8 @@ }, "id": { "type": "Identifier", - "start": 5954, - "end": 5977, + "start": 5955, + "end": 5978, "loc": { "start": { "line": 131, @@ -338,8 +338,8 @@ }, "superClass": { "type": "Identifier", - "start": 5986, - "end": 5992, + "start": 5987, + "end": 5993, "loc": { "start": { "line": 131, @@ -355,8 +355,8 @@ }, "body": { "type": "ClassBody", - "start": 5993, - "end": 10353, + "start": 5994, + "end": 10354, "loc": { "start": { "line": 131, @@ -370,8 +370,8 @@ "body": [ { "type": "ClassMethod", - "start": 6389, - "end": 6625, + "start": 6390, + "end": 6626, "loc": { "start": { "line": 140, @@ -386,8 +386,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 6389, - "end": 6400, + "start": 6390, + "end": 6401, "loc": { "start": { "line": 140, @@ -410,8 +410,8 @@ "params": [ { "type": "Identifier", - "start": 6401, - "end": 6407, + "start": 6402, + "end": 6408, "loc": { "start": { "line": 140, @@ -427,8 +427,8 @@ }, { "type": "AssignmentPattern", - "start": 6409, - "end": 6417, + "start": 6410, + "end": 6418, "loc": { "start": { "line": 140, @@ -441,8 +441,8 @@ }, "left": { "type": "Identifier", - "start": 6409, - "end": 6412, + "start": 6410, + "end": 6413, "loc": { "start": { "line": 140, @@ -458,8 +458,8 @@ }, "right": { "type": "ObjectExpression", - "start": 6415, - "end": 6417, + "start": 6416, + "end": 6418, "loc": { "start": { "line": 140, @@ -476,8 +476,8 @@ ], "body": { "type": "BlockStatement", - "start": 6419, - "end": 6625, + "start": 6420, + "end": 6626, "loc": { "start": { "line": 140, @@ -491,8 +491,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 6430, - "end": 6465, + "start": 6431, + "end": 6466, "loc": { "start": { "line": 142, @@ -505,8 +505,8 @@ }, "expression": { "type": "CallExpression", - "start": 6430, - "end": 6464, + "start": 6431, + "end": 6465, "loc": { "start": { "line": 142, @@ -519,8 +519,8 @@ }, "callee": { "type": "Super", - "start": 6430, - "end": 6435, + "start": 6431, + "end": 6436, "loc": { "start": { "line": 142, @@ -535,8 +535,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 6436, - "end": 6455, + "start": 6437, + "end": 6456, "loc": { "start": { "line": 142, @@ -555,8 +555,8 @@ }, { "type": "Identifier", - "start": 6457, - "end": 6463, + "start": 6458, + "end": 6464, "loc": { "start": { "line": 142, @@ -575,8 +575,8 @@ }, { "type": "ExpressionStatement", - "start": 6475, - "end": 6524, + "start": 6476, + "end": 6525, "loc": { "start": { "line": 144, @@ -589,8 +589,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 6475, - "end": 6523, + "start": 6476, + "end": 6524, "loc": { "start": { "line": 144, @@ -604,8 +604,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 6475, - "end": 6490, + "start": 6476, + "end": 6491, "loc": { "start": { "line": 144, @@ -618,8 +618,8 @@ }, "object": { "type": "ThisExpression", - "start": 6475, - "end": 6479, + "start": 6476, + "end": 6480, "loc": { "start": { "line": 144, @@ -633,8 +633,8 @@ }, "property": { "type": "Identifier", - "start": 6480, - "end": 6490, + "start": 6481, + "end": 6491, "loc": { "start": { "line": 144, @@ -652,8 +652,8 @@ }, "right": { "type": "LogicalExpression", - "start": 6493, - "end": 6523, + "start": 6494, + "end": 6524, "loc": { "start": { "line": 144, @@ -666,8 +666,8 @@ }, "left": { "type": "MemberExpression", - "start": 6493, - "end": 6506, + "start": 6494, + "end": 6507, "loc": { "start": { "line": 144, @@ -680,8 +680,8 @@ }, "object": { "type": "Identifier", - "start": 6493, - "end": 6496, + "start": 6494, + "end": 6497, "loc": { "start": { "line": 144, @@ -697,8 +697,8 @@ }, "property": { "type": "Identifier", - "start": 6497, - "end": 6506, + "start": 6498, + "end": 6507, "loc": { "start": { "line": 144, @@ -717,8 +717,8 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 6510, - "end": 6523, + "start": 6511, + "end": 6524, "loc": { "start": { "line": 144, @@ -731,8 +731,8 @@ }, "object": { "type": "Identifier", - "start": 6510, - "end": 6518, + "start": 6511, + "end": 6519, "loc": { "start": { "line": 144, @@ -748,8 +748,8 @@ }, "property": { "type": "Identifier", - "start": 6519, - "end": 6523, + "start": 6520, + "end": 6524, "loc": { "start": { "line": 144, @@ -770,8 +770,8 @@ }, { "type": "ExpressionStatement", - "start": 6534, - "end": 6585, + "start": 6535, + "end": 6586, "loc": { "start": { "line": 146, @@ -784,8 +784,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 6534, - "end": 6584, + "start": 6535, + "end": 6585, "loc": { "start": { "line": 146, @@ -799,8 +799,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 6534, - "end": 6547, + "start": 6535, + "end": 6548, "loc": { "start": { "line": 146, @@ -813,8 +813,8 @@ }, "object": { "type": "ThisExpression", - "start": 6534, - "end": 6538, + "start": 6535, + "end": 6539, "loc": { "start": { "line": 146, @@ -828,8 +828,8 @@ }, "property": { "type": "Identifier", - "start": 6539, - "end": 6547, + "start": 6540, + "end": 6548, "loc": { "start": { "line": 146, @@ -847,8 +847,8 @@ }, "right": { "type": "NewExpression", - "start": 6550, - "end": 6584, + "start": 6551, + "end": 6585, "loc": { "start": { "line": 146, @@ -861,8 +861,8 @@ }, "callee": { "type": "Identifier", - "start": 6554, - "end": 6578, + "start": 6555, + "end": 6579, "loc": { "start": { "line": 146, @@ -879,8 +879,8 @@ "arguments": [ { "type": "ThisExpression", - "start": 6579, - "end": 6583, + "start": 6580, + "end": 6584, "loc": { "start": { "line": 146, @@ -898,8 +898,8 @@ }, { "type": "ExpressionStatement", - "start": 6595, - "end": 6619, + "start": 6596, + "end": 6620, "loc": { "start": { "line": 148, @@ -912,8 +912,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 6595, - "end": 6618, + "start": 6596, + "end": 6619, "loc": { "start": { "line": 148, @@ -927,8 +927,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 6595, - "end": 6613, + "start": 6596, + "end": 6614, "loc": { "start": { "line": 148, @@ -941,8 +941,8 @@ }, "object": { "type": "ThisExpression", - "start": 6595, - "end": 6599, + "start": 6596, + "end": 6600, "loc": { "start": { "line": 148, @@ -956,8 +956,8 @@ }, "property": { "type": "Identifier", - "start": 6600, - "end": 6613, + "start": 6601, + "end": 6614, "loc": { "start": { "line": 148, @@ -975,8 +975,8 @@ }, "right": { "type": "ObjectExpression", - "start": 6616, - "end": 6618, + "start": 6617, + "end": 6619, "loc": { "start": { "line": 148, @@ -999,8 +999,8 @@ { "type": "CommentBlock", "value": "*\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} [cfg] Plugin configuration.\n * @param {String} [cfg.id=\"AngleMeasurements\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {HTMLElement} [cfg.container] Container DOM element for markers and labels. Defaults to ````document.body````.\n ", - "start": 6000, - "end": 6384, + "start": 6001, + "end": 6385, "loc": { "start": { "line": 133, @@ -1017,8 +1017,8 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 6631, - "end": 6658, + "start": 6632, + "end": 6659, "loc": { "start": { "line": 151, @@ -1034,8 +1034,8 @@ }, { "type": "ClassMethod", - "start": 6663, - "end": 6689, + "start": 6664, + "end": 6690, "loc": { "start": { "line": 154, @@ -1050,8 +1050,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 6663, - "end": 6667, + "start": 6664, + "end": 6668, "loc": { "start": { "line": 154, @@ -1074,8 +1074,8 @@ "params": [ { "type": "Identifier", - "start": 6668, - "end": 6672, + "start": 6669, + "end": 6673, "loc": { "start": { "line": 154, @@ -1091,8 +1091,8 @@ }, { "type": "Identifier", - "start": 6674, - "end": 6679, + "start": 6675, + "end": 6680, "loc": { "start": { "line": 154, @@ -1109,8 +1109,8 @@ ], "body": { "type": "BlockStatement", - "start": 6681, - "end": 6689, + "start": 6682, + "end": 6690, "loc": { "start": { "line": 154, @@ -1130,8 +1130,8 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 6631, - "end": 6658, + "start": 6632, + "end": 6659, "loc": { "start": { "line": 151, @@ -1148,8 +1148,8 @@ { "type": "CommentBlock", "value": "*\n * Gets the {@link AngleMeasurementsControl}, which creates {@link AngleMeasurement}s from user input.\n *\n * @type {AngleMeasurementsControl}\n ", - "start": 6695, - "end": 6860, + "start": 6696, + "end": 6861, "loc": { "start": { "line": 158, @@ -1165,8 +1165,8 @@ }, { "type": "ClassMethod", - "start": 6865, - "end": 6916, + "start": 6866, + "end": 6917, "loc": { "start": { "line": 163, @@ -1181,8 +1181,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 6869, - "end": 6876, + "start": 6870, + "end": 6877, "loc": { "start": { "line": 163, @@ -1204,8 +1204,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 6879, - "end": 6916, + "start": 6880, + "end": 6917, "loc": { "start": { "line": 163, @@ -1219,8 +1219,8 @@ "body": [ { "type": "ReturnStatement", - "start": 6889, - "end": 6910, + "start": 6890, + "end": 6911, "loc": { "start": { "line": 164, @@ -1233,8 +1233,8 @@ }, "argument": { "type": "MemberExpression", - "start": 6896, - "end": 6909, + "start": 6897, + "end": 6910, "loc": { "start": { "line": 164, @@ -1247,8 +1247,8 @@ }, "object": { "type": "ThisExpression", - "start": 6896, - "end": 6900, + "start": 6897, + "end": 6901, "loc": { "start": { "line": 164, @@ -1262,8 +1262,8 @@ }, "property": { "type": "Identifier", - "start": 6901, - "end": 6909, + "start": 6902, + "end": 6910, "loc": { "start": { "line": 164, @@ -1288,8 +1288,8 @@ { "type": "CommentBlock", "value": "*\n * Gets the {@link AngleMeasurementsControl}, which creates {@link AngleMeasurement}s from user input.\n *\n * @type {AngleMeasurementsControl}\n ", - "start": 6695, - "end": 6860, + "start": 6696, + "end": 6861, "loc": { "start": { "line": 158, @@ -1306,8 +1306,8 @@ { "type": "CommentBlock", "value": "*\n * Gets the existing {@link AngleMeasurement}s, each mapped to its {@link AngleMeasurement#id}.\n *\n * @type {{String:AngleMeasurement}}\n ", - "start": 6922, - "end": 7081, + "start": 6923, + "end": 7082, "loc": { "start": { "line": 167, @@ -1323,8 +1323,8 @@ }, { "type": "ClassMethod", - "start": 7086, - "end": 7147, + "start": 7087, + "end": 7148, "loc": { "start": { "line": 172, @@ -1339,8 +1339,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 7090, - "end": 7102, + "start": 7091, + "end": 7103, "loc": { "start": { "line": 172, @@ -1362,8 +1362,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 7105, - "end": 7147, + "start": 7106, + "end": 7148, "loc": { "start": { "line": 172, @@ -1377,8 +1377,8 @@ "body": [ { "type": "ReturnStatement", - "start": 7115, - "end": 7141, + "start": 7116, + "end": 7142, "loc": { "start": { "line": 173, @@ -1391,8 +1391,8 @@ }, "argument": { "type": "MemberExpression", - "start": 7122, - "end": 7140, + "start": 7123, + "end": 7141, "loc": { "start": { "line": 173, @@ -1405,8 +1405,8 @@ }, "object": { "type": "ThisExpression", - "start": 7122, - "end": 7126, + "start": 7123, + "end": 7127, "loc": { "start": { "line": 173, @@ -1420,8 +1420,8 @@ }, "property": { "type": "Identifier", - "start": 7127, - "end": 7140, + "start": 7128, + "end": 7141, "loc": { "start": { "line": 173, @@ -1446,8 +1446,8 @@ { "type": "CommentBlock", "value": "*\n * Gets the existing {@link AngleMeasurement}s, each mapped to its {@link AngleMeasurement#id}.\n *\n * @type {{String:AngleMeasurement}}\n ", - "start": 6922, - "end": 7081, + "start": 6923, + "end": 7082, "loc": { "start": { "line": 167, @@ -1464,8 +1464,8 @@ { "type": "CommentBlock", "value": "*\n * Creates an {@link AngleMeasurement}.\n *\n * The AngleMeasurement is then registered by {@link AngleMeasurement#id} in {@link AngleMeasurementsPlugin#measurements}.\n *\n * @param {Object} params {@link AngleMeasurement} configuration.\n * @param {String} params.id Unique ID to assign to {@link AngleMeasurement#id}. The AngleMeasurement will be registered by this in {@link AngleMeasurementsPlugin#measurements} and {@link Scene.components}. Must be unique among all components in the {@link Viewer}.\n * @param {Number[]} params.origin.worldPos Origin World-space 3D position.\n * @param {Entity} params.origin.entity Origin Entity.\n * @param {Number[]} params.corner.worldPos Corner World-space 3D position.\n * @param {Entity} params.corner.entity Corner Entity.\n * @param {Number[]} params.target.worldPos Target World-space 3D position.\n * @param {Entity} params.target.entity Target Entity.\n * @param {Boolean} [params.visible=true] Whether to initially show the {@link AngleMeasurement}.\n * @returns {AngleMeasurement} The new {@link AngleMeasurement}.\n ", - "start": 7153, - "end": 8277, + "start": 7154, + "end": 8278, "loc": { "start": { "line": 176, @@ -1481,8 +1481,8 @@ }, { "type": "ClassMethod", - "start": 8282, - "end": 9545, + "start": 8283, + "end": 9546, "loc": { "start": { "line": 192, @@ -1497,8 +1497,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8282, - "end": 8299, + "start": 8283, + "end": 8300, "loc": { "start": { "line": 192, @@ -1521,8 +1521,8 @@ "params": [ { "type": "AssignmentPattern", - "start": 8300, - "end": 8311, + "start": 8301, + "end": 8312, "loc": { "start": { "line": 192, @@ -1535,8 +1535,8 @@ }, "left": { "type": "Identifier", - "start": 8300, - "end": 8306, + "start": 8301, + "end": 8307, "loc": { "start": { "line": 192, @@ -1552,8 +1552,8 @@ }, "right": { "type": "ObjectExpression", - "start": 8309, - "end": 8311, + "start": 8310, + "end": 8312, "loc": { "start": { "line": 192, @@ -1570,8 +1570,8 @@ ], "body": { "type": "BlockStatement", - "start": 8313, - "end": 9545, + "start": 8314, + "end": 9546, "loc": { "start": { "line": 192, @@ -1585,8 +1585,8 @@ "body": [ { "type": "IfStatement", - "start": 8323, - "end": 8501, + "start": 8324, + "end": 8502, "loc": { "start": { "line": 193, @@ -1599,8 +1599,8 @@ }, "test": { "type": "MemberExpression", - "start": 8327, - "end": 8366, + "start": 8328, + "end": 8367, "loc": { "start": { "line": 193, @@ -1613,8 +1613,8 @@ }, "object": { "type": "MemberExpression", - "start": 8327, - "end": 8355, + "start": 8328, + "end": 8356, "loc": { "start": { "line": 193, @@ -1627,8 +1627,8 @@ }, "object": { "type": "MemberExpression", - "start": 8327, - "end": 8344, + "start": 8328, + "end": 8345, "loc": { "start": { "line": 193, @@ -1641,8 +1641,8 @@ }, "object": { "type": "MemberExpression", - "start": 8327, - "end": 8338, + "start": 8328, + "end": 8339, "loc": { "start": { "line": 193, @@ -1655,8 +1655,8 @@ }, "object": { "type": "ThisExpression", - "start": 8327, - "end": 8331, + "start": 8328, + "end": 8332, "loc": { "start": { "line": 193, @@ -1670,8 +1670,8 @@ }, "property": { "type": "Identifier", - "start": 8332, - "end": 8338, + "start": 8333, + "end": 8339, "loc": { "start": { "line": 193, @@ -1689,8 +1689,8 @@ }, "property": { "type": "Identifier", - "start": 8339, - "end": 8344, + "start": 8340, + "end": 8345, "loc": { "start": { "line": 193, @@ -1708,8 +1708,8 @@ }, "property": { "type": "Identifier", - "start": 8345, - "end": 8355, + "start": 8346, + "end": 8356, "loc": { "start": { "line": 193, @@ -1727,8 +1727,8 @@ }, "property": { "type": "MemberExpression", - "start": 8356, - "end": 8365, + "start": 8357, + "end": 8366, "loc": { "start": { "line": 193, @@ -1741,8 +1741,8 @@ }, "object": { "type": "Identifier", - "start": 8356, - "end": 8362, + "start": 8357, + "end": 8363, "loc": { "start": { "line": 193, @@ -1758,8 +1758,8 @@ }, "property": { "type": "Identifier", - "start": 8363, - "end": 8365, + "start": 8364, + "end": 8366, "loc": { "start": { "line": 193, @@ -1779,8 +1779,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 8368, - "end": 8501, + "start": 8369, + "end": 8502, "loc": { "start": { "line": 193, @@ -1794,8 +1794,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 8382, - "end": 8461, + "start": 8383, + "end": 8462, "loc": { "start": { "line": 194, @@ -1808,8 +1808,8 @@ }, "expression": { "type": "CallExpression", - "start": 8382, - "end": 8460, + "start": 8383, + "end": 8461, "loc": { "start": { "line": 194, @@ -1822,8 +1822,8 @@ }, "callee": { "type": "MemberExpression", - "start": 8382, - "end": 8392, + "start": 8383, + "end": 8393, "loc": { "start": { "line": 194, @@ -1836,8 +1836,8 @@ }, "object": { "type": "ThisExpression", - "start": 8382, - "end": 8386, + "start": 8383, + "end": 8387, "loc": { "start": { "line": 194, @@ -1851,8 +1851,8 @@ }, "property": { "type": "Identifier", - "start": 8387, - "end": 8392, + "start": 8388, + "end": 8393, "loc": { "start": { "line": 194, @@ -1871,8 +1871,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 8393, - "end": 8459, + "start": 8394, + "end": 8460, "loc": { "start": { "line": 194, @@ -1885,8 +1885,8 @@ }, "left": { "type": "StringLiteral", - "start": 8393, - "end": 8447, + "start": 8394, + "end": 8448, "loc": { "start": { "line": 194, @@ -1906,8 +1906,8 @@ "operator": "+", "right": { "type": "MemberExpression", - "start": 8450, - "end": 8459, + "start": 8451, + "end": 8460, "loc": { "start": { "line": 194, @@ -1920,8 +1920,8 @@ }, "object": { "type": "Identifier", - "start": 8450, - "end": 8456, + "start": 8451, + "end": 8457, "loc": { "start": { "line": 194, @@ -1937,8 +1937,8 @@ }, "property": { "type": "Identifier", - "start": 8457, - "end": 8459, + "start": 8458, + "end": 8460, "loc": { "start": { "line": 194, @@ -1960,8 +1960,8 @@ }, { "type": "ExpressionStatement", - "start": 8474, - "end": 8491, + "start": 8475, + "end": 8492, "loc": { "start": { "line": 195, @@ -1974,8 +1974,8 @@ }, "expression": { "type": "UnaryExpression", - "start": 8474, - "end": 8490, + "start": 8475, + "end": 8491, "loc": { "start": { "line": 195, @@ -1990,8 +1990,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 8481, - "end": 8490, + "start": 8482, + "end": 8491, "loc": { "start": { "line": 195, @@ -2004,8 +2004,8 @@ }, "object": { "type": "Identifier", - "start": 8481, - "end": 8487, + "start": 8482, + "end": 8488, "loc": { "start": { "line": 195, @@ -2021,8 +2021,8 @@ }, "property": { "type": "Identifier", - "start": 8488, - "end": 8490, + "start": 8489, + "end": 8491, "loc": { "start": { "line": 195, @@ -2050,8 +2050,8 @@ }, { "type": "VariableDeclaration", - "start": 8510, - "end": 8539, + "start": 8511, + "end": 8540, "loc": { "start": { "line": 197, @@ -2065,8 +2065,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 8516, - "end": 8538, + "start": 8517, + "end": 8539, "loc": { "start": { "line": 197, @@ -2079,8 +2079,8 @@ }, "id": { "type": "Identifier", - "start": 8516, - "end": 8522, + "start": 8517, + "end": 8523, "loc": { "start": { "line": 197, @@ -2096,8 +2096,8 @@ }, "init": { "type": "MemberExpression", - "start": 8525, - "end": 8538, + "start": 8526, + "end": 8539, "loc": { "start": { "line": 197, @@ -2110,8 +2110,8 @@ }, "object": { "type": "Identifier", - "start": 8525, - "end": 8531, + "start": 8526, + "end": 8532, "loc": { "start": { "line": 197, @@ -2127,8 +2127,8 @@ }, "property": { "type": "Identifier", - "start": 8532, - "end": 8538, + "start": 8533, + "end": 8539, "loc": { "start": { "line": 197, @@ -2150,8 +2150,8 @@ }, { "type": "VariableDeclaration", - "start": 8548, - "end": 8577, + "start": 8549, + "end": 8578, "loc": { "start": { "line": 198, @@ -2165,8 +2165,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 8554, - "end": 8576, + "start": 8555, + "end": 8577, "loc": { "start": { "line": 198, @@ -2179,8 +2179,8 @@ }, "id": { "type": "Identifier", - "start": 8554, - "end": 8560, + "start": 8555, + "end": 8561, "loc": { "start": { "line": 198, @@ -2196,8 +2196,8 @@ }, "init": { "type": "MemberExpression", - "start": 8563, - "end": 8576, + "start": 8564, + "end": 8577, "loc": { "start": { "line": 198, @@ -2210,8 +2210,8 @@ }, "object": { "type": "Identifier", - "start": 8563, - "end": 8569, + "start": 8564, + "end": 8570, "loc": { "start": { "line": 198, @@ -2227,8 +2227,8 @@ }, "property": { "type": "Identifier", - "start": 8570, - "end": 8576, + "start": 8571, + "end": 8577, "loc": { "start": { "line": 198, @@ -2250,8 +2250,8 @@ }, { "type": "VariableDeclaration", - "start": 8586, - "end": 8615, + "start": 8587, + "end": 8616, "loc": { "start": { "line": 199, @@ -2265,8 +2265,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 8592, - "end": 8614, + "start": 8593, + "end": 8615, "loc": { "start": { "line": 199, @@ -2279,8 +2279,8 @@ }, "id": { "type": "Identifier", - "start": 8592, - "end": 8598, + "start": 8593, + "end": 8599, "loc": { "start": { "line": 199, @@ -2296,8 +2296,8 @@ }, "init": { "type": "MemberExpression", - "start": 8601, - "end": 8614, + "start": 8602, + "end": 8615, "loc": { "start": { "line": 199, @@ -2310,8 +2310,8 @@ }, "object": { "type": "Identifier", - "start": 8601, - "end": 8607, + "start": 8602, + "end": 8608, "loc": { "start": { "line": 199, @@ -2327,8 +2327,8 @@ }, "property": { "type": "Identifier", - "start": 8608, - "end": 8614, + "start": 8609, + "end": 8615, "loc": { "start": { "line": 199, @@ -2350,8 +2350,8 @@ }, { "type": "VariableDeclaration", - "start": 8624, - "end": 9342, + "start": 8625, + "end": 9343, "loc": { "start": { "line": 200, @@ -2365,8 +2365,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 8630, - "end": 9341, + "start": 8631, + "end": 9342, "loc": { "start": { "line": 200, @@ -2379,8 +2379,8 @@ }, "id": { "type": "Identifier", - "start": 8630, - "end": 8641, + "start": 8631, + "end": 8642, "loc": { "start": { "line": 200, @@ -2396,8 +2396,8 @@ }, "init": { "type": "NewExpression", - "start": 8644, - "end": 9341, + "start": 8645, + "end": 9342, "loc": { "start": { "line": 200, @@ -2410,8 +2410,8 @@ }, "callee": { "type": "Identifier", - "start": 8648, - "end": 8664, + "start": 8649, + "end": 8665, "loc": { "start": { "line": 200, @@ -2428,8 +2428,8 @@ "arguments": [ { "type": "ThisExpression", - "start": 8665, - "end": 8669, + "start": 8666, + "end": 8670, "loc": { "start": { "line": 200, @@ -2443,8 +2443,8 @@ }, { "type": "ObjectExpression", - "start": 8671, - "end": 9340, + "start": 8672, + "end": 9341, "loc": { "start": { "line": 200, @@ -2458,8 +2458,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 8685, - "end": 8698, + "start": 8686, + "end": 8699, "loc": { "start": { "line": 201, @@ -2475,8 +2475,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8685, - "end": 8687, + "start": 8686, + "end": 8688, "loc": { "start": { "line": 201, @@ -2492,8 +2492,8 @@ }, "value": { "type": "MemberExpression", - "start": 8689, - "end": 8698, + "start": 8690, + "end": 8699, "loc": { "start": { "line": 201, @@ -2506,8 +2506,8 @@ }, "object": { "type": "Identifier", - "start": 8689, - "end": 8695, + "start": 8690, + "end": 8696, "loc": { "start": { "line": 201, @@ -2523,8 +2523,8 @@ }, "property": { "type": "Identifier", - "start": 8696, - "end": 8698, + "start": 8697, + "end": 8699, "loc": { "start": { "line": 201, @@ -2543,8 +2543,8 @@ }, { "type": "ObjectProperty", - "start": 8712, - "end": 8724, + "start": 8713, + "end": 8725, "loc": { "start": { "line": 202, @@ -2560,8 +2560,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8712, - "end": 8718, + "start": 8713, + "end": 8719, "loc": { "start": { "line": 202, @@ -2577,8 +2577,8 @@ }, "value": { "type": "ThisExpression", - "start": 8720, - "end": 8724, + "start": 8721, + "end": 8725, "loc": { "start": { "line": 202, @@ -2593,8 +2593,8 @@ }, { "type": "ObjectProperty", - "start": 8738, - "end": 8764, + "start": 8739, + "end": 8765, "loc": { "start": { "line": 203, @@ -2610,8 +2610,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8738, - "end": 8747, + "start": 8739, + "end": 8748, "loc": { "start": { "line": 203, @@ -2627,8 +2627,8 @@ }, "value": { "type": "MemberExpression", - "start": 8749, - "end": 8764, + "start": 8750, + "end": 8765, "loc": { "start": { "line": 203, @@ -2641,8 +2641,8 @@ }, "object": { "type": "ThisExpression", - "start": 8749, - "end": 8753, + "start": 8750, + "end": 8754, "loc": { "start": { "line": 203, @@ -2656,8 +2656,8 @@ }, "property": { "type": "Identifier", - "start": 8754, - "end": 8764, + "start": 8755, + "end": 8765, "loc": { "start": { "line": 203, @@ -2676,8 +2676,8 @@ }, { "type": "ObjectProperty", - "start": 8778, - "end": 8882, + "start": 8779, + "end": 8883, "loc": { "start": { "line": 204, @@ -2693,8 +2693,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8778, - "end": 8784, + "start": 8779, + "end": 8785, "loc": { "start": { "line": 204, @@ -2710,8 +2710,8 @@ }, "value": { "type": "ObjectExpression", - "start": 8786, - "end": 8882, + "start": 8787, + "end": 8883, "loc": { "start": { "line": 204, @@ -2725,8 +2725,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 8804, - "end": 8825, + "start": 8805, + "end": 8826, "loc": { "start": { "line": 205, @@ -2742,8 +2742,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8804, - "end": 8810, + "start": 8805, + "end": 8811, "loc": { "start": { "line": 205, @@ -2759,8 +2759,8 @@ }, "value": { "type": "MemberExpression", - "start": 8812, - "end": 8825, + "start": 8813, + "end": 8826, "loc": { "start": { "line": 205, @@ -2773,8 +2773,8 @@ }, "object": { "type": "Identifier", - "start": 8812, - "end": 8818, + "start": 8813, + "end": 8819, "loc": { "start": { "line": 205, @@ -2790,8 +2790,8 @@ }, "property": { "type": "Identifier", - "start": 8819, - "end": 8825, + "start": 8820, + "end": 8826, "loc": { "start": { "line": 205, @@ -2810,8 +2810,8 @@ }, { "type": "ObjectProperty", - "start": 8843, - "end": 8868, + "start": 8844, + "end": 8869, "loc": { "start": { "line": 206, @@ -2827,8 +2827,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8843, - "end": 8851, + "start": 8844, + "end": 8852, "loc": { "start": { "line": 206, @@ -2844,8 +2844,8 @@ }, "value": { "type": "MemberExpression", - "start": 8853, - "end": 8868, + "start": 8854, + "end": 8869, "loc": { "start": { "line": 206, @@ -2858,8 +2858,8 @@ }, "object": { "type": "Identifier", - "start": 8853, - "end": 8859, + "start": 8854, + "end": 8860, "loc": { "start": { "line": 206, @@ -2875,8 +2875,8 @@ }, "property": { "type": "Identifier", - "start": 8860, - "end": 8868, + "start": 8861, + "end": 8869, "loc": { "start": { "line": 206, @@ -2898,8 +2898,8 @@ }, { "type": "ObjectProperty", - "start": 8896, - "end": 9000, + "start": 8897, + "end": 9001, "loc": { "start": { "line": 208, @@ -2915,8 +2915,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8896, - "end": 8902, + "start": 8897, + "end": 8903, "loc": { "start": { "line": 208, @@ -2932,8 +2932,8 @@ }, "value": { "type": "ObjectExpression", - "start": 8904, - "end": 9000, + "start": 8905, + "end": 9001, "loc": { "start": { "line": 208, @@ -2947,8 +2947,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 8922, - "end": 8943, + "start": 8923, + "end": 8944, "loc": { "start": { "line": 209, @@ -2964,8 +2964,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8922, - "end": 8928, + "start": 8923, + "end": 8929, "loc": { "start": { "line": 209, @@ -2981,8 +2981,8 @@ }, "value": { "type": "MemberExpression", - "start": 8930, - "end": 8943, + "start": 8931, + "end": 8944, "loc": { "start": { "line": 209, @@ -2995,8 +2995,8 @@ }, "object": { "type": "Identifier", - "start": 8930, - "end": 8936, + "start": 8931, + "end": 8937, "loc": { "start": { "line": 209, @@ -3012,8 +3012,8 @@ }, "property": { "type": "Identifier", - "start": 8937, - "end": 8943, + "start": 8938, + "end": 8944, "loc": { "start": { "line": 209, @@ -3032,8 +3032,8 @@ }, { "type": "ObjectProperty", - "start": 8961, - "end": 8986, + "start": 8962, + "end": 8987, "loc": { "start": { "line": 210, @@ -3049,8 +3049,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8961, - "end": 8969, + "start": 8962, + "end": 8970, "loc": { "start": { "line": 210, @@ -3066,8 +3066,8 @@ }, "value": { "type": "MemberExpression", - "start": 8971, - "end": 8986, + "start": 8972, + "end": 8987, "loc": { "start": { "line": 210, @@ -3080,8 +3080,8 @@ }, "object": { "type": "Identifier", - "start": 8971, - "end": 8977, + "start": 8972, + "end": 8978, "loc": { "start": { "line": 210, @@ -3097,8 +3097,8 @@ }, "property": { "type": "Identifier", - "start": 8978, - "end": 8986, + "start": 8979, + "end": 8987, "loc": { "start": { "line": 210, @@ -3120,8 +3120,8 @@ }, { "type": "ObjectProperty", - "start": 9014, - "end": 9118, + "start": 9015, + "end": 9119, "loc": { "start": { "line": 212, @@ -3137,8 +3137,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9014, - "end": 9020, + "start": 9015, + "end": 9021, "loc": { "start": { "line": 212, @@ -3154,8 +3154,8 @@ }, "value": { "type": "ObjectExpression", - "start": 9022, - "end": 9118, + "start": 9023, + "end": 9119, "loc": { "start": { "line": 212, @@ -3169,8 +3169,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 9040, - "end": 9061, + "start": 9041, + "end": 9062, "loc": { "start": { "line": 213, @@ -3186,8 +3186,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9040, - "end": 9046, + "start": 9041, + "end": 9047, "loc": { "start": { "line": 213, @@ -3203,8 +3203,8 @@ }, "value": { "type": "MemberExpression", - "start": 9048, - "end": 9061, + "start": 9049, + "end": 9062, "loc": { "start": { "line": 213, @@ -3217,8 +3217,8 @@ }, "object": { "type": "Identifier", - "start": 9048, - "end": 9054, + "start": 9049, + "end": 9055, "loc": { "start": { "line": 213, @@ -3234,8 +3234,8 @@ }, "property": { "type": "Identifier", - "start": 9055, - "end": 9061, + "start": 9056, + "end": 9062, "loc": { "start": { "line": 213, @@ -3254,8 +3254,8 @@ }, { "type": "ObjectProperty", - "start": 9079, - "end": 9104, + "start": 9080, + "end": 9105, "loc": { "start": { "line": 214, @@ -3271,8 +3271,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9079, - "end": 9087, + "start": 9080, + "end": 9088, "loc": { "start": { "line": 214, @@ -3288,8 +3288,8 @@ }, "value": { "type": "MemberExpression", - "start": 9089, - "end": 9104, + "start": 9090, + "end": 9105, "loc": { "start": { "line": 214, @@ -3302,8 +3302,8 @@ }, "object": { "type": "Identifier", - "start": 9089, - "end": 9095, + "start": 9090, + "end": 9096, "loc": { "start": { "line": 214, @@ -3319,8 +3319,8 @@ }, "property": { "type": "Identifier", - "start": 9096, - "end": 9104, + "start": 9097, + "end": 9105, "loc": { "start": { "line": 214, @@ -3342,8 +3342,8 @@ }, { "type": "ObjectProperty", - "start": 9133, - "end": 9156, + "start": 9134, + "end": 9157, "loc": { "start": { "line": 217, @@ -3359,8 +3359,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9133, - "end": 9140, + "start": 9134, + "end": 9141, "loc": { "start": { "line": 217, @@ -3376,8 +3376,8 @@ }, "value": { "type": "MemberExpression", - "start": 9142, - "end": 9156, + "start": 9143, + "end": 9157, "loc": { "start": { "line": 217, @@ -3390,8 +3390,8 @@ }, "object": { "type": "Identifier", - "start": 9142, - "end": 9148, + "start": 9143, + "end": 9149, "loc": { "start": { "line": 217, @@ -3407,8 +3407,8 @@ }, "property": { "type": "Identifier", - "start": 9149, - "end": 9156, + "start": 9150, + "end": 9157, "loc": { "start": { "line": 217, @@ -3427,8 +3427,8 @@ }, { "type": "ObjectProperty", - "start": 9170, - "end": 9189, + "start": 9171, + "end": 9190, "loc": { "start": { "line": 218, @@ -3444,8 +3444,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9170, - "end": 9183, + "start": 9171, + "end": 9184, "loc": { "start": { "line": 218, @@ -3461,8 +3461,8 @@ }, "value": { "type": "BooleanLiteral", - "start": 9185, - "end": 9189, + "start": 9186, + "end": 9190, "loc": { "start": { "line": 218, @@ -3478,8 +3478,8 @@ }, { "type": "ObjectProperty", - "start": 9203, - "end": 9226, + "start": 9204, + "end": 9227, "loc": { "start": { "line": 219, @@ -3495,8 +3495,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9203, - "end": 9220, + "start": 9204, + "end": 9221, "loc": { "start": { "line": 219, @@ -3512,8 +3512,8 @@ }, "value": { "type": "BooleanLiteral", - "start": 9222, - "end": 9226, + "start": 9223, + "end": 9227, "loc": { "start": { "line": 219, @@ -3529,8 +3529,8 @@ }, { "type": "ObjectProperty", - "start": 9240, - "end": 9259, + "start": 9241, + "end": 9260, "loc": { "start": { "line": 220, @@ -3546,8 +3546,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9240, - "end": 9253, + "start": 9241, + "end": 9254, "loc": { "start": { "line": 220, @@ -3563,8 +3563,8 @@ }, "value": { "type": "BooleanLiteral", - "start": 9255, - "end": 9259, + "start": 9256, + "end": 9260, "loc": { "start": { "line": 220, @@ -3580,8 +3580,8 @@ }, { "type": "ObjectProperty", - "start": 9273, - "end": 9296, + "start": 9274, + "end": 9297, "loc": { "start": { "line": 221, @@ -3597,8 +3597,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9273, - "end": 9290, + "start": 9274, + "end": 9291, "loc": { "start": { "line": 221, @@ -3614,8 +3614,8 @@ }, "value": { "type": "BooleanLiteral", - "start": 9292, - "end": 9296, + "start": 9293, + "end": 9297, "loc": { "start": { "line": 221, @@ -3631,8 +3631,8 @@ }, { "type": "ObjectProperty", - "start": 9310, - "end": 9329, + "start": 9311, + "end": 9330, "loc": { "start": { "line": 222, @@ -3648,8 +3648,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9310, - "end": 9323, + "start": 9311, + "end": 9324, "loc": { "start": { "line": 222, @@ -3665,8 +3665,8 @@ }, "value": { "type": "BooleanLiteral", - "start": 9325, - "end": 9329, + "start": 9326, + "end": 9330, "loc": { "start": { "line": 222, @@ -3690,8 +3690,8 @@ }, { "type": "ExpressionStatement", - "start": 9351, - "end": 9400, + "start": 9352, + "end": 9401, "loc": { "start": { "line": 224, @@ -3704,8 +3704,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9351, - "end": 9399, + "start": 9352, + "end": 9400, "loc": { "start": { "line": 224, @@ -3719,8 +3719,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 9351, - "end": 9385, + "start": 9352, + "end": 9386, "loc": { "start": { "line": 224, @@ -3733,8 +3733,8 @@ }, "object": { "type": "MemberExpression", - "start": 9351, - "end": 9369, + "start": 9352, + "end": 9370, "loc": { "start": { "line": 224, @@ -3747,8 +3747,8 @@ }, "object": { "type": "ThisExpression", - "start": 9351, - "end": 9355, + "start": 9352, + "end": 9356, "loc": { "start": { "line": 224, @@ -3762,8 +3762,8 @@ }, "property": { "type": "Identifier", - "start": 9356, - "end": 9369, + "start": 9357, + "end": 9370, "loc": { "start": { "line": 224, @@ -3781,8 +3781,8 @@ }, "property": { "type": "MemberExpression", - "start": 9370, - "end": 9384, + "start": 9371, + "end": 9385, "loc": { "start": { "line": 224, @@ -3795,8 +3795,8 @@ }, "object": { "type": "Identifier", - "start": 9370, - "end": 9381, + "start": 9371, + "end": 9382, "loc": { "start": { "line": 224, @@ -3812,8 +3812,8 @@ }, "property": { "type": "Identifier", - "start": 9382, - "end": 9384, + "start": 9383, + "end": 9385, "loc": { "start": { "line": 224, @@ -3833,8 +3833,8 @@ }, "right": { "type": "Identifier", - "start": 9388, - "end": 9399, + "start": 9389, + "end": 9400, "loc": { "start": { "line": 224, @@ -3852,8 +3852,8 @@ }, { "type": "ExpressionStatement", - "start": 9409, - "end": 9511, + "start": 9410, + "end": 9512, "loc": { "start": { "line": 225, @@ -3866,8 +3866,8 @@ }, "expression": { "type": "CallExpression", - "start": 9409, - "end": 9510, + "start": 9410, + "end": 9511, "loc": { "start": { "line": 225, @@ -3880,8 +3880,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9409, - "end": 9423, + "start": 9410, + "end": 9424, "loc": { "start": { "line": 225, @@ -3894,8 +3894,8 @@ }, "object": { "type": "Identifier", - "start": 9409, - "end": 9420, + "start": 9410, + "end": 9421, "loc": { "start": { "line": 225, @@ -3911,8 +3911,8 @@ }, "property": { "type": "Identifier", - "start": 9421, - "end": 9423, + "start": 9422, + "end": 9424, "loc": { "start": { "line": 225, @@ -3931,8 +3931,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 9424, - "end": 9435, + "start": 9425, + "end": 9436, "loc": { "start": { "line": 225, @@ -3951,8 +3951,8 @@ }, { "type": "ArrowFunctionExpression", - "start": 9437, - "end": 9509, + "start": 9438, + "end": 9510, "loc": { "start": { "line": 225, @@ -3970,8 +3970,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 9443, - "end": 9509, + "start": 9444, + "end": 9510, "loc": { "start": { "line": 225, @@ -3985,8 +3985,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9457, - "end": 9499, + "start": 9458, + "end": 9500, "loc": { "start": { "line": 226, @@ -3999,8 +3999,8 @@ }, "expression": { "type": "UnaryExpression", - "start": 9457, - "end": 9498, + "start": 9458, + "end": 9499, "loc": { "start": { "line": 226, @@ -4015,8 +4015,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 9464, - "end": 9498, + "start": 9465, + "end": 9499, "loc": { "start": { "line": 226, @@ -4029,8 +4029,8 @@ }, "object": { "type": "MemberExpression", - "start": 9464, - "end": 9482, + "start": 9465, + "end": 9483, "loc": { "start": { "line": 226, @@ -4043,8 +4043,8 @@ }, "object": { "type": "ThisExpression", - "start": 9464, - "end": 9468, + "start": 9465, + "end": 9469, "loc": { "start": { "line": 226, @@ -4058,8 +4058,8 @@ }, "property": { "type": "Identifier", - "start": 9469, - "end": 9482, + "start": 9470, + "end": 9483, "loc": { "start": { "line": 226, @@ -4077,8 +4077,8 @@ }, "property": { "type": "MemberExpression", - "start": 9483, - "end": 9497, + "start": 9484, + "end": 9498, "loc": { "start": { "line": 226, @@ -4091,8 +4091,8 @@ }, "object": { "type": "Identifier", - "start": 9483, - "end": 9494, + "start": 9484, + "end": 9495, "loc": { "start": { "line": 226, @@ -4108,8 +4108,8 @@ }, "property": { "type": "Identifier", - "start": 9495, - "end": 9497, + "start": 9496, + "end": 9498, "loc": { "start": { "line": 226, @@ -4141,8 +4141,8 @@ }, { "type": "ReturnStatement", - "start": 9520, - "end": 9539, + "start": 9521, + "end": 9540, "loc": { "start": { "line": 228, @@ -4155,8 +4155,8 @@ }, "argument": { "type": "Identifier", - "start": 9527, - "end": 9538, + "start": 9528, + "end": 9539, "loc": { "start": { "line": 228, @@ -4179,8 +4179,8 @@ { "type": "CommentBlock", "value": "*\n * Creates an {@link AngleMeasurement}.\n *\n * The AngleMeasurement is then registered by {@link AngleMeasurement#id} in {@link AngleMeasurementsPlugin#measurements}.\n *\n * @param {Object} params {@link AngleMeasurement} configuration.\n * @param {String} params.id Unique ID to assign to {@link AngleMeasurement#id}. The AngleMeasurement will be registered by this in {@link AngleMeasurementsPlugin#measurements} and {@link Scene.components}. Must be unique among all components in the {@link Viewer}.\n * @param {Number[]} params.origin.worldPos Origin World-space 3D position.\n * @param {Entity} params.origin.entity Origin Entity.\n * @param {Number[]} params.corner.worldPos Corner World-space 3D position.\n * @param {Entity} params.corner.entity Corner Entity.\n * @param {Number[]} params.target.worldPos Target World-space 3D position.\n * @param {Entity} params.target.entity Target Entity.\n * @param {Boolean} [params.visible=true] Whether to initially show the {@link AngleMeasurement}.\n * @returns {AngleMeasurement} The new {@link AngleMeasurement}.\n ", - "start": 7153, - "end": 8277, + "start": 7154, + "end": 8278, "loc": { "start": { "line": 176, @@ -4197,8 +4197,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys a {@link AngleMeasurement}.\n *\n * @param {String} id ID of AngleMeasurement to destroy.\n ", - "start": 9551, - "end": 9674, + "start": 9552, + "end": 9675, "loc": { "start": { "line": 231, @@ -4214,8 +4214,8 @@ }, { "type": "ClassMethod", - "start": 9679, - "end": 9909, + "start": 9680, + "end": 9910, "loc": { "start": { "line": 236, @@ -4230,8 +4230,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9679, - "end": 9697, + "start": 9680, + "end": 9698, "loc": { "start": { "line": 236, @@ -4254,8 +4254,8 @@ "params": [ { "type": "Identifier", - "start": 9698, - "end": 9700, + "start": 9699, + "end": 9701, "loc": { "start": { "line": 236, @@ -4272,8 +4272,8 @@ ], "body": { "type": "BlockStatement", - "start": 9702, - "end": 9909, + "start": 9703, + "end": 9910, "loc": { "start": { "line": 236, @@ -4287,8 +4287,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 9712, - "end": 9755, + "start": 9713, + "end": 9756, "loc": { "start": { "line": 237, @@ -4302,8 +4302,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9718, - "end": 9754, + "start": 9719, + "end": 9755, "loc": { "start": { "line": 237, @@ -4316,8 +4316,8 @@ }, "id": { "type": "Identifier", - "start": 9718, - "end": 9729, + "start": 9719, + "end": 9730, "loc": { "start": { "line": 237, @@ -4333,8 +4333,8 @@ }, "init": { "type": "MemberExpression", - "start": 9732, - "end": 9754, + "start": 9733, + "end": 9755, "loc": { "start": { "line": 237, @@ -4347,8 +4347,8 @@ }, "object": { "type": "MemberExpression", - "start": 9732, - "end": 9750, + "start": 9733, + "end": 9751, "loc": { "start": { "line": 237, @@ -4361,8 +4361,8 @@ }, "object": { "type": "ThisExpression", - "start": 9732, - "end": 9736, + "start": 9733, + "end": 9737, "loc": { "start": { "line": 237, @@ -4376,8 +4376,8 @@ }, "property": { "type": "Identifier", - "start": 9737, - "end": 9750, + "start": 9738, + "end": 9751, "loc": { "start": { "line": 237, @@ -4395,8 +4395,8 @@ }, "property": { "type": "Identifier", - "start": 9751, - "end": 9753, + "start": 9752, + "end": 9754, "loc": { "start": { "line": 237, @@ -4418,8 +4418,8 @@ }, { "type": "IfStatement", - "start": 9764, - "end": 9872, + "start": 9765, + "end": 9873, "loc": { "start": { "line": 238, @@ -4432,8 +4432,8 @@ }, "test": { "type": "UnaryExpression", - "start": 9768, - "end": 9780, + "start": 9769, + "end": 9781, "loc": { "start": { "line": 238, @@ -4448,8 +4448,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 9769, - "end": 9780, + "start": 9770, + "end": 9781, "loc": { "start": { "line": 238, @@ -4469,8 +4469,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9782, - "end": 9872, + "start": 9783, + "end": 9873, "loc": { "start": { "line": 238, @@ -4484,8 +4484,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9796, - "end": 9842, + "start": 9797, + "end": 9843, "loc": { "start": { "line": 239, @@ -4498,8 +4498,8 @@ }, "expression": { "type": "CallExpression", - "start": 9796, - "end": 9841, + "start": 9797, + "end": 9842, "loc": { "start": { "line": 239, @@ -4512,8 +4512,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9796, - "end": 9804, + "start": 9797, + "end": 9805, "loc": { "start": { "line": 239, @@ -4526,8 +4526,8 @@ }, "object": { "type": "ThisExpression", - "start": 9796, - "end": 9800, + "start": 9797, + "end": 9801, "loc": { "start": { "line": 239, @@ -4541,8 +4541,8 @@ }, "property": { "type": "Identifier", - "start": 9801, - "end": 9804, + "start": 9802, + "end": 9805, "loc": { "start": { "line": 239, @@ -4561,8 +4561,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 9805, - "end": 9840, + "start": 9806, + "end": 9841, "loc": { "start": { "line": 239, @@ -4575,8 +4575,8 @@ }, "left": { "type": "StringLiteral", - "start": 9805, - "end": 9835, + "start": 9806, + "end": 9836, "loc": { "start": { "line": 239, @@ -4596,8 +4596,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 9838, - "end": 9840, + "start": 9839, + "end": 9841, "loc": { "start": { "line": 239, @@ -4617,8 +4617,8 @@ }, { "type": "ReturnStatement", - "start": 9855, - "end": 9862, + "start": 9856, + "end": 9863, "loc": { "start": { "line": 240, @@ -4638,8 +4638,8 @@ }, { "type": "ExpressionStatement", - "start": 9881, - "end": 9903, + "start": 9882, + "end": 9904, "loc": { "start": { "line": 242, @@ -4652,8 +4652,8 @@ }, "expression": { "type": "CallExpression", - "start": 9881, - "end": 9902, + "start": 9882, + "end": 9903, "loc": { "start": { "line": 242, @@ -4666,8 +4666,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9881, - "end": 9900, + "start": 9882, + "end": 9901, "loc": { "start": { "line": 242, @@ -4680,8 +4680,8 @@ }, "object": { "type": "Identifier", - "start": 9881, - "end": 9892, + "start": 9882, + "end": 9893, "loc": { "start": { "line": 242, @@ -4697,8 +4697,8 @@ }, "property": { "type": "Identifier", - "start": 9893, - "end": 9900, + "start": 9894, + "end": 9901, "loc": { "start": { "line": 242, @@ -4725,8 +4725,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys a {@link AngleMeasurement}.\n *\n * @param {String} id ID of AngleMeasurement to destroy.\n ", - "start": 9551, - "end": 9674, + "start": 9552, + "end": 9675, "loc": { "start": { "line": 231, @@ -4743,8 +4743,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys all {@link AngleMeasurement}s.\n ", - "start": 9915, - "end": 9973, + "start": 9916, + "end": 9974, "loc": { "start": { "line": 245, @@ -4760,8 +4760,8 @@ }, { "type": "ClassMethod", - "start": 9978, - "end": 10159, + "start": 9979, + "end": 10160, "loc": { "start": { "line": 248, @@ -4776,8 +4776,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9978, - "end": 9983, + "start": 9979, + "end": 9984, "loc": { "start": { "line": 248, @@ -4800,8 +4800,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 9986, - "end": 10159, + "start": 9987, + "end": 10160, "loc": { "start": { "line": 248, @@ -4815,8 +4815,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 9996, - "end": 10040, + "start": 9997, + "end": 10041, "loc": { "start": { "line": 249, @@ -4830,8 +4830,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 10002, - "end": 10039, + "start": 10003, + "end": 10040, "loc": { "start": { "line": 249, @@ -4844,8 +4844,8 @@ }, "id": { "type": "Identifier", - "start": 10002, - "end": 10005, + "start": 10003, + "end": 10006, "loc": { "start": { "line": 249, @@ -4861,8 +4861,8 @@ }, "init": { "type": "CallExpression", - "start": 10008, - "end": 10039, + "start": 10009, + "end": 10040, "loc": { "start": { "line": 249, @@ -4875,8 +4875,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10008, - "end": 10019, + "start": 10009, + "end": 10020, "loc": { "start": { "line": 249, @@ -4889,8 +4889,8 @@ }, "object": { "type": "Identifier", - "start": 10008, - "end": 10014, + "start": 10009, + "end": 10015, "loc": { "start": { "line": 249, @@ -4906,8 +4906,8 @@ }, "property": { "type": "Identifier", - "start": 10015, - "end": 10019, + "start": 10016, + "end": 10020, "loc": { "start": { "line": 249, @@ -4926,8 +4926,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 10020, - "end": 10038, + "start": 10021, + "end": 10039, "loc": { "start": { "line": 249, @@ -4940,8 +4940,8 @@ }, "object": { "type": "ThisExpression", - "start": 10020, - "end": 10024, + "start": 10021, + "end": 10025, "loc": { "start": { "line": 249, @@ -4955,8 +4955,8 @@ }, "property": { "type": "Identifier", - "start": 10025, - "end": 10038, + "start": 10026, + "end": 10039, "loc": { "start": { "line": 249, @@ -4980,8 +4980,8 @@ }, { "type": "ForStatement", - "start": 10049, - "end": 10153, + "start": 10050, + "end": 10154, "loc": { "start": { "line": 250, @@ -4994,8 +4994,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 10054, - "end": 10081, + "start": 10055, + "end": 10082, "loc": { "start": { "line": 250, @@ -5009,8 +5009,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 10058, - "end": 10063, + "start": 10059, + "end": 10064, "loc": { "start": { "line": 250, @@ -5023,8 +5023,8 @@ }, "id": { "type": "Identifier", - "start": 10058, - "end": 10059, + "start": 10059, + "end": 10060, "loc": { "start": { "line": 250, @@ -5040,8 +5040,8 @@ }, "init": { "type": "NumericLiteral", - "start": 10062, - "end": 10063, + "start": 10063, + "end": 10064, "loc": { "start": { "line": 250, @@ -5061,8 +5061,8 @@ }, { "type": "VariableDeclarator", - "start": 10065, - "end": 10081, + "start": 10066, + "end": 10082, "loc": { "start": { "line": 250, @@ -5075,8 +5075,8 @@ }, "id": { "type": "Identifier", - "start": 10065, - "end": 10068, + "start": 10066, + "end": 10069, "loc": { "start": { "line": 250, @@ -5092,8 +5092,8 @@ }, "init": { "type": "MemberExpression", - "start": 10071, - "end": 10081, + "start": 10072, + "end": 10082, "loc": { "start": { "line": 250, @@ -5106,8 +5106,8 @@ }, "object": { "type": "Identifier", - "start": 10071, - "end": 10074, + "start": 10072, + "end": 10075, "loc": { "start": { "line": 250, @@ -5123,8 +5123,8 @@ }, "property": { "type": "Identifier", - "start": 10075, - "end": 10081, + "start": 10076, + "end": 10082, "loc": { "start": { "line": 250, @@ -5146,8 +5146,8 @@ }, "test": { "type": "BinaryExpression", - "start": 10083, - "end": 10090, + "start": 10084, + "end": 10091, "loc": { "start": { "line": 250, @@ -5160,8 +5160,8 @@ }, "left": { "type": "Identifier", - "start": 10083, - "end": 10084, + "start": 10084, + "end": 10085, "loc": { "start": { "line": 250, @@ -5178,8 +5178,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 10087, - "end": 10090, + "start": 10088, + "end": 10091, "loc": { "start": { "line": 250, @@ -5196,8 +5196,8 @@ }, "update": { "type": "UpdateExpression", - "start": 10092, - "end": 10095, + "start": 10093, + "end": 10096, "loc": { "start": { "line": 250, @@ -5212,8 +5212,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 10092, - "end": 10093, + "start": 10093, + "end": 10094, "loc": { "start": { "line": 250, @@ -5230,8 +5230,8 @@ }, "body": { "type": "BlockStatement", - "start": 10097, - "end": 10153, + "start": 10098, + "end": 10154, "loc": { "start": { "line": 250, @@ -5245,8 +5245,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 10111, - "end": 10143, + "start": 10112, + "end": 10144, "loc": { "start": { "line": 251, @@ -5259,8 +5259,8 @@ }, "expression": { "type": "CallExpression", - "start": 10111, - "end": 10142, + "start": 10112, + "end": 10143, "loc": { "start": { "line": 251, @@ -5273,8 +5273,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10111, - "end": 10134, + "start": 10112, + "end": 10135, "loc": { "start": { "line": 251, @@ -5287,8 +5287,8 @@ }, "object": { "type": "ThisExpression", - "start": 10111, - "end": 10115, + "start": 10112, + "end": 10116, "loc": { "start": { "line": 251, @@ -5302,8 +5302,8 @@ }, "property": { "type": "Identifier", - "start": 10116, - "end": 10134, + "start": 10117, + "end": 10135, "loc": { "start": { "line": 251, @@ -5322,8 +5322,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 10135, - "end": 10141, + "start": 10136, + "end": 10142, "loc": { "start": { "line": 251, @@ -5336,8 +5336,8 @@ }, "object": { "type": "Identifier", - "start": 10135, - "end": 10138, + "start": 10136, + "end": 10139, "loc": { "start": { "line": 251, @@ -5353,8 +5353,8 @@ }, "property": { "type": "Identifier", - "start": 10139, - "end": 10140, + "start": 10140, + "end": 10141, "loc": { "start": { "line": 251, @@ -5385,8 +5385,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys all {@link AngleMeasurement}s.\n ", - "start": 9915, - "end": 9973, + "start": 9916, + "end": 9974, "loc": { "start": { "line": 245, @@ -5403,8 +5403,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys this AngleMeasurementsPlugin.\n *\n * Destroys all {@link AngleMeasurement}s first.\n ", - "start": 10165, - "end": 10282, + "start": 10166, + "end": 10283, "loc": { "start": { "line": 255, @@ -5420,8 +5420,8 @@ }, { "type": "ClassMethod", - "start": 10287, - "end": 10351, + "start": 10288, + "end": 10352, "loc": { "start": { "line": 260, @@ -5436,8 +5436,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 10287, - "end": 10294, + "start": 10288, + "end": 10295, "loc": { "start": { "line": 260, @@ -5460,8 +5460,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 10297, - "end": 10351, + "start": 10298, + "end": 10352, "loc": { "start": { "line": 260, @@ -5475,8 +5475,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 10307, - "end": 10320, + "start": 10308, + "end": 10321, "loc": { "start": { "line": 261, @@ -5489,8 +5489,8 @@ }, "expression": { "type": "CallExpression", - "start": 10307, - "end": 10319, + "start": 10308, + "end": 10320, "loc": { "start": { "line": 261, @@ -5503,8 +5503,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10307, - "end": 10317, + "start": 10308, + "end": 10318, "loc": { "start": { "line": 261, @@ -5517,8 +5517,8 @@ }, "object": { "type": "ThisExpression", - "start": 10307, - "end": 10311, + "start": 10308, + "end": 10312, "loc": { "start": { "line": 261, @@ -5532,8 +5532,8 @@ }, "property": { "type": "Identifier", - "start": 10312, - "end": 10317, + "start": 10313, + "end": 10318, "loc": { "start": { "line": 261, @@ -5554,8 +5554,8 @@ }, { "type": "ExpressionStatement", - "start": 10329, - "end": 10345, + "start": 10330, + "end": 10346, "loc": { "start": { "line": 262, @@ -5568,8 +5568,8 @@ }, "expression": { "type": "CallExpression", - "start": 10329, - "end": 10344, + "start": 10330, + "end": 10345, "loc": { "start": { "line": 262, @@ -5582,8 +5582,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10329, - "end": 10342, + "start": 10330, + "end": 10343, "loc": { "start": { "line": 262, @@ -5596,8 +5596,8 @@ }, "object": { "type": "Super", - "start": 10329, - "end": 10334, + "start": 10330, + "end": 10335, "loc": { "start": { "line": 262, @@ -5611,8 +5611,8 @@ }, "property": { "type": "Identifier", - "start": 10335, - "end": 10342, + "start": 10336, + "end": 10343, "loc": { "start": { "line": 262, @@ -5638,8 +5638,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys this AngleMeasurementsPlugin.\n *\n * Destroys all {@link AngleMeasurement}s first.\n ", - "start": 10165, - "end": 10282, + "start": 10166, + "end": 10283, "loc": { "start": { "line": 255, @@ -5661,8 +5661,8 @@ }, { "type": "ExportNamedDeclaration", - "start": 10355, - "end": 10387, + "start": 10356, + "end": 10388, "loc": { "start": { "line": 266, @@ -5677,8 +5677,8 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 10363, - "end": 10386, + "start": 10364, + "end": 10387, "loc": { "start": { "line": 266, @@ -5691,8 +5691,8 @@ }, "local": { "type": "Identifier", - "start": 10363, - "end": 10386, + "start": 10364, + "end": 10387, "loc": { "start": { "line": 266, @@ -5708,8 +5708,8 @@ }, "exported": { "type": "Identifier", - "start": 10363, - "end": 10386, + "start": 10364, + "end": 10387, "loc": { "start": { "line": 266, @@ -5729,8 +5729,8 @@ }, { "type": "ExportNamedDeclaration", - "start": 10355, - "end": 10387, + "start": 10356, + "end": 10388, "loc": { "start": { "line": 266, @@ -5743,8 +5743,8 @@ }, "declaration": { "type": "ClassDeclaration", - "start": 5948, - "end": 10353, + "start": 5949, + "end": 10354, "loc": { "start": { "line": 131, @@ -5757,8 +5757,8 @@ }, "id": { "type": "Identifier", - "start": 5954, - "end": 5977, + "start": 5955, + "end": 5978, "loc": { "start": { "line": 131, @@ -5775,8 +5775,8 @@ }, "superClass": { "type": "Identifier", - "start": 5986, - "end": 5992, + "start": 5987, + "end": 5993, "loc": { "start": { "line": 131, @@ -5792,8 +5792,8 @@ }, "body": { "type": "ClassBody", - "start": 5993, - "end": 10353, + "start": 5994, + "end": 10354, "loc": { "start": { "line": 131, @@ -5807,8 +5807,8 @@ "body": [ { "type": "ClassMethod", - "start": 6389, - "end": 6625, + "start": 6390, + "end": 6626, "loc": { "start": { "line": 140, @@ -5823,8 +5823,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 6389, - "end": 6400, + "start": 6390, + "end": 6401, "loc": { "start": { "line": 140, @@ -5847,8 +5847,8 @@ "params": [ { "type": "Identifier", - "start": 6401, - "end": 6407, + "start": 6402, + "end": 6408, "loc": { "start": { "line": 140, @@ -5864,8 +5864,8 @@ }, { "type": "AssignmentPattern", - "start": 6409, - "end": 6417, + "start": 6410, + "end": 6418, "loc": { "start": { "line": 140, @@ -5878,8 +5878,8 @@ }, "left": { "type": "Identifier", - "start": 6409, - "end": 6412, + "start": 6410, + "end": 6413, "loc": { "start": { "line": 140, @@ -5895,8 +5895,8 @@ }, "right": { "type": "ObjectExpression", - "start": 6415, - "end": 6417, + "start": 6416, + "end": 6418, "loc": { "start": { "line": 140, @@ -5913,8 +5913,8 @@ ], "body": { "type": "BlockStatement", - "start": 6419, - "end": 6625, + "start": 6420, + "end": 6626, "loc": { "start": { "line": 140, @@ -5928,8 +5928,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 6430, - "end": 6465, + "start": 6431, + "end": 6466, "loc": { "start": { "line": 142, @@ -5942,8 +5942,8 @@ }, "expression": { "type": "CallExpression", - "start": 6430, - "end": 6464, + "start": 6431, + "end": 6465, "loc": { "start": { "line": 142, @@ -5956,8 +5956,8 @@ }, "callee": { "type": "Super", - "start": 6430, - "end": 6435, + "start": 6431, + "end": 6436, "loc": { "start": { "line": 142, @@ -5972,8 +5972,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 6436, - "end": 6455, + "start": 6437, + "end": 6456, "loc": { "start": { "line": 142, @@ -5992,8 +5992,8 @@ }, { "type": "Identifier", - "start": 6457, - "end": 6463, + "start": 6458, + "end": 6464, "loc": { "start": { "line": 142, @@ -6012,8 +6012,8 @@ }, { "type": "ExpressionStatement", - "start": 6475, - "end": 6524, + "start": 6476, + "end": 6525, "loc": { "start": { "line": 144, @@ -6026,8 +6026,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 6475, - "end": 6523, + "start": 6476, + "end": 6524, "loc": { "start": { "line": 144, @@ -6041,8 +6041,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 6475, - "end": 6490, + "start": 6476, + "end": 6491, "loc": { "start": { "line": 144, @@ -6055,8 +6055,8 @@ }, "object": { "type": "ThisExpression", - "start": 6475, - "end": 6479, + "start": 6476, + "end": 6480, "loc": { "start": { "line": 144, @@ -6070,8 +6070,8 @@ }, "property": { "type": "Identifier", - "start": 6480, - "end": 6490, + "start": 6481, + "end": 6491, "loc": { "start": { "line": 144, @@ -6089,8 +6089,8 @@ }, "right": { "type": "LogicalExpression", - "start": 6493, - "end": 6523, + "start": 6494, + "end": 6524, "loc": { "start": { "line": 144, @@ -6103,8 +6103,8 @@ }, "left": { "type": "MemberExpression", - "start": 6493, - "end": 6506, + "start": 6494, + "end": 6507, "loc": { "start": { "line": 144, @@ -6117,8 +6117,8 @@ }, "object": { "type": "Identifier", - "start": 6493, - "end": 6496, + "start": 6494, + "end": 6497, "loc": { "start": { "line": 144, @@ -6134,8 +6134,8 @@ }, "property": { "type": "Identifier", - "start": 6497, - "end": 6506, + "start": 6498, + "end": 6507, "loc": { "start": { "line": 144, @@ -6154,8 +6154,8 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 6510, - "end": 6523, + "start": 6511, + "end": 6524, "loc": { "start": { "line": 144, @@ -6168,8 +6168,8 @@ }, "object": { "type": "Identifier", - "start": 6510, - "end": 6518, + "start": 6511, + "end": 6519, "loc": { "start": { "line": 144, @@ -6185,8 +6185,8 @@ }, "property": { "type": "Identifier", - "start": 6519, - "end": 6523, + "start": 6520, + "end": 6524, "loc": { "start": { "line": 144, @@ -6207,8 +6207,8 @@ }, { "type": "ExpressionStatement", - "start": 6534, - "end": 6585, + "start": 6535, + "end": 6586, "loc": { "start": { "line": 146, @@ -6221,8 +6221,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 6534, - "end": 6584, + "start": 6535, + "end": 6585, "loc": { "start": { "line": 146, @@ -6236,8 +6236,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 6534, - "end": 6547, + "start": 6535, + "end": 6548, "loc": { "start": { "line": 146, @@ -6250,8 +6250,8 @@ }, "object": { "type": "ThisExpression", - "start": 6534, - "end": 6538, + "start": 6535, + "end": 6539, "loc": { "start": { "line": 146, @@ -6265,8 +6265,8 @@ }, "property": { "type": "Identifier", - "start": 6539, - "end": 6547, + "start": 6540, + "end": 6548, "loc": { "start": { "line": 146, @@ -6284,8 +6284,8 @@ }, "right": { "type": "NewExpression", - "start": 6550, - "end": 6584, + "start": 6551, + "end": 6585, "loc": { "start": { "line": 146, @@ -6298,8 +6298,8 @@ }, "callee": { "type": "Identifier", - "start": 6554, - "end": 6578, + "start": 6555, + "end": 6579, "loc": { "start": { "line": 146, @@ -6316,8 +6316,8 @@ "arguments": [ { "type": "ThisExpression", - "start": 6579, - "end": 6583, + "start": 6580, + "end": 6584, "loc": { "start": { "line": 146, @@ -6335,8 +6335,8 @@ }, { "type": "ExpressionStatement", - "start": 6595, - "end": 6619, + "start": 6596, + "end": 6620, "loc": { "start": { "line": 148, @@ -6349,8 +6349,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 6595, - "end": 6618, + "start": 6596, + "end": 6619, "loc": { "start": { "line": 148, @@ -6364,8 +6364,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 6595, - "end": 6613, + "start": 6596, + "end": 6614, "loc": { "start": { "line": 148, @@ -6378,8 +6378,8 @@ }, "object": { "type": "ThisExpression", - "start": 6595, - "end": 6599, + "start": 6596, + "end": 6600, "loc": { "start": { "line": 148, @@ -6393,8 +6393,8 @@ }, "property": { "type": "Identifier", - "start": 6600, - "end": 6613, + "start": 6601, + "end": 6614, "loc": { "start": { "line": 148, @@ -6412,8 +6412,8 @@ }, "right": { "type": "ObjectExpression", - "start": 6616, - "end": 6618, + "start": 6617, + "end": 6619, "loc": { "start": { "line": 148, @@ -6436,8 +6436,8 @@ { "type": "CommentBlock", "value": "*\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} [cfg] Plugin configuration.\n * @param {String} [cfg.id=\"AngleMeasurements\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {HTMLElement} [cfg.container] Container DOM element for markers and labels. Defaults to ````document.body````.\n ", - "start": 6000, - "end": 6384, + "start": 6001, + "end": 6385, "loc": { "start": { "line": 133, @@ -6454,8 +6454,8 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 6631, - "end": 6658, + "start": 6632, + "end": 6659, "loc": { "start": { "line": 151, @@ -6471,8 +6471,8 @@ }, { "type": "ClassMethod", - "start": 6663, - "end": 6689, + "start": 6664, + "end": 6690, "loc": { "start": { "line": 154, @@ -6487,8 +6487,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 6663, - "end": 6667, + "start": 6664, + "end": 6668, "loc": { "start": { "line": 154, @@ -6511,8 +6511,8 @@ "params": [ { "type": "Identifier", - "start": 6668, - "end": 6672, + "start": 6669, + "end": 6673, "loc": { "start": { "line": 154, @@ -6528,8 +6528,8 @@ }, { "type": "Identifier", - "start": 6674, - "end": 6679, + "start": 6675, + "end": 6680, "loc": { "start": { "line": 154, @@ -6546,8 +6546,8 @@ ], "body": { "type": "BlockStatement", - "start": 6681, - "end": 6689, + "start": 6682, + "end": 6690, "loc": { "start": { "line": 154, @@ -6567,8 +6567,8 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 6631, - "end": 6658, + "start": 6632, + "end": 6659, "loc": { "start": { "line": 151, @@ -6585,8 +6585,8 @@ { "type": "CommentBlock", "value": "*\n * Gets the {@link AngleMeasurementsControl}, which creates {@link AngleMeasurement}s from user input.\n *\n * @type {AngleMeasurementsControl}\n ", - "start": 6695, - "end": 6860, + "start": 6696, + "end": 6861, "loc": { "start": { "line": 158, @@ -6602,8 +6602,8 @@ }, { "type": "ClassMethod", - "start": 6865, - "end": 6916, + "start": 6866, + "end": 6917, "loc": { "start": { "line": 163, @@ -6618,8 +6618,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 6869, - "end": 6876, + "start": 6870, + "end": 6877, "loc": { "start": { "line": 163, @@ -6641,8 +6641,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 6879, - "end": 6916, + "start": 6880, + "end": 6917, "loc": { "start": { "line": 163, @@ -6656,8 +6656,8 @@ "body": [ { "type": "ReturnStatement", - "start": 6889, - "end": 6910, + "start": 6890, + "end": 6911, "loc": { "start": { "line": 164, @@ -6670,8 +6670,8 @@ }, "argument": { "type": "MemberExpression", - "start": 6896, - "end": 6909, + "start": 6897, + "end": 6910, "loc": { "start": { "line": 164, @@ -6684,8 +6684,8 @@ }, "object": { "type": "ThisExpression", - "start": 6896, - "end": 6900, + "start": 6897, + "end": 6901, "loc": { "start": { "line": 164, @@ -6699,8 +6699,8 @@ }, "property": { "type": "Identifier", - "start": 6901, - "end": 6909, + "start": 6902, + "end": 6910, "loc": { "start": { "line": 164, @@ -6725,8 +6725,8 @@ { "type": "CommentBlock", "value": "*\n * Gets the {@link AngleMeasurementsControl}, which creates {@link AngleMeasurement}s from user input.\n *\n * @type {AngleMeasurementsControl}\n ", - "start": 6695, - "end": 6860, + "start": 6696, + "end": 6861, "loc": { "start": { "line": 158, @@ -6743,8 +6743,8 @@ { "type": "CommentBlock", "value": "*\n * Gets the existing {@link AngleMeasurement}s, each mapped to its {@link AngleMeasurement#id}.\n *\n * @type {{String:AngleMeasurement}}\n ", - "start": 6922, - "end": 7081, + "start": 6923, + "end": 7082, "loc": { "start": { "line": 167, @@ -6760,8 +6760,8 @@ }, { "type": "ClassMethod", - "start": 7086, - "end": 7147, + "start": 7087, + "end": 7148, "loc": { "start": { "line": 172, @@ -6776,8 +6776,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 7090, - "end": 7102, + "start": 7091, + "end": 7103, "loc": { "start": { "line": 172, @@ -6799,8 +6799,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 7105, - "end": 7147, + "start": 7106, + "end": 7148, "loc": { "start": { "line": 172, @@ -6814,8 +6814,8 @@ "body": [ { "type": "ReturnStatement", - "start": 7115, - "end": 7141, + "start": 7116, + "end": 7142, "loc": { "start": { "line": 173, @@ -6828,8 +6828,8 @@ }, "argument": { "type": "MemberExpression", - "start": 7122, - "end": 7140, + "start": 7123, + "end": 7141, "loc": { "start": { "line": 173, @@ -6842,8 +6842,8 @@ }, "object": { "type": "ThisExpression", - "start": 7122, - "end": 7126, + "start": 7123, + "end": 7127, "loc": { "start": { "line": 173, @@ -6857,8 +6857,8 @@ }, "property": { "type": "Identifier", - "start": 7127, - "end": 7140, + "start": 7128, + "end": 7141, "loc": { "start": { "line": 173, @@ -6883,8 +6883,8 @@ { "type": "CommentBlock", "value": "*\n * Gets the existing {@link AngleMeasurement}s, each mapped to its {@link AngleMeasurement#id}.\n *\n * @type {{String:AngleMeasurement}}\n ", - "start": 6922, - "end": 7081, + "start": 6923, + "end": 7082, "loc": { "start": { "line": 167, @@ -6901,8 +6901,8 @@ { "type": "CommentBlock", "value": "*\n * Creates an {@link AngleMeasurement}.\n *\n * The AngleMeasurement is then registered by {@link AngleMeasurement#id} in {@link AngleMeasurementsPlugin#measurements}.\n *\n * @param {Object} params {@link AngleMeasurement} configuration.\n * @param {String} params.id Unique ID to assign to {@link AngleMeasurement#id}. The AngleMeasurement will be registered by this in {@link AngleMeasurementsPlugin#measurements} and {@link Scene.components}. Must be unique among all components in the {@link Viewer}.\n * @param {Number[]} params.origin.worldPos Origin World-space 3D position.\n * @param {Entity} params.origin.entity Origin Entity.\n * @param {Number[]} params.corner.worldPos Corner World-space 3D position.\n * @param {Entity} params.corner.entity Corner Entity.\n * @param {Number[]} params.target.worldPos Target World-space 3D position.\n * @param {Entity} params.target.entity Target Entity.\n * @param {Boolean} [params.visible=true] Whether to initially show the {@link AngleMeasurement}.\n * @returns {AngleMeasurement} The new {@link AngleMeasurement}.\n ", - "start": 7153, - "end": 8277, + "start": 7154, + "end": 8278, "loc": { "start": { "line": 176, @@ -6918,8 +6918,8 @@ }, { "type": "ClassMethod", - "start": 8282, - "end": 9545, + "start": 8283, + "end": 9546, "loc": { "start": { "line": 192, @@ -6934,8 +6934,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8282, - "end": 8299, + "start": 8283, + "end": 8300, "loc": { "start": { "line": 192, @@ -6958,8 +6958,8 @@ "params": [ { "type": "AssignmentPattern", - "start": 8300, - "end": 8311, + "start": 8301, + "end": 8312, "loc": { "start": { "line": 192, @@ -6972,8 +6972,8 @@ }, "left": { "type": "Identifier", - "start": 8300, - "end": 8306, + "start": 8301, + "end": 8307, "loc": { "start": { "line": 192, @@ -6989,8 +6989,8 @@ }, "right": { "type": "ObjectExpression", - "start": 8309, - "end": 8311, + "start": 8310, + "end": 8312, "loc": { "start": { "line": 192, @@ -7007,8 +7007,8 @@ ], "body": { "type": "BlockStatement", - "start": 8313, - "end": 9545, + "start": 8314, + "end": 9546, "loc": { "start": { "line": 192, @@ -7022,8 +7022,8 @@ "body": [ { "type": "IfStatement", - "start": 8323, - "end": 8501, + "start": 8324, + "end": 8502, "loc": { "start": { "line": 193, @@ -7036,8 +7036,8 @@ }, "test": { "type": "MemberExpression", - "start": 8327, - "end": 8366, + "start": 8328, + "end": 8367, "loc": { "start": { "line": 193, @@ -7050,8 +7050,8 @@ }, "object": { "type": "MemberExpression", - "start": 8327, - "end": 8355, + "start": 8328, + "end": 8356, "loc": { "start": { "line": 193, @@ -7064,8 +7064,8 @@ }, "object": { "type": "MemberExpression", - "start": 8327, - "end": 8344, + "start": 8328, + "end": 8345, "loc": { "start": { "line": 193, @@ -7078,8 +7078,8 @@ }, "object": { "type": "MemberExpression", - "start": 8327, - "end": 8338, + "start": 8328, + "end": 8339, "loc": { "start": { "line": 193, @@ -7092,8 +7092,8 @@ }, "object": { "type": "ThisExpression", - "start": 8327, - "end": 8331, + "start": 8328, + "end": 8332, "loc": { "start": { "line": 193, @@ -7107,8 +7107,8 @@ }, "property": { "type": "Identifier", - "start": 8332, - "end": 8338, + "start": 8333, + "end": 8339, "loc": { "start": { "line": 193, @@ -7126,8 +7126,8 @@ }, "property": { "type": "Identifier", - "start": 8339, - "end": 8344, + "start": 8340, + "end": 8345, "loc": { "start": { "line": 193, @@ -7145,8 +7145,8 @@ }, "property": { "type": "Identifier", - "start": 8345, - "end": 8355, + "start": 8346, + "end": 8356, "loc": { "start": { "line": 193, @@ -7164,8 +7164,8 @@ }, "property": { "type": "MemberExpression", - "start": 8356, - "end": 8365, + "start": 8357, + "end": 8366, "loc": { "start": { "line": 193, @@ -7178,8 +7178,8 @@ }, "object": { "type": "Identifier", - "start": 8356, - "end": 8362, + "start": 8357, + "end": 8363, "loc": { "start": { "line": 193, @@ -7195,8 +7195,8 @@ }, "property": { "type": "Identifier", - "start": 8363, - "end": 8365, + "start": 8364, + "end": 8366, "loc": { "start": { "line": 193, @@ -7216,8 +7216,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 8368, - "end": 8501, + "start": 8369, + "end": 8502, "loc": { "start": { "line": 193, @@ -7231,8 +7231,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 8382, - "end": 8461, + "start": 8383, + "end": 8462, "loc": { "start": { "line": 194, @@ -7245,8 +7245,8 @@ }, "expression": { "type": "CallExpression", - "start": 8382, - "end": 8460, + "start": 8383, + "end": 8461, "loc": { "start": { "line": 194, @@ -7259,8 +7259,8 @@ }, "callee": { "type": "MemberExpression", - "start": 8382, - "end": 8392, + "start": 8383, + "end": 8393, "loc": { "start": { "line": 194, @@ -7273,8 +7273,8 @@ }, "object": { "type": "ThisExpression", - "start": 8382, - "end": 8386, + "start": 8383, + "end": 8387, "loc": { "start": { "line": 194, @@ -7288,8 +7288,8 @@ }, "property": { "type": "Identifier", - "start": 8387, - "end": 8392, + "start": 8388, + "end": 8393, "loc": { "start": { "line": 194, @@ -7308,8 +7308,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 8393, - "end": 8459, + "start": 8394, + "end": 8460, "loc": { "start": { "line": 194, @@ -7322,8 +7322,8 @@ }, "left": { "type": "StringLiteral", - "start": 8393, - "end": 8447, + "start": 8394, + "end": 8448, "loc": { "start": { "line": 194, @@ -7343,8 +7343,8 @@ "operator": "+", "right": { "type": "MemberExpression", - "start": 8450, - "end": 8459, + "start": 8451, + "end": 8460, "loc": { "start": { "line": 194, @@ -7357,8 +7357,8 @@ }, "object": { "type": "Identifier", - "start": 8450, - "end": 8456, + "start": 8451, + "end": 8457, "loc": { "start": { "line": 194, @@ -7374,8 +7374,8 @@ }, "property": { "type": "Identifier", - "start": 8457, - "end": 8459, + "start": 8458, + "end": 8460, "loc": { "start": { "line": 194, @@ -7397,8 +7397,8 @@ }, { "type": "ExpressionStatement", - "start": 8474, - "end": 8491, + "start": 8475, + "end": 8492, "loc": { "start": { "line": 195, @@ -7411,8 +7411,8 @@ }, "expression": { "type": "UnaryExpression", - "start": 8474, - "end": 8490, + "start": 8475, + "end": 8491, "loc": { "start": { "line": 195, @@ -7427,8 +7427,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 8481, - "end": 8490, + "start": 8482, + "end": 8491, "loc": { "start": { "line": 195, @@ -7441,8 +7441,8 @@ }, "object": { "type": "Identifier", - "start": 8481, - "end": 8487, + "start": 8482, + "end": 8488, "loc": { "start": { "line": 195, @@ -7458,8 +7458,8 @@ }, "property": { "type": "Identifier", - "start": 8488, - "end": 8490, + "start": 8489, + "end": 8491, "loc": { "start": { "line": 195, @@ -7487,8 +7487,8 @@ }, { "type": "VariableDeclaration", - "start": 8510, - "end": 8539, + "start": 8511, + "end": 8540, "loc": { "start": { "line": 197, @@ -7502,8 +7502,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 8516, - "end": 8538, + "start": 8517, + "end": 8539, "loc": { "start": { "line": 197, @@ -7516,8 +7516,8 @@ }, "id": { "type": "Identifier", - "start": 8516, - "end": 8522, + "start": 8517, + "end": 8523, "loc": { "start": { "line": 197, @@ -7533,8 +7533,8 @@ }, "init": { "type": "MemberExpression", - "start": 8525, - "end": 8538, + "start": 8526, + "end": 8539, "loc": { "start": { "line": 197, @@ -7547,8 +7547,8 @@ }, "object": { "type": "Identifier", - "start": 8525, - "end": 8531, + "start": 8526, + "end": 8532, "loc": { "start": { "line": 197, @@ -7564,8 +7564,8 @@ }, "property": { "type": "Identifier", - "start": 8532, - "end": 8538, + "start": 8533, + "end": 8539, "loc": { "start": { "line": 197, @@ -7587,8 +7587,8 @@ }, { "type": "VariableDeclaration", - "start": 8548, - "end": 8577, + "start": 8549, + "end": 8578, "loc": { "start": { "line": 198, @@ -7602,8 +7602,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 8554, - "end": 8576, + "start": 8555, + "end": 8577, "loc": { "start": { "line": 198, @@ -7616,8 +7616,8 @@ }, "id": { "type": "Identifier", - "start": 8554, - "end": 8560, + "start": 8555, + "end": 8561, "loc": { "start": { "line": 198, @@ -7633,8 +7633,8 @@ }, "init": { "type": "MemberExpression", - "start": 8563, - "end": 8576, + "start": 8564, + "end": 8577, "loc": { "start": { "line": 198, @@ -7647,8 +7647,8 @@ }, "object": { "type": "Identifier", - "start": 8563, - "end": 8569, + "start": 8564, + "end": 8570, "loc": { "start": { "line": 198, @@ -7664,8 +7664,8 @@ }, "property": { "type": "Identifier", - "start": 8570, - "end": 8576, + "start": 8571, + "end": 8577, "loc": { "start": { "line": 198, @@ -7687,8 +7687,8 @@ }, { "type": "VariableDeclaration", - "start": 8586, - "end": 8615, + "start": 8587, + "end": 8616, "loc": { "start": { "line": 199, @@ -7702,8 +7702,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 8592, - "end": 8614, + "start": 8593, + "end": 8615, "loc": { "start": { "line": 199, @@ -7716,8 +7716,8 @@ }, "id": { "type": "Identifier", - "start": 8592, - "end": 8598, + "start": 8593, + "end": 8599, "loc": { "start": { "line": 199, @@ -7733,8 +7733,8 @@ }, "init": { "type": "MemberExpression", - "start": 8601, - "end": 8614, + "start": 8602, + "end": 8615, "loc": { "start": { "line": 199, @@ -7747,8 +7747,8 @@ }, "object": { "type": "Identifier", - "start": 8601, - "end": 8607, + "start": 8602, + "end": 8608, "loc": { "start": { "line": 199, @@ -7764,8 +7764,8 @@ }, "property": { "type": "Identifier", - "start": 8608, - "end": 8614, + "start": 8609, + "end": 8615, "loc": { "start": { "line": 199, @@ -7787,8 +7787,8 @@ }, { "type": "VariableDeclaration", - "start": 8624, - "end": 9342, + "start": 8625, + "end": 9343, "loc": { "start": { "line": 200, @@ -7802,8 +7802,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 8630, - "end": 9341, + "start": 8631, + "end": 9342, "loc": { "start": { "line": 200, @@ -7816,8 +7816,8 @@ }, "id": { "type": "Identifier", - "start": 8630, - "end": 8641, + "start": 8631, + "end": 8642, "loc": { "start": { "line": 200, @@ -7833,8 +7833,8 @@ }, "init": { "type": "NewExpression", - "start": 8644, - "end": 9341, + "start": 8645, + "end": 9342, "loc": { "start": { "line": 200, @@ -7847,8 +7847,8 @@ }, "callee": { "type": "Identifier", - "start": 8648, - "end": 8664, + "start": 8649, + "end": 8665, "loc": { "start": { "line": 200, @@ -7865,8 +7865,8 @@ "arguments": [ { "type": "ThisExpression", - "start": 8665, - "end": 8669, + "start": 8666, + "end": 8670, "loc": { "start": { "line": 200, @@ -7880,8 +7880,8 @@ }, { "type": "ObjectExpression", - "start": 8671, - "end": 9340, + "start": 8672, + "end": 9341, "loc": { "start": { "line": 200, @@ -7895,8 +7895,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 8685, - "end": 8698, + "start": 8686, + "end": 8699, "loc": { "start": { "line": 201, @@ -7912,8 +7912,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8685, - "end": 8687, + "start": 8686, + "end": 8688, "loc": { "start": { "line": 201, @@ -7929,8 +7929,8 @@ }, "value": { "type": "MemberExpression", - "start": 8689, - "end": 8698, + "start": 8690, + "end": 8699, "loc": { "start": { "line": 201, @@ -7943,8 +7943,8 @@ }, "object": { "type": "Identifier", - "start": 8689, - "end": 8695, + "start": 8690, + "end": 8696, "loc": { "start": { "line": 201, @@ -7960,8 +7960,8 @@ }, "property": { "type": "Identifier", - "start": 8696, - "end": 8698, + "start": 8697, + "end": 8699, "loc": { "start": { "line": 201, @@ -7980,8 +7980,8 @@ }, { "type": "ObjectProperty", - "start": 8712, - "end": 8724, + "start": 8713, + "end": 8725, "loc": { "start": { "line": 202, @@ -7997,8 +7997,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8712, - "end": 8718, + "start": 8713, + "end": 8719, "loc": { "start": { "line": 202, @@ -8014,8 +8014,8 @@ }, "value": { "type": "ThisExpression", - "start": 8720, - "end": 8724, + "start": 8721, + "end": 8725, "loc": { "start": { "line": 202, @@ -8030,8 +8030,8 @@ }, { "type": "ObjectProperty", - "start": 8738, - "end": 8764, + "start": 8739, + "end": 8765, "loc": { "start": { "line": 203, @@ -8047,8 +8047,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8738, - "end": 8747, + "start": 8739, + "end": 8748, "loc": { "start": { "line": 203, @@ -8064,8 +8064,8 @@ }, "value": { "type": "MemberExpression", - "start": 8749, - "end": 8764, + "start": 8750, + "end": 8765, "loc": { "start": { "line": 203, @@ -8078,8 +8078,8 @@ }, "object": { "type": "ThisExpression", - "start": 8749, - "end": 8753, + "start": 8750, + "end": 8754, "loc": { "start": { "line": 203, @@ -8093,8 +8093,8 @@ }, "property": { "type": "Identifier", - "start": 8754, - "end": 8764, + "start": 8755, + "end": 8765, "loc": { "start": { "line": 203, @@ -8113,8 +8113,8 @@ }, { "type": "ObjectProperty", - "start": 8778, - "end": 8882, + "start": 8779, + "end": 8883, "loc": { "start": { "line": 204, @@ -8130,8 +8130,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8778, - "end": 8784, + "start": 8779, + "end": 8785, "loc": { "start": { "line": 204, @@ -8147,8 +8147,8 @@ }, "value": { "type": "ObjectExpression", - "start": 8786, - "end": 8882, + "start": 8787, + "end": 8883, "loc": { "start": { "line": 204, @@ -8162,8 +8162,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 8804, - "end": 8825, + "start": 8805, + "end": 8826, "loc": { "start": { "line": 205, @@ -8179,8 +8179,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8804, - "end": 8810, + "start": 8805, + "end": 8811, "loc": { "start": { "line": 205, @@ -8196,8 +8196,8 @@ }, "value": { "type": "MemberExpression", - "start": 8812, - "end": 8825, + "start": 8813, + "end": 8826, "loc": { "start": { "line": 205, @@ -8210,8 +8210,8 @@ }, "object": { "type": "Identifier", - "start": 8812, - "end": 8818, + "start": 8813, + "end": 8819, "loc": { "start": { "line": 205, @@ -8227,8 +8227,8 @@ }, "property": { "type": "Identifier", - "start": 8819, - "end": 8825, + "start": 8820, + "end": 8826, "loc": { "start": { "line": 205, @@ -8247,8 +8247,8 @@ }, { "type": "ObjectProperty", - "start": 8843, - "end": 8868, + "start": 8844, + "end": 8869, "loc": { "start": { "line": 206, @@ -8264,8 +8264,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8843, - "end": 8851, + "start": 8844, + "end": 8852, "loc": { "start": { "line": 206, @@ -8281,8 +8281,8 @@ }, "value": { "type": "MemberExpression", - "start": 8853, - "end": 8868, + "start": 8854, + "end": 8869, "loc": { "start": { "line": 206, @@ -8295,8 +8295,8 @@ }, "object": { "type": "Identifier", - "start": 8853, - "end": 8859, + "start": 8854, + "end": 8860, "loc": { "start": { "line": 206, @@ -8312,8 +8312,8 @@ }, "property": { "type": "Identifier", - "start": 8860, - "end": 8868, + "start": 8861, + "end": 8869, "loc": { "start": { "line": 206, @@ -8335,8 +8335,8 @@ }, { "type": "ObjectProperty", - "start": 8896, - "end": 9000, + "start": 8897, + "end": 9001, "loc": { "start": { "line": 208, @@ -8352,8 +8352,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8896, - "end": 8902, + "start": 8897, + "end": 8903, "loc": { "start": { "line": 208, @@ -8369,8 +8369,8 @@ }, "value": { "type": "ObjectExpression", - "start": 8904, - "end": 9000, + "start": 8905, + "end": 9001, "loc": { "start": { "line": 208, @@ -8384,8 +8384,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 8922, - "end": 8943, + "start": 8923, + "end": 8944, "loc": { "start": { "line": 209, @@ -8401,8 +8401,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8922, - "end": 8928, + "start": 8923, + "end": 8929, "loc": { "start": { "line": 209, @@ -8418,8 +8418,8 @@ }, "value": { "type": "MemberExpression", - "start": 8930, - "end": 8943, + "start": 8931, + "end": 8944, "loc": { "start": { "line": 209, @@ -8432,8 +8432,8 @@ }, "object": { "type": "Identifier", - "start": 8930, - "end": 8936, + "start": 8931, + "end": 8937, "loc": { "start": { "line": 209, @@ -8449,8 +8449,8 @@ }, "property": { "type": "Identifier", - "start": 8937, - "end": 8943, + "start": 8938, + "end": 8944, "loc": { "start": { "line": 209, @@ -8469,8 +8469,8 @@ }, { "type": "ObjectProperty", - "start": 8961, - "end": 8986, + "start": 8962, + "end": 8987, "loc": { "start": { "line": 210, @@ -8486,8 +8486,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8961, - "end": 8969, + "start": 8962, + "end": 8970, "loc": { "start": { "line": 210, @@ -8503,8 +8503,8 @@ }, "value": { "type": "MemberExpression", - "start": 8971, - "end": 8986, + "start": 8972, + "end": 8987, "loc": { "start": { "line": 210, @@ -8517,8 +8517,8 @@ }, "object": { "type": "Identifier", - "start": 8971, - "end": 8977, + "start": 8972, + "end": 8978, "loc": { "start": { "line": 210, @@ -8534,8 +8534,8 @@ }, "property": { "type": "Identifier", - "start": 8978, - "end": 8986, + "start": 8979, + "end": 8987, "loc": { "start": { "line": 210, @@ -8557,8 +8557,8 @@ }, { "type": "ObjectProperty", - "start": 9014, - "end": 9118, + "start": 9015, + "end": 9119, "loc": { "start": { "line": 212, @@ -8574,8 +8574,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9014, - "end": 9020, + "start": 9015, + "end": 9021, "loc": { "start": { "line": 212, @@ -8591,8 +8591,8 @@ }, "value": { "type": "ObjectExpression", - "start": 9022, - "end": 9118, + "start": 9023, + "end": 9119, "loc": { "start": { "line": 212, @@ -8606,8 +8606,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 9040, - "end": 9061, + "start": 9041, + "end": 9062, "loc": { "start": { "line": 213, @@ -8623,8 +8623,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9040, - "end": 9046, + "start": 9041, + "end": 9047, "loc": { "start": { "line": 213, @@ -8640,8 +8640,8 @@ }, "value": { "type": "MemberExpression", - "start": 9048, - "end": 9061, + "start": 9049, + "end": 9062, "loc": { "start": { "line": 213, @@ -8654,8 +8654,8 @@ }, "object": { "type": "Identifier", - "start": 9048, - "end": 9054, + "start": 9049, + "end": 9055, "loc": { "start": { "line": 213, @@ -8671,8 +8671,8 @@ }, "property": { "type": "Identifier", - "start": 9055, - "end": 9061, + "start": 9056, + "end": 9062, "loc": { "start": { "line": 213, @@ -8691,8 +8691,8 @@ }, { "type": "ObjectProperty", - "start": 9079, - "end": 9104, + "start": 9080, + "end": 9105, "loc": { "start": { "line": 214, @@ -8708,8 +8708,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9079, - "end": 9087, + "start": 9080, + "end": 9088, "loc": { "start": { "line": 214, @@ -8725,8 +8725,8 @@ }, "value": { "type": "MemberExpression", - "start": 9089, - "end": 9104, + "start": 9090, + "end": 9105, "loc": { "start": { "line": 214, @@ -8739,8 +8739,8 @@ }, "object": { "type": "Identifier", - "start": 9089, - "end": 9095, + "start": 9090, + "end": 9096, "loc": { "start": { "line": 214, @@ -8756,8 +8756,8 @@ }, "property": { "type": "Identifier", - "start": 9096, - "end": 9104, + "start": 9097, + "end": 9105, "loc": { "start": { "line": 214, @@ -8779,8 +8779,8 @@ }, { "type": "ObjectProperty", - "start": 9133, - "end": 9156, + "start": 9134, + "end": 9157, "loc": { "start": { "line": 217, @@ -8796,8 +8796,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9133, - "end": 9140, + "start": 9134, + "end": 9141, "loc": { "start": { "line": 217, @@ -8813,8 +8813,8 @@ }, "value": { "type": "MemberExpression", - "start": 9142, - "end": 9156, + "start": 9143, + "end": 9157, "loc": { "start": { "line": 217, @@ -8827,8 +8827,8 @@ }, "object": { "type": "Identifier", - "start": 9142, - "end": 9148, + "start": 9143, + "end": 9149, "loc": { "start": { "line": 217, @@ -8844,8 +8844,8 @@ }, "property": { "type": "Identifier", - "start": 9149, - "end": 9156, + "start": 9150, + "end": 9157, "loc": { "start": { "line": 217, @@ -8864,8 +8864,8 @@ }, { "type": "ObjectProperty", - "start": 9170, - "end": 9189, + "start": 9171, + "end": 9190, "loc": { "start": { "line": 218, @@ -8881,8 +8881,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9170, - "end": 9183, + "start": 9171, + "end": 9184, "loc": { "start": { "line": 218, @@ -8898,8 +8898,8 @@ }, "value": { "type": "BooleanLiteral", - "start": 9185, - "end": 9189, + "start": 9186, + "end": 9190, "loc": { "start": { "line": 218, @@ -8915,8 +8915,8 @@ }, { "type": "ObjectProperty", - "start": 9203, - "end": 9226, + "start": 9204, + "end": 9227, "loc": { "start": { "line": 219, @@ -8932,8 +8932,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9203, - "end": 9220, + "start": 9204, + "end": 9221, "loc": { "start": { "line": 219, @@ -8949,8 +8949,8 @@ }, "value": { "type": "BooleanLiteral", - "start": 9222, - "end": 9226, + "start": 9223, + "end": 9227, "loc": { "start": { "line": 219, @@ -8966,8 +8966,8 @@ }, { "type": "ObjectProperty", - "start": 9240, - "end": 9259, + "start": 9241, + "end": 9260, "loc": { "start": { "line": 220, @@ -8983,8 +8983,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9240, - "end": 9253, + "start": 9241, + "end": 9254, "loc": { "start": { "line": 220, @@ -9000,8 +9000,8 @@ }, "value": { "type": "BooleanLiteral", - "start": 9255, - "end": 9259, + "start": 9256, + "end": 9260, "loc": { "start": { "line": 220, @@ -9017,8 +9017,8 @@ }, { "type": "ObjectProperty", - "start": 9273, - "end": 9296, + "start": 9274, + "end": 9297, "loc": { "start": { "line": 221, @@ -9034,8 +9034,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9273, - "end": 9290, + "start": 9274, + "end": 9291, "loc": { "start": { "line": 221, @@ -9051,8 +9051,8 @@ }, "value": { "type": "BooleanLiteral", - "start": 9292, - "end": 9296, + "start": 9293, + "end": 9297, "loc": { "start": { "line": 221, @@ -9068,8 +9068,8 @@ }, { "type": "ObjectProperty", - "start": 9310, - "end": 9329, + "start": 9311, + "end": 9330, "loc": { "start": { "line": 222, @@ -9085,8 +9085,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9310, - "end": 9323, + "start": 9311, + "end": 9324, "loc": { "start": { "line": 222, @@ -9102,8 +9102,8 @@ }, "value": { "type": "BooleanLiteral", - "start": 9325, - "end": 9329, + "start": 9326, + "end": 9330, "loc": { "start": { "line": 222, @@ -9127,8 +9127,8 @@ }, { "type": "ExpressionStatement", - "start": 9351, - "end": 9400, + "start": 9352, + "end": 9401, "loc": { "start": { "line": 224, @@ -9141,8 +9141,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9351, - "end": 9399, + "start": 9352, + "end": 9400, "loc": { "start": { "line": 224, @@ -9156,8 +9156,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 9351, - "end": 9385, + "start": 9352, + "end": 9386, "loc": { "start": { "line": 224, @@ -9170,8 +9170,8 @@ }, "object": { "type": "MemberExpression", - "start": 9351, - "end": 9369, + "start": 9352, + "end": 9370, "loc": { "start": { "line": 224, @@ -9184,8 +9184,8 @@ }, "object": { "type": "ThisExpression", - "start": 9351, - "end": 9355, + "start": 9352, + "end": 9356, "loc": { "start": { "line": 224, @@ -9199,8 +9199,8 @@ }, "property": { "type": "Identifier", - "start": 9356, - "end": 9369, + "start": 9357, + "end": 9370, "loc": { "start": { "line": 224, @@ -9218,8 +9218,8 @@ }, "property": { "type": "MemberExpression", - "start": 9370, - "end": 9384, + "start": 9371, + "end": 9385, "loc": { "start": { "line": 224, @@ -9232,8 +9232,8 @@ }, "object": { "type": "Identifier", - "start": 9370, - "end": 9381, + "start": 9371, + "end": 9382, "loc": { "start": { "line": 224, @@ -9249,8 +9249,8 @@ }, "property": { "type": "Identifier", - "start": 9382, - "end": 9384, + "start": 9383, + "end": 9385, "loc": { "start": { "line": 224, @@ -9270,8 +9270,8 @@ }, "right": { "type": "Identifier", - "start": 9388, - "end": 9399, + "start": 9389, + "end": 9400, "loc": { "start": { "line": 224, @@ -9289,8 +9289,8 @@ }, { "type": "ExpressionStatement", - "start": 9409, - "end": 9511, + "start": 9410, + "end": 9512, "loc": { "start": { "line": 225, @@ -9303,8 +9303,8 @@ }, "expression": { "type": "CallExpression", - "start": 9409, - "end": 9510, + "start": 9410, + "end": 9511, "loc": { "start": { "line": 225, @@ -9317,8 +9317,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9409, - "end": 9423, + "start": 9410, + "end": 9424, "loc": { "start": { "line": 225, @@ -9331,8 +9331,8 @@ }, "object": { "type": "Identifier", - "start": 9409, - "end": 9420, + "start": 9410, + "end": 9421, "loc": { "start": { "line": 225, @@ -9348,8 +9348,8 @@ }, "property": { "type": "Identifier", - "start": 9421, - "end": 9423, + "start": 9422, + "end": 9424, "loc": { "start": { "line": 225, @@ -9368,8 +9368,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 9424, - "end": 9435, + "start": 9425, + "end": 9436, "loc": { "start": { "line": 225, @@ -9388,8 +9388,8 @@ }, { "type": "ArrowFunctionExpression", - "start": 9437, - "end": 9509, + "start": 9438, + "end": 9510, "loc": { "start": { "line": 225, @@ -9407,8 +9407,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 9443, - "end": 9509, + "start": 9444, + "end": 9510, "loc": { "start": { "line": 225, @@ -9422,8 +9422,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9457, - "end": 9499, + "start": 9458, + "end": 9500, "loc": { "start": { "line": 226, @@ -9436,8 +9436,8 @@ }, "expression": { "type": "UnaryExpression", - "start": 9457, - "end": 9498, + "start": 9458, + "end": 9499, "loc": { "start": { "line": 226, @@ -9452,8 +9452,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 9464, - "end": 9498, + "start": 9465, + "end": 9499, "loc": { "start": { "line": 226, @@ -9466,8 +9466,8 @@ }, "object": { "type": "MemberExpression", - "start": 9464, - "end": 9482, + "start": 9465, + "end": 9483, "loc": { "start": { "line": 226, @@ -9480,8 +9480,8 @@ }, "object": { "type": "ThisExpression", - "start": 9464, - "end": 9468, + "start": 9465, + "end": 9469, "loc": { "start": { "line": 226, @@ -9495,8 +9495,8 @@ }, "property": { "type": "Identifier", - "start": 9469, - "end": 9482, + "start": 9470, + "end": 9483, "loc": { "start": { "line": 226, @@ -9514,8 +9514,8 @@ }, "property": { "type": "MemberExpression", - "start": 9483, - "end": 9497, + "start": 9484, + "end": 9498, "loc": { "start": { "line": 226, @@ -9528,8 +9528,8 @@ }, "object": { "type": "Identifier", - "start": 9483, - "end": 9494, + "start": 9484, + "end": 9495, "loc": { "start": { "line": 226, @@ -9545,8 +9545,8 @@ }, "property": { "type": "Identifier", - "start": 9495, - "end": 9497, + "start": 9496, + "end": 9498, "loc": { "start": { "line": 226, @@ -9578,8 +9578,8 @@ }, { "type": "ReturnStatement", - "start": 9520, - "end": 9539, + "start": 9521, + "end": 9540, "loc": { "start": { "line": 228, @@ -9592,8 +9592,8 @@ }, "argument": { "type": "Identifier", - "start": 9527, - "end": 9538, + "start": 9528, + "end": 9539, "loc": { "start": { "line": 228, @@ -9616,8 +9616,8 @@ { "type": "CommentBlock", "value": "*\n * Creates an {@link AngleMeasurement}.\n *\n * The AngleMeasurement is then registered by {@link AngleMeasurement#id} in {@link AngleMeasurementsPlugin#measurements}.\n *\n * @param {Object} params {@link AngleMeasurement} configuration.\n * @param {String} params.id Unique ID to assign to {@link AngleMeasurement#id}. The AngleMeasurement will be registered by this in {@link AngleMeasurementsPlugin#measurements} and {@link Scene.components}. Must be unique among all components in the {@link Viewer}.\n * @param {Number[]} params.origin.worldPos Origin World-space 3D position.\n * @param {Entity} params.origin.entity Origin Entity.\n * @param {Number[]} params.corner.worldPos Corner World-space 3D position.\n * @param {Entity} params.corner.entity Corner Entity.\n * @param {Number[]} params.target.worldPos Target World-space 3D position.\n * @param {Entity} params.target.entity Target Entity.\n * @param {Boolean} [params.visible=true] Whether to initially show the {@link AngleMeasurement}.\n * @returns {AngleMeasurement} The new {@link AngleMeasurement}.\n ", - "start": 7153, - "end": 8277, + "start": 7154, + "end": 8278, "loc": { "start": { "line": 176, @@ -9634,8 +9634,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys a {@link AngleMeasurement}.\n *\n * @param {String} id ID of AngleMeasurement to destroy.\n ", - "start": 9551, - "end": 9674, + "start": 9552, + "end": 9675, "loc": { "start": { "line": 231, @@ -9651,8 +9651,8 @@ }, { "type": "ClassMethod", - "start": 9679, - "end": 9909, + "start": 9680, + "end": 9910, "loc": { "start": { "line": 236, @@ -9667,8 +9667,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9679, - "end": 9697, + "start": 9680, + "end": 9698, "loc": { "start": { "line": 236, @@ -9691,8 +9691,8 @@ "params": [ { "type": "Identifier", - "start": 9698, - "end": 9700, + "start": 9699, + "end": 9701, "loc": { "start": { "line": 236, @@ -9709,8 +9709,8 @@ ], "body": { "type": "BlockStatement", - "start": 9702, - "end": 9909, + "start": 9703, + "end": 9910, "loc": { "start": { "line": 236, @@ -9724,8 +9724,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 9712, - "end": 9755, + "start": 9713, + "end": 9756, "loc": { "start": { "line": 237, @@ -9739,8 +9739,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9718, - "end": 9754, + "start": 9719, + "end": 9755, "loc": { "start": { "line": 237, @@ -9753,8 +9753,8 @@ }, "id": { "type": "Identifier", - "start": 9718, - "end": 9729, + "start": 9719, + "end": 9730, "loc": { "start": { "line": 237, @@ -9770,8 +9770,8 @@ }, "init": { "type": "MemberExpression", - "start": 9732, - "end": 9754, + "start": 9733, + "end": 9755, "loc": { "start": { "line": 237, @@ -9784,8 +9784,8 @@ }, "object": { "type": "MemberExpression", - "start": 9732, - "end": 9750, + "start": 9733, + "end": 9751, "loc": { "start": { "line": 237, @@ -9798,8 +9798,8 @@ }, "object": { "type": "ThisExpression", - "start": 9732, - "end": 9736, + "start": 9733, + "end": 9737, "loc": { "start": { "line": 237, @@ -9813,8 +9813,8 @@ }, "property": { "type": "Identifier", - "start": 9737, - "end": 9750, + "start": 9738, + "end": 9751, "loc": { "start": { "line": 237, @@ -9832,8 +9832,8 @@ }, "property": { "type": "Identifier", - "start": 9751, - "end": 9753, + "start": 9752, + "end": 9754, "loc": { "start": { "line": 237, @@ -9855,8 +9855,8 @@ }, { "type": "IfStatement", - "start": 9764, - "end": 9872, + "start": 9765, + "end": 9873, "loc": { "start": { "line": 238, @@ -9869,8 +9869,8 @@ }, "test": { "type": "UnaryExpression", - "start": 9768, - "end": 9780, + "start": 9769, + "end": 9781, "loc": { "start": { "line": 238, @@ -9885,8 +9885,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 9769, - "end": 9780, + "start": 9770, + "end": 9781, "loc": { "start": { "line": 238, @@ -9906,8 +9906,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9782, - "end": 9872, + "start": 9783, + "end": 9873, "loc": { "start": { "line": 238, @@ -9921,8 +9921,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9796, - "end": 9842, + "start": 9797, + "end": 9843, "loc": { "start": { "line": 239, @@ -9935,8 +9935,8 @@ }, "expression": { "type": "CallExpression", - "start": 9796, - "end": 9841, + "start": 9797, + "end": 9842, "loc": { "start": { "line": 239, @@ -9949,8 +9949,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9796, - "end": 9804, + "start": 9797, + "end": 9805, "loc": { "start": { "line": 239, @@ -9963,8 +9963,8 @@ }, "object": { "type": "ThisExpression", - "start": 9796, - "end": 9800, + "start": 9797, + "end": 9801, "loc": { "start": { "line": 239, @@ -9978,8 +9978,8 @@ }, "property": { "type": "Identifier", - "start": 9801, - "end": 9804, + "start": 9802, + "end": 9805, "loc": { "start": { "line": 239, @@ -9998,8 +9998,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 9805, - "end": 9840, + "start": 9806, + "end": 9841, "loc": { "start": { "line": 239, @@ -10012,8 +10012,8 @@ }, "left": { "type": "StringLiteral", - "start": 9805, - "end": 9835, + "start": 9806, + "end": 9836, "loc": { "start": { "line": 239, @@ -10033,8 +10033,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 9838, - "end": 9840, + "start": 9839, + "end": 9841, "loc": { "start": { "line": 239, @@ -10054,8 +10054,8 @@ }, { "type": "ReturnStatement", - "start": 9855, - "end": 9862, + "start": 9856, + "end": 9863, "loc": { "start": { "line": 240, @@ -10075,8 +10075,8 @@ }, { "type": "ExpressionStatement", - "start": 9881, - "end": 9903, + "start": 9882, + "end": 9904, "loc": { "start": { "line": 242, @@ -10089,8 +10089,8 @@ }, "expression": { "type": "CallExpression", - "start": 9881, - "end": 9902, + "start": 9882, + "end": 9903, "loc": { "start": { "line": 242, @@ -10103,8 +10103,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9881, - "end": 9900, + "start": 9882, + "end": 9901, "loc": { "start": { "line": 242, @@ -10117,8 +10117,8 @@ }, "object": { "type": "Identifier", - "start": 9881, - "end": 9892, + "start": 9882, + "end": 9893, "loc": { "start": { "line": 242, @@ -10134,8 +10134,8 @@ }, "property": { "type": "Identifier", - "start": 9893, - "end": 9900, + "start": 9894, + "end": 9901, "loc": { "start": { "line": 242, @@ -10162,8 +10162,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys a {@link AngleMeasurement}.\n *\n * @param {String} id ID of AngleMeasurement to destroy.\n ", - "start": 9551, - "end": 9674, + "start": 9552, + "end": 9675, "loc": { "start": { "line": 231, @@ -10180,8 +10180,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys all {@link AngleMeasurement}s.\n ", - "start": 9915, - "end": 9973, + "start": 9916, + "end": 9974, "loc": { "start": { "line": 245, @@ -10197,8 +10197,8 @@ }, { "type": "ClassMethod", - "start": 9978, - "end": 10159, + "start": 9979, + "end": 10160, "loc": { "start": { "line": 248, @@ -10213,8 +10213,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9978, - "end": 9983, + "start": 9979, + "end": 9984, "loc": { "start": { "line": 248, @@ -10237,8 +10237,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 9986, - "end": 10159, + "start": 9987, + "end": 10160, "loc": { "start": { "line": 248, @@ -10252,8 +10252,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 9996, - "end": 10040, + "start": 9997, + "end": 10041, "loc": { "start": { "line": 249, @@ -10267,8 +10267,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 10002, - "end": 10039, + "start": 10003, + "end": 10040, "loc": { "start": { "line": 249, @@ -10281,8 +10281,8 @@ }, "id": { "type": "Identifier", - "start": 10002, - "end": 10005, + "start": 10003, + "end": 10006, "loc": { "start": { "line": 249, @@ -10298,8 +10298,8 @@ }, "init": { "type": "CallExpression", - "start": 10008, - "end": 10039, + "start": 10009, + "end": 10040, "loc": { "start": { "line": 249, @@ -10312,8 +10312,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10008, - "end": 10019, + "start": 10009, + "end": 10020, "loc": { "start": { "line": 249, @@ -10326,8 +10326,8 @@ }, "object": { "type": "Identifier", - "start": 10008, - "end": 10014, + "start": 10009, + "end": 10015, "loc": { "start": { "line": 249, @@ -10343,8 +10343,8 @@ }, "property": { "type": "Identifier", - "start": 10015, - "end": 10019, + "start": 10016, + "end": 10020, "loc": { "start": { "line": 249, @@ -10363,8 +10363,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 10020, - "end": 10038, + "start": 10021, + "end": 10039, "loc": { "start": { "line": 249, @@ -10377,8 +10377,8 @@ }, "object": { "type": "ThisExpression", - "start": 10020, - "end": 10024, + "start": 10021, + "end": 10025, "loc": { "start": { "line": 249, @@ -10392,8 +10392,8 @@ }, "property": { "type": "Identifier", - "start": 10025, - "end": 10038, + "start": 10026, + "end": 10039, "loc": { "start": { "line": 249, @@ -10417,8 +10417,8 @@ }, { "type": "ForStatement", - "start": 10049, - "end": 10153, + "start": 10050, + "end": 10154, "loc": { "start": { "line": 250, @@ -10431,8 +10431,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 10054, - "end": 10081, + "start": 10055, + "end": 10082, "loc": { "start": { "line": 250, @@ -10446,8 +10446,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 10058, - "end": 10063, + "start": 10059, + "end": 10064, "loc": { "start": { "line": 250, @@ -10460,8 +10460,8 @@ }, "id": { "type": "Identifier", - "start": 10058, - "end": 10059, + "start": 10059, + "end": 10060, "loc": { "start": { "line": 250, @@ -10477,8 +10477,8 @@ }, "init": { "type": "NumericLiteral", - "start": 10062, - "end": 10063, + "start": 10063, + "end": 10064, "loc": { "start": { "line": 250, @@ -10498,8 +10498,8 @@ }, { "type": "VariableDeclarator", - "start": 10065, - "end": 10081, + "start": 10066, + "end": 10082, "loc": { "start": { "line": 250, @@ -10512,8 +10512,8 @@ }, "id": { "type": "Identifier", - "start": 10065, - "end": 10068, + "start": 10066, + "end": 10069, "loc": { "start": { "line": 250, @@ -10529,8 +10529,8 @@ }, "init": { "type": "MemberExpression", - "start": 10071, - "end": 10081, + "start": 10072, + "end": 10082, "loc": { "start": { "line": 250, @@ -10543,8 +10543,8 @@ }, "object": { "type": "Identifier", - "start": 10071, - "end": 10074, + "start": 10072, + "end": 10075, "loc": { "start": { "line": 250, @@ -10560,8 +10560,8 @@ }, "property": { "type": "Identifier", - "start": 10075, - "end": 10081, + "start": 10076, + "end": 10082, "loc": { "start": { "line": 250, @@ -10583,8 +10583,8 @@ }, "test": { "type": "BinaryExpression", - "start": 10083, - "end": 10090, + "start": 10084, + "end": 10091, "loc": { "start": { "line": 250, @@ -10597,8 +10597,8 @@ }, "left": { "type": "Identifier", - "start": 10083, - "end": 10084, + "start": 10084, + "end": 10085, "loc": { "start": { "line": 250, @@ -10615,8 +10615,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 10087, - "end": 10090, + "start": 10088, + "end": 10091, "loc": { "start": { "line": 250, @@ -10633,8 +10633,8 @@ }, "update": { "type": "UpdateExpression", - "start": 10092, - "end": 10095, + "start": 10093, + "end": 10096, "loc": { "start": { "line": 250, @@ -10649,8 +10649,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 10092, - "end": 10093, + "start": 10093, + "end": 10094, "loc": { "start": { "line": 250, @@ -10667,8 +10667,8 @@ }, "body": { "type": "BlockStatement", - "start": 10097, - "end": 10153, + "start": 10098, + "end": 10154, "loc": { "start": { "line": 250, @@ -10682,8 +10682,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 10111, - "end": 10143, + "start": 10112, + "end": 10144, "loc": { "start": { "line": 251, @@ -10696,8 +10696,8 @@ }, "expression": { "type": "CallExpression", - "start": 10111, - "end": 10142, + "start": 10112, + "end": 10143, "loc": { "start": { "line": 251, @@ -10710,8 +10710,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10111, - "end": 10134, + "start": 10112, + "end": 10135, "loc": { "start": { "line": 251, @@ -10724,8 +10724,8 @@ }, "object": { "type": "ThisExpression", - "start": 10111, - "end": 10115, + "start": 10112, + "end": 10116, "loc": { "start": { "line": 251, @@ -10739,8 +10739,8 @@ }, "property": { "type": "Identifier", - "start": 10116, - "end": 10134, + "start": 10117, + "end": 10135, "loc": { "start": { "line": 251, @@ -10759,8 +10759,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 10135, - "end": 10141, + "start": 10136, + "end": 10142, "loc": { "start": { "line": 251, @@ -10773,8 +10773,8 @@ }, "object": { "type": "Identifier", - "start": 10135, - "end": 10138, + "start": 10136, + "end": 10139, "loc": { "start": { "line": 251, @@ -10790,8 +10790,8 @@ }, "property": { "type": "Identifier", - "start": 10139, - "end": 10140, + "start": 10140, + "end": 10141, "loc": { "start": { "line": 251, @@ -10822,8 +10822,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys all {@link AngleMeasurement}s.\n ", - "start": 9915, - "end": 9973, + "start": 9916, + "end": 9974, "loc": { "start": { "line": 245, @@ -10840,8 +10840,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys this AngleMeasurementsPlugin.\n *\n * Destroys all {@link AngleMeasurement}s first.\n ", - "start": 10165, - "end": 10282, + "start": 10166, + "end": 10283, "loc": { "start": { "line": 255, @@ -10857,8 +10857,8 @@ }, { "type": "ClassMethod", - "start": 10287, - "end": 10351, + "start": 10288, + "end": 10352, "loc": { "start": { "line": 260, @@ -10873,8 +10873,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 10287, - "end": 10294, + "start": 10288, + "end": 10295, "loc": { "start": { "line": 260, @@ -10897,8 +10897,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 10297, - "end": 10351, + "start": 10298, + "end": 10352, "loc": { "start": { "line": 260, @@ -10912,8 +10912,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 10307, - "end": 10320, + "start": 10308, + "end": 10321, "loc": { "start": { "line": 261, @@ -10926,8 +10926,8 @@ }, "expression": { "type": "CallExpression", - "start": 10307, - "end": 10319, + "start": 10308, + "end": 10320, "loc": { "start": { "line": 261, @@ -10940,8 +10940,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10307, - "end": 10317, + "start": 10308, + "end": 10318, "loc": { "start": { "line": 261, @@ -10954,8 +10954,8 @@ }, "object": { "type": "ThisExpression", - "start": 10307, - "end": 10311, + "start": 10308, + "end": 10312, "loc": { "start": { "line": 261, @@ -10969,8 +10969,8 @@ }, "property": { "type": "Identifier", - "start": 10312, - "end": 10317, + "start": 10313, + "end": 10318, "loc": { "start": { "line": 261, @@ -10991,8 +10991,8 @@ }, { "type": "ExpressionStatement", - "start": 10329, - "end": 10345, + "start": 10330, + "end": 10346, "loc": { "start": { "line": 262, @@ -11005,8 +11005,8 @@ }, "expression": { "type": "CallExpression", - "start": 10329, - "end": 10344, + "start": 10330, + "end": 10345, "loc": { "start": { "line": 262, @@ -11019,8 +11019,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10329, - "end": 10342, + "start": 10330, + "end": 10343, "loc": { "start": { "line": 262, @@ -11033,8 +11033,8 @@ }, "object": { "type": "Super", - "start": 10329, - "end": 10334, + "start": 10330, + "end": 10335, "loc": { "start": { "line": 262, @@ -11048,8 +11048,8 @@ }, "property": { "type": "Identifier", - "start": 10335, - "end": 10342, + "start": 10336, + "end": 10343, "loc": { "start": { "line": 262, @@ -11075,8 +11075,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys this AngleMeasurementsPlugin.\n *\n * Destroys all {@link AngleMeasurement}s first.\n ", - "start": 10165, - "end": 10282, + "start": 10166, + "end": 10283, "loc": { "start": { "line": 255, @@ -11097,7 +11097,7 @@ "type": "CommentBlock", "value": "*\n * {@link Viewer} plugin for measuring angles.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)\n *\n * * [[Example 1: Model with angle measurements](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_modelWithMeasurements)]\n * * [[Example 2: Create angle measurements with mouse](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)]\n *\n * ## Overview\n *\n * * An {@link AngleMeasurement} shows the angle between two connected 3D line segments, given\n * as three positions on the surface(s) of one or more {@link Entity}s.\n * * As shown on the screen capture above, a AngleMeasurement has two wires that show the line segments, with a label that shows the angle between them.\n * * Create AngleMeasurements programmatically with {@link AngleMeasurementsPlugin#createMeasurement}.\n * * Create AngleMeasurements interactively using the {@link AngleMeasurementsControl}, located at {@link AngleMeasurementsPlugin#control}.\n * * Existing AngleMeasurements are registered by ID in {@link AngleMeasurementsPlugin#measurements}.\n * * Destroy AngleMeasurements using {@link AngleMeasurementsPlugin#destroyMeasurement}.\n * * Configure global measurement units and scale via {@link Metrics}, located at {@link Scene#metrics}\n *\n * ## Example 1: Creating AngleMeasurements Programmatically\n *\n * In our first example, we'll use an {@link XKTLoaderPlugin} to load a model, and then use a AngleMeasurementsPlugin to programmatically create two {@link AngleMeasurement}s.\n *\n * Note how each AngleMeasurement has ````origin````, ````corner```` and ````target````, which each indicate a 3D World-space\n * position on the surface of an {@link Entity}. These can be aon the same Entity, or on different Entitys.\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_modelWithMeasurements)]\n *\n * ````JavaScript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {AngleMeasurementsPlugin} from \"../src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\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 angleMeasurements = new AngleMeasurementsPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\"\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * const myMeasurement1 = angleMeasurements.createMeasurement({\n * id: \"myAngleMeasurement1\",\n * origin: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [0.044, 5.998, 17.767]\n * },\n * corner: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [0.044, 5.998, 17.767]\n * },\n * target: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [4.738, 3.172, 17.768]\n * },\n * visible: true\n * });\n *\n * const myMeasurement2 = angleMeasurements.createMeasurement({\n * id: \"myAngleMeasurement2\",\n * origin: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FNr2\"],\n * worldPos: [0.457, 2.532, 17.766]\n * },\n * corner: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FNr2\"],\n * worldPos: [0.457, 2.532, 17.766]\n * },\n * target: {\n * entity: viewer.scene.objects[\"1CZILmCaHETO8tf3SgGEXu\"],\n * worldPos: [0.436, 0.001, 22.135]\n * },\n * visible: true\n * });\n * });\n * ````\n *\n * ## Example 2: Creating AngleMeasurements Interactively\n *\n * In our second example, we'll use an {@link XKTLoaderPlugin} to load a model, then we'll use the AngleMeasurementsPlugin's {@link AngleMeasurementsControl} to interactively create {@link AngleMeasurement}s with mouse or touch input.\n *\n * After we've activated the AngleMeasurementsControl, the first click on any {@link Entity} begins constructing a AngleMeasurement, fixing its\n * origin to that Entity. The next click on any Entity will fix the AngleMeasurement's corner, and the next click after\n * that will fix its target and complete the AngleMeasurement.\n *\n * The AngleMeasurementControl will then wait for the next click on any Entity, to begin constructing\n * another AngleMeasurement, and so on, until deactivated again.\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)]\n *\n * ````JavaScript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {AngleMeasurementsPlugin} from \"../src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\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 angleMeasurements = new AngleMeasurementsPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\"\n * });\n *\n * angleMeasurements.control.activate(); // <------------ Activate the AngleMeasurementsControl\n * ````\n ", "start": 176, - "end": 5947, + "end": 5948, "loc": { "start": { "line": 5, @@ -11125,7 +11125,7 @@ "type": "CommentBlock", "value": "*\n * {@link Viewer} plugin for measuring angles.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)\n *\n * * [[Example 1: Model with angle measurements](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_modelWithMeasurements)]\n * * [[Example 2: Create angle measurements with mouse](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)]\n *\n * ## Overview\n *\n * * An {@link AngleMeasurement} shows the angle between two connected 3D line segments, given\n * as three positions on the surface(s) of one or more {@link Entity}s.\n * * As shown on the screen capture above, a AngleMeasurement has two wires that show the line segments, with a label that shows the angle between them.\n * * Create AngleMeasurements programmatically with {@link AngleMeasurementsPlugin#createMeasurement}.\n * * Create AngleMeasurements interactively using the {@link AngleMeasurementsControl}, located at {@link AngleMeasurementsPlugin#control}.\n * * Existing AngleMeasurements are registered by ID in {@link AngleMeasurementsPlugin#measurements}.\n * * Destroy AngleMeasurements using {@link AngleMeasurementsPlugin#destroyMeasurement}.\n * * Configure global measurement units and scale via {@link Metrics}, located at {@link Scene#metrics}\n *\n * ## Example 1: Creating AngleMeasurements Programmatically\n *\n * In our first example, we'll use an {@link XKTLoaderPlugin} to load a model, and then use a AngleMeasurementsPlugin to programmatically create two {@link AngleMeasurement}s.\n *\n * Note how each AngleMeasurement has ````origin````, ````corner```` and ````target````, which each indicate a 3D World-space\n * position on the surface of an {@link Entity}. These can be aon the same Entity, or on different Entitys.\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_modelWithMeasurements)]\n *\n * ````JavaScript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {AngleMeasurementsPlugin} from \"../src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\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 angleMeasurements = new AngleMeasurementsPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\"\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * const myMeasurement1 = angleMeasurements.createMeasurement({\n * id: \"myAngleMeasurement1\",\n * origin: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [0.044, 5.998, 17.767]\n * },\n * corner: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [0.044, 5.998, 17.767]\n * },\n * target: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [4.738, 3.172, 17.768]\n * },\n * visible: true\n * });\n *\n * const myMeasurement2 = angleMeasurements.createMeasurement({\n * id: \"myAngleMeasurement2\",\n * origin: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FNr2\"],\n * worldPos: [0.457, 2.532, 17.766]\n * },\n * corner: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FNr2\"],\n * worldPos: [0.457, 2.532, 17.766]\n * },\n * target: {\n * entity: viewer.scene.objects[\"1CZILmCaHETO8tf3SgGEXu\"],\n * worldPos: [0.436, 0.001, 22.135]\n * },\n * visible: true\n * });\n * });\n * ````\n *\n * ## Example 2: Creating AngleMeasurements Interactively\n *\n * In our second example, we'll use an {@link XKTLoaderPlugin} to load a model, then we'll use the AngleMeasurementsPlugin's {@link AngleMeasurementsControl} to interactively create {@link AngleMeasurement}s with mouse or touch input.\n *\n * After we've activated the AngleMeasurementsControl, the first click on any {@link Entity} begins constructing a AngleMeasurement, fixing its\n * origin to that Entity. The next click on any Entity will fix the AngleMeasurement's corner, and the next click after\n * that will fix its target and complete the AngleMeasurement.\n *\n * The AngleMeasurementControl will then wait for the next click on any Entity, to begin constructing\n * another AngleMeasurement, and so on, until deactivated again.\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)]\n *\n * ````JavaScript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {AngleMeasurementsPlugin} from \"../src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\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 angleMeasurements = new AngleMeasurementsPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\"\n * });\n *\n * angleMeasurements.control.activate(); // <------------ Activate the AngleMeasurementsControl\n * ````\n ", "start": 176, - "end": 5947, + "end": 5948, "loc": { "start": { "line": 5, @@ -11140,8 +11140,8 @@ { "type": "CommentBlock", "value": "*\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} [cfg] Plugin configuration.\n * @param {String} [cfg.id=\"AngleMeasurements\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {HTMLElement} [cfg.container] Container DOM element for markers and labels. Defaults to ````document.body````.\n ", - "start": 6000, - "end": 6384, + "start": 6001, + "end": 6385, "loc": { "start": { "line": 133, @@ -11156,8 +11156,8 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 6631, - "end": 6658, + "start": 6632, + "end": 6659, "loc": { "start": { "line": 151, @@ -11172,8 +11172,8 @@ { "type": "CommentBlock", "value": "*\n * Gets the {@link AngleMeasurementsControl}, which creates {@link AngleMeasurement}s from user input.\n *\n * @type {AngleMeasurementsControl}\n ", - "start": 6695, - "end": 6860, + "start": 6696, + "end": 6861, "loc": { "start": { "line": 158, @@ -11188,8 +11188,8 @@ { "type": "CommentBlock", "value": "*\n * Gets the existing {@link AngleMeasurement}s, each mapped to its {@link AngleMeasurement#id}.\n *\n * @type {{String:AngleMeasurement}}\n ", - "start": 6922, - "end": 7081, + "start": 6923, + "end": 7082, "loc": { "start": { "line": 167, @@ -11204,8 +11204,8 @@ { "type": "CommentBlock", "value": "*\n * Creates an {@link AngleMeasurement}.\n *\n * The AngleMeasurement is then registered by {@link AngleMeasurement#id} in {@link AngleMeasurementsPlugin#measurements}.\n *\n * @param {Object} params {@link AngleMeasurement} configuration.\n * @param {String} params.id Unique ID to assign to {@link AngleMeasurement#id}. The AngleMeasurement will be registered by this in {@link AngleMeasurementsPlugin#measurements} and {@link Scene.components}. Must be unique among all components in the {@link Viewer}.\n * @param {Number[]} params.origin.worldPos Origin World-space 3D position.\n * @param {Entity} params.origin.entity Origin Entity.\n * @param {Number[]} params.corner.worldPos Corner World-space 3D position.\n * @param {Entity} params.corner.entity Corner Entity.\n * @param {Number[]} params.target.worldPos Target World-space 3D position.\n * @param {Entity} params.target.entity Target Entity.\n * @param {Boolean} [params.visible=true] Whether to initially show the {@link AngleMeasurement}.\n * @returns {AngleMeasurement} The new {@link AngleMeasurement}.\n ", - "start": 7153, - "end": 8277, + "start": 7154, + "end": 8278, "loc": { "start": { "line": 176, @@ -11220,8 +11220,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys a {@link AngleMeasurement}.\n *\n * @param {String} id ID of AngleMeasurement to destroy.\n ", - "start": 9551, - "end": 9674, + "start": 9552, + "end": 9675, "loc": { "start": { "line": 231, @@ -11236,8 +11236,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys all {@link AngleMeasurement}s.\n ", - "start": 9915, - "end": 9973, + "start": 9916, + "end": 9974, "loc": { "start": { "line": 245, @@ -11252,8 +11252,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys this AngleMeasurementsPlugin.\n *\n * Destroys all {@link AngleMeasurement}s first.\n ", - "start": 10165, - "end": 10282, + "start": 10166, + "end": 10283, "loc": { "start": { "line": 255, @@ -11820,7 +11820,7 @@ "type": "CommentBlock", "value": "*\n * {@link Viewer} plugin for measuring angles.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)\n *\n * * [[Example 1: Model with angle measurements](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_modelWithMeasurements)]\n * * [[Example 2: Create angle measurements with mouse](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)]\n *\n * ## Overview\n *\n * * An {@link AngleMeasurement} shows the angle between two connected 3D line segments, given\n * as three positions on the surface(s) of one or more {@link Entity}s.\n * * As shown on the screen capture above, a AngleMeasurement has two wires that show the line segments, with a label that shows the angle between them.\n * * Create AngleMeasurements programmatically with {@link AngleMeasurementsPlugin#createMeasurement}.\n * * Create AngleMeasurements interactively using the {@link AngleMeasurementsControl}, located at {@link AngleMeasurementsPlugin#control}.\n * * Existing AngleMeasurements are registered by ID in {@link AngleMeasurementsPlugin#measurements}.\n * * Destroy AngleMeasurements using {@link AngleMeasurementsPlugin#destroyMeasurement}.\n * * Configure global measurement units and scale via {@link Metrics}, located at {@link Scene#metrics}\n *\n * ## Example 1: Creating AngleMeasurements Programmatically\n *\n * In our first example, we'll use an {@link XKTLoaderPlugin} to load a model, and then use a AngleMeasurementsPlugin to programmatically create two {@link AngleMeasurement}s.\n *\n * Note how each AngleMeasurement has ````origin````, ````corner```` and ````target````, which each indicate a 3D World-space\n * position on the surface of an {@link Entity}. These can be aon the same Entity, or on different Entitys.\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_modelWithMeasurements)]\n *\n * ````JavaScript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {AngleMeasurementsPlugin} from \"../src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\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 angleMeasurements = new AngleMeasurementsPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\"\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * const myMeasurement1 = angleMeasurements.createMeasurement({\n * id: \"myAngleMeasurement1\",\n * origin: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [0.044, 5.998, 17.767]\n * },\n * corner: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [0.044, 5.998, 17.767]\n * },\n * target: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [4.738, 3.172, 17.768]\n * },\n * visible: true\n * });\n *\n * const myMeasurement2 = angleMeasurements.createMeasurement({\n * id: \"myAngleMeasurement2\",\n * origin: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FNr2\"],\n * worldPos: [0.457, 2.532, 17.766]\n * },\n * corner: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FNr2\"],\n * worldPos: [0.457, 2.532, 17.766]\n * },\n * target: {\n * entity: viewer.scene.objects[\"1CZILmCaHETO8tf3SgGEXu\"],\n * worldPos: [0.436, 0.001, 22.135]\n * },\n * visible: true\n * });\n * });\n * ````\n *\n * ## Example 2: Creating AngleMeasurements Interactively\n *\n * In our second example, we'll use an {@link XKTLoaderPlugin} to load a model, then we'll use the AngleMeasurementsPlugin's {@link AngleMeasurementsControl} to interactively create {@link AngleMeasurement}s with mouse or touch input.\n *\n * After we've activated the AngleMeasurementsControl, the first click on any {@link Entity} begins constructing a AngleMeasurement, fixing its\n * origin to that Entity. The next click on any Entity will fix the AngleMeasurement's corner, and the next click after\n * that will fix its target and complete the AngleMeasurement.\n *\n * The AngleMeasurementControl will then wait for the next click on any Entity, to begin constructing\n * another AngleMeasurement, and so on, until deactivated again.\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)]\n *\n * ````JavaScript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {AngleMeasurementsPlugin} from \"../src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\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 angleMeasurements = new AngleMeasurementsPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\"\n * });\n *\n * angleMeasurements.control.activate(); // <------------ Activate the AngleMeasurementsControl\n * ````\n ", "start": 176, - "end": 5947, + "end": 5948, "loc": { "start": { "line": 5, @@ -11847,8 +11847,8 @@ "updateContext": null }, "value": "class", - "start": 5948, - "end": 5953, + "start": 5949, + "end": 5954, "loc": { "start": { "line": 131, @@ -11873,8 +11873,8 @@ "binop": null }, "value": "AngleMeasurementsPlugin", - "start": 5954, - "end": 5977, + "start": 5955, + "end": 5978, "loc": { "start": { "line": 131, @@ -11901,8 +11901,8 @@ "updateContext": null }, "value": "extends", - "start": 5978, - "end": 5985, + "start": 5979, + "end": 5986, "loc": { "start": { "line": 131, @@ -11927,8 +11927,8 @@ "binop": null }, "value": "Plugin", - "start": 5986, - "end": 5992, + "start": 5987, + "end": 5993, "loc": { "start": { "line": 131, @@ -11952,8 +11952,8 @@ "postfix": false, "binop": null }, - "start": 5993, - "end": 5994, + "start": 5994, + "end": 5995, "loc": { "start": { "line": 131, @@ -11968,8 +11968,8 @@ { "type": "CommentBlock", "value": "*\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} [cfg] Plugin configuration.\n * @param {String} [cfg.id=\"AngleMeasurements\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {HTMLElement} [cfg.container] Container DOM element for markers and labels. Defaults to ````document.body````.\n ", - "start": 6000, - "end": 6384, + "start": 6001, + "end": 6385, "loc": { "start": { "line": 133, @@ -11994,8 +11994,8 @@ "binop": null }, "value": "constructor", - "start": 6389, - "end": 6400, + "start": 6390, + "end": 6401, "loc": { "start": { "line": 140, @@ -12019,8 +12019,8 @@ "postfix": false, "binop": null }, - "start": 6400, - "end": 6401, + "start": 6401, + "end": 6402, "loc": { "start": { "line": 140, @@ -12045,8 +12045,8 @@ "binop": null }, "value": "viewer", - "start": 6401, - "end": 6407, + "start": 6402, + "end": 6408, "loc": { "start": { "line": 140, @@ -12071,8 +12071,8 @@ "binop": null, "updateContext": null }, - "start": 6407, - "end": 6408, + "start": 6408, + "end": 6409, "loc": { "start": { "line": 140, @@ -12097,8 +12097,8 @@ "binop": null }, "value": "cfg", - "start": 6409, - "end": 6412, + "start": 6410, + "end": 6413, "loc": { "start": { "line": 140, @@ -12124,8 +12124,8 @@ "updateContext": null }, "value": "=", - "start": 6413, - "end": 6414, + "start": 6414, + "end": 6415, "loc": { "start": { "line": 140, @@ -12149,8 +12149,8 @@ "postfix": false, "binop": null }, - "start": 6415, - "end": 6416, + "start": 6416, + "end": 6417, "loc": { "start": { "line": 140, @@ -12174,8 +12174,8 @@ "postfix": false, "binop": null }, - "start": 6416, - "end": 6417, + "start": 6417, + "end": 6418, "loc": { "start": { "line": 140, @@ -12199,8 +12199,8 @@ "postfix": false, "binop": null }, - "start": 6417, - "end": 6418, + "start": 6418, + "end": 6419, "loc": { "start": { "line": 140, @@ -12224,8 +12224,8 @@ "postfix": false, "binop": null }, - "start": 6419, - "end": 6420, + "start": 6420, + "end": 6421, "loc": { "start": { "line": 140, @@ -12252,8 +12252,8 @@ "updateContext": null }, "value": "super", - "start": 6430, - "end": 6435, + "start": 6431, + "end": 6436, "loc": { "start": { "line": 142, @@ -12277,8 +12277,8 @@ "postfix": false, "binop": null }, - "start": 6435, - "end": 6436, + "start": 6436, + "end": 6437, "loc": { "start": { "line": 142, @@ -12304,8 +12304,8 @@ "updateContext": null }, "value": "AngleMeasurements", - "start": 6436, - "end": 6455, + "start": 6437, + "end": 6456, "loc": { "start": { "line": 142, @@ -12330,8 +12330,8 @@ "binop": null, "updateContext": null }, - "start": 6455, - "end": 6456, + "start": 6456, + "end": 6457, "loc": { "start": { "line": 142, @@ -12356,8 +12356,8 @@ "binop": null }, "value": "viewer", - "start": 6457, - "end": 6463, + "start": 6458, + "end": 6464, "loc": { "start": { "line": 142, @@ -12381,8 +12381,8 @@ "postfix": false, "binop": null }, - "start": 6463, - "end": 6464, + "start": 6464, + "end": 6465, "loc": { "start": { "line": 142, @@ -12407,8 +12407,8 @@ "binop": null, "updateContext": null }, - "start": 6464, - "end": 6465, + "start": 6465, + "end": 6466, "loc": { "start": { "line": 142, @@ -12435,8 +12435,8 @@ "updateContext": null }, "value": "this", - "start": 6475, - "end": 6479, + "start": 6476, + "end": 6480, "loc": { "start": { "line": 144, @@ -12461,8 +12461,8 @@ "binop": null, "updateContext": null }, - "start": 6479, - "end": 6480, + "start": 6480, + "end": 6481, "loc": { "start": { "line": 144, @@ -12487,8 +12487,8 @@ "binop": null }, "value": "_container", - "start": 6480, - "end": 6490, + "start": 6481, + "end": 6491, "loc": { "start": { "line": 144, @@ -12514,8 +12514,8 @@ "updateContext": null }, "value": "=", - "start": 6491, - "end": 6492, + "start": 6492, + "end": 6493, "loc": { "start": { "line": 144, @@ -12540,8 +12540,8 @@ "binop": null }, "value": "cfg", - "start": 6493, - "end": 6496, + "start": 6494, + "end": 6497, "loc": { "start": { "line": 144, @@ -12566,8 +12566,8 @@ "binop": null, "updateContext": null }, - "start": 6496, - "end": 6497, + "start": 6497, + "end": 6498, "loc": { "start": { "line": 144, @@ -12592,8 +12592,8 @@ "binop": null }, "value": "container", - "start": 6497, - "end": 6506, + "start": 6498, + "end": 6507, "loc": { "start": { "line": 144, @@ -12619,8 +12619,8 @@ "updateContext": null }, "value": "||", - "start": 6507, - "end": 6509, + "start": 6508, + "end": 6510, "loc": { "start": { "line": 144, @@ -12645,8 +12645,8 @@ "binop": null }, "value": "document", - "start": 6510, - "end": 6518, + "start": 6511, + "end": 6519, "loc": { "start": { "line": 144, @@ -12671,8 +12671,8 @@ "binop": null, "updateContext": null }, - "start": 6518, - "end": 6519, + "start": 6519, + "end": 6520, "loc": { "start": { "line": 144, @@ -12697,8 +12697,8 @@ "binop": null }, "value": "body", - "start": 6519, - "end": 6523, + "start": 6520, + "end": 6524, "loc": { "start": { "line": 144, @@ -12723,8 +12723,8 @@ "binop": null, "updateContext": null }, - "start": 6523, - "end": 6524, + "start": 6524, + "end": 6525, "loc": { "start": { "line": 144, @@ -12751,8 +12751,8 @@ "updateContext": null }, "value": "this", - "start": 6534, - "end": 6538, + "start": 6535, + "end": 6539, "loc": { "start": { "line": 146, @@ -12777,8 +12777,8 @@ "binop": null, "updateContext": null }, - "start": 6538, - "end": 6539, + "start": 6539, + "end": 6540, "loc": { "start": { "line": 146, @@ -12803,8 +12803,8 @@ "binop": null }, "value": "_control", - "start": 6539, - "end": 6547, + "start": 6540, + "end": 6548, "loc": { "start": { "line": 146, @@ -12830,8 +12830,8 @@ "updateContext": null }, "value": "=", - "start": 6548, - "end": 6549, + "start": 6549, + "end": 6550, "loc": { "start": { "line": 146, @@ -12858,8 +12858,8 @@ "updateContext": null }, "value": "new", - "start": 6550, - "end": 6553, + "start": 6551, + "end": 6554, "loc": { "start": { "line": 146, @@ -12884,8 +12884,8 @@ "binop": null }, "value": "AngleMeasurementsControl", - "start": 6554, - "end": 6578, + "start": 6555, + "end": 6579, "loc": { "start": { "line": 146, @@ -12909,8 +12909,8 @@ "postfix": false, "binop": null }, - "start": 6578, - "end": 6579, + "start": 6579, + "end": 6580, "loc": { "start": { "line": 146, @@ -12937,8 +12937,8 @@ "updateContext": null }, "value": "this", - "start": 6579, - "end": 6583, + "start": 6580, + "end": 6584, "loc": { "start": { "line": 146, @@ -12962,8 +12962,8 @@ "postfix": false, "binop": null }, - "start": 6583, - "end": 6584, + "start": 6584, + "end": 6585, "loc": { "start": { "line": 146, @@ -12988,8 +12988,8 @@ "binop": null, "updateContext": null }, - "start": 6584, - "end": 6585, + "start": 6585, + "end": 6586, "loc": { "start": { "line": 146, @@ -13016,8 +13016,8 @@ "updateContext": null }, "value": "this", - "start": 6595, - "end": 6599, + "start": 6596, + "end": 6600, "loc": { "start": { "line": 148, @@ -13042,8 +13042,8 @@ "binop": null, "updateContext": null }, - "start": 6599, - "end": 6600, + "start": 6600, + "end": 6601, "loc": { "start": { "line": 148, @@ -13068,8 +13068,8 @@ "binop": null }, "value": "_measurements", - "start": 6600, - "end": 6613, + "start": 6601, + "end": 6614, "loc": { "start": { "line": 148, @@ -13095,8 +13095,8 @@ "updateContext": null }, "value": "=", - "start": 6614, - "end": 6615, + "start": 6615, + "end": 6616, "loc": { "start": { "line": 148, @@ -13120,8 +13120,8 @@ "postfix": false, "binop": null }, - "start": 6616, - "end": 6617, + "start": 6617, + "end": 6618, "loc": { "start": { "line": 148, @@ -13145,8 +13145,8 @@ "postfix": false, "binop": null }, - "start": 6617, - "end": 6618, + "start": 6618, + "end": 6619, "loc": { "start": { "line": 148, @@ -13171,8 +13171,8 @@ "binop": null, "updateContext": null }, - "start": 6618, - "end": 6619, + "start": 6619, + "end": 6620, "loc": { "start": { "line": 148, @@ -13196,8 +13196,8 @@ "postfix": false, "binop": null }, - "start": 6624, - "end": 6625, + "start": 6625, + "end": 6626, "loc": { "start": { "line": 149, @@ -13212,8 +13212,8 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 6631, - "end": 6658, + "start": 6632, + "end": 6659, "loc": { "start": { "line": 151, @@ -13238,8 +13238,8 @@ "binop": null }, "value": "send", - "start": 6663, - "end": 6667, + "start": 6664, + "end": 6668, "loc": { "start": { "line": 154, @@ -13263,8 +13263,8 @@ "postfix": false, "binop": null }, - "start": 6667, - "end": 6668, + "start": 6668, + "end": 6669, "loc": { "start": { "line": 154, @@ -13289,8 +13289,8 @@ "binop": null }, "value": "name", - "start": 6668, - "end": 6672, + "start": 6669, + "end": 6673, "loc": { "start": { "line": 154, @@ -13315,8 +13315,8 @@ "binop": null, "updateContext": null }, - "start": 6672, - "end": 6673, + "start": 6673, + "end": 6674, "loc": { "start": { "line": 154, @@ -13341,8 +13341,8 @@ "binop": null }, "value": "value", - "start": 6674, - "end": 6679, + "start": 6675, + "end": 6680, "loc": { "start": { "line": 154, @@ -13366,8 +13366,8 @@ "postfix": false, "binop": null }, - "start": 6679, - "end": 6680, + "start": 6680, + "end": 6681, "loc": { "start": { "line": 154, @@ -13391,8 +13391,8 @@ "postfix": false, "binop": null }, - "start": 6681, - "end": 6682, + "start": 6682, + "end": 6683, "loc": { "start": { "line": 154, @@ -13416,8 +13416,8 @@ "postfix": false, "binop": null }, - "start": 6688, - "end": 6689, + "start": 6689, + "end": 6690, "loc": { "start": { "line": 156, @@ -13432,8 +13432,8 @@ { "type": "CommentBlock", "value": "*\n * Gets the {@link AngleMeasurementsControl}, which creates {@link AngleMeasurement}s from user input.\n *\n * @type {AngleMeasurementsControl}\n ", - "start": 6695, - "end": 6860, + "start": 6696, + "end": 6861, "loc": { "start": { "line": 158, @@ -13458,8 +13458,8 @@ "binop": null }, "value": "get", - "start": 6865, - "end": 6868, + "start": 6866, + "end": 6869, "loc": { "start": { "line": 163, @@ -13484,8 +13484,8 @@ "binop": null }, "value": "control", - "start": 6869, - "end": 6876, + "start": 6870, + "end": 6877, "loc": { "start": { "line": 163, @@ -13509,8 +13509,8 @@ "postfix": false, "binop": null }, - "start": 6876, - "end": 6877, + "start": 6877, + "end": 6878, "loc": { "start": { "line": 163, @@ -13534,8 +13534,8 @@ "postfix": false, "binop": null }, - "start": 6877, - "end": 6878, + "start": 6878, + "end": 6879, "loc": { "start": { "line": 163, @@ -13559,8 +13559,8 @@ "postfix": false, "binop": null }, - "start": 6879, - "end": 6880, + "start": 6880, + "end": 6881, "loc": { "start": { "line": 163, @@ -13587,8 +13587,8 @@ "updateContext": null }, "value": "return", - "start": 6889, - "end": 6895, + "start": 6890, + "end": 6896, "loc": { "start": { "line": 164, @@ -13615,8 +13615,8 @@ "updateContext": null }, "value": "this", - "start": 6896, - "end": 6900, + "start": 6897, + "end": 6901, "loc": { "start": { "line": 164, @@ -13641,8 +13641,8 @@ "binop": null, "updateContext": null }, - "start": 6900, - "end": 6901, + "start": 6901, + "end": 6902, "loc": { "start": { "line": 164, @@ -13667,8 +13667,8 @@ "binop": null }, "value": "_control", - "start": 6901, - "end": 6909, + "start": 6902, + "end": 6910, "loc": { "start": { "line": 164, @@ -13693,8 +13693,8 @@ "binop": null, "updateContext": null }, - "start": 6909, - "end": 6910, + "start": 6910, + "end": 6911, "loc": { "start": { "line": 164, @@ -13718,8 +13718,8 @@ "postfix": false, "binop": null }, - "start": 6915, - "end": 6916, + "start": 6916, + "end": 6917, "loc": { "start": { "line": 165, @@ -13734,8 +13734,8 @@ { "type": "CommentBlock", "value": "*\n * Gets the existing {@link AngleMeasurement}s, each mapped to its {@link AngleMeasurement#id}.\n *\n * @type {{String:AngleMeasurement}}\n ", - "start": 6922, - "end": 7081, + "start": 6923, + "end": 7082, "loc": { "start": { "line": 167, @@ -13760,8 +13760,8 @@ "binop": null }, "value": "get", - "start": 7086, - "end": 7089, + "start": 7087, + "end": 7090, "loc": { "start": { "line": 172, @@ -13786,8 +13786,8 @@ "binop": null }, "value": "measurements", - "start": 7090, - "end": 7102, + "start": 7091, + "end": 7103, "loc": { "start": { "line": 172, @@ -13811,8 +13811,8 @@ "postfix": false, "binop": null }, - "start": 7102, - "end": 7103, + "start": 7103, + "end": 7104, "loc": { "start": { "line": 172, @@ -13836,8 +13836,8 @@ "postfix": false, "binop": null }, - "start": 7103, - "end": 7104, + "start": 7104, + "end": 7105, "loc": { "start": { "line": 172, @@ -13861,8 +13861,8 @@ "postfix": false, "binop": null }, - "start": 7105, - "end": 7106, + "start": 7106, + "end": 7107, "loc": { "start": { "line": 172, @@ -13889,8 +13889,8 @@ "updateContext": null }, "value": "return", - "start": 7115, - "end": 7121, + "start": 7116, + "end": 7122, "loc": { "start": { "line": 173, @@ -13917,8 +13917,8 @@ "updateContext": null }, "value": "this", - "start": 7122, - "end": 7126, + "start": 7123, + "end": 7127, "loc": { "start": { "line": 173, @@ -13943,8 +13943,8 @@ "binop": null, "updateContext": null }, - "start": 7126, - "end": 7127, + "start": 7127, + "end": 7128, "loc": { "start": { "line": 173, @@ -13969,8 +13969,8 @@ "binop": null }, "value": "_measurements", - "start": 7127, - "end": 7140, + "start": 7128, + "end": 7141, "loc": { "start": { "line": 173, @@ -13995,8 +13995,8 @@ "binop": null, "updateContext": null }, - "start": 7140, - "end": 7141, + "start": 7141, + "end": 7142, "loc": { "start": { "line": 173, @@ -14020,8 +14020,8 @@ "postfix": false, "binop": null }, - "start": 7146, - "end": 7147, + "start": 7147, + "end": 7148, "loc": { "start": { "line": 174, @@ -14036,8 +14036,8 @@ { "type": "CommentBlock", "value": "*\n * Creates an {@link AngleMeasurement}.\n *\n * The AngleMeasurement is then registered by {@link AngleMeasurement#id} in {@link AngleMeasurementsPlugin#measurements}.\n *\n * @param {Object} params {@link AngleMeasurement} configuration.\n * @param {String} params.id Unique ID to assign to {@link AngleMeasurement#id}. The AngleMeasurement will be registered by this in {@link AngleMeasurementsPlugin#measurements} and {@link Scene.components}. Must be unique among all components in the {@link Viewer}.\n * @param {Number[]} params.origin.worldPos Origin World-space 3D position.\n * @param {Entity} params.origin.entity Origin Entity.\n * @param {Number[]} params.corner.worldPos Corner World-space 3D position.\n * @param {Entity} params.corner.entity Corner Entity.\n * @param {Number[]} params.target.worldPos Target World-space 3D position.\n * @param {Entity} params.target.entity Target Entity.\n * @param {Boolean} [params.visible=true] Whether to initially show the {@link AngleMeasurement}.\n * @returns {AngleMeasurement} The new {@link AngleMeasurement}.\n ", - "start": 7153, - "end": 8277, + "start": 7154, + "end": 8278, "loc": { "start": { "line": 176, @@ -14062,8 +14062,8 @@ "binop": null }, "value": "createMeasurement", - "start": 8282, - "end": 8299, + "start": 8283, + "end": 8300, "loc": { "start": { "line": 192, @@ -14087,8 +14087,8 @@ "postfix": false, "binop": null }, - "start": 8299, - "end": 8300, + "start": 8300, + "end": 8301, "loc": { "start": { "line": 192, @@ -14113,8 +14113,8 @@ "binop": null }, "value": "params", - "start": 8300, - "end": 8306, + "start": 8301, + "end": 8307, "loc": { "start": { "line": 192, @@ -14140,8 +14140,8 @@ "updateContext": null }, "value": "=", - "start": 8307, - "end": 8308, + "start": 8308, + "end": 8309, "loc": { "start": { "line": 192, @@ -14165,8 +14165,8 @@ "postfix": false, "binop": null }, - "start": 8309, - "end": 8310, + "start": 8310, + "end": 8311, "loc": { "start": { "line": 192, @@ -14190,8 +14190,8 @@ "postfix": false, "binop": null }, - "start": 8310, - "end": 8311, + "start": 8311, + "end": 8312, "loc": { "start": { "line": 192, @@ -14215,8 +14215,8 @@ "postfix": false, "binop": null }, - "start": 8311, - "end": 8312, + "start": 8312, + "end": 8313, "loc": { "start": { "line": 192, @@ -14240,8 +14240,8 @@ "postfix": false, "binop": null }, - "start": 8313, - "end": 8314, + "start": 8314, + "end": 8315, "loc": { "start": { "line": 192, @@ -14268,8 +14268,8 @@ "updateContext": null }, "value": "if", - "start": 8323, - "end": 8325, + "start": 8324, + "end": 8326, "loc": { "start": { "line": 193, @@ -14293,8 +14293,8 @@ "postfix": false, "binop": null }, - "start": 8326, - "end": 8327, + "start": 8327, + "end": 8328, "loc": { "start": { "line": 193, @@ -14321,8 +14321,8 @@ "updateContext": null }, "value": "this", - "start": 8327, - "end": 8331, + "start": 8328, + "end": 8332, "loc": { "start": { "line": 193, @@ -14347,8 +14347,8 @@ "binop": null, "updateContext": null }, - "start": 8331, - "end": 8332, + "start": 8332, + "end": 8333, "loc": { "start": { "line": 193, @@ -14373,8 +14373,8 @@ "binop": null }, "value": "viewer", - "start": 8332, - "end": 8338, + "start": 8333, + "end": 8339, "loc": { "start": { "line": 193, @@ -14399,8 +14399,8 @@ "binop": null, "updateContext": null }, - "start": 8338, - "end": 8339, + "start": 8339, + "end": 8340, "loc": { "start": { "line": 193, @@ -14425,8 +14425,8 @@ "binop": null }, "value": "scene", - "start": 8339, - "end": 8344, + "start": 8340, + "end": 8345, "loc": { "start": { "line": 193, @@ -14451,8 +14451,8 @@ "binop": null, "updateContext": null }, - "start": 8344, - "end": 8345, + "start": 8345, + "end": 8346, "loc": { "start": { "line": 193, @@ -14477,8 +14477,8 @@ "binop": null }, "value": "components", - "start": 8345, - "end": 8355, + "start": 8346, + "end": 8356, "loc": { "start": { "line": 193, @@ -14503,8 +14503,8 @@ "binop": null, "updateContext": null }, - "start": 8355, - "end": 8356, + "start": 8356, + "end": 8357, "loc": { "start": { "line": 193, @@ -14529,8 +14529,8 @@ "binop": null }, "value": "params", - "start": 8356, - "end": 8362, + "start": 8357, + "end": 8363, "loc": { "start": { "line": 193, @@ -14555,8 +14555,8 @@ "binop": null, "updateContext": null }, - "start": 8362, - "end": 8363, + "start": 8363, + "end": 8364, "loc": { "start": { "line": 193, @@ -14581,8 +14581,8 @@ "binop": null }, "value": "id", - "start": 8363, - "end": 8365, + "start": 8364, + "end": 8366, "loc": { "start": { "line": 193, @@ -14607,8 +14607,8 @@ "binop": null, "updateContext": null }, - "start": 8365, - "end": 8366, + "start": 8366, + "end": 8367, "loc": { "start": { "line": 193, @@ -14632,8 +14632,8 @@ "postfix": false, "binop": null }, - "start": 8366, - "end": 8367, + "start": 8367, + "end": 8368, "loc": { "start": { "line": 193, @@ -14657,8 +14657,8 @@ "postfix": false, "binop": null }, - "start": 8368, - "end": 8369, + "start": 8369, + "end": 8370, "loc": { "start": { "line": 193, @@ -14685,8 +14685,8 @@ "updateContext": null }, "value": "this", - "start": 8382, - "end": 8386, + "start": 8383, + "end": 8387, "loc": { "start": { "line": 194, @@ -14711,8 +14711,8 @@ "binop": null, "updateContext": null }, - "start": 8386, - "end": 8387, + "start": 8387, + "end": 8388, "loc": { "start": { "line": 194, @@ -14737,8 +14737,8 @@ "binop": null }, "value": "error", - "start": 8387, - "end": 8392, + "start": 8388, + "end": 8393, "loc": { "start": { "line": 194, @@ -14762,8 +14762,8 @@ "postfix": false, "binop": null }, - "start": 8392, - "end": 8393, + "start": 8393, + "end": 8394, "loc": { "start": { "line": 194, @@ -14789,8 +14789,8 @@ "updateContext": null }, "value": "Viewer scene component with this ID already exists: ", - "start": 8393, - "end": 8447, + "start": 8394, + "end": 8448, "loc": { "start": { "line": 194, @@ -14816,8 +14816,8 @@ "updateContext": null }, "value": "+", - "start": 8448, - "end": 8449, + "start": 8449, + "end": 8450, "loc": { "start": { "line": 194, @@ -14842,8 +14842,8 @@ "binop": null }, "value": "params", - "start": 8450, - "end": 8456, + "start": 8451, + "end": 8457, "loc": { "start": { "line": 194, @@ -14868,8 +14868,8 @@ "binop": null, "updateContext": null }, - "start": 8456, - "end": 8457, + "start": 8457, + "end": 8458, "loc": { "start": { "line": 194, @@ -14894,8 +14894,8 @@ "binop": null }, "value": "id", - "start": 8457, - "end": 8459, + "start": 8458, + "end": 8460, "loc": { "start": { "line": 194, @@ -14919,8 +14919,8 @@ "postfix": false, "binop": null }, - "start": 8459, - "end": 8460, + "start": 8460, + "end": 8461, "loc": { "start": { "line": 194, @@ -14945,8 +14945,8 @@ "binop": null, "updateContext": null }, - "start": 8460, - "end": 8461, + "start": 8461, + "end": 8462, "loc": { "start": { "line": 194, @@ -14973,8 +14973,8 @@ "updateContext": null }, "value": "delete", - "start": 8474, - "end": 8480, + "start": 8475, + "end": 8481, "loc": { "start": { "line": 195, @@ -14999,8 +14999,8 @@ "binop": null }, "value": "params", - "start": 8481, - "end": 8487, + "start": 8482, + "end": 8488, "loc": { "start": { "line": 195, @@ -15025,8 +15025,8 @@ "binop": null, "updateContext": null }, - "start": 8487, - "end": 8488, + "start": 8488, + "end": 8489, "loc": { "start": { "line": 195, @@ -15051,8 +15051,8 @@ "binop": null }, "value": "id", - "start": 8488, - "end": 8490, + "start": 8489, + "end": 8491, "loc": { "start": { "line": 195, @@ -15077,8 +15077,8 @@ "binop": null, "updateContext": null }, - "start": 8490, - "end": 8491, + "start": 8491, + "end": 8492, "loc": { "start": { "line": 195, @@ -15102,8 +15102,8 @@ "postfix": false, "binop": null }, - "start": 8500, - "end": 8501, + "start": 8501, + "end": 8502, "loc": { "start": { "line": 196, @@ -15130,8 +15130,8 @@ "updateContext": null }, "value": "const", - "start": 8510, - "end": 8515, + "start": 8511, + "end": 8516, "loc": { "start": { "line": 197, @@ -15156,8 +15156,8 @@ "binop": null }, "value": "origin", - "start": 8516, - "end": 8522, + "start": 8517, + "end": 8523, "loc": { "start": { "line": 197, @@ -15183,8 +15183,8 @@ "updateContext": null }, "value": "=", - "start": 8523, - "end": 8524, + "start": 8524, + "end": 8525, "loc": { "start": { "line": 197, @@ -15209,8 +15209,8 @@ "binop": null }, "value": "params", - "start": 8525, - "end": 8531, + "start": 8526, + "end": 8532, "loc": { "start": { "line": 197, @@ -15235,8 +15235,8 @@ "binop": null, "updateContext": null }, - "start": 8531, - "end": 8532, + "start": 8532, + "end": 8533, "loc": { "start": { "line": 197, @@ -15261,8 +15261,8 @@ "binop": null }, "value": "origin", - "start": 8532, - "end": 8538, + "start": 8533, + "end": 8539, "loc": { "start": { "line": 197, @@ -15287,8 +15287,8 @@ "binop": null, "updateContext": null }, - "start": 8538, - "end": 8539, + "start": 8539, + "end": 8540, "loc": { "start": { "line": 197, @@ -15315,8 +15315,8 @@ "updateContext": null }, "value": "const", - "start": 8548, - "end": 8553, + "start": 8549, + "end": 8554, "loc": { "start": { "line": 198, @@ -15341,8 +15341,8 @@ "binop": null }, "value": "corner", - "start": 8554, - "end": 8560, + "start": 8555, + "end": 8561, "loc": { "start": { "line": 198, @@ -15368,8 +15368,8 @@ "updateContext": null }, "value": "=", - "start": 8561, - "end": 8562, + "start": 8562, + "end": 8563, "loc": { "start": { "line": 198, @@ -15394,8 +15394,8 @@ "binop": null }, "value": "params", - "start": 8563, - "end": 8569, + "start": 8564, + "end": 8570, "loc": { "start": { "line": 198, @@ -15420,8 +15420,8 @@ "binop": null, "updateContext": null }, - "start": 8569, - "end": 8570, + "start": 8570, + "end": 8571, "loc": { "start": { "line": 198, @@ -15446,8 +15446,8 @@ "binop": null }, "value": "corner", - "start": 8570, - "end": 8576, + "start": 8571, + "end": 8577, "loc": { "start": { "line": 198, @@ -15472,8 +15472,8 @@ "binop": null, "updateContext": null }, - "start": 8576, - "end": 8577, + "start": 8577, + "end": 8578, "loc": { "start": { "line": 198, @@ -15500,8 +15500,8 @@ "updateContext": null }, "value": "const", - "start": 8586, - "end": 8591, + "start": 8587, + "end": 8592, "loc": { "start": { "line": 199, @@ -15526,8 +15526,8 @@ "binop": null }, "value": "target", - "start": 8592, - "end": 8598, + "start": 8593, + "end": 8599, "loc": { "start": { "line": 199, @@ -15553,8 +15553,8 @@ "updateContext": null }, "value": "=", - "start": 8599, - "end": 8600, + "start": 8600, + "end": 8601, "loc": { "start": { "line": 199, @@ -15579,8 +15579,8 @@ "binop": null }, "value": "params", - "start": 8601, - "end": 8607, + "start": 8602, + "end": 8608, "loc": { "start": { "line": 199, @@ -15605,8 +15605,8 @@ "binop": null, "updateContext": null }, - "start": 8607, - "end": 8608, + "start": 8608, + "end": 8609, "loc": { "start": { "line": 199, @@ -15631,8 +15631,8 @@ "binop": null }, "value": "target", - "start": 8608, - "end": 8614, + "start": 8609, + "end": 8615, "loc": { "start": { "line": 199, @@ -15657,8 +15657,8 @@ "binop": null, "updateContext": null }, - "start": 8614, - "end": 8615, + "start": 8615, + "end": 8616, "loc": { "start": { "line": 199, @@ -15685,8 +15685,8 @@ "updateContext": null }, "value": "const", - "start": 8624, - "end": 8629, + "start": 8625, + "end": 8630, "loc": { "start": { "line": 200, @@ -15711,8 +15711,8 @@ "binop": null }, "value": "measurement", - "start": 8630, - "end": 8641, + "start": 8631, + "end": 8642, "loc": { "start": { "line": 200, @@ -15738,8 +15738,8 @@ "updateContext": null }, "value": "=", - "start": 8642, - "end": 8643, + "start": 8643, + "end": 8644, "loc": { "start": { "line": 200, @@ -15766,8 +15766,8 @@ "updateContext": null }, "value": "new", - "start": 8644, - "end": 8647, + "start": 8645, + "end": 8648, "loc": { "start": { "line": 200, @@ -15792,8 +15792,8 @@ "binop": null }, "value": "AngleMeasurement", - "start": 8648, - "end": 8664, + "start": 8649, + "end": 8665, "loc": { "start": { "line": 200, @@ -15817,8 +15817,8 @@ "postfix": false, "binop": null }, - "start": 8664, - "end": 8665, + "start": 8665, + "end": 8666, "loc": { "start": { "line": 200, @@ -15845,8 +15845,8 @@ "updateContext": null }, "value": "this", - "start": 8665, - "end": 8669, + "start": 8666, + "end": 8670, "loc": { "start": { "line": 200, @@ -15871,8 +15871,8 @@ "binop": null, "updateContext": null }, - "start": 8669, - "end": 8670, + "start": 8670, + "end": 8671, "loc": { "start": { "line": 200, @@ -15896,8 +15896,8 @@ "postfix": false, "binop": null }, - "start": 8671, - "end": 8672, + "start": 8672, + "end": 8673, "loc": { "start": { "line": 200, @@ -15922,8 +15922,8 @@ "binop": null }, "value": "id", - "start": 8685, - "end": 8687, + "start": 8686, + "end": 8688, "loc": { "start": { "line": 201, @@ -15948,8 +15948,8 @@ "binop": null, "updateContext": null }, - "start": 8687, - "end": 8688, + "start": 8688, + "end": 8689, "loc": { "start": { "line": 201, @@ -15974,8 +15974,8 @@ "binop": null }, "value": "params", - "start": 8689, - "end": 8695, + "start": 8690, + "end": 8696, "loc": { "start": { "line": 201, @@ -16000,8 +16000,8 @@ "binop": null, "updateContext": null }, - "start": 8695, - "end": 8696, + "start": 8696, + "end": 8697, "loc": { "start": { "line": 201, @@ -16026,8 +16026,8 @@ "binop": null }, "value": "id", - "start": 8696, - "end": 8698, + "start": 8697, + "end": 8699, "loc": { "start": { "line": 201, @@ -16052,8 +16052,8 @@ "binop": null, "updateContext": null }, - "start": 8698, - "end": 8699, + "start": 8699, + "end": 8700, "loc": { "start": { "line": 201, @@ -16078,8 +16078,8 @@ "binop": null }, "value": "plugin", - "start": 8712, - "end": 8718, + "start": 8713, + "end": 8719, "loc": { "start": { "line": 202, @@ -16104,8 +16104,8 @@ "binop": null, "updateContext": null }, - "start": 8718, - "end": 8719, + "start": 8719, + "end": 8720, "loc": { "start": { "line": 202, @@ -16132,8 +16132,8 @@ "updateContext": null }, "value": "this", - "start": 8720, - "end": 8724, + "start": 8721, + "end": 8725, "loc": { "start": { "line": 202, @@ -16158,8 +16158,8 @@ "binop": null, "updateContext": null }, - "start": 8724, - "end": 8725, + "start": 8725, + "end": 8726, "loc": { "start": { "line": 202, @@ -16184,8 +16184,8 @@ "binop": null }, "value": "container", - "start": 8738, - "end": 8747, + "start": 8739, + "end": 8748, "loc": { "start": { "line": 203, @@ -16210,8 +16210,8 @@ "binop": null, "updateContext": null }, - "start": 8747, - "end": 8748, + "start": 8748, + "end": 8749, "loc": { "start": { "line": 203, @@ -16238,8 +16238,8 @@ "updateContext": null }, "value": "this", - "start": 8749, - "end": 8753, + "start": 8750, + "end": 8754, "loc": { "start": { "line": 203, @@ -16264,8 +16264,8 @@ "binop": null, "updateContext": null }, - "start": 8753, - "end": 8754, + "start": 8754, + "end": 8755, "loc": { "start": { "line": 203, @@ -16290,8 +16290,8 @@ "binop": null }, "value": "_container", - "start": 8754, - "end": 8764, + "start": 8755, + "end": 8765, "loc": { "start": { "line": 203, @@ -16316,8 +16316,8 @@ "binop": null, "updateContext": null }, - "start": 8764, - "end": 8765, + "start": 8765, + "end": 8766, "loc": { "start": { "line": 203, @@ -16342,8 +16342,8 @@ "binop": null }, "value": "origin", - "start": 8778, - "end": 8784, + "start": 8779, + "end": 8785, "loc": { "start": { "line": 204, @@ -16368,8 +16368,8 @@ "binop": null, "updateContext": null }, - "start": 8784, - "end": 8785, + "start": 8785, + "end": 8786, "loc": { "start": { "line": 204, @@ -16393,8 +16393,8 @@ "postfix": false, "binop": null }, - "start": 8786, - "end": 8787, + "start": 8787, + "end": 8788, "loc": { "start": { "line": 204, @@ -16419,8 +16419,8 @@ "binop": null }, "value": "entity", - "start": 8804, - "end": 8810, + "start": 8805, + "end": 8811, "loc": { "start": { "line": 205, @@ -16445,8 +16445,8 @@ "binop": null, "updateContext": null }, - "start": 8810, - "end": 8811, + "start": 8811, + "end": 8812, "loc": { "start": { "line": 205, @@ -16471,8 +16471,8 @@ "binop": null }, "value": "origin", - "start": 8812, - "end": 8818, + "start": 8813, + "end": 8819, "loc": { "start": { "line": 205, @@ -16497,8 +16497,8 @@ "binop": null, "updateContext": null }, - "start": 8818, - "end": 8819, + "start": 8819, + "end": 8820, "loc": { "start": { "line": 205, @@ -16523,8 +16523,8 @@ "binop": null }, "value": "entity", - "start": 8819, - "end": 8825, + "start": 8820, + "end": 8826, "loc": { "start": { "line": 205, @@ -16549,8 +16549,8 @@ "binop": null, "updateContext": null }, - "start": 8825, - "end": 8826, + "start": 8826, + "end": 8827, "loc": { "start": { "line": 205, @@ -16575,8 +16575,8 @@ "binop": null }, "value": "worldPos", - "start": 8843, - "end": 8851, + "start": 8844, + "end": 8852, "loc": { "start": { "line": 206, @@ -16601,8 +16601,8 @@ "binop": null, "updateContext": null }, - "start": 8851, - "end": 8852, + "start": 8852, + "end": 8853, "loc": { "start": { "line": 206, @@ -16627,8 +16627,8 @@ "binop": null }, "value": "origin", - "start": 8853, - "end": 8859, + "start": 8854, + "end": 8860, "loc": { "start": { "line": 206, @@ -16653,8 +16653,8 @@ "binop": null, "updateContext": null }, - "start": 8859, - "end": 8860, + "start": 8860, + "end": 8861, "loc": { "start": { "line": 206, @@ -16679,8 +16679,8 @@ "binop": null }, "value": "worldPos", - "start": 8860, - "end": 8868, + "start": 8861, + "end": 8869, "loc": { "start": { "line": 206, @@ -16704,8 +16704,8 @@ "postfix": false, "binop": null }, - "start": 8881, - "end": 8882, + "start": 8882, + "end": 8883, "loc": { "start": { "line": 207, @@ -16730,8 +16730,8 @@ "binop": null, "updateContext": null }, - "start": 8882, - "end": 8883, + "start": 8883, + "end": 8884, "loc": { "start": { "line": 207, @@ -16756,8 +16756,8 @@ "binop": null }, "value": "corner", - "start": 8896, - "end": 8902, + "start": 8897, + "end": 8903, "loc": { "start": { "line": 208, @@ -16782,8 +16782,8 @@ "binop": null, "updateContext": null }, - "start": 8902, - "end": 8903, + "start": 8903, + "end": 8904, "loc": { "start": { "line": 208, @@ -16807,8 +16807,8 @@ "postfix": false, "binop": null }, - "start": 8904, - "end": 8905, + "start": 8905, + "end": 8906, "loc": { "start": { "line": 208, @@ -16833,8 +16833,8 @@ "binop": null }, "value": "entity", - "start": 8922, - "end": 8928, + "start": 8923, + "end": 8929, "loc": { "start": { "line": 209, @@ -16859,8 +16859,8 @@ "binop": null, "updateContext": null }, - "start": 8928, - "end": 8929, + "start": 8929, + "end": 8930, "loc": { "start": { "line": 209, @@ -16885,8 +16885,8 @@ "binop": null }, "value": "corner", - "start": 8930, - "end": 8936, + "start": 8931, + "end": 8937, "loc": { "start": { "line": 209, @@ -16911,8 +16911,8 @@ "binop": null, "updateContext": null }, - "start": 8936, - "end": 8937, + "start": 8937, + "end": 8938, "loc": { "start": { "line": 209, @@ -16937,8 +16937,8 @@ "binop": null }, "value": "entity", - "start": 8937, - "end": 8943, + "start": 8938, + "end": 8944, "loc": { "start": { "line": 209, @@ -16963,8 +16963,8 @@ "binop": null, "updateContext": null }, - "start": 8943, - "end": 8944, + "start": 8944, + "end": 8945, "loc": { "start": { "line": 209, @@ -16989,8 +16989,8 @@ "binop": null }, "value": "worldPos", - "start": 8961, - "end": 8969, + "start": 8962, + "end": 8970, "loc": { "start": { "line": 210, @@ -17015,8 +17015,8 @@ "binop": null, "updateContext": null }, - "start": 8969, - "end": 8970, + "start": 8970, + "end": 8971, "loc": { "start": { "line": 210, @@ -17041,8 +17041,8 @@ "binop": null }, "value": "corner", - "start": 8971, - "end": 8977, + "start": 8972, + "end": 8978, "loc": { "start": { "line": 210, @@ -17067,8 +17067,8 @@ "binop": null, "updateContext": null }, - "start": 8977, - "end": 8978, + "start": 8978, + "end": 8979, "loc": { "start": { "line": 210, @@ -17093,8 +17093,8 @@ "binop": null }, "value": "worldPos", - "start": 8978, - "end": 8986, + "start": 8979, + "end": 8987, "loc": { "start": { "line": 210, @@ -17118,8 +17118,8 @@ "postfix": false, "binop": null }, - "start": 8999, - "end": 9000, + "start": 9000, + "end": 9001, "loc": { "start": { "line": 211, @@ -17144,8 +17144,8 @@ "binop": null, "updateContext": null }, - "start": 9000, - "end": 9001, + "start": 9001, + "end": 9002, "loc": { "start": { "line": 211, @@ -17170,8 +17170,8 @@ "binop": null }, "value": "target", - "start": 9014, - "end": 9020, + "start": 9015, + "end": 9021, "loc": { "start": { "line": 212, @@ -17196,8 +17196,8 @@ "binop": null, "updateContext": null }, - "start": 9020, - "end": 9021, + "start": 9021, + "end": 9022, "loc": { "start": { "line": 212, @@ -17221,8 +17221,8 @@ "postfix": false, "binop": null }, - "start": 9022, - "end": 9023, + "start": 9023, + "end": 9024, "loc": { "start": { "line": 212, @@ -17247,8 +17247,8 @@ "binop": null }, "value": "entity", - "start": 9040, - "end": 9046, + "start": 9041, + "end": 9047, "loc": { "start": { "line": 213, @@ -17273,8 +17273,8 @@ "binop": null, "updateContext": null }, - "start": 9046, - "end": 9047, + "start": 9047, + "end": 9048, "loc": { "start": { "line": 213, @@ -17299,8 +17299,8 @@ "binop": null }, "value": "target", - "start": 9048, - "end": 9054, + "start": 9049, + "end": 9055, "loc": { "start": { "line": 213, @@ -17325,8 +17325,8 @@ "binop": null, "updateContext": null }, - "start": 9054, - "end": 9055, + "start": 9055, + "end": 9056, "loc": { "start": { "line": 213, @@ -17351,8 +17351,8 @@ "binop": null }, "value": "entity", - "start": 9055, - "end": 9061, + "start": 9056, + "end": 9062, "loc": { "start": { "line": 213, @@ -17377,8 +17377,8 @@ "binop": null, "updateContext": null }, - "start": 9061, - "end": 9062, + "start": 9062, + "end": 9063, "loc": { "start": { "line": 213, @@ -17403,8 +17403,8 @@ "binop": null }, "value": "worldPos", - "start": 9079, - "end": 9087, + "start": 9080, + "end": 9088, "loc": { "start": { "line": 214, @@ -17429,8 +17429,8 @@ "binop": null, "updateContext": null }, - "start": 9087, - "end": 9088, + "start": 9088, + "end": 9089, "loc": { "start": { "line": 214, @@ -17455,8 +17455,8 @@ "binop": null }, "value": "target", - "start": 9089, - "end": 9095, + "start": 9090, + "end": 9096, "loc": { "start": { "line": 214, @@ -17481,8 +17481,8 @@ "binop": null, "updateContext": null }, - "start": 9095, - "end": 9096, + "start": 9096, + "end": 9097, "loc": { "start": { "line": 214, @@ -17507,8 +17507,8 @@ "binop": null }, "value": "worldPos", - "start": 9096, - "end": 9104, + "start": 9097, + "end": 9105, "loc": { "start": { "line": 214, @@ -17532,8 +17532,8 @@ "postfix": false, "binop": null }, - "start": 9117, - "end": 9118, + "start": 9118, + "end": 9119, "loc": { "start": { "line": 215, @@ -17558,8 +17558,8 @@ "binop": null, "updateContext": null }, - "start": 9118, - "end": 9119, + "start": 9119, + "end": 9120, "loc": { "start": { "line": 215, @@ -17584,8 +17584,8 @@ "binop": null }, "value": "visible", - "start": 9133, - "end": 9140, + "start": 9134, + "end": 9141, "loc": { "start": { "line": 217, @@ -17610,8 +17610,8 @@ "binop": null, "updateContext": null }, - "start": 9140, - "end": 9141, + "start": 9141, + "end": 9142, "loc": { "start": { "line": 217, @@ -17636,8 +17636,8 @@ "binop": null }, "value": "params", - "start": 9142, - "end": 9148, + "start": 9143, + "end": 9149, "loc": { "start": { "line": 217, @@ -17662,8 +17662,8 @@ "binop": null, "updateContext": null }, - "start": 9148, - "end": 9149, + "start": 9149, + "end": 9150, "loc": { "start": { "line": 217, @@ -17688,8 +17688,8 @@ "binop": null }, "value": "visible", - "start": 9149, - "end": 9156, + "start": 9150, + "end": 9157, "loc": { "start": { "line": 217, @@ -17714,8 +17714,8 @@ "binop": null, "updateContext": null }, - "start": 9156, - "end": 9157, + "start": 9157, + "end": 9158, "loc": { "start": { "line": 217, @@ -17740,8 +17740,8 @@ "binop": null }, "value": "originVisible", - "start": 9170, - "end": 9183, + "start": 9171, + "end": 9184, "loc": { "start": { "line": 218, @@ -17766,8 +17766,8 @@ "binop": null, "updateContext": null }, - "start": 9183, - "end": 9184, + "start": 9184, + "end": 9185, "loc": { "start": { "line": 218, @@ -17794,8 +17794,8 @@ "updateContext": null }, "value": "true", - "start": 9185, - "end": 9189, + "start": 9186, + "end": 9190, "loc": { "start": { "line": 218, @@ -17820,8 +17820,8 @@ "binop": null, "updateContext": null }, - "start": 9189, - "end": 9190, + "start": 9190, + "end": 9191, "loc": { "start": { "line": 218, @@ -17846,8 +17846,8 @@ "binop": null }, "value": "originWireVisible", - "start": 9203, - "end": 9220, + "start": 9204, + "end": 9221, "loc": { "start": { "line": 219, @@ -17872,8 +17872,8 @@ "binop": null, "updateContext": null }, - "start": 9220, - "end": 9221, + "start": 9221, + "end": 9222, "loc": { "start": { "line": 219, @@ -17900,8 +17900,8 @@ "updateContext": null }, "value": "true", - "start": 9222, - "end": 9226, + "start": 9223, + "end": 9227, "loc": { "start": { "line": 219, @@ -17926,8 +17926,8 @@ "binop": null, "updateContext": null }, - "start": 9226, - "end": 9227, + "start": 9227, + "end": 9228, "loc": { "start": { "line": 219, @@ -17952,8 +17952,8 @@ "binop": null }, "value": "cornerVisible", - "start": 9240, - "end": 9253, + "start": 9241, + "end": 9254, "loc": { "start": { "line": 220, @@ -17978,8 +17978,8 @@ "binop": null, "updateContext": null }, - "start": 9253, - "end": 9254, + "start": 9254, + "end": 9255, "loc": { "start": { "line": 220, @@ -18006,8 +18006,8 @@ "updateContext": null }, "value": "true", - "start": 9255, - "end": 9259, + "start": 9256, + "end": 9260, "loc": { "start": { "line": 220, @@ -18032,8 +18032,8 @@ "binop": null, "updateContext": null }, - "start": 9259, - "end": 9260, + "start": 9260, + "end": 9261, "loc": { "start": { "line": 220, @@ -18058,8 +18058,8 @@ "binop": null }, "value": "targetWireVisible", - "start": 9273, - "end": 9290, + "start": 9274, + "end": 9291, "loc": { "start": { "line": 221, @@ -18084,8 +18084,8 @@ "binop": null, "updateContext": null }, - "start": 9290, - "end": 9291, + "start": 9291, + "end": 9292, "loc": { "start": { "line": 221, @@ -18112,8 +18112,8 @@ "updateContext": null }, "value": "true", - "start": 9292, - "end": 9296, + "start": 9293, + "end": 9297, "loc": { "start": { "line": 221, @@ -18138,8 +18138,8 @@ "binop": null, "updateContext": null }, - "start": 9296, - "end": 9297, + "start": 9297, + "end": 9298, "loc": { "start": { "line": 221, @@ -18164,8 +18164,8 @@ "binop": null }, "value": "targetVisible", - "start": 9310, - "end": 9323, + "start": 9311, + "end": 9324, "loc": { "start": { "line": 222, @@ -18190,8 +18190,8 @@ "binop": null, "updateContext": null }, - "start": 9323, - "end": 9324, + "start": 9324, + "end": 9325, "loc": { "start": { "line": 222, @@ -18218,8 +18218,8 @@ "updateContext": null }, "value": "true", - "start": 9325, - "end": 9329, + "start": 9326, + "end": 9330, "loc": { "start": { "line": 222, @@ -18244,8 +18244,8 @@ "binop": null, "updateContext": null }, - "start": 9329, - "end": 9330, + "start": 9330, + "end": 9331, "loc": { "start": { "line": 222, @@ -18269,8 +18269,8 @@ "postfix": false, "binop": null }, - "start": 9339, - "end": 9340, + "start": 9340, + "end": 9341, "loc": { "start": { "line": 223, @@ -18294,8 +18294,8 @@ "postfix": false, "binop": null }, - "start": 9340, - "end": 9341, + "start": 9341, + "end": 9342, "loc": { "start": { "line": 223, @@ -18320,8 +18320,8 @@ "binop": null, "updateContext": null }, - "start": 9341, - "end": 9342, + "start": 9342, + "end": 9343, "loc": { "start": { "line": 223, @@ -18348,8 +18348,8 @@ "updateContext": null }, "value": "this", - "start": 9351, - "end": 9355, + "start": 9352, + "end": 9356, "loc": { "start": { "line": 224, @@ -18374,8 +18374,8 @@ "binop": null, "updateContext": null }, - "start": 9355, - "end": 9356, + "start": 9356, + "end": 9357, "loc": { "start": { "line": 224, @@ -18400,8 +18400,8 @@ "binop": null }, "value": "_measurements", - "start": 9356, - "end": 9369, + "start": 9357, + "end": 9370, "loc": { "start": { "line": 224, @@ -18426,8 +18426,8 @@ "binop": null, "updateContext": null }, - "start": 9369, - "end": 9370, + "start": 9370, + "end": 9371, "loc": { "start": { "line": 224, @@ -18452,8 +18452,8 @@ "binop": null }, "value": "measurement", - "start": 9370, - "end": 9381, + "start": 9371, + "end": 9382, "loc": { "start": { "line": 224, @@ -18478,8 +18478,8 @@ "binop": null, "updateContext": null }, - "start": 9381, - "end": 9382, + "start": 9382, + "end": 9383, "loc": { "start": { "line": 224, @@ -18504,8 +18504,8 @@ "binop": null }, "value": "id", - "start": 9382, - "end": 9384, + "start": 9383, + "end": 9385, "loc": { "start": { "line": 224, @@ -18530,8 +18530,8 @@ "binop": null, "updateContext": null }, - "start": 9384, - "end": 9385, + "start": 9385, + "end": 9386, "loc": { "start": { "line": 224, @@ -18557,8 +18557,8 @@ "updateContext": null }, "value": "=", - "start": 9386, - "end": 9387, + "start": 9387, + "end": 9388, "loc": { "start": { "line": 224, @@ -18583,8 +18583,8 @@ "binop": null }, "value": "measurement", - "start": 9388, - "end": 9399, + "start": 9389, + "end": 9400, "loc": { "start": { "line": 224, @@ -18609,8 +18609,8 @@ "binop": null, "updateContext": null }, - "start": 9399, - "end": 9400, + "start": 9400, + "end": 9401, "loc": { "start": { "line": 224, @@ -18635,8 +18635,8 @@ "binop": null }, "value": "measurement", - "start": 9409, - "end": 9420, + "start": 9410, + "end": 9421, "loc": { "start": { "line": 225, @@ -18661,8 +18661,8 @@ "binop": null, "updateContext": null }, - "start": 9420, - "end": 9421, + "start": 9421, + "end": 9422, "loc": { "start": { "line": 225, @@ -18687,8 +18687,8 @@ "binop": null }, "value": "on", - "start": 9421, - "end": 9423, + "start": 9422, + "end": 9424, "loc": { "start": { "line": 225, @@ -18712,8 +18712,8 @@ "postfix": false, "binop": null }, - "start": 9423, - "end": 9424, + "start": 9424, + "end": 9425, "loc": { "start": { "line": 225, @@ -18739,8 +18739,8 @@ "updateContext": null }, "value": "destroyed", - "start": 9424, - "end": 9435, + "start": 9425, + "end": 9436, "loc": { "start": { "line": 225, @@ -18765,8 +18765,8 @@ "binop": null, "updateContext": null }, - "start": 9435, - "end": 9436, + "start": 9436, + "end": 9437, "loc": { "start": { "line": 225, @@ -18790,8 +18790,8 @@ "postfix": false, "binop": null }, - "start": 9437, - "end": 9438, + "start": 9438, + "end": 9439, "loc": { "start": { "line": 225, @@ -18815,8 +18815,8 @@ "postfix": false, "binop": null }, - "start": 9438, - "end": 9439, + "start": 9439, + "end": 9440, "loc": { "start": { "line": 225, @@ -18841,8 +18841,8 @@ "binop": null, "updateContext": null }, - "start": 9440, - "end": 9442, + "start": 9441, + "end": 9443, "loc": { "start": { "line": 225, @@ -18866,8 +18866,8 @@ "postfix": false, "binop": null }, - "start": 9443, - "end": 9444, + "start": 9444, + "end": 9445, "loc": { "start": { "line": 225, @@ -18894,8 +18894,8 @@ "updateContext": null }, "value": "delete", - "start": 9457, - "end": 9463, + "start": 9458, + "end": 9464, "loc": { "start": { "line": 226, @@ -18922,8 +18922,8 @@ "updateContext": null }, "value": "this", - "start": 9464, - "end": 9468, + "start": 9465, + "end": 9469, "loc": { "start": { "line": 226, @@ -18948,8 +18948,8 @@ "binop": null, "updateContext": null }, - "start": 9468, - "end": 9469, + "start": 9469, + "end": 9470, "loc": { "start": { "line": 226, @@ -18974,8 +18974,8 @@ "binop": null }, "value": "_measurements", - "start": 9469, - "end": 9482, + "start": 9470, + "end": 9483, "loc": { "start": { "line": 226, @@ -19000,8 +19000,8 @@ "binop": null, "updateContext": null }, - "start": 9482, - "end": 9483, + "start": 9483, + "end": 9484, "loc": { "start": { "line": 226, @@ -19026,8 +19026,8 @@ "binop": null }, "value": "measurement", - "start": 9483, - "end": 9494, + "start": 9484, + "end": 9495, "loc": { "start": { "line": 226, @@ -19052,8 +19052,8 @@ "binop": null, "updateContext": null }, - "start": 9494, - "end": 9495, + "start": 9495, + "end": 9496, "loc": { "start": { "line": 226, @@ -19078,8 +19078,8 @@ "binop": null }, "value": "id", - "start": 9495, - "end": 9497, + "start": 9496, + "end": 9498, "loc": { "start": { "line": 226, @@ -19104,8 +19104,8 @@ "binop": null, "updateContext": null }, - "start": 9497, - "end": 9498, + "start": 9498, + "end": 9499, "loc": { "start": { "line": 226, @@ -19130,8 +19130,8 @@ "binop": null, "updateContext": null }, - "start": 9498, - "end": 9499, + "start": 9499, + "end": 9500, "loc": { "start": { "line": 226, @@ -19155,8 +19155,8 @@ "postfix": false, "binop": null }, - "start": 9508, - "end": 9509, + "start": 9509, + "end": 9510, "loc": { "start": { "line": 227, @@ -19180,8 +19180,8 @@ "postfix": false, "binop": null }, - "start": 9509, - "end": 9510, + "start": 9510, + "end": 9511, "loc": { "start": { "line": 227, @@ -19206,8 +19206,8 @@ "binop": null, "updateContext": null }, - "start": 9510, - "end": 9511, + "start": 9511, + "end": 9512, "loc": { "start": { "line": 227, @@ -19234,8 +19234,8 @@ "updateContext": null }, "value": "return", - "start": 9520, - "end": 9526, + "start": 9521, + "end": 9527, "loc": { "start": { "line": 228, @@ -19260,8 +19260,8 @@ "binop": null }, "value": "measurement", - "start": 9527, - "end": 9538, + "start": 9528, + "end": 9539, "loc": { "start": { "line": 228, @@ -19286,8 +19286,8 @@ "binop": null, "updateContext": null }, - "start": 9538, - "end": 9539, + "start": 9539, + "end": 9540, "loc": { "start": { "line": 228, @@ -19311,8 +19311,8 @@ "postfix": false, "binop": null }, - "start": 9544, - "end": 9545, + "start": 9545, + "end": 9546, "loc": { "start": { "line": 229, @@ -19327,8 +19327,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys a {@link AngleMeasurement}.\n *\n * @param {String} id ID of AngleMeasurement to destroy.\n ", - "start": 9551, - "end": 9674, + "start": 9552, + "end": 9675, "loc": { "start": { "line": 231, @@ -19353,8 +19353,8 @@ "binop": null }, "value": "destroyMeasurement", - "start": 9679, - "end": 9697, + "start": 9680, + "end": 9698, "loc": { "start": { "line": 236, @@ -19378,8 +19378,8 @@ "postfix": false, "binop": null }, - "start": 9697, - "end": 9698, + "start": 9698, + "end": 9699, "loc": { "start": { "line": 236, @@ -19404,8 +19404,8 @@ "binop": null }, "value": "id", - "start": 9698, - "end": 9700, + "start": 9699, + "end": 9701, "loc": { "start": { "line": 236, @@ -19429,8 +19429,8 @@ "postfix": false, "binop": null }, - "start": 9700, - "end": 9701, + "start": 9701, + "end": 9702, "loc": { "start": { "line": 236, @@ -19454,8 +19454,8 @@ "postfix": false, "binop": null }, - "start": 9702, - "end": 9703, + "start": 9703, + "end": 9704, "loc": { "start": { "line": 236, @@ -19482,8 +19482,8 @@ "updateContext": null }, "value": "const", - "start": 9712, - "end": 9717, + "start": 9713, + "end": 9718, "loc": { "start": { "line": 237, @@ -19508,8 +19508,8 @@ "binop": null }, "value": "measurement", - "start": 9718, - "end": 9729, + "start": 9719, + "end": 9730, "loc": { "start": { "line": 237, @@ -19535,8 +19535,8 @@ "updateContext": null }, "value": "=", - "start": 9730, - "end": 9731, + "start": 9731, + "end": 9732, "loc": { "start": { "line": 237, @@ -19563,8 +19563,8 @@ "updateContext": null }, "value": "this", - "start": 9732, - "end": 9736, + "start": 9733, + "end": 9737, "loc": { "start": { "line": 237, @@ -19589,8 +19589,8 @@ "binop": null, "updateContext": null }, - "start": 9736, - "end": 9737, + "start": 9737, + "end": 9738, "loc": { "start": { "line": 237, @@ -19615,8 +19615,8 @@ "binop": null }, "value": "_measurements", - "start": 9737, - "end": 9750, + "start": 9738, + "end": 9751, "loc": { "start": { "line": 237, @@ -19641,8 +19641,8 @@ "binop": null, "updateContext": null }, - "start": 9750, - "end": 9751, + "start": 9751, + "end": 9752, "loc": { "start": { "line": 237, @@ -19667,8 +19667,8 @@ "binop": null }, "value": "id", - "start": 9751, - "end": 9753, + "start": 9752, + "end": 9754, "loc": { "start": { "line": 237, @@ -19693,8 +19693,8 @@ "binop": null, "updateContext": null }, - "start": 9753, - "end": 9754, + "start": 9754, + "end": 9755, "loc": { "start": { "line": 237, @@ -19719,8 +19719,8 @@ "binop": null, "updateContext": null }, - "start": 9754, - "end": 9755, + "start": 9755, + "end": 9756, "loc": { "start": { "line": 237, @@ -19747,8 +19747,8 @@ "updateContext": null }, "value": "if", - "start": 9764, - "end": 9766, + "start": 9765, + "end": 9767, "loc": { "start": { "line": 238, @@ -19772,8 +19772,8 @@ "postfix": false, "binop": null }, - "start": 9767, - "end": 9768, + "start": 9768, + "end": 9769, "loc": { "start": { "line": 238, @@ -19799,8 +19799,8 @@ "updateContext": null }, "value": "!", - "start": 9768, - "end": 9769, + "start": 9769, + "end": 9770, "loc": { "start": { "line": 238, @@ -19825,8 +19825,8 @@ "binop": null }, "value": "measurement", - "start": 9769, - "end": 9780, + "start": 9770, + "end": 9781, "loc": { "start": { "line": 238, @@ -19850,8 +19850,8 @@ "postfix": false, "binop": null }, - "start": 9780, - "end": 9781, + "start": 9781, + "end": 9782, "loc": { "start": { "line": 238, @@ -19875,8 +19875,8 @@ "postfix": false, "binop": null }, - "start": 9782, - "end": 9783, + "start": 9783, + "end": 9784, "loc": { "start": { "line": 238, @@ -19903,8 +19903,8 @@ "updateContext": null }, "value": "this", - "start": 9796, - "end": 9800, + "start": 9797, + "end": 9801, "loc": { "start": { "line": 239, @@ -19929,8 +19929,8 @@ "binop": null, "updateContext": null }, - "start": 9800, - "end": 9801, + "start": 9801, + "end": 9802, "loc": { "start": { "line": 239, @@ -19955,8 +19955,8 @@ "binop": null }, "value": "log", - "start": 9801, - "end": 9804, + "start": 9802, + "end": 9805, "loc": { "start": { "line": 239, @@ -19980,8 +19980,8 @@ "postfix": false, "binop": null }, - "start": 9804, - "end": 9805, + "start": 9805, + "end": 9806, "loc": { "start": { "line": 239, @@ -20007,8 +20007,8 @@ "updateContext": null }, "value": "AngleMeasurement not found: ", - "start": 9805, - "end": 9835, + "start": 9806, + "end": 9836, "loc": { "start": { "line": 239, @@ -20034,8 +20034,8 @@ "updateContext": null }, "value": "+", - "start": 9836, - "end": 9837, + "start": 9837, + "end": 9838, "loc": { "start": { "line": 239, @@ -20060,8 +20060,8 @@ "binop": null }, "value": "id", - "start": 9838, - "end": 9840, + "start": 9839, + "end": 9841, "loc": { "start": { "line": 239, @@ -20085,8 +20085,8 @@ "postfix": false, "binop": null }, - "start": 9840, - "end": 9841, + "start": 9841, + "end": 9842, "loc": { "start": { "line": 239, @@ -20111,8 +20111,8 @@ "binop": null, "updateContext": null }, - "start": 9841, - "end": 9842, + "start": 9842, + "end": 9843, "loc": { "start": { "line": 239, @@ -20139,8 +20139,8 @@ "updateContext": null }, "value": "return", - "start": 9855, - "end": 9861, + "start": 9856, + "end": 9862, "loc": { "start": { "line": 240, @@ -20165,8 +20165,8 @@ "binop": null, "updateContext": null }, - "start": 9861, - "end": 9862, + "start": 9862, + "end": 9863, "loc": { "start": { "line": 240, @@ -20190,8 +20190,8 @@ "postfix": false, "binop": null }, - "start": 9871, - "end": 9872, + "start": 9872, + "end": 9873, "loc": { "start": { "line": 241, @@ -20216,8 +20216,8 @@ "binop": null }, "value": "measurement", - "start": 9881, - "end": 9892, + "start": 9882, + "end": 9893, "loc": { "start": { "line": 242, @@ -20242,8 +20242,8 @@ "binop": null, "updateContext": null }, - "start": 9892, - "end": 9893, + "start": 9893, + "end": 9894, "loc": { "start": { "line": 242, @@ -20268,8 +20268,8 @@ "binop": null }, "value": "destroy", - "start": 9893, - "end": 9900, + "start": 9894, + "end": 9901, "loc": { "start": { "line": 242, @@ -20293,8 +20293,8 @@ "postfix": false, "binop": null }, - "start": 9900, - "end": 9901, + "start": 9901, + "end": 9902, "loc": { "start": { "line": 242, @@ -20318,8 +20318,8 @@ "postfix": false, "binop": null }, - "start": 9901, - "end": 9902, + "start": 9902, + "end": 9903, "loc": { "start": { "line": 242, @@ -20344,8 +20344,8 @@ "binop": null, "updateContext": null }, - "start": 9902, - "end": 9903, + "start": 9903, + "end": 9904, "loc": { "start": { "line": 242, @@ -20369,8 +20369,8 @@ "postfix": false, "binop": null }, - "start": 9908, - "end": 9909, + "start": 9909, + "end": 9910, "loc": { "start": { "line": 243, @@ -20385,8 +20385,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys all {@link AngleMeasurement}s.\n ", - "start": 9915, - "end": 9973, + "start": 9916, + "end": 9974, "loc": { "start": { "line": 245, @@ -20411,8 +20411,8 @@ "binop": null }, "value": "clear", - "start": 9978, - "end": 9983, + "start": 9979, + "end": 9984, "loc": { "start": { "line": 248, @@ -20436,8 +20436,8 @@ "postfix": false, "binop": null }, - "start": 9983, - "end": 9984, + "start": 9984, + "end": 9985, "loc": { "start": { "line": 248, @@ -20461,8 +20461,8 @@ "postfix": false, "binop": null }, - "start": 9984, - "end": 9985, + "start": 9985, + "end": 9986, "loc": { "start": { "line": 248, @@ -20486,8 +20486,8 @@ "postfix": false, "binop": null }, - "start": 9986, - "end": 9987, + "start": 9987, + "end": 9988, "loc": { "start": { "line": 248, @@ -20514,8 +20514,8 @@ "updateContext": null }, "value": "const", - "start": 9996, - "end": 10001, + "start": 9997, + "end": 10002, "loc": { "start": { "line": 249, @@ -20540,8 +20540,8 @@ "binop": null }, "value": "ids", - "start": 10002, - "end": 10005, + "start": 10003, + "end": 10006, "loc": { "start": { "line": 249, @@ -20567,8 +20567,8 @@ "updateContext": null }, "value": "=", - "start": 10006, - "end": 10007, + "start": 10007, + "end": 10008, "loc": { "start": { "line": 249, @@ -20593,8 +20593,8 @@ "binop": null }, "value": "Object", - "start": 10008, - "end": 10014, + "start": 10009, + "end": 10015, "loc": { "start": { "line": 249, @@ -20619,8 +20619,8 @@ "binop": null, "updateContext": null }, - "start": 10014, - "end": 10015, + "start": 10015, + "end": 10016, "loc": { "start": { "line": 249, @@ -20645,8 +20645,8 @@ "binop": null }, "value": "keys", - "start": 10015, - "end": 10019, + "start": 10016, + "end": 10020, "loc": { "start": { "line": 249, @@ -20670,8 +20670,8 @@ "postfix": false, "binop": null }, - "start": 10019, - "end": 10020, + "start": 10020, + "end": 10021, "loc": { "start": { "line": 249, @@ -20698,8 +20698,8 @@ "updateContext": null }, "value": "this", - "start": 10020, - "end": 10024, + "start": 10021, + "end": 10025, "loc": { "start": { "line": 249, @@ -20724,8 +20724,8 @@ "binop": null, "updateContext": null }, - "start": 10024, - "end": 10025, + "start": 10025, + "end": 10026, "loc": { "start": { "line": 249, @@ -20750,8 +20750,8 @@ "binop": null }, "value": "_measurements", - "start": 10025, - "end": 10038, + "start": 10026, + "end": 10039, "loc": { "start": { "line": 249, @@ -20775,8 +20775,8 @@ "postfix": false, "binop": null }, - "start": 10038, - "end": 10039, + "start": 10039, + "end": 10040, "loc": { "start": { "line": 249, @@ -20801,8 +20801,8 @@ "binop": null, "updateContext": null }, - "start": 10039, - "end": 10040, + "start": 10040, + "end": 10041, "loc": { "start": { "line": 249, @@ -20829,8 +20829,8 @@ "updateContext": null }, "value": "for", - "start": 10049, - "end": 10052, + "start": 10050, + "end": 10053, "loc": { "start": { "line": 250, @@ -20854,8 +20854,8 @@ "postfix": false, "binop": null }, - "start": 10053, - "end": 10054, + "start": 10054, + "end": 10055, "loc": { "start": { "line": 250, @@ -20882,8 +20882,8 @@ "updateContext": null }, "value": "var", - "start": 10054, - "end": 10057, + "start": 10055, + "end": 10058, "loc": { "start": { "line": 250, @@ -20908,8 +20908,8 @@ "binop": null }, "value": "i", - "start": 10058, - "end": 10059, + "start": 10059, + "end": 10060, "loc": { "start": { "line": 250, @@ -20935,8 +20935,8 @@ "updateContext": null }, "value": "=", - "start": 10060, - "end": 10061, + "start": 10061, + "end": 10062, "loc": { "start": { "line": 250, @@ -20962,8 +20962,8 @@ "updateContext": null }, "value": 0, - "start": 10062, - "end": 10063, + "start": 10063, + "end": 10064, "loc": { "start": { "line": 250, @@ -20988,8 +20988,8 @@ "binop": null, "updateContext": null }, - "start": 10063, - "end": 10064, + "start": 10064, + "end": 10065, "loc": { "start": { "line": 250, @@ -21014,8 +21014,8 @@ "binop": null }, "value": "len", - "start": 10065, - "end": 10068, + "start": 10066, + "end": 10069, "loc": { "start": { "line": 250, @@ -21041,8 +21041,8 @@ "updateContext": null }, "value": "=", - "start": 10069, - "end": 10070, + "start": 10070, + "end": 10071, "loc": { "start": { "line": 250, @@ -21067,8 +21067,8 @@ "binop": null }, "value": "ids", - "start": 10071, - "end": 10074, + "start": 10072, + "end": 10075, "loc": { "start": { "line": 250, @@ -21093,8 +21093,8 @@ "binop": null, "updateContext": null }, - "start": 10074, - "end": 10075, + "start": 10075, + "end": 10076, "loc": { "start": { "line": 250, @@ -21119,8 +21119,8 @@ "binop": null }, "value": "length", - "start": 10075, - "end": 10081, + "start": 10076, + "end": 10082, "loc": { "start": { "line": 250, @@ -21145,8 +21145,8 @@ "binop": null, "updateContext": null }, - "start": 10081, - "end": 10082, + "start": 10082, + "end": 10083, "loc": { "start": { "line": 250, @@ -21171,8 +21171,8 @@ "binop": null }, "value": "i", - "start": 10083, - "end": 10084, + "start": 10084, + "end": 10085, "loc": { "start": { "line": 250, @@ -21198,8 +21198,8 @@ "updateContext": null }, "value": "<", - "start": 10085, - "end": 10086, + "start": 10086, + "end": 10087, "loc": { "start": { "line": 250, @@ -21224,8 +21224,8 @@ "binop": null }, "value": "len", - "start": 10087, - "end": 10090, + "start": 10088, + "end": 10091, "loc": { "start": { "line": 250, @@ -21250,8 +21250,8 @@ "binop": null, "updateContext": null }, - "start": 10090, - "end": 10091, + "start": 10091, + "end": 10092, "loc": { "start": { "line": 250, @@ -21276,8 +21276,8 @@ "binop": null }, "value": "i", - "start": 10092, - "end": 10093, + "start": 10093, + "end": 10094, "loc": { "start": { "line": 250, @@ -21302,8 +21302,8 @@ "binop": null }, "value": "++", - "start": 10093, - "end": 10095, + "start": 10094, + "end": 10096, "loc": { "start": { "line": 250, @@ -21327,8 +21327,8 @@ "postfix": false, "binop": null }, - "start": 10095, - "end": 10096, + "start": 10096, + "end": 10097, "loc": { "start": { "line": 250, @@ -21352,8 +21352,8 @@ "postfix": false, "binop": null }, - "start": 10097, - "end": 10098, + "start": 10098, + "end": 10099, "loc": { "start": { "line": 250, @@ -21380,8 +21380,8 @@ "updateContext": null }, "value": "this", - "start": 10111, - "end": 10115, + "start": 10112, + "end": 10116, "loc": { "start": { "line": 251, @@ -21406,8 +21406,8 @@ "binop": null, "updateContext": null }, - "start": 10115, - "end": 10116, + "start": 10116, + "end": 10117, "loc": { "start": { "line": 251, @@ -21432,8 +21432,8 @@ "binop": null }, "value": "destroyMeasurement", - "start": 10116, - "end": 10134, + "start": 10117, + "end": 10135, "loc": { "start": { "line": 251, @@ -21457,8 +21457,8 @@ "postfix": false, "binop": null }, - "start": 10134, - "end": 10135, + "start": 10135, + "end": 10136, "loc": { "start": { "line": 251, @@ -21483,8 +21483,8 @@ "binop": null }, "value": "ids", - "start": 10135, - "end": 10138, + "start": 10136, + "end": 10139, "loc": { "start": { "line": 251, @@ -21509,8 +21509,8 @@ "binop": null, "updateContext": null }, - "start": 10138, - "end": 10139, + "start": 10139, + "end": 10140, "loc": { "start": { "line": 251, @@ -21535,8 +21535,8 @@ "binop": null }, "value": "i", - "start": 10139, - "end": 10140, + "start": 10140, + "end": 10141, "loc": { "start": { "line": 251, @@ -21561,8 +21561,8 @@ "binop": null, "updateContext": null }, - "start": 10140, - "end": 10141, + "start": 10141, + "end": 10142, "loc": { "start": { "line": 251, @@ -21586,8 +21586,8 @@ "postfix": false, "binop": null }, - "start": 10141, - "end": 10142, + "start": 10142, + "end": 10143, "loc": { "start": { "line": 251, @@ -21612,8 +21612,8 @@ "binop": null, "updateContext": null }, - "start": 10142, - "end": 10143, + "start": 10143, + "end": 10144, "loc": { "start": { "line": 251, @@ -21637,8 +21637,8 @@ "postfix": false, "binop": null }, - "start": 10152, - "end": 10153, + "start": 10153, + "end": 10154, "loc": { "start": { "line": 252, @@ -21662,8 +21662,8 @@ "postfix": false, "binop": null }, - "start": 10158, - "end": 10159, + "start": 10159, + "end": 10160, "loc": { "start": { "line": 253, @@ -21678,8 +21678,8 @@ { "type": "CommentBlock", "value": "*\n * Destroys this AngleMeasurementsPlugin.\n *\n * Destroys all {@link AngleMeasurement}s first.\n ", - "start": 10165, - "end": 10282, + "start": 10166, + "end": 10283, "loc": { "start": { "line": 255, @@ -21704,8 +21704,8 @@ "binop": null }, "value": "destroy", - "start": 10287, - "end": 10294, + "start": 10288, + "end": 10295, "loc": { "start": { "line": 260, @@ -21729,8 +21729,8 @@ "postfix": false, "binop": null }, - "start": 10294, - "end": 10295, + "start": 10295, + "end": 10296, "loc": { "start": { "line": 260, @@ -21754,8 +21754,8 @@ "postfix": false, "binop": null }, - "start": 10295, - "end": 10296, + "start": 10296, + "end": 10297, "loc": { "start": { "line": 260, @@ -21779,8 +21779,8 @@ "postfix": false, "binop": null }, - "start": 10297, - "end": 10298, + "start": 10298, + "end": 10299, "loc": { "start": { "line": 260, @@ -21807,8 +21807,8 @@ "updateContext": null }, "value": "this", - "start": 10307, - "end": 10311, + "start": 10308, + "end": 10312, "loc": { "start": { "line": 261, @@ -21833,8 +21833,8 @@ "binop": null, "updateContext": null }, - "start": 10311, - "end": 10312, + "start": 10312, + "end": 10313, "loc": { "start": { "line": 261, @@ -21859,8 +21859,8 @@ "binop": null }, "value": "clear", - "start": 10312, - "end": 10317, + "start": 10313, + "end": 10318, "loc": { "start": { "line": 261, @@ -21884,8 +21884,8 @@ "postfix": false, "binop": null }, - "start": 10317, - "end": 10318, + "start": 10318, + "end": 10319, "loc": { "start": { "line": 261, @@ -21909,8 +21909,8 @@ "postfix": false, "binop": null }, - "start": 10318, - "end": 10319, + "start": 10319, + "end": 10320, "loc": { "start": { "line": 261, @@ -21935,8 +21935,8 @@ "binop": null, "updateContext": null }, - "start": 10319, - "end": 10320, + "start": 10320, + "end": 10321, "loc": { "start": { "line": 261, @@ -21963,8 +21963,8 @@ "updateContext": null }, "value": "super", - "start": 10329, - "end": 10334, + "start": 10330, + "end": 10335, "loc": { "start": { "line": 262, @@ -21989,8 +21989,8 @@ "binop": null, "updateContext": null }, - "start": 10334, - "end": 10335, + "start": 10335, + "end": 10336, "loc": { "start": { "line": 262, @@ -22015,8 +22015,8 @@ "binop": null }, "value": "destroy", - "start": 10335, - "end": 10342, + "start": 10336, + "end": 10343, "loc": { "start": { "line": 262, @@ -22040,8 +22040,8 @@ "postfix": false, "binop": null }, - "start": 10342, - "end": 10343, + "start": 10343, + "end": 10344, "loc": { "start": { "line": 262, @@ -22065,8 +22065,8 @@ "postfix": false, "binop": null }, - "start": 10343, - "end": 10344, + "start": 10344, + "end": 10345, "loc": { "start": { "line": 262, @@ -22091,8 +22091,8 @@ "binop": null, "updateContext": null }, - "start": 10344, - "end": 10345, + "start": 10345, + "end": 10346, "loc": { "start": { "line": 262, @@ -22116,8 +22116,8 @@ "postfix": false, "binop": null }, - "start": 10350, - "end": 10351, + "start": 10351, + "end": 10352, "loc": { "start": { "line": 263, @@ -22141,8 +22141,8 @@ "postfix": false, "binop": null }, - "start": 10352, - "end": 10353, + "start": 10353, + "end": 10354, "loc": { "start": { "line": 264, @@ -22169,8 +22169,8 @@ "updateContext": null }, "value": "export", - "start": 10355, - "end": 10361, + "start": 10356, + "end": 10362, "loc": { "start": { "line": 266, @@ -22194,8 +22194,8 @@ "postfix": false, "binop": null }, - "start": 10362, - "end": 10363, + "start": 10363, + "end": 10364, "loc": { "start": { "line": 266, @@ -22220,8 +22220,8 @@ "binop": null }, "value": "AngleMeasurementsPlugin", - "start": 10363, - "end": 10386, + "start": 10364, + "end": 10387, "loc": { "start": { "line": 266, @@ -22245,8 +22245,8 @@ "postfix": false, "binop": null }, - "start": 10386, - "end": 10387, + "start": 10387, + "end": 10388, "loc": { "start": { "line": 266, @@ -22271,8 +22271,8 @@ "binop": null, "updateContext": null }, - "start": 10388, - "end": 10388, + "start": 10389, + "end": 10389, "loc": { "start": { "line": 267, diff --git a/docs/ast/source/plugins/FastNavPlugin/FastNavPlugin.js.json b/docs/ast/source/plugins/FastNavPlugin/FastNavPlugin.js.json index 7e4b2bd5eb..0730264b39 100644 --- a/docs/ast/source/plugins/FastNavPlugin/FastNavPlugin.js.json +++ b/docs/ast/source/plugins/FastNavPlugin/FastNavPlugin.js.json @@ -1,28 +1,28 @@ { "type": "File", "start": 0, - "end": 8104, + "end": 11490, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 257, + "line": 340, "column": 0 } }, "program": { "type": "Program", "start": 0, - "end": 8104, + "end": 11490, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 257, + "line": 340, "column": 0 } }, @@ -116,16 +116,16 @@ "trailingComments": [ { "type": "CommentBlock", - "value": "*\n * {@link Viewer} plugin that improves interactivity by disabling expensive rendering effects while the {@link Camera} is moving.\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 * This viewer will only render the model with enhanced edges, physically-based rendering (PBR) and scalable\n * ambient obscurance (SAO) when the camera is not moving.\n *\n * Note how we enable SAO and PBR on the ````Scene```` and the model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#performance_FastNavPlugin)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {FastNavPlugin} from \"../src/plugins/FastNavPlugin/FastNavPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true,\n * pbrEnabled: true,\n * saoEnabled: true\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 * new FastNavPlugin(viewer, {});\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/HolterTower/HolterTower.xkt\",\n * metaModelSrc: \"./metaModels/HolterTower/HolterTower.json\",\n * edges: true,\n * saoEnabled: true,\n * pbrEnabled: true\n * });\n * ````\n *\n * @class FastNavPlugin\n ", + "value": "*\n * {@link Viewer} plugin that improves interactivity by disabling expensive rendering effects while the {@link Camera} is moving.\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 * This viewer will only render the model with enhanced edges, physically-based rendering (PBR) and scalable\n * ambient obscurance (SAO) when the camera is not moving.\n *\n * Note how we enable SAO and PBR on the ````Scene```` and the model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#performance_FastNavPlugin)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {FastNavPlugin} from \"../src/plugins/FastNavPlugin/FastNavPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true,\n * pbrEnabled: true,\n * saoEnabled: true\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 * new FastNavPlugin(viewer, {\n * pbrEnabled: true,\n * saoEnabled: true,\n * edgesEnabled: true\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/HolterTower/HolterTower.xkt\",\n * metaModelSrc: \"./metaModels/HolterTower/HolterTower.json\",\n * edges: true,\n * saoEnabled: true,\n * pbrEnabled: true\n * });\n * ````\n *\n * @class FastNavPlugin\n ", "start": 48, - "end": 1623, + "end": 1703, "loc": { "start": { "line": 3, "column": 0 }, "end": { - "line": 48, + "line": 52, "column": 3 } } @@ -134,29 +134,29 @@ }, { "type": "Identifier", - "start": 1624, - "end": 7802, + "start": 1704, + "end": 11188, "loc": { "start": { - "line": 49, + "line": 53, "column": 0 }, "end": { - "line": 240, + "line": 323, "column": 1 } }, "id": { "type": "Identifier", - "start": 1630, - "end": 1643, + "start": 1710, + "end": 1723, "loc": { "start": { - "line": 49, + "line": 53, "column": 6 }, "end": { - "line": 49, + "line": 53, "column": 19 }, "identifierName": "FastNavPlugin" @@ -166,15 +166,15 @@ }, "superClass": { "type": "Identifier", - "start": 1652, - "end": 1658, + "start": 1732, + "end": 1738, "loc": { "start": { - "line": 49, + "line": 53, "column": 28 }, "end": { - "line": 49, + "line": 53, "column": 34 }, "identifierName": "Plugin" @@ -183,30 +183,30 @@ }, "body": { "type": "ClassBody", - "start": 1659, - "end": 7802, + "start": 1739, + "end": 11188, "loc": { "start": { - "line": 49, + "line": 53, "column": 35 }, "end": { - "line": 240, + "line": 323, "column": 1 } }, "body": [ { "type": "ClassMethod", - "start": 1666, - "end": 4265, + "start": 2700, + "end": 5923, "loc": { "start": { - "line": 51, + "line": 64, "column": 4 }, "end": { - "line": 131, + "line": 151, "column": 5 } }, @@ -214,20 +214,21 @@ "computed": false, "key": { "type": "Identifier", - "start": 1666, - "end": 1677, + "start": 2700, + "end": 2711, "loc": { "start": { - "line": 51, + "line": 64, "column": 4 }, "end": { - "line": 51, + "line": 64, "column": 15 }, "identifierName": "constructor" }, - "name": "constructor" + "name": "constructor", + "leadingComments": null }, "kind": "constructor", "id": null, @@ -237,76 +238,124 @@ "params": [ { "type": "Identifier", - "start": 1678, - "end": 1684, + "start": 2712, + "end": 2718, "loc": { "start": { - "line": 51, + "line": 64, "column": 16 }, "end": { - "line": 51, + "line": 64, "column": 22 }, "identifierName": "viewer" }, "name": "viewer" + }, + { + "type": "AssignmentPattern", + "start": 2720, + "end": 2728, + "loc": { + "start": { + "line": 64, + "column": 24 + }, + "end": { + "line": 64, + "column": 32 + } + }, + "left": { + "type": "Identifier", + "start": 2720, + "end": 2723, + "loc": { + "start": { + "line": 64, + "column": 24 + }, + "end": { + "line": 64, + "column": 27 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "right": { + "type": "ObjectExpression", + "start": 2726, + "end": 2728, + "loc": { + "start": { + "line": 64, + "column": 30 + }, + "end": { + "line": 64, + "column": 32 + } + }, + "properties": [] + } } ], "body": { "type": "BlockStatement", - "start": 1686, - "end": 4265, + "start": 2730, + "end": 5923, "loc": { "start": { - "line": 51, - "column": 24 + "line": 64, + "column": 34 }, "end": { - "line": 131, + "line": 151, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 1697, - "end": 1722, + "start": 2741, + "end": 2766, "loc": { "start": { - "line": 53, + "line": 66, "column": 8 }, "end": { - "line": 53, + "line": 66, "column": 33 } }, "expression": { "type": "CallExpression", - "start": 1697, - "end": 1721, + "start": 2741, + "end": 2765, "loc": { "start": { - "line": 53, + "line": 66, "column": 8 }, "end": { - "line": 53, + "line": 66, "column": 32 } }, "callee": { "type": "Super", - "start": 1697, - "end": 1702, + "start": 2741, + "end": 2746, "loc": { "start": { - "line": 53, + "line": 66, "column": 8 }, "end": { - "line": 53, + "line": 66, "column": 13 } } @@ -314,15 +363,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 1703, - "end": 1712, + "start": 2747, + "end": 2756, "loc": { "start": { - "line": 53, + "line": 66, "column": 14 }, "end": { - "line": 53, + "line": 66, "column": 23 } }, @@ -334,15 +383,15 @@ }, { "type": "Identifier", - "start": 1714, - "end": 1720, + "start": 2758, + "end": 2764, "loc": { "start": { - "line": 53, + "line": 66, "column": 25 }, "end": { - "line": 53, + "line": 66, "column": 31 }, "identifierName": "viewer" @@ -354,1610 +403,1937 @@ }, { "type": "ExpressionStatement", - "start": 1732, - "end": 1755, + "start": 2776, + "end": 2896, "loc": { "start": { - "line": 55, + "line": 68, "column": 8 }, "end": { - "line": 55, - "column": 31 + "line": 68, + "column": 128 } }, "expression": { "type": "AssignmentExpression", - "start": 1732, - "end": 1754, + "start": 2776, + "end": 2895, "loc": { "start": { - "line": 55, + "line": 68, "column": 8 }, "end": { - "line": 55, - "column": 30 + "line": 68, + "column": 127 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 1732, - "end": 1747, + "start": 2776, + "end": 2792, "loc": { "start": { - "line": 55, + "line": 68, "column": 8 }, "end": { - "line": 55, - "column": 23 + "line": 68, + "column": 24 } }, "object": { "type": "ThisExpression", - "start": 1732, - "end": 1736, + "start": 2776, + "end": 2780, "loc": { "start": { - "line": 55, + "line": 68, "column": 8 }, "end": { - "line": 55, + "line": 68, "column": 12 } } }, "property": { "type": "Identifier", - "start": 1737, - "end": 1747, + "start": 2781, + "end": 2792, "loc": { "start": { - "line": 55, + "line": 68, "column": 13 }, "end": { - "line": 55, - "column": 23 + "line": 68, + "column": 24 }, - "identifierName": "_pInterval" + "identifierName": "_pbrEnabled" }, - "name": "_pInterval" + "name": "_pbrEnabled" }, "computed": false }, "right": { - "type": "NullLiteral", - "start": 1750, - "end": 1754, - "loc": { - "start": { - "line": 55, - "column": 26 - }, - "end": { - "line": 55, - "column": 30 - } - } - } - } - }, - { - "type": "ExpressionStatement", - "start": 1764, - "end": 1790, - "loc": { - "start": { - "line": 56, - "column": 8 - }, - "end": { - "line": 56, - "column": 34 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 1764, - "end": 1789, - "loc": { - "start": { - "line": 56, - "column": 8 - }, - "end": { - "line": 56, - "column": 33 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 1764, - "end": 1783, + "type": "ConditionalExpression", + "start": 2795, + "end": 2895, "loc": { "start": { - "line": 56, - "column": 8 + "line": 68, + "column": 27 }, "end": { - "line": 56, - "column": 27 + "line": 68, + "column": 127 } }, - "object": { - "type": "ThisExpression", - "start": 1764, - "end": 1768, + "test": { + "type": "LogicalExpression", + "start": 2796, + "end": 2851, "loc": { "start": { - "line": 56, - "column": 8 + "line": 68, + "column": 28 }, "end": { - "line": 56, - "column": 12 + "line": 68, + "column": 83 } - } - }, - "property": { - "type": "Identifier", - "start": 1769, - "end": 1783, - "loc": { - "start": { - "line": 56, - "column": 13 - }, - "end": { - "line": 56, - "column": 27 - }, - "identifierName": "_fadeMillisecs" - }, - "name": "_fadeMillisecs" - }, - "computed": false - }, - "right": { - "type": "NumericLiteral", - "start": 1786, - "end": 1789, - "loc": { - "start": { - "line": 56, - "column": 30 - }, - "end": { - "line": 56, - "column": 33 - } - }, - "extra": { - "rawValue": 500, - "raw": "500" - }, - "value": 500 - } - } - }, - { - "type": "VariableDeclaration", - "start": 1800, - "end": 1826, - "loc": { - "start": { - "line": 58, - "column": 8 - }, - "end": { - "line": 58, - "column": 34 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 1804, - "end": 1825, - "loc": { - "start": { - "line": 58, - "column": 12 }, - "end": { - "line": 58, - "column": 33 - } - }, - "id": { - "type": "Identifier", - "start": 1804, - "end": 1819, - "loc": { - "start": { - "line": 58, - "column": 12 + "left": { + "type": "BinaryExpression", + "start": 2796, + "end": 2824, + "loc": { + "start": { + "line": 68, + "column": 28 + }, + "end": { + "line": 68, + "column": 56 + } }, - "end": { - "line": 58, - "column": 27 + "left": { + "type": "MemberExpression", + "start": 2796, + "end": 2810, + "loc": { + "start": { + "line": 68, + "column": 28 + }, + "end": { + "line": 68, + "column": 42 + } + }, + "object": { + "type": "Identifier", + "start": 2796, + "end": 2799, + "loc": { + "start": { + "line": 68, + "column": 28 + }, + "end": { + "line": 68, + "column": 31 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 2800, + "end": 2810, + "loc": { + "start": { + "line": 68, + "column": 32 + }, + "end": { + "line": 68, + "column": 42 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" + }, + "computed": false }, - "identifierName": "timeoutDuration" + "operator": "!==", + "right": { + "type": "Identifier", + "start": 2815, + "end": 2824, + "loc": { + "start": { + "line": 68, + "column": 47 + }, + "end": { + "line": 68, + "column": 56 + }, + "identifierName": "undefined" + }, + "name": "undefined" + } }, - "name": "timeoutDuration" - }, - "init": { - "type": "NumericLiteral", - "start": 1822, - "end": 1825, - "loc": { - "start": { - "line": 58, - "column": 30 + "operator": "&&", + "right": { + "type": "BinaryExpression", + "start": 2828, + "end": 2851, + "loc": { + "start": { + "line": 68, + "column": 60 + }, + "end": { + "line": 68, + "column": 83 + } }, - "end": { - "line": 58, - "column": 33 + "left": { + "type": "MemberExpression", + "start": 2828, + "end": 2842, + "loc": { + "start": { + "line": 68, + "column": 60 + }, + "end": { + "line": 68, + "column": 74 + } + }, + "object": { + "type": "Identifier", + "start": 2828, + "end": 2831, + "loc": { + "start": { + "line": 68, + "column": 60 + }, + "end": { + "line": 68, + "column": 63 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 2832, + "end": 2842, + "loc": { + "start": { + "line": 68, + "column": 64 + }, + "end": { + "line": 68, + "column": 74 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" + }, + "computed": false + }, + "operator": "!==", + "right": { + "type": "NullLiteral", + "start": 2847, + "end": 2851, + "loc": { + "start": { + "line": 68, + "column": 79 + }, + "end": { + "line": 68, + "column": 83 + } + } } }, "extra": { - "rawValue": 600, - "raw": "600" - }, - "value": 600 - } - } - ], - "kind": "let", - "trailingComments": [ - { - "type": "CommentLine", - "value": " Milliseconds", - "start": 1827, - "end": 1842, - "loc": { - "start": { - "line": 58, - "column": 35 - }, - "end": { - "line": 58, - "column": 50 - } - } - } - ] - }, - { - "type": "VariableDeclaration", - "start": 1851, - "end": 1879, - "loc": { - "start": { - "line": 59, - "column": 8 - }, - "end": { - "line": 59, - "column": 36 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 1855, - "end": 1878, - "loc": { - "start": { - "line": 59, - "column": 12 - }, - "end": { - "line": 59, - "column": 35 + "parenthesized": true, + "parenStart": 2795 } }, - "id": { - "type": "Identifier", - "start": 1855, - "end": 1860, + "consequent": { + "type": "MemberExpression", + "start": 2855, + "end": 2869, "loc": { "start": { - "line": 59, - "column": 12 + "line": 68, + "column": 87 }, "end": { - "line": 59, - "column": 17 - }, - "identifierName": "timer" + "line": 68, + "column": 101 + } }, - "name": "timer", - "leadingComments": null - }, - "init": { - "type": "Identifier", - "start": 1863, - "end": 1878, - "loc": { - "start": { - "line": 59, - "column": 20 - }, - "end": { - "line": 59, - "column": 35 + "object": { + "type": "Identifier", + "start": 2855, + "end": 2858, + "loc": { + "start": { + "line": 68, + "column": 87 + }, + "end": { + "line": 68, + "column": 90 + }, + "identifierName": "cfg" }, - "identifierName": "timeoutDuration" - }, - "name": "timeoutDuration" - }, - "leadingComments": null - } - ], - "kind": "let", - "leadingComments": [ - { - "type": "CommentLine", - "value": " Milliseconds", - "start": 1827, - "end": 1842, - "loc": { - "start": { - "line": 58, - "column": 35 + "name": "cfg" }, - "end": { - "line": 58, - "column": 50 - } - } - } - ] - }, - { - "type": "VariableDeclaration", - "start": 1888, - "end": 1909, - "loc": { - "start": { - "line": 60, - "column": 8 - }, - "end": { - "line": 60, - "column": 29 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 1892, - "end": 1908, - "loc": { - "start": { - "line": 60, - "column": 12 + "property": { + "type": "Identifier", + "start": 2859, + "end": 2869, + "loc": { + "start": { + "line": 68, + "column": 91 + }, + "end": { + "line": 68, + "column": 101 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" }, - "end": { - "line": 60, - "column": 28 - } + "computed": false }, - "id": { - "type": "Identifier", - "start": 1892, - "end": 1900, + "alternate": { + "type": "MemberExpression", + "start": 2872, + "end": 2895, "loc": { "start": { - "line": 60, - "column": 12 + "line": 68, + "column": 104 }, "end": { - "line": 60, - "column": 20 + "line": 68, + "column": 127 + } + }, + "object": { + "type": "MemberExpression", + "start": 2872, + "end": 2884, + "loc": { + "start": { + "line": 68, + "column": 104 + }, + "end": { + "line": 68, + "column": 116 + } }, - "identifierName": "fastMode" + "object": { + "type": "Identifier", + "start": 2872, + "end": 2878, + "loc": { + "start": { + "line": 68, + "column": 104 + }, + "end": { + "line": 68, + "column": 110 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 2879, + "end": 2884, + "loc": { + "start": { + "line": 68, + "column": 111 + }, + "end": { + "line": 68, + "column": 116 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false }, - "name": "fastMode" - }, - "init": { - "type": "BooleanLiteral", - "start": 1903, - "end": 1908, - "loc": { - "start": { - "line": 60, - "column": 23 + "property": { + "type": "Identifier", + "start": 2885, + "end": 2895, + "loc": { + "start": { + "line": 68, + "column": 117 + }, + "end": { + "line": 68, + "column": 127 + }, + "identifierName": "pbrEnabled" }, - "end": { - "line": 60, - "column": 28 - } + "name": "pbrEnabled" }, - "value": false + "computed": false } } - ], - "kind": "let" + } }, { "type": "ExpressionStatement", - "start": 1919, - "end": 2299, + "start": 2905, + "end": 3026, "loc": { "start": { - "line": 62, + "line": 69, "column": 8 }, "end": { - "line": 71, - "column": 11 + "line": 69, + "column": 129 } }, "expression": { "type": "AssignmentExpression", - "start": 1919, - "end": 2298, + "start": 2905, + "end": 3025, "loc": { "start": { - "line": 62, + "line": 69, "column": 8 }, "end": { - "line": 71, - "column": 10 + "line": 69, + "column": 128 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 1919, - "end": 1939, + "start": 2905, + "end": 2921, "loc": { "start": { - "line": 62, + "line": 69, "column": 8 }, "end": { - "line": 62, - "column": 28 + "line": 69, + "column": 24 } }, "object": { "type": "ThisExpression", - "start": 1919, - "end": 1923, + "start": 2905, + "end": 2909, "loc": { "start": { - "line": 62, + "line": 69, "column": 8 }, "end": { - "line": 62, + "line": 69, "column": 12 } } }, "property": { "type": "Identifier", - "start": 1924, - "end": 1939, + "start": 2910, + "end": 2921, "loc": { "start": { - "line": 62, + "line": 69, "column": 13 }, "end": { - "line": 62, - "column": 28 + "line": 69, + "column": 24 }, - "identifierName": "_onCameraMatrix" + "identifierName": "_saoEnabled" }, - "name": "_onCameraMatrix" + "name": "_saoEnabled" }, "computed": false }, "right": { - "type": "CallExpression", - "start": 1942, - "end": 2298, + "type": "ConditionalExpression", + "start": 2924, + "end": 3025, "loc": { "start": { - "line": 62, - "column": 31 + "line": 69, + "column": 27 }, "end": { - "line": 71, - "column": 10 + "line": 69, + "column": 128 } }, - "callee": { - "type": "MemberExpression", - "start": 1942, - "end": 1964, + "test": { + "type": "LogicalExpression", + "start": 2925, + "end": 2980, "loc": { "start": { - "line": 62, - "column": 31 + "line": 69, + "column": 28 }, "end": { - "line": 62, - "column": 53 + "line": 69, + "column": 83 } }, - "object": { - "type": "MemberExpression", - "start": 1942, - "end": 1961, + "left": { + "type": "BinaryExpression", + "start": 2925, + "end": 2953, "loc": { "start": { - "line": 62, - "column": 31 + "line": 69, + "column": 28 }, "end": { - "line": 62, - "column": 50 + "line": 69, + "column": 56 } }, - "object": { + "left": { "type": "MemberExpression", - "start": 1942, - "end": 1954, + "start": 2925, + "end": 2939, "loc": { "start": { - "line": 62, - "column": 31 + "line": 69, + "column": 28 }, "end": { - "line": 62, - "column": 43 + "line": 69, + "column": 42 } }, "object": { "type": "Identifier", - "start": 1942, - "end": 1948, + "start": 2925, + "end": 2928, "loc": { "start": { - "line": 62, - "column": 31 + "line": 69, + "column": 28 }, "end": { - "line": 62, - "column": 37 + "line": 69, + "column": 31 }, - "identifierName": "viewer" + "identifierName": "cfg" }, - "name": "viewer" + "name": "cfg" }, "property": { "type": "Identifier", - "start": 1949, - "end": 1954, + "start": 2929, + "end": 2939, "loc": { "start": { - "line": 62, - "column": 38 + "line": 69, + "column": 32 }, "end": { - "line": 62, - "column": 43 + "line": 69, + "column": 42 }, - "identifierName": "scene" + "identifierName": "saoEnabled" }, - "name": "scene" + "name": "saoEnabled" }, "computed": false }, - "property": { + "operator": "!==", + "right": { "type": "Identifier", - "start": 1955, - "end": 1961, + "start": 2944, + "end": 2953, "loc": { "start": { - "line": 62, - "column": 44 + "line": 69, + "column": 47 }, "end": { - "line": 62, - "column": 50 + "line": 69, + "column": 56 }, - "identifierName": "camera" - }, - "name": "camera" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 1962, - "end": 1964, - "loc": { - "start": { - "line": 62, - "column": 51 - }, - "end": { - "line": 62, - "column": 53 + "identifierName": "undefined" }, - "identifierName": "on" - }, - "name": "on" + "name": "undefined" + } }, - "computed": false - }, - "arguments": [ - { - "type": "StringLiteral", - "start": 1965, - "end": 1973, + "operator": "&&", + "right": { + "type": "BinaryExpression", + "start": 2957, + "end": 2980, "loc": { "start": { - "line": 62, - "column": 54 + "line": 69, + "column": 60 }, "end": { - "line": 62, - "column": 62 + "line": 69, + "column": 83 } }, - "extra": { - "rawValue": "matrix", - "raw": "\"matrix\"" - }, - "value": "matrix" - }, - { - "type": "ArrowFunctionExpression", - "start": 1975, - "end": 2297, + "left": { + "type": "MemberExpression", + "start": 2957, + "end": 2971, + "loc": { + "start": { + "line": 69, + "column": 60 + }, + "end": { + "line": 69, + "column": 74 + } + }, + "object": { + "type": "Identifier", + "start": 2957, + "end": 2960, + "loc": { + "start": { + "line": 69, + "column": 60 + }, + "end": { + "line": 69, + "column": 63 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 2961, + "end": 2971, + "loc": { + "start": { + "line": 69, + "column": 64 + }, + "end": { + "line": 69, + "column": 74 + }, + "identifierName": "saoEnabled" + }, + "name": "saoEnabled" + }, + "computed": false + }, + "operator": "!==", + "right": { + "type": "NullLiteral", + "start": 2976, + "end": 2980, + "loc": { + "start": { + "line": 69, + "column": 79 + }, + "end": { + "line": 69, + "column": 83 + } + } + } + }, + "extra": { + "parenthesized": true, + "parenStart": 2924 + } + }, + "consequent": { + "type": "MemberExpression", + "start": 2984, + "end": 2998, + "loc": { + "start": { + "line": 69, + "column": 87 + }, + "end": { + "line": 69, + "column": 101 + } + }, + "object": { + "type": "Identifier", + "start": 2984, + "end": 2987, + "loc": { + "start": { + "line": 69, + "column": 87 + }, + "end": { + "line": 69, + "column": 90 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 2988, + "end": 2998, + "loc": { + "start": { + "line": 69, + "column": 91 + }, + "end": { + "line": 69, + "column": 101 + }, + "identifierName": "saoEnabled" + }, + "name": "saoEnabled" + }, + "computed": false + }, + "alternate": { + "type": "MemberExpression", + "start": 3001, + "end": 3025, + "loc": { + "start": { + "line": 69, + "column": 104 + }, + "end": { + "line": 69, + "column": 128 + } + }, + "object": { + "type": "MemberExpression", + "start": 3001, + "end": 3017, + "loc": { + "start": { + "line": 69, + "column": 104 + }, + "end": { + "line": 69, + "column": 120 + } + }, + "object": { + "type": "MemberExpression", + "start": 3001, + "end": 3013, + "loc": { + "start": { + "line": 69, + "column": 104 + }, + "end": { + "line": 69, + "column": 116 + } + }, + "object": { + "type": "Identifier", + "start": 3001, + "end": 3007, + "loc": { + "start": { + "line": 69, + "column": 104 + }, + "end": { + "line": 69, + "column": 110 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 3008, + "end": 3013, + "loc": { + "start": { + "line": 69, + "column": 111 + }, + "end": { + "line": 69, + "column": 116 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 3014, + "end": 3017, + "loc": { + "start": { + "line": 69, + "column": 117 + }, + "end": { + "line": 69, + "column": 120 + }, + "identifierName": "sao" + }, + "name": "sao" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 3018, + "end": 3025, + "loc": { + "start": { + "line": 69, + "column": 121 + }, + "end": { + "line": 69, + "column": 128 + }, + "identifierName": "enabled" + }, + "name": "enabled" + }, + "computed": false + } + } + } + }, + { + "type": "ExpressionStatement", + "start": 3035, + "end": 3171, + "loc": { + "start": { + "line": 70, + "column": 8 + }, + "end": { + "line": 70, + "column": 144 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 3035, + "end": 3170, + "loc": { + "start": { + "line": 70, + "column": 8 + }, + "end": { + "line": 70, + "column": 143 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 3035, + "end": 3053, + "loc": { + "start": { + "line": 70, + "column": 8 + }, + "end": { + "line": 70, + "column": 26 + } + }, + "object": { + "type": "ThisExpression", + "start": 3035, + "end": 3039, + "loc": { + "start": { + "line": 70, + "column": 8 + }, + "end": { + "line": 70, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 3040, + "end": 3053, + "loc": { + "start": { + "line": 70, + "column": 13 + }, + "end": { + "line": 70, + "column": 26 + }, + "identifierName": "_edgesEnabled" + }, + "name": "_edgesEnabled" + }, + "computed": false + }, + "right": { + "type": "ConditionalExpression", + "start": 3056, + "end": 3170, + "loc": { + "start": { + "line": 70, + "column": 29 + }, + "end": { + "line": 70, + "column": 143 + } + }, + "test": { + "type": "LogicalExpression", + "start": 3057, + "end": 3116, + "loc": { + "start": { + "line": 70, + "column": 30 + }, + "end": { + "line": 70, + "column": 89 + } + }, + "left": { + "type": "BinaryExpression", + "start": 3057, + "end": 3087, + "loc": { + "start": { + "line": 70, + "column": 30 + }, + "end": { + "line": 70, + "column": 60 + } + }, + "left": { + "type": "MemberExpression", + "start": 3057, + "end": 3073, + "loc": { + "start": { + "line": 70, + "column": 30 + }, + "end": { + "line": 70, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 3057, + "end": 3060, + "loc": { + "start": { + "line": 70, + "column": 30 + }, + "end": { + "line": 70, + "column": 33 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 3061, + "end": 3073, + "loc": { + "start": { + "line": 70, + "column": 34 + }, + "end": { + "line": 70, + "column": 46 + }, + "identifierName": "edgesEnabled" + }, + "name": "edgesEnabled" + }, + "computed": false + }, + "operator": "!==", + "right": { + "type": "Identifier", + "start": 3078, + "end": 3087, + "loc": { + "start": { + "line": 70, + "column": 51 + }, + "end": { + "line": 70, + "column": 60 + }, + "identifierName": "undefined" + }, + "name": "undefined" + } + }, + "operator": "&&", + "right": { + "type": "BinaryExpression", + "start": 3091, + "end": 3116, "loc": { "start": { - "line": 62, + "line": 70, "column": 64 }, "end": { - "line": 71, - "column": 9 + "line": 70, + "column": 89 } }, - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [], - "body": { - "type": "BlockStatement", - "start": 1981, - "end": 2297, + "left": { + "type": "MemberExpression", + "start": 3091, + "end": 3107, "loc": { "start": { - "line": 62, - "column": 70 + "line": 70, + "column": 64 }, "end": { - "line": 71, - "column": 9 + "line": 70, + "column": 80 } }, - "body": [ - { - "type": "ExpressionStatement", - "start": 1995, - "end": 2019, - "loc": { - "start": { - "line": 63, - "column": 12 - }, - "end": { - "line": 63, - "column": 36 - } + "object": { + "type": "Identifier", + "start": 3091, + "end": 3094, + "loc": { + "start": { + "line": 70, + "column": 64 }, - "expression": { - "type": "AssignmentExpression", - "start": 1995, - "end": 2018, - "loc": { - "start": { - "line": 63, - "column": 12 - }, - "end": { - "line": 63, - "column": 35 - } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 1995, - "end": 2000, - "loc": { - "start": { - "line": 63, - "column": 12 - }, - "end": { - "line": 63, - "column": 17 - }, - "identifierName": "timer" - }, - "name": "timer" - }, - "right": { - "type": "Identifier", - "start": 2003, - "end": 2018, - "loc": { - "start": { - "line": 63, - "column": 20 - }, - "end": { - "line": 63, - "column": 35 - }, - "identifierName": "timeoutDuration" - }, - "name": "timeoutDuration" - } - } + "end": { + "line": 70, + "column": 67 + }, + "identifierName": "cfg" }, - { - "type": "IfStatement", - "start": 2032, - "end": 2287, - "loc": { - "start": { - "line": 64, - "column": 12 - }, - "end": { - "line": 70, - "column": 13 - } + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 3095, + "end": 3107, + "loc": { + "start": { + "line": 70, + "column": 68 }, - "test": { - "type": "UnaryExpression", - "start": 2036, - "end": 2045, - "loc": { - "start": { - "line": 64, - "column": 16 - }, - "end": { - "line": 64, - "column": 25 - } - }, - "operator": "!", - "prefix": true, - "argument": { - "type": "Identifier", - "start": 2037, - "end": 2045, - "loc": { - "start": { - "line": 64, - "column": 17 - }, - "end": { - "line": 64, - "column": 25 - }, - "identifierName": "fastMode" - }, - "name": "fastMode" - }, - "extra": { - "parenthesizedArgument": false - } + "end": { + "line": 70, + "column": 80 }, - "consequent": { - "type": "BlockStatement", - "start": 2047, - "end": 2287, - "loc": { - "start": { - "line": 64, - "column": 27 - }, - "end": { - "line": 70, - "column": 13 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 2065, - "end": 2084, - "loc": { - "start": { - "line": 65, - "column": 16 - }, - "end": { - "line": 65, - "column": 35 - } - }, - "expression": { - "type": "CallExpression", - "start": 2065, - "end": 2083, - "loc": { - "start": { - "line": 65, - "column": 16 - }, - "end": { - "line": 65, - "column": 34 - } - }, - "callee": { - "type": "MemberExpression", - "start": 2065, - "end": 2081, - "loc": { - "start": { - "line": 65, - "column": 16 - }, - "end": { - "line": 65, - "column": 32 - } - }, - "object": { - "type": "ThisExpression", - "start": 2065, - "end": 2069, - "loc": { - "start": { - "line": 65, - "column": 16 - }, - "end": { - "line": 65, - "column": 20 - } - } - }, - "property": { - "type": "Identifier", - "start": 2070, - "end": 2081, - "loc": { - "start": { - "line": 65, - "column": 21 - }, - "end": { - "line": 65, - "column": 32 - }, - "identifierName": "_cancelFade" - }, - "name": "_cancelFade" - }, - "computed": false - }, - "arguments": [] - } - }, - { - "type": "ExpressionStatement", - "start": 2101, - "end": 2133, - "loc": { - "start": { - "line": 66, - "column": 16 - }, - "end": { - "line": 66, - "column": 48 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2101, - "end": 2132, - "loc": { - "start": { - "line": 66, - "column": 16 - }, - "end": { - "line": 66, - "column": 47 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 2101, - "end": 2124, - "loc": { - "start": { - "line": 66, - "column": 16 - }, - "end": { - "line": 66, - "column": 39 - } - }, - "object": { - "type": "MemberExpression", - "start": 2101, - "end": 2113, - "loc": { - "start": { - "line": 66, - "column": 16 - }, - "end": { - "line": 66, - "column": 28 - } - }, - "object": { - "type": "Identifier", - "start": 2101, - "end": 2107, - "loc": { - "start": { - "line": 66, - "column": 16 - }, - "end": { - "line": 66, - "column": 22 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 2108, - "end": 2113, - "loc": { - "start": { - "line": 66, - "column": 23 - }, - "end": { - "line": 66, - "column": 28 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2114, - "end": 2124, - "loc": { - "start": { - "line": 66, - "column": 29 - }, - "end": { - "line": 66, - "column": 39 - }, - "identifierName": "pbrEnabled" - }, - "name": "pbrEnabled" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 2127, - "end": 2132, - "loc": { - "start": { - "line": 66, - "column": 42 - }, - "end": { - "line": 66, - "column": 47 - } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 2150, - "end": 2183, - "loc": { - "start": { - "line": 67, - "column": 16 - }, - "end": { - "line": 67, - "column": 49 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2150, - "end": 2182, - "loc": { - "start": { - "line": 67, - "column": 16 - }, - "end": { - "line": 67, - "column": 48 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 2150, - "end": 2174, - "loc": { - "start": { - "line": 67, - "column": 16 - }, - "end": { - "line": 67, - "column": 40 - } - }, - "object": { - "type": "MemberExpression", - "start": 2150, - "end": 2166, - "loc": { - "start": { - "line": 67, - "column": 16 - }, - "end": { - "line": 67, - "column": 32 - } - }, - "object": { - "type": "MemberExpression", - "start": 2150, - "end": 2162, - "loc": { - "start": { - "line": 67, - "column": 16 - }, - "end": { - "line": 67, - "column": 28 - } - }, - "object": { - "type": "Identifier", - "start": 2150, - "end": 2156, - "loc": { - "start": { - "line": 67, - "column": 16 - }, - "end": { - "line": 67, - "column": 22 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 2157, - "end": 2162, - "loc": { - "start": { - "line": 67, - "column": 23 - }, - "end": { - "line": 67, - "column": 28 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2163, - "end": 2166, - "loc": { - "start": { - "line": 67, - "column": 29 - }, - "end": { - "line": 67, - "column": 32 - }, - "identifierName": "sao" - }, - "name": "sao" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2167, - "end": 2174, - "loc": { - "start": { - "line": 67, - "column": 33 - }, - "end": { - "line": 67, - "column": 40 - }, - "identifierName": "enabled" - }, - "name": "enabled" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 2177, - "end": 2182, - "loc": { - "start": { - "line": 67, - "column": 43 - }, - "end": { - "line": 67, - "column": 48 - } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 2200, - "end": 2240, - "loc": { - "start": { - "line": 68, - "column": 16 - }, - "end": { - "line": 68, - "column": 56 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2200, - "end": 2239, - "loc": { - "start": { - "line": 68, - "column": 16 - }, - "end": { - "line": 68, - "column": 55 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 2200, - "end": 2231, - "loc": { - "start": { - "line": 68, - "column": 16 - }, - "end": { - "line": 68, - "column": 47 - } - }, - "object": { - "type": "MemberExpression", - "start": 2200, - "end": 2225, - "loc": { - "start": { - "line": 68, - "column": 16 - }, - "end": { - "line": 68, - "column": 41 - } - }, - "object": { - "type": "MemberExpression", - "start": 2200, - "end": 2212, - "loc": { - "start": { - "line": 68, - "column": 16 - }, - "end": { - "line": 68, - "column": 28 - } - }, - "object": { - "type": "Identifier", - "start": 2200, - "end": 2206, - "loc": { - "start": { - "line": 68, - "column": 16 - }, - "end": { - "line": 68, - "column": 22 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 2207, - "end": 2212, - "loc": { - "start": { - "line": 68, - "column": 23 - }, - "end": { - "line": 68, - "column": 28 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2213, - "end": 2225, - "loc": { - "start": { - "line": 68, - "column": 29 - }, - "end": { - "line": 68, - "column": 41 - }, - "identifierName": "edgeMaterial" - }, - "name": "edgeMaterial" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2226, - "end": 2231, - "loc": { - "start": { - "line": 68, - "column": 42 - }, - "end": { - "line": 68, - "column": 47 - }, - "identifierName": "edges" - }, - "name": "edges" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 2234, - "end": 2239, - "loc": { - "start": { - "line": 68, - "column": 50 - }, - "end": { - "line": 68, - "column": 55 - } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 2257, - "end": 2273, - "loc": { - "start": { - "line": 69, - "column": 16 - }, - "end": { - "line": 69, - "column": 32 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2257, - "end": 2272, - "loc": { - "start": { - "line": 69, - "column": 16 - }, - "end": { - "line": 69, - "column": 31 - } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 2257, - "end": 2265, - "loc": { - "start": { - "line": 69, - "column": 16 - }, - "end": { - "line": 69, - "column": 24 - }, - "identifierName": "fastMode" - }, - "name": "fastMode" - }, - "right": { - "type": "BooleanLiteral", - "start": 2268, - "end": 2272, - "loc": { - "start": { - "line": 69, - "column": 27 - }, - "end": { - "line": 69, - "column": 31 - } - }, - "value": true - } - } - } - ], - "directives": [] - }, - "alternate": null + "identifierName": "edgesEnabled" + }, + "name": "edgesEnabled" + }, + "computed": false + }, + "operator": "!==", + "right": { + "type": "NullLiteral", + "start": 3112, + "end": 3116, + "loc": { + "start": { + "line": 70, + "column": 85 + }, + "end": { + "line": 70, + "column": 89 } - ], - "directives": [] + } } + }, + "extra": { + "parenthesized": true, + "parenStart": 3056 } - ] + }, + "consequent": { + "type": "MemberExpression", + "start": 3120, + "end": 3136, + "loc": { + "start": { + "line": 70, + "column": 93 + }, + "end": { + "line": 70, + "column": 109 + } + }, + "object": { + "type": "Identifier", + "start": 3120, + "end": 3123, + "loc": { + "start": { + "line": 70, + "column": 93 + }, + "end": { + "line": 70, + "column": 96 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 3124, + "end": 3136, + "loc": { + "start": { + "line": 70, + "column": 97 + }, + "end": { + "line": 70, + "column": 109 + }, + "identifierName": "edgesEnabled" + }, + "name": "edgesEnabled" + }, + "computed": false + }, + "alternate": { + "type": "MemberExpression", + "start": 3139, + "end": 3170, + "loc": { + "start": { + "line": 70, + "column": 112 + }, + "end": { + "line": 70, + "column": 143 + } + }, + "object": { + "type": "MemberExpression", + "start": 3139, + "end": 3164, + "loc": { + "start": { + "line": 70, + "column": 112 + }, + "end": { + "line": 70, + "column": 137 + } + }, + "object": { + "type": "MemberExpression", + "start": 3139, + "end": 3151, + "loc": { + "start": { + "line": 70, + "column": 112 + }, + "end": { + "line": 70, + "column": 124 + } + }, + "object": { + "type": "Identifier", + "start": 3139, + "end": 3145, + "loc": { + "start": { + "line": 70, + "column": 112 + }, + "end": { + "line": 70, + "column": 118 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 3146, + "end": 3151, + "loc": { + "start": { + "line": 70, + "column": 119 + }, + "end": { + "line": 70, + "column": 124 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 3152, + "end": 3164, + "loc": { + "start": { + "line": 70, + "column": 125 + }, + "end": { + "line": 70, + "column": 137 + }, + "identifierName": "edgeMaterial" + }, + "name": "edgeMaterial" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 3165, + "end": 3170, + "loc": { + "start": { + "line": 70, + "column": 138 + }, + "end": { + "line": 70, + "column": 143 + }, + "identifierName": "edges" + }, + "name": "edges" + }, + "computed": false + } } } }, { "type": "ExpressionStatement", - "start": 2309, - "end": 2843, + "start": 3181, + "end": 3204, "loc": { "start": { - "line": 73, + "line": 72, "column": 8 }, "end": { - "line": 87, - "column": 11 + "line": 72, + "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 2309, - "end": 2842, + "start": 3181, + "end": 3203, "loc": { "start": { - "line": 73, + "line": 72, "column": 8 }, "end": { - "line": 87, - "column": 10 + "line": 72, + "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 2309, - "end": 2326, + "start": 3181, + "end": 3196, "loc": { "start": { - "line": 73, + "line": 72, "column": 8 }, "end": { - "line": 73, - "column": 25 + "line": 72, + "column": 23 } }, "object": { "type": "ThisExpression", - "start": 2309, - "end": 2313, + "start": 3181, + "end": 3185, "loc": { "start": { - "line": 73, + "line": 72, "column": 8 }, "end": { - "line": 73, + "line": 72, "column": 12 } } }, "property": { "type": "Identifier", - "start": 2314, - "end": 2326, + "start": 3186, + "end": 3196, "loc": { "start": { - "line": 73, + "line": 72, "column": 13 }, "end": { - "line": 73, - "column": 25 + "line": 72, + "column": 23 }, - "identifierName": "_onSceneTick" + "identifierName": "_pInterval" }, - "name": "_onSceneTick" + "name": "_pInterval" }, "computed": false }, "right": { - "type": "CallExpression", - "start": 2329, - "end": 2842, + "type": "NullLiteral", + "start": 3199, + "end": 3203, + "loc": { + "start": { + "line": 72, + "column": 26 + }, + "end": { + "line": 72, + "column": 30 + } + } + } + } + }, + { + "type": "ExpressionStatement", + "start": 3213, + "end": 3239, + "loc": { + "start": { + "line": 73, + "column": 8 + }, + "end": { + "line": 73, + "column": 34 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 3213, + "end": 3238, + "loc": { + "start": { + "line": 73, + "column": 8 + }, + "end": { + "line": 73, + "column": 33 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 3213, + "end": 3232, "loc": { "start": { "line": 73, - "column": 28 + "column": 8 }, "end": { - "line": 87, - "column": 10 + "line": 73, + "column": 27 } }, - "callee": { - "type": "MemberExpression", - "start": 2329, - "end": 2344, + "object": { + "type": "ThisExpression", + "start": 3213, + "end": 3217, "loc": { "start": { "line": 73, - "column": 28 + "column": 8 }, "end": { "line": 73, - "column": 43 + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 3218, + "end": 3232, + "loc": { + "start": { + "line": 73, + "column": 13 + }, + "end": { + "line": 73, + "column": 27 + }, + "identifierName": "_fadeMillisecs" + }, + "name": "_fadeMillisecs" + }, + "computed": false + }, + "right": { + "type": "NumericLiteral", + "start": 3235, + "end": 3238, + "loc": { + "start": { + "line": 73, + "column": 30 + }, + "end": { + "line": 73, + "column": 33 + } + }, + "extra": { + "rawValue": 500, + "raw": "500" + }, + "value": 500 + } + } + }, + { + "type": "VariableDeclaration", + "start": 3249, + "end": 3275, + "loc": { + "start": { + "line": 75, + "column": 8 + }, + "end": { + "line": 75, + "column": 34 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 3253, + "end": 3274, + "loc": { + "start": { + "line": 75, + "column": 12 + }, + "end": { + "line": 75, + "column": 33 + } + }, + "id": { + "type": "Identifier", + "start": 3253, + "end": 3268, + "loc": { + "start": { + "line": 75, + "column": 12 + }, + "end": { + "line": 75, + "column": 27 + }, + "identifierName": "timeoutDuration" + }, + "name": "timeoutDuration" + }, + "init": { + "type": "NumericLiteral", + "start": 3271, + "end": 3274, + "loc": { + "start": { + "line": 75, + "column": 30 + }, + "end": { + "line": 75, + "column": 33 + } + }, + "extra": { + "rawValue": 600, + "raw": "600" + }, + "value": 600 + } + } + ], + "kind": "let", + "trailingComments": [ + { + "type": "CommentLine", + "value": " Milliseconds", + "start": 3276, + "end": 3291, + "loc": { + "start": { + "line": 75, + "column": 35 + }, + "end": { + "line": 75, + "column": 50 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 3300, + "end": 3328, + "loc": { + "start": { + "line": 76, + "column": 8 + }, + "end": { + "line": 76, + "column": 36 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 3304, + "end": 3327, + "loc": { + "start": { + "line": 76, + "column": 12 + }, + "end": { + "line": 76, + "column": 35 + } + }, + "id": { + "type": "Identifier", + "start": 3304, + "end": 3309, + "loc": { + "start": { + "line": 76, + "column": 12 + }, + "end": { + "line": 76, + "column": 17 + }, + "identifierName": "timer" + }, + "name": "timer", + "leadingComments": null + }, + "init": { + "type": "Identifier", + "start": 3312, + "end": 3327, + "loc": { + "start": { + "line": 76, + "column": 20 + }, + "end": { + "line": 76, + "column": 35 + }, + "identifierName": "timeoutDuration" + }, + "name": "timeoutDuration" + }, + "leadingComments": null + } + ], + "kind": "let", + "leadingComments": [ + { + "type": "CommentLine", + "value": " Milliseconds", + "start": 3276, + "end": 3291, + "loc": { + "start": { + "line": 75, + "column": 35 + }, + "end": { + "line": 75, + "column": 50 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 3337, + "end": 3358, + "loc": { + "start": { + "line": 77, + "column": 8 + }, + "end": { + "line": 77, + "column": 29 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 3341, + "end": 3357, + "loc": { + "start": { + "line": 77, + "column": 12 + }, + "end": { + "line": 77, + "column": 28 + } + }, + "id": { + "type": "Identifier", + "start": 3341, + "end": 3349, + "loc": { + "start": { + "line": 77, + "column": 12 + }, + "end": { + "line": 77, + "column": 20 + }, + "identifierName": "fastMode" + }, + "name": "fastMode" + }, + "init": { + "type": "BooleanLiteral", + "start": 3352, + "end": 3357, + "loc": { + "start": { + "line": 77, + "column": 23 + }, + "end": { + "line": 77, + "column": 28 + } + }, + "value": false + } + } + ], + "kind": "let" + }, + { + "type": "ExpressionStatement", + "start": 3368, + "end": 3748, + "loc": { + "start": { + "line": 79, + "column": 8 + }, + "end": { + "line": 88, + "column": 11 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 3368, + "end": 3747, + "loc": { + "start": { + "line": 79, + "column": 8 + }, + "end": { + "line": 88, + "column": 10 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 3368, + "end": 3388, + "loc": { + "start": { + "line": 79, + "column": 8 + }, + "end": { + "line": 79, + "column": 28 + } + }, + "object": { + "type": "ThisExpression", + "start": 3368, + "end": 3372, + "loc": { + "start": { + "line": 79, + "column": 8 + }, + "end": { + "line": 79, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 3373, + "end": 3388, + "loc": { + "start": { + "line": 79, + "column": 13 + }, + "end": { + "line": 79, + "column": 28 + }, + "identifierName": "_onCameraMatrix" + }, + "name": "_onCameraMatrix" + }, + "computed": false + }, + "right": { + "type": "CallExpression", + "start": 3391, + "end": 3747, + "loc": { + "start": { + "line": 79, + "column": 31 + }, + "end": { + "line": 88, + "column": 10 + } + }, + "callee": { + "type": "MemberExpression", + "start": 3391, + "end": 3413, + "loc": { + "start": { + "line": 79, + "column": 31 + }, + "end": { + "line": 79, + "column": 53 } }, "object": { "type": "MemberExpression", - "start": 2329, - "end": 2341, + "start": 3391, + "end": 3410, "loc": { "start": { - "line": 73, - "column": 28 + "line": 79, + "column": 31 }, "end": { - "line": 73, - "column": 40 + "line": 79, + "column": 50 } }, "object": { - "type": "Identifier", - "start": 2329, - "end": 2335, + "type": "MemberExpression", + "start": 3391, + "end": 3403, "loc": { "start": { - "line": 73, - "column": 28 + "line": 79, + "column": 31 }, "end": { - "line": 73, - "column": 34 + "line": 79, + "column": 43 + } + }, + "object": { + "type": "Identifier", + "start": 3391, + "end": 3397, + "loc": { + "start": { + "line": 79, + "column": 31 + }, + "end": { + "line": 79, + "column": 37 + }, + "identifierName": "viewer" }, - "identifierName": "viewer" + "name": "viewer" }, - "name": "viewer" + "property": { + "type": "Identifier", + "start": 3398, + "end": 3403, + "loc": { + "start": { + "line": 79, + "column": 38 + }, + "end": { + "line": 79, + "column": 43 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false }, "property": { "type": "Identifier", - "start": 2336, - "end": 2341, + "start": 3404, + "end": 3410, "loc": { "start": { - "line": 73, - "column": 35 + "line": 79, + "column": 44 }, "end": { - "line": 73, - "column": 40 + "line": 79, + "column": 50 }, - "identifierName": "scene" + "identifierName": "camera" }, - "name": "scene" + "name": "camera" }, "computed": false }, "property": { "type": "Identifier", - "start": 2342, - "end": 2344, + "start": 3411, + "end": 3413, "loc": { "start": { - "line": 73, - "column": 41 + "line": 79, + "column": 51 }, "end": { - "line": 73, - "column": 43 + "line": 79, + "column": 53 }, "identifierName": "on" }, @@ -1968,35 +2344,35 @@ "arguments": [ { "type": "StringLiteral", - "start": 2345, - "end": 2351, + "start": 3414, + "end": 3422, "loc": { "start": { - "line": 73, - "column": 44 + "line": 79, + "column": 54 }, "end": { - "line": 73, - "column": 50 + "line": 79, + "column": 62 } }, "extra": { - "rawValue": "tick", - "raw": "\"tick\"" + "rawValue": "matrix", + "raw": "\"matrix\"" }, - "value": "tick" + "value": "matrix" }, { "type": "ArrowFunctionExpression", - "start": 2353, - "end": 2841, + "start": 3424, + "end": 3746, "loc": { "start": { - "line": 73, - "column": 52 + "line": 79, + "column": 64 }, "end": { - "line": 87, + "line": 88, "column": 9 } }, @@ -2004,65 +2380,112 @@ "generator": false, "expression": false, "async": false, - "params": [ - { - "type": "Identifier", - "start": 2354, - "end": 2363, - "loc": { - "start": { - "line": 73, - "column": 53 - }, - "end": { - "line": 73, - "column": 62 - }, - "identifierName": "tickEvent" - }, - "name": "tickEvent" - } - ], + "params": [], "body": { "type": "BlockStatement", - "start": 2368, - "end": 2841, + "start": 3430, + "end": 3746, "loc": { "start": { - "line": 73, - "column": 67 + "line": 79, + "column": 70 }, "end": { - "line": 87, + "line": 88, "column": 9 } }, "body": [ + { + "type": "ExpressionStatement", + "start": 3444, + "end": 3468, + "loc": { + "start": { + "line": 80, + "column": 12 + }, + "end": { + "line": 80, + "column": 36 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 3444, + "end": 3467, + "loc": { + "start": { + "line": 80, + "column": 12 + }, + "end": { + "line": 80, + "column": 35 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 3444, + "end": 3449, + "loc": { + "start": { + "line": 80, + "column": 12 + }, + "end": { + "line": 80, + "column": 17 + }, + "identifierName": "timer" + }, + "name": "timer" + }, + "right": { + "type": "Identifier", + "start": 3452, + "end": 3467, + "loc": { + "start": { + "line": 80, + "column": 20 + }, + "end": { + "line": 80, + "column": 35 + }, + "identifierName": "timeoutDuration" + }, + "name": "timeoutDuration" + } + } + }, { "type": "IfStatement", - "start": 2399, - "end": 2453, + "start": 3481, + "end": 3736, "loc": { "start": { - "line": 74, + "line": 81, "column": 12 }, "end": { - "line": 76, + "line": 87, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 2403, - "end": 2412, + "start": 3485, + "end": 3494, "loc": { "start": { - "line": 74, + "line": 81, "column": 16 }, "end": { - "line": 74, + "line": 81, "column": 25 } }, @@ -2070,910 +2493,638 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 2404, - "end": 2412, + "start": 3486, + "end": 3494, "loc": { "start": { - "line": 74, + "line": 81, "column": 17 }, "end": { - "line": 74, + "line": 81, "column": 25 }, "identifierName": "fastMode" }, - "name": "fastMode", - "leadingComments": null + "name": "fastMode" }, "extra": { "parenthesizedArgument": false - }, - "leadingComments": null + } }, "consequent": { "type": "BlockStatement", - "start": 2414, - "end": 2453, + "start": 3496, + "end": 3736, "loc": { "start": { - "line": 74, + "line": 81, "column": 27 }, "end": { - "line": 76, + "line": 87, "column": 13 } }, "body": [ { - "type": "ReturnStatement", - "start": 2432, - "end": 2439, + "type": "ExpressionStatement", + "start": 3514, + "end": 3533, "loc": { "start": { - "line": 75, + "line": 82, "column": 16 }, "end": { - "line": 75, - "column": 23 + "line": 82, + "column": 35 } }, - "argument": null - } - ], - "directives": [] - }, - "alternate": null, - "leadingComments": [ - { - "type": "CommentLine", - "value": " Milliseconds", - "start": 2371, - "end": 2386, - "loc": { - "start": { - "line": 73, - "column": 70 - }, - "end": { - "line": 73, - "column": 85 - } - } - } - ] - }, - { - "type": "ExpressionStatement", - "start": 2466, - "end": 2495, - "loc": { - "start": { - "line": 77, - "column": 12 - }, - "end": { - "line": 77, - "column": 41 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2466, - "end": 2494, - "loc": { - "start": { - "line": 77, - "column": 12 - }, - "end": { - "line": 77, - "column": 40 - } - }, - "operator": "-=", - "left": { - "type": "Identifier", - "start": 2466, - "end": 2471, - "loc": { - "start": { - "line": 77, - "column": 12 - }, - "end": { - "line": 77, - "column": 17 - }, - "identifierName": "timer" - }, - "name": "timer" - }, - "right": { - "type": "MemberExpression", - "start": 2475, - "end": 2494, - "loc": { - "start": { - "line": 77, - "column": 21 - }, - "end": { - "line": 77, - "column": 40 - } - }, - "object": { - "type": "Identifier", - "start": 2475, - "end": 2484, - "loc": { - "start": { - "line": 77, - "column": 21 - }, - "end": { - "line": 77, - "column": 30 - }, - "identifierName": "tickEvent" - }, - "name": "tickEvent" - }, - "property": { - "type": "Identifier", - "start": 2485, - "end": 2494, - "loc": { - "start": { - "line": 77, - "column": 31 + "expression": { + "type": "CallExpression", + "start": 3514, + "end": 3532, + "loc": { + "start": { + "line": 82, + "column": 16 + }, + "end": { + "line": 82, + "column": 34 + } }, - "end": { - "line": 77, - "column": 40 + "callee": { + "type": "MemberExpression", + "start": 3514, + "end": 3530, + "loc": { + "start": { + "line": 82, + "column": 16 + }, + "end": { + "line": 82, + "column": 32 + } + }, + "object": { + "type": "ThisExpression", + "start": 3514, + "end": 3518, + "loc": { + "start": { + "line": 82, + "column": 16 + }, + "end": { + "line": 82, + "column": 20 + } + } + }, + "property": { + "type": "Identifier", + "start": 3519, + "end": 3530, + "loc": { + "start": { + "line": 82, + "column": 21 + }, + "end": { + "line": 82, + "column": 32 + }, + "identifierName": "_cancelFade" + }, + "name": "_cancelFade" + }, + "computed": false }, - "identifierName": "deltaTime" - }, - "name": "deltaTime" - }, - "computed": false - } - } - }, - { - "type": "IfStatement", - "start": 2508, - "end": 2831, - "loc": { - "start": { - "line": 78, - "column": 12 - }, - "end": { - "line": 86, - "column": 13 - } - }, - "test": { - "type": "BinaryExpression", - "start": 2512, - "end": 2522, - "loc": { - "start": { - "line": 78, - "column": 16 - }, - "end": { - "line": 78, - "column": 26 - } - }, - "left": { - "type": "Identifier", - "start": 2512, - "end": 2517, - "loc": { - "start": { - "line": 78, - "column": 16 - }, - "end": { - "line": 78, - "column": 21 - }, - "identifierName": "timer" - }, - "name": "timer" - }, - "operator": "<=", - "right": { - "type": "NumericLiteral", - "start": 2521, - "end": 2522, - "loc": { - "start": { - "line": 78, - "column": 25 - }, - "end": { - "line": 78, - "column": 26 + "arguments": [] } }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - } - }, - "consequent": { - "type": "BlockStatement", - "start": 2524, - "end": 2831, - "loc": { - "start": { - "line": 78, - "column": 28 - }, - "end": { - "line": 86, - "column": 13 - } - }, - "body": [ { - "type": "IfStatement", - "start": 2542, - "end": 2817, + "type": "ExpressionStatement", + "start": 3550, + "end": 3582, "loc": { "start": { - "line": 79, + "line": 83, "column": 16 }, "end": { - "line": 85, - "column": 17 + "line": 83, + "column": 48 } }, - "test": { - "type": "Identifier", - "start": 2546, - "end": 2554, - "loc": { - "start": { - "line": 79, - "column": 20 - }, - "end": { - "line": 79, - "column": 28 - }, - "identifierName": "fastMode" - }, - "name": "fastMode" - }, - "consequent": { - "type": "BlockStatement", - "start": 2556, - "end": 2817, + "expression": { + "type": "AssignmentExpression", + "start": 3550, + "end": 3581, "loc": { "start": { - "line": 79, - "column": 30 + "line": 83, + "column": 16 }, "end": { - "line": 85, - "column": 17 + "line": 83, + "column": 47 } }, - "body": [ - { - "type": "ExpressionStatement", - "start": 2578, - "end": 2596, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 3550, + "end": 3573, + "loc": { + "start": { + "line": 83, + "column": 16 + }, + "end": { + "line": 83, + "column": 39 + } + }, + "object": { + "type": "MemberExpression", + "start": 3550, + "end": 3562, "loc": { "start": { - "line": 80, - "column": 20 + "line": 83, + "column": 16 }, "end": { - "line": 80, - "column": 38 + "line": 83, + "column": 28 } }, - "expression": { - "type": "CallExpression", - "start": 2578, - "end": 2595, + "object": { + "type": "Identifier", + "start": 3550, + "end": 3556, "loc": { "start": { - "line": 80, - "column": 20 + "line": 83, + "column": 16 }, "end": { - "line": 80, - "column": 37 - } - }, - "callee": { - "type": "MemberExpression", - "start": 2578, - "end": 2593, - "loc": { - "start": { - "line": 80, - "column": 20 - }, - "end": { - "line": 80, - "column": 35 - } + "line": 83, + "column": 22 }, - "object": { - "type": "ThisExpression", - "start": 2578, - "end": 2582, - "loc": { - "start": { - "line": 80, - "column": 20 - }, - "end": { - "line": 80, - "column": 24 - } - } + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 3557, + "end": 3562, + "loc": { + "start": { + "line": 83, + "column": 23 }, - "property": { - "type": "Identifier", - "start": 2583, - "end": 2593, - "loc": { - "start": { - "line": 80, - "column": 25 - }, - "end": { - "line": 80, - "column": 35 - }, - "identifierName": "_startFade" - }, - "name": "_startFade" + "end": { + "line": 83, + "column": 28 }, - "computed": false + "identifierName": "scene" }, - "arguments": [] + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 3563, + "end": 3573, + "loc": { + "start": { + "line": 83, + "column": 29 + }, + "end": { + "line": 83, + "column": 39 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" + }, + "computed": false + }, + "right": { + "type": "BooleanLiteral", + "start": 3576, + "end": 3581, + "loc": { + "start": { + "line": 83, + "column": 42 + }, + "end": { + "line": 83, + "column": 47 } }, - { - "type": "ExpressionStatement", - "start": 2617, - "end": 2648, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 3599, + "end": 3632, + "loc": { + "start": { + "line": 84, + "column": 16 + }, + "end": { + "line": 84, + "column": 49 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 3599, + "end": 3631, + "loc": { + "start": { + "line": 84, + "column": 16 + }, + "end": { + "line": 84, + "column": 48 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 3599, + "end": 3623, + "loc": { + "start": { + "line": 84, + "column": 16 + }, + "end": { + "line": 84, + "column": 40 + } + }, + "object": { + "type": "MemberExpression", + "start": 3599, + "end": 3615, "loc": { "start": { - "line": 81, - "column": 20 + "line": 84, + "column": 16 }, "end": { - "line": 81, - "column": 51 + "line": 84, + "column": 32 } }, - "expression": { - "type": "AssignmentExpression", - "start": 2617, - "end": 2647, + "object": { + "type": "MemberExpression", + "start": 3599, + "end": 3611, "loc": { "start": { - "line": 81, - "column": 20 + "line": 84, + "column": 16 }, "end": { - "line": 81, - "column": 50 + "line": 84, + "column": 28 } }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 2617, - "end": 2640, + "object": { + "type": "Identifier", + "start": 3599, + "end": 3605, "loc": { "start": { - "line": 81, - "column": 20 + "line": 84, + "column": 16 }, "end": { - "line": 81, - "column": 43 - } - }, - "object": { - "type": "MemberExpression", - "start": 2617, - "end": 2629, - "loc": { - "start": { - "line": 81, - "column": 20 - }, - "end": { - "line": 81, - "column": 32 - } - }, - "object": { - "type": "Identifier", - "start": 2617, - "end": 2623, - "loc": { - "start": { - "line": 81, - "column": 20 - }, - "end": { - "line": 81, - "column": 26 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 2624, - "end": 2629, - "loc": { - "start": { - "line": 81, - "column": 27 - }, - "end": { - "line": 81, - "column": 32 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2630, - "end": 2640, - "loc": { - "start": { - "line": 81, - "column": 33 - }, - "end": { - "line": 81, - "column": 43 - }, - "identifierName": "pbrEnabled" + "line": 84, + "column": 22 }, - "name": "pbrEnabled" + "identifierName": "viewer" }, - "computed": false + "name": "viewer" }, - "right": { - "type": "BooleanLiteral", - "start": 2643, - "end": 2647, + "property": { + "type": "Identifier", + "start": 3606, + "end": 3611, "loc": { "start": { - "line": 81, - "column": 46 + "line": 84, + "column": 23 }, "end": { - "line": 81, - "column": 50 - } + "line": 84, + "column": 28 + }, + "identifierName": "scene" }, - "value": true - } + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 3612, + "end": 3615, + "loc": { + "start": { + "line": 84, + "column": 29 + }, + "end": { + "line": 84, + "column": 32 + }, + "identifierName": "sao" + }, + "name": "sao" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 3616, + "end": 3623, + "loc": { + "start": { + "line": 84, + "column": 33 + }, + "end": { + "line": 84, + "column": 40 + }, + "identifierName": "enabled" + }, + "name": "enabled" + }, + "computed": false + }, + "right": { + "type": "BooleanLiteral", + "start": 3626, + "end": 3631, + "loc": { + "start": { + "line": 84, + "column": 43 + }, + "end": { + "line": 84, + "column": 48 } }, - { - "type": "ExpressionStatement", - "start": 2669, - "end": 2701, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 3649, + "end": 3689, + "loc": { + "start": { + "line": 85, + "column": 16 + }, + "end": { + "line": 85, + "column": 56 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 3649, + "end": 3688, + "loc": { + "start": { + "line": 85, + "column": 16 + }, + "end": { + "line": 85, + "column": 55 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 3649, + "end": 3680, + "loc": { + "start": { + "line": 85, + "column": 16 + }, + "end": { + "line": 85, + "column": 47 + } + }, + "object": { + "type": "MemberExpression", + "start": 3649, + "end": 3674, "loc": { "start": { - "line": 82, - "column": 20 + "line": 85, + "column": 16 }, "end": { - "line": 82, - "column": 52 + "line": 85, + "column": 41 } }, - "expression": { - "type": "AssignmentExpression", - "start": 2669, - "end": 2700, + "object": { + "type": "MemberExpression", + "start": 3649, + "end": 3661, "loc": { "start": { - "line": 82, - "column": 20 + "line": 85, + "column": 16 }, "end": { - "line": 82, - "column": 51 + "line": 85, + "column": 28 } }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 2669, - "end": 2693, + "object": { + "type": "Identifier", + "start": 3649, + "end": 3655, "loc": { "start": { - "line": 82, - "column": 20 + "line": 85, + "column": 16 }, "end": { - "line": 82, - "column": 44 - } - }, - "object": { - "type": "MemberExpression", - "start": 2669, - "end": 2685, - "loc": { - "start": { - "line": 82, - "column": 20 - }, - "end": { - "line": 82, - "column": 36 - } - }, - "object": { - "type": "MemberExpression", - "start": 2669, - "end": 2681, - "loc": { - "start": { - "line": 82, - "column": 20 - }, - "end": { - "line": 82, - "column": 32 - } - }, - "object": { - "type": "Identifier", - "start": 2669, - "end": 2675, - "loc": { - "start": { - "line": 82, - "column": 20 - }, - "end": { - "line": 82, - "column": 26 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 2676, - "end": 2681, - "loc": { - "start": { - "line": 82, - "column": 27 - }, - "end": { - "line": 82, - "column": 32 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2682, - "end": 2685, - "loc": { - "start": { - "line": 82, - "column": 33 - }, - "end": { - "line": 82, - "column": 36 - }, - "identifierName": "sao" - }, - "name": "sao" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2686, - "end": 2693, - "loc": { - "start": { - "line": 82, - "column": 37 - }, - "end": { - "line": 82, - "column": 44 - }, - "identifierName": "enabled" + "line": 85, + "column": 22 }, - "name": "enabled" + "identifierName": "viewer" }, - "computed": false + "name": "viewer" }, - "right": { - "type": "BooleanLiteral", - "start": 2696, - "end": 2700, + "property": { + "type": "Identifier", + "start": 3656, + "end": 3661, "loc": { "start": { - "line": 82, - "column": 47 + "line": 85, + "column": 23 }, "end": { - "line": 82, - "column": 51 - } + "line": 85, + "column": 28 + }, + "identifierName": "scene" }, - "value": true - } - } - }, - { - "type": "ExpressionStatement", - "start": 2722, - "end": 2761, - "loc": { - "start": { - "line": 83, - "column": 20 + "name": "scene" }, - "end": { - "line": 83, - "column": 59 - } + "computed": false }, - "expression": { - "type": "AssignmentExpression", - "start": 2722, - "end": 2760, + "property": { + "type": "Identifier", + "start": 3662, + "end": 3674, "loc": { "start": { - "line": 83, - "column": 20 + "line": 85, + "column": 29 }, "end": { - "line": 83, - "column": 58 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 2722, - "end": 2753, - "loc": { - "start": { - "line": 83, - "column": 20 - }, - "end": { - "line": 83, - "column": 51 - } - }, - "object": { - "type": "MemberExpression", - "start": 2722, - "end": 2747, - "loc": { - "start": { - "line": 83, - "column": 20 - }, - "end": { - "line": 83, - "column": 45 - } - }, - "object": { - "type": "MemberExpression", - "start": 2722, - "end": 2734, - "loc": { - "start": { - "line": 83, - "column": 20 - }, - "end": { - "line": 83, - "column": 32 - } - }, - "object": { - "type": "Identifier", - "start": 2722, - "end": 2728, - "loc": { - "start": { - "line": 83, - "column": 20 - }, - "end": { - "line": 83, - "column": 26 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 2729, - "end": 2734, - "loc": { - "start": { - "line": 83, - "column": 27 - }, - "end": { - "line": 83, - "column": 32 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2735, - "end": 2747, - "loc": { - "start": { - "line": 83, - "column": 33 - }, - "end": { - "line": 83, - "column": 45 - }, - "identifierName": "edgeMaterial" - }, - "name": "edgeMaterial" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2748, - "end": 2753, - "loc": { - "start": { - "line": 83, - "column": 46 - }, - "end": { - "line": 83, - "column": 51 - }, - "identifierName": "edges" - }, - "name": "edges" + "line": 85, + "column": 41 }, - "computed": false + "identifierName": "edgeMaterial" }, - "right": { - "type": "BooleanLiteral", - "start": 2756, - "end": 2760, - "loc": { - "start": { - "line": 83, - "column": 54 - }, - "end": { - "line": 83, - "column": 58 - } - }, - "value": true - } - } + "name": "edgeMaterial" + }, + "computed": false }, - { - "type": "ExpressionStatement", - "start": 2782, - "end": 2799, + "property": { + "type": "Identifier", + "start": 3675, + "end": 3680, "loc": { "start": { - "line": 84, - "column": 20 + "line": 85, + "column": 42 }, "end": { - "line": 84, - "column": 37 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2782, - "end": 2798, - "loc": { - "start": { - "line": 84, - "column": 20 - }, - "end": { - "line": 84, - "column": 36 - } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 2782, - "end": 2790, - "loc": { - "start": { - "line": 84, - "column": 20 - }, - "end": { - "line": 84, - "column": 28 - }, - "identifierName": "fastMode" - }, - "name": "fastMode" + "line": 85, + "column": 47 }, - "right": { - "type": "BooleanLiteral", - "start": 2793, - "end": 2798, - "loc": { - "start": { - "line": 84, - "column": 31 - }, - "end": { - "line": 84, - "column": 36 - } - }, - "value": false - } + "identifierName": "edges" + }, + "name": "edges" + }, + "computed": false + }, + "right": { + "type": "BooleanLiteral", + "start": 3683, + "end": 3688, + "loc": { + "start": { + "line": 85, + "column": 50 + }, + "end": { + "line": 85, + "column": 55 } - } - ], - "directives": [] + }, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 3706, + "end": 3722, + "loc": { + "start": { + "line": 86, + "column": 16 + }, + "end": { + "line": 86, + "column": 32 + } }, - "alternate": null + "expression": { + "type": "AssignmentExpression", + "start": 3706, + "end": 3721, + "loc": { + "start": { + "line": 86, + "column": 16 + }, + "end": { + "line": 86, + "column": 31 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 3706, + "end": 3714, + "loc": { + "start": { + "line": 86, + "column": 16 + }, + "end": { + "line": 86, + "column": 24 + }, + "identifierName": "fastMode" + }, + "name": "fastMode" + }, + "right": { + "type": "BooleanLiteral", + "start": 3717, + "end": 3721, + "loc": { + "start": { + "line": 86, + "column": 27 + }, + "end": { + "line": 86, + "column": 31 + } + }, + "value": true + } + } } ], "directives": [] @@ -2990,135 +3141,135 @@ }, { "type": "ExpressionStatement", - "start": 2853, - "end": 3245, + "start": 3758, + "end": 4501, "loc": { "start": { - "line": 89, + "line": 90, "column": 8 }, "end": { - "line": 98, + "line": 107, "column": 11 } }, "expression": { "type": "AssignmentExpression", - "start": 2853, - "end": 3244, + "start": 3758, + "end": 4500, "loc": { "start": { - "line": 89, + "line": 90, "column": 8 }, "end": { - "line": 98, + "line": 107, "column": 10 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 2853, - "end": 2882, + "start": 3758, + "end": 3775, "loc": { "start": { - "line": 89, + "line": 90, "column": 8 }, "end": { - "line": 89, - "column": 37 + "line": 90, + "column": 25 } }, "object": { "type": "ThisExpression", - "start": 2853, - "end": 2857, + "start": 3758, + "end": 3762, "loc": { "start": { - "line": 89, + "line": 90, "column": 8 }, "end": { - "line": 89, + "line": 90, "column": 12 } } }, "property": { "type": "Identifier", - "start": 2858, - "end": 2882, + "start": 3763, + "end": 3775, "loc": { "start": { - "line": 89, + "line": 90, "column": 13 }, "end": { - "line": 89, - "column": 37 + "line": 90, + "column": 25 }, - "identifierName": "_onSceneObjectVisibility" + "identifierName": "_onSceneTick" }, - "name": "_onSceneObjectVisibility" + "name": "_onSceneTick" }, "computed": false }, "right": { "type": "CallExpression", - "start": 2885, - "end": 3244, + "start": 3778, + "end": 4500, "loc": { "start": { - "line": 89, - "column": 40 + "line": 90, + "column": 28 }, "end": { - "line": 98, + "line": 107, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 2885, - "end": 2900, + "start": 3778, + "end": 3793, "loc": { "start": { - "line": 89, - "column": 40 + "line": 90, + "column": 28 }, "end": { - "line": 89, - "column": 55 + "line": 90, + "column": 43 } }, "object": { "type": "MemberExpression", - "start": 2885, - "end": 2897, + "start": 3778, + "end": 3790, "loc": { "start": { - "line": 89, - "column": 40 + "line": 90, + "column": 28 }, "end": { - "line": 89, - "column": 52 + "line": 90, + "column": 40 } }, "object": { "type": "Identifier", - "start": 2885, - "end": 2891, + "start": 3778, + "end": 3784, "loc": { "start": { - "line": 89, - "column": 40 + "line": 90, + "column": 28 }, "end": { - "line": 89, - "column": 46 + "line": 90, + "column": 34 }, "identifierName": "viewer" }, @@ -3126,16 +3277,16 @@ }, "property": { "type": "Identifier", - "start": 2892, - "end": 2897, + "start": 3785, + "end": 3790, "loc": { "start": { - "line": 89, - "column": 47 + "line": 90, + "column": 35 }, "end": { - "line": 89, - "column": 52 + "line": 90, + "column": 40 }, "identifierName": "scene" }, @@ -3145,16 +3296,16 @@ }, "property": { "type": "Identifier", - "start": 2898, - "end": 2900, + "start": 3791, + "end": 3793, "loc": { "start": { - "line": 89, - "column": 53 + "line": 90, + "column": 41 }, "end": { - "line": 89, - "column": 55 + "line": 90, + "column": 43 }, "identifierName": "on" }, @@ -3165,35 +3316,35 @@ "arguments": [ { "type": "StringLiteral", - "start": 2901, - "end": 2919, + "start": 3794, + "end": 3800, "loc": { "start": { - "line": 89, - "column": 56 + "line": 90, + "column": 44 }, "end": { - "line": 89, - "column": 74 + "line": 90, + "column": 50 } }, "extra": { - "rawValue": "objectVisibility", - "raw": "\"objectVisibility\"" + "rawValue": "tick", + "raw": "\"tick\"" }, - "value": "objectVisibility" + "value": "tick" }, { "type": "ArrowFunctionExpression", - "start": 2921, - "end": 3243, + "start": 3802, + "end": 4499, "loc": { "start": { - "line": 89, - "column": 76 + "line": 90, + "column": 52 }, "end": { - "line": 98, + "line": 107, "column": 9 } }, @@ -3201,105 +3352,58 @@ "generator": false, "expression": false, "async": false, - "params": [], + "params": [ + { + "type": "Identifier", + "start": 3803, + "end": 3812, + "loc": { + "start": { + "line": 90, + "column": 53 + }, + "end": { + "line": 90, + "column": 62 + }, + "identifierName": "tickEvent" + }, + "name": "tickEvent" + } + ], "body": { "type": "BlockStatement", - "start": 2927, - "end": 3243, + "start": 3817, + "end": 4499, "loc": { "start": { - "line": 89, - "column": 82 + "line": 90, + "column": 67 }, "end": { - "line": 98, + "line": 107, "column": 9 } }, "body": [ - { - "type": "ExpressionStatement", - "start": 2941, - "end": 2965, - "loc": { - "start": { - "line": 90, - "column": 12 - }, - "end": { - "line": 90, - "column": 36 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2941, - "end": 2964, - "loc": { - "start": { - "line": 90, - "column": 12 - }, - "end": { - "line": 90, - "column": 35 - } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 2941, - "end": 2946, - "loc": { - "start": { - "line": 90, - "column": 12 - }, - "end": { - "line": 90, - "column": 17 - }, - "identifierName": "timer" - }, - "name": "timer" - }, - "right": { - "type": "Identifier", - "start": 2949, - "end": 2964, - "loc": { - "start": { - "line": 90, - "column": 20 - }, - "end": { - "line": 90, - "column": 35 - }, - "identifierName": "timeoutDuration" - }, - "name": "timeoutDuration" - } - } - }, { "type": "IfStatement", - "start": 2978, - "end": 3233, + "start": 3848, + "end": 3902, "loc": { "start": { "line": 91, "column": 12 }, "end": { - "line": 97, + "line": 93, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 2982, - "end": 2991, + "start": 3852, + "end": 3861, "loc": { "start": { "line": 91, @@ -3314,8 +3418,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 2983, - "end": 2991, + "start": 3853, + "end": 3861, "loc": { "start": { "line": 91, @@ -3327,31 +3431,33 @@ }, "identifierName": "fastMode" }, - "name": "fastMode" + "name": "fastMode", + "leadingComments": null }, "extra": { "parenthesizedArgument": false - } + }, + "leadingComments": null }, "consequent": { "type": "BlockStatement", - "start": 2993, - "end": 3233, + "start": 3863, + "end": 3902, "loc": { "start": { "line": 91, "column": 27 }, "end": { - "line": 97, + "line": 93, "column": 13 } }, "body": [ { - "type": "ExpressionStatement", - "start": 3011, - "end": 3030, + "type": "ReturnStatement", + "start": 3881, + "end": 3888, "loc": { "start": { "line": 92, @@ -3359,593 +3465,1152 @@ }, "end": { "line": 92, - "column": 35 + "column": 23 } }, - "expression": { - "type": "CallExpression", - "start": 3011, - "end": 3029, - "loc": { - "start": { - "line": 92, - "column": 16 - }, - "end": { - "line": 92, - "column": 34 - } - }, - "callee": { - "type": "MemberExpression", - "start": 3011, - "end": 3027, - "loc": { - "start": { - "line": 92, - "column": 16 - }, - "end": { - "line": 92, - "column": 32 - } - }, - "object": { - "type": "ThisExpression", - "start": 3011, - "end": 3015, - "loc": { - "start": { - "line": 92, - "column": 16 - }, - "end": { - "line": 92, - "column": 20 - } - } - }, - "property": { - "type": "Identifier", - "start": 3016, - "end": 3027, - "loc": { - "start": { - "line": 92, - "column": 21 - }, - "end": { - "line": 92, - "column": 32 - }, - "identifierName": "_cancelFade" - }, - "name": "_cancelFade" - }, - "computed": false - }, - "arguments": [] - } - }, - { - "type": "ExpressionStatement", - "start": 3047, - "end": 3079, - "loc": { - "start": { - "line": 93, - "column": 16 - }, - "end": { - "line": 93, - "column": 48 - } + "argument": null + } + ], + "directives": [] + }, + "alternate": null, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Milliseconds", + "start": 3820, + "end": 3835, + "loc": { + "start": { + "line": 90, + "column": 70 }, - "expression": { - "type": "AssignmentExpression", - "start": 3047, - "end": 3078, - "loc": { - "start": { - "line": 93, - "column": 16 - }, - "end": { - "line": 93, - "column": 47 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 3047, - "end": 3070, - "loc": { - "start": { - "line": 93, - "column": 16 - }, - "end": { - "line": 93, - "column": 39 - } - }, - "object": { - "type": "MemberExpression", - "start": 3047, - "end": 3059, - "loc": { - "start": { - "line": 93, - "column": 16 - }, - "end": { - "line": 93, - "column": 28 - } - }, - "object": { - "type": "Identifier", - "start": 3047, - "end": 3053, - "loc": { - "start": { - "line": 93, - "column": 16 - }, - "end": { - "line": 93, - "column": 22 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 3054, - "end": 3059, - "loc": { - "start": { - "line": 93, - "column": 23 - }, - "end": { - "line": 93, - "column": 28 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 3060, - "end": 3070, - "loc": { - "start": { - "line": 93, - "column": 29 - }, - "end": { - "line": 93, - "column": 39 - }, - "identifierName": "pbrEnabled" - }, - "name": "pbrEnabled" - }, - "computed": false + "end": { + "line": 90, + "column": 85 + } + } + } + ] + }, + { + "type": "ExpressionStatement", + "start": 3915, + "end": 3944, + "loc": { + "start": { + "line": 94, + "column": 12 + }, + "end": { + "line": 94, + "column": 41 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 3915, + "end": 3943, + "loc": { + "start": { + "line": 94, + "column": 12 + }, + "end": { + "line": 94, + "column": 40 + } + }, + "operator": "-=", + "left": { + "type": "Identifier", + "start": 3915, + "end": 3920, + "loc": { + "start": { + "line": 94, + "column": 12 + }, + "end": { + "line": 94, + "column": 17 + }, + "identifierName": "timer" + }, + "name": "timer" + }, + "right": { + "type": "MemberExpression", + "start": 3924, + "end": 3943, + "loc": { + "start": { + "line": 94, + "column": 21 + }, + "end": { + "line": 94, + "column": 40 + } + }, + "object": { + "type": "Identifier", + "start": 3924, + "end": 3933, + "loc": { + "start": { + "line": 94, + "column": 21 }, - "right": { - "type": "BooleanLiteral", - "start": 3073, - "end": 3078, - "loc": { - "start": { - "line": 93, - "column": 42 - }, - "end": { - "line": 93, - "column": 47 - } - }, - "value": false - } + "end": { + "line": 94, + "column": 30 + }, + "identifierName": "tickEvent" + }, + "name": "tickEvent" + }, + "property": { + "type": "Identifier", + "start": 3934, + "end": 3943, + "loc": { + "start": { + "line": 94, + "column": 31 + }, + "end": { + "line": 94, + "column": 40 + }, + "identifierName": "deltaTime" + }, + "name": "deltaTime" + }, + "computed": false + } + } + }, + { + "type": "IfStatement", + "start": 3957, + "end": 4489, + "loc": { + "start": { + "line": 95, + "column": 12 + }, + "end": { + "line": 106, + "column": 13 + } + }, + "test": { + "type": "BinaryExpression", + "start": 3961, + "end": 3971, + "loc": { + "start": { + "line": 95, + "column": 16 + }, + "end": { + "line": 95, + "column": 26 + } + }, + "left": { + "type": "Identifier", + "start": 3961, + "end": 3966, + "loc": { + "start": { + "line": 95, + "column": 16 + }, + "end": { + "line": 95, + "column": 21 + }, + "identifierName": "timer" + }, + "name": "timer" + }, + "operator": "<=", + "right": { + "type": "NumericLiteral", + "start": 3970, + "end": 3971, + "loc": { + "start": { + "line": 95, + "column": 25 + }, + "end": { + "line": 95, + "column": 26 } }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + "consequent": { + "type": "BlockStatement", + "start": 3973, + "end": 4489, + "loc": { + "start": { + "line": 95, + "column": 28 + }, + "end": { + "line": 106, + "column": 13 + } + }, + "body": [ { - "type": "ExpressionStatement", - "start": 3096, - "end": 3129, + "type": "IfStatement", + "start": 3991, + "end": 4475, "loc": { "start": { - "line": 94, + "line": 96, "column": 16 }, "end": { - "line": 94, - "column": 49 + "line": 105, + "column": 17 } }, - "expression": { - "type": "AssignmentExpression", - "start": 3096, - "end": 3128, + "test": { + "type": "Identifier", + "start": 3995, + "end": 4003, "loc": { "start": { - "line": 94, - "column": 16 + "line": 96, + "column": 20 }, "end": { - "line": 94, - "column": 48 - } + "line": 96, + "column": 28 + }, + "identifierName": "fastMode" }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 3096, - "end": 3120, - "loc": { - "start": { - "line": 94, - "column": 16 - }, - "end": { - "line": 94, - "column": 40 - } + "name": "fastMode" + }, + "consequent": { + "type": "BlockStatement", + "start": 4005, + "end": 4475, + "loc": { + "start": { + "line": 96, + "column": 30 }, - "object": { - "type": "MemberExpression", - "start": 3096, - "end": 3112, + "end": { + "line": 105, + "column": 17 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 4027, + "end": 4045, "loc": { "start": { - "line": 94, - "column": 16 + "line": 97, + "column": 20 }, "end": { - "line": 94, - "column": 32 + "line": 97, + "column": 38 } }, - "object": { - "type": "MemberExpression", - "start": 3096, - "end": 3108, + "expression": { + "type": "CallExpression", + "start": 4027, + "end": 4044, "loc": { "start": { - "line": 94, - "column": 16 + "line": 97, + "column": 20 }, "end": { - "line": 94, - "column": 28 + "line": 97, + "column": 37 } }, - "object": { - "type": "Identifier", - "start": 3096, - "end": 3102, - "loc": { - "start": { - "line": 94, - "column": 16 - }, - "end": { - "line": 94, - "column": 22 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 3103, - "end": 3108, + "callee": { + "type": "MemberExpression", + "start": 4027, + "end": 4042, "loc": { "start": { - "line": 94, - "column": 23 + "line": 97, + "column": 20 }, "end": { - "line": 94, - "column": 28 - }, - "identifierName": "scene" + "line": 97, + "column": 35 + } }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 3109, - "end": 3112, - "loc": { - "start": { - "line": 94, - "column": 29 + "object": { + "type": "ThisExpression", + "start": 4027, + "end": 4031, + "loc": { + "start": { + "line": 97, + "column": 20 + }, + "end": { + "line": 97, + "column": 24 + } + } }, - "end": { - "line": 94, - "column": 32 + "property": { + "type": "Identifier", + "start": 4032, + "end": 4042, + "loc": { + "start": { + "line": 97, + "column": 25 + }, + "end": { + "line": 97, + "column": 35 + }, + "identifierName": "_startFade" + }, + "name": "_startFade" }, - "identifierName": "sao" - }, - "name": "sao" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 3113, - "end": 3120, - "loc": { - "start": { - "line": 94, - "column": 33 - }, - "end": { - "line": 94, - "column": 40 + "computed": false }, - "identifierName": "enabled" - }, - "name": "enabled" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 3123, - "end": 3128, - "loc": { - "start": { - "line": 94, - "column": 43 - }, - "end": { - "line": 94, - "column": 48 - } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 3146, - "end": 3186, - "loc": { - "start": { - "line": 95, - "column": 16 - }, - "end": { - "line": 95, - "column": 56 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 3146, - "end": 3185, - "loc": { - "start": { - "line": 95, - "column": 16 - }, - "end": { - "line": 95, - "column": 55 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 3146, - "end": 3177, - "loc": { - "start": { - "line": 95, - "column": 16 - }, - "end": { - "line": 95, - "column": 47 + "arguments": [] } }, - "object": { - "type": "MemberExpression", - "start": 3146, - "end": 3171, + { + "type": "ExpressionStatement", + "start": 4066, + "end": 4418, "loc": { "start": { - "line": 95, - "column": 16 + "line": 98, + "column": 20 }, "end": { - "line": 95, - "column": 41 + "line": 102, + "column": 28 } }, - "object": { - "type": "MemberExpression", - "start": 3146, - "end": 3158, + "expression": { + "type": "AssignmentExpression", + "start": 4066, + "end": 4417, "loc": { "start": { - "line": 95, - "column": 16 + "line": 98, + "column": 20 }, "end": { - "line": 95, - "column": 28 + "line": 102, + "column": 27 } }, - "object": { - "type": "Identifier", - "start": 3146, - "end": 3152, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 4066, + "end": 4082, "loc": { "start": { - "line": 95, - "column": 16 + "line": 98, + "column": 20 }, "end": { - "line": 95, - "column": 22 + "line": 98, + "column": 36 + } + }, + "object": { + "type": "ThisExpression", + "start": 4066, + "end": 4070, + "loc": { + "start": { + "line": 98, + "column": 20 + }, + "end": { + "line": 98, + "column": 24 + } + } + }, + "property": { + "type": "Identifier", + "start": 4071, + "end": 4082, + "loc": { + "start": { + "line": 98, + "column": 25 + }, + "end": { + "line": 98, + "column": 36 + }, + "identifierName": "_pInterval2" }, - "identifierName": "viewer" + "name": "_pInterval2" }, - "name": "viewer" + "computed": false }, - "property": { - "type": "Identifier", - "start": 3153, - "end": 3158, + "right": { + "type": "CallExpression", + "start": 4085, + "end": 4417, "loc": { "start": { - "line": 95, - "column": 23 + "line": 98, + "column": 39 }, "end": { - "line": 95, - "column": 28 + "line": 102, + "column": 27 + } + }, + "callee": { + "type": "Identifier", + "start": 4085, + "end": 4095, + "loc": { + "start": { + "line": 98, + "column": 39 + }, + "end": { + "line": 98, + "column": 49 + }, + "identifierName": "setTimeout" }, - "identifierName": "scene" + "name": "setTimeout" }, - "name": "scene" + "arguments": [ + { + "type": "ArrowFunctionExpression", + "start": 4096, + "end": 4411, + "loc": { + "start": { + "line": 98, + "column": 50 + }, + "end": { + "line": 102, + "column": 21 + } + }, + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 4102, + "end": 4411, + "loc": { + "start": { + "line": 98, + "column": 56 + }, + "end": { + "line": 102, + "column": 21 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 4199, + "end": 4242, + "loc": { + "start": { + "line": 99, + "column": 24 + }, + "end": { + "line": 99, + "column": 67 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 4199, + "end": 4241, + "loc": { + "start": { + "line": 99, + "column": 24 + }, + "end": { + "line": 99, + "column": 66 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 4199, + "end": 4222, + "loc": { + "start": { + "line": 99, + "column": 24 + }, + "end": { + "line": 99, + "column": 47 + } + }, + "object": { + "type": "MemberExpression", + "start": 4199, + "end": 4211, + "loc": { + "start": { + "line": 99, + "column": 24 + }, + "end": { + "line": 99, + "column": 36 + } + }, + "object": { + "type": "Identifier", + "start": 4199, + "end": 4205, + "loc": { + "start": { + "line": 99, + "column": 24 + }, + "end": { + "line": 99, + "column": 30 + }, + "identifierName": "viewer" + }, + "name": "viewer", + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 4206, + "end": 4211, + "loc": { + "start": { + "line": 99, + "column": 31 + }, + "end": { + "line": 99, + "column": 36 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 4212, + "end": 4222, + "loc": { + "start": { + "line": 99, + "column": 37 + }, + "end": { + "line": 99, + "column": 47 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" + }, + "computed": false, + "leadingComments": null + }, + "right": { + "type": "MemberExpression", + "start": 4225, + "end": 4241, + "loc": { + "start": { + "line": 99, + "column": 50 + }, + "end": { + "line": 99, + "column": 66 + } + }, + "object": { + "type": "ThisExpression", + "start": 4225, + "end": 4229, + "loc": { + "start": { + "line": 99, + "column": 50 + }, + "end": { + "line": 99, + "column": 54 + } + } + }, + "property": { + "type": "Identifier", + "start": 4230, + "end": 4241, + "loc": { + "start": { + "line": 99, + "column": 55 + }, + "end": { + "line": 99, + "column": 66 + }, + "identifierName": "_pbrEnabled" + }, + "name": "_pbrEnabled" + }, + "computed": false + }, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624", + "start": 4104, + "end": 4174, + "loc": { + "start": { + "line": 98, + "column": 58 + }, + "end": { + "line": 98, + "column": 128 + } + } + } + ] + }, + { + "type": "ExpressionStatement", + "start": 4267, + "end": 4311, + "loc": { + "start": { + "line": 100, + "column": 24 + }, + "end": { + "line": 100, + "column": 68 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 4267, + "end": 4310, + "loc": { + "start": { + "line": 100, + "column": 24 + }, + "end": { + "line": 100, + "column": 67 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 4267, + "end": 4291, + "loc": { + "start": { + "line": 100, + "column": 24 + }, + "end": { + "line": 100, + "column": 48 + } + }, + "object": { + "type": "MemberExpression", + "start": 4267, + "end": 4283, + "loc": { + "start": { + "line": 100, + "column": 24 + }, + "end": { + "line": 100, + "column": 40 + } + }, + "object": { + "type": "MemberExpression", + "start": 4267, + "end": 4279, + "loc": { + "start": { + "line": 100, + "column": 24 + }, + "end": { + "line": 100, + "column": 36 + } + }, + "object": { + "type": "Identifier", + "start": 4267, + "end": 4273, + "loc": { + "start": { + "line": 100, + "column": 24 + }, + "end": { + "line": 100, + "column": 30 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 4274, + "end": 4279, + "loc": { + "start": { + "line": 100, + "column": 31 + }, + "end": { + "line": 100, + "column": 36 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 4280, + "end": 4283, + "loc": { + "start": { + "line": 100, + "column": 37 + }, + "end": { + "line": 100, + "column": 40 + }, + "identifierName": "sao" + }, + "name": "sao" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 4284, + "end": 4291, + "loc": { + "start": { + "line": 100, + "column": 41 + }, + "end": { + "line": 100, + "column": 48 + }, + "identifierName": "enabled" + }, + "name": "enabled" + }, + "computed": false + }, + "right": { + "type": "MemberExpression", + "start": 4294, + "end": 4310, + "loc": { + "start": { + "line": 100, + "column": 51 + }, + "end": { + "line": 100, + "column": 67 + } + }, + "object": { + "type": "ThisExpression", + "start": 4294, + "end": 4298, + "loc": { + "start": { + "line": 100, + "column": 51 + }, + "end": { + "line": 100, + "column": 55 + } + } + }, + "property": { + "type": "Identifier", + "start": 4299, + "end": 4310, + "loc": { + "start": { + "line": 100, + "column": 56 + }, + "end": { + "line": 100, + "column": 67 + }, + "identifierName": "_saoEnabled" + }, + "name": "_saoEnabled" + }, + "computed": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 4336, + "end": 4389, + "loc": { + "start": { + "line": 101, + "column": 24 + }, + "end": { + "line": 101, + "column": 77 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 4336, + "end": 4388, + "loc": { + "start": { + "line": 101, + "column": 24 + }, + "end": { + "line": 101, + "column": 76 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 4336, + "end": 4367, + "loc": { + "start": { + "line": 101, + "column": 24 + }, + "end": { + "line": 101, + "column": 55 + } + }, + "object": { + "type": "MemberExpression", + "start": 4336, + "end": 4361, + "loc": { + "start": { + "line": 101, + "column": 24 + }, + "end": { + "line": 101, + "column": 49 + } + }, + "object": { + "type": "MemberExpression", + "start": 4336, + "end": 4348, + "loc": { + "start": { + "line": 101, + "column": 24 + }, + "end": { + "line": 101, + "column": 36 + } + }, + "object": { + "type": "Identifier", + "start": 4336, + "end": 4342, + "loc": { + "start": { + "line": 101, + "column": 24 + }, + "end": { + "line": 101, + "column": 30 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 4343, + "end": 4348, + "loc": { + "start": { + "line": 101, + "column": 31 + }, + "end": { + "line": 101, + "column": 36 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 4349, + "end": 4361, + "loc": { + "start": { + "line": 101, + "column": 37 + }, + "end": { + "line": 101, + "column": 49 + }, + "identifierName": "edgeMaterial" + }, + "name": "edgeMaterial" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 4362, + "end": 4367, + "loc": { + "start": { + "line": 101, + "column": 50 + }, + "end": { + "line": 101, + "column": 55 + }, + "identifierName": "edges" + }, + "name": "edges" + }, + "computed": false + }, + "right": { + "type": "MemberExpression", + "start": 4370, + "end": 4388, + "loc": { + "start": { + "line": 101, + "column": 58 + }, + "end": { + "line": 101, + "column": 76 + } + }, + "object": { + "type": "ThisExpression", + "start": 4370, + "end": 4374, + "loc": { + "start": { + "line": 101, + "column": 58 + }, + "end": { + "line": 101, + "column": 62 + } + } + }, + "property": { + "type": "Identifier", + "start": 4375, + "end": 4388, + "loc": { + "start": { + "line": 101, + "column": 63 + }, + "end": { + "line": 101, + "column": 76 + }, + "identifierName": "_edgesEnabled" + }, + "name": "_edgesEnabled" + }, + "computed": false + } + } + } + ], + "directives": [] + } + }, + { + "type": "NumericLiteral", + "start": 4413, + "end": 4416, + "loc": { + "start": { + "line": 102, + "column": 23 + }, + "end": { + "line": 102, + "column": 26 + } + }, + "extra": { + "rawValue": 100, + "raw": "100" + }, + "value": 100 + } + ] + } + } + }, + { + "type": "ExpressionStatement", + "start": 4440, + "end": 4457, + "loc": { + "start": { + "line": 104, + "column": 20 }, - "computed": false + "end": { + "line": 104, + "column": 37 + } }, - "property": { - "type": "Identifier", - "start": 3159, - "end": 3171, + "expression": { + "type": "AssignmentExpression", + "start": 4440, + "end": 4456, "loc": { "start": { - "line": 95, - "column": 29 + "line": 104, + "column": 20 }, "end": { - "line": 95, - "column": 41 - }, - "identifierName": "edgeMaterial" - }, - "name": "edgeMaterial" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 3172, - "end": 3177, - "loc": { - "start": { - "line": 95, - "column": 42 + "line": 104, + "column": 36 + } }, - "end": { - "line": 95, - "column": 47 + "operator": "=", + "left": { + "type": "Identifier", + "start": 4440, + "end": 4448, + "loc": { + "start": { + "line": 104, + "column": 20 + }, + "end": { + "line": 104, + "column": 28 + }, + "identifierName": "fastMode" + }, + "name": "fastMode" }, - "identifierName": "edges" - }, - "name": "edges" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 3180, - "end": 3185, - "loc": { - "start": { - "line": 95, - "column": 50 - }, - "end": { - "line": 95, - "column": 55 + "right": { + "type": "BooleanLiteral", + "start": 4451, + "end": 4456, + "loc": { + "start": { + "line": 104, + "column": 31 + }, + "end": { + "line": 104, + "column": 36 + } + }, + "value": false + } } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 3203, - "end": 3219, - "loc": { - "start": { - "line": 96, - "column": 16 - }, - "end": { - "line": 96, - "column": 32 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 3203, - "end": 3218, - "loc": { - "start": { - "line": 96, - "column": 16 - }, - "end": { - "line": 96, - "column": 31 } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 3203, - "end": 3211, - "loc": { - "start": { - "line": 96, - "column": 16 - }, - "end": { - "line": 96, - "column": 24 - }, - "identifierName": "fastMode" - }, - "name": "fastMode" - }, - "right": { - "type": "BooleanLiteral", - "start": 3214, - "end": 3218, - "loc": { - "start": { - "line": 96, - "column": 27 - }, - "end": { - "line": 96, - "column": 31 - } - }, - "value": true - } - } + ], + "directives": [] + }, + "alternate": null } ], "directives": [] @@ -3960,272 +4625,173 @@ } } }, - { - "type": "VariableDeclaration", - "start": 3255, - "end": 3272, - "loc": { - "start": { - "line": 100, - "column": 8 - }, - "end": { - "line": 100, - "column": 25 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 3259, - "end": 3271, - "loc": { - "start": { - "line": 100, - "column": 12 - }, - "end": { - "line": 100, - "column": 24 - } - }, - "id": { - "type": "Identifier", - "start": 3259, - "end": 3263, - "loc": { - "start": { - "line": 100, - "column": 12 - }, - "end": { - "line": 100, - "column": 16 - }, - "identifierName": "down" - }, - "name": "down" - }, - "init": { - "type": "BooleanLiteral", - "start": 3266, - "end": 3271, - "loc": { - "start": { - "line": 100, - "column": 19 - }, - "end": { - "line": 100, - "column": 24 - } - }, - "value": false - } - } - ], - "kind": "let" - }, { "type": "ExpressionStatement", - "start": 3282, - "end": 3691, + "start": 4511, + "end": 4903, "loc": { "start": { - "line": 102, + "line": 109, "column": 8 }, "end": { - "line": 112, + "line": 118, "column": 11 } }, "expression": { "type": "AssignmentExpression", - "start": 3282, - "end": 3690, + "start": 4511, + "end": 4902, "loc": { "start": { - "line": 102, + "line": 109, "column": 8 }, "end": { - "line": 112, + "line": 118, "column": 10 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 3282, - "end": 3304, + "start": 4511, + "end": 4540, "loc": { "start": { - "line": 102, + "line": 109, "column": 8 }, "end": { - "line": 102, - "column": 30 + "line": 109, + "column": 37 } }, "object": { "type": "ThisExpression", - "start": 3282, - "end": 3286, + "start": 4511, + "end": 4515, "loc": { "start": { - "line": 102, + "line": 109, "column": 8 }, "end": { - "line": 102, + "line": 109, "column": 12 } } }, "property": { "type": "Identifier", - "start": 3287, - "end": 3304, + "start": 4516, + "end": 4540, "loc": { "start": { - "line": 102, + "line": 109, "column": 13 }, "end": { - "line": 102, - "column": 30 + "line": 109, + "column": 37 }, - "identifierName": "_onSceneMouseDown" + "identifierName": "_onSceneObjectVisibility" }, - "name": "_onSceneMouseDown" + "name": "_onSceneObjectVisibility" }, "computed": false }, "right": { "type": "CallExpression", - "start": 3307, - "end": 3690, + "start": 4543, + "end": 4902, "loc": { "start": { - "line": 102, - "column": 33 + "line": 109, + "column": 40 }, "end": { - "line": 112, + "line": 118, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 3307, - "end": 3328, + "start": 4543, + "end": 4558, "loc": { "start": { - "line": 102, - "column": 33 + "line": 109, + "column": 40 }, "end": { - "line": 102, - "column": 54 + "line": 109, + "column": 55 } }, "object": { "type": "MemberExpression", - "start": 3307, - "end": 3325, + "start": 4543, + "end": 4555, "loc": { "start": { - "line": 102, - "column": 33 + "line": 109, + "column": 40 }, "end": { - "line": 102, - "column": 51 + "line": 109, + "column": 52 } }, "object": { - "type": "MemberExpression", - "start": 3307, - "end": 3319, + "type": "Identifier", + "start": 4543, + "end": 4549, "loc": { "start": { - "line": 102, - "column": 33 + "line": 109, + "column": 40 }, "end": { - "line": 102, - "column": 45 - } - }, - "object": { - "type": "Identifier", - "start": 3307, - "end": 3313, - "loc": { - "start": { - "line": 102, - "column": 33 - }, - "end": { - "line": 102, - "column": 39 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 3314, - "end": 3319, - "loc": { - "start": { - "line": 102, - "column": 40 - }, - "end": { - "line": 102, - "column": 45 - }, - "identifierName": "scene" + "line": 109, + "column": 46 }, - "name": "scene" + "identifierName": "viewer" }, - "computed": false + "name": "viewer" }, "property": { "type": "Identifier", - "start": 3320, - "end": 3325, + "start": 4550, + "end": 4555, "loc": { "start": { - "line": 102, - "column": 46 + "line": 109, + "column": 47 }, "end": { - "line": 102, - "column": 51 + "line": 109, + "column": 52 }, - "identifierName": "input" + "identifierName": "scene" }, - "name": "input" + "name": "scene" }, "computed": false }, "property": { "type": "Identifier", - "start": 3326, - "end": 3328, + "start": 4556, + "end": 4558, "loc": { "start": { - "line": 102, - "column": 52 + "line": 109, + "column": 53 }, "end": { - "line": 102, - "column": 54 + "line": 109, + "column": 55 }, "identifierName": "on" }, @@ -4236,35 +4802,35 @@ "arguments": [ { "type": "StringLiteral", - "start": 3329, - "end": 3340, + "start": 4559, + "end": 4577, "loc": { "start": { - "line": 102, - "column": 55 + "line": 109, + "column": 56 }, "end": { - "line": 102, - "column": 66 + "line": 109, + "column": 74 } }, "extra": { - "rawValue": "mousedown", - "raw": "\"mousedown\"" + "rawValue": "objectVisibility", + "raw": "\"objectVisibility\"" }, - "value": "mousedown" + "value": "objectVisibility" }, { "type": "ArrowFunctionExpression", - "start": 3342, - "end": 3689, + "start": 4579, + "end": 4901, "loc": { "start": { - "line": 102, - "column": 68 + "line": 109, + "column": 76 }, "end": { - "line": 112, + "line": 118, "column": 9 } }, @@ -4275,59 +4841,59 @@ "params": [], "body": { "type": "BlockStatement", - "start": 3348, - "end": 3689, + "start": 4585, + "end": 4901, "loc": { "start": { - "line": 102, - "column": 74 + "line": 109, + "column": 82 }, "end": { - "line": 112, + "line": 118, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 3362, - "end": 3386, + "start": 4599, + "end": 4623, "loc": { "start": { - "line": 103, + "line": 110, "column": 12 }, "end": { - "line": 103, + "line": 110, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 3362, - "end": 3385, + "start": 4599, + "end": 4622, "loc": { "start": { - "line": 103, + "line": 110, "column": 12 }, "end": { - "line": 103, + "line": 110, "column": 35 } }, "operator": "=", "left": { "type": "Identifier", - "start": 3362, - "end": 3367, + "start": 4599, + "end": 4604, "loc": { "start": { - "line": 103, + "line": 110, "column": 12 }, "end": { - "line": 103, + "line": 110, "column": 17 }, "identifierName": "timer" @@ -4336,15 +4902,15 @@ }, "right": { "type": "Identifier", - "start": 3370, - "end": 3385, + "start": 4607, + "end": 4622, "loc": { "start": { - "line": 103, + "line": 110, "column": 20 }, "end": { - "line": 103, + "line": 110, "column": 35 }, "identifierName": "timeoutDuration" @@ -4355,29 +4921,29 @@ }, { "type": "IfStatement", - "start": 3399, - "end": 3654, + "start": 4636, + "end": 4891, "loc": { "start": { - "line": 104, + "line": 111, "column": 12 }, "end": { - "line": 110, + "line": 117, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 3403, - "end": 3412, + "start": 4640, + "end": 4649, "loc": { "start": { - "line": 104, + "line": 111, "column": 16 }, "end": { - "line": 104, + "line": 111, "column": 25 } }, @@ -4385,15 +4951,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 3404, - "end": 3412, + "start": 4641, + "end": 4649, "loc": { "start": { - "line": 104, + "line": 111, "column": 17 }, "end": { - "line": 104, + "line": 111, "column": 25 }, "identifierName": "fastMode" @@ -4406,87 +4972,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 3414, - "end": 3654, + "start": 4651, + "end": 4891, "loc": { "start": { - "line": 104, + "line": 111, "column": 27 }, "end": { - "line": 110, + "line": 117, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 3432, - "end": 3451, + "start": 4669, + "end": 4688, "loc": { "start": { - "line": 105, + "line": 112, "column": 16 }, "end": { - "line": 105, + "line": 112, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 3432, - "end": 3450, + "start": 4669, + "end": 4687, "loc": { "start": { - "line": 105, + "line": 112, "column": 16 }, "end": { - "line": 105, + "line": 112, "column": 34 } }, "callee": { "type": "MemberExpression", - "start": 3432, - "end": 3448, + "start": 4669, + "end": 4685, "loc": { "start": { - "line": 105, + "line": 112, "column": 16 }, "end": { - "line": 105, + "line": 112, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 3432, - "end": 3436, + "start": 4669, + "end": 4673, "loc": { "start": { - "line": 105, + "line": 112, "column": 16 }, "end": { - "line": 105, + "line": 112, "column": 20 } } }, "property": { "type": "Identifier", - "start": 3437, - "end": 3448, + "start": 4674, + "end": 4685, "loc": { "start": { - "line": 105, + "line": 112, "column": 21 }, "end": { - "line": 105, + "line": 112, "column": 32 }, "identifierName": "_cancelFade" @@ -4500,72 +5066,72 @@ }, { "type": "ExpressionStatement", - "start": 3468, - "end": 3500, + "start": 4705, + "end": 4737, "loc": { "start": { - "line": 106, + "line": 113, "column": 16 }, "end": { - "line": 106, + "line": 113, "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 3468, - "end": 3499, + "start": 4705, + "end": 4736, "loc": { "start": { - "line": 106, + "line": 113, "column": 16 }, "end": { - "line": 106, + "line": 113, "column": 47 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 3468, - "end": 3491, + "start": 4705, + "end": 4728, "loc": { "start": { - "line": 106, + "line": 113, "column": 16 }, "end": { - "line": 106, + "line": 113, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 3468, - "end": 3480, + "start": 4705, + "end": 4717, "loc": { "start": { - "line": 106, + "line": 113, "column": 16 }, "end": { - "line": 106, + "line": 113, "column": 28 } }, "object": { "type": "Identifier", - "start": 3468, - "end": 3474, + "start": 4705, + "end": 4711, "loc": { "start": { - "line": 106, + "line": 113, "column": 16 }, "end": { - "line": 106, + "line": 113, "column": 22 }, "identifierName": "viewer" @@ -4574,15 +5140,15 @@ }, "property": { "type": "Identifier", - "start": 3475, - "end": 3480, + "start": 4712, + "end": 4717, "loc": { "start": { - "line": 106, + "line": 113, "column": 23 }, "end": { - "line": 106, + "line": 113, "column": 28 }, "identifierName": "scene" @@ -4593,15 +5159,15 @@ }, "property": { "type": "Identifier", - "start": 3481, - "end": 3491, + "start": 4718, + "end": 4728, "loc": { "start": { - "line": 106, + "line": 113, "column": 29 }, "end": { - "line": 106, + "line": 113, "column": 39 }, "identifierName": "pbrEnabled" @@ -4612,15 +5178,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 3494, - "end": 3499, + "start": 4731, + "end": 4736, "loc": { "start": { - "line": 106, + "line": 113, "column": 42 }, "end": { - "line": 106, + "line": 113, "column": 47 } }, @@ -4630,86 +5196,86 @@ }, { "type": "ExpressionStatement", - "start": 3517, - "end": 3550, + "start": 4754, + "end": 4787, "loc": { "start": { - "line": 107, + "line": 114, "column": 16 }, "end": { - "line": 107, + "line": 114, "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 3517, - "end": 3549, + "start": 4754, + "end": 4786, "loc": { "start": { - "line": 107, + "line": 114, "column": 16 }, "end": { - "line": 107, + "line": 114, "column": 48 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 3517, - "end": 3541, + "start": 4754, + "end": 4778, "loc": { "start": { - "line": 107, + "line": 114, "column": 16 }, "end": { - "line": 107, + "line": 114, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 3517, - "end": 3533, + "start": 4754, + "end": 4770, "loc": { "start": { - "line": 107, + "line": 114, "column": 16 }, "end": { - "line": 107, + "line": 114, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 3517, - "end": 3529, + "start": 4754, + "end": 4766, "loc": { "start": { - "line": 107, + "line": 114, "column": 16 }, "end": { - "line": 107, + "line": 114, "column": 28 } }, "object": { "type": "Identifier", - "start": 3517, - "end": 3523, + "start": 4754, + "end": 4760, "loc": { "start": { - "line": 107, + "line": 114, "column": 16 }, "end": { - "line": 107, + "line": 114, "column": 22 }, "identifierName": "viewer" @@ -4718,15 +5284,15 @@ }, "property": { "type": "Identifier", - "start": 3524, - "end": 3529, + "start": 4761, + "end": 4766, "loc": { "start": { - "line": 107, + "line": 114, "column": 23 }, "end": { - "line": 107, + "line": 114, "column": 28 }, "identifierName": "scene" @@ -4737,15 +5303,15 @@ }, "property": { "type": "Identifier", - "start": 3530, - "end": 3533, + "start": 4767, + "end": 4770, "loc": { "start": { - "line": 107, + "line": 114, "column": 29 }, "end": { - "line": 107, + "line": 114, "column": 32 }, "identifierName": "sao" @@ -4756,15 +5322,15 @@ }, "property": { "type": "Identifier", - "start": 3534, - "end": 3541, + "start": 4771, + "end": 4778, "loc": { "start": { - "line": 107, + "line": 114, "column": 33 }, "end": { - "line": 107, + "line": 114, "column": 40 }, "identifierName": "enabled" @@ -4775,15 +5341,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 3544, - "end": 3549, + "start": 4781, + "end": 4786, "loc": { "start": { - "line": 107, + "line": 114, "column": 43 }, "end": { - "line": 107, + "line": 114, "column": 48 } }, @@ -4793,86 +5359,86 @@ }, { "type": "ExpressionStatement", - "start": 3567, - "end": 3607, + "start": 4804, + "end": 4844, "loc": { "start": { - "line": 108, + "line": 115, "column": 16 }, "end": { - "line": 108, + "line": 115, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 3567, - "end": 3606, + "start": 4804, + "end": 4843, "loc": { "start": { - "line": 108, + "line": 115, "column": 16 }, "end": { - "line": 108, + "line": 115, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 3567, - "end": 3598, + "start": 4804, + "end": 4835, "loc": { "start": { - "line": 108, + "line": 115, "column": 16 }, "end": { - "line": 108, + "line": 115, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 3567, - "end": 3592, + "start": 4804, + "end": 4829, "loc": { "start": { - "line": 108, + "line": 115, "column": 16 }, "end": { - "line": 108, + "line": 115, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 3567, - "end": 3579, + "start": 4804, + "end": 4816, "loc": { "start": { - "line": 108, + "line": 115, "column": 16 }, "end": { - "line": 108, + "line": 115, "column": 28 } }, "object": { "type": "Identifier", - "start": 3567, - "end": 3573, + "start": 4804, + "end": 4810, "loc": { "start": { - "line": 108, + "line": 115, "column": 16 }, "end": { - "line": 108, + "line": 115, "column": 22 }, "identifierName": "viewer" @@ -4881,15 +5447,15 @@ }, "property": { "type": "Identifier", - "start": 3574, - "end": 3579, + "start": 4811, + "end": 4816, "loc": { "start": { - "line": 108, + "line": 115, "column": 23 }, "end": { - "line": 108, + "line": 115, "column": 28 }, "identifierName": "scene" @@ -4900,15 +5466,15 @@ }, "property": { "type": "Identifier", - "start": 3580, - "end": 3592, + "start": 4817, + "end": 4829, "loc": { "start": { - "line": 108, + "line": 115, "column": 29 }, "end": { - "line": 108, + "line": 115, "column": 41 }, "identifierName": "edgeMaterial" @@ -4919,15 +5485,15 @@ }, "property": { "type": "Identifier", - "start": 3593, - "end": 3598, + "start": 4830, + "end": 4835, "loc": { "start": { - "line": 108, + "line": 115, "column": 42 }, "end": { - "line": 108, + "line": 115, "column": 47 }, "identifierName": "edges" @@ -4938,15 +5504,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 3601, - "end": 3606, + "start": 4838, + "end": 4843, "loc": { "start": { - "line": 108, + "line": 115, "column": 50 }, "end": { - "line": 108, + "line": 115, "column": 55 } }, @@ -4956,44 +5522,44 @@ }, { "type": "ExpressionStatement", - "start": 3624, - "end": 3640, + "start": 4861, + "end": 4877, "loc": { "start": { - "line": 109, + "line": 116, "column": 16 }, "end": { - "line": 109, + "line": 116, "column": 32 } }, "expression": { "type": "AssignmentExpression", - "start": 3624, - "end": 3639, + "start": 4861, + "end": 4876, "loc": { "start": { - "line": 109, + "line": 116, "column": 16 }, "end": { - "line": 109, + "line": 116, "column": 31 } }, "operator": "=", "left": { "type": "Identifier", - "start": 3624, - "end": 3632, + "start": 4861, + "end": 4869, "loc": { "start": { - "line": 109, + "line": 116, "column": 16 }, "end": { - "line": 109, + "line": 116, "column": 24 }, "identifierName": "fastMode" @@ -5002,15 +5568,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 3635, - "end": 3639, + "start": 4872, + "end": 4876, "loc": { "start": { - "line": 109, + "line": 116, "column": 27 }, "end": { - "line": 109, + "line": 116, "column": 31 } }, @@ -5022,70 +5588,6 @@ "directives": [] }, "alternate": null - }, - { - "type": "ExpressionStatement", - "start": 3667, - "end": 3679, - "loc": { - "start": { - "line": 111, - "column": 12 - }, - "end": { - "line": 111, - "column": 24 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 3667, - "end": 3678, - "loc": { - "start": { - "line": 111, - "column": 12 - }, - "end": { - "line": 111, - "column": 23 - } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 3667, - "end": 3671, - "loc": { - "start": { - "line": 111, - "column": 12 - }, - "end": { - "line": 111, - "column": 16 - }, - "identifierName": "down" - }, - "name": "down" - }, - "right": { - "type": "BooleanLiteral", - "start": 3674, - "end": 3678, - "loc": { - "start": { - "line": 111, - "column": 19 - }, - "end": { - "line": 111, - "column": 23 - } - }, - "value": true - } - } } ], "directives": [] @@ -5096,483 +5598,215 @@ } }, { - "type": "ExpressionStatement", - "start": 3701, - "end": 3802, + "type": "VariableDeclaration", + "start": 4913, + "end": 4930, "loc": { "start": { - "line": 114, + "line": 120, "column": 8 }, "end": { - "line": 116, - "column": 11 + "line": 120, + "column": 25 } }, - "expression": { - "type": "AssignmentExpression", - "start": 3701, - "end": 3801, - "loc": { - "start": { - "line": 114, - "column": 8 - }, - "end": { - "line": 116, - "column": 10 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 3701, - "end": 3721, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4917, + "end": 4929, "loc": { "start": { - "line": 114, - "column": 8 + "line": 120, + "column": 12 }, "end": { - "line": 114, - "column": 28 - } - }, - "object": { - "type": "ThisExpression", - "start": 3701, - "end": 3705, - "loc": { - "start": { - "line": 114, - "column": 8 - }, - "end": { - "line": 114, - "column": 12 - } + "line": 120, + "column": 24 } }, - "property": { + "id": { "type": "Identifier", - "start": 3706, - "end": 3721, + "start": 4917, + "end": 4921, "loc": { "start": { - "line": 114, - "column": 13 + "line": 120, + "column": 12 }, "end": { - "line": 114, - "column": 28 + "line": 120, + "column": 16 }, - "identifierName": "_onSceneMouseUp" - }, - "name": "_onSceneMouseUp" - }, - "computed": false - }, - "right": { - "type": "CallExpression", - "start": 3724, - "end": 3801, - "loc": { - "start": { - "line": 114, - "column": 31 + "identifierName": "down" }, - "end": { - "line": 116, - "column": 10 - } + "name": "down" }, - "callee": { - "type": "MemberExpression", - "start": 3724, - "end": 3745, + "init": { + "type": "BooleanLiteral", + "start": 4924, + "end": 4929, "loc": { "start": { - "line": 114, - "column": 31 + "line": 120, + "column": 19 }, "end": { - "line": 114, - "column": 52 + "line": 120, + "column": 24 } }, - "object": { - "type": "MemberExpression", - "start": 3724, - "end": 3742, - "loc": { - "start": { - "line": 114, - "column": 31 - }, - "end": { - "line": 114, - "column": 49 - } - }, - "object": { - "type": "MemberExpression", - "start": 3724, - "end": 3736, - "loc": { - "start": { - "line": 114, - "column": 31 - }, - "end": { - "line": 114, - "column": 43 - } - }, - "object": { - "type": "Identifier", - "start": 3724, - "end": 3730, - "loc": { - "start": { - "line": 114, - "column": 31 - }, - "end": { - "line": 114, - "column": 37 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 3731, - "end": 3736, - "loc": { - "start": { - "line": 114, - "column": 38 - }, - "end": { - "line": 114, - "column": 43 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 3737, - "end": 3742, - "loc": { - "start": { - "line": 114, - "column": 44 - }, - "end": { - "line": 114, - "column": 49 - }, - "identifierName": "input" - }, - "name": "input" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 3743, - "end": 3745, - "loc": { - "start": { - "line": 114, - "column": 50 - }, - "end": { - "line": 114, - "column": 52 - }, - "identifierName": "on" - }, - "name": "on" - }, - "computed": false - }, - "arguments": [ - { - "type": "StringLiteral", - "start": 3746, - "end": 3755, - "loc": { - "start": { - "line": 114, - "column": 53 - }, - "end": { - "line": 114, - "column": 62 - } - }, - "extra": { - "rawValue": "mouseup", - "raw": "\"mouseup\"" - }, - "value": "mouseup" - }, - { - "type": "ArrowFunctionExpression", - "start": 3757, - "end": 3800, - "loc": { - "start": { - "line": 114, - "column": 64 - }, - "end": { - "line": 116, - "column": 9 - } - }, - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [], - "body": { - "type": "BlockStatement", - "start": 3763, - "end": 3800, - "loc": { - "start": { - "line": 114, - "column": 70 - }, - "end": { - "line": 116, - "column": 9 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 3777, - "end": 3790, - "loc": { - "start": { - "line": 115, - "column": 12 - }, - "end": { - "line": 115, - "column": 25 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 3777, - "end": 3789, - "loc": { - "start": { - "line": 115, - "column": 12 - }, - "end": { - "line": 115, - "column": 24 - } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 3777, - "end": 3781, - "loc": { - "start": { - "line": 115, - "column": 12 - }, - "end": { - "line": 115, - "column": 16 - }, - "identifierName": "down" - }, - "name": "down" - }, - "right": { - "type": "BooleanLiteral", - "start": 3784, - "end": 3789, - "loc": { - "start": { - "line": 115, - "column": 19 - }, - "end": { - "line": 115, - "column": 24 - } - }, - "value": false - } - } - } - ], - "directives": [] - } - } - ] + "value": false + } } - } + ], + "kind": "let" }, { "type": "ExpressionStatement", - "start": 3812, - "end": 4259, + "start": 4940, + "end": 5349, "loc": { "start": { - "line": 118, + "line": 122, "column": 8 }, "end": { - "line": 130, + "line": 132, "column": 11 } }, "expression": { "type": "AssignmentExpression", - "start": 3812, - "end": 4258, + "start": 4940, + "end": 5348, "loc": { "start": { - "line": 118, + "line": 122, "column": 8 }, "end": { - "line": 130, + "line": 132, "column": 10 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 3812, - "end": 3834, + "start": 4940, + "end": 4962, "loc": { "start": { - "line": 118, + "line": 122, "column": 8 }, "end": { - "line": 118, + "line": 122, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 3812, - "end": 3816, + "start": 4940, + "end": 4944, "loc": { "start": { - "line": 118, + "line": 122, "column": 8 }, "end": { - "line": 118, + "line": 122, "column": 12 } } }, "property": { "type": "Identifier", - "start": 3817, - "end": 3834, + "start": 4945, + "end": 4962, "loc": { "start": { - "line": 118, + "line": 122, "column": 13 }, "end": { - "line": 118, + "line": 122, "column": 30 }, - "identifierName": "_onSceneMouseMove" + "identifierName": "_onSceneMouseDown" }, - "name": "_onSceneMouseMove" + "name": "_onSceneMouseDown" }, "computed": false }, "right": { "type": "CallExpression", - "start": 3837, - "end": 4258, + "start": 4965, + "end": 5348, "loc": { "start": { - "line": 118, + "line": 122, "column": 33 }, "end": { - "line": 130, + "line": 132, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 3837, - "end": 3858, + "start": 4965, + "end": 4986, "loc": { "start": { - "line": 118, + "line": 122, "column": 33 }, "end": { - "line": 118, + "line": 122, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 3837, - "end": 3855, + "start": 4965, + "end": 4983, "loc": { "start": { - "line": 118, + "line": 122, "column": 33 }, "end": { - "line": 118, + "line": 122, "column": 51 } }, "object": { "type": "MemberExpression", - "start": 3837, - "end": 3849, + "start": 4965, + "end": 4977, "loc": { "start": { - "line": 118, + "line": 122, "column": 33 }, "end": { - "line": 118, + "line": 122, "column": 45 } }, "object": { "type": "Identifier", - "start": 3837, - "end": 3843, + "start": 4965, + "end": 4971, "loc": { "start": { - "line": 118, + "line": 122, "column": 33 }, "end": { - "line": 118, + "line": 122, "column": 39 }, "identifierName": "viewer" @@ -5581,15 +5815,15 @@ }, "property": { "type": "Identifier", - "start": 3844, - "end": 3849, + "start": 4972, + "end": 4977, "loc": { "start": { - "line": 118, + "line": 122, "column": 40 }, "end": { - "line": 118, + "line": 122, "column": 45 }, "identifierName": "scene" @@ -5600,15 +5834,15 @@ }, "property": { "type": "Identifier", - "start": 3850, - "end": 3855, + "start": 4978, + "end": 4983, "loc": { "start": { - "line": 118, + "line": 122, "column": 46 }, "end": { - "line": 118, + "line": 122, "column": 51 }, "identifierName": "input" @@ -5619,15 +5853,15 @@ }, "property": { "type": "Identifier", - "start": 3856, - "end": 3858, + "start": 4984, + "end": 4986, "loc": { "start": { - "line": 118, + "line": 122, "column": 52 }, "end": { - "line": 118, + "line": 122, "column": 54 }, "identifierName": "on" @@ -5639,35 +5873,35 @@ "arguments": [ { "type": "StringLiteral", - "start": 3859, - "end": 3870, + "start": 4987, + "end": 4998, "loc": { "start": { - "line": 118, + "line": 122, "column": 55 }, "end": { - "line": 118, + "line": 122, "column": 66 } }, "extra": { - "rawValue": "mousemove", - "raw": "\"mousemove\"" + "rawValue": "mousedown", + "raw": "\"mousedown\"" }, - "value": "mousemove" + "value": "mousedown" }, { "type": "ArrowFunctionExpression", - "start": 3872, - "end": 4257, + "start": 5000, + "end": 5347, "loc": { "start": { - "line": 118, + "line": 122, "column": 68 }, "end": { - "line": 130, + "line": 132, "column": 9 } }, @@ -5678,146 +5912,59 @@ "params": [], "body": { "type": "BlockStatement", - "start": 3878, - "end": 4257, + "start": 5006, + "end": 5347, "loc": { "start": { - "line": 118, + "line": 122, "column": 74 }, "end": { - "line": 130, + "line": 132, "column": 9 } }, "body": [ - { - "type": "IfStatement", - "start": 3892, - "end": 3942, - "loc": { - "start": { - "line": 119, - "column": 12 - }, - "end": { - "line": 121, - "column": 13 - } - }, - "test": { - "type": "UnaryExpression", - "start": 3896, - "end": 3901, - "loc": { - "start": { - "line": 119, - "column": 16 - }, - "end": { - "line": 119, - "column": 21 - } - }, - "operator": "!", - "prefix": true, - "argument": { - "type": "Identifier", - "start": 3897, - "end": 3901, - "loc": { - "start": { - "line": 119, - "column": 17 - }, - "end": { - "line": 119, - "column": 21 - }, - "identifierName": "down" - }, - "name": "down" - }, - "extra": { - "parenthesizedArgument": false - } - }, - "consequent": { - "type": "BlockStatement", - "start": 3903, - "end": 3942, - "loc": { - "start": { - "line": 119, - "column": 23 - }, - "end": { - "line": 121, - "column": 13 - } - }, - "body": [ - { - "type": "ReturnStatement", - "start": 3921, - "end": 3928, - "loc": { - "start": { - "line": 120, - "column": 16 - }, - "end": { - "line": 120, - "column": 23 - } - }, - "argument": null - } - ], - "directives": [] - }, - "alternate": null - }, { "type": "ExpressionStatement", - "start": 3955, - "end": 3979, + "start": 5020, + "end": 5044, "loc": { "start": { - "line": 122, + "line": 123, "column": 12 }, "end": { - "line": 122, + "line": 123, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 3955, - "end": 3978, + "start": 5020, + "end": 5043, "loc": { "start": { - "line": 122, + "line": 123, "column": 12 }, "end": { - "line": 122, + "line": 123, "column": 35 } }, "operator": "=", "left": { "type": "Identifier", - "start": 3955, - "end": 3960, + "start": 5020, + "end": 5025, "loc": { "start": { - "line": 122, + "line": 123, "column": 12 }, "end": { - "line": 122, + "line": 123, "column": 17 }, "identifierName": "timer" @@ -5826,15 +5973,15 @@ }, "right": { "type": "Identifier", - "start": 3963, - "end": 3978, + "start": 5028, + "end": 5043, "loc": { "start": { - "line": 122, + "line": 123, "column": 20 }, "end": { - "line": 122, + "line": 123, "column": 35 }, "identifierName": "timeoutDuration" @@ -5845,29 +5992,29 @@ }, { "type": "IfStatement", - "start": 3992, - "end": 4247, + "start": 5057, + "end": 5312, "loc": { "start": { - "line": 123, + "line": 124, "column": 12 }, "end": { - "line": 129, + "line": 130, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 3996, - "end": 4005, + "start": 5061, + "end": 5070, "loc": { "start": { - "line": 123, + "line": 124, "column": 16 }, "end": { - "line": 123, + "line": 124, "column": 25 } }, @@ -5875,15 +6022,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 3997, - "end": 4005, + "start": 5062, + "end": 5070, "loc": { "start": { - "line": 123, + "line": 124, "column": 17 }, "end": { - "line": 123, + "line": 124, "column": 25 }, "identifierName": "fastMode" @@ -5896,87 +6043,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 4007, - "end": 4247, + "start": 5072, + "end": 5312, "loc": { "start": { - "line": 123, + "line": 124, "column": 27 }, "end": { - "line": 129, + "line": 130, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 4025, - "end": 4044, + "start": 5090, + "end": 5109, "loc": { "start": { - "line": 124, + "line": 125, "column": 16 }, "end": { - "line": 124, + "line": 125, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 4025, - "end": 4043, + "start": 5090, + "end": 5108, "loc": { "start": { - "line": 124, + "line": 125, "column": 16 }, "end": { - "line": 124, + "line": 125, "column": 34 } }, "callee": { "type": "MemberExpression", - "start": 4025, - "end": 4041, + "start": 5090, + "end": 5106, "loc": { "start": { - "line": 124, + "line": 125, "column": 16 }, "end": { - "line": 124, + "line": 125, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 4025, - "end": 4029, + "start": 5090, + "end": 5094, "loc": { "start": { - "line": 124, + "line": 125, "column": 16 }, "end": { - "line": 124, + "line": 125, "column": 20 } } }, "property": { "type": "Identifier", - "start": 4030, - "end": 4041, + "start": 5095, + "end": 5106, "loc": { "start": { - "line": 124, + "line": 125, "column": 21 }, "end": { - "line": 124, + "line": 125, "column": 32 }, "identifierName": "_cancelFade" @@ -5990,72 +6137,72 @@ }, { "type": "ExpressionStatement", - "start": 4061, - "end": 4093, + "start": 5126, + "end": 5158, "loc": { "start": { - "line": 125, + "line": 126, "column": 16 }, "end": { - "line": 125, + "line": 126, "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 4061, - "end": 4092, + "start": 5126, + "end": 5157, "loc": { "start": { - "line": 125, + "line": 126, "column": 16 }, "end": { - "line": 125, + "line": 126, "column": 47 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 4061, - "end": 4084, + "start": 5126, + "end": 5149, "loc": { "start": { - "line": 125, + "line": 126, "column": 16 }, "end": { - "line": 125, + "line": 126, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 4061, - "end": 4073, + "start": 5126, + "end": 5138, "loc": { "start": { - "line": 125, + "line": 126, "column": 16 }, "end": { - "line": 125, + "line": 126, "column": 28 } }, "object": { "type": "Identifier", - "start": 4061, - "end": 4067, + "start": 5126, + "end": 5132, "loc": { "start": { - "line": 125, + "line": 126, "column": 16 }, "end": { - "line": 125, + "line": 126, "column": 22 }, "identifierName": "viewer" @@ -6064,15 +6211,15 @@ }, "property": { "type": "Identifier", - "start": 4068, - "end": 4073, + "start": 5133, + "end": 5138, "loc": { "start": { - "line": 125, + "line": 126, "column": 23 }, "end": { - "line": 125, + "line": 126, "column": 28 }, "identifierName": "scene" @@ -6083,15 +6230,15 @@ }, "property": { "type": "Identifier", - "start": 4074, - "end": 4084, + "start": 5139, + "end": 5149, "loc": { "start": { - "line": 125, + "line": 126, "column": 29 }, "end": { - "line": 125, + "line": 126, "column": 39 }, "identifierName": "pbrEnabled" @@ -6102,15 +6249,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 4087, - "end": 4092, + "start": 5152, + "end": 5157, "loc": { "start": { - "line": 125, + "line": 126, "column": 42 }, "end": { - "line": 125, + "line": 126, "column": 47 } }, @@ -6120,86 +6267,86 @@ }, { "type": "ExpressionStatement", - "start": 4110, - "end": 4143, + "start": 5175, + "end": 5208, "loc": { "start": { - "line": 126, + "line": 127, "column": 16 }, "end": { - "line": 126, + "line": 127, "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 4110, - "end": 4142, + "start": 5175, + "end": 5207, "loc": { "start": { - "line": 126, + "line": 127, "column": 16 }, "end": { - "line": 126, + "line": 127, "column": 48 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 4110, - "end": 4134, + "start": 5175, + "end": 5199, "loc": { "start": { - "line": 126, + "line": 127, "column": 16 }, "end": { - "line": 126, + "line": 127, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 4110, - "end": 4126, + "start": 5175, + "end": 5191, "loc": { "start": { - "line": 126, + "line": 127, "column": 16 }, "end": { - "line": 126, + "line": 127, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 4110, - "end": 4122, + "start": 5175, + "end": 5187, "loc": { "start": { - "line": 126, + "line": 127, "column": 16 }, "end": { - "line": 126, + "line": 127, "column": 28 } }, "object": { "type": "Identifier", - "start": 4110, - "end": 4116, + "start": 5175, + "end": 5181, "loc": { "start": { - "line": 126, + "line": 127, "column": 16 }, "end": { - "line": 126, + "line": 127, "column": 22 }, "identifierName": "viewer" @@ -6208,15 +6355,15 @@ }, "property": { "type": "Identifier", - "start": 4117, - "end": 4122, + "start": 5182, + "end": 5187, "loc": { "start": { - "line": 126, + "line": 127, "column": 23 }, "end": { - "line": 126, + "line": 127, "column": 28 }, "identifierName": "scene" @@ -6227,15 +6374,15 @@ }, "property": { "type": "Identifier", - "start": 4123, - "end": 4126, + "start": 5188, + "end": 5191, "loc": { "start": { - "line": 126, + "line": 127, "column": 29 }, "end": { - "line": 126, + "line": 127, "column": 32 }, "identifierName": "sao" @@ -6246,15 +6393,15 @@ }, "property": { "type": "Identifier", - "start": 4127, - "end": 4134, + "start": 5192, + "end": 5199, "loc": { "start": { - "line": 126, + "line": 127, "column": 33 }, "end": { - "line": 126, + "line": 127, "column": 40 }, "identifierName": "enabled" @@ -6265,15 +6412,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 4137, - "end": 4142, + "start": 5202, + "end": 5207, "loc": { "start": { - "line": 126, + "line": 127, "column": 43 }, "end": { - "line": 126, + "line": 127, "column": 48 } }, @@ -6283,86 +6430,86 @@ }, { "type": "ExpressionStatement", - "start": 4160, - "end": 4200, + "start": 5225, + "end": 5265, "loc": { "start": { - "line": 127, + "line": 128, "column": 16 }, "end": { - "line": 127, + "line": 128, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 4160, - "end": 4199, + "start": 5225, + "end": 5264, "loc": { "start": { - "line": 127, + "line": 128, "column": 16 }, "end": { - "line": 127, + "line": 128, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 4160, - "end": 4191, + "start": 5225, + "end": 5256, "loc": { "start": { - "line": 127, + "line": 128, "column": 16 }, "end": { - "line": 127, + "line": 128, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 4160, - "end": 4185, + "start": 5225, + "end": 5250, "loc": { "start": { - "line": 127, + "line": 128, "column": 16 }, "end": { - "line": 127, + "line": 128, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 4160, - "end": 4172, + "start": 5225, + "end": 5237, "loc": { "start": { - "line": 127, + "line": 128, "column": 16 }, "end": { - "line": 127, + "line": 128, "column": 28 } }, "object": { "type": "Identifier", - "start": 4160, - "end": 4166, + "start": 5225, + "end": 5231, "loc": { "start": { - "line": 127, + "line": 128, "column": 16 }, "end": { - "line": 127, + "line": 128, "column": 22 }, "identifierName": "viewer" @@ -6371,15 +6518,15 @@ }, "property": { "type": "Identifier", - "start": 4167, - "end": 4172, + "start": 5232, + "end": 5237, "loc": { "start": { - "line": 127, + "line": 128, "column": 23 }, "end": { - "line": 127, + "line": 128, "column": 28 }, "identifierName": "scene" @@ -6390,15 +6537,15 @@ }, "property": { "type": "Identifier", - "start": 4173, - "end": 4185, + "start": 5238, + "end": 5250, "loc": { "start": { - "line": 127, + "line": 128, "column": 29 }, "end": { - "line": 127, + "line": 128, "column": 41 }, "identifierName": "edgeMaterial" @@ -6409,15 +6556,15 @@ }, "property": { "type": "Identifier", - "start": 4186, - "end": 4191, + "start": 5251, + "end": 5256, "loc": { "start": { - "line": 127, + "line": 128, "column": 42 }, "end": { - "line": 127, + "line": 128, "column": 47 }, "identifierName": "edges" @@ -6428,15 +6575,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 4194, - "end": 4199, + "start": 5259, + "end": 5264, "loc": { "start": { - "line": 127, + "line": 128, "column": 50 }, "end": { - "line": 127, + "line": 128, "column": 55 } }, @@ -6446,44 +6593,44 @@ }, { "type": "ExpressionStatement", - "start": 4217, - "end": 4233, + "start": 5282, + "end": 5298, "loc": { "start": { - "line": 128, + "line": 129, "column": 16 }, "end": { - "line": 128, + "line": 129, "column": 32 } }, "expression": { "type": "AssignmentExpression", - "start": 4217, - "end": 4232, + "start": 5282, + "end": 5297, "loc": { "start": { - "line": 128, + "line": 129, "column": 16 }, "end": { - "line": 128, + "line": 129, "column": 31 } }, "operator": "=", "left": { "type": "Identifier", - "start": 4217, - "end": 4225, + "start": 5282, + "end": 5290, "loc": { "start": { - "line": 128, + "line": 129, "column": 16 }, "end": { - "line": 128, + "line": 129, "column": 24 }, "identifierName": "fastMode" @@ -6492,15 +6639,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 4228, - "end": 4232, + "start": 5293, + "end": 5297, "loc": { "start": { - "line": 128, + "line": 129, "column": 27 }, "end": { - "line": 128, + "line": 129, "column": 31 } }, @@ -6512,6 +6659,70 @@ "directives": [] }, "alternate": null + }, + { + "type": "ExpressionStatement", + "start": 5325, + "end": 5337, + "loc": { + "start": { + "line": 131, + "column": 12 + }, + "end": { + "line": 131, + "column": 24 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5325, + "end": 5336, + "loc": { + "start": { + "line": 131, + "column": 12 + }, + "end": { + "line": 131, + "column": 23 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 5325, + "end": 5329, + "loc": { + "start": { + "line": 131, + "column": 12 + }, + "end": { + "line": 131, + "column": 16 + }, + "identifierName": "down" + }, + "name": "down" + }, + "right": { + "type": "BooleanLiteral", + "start": 5332, + "end": 5336, + "loc": { + "start": { + "line": 131, + "column": 19 + }, + "end": { + "line": 131, + "column": 23 + } + }, + "value": true + } + } } ], "directives": [] @@ -6520,1617 +6731,3128 @@ ] } } - } - ], - "directives": [] - } - }, - { - "type": "ClassMethod", - "start": 4271, - "end": 5839, - "loc": { - "start": { - "line": 133, - "column": 4 - }, - "end": { - "line": 179, - "column": 5 - } - }, - "static": false, - "computed": false, - "key": { - "type": "Identifier", - "start": 4271, - "end": 4281, - "loc": { - "start": { - "line": 133, - "column": 4 - }, - "end": { - "line": 133, - "column": 14 - }, - "identifierName": "_startFade" - }, - "name": "_startFade" - }, - "kind": "method", - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [], - "body": { - "type": "BlockStatement", - "start": 4284, - "end": 5839, - "loc": { - "start": { - "line": 133, - "column": 17 }, - "end": { - "line": 179, - "column": 5 - } - }, - "body": [ { - "type": "IfStatement", - "start": 4295, - "end": 4352, + "type": "ExpressionStatement", + "start": 5359, + "end": 5460, "loc": { "start": { - "line": 135, + "line": 134, "column": 8 }, "end": { - "line": 137, - "column": 9 + "line": 136, + "column": 11 } }, - "test": { - "type": "UnaryExpression", - "start": 4299, - "end": 4309, + "expression": { + "type": "AssignmentExpression", + "start": 5359, + "end": 5459, "loc": { "start": { - "line": 135, - "column": 12 + "line": 134, + "column": 8 }, "end": { - "line": 135, - "column": 22 + "line": 136, + "column": 10 } }, - "operator": "!", - "prefix": true, - "argument": { + "operator": "=", + "left": { "type": "MemberExpression", - "start": 4300, - "end": 4309, + "start": 5359, + "end": 5379, "loc": { "start": { - "line": 135, - "column": 13 + "line": 134, + "column": 8 }, "end": { - "line": 135, - "column": 22 + "line": 134, + "column": 28 } }, "object": { "type": "ThisExpression", - "start": 4300, - "end": 4304, + "start": 5359, + "end": 5363, "loc": { "start": { - "line": 135, - "column": 13 + "line": 134, + "column": 8 }, "end": { - "line": 135, - "column": 17 + "line": 134, + "column": 12 } } }, "property": { "type": "Identifier", - "start": 4305, - "end": 4309, + "start": 5364, + "end": 5379, "loc": { "start": { - "line": 135, - "column": 18 + "line": 134, + "column": 13 }, "end": { - "line": 135, - "column": 22 + "line": 134, + "column": 28 }, - "identifierName": "_img" + "identifierName": "_onSceneMouseUp" }, - "name": "_img" + "name": "_onSceneMouseUp" }, "computed": false }, - "extra": { - "parenthesizedArgument": false - } - }, - "consequent": { - "type": "BlockStatement", - "start": 4311, - "end": 4352, - "loc": { - "start": { - "line": 135, - "column": 24 + "right": { + "type": "CallExpression", + "start": 5382, + "end": 5459, + "loc": { + "start": { + "line": 134, + "column": 31 + }, + "end": { + "line": 136, + "column": 10 + } }, - "end": { - "line": 137, - "column": 9 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 4325, - "end": 4342, + "callee": { + "type": "MemberExpression", + "start": 5382, + "end": 5403, "loc": { "start": { - "line": 136, - "column": 12 + "line": 134, + "column": 31 }, "end": { - "line": 136, - "column": 29 + "line": 134, + "column": 52 } }, - "expression": { - "type": "CallExpression", - "start": 4325, - "end": 4341, + "object": { + "type": "MemberExpression", + "start": 5382, + "end": 5400, "loc": { "start": { - "line": 136, - "column": 12 + "line": 134, + "column": 31 }, "end": { - "line": 136, - "column": 28 + "line": 134, + "column": 49 } }, - "callee": { + "object": { "type": "MemberExpression", - "start": 4325, - "end": 4339, + "start": 5382, + "end": 5394, "loc": { "start": { - "line": 136, - "column": 12 + "line": 134, + "column": 31 }, "end": { - "line": 136, - "column": 26 + "line": 134, + "column": 43 } }, "object": { - "type": "ThisExpression", - "start": 4325, - "end": 4329, + "type": "Identifier", + "start": 5382, + "end": 5388, "loc": { "start": { - "line": 136, - "column": 12 + "line": 134, + "column": 31 }, "end": { - "line": 136, - "column": 16 - } - } + "line": 134, + "column": 37 + }, + "identifierName": "viewer" + }, + "name": "viewer" }, "property": { "type": "Identifier", - "start": 4330, - "end": 4339, + "start": 5389, + "end": 5394, "loc": { "start": { - "line": 136, - "column": 17 + "line": 134, + "column": 38 }, "end": { - "line": 136, - "column": 26 + "line": 134, + "column": 43 }, - "identifierName": "_initFade" + "identifierName": "scene" }, - "name": "_initFade" + "name": "scene" }, "computed": false }, - "arguments": [] + "property": { + "type": "Identifier", + "start": 5395, + "end": 5400, + "loc": { + "start": { + "line": 134, + "column": 44 + }, + "end": { + "line": 134, + "column": 49 + }, + "identifierName": "input" + }, + "name": "input" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5401, + "end": 5403, + "loc": { + "start": { + "line": 134, + "column": 50 + }, + "end": { + "line": 134, + "column": 52 + }, + "identifierName": "on" + }, + "name": "on" + }, + "computed": false + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 5404, + "end": 5413, + "loc": { + "start": { + "line": 134, + "column": 53 + }, + "end": { + "line": 134, + "column": 62 + } + }, + "extra": { + "rawValue": "mouseup", + "raw": "\"mouseup\"" + }, + "value": "mouseup" + }, + { + "type": "ArrowFunctionExpression", + "start": 5415, + "end": 5458, + "loc": { + "start": { + "line": 134, + "column": 64 + }, + "end": { + "line": 136, + "column": 9 + } + }, + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 5421, + "end": 5458, + "loc": { + "start": { + "line": 134, + "column": 70 + }, + "end": { + "line": 136, + "column": 9 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 5435, + "end": 5448, + "loc": { + "start": { + "line": 135, + "column": 12 + }, + "end": { + "line": 135, + "column": 25 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5435, + "end": 5447, + "loc": { + "start": { + "line": 135, + "column": 12 + }, + "end": { + "line": 135, + "column": 24 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 5435, + "end": 5439, + "loc": { + "start": { + "line": 135, + "column": 12 + }, + "end": { + "line": 135, + "column": 16 + }, + "identifierName": "down" + }, + "name": "down" + }, + "right": { + "type": "BooleanLiteral", + "start": 5442, + "end": 5447, + "loc": { + "start": { + "line": 135, + "column": 19 + }, + "end": { + "line": 135, + "column": 24 + } + }, + "value": false + } + } + } + ], + "directives": [] + } } - } - ], - "directives": [] - }, - "alternate": null + ] + } + } }, { - "type": "VariableDeclaration", - "start": 4362, - "end": 4382, + "type": "ExpressionStatement", + "start": 5470, + "end": 5917, "loc": { "start": { - "line": 139, + "line": 138, "column": 8 }, "end": { - "line": 139, - "column": 28 + "line": 150, + "column": 11 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4368, - "end": 4381, + "expression": { + "type": "AssignmentExpression", + "start": 5470, + "end": 5916, + "loc": { + "start": { + "line": 138, + "column": 8 + }, + "end": { + "line": 150, + "column": 10 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 5470, + "end": 5492, "loc": { "start": { - "line": 139, - "column": 14 + "line": 138, + "column": 8 }, "end": { - "line": 139, - "column": 27 + "line": 138, + "column": 30 } }, - "id": { - "type": "Identifier", - "start": 4368, - "end": 4376, + "object": { + "type": "ThisExpression", + "start": 5470, + "end": 5474, "loc": { "start": { - "line": 139, - "column": 14 + "line": 138, + "column": 8 }, "end": { - "line": 139, - "column": 22 - }, - "identifierName": "interval" - }, - "name": "interval" + "line": 138, + "column": 12 + } + } }, - "init": { - "type": "NumericLiteral", - "start": 4379, - "end": 4381, + "property": { + "type": "Identifier", + "start": 5475, + "end": 5492, "loc": { "start": { - "line": 139, - "column": 25 + "line": 138, + "column": 13 }, "end": { - "line": 139, - "column": 27 - } - }, - "extra": { - "rawValue": 50, - "raw": "50" + "line": 138, + "column": 30 + }, + "identifierName": "_onSceneMouseMove" }, - "value": 50 - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 4391, - "end": 4440, - "loc": { - "start": { - "line": 140, - "column": 8 + "name": "_onSceneMouseMove" + }, + "computed": false }, - "end": { - "line": 140, - "column": 57 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4397, - "end": 4439, + "right": { + "type": "CallExpression", + "start": 5495, + "end": 5916, "loc": { "start": { - "line": 140, - "column": 14 + "line": 138, + "column": 33 }, "end": { - "line": 140, - "column": 56 + "line": 150, + "column": 10 } }, - "id": { - "type": "Identifier", - "start": 4397, - "end": 4400, - "loc": { - "start": { - "line": 140, - "column": 14 - }, - "end": { - "line": 140, - "column": 17 - }, - "identifierName": "inc" - }, - "name": "inc" - }, - "init": { - "type": "BinaryExpression", - "start": 4403, - "end": 4439, + "callee": { + "type": "MemberExpression", + "start": 5495, + "end": 5516, "loc": { "start": { - "line": 140, - "column": 20 + "line": 138, + "column": 33 }, "end": { - "line": 140, - "column": 56 + "line": 138, + "column": 54 } }, - "left": { - "type": "NumericLiteral", - "start": 4403, - "end": 4404, - "loc": { - "start": { - "line": 140, - "column": 20 - }, - "end": { - "line": 140, - "column": 21 - } - }, - "extra": { - "rawValue": 1, - "raw": "1" - }, - "value": 1 - }, - "operator": "/", - "right": { - "type": "BinaryExpression", - "start": 4408, - "end": 4438, + "object": { + "type": "MemberExpression", + "start": 5495, + "end": 5513, "loc": { "start": { - "line": 140, - "column": 25 + "line": 138, + "column": 33 }, "end": { - "line": 140, - "column": 55 + "line": 138, + "column": 51 } }, - "left": { + "object": { "type": "MemberExpression", - "start": 4408, - "end": 4427, + "start": 5495, + "end": 5507, "loc": { "start": { - "line": 140, - "column": 25 + "line": 138, + "column": 33 }, "end": { - "line": 140, - "column": 44 + "line": 138, + "column": 45 } }, "object": { - "type": "ThisExpression", - "start": 4408, - "end": 4412, + "type": "Identifier", + "start": 5495, + "end": 5501, "loc": { "start": { - "line": 140, - "column": 25 + "line": 138, + "column": 33 }, "end": { - "line": 140, - "column": 29 - } - } + "line": 138, + "column": 39 + }, + "identifierName": "viewer" + }, + "name": "viewer" }, "property": { "type": "Identifier", - "start": 4413, - "end": 4427, + "start": 5502, + "end": 5507, "loc": { "start": { - "line": 140, - "column": 30 + "line": 138, + "column": 40 }, "end": { - "line": 140, - "column": 44 + "line": 138, + "column": 45 }, - "identifierName": "_fadeMillisecs" + "identifierName": "scene" }, - "name": "_fadeMillisecs" + "name": "scene" }, "computed": false }, - "operator": "/", - "right": { + "property": { "type": "Identifier", - "start": 4430, - "end": 4438, + "start": 5508, + "end": 5513, "loc": { "start": { - "line": 140, - "column": 47 + "line": 138, + "column": 46 }, "end": { - "line": 140, - "column": 55 + "line": 138, + "column": 51 }, - "identifierName": "interval" + "identifierName": "input" }, - "name": "interval" - }, - "extra": { - "parenthesized": true, - "parenStart": 4407 - } - } - } - } - ], - "kind": "const" - }, - { - "type": "IfStatement", - "start": 4450, - "end": 4562, - "loc": { - "start": { - "line": 142, - "column": 8 - }, - "end": { - "line": 145, - "column": 9 - } - }, - "test": { - "type": "MemberExpression", - "start": 4454, - "end": 4469, - "loc": { - "start": { - "line": 142, - "column": 12 - }, - "end": { - "line": 142, - "column": 27 - } - }, - "object": { - "type": "ThisExpression", - "start": 4454, - "end": 4458, - "loc": { - "start": { - "line": 142, - "column": 12 - }, - "end": { - "line": 142, - "column": 16 - } - } - }, - "property": { - "type": "Identifier", - "start": 4459, - "end": 4469, - "loc": { - "start": { - "line": 142, - "column": 17 - }, - "end": { - "line": 142, - "column": 27 - }, - "identifierName": "_pInterval" - }, - "name": "_pInterval" - }, - "computed": false - }, - "consequent": { - "type": "BlockStatement", - "start": 4471, - "end": 4562, - "loc": { - "start": { - "line": 142, - "column": 29 - }, - "end": { - "line": 145, - "column": 9 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 4485, - "end": 4516, - "loc": { - "start": { - "line": 143, - "column": 12 + "name": "input" }, - "end": { - "line": 143, - "column": 43 - } + "computed": false }, - "expression": { - "type": "CallExpression", - "start": 4485, - "end": 4515, + "property": { + "type": "Identifier", + "start": 5514, + "end": 5516, "loc": { "start": { - "line": 143, - "column": 12 + "line": 138, + "column": 52 }, "end": { - "line": 143, - "column": 42 - } - }, - "callee": { - "type": "Identifier", - "start": 4485, - "end": 4498, - "loc": { - "start": { - "line": 143, - "column": 12 - }, - "end": { - "line": 143, - "column": 25 - }, - "identifierName": "clearInterval" + "line": 138, + "column": 54 }, - "name": "clearInterval" - }, - "arguments": [ - { - "type": "MemberExpression", - "start": 4499, - "end": 4514, - "loc": { - "start": { - "line": 143, - "column": 26 - }, - "end": { - "line": 143, - "column": 41 - } - }, - "object": { - "type": "ThisExpression", - "start": 4499, - "end": 4503, - "loc": { - "start": { - "line": 143, - "column": 26 - }, - "end": { - "line": 143, - "column": 30 - } - } - }, - "property": { - "type": "Identifier", - "start": 4504, - "end": 4514, - "loc": { - "start": { - "line": 143, - "column": 31 - }, - "end": { - "line": 143, - "column": 41 - }, - "identifierName": "_pInterval" - }, - "name": "_pInterval" - }, - "computed": false - } - ] - } - }, - { - "type": "ExpressionStatement", - "start": 4529, - "end": 4552, - "loc": { - "start": { - "line": 144, - "column": 12 + "identifierName": "on" }, - "end": { - "line": 144, - "column": 35 - } + "name": "on" }, - "expression": { - "type": "AssignmentExpression", - "start": 4529, - "end": 4551, + "computed": false + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 5517, + "end": 5528, "loc": { "start": { - "line": 144, - "column": 12 + "line": 138, + "column": 55 }, "end": { - "line": 144, - "column": 34 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 4529, - "end": 4544, - "loc": { - "start": { - "line": 144, - "column": 12 - }, - "end": { - "line": 144, - "column": 27 - } - }, - "object": { - "type": "ThisExpression", - "start": 4529, - "end": 4533, - "loc": { - "start": { - "line": 144, - "column": 12 - }, - "end": { - "line": 144, - "column": 16 - } - } - }, - "property": { - "type": "Identifier", - "start": 4534, - "end": 4544, - "loc": { - "start": { - "line": 144, - "column": 17 - }, - "end": { - "line": 144, - "column": 27 - }, - "identifierName": "_pInterval" - }, - "name": "_pInterval" - }, - "computed": false - }, - "right": { - "type": "NullLiteral", - "start": 4547, - "end": 4551, - "loc": { - "start": { - "line": 144, - "column": 30 - }, - "end": { - "line": 144, - "column": 34 - } + "line": 138, + "column": 66 } - } - } - } - ], - "directives": [] - }, - "alternate": null - }, - { - "type": "VariableDeclaration", - "start": 4572, - "end": 4619, - "loc": { - "start": { - "line": 147, - "column": 8 - }, - "end": { - "line": 147, - "column": 55 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4578, - "end": 4618, - "loc": { - "start": { - "line": 147, - "column": 14 - }, - "end": { - "line": 147, - "column": 54 - } - }, - "id": { - "type": "Identifier", - "start": 4578, - "end": 4584, - "loc": { - "start": { - "line": 147, - "column": 14 }, - "end": { - "line": 147, - "column": 20 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "init": { - "type": "MemberExpression", - "start": 4587, - "end": 4618, - "loc": { - "start": { - "line": 147, - "column": 23 + "extra": { + "rawValue": "mousemove", + "raw": "\"mousemove\"" }, - "end": { - "line": 147, - "column": 54 - } + "value": "mousemove" }, - "object": { - "type": "MemberExpression", - "start": 4587, - "end": 4611, + { + "type": "ArrowFunctionExpression", + "start": 5530, + "end": 5915, "loc": { "start": { - "line": 147, - "column": 23 + "line": 138, + "column": 68 }, "end": { - "line": 147, - "column": 47 + "line": 150, + "column": 9 } }, - "object": { - "type": "MemberExpression", - "start": 4587, - "end": 4604, + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 5536, + "end": 5915, "loc": { "start": { - "line": 147, - "column": 23 + "line": 138, + "column": 74 }, "end": { - "line": 147, - "column": 40 + "line": 150, + "column": 9 } }, - "object": { - "type": "MemberExpression", - "start": 4587, - "end": 4598, - "loc": { - "start": { - "line": 147, - "column": 23 + "body": [ + { + "type": "IfStatement", + "start": 5550, + "end": 5600, + "loc": { + "start": { + "line": 139, + "column": 12 + }, + "end": { + "line": 141, + "column": 13 + } }, - "end": { - "line": 147, - "column": 34 - } + "test": { + "type": "UnaryExpression", + "start": 5554, + "end": 5559, + "loc": { + "start": { + "line": 139, + "column": 16 + }, + "end": { + "line": 139, + "column": 21 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 5555, + "end": 5559, + "loc": { + "start": { + "line": 139, + "column": 17 + }, + "end": { + "line": 139, + "column": 21 + }, + "identifierName": "down" + }, + "name": "down" + }, + "extra": { + "parenthesizedArgument": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 5561, + "end": 5600, + "loc": { + "start": { + "line": 139, + "column": 23 + }, + "end": { + "line": 141, + "column": 13 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 5579, + "end": 5586, + "loc": { + "start": { + "line": 140, + "column": 16 + }, + "end": { + "line": 140, + "column": 23 + } + }, + "argument": null + } + ], + "directives": [] + }, + "alternate": null }, - "object": { - "type": "ThisExpression", - "start": 4587, - "end": 4591, + { + "type": "ExpressionStatement", + "start": 5613, + "end": 5637, "loc": { "start": { - "line": 147, - "column": 23 + "line": 142, + "column": 12 }, "end": { - "line": 147, - "column": 27 + "line": 142, + "column": 36 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5613, + "end": 5636, + "loc": { + "start": { + "line": 142, + "column": 12 + }, + "end": { + "line": 142, + "column": 35 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 5613, + "end": 5618, + "loc": { + "start": { + "line": 142, + "column": 12 + }, + "end": { + "line": 142, + "column": 17 + }, + "identifierName": "timer" + }, + "name": "timer" + }, + "right": { + "type": "Identifier", + "start": 5621, + "end": 5636, + "loc": { + "start": { + "line": 142, + "column": 20 + }, + "end": { + "line": 142, + "column": 35 + }, + "identifierName": "timeoutDuration" + }, + "name": "timeoutDuration" } } }, - "property": { - "type": "Identifier", - "start": 4592, - "end": 4598, + { + "type": "IfStatement", + "start": 5650, + "end": 5905, "loc": { "start": { - "line": 147, - "column": 28 + "line": 143, + "column": 12 }, "end": { - "line": 147, - "column": 34 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 4599, - "end": 4604, - "loc": { - "start": { - "line": 147, - "column": 35 + "line": 149, + "column": 13 + } }, - "end": { - "line": 147, - "column": 40 + "test": { + "type": "UnaryExpression", + "start": 5654, + "end": 5663, + "loc": { + "start": { + "line": 143, + "column": 16 + }, + "end": { + "line": 143, + "column": 25 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 5655, + "end": 5663, + "loc": { + "start": { + "line": 143, + "column": 17 + }, + "end": { + "line": 143, + "column": 25 + }, + "identifierName": "fastMode" + }, + "name": "fastMode" + }, + "extra": { + "parenthesizedArgument": false + } }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 4605, - "end": 4611, - "loc": { - "start": { - "line": 147, - "column": 41 - }, - "end": { - "line": 147, - "column": 47 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 4612, - "end": 4618, - "loc": { - "start": { - "line": 147, - "column": 48 - }, - "end": { - "line": 147, - "column": 54 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "computed": false - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 4628, - "end": 4674, - "loc": { - "start": { - "line": 148, - "column": 8 - }, - "end": { - "line": 148, - "column": 54 + "consequent": { + "type": "BlockStatement", + "start": 5665, + "end": 5905, + "loc": { + "start": { + "line": 143, + "column": 27 + }, + "end": { + "line": 149, + "column": 13 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 5683, + "end": 5702, + "loc": { + "start": { + "line": 144, + "column": 16 + }, + "end": { + "line": 144, + "column": 35 + } + }, + "expression": { + "type": "CallExpression", + "start": 5683, + "end": 5701, + "loc": { + "start": { + "line": 144, + "column": 16 + }, + "end": { + "line": 144, + "column": 34 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5683, + "end": 5699, + "loc": { + "start": { + "line": 144, + "column": 16 + }, + "end": { + "line": 144, + "column": 32 + } + }, + "object": { + "type": "ThisExpression", + "start": 5683, + "end": 5687, + "loc": { + "start": { + "line": 144, + "column": 16 + }, + "end": { + "line": 144, + "column": 20 + } + } + }, + "property": { + "type": "Identifier", + "start": 5688, + "end": 5699, + "loc": { + "start": { + "line": 144, + "column": 21 + }, + "end": { + "line": 144, + "column": 32 + }, + "identifierName": "_cancelFade" + }, + "name": "_cancelFade" + }, + "computed": false + }, + "arguments": [] + } + }, + { + "type": "ExpressionStatement", + "start": 5719, + "end": 5751, + "loc": { + "start": { + "line": 145, + "column": 16 + }, + "end": { + "line": 145, + "column": 48 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5719, + "end": 5750, + "loc": { + "start": { + "line": 145, + "column": 16 + }, + "end": { + "line": 145, + "column": 47 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 5719, + "end": 5742, + "loc": { + "start": { + "line": 145, + "column": 16 + }, + "end": { + "line": 145, + "column": 39 + } + }, + "object": { + "type": "MemberExpression", + "start": 5719, + "end": 5731, + "loc": { + "start": { + "line": 145, + "column": 16 + }, + "end": { + "line": 145, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 5719, + "end": 5725, + "loc": { + "start": { + "line": 145, + "column": 16 + }, + "end": { + "line": 145, + "column": 22 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 5726, + "end": 5731, + "loc": { + "start": { + "line": 145, + "column": 23 + }, + "end": { + "line": 145, + "column": 28 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5732, + "end": 5742, + "loc": { + "start": { + "line": 145, + "column": 29 + }, + "end": { + "line": 145, + "column": 39 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" + }, + "computed": false + }, + "right": { + "type": "BooleanLiteral", + "start": 5745, + "end": 5750, + "loc": { + "start": { + "line": 145, + "column": 42 + }, + "end": { + "line": 145, + "column": 47 + } + }, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 5768, + "end": 5801, + "loc": { + "start": { + "line": 146, + "column": 16 + }, + "end": { + "line": 146, + "column": 49 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5768, + "end": 5800, + "loc": { + "start": { + "line": 146, + "column": 16 + }, + "end": { + "line": 146, + "column": 48 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 5768, + "end": 5792, + "loc": { + "start": { + "line": 146, + "column": 16 + }, + "end": { + "line": 146, + "column": 40 + } + }, + "object": { + "type": "MemberExpression", + "start": 5768, + "end": 5784, + "loc": { + "start": { + "line": 146, + "column": 16 + }, + "end": { + "line": 146, + "column": 32 + } + }, + "object": { + "type": "MemberExpression", + "start": 5768, + "end": 5780, + "loc": { + "start": { + "line": 146, + "column": 16 + }, + "end": { + "line": 146, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 5768, + "end": 5774, + "loc": { + "start": { + "line": 146, + "column": 16 + }, + "end": { + "line": 146, + "column": 22 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 5775, + "end": 5780, + "loc": { + "start": { + "line": 146, + "column": 23 + }, + "end": { + "line": 146, + "column": 28 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5781, + "end": 5784, + "loc": { + "start": { + "line": 146, + "column": 29 + }, + "end": { + "line": 146, + "column": 32 + }, + "identifierName": "sao" + }, + "name": "sao" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5785, + "end": 5792, + "loc": { + "start": { + "line": 146, + "column": 33 + }, + "end": { + "line": 146, + "column": 40 + }, + "identifierName": "enabled" + }, + "name": "enabled" + }, + "computed": false + }, + "right": { + "type": "BooleanLiteral", + "start": 5795, + "end": 5800, + "loc": { + "start": { + "line": 146, + "column": 43 + }, + "end": { + "line": 146, + "column": 48 + } + }, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 5818, + "end": 5858, + "loc": { + "start": { + "line": 147, + "column": 16 + }, + "end": { + "line": 147, + "column": 56 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5818, + "end": 5857, + "loc": { + "start": { + "line": 147, + "column": 16 + }, + "end": { + "line": 147, + "column": 55 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 5818, + "end": 5849, + "loc": { + "start": { + "line": 147, + "column": 16 + }, + "end": { + "line": 147, + "column": 47 + } + }, + "object": { + "type": "MemberExpression", + "start": 5818, + "end": 5843, + "loc": { + "start": { + "line": 147, + "column": 16 + }, + "end": { + "line": 147, + "column": 41 + } + }, + "object": { + "type": "MemberExpression", + "start": 5818, + "end": 5830, + "loc": { + "start": { + "line": 147, + "column": 16 + }, + "end": { + "line": 147, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 5818, + "end": 5824, + "loc": { + "start": { + "line": 147, + "column": 16 + }, + "end": { + "line": 147, + "column": 22 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 5825, + "end": 5830, + "loc": { + "start": { + "line": 147, + "column": 23 + }, + "end": { + "line": 147, + "column": 28 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5831, + "end": 5843, + "loc": { + "start": { + "line": 147, + "column": 29 + }, + "end": { + "line": 147, + "column": 41 + }, + "identifierName": "edgeMaterial" + }, + "name": "edgeMaterial" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5844, + "end": 5849, + "loc": { + "start": { + "line": 147, + "column": 42 + }, + "end": { + "line": 147, + "column": 47 + }, + "identifierName": "edges" + }, + "name": "edges" + }, + "computed": false + }, + "right": { + "type": "BooleanLiteral", + "start": 5852, + "end": 5857, + "loc": { + "start": { + "line": 147, + "column": 50 + }, + "end": { + "line": 147, + "column": 55 + } + }, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 5875, + "end": 5891, + "loc": { + "start": { + "line": 148, + "column": 16 + }, + "end": { + "line": 148, + "column": 32 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5875, + "end": 5890, + "loc": { + "start": { + "line": 148, + "column": 16 + }, + "end": { + "line": 148, + "column": 31 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 5875, + "end": 5883, + "loc": { + "start": { + "line": 148, + "column": 16 + }, + "end": { + "line": 148, + "column": 24 + }, + "identifierName": "fastMode" + }, + "name": "fastMode" + }, + "right": { + "type": "BooleanLiteral", + "start": 5886, + "end": 5890, + "loc": { + "start": { + "line": 148, + "column": 27 + }, + "end": { + "line": 148, + "column": 31 + } + }, + "value": true + } + } + } + ], + "directives": [] + }, + "alternate": null + } + ], + "directives": [] + } + } + ] } + } + } + ], + "directives": [] + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\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.pbrEnabled] Whether to enable physically-based rendering (PBR) when the camera stops moving. When not specified, PBR will be enabled if it's currently enabled for the Viewer (see {@link Viewer#pbrEnabled}).\n * @param {Boolean} [cfg.saoEnabled] Whether to enable scalable ambient occlusion (SAO) when the camera stops moving. When not specified, SAO will be enabled if it's currently enabled for the Viewer (see {@link Scene#pbrEnabled}).\n * @param {Boolean} [cfg.edgesEnabled] Whether to show enhanced edges when the camera stops moving. When not specified, edges will be enabled if they're currently enabled for the Viewer (see {@link EdgeMaterial#edges}).\n ", + "start": 1746, + "end": 2695, + "loc": { + "start": { + "line": 55, + "column": 4 }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4634, - "end": 4673, - "loc": { - "start": { - "line": 148, - "column": 14 + "end": { + "line": 63, + "column": 7 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 5929, + "end": 7623, + "loc": { + "start": { + "line": 153, + "column": 4 + }, + "end": { + "line": 202, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 5929, + "end": 5939, + "loc": { + "start": { + "line": 153, + "column": 4 + }, + "end": { + "line": 153, + "column": 14 + }, + "identifierName": "_startFade" + }, + "name": "_startFade" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 5942, + "end": 7623, + "loc": { + "start": { + "line": 153, + "column": 17 + }, + "end": { + "line": 202, + "column": 5 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 5953, + "end": 6010, + "loc": { + "start": { + "line": 155, + "column": 8 + }, + "end": { + "line": 157, + "column": 9 + } + }, + "test": { + "type": "UnaryExpression", + "start": 5957, + "end": 5967, + "loc": { + "start": { + "line": 155, + "column": 12 + }, + "end": { + "line": 155, + "column": 22 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "MemberExpression", + "start": 5958, + "end": 5967, + "loc": { + "start": { + "line": 155, + "column": 13 }, "end": { - "line": 148, - "column": 53 + "line": 155, + "column": 22 } }, - "id": { + "object": { + "type": "ThisExpression", + "start": 5958, + "end": 5962, + "loc": { + "start": { + "line": 155, + "column": 13 + }, + "end": { + "line": 155, + "column": 17 + } + } + }, + "property": { "type": "Identifier", - "start": 4634, - "end": 4646, + "start": 5963, + "end": 5967, "loc": { "start": { - "line": 148, - "column": 14 + "line": 155, + "column": 18 }, "end": { - "line": 148, - "column": 26 + "line": 155, + "column": 22 }, - "identifierName": "canvasOffset" + "identifierName": "_img" }, - "name": "canvasOffset" + "name": "_img" }, - "init": { - "type": "CallExpression", - "start": 4649, - "end": 4673, + "computed": false + }, + "extra": { + "parenthesizedArgument": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 5969, + "end": 6010, + "loc": { + "start": { + "line": 155, + "column": 24 + }, + "end": { + "line": 157, + "column": 9 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 5983, + "end": 6000, "loc": { "start": { - "line": 148, - "column": 29 + "line": 156, + "column": 12 }, "end": { - "line": 148, - "column": 53 + "line": 156, + "column": 29 } }, - "callee": { - "type": "Identifier", - "start": 4649, - "end": 4665, + "expression": { + "type": "CallExpression", + "start": 5983, + "end": 5999, "loc": { "start": { - "line": 148, - "column": 29 + "line": 156, + "column": 12 }, "end": { - "line": 148, - "column": 45 - }, - "identifierName": "cumulativeOffset" + "line": 156, + "column": 28 + } }, - "name": "cumulativeOffset" - }, - "arguments": [ - { - "type": "Identifier", - "start": 4666, - "end": 4672, + "callee": { + "type": "MemberExpression", + "start": 5983, + "end": 5997, "loc": { "start": { - "line": 148, - "column": 46 + "line": 156, + "column": 12 }, "end": { - "line": 148, - "column": 52 + "line": 156, + "column": 26 + } + }, + "object": { + "type": "ThisExpression", + "start": 5983, + "end": 5987, + "loc": { + "start": { + "line": 156, + "column": 12 + }, + "end": { + "line": 156, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 5988, + "end": 5997, + "loc": { + "start": { + "line": 156, + "column": 17 + }, + "end": { + "line": 156, + "column": 26 + }, + "identifierName": "_initFade" }, - "identifierName": "canvas" + "name": "_initFade" }, - "name": "canvas" - } - ] + "computed": false + }, + "arguments": [] + } } + ], + "directives": [] + }, + "alternate": null + }, + { + "type": "VariableDeclaration", + "start": 6020, + "end": 6040, + "loc": { + "start": { + "line": 159, + "column": 8 + }, + "end": { + "line": 159, + "column": 28 } - ], - "kind": "const", - "trailingComments": [ + }, + "declarations": [ { - "type": "CommentLine", - "value": "const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;", - "start": 4683, - "end": 4745, + "type": "VariableDeclarator", + "start": 6026, + "end": 6039, "loc": { "start": { - "line": 149, - "column": 8 + "line": 159, + "column": 14 }, "end": { - "line": 149, - "column": 70 + "line": 159, + "column": 27 } + }, + "id": { + "type": "Identifier", + "start": 6026, + "end": 6034, + "loc": { + "start": { + "line": 159, + "column": 14 + }, + "end": { + "line": 159, + "column": 22 + }, + "identifierName": "interval" + }, + "name": "interval" + }, + "init": { + "type": "NumericLiteral", + "start": 6037, + "end": 6039, + "loc": { + "start": { + "line": 159, + "column": 25 + }, + "end": { + "line": 159, + "column": 27 + } + }, + "extra": { + "rawValue": 50, + "raw": "50" + }, + "value": 50 } } - ] + ], + "kind": "const" }, { - "type": "ExpressionStatement", - "start": 4755, - "end": 4793, + "type": "VariableDeclaration", + "start": 6049, + "end": 6098, "loc": { "start": { - "line": 151, + "line": 160, "column": 8 }, "end": { - "line": 151, - "column": 46 + "line": 160, + "column": 57 } }, - "expression": { - "type": "AssignmentExpression", - "start": 4755, - "end": 4792, - "loc": { - "start": { - "line": 151, - "column": 8 - }, - "end": { - "line": 151, - "column": 45 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 4755, - "end": 4779, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6055, + "end": 6097, "loc": { "start": { - "line": 151, - "column": 8 + "line": 160, + "column": 14 }, "end": { - "line": 151, - "column": 32 + "line": 160, + "column": 56 } }, - "object": { - "type": "MemberExpression", - "start": 4755, - "end": 4770, + "id": { + "type": "Identifier", + "start": 6055, + "end": 6058, "loc": { "start": { - "line": 151, - "column": 8 + "line": 160, + "column": 14 }, "end": { - "line": 151, - "column": 23 + "line": 160, + "column": 17 + }, + "identifierName": "inc" + }, + "name": "inc" + }, + "init": { + "type": "BinaryExpression", + "start": 6061, + "end": 6097, + "loc": { + "start": { + "line": 160, + "column": 20 + }, + "end": { + "line": 160, + "column": 56 } }, - "object": { - "type": "MemberExpression", - "start": 4755, - "end": 4764, + "left": { + "type": "NumericLiteral", + "start": 6061, + "end": 6062, "loc": { "start": { - "line": 151, - "column": 8 + "line": 160, + "column": 20 }, "end": { - "line": 151, - "column": 17 + "line": 160, + "column": 21 } }, - "object": { - "type": "ThisExpression", - "start": 4755, - "end": 4759, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "operator": "/", + "right": { + "type": "BinaryExpression", + "start": 6066, + "end": 6096, + "loc": { + "start": { + "line": 160, + "column": 25 + }, + "end": { + "line": 160, + "column": 55 + } + }, + "left": { + "type": "MemberExpression", + "start": 6066, + "end": 6085, "loc": { "start": { - "line": 151, - "column": 8 + "line": 160, + "column": 25 }, "end": { - "line": 151, - "column": 12 + "line": 160, + "column": 44 } }, - "leadingComments": null + "object": { + "type": "ThisExpression", + "start": 6066, + "end": 6070, + "loc": { + "start": { + "line": 160, + "column": 25 + }, + "end": { + "line": 160, + "column": 29 + } + } + }, + "property": { + "type": "Identifier", + "start": 6071, + "end": 6085, + "loc": { + "start": { + "line": 160, + "column": 30 + }, + "end": { + "line": 160, + "column": 44 + }, + "identifierName": "_fadeMillisecs" + }, + "name": "_fadeMillisecs" + }, + "computed": false }, - "property": { + "operator": "/", + "right": { "type": "Identifier", - "start": 4760, - "end": 4764, + "start": 6088, + "end": 6096, "loc": { "start": { - "line": 151, - "column": 13 + "line": 160, + "column": 47 }, "end": { - "line": 151, - "column": 17 + "line": 160, + "column": 55 }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false, - "leadingComments": null - }, - "property": { - "type": "Identifier", - "start": 4765, - "end": 4770, - "loc": { - "start": { - "line": 151, - "column": 18 - }, - "end": { - "line": 151, - "column": 23 + "identifierName": "interval" }, - "identifierName": "style" - }, - "name": "style" - }, - "computed": false, - "leadingComments": null - }, - "property": { - "type": "Identifier", - "start": 4771, - "end": 4779, - "loc": { - "start": { - "line": 151, - "column": 24 - }, - "end": { - "line": 151, - "column": 32 + "name": "interval" }, - "identifierName": "position" - }, - "name": "position" - }, - "computed": false, - "leadingComments": null - }, - "right": { - "type": "StringLiteral", - "start": 4782, - "end": 4792, - "loc": { - "start": { - "line": 151, - "column": 35 - }, - "end": { - "line": 151, - "column": 45 - } - }, - "extra": { - "rawValue": "absolute", - "raw": "\"absolute\"" - }, - "value": "absolute" - }, - "leadingComments": null - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": "const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;", - "start": 4683, - "end": 4745, - "loc": { - "start": { - "line": 149, - "column": 8 - }, - "end": { - "line": 149, - "column": 70 + "extra": { + "parenthesized": true, + "parenStart": 6065 + } } } } - ] + ], + "kind": "const" }, { - "type": "ExpressionStatement", - "start": 4802, - "end": 4833, + "type": "IfStatement", + "start": 6108, + "end": 6220, "loc": { "start": { - "line": 152, + "line": 162, "column": 8 }, "end": { - "line": 152, - "column": 39 + "line": 165, + "column": 9 } }, - "expression": { - "type": "AssignmentExpression", - "start": 4802, - "end": 4832, + "test": { + "type": "MemberExpression", + "start": 6112, + "end": 6127, "loc": { "start": { - "line": 152, - "column": 8 + "line": 162, + "column": 12 }, "end": { - "line": 152, - "column": 38 + "line": 162, + "column": 27 } }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 4802, - "end": 4828, + "object": { + "type": "ThisExpression", + "start": 6112, + "end": 6116, "loc": { "start": { - "line": 152, - "column": 8 + "line": 162, + "column": 12 }, "end": { - "line": 152, - "column": 34 + "line": 162, + "column": 16 } - }, - "object": { - "type": "MemberExpression", - "start": 4802, - "end": 4817, - "loc": { - "start": { - "line": 152, - "column": 8 - }, - "end": { - "line": 152, - "column": 23 - } + } + }, + "property": { + "type": "Identifier", + "start": 6117, + "end": 6127, + "loc": { + "start": { + "line": 162, + "column": 17 }, - "object": { - "type": "MemberExpression", - "start": 4802, - "end": 4811, - "loc": { - "start": { - "line": 152, - "column": 8 - }, + "end": { + "line": 162, + "column": 27 + }, + "identifierName": "_pInterval" + }, + "name": "_pInterval" + }, + "computed": false + }, + "consequent": { + "type": "BlockStatement", + "start": 6129, + "end": 6220, + "loc": { + "start": { + "line": 162, + "column": 29 + }, + "end": { + "line": 165, + "column": 9 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 6143, + "end": 6174, + "loc": { + "start": { + "line": 163, + "column": 12 + }, + "end": { + "line": 163, + "column": 43 + } + }, + "expression": { + "type": "CallExpression", + "start": 6143, + "end": 6173, + "loc": { + "start": { + "line": 163, + "column": 12 + }, "end": { - "line": 152, - "column": 17 + "line": 163, + "column": 42 } }, - "object": { - "type": "ThisExpression", - "start": 4802, - "end": 4806, + "callee": { + "type": "Identifier", + "start": 6143, + "end": 6156, "loc": { "start": { - "line": 152, - "column": 8 + "line": 163, + "column": 12 }, "end": { - "line": 152, + "line": 163, + "column": 25 + }, + "identifierName": "clearInterval" + }, + "name": "clearInterval" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 6157, + "end": 6172, + "loc": { + "start": { + "line": 163, + "column": 26 + }, + "end": { + "line": 163, + "column": 41 + } + }, + "object": { + "type": "ThisExpression", + "start": 6157, + "end": 6161, + "loc": { + "start": { + "line": 163, + "column": 26 + }, + "end": { + "line": 163, + "column": 30 + } + } + }, + "property": { + "type": "Identifier", + "start": 6162, + "end": 6172, + "loc": { + "start": { + "line": 163, + "column": 31 + }, + "end": { + "line": 163, + "column": 41 + }, + "identifierName": "_pInterval" + }, + "name": "_pInterval" + }, + "computed": false + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 6187, + "end": 6210, + "loc": { + "start": { + "line": 164, + "column": 12 + }, + "end": { + "line": 164, + "column": 35 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6187, + "end": 6209, + "loc": { + "start": { + "line": 164, + "column": 12 + }, + "end": { + "line": 164, + "column": 34 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6187, + "end": 6202, + "loc": { + "start": { + "line": 164, "column": 12 + }, + "end": { + "line": 164, + "column": 27 + } + }, + "object": { + "type": "ThisExpression", + "start": 6187, + "end": 6191, + "loc": { + "start": { + "line": 164, + "column": 12 + }, + "end": { + "line": 164, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 6192, + "end": 6202, + "loc": { + "start": { + "line": 164, + "column": 17 + }, + "end": { + "line": 164, + "column": 27 + }, + "identifierName": "_pInterval" + }, + "name": "_pInterval" + }, + "computed": false + }, + "right": { + "type": "NullLiteral", + "start": 6205, + "end": 6209, + "loc": { + "start": { + "line": 164, + "column": 30 + }, + "end": { + "line": 164, + "column": 34 } } + } + } + } + ], + "directives": [] + }, + "alternate": null + }, + { + "type": "VariableDeclaration", + "start": 6230, + "end": 6257, + "loc": { + "start": { + "line": 167, + "column": 8 + }, + "end": { + "line": 167, + "column": 35 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6236, + "end": 6256, + "loc": { + "start": { + "line": 167, + "column": 14 + }, + "end": { + "line": 167, + "column": 34 + } + }, + "id": { + "type": "Identifier", + "start": 6236, + "end": 6242, + "loc": { + "start": { + "line": 167, + "column": 14 + }, + "end": { + "line": 167, + "column": 20 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "init": { + "type": "MemberExpression", + "start": 6245, + "end": 6256, + "loc": { + "start": { + "line": 167, + "column": 23 + }, + "end": { + "line": 167, + "column": 34 + } + }, + "object": { + "type": "ThisExpression", + "start": 6245, + "end": 6249, + "loc": { + "start": { + "line": 167, + "column": 23 + }, + "end": { + "line": 167, + "column": 27 + } + } + }, + "property": { + "type": "Identifier", + "start": 6250, + "end": 6256, + "loc": { + "start": { + "line": 167, + "column": 28 + }, + "end": { + "line": 167, + "column": 34 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 6267, + "end": 6309, + "loc": { + "start": { + "line": 169, + "column": 8 + }, + "end": { + "line": 169, + "column": 50 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6273, + "end": 6308, + "loc": { + "start": { + "line": 169, + "column": 14 + }, + "end": { + "line": 169, + "column": 49 + } + }, + "id": { + "type": "Identifier", + "start": 6273, + "end": 6279, + "loc": { + "start": { + "line": 169, + "column": 14 + }, + "end": { + "line": 169, + "column": 20 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "init": { + "type": "MemberExpression", + "start": 6282, + "end": 6308, + "loc": { + "start": { + "line": 169, + "column": 23 + }, + "end": { + "line": 169, + "column": 49 + } + }, + "object": { + "type": "MemberExpression", + "start": 6282, + "end": 6301, + "loc": { + "start": { + "line": 169, + "column": 23 + }, + "end": { + "line": 169, + "column": 42 + } + }, + "object": { + "type": "MemberExpression", + "start": 6282, + "end": 6294, + "loc": { + "start": { + "line": 169, + "column": 23 + }, + "end": { + "line": 169, + "column": 35 + } + }, + "object": { + "type": "Identifier", + "start": 6282, + "end": 6288, + "loc": { + "start": { + "line": 169, + "column": 23 + }, + "end": { + "line": 169, + "column": 29 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 6289, + "end": 6294, + "loc": { + "start": { + "line": 169, + "column": 30 + }, + "end": { + "line": 169, + "column": 35 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false }, "property": { "type": "Identifier", - "start": 4807, - "end": 4811, + "start": 6295, + "end": 6301, "loc": { "start": { - "line": 152, - "column": 13 + "line": 169, + "column": 36 }, "end": { - "line": 152, - "column": 17 + "line": 169, + "column": 42 }, - "identifierName": "_img" + "identifierName": "canvas" }, - "name": "_img" + "name": "canvas" }, "computed": false }, "property": { "type": "Identifier", - "start": 4812, - "end": 4817, + "start": 6302, + "end": 6308, "loc": { "start": { - "line": 152, - "column": 18 + "line": 169, + "column": 43 }, "end": { - "line": 152, - "column": 23 + "line": 169, + "column": 49 }, - "identifierName": "style" + "identifierName": "canvas" }, - "name": "style" + "name": "canvas" }, "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 6318, + "end": 6364, + "loc": { + "start": { + "line": 170, + "column": 8 + }, + "end": { + "line": 170, + "column": 54 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6324, + "end": 6363, + "loc": { + "start": { + "line": 170, + "column": 14 + }, + "end": { + "line": 170, + "column": 53 + } }, - "property": { - "type": "StringLiteral", - "start": 4818, - "end": 4827, + "id": { + "type": "Identifier", + "start": 6324, + "end": 6336, "loc": { "start": { - "line": 152, - "column": 24 + "line": 170, + "column": 14 }, "end": { - "line": 152, - "column": 33 + "line": 170, + "column": 26 + }, + "identifierName": "canvasOffset" + }, + "name": "canvasOffset" + }, + "init": { + "type": "CallExpression", + "start": 6339, + "end": 6363, + "loc": { + "start": { + "line": 170, + "column": 29 + }, + "end": { + "line": 170, + "column": 53 } }, - "extra": { - "rawValue": "z-index", - "raw": "\"z-index\"" + "callee": { + "type": "Identifier", + "start": 6339, + "end": 6355, + "loc": { + "start": { + "line": 170, + "column": 29 + }, + "end": { + "line": 170, + "column": 45 + }, + "identifierName": "cumulativeOffset" + }, + "name": "cumulativeOffset" }, - "value": "z-index" - }, - "computed": true - }, - "right": { - "type": "NumericLiteral", - "start": 4831, - "end": 4832, + "arguments": [ + { + "type": "Identifier", + "start": 6356, + "end": 6362, + "loc": { + "start": { + "line": 170, + "column": 46 + }, + "end": { + "line": 170, + "column": 52 + }, + "identifierName": "canvas" + }, + "name": "canvas" + } + ] + } + } + ], + "kind": "const", + "trailingComments": [ + { + "type": "CommentLine", + "value": "const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;", + "start": 6373, + "end": 6435, "loc": { "start": { - "line": 152, - "column": 37 + "line": 171, + "column": 8 }, "end": { - "line": 152, - "column": 38 + "line": 171, + "column": 70 } - }, - "extra": { - "rawValue": 5, - "raw": "5" - }, - "value": 5 + } } - } + ] }, { "type": "ExpressionStatement", - "start": 4842, - "end": 4898, + "start": 6445, + "end": 6483, "loc": { "start": { - "line": 153, + "line": 173, "column": 8 }, "end": { - "line": 153, - "column": 64 + "line": 173, + "column": 46 } }, "expression": { "type": "AssignmentExpression", - "start": 4842, - "end": 4897, + "start": 6445, + "end": 6482, "loc": { "start": { - "line": 153, + "line": 173, "column": 8 }, "end": { - "line": 153, - "column": 63 + "line": 173, + "column": 45 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 4842, - "end": 4871, + "start": 6445, + "end": 6469, "loc": { "start": { - "line": 153, + "line": 173, "column": 8 }, "end": { - "line": 153, - "column": 37 + "line": 173, + "column": 32 } }, "object": { "type": "MemberExpression", - "start": 4842, - "end": 4857, + "start": 6445, + "end": 6460, "loc": { "start": { - "line": 153, + "line": 173, "column": 8 }, "end": { - "line": 153, + "line": 173, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 4842, - "end": 4851, + "start": 6445, + "end": 6454, "loc": { "start": { - "line": 153, + "line": 173, "column": 8 }, "end": { - "line": 153, + "line": 173, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 4842, - "end": 4846, + "start": 6445, + "end": 6449, "loc": { "start": { - "line": 153, + "line": 173, "column": 8 }, "end": { - "line": 153, + "line": 173, "column": 12 } - } + }, + "leadingComments": null }, "property": { "type": "Identifier", - "start": 4847, - "end": 4851, + "start": 6450, + "end": 6454, "loc": { "start": { - "line": 153, + "line": 173, "column": 13 }, "end": { - "line": 153, + "line": 173, "column": 17 }, "identifierName": "_img" }, "name": "_img" }, - "computed": false + "computed": false, + "leadingComments": null }, "property": { "type": "Identifier", - "start": 4852, - "end": 4857, + "start": 6455, + "end": 6460, "loc": { "start": { - "line": 153, + "line": 173, "column": 18 }, "end": { - "line": 153, + "line": 173, "column": 23 }, "identifierName": "style" }, "name": "style" }, - "computed": false + "computed": false, + "leadingComments": null }, "property": { - "type": "StringLiteral", - "start": 4858, - "end": 4870, + "type": "Identifier", + "start": 6461, + "end": 6469, "loc": { "start": { - "line": 153, + "line": 173, "column": 24 }, "end": { - "line": 153, - "column": 36 - } - }, - "extra": { - "rawValue": "background", - "raw": "\"background\"" + "line": 173, + "column": 32 + }, + "identifierName": "position" }, - "value": "background" + "name": "position" }, - "computed": true + "computed": false, + "leadingComments": null }, "right": { - "type": "MemberExpression", - "start": 4874, - "end": 4897, + "type": "StringLiteral", + "start": 6472, + "end": 6482, "loc": { "start": { - "line": 153, - "column": 40 + "line": 173, + "column": 35 }, "end": { - "line": 153, + "line": 173, + "column": 45 + } + }, + "extra": { + "rawValue": "absolute", + "raw": "\"absolute\"" + }, + "value": "absolute" + }, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": "const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;", + "start": 6373, + "end": 6435, + "loc": { + "start": { + "line": 171, + "column": 8 + }, + "end": { + "line": 171, + "column": 70 + } + } + } + ] + }, + { + "type": "ExpressionStatement", + "start": 6492, + "end": 6523, + "loc": { + "start": { + "line": 174, + "column": 8 + }, + "end": { + "line": 174, + "column": 39 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6492, + "end": 6522, + "loc": { + "start": { + "line": 174, + "column": 8 + }, + "end": { + "line": 174, + "column": 38 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6492, + "end": 6518, + "loc": { + "start": { + "line": 174, + "column": 8 + }, + "end": { + "line": 174, + "column": 34 + } + }, + "object": { + "type": "MemberExpression", + "start": 6492, + "end": 6507, + "loc": { + "start": { + "line": 174, + "column": 8 + }, + "end": { + "line": 174, + "column": 23 + } + }, + "object": { + "type": "MemberExpression", + "start": 6492, + "end": 6501, + "loc": { + "start": { + "line": 174, + "column": 8 + }, + "end": { + "line": 174, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 6492, + "end": 6496, + "loc": { + "start": { + "line": 174, + "column": 8 + }, + "end": { + "line": 174, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 6497, + "end": 6501, + "loc": { + "start": { + "line": 174, + "column": 13 + }, + "end": { + "line": 174, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6502, + "end": 6507, + "loc": { + "start": { + "line": 174, + "column": 18 + }, + "end": { + "line": 174, + "column": 23 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "StringLiteral", + "start": 6508, + "end": 6517, + "loc": { + "start": { + "line": 174, + "column": 24 + }, + "end": { + "line": 174, + "column": 33 + } + }, + "extra": { + "rawValue": "z-index", + "raw": "\"z-index\"" + }, + "value": "z-index" + }, + "computed": true + }, + "right": { + "type": "NumericLiteral", + "start": 6521, + "end": 6522, + "loc": { + "start": { + "line": 174, + "column": 37 + }, + "end": { + "line": 174, + "column": 38 + } + }, + "extra": { + "rawValue": 5, + "raw": "5" + }, + "value": 5 + } + } + }, + { + "type": "ExpressionStatement", + "start": 6532, + "end": 6588, + "loc": { + "start": { + "line": 175, + "column": 8 + }, + "end": { + "line": 175, + "column": 64 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6532, + "end": 6587, + "loc": { + "start": { + "line": 175, + "column": 8 + }, + "end": { + "line": 175, + "column": 63 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6532, + "end": 6561, + "loc": { + "start": { + "line": 175, + "column": 8 + }, + "end": { + "line": 175, + "column": 37 + } + }, + "object": { + "type": "MemberExpression", + "start": 6532, + "end": 6547, + "loc": { + "start": { + "line": 175, + "column": 8 + }, + "end": { + "line": 175, + "column": 23 + } + }, + "object": { + "type": "MemberExpression", + "start": 6532, + "end": 6541, + "loc": { + "start": { + "line": 175, + "column": 8 + }, + "end": { + "line": 175, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 6532, + "end": 6536, + "loc": { + "start": { + "line": 175, + "column": 8 + }, + "end": { + "line": 175, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 6537, + "end": 6541, + "loc": { + "start": { + "line": 175, + "column": 13 + }, + "end": { + "line": 175, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6542, + "end": 6547, + "loc": { + "start": { + "line": 175, + "column": 18 + }, + "end": { + "line": 175, + "column": 23 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "StringLiteral", + "start": 6548, + "end": 6560, + "loc": { + "start": { + "line": 175, + "column": 24 + }, + "end": { + "line": 175, + "column": 36 + } + }, + "extra": { + "rawValue": "background", + "raw": "\"background\"" + }, + "value": "background" + }, + "computed": true + }, + "right": { + "type": "MemberExpression", + "start": 6564, + "end": 6587, + "loc": { + "start": { + "line": 175, + "column": 40 + }, + "end": { + "line": 175, "column": 63 } }, "object": { "type": "MemberExpression", - "start": 4874, - "end": 4886, + "start": 6564, + "end": 6576, "loc": { "start": { - "line": 153, + "line": 175, "column": 40 }, "end": { - "line": 153, + "line": 175, "column": 52 } }, "object": { "type": "Identifier", - "start": 4874, - "end": 4880, + "start": 6564, + "end": 6570, "loc": { "start": { - "line": 153, + "line": 175, "column": 40 }, "end": { - "line": 153, + "line": 175, "column": 46 }, "identifierName": "canvas" @@ -8139,15 +9861,15 @@ }, "property": { "type": "Identifier", - "start": 4881, - "end": 4886, + "start": 6571, + "end": 6576, "loc": { "start": { - "line": 153, + "line": 175, "column": 47 }, "end": { - "line": 153, + "line": 175, "column": 52 }, "identifierName": "style" @@ -8158,15 +9880,15 @@ }, "property": { "type": "Identifier", - "start": 4887, - "end": 4897, + "start": 6577, + "end": 6587, "loc": { "start": { - "line": 153, + "line": 175, "column": 53 }, "end": { - "line": 153, + "line": 175, "column": 63 }, "identifierName": "background" @@ -8179,101 +9901,101 @@ }, { "type": "ExpressionStatement", - "start": 4907, - "end": 4955, + "start": 6597, + "end": 6645, "loc": { "start": { - "line": 154, + "line": 176, "column": 8 }, "end": { - "line": 154, + "line": 176, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 4907, - "end": 4954, + "start": 6597, + "end": 6644, "loc": { "start": { - "line": 154, + "line": 176, "column": 8 }, "end": { - "line": 154, + "line": 176, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 4907, - "end": 4927, + "start": 6597, + "end": 6617, "loc": { "start": { - "line": 154, + "line": 176, "column": 8 }, "end": { - "line": 154, + "line": 176, "column": 28 } }, "object": { "type": "MemberExpression", - "start": 4907, - "end": 4922, + "start": 6597, + "end": 6612, "loc": { "start": { - "line": 154, + "line": 176, "column": 8 }, "end": { - "line": 154, + "line": 176, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 4907, - "end": 4916, + "start": 6597, + "end": 6606, "loc": { "start": { - "line": 154, + "line": 176, "column": 8 }, "end": { - "line": 154, + "line": 176, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 4907, - "end": 4911, + "start": 6597, + "end": 6601, "loc": { "start": { - "line": 154, + "line": 176, "column": 8 }, "end": { - "line": 154, + "line": 176, "column": 12 } } }, "property": { "type": "Identifier", - "start": 4912, - "end": 4916, + "start": 6602, + "end": 6606, "loc": { "start": { - "line": 154, + "line": 176, "column": 13 }, "end": { - "line": 154, + "line": 176, "column": 17 }, "identifierName": "_img" @@ -8284,15 +10006,15 @@ }, "property": { "type": "Identifier", - "start": 4917, - "end": 4922, + "start": 6607, + "end": 6612, "loc": { "start": { - "line": 154, + "line": 176, "column": 18 }, "end": { - "line": 154, + "line": 176, "column": 23 }, "identifierName": "style" @@ -8303,15 +10025,15 @@ }, "property": { "type": "Identifier", - "start": 4923, - "end": 4927, + "start": 6613, + "end": 6617, "loc": { "start": { - "line": 154, + "line": 176, "column": 24 }, "end": { - "line": 154, + "line": 176, "column": 28 }, "identifierName": "left" @@ -8322,43 +10044,43 @@ }, "right": { "type": "BinaryExpression", - "start": 4930, - "end": 4954, + "start": 6620, + "end": 6644, "loc": { "start": { - "line": 154, + "line": 176, "column": 31 }, "end": { - "line": 154, + "line": 176, "column": 55 } }, "left": { "type": "MemberExpression", - "start": 4930, - "end": 4947, + "start": 6620, + "end": 6637, "loc": { "start": { - "line": 154, + "line": 176, "column": 31 }, "end": { - "line": 154, + "line": 176, "column": 48 } }, "object": { "type": "Identifier", - "start": 4930, - "end": 4942, + "start": 6620, + "end": 6632, "loc": { "start": { - "line": 154, + "line": 176, "column": 31 }, "end": { - "line": 154, + "line": 176, "column": 43 }, "identifierName": "canvasOffset" @@ -8367,15 +10089,15 @@ }, "property": { "type": "Identifier", - "start": 4943, - "end": 4947, + "start": 6633, + "end": 6637, "loc": { "start": { - "line": 154, + "line": 176, "column": 44 }, "end": { - "line": 154, + "line": 176, "column": 48 }, "identifierName": "left" @@ -8387,15 +10109,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 4950, - "end": 4954, + "start": 6640, + "end": 6644, "loc": { "start": { - "line": 154, + "line": 176, "column": 51 }, "end": { - "line": 154, + "line": 176, "column": 55 } }, @@ -8410,101 +10132,101 @@ }, { "type": "ExpressionStatement", - "start": 4964, - "end": 5010, + "start": 6654, + "end": 6700, "loc": { "start": { - "line": 155, + "line": 177, "column": 8 }, "end": { - "line": 155, + "line": 177, "column": 54 } }, "expression": { "type": "AssignmentExpression", - "start": 4964, - "end": 5009, + "start": 6654, + "end": 6699, "loc": { "start": { - "line": 155, + "line": 177, "column": 8 }, "end": { - "line": 155, + "line": 177, "column": 53 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 4964, - "end": 4983, + "start": 6654, + "end": 6673, "loc": { "start": { - "line": 155, + "line": 177, "column": 8 }, "end": { - "line": 155, + "line": 177, "column": 27 } }, "object": { "type": "MemberExpression", - "start": 4964, - "end": 4979, + "start": 6654, + "end": 6669, "loc": { "start": { - "line": 155, + "line": 177, "column": 8 }, "end": { - "line": 155, + "line": 177, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 4964, - "end": 4973, + "start": 6654, + "end": 6663, "loc": { "start": { - "line": 155, + "line": 177, "column": 8 }, "end": { - "line": 155, + "line": 177, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 4964, - "end": 4968, + "start": 6654, + "end": 6658, "loc": { "start": { - "line": 155, + "line": 177, "column": 8 }, "end": { - "line": 155, + "line": 177, "column": 12 } } }, "property": { "type": "Identifier", - "start": 4969, - "end": 4973, + "start": 6659, + "end": 6663, "loc": { "start": { - "line": 155, + "line": 177, "column": 13 }, "end": { - "line": 155, + "line": 177, "column": 17 }, "identifierName": "_img" @@ -8515,15 +10237,15 @@ }, "property": { "type": "Identifier", - "start": 4974, - "end": 4979, + "start": 6664, + "end": 6669, "loc": { "start": { - "line": 155, + "line": 177, "column": 18 }, "end": { - "line": 155, + "line": 177, "column": 23 }, "identifierName": "style" @@ -8534,15 +10256,15 @@ }, "property": { "type": "Identifier", - "start": 4980, - "end": 4983, + "start": 6670, + "end": 6673, "loc": { "start": { - "line": 155, + "line": 177, "column": 24 }, "end": { - "line": 155, + "line": 177, "column": 27 }, "identifierName": "top" @@ -8553,43 +10275,43 @@ }, "right": { "type": "BinaryExpression", - "start": 4986, - "end": 5009, + "start": 6676, + "end": 6699, "loc": { "start": { - "line": 155, + "line": 177, "column": 30 }, "end": { - "line": 155, + "line": 177, "column": 53 } }, "left": { "type": "MemberExpression", - "start": 4986, - "end": 5002, + "start": 6676, + "end": 6692, "loc": { "start": { - "line": 155, + "line": 177, "column": 30 }, "end": { - "line": 155, + "line": 177, "column": 46 } }, "object": { "type": "Identifier", - "start": 4986, - "end": 4998, + "start": 6676, + "end": 6688, "loc": { "start": { - "line": 155, + "line": 177, "column": 30 }, "end": { - "line": 155, + "line": 177, "column": 42 }, "identifierName": "canvasOffset" @@ -8598,15 +10320,15 @@ }, "property": { "type": "Identifier", - "start": 4999, - "end": 5002, + "start": 6689, + "end": 6692, "loc": { "start": { - "line": 155, + "line": 177, "column": 43 }, "end": { - "line": 155, + "line": 177, "column": 46 }, "identifierName": "top" @@ -8618,15 +10340,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 5005, - "end": 5009, + "start": 6695, + "end": 6699, "loc": { "start": { - "line": 155, + "line": 177, "column": 49 }, "end": { - "line": 155, + "line": 177, "column": 53 } }, @@ -8641,101 +10363,101 @@ }, { "type": "ExpressionStatement", - "start": 5019, - "end": 5063, + "start": 6709, + "end": 6753, "loc": { "start": { - "line": 156, + "line": 178, "column": 8 }, "end": { - "line": 156, + "line": 178, "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 5019, - "end": 5062, + "start": 6709, + "end": 6752, "loc": { "start": { - "line": 156, + "line": 178, "column": 8 }, "end": { - "line": 156, + "line": 178, "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5019, - "end": 5040, + "start": 6709, + "end": 6730, "loc": { "start": { - "line": 156, + "line": 178, "column": 8 }, "end": { - "line": 156, + "line": 178, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 5019, - "end": 5034, + "start": 6709, + "end": 6724, "loc": { "start": { - "line": 156, + "line": 178, "column": 8 }, "end": { - "line": 156, + "line": 178, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 5019, - "end": 5028, + "start": 6709, + "end": 6718, "loc": { "start": { - "line": 156, + "line": 178, "column": 8 }, "end": { - "line": 156, + "line": 178, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 5019, - "end": 5023, + "start": 6709, + "end": 6713, "loc": { "start": { - "line": 156, + "line": 178, "column": 8 }, "end": { - "line": 156, + "line": 178, "column": 12 } } }, "property": { "type": "Identifier", - "start": 5024, - "end": 5028, + "start": 6714, + "end": 6718, "loc": { "start": { - "line": 156, + "line": 178, "column": 13 }, "end": { - "line": 156, + "line": 178, "column": 17 }, "identifierName": "_img" @@ -8746,15 +10468,15 @@ }, "property": { "type": "Identifier", - "start": 5029, - "end": 5034, + "start": 6719, + "end": 6724, "loc": { "start": { - "line": 156, + "line": 178, "column": 18 }, "end": { - "line": 156, + "line": 178, "column": 23 }, "identifierName": "style" @@ -8765,15 +10487,15 @@ }, "property": { "type": "Identifier", - "start": 5035, - "end": 5040, + "start": 6725, + "end": 6730, "loc": { "start": { - "line": 156, + "line": 178, "column": 24 }, "end": { - "line": 156, + "line": 178, "column": 29 }, "identifierName": "width" @@ -8784,43 +10506,43 @@ }, "right": { "type": "BinaryExpression", - "start": 5043, - "end": 5062, + "start": 6733, + "end": 6752, "loc": { "start": { - "line": 156, + "line": 178, "column": 32 }, "end": { - "line": 156, + "line": 178, "column": 51 } }, "left": { "type": "MemberExpression", - "start": 5043, - "end": 5055, + "start": 6733, + "end": 6745, "loc": { "start": { - "line": 156, + "line": 178, "column": 32 }, "end": { - "line": 156, + "line": 178, "column": 44 } }, "object": { "type": "Identifier", - "start": 5043, - "end": 5049, + "start": 6733, + "end": 6739, "loc": { "start": { - "line": 156, + "line": 178, "column": 32 }, "end": { - "line": 156, + "line": 178, "column": 38 }, "identifierName": "canvas" @@ -8829,15 +10551,15 @@ }, "property": { "type": "Identifier", - "start": 5050, - "end": 5055, + "start": 6740, + "end": 6745, "loc": { "start": { - "line": 156, + "line": 178, "column": 39 }, "end": { - "line": 156, + "line": 178, "column": 44 }, "identifierName": "width" @@ -8849,15 +10571,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 5058, - "end": 5062, + "start": 6748, + "end": 6752, "loc": { "start": { - "line": 156, + "line": 178, "column": 47 }, "end": { - "line": 156, + "line": 178, "column": 51 } }, @@ -8872,101 +10594,101 @@ }, { "type": "ExpressionStatement", - "start": 5072, - "end": 5118, + "start": 6762, + "end": 6808, "loc": { "start": { - "line": 157, + "line": 179, "column": 8 }, "end": { - "line": 157, + "line": 179, "column": 54 } }, "expression": { "type": "AssignmentExpression", - "start": 5072, - "end": 5117, + "start": 6762, + "end": 6807, "loc": { "start": { - "line": 157, + "line": 179, "column": 8 }, "end": { - "line": 157, + "line": 179, "column": 53 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5072, - "end": 5094, + "start": 6762, + "end": 6784, "loc": { "start": { - "line": 157, + "line": 179, "column": 8 }, "end": { - "line": 157, + "line": 179, "column": 30 } }, "object": { "type": "MemberExpression", - "start": 5072, - "end": 5087, + "start": 6762, + "end": 6777, "loc": { "start": { - "line": 157, + "line": 179, "column": 8 }, "end": { - "line": 157, + "line": 179, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 5072, - "end": 5081, + "start": 6762, + "end": 6771, "loc": { "start": { - "line": 157, + "line": 179, "column": 8 }, "end": { - "line": 157, + "line": 179, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 5072, - "end": 5076, + "start": 6762, + "end": 6766, "loc": { "start": { - "line": 157, + "line": 179, "column": 8 }, "end": { - "line": 157, + "line": 179, "column": 12 } } }, "property": { "type": "Identifier", - "start": 5077, - "end": 5081, + "start": 6767, + "end": 6771, "loc": { "start": { - "line": 157, + "line": 179, "column": 13 }, "end": { - "line": 157, + "line": 179, "column": 17 }, "identifierName": "_img" @@ -8977,15 +10699,15 @@ }, "property": { "type": "Identifier", - "start": 5082, - "end": 5087, + "start": 6772, + "end": 6777, "loc": { "start": { - "line": 157, + "line": 179, "column": 18 }, "end": { - "line": 157, + "line": 179, "column": 23 }, "identifierName": "style" @@ -8996,15 +10718,15 @@ }, "property": { "type": "Identifier", - "start": 5088, - "end": 5094, + "start": 6778, + "end": 6784, "loc": { "start": { - "line": 157, + "line": 179, "column": 24 }, "end": { - "line": 157, + "line": 179, "column": 30 }, "identifierName": "height" @@ -9015,43 +10737,43 @@ }, "right": { "type": "BinaryExpression", - "start": 5097, - "end": 5117, + "start": 6787, + "end": 6807, "loc": { "start": { - "line": 157, + "line": 179, "column": 33 }, "end": { - "line": 157, + "line": 179, "column": 53 } }, "left": { "type": "MemberExpression", - "start": 5097, - "end": 5110, + "start": 6787, + "end": 6800, "loc": { "start": { - "line": 157, + "line": 179, "column": 33 }, "end": { - "line": 157, + "line": 179, "column": 46 } }, "object": { "type": "Identifier", - "start": 5097, - "end": 5103, + "start": 6787, + "end": 6793, "loc": { "start": { - "line": 157, + "line": 179, "column": 33 }, "end": { - "line": 157, + "line": 179, "column": 39 }, "identifierName": "canvas" @@ -9060,15 +10782,15 @@ }, "property": { "type": "Identifier", - "start": 5104, - "end": 5110, + "start": 6794, + "end": 6800, "loc": { "start": { - "line": 157, + "line": 179, "column": 40 }, "end": { - "line": 157, + "line": 179, "column": 46 }, "identifierName": "height" @@ -9080,15 +10802,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 5113, - "end": 5117, + "start": 6803, + "end": 6807, "loc": { "start": { - "line": 157, + "line": 179, "column": 49 }, "end": { - "line": 157, + "line": 179, "column": 53 } }, @@ -9103,101 +10825,101 @@ }, { "type": "ExpressionStatement", - "start": 5127, - "end": 5155, + "start": 6817, + "end": 6845, "loc": { "start": { - "line": 158, + "line": 180, "column": 8 }, "end": { - "line": 158, + "line": 180, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 5127, - "end": 5154, + "start": 6817, + "end": 6844, "loc": { "start": { - "line": 158, + "line": 180, "column": 8 }, "end": { - "line": 158, + "line": 180, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5127, - "end": 5150, + "start": 6817, + "end": 6840, "loc": { "start": { - "line": 158, + "line": 180, "column": 8 }, "end": { - "line": 158, + "line": 180, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 5127, - "end": 5142, + "start": 6817, + "end": 6832, "loc": { "start": { - "line": 158, + "line": 180, "column": 8 }, "end": { - "line": 158, + "line": 180, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 5127, - "end": 5136, + "start": 6817, + "end": 6826, "loc": { "start": { - "line": 158, + "line": 180, "column": 8 }, "end": { - "line": 158, + "line": 180, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 5127, - "end": 5131, + "start": 6817, + "end": 6821, "loc": { "start": { - "line": 158, + "line": 180, "column": 8 }, "end": { - "line": 158, + "line": 180, "column": 12 } } }, "property": { "type": "Identifier", - "start": 5132, - "end": 5136, + "start": 6822, + "end": 6826, "loc": { "start": { - "line": 158, + "line": 180, "column": 13 }, "end": { - "line": 158, + "line": 180, "column": 17 }, "identifierName": "_img" @@ -9208,15 +10930,15 @@ }, "property": { "type": "Identifier", - "start": 5137, - "end": 5142, + "start": 6827, + "end": 6832, "loc": { "start": { - "line": 158, + "line": 180, "column": 18 }, "end": { - "line": 158, + "line": 180, "column": 23 }, "identifierName": "style" @@ -9227,15 +10949,15 @@ }, "property": { "type": "Identifier", - "start": 5143, - "end": 5150, + "start": 6833, + "end": 6840, "loc": { "start": { - "line": 158, + "line": 180, "column": 24 }, "end": { - "line": 158, + "line": 180, "column": 31 }, "identifierName": "opacity" @@ -9246,15 +10968,15 @@ }, "right": { "type": "NumericLiteral", - "start": 5153, - "end": 5154, + "start": 6843, + "end": 6844, "loc": { "start": { - "line": 158, + "line": 180, "column": 34 }, "end": { - "line": 158, + "line": 180, "column": 35 } }, @@ -9268,87 +10990,87 @@ }, { "type": "ExpressionStatement", - "start": 5164, - "end": 5195, + "start": 6854, + "end": 6885, "loc": { "start": { - "line": 159, + "line": 181, "column": 8 }, "end": { - "line": 159, + "line": 181, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 5164, - "end": 5194, + "start": 6854, + "end": 6884, "loc": { "start": { - "line": 159, + "line": 181, "column": 8 }, "end": { - "line": 159, + "line": 181, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5164, - "end": 5179, + "start": 6854, + "end": 6869, "loc": { "start": { - "line": 159, + "line": 181, "column": 8 }, "end": { - "line": 159, + "line": 181, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 5164, - "end": 5173, + "start": 6854, + "end": 6863, "loc": { "start": { - "line": 159, + "line": 181, "column": 8 }, "end": { - "line": 159, + "line": 181, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 5164, - "end": 5168, + "start": 6854, + "end": 6858, "loc": { "start": { - "line": 159, + "line": 181, "column": 8 }, "end": { - "line": 159, + "line": 181, "column": 12 } } }, "property": { "type": "Identifier", - "start": 5169, - "end": 5173, + "start": 6859, + "end": 6863, "loc": { "start": { - "line": 159, + "line": 181, "column": 13 }, "end": { - "line": 159, + "line": 181, "column": 17 }, "identifierName": "_img" @@ -9359,15 +11081,15 @@ }, "property": { "type": "Identifier", - "start": 5174, - "end": 5179, + "start": 6864, + "end": 6869, "loc": { "start": { - "line": 159, + "line": 181, "column": 18 }, "end": { - "line": 159, + "line": 181, "column": 23 }, "identifierName": "width" @@ -9378,29 +11100,29 @@ }, "right": { "type": "MemberExpression", - "start": 5182, - "end": 5194, + "start": 6872, + "end": 6884, "loc": { "start": { - "line": 159, + "line": 181, "column": 26 }, "end": { - "line": 159, + "line": 181, "column": 38 } }, "object": { "type": "Identifier", - "start": 5182, - "end": 5188, + "start": 6872, + "end": 6878, "loc": { "start": { - "line": 159, + "line": 181, "column": 26 }, "end": { - "line": 159, + "line": 181, "column": 32 }, "identifierName": "canvas" @@ -9409,15 +11131,15 @@ }, "property": { "type": "Identifier", - "start": 5189, - "end": 5194, + "start": 6879, + "end": 6884, "loc": { "start": { - "line": 159, + "line": 181, "column": 33 }, "end": { - "line": 159, + "line": 181, "column": 38 }, "identifierName": "width" @@ -9430,87 +11152,87 @@ }, { "type": "ExpressionStatement", - "start": 5204, - "end": 5237, + "start": 6894, + "end": 6927, "loc": { "start": { - "line": 160, + "line": 182, "column": 8 }, "end": { - "line": 160, + "line": 182, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 5204, - "end": 5236, + "start": 6894, + "end": 6926, "loc": { "start": { - "line": 160, + "line": 182, "column": 8 }, "end": { - "line": 160, + "line": 182, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5204, - "end": 5220, + "start": 6894, + "end": 6910, "loc": { "start": { - "line": 160, + "line": 182, "column": 8 }, "end": { - "line": 160, + "line": 182, "column": 24 } }, "object": { "type": "MemberExpression", - "start": 5204, - "end": 5213, + "start": 6894, + "end": 6903, "loc": { "start": { - "line": 160, + "line": 182, "column": 8 }, "end": { - "line": 160, + "line": 182, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 5204, - "end": 5208, + "start": 6894, + "end": 6898, "loc": { "start": { - "line": 160, + "line": 182, "column": 8 }, "end": { - "line": 160, + "line": 182, "column": 12 } } }, "property": { "type": "Identifier", - "start": 5209, - "end": 5213, + "start": 6899, + "end": 6903, "loc": { "start": { - "line": 160, + "line": 182, "column": 13 }, "end": { - "line": 160, + "line": 182, "column": 17 }, "identifierName": "_img" @@ -9521,15 +11243,15 @@ }, "property": { "type": "Identifier", - "start": 5214, - "end": 5220, + "start": 6904, + "end": 6910, "loc": { "start": { - "line": 160, + "line": 182, "column": 18 }, "end": { - "line": 160, + "line": 182, "column": 24 }, "identifierName": "height" @@ -9540,29 +11262,29 @@ }, "right": { "type": "MemberExpression", - "start": 5223, - "end": 5236, + "start": 6913, + "end": 6926, "loc": { "start": { - "line": 160, + "line": 182, "column": 27 }, "end": { - "line": 160, + "line": 182, "column": 40 } }, "object": { "type": "Identifier", - "start": 5223, - "end": 5229, + "start": 6913, + "end": 6919, "loc": { "start": { - "line": 160, + "line": 182, "column": 27 }, "end": { - "line": 160, + "line": 182, "column": 33 }, "identifierName": "canvas" @@ -9571,15 +11293,15 @@ }, "property": { "type": "Identifier", - "start": 5230, - "end": 5236, + "start": 6920, + "end": 6926, "loc": { "start": { - "line": 160, + "line": 182, "column": 34 }, "end": { - "line": 160, + "line": 182, "column": 40 }, "identifierName": "height" @@ -9592,87 +11314,87 @@ }, { "type": "ExpressionStatement", - "start": 5246, - "end": 5358, + "start": 6936, + "end": 6955, "loc": { "start": { - "line": 161, + "line": 183, "column": 8 }, "end": { - "line": 164, - "column": 11 + "line": 183, + "column": 27 } }, "expression": { "type": "AssignmentExpression", - "start": 5246, - "end": 5357, + "start": 6936, + "end": 6954, "loc": { "start": { - "line": 161, + "line": 183, "column": 8 }, "end": { - "line": 164, - "column": 10 + "line": 183, + "column": 26 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5246, - "end": 5259, + "start": 6936, + "end": 6949, "loc": { "start": { - "line": 161, + "line": 183, "column": 8 }, "end": { - "line": 161, + "line": 183, "column": 21 } }, "object": { "type": "MemberExpression", - "start": 5246, - "end": 5255, + "start": 6936, + "end": 6945, "loc": { "start": { - "line": 161, + "line": 183, "column": 8 }, "end": { - "line": 161, + "line": 183, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 5246, - "end": 5250, + "start": 6936, + "end": 6940, "loc": { "start": { - "line": 161, + "line": 183, "column": 8 }, "end": { - "line": 161, + "line": 183, "column": 12 } } }, "property": { "type": "Identifier", - "start": 5251, - "end": 5255, + "start": 6941, + "end": 6945, "loc": { "start": { - "line": 161, + "line": 183, "column": 13 }, "end": { - "line": 161, + "line": 183, "column": 17 }, "identifierName": "_img" @@ -9683,15 +11405,15 @@ }, "property": { "type": "Identifier", - "start": 5256, - "end": 5259, + "start": 6946, + "end": 6949, "loc": { "start": { - "line": 161, + "line": 183, "column": 18 }, "end": { - "line": 161, + "line": 183, "column": 21 }, "identifierName": "src" @@ -9700,94 +11422,216 @@ }, "computed": false }, + "right": { + "type": "StringLiteral", + "start": 6952, + "end": 6954, + "loc": { + "start": { + "line": 183, + "column": 24 + }, + "end": { + "line": 183, + "column": 26 + } + }, + "extra": { + "rawValue": "", + "raw": "\"\"" + }, + "value": "" + } + }, + "trailingComments": [ + { + "type": "CommentLine", + "value": " Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624", + "start": 6956, + "end": 7026, + "loc": { + "start": { + "line": 183, + "column": 28 + }, + "end": { + "line": 183, + "column": 98 + } + } + } + ] + }, + { + "type": "ExpressionStatement", + "start": 7035, + "end": 7142, + "loc": { + "start": { + "line": 184, + "column": 8 + }, + "end": { + "line": 187, + "column": 11 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7035, + "end": 7141, + "loc": { + "start": { + "line": 184, + "column": 8 + }, + "end": { + "line": 187, + "column": 10 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 7035, + "end": 7048, + "loc": { + "start": { + "line": 184, + "column": 8 + }, + "end": { + "line": 184, + "column": 21 + } + }, + "object": { + "type": "MemberExpression", + "start": 7035, + "end": 7044, + "loc": { + "start": { + "line": 184, + "column": 8 + }, + "end": { + "line": 184, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 7035, + "end": 7039, + "loc": { + "start": { + "line": 184, + "column": 8 + }, + "end": { + "line": 184, + "column": 12 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 7040, + "end": 7044, + "loc": { + "start": { + "line": 184, + "column": 13 + }, + "end": { + "line": 184, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 7045, + "end": 7048, + "loc": { + "start": { + "line": 184, + "column": 18 + }, + "end": { + "line": 184, + "column": 21 + }, + "identifierName": "src" + }, + "name": "src" + }, + "computed": false, + "leadingComments": null + }, "right": { "type": "CallExpression", - "start": 5262, - "end": 5357, + "start": 7051, + "end": 7141, "loc": { "start": { - "line": 161, + "line": 184, "column": 24 }, "end": { - "line": 164, + "line": 187, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 5262, - "end": 5285, + "start": 7051, + "end": 7069, "loc": { "start": { - "line": 161, + "line": 184, "column": 24 }, "end": { - "line": 161, - "column": 47 + "line": 184, + "column": 42 } }, "object": { - "type": "MemberExpression", - "start": 5262, - "end": 5273, + "type": "Identifier", + "start": 7051, + "end": 7057, "loc": { "start": { - "line": 161, + "line": 184, "column": 24 }, "end": { - "line": 161, - "column": 35 - } - }, - "object": { - "type": "ThisExpression", - "start": 5262, - "end": 5266, - "loc": { - "start": { - "line": 161, - "column": 24 - }, - "end": { - "line": 161, - "column": 28 - } - } - }, - "property": { - "type": "Identifier", - "start": 5267, - "end": 5273, - "loc": { - "start": { - "line": 161, - "column": 29 - }, - "end": { - "line": 161, - "column": 35 - }, - "identifierName": "viewer" + "line": 184, + "column": 30 }, - "name": "viewer" + "identifierName": "viewer" }, - "computed": false + "name": "viewer" }, "property": { "type": "Identifier", - "start": 5274, - "end": 5285, + "start": 7058, + "end": 7069, "loc": { "start": { - "line": 161, - "column": 36 + "line": 184, + "column": 31 }, "end": { - "line": 161, - "column": 47 + "line": 184, + "column": 42 }, "identifierName": "getSnapshot" }, @@ -9798,30 +11642,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 5286, - "end": 5356, + "start": 7070, + "end": 7140, "loc": { "start": { - "line": 161, - "column": 48 + "line": 184, + "column": 43 }, "end": { - "line": 164, + "line": 187, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 5300, - "end": 5313, + "start": 7084, + "end": 7097, "loc": { "start": { - "line": 162, + "line": 185, "column": 12 }, "end": { - "line": 162, + "line": 185, "column": 25 } }, @@ -9830,15 +11674,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 5300, - "end": 5306, + "start": 7084, + "end": 7090, "loc": { "start": { - "line": 162, + "line": 185, "column": 12 }, "end": { - "line": 162, + "line": 185, "column": 18 }, "identifierName": "format" @@ -9847,15 +11691,15 @@ }, "value": { "type": "StringLiteral", - "start": 5308, - "end": 5313, + "start": 7092, + "end": 7097, "loc": { "start": { - "line": 162, + "line": 185, "column": 20 }, "end": { - "line": 162, + "line": 185, "column": 25 } }, @@ -9868,15 +11712,15 @@ }, { "type": "ObjectProperty", - "start": 5327, - "end": 5346, + "start": 7111, + "end": 7130, "loc": { "start": { - "line": 163, + "line": 186, "column": 12 }, "end": { - "line": 163, + "line": 186, "column": 31 } }, @@ -9885,15 +11729,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 5327, - "end": 5340, + "start": 7111, + "end": 7124, "loc": { "start": { - "line": 163, + "line": 186, "column": 12 }, "end": { - "line": 163, + "line": 186, "column": 25 }, "identifierName": "includeGizmos" @@ -9902,15 +11746,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 5342, - "end": 5346, + "start": 7126, + "end": 7130, "loc": { "start": { - "line": 163, + "line": 186, "column": 27 }, "end": { - "line": 163, + "line": 186, "column": 31 } }, @@ -9920,106 +11764,125 @@ ] } ] + }, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624", + "start": 6956, + "end": 7026, + "loc": { + "start": { + "line": 183, + "column": 28 + }, + "end": { + "line": 183, + "column": 98 + } + } } - } + ] }, { "type": "ExpressionStatement", - "start": 5367, - "end": 5406, + "start": 7151, + "end": 7190, "loc": { "start": { - "line": 165, + "line": 188, "column": 8 }, "end": { - "line": 165, + "line": 188, "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 5367, - "end": 5405, + "start": 7151, + "end": 7189, "loc": { "start": { - "line": 165, + "line": 188, "column": 8 }, "end": { - "line": 165, + "line": 188, "column": 46 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5367, - "end": 5393, + "start": 7151, + "end": 7177, "loc": { "start": { - "line": 165, + "line": 188, "column": 8 }, "end": { - "line": 165, + "line": 188, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 5367, - "end": 5382, + "start": 7151, + "end": 7166, "loc": { "start": { - "line": 165, + "line": 188, "column": 8 }, "end": { - "line": 165, + "line": 188, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 5367, - "end": 5376, + "start": 7151, + "end": 7160, "loc": { "start": { - "line": 165, + "line": 188, "column": 8 }, "end": { - "line": 165, + "line": 188, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 5367, - "end": 5371, + "start": 7151, + "end": 7155, "loc": { "start": { - "line": 165, + "line": 188, "column": 8 }, "end": { - "line": 165, + "line": 188, "column": 12 } } }, "property": { "type": "Identifier", - "start": 5372, - "end": 5376, + "start": 7156, + "end": 7160, "loc": { "start": { - "line": 165, + "line": 188, "column": 13 }, "end": { - "line": 165, + "line": 188, "column": 17 }, "identifierName": "_img" @@ -10030,15 +11893,15 @@ }, "property": { "type": "Identifier", - "start": 5377, - "end": 5382, + "start": 7161, + "end": 7166, "loc": { "start": { - "line": 165, + "line": 188, "column": 18 }, "end": { - "line": 165, + "line": 188, "column": 23 }, "identifierName": "style" @@ -10049,15 +11912,15 @@ }, "property": { "type": "Identifier", - "start": 5383, - "end": 5393, + "start": 7167, + "end": 7177, "loc": { "start": { - "line": 165, + "line": 188, "column": 24 }, "end": { - "line": 165, + "line": 188, "column": 34 }, "identifierName": "visibility" @@ -10068,15 +11931,15 @@ }, "right": { "type": "StringLiteral", - "start": 5396, - "end": 5405, + "start": 7180, + "end": 7189, "loc": { "start": { - "line": 165, + "line": 188, "column": 37 }, "end": { - "line": 165, + "line": 188, "column": 46 } }, @@ -10090,44 +11953,44 @@ }, { "type": "VariableDeclaration", - "start": 5416, - "end": 5432, + "start": 7200, + "end": 7216, "loc": { "start": { - "line": 167, + "line": 190, "column": 8 }, "end": { - "line": 167, + "line": 190, "column": 24 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 5420, - "end": 5431, + "start": 7204, + "end": 7215, "loc": { "start": { - "line": 167, + "line": 190, "column": 12 }, "end": { - "line": 167, + "line": 190, "column": 23 } }, "id": { "type": "Identifier", - "start": 5420, - "end": 5427, + "start": 7204, + "end": 7211, "loc": { "start": { - "line": 167, + "line": 190, "column": 12 }, "end": { - "line": 167, + "line": 190, "column": 19 }, "identifierName": "opacity" @@ -10136,15 +11999,15 @@ }, "init": { "type": "NumericLiteral", - "start": 5430, - "end": 5431, + "start": 7214, + "end": 7215, "loc": { "start": { - "line": 167, + "line": 190, "column": 22 }, "end": { - "line": 167, + "line": 190, "column": 23 } }, @@ -10160,73 +12023,73 @@ }, { "type": "ExpressionStatement", - "start": 5441, - "end": 5833, + "start": 7225, + "end": 7617, "loc": { "start": { - "line": 168, + "line": 191, "column": 8 }, "end": { - "line": 178, + "line": 201, "column": 21 } }, "expression": { "type": "AssignmentExpression", - "start": 5441, - "end": 5832, + "start": 7225, + "end": 7616, "loc": { "start": { - "line": 168, + "line": 191, "column": 8 }, "end": { - "line": 178, + "line": 201, "column": 20 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5441, - "end": 5456, + "start": 7225, + "end": 7240, "loc": { "start": { - "line": 168, + "line": 191, "column": 8 }, "end": { - "line": 168, + "line": 191, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 5441, - "end": 5445, + "start": 7225, + "end": 7229, "loc": { "start": { - "line": 168, + "line": 191, "column": 8 }, "end": { - "line": 168, + "line": 191, "column": 12 } } }, "property": { "type": "Identifier", - "start": 5446, - "end": 5456, + "start": 7230, + "end": 7240, "loc": { "start": { - "line": 168, + "line": 191, "column": 13 }, "end": { - "line": 168, + "line": 191, "column": 23 }, "identifierName": "_pInterval" @@ -10237,29 +12100,29 @@ }, "right": { "type": "CallExpression", - "start": 5459, - "end": 5832, + "start": 7243, + "end": 7616, "loc": { "start": { - "line": 168, + "line": 191, "column": 26 }, "end": { - "line": 178, + "line": 201, "column": 20 } }, "callee": { "type": "Identifier", - "start": 5459, - "end": 5470, + "start": 7243, + "end": 7254, "loc": { "start": { - "line": 168, + "line": 191, "column": 26 }, "end": { - "line": 168, + "line": 191, "column": 37 }, "identifierName": "setInterval" @@ -10269,15 +12132,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 5471, - "end": 5821, + "start": 7255, + "end": 7605, "loc": { "start": { - "line": 168, + "line": 191, "column": 38 }, "end": { - "line": 178, + "line": 201, "column": 9 } }, @@ -10288,59 +12151,59 @@ "params": [], "body": { "type": "BlockStatement", - "start": 5477, - "end": 5821, + "start": 7261, + "end": 7605, "loc": { "start": { - "line": 168, + "line": 191, "column": 44 }, "end": { - "line": 178, + "line": 201, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 5491, - "end": 5506, + "start": 7275, + "end": 7290, "loc": { "start": { - "line": 169, + "line": 192, "column": 12 }, "end": { - "line": 169, + "line": 192, "column": 27 } }, "expression": { "type": "AssignmentExpression", - "start": 5491, - "end": 5505, + "start": 7275, + "end": 7289, "loc": { "start": { - "line": 169, + "line": 192, "column": 12 }, "end": { - "line": 169, + "line": 192, "column": 26 } }, "operator": "-=", "left": { "type": "Identifier", - "start": 5491, - "end": 5498, + "start": 7275, + "end": 7282, "loc": { "start": { - "line": 169, + "line": 192, "column": 12 }, "end": { - "line": 169, + "line": 192, "column": 19 }, "identifierName": "opacity" @@ -10349,15 +12212,15 @@ }, "right": { "type": "Identifier", - "start": 5502, - "end": 5505, + "start": 7286, + "end": 7289, "loc": { "start": { - "line": 169, + "line": 192, "column": 23 }, "end": { - "line": 169, + "line": 192, "column": 26 }, "identifierName": "inc" @@ -10368,43 +12231,43 @@ }, { "type": "IfStatement", - "start": 5519, - "end": 5811, + "start": 7303, + "end": 7595, "loc": { "start": { - "line": 170, + "line": 193, "column": 12 }, "end": { - "line": 177, + "line": 200, "column": 13 } }, "test": { "type": "BinaryExpression", - "start": 5523, - "end": 5534, + "start": 7307, + "end": 7318, "loc": { "start": { - "line": 170, + "line": 193, "column": 16 }, "end": { - "line": 170, + "line": 193, "column": 27 } }, "left": { "type": "Identifier", - "start": 5523, - "end": 5530, + "start": 7307, + "end": 7314, "loc": { "start": { - "line": 170, + "line": 193, "column": 16 }, "end": { - "line": 170, + "line": 193, "column": 23 }, "identifierName": "opacity" @@ -10414,15 +12277,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 5533, - "end": 5534, + "start": 7317, + "end": 7318, "loc": { "start": { - "line": 170, + "line": 193, "column": 26 }, "end": { - "line": 170, + "line": 193, "column": 27 } }, @@ -10435,116 +12298,116 @@ }, "consequent": { "type": "BlockStatement", - "start": 5536, - "end": 5602, + "start": 7320, + "end": 7386, "loc": { "start": { - "line": 170, + "line": 193, "column": 29 }, "end": { - "line": 172, + "line": 195, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 5554, - "end": 5588, + "start": 7338, + "end": 7372, "loc": { "start": { - "line": 171, + "line": 194, "column": 16 }, "end": { - "line": 171, + "line": 194, "column": 50 } }, "expression": { "type": "AssignmentExpression", - "start": 5554, - "end": 5587, + "start": 7338, + "end": 7371, "loc": { "start": { - "line": 171, + "line": 194, "column": 16 }, "end": { - "line": 171, + "line": 194, "column": 49 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5554, - "end": 5577, + "start": 7338, + "end": 7361, "loc": { "start": { - "line": 171, + "line": 194, "column": 16 }, "end": { - "line": 171, + "line": 194, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 5554, - "end": 5569, + "start": 7338, + "end": 7353, "loc": { "start": { - "line": 171, + "line": 194, "column": 16 }, "end": { - "line": 171, + "line": 194, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 5554, - "end": 5563, + "start": 7338, + "end": 7347, "loc": { "start": { - "line": 171, + "line": 194, "column": 16 }, "end": { - "line": 171, + "line": 194, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 5554, - "end": 5558, + "start": 7338, + "end": 7342, "loc": { "start": { - "line": 171, + "line": 194, "column": 16 }, "end": { - "line": 171, + "line": 194, "column": 20 } } }, "property": { "type": "Identifier", - "start": 5559, - "end": 5563, + "start": 7343, + "end": 7347, "loc": { "start": { - "line": 171, + "line": 194, "column": 21 }, "end": { - "line": 171, + "line": 194, "column": 25 }, "identifierName": "_img" @@ -10555,15 +12418,15 @@ }, "property": { "type": "Identifier", - "start": 5564, - "end": 5569, + "start": 7348, + "end": 7353, "loc": { "start": { - "line": 171, + "line": 194, "column": 26 }, "end": { - "line": 171, + "line": 194, "column": 31 }, "identifierName": "style" @@ -10574,15 +12437,15 @@ }, "property": { "type": "Identifier", - "start": 5570, - "end": 5577, + "start": 7354, + "end": 7361, "loc": { "start": { - "line": 171, + "line": 194, "column": 32 }, "end": { - "line": 171, + "line": 194, "column": 39 }, "identifierName": "opacity" @@ -10593,15 +12456,15 @@ }, "right": { "type": "Identifier", - "start": 5580, - "end": 5587, + "start": 7364, + "end": 7371, "loc": { "start": { - "line": 171, + "line": 194, "column": 42 }, "end": { - "line": 171, + "line": 194, "column": 49 }, "identifierName": "opacity" @@ -10615,116 +12478,116 @@ }, "alternate": { "type": "BlockStatement", - "start": 5608, - "end": 5811, + "start": 7392, + "end": 7595, "loc": { "start": { - "line": 172, + "line": 195, "column": 19 }, "end": { - "line": 177, + "line": 200, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 5626, - "end": 5654, + "start": 7410, + "end": 7438, "loc": { "start": { - "line": 173, + "line": 196, "column": 16 }, "end": { - "line": 173, + "line": 196, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 5626, - "end": 5653, + "start": 7410, + "end": 7437, "loc": { "start": { - "line": 173, + "line": 196, "column": 16 }, "end": { - "line": 173, + "line": 196, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5626, - "end": 5649, + "start": 7410, + "end": 7433, "loc": { "start": { - "line": 173, + "line": 196, "column": 16 }, "end": { - "line": 173, + "line": 196, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 5626, - "end": 5641, + "start": 7410, + "end": 7425, "loc": { "start": { - "line": 173, + "line": 196, "column": 16 }, "end": { - "line": 173, + "line": 196, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 5626, - "end": 5635, + "start": 7410, + "end": 7419, "loc": { "start": { - "line": 173, + "line": 196, "column": 16 }, "end": { - "line": 173, + "line": 196, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 5626, - "end": 5630, + "start": 7410, + "end": 7414, "loc": { "start": { - "line": 173, + "line": 196, "column": 16 }, "end": { - "line": 173, + "line": 196, "column": 20 } } }, "property": { "type": "Identifier", - "start": 5631, - "end": 5635, + "start": 7415, + "end": 7419, "loc": { "start": { - "line": 173, + "line": 196, "column": 21 }, "end": { - "line": 173, + "line": 196, "column": 25 }, "identifierName": "_img" @@ -10735,15 +12598,15 @@ }, "property": { "type": "Identifier", - "start": 5636, - "end": 5641, + "start": 7420, + "end": 7425, "loc": { "start": { - "line": 173, + "line": 196, "column": 26 }, "end": { - "line": 173, + "line": 196, "column": 31 }, "identifierName": "style" @@ -10754,15 +12617,15 @@ }, "property": { "type": "Identifier", - "start": 5642, - "end": 5649, + "start": 7426, + "end": 7433, "loc": { "start": { - "line": 173, + "line": 196, "column": 32 }, "end": { - "line": 173, + "line": 196, "column": 39 }, "identifierName": "opacity" @@ -10773,15 +12636,15 @@ }, "right": { "type": "NumericLiteral", - "start": 5652, - "end": 5653, + "start": 7436, + "end": 7437, "loc": { "start": { - "line": 173, + "line": 196, "column": 42 }, "end": { - "line": 173, + "line": 196, "column": 43 } }, @@ -10795,101 +12658,101 @@ }, { "type": "ExpressionStatement", - "start": 5671, - "end": 5709, + "start": 7455, + "end": 7493, "loc": { "start": { - "line": 174, + "line": 197, "column": 16 }, "end": { - "line": 174, + "line": 197, "column": 54 } }, "expression": { "type": "AssignmentExpression", - "start": 5671, - "end": 5708, + "start": 7455, + "end": 7492, "loc": { "start": { - "line": 174, + "line": 197, "column": 16 }, "end": { - "line": 174, + "line": 197, "column": 53 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5671, - "end": 5697, + "start": 7455, + "end": 7481, "loc": { "start": { - "line": 174, + "line": 197, "column": 16 }, "end": { - "line": 174, + "line": 197, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 5671, - "end": 5686, + "start": 7455, + "end": 7470, "loc": { "start": { - "line": 174, + "line": 197, "column": 16 }, "end": { - "line": 174, + "line": 197, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 5671, - "end": 5680, + "start": 7455, + "end": 7464, "loc": { "start": { - "line": 174, + "line": 197, "column": 16 }, "end": { - "line": 174, + "line": 197, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 5671, - "end": 5675, + "start": 7455, + "end": 7459, "loc": { "start": { - "line": 174, + "line": 197, "column": 16 }, "end": { - "line": 174, + "line": 197, "column": 20 } } }, "property": { "type": "Identifier", - "start": 5676, - "end": 5680, + "start": 7460, + "end": 7464, "loc": { "start": { - "line": 174, + "line": 197, "column": 21 }, "end": { - "line": 174, + "line": 197, "column": 25 }, "identifierName": "_img" @@ -10900,15 +12763,15 @@ }, "property": { "type": "Identifier", - "start": 5681, - "end": 5686, + "start": 7465, + "end": 7470, "loc": { "start": { - "line": 174, + "line": 197, "column": 26 }, "end": { - "line": 174, + "line": 197, "column": 31 }, "identifierName": "style" @@ -10919,15 +12782,15 @@ }, "property": { "type": "Identifier", - "start": 5687, - "end": 5697, + "start": 7471, + "end": 7481, "loc": { "start": { - "line": 174, + "line": 197, "column": 32 }, "end": { - "line": 174, + "line": 197, "column": 42 }, "identifierName": "visibility" @@ -10938,15 +12801,15 @@ }, "right": { "type": "StringLiteral", - "start": 5700, - "end": 5708, + "start": 7484, + "end": 7492, "loc": { "start": { - "line": 174, + "line": 197, "column": 45 }, "end": { - "line": 174, + "line": 197, "column": 53 } }, @@ -10960,43 +12823,43 @@ }, { "type": "ExpressionStatement", - "start": 5726, - "end": 5757, + "start": 7510, + "end": 7541, "loc": { "start": { - "line": 175, + "line": 198, "column": 16 }, "end": { - "line": 175, + "line": 198, "column": 47 } }, "expression": { "type": "CallExpression", - "start": 5726, - "end": 5756, + "start": 7510, + "end": 7540, "loc": { "start": { - "line": 175, + "line": 198, "column": 16 }, "end": { - "line": 175, + "line": 198, "column": 46 } }, "callee": { "type": "Identifier", - "start": 5726, - "end": 5739, + "start": 7510, + "end": 7523, "loc": { "start": { - "line": 175, + "line": 198, "column": 16 }, "end": { - "line": 175, + "line": 198, "column": 29 }, "identifierName": "clearInterval" @@ -11006,44 +12869,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 5740, - "end": 5755, + "start": 7524, + "end": 7539, "loc": { "start": { - "line": 175, + "line": 198, "column": 30 }, "end": { - "line": 175, + "line": 198, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 5740, - "end": 5744, + "start": 7524, + "end": 7528, "loc": { "start": { - "line": 175, + "line": 198, "column": 30 }, "end": { - "line": 175, + "line": 198, "column": 34 } } }, "property": { "type": "Identifier", - "start": 5745, - "end": 5755, + "start": 7529, + "end": 7539, "loc": { "start": { - "line": 175, + "line": 198, "column": 35 }, "end": { - "line": 175, + "line": 198, "column": 45 }, "identifierName": "_pInterval" @@ -11057,73 +12920,73 @@ }, { "type": "ExpressionStatement", - "start": 5774, - "end": 5797, + "start": 7558, + "end": 7581, "loc": { "start": { - "line": 176, + "line": 199, "column": 16 }, "end": { - "line": 176, + "line": 199, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 5774, - "end": 5796, + "start": 7558, + "end": 7580, "loc": { "start": { - "line": 176, + "line": 199, "column": 16 }, "end": { - "line": 176, + "line": 199, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5774, - "end": 5789, + "start": 7558, + "end": 7573, "loc": { "start": { - "line": 176, + "line": 199, "column": 16 }, "end": { - "line": 176, + "line": 199, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 5774, - "end": 5778, + "start": 7558, + "end": 7562, "loc": { "start": { - "line": 176, + "line": 199, "column": 16 }, "end": { - "line": 176, + "line": 199, "column": 20 } } }, "property": { "type": "Identifier", - "start": 5779, - "end": 5789, + "start": 7563, + "end": 7573, "loc": { "start": { - "line": 176, + "line": 199, "column": 21 }, "end": { - "line": 176, + "line": 199, "column": 31 }, "identifierName": "_pInterval" @@ -11134,15 +12997,15 @@ }, "right": { "type": "NullLiteral", - "start": 5792, - "end": 5796, + "start": 7576, + "end": 7580, "loc": { "start": { - "line": 176, + "line": 199, "column": 34 }, "end": { - "line": 176, + "line": 199, "column": 38 } } @@ -11159,15 +13022,15 @@ }, { "type": "Identifier", - "start": 5823, - "end": 5831, + "start": 7607, + "end": 7615, "loc": { "start": { - "line": 178, + "line": 201, "column": 11 }, "end": { - "line": 178, + "line": 201, "column": 19 }, "identifierName": "interval" @@ -11184,15 +13047,15 @@ }, { "type": "ClassMethod", - "start": 5845, - "end": 6777, + "start": 7629, + "end": 8561, "loc": { "start": { - "line": 181, + "line": 204, "column": 4 }, "end": { - "line": 200, + "line": 223, "column": 5 } }, @@ -11200,15 +13063,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 5845, - "end": 5854, + "start": 7629, + "end": 7638, "loc": { "start": { - "line": 181, + "line": 204, "column": 4 }, "end": { - "line": 181, + "line": 204, "column": 13 }, "identifierName": "_initFade" @@ -11223,88 +13086,88 @@ "params": [], "body": { "type": "BlockStatement", - "start": 5857, - "end": 6777, + "start": 7641, + "end": 8561, "loc": { "start": { - "line": 181, + "line": 204, "column": 16 }, "end": { - "line": 200, + "line": 223, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 5867, - "end": 5909, + "start": 7651, + "end": 7693, "loc": { "start": { - "line": 182, + "line": 205, "column": 8 }, "end": { - "line": 182, + "line": 205, "column": 50 } }, "expression": { "type": "AssignmentExpression", - "start": 5867, - "end": 5908, + "start": 7651, + "end": 7692, "loc": { "start": { - "line": 182, + "line": 205, "column": 8 }, "end": { - "line": 182, + "line": 205, "column": 49 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5867, - "end": 5876, + "start": 7651, + "end": 7660, "loc": { "start": { - "line": 182, + "line": 205, "column": 8 }, "end": { - "line": 182, + "line": 205, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 5867, - "end": 5871, + "start": 7651, + "end": 7655, "loc": { "start": { - "line": 182, + "line": 205, "column": 8 }, "end": { - "line": 182, + "line": 205, "column": 12 } } }, "property": { "type": "Identifier", - "start": 5872, - "end": 5876, + "start": 7656, + "end": 7660, "loc": { "start": { - "line": 182, + "line": 205, "column": 13 }, "end": { - "line": 182, + "line": 205, "column": 17 }, "identifierName": "_img" @@ -11315,43 +13178,43 @@ }, "right": { "type": "CallExpression", - "start": 5879, - "end": 5908, + "start": 7663, + "end": 7692, "loc": { "start": { - "line": 182, + "line": 205, "column": 20 }, "end": { - "line": 182, + "line": 205, "column": 49 } }, "callee": { "type": "MemberExpression", - "start": 5879, - "end": 5901, + "start": 7663, + "end": 7685, "loc": { "start": { - "line": 182, + "line": 205, "column": 20 }, "end": { - "line": 182, + "line": 205, "column": 42 } }, "object": { "type": "Identifier", - "start": 5879, - "end": 5887, + "start": 7663, + "end": 7671, "loc": { "start": { - "line": 182, + "line": 205, "column": 20 }, "end": { - "line": 182, + "line": 205, "column": 28 }, "identifierName": "document" @@ -11360,15 +13223,15 @@ }, "property": { "type": "Identifier", - "start": 5888, - "end": 5901, + "start": 7672, + "end": 7685, "loc": { "start": { - "line": 182, + "line": 205, "column": 29 }, "end": { - "line": 182, + "line": 205, "column": 42 }, "identifierName": "createElement" @@ -11380,15 +13243,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 5902, - "end": 5907, + "start": 7686, + "end": 7691, "loc": { "start": { - "line": 182, + "line": 205, "column": 43 }, "end": { - "line": 182, + "line": 205, "column": 48 } }, @@ -11404,44 +13267,44 @@ }, { "type": "VariableDeclaration", - "start": 5918, - "end": 5965, + "start": 7702, + "end": 7749, "loc": { "start": { - "line": 183, + "line": 206, "column": 8 }, "end": { - "line": 183, + "line": 206, "column": 55 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 5924, - "end": 5964, + "start": 7708, + "end": 7748, "loc": { "start": { - "line": 183, + "line": 206, "column": 14 }, "end": { - "line": 183, + "line": 206, "column": 54 } }, "id": { "type": "Identifier", - "start": 5924, - "end": 5930, + "start": 7708, + "end": 7714, "loc": { "start": { - "line": 183, + "line": 206, "column": 14 }, "end": { - "line": 183, + "line": 206, "column": 20 }, "identifierName": "canvas" @@ -11450,86 +13313,86 @@ }, "init": { "type": "MemberExpression", - "start": 5933, - "end": 5964, + "start": 7717, + "end": 7748, "loc": { "start": { - "line": 183, + "line": 206, "column": 23 }, "end": { - "line": 183, + "line": 206, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 5933, - "end": 5957, + "start": 7717, + "end": 7741, "loc": { "start": { - "line": 183, + "line": 206, "column": 23 }, "end": { - "line": 183, + "line": 206, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 5933, - "end": 5950, + "start": 7717, + "end": 7734, "loc": { "start": { - "line": 183, + "line": 206, "column": 23 }, "end": { - "line": 183, + "line": 206, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 5933, - "end": 5944, + "start": 7717, + "end": 7728, "loc": { "start": { - "line": 183, + "line": 206, "column": 23 }, "end": { - "line": 183, + "line": 206, "column": 34 } }, "object": { "type": "ThisExpression", - "start": 5933, - "end": 5937, + "start": 7717, + "end": 7721, "loc": { "start": { - "line": 183, + "line": 206, "column": 23 }, "end": { - "line": 183, + "line": 206, "column": 27 } } }, "property": { "type": "Identifier", - "start": 5938, - "end": 5944, + "start": 7722, + "end": 7728, "loc": { "start": { - "line": 183, + "line": 206, "column": 28 }, "end": { - "line": 183, + "line": 206, "column": 34 }, "identifierName": "viewer" @@ -11540,15 +13403,15 @@ }, "property": { "type": "Identifier", - "start": 5945, - "end": 5950, + "start": 7729, + "end": 7734, "loc": { "start": { - "line": 183, + "line": 206, "column": 35 }, "end": { - "line": 183, + "line": 206, "column": 40 }, "identifierName": "scene" @@ -11559,15 +13422,15 @@ }, "property": { "type": "Identifier", - "start": 5951, - "end": 5957, + "start": 7735, + "end": 7741, "loc": { "start": { - "line": 183, + "line": 206, "column": 41 }, "end": { - "line": 183, + "line": 206, "column": 47 }, "identifierName": "canvas" @@ -11578,15 +13441,15 @@ }, "property": { "type": "Identifier", - "start": 5958, - "end": 5964, + "start": 7742, + "end": 7748, "loc": { "start": { - "line": 183, + "line": 206, "column": 48 }, "end": { - "line": 183, + "line": 206, "column": 54 }, "identifierName": "canvas" @@ -11601,44 +13464,44 @@ }, { "type": "VariableDeclaration", - "start": 5974, - "end": 6020, + "start": 7758, + "end": 7804, "loc": { "start": { - "line": 184, + "line": 207, "column": 8 }, "end": { - "line": 184, + "line": 207, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 5980, - "end": 6019, + "start": 7764, + "end": 7803, "loc": { "start": { - "line": 184, + "line": 207, "column": 14 }, "end": { - "line": 184, + "line": 207, "column": 53 } }, "id": { "type": "Identifier", - "start": 5980, - "end": 5992, + "start": 7764, + "end": 7776, "loc": { "start": { - "line": 184, + "line": 207, "column": 14 }, "end": { - "line": 184, + "line": 207, "column": 26 }, "identifierName": "canvasOffset" @@ -11647,29 +13510,29 @@ }, "init": { "type": "CallExpression", - "start": 5995, - "end": 6019, + "start": 7779, + "end": 7803, "loc": { "start": { - "line": 184, + "line": 207, "column": 29 }, "end": { - "line": 184, + "line": 207, "column": 53 } }, "callee": { "type": "Identifier", - "start": 5995, - "end": 6011, + "start": 7779, + "end": 7795, "loc": { "start": { - "line": 184, + "line": 207, "column": 29 }, "end": { - "line": 184, + "line": 207, "column": 45 }, "identifierName": "cumulativeOffset" @@ -11679,15 +13542,15 @@ "arguments": [ { "type": "Identifier", - "start": 6012, - "end": 6018, + "start": 7796, + "end": 7802, "loc": { "start": { - "line": 184, + "line": 207, "column": 46 }, "end": { - "line": 184, + "line": 207, "column": 52 }, "identifierName": "canvas" @@ -11702,44 +13565,44 @@ }, { "type": "VariableDeclaration", - "start": 6029, - "end": 6089, + "start": 7813, + "end": 7873, "loc": { "start": { - "line": 185, + "line": 208, "column": 8 }, "end": { - "line": 185, + "line": 208, "column": 68 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 6035, - "end": 6088, + "start": 7819, + "end": 7872, "loc": { "start": { - "line": 185, + "line": 208, "column": 14 }, "end": { - "line": 185, + "line": 208, "column": 67 } }, "id": { "type": "Identifier", - "start": 6035, - "end": 6041, + "start": 7819, + "end": 7825, "loc": { "start": { - "line": 185, + "line": 208, "column": 14 }, "end": { - "line": 185, + "line": 208, "column": 20 }, "identifierName": "zIndex" @@ -11748,57 +13611,57 @@ }, "init": { "type": "BinaryExpression", - "start": 6044, - "end": 6088, + "start": 7828, + "end": 7872, "loc": { "start": { - "line": 185, + "line": 208, "column": 23 }, "end": { - "line": 185, + "line": 208, "column": 67 } }, "left": { "type": "LogicalExpression", - "start": 6045, - "end": 6083, + "start": 7829, + "end": 7867, "loc": { "start": { - "line": 185, + "line": 208, "column": 24 }, "end": { - "line": 185, + "line": 208, "column": 62 } }, "left": { "type": "CallExpression", - "start": 6045, - "end": 6078, + "start": 7829, + "end": 7862, "loc": { "start": { - "line": 185, + "line": 208, "column": 24 }, "end": { - "line": 185, + "line": 208, "column": 57 } }, "callee": { "type": "Identifier", - "start": 6045, - "end": 6053, + "start": 7829, + "end": 7837, "loc": { "start": { - "line": 185, + "line": 208, "column": 24 }, "end": { - "line": 185, + "line": 208, "column": 32 }, "identifierName": "parseInt" @@ -11808,43 +13671,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 6054, - "end": 6077, + "start": 7838, + "end": 7861, "loc": { "start": { - "line": 185, + "line": 208, "column": 33 }, "end": { - "line": 185, + "line": 208, "column": 56 } }, "object": { "type": "MemberExpression", - "start": 6054, - "end": 6066, + "start": 7838, + "end": 7850, "loc": { "start": { - "line": 185, + "line": 208, "column": 33 }, "end": { - "line": 185, + "line": 208, "column": 45 } }, "object": { "type": "Identifier", - "start": 6054, - "end": 6060, + "start": 7838, + "end": 7844, "loc": { "start": { - "line": 185, + "line": 208, "column": 33 }, "end": { - "line": 185, + "line": 208, "column": 39 }, "identifierName": "canvas" @@ -11853,15 +13716,15 @@ }, "property": { "type": "Identifier", - "start": 6061, - "end": 6066, + "start": 7845, + "end": 7850, "loc": { "start": { - "line": 185, + "line": 208, "column": 40 }, "end": { - "line": 185, + "line": 208, "column": 45 }, "identifierName": "style" @@ -11872,15 +13735,15 @@ }, "property": { "type": "StringLiteral", - "start": 6067, - "end": 6076, + "start": 7851, + "end": 7860, "loc": { "start": { - "line": 185, + "line": 208, "column": 46 }, "end": { - "line": 185, + "line": 208, "column": 55 } }, @@ -11897,15 +13760,15 @@ "operator": "||", "right": { "type": "NumericLiteral", - "start": 6082, - "end": 6083, + "start": 7866, + "end": 7867, "loc": { "start": { - "line": 185, + "line": 208, "column": 61 }, "end": { - "line": 185, + "line": 208, "column": 62 } }, @@ -11917,21 +13780,21 @@ }, "extra": { "parenthesized": true, - "parenStart": 6044 + "parenStart": 7828 } }, "operator": "+", "right": { "type": "NumericLiteral", - "start": 6087, - "end": 6088, + "start": 7871, + "end": 7872, "loc": { "start": { - "line": 185, + "line": 208, "column": 66 }, "end": { - "line": 185, + "line": 208, "column": 67 } }, @@ -11948,101 +13811,101 @@ }, { "type": "ExpressionStatement", - "start": 6098, - "end": 6136, + "start": 7882, + "end": 7920, "loc": { "start": { - "line": 186, + "line": 209, "column": 8 }, "end": { - "line": 186, + "line": 209, "column": 46 } }, "expression": { "type": "AssignmentExpression", - "start": 6098, - "end": 6135, + "start": 7882, + "end": 7919, "loc": { "start": { - "line": 186, + "line": 209, "column": 8 }, "end": { - "line": 186, + "line": 209, "column": 45 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6098, - "end": 6122, + "start": 7882, + "end": 7906, "loc": { "start": { - "line": 186, + "line": 209, "column": 8 }, "end": { - "line": 186, + "line": 209, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 6098, - "end": 6113, + "start": 7882, + "end": 7897, "loc": { "start": { - "line": 186, + "line": 209, "column": 8 }, "end": { - "line": 186, + "line": 209, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6098, - "end": 6107, + "start": 7882, + "end": 7891, "loc": { "start": { - "line": 186, + "line": 209, "column": 8 }, "end": { - "line": 186, + "line": 209, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6098, - "end": 6102, + "start": 7882, + "end": 7886, "loc": { "start": { - "line": 186, + "line": 209, "column": 8 }, "end": { - "line": 186, + "line": 209, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6103, - "end": 6107, + "start": 7887, + "end": 7891, "loc": { "start": { - "line": 186, + "line": 209, "column": 13 }, "end": { - "line": 186, + "line": 209, "column": 17 }, "identifierName": "_img" @@ -12053,15 +13916,15 @@ }, "property": { "type": "Identifier", - "start": 6108, - "end": 6113, + "start": 7892, + "end": 7897, "loc": { "start": { - "line": 186, + "line": 209, "column": 18 }, "end": { - "line": 186, + "line": 209, "column": 23 }, "identifierName": "style" @@ -12072,15 +13935,15 @@ }, "property": { "type": "Identifier", - "start": 6114, - "end": 6122, + "start": 7898, + "end": 7906, "loc": { "start": { - "line": 186, + "line": 209, "column": 24 }, "end": { - "line": 186, + "line": 209, "column": 32 }, "identifierName": "position" @@ -12091,15 +13954,15 @@ }, "right": { "type": "StringLiteral", - "start": 6125, - "end": 6135, + "start": 7909, + "end": 7919, "loc": { "start": { - "line": 186, + "line": 209, "column": 35 }, "end": { - "line": 186, + "line": 209, "column": 45 } }, @@ -12113,101 +13976,101 @@ }, { "type": "ExpressionStatement", - "start": 6145, - "end": 6183, + "start": 7929, + "end": 7967, "loc": { "start": { - "line": 187, + "line": 210, "column": 8 }, "end": { - "line": 187, + "line": 210, "column": 46 } }, "expression": { "type": "AssignmentExpression", - "start": 6145, - "end": 6182, + "start": 7929, + "end": 7966, "loc": { "start": { - "line": 187, + "line": 210, "column": 8 }, "end": { - "line": 187, + "line": 210, "column": 45 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6145, - "end": 6171, + "start": 7929, + "end": 7955, "loc": { "start": { - "line": 187, + "line": 210, "column": 8 }, "end": { - "line": 187, + "line": 210, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 6145, - "end": 6160, + "start": 7929, + "end": 7944, "loc": { "start": { - "line": 187, + "line": 210, "column": 8 }, "end": { - "line": 187, + "line": 210, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6145, - "end": 6154, + "start": 7929, + "end": 7938, "loc": { "start": { - "line": 187, + "line": 210, "column": 8 }, "end": { - "line": 187, + "line": 210, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6145, - "end": 6149, + "start": 7929, + "end": 7933, "loc": { "start": { - "line": 187, + "line": 210, "column": 8 }, "end": { - "line": 187, + "line": 210, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6150, - "end": 6154, + "start": 7934, + "end": 7938, "loc": { "start": { - "line": 187, + "line": 210, "column": 13 }, "end": { - "line": 187, + "line": 210, "column": 17 }, "identifierName": "_img" @@ -12218,15 +14081,15 @@ }, "property": { "type": "Identifier", - "start": 6155, - "end": 6160, + "start": 7939, + "end": 7944, "loc": { "start": { - "line": 187, + "line": 210, "column": 18 }, "end": { - "line": 187, + "line": 210, "column": 23 }, "identifierName": "style" @@ -12237,15 +14100,15 @@ }, "property": { "type": "Identifier", - "start": 6161, - "end": 6171, + "start": 7945, + "end": 7955, "loc": { "start": { - "line": 187, + "line": 210, "column": 24 }, "end": { - "line": 187, + "line": 210, "column": 34 }, "identifierName": "visibility" @@ -12256,15 +14119,15 @@ }, "right": { "type": "StringLiteral", - "start": 6174, - "end": 6182, + "start": 7958, + "end": 7966, "loc": { "start": { - "line": 187, + "line": 210, "column": 37 }, "end": { - "line": 187, + "line": 210, "column": 45 } }, @@ -12278,101 +14141,101 @@ }, { "type": "ExpressionStatement", - "start": 6192, - "end": 6235, + "start": 7976, + "end": 8019, "loc": { "start": { - "line": 188, + "line": 211, "column": 8 }, "end": { - "line": 188, + "line": 211, "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 6192, - "end": 6234, + "start": 7976, + "end": 8018, "loc": { "start": { - "line": 188, + "line": 211, "column": 8 }, "end": { - "line": 188, + "line": 211, "column": 50 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6192, - "end": 6225, + "start": 7976, + "end": 8009, "loc": { "start": { - "line": 188, + "line": 211, "column": 8 }, "end": { - "line": 188, + "line": 211, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 6192, - "end": 6207, + "start": 7976, + "end": 7991, "loc": { "start": { - "line": 188, + "line": 211, "column": 8 }, "end": { - "line": 188, + "line": 211, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6192, - "end": 6201, + "start": 7976, + "end": 7985, "loc": { "start": { - "line": 188, + "line": 211, "column": 8 }, "end": { - "line": 188, + "line": 211, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6192, - "end": 6196, + "start": 7976, + "end": 7980, "loc": { "start": { - "line": 188, + "line": 211, "column": 8 }, "end": { - "line": 188, + "line": 211, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6197, - "end": 6201, + "start": 7981, + "end": 7985, "loc": { "start": { - "line": 188, + "line": 211, "column": 13 }, "end": { - "line": 188, + "line": 211, "column": 17 }, "identifierName": "_img" @@ -12383,15 +14246,15 @@ }, "property": { "type": "Identifier", - "start": 6202, - "end": 6207, + "start": 7986, + "end": 7991, "loc": { "start": { - "line": 188, + "line": 211, "column": 18 }, "end": { - "line": 188, + "line": 211, "column": 23 }, "identifierName": "style" @@ -12402,15 +14265,15 @@ }, "property": { "type": "StringLiteral", - "start": 6208, - "end": 6224, + "start": 7992, + "end": 8008, "loc": { "start": { - "line": 188, + "line": 211, "column": 24 }, "end": { - "line": 188, + "line": 211, "column": 40 } }, @@ -12424,15 +14287,15 @@ }, "right": { "type": "StringLiteral", - "start": 6228, - "end": 6234, + "start": 8012, + "end": 8018, "loc": { "start": { - "line": 188, + "line": 211, "column": 44 }, "end": { - "line": 188, + "line": 211, "column": 50 } }, @@ -12446,101 +14309,101 @@ }, { "type": "ExpressionStatement", - "start": 6244, - "end": 6275, + "start": 8028, + "end": 8059, "loc": { "start": { - "line": 189, + "line": 212, "column": 8 }, "end": { - "line": 189, + "line": 212, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 6244, - "end": 6274, + "start": 8028, + "end": 8058, "loc": { "start": { - "line": 189, + "line": 212, "column": 8 }, "end": { - "line": 189, + "line": 212, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6244, - "end": 6270, + "start": 8028, + "end": 8054, "loc": { "start": { - "line": 189, + "line": 212, "column": 8 }, "end": { - "line": 189, + "line": 212, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 6244, - "end": 6259, + "start": 8028, + "end": 8043, "loc": { "start": { - "line": 189, + "line": 212, "column": 8 }, "end": { - "line": 189, + "line": 212, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6244, - "end": 6253, + "start": 8028, + "end": 8037, "loc": { "start": { - "line": 189, + "line": 212, "column": 8 }, "end": { - "line": 189, + "line": 212, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6244, - "end": 6248, + "start": 8028, + "end": 8032, "loc": { "start": { - "line": 189, + "line": 212, "column": 8 }, "end": { - "line": 189, + "line": 212, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6249, - "end": 6253, + "start": 8033, + "end": 8037, "loc": { "start": { - "line": 189, + "line": 212, "column": 13 }, "end": { - "line": 189, + "line": 212, "column": 17 }, "identifierName": "_img" @@ -12551,15 +14414,15 @@ }, "property": { "type": "Identifier", - "start": 6254, - "end": 6259, + "start": 8038, + "end": 8043, "loc": { "start": { - "line": 189, + "line": 212, "column": 18 }, "end": { - "line": 189, + "line": 212, "column": 23 }, "identifierName": "style" @@ -12570,15 +14433,15 @@ }, "property": { "type": "StringLiteral", - "start": 6260, - "end": 6269, + "start": 8044, + "end": 8053, "loc": { "start": { - "line": 189, + "line": 212, "column": 24 }, "end": { - "line": 189, + "line": 212, "column": 33 } }, @@ -12592,15 +14455,15 @@ }, "right": { "type": "NumericLiteral", - "start": 6273, - "end": 6274, + "start": 8057, + "end": 8058, "loc": { "start": { - "line": 189, + "line": 212, "column": 37 }, "end": { - "line": 189, + "line": 212, "column": 38 } }, @@ -12614,101 +14477,101 @@ }, { "type": "ExpressionStatement", - "start": 6284, - "end": 6332, + "start": 8068, + "end": 8116, "loc": { "start": { - "line": 190, + "line": 213, "column": 8 }, "end": { - "line": 190, + "line": 213, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 6284, - "end": 6331, + "start": 8068, + "end": 8115, "loc": { "start": { - "line": 190, + "line": 213, "column": 8 }, "end": { - "line": 190, + "line": 213, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6284, - "end": 6304, + "start": 8068, + "end": 8088, "loc": { "start": { - "line": 190, + "line": 213, "column": 8 }, "end": { - "line": 190, + "line": 213, "column": 28 } }, "object": { "type": "MemberExpression", - "start": 6284, - "end": 6299, + "start": 8068, + "end": 8083, "loc": { "start": { - "line": 190, + "line": 213, "column": 8 }, "end": { - "line": 190, + "line": 213, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6284, - "end": 6293, + "start": 8068, + "end": 8077, "loc": { "start": { - "line": 190, + "line": 213, "column": 8 }, "end": { - "line": 190, + "line": 213, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6284, - "end": 6288, + "start": 8068, + "end": 8072, "loc": { "start": { - "line": 190, + "line": 213, "column": 8 }, "end": { - "line": 190, + "line": 213, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6289, - "end": 6293, + "start": 8073, + "end": 8077, "loc": { "start": { - "line": 190, + "line": 213, "column": 13 }, "end": { - "line": 190, + "line": 213, "column": 17 }, "identifierName": "_img" @@ -12719,15 +14582,15 @@ }, "property": { "type": "Identifier", - "start": 6294, - "end": 6299, + "start": 8078, + "end": 8083, "loc": { "start": { - "line": 190, + "line": 213, "column": 18 }, "end": { - "line": 190, + "line": 213, "column": 23 }, "identifierName": "style" @@ -12738,15 +14601,15 @@ }, "property": { "type": "Identifier", - "start": 6300, - "end": 6304, + "start": 8084, + "end": 8088, "loc": { "start": { - "line": 190, + "line": 213, "column": 24 }, "end": { - "line": 190, + "line": 213, "column": 28 }, "identifierName": "left" @@ -12757,43 +14620,43 @@ }, "right": { "type": "BinaryExpression", - "start": 6307, - "end": 6331, + "start": 8091, + "end": 8115, "loc": { "start": { - "line": 190, + "line": 213, "column": 31 }, "end": { - "line": 190, + "line": 213, "column": 55 } }, "left": { "type": "MemberExpression", - "start": 6307, - "end": 6324, + "start": 8091, + "end": 8108, "loc": { "start": { - "line": 190, + "line": 213, "column": 31 }, "end": { - "line": 190, + "line": 213, "column": 48 } }, "object": { "type": "Identifier", - "start": 6307, - "end": 6319, + "start": 8091, + "end": 8103, "loc": { "start": { - "line": 190, + "line": 213, "column": 31 }, "end": { - "line": 190, + "line": 213, "column": 43 }, "identifierName": "canvasOffset" @@ -12802,15 +14665,15 @@ }, "property": { "type": "Identifier", - "start": 6320, - "end": 6324, + "start": 8104, + "end": 8108, "loc": { "start": { - "line": 190, + "line": 213, "column": 44 }, "end": { - "line": 190, + "line": 213, "column": 48 }, "identifierName": "left" @@ -12822,15 +14685,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 6327, - "end": 6331, + "start": 8111, + "end": 8115, "loc": { "start": { - "line": 190, + "line": 213, "column": 51 }, "end": { - "line": 190, + "line": 213, "column": 55 } }, @@ -12845,101 +14708,101 @@ }, { "type": "ExpressionStatement", - "start": 6341, - "end": 6387, + "start": 8125, + "end": 8171, "loc": { "start": { - "line": 191, + "line": 214, "column": 8 }, "end": { - "line": 191, + "line": 214, "column": 54 } }, "expression": { "type": "AssignmentExpression", - "start": 6341, - "end": 6386, + "start": 8125, + "end": 8170, "loc": { "start": { - "line": 191, + "line": 214, "column": 8 }, "end": { - "line": 191, + "line": 214, "column": 53 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6341, - "end": 6360, + "start": 8125, + "end": 8144, "loc": { "start": { - "line": 191, + "line": 214, "column": 8 }, "end": { - "line": 191, + "line": 214, "column": 27 } }, "object": { "type": "MemberExpression", - "start": 6341, - "end": 6356, + "start": 8125, + "end": 8140, "loc": { "start": { - "line": 191, + "line": 214, "column": 8 }, "end": { - "line": 191, + "line": 214, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6341, - "end": 6350, + "start": 8125, + "end": 8134, "loc": { "start": { - "line": 191, + "line": 214, "column": 8 }, "end": { - "line": 191, + "line": 214, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6341, - "end": 6345, + "start": 8125, + "end": 8129, "loc": { "start": { - "line": 191, + "line": 214, "column": 8 }, "end": { - "line": 191, + "line": 214, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6346, - "end": 6350, + "start": 8130, + "end": 8134, "loc": { "start": { - "line": 191, + "line": 214, "column": 13 }, "end": { - "line": 191, + "line": 214, "column": 17 }, "identifierName": "_img" @@ -12950,15 +14813,15 @@ }, "property": { "type": "Identifier", - "start": 6351, - "end": 6356, + "start": 8135, + "end": 8140, "loc": { "start": { - "line": 191, + "line": 214, "column": 18 }, "end": { - "line": 191, + "line": 214, "column": 23 }, "identifierName": "style" @@ -12969,15 +14832,15 @@ }, "property": { "type": "Identifier", - "start": 6357, - "end": 6360, + "start": 8141, + "end": 8144, "loc": { "start": { - "line": 191, + "line": 214, "column": 24 }, "end": { - "line": 191, + "line": 214, "column": 27 }, "identifierName": "top" @@ -12988,43 +14851,43 @@ }, "right": { "type": "BinaryExpression", - "start": 6363, - "end": 6386, + "start": 8147, + "end": 8170, "loc": { "start": { - "line": 191, + "line": 214, "column": 30 }, "end": { - "line": 191, + "line": 214, "column": 53 } }, "left": { "type": "MemberExpression", - "start": 6363, - "end": 6379, + "start": 8147, + "end": 8163, "loc": { "start": { - "line": 191, + "line": 214, "column": 30 }, "end": { - "line": 191, + "line": 214, "column": 46 } }, "object": { "type": "Identifier", - "start": 6363, - "end": 6375, + "start": 8147, + "end": 8159, "loc": { "start": { - "line": 191, + "line": 214, "column": 30 }, "end": { - "line": 191, + "line": 214, "column": 42 }, "identifierName": "canvasOffset" @@ -13033,15 +14896,15 @@ }, "property": { "type": "Identifier", - "start": 6376, - "end": 6379, + "start": 8160, + "end": 8163, "loc": { "start": { - "line": 191, + "line": 214, "column": 43 }, "end": { - "line": 191, + "line": 214, "column": 46 }, "identifierName": "top" @@ -13053,15 +14916,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 6382, - "end": 6386, + "start": 8166, + "end": 8170, "loc": { "start": { - "line": 191, + "line": 214, "column": 49 }, "end": { - "line": 191, + "line": 214, "column": 53 } }, @@ -13076,101 +14939,101 @@ }, { "type": "ExpressionStatement", - "start": 6396, - "end": 6440, + "start": 8180, + "end": 8224, "loc": { "start": { - "line": 192, + "line": 215, "column": 8 }, "end": { - "line": 192, + "line": 215, "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 6396, - "end": 6439, + "start": 8180, + "end": 8223, "loc": { "start": { - "line": 192, + "line": 215, "column": 8 }, "end": { - "line": 192, + "line": 215, "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6396, - "end": 6417, + "start": 8180, + "end": 8201, "loc": { "start": { - "line": 192, + "line": 215, "column": 8 }, "end": { - "line": 192, + "line": 215, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 6396, - "end": 6411, + "start": 8180, + "end": 8195, "loc": { "start": { - "line": 192, + "line": 215, "column": 8 }, "end": { - "line": 192, + "line": 215, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6396, - "end": 6405, + "start": 8180, + "end": 8189, "loc": { "start": { - "line": 192, + "line": 215, "column": 8 }, "end": { - "line": 192, + "line": 215, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6396, - "end": 6400, + "start": 8180, + "end": 8184, "loc": { "start": { - "line": 192, + "line": 215, "column": 8 }, "end": { - "line": 192, + "line": 215, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6401, - "end": 6405, + "start": 8185, + "end": 8189, "loc": { "start": { - "line": 192, + "line": 215, "column": 13 }, "end": { - "line": 192, + "line": 215, "column": 17 }, "identifierName": "_img" @@ -13181,15 +15044,15 @@ }, "property": { "type": "Identifier", - "start": 6406, - "end": 6411, + "start": 8190, + "end": 8195, "loc": { "start": { - "line": 192, + "line": 215, "column": 18 }, "end": { - "line": 192, + "line": 215, "column": 23 }, "identifierName": "style" @@ -13200,15 +15063,15 @@ }, "property": { "type": "Identifier", - "start": 6412, - "end": 6417, + "start": 8196, + "end": 8201, "loc": { "start": { - "line": 192, + "line": 215, "column": 24 }, "end": { - "line": 192, + "line": 215, "column": 29 }, "identifierName": "width" @@ -13219,43 +15082,43 @@ }, "right": { "type": "BinaryExpression", - "start": 6420, - "end": 6439, + "start": 8204, + "end": 8223, "loc": { "start": { - "line": 192, + "line": 215, "column": 32 }, "end": { - "line": 192, + "line": 215, "column": 51 } }, "left": { "type": "MemberExpression", - "start": 6420, - "end": 6432, + "start": 8204, + "end": 8216, "loc": { "start": { - "line": 192, + "line": 215, "column": 32 }, "end": { - "line": 192, + "line": 215, "column": 44 } }, "object": { "type": "Identifier", - "start": 6420, - "end": 6426, + "start": 8204, + "end": 8210, "loc": { "start": { - "line": 192, + "line": 215, "column": 32 }, "end": { - "line": 192, + "line": 215, "column": 38 }, "identifierName": "canvas" @@ -13264,15 +15127,15 @@ }, "property": { "type": "Identifier", - "start": 6427, - "end": 6432, + "start": 8211, + "end": 8216, "loc": { "start": { - "line": 192, + "line": 215, "column": 39 }, "end": { - "line": 192, + "line": 215, "column": 44 }, "identifierName": "width" @@ -13284,15 +15147,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 6435, - "end": 6439, + "start": 8219, + "end": 8223, "loc": { "start": { - "line": 192, + "line": 215, "column": 47 }, "end": { - "line": 192, + "line": 215, "column": 51 } }, @@ -13307,101 +15170,101 @@ }, { "type": "ExpressionStatement", - "start": 6449, - "end": 6495, + "start": 8233, + "end": 8279, "loc": { "start": { - "line": 193, + "line": 216, "column": 8 }, "end": { - "line": 193, + "line": 216, "column": 54 } }, "expression": { "type": "AssignmentExpression", - "start": 6449, - "end": 6494, + "start": 8233, + "end": 8278, "loc": { "start": { - "line": 193, + "line": 216, "column": 8 }, "end": { - "line": 193, + "line": 216, "column": 53 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6449, - "end": 6471, + "start": 8233, + "end": 8255, "loc": { "start": { - "line": 193, + "line": 216, "column": 8 }, "end": { - "line": 193, + "line": 216, "column": 30 } }, "object": { "type": "MemberExpression", - "start": 6449, - "end": 6464, + "start": 8233, + "end": 8248, "loc": { "start": { - "line": 193, + "line": 216, "column": 8 }, "end": { - "line": 193, + "line": 216, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6449, - "end": 6458, + "start": 8233, + "end": 8242, "loc": { "start": { - "line": 193, + "line": 216, "column": 8 }, "end": { - "line": 193, + "line": 216, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6449, - "end": 6453, + "start": 8233, + "end": 8237, "loc": { "start": { - "line": 193, + "line": 216, "column": 8 }, "end": { - "line": 193, + "line": 216, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6454, - "end": 6458, + "start": 8238, + "end": 8242, "loc": { "start": { - "line": 193, + "line": 216, "column": 13 }, "end": { - "line": 193, + "line": 216, "column": 17 }, "identifierName": "_img" @@ -13412,15 +15275,15 @@ }, "property": { "type": "Identifier", - "start": 6459, - "end": 6464, + "start": 8243, + "end": 8248, "loc": { "start": { - "line": 193, + "line": 216, "column": 18 }, "end": { - "line": 193, + "line": 216, "column": 23 }, "identifierName": "style" @@ -13431,15 +15294,15 @@ }, "property": { "type": "Identifier", - "start": 6465, - "end": 6471, + "start": 8249, + "end": 8255, "loc": { "start": { - "line": 193, + "line": 216, "column": 24 }, "end": { - "line": 193, + "line": 216, "column": 30 }, "identifierName": "height" @@ -13450,43 +15313,43 @@ }, "right": { "type": "BinaryExpression", - "start": 6474, - "end": 6494, + "start": 8258, + "end": 8278, "loc": { "start": { - "line": 193, + "line": 216, "column": 33 }, "end": { - "line": 193, + "line": 216, "column": 53 } }, "left": { "type": "MemberExpression", - "start": 6474, - "end": 6487, + "start": 8258, + "end": 8271, "loc": { "start": { - "line": 193, + "line": 216, "column": 33 }, "end": { - "line": 193, + "line": 216, "column": 46 } }, "object": { "type": "Identifier", - "start": 6474, - "end": 6480, + "start": 8258, + "end": 8264, "loc": { "start": { - "line": 193, + "line": 216, "column": 33 }, "end": { - "line": 193, + "line": 216, "column": 39 }, "identifierName": "canvas" @@ -13495,15 +15358,15 @@ }, "property": { "type": "Identifier", - "start": 6481, - "end": 6487, + "start": 8265, + "end": 8271, "loc": { "start": { - "line": 193, + "line": 216, "column": 40 }, "end": { - "line": 193, + "line": 216, "column": 46 }, "identifierName": "height" @@ -13515,15 +15378,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 6490, - "end": 6494, + "start": 8274, + "end": 8278, "loc": { "start": { - "line": 193, + "line": 216, "column": 49 }, "end": { - "line": 193, + "line": 216, "column": 53 } }, @@ -13538,101 +15401,101 @@ }, { "type": "ExpressionStatement", - "start": 6504, - "end": 6532, + "start": 8288, + "end": 8316, "loc": { "start": { - "line": 194, + "line": 217, "column": 8 }, "end": { - "line": 194, + "line": 217, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 6504, - "end": 6531, + "start": 8288, + "end": 8315, "loc": { "start": { - "line": 194, + "line": 217, "column": 8 }, "end": { - "line": 194, + "line": 217, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6504, - "end": 6527, + "start": 8288, + "end": 8311, "loc": { "start": { - "line": 194, + "line": 217, "column": 8 }, "end": { - "line": 194, + "line": 217, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 6504, - "end": 6519, + "start": 8288, + "end": 8303, "loc": { "start": { - "line": 194, + "line": 217, "column": 8 }, "end": { - "line": 194, + "line": 217, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6504, - "end": 6513, + "start": 8288, + "end": 8297, "loc": { "start": { - "line": 194, + "line": 217, "column": 8 }, "end": { - "line": 194, + "line": 217, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6504, - "end": 6508, + "start": 8288, + "end": 8292, "loc": { "start": { - "line": 194, + "line": 217, "column": 8 }, "end": { - "line": 194, + "line": 217, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6509, - "end": 6513, + "start": 8293, + "end": 8297, "loc": { "start": { - "line": 194, + "line": 217, "column": 13 }, "end": { - "line": 194, + "line": 217, "column": 17 }, "identifierName": "_img" @@ -13643,15 +15506,15 @@ }, "property": { "type": "Identifier", - "start": 6514, - "end": 6519, + "start": 8298, + "end": 8303, "loc": { "start": { - "line": 194, + "line": 217, "column": 18 }, "end": { - "line": 194, + "line": 217, "column": 23 }, "identifierName": "style" @@ -13662,15 +15525,15 @@ }, "property": { "type": "Identifier", - "start": 6520, - "end": 6527, + "start": 8304, + "end": 8311, "loc": { "start": { - "line": 194, + "line": 217, "column": 24 }, "end": { - "line": 194, + "line": 217, "column": 31 }, "identifierName": "opacity" @@ -13681,15 +15544,15 @@ }, "right": { "type": "NumericLiteral", - "start": 6530, - "end": 6531, + "start": 8314, + "end": 8315, "loc": { "start": { - "line": 194, + "line": 217, "column": 34 }, "end": { - "line": 194, + "line": 217, "column": 35 } }, @@ -13703,87 +15566,87 @@ }, { "type": "ExpressionStatement", - "start": 6541, - "end": 6572, + "start": 8325, + "end": 8356, "loc": { "start": { - "line": 195, + "line": 218, "column": 8 }, "end": { - "line": 195, + "line": 218, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 6541, - "end": 6571, + "start": 8325, + "end": 8355, "loc": { "start": { - "line": 195, + "line": 218, "column": 8 }, "end": { - "line": 195, + "line": 218, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6541, - "end": 6556, + "start": 8325, + "end": 8340, "loc": { "start": { - "line": 195, + "line": 218, "column": 8 }, "end": { - "line": 195, + "line": 218, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6541, - "end": 6550, + "start": 8325, + "end": 8334, "loc": { "start": { - "line": 195, + "line": 218, "column": 8 }, "end": { - "line": 195, + "line": 218, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6541, - "end": 6545, + "start": 8325, + "end": 8329, "loc": { "start": { - "line": 195, + "line": 218, "column": 8 }, "end": { - "line": 195, + "line": 218, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6546, - "end": 6550, + "start": 8330, + "end": 8334, "loc": { "start": { - "line": 195, + "line": 218, "column": 13 }, "end": { - "line": 195, + "line": 218, "column": 17 }, "identifierName": "_img" @@ -13794,15 +15657,15 @@ }, "property": { "type": "Identifier", - "start": 6551, - "end": 6556, + "start": 8335, + "end": 8340, "loc": { "start": { - "line": 195, + "line": 218, "column": 18 }, "end": { - "line": 195, + "line": 218, "column": 23 }, "identifierName": "width" @@ -13813,29 +15676,29 @@ }, "right": { "type": "MemberExpression", - "start": 6559, - "end": 6571, + "start": 8343, + "end": 8355, "loc": { "start": { - "line": 195, + "line": 218, "column": 26 }, "end": { - "line": 195, + "line": 218, "column": 38 } }, "object": { "type": "Identifier", - "start": 6559, - "end": 6565, + "start": 8343, + "end": 8349, "loc": { "start": { - "line": 195, + "line": 218, "column": 26 }, "end": { - "line": 195, + "line": 218, "column": 32 }, "identifierName": "canvas" @@ -13844,15 +15707,15 @@ }, "property": { "type": "Identifier", - "start": 6566, - "end": 6571, + "start": 8350, + "end": 8355, "loc": { "start": { - "line": 195, + "line": 218, "column": 33 }, "end": { - "line": 195, + "line": 218, "column": 38 }, "identifierName": "width" @@ -13865,87 +15728,87 @@ }, { "type": "ExpressionStatement", - "start": 6581, - "end": 6614, + "start": 8365, + "end": 8398, "loc": { "start": { - "line": 196, + "line": 219, "column": 8 }, "end": { - "line": 196, + "line": 219, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 6581, - "end": 6613, + "start": 8365, + "end": 8397, "loc": { "start": { - "line": 196, + "line": 219, "column": 8 }, "end": { - "line": 196, + "line": 219, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6581, - "end": 6597, + "start": 8365, + "end": 8381, "loc": { "start": { - "line": 196, + "line": 219, "column": 8 }, "end": { - "line": 196, + "line": 219, "column": 24 } }, "object": { "type": "MemberExpression", - "start": 6581, - "end": 6590, + "start": 8365, + "end": 8374, "loc": { "start": { - "line": 196, + "line": 219, "column": 8 }, "end": { - "line": 196, + "line": 219, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6581, - "end": 6585, + "start": 8365, + "end": 8369, "loc": { "start": { - "line": 196, + "line": 219, "column": 8 }, "end": { - "line": 196, + "line": 219, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6586, - "end": 6590, + "start": 8370, + "end": 8374, "loc": { "start": { - "line": 196, + "line": 219, "column": 13 }, "end": { - "line": 196, + "line": 219, "column": 17 }, "identifierName": "_img" @@ -13956,15 +15819,15 @@ }, "property": { "type": "Identifier", - "start": 6591, - "end": 6597, + "start": 8375, + "end": 8381, "loc": { "start": { - "line": 196, + "line": 219, "column": 18 }, "end": { - "line": 196, + "line": 219, "column": 24 }, "identifierName": "height" @@ -13975,29 +15838,29 @@ }, "right": { "type": "MemberExpression", - "start": 6600, - "end": 6613, + "start": 8384, + "end": 8397, "loc": { "start": { - "line": 196, + "line": 219, "column": 27 }, "end": { - "line": 196, + "line": 219, "column": 40 } }, "object": { "type": "Identifier", - "start": 6600, - "end": 6606, + "start": 8384, + "end": 8390, "loc": { "start": { - "line": 196, + "line": 219, "column": 27 }, "end": { - "line": 196, + "line": 219, "column": 33 }, "identifierName": "canvas" @@ -14006,15 +15869,15 @@ }, "property": { "type": "Identifier", - "start": 6607, - "end": 6613, + "start": 8391, + "end": 8397, "loc": { "start": { - "line": 196, + "line": 219, "column": 34 }, "end": { - "line": 196, + "line": 219, "column": 40 }, "identifierName": "height" @@ -14027,87 +15890,87 @@ }, { "type": "ExpressionStatement", - "start": 6623, - "end": 6658, + "start": 8407, + "end": 8442, "loc": { "start": { - "line": 197, + "line": 220, "column": 8 }, "end": { - "line": 197, + "line": 220, "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 6623, - "end": 6657, + "start": 8407, + "end": 8441, "loc": { "start": { - "line": 197, + "line": 220, "column": 8 }, "end": { - "line": 197, + "line": 220, "column": 42 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6623, - "end": 6637, + "start": 8407, + "end": 8421, "loc": { "start": { - "line": 197, + "line": 220, "column": 8 }, "end": { - "line": 197, + "line": 220, "column": 22 } }, "object": { "type": "MemberExpression", - "start": 6623, - "end": 6632, + "start": 8407, + "end": 8416, "loc": { "start": { - "line": 197, + "line": 220, "column": 8 }, "end": { - "line": 197, + "line": 220, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6623, - "end": 6627, + "start": 8407, + "end": 8411, "loc": { "start": { - "line": 197, + "line": 220, "column": 8 }, "end": { - "line": 197, + "line": 220, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6628, - "end": 6632, + "start": 8412, + "end": 8416, "loc": { "start": { - "line": 197, + "line": 220, "column": 13 }, "end": { - "line": 197, + "line": 220, "column": 17 }, "identifierName": "_img" @@ -14118,15 +15981,15 @@ }, "property": { "type": "Identifier", - "start": 6633, - "end": 6637, + "start": 8417, + "end": 8421, "loc": { "start": { - "line": 197, + "line": 220, "column": 18 }, "end": { - "line": 197, + "line": 220, "column": 22 }, "identifierName": "left" @@ -14137,29 +16000,29 @@ }, "right": { "type": "MemberExpression", - "start": 6640, - "end": 6657, + "start": 8424, + "end": 8441, "loc": { "start": { - "line": 197, + "line": 220, "column": 25 }, "end": { - "line": 197, + "line": 220, "column": 42 } }, "object": { "type": "Identifier", - "start": 6640, - "end": 6652, + "start": 8424, + "end": 8436, "loc": { "start": { - "line": 197, + "line": 220, "column": 25 }, "end": { - "line": 197, + "line": 220, "column": 37 }, "identifierName": "canvasOffset" @@ -14168,15 +16031,15 @@ }, "property": { "type": "Identifier", - "start": 6653, - "end": 6657, + "start": 8437, + "end": 8441, "loc": { "start": { - "line": 197, + "line": 220, "column": 38 }, "end": { - "line": 197, + "line": 220, "column": 42 }, "identifierName": "left" @@ -14189,87 +16052,87 @@ }, { "type": "ExpressionStatement", - "start": 6667, - "end": 6700, + "start": 8451, + "end": 8484, "loc": { "start": { - "line": 198, + "line": 221, "column": 8 }, "end": { - "line": 198, + "line": 221, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 6667, - "end": 6699, + "start": 8451, + "end": 8483, "loc": { "start": { - "line": 198, + "line": 221, "column": 8 }, "end": { - "line": 198, + "line": 221, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6667, - "end": 6680, + "start": 8451, + "end": 8464, "loc": { "start": { - "line": 198, + "line": 221, "column": 8 }, "end": { - "line": 198, + "line": 221, "column": 21 } }, "object": { "type": "MemberExpression", - "start": 6667, - "end": 6676, + "start": 8451, + "end": 8460, "loc": { "start": { - "line": 198, + "line": 221, "column": 8 }, "end": { - "line": 198, + "line": 221, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6667, - "end": 6671, + "start": 8451, + "end": 8455, "loc": { "start": { - "line": 198, + "line": 221, "column": 8 }, "end": { - "line": 198, + "line": 221, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6672, - "end": 6676, + "start": 8456, + "end": 8460, "loc": { "start": { - "line": 198, + "line": 221, "column": 13 }, "end": { - "line": 198, + "line": 221, "column": 17 }, "identifierName": "_img" @@ -14280,15 +16143,15 @@ }, "property": { "type": "Identifier", - "start": 6677, - "end": 6680, + "start": 8461, + "end": 8464, "loc": { "start": { - "line": 198, + "line": 221, "column": 18 }, "end": { - "line": 198, + "line": 221, "column": 21 }, "identifierName": "top" @@ -14299,29 +16162,29 @@ }, "right": { "type": "MemberExpression", - "start": 6683, - "end": 6699, + "start": 8467, + "end": 8483, "loc": { "start": { - "line": 198, + "line": 221, "column": 24 }, "end": { - "line": 198, + "line": 221, "column": 40 } }, "object": { "type": "Identifier", - "start": 6683, - "end": 6695, + "start": 8467, + "end": 8479, "loc": { "start": { - "line": 198, + "line": 221, "column": 24 }, "end": { - "line": 198, + "line": 221, "column": 36 }, "identifierName": "canvasOffset" @@ -14330,15 +16193,15 @@ }, "property": { "type": "Identifier", - "start": 6696, - "end": 6699, + "start": 8480, + "end": 8483, "loc": { "start": { - "line": 198, + "line": 221, "column": 37 }, "end": { - "line": 198, + "line": 221, "column": 40 }, "identifierName": "top" @@ -14351,71 +16214,71 @@ }, { "type": "ExpressionStatement", - "start": 6709, - "end": 6771, + "start": 8493, + "end": 8555, "loc": { "start": { - "line": 199, + "line": 222, "column": 8 }, "end": { - "line": 199, + "line": 222, "column": 70 } }, "expression": { "type": "CallExpression", - "start": 6709, - "end": 6770, + "start": 8493, + "end": 8554, "loc": { "start": { - "line": 199, + "line": 222, "column": 8 }, "end": { - "line": 199, + "line": 222, "column": 69 } }, "callee": { "type": "MemberExpression", - "start": 6709, - "end": 6739, + "start": 8493, + "end": 8523, "loc": { "start": { - "line": 199, + "line": 222, "column": 8 }, "end": { - "line": 199, + "line": 222, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 6709, - "end": 6726, + "start": 8493, + "end": 8510, "loc": { "start": { - "line": 199, + "line": 222, "column": 8 }, "end": { - "line": 199, + "line": 222, "column": 25 } }, "object": { "type": "Identifier", - "start": 6709, - "end": 6715, + "start": 8493, + "end": 8499, "loc": { "start": { - "line": 199, + "line": 222, "column": 8 }, "end": { - "line": 199, + "line": 222, "column": 14 }, "identifierName": "canvas" @@ -14424,15 +16287,15 @@ }, "property": { "type": "Identifier", - "start": 6716, - "end": 6726, + "start": 8500, + "end": 8510, "loc": { "start": { - "line": 199, + "line": 222, "column": 15 }, "end": { - "line": 199, + "line": 222, "column": 25 }, "identifierName": "parentNode" @@ -14443,15 +16306,15 @@ }, "property": { "type": "Identifier", - "start": 6727, - "end": 6739, + "start": 8511, + "end": 8523, "loc": { "start": { - "line": 199, + "line": 222, "column": 26 }, "end": { - "line": 199, + "line": 222, "column": 38 }, "identifierName": "insertBefore" @@ -14463,44 +16326,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 6740, - "end": 6749, + "start": 8524, + "end": 8533, "loc": { "start": { - "line": 199, + "line": 222, "column": 39 }, "end": { - "line": 199, + "line": 222, "column": 48 } }, "object": { "type": "ThisExpression", - "start": 6740, - "end": 6744, + "start": 8524, + "end": 8528, "loc": { "start": { - "line": 199, + "line": 222, "column": 39 }, "end": { - "line": 199, + "line": 222, "column": 43 } } }, "property": { "type": "Identifier", - "start": 6745, - "end": 6749, + "start": 8529, + "end": 8533, "loc": { "start": { - "line": 199, + "line": 222, "column": 44 }, "end": { - "line": 199, + "line": 222, "column": 48 }, "identifierName": "_img" @@ -14511,29 +16374,29 @@ }, { "type": "MemberExpression", - "start": 6751, - "end": 6769, + "start": 8535, + "end": 8553, "loc": { "start": { - "line": 199, + "line": 222, "column": 50 }, "end": { - "line": 199, + "line": 222, "column": 68 } }, "object": { "type": "Identifier", - "start": 6751, - "end": 6757, + "start": 8535, + "end": 8541, "loc": { "start": { - "line": 199, + "line": 222, "column": 50 }, "end": { - "line": 199, + "line": 222, "column": 56 }, "identifierName": "canvas" @@ -14542,15 +16405,15 @@ }, "property": { "type": "Identifier", - "start": 6758, - "end": 6769, + "start": 8542, + "end": 8553, "loc": { "start": { - "line": 199, + "line": 222, "column": 57 }, "end": { - "line": 199, + "line": 222, "column": 68 }, "identifierName": "nextSibling" @@ -14568,15 +16431,15 @@ }, { "type": "ClassMethod", - "start": 6783, - "end": 7065, + "start": 8567, + "end": 8973, "loc": { "start": { - "line": 202, + "line": 225, "column": 4 }, "end": { - "line": 212, + "line": 239, "column": 5 } }, @@ -14584,15 +16447,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 6783, - "end": 6794, + "start": 8567, + "end": 8578, "loc": { "start": { - "line": 202, + "line": 225, "column": 4 }, "end": { - "line": 202, + "line": 225, "column": 15 }, "identifierName": "_cancelFade" @@ -14607,44 +16470,44 @@ "params": [], "body": { "type": "BlockStatement", - "start": 6797, - "end": 7065, + "start": 8581, + "end": 8973, "loc": { "start": { - "line": 202, + "line": 225, "column": 18 }, "end": { - "line": 212, + "line": 239, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 6807, - "end": 6854, + "start": 8591, + "end": 8638, "loc": { "start": { - "line": 203, + "line": 226, "column": 8 }, "end": { - "line": 205, + "line": 228, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 6811, - "end": 6821, + "start": 8595, + "end": 8605, "loc": { "start": { - "line": 203, + "line": 226, "column": 12 }, "end": { - "line": 203, + "line": 226, "column": 22 } }, @@ -14652,44 +16515,44 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 6812, - "end": 6821, + "start": 8596, + "end": 8605, "loc": { "start": { - "line": 203, + "line": 226, "column": 13 }, "end": { - "line": 203, + "line": 226, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 6812, - "end": 6816, + "start": 8596, + "end": 8600, "loc": { "start": { - "line": 203, + "line": 226, "column": 13 }, "end": { - "line": 203, + "line": 226, "column": 17 } } }, "property": { "type": "Identifier", - "start": 6817, - "end": 6821, + "start": 8601, + "end": 8605, "loc": { "start": { - "line": 203, + "line": 226, "column": 18 }, "end": { - "line": 203, + "line": 226, "column": 22 }, "identifierName": "_img" @@ -14704,30 +16567,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 6823, - "end": 6854, + "start": 8607, + "end": 8638, "loc": { "start": { - "line": 203, + "line": 226, "column": 24 }, "end": { - "line": 205, + "line": 228, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 6837, - "end": 6844, + "start": 8621, + "end": 8628, "loc": { "start": { - "line": 204, + "line": 227, "column": 12 }, "end": { - "line": 204, + "line": 227, "column": 19 } }, @@ -14740,58 +16603,58 @@ }, { "type": "IfStatement", - "start": 6863, - "end": 6975, + "start": 8647, + "end": 8759, "loc": { "start": { - "line": 206, + "line": 229, "column": 8 }, "end": { - "line": 209, + "line": 232, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 6867, - "end": 6882, + "start": 8651, + "end": 8666, "loc": { "start": { - "line": 206, + "line": 229, "column": 12 }, "end": { - "line": 206, + "line": 229, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 6867, - "end": 6871, + "start": 8651, + "end": 8655, "loc": { "start": { - "line": 206, + "line": 229, "column": 12 }, "end": { - "line": 206, + "line": 229, "column": 16 } } }, "property": { "type": "Identifier", - "start": 6872, - "end": 6882, + "start": 8656, + "end": 8666, "loc": { "start": { - "line": 206, + "line": 229, "column": 17 }, "end": { - "line": 206, + "line": 229, "column": 27 }, "identifierName": "_pInterval" @@ -14802,58 +16665,58 @@ }, "consequent": { "type": "BlockStatement", - "start": 6884, - "end": 6975, + "start": 8668, + "end": 8759, "loc": { "start": { - "line": 206, + "line": 229, "column": 29 }, "end": { - "line": 209, + "line": 232, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 6898, - "end": 6929, + "start": 8682, + "end": 8713, "loc": { "start": { - "line": 207, + "line": 230, "column": 12 }, "end": { - "line": 207, + "line": 230, "column": 43 } }, "expression": { "type": "CallExpression", - "start": 6898, - "end": 6928, + "start": 8682, + "end": 8712, "loc": { "start": { - "line": 207, + "line": 230, "column": 12 }, "end": { - "line": 207, + "line": 230, "column": 42 } }, "callee": { "type": "Identifier", - "start": 6898, - "end": 6911, + "start": 8682, + "end": 8695, "loc": { "start": { - "line": 207, + "line": 230, "column": 12 }, "end": { - "line": 207, + "line": 230, "column": 25 }, "identifierName": "clearInterval" @@ -14863,44 +16726,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 6912, - "end": 6927, + "start": 8696, + "end": 8711, "loc": { "start": { - "line": 207, + "line": 230, "column": 26 }, "end": { - "line": 207, + "line": 230, "column": 41 } }, "object": { "type": "ThisExpression", - "start": 6912, - "end": 6916, + "start": 8696, + "end": 8700, "loc": { "start": { - "line": 207, + "line": 230, "column": 26 }, "end": { - "line": 207, + "line": 230, "column": 30 } } }, "property": { "type": "Identifier", - "start": 6917, - "end": 6927, + "start": 8701, + "end": 8711, "loc": { "start": { - "line": 207, + "line": 230, "column": 31 }, "end": { - "line": 207, + "line": 230, "column": 41 }, "identifierName": "_pInterval" @@ -14914,73 +16777,73 @@ }, { "type": "ExpressionStatement", - "start": 6942, - "end": 6965, + "start": 8726, + "end": 8749, "loc": { "start": { - "line": 208, + "line": 231, "column": 12 }, "end": { - "line": 208, + "line": 231, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 6942, - "end": 6964, + "start": 8726, + "end": 8748, "loc": { "start": { - "line": 208, + "line": 231, "column": 12 }, "end": { - "line": 208, + "line": 231, "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6942, - "end": 6957, + "start": 8726, + "end": 8741, "loc": { "start": { - "line": 208, + "line": 231, "column": 12 }, "end": { - "line": 208, + "line": 231, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 6942, - "end": 6946, + "start": 8726, + "end": 8730, "loc": { "start": { - "line": 208, + "line": 231, "column": 12 }, "end": { - "line": 208, + "line": 231, "column": 16 } } }, "property": { "type": "Identifier", - "start": 6947, - "end": 6957, + "start": 8731, + "end": 8741, "loc": { "start": { - "line": 208, + "line": 231, "column": 17 }, "end": { - "line": 208, + "line": 231, "column": 27 }, "identifierName": "_pInterval" @@ -14991,15 +16854,15 @@ }, "right": { "type": "NullLiteral", - "start": 6960, - "end": 6964, + "start": 8744, + "end": 8748, "loc": { "start": { - "line": 208, + "line": 231, "column": 30 }, "end": { - "line": 208, + "line": 231, "column": 34 } } @@ -15011,103 +16874,376 @@ }, "alternate": null }, + { + "type": "IfStatement", + "start": 8768, + "end": 8883, + "loc": { + "start": { + "line": 233, + "column": 8 + }, + "end": { + "line": 236, + "column": 9 + } + }, + "test": { + "type": "MemberExpression", + "start": 8772, + "end": 8788, + "loc": { + "start": { + "line": 233, + "column": 12 + }, + "end": { + "line": 233, + "column": 28 + } + }, + "object": { + "type": "ThisExpression", + "start": 8772, + "end": 8776, + "loc": { + "start": { + "line": 233, + "column": 12 + }, + "end": { + "line": 233, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 8777, + "end": 8788, + "loc": { + "start": { + "line": 233, + "column": 17 + }, + "end": { + "line": 233, + "column": 28 + }, + "identifierName": "_pInterval2" + }, + "name": "_pInterval2" + }, + "computed": false + }, + "consequent": { + "type": "BlockStatement", + "start": 8790, + "end": 8883, + "loc": { + "start": { + "line": 233, + "column": 30 + }, + "end": { + "line": 236, + "column": 9 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 8804, + "end": 8836, + "loc": { + "start": { + "line": 234, + "column": 12 + }, + "end": { + "line": 234, + "column": 44 + } + }, + "expression": { + "type": "CallExpression", + "start": 8804, + "end": 8835, + "loc": { + "start": { + "line": 234, + "column": 12 + }, + "end": { + "line": 234, + "column": 43 + } + }, + "callee": { + "type": "Identifier", + "start": 8804, + "end": 8817, + "loc": { + "start": { + "line": 234, + "column": 12 + }, + "end": { + "line": 234, + "column": 25 + }, + "identifierName": "clearInterval" + }, + "name": "clearInterval" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 8818, + "end": 8834, + "loc": { + "start": { + "line": 234, + "column": 26 + }, + "end": { + "line": 234, + "column": 42 + } + }, + "object": { + "type": "ThisExpression", + "start": 8818, + "end": 8822, + "loc": { + "start": { + "line": 234, + "column": 26 + }, + "end": { + "line": 234, + "column": 30 + } + } + }, + "property": { + "type": "Identifier", + "start": 8823, + "end": 8834, + "loc": { + "start": { + "line": 234, + "column": 31 + }, + "end": { + "line": 234, + "column": 42 + }, + "identifierName": "_pInterval2" + }, + "name": "_pInterval2" + }, + "computed": false + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 8849, + "end": 8873, + "loc": { + "start": { + "line": 235, + "column": 12 + }, + "end": { + "line": 235, + "column": 36 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 8849, + "end": 8872, + "loc": { + "start": { + "line": 235, + "column": 12 + }, + "end": { + "line": 235, + "column": 35 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 8849, + "end": 8865, + "loc": { + "start": { + "line": 235, + "column": 12 + }, + "end": { + "line": 235, + "column": 28 + } + }, + "object": { + "type": "ThisExpression", + "start": 8849, + "end": 8853, + "loc": { + "start": { + "line": 235, + "column": 12 + }, + "end": { + "line": 235, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 8854, + "end": 8865, + "loc": { + "start": { + "line": 235, + "column": 17 + }, + "end": { + "line": 235, + "column": 28 + }, + "identifierName": "_pInterval2" + }, + "name": "_pInterval2" + }, + "computed": false + }, + "right": { + "type": "NullLiteral", + "start": 8868, + "end": 8872, + "loc": { + "start": { + "line": 235, + "column": 31 + }, + "end": { + "line": 235, + "column": 35 + } + } + } + } + } + ], + "directives": [] + }, + "alternate": null + }, { "type": "ExpressionStatement", - "start": 6984, - "end": 7012, + "start": 8892, + "end": 8920, "loc": { "start": { - "line": 210, + "line": 237, "column": 8 }, "end": { - "line": 210, + "line": 237, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 6984, - "end": 7011, + "start": 8892, + "end": 8919, "loc": { "start": { - "line": 210, + "line": 237, "column": 8 }, "end": { - "line": 210, + "line": 237, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6984, - "end": 7007, + "start": 8892, + "end": 8915, "loc": { "start": { - "line": 210, + "line": 237, "column": 8 }, "end": { - "line": 210, + "line": 237, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 6984, - "end": 6999, + "start": 8892, + "end": 8907, "loc": { "start": { - "line": 210, + "line": 237, "column": 8 }, "end": { - "line": 210, + "line": 237, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6984, - "end": 6993, + "start": 8892, + "end": 8901, "loc": { "start": { - "line": 210, + "line": 237, "column": 8 }, "end": { - "line": 210, + "line": 237, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6984, - "end": 6988, + "start": 8892, + "end": 8896, "loc": { "start": { - "line": 210, + "line": 237, "column": 8 }, "end": { - "line": 210, + "line": 237, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6989, - "end": 6993, + "start": 8897, + "end": 8901, "loc": { "start": { - "line": 210, + "line": 237, "column": 13 }, "end": { - "line": 210, + "line": 237, "column": 17 }, "identifierName": "_img" @@ -15118,15 +17254,15 @@ }, "property": { "type": "Identifier", - "start": 6994, - "end": 6999, + "start": 8902, + "end": 8907, "loc": { "start": { - "line": 210, + "line": 237, "column": 18 }, "end": { - "line": 210, + "line": 237, "column": 23 }, "identifierName": "style" @@ -15137,15 +17273,15 @@ }, "property": { "type": "Identifier", - "start": 7000, - "end": 7007, + "start": 8908, + "end": 8915, "loc": { "start": { - "line": 210, + "line": 237, "column": 24 }, "end": { - "line": 210, + "line": 237, "column": 31 }, "identifierName": "opacity" @@ -15156,15 +17292,15 @@ }, "right": { "type": "NumericLiteral", - "start": 7010, - "end": 7011, + "start": 8918, + "end": 8919, "loc": { "start": { - "line": 210, + "line": 237, "column": 34 }, "end": { - "line": 210, + "line": 237, "column": 35 } }, @@ -15178,101 +17314,101 @@ }, { "type": "ExpressionStatement", - "start": 7021, - "end": 7059, + "start": 8929, + "end": 8967, "loc": { "start": { - "line": 211, + "line": 238, "column": 8 }, "end": { - "line": 211, + "line": 238, "column": 46 } }, "expression": { "type": "AssignmentExpression", - "start": 7021, - "end": 7058, + "start": 8929, + "end": 8966, "loc": { "start": { - "line": 211, + "line": 238, "column": 8 }, "end": { - "line": 211, + "line": 238, "column": 45 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 7021, - "end": 7047, + "start": 8929, + "end": 8955, "loc": { "start": { - "line": 211, + "line": 238, "column": 8 }, "end": { - "line": 211, + "line": 238, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 7021, - "end": 7036, + "start": 8929, + "end": 8944, "loc": { "start": { - "line": 211, + "line": 238, "column": 8 }, "end": { - "line": 211, + "line": 238, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 7021, - "end": 7030, + "start": 8929, + "end": 8938, "loc": { "start": { - "line": 211, + "line": 238, "column": 8 }, "end": { - "line": 211, + "line": 238, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 7021, - "end": 7025, + "start": 8929, + "end": 8933, "loc": { "start": { - "line": 211, + "line": 238, "column": 8 }, "end": { - "line": 211, + "line": 238, "column": 12 } } }, "property": { "type": "Identifier", - "start": 7026, - "end": 7030, + "start": 8934, + "end": 8938, "loc": { "start": { - "line": 211, + "line": 238, "column": 13 }, "end": { - "line": 211, + "line": 238, "column": 17 }, "identifierName": "_img" @@ -15283,15 +17419,15 @@ }, "property": { "type": "Identifier", - "start": 7031, - "end": 7036, + "start": 8939, + "end": 8944, "loc": { "start": { - "line": 211, + "line": 238, "column": 18 }, "end": { - "line": 211, + "line": 238, "column": 23 }, "identifierName": "style" @@ -15302,15 +17438,15 @@ }, "property": { "type": "Identifier", - "start": 7037, - "end": 7047, + "start": 8945, + "end": 8955, "loc": { "start": { - "line": 211, + "line": 238, "column": 24 }, "end": { - "line": 211, + "line": 238, "column": 34 }, "identifierName": "visibility" @@ -15321,15 +17457,15 @@ }, "right": { "type": "StringLiteral", - "start": 7050, - "end": 7058, + "start": 8958, + "end": 8966, "loc": { "start": { - "line": 211, + "line": 238, "column": 37 }, "end": { - "line": 211, + "line": 238, "column": 45 } }, @@ -15348,16 +17484,16 @@ "trailingComments": [ { "type": "CommentBlock", - "value": "*\n * @private\n ", - "start": 7071, - "end": 7098, + "value": "*\n * Sets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n ", + "start": 8979, + "end": 9144, "loc": { "start": { - "line": 214, + "line": 241, "column": 4 }, "end": { - "line": 216, + "line": 245, "column": 7 } } @@ -15366,15 +17502,15 @@ }, { "type": "ClassMethod", - "start": 7103, - "end": 7247, + "start": 9149, + "end": 9222, "loc": { "start": { - "line": 217, + "line": 246, "column": 4 }, "end": { - "line": 223, + "line": 248, "column": 5 } }, @@ -15382,23 +17518,22 @@ "computed": false, "key": { "type": "Identifier", - "start": 7103, - "end": 7107, + "start": 9153, + "end": 9163, "loc": { "start": { - "line": 217, - "column": 4 + "line": 246, + "column": 8 }, "end": { - "line": 217, - "column": 8 + "line": 246, + "column": 18 }, - "identifierName": "send" + "identifierName": "pbrEnabled" }, - "name": "send", - "leadingComments": null + "name": "pbrEnabled" }, - "kind": "method", + "kind": "set", "id": null, "generator": false, "expression": false, @@ -15406,219 +17541,132 @@ "params": [ { "type": "Identifier", - "start": 7108, - "end": 7112, + "start": 9164, + "end": 9174, "loc": { "start": { - "line": 217, - "column": 9 - }, - "end": { - "line": 217, - "column": 13 - }, - "identifierName": "name" - }, - "name": "name" - }, - { - "type": "Identifier", - "start": 7114, - "end": 7119, - "loc": { - "start": { - "line": 217, - "column": 15 + "line": 246, + "column": 19 }, "end": { - "line": 217, - "column": 20 + "line": 246, + "column": 29 }, - "identifierName": "value" + "identifierName": "pbrEnabled" }, - "name": "value" + "name": "pbrEnabled" } ], "body": { "type": "BlockStatement", - "start": 7121, - "end": 7247, + "start": 9176, + "end": 9222, "loc": { "start": { - "line": 217, - "column": 22 + "line": 246, + "column": 31 }, "end": { - "line": 223, + "line": 248, "column": 5 } }, "body": [ { - "type": "SwitchStatement", - "start": 7131, - "end": 7241, + "type": "ExpressionStatement", + "start": 9186, + "end": 9216, "loc": { "start": { - "line": 218, + "line": 247, "column": 8 }, "end": { - "line": 222, - "column": 9 + "line": 247, + "column": 38 } }, - "discriminant": { - "type": "Identifier", - "start": 7139, - "end": 7143, + "expression": { + "type": "AssignmentExpression", + "start": 9186, + "end": 9215, "loc": { "start": { - "line": 218, - "column": 16 + "line": 247, + "column": 8 }, "end": { - "line": 218, - "column": 20 - }, - "identifierName": "name" + "line": 247, + "column": 37 + } }, - "name": "name" - }, - "cases": [ - { - "type": "SwitchCase", - "start": 7159, - "end": 7231, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 9186, + "end": 9202, "loc": { "start": { - "line": 219, - "column": 12 + "line": 247, + "column": 8 }, "end": { - "line": 221, - "column": 22 + "line": 247, + "column": 24 } }, - "consequent": [ - { - "type": "ExpressionStatement", - "start": 7189, - "end": 7208, - "loc": { - "start": { - "line": 220, - "column": 16 - }, - "end": { - "line": 220, - "column": 35 - } + "object": { + "type": "ThisExpression", + "start": 9186, + "end": 9190, + "loc": { + "start": { + "line": 247, + "column": 8 }, - "expression": { - "type": "CallExpression", - "start": 7189, - "end": 7207, - "loc": { - "start": { - "line": 220, - "column": 16 - }, - "end": { - "line": 220, - "column": 34 - } - }, - "callee": { - "type": "MemberExpression", - "start": 7189, - "end": 7205, - "loc": { - "start": { - "line": 220, - "column": 16 - }, - "end": { - "line": 220, - "column": 32 - } - }, - "object": { - "type": "ThisExpression", - "start": 7189, - "end": 7193, - "loc": { - "start": { - "line": 220, - "column": 16 - }, - "end": { - "line": 220, - "column": 20 - } - } - }, - "property": { - "type": "Identifier", - "start": 7194, - "end": 7205, - "loc": { - "start": { - "line": 220, - "column": 21 - }, - "end": { - "line": 220, - "column": 32 - }, - "identifierName": "_cancelFade" - }, - "name": "_cancelFade" - }, - "computed": false - }, - "arguments": [] + "end": { + "line": 247, + "column": 12 } - }, - { - "type": "BreakStatement", - "start": 7225, - "end": 7231, - "loc": { - "start": { - "line": 221, - "column": 16 - }, - "end": { - "line": 221, - "column": 22 - } - }, - "label": null } - ], - "test": { - "type": "StringLiteral", - "start": 7164, - "end": 7171, + }, + "property": { + "type": "Identifier", + "start": 9191, + "end": 9202, "loc": { "start": { - "line": 219, - "column": 17 + "line": 247, + "column": 13 }, "end": { - "line": 219, + "line": 247, "column": 24 - } + }, + "identifierName": "_pbrEnabled" }, - "extra": { - "rawValue": "clear", - "raw": "\"clear\"" + "name": "_pbrEnabled" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 9205, + "end": 9215, + "loc": { + "start": { + "line": 247, + "column": 27 }, - "value": "clear" - } + "end": { + "line": 247, + "column": 37 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" } - ] + } } ], "directives": [], @@ -15627,16 +17675,16 @@ "leadingComments": [ { "type": "CommentBlock", - "value": "*\n * @private\n ", - "start": 7071, - "end": 7098, + "value": "*\n * Sets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n ", + "start": 8979, + "end": 9144, "loc": { "start": { - "line": 214, + "line": 241, "column": 4 }, "end": { - "line": 216, + "line": 245, "column": 7 } } @@ -15645,16 +17693,16 @@ "trailingComments": [ { "type": "CommentBlock", - "value": "*\n * Destroys this plugin.\n ", - "start": 7253, - "end": 7293, + "value": "*\n * Gets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n ", + "start": 9228, + "end": 9393, "loc": { "start": { - "line": 225, + "line": 250, "column": 4 }, "end": { - "line": 227, + "line": 254, "column": 7 } } @@ -15663,15 +17711,15 @@ }, { "type": "ClassMethod", - "start": 7298, - "end": 7800, + "start": 9398, + "end": 9454, "loc": { "start": { - "line": 228, + "line": 255, "column": 4 }, "end": { - "line": 239, + "line": 257, "column": 5 } }, @@ -15679,23 +17727,22 @@ "computed": false, "key": { "type": "Identifier", - "start": 7298, - "end": 7305, + "start": 9402, + "end": 9412, "loc": { "start": { - "line": 228, - "column": 4 + "line": 255, + "column": 8 }, "end": { - "line": 228, - "column": 11 + "line": 255, + "column": 18 }, - "identifierName": "destroy" + "identifierName": "pbrEnabled" }, - "name": "destroy", - "leadingComments": null + "name": "pbrEnabled" }, - "kind": "method", + "kind": "get", "id": null, "generator": false, "expression": false, @@ -15703,823 +17750,1398 @@ "params": [], "body": { "type": "BlockStatement", - "start": 7308, - "end": 7800, + "start": 9415, + "end": 9454, "loc": { "start": { - "line": 228, - "column": 14 + "line": 255, + "column": 21 }, "end": { - "line": 239, + "line": 257, + "column": 5 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9425, + "end": 9448, + "loc": { + "start": { + "line": 256, + "column": 8 + }, + "end": { + "line": 256, + "column": 31 + } + }, + "argument": { + "type": "MemberExpression", + "start": 9432, + "end": 9448, + "loc": { + "start": { + "line": 256, + "column": 15 + }, + "end": { + "line": 256, + "column": 31 + } + }, + "object": { + "type": "ThisExpression", + "start": 9432, + "end": 9436, + "loc": { + "start": { + "line": 256, + "column": 15 + }, + "end": { + "line": 256, + "column": 19 + } + } + }, + "property": { + "type": "Identifier", + "start": 9437, + "end": 9448, + "loc": { + "start": { + "line": 256, + "column": 20 + }, + "end": { + "line": 256, + "column": 31 + }, + "identifierName": "_pbrEnabled" + }, + "name": "_pbrEnabled" + }, + "computed": false + } + } + ], + "directives": [], + "trailingComments": null + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Gets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n ", + "start": 9228, + "end": 9393, + "loc": { + "start": { + "line": 250, + "column": 4 + }, + "end": { + "line": 254, + "column": 7 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Sets whether to enable scalable ambient occlusion (SAO) when the camera stops moving.\n *\n * @return {Boolean} Whether SAO will be enabled.\n ", + "start": 9460, + "end": 9625, + "loc": { + "start": { + "line": 259, + "column": 4 + }, + "end": { + "line": 263, + "column": 7 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 9630, + "end": 9703, + "loc": { + "start": { + "line": 264, + "column": 4 + }, + "end": { + "line": 266, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9634, + "end": 9644, + "loc": { + "start": { + "line": 264, + "column": 8 + }, + "end": { + "line": 264, + "column": 18 + }, + "identifierName": "saoEnabled" + }, + "name": "saoEnabled" + }, + "kind": "set", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9645, + "end": 9655, + "loc": { + "start": { + "line": 264, + "column": 19 + }, + "end": { + "line": 264, + "column": 29 + }, + "identifierName": "saoEnabled" + }, + "name": "saoEnabled" + } + ], + "body": { + "type": "BlockStatement", + "start": 9657, + "end": 9703, + "loc": { + "start": { + "line": 264, + "column": 31 + }, + "end": { + "line": 266, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 7318, - "end": 7337, + "start": 9667, + "end": 9697, "loc": { "start": { - "line": 229, + "line": 265, "column": 8 }, "end": { - "line": 229, - "column": 27 + "line": 265, + "column": 38 } }, "expression": { - "type": "CallExpression", - "start": 7318, - "end": 7336, + "type": "AssignmentExpression", + "start": 9667, + "end": 9696, "loc": { "start": { - "line": 229, + "line": 265, "column": 8 }, "end": { - "line": 229, - "column": 26 + "line": 265, + "column": 37 } }, - "callee": { + "operator": "=", + "left": { "type": "MemberExpression", - "start": 7318, - "end": 7334, + "start": 9667, + "end": 9683, "loc": { "start": { - "line": 229, + "line": 265, "column": 8 }, "end": { - "line": 229, + "line": 265, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 7318, - "end": 7322, + "start": 9667, + "end": 9671, "loc": { "start": { - "line": 229, + "line": 265, "column": 8 }, "end": { - "line": 229, + "line": 265, "column": 12 } } }, "property": { "type": "Identifier", - "start": 7323, - "end": 7334, + "start": 9672, + "end": 9683, "loc": { "start": { - "line": 229, + "line": 265, "column": 13 }, "end": { - "line": 229, + "line": 265, "column": 24 }, - "identifierName": "_cancelFade" + "identifierName": "_saoEnabled" }, - "name": "_cancelFade" + "name": "_saoEnabled" }, "computed": false }, - "arguments": [] + "right": { + "type": "Identifier", + "start": 9686, + "end": 9696, + "loc": { + "start": { + "line": 265, + "column": 27 + }, + "end": { + "line": 265, + "column": 37 + }, + "identifierName": "saoEnabled" + }, + "name": "saoEnabled" + } + } + } + ], + "directives": [], + "trailingComments": null + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Sets whether to enable scalable ambient occlusion (SAO) when the camera stops moving.\n *\n * @return {Boolean} Whether SAO will be enabled.\n ", + "start": 9460, + "end": 9625, + "loc": { + "start": { + "line": 259, + "column": 4 + }, + "end": { + "line": 263, + "column": 7 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Gets whether the FastNavPlugin enables SAO when switching to quality rendering.\n *\n * @return {Boolean} Whether SAO will be enabled.\n ", + "start": 9709, + "end": 9868, + "loc": { + "start": { + "line": 268, + "column": 4 + }, + "end": { + "line": 272, + "column": 7 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 9873, + "end": 9929, + "loc": { + "start": { + "line": 273, + "column": 4 + }, + "end": { + "line": 275, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9877, + "end": 9887, + "loc": { + "start": { + "line": 273, + "column": 8 + }, + "end": { + "line": 273, + "column": 18 + }, + "identifierName": "saoEnabled" + }, + "name": "saoEnabled" + }, + "kind": "get", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 9890, + "end": 9929, + "loc": { + "start": { + "line": 273, + "column": 21 + }, + "end": { + "line": 275, + "column": 5 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9900, + "end": 9923, + "loc": { + "start": { + "line": 274, + "column": 8 + }, + "end": { + "line": 274, + "column": 31 + } + }, + "argument": { + "type": "MemberExpression", + "start": 9907, + "end": 9923, + "loc": { + "start": { + "line": 274, + "column": 15 + }, + "end": { + "line": 274, + "column": 31 + } + }, + "object": { + "type": "ThisExpression", + "start": 9907, + "end": 9911, + "loc": { + "start": { + "line": 274, + "column": 15 + }, + "end": { + "line": 274, + "column": 19 + } + } + }, + "property": { + "type": "Identifier", + "start": 9912, + "end": 9923, + "loc": { + "start": { + "line": 274, + "column": 20 + }, + "end": { + "line": 274, + "column": 31 + }, + "identifierName": "_saoEnabled" + }, + "name": "_saoEnabled" + }, + "computed": false + } + } + ], + "directives": [], + "trailingComments": null + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Gets whether the FastNavPlugin enables SAO when switching to quality rendering.\n *\n * @return {Boolean} Whether SAO will be enabled.\n ", + "start": 9709, + "end": 9868, + "loc": { + "start": { + "line": 268, + "column": 4 + }, + "end": { + "line": 272, + "column": 7 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Sets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n ", + "start": 9935, + "end": 10093, + "loc": { + "start": { + "line": 277, + "column": 4 + }, + "end": { + "line": 281, + "column": 7 } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 10098, + "end": 10179, + "loc": { + "start": { + "line": 282, + "column": 4 + }, + "end": { + "line": 284, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 10102, + "end": 10114, + "loc": { + "start": { + "line": 282, + "column": 8 + }, + "end": { + "line": 282, + "column": 20 + }, + "identifierName": "edgesEnabled" + }, + "name": "edgesEnabled" + }, + "kind": "set", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 10115, + "end": 10127, + "loc": { + "start": { + "line": 282, + "column": 21 + }, + "end": { + "line": 282, + "column": 33 + }, + "identifierName": "edgesEnabled" + }, + "name": "edgesEnabled" + } + ], + "body": { + "type": "BlockStatement", + "start": 10129, + "end": 10179, + "loc": { + "start": { + "line": 282, + "column": 35 }, + "end": { + "line": 284, + "column": 5 + } + }, + "body": [ { "type": "ExpressionStatement", - "start": 7346, - "end": 7397, + "start": 10139, + "end": 10173, "loc": { "start": { - "line": 230, + "line": 283, "column": 8 }, "end": { - "line": 230, - "column": 59 + "line": 283, + "column": 42 } }, "expression": { - "type": "CallExpression", - "start": 7346, - "end": 7396, + "type": "AssignmentExpression", + "start": 10139, + "end": 10172, "loc": { "start": { - "line": 230, + "line": 283, "column": 8 }, "end": { - "line": 230, - "column": 58 + "line": 283, + "column": 41 } }, - "callee": { + "operator": "=", + "left": { "type": "MemberExpression", - "start": 7346, - "end": 7374, + "start": 10139, + "end": 10157, "loc": { "start": { - "line": 230, + "line": 283, "column": 8 }, "end": { - "line": 230, - "column": 36 + "line": 283, + "column": 26 } }, "object": { - "type": "MemberExpression", - "start": 7346, - "end": 7370, + "type": "ThisExpression", + "start": 10139, + "end": 10143, "loc": { "start": { - "line": 230, + "line": 283, "column": 8 }, "end": { - "line": 230, - "column": 32 + "line": 283, + "column": 12 } - }, - "object": { - "type": "MemberExpression", - "start": 7346, - "end": 7363, - "loc": { - "start": { - "line": 230, - "column": 8 - }, - "end": { - "line": 230, - "column": 25 - } - }, - "object": { - "type": "MemberExpression", - "start": 7346, - "end": 7357, - "loc": { - "start": { - "line": 230, - "column": 8 - }, - "end": { - "line": 230, - "column": 19 - } - }, - "object": { - "type": "ThisExpression", - "start": 7346, - "end": 7350, - "loc": { - "start": { - "line": 230, - "column": 8 - }, - "end": { - "line": 230, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 7351, - "end": 7357, - "loc": { - "start": { - "line": 230, - "column": 13 - }, - "end": { - "line": 230, - "column": 19 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 7358, - "end": 7363, - "loc": { - "start": { - "line": 230, - "column": 20 - }, - "end": { - "line": 230, - "column": 25 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 7364, - "end": 7370, - "loc": { - "start": { - "line": 230, - "column": 26 - }, - "end": { - "line": 230, - "column": 32 - }, - "identifierName": "camera" - }, - "name": "camera" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 7371, - "end": 7374, - "loc": { - "start": { - "line": 230, - "column": 33 + } + }, + "property": { + "type": "Identifier", + "start": 10144, + "end": 10157, + "loc": { + "start": { + "line": 283, + "column": 13 }, "end": { - "line": 230, - "column": 36 + "line": 283, + "column": 26 }, - "identifierName": "off" + "identifierName": "_edgesEnabled" }, - "name": "off" + "name": "_edgesEnabled" }, "computed": false }, - "arguments": [ - { - "type": "MemberExpression", - "start": 7375, - "end": 7395, - "loc": { - "start": { - "line": 230, - "column": 37 - }, - "end": { - "line": 230, - "column": 57 - } - }, - "object": { - "type": "ThisExpression", - "start": 7375, - "end": 7379, - "loc": { - "start": { - "line": 230, - "column": 37 - }, - "end": { - "line": 230, - "column": 41 - } - } + "right": { + "type": "Identifier", + "start": 10160, + "end": 10172, + "loc": { + "start": { + "line": 283, + "column": 29 }, - "property": { - "type": "Identifier", - "start": 7380, - "end": 7395, - "loc": { - "start": { - "line": 230, - "column": 42 - }, - "end": { - "line": 230, - "column": 57 - }, - "identifierName": "_onCameraMatrix" - }, - "name": "_onCameraMatrix" + "end": { + "line": 283, + "column": 41 }, - "computed": false - } - ] + "identifierName": "edgesEnabled" + }, + "name": "edgesEnabled" + } + } + } + ], + "directives": [], + "trailingComments": null + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Sets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n ", + "start": 9935, + "end": 10093, + "loc": { + "start": { + "line": 277, + "column": 4 + }, + "end": { + "line": 281, + "column": 7 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Gets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n ", + "start": 10185, + "end": 10343, + "loc": { + "start": { + "line": 286, + "column": 4 + }, + "end": { + "line": 290, + "column": 7 } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 10348, + "end": 10408, + "loc": { + "start": { + "line": 291, + "column": 4 + }, + "end": { + "line": 293, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 10352, + "end": 10364, + "loc": { + "start": { + "line": 291, + "column": 8 + }, + "end": { + "line": 291, + "column": 20 + }, + "identifierName": "edgesEnabled" + }, + "name": "edgesEnabled" + }, + "kind": "get", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 10367, + "end": 10408, + "loc": { + "start": { + "line": 291, + "column": 23 }, + "end": { + "line": 293, + "column": 5 + } + }, + "body": [ { - "type": "ExpressionStatement", - "start": 7406, - "end": 7447, + "type": "ReturnStatement", + "start": 10377, + "end": 10402, "loc": { "start": { - "line": 231, + "line": 292, "column": 8 }, "end": { - "line": 231, - "column": 49 + "line": 292, + "column": 33 } }, - "expression": { - "type": "CallExpression", - "start": 7406, - "end": 7446, + "argument": { + "type": "MemberExpression", + "start": 10384, + "end": 10402, "loc": { "start": { - "line": 231, - "column": 8 + "line": 292, + "column": 15 }, "end": { - "line": 231, - "column": 48 + "line": 292, + "column": 33 } }, - "callee": { - "type": "MemberExpression", - "start": 7406, - "end": 7427, + "object": { + "type": "ThisExpression", + "start": 10384, + "end": 10388, "loc": { "start": { - "line": 231, - "column": 8 + "line": 292, + "column": 15 }, "end": { - "line": 231, - "column": 29 + "line": 292, + "column": 19 } - }, - "object": { - "type": "MemberExpression", - "start": 7406, - "end": 7423, - "loc": { - "start": { - "line": 231, - "column": 8 - }, - "end": { - "line": 231, - "column": 25 - } - }, - "object": { - "type": "MemberExpression", - "start": 7406, - "end": 7417, - "loc": { - "start": { - "line": 231, - "column": 8 - }, - "end": { - "line": 231, - "column": 19 - } - }, - "object": { - "type": "ThisExpression", - "start": 7406, - "end": 7410, - "loc": { - "start": { - "line": 231, - "column": 8 - }, - "end": { - "line": 231, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 7411, - "end": 7417, - "loc": { - "start": { - "line": 231, - "column": 13 - }, - "end": { - "line": 231, - "column": 19 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 7418, - "end": 7423, - "loc": { - "start": { - "line": 231, - "column": 20 - }, - "end": { - "line": 231, - "column": 25 - }, - "identifierName": "scene" - }, - "name": "scene" + } + }, + "property": { + "type": "Identifier", + "start": 10389, + "end": 10402, + "loc": { + "start": { + "line": 292, + "column": 20 }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 7424, - "end": 7427, - "loc": { - "start": { - "line": 231, - "column": 26 - }, - "end": { - "line": 231, - "column": 29 - }, - "identifierName": "off" + "end": { + "line": 292, + "column": 33 }, - "name": "off" + "identifierName": "_edgesEnabled" }, - "computed": false + "name": "_edgesEnabled" }, - "arguments": [ - { - "type": "MemberExpression", - "start": 7428, - "end": 7445, - "loc": { - "start": { - "line": 231, - "column": 30 - }, - "end": { - "line": 231, - "column": 47 - } - }, - "object": { - "type": "ThisExpression", - "start": 7428, - "end": 7432, - "loc": { - "start": { - "line": 231, - "column": 30 - }, - "end": { - "line": 231, - "column": 34 - } - } - }, - "property": { - "type": "Identifier", - "start": 7433, - "end": 7445, - "loc": { - "start": { - "line": 231, - "column": 35 - }, - "end": { - "line": 231, - "column": 47 - }, - "identifierName": "_onSceneTick" - }, - "name": "_onSceneTick" - }, - "computed": false - } - ] + "computed": false + } + } + ], + "directives": [], + "trailingComments": null + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Gets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n ", + "start": 10185, + "end": 10343, + "loc": { + "start": { + "line": 286, + "column": 4 + }, + "end": { + "line": 290, + "column": 7 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n * @private\n ", + "start": 10414, + "end": 10441, + "loc": { + "start": { + "line": 295, + "column": 4 + }, + "end": { + "line": 297, + "column": 7 } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 10446, + "end": 10590, + "loc": { + "start": { + "line": 298, + "column": 4 + }, + "end": { + "line": 304, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 10446, + "end": 10450, + "loc": { + "start": { + "line": 298, + "column": 4 + }, + "end": { + "line": 298, + "column": 8 + }, + "identifierName": "send" + }, + "name": "send", + "leadingComments": null + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 10451, + "end": 10455, + "loc": { + "start": { + "line": 298, + "column": 9 + }, + "end": { + "line": 298, + "column": 13 + }, + "identifierName": "name" + }, + "name": "name" + }, + { + "type": "Identifier", + "start": 10457, + "end": 10462, + "loc": { + "start": { + "line": 298, + "column": 15 + }, + "end": { + "line": 298, + "column": 20 + }, + "identifierName": "value" + }, + "name": "value" + } + ], + "body": { + "type": "BlockStatement", + "start": 10464, + "end": 10590, + "loc": { + "start": { + "line": 298, + "column": 22 }, + "end": { + "line": 304, + "column": 5 + } + }, + "body": [ { - "type": "ExpressionStatement", - "start": 7456, - "end": 7509, + "type": "SwitchStatement", + "start": 10474, + "end": 10584, "loc": { "start": { - "line": 232, + "line": 299, "column": 8 }, "end": { - "line": 232, - "column": 61 + "line": 303, + "column": 9 } }, - "expression": { - "type": "CallExpression", - "start": 7456, - "end": 7508, + "discriminant": { + "type": "Identifier", + "start": 10482, + "end": 10486, "loc": { "start": { - "line": 232, - "column": 8 + "line": 299, + "column": 16 }, "end": { - "line": 232, - "column": 60 - } + "line": 299, + "column": 20 + }, + "identifierName": "name" }, - "callee": { - "type": "MemberExpression", - "start": 7456, - "end": 7477, + "name": "name" + }, + "cases": [ + { + "type": "SwitchCase", + "start": 10502, + "end": 10574, "loc": { "start": { - "line": 232, - "column": 8 + "line": 300, + "column": 12 }, "end": { - "line": 232, - "column": 29 + "line": 302, + "column": 22 } }, - "object": { - "type": "MemberExpression", - "start": 7456, - "end": 7473, - "loc": { - "start": { - "line": 232, - "column": 8 - }, - "end": { - "line": 232, - "column": 25 - } - }, - "object": { - "type": "MemberExpression", - "start": 7456, - "end": 7467, + "consequent": [ + { + "type": "ExpressionStatement", + "start": 10532, + "end": 10551, "loc": { "start": { - "line": 232, - "column": 8 + "line": 301, + "column": 16 }, "end": { - "line": 232, - "column": 19 + "line": 301, + "column": 35 } }, - "object": { - "type": "ThisExpression", - "start": 7456, - "end": 7460, + "expression": { + "type": "CallExpression", + "start": 10532, + "end": 10550, "loc": { "start": { - "line": 232, - "column": 8 + "line": 301, + "column": 16 }, "end": { - "line": 232, - "column": 12 + "line": 301, + "column": 34 } - } - }, - "property": { - "type": "Identifier", - "start": 7461, - "end": 7467, - "loc": { - "start": { - "line": 232, - "column": 13 + }, + "callee": { + "type": "MemberExpression", + "start": 10532, + "end": 10548, + "loc": { + "start": { + "line": 301, + "column": 16 + }, + "end": { + "line": 301, + "column": 32 + } }, - "end": { - "line": 232, - "column": 19 + "object": { + "type": "ThisExpression", + "start": 10532, + "end": 10536, + "loc": { + "start": { + "line": 301, + "column": 16 + }, + "end": { + "line": 301, + "column": 20 + } + } }, - "identifierName": "viewer" + "property": { + "type": "Identifier", + "start": 10537, + "end": 10548, + "loc": { + "start": { + "line": 301, + "column": 21 + }, + "end": { + "line": 301, + "column": 32 + }, + "identifierName": "_cancelFade" + }, + "name": "_cancelFade" + }, + "computed": false }, - "name": "viewer" - }, - "computed": false + "arguments": [] + } }, - "property": { - "type": "Identifier", - "start": 7468, - "end": 7473, + { + "type": "BreakStatement", + "start": 10568, + "end": 10574, "loc": { "start": { - "line": 232, - "column": 20 + "line": 302, + "column": 16 }, "end": { - "line": 232, - "column": 25 - }, - "identifierName": "scene" + "line": 302, + "column": 22 + } }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 7474, - "end": 7477, + "label": null + } + ], + "test": { + "type": "StringLiteral", + "start": 10507, + "end": 10514, "loc": { "start": { - "line": 232, - "column": 26 + "line": 300, + "column": 17 }, "end": { - "line": 232, - "column": 29 - }, - "identifierName": "off" + "line": 300, + "column": 24 + } }, - "name": "off" + "extra": { + "rawValue": "clear", + "raw": "\"clear\"" + }, + "value": "clear" + } + } + ] + } + ], + "directives": [], + "trailingComments": null + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n * @private\n ", + "start": 10414, + "end": 10441, + "loc": { + "start": { + "line": 295, + "column": 4 + }, + "end": { + "line": 297, + "column": 7 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Destroys this plugin.\n ", + "start": 10596, + "end": 10636, + "loc": { + "start": { + "line": 306, + "column": 4 + }, + "end": { + "line": 308, + "column": 7 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 10641, + "end": 11186, + "loc": { + "start": { + "line": 309, + "column": 4 + }, + "end": { + "line": 322, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 10641, + "end": 10648, + "loc": { + "start": { + "line": 309, + "column": 4 + }, + "end": { + "line": 309, + "column": 11 + }, + "identifierName": "destroy" + }, + "name": "destroy", + "leadingComments": null + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 10651, + "end": 11186, + "loc": { + "start": { + "line": 309, + "column": 14 + }, + "end": { + "line": 322, + "column": 5 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 10661, + "end": 10680, + "loc": { + "start": { + "line": 310, + "column": 8 + }, + "end": { + "line": 310, + "column": 27 + } + }, + "expression": { + "type": "CallExpression", + "start": 10661, + "end": 10679, + "loc": { + "start": { + "line": 310, + "column": 8 }, - "computed": false + "end": { + "line": 310, + "column": 26 + } }, - "arguments": [ - { - "type": "MemberExpression", - "start": 7478, - "end": 7507, + "callee": { + "type": "MemberExpression", + "start": 10661, + "end": 10677, + "loc": { + "start": { + "line": 310, + "column": 8 + }, + "end": { + "line": 310, + "column": 24 + } + }, + "object": { + "type": "ThisExpression", + "start": 10661, + "end": 10665, "loc": { "start": { - "line": 232, - "column": 30 + "line": 310, + "column": 8 }, "end": { - "line": 232, - "column": 59 - } - }, - "object": { - "type": "ThisExpression", - "start": 7478, - "end": 7482, - "loc": { - "start": { - "line": 232, - "column": 30 - }, - "end": { - "line": 232, - "column": 34 - } + "line": 310, + "column": 12 } - }, - "property": { - "type": "Identifier", - "start": 7483, - "end": 7507, - "loc": { - "start": { - "line": 232, - "column": 35 - }, - "end": { - "line": 232, - "column": 59 - }, - "identifierName": "_onSceneObjectVisibility" + } + }, + "property": { + "type": "Identifier", + "start": 10666, + "end": 10677, + "loc": { + "start": { + "line": 310, + "column": 13 }, - "name": "_onSceneObjectVisibility" + "end": { + "line": 310, + "column": 24 + }, + "identifierName": "_cancelFade" }, - "computed": false - } - ] + "name": "_cancelFade" + }, + "computed": false + }, + "arguments": [] } }, { "type": "ExpressionStatement", - "start": 7518, - "end": 7570, + "start": 10689, + "end": 10740, "loc": { "start": { - "line": 233, + "line": 311, "column": 8 }, "end": { - "line": 233, - "column": 60 + "line": 311, + "column": 59 } }, "expression": { "type": "CallExpression", - "start": 7518, - "end": 7569, + "start": 10689, + "end": 10739, "loc": { "start": { - "line": 233, + "line": 311, "column": 8 }, "end": { - "line": 233, - "column": 59 + "line": 311, + "column": 58 } }, "callee": { "type": "MemberExpression", - "start": 7518, - "end": 7545, + "start": 10689, + "end": 10717, "loc": { "start": { - "line": 233, + "line": 311, "column": 8 }, "end": { - "line": 233, - "column": 35 + "line": 311, + "column": 36 } }, "object": { "type": "MemberExpression", - "start": 7518, - "end": 7541, + "start": 10689, + "end": 10713, "loc": { "start": { - "line": 233, + "line": 311, "column": 8 }, "end": { - "line": 233, - "column": 31 + "line": 311, + "column": 32 } }, "object": { "type": "MemberExpression", - "start": 7518, - "end": 7535, + "start": 10689, + "end": 10706, "loc": { "start": { - "line": 233, + "line": 311, "column": 8 }, "end": { - "line": 233, + "line": 311, "column": 25 } }, "object": { "type": "MemberExpression", - "start": 7518, - "end": 7529, + "start": 10689, + "end": 10700, "loc": { "start": { - "line": 233, + "line": 311, "column": 8 }, "end": { - "line": 233, + "line": 311, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 7518, - "end": 7522, + "start": 10689, + "end": 10693, "loc": { "start": { - "line": 233, + "line": 311, "column": 8 }, "end": { - "line": 233, + "line": 311, "column": 12 } } }, "property": { "type": "Identifier", - "start": 7523, - "end": 7529, + "start": 10694, + "end": 10700, "loc": { "start": { - "line": 233, + "line": 311, "column": 13 }, "end": { - "line": 233, + "line": 311, "column": 19 }, "identifierName": "viewer" @@ -16530,15 +19152,15 @@ }, "property": { "type": "Identifier", - "start": 7530, - "end": 7535, + "start": 10701, + "end": 10706, "loc": { "start": { - "line": 233, + "line": 311, "column": 20 }, "end": { - "line": 233, + "line": 311, "column": 25 }, "identifierName": "scene" @@ -16549,35 +19171,35 @@ }, "property": { "type": "Identifier", - "start": 7536, - "end": 7541, + "start": 10707, + "end": 10713, "loc": { "start": { - "line": 233, + "line": 311, "column": 26 }, "end": { - "line": 233, - "column": 31 + "line": 311, + "column": 32 }, - "identifierName": "input" + "identifierName": "camera" }, - "name": "input" + "name": "camera" }, "computed": false }, "property": { "type": "Identifier", - "start": 7542, - "end": 7545, + "start": 10714, + "end": 10717, "loc": { "start": { - "line": 233, - "column": 32 + "line": 311, + "column": 33 }, "end": { - "line": 233, - "column": 35 + "line": 311, + "column": 36 }, "identifierName": "off" }, @@ -16588,49 +19210,49 @@ "arguments": [ { "type": "MemberExpression", - "start": 7546, - "end": 7568, + "start": 10718, + "end": 10738, "loc": { "start": { - "line": 233, - "column": 36 + "line": 311, + "column": 37 }, "end": { - "line": 233, - "column": 58 + "line": 311, + "column": 57 } }, "object": { "type": "ThisExpression", - "start": 7546, - "end": 7550, + "start": 10718, + "end": 10722, "loc": { "start": { - "line": 233, - "column": 36 + "line": 311, + "column": 37 }, "end": { - "line": 233, - "column": 40 + "line": 311, + "column": 41 } } }, "property": { "type": "Identifier", - "start": 7551, - "end": 7568, + "start": 10723, + "end": 10738, "loc": { "start": { - "line": 233, - "column": 41 + "line": 311, + "column": 42 }, "end": { - "line": 233, - "column": 58 + "line": 311, + "column": 57 }, - "identifierName": "_onSceneMouseDown" + "identifierName": "_onCameraMatrix" }, - "name": "_onSceneMouseDown" + "name": "_onCameraMatrix" }, "computed": false } @@ -16639,172 +19261,139 @@ }, { "type": "ExpressionStatement", - "start": 7579, - "end": 7629, + "start": 10749, + "end": 10790, "loc": { "start": { - "line": 234, + "line": 312, "column": 8 }, "end": { - "line": 234, - "column": 58 + "line": 312, + "column": 49 } }, "expression": { "type": "CallExpression", - "start": 7579, - "end": 7628, + "start": 10749, + "end": 10789, "loc": { "start": { - "line": 234, + "line": 312, "column": 8 }, "end": { - "line": 234, - "column": 57 + "line": 312, + "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 7579, - "end": 7606, + "start": 10749, + "end": 10770, "loc": { "start": { - "line": 234, + "line": 312, "column": 8 }, "end": { - "line": 234, - "column": 35 + "line": 312, + "column": 29 } }, "object": { "type": "MemberExpression", - "start": 7579, - "end": 7602, + "start": 10749, + "end": 10766, "loc": { "start": { - "line": 234, + "line": 312, "column": 8 }, "end": { - "line": 234, - "column": 31 + "line": 312, + "column": 25 } }, "object": { "type": "MemberExpression", - "start": 7579, - "end": 7596, + "start": 10749, + "end": 10760, "loc": { "start": { - "line": 234, + "line": 312, "column": 8 }, "end": { - "line": 234, - "column": 25 + "line": 312, + "column": 19 } }, "object": { - "type": "MemberExpression", - "start": 7579, - "end": 7590, + "type": "ThisExpression", + "start": 10749, + "end": 10753, "loc": { "start": { - "line": 234, + "line": 312, "column": 8 }, "end": { - "line": 234, - "column": 19 - } - }, - "object": { - "type": "ThisExpression", - "start": 7579, - "end": 7583, - "loc": { - "start": { - "line": 234, - "column": 8 - }, - "end": { - "line": 234, - "column": 12 - } + "line": 312, + "column": 12 } - }, - "property": { - "type": "Identifier", - "start": 7584, - "end": 7590, - "loc": { - "start": { - "line": 234, - "column": 13 - }, - "end": { - "line": 234, - "column": 19 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "computed": false + } }, "property": { "type": "Identifier", - "start": 7591, - "end": 7596, + "start": 10754, + "end": 10760, "loc": { "start": { - "line": 234, - "column": 20 + "line": 312, + "column": 13 }, "end": { - "line": 234, - "column": 25 + "line": 312, + "column": 19 }, - "identifierName": "scene" + "identifierName": "viewer" }, - "name": "scene" + "name": "viewer" }, "computed": false }, "property": { "type": "Identifier", - "start": 7597, - "end": 7602, + "start": 10761, + "end": 10766, "loc": { "start": { - "line": 234, - "column": 26 + "line": 312, + "column": 20 }, "end": { - "line": 234, - "column": 31 + "line": 312, + "column": 25 }, - "identifierName": "input" + "identifierName": "scene" }, - "name": "input" + "name": "scene" }, "computed": false }, "property": { "type": "Identifier", - "start": 7603, - "end": 7606, + "start": 10767, + "end": 10770, "loc": { "start": { - "line": 234, - "column": 32 + "line": 312, + "column": 26 }, "end": { - "line": 234, - "column": 35 + "line": 312, + "column": 29 }, "identifierName": "off" }, @@ -16815,49 +19404,49 @@ "arguments": [ { "type": "MemberExpression", - "start": 7607, - "end": 7627, + "start": 10771, + "end": 10788, "loc": { "start": { - "line": 234, - "column": 36 + "line": 312, + "column": 30 }, "end": { - "line": 234, - "column": 56 + "line": 312, + "column": 47 } }, "object": { "type": "ThisExpression", - "start": 7607, - "end": 7611, + "start": 10771, + "end": 10775, "loc": { "start": { - "line": 234, - "column": 36 + "line": 312, + "column": 30 }, "end": { - "line": 234, - "column": 40 + "line": 312, + "column": 34 } } }, "property": { "type": "Identifier", - "start": 7612, - "end": 7627, + "start": 10776, + "end": 10788, "loc": { "start": { - "line": 234, - "column": 41 + "line": 312, + "column": 35 }, "end": { - "line": 234, - "column": 56 + "line": 312, + "column": 47 }, - "identifierName": "_onSceneMouseUp" + "identifierName": "_onSceneTick" }, - "name": "_onSceneMouseUp" + "name": "_onSceneTick" }, "computed": false } @@ -16866,172 +19455,139 @@ }, { "type": "ExpressionStatement", - "start": 7638, - "end": 7690, + "start": 10799, + "end": 10852, "loc": { "start": { - "line": 235, + "line": 313, "column": 8 }, "end": { - "line": 235, - "column": 60 + "line": 313, + "column": 61 } }, "expression": { "type": "CallExpression", - "start": 7638, - "end": 7689, + "start": 10799, + "end": 10851, "loc": { "start": { - "line": 235, + "line": 313, "column": 8 }, "end": { - "line": 235, - "column": 59 + "line": 313, + "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 7638, - "end": 7665, + "start": 10799, + "end": 10820, "loc": { "start": { - "line": 235, + "line": 313, "column": 8 }, "end": { - "line": 235, - "column": 35 + "line": 313, + "column": 29 } }, "object": { "type": "MemberExpression", - "start": 7638, - "end": 7661, + "start": 10799, + "end": 10816, "loc": { "start": { - "line": 235, + "line": 313, "column": 8 }, "end": { - "line": 235, - "column": 31 + "line": 313, + "column": 25 } }, "object": { "type": "MemberExpression", - "start": 7638, - "end": 7655, + "start": 10799, + "end": 10810, "loc": { "start": { - "line": 235, + "line": 313, "column": 8 }, "end": { - "line": 235, - "column": 25 + "line": 313, + "column": 19 } }, "object": { - "type": "MemberExpression", - "start": 7638, - "end": 7649, + "type": "ThisExpression", + "start": 10799, + "end": 10803, "loc": { "start": { - "line": 235, + "line": 313, "column": 8 }, "end": { - "line": 235, - "column": 19 - } - }, - "object": { - "type": "ThisExpression", - "start": 7638, - "end": 7642, - "loc": { - "start": { - "line": 235, - "column": 8 - }, - "end": { - "line": 235, - "column": 12 - } + "line": 313, + "column": 12 } - }, - "property": { - "type": "Identifier", - "start": 7643, - "end": 7649, - "loc": { - "start": { - "line": 235, - "column": 13 - }, - "end": { - "line": 235, - "column": 19 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "computed": false + } }, "property": { "type": "Identifier", - "start": 7650, - "end": 7655, + "start": 10804, + "end": 10810, "loc": { "start": { - "line": 235, - "column": 20 + "line": 313, + "column": 13 }, "end": { - "line": 235, - "column": 25 + "line": 313, + "column": 19 }, - "identifierName": "scene" + "identifierName": "viewer" }, - "name": "scene" + "name": "viewer" }, "computed": false }, "property": { "type": "Identifier", - "start": 7656, - "end": 7661, + "start": 10811, + "end": 10816, "loc": { "start": { - "line": 235, - "column": 26 + "line": 313, + "column": 20 }, "end": { - "line": 235, - "column": 31 + "line": 313, + "column": 25 }, - "identifierName": "input" + "identifierName": "scene" }, - "name": "input" + "name": "scene" }, "computed": false }, "property": { "type": "Identifier", - "start": 7662, - "end": 7665, + "start": 10817, + "end": 10820, "loc": { "start": { - "line": 235, - "column": 32 + "line": 313, + "column": 26 }, "end": { - "line": 235, - "column": 35 + "line": 313, + "column": 29 }, "identifierName": "off" }, @@ -17042,49 +19598,49 @@ "arguments": [ { "type": "MemberExpression", - "start": 7666, - "end": 7688, + "start": 10821, + "end": 10850, "loc": { "start": { - "line": 235, - "column": 36 + "line": 313, + "column": 30 }, "end": { - "line": 235, - "column": 58 + "line": 313, + "column": 59 } }, "object": { "type": "ThisExpression", - "start": 7666, - "end": 7670, + "start": 10821, + "end": 10825, "loc": { "start": { - "line": 235, - "column": 36 + "line": 313, + "column": 30 }, "end": { - "line": 235, - "column": 40 + "line": 313, + "column": 34 } } }, "property": { "type": "Identifier", - "start": 7671, - "end": 7688, + "start": 10826, + "end": 10850, "loc": { "start": { - "line": 235, - "column": 41 + "line": 313, + "column": 35 }, "end": { - "line": 235, - "column": 58 + "line": 313, + "column": 59 }, - "identifierName": "_onSceneMouseMove" + "identifierName": "_onSceneObjectVisibility" }, - "name": "_onSceneMouseMove" + "name": "_onSceneObjectVisibility" }, "computed": false } @@ -17093,271 +19649,452 @@ }, { "type": "ExpressionStatement", - "start": 7699, - "end": 7715, + "start": 10861, + "end": 10913, "loc": { "start": { - "line": 236, + "line": 314, "column": 8 }, "end": { - "line": 236, - "column": 24 + "line": 314, + "column": 60 } }, "expression": { "type": "CallExpression", - "start": 7699, - "end": 7714, + "start": 10861, + "end": 10912, "loc": { "start": { - "line": 236, + "line": 314, "column": 8 }, "end": { - "line": 236, - "column": 23 + "line": 314, + "column": 59 } }, "callee": { "type": "MemberExpression", - "start": 7699, - "end": 7712, + "start": 10861, + "end": 10888, "loc": { "start": { - "line": 236, + "line": 314, "column": 8 }, "end": { - "line": 236, - "column": 21 + "line": 314, + "column": 35 } }, "object": { - "type": "Super", - "start": 7699, - "end": 7704, + "type": "MemberExpression", + "start": 10861, + "end": 10884, "loc": { "start": { - "line": 236, + "line": 314, "column": 8 }, "end": { - "line": 236, - "column": 13 + "line": 314, + "column": 31 } - } + }, + "object": { + "type": "MemberExpression", + "start": 10861, + "end": 10878, + "loc": { + "start": { + "line": 314, + "column": 8 + }, + "end": { + "line": 314, + "column": 25 + } + }, + "object": { + "type": "MemberExpression", + "start": 10861, + "end": 10872, + "loc": { + "start": { + "line": 314, + "column": 8 + }, + "end": { + "line": 314, + "column": 19 + } + }, + "object": { + "type": "ThisExpression", + "start": 10861, + "end": 10865, + "loc": { + "start": { + "line": 314, + "column": 8 + }, + "end": { + "line": 314, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 10866, + "end": 10872, + "loc": { + "start": { + "line": 314, + "column": 13 + }, + "end": { + "line": 314, + "column": 19 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 10873, + "end": 10878, + "loc": { + "start": { + "line": 314, + "column": 20 + }, + "end": { + "line": 314, + "column": 25 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 10879, + "end": 10884, + "loc": { + "start": { + "line": 314, + "column": 26 + }, + "end": { + "line": 314, + "column": 31 + }, + "identifierName": "input" + }, + "name": "input" + }, + "computed": false }, "property": { "type": "Identifier", - "start": 7705, - "end": 7712, + "start": 10885, + "end": 10888, "loc": { "start": { - "line": 236, - "column": 14 + "line": 314, + "column": 32 }, "end": { - "line": 236, - "column": 21 + "line": 314, + "column": 35 }, - "identifierName": "destroy" + "identifierName": "off" }, - "name": "destroy" + "name": "off" }, "computed": false }, - "arguments": [] + "arguments": [ + { + "type": "MemberExpression", + "start": 10889, + "end": 10911, + "loc": { + "start": { + "line": 314, + "column": 36 + }, + "end": { + "line": 314, + "column": 58 + } + }, + "object": { + "type": "ThisExpression", + "start": 10889, + "end": 10893, + "loc": { + "start": { + "line": 314, + "column": 36 + }, + "end": { + "line": 314, + "column": 40 + } + } + }, + "property": { + "type": "Identifier", + "start": 10894, + "end": 10911, + "loc": { + "start": { + "line": 314, + "column": 41 + }, + "end": { + "line": 314, + "column": 58 + }, + "identifierName": "_onSceneMouseDown" + }, + "name": "_onSceneMouseDown" + }, + "computed": false + } + ] } }, { "type": "ExpressionStatement", - "start": 7724, - "end": 7768, + "start": 10922, + "end": 10972, "loc": { "start": { - "line": 237, + "line": 315, "column": 8 }, "end": { - "line": 237, - "column": 52 + "line": 315, + "column": 58 } }, "expression": { "type": "CallExpression", - "start": 7724, - "end": 7767, + "start": 10922, + "end": 10971, "loc": { "start": { - "line": 237, + "line": 315, "column": 8 }, "end": { - "line": 237, - "column": 51 + "line": 315, + "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 7724, - "end": 7756, + "start": 10922, + "end": 10949, "loc": { "start": { - "line": 237, + "line": 315, "column": 8 }, "end": { - "line": 237, - "column": 40 + "line": 315, + "column": 35 } }, "object": { "type": "MemberExpression", - "start": 7724, - "end": 7744, + "start": 10922, + "end": 10945, "loc": { "start": { - "line": 237, + "line": 315, "column": 8 }, "end": { - "line": 237, - "column": 28 + "line": 315, + "column": 31 } }, "object": { "type": "MemberExpression", - "start": 7724, - "end": 7733, + "start": 10922, + "end": 10939, "loc": { "start": { - "line": 237, + "line": 315, "column": 8 }, "end": { - "line": 237, - "column": 17 + "line": 315, + "column": 25 } }, "object": { - "type": "ThisExpression", - "start": 7724, - "end": 7728, + "type": "MemberExpression", + "start": 10922, + "end": 10933, "loc": { "start": { - "line": 237, + "line": 315, "column": 8 }, "end": { - "line": 237, - "column": 12 + "line": 315, + "column": 19 } - } + }, + "object": { + "type": "ThisExpression", + "start": 10922, + "end": 10926, + "loc": { + "start": { + "line": 315, + "column": 8 + }, + "end": { + "line": 315, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 10927, + "end": 10933, + "loc": { + "start": { + "line": 315, + "column": 13 + }, + "end": { + "line": 315, + "column": 19 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "computed": false }, "property": { "type": "Identifier", - "start": 7729, - "end": 7733, + "start": 10934, + "end": 10939, "loc": { "start": { - "line": 237, - "column": 13 + "line": 315, + "column": 20 }, "end": { - "line": 237, - "column": 17 + "line": 315, + "column": 25 }, - "identifierName": "_img" + "identifierName": "scene" }, - "name": "_img" + "name": "scene" }, "computed": false }, "property": { "type": "Identifier", - "start": 7734, - "end": 7744, + "start": 10940, + "end": 10945, "loc": { "start": { - "line": 237, - "column": 18 + "line": 315, + "column": 26 }, "end": { - "line": 237, - "column": 28 + "line": 315, + "column": 31 }, - "identifierName": "parentNode" + "identifierName": "input" }, - "name": "parentNode" + "name": "input" }, "computed": false }, "property": { "type": "Identifier", - "start": 7745, - "end": 7756, + "start": 10946, + "end": 10949, "loc": { "start": { - "line": 237, - "column": 29 + "line": 315, + "column": 32 }, "end": { - "line": 237, - "column": 40 + "line": 315, + "column": 35 }, - "identifierName": "removeChild" + "identifierName": "off" }, - "name": "removeChild" + "name": "off" }, "computed": false }, "arguments": [ { "type": "MemberExpression", - "start": 7757, - "end": 7766, + "start": 10950, + "end": 10970, "loc": { "start": { - "line": 237, - "column": 41 + "line": 315, + "column": 36 }, "end": { - "line": 237, - "column": 50 + "line": 315, + "column": 56 } }, "object": { "type": "ThisExpression", - "start": 7757, - "end": 7761, + "start": 10950, + "end": 10954, "loc": { "start": { - "line": 237, - "column": 41 + "line": 315, + "column": 36 }, "end": { - "line": 237, - "column": 45 + "line": 315, + "column": 40 } } }, "property": { "type": "Identifier", - "start": 7762, - "end": 7766, + "start": 10955, + "end": 10970, "loc": { "start": { - "line": 237, - "column": 46 + "line": 315, + "column": 41 }, "end": { - "line": 237, - "column": 50 + "line": 315, + "column": 56 }, - "identifierName": "_img" + "identifierName": "_onSceneMouseUp" }, - "name": "_img" + "name": "_onSceneMouseUp" }, "computed": false } @@ -17366,286 +20103,868 @@ }, { "type": "ExpressionStatement", - "start": 7777, - "end": 7794, + "start": 10981, + "end": 11033, "loc": { "start": { - "line": 238, + "line": 316, "column": 8 }, "end": { - "line": 238, - "column": 25 + "line": 316, + "column": 60 } }, "expression": { - "type": "AssignmentExpression", - "start": 7777, - "end": 7793, + "type": "CallExpression", + "start": 10981, + "end": 11032, "loc": { "start": { - "line": 238, + "line": 316, "column": 8 }, "end": { - "line": 238, - "column": 24 + "line": 316, + "column": 59 } }, - "operator": "=", - "left": { + "callee": { "type": "MemberExpression", - "start": 7777, - "end": 7786, + "start": 10981, + "end": 11008, "loc": { "start": { - "line": 238, + "line": 316, "column": 8 }, "end": { - "line": 238, - "column": 17 + "line": 316, + "column": 35 } }, "object": { - "type": "ThisExpression", - "start": 7777, - "end": 7781, + "type": "MemberExpression", + "start": 10981, + "end": 11004, "loc": { "start": { - "line": 238, + "line": 316, "column": 8 }, "end": { - "line": 238, - "column": 12 + "line": 316, + "column": 31 } - } + }, + "object": { + "type": "MemberExpression", + "start": 10981, + "end": 10998, + "loc": { + "start": { + "line": 316, + "column": 8 + }, + "end": { + "line": 316, + "column": 25 + } + }, + "object": { + "type": "MemberExpression", + "start": 10981, + "end": 10992, + "loc": { + "start": { + "line": 316, + "column": 8 + }, + "end": { + "line": 316, + "column": 19 + } + }, + "object": { + "type": "ThisExpression", + "start": 10981, + "end": 10985, + "loc": { + "start": { + "line": 316, + "column": 8 + }, + "end": { + "line": 316, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 10986, + "end": 10992, + "loc": { + "start": { + "line": 316, + "column": 13 + }, + "end": { + "line": 316, + "column": 19 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 10993, + "end": 10998, + "loc": { + "start": { + "line": 316, + "column": 20 + }, + "end": { + "line": 316, + "column": 25 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 10999, + "end": 11004, + "loc": { + "start": { + "line": 316, + "column": 26 + }, + "end": { + "line": 316, + "column": 31 + }, + "identifierName": "input" + }, + "name": "input" + }, + "computed": false }, "property": { "type": "Identifier", - "start": 7782, - "end": 7786, + "start": 11005, + "end": 11008, "loc": { "start": { - "line": 238, - "column": 13 + "line": 316, + "column": 32 }, "end": { - "line": 238, - "column": 17 + "line": 316, + "column": 35 }, - "identifierName": "_img" + "identifierName": "off" }, - "name": "_img" + "name": "off" }, "computed": false }, - "right": { - "type": "NullLiteral", - "start": 7789, - "end": 7793, - "loc": { - "start": { - "line": 238, - "column": 20 + "arguments": [ + { + "type": "MemberExpression", + "start": 11009, + "end": 11031, + "loc": { + "start": { + "line": 316, + "column": 36 + }, + "end": { + "line": 316, + "column": 58 + } }, - "end": { - "line": 238, - "column": 24 - } + "object": { + "type": "ThisExpression", + "start": 11009, + "end": 11013, + "loc": { + "start": { + "line": 316, + "column": 36 + }, + "end": { + "line": 316, + "column": 40 + } + } + }, + "property": { + "type": "Identifier", + "start": 11014, + "end": 11031, + "loc": { + "start": { + "line": 316, + "column": 41 + }, + "end": { + "line": 316, + "column": 58 + }, + "identifierName": "_onSceneMouseMove" + }, + "name": "_onSceneMouseMove" + }, + "computed": false } - } - } - } - ], - "directives": [] - }, - "leadingComments": [ - { - "type": "CommentBlock", - "value": "*\n * Destroys this plugin.\n ", - "start": 7253, - "end": 7293, - "loc": { - "start": { - "line": 225, - "column": 4 - }, - "end": { - "line": 227, - "column": 7 - } - } - } - ] - } - ] - }, - "leadingComments": [], - "name": "_", - "trailingComments": [] - }, - { - "type": "FunctionDeclaration", - "start": 7804, - "end": 8079, - "loc": { - "start": { - "line": 242, - "column": 0 - }, - "end": { - "line": 254, - "column": 1 - } - }, - "id": { - "type": "Identifier", - "start": 7813, - "end": 7829, - "loc": { - "start": { - "line": 242, - "column": 9 - }, - "end": { - "line": 242, - "column": 25 - }, - "identifierName": "cumulativeOffset" - }, - "name": "cumulativeOffset" - }, - "generator": false, - "expression": false, - "async": false, - "params": [ - { - "type": "Identifier", - "start": 7830, - "end": 7837, - "loc": { - "start": { - "line": 242, - "column": 26 - }, - "end": { - "line": 242, - "column": 33 - }, - "identifierName": "element" - }, - "name": "element" - } - ], - "body": { - "type": "BlockStatement", - "start": 7839, - "end": 8079, - "loc": { - "start": { - "line": 242, - "column": 35 - }, - "end": { - "line": 254, - "column": 1 - } - }, - "body": [ - { - "type": "VariableDeclaration", - "start": 7845, - "end": 7867, - "loc": { - "start": { - "line": 243, - "column": 4 - }, - "end": { - "line": 243, - "column": 26 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 7849, - "end": 7856, - "loc": { - "start": { - "line": 243, - "column": 8 - }, - "end": { - "line": 243, - "column": 15 + ] } }, - "id": { - "type": "Identifier", - "start": 7849, - "end": 7852, + { + "type": "ExpressionStatement", + "start": 11042, + "end": 11058, "loc": { "start": { - "line": 243, + "line": 317, "column": 8 }, "end": { - "line": 243, - "column": 11 - }, - "identifierName": "top" - }, - "name": "top" - }, - "init": { - "type": "NumericLiteral", - "start": 7855, - "end": 7856, - "loc": { - "start": { - "line": 243, - "column": 14 - }, - "end": { - "line": 243, - "column": 15 + "line": 317, + "column": 24 } }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - } - }, - { - "type": "VariableDeclarator", - "start": 7858, - "end": 7866, - "loc": { + "expression": { + "type": "CallExpression", + "start": 11042, + "end": 11057, + "loc": { + "start": { + "line": 317, + "column": 8 + }, + "end": { + "line": 317, + "column": 23 + } + }, + "callee": { + "type": "MemberExpression", + "start": 11042, + "end": 11055, + "loc": { + "start": { + "line": 317, + "column": 8 + }, + "end": { + "line": 317, + "column": 21 + } + }, + "object": { + "type": "Super", + "start": 11042, + "end": 11047, + "loc": { + "start": { + "line": 317, + "column": 8 + }, + "end": { + "line": 317, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 11048, + "end": 11055, + "loc": { + "start": { + "line": 317, + "column": 14 + }, + "end": { + "line": 317, + "column": 21 + }, + "identifierName": "destroy" + }, + "name": "destroy" + }, + "computed": false + }, + "arguments": [] + } + }, + { + "type": "IfStatement", + "start": 11067, + "end": 11180, + "loc": { + "start": { + "line": 318, + "column": 8 + }, + "end": { + "line": 321, + "column": 9 + } + }, + "test": { + "type": "MemberExpression", + "start": 11071, + "end": 11080, + "loc": { + "start": { + "line": 318, + "column": 12 + }, + "end": { + "line": 318, + "column": 21 + } + }, + "object": { + "type": "ThisExpression", + "start": 11071, + "end": 11075, + "loc": { + "start": { + "line": 318, + "column": 12 + }, + "end": { + "line": 318, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 11076, + "end": 11080, + "loc": { + "start": { + "line": 318, + "column": 17 + }, + "end": { + "line": 318, + "column": 21 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "consequent": { + "type": "BlockStatement", + "start": 11082, + "end": 11180, + "loc": { + "start": { + "line": 318, + "column": 23 + }, + "end": { + "line": 321, + "column": 9 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 11096, + "end": 11140, + "loc": { + "start": { + "line": 319, + "column": 12 + }, + "end": { + "line": 319, + "column": 56 + } + }, + "expression": { + "type": "CallExpression", + "start": 11096, + "end": 11139, + "loc": { + "start": { + "line": 319, + "column": 12 + }, + "end": { + "line": 319, + "column": 55 + } + }, + "callee": { + "type": "MemberExpression", + "start": 11096, + "end": 11128, + "loc": { + "start": { + "line": 319, + "column": 12 + }, + "end": { + "line": 319, + "column": 44 + } + }, + "object": { + "type": "MemberExpression", + "start": 11096, + "end": 11116, + "loc": { + "start": { + "line": 319, + "column": 12 + }, + "end": { + "line": 319, + "column": 32 + } + }, + "object": { + "type": "MemberExpression", + "start": 11096, + "end": 11105, + "loc": { + "start": { + "line": 319, + "column": 12 + }, + "end": { + "line": 319, + "column": 21 + } + }, + "object": { + "type": "ThisExpression", + "start": 11096, + "end": 11100, + "loc": { + "start": { + "line": 319, + "column": 12 + }, + "end": { + "line": 319, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 11101, + "end": 11105, + "loc": { + "start": { + "line": 319, + "column": 17 + }, + "end": { + "line": 319, + "column": 21 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 11106, + "end": 11116, + "loc": { + "start": { + "line": 319, + "column": 22 + }, + "end": { + "line": 319, + "column": 32 + }, + "identifierName": "parentNode" + }, + "name": "parentNode" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 11117, + "end": 11128, + "loc": { + "start": { + "line": 319, + "column": 33 + }, + "end": { + "line": 319, + "column": 44 + }, + "identifierName": "removeChild" + }, + "name": "removeChild" + }, + "computed": false + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 11129, + "end": 11138, + "loc": { + "start": { + "line": 319, + "column": 45 + }, + "end": { + "line": 319, + "column": 54 + } + }, + "object": { + "type": "ThisExpression", + "start": 11129, + "end": 11133, + "loc": { + "start": { + "line": 319, + "column": 45 + }, + "end": { + "line": 319, + "column": 49 + } + } + }, + "property": { + "type": "Identifier", + "start": 11134, + "end": 11138, + "loc": { + "start": { + "line": 319, + "column": 50 + }, + "end": { + "line": 319, + "column": 54 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 11153, + "end": 11170, + "loc": { + "start": { + "line": 320, + "column": 12 + }, + "end": { + "line": 320, + "column": 29 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 11153, + "end": 11169, + "loc": { + "start": { + "line": 320, + "column": 12 + }, + "end": { + "line": 320, + "column": 28 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 11153, + "end": 11162, + "loc": { + "start": { + "line": 320, + "column": 12 + }, + "end": { + "line": 320, + "column": 21 + } + }, + "object": { + "type": "ThisExpression", + "start": 11153, + "end": 11157, + "loc": { + "start": { + "line": 320, + "column": 12 + }, + "end": { + "line": 320, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 11158, + "end": 11162, + "loc": { + "start": { + "line": 320, + "column": 17 + }, + "end": { + "line": 320, + "column": 21 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "right": { + "type": "NullLiteral", + "start": 11165, + "end": 11169, + "loc": { + "start": { + "line": 320, + "column": 24 + }, + "end": { + "line": 320, + "column": 28 + } + } + } + } + } + ], + "directives": [] + }, + "alternate": null + } + ], + "directives": [] + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Destroys this plugin.\n ", + "start": 10596, + "end": 10636, + "loc": { + "start": { + "line": 306, + "column": 4 + }, + "end": { + "line": 308, + "column": 7 + } + } + } + ] + } + ] + }, + "leadingComments": [], + "name": "_", + "trailingComments": [] + }, + { + "type": "FunctionDeclaration", + "start": 11190, + "end": 11465, + "loc": { + "start": { + "line": 325, + "column": 0 + }, + "end": { + "line": 337, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 11199, + "end": 11215, + "loc": { + "start": { + "line": 325, + "column": 9 + }, + "end": { + "line": 325, + "column": 25 + }, + "identifierName": "cumulativeOffset" + }, + "name": "cumulativeOffset" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 11216, + "end": 11223, + "loc": { + "start": { + "line": 325, + "column": 26 + }, + "end": { + "line": 325, + "column": 33 + }, + "identifierName": "element" + }, + "name": "element" + } + ], + "body": { + "type": "BlockStatement", + "start": 11225, + "end": 11465, + "loc": { + "start": { + "line": 325, + "column": 35 + }, + "end": { + "line": 337, + "column": 1 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 11231, + "end": 11253, + "loc": { + "start": { + "line": 326, + "column": 4 + }, + "end": { + "line": 326, + "column": 26 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 11235, + "end": 11242, + "loc": { + "start": { + "line": 326, + "column": 8 + }, + "end": { + "line": 326, + "column": 15 + } + }, + "id": { + "type": "Identifier", + "start": 11235, + "end": 11238, + "loc": { + "start": { + "line": 326, + "column": 8 + }, + "end": { + "line": 326, + "column": 11 + }, + "identifierName": "top" + }, + "name": "top" + }, + "init": { + "type": "NumericLiteral", + "start": 11241, + "end": 11242, + "loc": { + "start": { + "line": 326, + "column": 14 + }, + "end": { + "line": 326, + "column": 15 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + { + "type": "VariableDeclarator", + "start": 11244, + "end": 11252, + "loc": { "start": { - "line": 243, + "line": 326, "column": 17 }, "end": { - "line": 243, + "line": 326, "column": 25 } }, "id": { "type": "Identifier", - "start": 7858, - "end": 7862, + "start": 11244, + "end": 11248, "loc": { "start": { - "line": 243, + "line": 326, "column": 17 }, "end": { - "line": 243, + "line": 326, "column": 21 }, "identifierName": "left" @@ -17654,15 +20973,15 @@ }, "init": { "type": "NumericLiteral", - "start": 7865, - "end": 7866, + "start": 11251, + "end": 11252, "loc": { "start": { - "line": 243, + "line": 326, "column": 24 }, "end": { - "line": 243, + "line": 326, "column": 25 } }, @@ -17678,73 +20997,73 @@ }, { "type": "DoWhileStatement", - "start": 7872, - "end": 8019, + "start": 11258, + "end": 11405, "loc": { "start": { - "line": 244, + "line": 327, "column": 4 }, "end": { - "line": 248, + "line": 331, "column": 22 } }, "body": { "type": "BlockStatement", - "start": 7875, - "end": 8002, + "start": 11261, + "end": 11388, "loc": { "start": { - "line": 244, + "line": 327, "column": 7 }, "end": { - "line": 248, + "line": 331, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 7885, - "end": 7915, + "start": 11271, + "end": 11301, "loc": { "start": { - "line": 245, + "line": 328, "column": 8 }, "end": { - "line": 245, + "line": 328, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 7885, - "end": 7914, + "start": 11271, + "end": 11300, "loc": { "start": { - "line": 245, + "line": 328, "column": 8 }, "end": { - "line": 245, + "line": 328, "column": 37 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 7885, - "end": 7888, + "start": 11271, + "end": 11274, "loc": { "start": { - "line": 245, + "line": 328, "column": 8 }, "end": { - "line": 245, + "line": 328, "column": 11 }, "identifierName": "top" @@ -17753,43 +21072,43 @@ }, "right": { "type": "LogicalExpression", - "start": 7892, - "end": 7914, + "start": 11278, + "end": 11300, "loc": { "start": { - "line": 245, + "line": 328, "column": 15 }, "end": { - "line": 245, + "line": 328, "column": 37 } }, "left": { "type": "MemberExpression", - "start": 7892, - "end": 7909, + "start": 11278, + "end": 11295, "loc": { "start": { - "line": 245, + "line": 328, "column": 15 }, "end": { - "line": 245, + "line": 328, "column": 32 } }, "object": { "type": "Identifier", - "start": 7892, - "end": 7899, + "start": 11278, + "end": 11285, "loc": { "start": { - "line": 245, + "line": 328, "column": 15 }, "end": { - "line": 245, + "line": 328, "column": 22 }, "identifierName": "element" @@ -17798,15 +21117,15 @@ }, "property": { "type": "Identifier", - "start": 7900, - "end": 7909, + "start": 11286, + "end": 11295, "loc": { "start": { - "line": 245, + "line": 328, "column": 23 }, "end": { - "line": 245, + "line": 328, "column": 32 }, "identifierName": "offsetTop" @@ -17818,15 +21137,15 @@ "operator": "||", "right": { "type": "NumericLiteral", - "start": 7913, - "end": 7914, + "start": 11299, + "end": 11300, "loc": { "start": { - "line": 245, + "line": 328, "column": 36 }, "end": { - "line": 245, + "line": 328, "column": 37 } }, @@ -17841,44 +21160,44 @@ }, { "type": "ExpressionStatement", - "start": 7924, - "end": 7956, + "start": 11310, + "end": 11342, "loc": { "start": { - "line": 246, + "line": 329, "column": 8 }, "end": { - "line": 246, + "line": 329, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 7924, - "end": 7955, + "start": 11310, + "end": 11341, "loc": { "start": { - "line": 246, + "line": 329, "column": 8 }, "end": { - "line": 246, + "line": 329, "column": 39 } }, "operator": "+=", "left": { "type": "Identifier", - "start": 7924, - "end": 7928, + "start": 11310, + "end": 11314, "loc": { "start": { - "line": 246, + "line": 329, "column": 8 }, "end": { - "line": 246, + "line": 329, "column": 12 }, "identifierName": "left" @@ -17887,43 +21206,43 @@ }, "right": { "type": "LogicalExpression", - "start": 7932, - "end": 7955, + "start": 11318, + "end": 11341, "loc": { "start": { - "line": 246, + "line": 329, "column": 16 }, "end": { - "line": 246, + "line": 329, "column": 39 } }, "left": { "type": "MemberExpression", - "start": 7932, - "end": 7950, + "start": 11318, + "end": 11336, "loc": { "start": { - "line": 246, + "line": 329, "column": 16 }, "end": { - "line": 246, + "line": 329, "column": 34 } }, "object": { "type": "Identifier", - "start": 7932, - "end": 7939, + "start": 11318, + "end": 11325, "loc": { "start": { - "line": 246, + "line": 329, "column": 16 }, "end": { - "line": 246, + "line": 329, "column": 23 }, "identifierName": "element" @@ -17932,15 +21251,15 @@ }, "property": { "type": "Identifier", - "start": 7940, - "end": 7950, + "start": 11326, + "end": 11336, "loc": { "start": { - "line": 246, + "line": 329, "column": 24 }, "end": { - "line": 246, + "line": 329, "column": 34 }, "identifierName": "offsetLeft" @@ -17952,15 +21271,15 @@ "operator": "||", "right": { "type": "NumericLiteral", - "start": 7954, - "end": 7955, + "start": 11340, + "end": 11341, "loc": { "start": { - "line": 246, + "line": 329, "column": 38 }, "end": { - "line": 246, + "line": 329, "column": 39 } }, @@ -17975,44 +21294,44 @@ }, { "type": "ExpressionStatement", - "start": 7965, - "end": 7996, + "start": 11351, + "end": 11382, "loc": { "start": { - "line": 247, + "line": 330, "column": 8 }, "end": { - "line": 247, + "line": 330, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 7965, - "end": 7995, + "start": 11351, + "end": 11381, "loc": { "start": { - "line": 247, + "line": 330, "column": 8 }, "end": { - "line": 247, + "line": 330, "column": 38 } }, "operator": "=", "left": { "type": "Identifier", - "start": 7965, - "end": 7972, + "start": 11351, + "end": 11358, "loc": { "start": { - "line": 247, + "line": 330, "column": 8 }, "end": { - "line": 247, + "line": 330, "column": 15 }, "identifierName": "element" @@ -18021,29 +21340,29 @@ }, "right": { "type": "MemberExpression", - "start": 7975, - "end": 7995, + "start": 11361, + "end": 11381, "loc": { "start": { - "line": 247, + "line": 330, "column": 18 }, "end": { - "line": 247, + "line": 330, "column": 38 } }, "object": { "type": "Identifier", - "start": 7975, - "end": 7982, + "start": 11361, + "end": 11368, "loc": { "start": { - "line": 247, + "line": 330, "column": 18 }, "end": { - "line": 247, + "line": 330, "column": 25 }, "identifierName": "element" @@ -18052,15 +21371,15 @@ }, "property": { "type": "Identifier", - "start": 7983, - "end": 7995, + "start": 11369, + "end": 11381, "loc": { "start": { - "line": 247, + "line": 330, "column": 26 }, "end": { - "line": 247, + "line": 330, "column": 38 }, "identifierName": "offsetParent" @@ -18076,15 +21395,15 @@ }, "test": { "type": "Identifier", - "start": 8010, - "end": 8017, + "start": 11396, + "end": 11403, "loc": { "start": { - "line": 248, + "line": 331, "column": 13 }, "end": { - "line": 248, + "line": 331, "column": 20 }, "identifierName": "element" @@ -18094,44 +21413,44 @@ }, { "type": "ReturnStatement", - "start": 8025, - "end": 8077, + "start": 11411, + "end": 11463, "loc": { "start": { - "line": 250, + "line": 333, "column": 4 }, "end": { - "line": 253, + "line": 336, "column": 6 } }, "argument": { "type": "ObjectExpression", - "start": 8032, - "end": 8076, + "start": 11418, + "end": 11462, "loc": { "start": { - "line": 250, + "line": 333, "column": 11 }, "end": { - "line": 253, + "line": 336, "column": 5 } }, "properties": [ { "type": "ObjectProperty", - "start": 8042, - "end": 8050, + "start": 11428, + "end": 11436, "loc": { "start": { - "line": 251, + "line": 334, "column": 8 }, "end": { - "line": 251, + "line": 334, "column": 16 } }, @@ -18140,15 +21459,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8042, - "end": 8045, + "start": 11428, + "end": 11431, "loc": { "start": { - "line": 251, + "line": 334, "column": 8 }, "end": { - "line": 251, + "line": 334, "column": 11 }, "identifierName": "top" @@ -18157,15 +21476,15 @@ }, "value": { "type": "Identifier", - "start": 8047, - "end": 8050, + "start": 11433, + "end": 11436, "loc": { "start": { - "line": 251, + "line": 334, "column": 13 }, "end": { - "line": 251, + "line": 334, "column": 16 }, "identifierName": "top" @@ -18175,15 +21494,15 @@ }, { "type": "ObjectProperty", - "start": 8060, - "end": 8070, + "start": 11446, + "end": 11456, "loc": { "start": { - "line": 252, + "line": 335, "column": 8 }, "end": { - "line": 252, + "line": 335, "column": 18 } }, @@ -18192,15 +21511,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8060, - "end": 8064, + "start": 11446, + "end": 11450, "loc": { "start": { - "line": 252, + "line": 335, "column": 8 }, "end": { - "line": 252, + "line": 335, "column": 12 }, "identifierName": "left" @@ -18209,15 +21528,15 @@ }, "value": { "type": "Identifier", - "start": 8066, - "end": 8070, + "start": 11452, + "end": 11456, "loc": { "start": { - "line": 252, + "line": 335, "column": 14 }, "end": { - "line": 252, + "line": 335, "column": 18 }, "identifierName": "left" @@ -18234,15 +21553,15 @@ }, { "type": "ExportNamedDeclaration", - "start": 8081, - "end": 8103, + "start": 11467, + "end": 11489, "loc": { "start": { - "line": 256, + "line": 339, "column": 0 }, "end": { - "line": 256, + "line": 339, "column": 22 } }, @@ -18250,29 +21569,29 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 8089, - "end": 8102, + "start": 11475, + "end": 11488, "loc": { "start": { - "line": 256, + "line": 339, "column": 8 }, "end": { - "line": 256, + "line": 339, "column": 21 } }, "local": { "type": "Identifier", - "start": 8089, - "end": 8102, + "start": 11475, + "end": 11488, "loc": { "start": { - "line": 256, + "line": 339, "column": 8 }, "end": { - "line": 256, + "line": 339, "column": 21 }, "identifierName": "FastNavPlugin" @@ -18281,15 +21600,15 @@ }, "exported": { "type": "Identifier", - "start": 8089, - "end": 8102, + "start": 11475, + "end": 11488, "loc": { "start": { - "line": 256, + "line": 339, "column": 8 }, "end": { - "line": 256, + "line": 339, "column": 21 }, "identifierName": "FastNavPlugin" @@ -18302,43 +21621,43 @@ }, { "type": "ExportNamedDeclaration", - "start": 8081, - "end": 8103, + "start": 11467, + "end": 11489, "loc": { "start": { - "line": 256, + "line": 339, "column": 0 }, "end": { - "line": 256, + "line": 339, "column": 22 } }, "declaration": { "type": "ClassDeclaration", - "start": 1624, - "end": 7802, + "start": 1704, + "end": 11188, "loc": { "start": { - "line": 49, + "line": 53, "column": 0 }, "end": { - "line": 240, + "line": 323, "column": 1 } }, "id": { "type": "Identifier", - "start": 1630, - "end": 1643, + "start": 1710, + "end": 1723, "loc": { "start": { - "line": 49, + "line": 53, "column": 6 }, "end": { - "line": 49, + "line": 53, "column": 19 }, "identifierName": "FastNavPlugin" @@ -18348,15 +21667,15 @@ }, "superClass": { "type": "Identifier", - "start": 1652, - "end": 1658, + "start": 1732, + "end": 1738, "loc": { "start": { - "line": 49, + "line": 53, "column": 28 }, "end": { - "line": 49, + "line": 53, "column": 34 }, "identifierName": "Plugin" @@ -18365,30 +21684,30 @@ }, "body": { "type": "ClassBody", - "start": 1659, - "end": 7802, + "start": 1739, + "end": 11188, "loc": { "start": { - "line": 49, + "line": 53, "column": 35 }, "end": { - "line": 240, + "line": 323, "column": 1 } }, "body": [ { "type": "ClassMethod", - "start": 1666, - "end": 4265, + "start": 2700, + "end": 5923, "loc": { "start": { - "line": 51, + "line": 64, "column": 4 }, "end": { - "line": 131, + "line": 151, "column": 5 } }, @@ -18396,20 +21715,21 @@ "computed": false, "key": { "type": "Identifier", - "start": 1666, - "end": 1677, + "start": 2700, + "end": 2711, "loc": { "start": { - "line": 51, + "line": 64, "column": 4 }, "end": { - "line": 51, + "line": 64, "column": 15 }, "identifierName": "constructor" }, - "name": "constructor" + "name": "constructor", + "leadingComments": null }, "kind": "constructor", "id": null, @@ -18419,76 +21739,124 @@ "params": [ { "type": "Identifier", - "start": 1678, - "end": 1684, + "start": 2712, + "end": 2718, "loc": { "start": { - "line": 51, + "line": 64, "column": 16 }, "end": { - "line": 51, + "line": 64, "column": 22 }, "identifierName": "viewer" }, "name": "viewer" + }, + { + "type": "AssignmentPattern", + "start": 2720, + "end": 2728, + "loc": { + "start": { + "line": 64, + "column": 24 + }, + "end": { + "line": 64, + "column": 32 + } + }, + "left": { + "type": "Identifier", + "start": 2720, + "end": 2723, + "loc": { + "start": { + "line": 64, + "column": 24 + }, + "end": { + "line": 64, + "column": 27 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "right": { + "type": "ObjectExpression", + "start": 2726, + "end": 2728, + "loc": { + "start": { + "line": 64, + "column": 30 + }, + "end": { + "line": 64, + "column": 32 + } + }, + "properties": [] + } } ], "body": { "type": "BlockStatement", - "start": 1686, - "end": 4265, + "start": 2730, + "end": 5923, "loc": { "start": { - "line": 51, - "column": 24 + "line": 64, + "column": 34 }, "end": { - "line": 131, + "line": 151, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 1697, - "end": 1722, + "start": 2741, + "end": 2766, "loc": { "start": { - "line": 53, + "line": 66, "column": 8 }, "end": { - "line": 53, + "line": 66, "column": 33 } }, "expression": { "type": "CallExpression", - "start": 1697, - "end": 1721, + "start": 2741, + "end": 2765, "loc": { "start": { - "line": 53, + "line": 66, "column": 8 }, "end": { - "line": 53, + "line": 66, "column": 32 } }, "callee": { "type": "Super", - "start": 1697, - "end": 1702, + "start": 2741, + "end": 2746, "loc": { "start": { - "line": 53, + "line": 66, "column": 8 }, "end": { - "line": 53, + "line": 66, "column": 13 } } @@ -18496,15 +21864,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 1703, - "end": 1712, + "start": 2747, + "end": 2756, "loc": { "start": { - "line": 53, + "line": 66, "column": 14 }, "end": { - "line": 53, + "line": 66, "column": 23 } }, @@ -18516,15 +21884,15 @@ }, { "type": "Identifier", - "start": 1714, - "end": 1720, + "start": 2758, + "end": 2764, "loc": { "start": { - "line": 53, + "line": 66, "column": 25 }, "end": { - "line": 53, + "line": 66, "column": 31 }, "identifierName": "viewer" @@ -18536,2807 +21904,1937 @@ }, { "type": "ExpressionStatement", - "start": 1732, - "end": 1755, + "start": 2776, + "end": 2896, "loc": { "start": { - "line": 55, + "line": 68, "column": 8 }, "end": { - "line": 55, - "column": 31 + "line": 68, + "column": 128 } }, "expression": { "type": "AssignmentExpression", - "start": 1732, - "end": 1754, + "start": 2776, + "end": 2895, "loc": { "start": { - "line": 55, + "line": 68, "column": 8 }, "end": { - "line": 55, - "column": 30 + "line": 68, + "column": 127 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 1732, - "end": 1747, + "start": 2776, + "end": 2792, "loc": { "start": { - "line": 55, + "line": 68, "column": 8 }, "end": { - "line": 55, - "column": 23 + "line": 68, + "column": 24 } }, "object": { "type": "ThisExpression", - "start": 1732, - "end": 1736, + "start": 2776, + "end": 2780, "loc": { "start": { - "line": 55, + "line": 68, "column": 8 }, "end": { - "line": 55, + "line": 68, "column": 12 } } }, "property": { "type": "Identifier", - "start": 1737, - "end": 1747, + "start": 2781, + "end": 2792, "loc": { "start": { - "line": 55, + "line": 68, "column": 13 }, "end": { - "line": 55, - "column": 23 + "line": 68, + "column": 24 }, - "identifierName": "_pInterval" + "identifierName": "_pbrEnabled" }, - "name": "_pInterval" + "name": "_pbrEnabled" }, "computed": false }, "right": { - "type": "NullLiteral", - "start": 1750, - "end": 1754, + "type": "ConditionalExpression", + "start": 2795, + "end": 2895, "loc": { "start": { - "line": 55, - "column": 26 + "line": 68, + "column": 27 }, "end": { - "line": 55, - "column": 30 - } - } - } - } - }, - { - "type": "ExpressionStatement", - "start": 1764, - "end": 1790, - "loc": { - "start": { - "line": 56, - "column": 8 - }, - "end": { - "line": 56, - "column": 34 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 1764, - "end": 1789, - "loc": { - "start": { - "line": 56, - "column": 8 - }, - "end": { - "line": 56, - "column": 33 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 1764, - "end": 1783, - "loc": { - "start": { - "line": 56, - "column": 8 - }, - "end": { - "line": 56, - "column": 27 + "line": 68, + "column": 127 } }, - "object": { - "type": "ThisExpression", - "start": 1764, - "end": 1768, + "test": { + "type": "LogicalExpression", + "start": 2796, + "end": 2851, "loc": { "start": { - "line": 56, - "column": 8 + "line": 68, + "column": 28 }, "end": { - "line": 56, - "column": 12 + "line": 68, + "column": 83 } - } - }, - "property": { - "type": "Identifier", - "start": 1769, - "end": 1783, - "loc": { - "start": { - "line": 56, - "column": 13 - }, - "end": { - "line": 56, - "column": 27 - }, - "identifierName": "_fadeMillisecs" - }, - "name": "_fadeMillisecs" - }, - "computed": false - }, - "right": { - "type": "NumericLiteral", - "start": 1786, - "end": 1789, - "loc": { - "start": { - "line": 56, - "column": 30 - }, - "end": { - "line": 56, - "column": 33 - } - }, - "extra": { - "rawValue": 500, - "raw": "500" - }, - "value": 500 - } - } - }, - { - "type": "VariableDeclaration", - "start": 1800, - "end": 1826, - "loc": { - "start": { - "line": 58, - "column": 8 - }, - "end": { - "line": 58, - "column": 34 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 1804, - "end": 1825, - "loc": { - "start": { - "line": 58, - "column": 12 }, - "end": { - "line": 58, - "column": 33 - } - }, - "id": { - "type": "Identifier", - "start": 1804, - "end": 1819, - "loc": { - "start": { - "line": 58, - "column": 12 + "left": { + "type": "BinaryExpression", + "start": 2796, + "end": 2824, + "loc": { + "start": { + "line": 68, + "column": 28 + }, + "end": { + "line": 68, + "column": 56 + } }, - "end": { - "line": 58, - "column": 27 + "left": { + "type": "MemberExpression", + "start": 2796, + "end": 2810, + "loc": { + "start": { + "line": 68, + "column": 28 + }, + "end": { + "line": 68, + "column": 42 + } + }, + "object": { + "type": "Identifier", + "start": 2796, + "end": 2799, + "loc": { + "start": { + "line": 68, + "column": 28 + }, + "end": { + "line": 68, + "column": 31 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 2800, + "end": 2810, + "loc": { + "start": { + "line": 68, + "column": 32 + }, + "end": { + "line": 68, + "column": 42 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" + }, + "computed": false }, - "identifierName": "timeoutDuration" + "operator": "!==", + "right": { + "type": "Identifier", + "start": 2815, + "end": 2824, + "loc": { + "start": { + "line": 68, + "column": 47 + }, + "end": { + "line": 68, + "column": 56 + }, + "identifierName": "undefined" + }, + "name": "undefined" + } }, - "name": "timeoutDuration" - }, - "init": { - "type": "NumericLiteral", - "start": 1822, - "end": 1825, - "loc": { - "start": { - "line": 58, - "column": 30 + "operator": "&&", + "right": { + "type": "BinaryExpression", + "start": 2828, + "end": 2851, + "loc": { + "start": { + "line": 68, + "column": 60 + }, + "end": { + "line": 68, + "column": 83 + } }, - "end": { - "line": 58, - "column": 33 + "left": { + "type": "MemberExpression", + "start": 2828, + "end": 2842, + "loc": { + "start": { + "line": 68, + "column": 60 + }, + "end": { + "line": 68, + "column": 74 + } + }, + "object": { + "type": "Identifier", + "start": 2828, + "end": 2831, + "loc": { + "start": { + "line": 68, + "column": 60 + }, + "end": { + "line": 68, + "column": 63 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 2832, + "end": 2842, + "loc": { + "start": { + "line": 68, + "column": 64 + }, + "end": { + "line": 68, + "column": 74 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" + }, + "computed": false + }, + "operator": "!==", + "right": { + "type": "NullLiteral", + "start": 2847, + "end": 2851, + "loc": { + "start": { + "line": 68, + "column": 79 + }, + "end": { + "line": 68, + "column": 83 + } + } } }, "extra": { - "rawValue": 600, - "raw": "600" - }, - "value": 600 - } - } - ], - "kind": "let", - "trailingComments": [ - { - "type": "CommentLine", - "value": " Milliseconds", - "start": 1827, - "end": 1842, - "loc": { - "start": { - "line": 58, - "column": 35 - }, - "end": { - "line": 58, - "column": 50 - } - } - } - ] - }, - { - "type": "VariableDeclaration", - "start": 1851, - "end": 1879, - "loc": { - "start": { - "line": 59, - "column": 8 - }, - "end": { - "line": 59, - "column": 36 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 1855, - "end": 1878, - "loc": { - "start": { - "line": 59, - "column": 12 - }, - "end": { - "line": 59, - "column": 35 + "parenthesized": true, + "parenStart": 2795 } }, - "id": { - "type": "Identifier", - "start": 1855, - "end": 1860, + "consequent": { + "type": "MemberExpression", + "start": 2855, + "end": 2869, "loc": { "start": { - "line": 59, - "column": 12 + "line": 68, + "column": 87 }, "end": { - "line": 59, - "column": 17 - }, - "identifierName": "timer" + "line": 68, + "column": 101 + } }, - "name": "timer", - "leadingComments": null - }, - "init": { - "type": "Identifier", - "start": 1863, - "end": 1878, - "loc": { - "start": { - "line": 59, - "column": 20 - }, - "end": { - "line": 59, - "column": 35 + "object": { + "type": "Identifier", + "start": 2855, + "end": 2858, + "loc": { + "start": { + "line": 68, + "column": 87 + }, + "end": { + "line": 68, + "column": 90 + }, + "identifierName": "cfg" }, - "identifierName": "timeoutDuration" - }, - "name": "timeoutDuration" - }, - "leadingComments": null - } - ], - "kind": "let", - "leadingComments": [ - { - "type": "CommentLine", - "value": " Milliseconds", - "start": 1827, - "end": 1842, - "loc": { - "start": { - "line": 58, - "column": 35 + "name": "cfg" }, - "end": { - "line": 58, - "column": 50 - } - } - } - ] - }, - { - "type": "VariableDeclaration", - "start": 1888, - "end": 1909, - "loc": { - "start": { - "line": 60, - "column": 8 - }, - "end": { - "line": 60, - "column": 29 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 1892, - "end": 1908, - "loc": { - "start": { - "line": 60, - "column": 12 + "property": { + "type": "Identifier", + "start": 2859, + "end": 2869, + "loc": { + "start": { + "line": 68, + "column": 91 + }, + "end": { + "line": 68, + "column": 101 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" }, - "end": { - "line": 60, - "column": 28 - } + "computed": false }, - "id": { - "type": "Identifier", - "start": 1892, - "end": 1900, + "alternate": { + "type": "MemberExpression", + "start": 2872, + "end": 2895, "loc": { "start": { - "line": 60, - "column": 12 + "line": 68, + "column": 104 }, "end": { - "line": 60, - "column": 20 + "line": 68, + "column": 127 + } + }, + "object": { + "type": "MemberExpression", + "start": 2872, + "end": 2884, + "loc": { + "start": { + "line": 68, + "column": 104 + }, + "end": { + "line": 68, + "column": 116 + } }, - "identifierName": "fastMode" + "object": { + "type": "Identifier", + "start": 2872, + "end": 2878, + "loc": { + "start": { + "line": 68, + "column": 104 + }, + "end": { + "line": 68, + "column": 110 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 2879, + "end": 2884, + "loc": { + "start": { + "line": 68, + "column": 111 + }, + "end": { + "line": 68, + "column": 116 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false }, - "name": "fastMode" - }, - "init": { - "type": "BooleanLiteral", - "start": 1903, - "end": 1908, - "loc": { - "start": { - "line": 60, - "column": 23 + "property": { + "type": "Identifier", + "start": 2885, + "end": 2895, + "loc": { + "start": { + "line": 68, + "column": 117 + }, + "end": { + "line": 68, + "column": 127 + }, + "identifierName": "pbrEnabled" }, - "end": { - "line": 60, - "column": 28 - } + "name": "pbrEnabled" }, - "value": false + "computed": false } } - ], - "kind": "let" + } }, { "type": "ExpressionStatement", - "start": 1919, - "end": 2299, + "start": 2905, + "end": 3026, "loc": { "start": { - "line": 62, + "line": 69, "column": 8 }, "end": { - "line": 71, - "column": 11 + "line": 69, + "column": 129 } }, "expression": { "type": "AssignmentExpression", - "start": 1919, - "end": 2298, + "start": 2905, + "end": 3025, "loc": { "start": { - "line": 62, + "line": 69, "column": 8 }, "end": { - "line": 71, - "column": 10 + "line": 69, + "column": 128 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 1919, - "end": 1939, + "start": 2905, + "end": 2921, "loc": { "start": { - "line": 62, + "line": 69, "column": 8 }, "end": { - "line": 62, - "column": 28 + "line": 69, + "column": 24 } }, "object": { "type": "ThisExpression", - "start": 1919, - "end": 1923, + "start": 2905, + "end": 2909, "loc": { "start": { - "line": 62, + "line": 69, "column": 8 }, "end": { - "line": 62, + "line": 69, "column": 12 } } }, "property": { "type": "Identifier", - "start": 1924, - "end": 1939, + "start": 2910, + "end": 2921, "loc": { "start": { - "line": 62, + "line": 69, "column": 13 }, "end": { - "line": 62, - "column": 28 + "line": 69, + "column": 24 }, - "identifierName": "_onCameraMatrix" + "identifierName": "_saoEnabled" }, - "name": "_onCameraMatrix" + "name": "_saoEnabled" }, "computed": false }, "right": { - "type": "CallExpression", - "start": 1942, - "end": 2298, + "type": "ConditionalExpression", + "start": 2924, + "end": 3025, "loc": { "start": { - "line": 62, - "column": 31 + "line": 69, + "column": 27 }, "end": { - "line": 71, - "column": 10 + "line": 69, + "column": 128 } }, - "callee": { - "type": "MemberExpression", - "start": 1942, - "end": 1964, + "test": { + "type": "LogicalExpression", + "start": 2925, + "end": 2980, "loc": { "start": { - "line": 62, - "column": 31 + "line": 69, + "column": 28 }, "end": { - "line": 62, - "column": 53 + "line": 69, + "column": 83 } }, - "object": { - "type": "MemberExpression", - "start": 1942, - "end": 1961, + "left": { + "type": "BinaryExpression", + "start": 2925, + "end": 2953, "loc": { "start": { - "line": 62, - "column": 31 + "line": 69, + "column": 28 }, "end": { - "line": 62, - "column": 50 + "line": 69, + "column": 56 } }, - "object": { + "left": { "type": "MemberExpression", - "start": 1942, - "end": 1954, + "start": 2925, + "end": 2939, "loc": { "start": { - "line": 62, - "column": 31 + "line": 69, + "column": 28 }, "end": { - "line": 62, - "column": 43 + "line": 69, + "column": 42 } }, "object": { "type": "Identifier", - "start": 1942, - "end": 1948, + "start": 2925, + "end": 2928, "loc": { "start": { - "line": 62, - "column": 31 + "line": 69, + "column": 28 }, "end": { - "line": 62, - "column": 37 + "line": 69, + "column": 31 }, - "identifierName": "viewer" + "identifierName": "cfg" }, - "name": "viewer" + "name": "cfg" }, "property": { "type": "Identifier", - "start": 1949, - "end": 1954, + "start": 2929, + "end": 2939, "loc": { "start": { - "line": 62, - "column": 38 + "line": 69, + "column": 32 }, "end": { - "line": 62, - "column": 43 + "line": 69, + "column": 42 }, - "identifierName": "scene" + "identifierName": "saoEnabled" }, - "name": "scene" + "name": "saoEnabled" }, "computed": false }, - "property": { + "operator": "!==", + "right": { "type": "Identifier", - "start": 1955, - "end": 1961, + "start": 2944, + "end": 2953, "loc": { "start": { - "line": 62, - "column": 44 + "line": 69, + "column": 47 }, "end": { - "line": 62, - "column": 50 + "line": 69, + "column": 56 }, - "identifierName": "camera" + "identifierName": "undefined" }, - "name": "camera" - }, - "computed": false + "name": "undefined" + } }, - "property": { - "type": "Identifier", - "start": 1962, - "end": 1964, + "operator": "&&", + "right": { + "type": "BinaryExpression", + "start": 2957, + "end": 2980, "loc": { "start": { - "line": 62, - "column": 51 + "line": 69, + "column": 60 }, "end": { - "line": 62, - "column": 53 + "line": 69, + "column": 83 + } + }, + "left": { + "type": "MemberExpression", + "start": 2957, + "end": 2971, + "loc": { + "start": { + "line": 69, + "column": 60 + }, + "end": { + "line": 69, + "column": 74 + } }, - "identifierName": "on" + "object": { + "type": "Identifier", + "start": 2957, + "end": 2960, + "loc": { + "start": { + "line": 69, + "column": 60 + }, + "end": { + "line": 69, + "column": 63 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 2961, + "end": 2971, + "loc": { + "start": { + "line": 69, + "column": 64 + }, + "end": { + "line": 69, + "column": 74 + }, + "identifierName": "saoEnabled" + }, + "name": "saoEnabled" + }, + "computed": false }, - "name": "on" + "operator": "!==", + "right": { + "type": "NullLiteral", + "start": 2976, + "end": 2980, + "loc": { + "start": { + "line": 69, + "column": 79 + }, + "end": { + "line": 69, + "column": 83 + } + } + } }, - "computed": false + "extra": { + "parenthesized": true, + "parenStart": 2924 + } }, - "arguments": [ - { - "type": "StringLiteral", - "start": 1965, - "end": 1973, + "consequent": { + "type": "MemberExpression", + "start": 2984, + "end": 2998, + "loc": { + "start": { + "line": 69, + "column": 87 + }, + "end": { + "line": 69, + "column": 101 + } + }, + "object": { + "type": "Identifier", + "start": 2984, + "end": 2987, "loc": { "start": { - "line": 62, - "column": 54 + "line": 69, + "column": 87 }, "end": { - "line": 62, - "column": 62 - } - }, - "extra": { - "rawValue": "matrix", - "raw": "\"matrix\"" + "line": 69, + "column": 90 + }, + "identifierName": "cfg" }, - "value": "matrix" + "name": "cfg" }, - { - "type": "ArrowFunctionExpression", - "start": 1975, - "end": 2297, + "property": { + "type": "Identifier", + "start": 2988, + "end": 2998, "loc": { "start": { - "line": 62, - "column": 64 + "line": 69, + "column": 91 }, "end": { - "line": 71, - "column": 9 - } + "line": 69, + "column": 101 + }, + "identifierName": "saoEnabled" }, - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [], - "body": { - "type": "BlockStatement", - "start": 1981, - "end": 2297, + "name": "saoEnabled" + }, + "computed": false + }, + "alternate": { + "type": "MemberExpression", + "start": 3001, + "end": 3025, + "loc": { + "start": { + "line": 69, + "column": 104 + }, + "end": { + "line": 69, + "column": 128 + } + }, + "object": { + "type": "MemberExpression", + "start": 3001, + "end": 3017, + "loc": { + "start": { + "line": 69, + "column": 104 + }, + "end": { + "line": 69, + "column": 120 + } + }, + "object": { + "type": "MemberExpression", + "start": 3001, + "end": 3013, "loc": { "start": { - "line": 62, - "column": 70 + "line": 69, + "column": 104 }, "end": { - "line": 71, - "column": 9 + "line": 69, + "column": 116 } }, - "body": [ - { - "type": "ExpressionStatement", - "start": 1995, - "end": 2019, - "loc": { - "start": { - "line": 63, - "column": 12 - }, - "end": { - "line": 63, - "column": 36 - } + "object": { + "type": "Identifier", + "start": 3001, + "end": 3007, + "loc": { + "start": { + "line": 69, + "column": 104 }, - "expression": { - "type": "AssignmentExpression", - "start": 1995, - "end": 2018, - "loc": { - "start": { - "line": 63, - "column": 12 - }, - "end": { - "line": 63, - "column": 35 - } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 1995, - "end": 2000, - "loc": { - "start": { - "line": 63, - "column": 12 - }, - "end": { - "line": 63, - "column": 17 - }, - "identifierName": "timer" - }, - "name": "timer" - }, - "right": { - "type": "Identifier", - "start": 2003, - "end": 2018, - "loc": { - "start": { - "line": 63, - "column": 20 - }, - "end": { - "line": 63, - "column": 35 - }, - "identifierName": "timeoutDuration" - }, - "name": "timeoutDuration" - } - } + "end": { + "line": 69, + "column": 110 + }, + "identifierName": "viewer" }, - { - "type": "IfStatement", - "start": 2032, - "end": 2287, - "loc": { - "start": { - "line": 64, - "column": 12 - }, - "end": { - "line": 70, - "column": 13 - } + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 3008, + "end": 3013, + "loc": { + "start": { + "line": 69, + "column": 111 }, - "test": { - "type": "UnaryExpression", - "start": 2036, - "end": 2045, - "loc": { - "start": { - "line": 64, - "column": 16 - }, - "end": { - "line": 64, - "column": 25 - } - }, - "operator": "!", - "prefix": true, - "argument": { - "type": "Identifier", - "start": 2037, - "end": 2045, - "loc": { - "start": { - "line": 64, - "column": 17 - }, - "end": { - "line": 64, - "column": 25 - }, - "identifierName": "fastMode" - }, - "name": "fastMode" - }, - "extra": { - "parenthesizedArgument": false - } + "end": { + "line": 69, + "column": 116 }, - "consequent": { - "type": "BlockStatement", - "start": 2047, - "end": 2287, - "loc": { - "start": { - "line": 64, - "column": 27 - }, - "end": { - "line": 70, - "column": 13 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 2065, - "end": 2084, - "loc": { - "start": { - "line": 65, - "column": 16 - }, - "end": { - "line": 65, - "column": 35 - } - }, - "expression": { - "type": "CallExpression", - "start": 2065, - "end": 2083, - "loc": { - "start": { - "line": 65, - "column": 16 - }, - "end": { - "line": 65, - "column": 34 - } - }, - "callee": { - "type": "MemberExpression", - "start": 2065, - "end": 2081, - "loc": { - "start": { - "line": 65, - "column": 16 - }, - "end": { - "line": 65, - "column": 32 - } - }, - "object": { - "type": "ThisExpression", - "start": 2065, - "end": 2069, - "loc": { - "start": { - "line": 65, - "column": 16 - }, - "end": { - "line": 65, - "column": 20 - } - } - }, - "property": { - "type": "Identifier", - "start": 2070, - "end": 2081, - "loc": { - "start": { - "line": 65, - "column": 21 - }, - "end": { - "line": 65, - "column": 32 - }, - "identifierName": "_cancelFade" - }, - "name": "_cancelFade" - }, - "computed": false - }, - "arguments": [] - } - }, - { - "type": "ExpressionStatement", - "start": 2101, - "end": 2133, - "loc": { - "start": { - "line": 66, - "column": 16 - }, - "end": { - "line": 66, - "column": 48 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2101, - "end": 2132, - "loc": { - "start": { - "line": 66, - "column": 16 - }, - "end": { - "line": 66, - "column": 47 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 2101, - "end": 2124, - "loc": { - "start": { - "line": 66, - "column": 16 - }, - "end": { - "line": 66, - "column": 39 - } - }, - "object": { - "type": "MemberExpression", - "start": 2101, - "end": 2113, - "loc": { - "start": { - "line": 66, - "column": 16 - }, - "end": { - "line": 66, - "column": 28 - } - }, - "object": { - "type": "Identifier", - "start": 2101, - "end": 2107, - "loc": { - "start": { - "line": 66, - "column": 16 - }, - "end": { - "line": 66, - "column": 22 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 2108, - "end": 2113, - "loc": { - "start": { - "line": 66, - "column": 23 - }, - "end": { - "line": 66, - "column": 28 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2114, - "end": 2124, - "loc": { - "start": { - "line": 66, - "column": 29 - }, - "end": { - "line": 66, - "column": 39 - }, - "identifierName": "pbrEnabled" - }, - "name": "pbrEnabled" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 2127, - "end": 2132, - "loc": { - "start": { - "line": 66, - "column": 42 - }, - "end": { - "line": 66, - "column": 47 - } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 2150, - "end": 2183, - "loc": { - "start": { - "line": 67, - "column": 16 - }, - "end": { - "line": 67, - "column": 49 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2150, - "end": 2182, - "loc": { - "start": { - "line": 67, - "column": 16 - }, - "end": { - "line": 67, - "column": 48 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 2150, - "end": 2174, - "loc": { - "start": { - "line": 67, - "column": 16 - }, - "end": { - "line": 67, - "column": 40 - } - }, - "object": { - "type": "MemberExpression", - "start": 2150, - "end": 2166, - "loc": { - "start": { - "line": 67, - "column": 16 - }, - "end": { - "line": 67, - "column": 32 - } - }, - "object": { - "type": "MemberExpression", - "start": 2150, - "end": 2162, - "loc": { - "start": { - "line": 67, - "column": 16 - }, - "end": { - "line": 67, - "column": 28 - } - }, - "object": { - "type": "Identifier", - "start": 2150, - "end": 2156, - "loc": { - "start": { - "line": 67, - "column": 16 - }, - "end": { - "line": 67, - "column": 22 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 2157, - "end": 2162, - "loc": { - "start": { - "line": 67, - "column": 23 - }, - "end": { - "line": 67, - "column": 28 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2163, - "end": 2166, - "loc": { - "start": { - "line": 67, - "column": 29 - }, - "end": { - "line": 67, - "column": 32 - }, - "identifierName": "sao" - }, - "name": "sao" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2167, - "end": 2174, - "loc": { - "start": { - "line": 67, - "column": 33 - }, - "end": { - "line": 67, - "column": 40 - }, - "identifierName": "enabled" - }, - "name": "enabled" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 2177, - "end": 2182, - "loc": { - "start": { - "line": 67, - "column": 43 - }, - "end": { - "line": 67, - "column": 48 - } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 2200, - "end": 2240, - "loc": { - "start": { - "line": 68, - "column": 16 - }, - "end": { - "line": 68, - "column": 56 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2200, - "end": 2239, - "loc": { - "start": { - "line": 68, - "column": 16 - }, - "end": { - "line": 68, - "column": 55 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 2200, - "end": 2231, - "loc": { - "start": { - "line": 68, - "column": 16 - }, - "end": { - "line": 68, - "column": 47 - } - }, - "object": { - "type": "MemberExpression", - "start": 2200, - "end": 2225, - "loc": { - "start": { - "line": 68, - "column": 16 - }, - "end": { - "line": 68, - "column": 41 - } - }, - "object": { - "type": "MemberExpression", - "start": 2200, - "end": 2212, - "loc": { - "start": { - "line": 68, - "column": 16 - }, - "end": { - "line": 68, - "column": 28 - } - }, - "object": { - "type": "Identifier", - "start": 2200, - "end": 2206, - "loc": { - "start": { - "line": 68, - "column": 16 - }, - "end": { - "line": 68, - "column": 22 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 2207, - "end": 2212, - "loc": { - "start": { - "line": 68, - "column": 23 - }, - "end": { - "line": 68, - "column": 28 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2213, - "end": 2225, - "loc": { - "start": { - "line": 68, - "column": 29 - }, - "end": { - "line": 68, - "column": 41 - }, - "identifierName": "edgeMaterial" - }, - "name": "edgeMaterial" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2226, - "end": 2231, - "loc": { - "start": { - "line": 68, - "column": 42 - }, - "end": { - "line": 68, - "column": 47 - }, - "identifierName": "edges" - }, - "name": "edges" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 2234, - "end": 2239, - "loc": { - "start": { - "line": 68, - "column": 50 - }, - "end": { - "line": 68, - "column": 55 - } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 2257, - "end": 2273, - "loc": { - "start": { - "line": 69, - "column": 16 - }, - "end": { - "line": 69, - "column": 32 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2257, - "end": 2272, - "loc": { - "start": { - "line": 69, - "column": 16 - }, - "end": { - "line": 69, - "column": 31 - } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 2257, - "end": 2265, - "loc": { - "start": { - "line": 69, - "column": 16 - }, - "end": { - "line": 69, - "column": 24 - }, - "identifierName": "fastMode" - }, - "name": "fastMode" - }, - "right": { - "type": "BooleanLiteral", - "start": 2268, - "end": 2272, - "loc": { - "start": { - "line": 69, - "column": 27 - }, - "end": { - "line": 69, - "column": 31 - } - }, - "value": true - } - } - } - ], - "directives": [] - }, - "alternate": null - } - ], - "directives": [] - } - } - ] + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 3014, + "end": 3017, + "loc": { + "start": { + "line": 69, + "column": 117 + }, + "end": { + "line": 69, + "column": 120 + }, + "identifierName": "sao" + }, + "name": "sao" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 3018, + "end": 3025, + "loc": { + "start": { + "line": 69, + "column": 121 + }, + "end": { + "line": 69, + "column": 128 + }, + "identifierName": "enabled" + }, + "name": "enabled" + }, + "computed": false + } } } }, { "type": "ExpressionStatement", - "start": 2309, - "end": 2843, + "start": 3035, + "end": 3171, "loc": { "start": { - "line": 73, + "line": 70, "column": 8 }, "end": { - "line": 87, - "column": 11 + "line": 70, + "column": 144 } }, "expression": { "type": "AssignmentExpression", - "start": 2309, - "end": 2842, + "start": 3035, + "end": 3170, "loc": { "start": { - "line": 73, + "line": 70, "column": 8 }, "end": { - "line": 87, - "column": 10 + "line": 70, + "column": 143 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 2309, - "end": 2326, + "start": 3035, + "end": 3053, "loc": { "start": { - "line": 73, + "line": 70, "column": 8 }, "end": { - "line": 73, - "column": 25 + "line": 70, + "column": 26 } }, "object": { "type": "ThisExpression", - "start": 2309, - "end": 2313, + "start": 3035, + "end": 3039, "loc": { "start": { - "line": 73, + "line": 70, "column": 8 }, "end": { - "line": 73, + "line": 70, "column": 12 } } }, "property": { "type": "Identifier", - "start": 2314, - "end": 2326, + "start": 3040, + "end": 3053, "loc": { "start": { - "line": 73, + "line": 70, "column": 13 }, "end": { - "line": 73, - "column": 25 + "line": 70, + "column": 26 }, - "identifierName": "_onSceneTick" + "identifierName": "_edgesEnabled" }, - "name": "_onSceneTick" + "name": "_edgesEnabled" }, "computed": false }, "right": { - "type": "CallExpression", - "start": 2329, - "end": 2842, + "type": "ConditionalExpression", + "start": 3056, + "end": 3170, "loc": { "start": { - "line": 73, - "column": 28 + "line": 70, + "column": 29 }, "end": { - "line": 87, - "column": 10 + "line": 70, + "column": 143 } }, - "callee": { - "type": "MemberExpression", - "start": 2329, - "end": 2344, + "test": { + "type": "LogicalExpression", + "start": 3057, + "end": 3116, "loc": { "start": { - "line": 73, - "column": 28 + "line": 70, + "column": 30 }, "end": { - "line": 73, - "column": 43 + "line": 70, + "column": 89 } }, - "object": { - "type": "MemberExpression", - "start": 2329, - "end": 2341, + "left": { + "type": "BinaryExpression", + "start": 3057, + "end": 3087, "loc": { "start": { - "line": 73, - "column": 28 + "line": 70, + "column": 30 }, "end": { - "line": 73, - "column": 40 + "line": 70, + "column": 60 } }, - "object": { - "type": "Identifier", - "start": 2329, - "end": 2335, + "left": { + "type": "MemberExpression", + "start": 3057, + "end": 3073, "loc": { "start": { - "line": 73, - "column": 28 + "line": 70, + "column": 30 }, "end": { - "line": 73, - "column": 34 + "line": 70, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 3057, + "end": 3060, + "loc": { + "start": { + "line": 70, + "column": 30 + }, + "end": { + "line": 70, + "column": 33 + }, + "identifierName": "cfg" }, - "identifierName": "viewer" + "name": "cfg" }, - "name": "viewer" + "property": { + "type": "Identifier", + "start": 3061, + "end": 3073, + "loc": { + "start": { + "line": 70, + "column": 34 + }, + "end": { + "line": 70, + "column": 46 + }, + "identifierName": "edgesEnabled" + }, + "name": "edgesEnabled" + }, + "computed": false }, - "property": { + "operator": "!==", + "right": { "type": "Identifier", - "start": 2336, - "end": 2341, + "start": 3078, + "end": 3087, "loc": { "start": { - "line": 73, - "column": 35 + "line": 70, + "column": 51 }, "end": { - "line": 73, - "column": 40 + "line": 70, + "column": 60 }, - "identifierName": "scene" + "identifierName": "undefined" }, - "name": "scene" + "name": "undefined" + } + }, + "operator": "&&", + "right": { + "type": "BinaryExpression", + "start": 3091, + "end": 3116, + "loc": { + "start": { + "line": 70, + "column": 64 + }, + "end": { + "line": 70, + "column": 89 + } }, - "computed": false + "left": { + "type": "MemberExpression", + "start": 3091, + "end": 3107, + "loc": { + "start": { + "line": 70, + "column": 64 + }, + "end": { + "line": 70, + "column": 80 + } + }, + "object": { + "type": "Identifier", + "start": 3091, + "end": 3094, + "loc": { + "start": { + "line": 70, + "column": 64 + }, + "end": { + "line": 70, + "column": 67 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 3095, + "end": 3107, + "loc": { + "start": { + "line": 70, + "column": 68 + }, + "end": { + "line": 70, + "column": 80 + }, + "identifierName": "edgesEnabled" + }, + "name": "edgesEnabled" + }, + "computed": false + }, + "operator": "!==", + "right": { + "type": "NullLiteral", + "start": 3112, + "end": 3116, + "loc": { + "start": { + "line": 70, + "column": 85 + }, + "end": { + "line": 70, + "column": 89 + } + } + } }, - "property": { + "extra": { + "parenthesized": true, + "parenStart": 3056 + } + }, + "consequent": { + "type": "MemberExpression", + "start": 3120, + "end": 3136, + "loc": { + "start": { + "line": 70, + "column": 93 + }, + "end": { + "line": 70, + "column": 109 + } + }, + "object": { "type": "Identifier", - "start": 2342, - "end": 2344, + "start": 3120, + "end": 3123, "loc": { "start": { - "line": 73, - "column": 41 + "line": 70, + "column": 93 }, "end": { - "line": 73, - "column": 43 + "line": 70, + "column": 96 }, - "identifierName": "on" + "identifierName": "cfg" }, - "name": "on" + "name": "cfg" }, - "computed": false - }, - "arguments": [ - { - "type": "StringLiteral", - "start": 2345, - "end": 2351, + "property": { + "type": "Identifier", + "start": 3124, + "end": 3136, "loc": { "start": { - "line": 73, - "column": 44 + "line": 70, + "column": 97 }, "end": { - "line": 73, - "column": 50 - } + "line": 70, + "column": 109 + }, + "identifierName": "edgesEnabled" }, - "extra": { - "rawValue": "tick", - "raw": "\"tick\"" + "name": "edgesEnabled" + }, + "computed": false + }, + "alternate": { + "type": "MemberExpression", + "start": 3139, + "end": 3170, + "loc": { + "start": { + "line": 70, + "column": 112 }, - "value": "tick" + "end": { + "line": 70, + "column": 143 + } }, - { - "type": "ArrowFunctionExpression", - "start": 2353, - "end": 2841, + "object": { + "type": "MemberExpression", + "start": 3139, + "end": 3164, "loc": { "start": { - "line": 73, - "column": 52 + "line": 70, + "column": 112 }, "end": { - "line": 87, - "column": 9 + "line": 70, + "column": 137 } }, - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [ - { + "object": { + "type": "MemberExpression", + "start": 3139, + "end": 3151, + "loc": { + "start": { + "line": 70, + "column": 112 + }, + "end": { + "line": 70, + "column": 124 + } + }, + "object": { "type": "Identifier", - "start": 2354, - "end": 2363, + "start": 3139, + "end": 3145, "loc": { "start": { - "line": 73, - "column": 53 + "line": 70, + "column": 112 }, "end": { - "line": 73, - "column": 62 + "line": 70, + "column": 118 }, - "identifierName": "tickEvent" - }, - "name": "tickEvent" - } - ], - "body": { - "type": "BlockStatement", - "start": 2368, - "end": 2841, - "loc": { - "start": { - "line": 73, - "column": 67 + "identifierName": "viewer" }, - "end": { - "line": 87, - "column": 9 - } + "name": "viewer" }, - "body": [ - { - "type": "IfStatement", - "start": 2399, - "end": 2453, - "loc": { - "start": { - "line": 74, - "column": 12 - }, - "end": { - "line": 76, - "column": 13 - } - }, - "test": { - "type": "UnaryExpression", - "start": 2403, - "end": 2412, - "loc": { - "start": { - "line": 74, - "column": 16 - }, - "end": { - "line": 74, - "column": 25 - } - }, - "operator": "!", - "prefix": true, - "argument": { - "type": "Identifier", - "start": 2404, - "end": 2412, - "loc": { - "start": { - "line": 74, - "column": 17 - }, - "end": { - "line": 74, - "column": 25 - }, - "identifierName": "fastMode" - }, - "name": "fastMode", - "leadingComments": null - }, - "extra": { - "parenthesizedArgument": false - }, - "leadingComments": null + "property": { + "type": "Identifier", + "start": 3146, + "end": 3151, + "loc": { + "start": { + "line": 70, + "column": 119 }, - "consequent": { - "type": "BlockStatement", - "start": 2414, - "end": 2453, - "loc": { - "start": { - "line": 74, - "column": 27 - }, - "end": { - "line": 76, - "column": 13 - } - }, - "body": [ - { - "type": "ReturnStatement", - "start": 2432, - "end": 2439, - "loc": { - "start": { - "line": 75, - "column": 16 - }, - "end": { - "line": 75, - "column": 23 - } - }, - "argument": null - } - ], - "directives": [] + "end": { + "line": 70, + "column": 124 }, - "alternate": null, - "leadingComments": [ - { - "type": "CommentLine", - "value": " Milliseconds", - "start": 2371, - "end": 2386, - "loc": { - "start": { - "line": 73, - "column": 70 - }, - "end": { - "line": 73, - "column": 85 - } - } - } - ] + "identifierName": "scene" }, - { - "type": "ExpressionStatement", - "start": 2466, - "end": 2495, - "loc": { - "start": { - "line": 77, - "column": 12 - }, - "end": { - "line": 77, - "column": 41 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2466, - "end": 2494, - "loc": { - "start": { - "line": 77, - "column": 12 - }, - "end": { - "line": 77, - "column": 40 - } - }, - "operator": "-=", - "left": { - "type": "Identifier", - "start": 2466, - "end": 2471, - "loc": { - "start": { - "line": 77, - "column": 12 - }, - "end": { - "line": 77, - "column": 17 - }, - "identifierName": "timer" - }, - "name": "timer" - }, - "right": { - "type": "MemberExpression", - "start": 2475, - "end": 2494, - "loc": { - "start": { - "line": 77, - "column": 21 - }, - "end": { - "line": 77, - "column": 40 - } - }, - "object": { - "type": "Identifier", - "start": 2475, - "end": 2484, - "loc": { - "start": { - "line": 77, - "column": 21 - }, - "end": { - "line": 77, - "column": 30 - }, - "identifierName": "tickEvent" - }, - "name": "tickEvent" - }, - "property": { - "type": "Identifier", - "start": 2485, - "end": 2494, - "loc": { - "start": { - "line": 77, - "column": 31 - }, - "end": { - "line": 77, - "column": 40 - }, - "identifierName": "deltaTime" - }, - "name": "deltaTime" - }, - "computed": false - } - } + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 3152, + "end": 3164, + "loc": { + "start": { + "line": 70, + "column": 125 }, - { - "type": "IfStatement", - "start": 2508, - "end": 2831, - "loc": { - "start": { - "line": 78, - "column": 12 - }, - "end": { - "line": 86, - "column": 13 - } - }, - "test": { - "type": "BinaryExpression", - "start": 2512, - "end": 2522, - "loc": { - "start": { - "line": 78, - "column": 16 - }, - "end": { - "line": 78, - "column": 26 - } - }, - "left": { - "type": "Identifier", - "start": 2512, - "end": 2517, - "loc": { - "start": { - "line": 78, - "column": 16 - }, - "end": { - "line": 78, - "column": 21 - }, - "identifierName": "timer" - }, - "name": "timer" - }, - "operator": "<=", - "right": { - "type": "NumericLiteral", - "start": 2521, - "end": 2522, - "loc": { - "start": { - "line": 78, - "column": 25 - }, - "end": { - "line": 78, - "column": 26 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - } - }, - "consequent": { - "type": "BlockStatement", - "start": 2524, - "end": 2831, - "loc": { - "start": { - "line": 78, - "column": 28 - }, - "end": { - "line": 86, - "column": 13 - } - }, - "body": [ - { - "type": "IfStatement", - "start": 2542, - "end": 2817, - "loc": { - "start": { - "line": 79, - "column": 16 - }, - "end": { - "line": 85, - "column": 17 - } - }, - "test": { - "type": "Identifier", - "start": 2546, - "end": 2554, - "loc": { - "start": { - "line": 79, - "column": 20 - }, - "end": { - "line": 79, - "column": 28 - }, - "identifierName": "fastMode" - }, - "name": "fastMode" - }, - "consequent": { - "type": "BlockStatement", - "start": 2556, - "end": 2817, - "loc": { - "start": { - "line": 79, - "column": 30 - }, - "end": { - "line": 85, - "column": 17 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 2578, - "end": 2596, - "loc": { - "start": { - "line": 80, - "column": 20 - }, - "end": { - "line": 80, - "column": 38 - } - }, - "expression": { - "type": "CallExpression", - "start": 2578, - "end": 2595, - "loc": { - "start": { - "line": 80, - "column": 20 - }, - "end": { - "line": 80, - "column": 37 - } - }, - "callee": { - "type": "MemberExpression", - "start": 2578, - "end": 2593, - "loc": { - "start": { - "line": 80, - "column": 20 - }, - "end": { - "line": 80, - "column": 35 - } - }, - "object": { - "type": "ThisExpression", - "start": 2578, - "end": 2582, - "loc": { - "start": { - "line": 80, - "column": 20 - }, - "end": { - "line": 80, - "column": 24 - } - } - }, - "property": { - "type": "Identifier", - "start": 2583, - "end": 2593, - "loc": { - "start": { - "line": 80, - "column": 25 - }, - "end": { - "line": 80, - "column": 35 - }, - "identifierName": "_startFade" - }, - "name": "_startFade" - }, - "computed": false - }, - "arguments": [] - } - }, - { - "type": "ExpressionStatement", - "start": 2617, - "end": 2648, - "loc": { - "start": { - "line": 81, - "column": 20 - }, - "end": { - "line": 81, - "column": 51 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2617, - "end": 2647, - "loc": { - "start": { - "line": 81, - "column": 20 - }, - "end": { - "line": 81, - "column": 50 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 2617, - "end": 2640, - "loc": { - "start": { - "line": 81, - "column": 20 - }, - "end": { - "line": 81, - "column": 43 - } - }, - "object": { - "type": "MemberExpression", - "start": 2617, - "end": 2629, - "loc": { - "start": { - "line": 81, - "column": 20 - }, - "end": { - "line": 81, - "column": 32 - } - }, - "object": { - "type": "Identifier", - "start": 2617, - "end": 2623, - "loc": { - "start": { - "line": 81, - "column": 20 - }, - "end": { - "line": 81, - "column": 26 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 2624, - "end": 2629, - "loc": { - "start": { - "line": 81, - "column": 27 - }, - "end": { - "line": 81, - "column": 32 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2630, - "end": 2640, - "loc": { - "start": { - "line": 81, - "column": 33 - }, - "end": { - "line": 81, - "column": 43 - }, - "identifierName": "pbrEnabled" - }, - "name": "pbrEnabled" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 2643, - "end": 2647, - "loc": { - "start": { - "line": 81, - "column": 46 - }, - "end": { - "line": 81, - "column": 50 - } - }, - "value": true - } - } - }, - { - "type": "ExpressionStatement", - "start": 2669, - "end": 2701, - "loc": { - "start": { - "line": 82, - "column": 20 - }, - "end": { - "line": 82, - "column": 52 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2669, - "end": 2700, - "loc": { - "start": { - "line": 82, - "column": 20 - }, - "end": { - "line": 82, - "column": 51 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 2669, - "end": 2693, - "loc": { - "start": { - "line": 82, - "column": 20 - }, - "end": { - "line": 82, - "column": 44 - } - }, - "object": { - "type": "MemberExpression", - "start": 2669, - "end": 2685, - "loc": { - "start": { - "line": 82, - "column": 20 - }, - "end": { - "line": 82, - "column": 36 - } - }, - "object": { - "type": "MemberExpression", - "start": 2669, - "end": 2681, - "loc": { - "start": { - "line": 82, - "column": 20 - }, - "end": { - "line": 82, - "column": 32 - } - }, - "object": { - "type": "Identifier", - "start": 2669, - "end": 2675, - "loc": { - "start": { - "line": 82, - "column": 20 - }, - "end": { - "line": 82, - "column": 26 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 2676, - "end": 2681, - "loc": { - "start": { - "line": 82, - "column": 27 - }, - "end": { - "line": 82, - "column": 32 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2682, - "end": 2685, - "loc": { - "start": { - "line": 82, - "column": 33 - }, - "end": { - "line": 82, - "column": 36 - }, - "identifierName": "sao" - }, - "name": "sao" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2686, - "end": 2693, - "loc": { - "start": { - "line": 82, - "column": 37 - }, - "end": { - "line": 82, - "column": 44 - }, - "identifierName": "enabled" - }, - "name": "enabled" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 2696, - "end": 2700, - "loc": { - "start": { - "line": 82, - "column": 47 - }, - "end": { - "line": 82, - "column": 51 - } - }, - "value": true - } - } - }, - { - "type": "ExpressionStatement", - "start": 2722, - "end": 2761, - "loc": { - "start": { - "line": 83, - "column": 20 - }, - "end": { - "line": 83, - "column": 59 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2722, - "end": 2760, - "loc": { - "start": { - "line": 83, - "column": 20 - }, - "end": { - "line": 83, - "column": 58 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 2722, - "end": 2753, - "loc": { - "start": { - "line": 83, - "column": 20 - }, - "end": { - "line": 83, - "column": 51 - } - }, - "object": { - "type": "MemberExpression", - "start": 2722, - "end": 2747, - "loc": { - "start": { - "line": 83, - "column": 20 - }, - "end": { - "line": 83, - "column": 45 - } - }, - "object": { - "type": "MemberExpression", - "start": 2722, - "end": 2734, - "loc": { - "start": { - "line": 83, - "column": 20 - }, - "end": { - "line": 83, - "column": 32 - } - }, - "object": { - "type": "Identifier", - "start": 2722, - "end": 2728, - "loc": { - "start": { - "line": 83, - "column": 20 - }, - "end": { - "line": 83, - "column": 26 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 2729, - "end": 2734, - "loc": { - "start": { - "line": 83, - "column": 27 - }, - "end": { - "line": 83, - "column": 32 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2735, - "end": 2747, - "loc": { - "start": { - "line": 83, - "column": 33 - }, - "end": { - "line": 83, - "column": 45 - }, - "identifierName": "edgeMaterial" - }, - "name": "edgeMaterial" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2748, - "end": 2753, - "loc": { - "start": { - "line": 83, - "column": 46 - }, - "end": { - "line": 83, - "column": 51 - }, - "identifierName": "edges" - }, - "name": "edges" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 2756, - "end": 2760, - "loc": { - "start": { - "line": 83, - "column": 54 - }, - "end": { - "line": 83, - "column": 58 - } - }, - "value": true - } - } - }, - { - "type": "ExpressionStatement", - "start": 2782, - "end": 2799, - "loc": { - "start": { - "line": 84, - "column": 20 - }, - "end": { - "line": 84, - "column": 37 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2782, - "end": 2798, - "loc": { - "start": { - "line": 84, - "column": 20 - }, - "end": { - "line": 84, - "column": 36 - } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 2782, - "end": 2790, - "loc": { - "start": { - "line": 84, - "column": 20 - }, - "end": { - "line": 84, - "column": 28 - }, - "identifierName": "fastMode" - }, - "name": "fastMode" - }, - "right": { - "type": "BooleanLiteral", - "start": 2793, - "end": 2798, - "loc": { - "start": { - "line": 84, - "column": 31 - }, - "end": { - "line": 84, - "column": 36 - } - }, - "value": false - } - } - } - ], - "directives": [] - }, - "alternate": null - } - ], - "directives": [] - }, - "alternate": null - } - ], - "directives": [] - } - } - ] + "end": { + "line": 70, + "column": 137 + }, + "identifierName": "edgeMaterial" + }, + "name": "edgeMaterial" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 3165, + "end": 3170, + "loc": { + "start": { + "line": 70, + "column": 138 + }, + "end": { + "line": 70, + "column": 143 + }, + "identifierName": "edges" + }, + "name": "edges" + }, + "computed": false + } } } }, { "type": "ExpressionStatement", - "start": 2853, - "end": 3245, + "start": 3181, + "end": 3204, "loc": { "start": { - "line": 89, + "line": 72, "column": 8 }, "end": { - "line": 98, - "column": 11 + "line": 72, + "column": 31 } }, "expression": { "type": "AssignmentExpression", - "start": 2853, - "end": 3244, + "start": 3181, + "end": 3203, "loc": { "start": { - "line": 89, + "line": 72, "column": 8 }, "end": { - "line": 98, - "column": 10 + "line": 72, + "column": 30 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 2853, - "end": 2882, + "start": 3181, + "end": 3196, "loc": { "start": { - "line": 89, + "line": 72, "column": 8 }, "end": { - "line": 89, - "column": 37 + "line": 72, + "column": 23 } }, "object": { "type": "ThisExpression", - "start": 2853, - "end": 2857, + "start": 3181, + "end": 3185, "loc": { "start": { - "line": 89, + "line": 72, "column": 8 }, "end": { - "line": 89, + "line": 72, "column": 12 } } }, "property": { "type": "Identifier", - "start": 2858, - "end": 2882, + "start": 3186, + "end": 3196, "loc": { "start": { - "line": 89, + "line": 72, "column": 13 }, "end": { - "line": 89, - "column": 37 + "line": 72, + "column": 23 }, - "identifierName": "_onSceneObjectVisibility" + "identifierName": "_pInterval" }, - "name": "_onSceneObjectVisibility" + "name": "_pInterval" }, "computed": false }, "right": { - "type": "CallExpression", - "start": 2885, - "end": 3244, + "type": "NullLiteral", + "start": 3199, + "end": 3203, "loc": { "start": { - "line": 89, - "column": 40 + "line": 72, + "column": 26 }, "end": { - "line": 98, - "column": 10 + "line": 72, + "column": 30 } - }, - "callee": { - "type": "MemberExpression", - "start": 2885, - "end": 2900, - "loc": { - "start": { - "line": 89, - "column": 40 + } + } + } + }, + { + "type": "ExpressionStatement", + "start": 3213, + "end": 3239, + "loc": { + "start": { + "line": 73, + "column": 8 + }, + "end": { + "line": 73, + "column": 34 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 3213, + "end": 3238, + "loc": { + "start": { + "line": 73, + "column": 8 + }, + "end": { + "line": 73, + "column": 33 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 3213, + "end": 3232, + "loc": { + "start": { + "line": 73, + "column": 8 + }, + "end": { + "line": 73, + "column": 27 + } + }, + "object": { + "type": "ThisExpression", + "start": 3213, + "end": 3217, + "loc": { + "start": { + "line": 73, + "column": 8 }, "end": { - "line": 89, - "column": 55 + "line": 73, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 3218, + "end": 3232, + "loc": { + "start": { + "line": 73, + "column": 13 + }, + "end": { + "line": 73, + "column": 27 + }, + "identifierName": "_fadeMillisecs" + }, + "name": "_fadeMillisecs" + }, + "computed": false + }, + "right": { + "type": "NumericLiteral", + "start": 3235, + "end": 3238, + "loc": { + "start": { + "line": 73, + "column": 30 + }, + "end": { + "line": 73, + "column": 33 + } + }, + "extra": { + "rawValue": 500, + "raw": "500" + }, + "value": 500 + } + } + }, + { + "type": "VariableDeclaration", + "start": 3249, + "end": 3275, + "loc": { + "start": { + "line": 75, + "column": 8 + }, + "end": { + "line": 75, + "column": 34 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 3253, + "end": 3274, + "loc": { + "start": { + "line": 75, + "column": 12 + }, + "end": { + "line": 75, + "column": 33 + } + }, + "id": { + "type": "Identifier", + "start": 3253, + "end": 3268, + "loc": { + "start": { + "line": 75, + "column": 12 + }, + "end": { + "line": 75, + "column": 27 + }, + "identifierName": "timeoutDuration" + }, + "name": "timeoutDuration" + }, + "init": { + "type": "NumericLiteral", + "start": 3271, + "end": 3274, + "loc": { + "start": { + "line": 75, + "column": 30 + }, + "end": { + "line": 75, + "column": 33 + } + }, + "extra": { + "rawValue": 600, + "raw": "600" + }, + "value": 600 + } + } + ], + "kind": "let", + "trailingComments": [ + { + "type": "CommentLine", + "value": " Milliseconds", + "start": 3276, + "end": 3291, + "loc": { + "start": { + "line": 75, + "column": 35 + }, + "end": { + "line": 75, + "column": 50 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 3300, + "end": 3328, + "loc": { + "start": { + "line": 76, + "column": 8 + }, + "end": { + "line": 76, + "column": 36 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 3304, + "end": 3327, + "loc": { + "start": { + "line": 76, + "column": 12 + }, + "end": { + "line": 76, + "column": 35 + } + }, + "id": { + "type": "Identifier", + "start": 3304, + "end": 3309, + "loc": { + "start": { + "line": 76, + "column": 12 + }, + "end": { + "line": 76, + "column": 17 + }, + "identifierName": "timer" + }, + "name": "timer", + "leadingComments": null + }, + "init": { + "type": "Identifier", + "start": 3312, + "end": 3327, + "loc": { + "start": { + "line": 76, + "column": 20 + }, + "end": { + "line": 76, + "column": 35 + }, + "identifierName": "timeoutDuration" + }, + "name": "timeoutDuration" + }, + "leadingComments": null + } + ], + "kind": "let", + "leadingComments": [ + { + "type": "CommentLine", + "value": " Milliseconds", + "start": 3276, + "end": 3291, + "loc": { + "start": { + "line": 75, + "column": 35 + }, + "end": { + "line": 75, + "column": 50 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 3337, + "end": 3358, + "loc": { + "start": { + "line": 77, + "column": 8 + }, + "end": { + "line": 77, + "column": 29 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 3341, + "end": 3357, + "loc": { + "start": { + "line": 77, + "column": 12 + }, + "end": { + "line": 77, + "column": 28 + } + }, + "id": { + "type": "Identifier", + "start": 3341, + "end": 3349, + "loc": { + "start": { + "line": 77, + "column": 12 + }, + "end": { + "line": 77, + "column": 20 + }, + "identifierName": "fastMode" + }, + "name": "fastMode" + }, + "init": { + "type": "BooleanLiteral", + "start": 3352, + "end": 3357, + "loc": { + "start": { + "line": 77, + "column": 23 + }, + "end": { + "line": 77, + "column": 28 + } + }, + "value": false + } + } + ], + "kind": "let" + }, + { + "type": "ExpressionStatement", + "start": 3368, + "end": 3748, + "loc": { + "start": { + "line": 79, + "column": 8 + }, + "end": { + "line": 88, + "column": 11 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 3368, + "end": 3747, + "loc": { + "start": { + "line": 79, + "column": 8 + }, + "end": { + "line": 88, + "column": 10 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 3368, + "end": 3388, + "loc": { + "start": { + "line": 79, + "column": 8 + }, + "end": { + "line": 79, + "column": 28 + } + }, + "object": { + "type": "ThisExpression", + "start": 3368, + "end": 3372, + "loc": { + "start": { + "line": 79, + "column": 8 + }, + "end": { + "line": 79, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 3373, + "end": 3388, + "loc": { + "start": { + "line": 79, + "column": 13 + }, + "end": { + "line": 79, + "column": 28 + }, + "identifierName": "_onCameraMatrix" + }, + "name": "_onCameraMatrix" + }, + "computed": false + }, + "right": { + "type": "CallExpression", + "start": 3391, + "end": 3747, + "loc": { + "start": { + "line": 79, + "column": 31 + }, + "end": { + "line": 88, + "column": 10 + } + }, + "callee": { + "type": "MemberExpression", + "start": 3391, + "end": 3413, + "loc": { + "start": { + "line": 79, + "column": 31 + }, + "end": { + "line": 79, + "column": 53 } }, "object": { "type": "MemberExpression", - "start": 2885, - "end": 2897, + "start": 3391, + "end": 3410, "loc": { "start": { - "line": 89, - "column": 40 + "line": 79, + "column": 31 }, "end": { - "line": 89, - "column": 52 + "line": 79, + "column": 50 } }, "object": { - "type": "Identifier", - "start": 2885, - "end": 2891, + "type": "MemberExpression", + "start": 3391, + "end": 3403, "loc": { "start": { - "line": 89, - "column": 40 + "line": 79, + "column": 31 }, "end": { - "line": 89, - "column": 46 + "line": 79, + "column": 43 + } + }, + "object": { + "type": "Identifier", + "start": 3391, + "end": 3397, + "loc": { + "start": { + "line": 79, + "column": 31 + }, + "end": { + "line": 79, + "column": 37 + }, + "identifierName": "viewer" }, - "identifierName": "viewer" + "name": "viewer" }, - "name": "viewer" + "property": { + "type": "Identifier", + "start": 3398, + "end": 3403, + "loc": { + "start": { + "line": 79, + "column": 38 + }, + "end": { + "line": 79, + "column": 43 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false }, "property": { "type": "Identifier", - "start": 2892, - "end": 2897, + "start": 3404, + "end": 3410, "loc": { "start": { - "line": 89, - "column": 47 + "line": 79, + "column": 44 }, "end": { - "line": 89, - "column": 52 + "line": 79, + "column": 50 }, - "identifierName": "scene" + "identifierName": "camera" }, - "name": "scene" + "name": "camera" }, "computed": false }, "property": { "type": "Identifier", - "start": 2898, - "end": 2900, + "start": 3411, + "end": 3413, "loc": { "start": { - "line": 89, - "column": 53 + "line": 79, + "column": 51 }, "end": { - "line": 89, - "column": 55 + "line": 79, + "column": 53 }, "identifierName": "on" }, @@ -21347,35 +23845,35 @@ "arguments": [ { "type": "StringLiteral", - "start": 2901, - "end": 2919, + "start": 3414, + "end": 3422, "loc": { "start": { - "line": 89, - "column": 56 + "line": 79, + "column": 54 }, "end": { - "line": 89, - "column": 74 + "line": 79, + "column": 62 } }, "extra": { - "rawValue": "objectVisibility", - "raw": "\"objectVisibility\"" + "rawValue": "matrix", + "raw": "\"matrix\"" }, - "value": "objectVisibility" + "value": "matrix" }, { "type": "ArrowFunctionExpression", - "start": 2921, - "end": 3243, + "start": 3424, + "end": 3746, "loc": { "start": { - "line": 89, - "column": 76 + "line": 79, + "column": 64 }, "end": { - "line": 98, + "line": 88, "column": 9 } }, @@ -21386,59 +23884,59 @@ "params": [], "body": { "type": "BlockStatement", - "start": 2927, - "end": 3243, + "start": 3430, + "end": 3746, "loc": { "start": { - "line": 89, - "column": 82 + "line": 79, + "column": 70 }, "end": { - "line": 98, + "line": 88, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 2941, - "end": 2965, + "start": 3444, + "end": 3468, "loc": { "start": { - "line": 90, + "line": 80, "column": 12 }, "end": { - "line": 90, + "line": 80, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 2941, - "end": 2964, + "start": 3444, + "end": 3467, "loc": { "start": { - "line": 90, + "line": 80, "column": 12 }, "end": { - "line": 90, + "line": 80, "column": 35 } }, "operator": "=", "left": { "type": "Identifier", - "start": 2941, - "end": 2946, + "start": 3444, + "end": 3449, "loc": { "start": { - "line": 90, + "line": 80, "column": 12 }, "end": { - "line": 90, + "line": 80, "column": 17 }, "identifierName": "timer" @@ -21447,15 +23945,15 @@ }, "right": { "type": "Identifier", - "start": 2949, - "end": 2964, + "start": 3452, + "end": 3467, "loc": { "start": { - "line": 90, + "line": 80, "column": 20 }, "end": { - "line": 90, + "line": 80, "column": 35 }, "identifierName": "timeoutDuration" @@ -21466,29 +23964,29 @@ }, { "type": "IfStatement", - "start": 2978, - "end": 3233, + "start": 3481, + "end": 3736, "loc": { "start": { - "line": 91, + "line": 81, "column": 12 }, "end": { - "line": 97, + "line": 87, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 2982, - "end": 2991, + "start": 3485, + "end": 3494, "loc": { "start": { - "line": 91, + "line": 81, "column": 16 }, "end": { - "line": 91, + "line": 81, "column": 25 } }, @@ -21496,15 +23994,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 2983, - "end": 2991, + "start": 3486, + "end": 3494, "loc": { "start": { - "line": 91, + "line": 81, "column": 17 }, "end": { - "line": 91, + "line": 81, "column": 25 }, "identifierName": "fastMode" @@ -21517,87 +24015,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 2993, - "end": 3233, + "start": 3496, + "end": 3736, "loc": { "start": { - "line": 91, + "line": 81, "column": 27 }, "end": { - "line": 97, + "line": 87, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 3011, - "end": 3030, + "start": 3514, + "end": 3533, "loc": { "start": { - "line": 92, + "line": 82, "column": 16 }, "end": { - "line": 92, + "line": 82, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 3011, - "end": 3029, + "start": 3514, + "end": 3532, "loc": { "start": { - "line": 92, + "line": 82, "column": 16 }, "end": { - "line": 92, + "line": 82, "column": 34 } }, "callee": { "type": "MemberExpression", - "start": 3011, - "end": 3027, + "start": 3514, + "end": 3530, "loc": { "start": { - "line": 92, + "line": 82, "column": 16 }, "end": { - "line": 92, + "line": 82, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 3011, - "end": 3015, + "start": 3514, + "end": 3518, "loc": { "start": { - "line": 92, + "line": 82, "column": 16 }, "end": { - "line": 92, + "line": 82, "column": 20 } } }, "property": { "type": "Identifier", - "start": 3016, - "end": 3027, + "start": 3519, + "end": 3530, "loc": { "start": { - "line": 92, + "line": 82, "column": 21 }, "end": { - "line": 92, + "line": 82, "column": 32 }, "identifierName": "_cancelFade" @@ -21611,72 +24109,72 @@ }, { "type": "ExpressionStatement", - "start": 3047, - "end": 3079, + "start": 3550, + "end": 3582, "loc": { "start": { - "line": 93, + "line": 83, "column": 16 }, "end": { - "line": 93, + "line": 83, "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 3047, - "end": 3078, + "start": 3550, + "end": 3581, "loc": { "start": { - "line": 93, + "line": 83, "column": 16 }, "end": { - "line": 93, + "line": 83, "column": 47 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 3047, - "end": 3070, + "start": 3550, + "end": 3573, "loc": { "start": { - "line": 93, + "line": 83, "column": 16 }, "end": { - "line": 93, + "line": 83, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 3047, - "end": 3059, + "start": 3550, + "end": 3562, "loc": { "start": { - "line": 93, + "line": 83, "column": 16 }, "end": { - "line": 93, + "line": 83, "column": 28 } }, "object": { "type": "Identifier", - "start": 3047, - "end": 3053, + "start": 3550, + "end": 3556, "loc": { "start": { - "line": 93, + "line": 83, "column": 16 }, "end": { - "line": 93, + "line": 83, "column": 22 }, "identifierName": "viewer" @@ -21685,15 +24183,15 @@ }, "property": { "type": "Identifier", - "start": 3054, - "end": 3059, + "start": 3557, + "end": 3562, "loc": { "start": { - "line": 93, + "line": 83, "column": 23 }, "end": { - "line": 93, + "line": 83, "column": 28 }, "identifierName": "scene" @@ -21704,15 +24202,15 @@ }, "property": { "type": "Identifier", - "start": 3060, - "end": 3070, + "start": 3563, + "end": 3573, "loc": { "start": { - "line": 93, + "line": 83, "column": 29 }, "end": { - "line": 93, + "line": 83, "column": 39 }, "identifierName": "pbrEnabled" @@ -21723,15 +24221,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 3073, - "end": 3078, + "start": 3576, + "end": 3581, "loc": { "start": { - "line": 93, + "line": 83, "column": 42 }, "end": { - "line": 93, + "line": 83, "column": 47 } }, @@ -21741,86 +24239,86 @@ }, { "type": "ExpressionStatement", - "start": 3096, - "end": 3129, + "start": 3599, + "end": 3632, "loc": { "start": { - "line": 94, + "line": 84, "column": 16 }, "end": { - "line": 94, + "line": 84, "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 3096, - "end": 3128, + "start": 3599, + "end": 3631, "loc": { "start": { - "line": 94, + "line": 84, "column": 16 }, "end": { - "line": 94, + "line": 84, "column": 48 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 3096, - "end": 3120, + "start": 3599, + "end": 3623, "loc": { "start": { - "line": 94, + "line": 84, "column": 16 }, "end": { - "line": 94, + "line": 84, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 3096, - "end": 3112, + "start": 3599, + "end": 3615, "loc": { "start": { - "line": 94, + "line": 84, "column": 16 }, "end": { - "line": 94, + "line": 84, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 3096, - "end": 3108, + "start": 3599, + "end": 3611, "loc": { "start": { - "line": 94, + "line": 84, "column": 16 }, "end": { - "line": 94, + "line": 84, "column": 28 } }, "object": { "type": "Identifier", - "start": 3096, - "end": 3102, + "start": 3599, + "end": 3605, "loc": { "start": { - "line": 94, + "line": 84, "column": 16 }, "end": { - "line": 94, + "line": 84, "column": 22 }, "identifierName": "viewer" @@ -21829,15 +24327,15 @@ }, "property": { "type": "Identifier", - "start": 3103, - "end": 3108, + "start": 3606, + "end": 3611, "loc": { "start": { - "line": 94, + "line": 84, "column": 23 }, "end": { - "line": 94, + "line": 84, "column": 28 }, "identifierName": "scene" @@ -21848,15 +24346,15 @@ }, "property": { "type": "Identifier", - "start": 3109, - "end": 3112, + "start": 3612, + "end": 3615, "loc": { "start": { - "line": 94, + "line": 84, "column": 29 }, "end": { - "line": 94, + "line": 84, "column": 32 }, "identifierName": "sao" @@ -21867,15 +24365,15 @@ }, "property": { "type": "Identifier", - "start": 3113, - "end": 3120, + "start": 3616, + "end": 3623, "loc": { "start": { - "line": 94, + "line": 84, "column": 33 }, "end": { - "line": 94, + "line": 84, "column": 40 }, "identifierName": "enabled" @@ -21886,15 +24384,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 3123, - "end": 3128, + "start": 3626, + "end": 3631, "loc": { "start": { - "line": 94, + "line": 84, "column": 43 }, "end": { - "line": 94, + "line": 84, "column": 48 } }, @@ -21904,86 +24402,86 @@ }, { "type": "ExpressionStatement", - "start": 3146, - "end": 3186, + "start": 3649, + "end": 3689, "loc": { "start": { - "line": 95, + "line": 85, "column": 16 }, "end": { - "line": 95, + "line": 85, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 3146, - "end": 3185, + "start": 3649, + "end": 3688, "loc": { "start": { - "line": 95, + "line": 85, "column": 16 }, "end": { - "line": 95, + "line": 85, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 3146, - "end": 3177, + "start": 3649, + "end": 3680, "loc": { "start": { - "line": 95, + "line": 85, "column": 16 }, "end": { - "line": 95, + "line": 85, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 3146, - "end": 3171, + "start": 3649, + "end": 3674, "loc": { "start": { - "line": 95, + "line": 85, "column": 16 }, "end": { - "line": 95, + "line": 85, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 3146, - "end": 3158, + "start": 3649, + "end": 3661, "loc": { "start": { - "line": 95, + "line": 85, "column": 16 }, "end": { - "line": 95, + "line": 85, "column": 28 } }, "object": { "type": "Identifier", - "start": 3146, - "end": 3152, + "start": 3649, + "end": 3655, "loc": { "start": { - "line": 95, + "line": 85, "column": 16 }, "end": { - "line": 95, + "line": 85, "column": 22 }, "identifierName": "viewer" @@ -21992,15 +24490,15 @@ }, "property": { "type": "Identifier", - "start": 3153, - "end": 3158, + "start": 3656, + "end": 3661, "loc": { "start": { - "line": 95, + "line": 85, "column": 23 }, "end": { - "line": 95, + "line": 85, "column": 28 }, "identifierName": "scene" @@ -22011,15 +24509,15 @@ }, "property": { "type": "Identifier", - "start": 3159, - "end": 3171, + "start": 3662, + "end": 3674, "loc": { "start": { - "line": 95, + "line": 85, "column": 29 }, "end": { - "line": 95, + "line": 85, "column": 41 }, "identifierName": "edgeMaterial" @@ -22030,15 +24528,15 @@ }, "property": { "type": "Identifier", - "start": 3172, - "end": 3177, + "start": 3675, + "end": 3680, "loc": { "start": { - "line": 95, + "line": 85, "column": 42 }, "end": { - "line": 95, + "line": 85, "column": 47 }, "identifierName": "edges" @@ -22049,15 +24547,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 3180, - "end": 3185, + "start": 3683, + "end": 3688, "loc": { "start": { - "line": 95, + "line": 85, "column": 50 }, "end": { - "line": 95, + "line": 85, "column": 55 } }, @@ -22067,44 +24565,44 @@ }, { "type": "ExpressionStatement", - "start": 3203, - "end": 3219, + "start": 3706, + "end": 3722, "loc": { "start": { - "line": 96, + "line": 86, "column": 16 }, "end": { - "line": 96, + "line": 86, "column": 32 } }, "expression": { "type": "AssignmentExpression", - "start": 3203, - "end": 3218, + "start": 3706, + "end": 3721, "loc": { "start": { - "line": 96, + "line": 86, "column": 16 }, "end": { - "line": 96, + "line": 86, "column": 31 } }, "operator": "=", "left": { "type": "Identifier", - "start": 3203, - "end": 3211, + "start": 3706, + "end": 3714, "loc": { "start": { - "line": 96, + "line": 86, "column": 16 }, "end": { - "line": 96, + "line": 86, "column": 24 }, "identifierName": "fastMode" @@ -22113,15 +24611,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 3214, - "end": 3218, + "start": 3717, + "end": 3721, "loc": { "start": { - "line": 96, + "line": 86, "column": 27 }, "end": { - "line": 96, + "line": 86, "column": 31 } }, @@ -22143,271 +24641,172 @@ } }, { - "type": "VariableDeclaration", - "start": 3255, - "end": 3272, + "type": "ExpressionStatement", + "start": 3758, + "end": 4501, "loc": { "start": { - "line": 100, + "line": 90, "column": 8 }, "end": { - "line": 100, - "column": 25 + "line": 107, + "column": 11 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 3259, - "end": 3271, + "expression": { + "type": "AssignmentExpression", + "start": 3758, + "end": 4500, + "loc": { + "start": { + "line": 90, + "column": 8 + }, + "end": { + "line": 107, + "column": 10 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 3758, + "end": 3775, "loc": { "start": { - "line": 100, - "column": 12 + "line": 90, + "column": 8 }, "end": { - "line": 100, - "column": 24 + "line": 90, + "column": 25 } }, - "id": { - "type": "Identifier", - "start": 3259, - "end": 3263, + "object": { + "type": "ThisExpression", + "start": 3758, + "end": 3762, "loc": { "start": { - "line": 100, - "column": 12 + "line": 90, + "column": 8 }, "end": { - "line": 100, - "column": 16 - }, - "identifierName": "down" - }, - "name": "down" - }, - "init": { - "type": "BooleanLiteral", - "start": 3266, - "end": 3271, - "loc": { - "start": { - "line": 100, - "column": 19 - }, - "end": { - "line": 100, - "column": 24 - } - }, - "value": false - } - } - ], - "kind": "let" - }, - { - "type": "ExpressionStatement", - "start": 3282, - "end": 3691, - "loc": { - "start": { - "line": 102, - "column": 8 - }, - "end": { - "line": 112, - "column": 11 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 3282, - "end": 3690, - "loc": { - "start": { - "line": 102, - "column": 8 - }, - "end": { - "line": 112, - "column": 10 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 3282, - "end": 3304, - "loc": { - "start": { - "line": 102, - "column": 8 - }, - "end": { - "line": 102, - "column": 30 - } - }, - "object": { - "type": "ThisExpression", - "start": 3282, - "end": 3286, - "loc": { - "start": { - "line": 102, - "column": 8 - }, - "end": { - "line": 102, - "column": 12 - } - } + "line": 90, + "column": 12 + } + } }, "property": { "type": "Identifier", - "start": 3287, - "end": 3304, + "start": 3763, + "end": 3775, "loc": { "start": { - "line": 102, + "line": 90, "column": 13 }, "end": { - "line": 102, - "column": 30 + "line": 90, + "column": 25 }, - "identifierName": "_onSceneMouseDown" + "identifierName": "_onSceneTick" }, - "name": "_onSceneMouseDown" + "name": "_onSceneTick" }, "computed": false }, "right": { "type": "CallExpression", - "start": 3307, - "end": 3690, + "start": 3778, + "end": 4500, "loc": { "start": { - "line": 102, - "column": 33 + "line": 90, + "column": 28 }, "end": { - "line": 112, + "line": 107, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 3307, - "end": 3328, + "start": 3778, + "end": 3793, "loc": { "start": { - "line": 102, - "column": 33 + "line": 90, + "column": 28 }, "end": { - "line": 102, - "column": 54 + "line": 90, + "column": 43 } }, "object": { "type": "MemberExpression", - "start": 3307, - "end": 3325, + "start": 3778, + "end": 3790, "loc": { "start": { - "line": 102, - "column": 33 + "line": 90, + "column": 28 }, "end": { - "line": 102, - "column": 51 + "line": 90, + "column": 40 } }, "object": { - "type": "MemberExpression", - "start": 3307, - "end": 3319, + "type": "Identifier", + "start": 3778, + "end": 3784, "loc": { "start": { - "line": 102, - "column": 33 + "line": 90, + "column": 28 }, "end": { - "line": 102, - "column": 45 - } - }, - "object": { - "type": "Identifier", - "start": 3307, - "end": 3313, - "loc": { - "start": { - "line": 102, - "column": 33 - }, - "end": { - "line": 102, - "column": 39 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 3314, - "end": 3319, - "loc": { - "start": { - "line": 102, - "column": 40 - }, - "end": { - "line": 102, - "column": 45 - }, - "identifierName": "scene" + "line": 90, + "column": 34 }, - "name": "scene" + "identifierName": "viewer" }, - "computed": false + "name": "viewer" }, "property": { "type": "Identifier", - "start": 3320, - "end": 3325, + "start": 3785, + "end": 3790, "loc": { "start": { - "line": 102, - "column": 46 + "line": 90, + "column": 35 }, "end": { - "line": 102, - "column": 51 + "line": 90, + "column": 40 }, - "identifierName": "input" + "identifierName": "scene" }, - "name": "input" + "name": "scene" }, "computed": false }, "property": { "type": "Identifier", - "start": 3326, - "end": 3328, + "start": 3791, + "end": 3793, "loc": { "start": { - "line": 102, - "column": 52 + "line": 90, + "column": 41 }, "end": { - "line": 102, - "column": 54 + "line": 90, + "column": 43 }, "identifierName": "on" }, @@ -22418,35 +24817,35 @@ "arguments": [ { "type": "StringLiteral", - "start": 3329, - "end": 3340, + "start": 3794, + "end": 3800, "loc": { "start": { - "line": 102, - "column": 55 + "line": 90, + "column": 44 }, "end": { - "line": 102, - "column": 66 + "line": 90, + "column": 50 } }, "extra": { - "rawValue": "mousedown", - "raw": "\"mousedown\"" + "rawValue": "tick", + "raw": "\"tick\"" }, - "value": "mousedown" + "value": "tick" }, { "type": "ArrowFunctionExpression", - "start": 3342, - "end": 3689, + "start": 3802, + "end": 4499, "loc": { "start": { - "line": 102, - "column": 68 + "line": 90, + "column": 52 }, "end": { - "line": 112, + "line": 107, "column": 9 } }, @@ -22454,62 +24853,187 @@ "generator": false, "expression": false, "async": false, - "params": [], + "params": [ + { + "type": "Identifier", + "start": 3803, + "end": 3812, + "loc": { + "start": { + "line": 90, + "column": 53 + }, + "end": { + "line": 90, + "column": 62 + }, + "identifierName": "tickEvent" + }, + "name": "tickEvent" + } + ], "body": { "type": "BlockStatement", - "start": 3348, - "end": 3689, + "start": 3817, + "end": 4499, "loc": { "start": { - "line": 102, - "column": 74 + "line": 90, + "column": 67 }, "end": { - "line": 112, + "line": 107, "column": 9 } }, "body": [ + { + "type": "IfStatement", + "start": 3848, + "end": 3902, + "loc": { + "start": { + "line": 91, + "column": 12 + }, + "end": { + "line": 93, + "column": 13 + } + }, + "test": { + "type": "UnaryExpression", + "start": 3852, + "end": 3861, + "loc": { + "start": { + "line": 91, + "column": 16 + }, + "end": { + "line": 91, + "column": 25 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 3853, + "end": 3861, + "loc": { + "start": { + "line": 91, + "column": 17 + }, + "end": { + "line": 91, + "column": 25 + }, + "identifierName": "fastMode" + }, + "name": "fastMode", + "leadingComments": null + }, + "extra": { + "parenthesizedArgument": false + }, + "leadingComments": null + }, + "consequent": { + "type": "BlockStatement", + "start": 3863, + "end": 3902, + "loc": { + "start": { + "line": 91, + "column": 27 + }, + "end": { + "line": 93, + "column": 13 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 3881, + "end": 3888, + "loc": { + "start": { + "line": 92, + "column": 16 + }, + "end": { + "line": 92, + "column": 23 + } + }, + "argument": null + } + ], + "directives": [] + }, + "alternate": null, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Milliseconds", + "start": 3820, + "end": 3835, + "loc": { + "start": { + "line": 90, + "column": 70 + }, + "end": { + "line": 90, + "column": 85 + } + } + } + ] + }, { "type": "ExpressionStatement", - "start": 3362, - "end": 3386, + "start": 3915, + "end": 3944, "loc": { "start": { - "line": 103, + "line": 94, "column": 12 }, "end": { - "line": 103, - "column": 36 + "line": 94, + "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 3362, - "end": 3385, + "start": 3915, + "end": 3943, "loc": { "start": { - "line": 103, + "line": 94, "column": 12 }, "end": { - "line": 103, - "column": 35 + "line": 94, + "column": 40 } }, - "operator": "=", + "operator": "-=", "left": { "type": "Identifier", - "start": 3362, - "end": 3367, + "start": 3915, + "end": 3920, "loc": { "start": { - "line": 103, + "line": 94, "column": 12 }, "end": { - "line": 103, + "line": 94, "column": 17 }, "identifierName": "timer" @@ -22517,757 +25041,1082 @@ "name": "timer" }, "right": { - "type": "Identifier", - "start": 3370, - "end": 3385, + "type": "MemberExpression", + "start": 3924, + "end": 3943, "loc": { "start": { - "line": 103, - "column": 20 + "line": 94, + "column": 21 }, "end": { - "line": 103, - "column": 35 + "line": 94, + "column": 40 + } + }, + "object": { + "type": "Identifier", + "start": 3924, + "end": 3933, + "loc": { + "start": { + "line": 94, + "column": 21 + }, + "end": { + "line": 94, + "column": 30 + }, + "identifierName": "tickEvent" }, - "identifierName": "timeoutDuration" + "name": "tickEvent" }, - "name": "timeoutDuration" + "property": { + "type": "Identifier", + "start": 3934, + "end": 3943, + "loc": { + "start": { + "line": 94, + "column": 31 + }, + "end": { + "line": 94, + "column": 40 + }, + "identifierName": "deltaTime" + }, + "name": "deltaTime" + }, + "computed": false } } }, { "type": "IfStatement", - "start": 3399, - "end": 3654, + "start": 3957, + "end": 4489, "loc": { "start": { - "line": 104, + "line": 95, "column": 12 }, "end": { - "line": 110, + "line": 106, "column": 13 } }, "test": { - "type": "UnaryExpression", - "start": 3403, - "end": 3412, + "type": "BinaryExpression", + "start": 3961, + "end": 3971, "loc": { "start": { - "line": 104, + "line": 95, "column": 16 }, "end": { - "line": 104, - "column": 25 + "line": 95, + "column": 26 } }, - "operator": "!", - "prefix": true, - "argument": { + "left": { "type": "Identifier", - "start": 3404, - "end": 3412, + "start": 3961, + "end": 3966, "loc": { "start": { - "line": 104, - "column": 17 + "line": 95, + "column": 16 }, "end": { - "line": 104, - "column": 25 + "line": 95, + "column": 21 }, - "identifierName": "fastMode" + "identifierName": "timer" }, - "name": "fastMode" + "name": "timer" }, - "extra": { - "parenthesizedArgument": false + "operator": "<=", + "right": { + "type": "NumericLiteral", + "start": 3970, + "end": 3971, + "loc": { + "start": { + "line": 95, + "column": 25 + }, + "end": { + "line": 95, + "column": 26 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 } }, "consequent": { "type": "BlockStatement", - "start": 3414, - "end": 3654, + "start": 3973, + "end": 4489, "loc": { "start": { - "line": 104, - "column": 27 + "line": 95, + "column": 28 }, "end": { - "line": 110, + "line": 106, "column": 13 } }, "body": [ { - "type": "ExpressionStatement", - "start": 3432, - "end": 3451, + "type": "IfStatement", + "start": 3991, + "end": 4475, "loc": { "start": { - "line": 105, + "line": 96, "column": 16 }, "end": { "line": 105, - "column": 35 + "column": 17 } }, - "expression": { - "type": "CallExpression", - "start": 3432, - "end": 3450, + "test": { + "type": "Identifier", + "start": 3995, + "end": 4003, "loc": { "start": { - "line": 105, - "column": 16 + "line": 96, + "column": 20 }, "end": { - "line": 105, - "column": 34 - } - }, - "callee": { - "type": "MemberExpression", - "start": 3432, - "end": 3448, - "loc": { - "start": { - "line": 105, - "column": 16 - }, - "end": { - "line": 105, - "column": 32 - } - }, - "object": { - "type": "ThisExpression", - "start": 3432, - "end": 3436, - "loc": { - "start": { - "line": 105, - "column": 16 - }, - "end": { - "line": 105, - "column": 20 - } - } - }, - "property": { - "type": "Identifier", - "start": 3437, - "end": 3448, - "loc": { - "start": { - "line": 105, - "column": 21 - }, - "end": { - "line": 105, - "column": 32 - }, - "identifierName": "_cancelFade" - }, - "name": "_cancelFade" + "line": 96, + "column": 28 }, - "computed": false - }, - "arguments": [] - } - }, - { - "type": "ExpressionStatement", - "start": 3468, - "end": 3500, - "loc": { - "start": { - "line": 106, - "column": 16 + "identifierName": "fastMode" }, - "end": { - "line": 106, - "column": 48 - } + "name": "fastMode" }, - "expression": { - "type": "AssignmentExpression", - "start": 3468, - "end": 3499, + "consequent": { + "type": "BlockStatement", + "start": 4005, + "end": 4475, "loc": { "start": { - "line": 106, - "column": 16 + "line": 96, + "column": 30 }, "end": { - "line": 106, - "column": 47 + "line": 105, + "column": 17 } }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 3468, - "end": 3491, - "loc": { - "start": { - "line": 106, - "column": 16 - }, - "end": { - "line": 106, - "column": 39 - } - }, - "object": { - "type": "MemberExpression", - "start": 3468, - "end": 3480, + "body": [ + { + "type": "ExpressionStatement", + "start": 4027, + "end": 4045, "loc": { "start": { - "line": 106, - "column": 16 + "line": 97, + "column": 20 }, "end": { - "line": 106, - "column": 28 + "line": 97, + "column": 38 } }, - "object": { - "type": "Identifier", - "start": 3468, - "end": 3474, + "expression": { + "type": "CallExpression", + "start": 4027, + "end": 4044, "loc": { "start": { - "line": 106, - "column": 16 + "line": 97, + "column": 20 }, "end": { - "line": 106, - "column": 22 - }, - "identifierName": "viewer" + "line": 97, + "column": 37 + } }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 3475, - "end": 3480, - "loc": { - "start": { - "line": 106, - "column": 23 + "callee": { + "type": "MemberExpression", + "start": 4027, + "end": 4042, + "loc": { + "start": { + "line": 97, + "column": 20 + }, + "end": { + "line": 97, + "column": 35 + } }, - "end": { - "line": 106, - "column": 28 + "object": { + "type": "ThisExpression", + "start": 4027, + "end": 4031, + "loc": { + "start": { + "line": 97, + "column": 20 + }, + "end": { + "line": 97, + "column": 24 + } + } }, - "identifierName": "scene" + "property": { + "type": "Identifier", + "start": 4032, + "end": 4042, + "loc": { + "start": { + "line": 97, + "column": 25 + }, + "end": { + "line": 97, + "column": 35 + }, + "identifierName": "_startFade" + }, + "name": "_startFade" + }, + "computed": false }, - "name": "scene" - }, - "computed": false + "arguments": [] + } }, - "property": { - "type": "Identifier", - "start": 3481, - "end": 3491, + { + "type": "ExpressionStatement", + "start": 4066, + "end": 4418, "loc": { "start": { - "line": 106, - "column": 29 + "line": 98, + "column": 20 }, "end": { - "line": 106, - "column": 39 - }, - "identifierName": "pbrEnabled" + "line": 102, + "column": 28 + } }, - "name": "pbrEnabled" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 3494, - "end": 3499, - "loc": { - "start": { - "line": 106, - "column": 42 - }, - "end": { - "line": 106, - "column": 47 - } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 3517, - "end": 3550, - "loc": { - "start": { - "line": 107, - "column": 16 - }, - "end": { - "line": 107, - "column": 49 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 3517, - "end": 3549, - "loc": { - "start": { - "line": 107, - "column": 16 - }, - "end": { - "line": 107, - "column": 48 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 3517, - "end": 3541, - "loc": { - "start": { - "line": 107, - "column": 16 - }, - "end": { - "line": 107, - "column": 40 - } - }, - "object": { - "type": "MemberExpression", - "start": 3517, - "end": 3533, - "loc": { - "start": { - "line": 107, - "column": 16 - }, - "end": { - "line": 107, - "column": 32 - } - }, - "object": { - "type": "MemberExpression", - "start": 3517, - "end": 3529, + "expression": { + "type": "AssignmentExpression", + "start": 4066, + "end": 4417, "loc": { "start": { - "line": 107, - "column": 16 + "line": 98, + "column": 20 }, "end": { - "line": 107, - "column": 28 + "line": 102, + "column": 27 } }, - "object": { - "type": "Identifier", - "start": 3517, - "end": 3523, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 4066, + "end": 4082, "loc": { "start": { - "line": 107, - "column": 16 + "line": 98, + "column": 20 }, "end": { - "line": 107, - "column": 22 + "line": 98, + "column": 36 + } + }, + "object": { + "type": "ThisExpression", + "start": 4066, + "end": 4070, + "loc": { + "start": { + "line": 98, + "column": 20 + }, + "end": { + "line": 98, + "column": 24 + } + } + }, + "property": { + "type": "Identifier", + "start": 4071, + "end": 4082, + "loc": { + "start": { + "line": 98, + "column": 25 + }, + "end": { + "line": 98, + "column": 36 + }, + "identifierName": "_pInterval2" }, - "identifierName": "viewer" + "name": "_pInterval2" }, - "name": "viewer" + "computed": false }, - "property": { - "type": "Identifier", - "start": 3524, - "end": 3529, + "right": { + "type": "CallExpression", + "start": 4085, + "end": 4417, "loc": { "start": { - "line": 107, - "column": 23 + "line": 98, + "column": 39 }, "end": { - "line": 107, - "column": 28 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 3530, - "end": 3533, - "loc": { - "start": { - "line": 107, - "column": 29 + "line": 102, + "column": 27 + } }, - "end": { - "line": 107, - "column": 32 + "callee": { + "type": "Identifier", + "start": 4085, + "end": 4095, + "loc": { + "start": { + "line": 98, + "column": 39 + }, + "end": { + "line": 98, + "column": 49 + }, + "identifierName": "setTimeout" + }, + "name": "setTimeout" }, - "identifierName": "sao" - }, - "name": "sao" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 3534, - "end": 3541, - "loc": { - "start": { - "line": 107, - "column": 33 - }, - "end": { - "line": 107, - "column": 40 - }, - "identifierName": "enabled" - }, - "name": "enabled" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 3544, - "end": 3549, - "loc": { - "start": { - "line": 107, - "column": 43 - }, - "end": { - "line": 107, - "column": 48 - } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 3567, - "end": 3607, - "loc": { - "start": { - "line": 108, - "column": 16 - }, - "end": { - "line": 108, - "column": 56 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 3567, - "end": 3606, - "loc": { - "start": { - "line": 108, - "column": 16 - }, - "end": { - "line": 108, - "column": 55 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 3567, - "end": 3598, - "loc": { - "start": { - "line": 108, - "column": 16 - }, - "end": { - "line": 108, - "column": 47 + "arguments": [ + { + "type": "ArrowFunctionExpression", + "start": 4096, + "end": 4411, + "loc": { + "start": { + "line": 98, + "column": 50 + }, + "end": { + "line": 102, + "column": 21 + } + }, + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 4102, + "end": 4411, + "loc": { + "start": { + "line": 98, + "column": 56 + }, + "end": { + "line": 102, + "column": 21 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 4199, + "end": 4242, + "loc": { + "start": { + "line": 99, + "column": 24 + }, + "end": { + "line": 99, + "column": 67 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 4199, + "end": 4241, + "loc": { + "start": { + "line": 99, + "column": 24 + }, + "end": { + "line": 99, + "column": 66 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 4199, + "end": 4222, + "loc": { + "start": { + "line": 99, + "column": 24 + }, + "end": { + "line": 99, + "column": 47 + } + }, + "object": { + "type": "MemberExpression", + "start": 4199, + "end": 4211, + "loc": { + "start": { + "line": 99, + "column": 24 + }, + "end": { + "line": 99, + "column": 36 + } + }, + "object": { + "type": "Identifier", + "start": 4199, + "end": 4205, + "loc": { + "start": { + "line": 99, + "column": 24 + }, + "end": { + "line": 99, + "column": 30 + }, + "identifierName": "viewer" + }, + "name": "viewer", + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 4206, + "end": 4211, + "loc": { + "start": { + "line": 99, + "column": 31 + }, + "end": { + "line": 99, + "column": 36 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 4212, + "end": 4222, + "loc": { + "start": { + "line": 99, + "column": 37 + }, + "end": { + "line": 99, + "column": 47 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" + }, + "computed": false, + "leadingComments": null + }, + "right": { + "type": "MemberExpression", + "start": 4225, + "end": 4241, + "loc": { + "start": { + "line": 99, + "column": 50 + }, + "end": { + "line": 99, + "column": 66 + } + }, + "object": { + "type": "ThisExpression", + "start": 4225, + "end": 4229, + "loc": { + "start": { + "line": 99, + "column": 50 + }, + "end": { + "line": 99, + "column": 54 + } + } + }, + "property": { + "type": "Identifier", + "start": 4230, + "end": 4241, + "loc": { + "start": { + "line": 99, + "column": 55 + }, + "end": { + "line": 99, + "column": 66 + }, + "identifierName": "_pbrEnabled" + }, + "name": "_pbrEnabled" + }, + "computed": false + }, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624", + "start": 4104, + "end": 4174, + "loc": { + "start": { + "line": 98, + "column": 58 + }, + "end": { + "line": 98, + "column": 128 + } + } + } + ] + }, + { + "type": "ExpressionStatement", + "start": 4267, + "end": 4311, + "loc": { + "start": { + "line": 100, + "column": 24 + }, + "end": { + "line": 100, + "column": 68 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 4267, + "end": 4310, + "loc": { + "start": { + "line": 100, + "column": 24 + }, + "end": { + "line": 100, + "column": 67 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 4267, + "end": 4291, + "loc": { + "start": { + "line": 100, + "column": 24 + }, + "end": { + "line": 100, + "column": 48 + } + }, + "object": { + "type": "MemberExpression", + "start": 4267, + "end": 4283, + "loc": { + "start": { + "line": 100, + "column": 24 + }, + "end": { + "line": 100, + "column": 40 + } + }, + "object": { + "type": "MemberExpression", + "start": 4267, + "end": 4279, + "loc": { + "start": { + "line": 100, + "column": 24 + }, + "end": { + "line": 100, + "column": 36 + } + }, + "object": { + "type": "Identifier", + "start": 4267, + "end": 4273, + "loc": { + "start": { + "line": 100, + "column": 24 + }, + "end": { + "line": 100, + "column": 30 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 4274, + "end": 4279, + "loc": { + "start": { + "line": 100, + "column": 31 + }, + "end": { + "line": 100, + "column": 36 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 4280, + "end": 4283, + "loc": { + "start": { + "line": 100, + "column": 37 + }, + "end": { + "line": 100, + "column": 40 + }, + "identifierName": "sao" + }, + "name": "sao" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 4284, + "end": 4291, + "loc": { + "start": { + "line": 100, + "column": 41 + }, + "end": { + "line": 100, + "column": 48 + }, + "identifierName": "enabled" + }, + "name": "enabled" + }, + "computed": false + }, + "right": { + "type": "MemberExpression", + "start": 4294, + "end": 4310, + "loc": { + "start": { + "line": 100, + "column": 51 + }, + "end": { + "line": 100, + "column": 67 + } + }, + "object": { + "type": "ThisExpression", + "start": 4294, + "end": 4298, + "loc": { + "start": { + "line": 100, + "column": 51 + }, + "end": { + "line": 100, + "column": 55 + } + } + }, + "property": { + "type": "Identifier", + "start": 4299, + "end": 4310, + "loc": { + "start": { + "line": 100, + "column": 56 + }, + "end": { + "line": 100, + "column": 67 + }, + "identifierName": "_saoEnabled" + }, + "name": "_saoEnabled" + }, + "computed": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 4336, + "end": 4389, + "loc": { + "start": { + "line": 101, + "column": 24 + }, + "end": { + "line": 101, + "column": 77 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 4336, + "end": 4388, + "loc": { + "start": { + "line": 101, + "column": 24 + }, + "end": { + "line": 101, + "column": 76 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 4336, + "end": 4367, + "loc": { + "start": { + "line": 101, + "column": 24 + }, + "end": { + "line": 101, + "column": 55 + } + }, + "object": { + "type": "MemberExpression", + "start": 4336, + "end": 4361, + "loc": { + "start": { + "line": 101, + "column": 24 + }, + "end": { + "line": 101, + "column": 49 + } + }, + "object": { + "type": "MemberExpression", + "start": 4336, + "end": 4348, + "loc": { + "start": { + "line": 101, + "column": 24 + }, + "end": { + "line": 101, + "column": 36 + } + }, + "object": { + "type": "Identifier", + "start": 4336, + "end": 4342, + "loc": { + "start": { + "line": 101, + "column": 24 + }, + "end": { + "line": 101, + "column": 30 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 4343, + "end": 4348, + "loc": { + "start": { + "line": 101, + "column": 31 + }, + "end": { + "line": 101, + "column": 36 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 4349, + "end": 4361, + "loc": { + "start": { + "line": 101, + "column": 37 + }, + "end": { + "line": 101, + "column": 49 + }, + "identifierName": "edgeMaterial" + }, + "name": "edgeMaterial" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 4362, + "end": 4367, + "loc": { + "start": { + "line": 101, + "column": 50 + }, + "end": { + "line": 101, + "column": 55 + }, + "identifierName": "edges" + }, + "name": "edges" + }, + "computed": false + }, + "right": { + "type": "MemberExpression", + "start": 4370, + "end": 4388, + "loc": { + "start": { + "line": 101, + "column": 58 + }, + "end": { + "line": 101, + "column": 76 + } + }, + "object": { + "type": "ThisExpression", + "start": 4370, + "end": 4374, + "loc": { + "start": { + "line": 101, + "column": 58 + }, + "end": { + "line": 101, + "column": 62 + } + } + }, + "property": { + "type": "Identifier", + "start": 4375, + "end": 4388, + "loc": { + "start": { + "line": 101, + "column": 63 + }, + "end": { + "line": 101, + "column": 76 + }, + "identifierName": "_edgesEnabled" + }, + "name": "_edgesEnabled" + }, + "computed": false + } + } + } + ], + "directives": [] + } + }, + { + "type": "NumericLiteral", + "start": 4413, + "end": 4416, + "loc": { + "start": { + "line": 102, + "column": 23 + }, + "end": { + "line": 102, + "column": 26 + } + }, + "extra": { + "rawValue": 100, + "raw": "100" + }, + "value": 100 + } + ] + } } }, - "object": { - "type": "MemberExpression", - "start": 3567, - "end": 3592, + { + "type": "ExpressionStatement", + "start": 4440, + "end": 4457, "loc": { "start": { - "line": 108, - "column": 16 + "line": 104, + "column": 20 }, "end": { - "line": 108, - "column": 41 + "line": 104, + "column": 37 } }, - "object": { - "type": "MemberExpression", - "start": 3567, - "end": 3579, + "expression": { + "type": "AssignmentExpression", + "start": 4440, + "end": 4456, "loc": { "start": { - "line": 108, - "column": 16 + "line": 104, + "column": 20 }, "end": { - "line": 108, - "column": 28 + "line": 104, + "column": 36 } }, - "object": { + "operator": "=", + "left": { "type": "Identifier", - "start": 3567, - "end": 3573, + "start": 4440, + "end": 4448, "loc": { "start": { - "line": 108, - "column": 16 + "line": 104, + "column": 20 }, "end": { - "line": 108, - "column": 22 + "line": 104, + "column": 28 }, - "identifierName": "viewer" + "identifierName": "fastMode" }, - "name": "viewer" + "name": "fastMode" }, - "property": { - "type": "Identifier", - "start": 3574, - "end": 3579, + "right": { + "type": "BooleanLiteral", + "start": 4451, + "end": 4456, "loc": { "start": { - "line": 108, - "column": 23 + "line": 104, + "column": 31 }, "end": { - "line": 108, - "column": 28 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 3580, - "end": 3592, - "loc": { - "start": { - "line": 108, - "column": 29 - }, - "end": { - "line": 108, - "column": 41 + "line": 104, + "column": 36 + } }, - "identifierName": "edgeMaterial" - }, - "name": "edgeMaterial" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 3593, - "end": 3598, - "loc": { - "start": { - "line": 108, - "column": 42 - }, - "end": { - "line": 108, - "column": 47 - }, - "identifierName": "edges" - }, - "name": "edges" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 3601, - "end": 3606, - "loc": { - "start": { - "line": 108, - "column": 50 - }, - "end": { - "line": 108, - "column": 55 + "value": false + } } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 3624, - "end": 3640, - "loc": { - "start": { - "line": 109, - "column": 16 - }, - "end": { - "line": 109, - "column": 32 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 3624, - "end": 3639, - "loc": { - "start": { - "line": 109, - "column": 16 - }, - "end": { - "line": 109, - "column": 31 } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 3624, - "end": 3632, - "loc": { - "start": { - "line": 109, - "column": 16 - }, - "end": { - "line": 109, - "column": 24 - }, - "identifierName": "fastMode" - }, - "name": "fastMode" - }, - "right": { - "type": "BooleanLiteral", - "start": 3635, - "end": 3639, - "loc": { - "start": { - "line": 109, - "column": 27 - }, - "end": { - "line": 109, - "column": 31 - } - }, - "value": true - } - } + ], + "directives": [] + }, + "alternate": null } ], "directives": [] }, "alternate": null - }, - { - "type": "ExpressionStatement", - "start": 3667, - "end": 3679, - "loc": { - "start": { - "line": 111, - "column": 12 - }, - "end": { - "line": 111, - "column": 24 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 3667, - "end": 3678, - "loc": { - "start": { - "line": 111, - "column": 12 - }, - "end": { - "line": 111, - "column": 23 - } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 3667, - "end": 3671, - "loc": { - "start": { - "line": 111, - "column": 12 - }, - "end": { - "line": 111, - "column": 16 - }, - "identifierName": "down" - }, - "name": "down" - }, - "right": { - "type": "BooleanLiteral", - "start": 3674, - "end": 3678, - "loc": { - "start": { - "line": 111, - "column": 19 - }, - "end": { - "line": 111, - "column": 23 - } - }, - "value": true - } - } } ], "directives": [] @@ -23279,204 +26128,171 @@ }, { "type": "ExpressionStatement", - "start": 3701, - "end": 3802, + "start": 4511, + "end": 4903, "loc": { "start": { - "line": 114, + "line": 109, "column": 8 }, "end": { - "line": 116, + "line": 118, "column": 11 } }, "expression": { "type": "AssignmentExpression", - "start": 3701, - "end": 3801, + "start": 4511, + "end": 4902, "loc": { "start": { - "line": 114, + "line": 109, "column": 8 }, "end": { - "line": 116, + "line": 118, "column": 10 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 3701, - "end": 3721, + "start": 4511, + "end": 4540, "loc": { "start": { - "line": 114, + "line": 109, "column": 8 }, "end": { - "line": 114, - "column": 28 + "line": 109, + "column": 37 } }, "object": { "type": "ThisExpression", - "start": 3701, - "end": 3705, + "start": 4511, + "end": 4515, "loc": { "start": { - "line": 114, + "line": 109, "column": 8 }, "end": { - "line": 114, + "line": 109, "column": 12 } } }, "property": { "type": "Identifier", - "start": 3706, - "end": 3721, + "start": 4516, + "end": 4540, "loc": { "start": { - "line": 114, + "line": 109, "column": 13 }, "end": { - "line": 114, - "column": 28 + "line": 109, + "column": 37 }, - "identifierName": "_onSceneMouseUp" + "identifierName": "_onSceneObjectVisibility" }, - "name": "_onSceneMouseUp" + "name": "_onSceneObjectVisibility" }, "computed": false }, "right": { "type": "CallExpression", - "start": 3724, - "end": 3801, + "start": 4543, + "end": 4902, "loc": { "start": { - "line": 114, - "column": 31 + "line": 109, + "column": 40 }, "end": { - "line": 116, + "line": 118, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 3724, - "end": 3745, + "start": 4543, + "end": 4558, "loc": { "start": { - "line": 114, - "column": 31 + "line": 109, + "column": 40 }, "end": { - "line": 114, - "column": 52 + "line": 109, + "column": 55 } }, "object": { "type": "MemberExpression", - "start": 3724, - "end": 3742, + "start": 4543, + "end": 4555, "loc": { "start": { - "line": 114, - "column": 31 + "line": 109, + "column": 40 }, "end": { - "line": 114, - "column": 49 + "line": 109, + "column": 52 } }, "object": { - "type": "MemberExpression", - "start": 3724, - "end": 3736, + "type": "Identifier", + "start": 4543, + "end": 4549, "loc": { "start": { - "line": 114, - "column": 31 + "line": 109, + "column": 40 }, "end": { - "line": 114, - "column": 43 - } - }, - "object": { - "type": "Identifier", - "start": 3724, - "end": 3730, - "loc": { - "start": { - "line": 114, - "column": 31 - }, - "end": { - "line": 114, - "column": 37 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 3731, - "end": 3736, - "loc": { - "start": { - "line": 114, - "column": 38 - }, - "end": { - "line": 114, - "column": 43 - }, - "identifierName": "scene" + "line": 109, + "column": 46 }, - "name": "scene" + "identifierName": "viewer" }, - "computed": false + "name": "viewer" }, "property": { "type": "Identifier", - "start": 3737, - "end": 3742, + "start": 4550, + "end": 4555, "loc": { "start": { - "line": 114, - "column": 44 + "line": 109, + "column": 47 }, "end": { - "line": 114, - "column": 49 + "line": 109, + "column": 52 }, - "identifierName": "input" + "identifierName": "scene" }, - "name": "input" + "name": "scene" }, "computed": false }, "property": { "type": "Identifier", - "start": 3743, - "end": 3745, + "start": 4556, + "end": 4558, "loc": { "start": { - "line": 114, - "column": 50 + "line": 109, + "column": 53 }, "end": { - "line": 114, - "column": 52 + "line": 109, + "column": 55 }, "identifierName": "on" }, @@ -23487,35 +26303,35 @@ "arguments": [ { "type": "StringLiteral", - "start": 3746, - "end": 3755, + "start": 4559, + "end": 4577, "loc": { "start": { - "line": 114, - "column": 53 + "line": 109, + "column": 56 }, "end": { - "line": 114, - "column": 62 + "line": 109, + "column": 74 } }, "extra": { - "rawValue": "mouseup", - "raw": "\"mouseup\"" + "rawValue": "objectVisibility", + "raw": "\"objectVisibility\"" }, - "value": "mouseup" + "value": "objectVisibility" }, { "type": "ArrowFunctionExpression", - "start": 3757, - "end": 3800, + "start": 4579, + "end": 4901, "loc": { "start": { - "line": 114, - "column": 64 + "line": 109, + "column": 76 }, "end": { - "line": 116, + "line": 118, "column": 9 } }, @@ -23526,497 +26342,76 @@ "params": [], "body": { "type": "BlockStatement", - "start": 3763, - "end": 3800, + "start": 4585, + "end": 4901, "loc": { "start": { - "line": 114, - "column": 70 + "line": 109, + "column": 82 }, "end": { - "line": 116, + "line": 118, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 3777, - "end": 3790, + "start": 4599, + "end": 4623, "loc": { "start": { - "line": 115, + "line": 110, "column": 12 }, "end": { - "line": 115, - "column": 25 + "line": 110, + "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 3777, - "end": 3789, + "start": 4599, + "end": 4622, "loc": { "start": { - "line": 115, + "line": 110, "column": 12 }, "end": { - "line": 115, - "column": 24 + "line": 110, + "column": 35 } }, "operator": "=", "left": { "type": "Identifier", - "start": 3777, - "end": 3781, + "start": 4599, + "end": 4604, "loc": { "start": { - "line": 115, + "line": 110, "column": 12 }, "end": { - "line": 115, - "column": 16 + "line": 110, + "column": 17 }, - "identifierName": "down" + "identifierName": "timer" }, - "name": "down" + "name": "timer" }, "right": { - "type": "BooleanLiteral", - "start": 3784, - "end": 3789, + "type": "Identifier", + "start": 4607, + "end": 4622, "loc": { "start": { - "line": 115, - "column": 19 + "line": 110, + "column": 20 }, "end": { - "line": 115, - "column": 24 - } - }, - "value": false - } - } - } - ], - "directives": [] - } - } - ] - } - } - }, - { - "type": "ExpressionStatement", - "start": 3812, - "end": 4259, - "loc": { - "start": { - "line": 118, - "column": 8 - }, - "end": { - "line": 130, - "column": 11 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 3812, - "end": 4258, - "loc": { - "start": { - "line": 118, - "column": 8 - }, - "end": { - "line": 130, - "column": 10 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 3812, - "end": 3834, - "loc": { - "start": { - "line": 118, - "column": 8 - }, - "end": { - "line": 118, - "column": 30 - } - }, - "object": { - "type": "ThisExpression", - "start": 3812, - "end": 3816, - "loc": { - "start": { - "line": 118, - "column": 8 - }, - "end": { - "line": 118, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 3817, - "end": 3834, - "loc": { - "start": { - "line": 118, - "column": 13 - }, - "end": { - "line": 118, - "column": 30 - }, - "identifierName": "_onSceneMouseMove" - }, - "name": "_onSceneMouseMove" - }, - "computed": false - }, - "right": { - "type": "CallExpression", - "start": 3837, - "end": 4258, - "loc": { - "start": { - "line": 118, - "column": 33 - }, - "end": { - "line": 130, - "column": 10 - } - }, - "callee": { - "type": "MemberExpression", - "start": 3837, - "end": 3858, - "loc": { - "start": { - "line": 118, - "column": 33 - }, - "end": { - "line": 118, - "column": 54 - } - }, - "object": { - "type": "MemberExpression", - "start": 3837, - "end": 3855, - "loc": { - "start": { - "line": 118, - "column": 33 - }, - "end": { - "line": 118, - "column": 51 - } - }, - "object": { - "type": "MemberExpression", - "start": 3837, - "end": 3849, - "loc": { - "start": { - "line": 118, - "column": 33 - }, - "end": { - "line": 118, - "column": 45 - } - }, - "object": { - "type": "Identifier", - "start": 3837, - "end": 3843, - "loc": { - "start": { - "line": 118, - "column": 33 - }, - "end": { - "line": 118, - "column": 39 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "property": { - "type": "Identifier", - "start": 3844, - "end": 3849, - "loc": { - "start": { - "line": 118, - "column": 40 - }, - "end": { - "line": 118, - "column": 45 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 3850, - "end": 3855, - "loc": { - "start": { - "line": 118, - "column": 46 - }, - "end": { - "line": 118, - "column": 51 - }, - "identifierName": "input" - }, - "name": "input" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 3856, - "end": 3858, - "loc": { - "start": { - "line": 118, - "column": 52 - }, - "end": { - "line": 118, - "column": 54 - }, - "identifierName": "on" - }, - "name": "on" - }, - "computed": false - }, - "arguments": [ - { - "type": "StringLiteral", - "start": 3859, - "end": 3870, - "loc": { - "start": { - "line": 118, - "column": 55 - }, - "end": { - "line": 118, - "column": 66 - } - }, - "extra": { - "rawValue": "mousemove", - "raw": "\"mousemove\"" - }, - "value": "mousemove" - }, - { - "type": "ArrowFunctionExpression", - "start": 3872, - "end": 4257, - "loc": { - "start": { - "line": 118, - "column": 68 - }, - "end": { - "line": 130, - "column": 9 - } - }, - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [], - "body": { - "type": "BlockStatement", - "start": 3878, - "end": 4257, - "loc": { - "start": { - "line": 118, - "column": 74 - }, - "end": { - "line": 130, - "column": 9 - } - }, - "body": [ - { - "type": "IfStatement", - "start": 3892, - "end": 3942, - "loc": { - "start": { - "line": 119, - "column": 12 - }, - "end": { - "line": 121, - "column": 13 - } - }, - "test": { - "type": "UnaryExpression", - "start": 3896, - "end": 3901, - "loc": { - "start": { - "line": 119, - "column": 16 - }, - "end": { - "line": 119, - "column": 21 - } - }, - "operator": "!", - "prefix": true, - "argument": { - "type": "Identifier", - "start": 3897, - "end": 3901, - "loc": { - "start": { - "line": 119, - "column": 17 - }, - "end": { - "line": 119, - "column": 21 - }, - "identifierName": "down" - }, - "name": "down" - }, - "extra": { - "parenthesizedArgument": false - } - }, - "consequent": { - "type": "BlockStatement", - "start": 3903, - "end": 3942, - "loc": { - "start": { - "line": 119, - "column": 23 - }, - "end": { - "line": 121, - "column": 13 - } - }, - "body": [ - { - "type": "ReturnStatement", - "start": 3921, - "end": 3928, - "loc": { - "start": { - "line": 120, - "column": 16 - }, - "end": { - "line": 120, - "column": 23 - } - }, - "argument": null - } - ], - "directives": [] - }, - "alternate": null - }, - { - "type": "ExpressionStatement", - "start": 3955, - "end": 3979, - "loc": { - "start": { - "line": 122, - "column": 12 - }, - "end": { - "line": 122, - "column": 36 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 3955, - "end": 3978, - "loc": { - "start": { - "line": 122, - "column": 12 - }, - "end": { - "line": 122, - "column": 35 - } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 3955, - "end": 3960, - "loc": { - "start": { - "line": 122, - "column": 12 - }, - "end": { - "line": 122, - "column": 17 - }, - "identifierName": "timer" - }, - "name": "timer" - }, - "right": { - "type": "Identifier", - "start": 3963, - "end": 3978, - "loc": { - "start": { - "line": 122, - "column": 20 - }, - "end": { - "line": 122, + "line": 110, "column": 35 }, "identifierName": "timeoutDuration" @@ -24027,29 +26422,29 @@ }, { "type": "IfStatement", - "start": 3992, - "end": 4247, + "start": 4636, + "end": 4891, "loc": { "start": { - "line": 123, + "line": 111, "column": 12 }, "end": { - "line": 129, + "line": 117, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 3996, - "end": 4005, + "start": 4640, + "end": 4649, "loc": { "start": { - "line": 123, + "line": 111, "column": 16 }, "end": { - "line": 123, + "line": 111, "column": 25 } }, @@ -24057,15 +26452,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 3997, - "end": 4005, + "start": 4641, + "end": 4649, "loc": { "start": { - "line": 123, + "line": 111, "column": 17 }, "end": { - "line": 123, + "line": 111, "column": 25 }, "identifierName": "fastMode" @@ -24078,87 +26473,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 4007, - "end": 4247, + "start": 4651, + "end": 4891, "loc": { "start": { - "line": 123, + "line": 111, "column": 27 }, "end": { - "line": 129, + "line": 117, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 4025, - "end": 4044, + "start": 4669, + "end": 4688, "loc": { "start": { - "line": 124, + "line": 112, "column": 16 }, "end": { - "line": 124, + "line": 112, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 4025, - "end": 4043, + "start": 4669, + "end": 4687, "loc": { "start": { - "line": 124, + "line": 112, "column": 16 }, "end": { - "line": 124, + "line": 112, "column": 34 } }, "callee": { "type": "MemberExpression", - "start": 4025, - "end": 4041, + "start": 4669, + "end": 4685, "loc": { "start": { - "line": 124, + "line": 112, "column": 16 }, "end": { - "line": 124, + "line": 112, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 4025, - "end": 4029, + "start": 4669, + "end": 4673, "loc": { "start": { - "line": 124, + "line": 112, "column": 16 }, "end": { - "line": 124, + "line": 112, "column": 20 } } }, "property": { "type": "Identifier", - "start": 4030, - "end": 4041, + "start": 4674, + "end": 4685, "loc": { "start": { - "line": 124, + "line": 112, "column": 21 }, "end": { - "line": 124, + "line": 112, "column": 32 }, "identifierName": "_cancelFade" @@ -24172,72 +26567,72 @@ }, { "type": "ExpressionStatement", - "start": 4061, - "end": 4093, + "start": 4705, + "end": 4737, "loc": { "start": { - "line": 125, + "line": 113, "column": 16 }, "end": { - "line": 125, + "line": 113, "column": 48 } }, "expression": { "type": "AssignmentExpression", - "start": 4061, - "end": 4092, + "start": 4705, + "end": 4736, "loc": { "start": { - "line": 125, + "line": 113, "column": 16 }, "end": { - "line": 125, + "line": 113, "column": 47 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 4061, - "end": 4084, + "start": 4705, + "end": 4728, "loc": { "start": { - "line": 125, + "line": 113, "column": 16 }, "end": { - "line": 125, + "line": 113, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 4061, - "end": 4073, + "start": 4705, + "end": 4717, "loc": { "start": { - "line": 125, + "line": 113, "column": 16 }, "end": { - "line": 125, + "line": 113, "column": 28 } }, "object": { "type": "Identifier", - "start": 4061, - "end": 4067, + "start": 4705, + "end": 4711, "loc": { "start": { - "line": 125, + "line": 113, "column": 16 }, "end": { - "line": 125, + "line": 113, "column": 22 }, "identifierName": "viewer" @@ -24246,15 +26641,15 @@ }, "property": { "type": "Identifier", - "start": 4068, - "end": 4073, + "start": 4712, + "end": 4717, "loc": { "start": { - "line": 125, + "line": 113, "column": 23 }, "end": { - "line": 125, + "line": 113, "column": 28 }, "identifierName": "scene" @@ -24265,15 +26660,15 @@ }, "property": { "type": "Identifier", - "start": 4074, - "end": 4084, + "start": 4718, + "end": 4728, "loc": { "start": { - "line": 125, + "line": 113, "column": 29 }, "end": { - "line": 125, + "line": 113, "column": 39 }, "identifierName": "pbrEnabled" @@ -24284,15 +26679,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 4087, - "end": 4092, + "start": 4731, + "end": 4736, "loc": { "start": { - "line": 125, + "line": 113, "column": 42 }, "end": { - "line": 125, + "line": 113, "column": 47 } }, @@ -24302,86 +26697,86 @@ }, { "type": "ExpressionStatement", - "start": 4110, - "end": 4143, + "start": 4754, + "end": 4787, "loc": { "start": { - "line": 126, + "line": 114, "column": 16 }, "end": { - "line": 126, + "line": 114, "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 4110, - "end": 4142, + "start": 4754, + "end": 4786, "loc": { "start": { - "line": 126, + "line": 114, "column": 16 }, "end": { - "line": 126, + "line": 114, "column": 48 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 4110, - "end": 4134, + "start": 4754, + "end": 4778, "loc": { "start": { - "line": 126, + "line": 114, "column": 16 }, "end": { - "line": 126, + "line": 114, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 4110, - "end": 4126, + "start": 4754, + "end": 4770, "loc": { "start": { - "line": 126, + "line": 114, "column": 16 }, "end": { - "line": 126, + "line": 114, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 4110, - "end": 4122, + "start": 4754, + "end": 4766, "loc": { "start": { - "line": 126, + "line": 114, "column": 16 }, "end": { - "line": 126, + "line": 114, "column": 28 } }, "object": { "type": "Identifier", - "start": 4110, - "end": 4116, + "start": 4754, + "end": 4760, "loc": { "start": { - "line": 126, + "line": 114, "column": 16 }, "end": { - "line": 126, + "line": 114, "column": 22 }, "identifierName": "viewer" @@ -24390,15 +26785,15 @@ }, "property": { "type": "Identifier", - "start": 4117, - "end": 4122, + "start": 4761, + "end": 4766, "loc": { "start": { - "line": 126, + "line": 114, "column": 23 }, "end": { - "line": 126, + "line": 114, "column": 28 }, "identifierName": "scene" @@ -24409,15 +26804,15 @@ }, "property": { "type": "Identifier", - "start": 4123, - "end": 4126, + "start": 4767, + "end": 4770, "loc": { "start": { - "line": 126, + "line": 114, "column": 29 }, "end": { - "line": 126, + "line": 114, "column": 32 }, "identifierName": "sao" @@ -24428,15 +26823,15 @@ }, "property": { "type": "Identifier", - "start": 4127, - "end": 4134, + "start": 4771, + "end": 4778, "loc": { "start": { - "line": 126, + "line": 114, "column": 33 }, "end": { - "line": 126, + "line": 114, "column": 40 }, "identifierName": "enabled" @@ -24447,15 +26842,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 4137, - "end": 4142, + "start": 4781, + "end": 4786, "loc": { "start": { - "line": 126, + "line": 114, "column": 43 }, "end": { - "line": 126, + "line": 114, "column": 48 } }, @@ -24465,86 +26860,86 @@ }, { "type": "ExpressionStatement", - "start": 4160, - "end": 4200, + "start": 4804, + "end": 4844, "loc": { "start": { - "line": 127, + "line": 115, "column": 16 }, "end": { - "line": 127, + "line": 115, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 4160, - "end": 4199, + "start": 4804, + "end": 4843, "loc": { "start": { - "line": 127, + "line": 115, "column": 16 }, "end": { - "line": 127, + "line": 115, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 4160, - "end": 4191, + "start": 4804, + "end": 4835, "loc": { "start": { - "line": 127, + "line": 115, "column": 16 }, "end": { - "line": 127, + "line": 115, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 4160, - "end": 4185, + "start": 4804, + "end": 4829, "loc": { "start": { - "line": 127, + "line": 115, "column": 16 }, "end": { - "line": 127, + "line": 115, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 4160, - "end": 4172, + "start": 4804, + "end": 4816, "loc": { "start": { - "line": 127, + "line": 115, "column": 16 }, "end": { - "line": 127, + "line": 115, "column": 28 } }, "object": { "type": "Identifier", - "start": 4160, - "end": 4166, + "start": 4804, + "end": 4810, "loc": { "start": { - "line": 127, + "line": 115, "column": 16 }, "end": { - "line": 127, + "line": 115, "column": 22 }, "identifierName": "viewer" @@ -24553,15 +26948,15 @@ }, "property": { "type": "Identifier", - "start": 4167, - "end": 4172, + "start": 4811, + "end": 4816, "loc": { "start": { - "line": 127, + "line": 115, "column": 23 }, "end": { - "line": 127, + "line": 115, "column": 28 }, "identifierName": "scene" @@ -24572,15 +26967,15 @@ }, "property": { "type": "Identifier", - "start": 4173, - "end": 4185, + "start": 4817, + "end": 4829, "loc": { "start": { - "line": 127, + "line": 115, "column": 29 }, "end": { - "line": 127, + "line": 115, "column": 41 }, "identifierName": "edgeMaterial" @@ -24591,15 +26986,15 @@ }, "property": { "type": "Identifier", - "start": 4186, - "end": 4191, + "start": 4830, + "end": 4835, "loc": { "start": { - "line": 127, + "line": 115, "column": 42 }, "end": { - "line": 127, + "line": 115, "column": 47 }, "identifierName": "edges" @@ -24610,15 +27005,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 4194, - "end": 4199, + "start": 4838, + "end": 4843, "loc": { "start": { - "line": 127, + "line": 115, "column": 50 }, "end": { - "line": 127, + "line": 115, "column": 55 } }, @@ -24628,44 +27023,44 @@ }, { "type": "ExpressionStatement", - "start": 4217, - "end": 4233, + "start": 4861, + "end": 4877, "loc": { "start": { - "line": 128, + "line": 116, "column": 16 }, "end": { - "line": 128, + "line": 116, "column": 32 } }, "expression": { "type": "AssignmentExpression", - "start": 4217, - "end": 4232, + "start": 4861, + "end": 4876, "loc": { "start": { - "line": 128, + "line": 116, "column": 16 }, "end": { - "line": 128, + "line": 116, "column": 31 } }, "operator": "=", "left": { "type": "Identifier", - "start": 4217, - "end": 4225, + "start": 4861, + "end": 4869, "loc": { "start": { - "line": 128, + "line": 116, "column": 16 }, "end": { - "line": 128, + "line": 116, "column": 24 }, "identifierName": "fastMode" @@ -24674,15 +27069,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 4228, - "end": 4232, + "start": 4872, + "end": 4876, "loc": { "start": { - "line": 128, + "line": 116, "column": 27 }, "end": { - "line": 128, + "line": 116, "column": 31 } }, @@ -24702,2684 +27097,6293 @@ ] } } - } - ], - "directives": [] - } - }, - { - "type": "ClassMethod", - "start": 4271, - "end": 5839, - "loc": { - "start": { - "line": 133, - "column": 4 - }, - "end": { - "line": 179, - "column": 5 - } - }, - "static": false, - "computed": false, - "key": { - "type": "Identifier", - "start": 4271, - "end": 4281, - "loc": { - "start": { - "line": 133, - "column": 4 - }, - "end": { - "line": 133, - "column": 14 - }, - "identifierName": "_startFade" - }, - "name": "_startFade" - }, - "kind": "method", - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [], - "body": { - "type": "BlockStatement", - "start": 4284, - "end": 5839, - "loc": { - "start": { - "line": 133, - "column": 17 }, - "end": { - "line": 179, - "column": 5 - } - }, - "body": [ { - "type": "IfStatement", - "start": 4295, - "end": 4352, + "type": "VariableDeclaration", + "start": 4913, + "end": 4930, "loc": { "start": { - "line": 135, + "line": 120, "column": 8 }, "end": { - "line": 137, - "column": 9 + "line": 120, + "column": 25 } }, - "test": { - "type": "UnaryExpression", - "start": 4299, - "end": 4309, - "loc": { - "start": { - "line": 135, - "column": 12 - }, - "end": { - "line": 135, - "column": 22 - } - }, - "operator": "!", - "prefix": true, - "argument": { - "type": "MemberExpression", - "start": 4300, - "end": 4309, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4917, + "end": 4929, "loc": { "start": { - "line": 135, - "column": 13 + "line": 120, + "column": 12 }, "end": { - "line": 135, - "column": 22 + "line": 120, + "column": 24 } }, - "object": { - "type": "ThisExpression", - "start": 4300, - "end": 4304, + "id": { + "type": "Identifier", + "start": 4917, + "end": 4921, "loc": { "start": { - "line": 135, - "column": 13 + "line": 120, + "column": 12 }, "end": { - "line": 135, - "column": 17 - } - } + "line": 120, + "column": 16 + }, + "identifierName": "down" + }, + "name": "down" }, - "property": { - "type": "Identifier", - "start": 4305, - "end": 4309, + "init": { + "type": "BooleanLiteral", + "start": 4924, + "end": 4929, "loc": { "start": { - "line": 135, - "column": 18 + "line": 120, + "column": 19 }, "end": { - "line": 135, - "column": 22 - }, - "identifierName": "_img" + "line": 120, + "column": 24 + } }, - "name": "_img" - }, - "computed": false - }, - "extra": { - "parenthesizedArgument": false - } - }, - "consequent": { - "type": "BlockStatement", - "start": 4311, - "end": 4352, - "loc": { - "start": { - "line": 135, - "column": 24 - }, - "end": { - "line": 137, - "column": 9 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 4325, - "end": 4342, - "loc": { - "start": { - "line": 136, - "column": 12 - }, - "end": { - "line": 136, - "column": 29 - } - }, - "expression": { - "type": "CallExpression", - "start": 4325, - "end": 4341, - "loc": { - "start": { - "line": 136, - "column": 12 - }, - "end": { - "line": 136, - "column": 28 - } - }, - "callee": { - "type": "MemberExpression", - "start": 4325, - "end": 4339, - "loc": { - "start": { - "line": 136, - "column": 12 - }, - "end": { - "line": 136, - "column": 26 - } - }, - "object": { - "type": "ThisExpression", - "start": 4325, - "end": 4329, - "loc": { - "start": { - "line": 136, - "column": 12 - }, - "end": { - "line": 136, - "column": 16 - } - } - }, - "property": { - "type": "Identifier", - "start": 4330, - "end": 4339, - "loc": { - "start": { - "line": 136, - "column": 17 - }, - "end": { - "line": 136, - "column": 26 - }, - "identifierName": "_initFade" - }, - "name": "_initFade" - }, - "computed": false - }, - "arguments": [] - } + "value": false } - ], - "directives": [] - }, - "alternate": null + } + ], + "kind": "let" }, { - "type": "VariableDeclaration", - "start": 4362, - "end": 4382, + "type": "ExpressionStatement", + "start": 4940, + "end": 5349, "loc": { "start": { - "line": 139, + "line": 122, "column": 8 }, "end": { - "line": 139, - "column": 28 + "line": 132, + "column": 11 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4368, - "end": 4381, + "expression": { + "type": "AssignmentExpression", + "start": 4940, + "end": 5348, + "loc": { + "start": { + "line": 122, + "column": 8 + }, + "end": { + "line": 132, + "column": 10 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 4940, + "end": 4962, "loc": { "start": { - "line": 139, - "column": 14 + "line": 122, + "column": 8 }, "end": { - "line": 139, - "column": 27 + "line": 122, + "column": 30 } }, - "id": { - "type": "Identifier", - "start": 4368, - "end": 4376, + "object": { + "type": "ThisExpression", + "start": 4940, + "end": 4944, "loc": { "start": { - "line": 139, - "column": 14 + "line": 122, + "column": 8 }, "end": { - "line": 139, - "column": 22 - }, - "identifierName": "interval" - }, - "name": "interval" + "line": 122, + "column": 12 + } + } }, - "init": { - "type": "NumericLiteral", - "start": 4379, - "end": 4381, + "property": { + "type": "Identifier", + "start": 4945, + "end": 4962, "loc": { "start": { - "line": 139, - "column": 25 + "line": 122, + "column": 13 }, "end": { - "line": 139, - "column": 27 - } - }, - "extra": { - "rawValue": 50, - "raw": "50" + "line": 122, + "column": 30 + }, + "identifierName": "_onSceneMouseDown" }, - "value": 50 - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 4391, - "end": 4440, - "loc": { - "start": { - "line": 140, - "column": 8 + "name": "_onSceneMouseDown" + }, + "computed": false }, - "end": { - "line": 140, - "column": 57 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4397, - "end": 4439, + "right": { + "type": "CallExpression", + "start": 4965, + "end": 5348, "loc": { "start": { - "line": 140, - "column": 14 + "line": 122, + "column": 33 }, "end": { - "line": 140, - "column": 56 + "line": 132, + "column": 10 } }, - "id": { - "type": "Identifier", - "start": 4397, - "end": 4400, - "loc": { - "start": { - "line": 140, - "column": 14 - }, - "end": { - "line": 140, - "column": 17 - }, - "identifierName": "inc" - }, - "name": "inc" - }, - "init": { - "type": "BinaryExpression", - "start": 4403, - "end": 4439, + "callee": { + "type": "MemberExpression", + "start": 4965, + "end": 4986, "loc": { "start": { - "line": 140, - "column": 20 + "line": 122, + "column": 33 }, "end": { - "line": 140, - "column": 56 + "line": 122, + "column": 54 } }, - "left": { - "type": "NumericLiteral", - "start": 4403, - "end": 4404, - "loc": { - "start": { - "line": 140, - "column": 20 - }, - "end": { - "line": 140, - "column": 21 - } - }, - "extra": { - "rawValue": 1, - "raw": "1" - }, - "value": 1 - }, - "operator": "/", - "right": { - "type": "BinaryExpression", - "start": 4408, - "end": 4438, + "object": { + "type": "MemberExpression", + "start": 4965, + "end": 4983, "loc": { "start": { - "line": 140, - "column": 25 + "line": 122, + "column": 33 }, "end": { - "line": 140, - "column": 55 + "line": 122, + "column": 51 } }, - "left": { + "object": { "type": "MemberExpression", - "start": 4408, - "end": 4427, + "start": 4965, + "end": 4977, "loc": { "start": { - "line": 140, - "column": 25 + "line": 122, + "column": 33 }, "end": { - "line": 140, - "column": 44 + "line": 122, + "column": 45 } }, "object": { - "type": "ThisExpression", - "start": 4408, - "end": 4412, + "type": "Identifier", + "start": 4965, + "end": 4971, "loc": { "start": { - "line": 140, - "column": 25 + "line": 122, + "column": 33 }, "end": { - "line": 140, - "column": 29 - } - } + "line": 122, + "column": 39 + }, + "identifierName": "viewer" + }, + "name": "viewer" }, "property": { "type": "Identifier", - "start": 4413, - "end": 4427, + "start": 4972, + "end": 4977, "loc": { "start": { - "line": 140, - "column": 30 + "line": 122, + "column": 40 }, "end": { - "line": 140, - "column": 44 + "line": 122, + "column": 45 }, - "identifierName": "_fadeMillisecs" + "identifierName": "scene" }, - "name": "_fadeMillisecs" + "name": "scene" }, "computed": false }, - "operator": "/", - "right": { + "property": { "type": "Identifier", - "start": 4430, - "end": 4438, + "start": 4978, + "end": 4983, "loc": { "start": { - "line": 140, - "column": 47 + "line": 122, + "column": 46 }, "end": { - "line": 140, - "column": 55 + "line": 122, + "column": 51 }, - "identifierName": "interval" + "identifierName": "input" }, - "name": "interval" + "name": "input" }, - "extra": { - "parenthesized": true, - "parenStart": 4407 - } - } - } - } - ], - "kind": "const" - }, - { - "type": "IfStatement", - "start": 4450, - "end": 4562, - "loc": { - "start": { - "line": 142, - "column": 8 - }, - "end": { - "line": 145, - "column": 9 - } - }, - "test": { - "type": "MemberExpression", - "start": 4454, - "end": 4469, - "loc": { - "start": { - "line": 142, - "column": 12 - }, - "end": { - "line": 142, - "column": 27 - } - }, - "object": { - "type": "ThisExpression", - "start": 4454, - "end": 4458, - "loc": { - "start": { - "line": 142, - "column": 12 - }, - "end": { - "line": 142, - "column": 16 - } - } - }, - "property": { - "type": "Identifier", - "start": 4459, - "end": 4469, - "loc": { - "start": { - "line": 142, - "column": 17 + "computed": false }, - "end": { - "line": 142, - "column": 27 + "property": { + "type": "Identifier", + "start": 4984, + "end": 4986, + "loc": { + "start": { + "line": 122, + "column": 52 + }, + "end": { + "line": 122, + "column": 54 + }, + "identifierName": "on" + }, + "name": "on" }, - "identifierName": "_pInterval" - }, - "name": "_pInterval" - }, - "computed": false - }, - "consequent": { - "type": "BlockStatement", - "start": 4471, - "end": 4562, - "loc": { - "start": { - "line": 142, - "column": 29 + "computed": false }, - "end": { - "line": 145, - "column": 9 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 4485, - "end": 4516, - "loc": { - "start": { - "line": 143, - "column": 12 + "arguments": [ + { + "type": "StringLiteral", + "start": 4987, + "end": 4998, + "loc": { + "start": { + "line": 122, + "column": 55 + }, + "end": { + "line": 122, + "column": 66 + } }, - "end": { - "line": 143, - "column": 43 - } + "extra": { + "rawValue": "mousedown", + "raw": "\"mousedown\"" + }, + "value": "mousedown" }, - "expression": { - "type": "CallExpression", - "start": 4485, - "end": 4515, + { + "type": "ArrowFunctionExpression", + "start": 5000, + "end": 5347, "loc": { "start": { - "line": 143, - "column": 12 + "line": 122, + "column": 68 }, "end": { - "line": 143, - "column": 42 + "line": 132, + "column": 9 } }, - "callee": { - "type": "Identifier", - "start": 4485, - "end": 4498, + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 5006, + "end": 5347, "loc": { "start": { - "line": 143, - "column": 12 + "line": 122, + "column": 74 }, "end": { - "line": 143, - "column": 25 - }, - "identifierName": "clearInterval" + "line": 132, + "column": 9 + } }, - "name": "clearInterval" - }, - "arguments": [ - { - "type": "MemberExpression", - "start": 4499, - "end": 4514, - "loc": { - "start": { - "line": 143, - "column": 26 - }, - "end": { - "line": 143, - "column": 41 - } - }, - "object": { - "type": "ThisExpression", - "start": 4499, - "end": 4503, + "body": [ + { + "type": "ExpressionStatement", + "start": 5020, + "end": 5044, "loc": { "start": { - "line": 143, - "column": 26 + "line": 123, + "column": 12 }, "end": { - "line": 143, - "column": 30 + "line": 123, + "column": 36 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5020, + "end": 5043, + "loc": { + "start": { + "line": 123, + "column": 12 + }, + "end": { + "line": 123, + "column": 35 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 5020, + "end": 5025, + "loc": { + "start": { + "line": 123, + "column": 12 + }, + "end": { + "line": 123, + "column": 17 + }, + "identifierName": "timer" + }, + "name": "timer" + }, + "right": { + "type": "Identifier", + "start": 5028, + "end": 5043, + "loc": { + "start": { + "line": 123, + "column": 20 + }, + "end": { + "line": 123, + "column": 35 + }, + "identifierName": "timeoutDuration" + }, + "name": "timeoutDuration" } } }, - "property": { - "type": "Identifier", - "start": 4504, - "end": 4514, + { + "type": "IfStatement", + "start": 5057, + "end": 5312, "loc": { "start": { - "line": 143, - "column": 31 + "line": 124, + "column": 12 }, "end": { - "line": 143, - "column": 41 + "line": 130, + "column": 13 + } + }, + "test": { + "type": "UnaryExpression", + "start": 5061, + "end": 5070, + "loc": { + "start": { + "line": 124, + "column": 16 + }, + "end": { + "line": 124, + "column": 25 + } }, - "identifierName": "_pInterval" + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 5062, + "end": 5070, + "loc": { + "start": { + "line": 124, + "column": 17 + }, + "end": { + "line": 124, + "column": 25 + }, + "identifierName": "fastMode" + }, + "name": "fastMode" + }, + "extra": { + "parenthesizedArgument": false + } }, - "name": "_pInterval" - }, - "computed": false - } - ] - } - }, - { - "type": "ExpressionStatement", - "start": 4529, - "end": 4552, - "loc": { - "start": { - "line": 144, - "column": 12 - }, - "end": { - "line": 144, - "column": 35 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 4529, - "end": 4551, - "loc": { - "start": { - "line": 144, - "column": 12 - }, - "end": { - "line": 144, - "column": 34 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 4529, - "end": 4544, - "loc": { - "start": { - "line": 144, - "column": 12 - }, - "end": { - "line": 144, - "column": 27 - } - }, - "object": { - "type": "ThisExpression", - "start": 4529, - "end": 4533, - "loc": { - "start": { - "line": 144, - "column": 12 - }, - "end": { - "line": 144, - "column": 16 - } - } - }, - "property": { - "type": "Identifier", - "start": 4534, - "end": 4544, - "loc": { - "start": { - "line": 144, - "column": 17 - }, - "end": { - "line": 144, - "column": 27 - }, - "identifierName": "_pInterval" - }, - "name": "_pInterval" - }, - "computed": false - }, - "right": { - "type": "NullLiteral", - "start": 4547, - "end": 4551, - "loc": { - "start": { - "line": 144, - "column": 30 - }, - "end": { - "line": 144, - "column": 34 - } - } - } - } - } - ], - "directives": [] - }, - "alternate": null - }, - { - "type": "VariableDeclaration", - "start": 4572, - "end": 4619, - "loc": { - "start": { - "line": 147, - "column": 8 - }, - "end": { - "line": 147, - "column": 55 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4578, - "end": 4618, - "loc": { - "start": { - "line": 147, - "column": 14 - }, - "end": { - "line": 147, - "column": 54 - } - }, - "id": { - "type": "Identifier", - "start": 4578, - "end": 4584, - "loc": { - "start": { - "line": 147, - "column": 14 - }, - "end": { - "line": 147, - "column": 20 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "init": { - "type": "MemberExpression", - "start": 4587, - "end": 4618, - "loc": { - "start": { - "line": 147, - "column": 23 - }, - "end": { - "line": 147, - "column": 54 - } - }, - "object": { - "type": "MemberExpression", - "start": 4587, - "end": 4611, - "loc": { - "start": { - "line": 147, - "column": 23 - }, - "end": { - "line": 147, - "column": 47 - } - }, - "object": { - "type": "MemberExpression", - "start": 4587, - "end": 4604, - "loc": { - "start": { - "line": 147, - "column": 23 - }, - "end": { - "line": 147, - "column": 40 - } - }, - "object": { - "type": "MemberExpression", - "start": 4587, - "end": 4598, - "loc": { - "start": { - "line": 147, - "column": 23 - }, - "end": { - "line": 147, - "column": 34 - } - }, - "object": { - "type": "ThisExpression", - "start": 4587, - "end": 4591, - "loc": { - "start": { - "line": 147, - "column": 23 - }, - "end": { - "line": 147, - "column": 27 - } - } - }, - "property": { - "type": "Identifier", - "start": 4592, - "end": 4598, - "loc": { - "start": { - "line": 147, - "column": 28 - }, - "end": { - "line": 147, - "column": 34 + "consequent": { + "type": "BlockStatement", + "start": 5072, + "end": 5312, + "loc": { + "start": { + "line": 124, + "column": 27 + }, + "end": { + "line": 130, + "column": 13 + } }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 4599, - "end": 4604, - "loc": { - "start": { - "line": 147, - "column": 35 - }, - "end": { - "line": 147, - "column": 40 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 4605, - "end": 4611, - "loc": { - "start": { - "line": 147, - "column": 41 - }, - "end": { - "line": 147, - "column": 47 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 4612, - "end": 4618, - "loc": { - "start": { - "line": 147, - "column": 48 - }, - "end": { - "line": 147, - "column": 54 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "computed": false - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 4628, - "end": 4674, - "loc": { - "start": { - "line": 148, - "column": 8 - }, - "end": { - "line": 148, - "column": 54 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4634, - "end": 4673, - "loc": { - "start": { - "line": 148, - "column": 14 - }, - "end": { - "line": 148, - "column": 53 - } - }, - "id": { - "type": "Identifier", - "start": 4634, - "end": 4646, - "loc": { - "start": { - "line": 148, - "column": 14 - }, - "end": { - "line": 148, - "column": 26 - }, - "identifierName": "canvasOffset" - }, - "name": "canvasOffset" - }, - "init": { - "type": "CallExpression", - "start": 4649, - "end": 4673, - "loc": { - "start": { - "line": 148, - "column": 29 - }, - "end": { - "line": 148, - "column": 53 - } - }, - "callee": { - "type": "Identifier", - "start": 4649, - "end": 4665, - "loc": { - "start": { - "line": 148, - "column": 29 - }, - "end": { - "line": 148, - "column": 45 - }, - "identifierName": "cumulativeOffset" - }, - "name": "cumulativeOffset" - }, - "arguments": [ - { - "type": "Identifier", - "start": 4666, - "end": 4672, - "loc": { - "start": { - "line": 148, - "column": 46 - }, - "end": { - "line": 148, - "column": 52 - }, - "identifierName": "canvas" - }, - "name": "canvas" - } - ] - } - } - ], - "kind": "const", - "trailingComments": [ - { - "type": "CommentLine", - "value": "const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;", - "start": 4683, - "end": 4745, - "loc": { - "start": { - "line": 149, - "column": 8 - }, - "end": { - "line": 149, - "column": 70 - } - } - } - ] - }, - { - "type": "ExpressionStatement", - "start": 4755, - "end": 4793, - "loc": { - "start": { - "line": 151, - "column": 8 - }, - "end": { - "line": 151, - "column": 46 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 4755, - "end": 4792, - "loc": { - "start": { - "line": 151, - "column": 8 - }, - "end": { - "line": 151, - "column": 45 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 4755, - "end": 4779, - "loc": { - "start": { - "line": 151, - "column": 8 - }, - "end": { - "line": 151, - "column": 32 - } - }, - "object": { - "type": "MemberExpression", - "start": 4755, - "end": 4770, - "loc": { - "start": { - "line": 151, - "column": 8 - }, - "end": { - "line": 151, - "column": 23 - } - }, - "object": { - "type": "MemberExpression", - "start": 4755, - "end": 4764, - "loc": { - "start": { - "line": 151, - "column": 8 - }, - "end": { - "line": 151, - "column": 17 - } - }, - "object": { - "type": "ThisExpression", - "start": 4755, - "end": 4759, - "loc": { - "start": { - "line": 151, - "column": 8 - }, - "end": { - "line": 151, - "column": 12 - } - }, - "leadingComments": null - }, - "property": { - "type": "Identifier", - "start": 4760, - "end": 4764, - "loc": { - "start": { - "line": 151, - "column": 13 - }, - "end": { - "line": 151, - "column": 17 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false, - "leadingComments": null - }, - "property": { - "type": "Identifier", - "start": 4765, - "end": 4770, - "loc": { - "start": { - "line": 151, - "column": 18 - }, - "end": { - "line": 151, - "column": 23 - }, - "identifierName": "style" - }, - "name": "style" - }, - "computed": false, - "leadingComments": null - }, - "property": { - "type": "Identifier", - "start": 4771, - "end": 4779, - "loc": { - "start": { - "line": 151, - "column": 24 - }, - "end": { - "line": 151, - "column": 32 - }, - "identifierName": "position" - }, - "name": "position" - }, - "computed": false, - "leadingComments": null - }, - "right": { - "type": "StringLiteral", - "start": 4782, - "end": 4792, - "loc": { - "start": { - "line": 151, - "column": 35 - }, - "end": { - "line": 151, - "column": 45 - } - }, - "extra": { - "rawValue": "absolute", - "raw": "\"absolute\"" - }, - "value": "absolute" - }, - "leadingComments": null - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": "const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;", - "start": 4683, - "end": 4745, - "loc": { - "start": { - "line": 149, - "column": 8 - }, - "end": { - "line": 149, - "column": 70 - } - } - } - ] - }, - { - "type": "ExpressionStatement", - "start": 4802, - "end": 4833, - "loc": { - "start": { - "line": 152, - "column": 8 - }, - "end": { - "line": 152, - "column": 39 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 4802, - "end": 4832, - "loc": { - "start": { - "line": 152, - "column": 8 - }, - "end": { - "line": 152, - "column": 38 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 4802, - "end": 4828, - "loc": { - "start": { - "line": 152, - "column": 8 - }, - "end": { - "line": 152, - "column": 34 - } - }, - "object": { - "type": "MemberExpression", - "start": 4802, - "end": 4817, - "loc": { - "start": { - "line": 152, - "column": 8 - }, - "end": { - "line": 152, - "column": 23 - } - }, - "object": { - "type": "MemberExpression", - "start": 4802, - "end": 4811, - "loc": { - "start": { - "line": 152, - "column": 8 - }, - "end": { - "line": 152, - "column": 17 - } - }, - "object": { - "type": "ThisExpression", - "start": 4802, - "end": 4806, - "loc": { - "start": { - "line": 152, - "column": 8 + "body": [ + { + "type": "ExpressionStatement", + "start": 5090, + "end": 5109, + "loc": { + "start": { + "line": 125, + "column": 16 + }, + "end": { + "line": 125, + "column": 35 + } + }, + "expression": { + "type": "CallExpression", + "start": 5090, + "end": 5108, + "loc": { + "start": { + "line": 125, + "column": 16 + }, + "end": { + "line": 125, + "column": 34 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5090, + "end": 5106, + "loc": { + "start": { + "line": 125, + "column": 16 + }, + "end": { + "line": 125, + "column": 32 + } + }, + "object": { + "type": "ThisExpression", + "start": 5090, + "end": 5094, + "loc": { + "start": { + "line": 125, + "column": 16 + }, + "end": { + "line": 125, + "column": 20 + } + } + }, + "property": { + "type": "Identifier", + "start": 5095, + "end": 5106, + "loc": { + "start": { + "line": 125, + "column": 21 + }, + "end": { + "line": 125, + "column": 32 + }, + "identifierName": "_cancelFade" + }, + "name": "_cancelFade" + }, + "computed": false + }, + "arguments": [] + } + }, + { + "type": "ExpressionStatement", + "start": 5126, + "end": 5158, + "loc": { + "start": { + "line": 126, + "column": 16 + }, + "end": { + "line": 126, + "column": 48 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5126, + "end": 5157, + "loc": { + "start": { + "line": 126, + "column": 16 + }, + "end": { + "line": 126, + "column": 47 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 5126, + "end": 5149, + "loc": { + "start": { + "line": 126, + "column": 16 + }, + "end": { + "line": 126, + "column": 39 + } + }, + "object": { + "type": "MemberExpression", + "start": 5126, + "end": 5138, + "loc": { + "start": { + "line": 126, + "column": 16 + }, + "end": { + "line": 126, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 5126, + "end": 5132, + "loc": { + "start": { + "line": 126, + "column": 16 + }, + "end": { + "line": 126, + "column": 22 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 5133, + "end": 5138, + "loc": { + "start": { + "line": 126, + "column": 23 + }, + "end": { + "line": 126, + "column": 28 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5139, + "end": 5149, + "loc": { + "start": { + "line": 126, + "column": 29 + }, + "end": { + "line": 126, + "column": 39 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" + }, + "computed": false + }, + "right": { + "type": "BooleanLiteral", + "start": 5152, + "end": 5157, + "loc": { + "start": { + "line": 126, + "column": 42 + }, + "end": { + "line": 126, + "column": 47 + } + }, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 5175, + "end": 5208, + "loc": { + "start": { + "line": 127, + "column": 16 + }, + "end": { + "line": 127, + "column": 49 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5175, + "end": 5207, + "loc": { + "start": { + "line": 127, + "column": 16 + }, + "end": { + "line": 127, + "column": 48 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 5175, + "end": 5199, + "loc": { + "start": { + "line": 127, + "column": 16 + }, + "end": { + "line": 127, + "column": 40 + } + }, + "object": { + "type": "MemberExpression", + "start": 5175, + "end": 5191, + "loc": { + "start": { + "line": 127, + "column": 16 + }, + "end": { + "line": 127, + "column": 32 + } + }, + "object": { + "type": "MemberExpression", + "start": 5175, + "end": 5187, + "loc": { + "start": { + "line": 127, + "column": 16 + }, + "end": { + "line": 127, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 5175, + "end": 5181, + "loc": { + "start": { + "line": 127, + "column": 16 + }, + "end": { + "line": 127, + "column": 22 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 5182, + "end": 5187, + "loc": { + "start": { + "line": 127, + "column": 23 + }, + "end": { + "line": 127, + "column": 28 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5188, + "end": 5191, + "loc": { + "start": { + "line": 127, + "column": 29 + }, + "end": { + "line": 127, + "column": 32 + }, + "identifierName": "sao" + }, + "name": "sao" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5192, + "end": 5199, + "loc": { + "start": { + "line": 127, + "column": 33 + }, + "end": { + "line": 127, + "column": 40 + }, + "identifierName": "enabled" + }, + "name": "enabled" + }, + "computed": false + }, + "right": { + "type": "BooleanLiteral", + "start": 5202, + "end": 5207, + "loc": { + "start": { + "line": 127, + "column": 43 + }, + "end": { + "line": 127, + "column": 48 + } + }, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 5225, + "end": 5265, + "loc": { + "start": { + "line": 128, + "column": 16 + }, + "end": { + "line": 128, + "column": 56 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5225, + "end": 5264, + "loc": { + "start": { + "line": 128, + "column": 16 + }, + "end": { + "line": 128, + "column": 55 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 5225, + "end": 5256, + "loc": { + "start": { + "line": 128, + "column": 16 + }, + "end": { + "line": 128, + "column": 47 + } + }, + "object": { + "type": "MemberExpression", + "start": 5225, + "end": 5250, + "loc": { + "start": { + "line": 128, + "column": 16 + }, + "end": { + "line": 128, + "column": 41 + } + }, + "object": { + "type": "MemberExpression", + "start": 5225, + "end": 5237, + "loc": { + "start": { + "line": 128, + "column": 16 + }, + "end": { + "line": 128, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 5225, + "end": 5231, + "loc": { + "start": { + "line": 128, + "column": 16 + }, + "end": { + "line": 128, + "column": 22 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 5232, + "end": 5237, + "loc": { + "start": { + "line": 128, + "column": 23 + }, + "end": { + "line": 128, + "column": 28 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5238, + "end": 5250, + "loc": { + "start": { + "line": 128, + "column": 29 + }, + "end": { + "line": 128, + "column": 41 + }, + "identifierName": "edgeMaterial" + }, + "name": "edgeMaterial" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5251, + "end": 5256, + "loc": { + "start": { + "line": 128, + "column": 42 + }, + "end": { + "line": 128, + "column": 47 + }, + "identifierName": "edges" + }, + "name": "edges" + }, + "computed": false + }, + "right": { + "type": "BooleanLiteral", + "start": 5259, + "end": 5264, + "loc": { + "start": { + "line": 128, + "column": 50 + }, + "end": { + "line": 128, + "column": 55 + } + }, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 5282, + "end": 5298, + "loc": { + "start": { + "line": 129, + "column": 16 + }, + "end": { + "line": 129, + "column": 32 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5282, + "end": 5297, + "loc": { + "start": { + "line": 129, + "column": 16 + }, + "end": { + "line": 129, + "column": 31 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 5282, + "end": 5290, + "loc": { + "start": { + "line": 129, + "column": 16 + }, + "end": { + "line": 129, + "column": 24 + }, + "identifierName": "fastMode" + }, + "name": "fastMode" + }, + "right": { + "type": "BooleanLiteral", + "start": 5293, + "end": 5297, + "loc": { + "start": { + "line": 129, + "column": 27 + }, + "end": { + "line": 129, + "column": 31 + } + }, + "value": true + } + } + } + ], + "directives": [] + }, + "alternate": null }, - "end": { - "line": 152, - "column": 12 + { + "type": "ExpressionStatement", + "start": 5325, + "end": 5337, + "loc": { + "start": { + "line": 131, + "column": 12 + }, + "end": { + "line": 131, + "column": 24 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5325, + "end": 5336, + "loc": { + "start": { + "line": 131, + "column": 12 + }, + "end": { + "line": 131, + "column": 23 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 5325, + "end": 5329, + "loc": { + "start": { + "line": 131, + "column": 12 + }, + "end": { + "line": 131, + "column": 16 + }, + "identifierName": "down" + }, + "name": "down" + }, + "right": { + "type": "BooleanLiteral", + "start": 5332, + "end": 5336, + "loc": { + "start": { + "line": 131, + "column": 19 + }, + "end": { + "line": 131, + "column": 23 + } + }, + "value": true + } + } } - } - }, - "property": { - "type": "Identifier", - "start": 4807, - "end": 4811, - "loc": { - "start": { - "line": 152, - "column": 13 - }, - "end": { - "line": 152, - "column": 17 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 4812, - "end": 4817, - "loc": { - "start": { - "line": 152, - "column": 18 - }, - "end": { - "line": 152, - "column": 23 - }, - "identifierName": "style" - }, - "name": "style" - }, - "computed": false - }, - "property": { - "type": "StringLiteral", - "start": 4818, - "end": 4827, - "loc": { - "start": { - "line": 152, - "column": 24 - }, - "end": { - "line": 152, - "column": 33 + ], + "directives": [] } - }, - "extra": { - "rawValue": "z-index", - "raw": "\"z-index\"" - }, - "value": "z-index" - }, - "computed": true - }, - "right": { - "type": "NumericLiteral", - "start": 4831, - "end": 4832, - "loc": { - "start": { - "line": 152, - "column": 37 - }, - "end": { - "line": 152, - "column": 38 } - }, - "extra": { - "rawValue": 5, - "raw": "5" - }, - "value": 5 + ] } } }, { "type": "ExpressionStatement", - "start": 4842, - "end": 4898, + "start": 5359, + "end": 5460, "loc": { "start": { - "line": 153, + "line": 134, "column": 8 }, "end": { - "line": 153, - "column": 64 + "line": 136, + "column": 11 } }, "expression": { "type": "AssignmentExpression", - "start": 4842, - "end": 4897, + "start": 5359, + "end": 5459, "loc": { "start": { - "line": 153, + "line": 134, "column": 8 }, "end": { - "line": 153, - "column": 63 + "line": 136, + "column": 10 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 4842, - "end": 4871, + "start": 5359, + "end": 5379, "loc": { "start": { - "line": 153, + "line": 134, "column": 8 }, "end": { - "line": 153, - "column": 37 + "line": 134, + "column": 28 } }, "object": { - "type": "MemberExpression", - "start": 4842, - "end": 4857, + "type": "ThisExpression", + "start": 5359, + "end": 5363, "loc": { "start": { - "line": 153, + "line": 134, "column": 8 }, "end": { - "line": 153, - "column": 23 + "line": 134, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 5364, + "end": 5379, + "loc": { + "start": { + "line": 134, + "column": 13 + }, + "end": { + "line": 134, + "column": 28 + }, + "identifierName": "_onSceneMouseUp" + }, + "name": "_onSceneMouseUp" + }, + "computed": false + }, + "right": { + "type": "CallExpression", + "start": 5382, + "end": 5459, + "loc": { + "start": { + "line": 134, + "column": 31 + }, + "end": { + "line": 136, + "column": 10 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5382, + "end": 5403, + "loc": { + "start": { + "line": 134, + "column": 31 + }, + "end": { + "line": 134, + "column": 52 } }, "object": { "type": "MemberExpression", - "start": 4842, - "end": 4851, + "start": 5382, + "end": 5400, "loc": { "start": { - "line": 153, - "column": 8 + "line": 134, + "column": 31 }, "end": { - "line": 153, - "column": 17 + "line": 134, + "column": 49 } }, "object": { - "type": "ThisExpression", - "start": 4842, - "end": 4846, + "type": "MemberExpression", + "start": 5382, + "end": 5394, "loc": { "start": { - "line": 153, - "column": 8 + "line": 134, + "column": 31 }, "end": { - "line": 153, - "column": 12 + "line": 134, + "column": 43 } - } + }, + "object": { + "type": "Identifier", + "start": 5382, + "end": 5388, + "loc": { + "start": { + "line": 134, + "column": 31 + }, + "end": { + "line": 134, + "column": 37 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 5389, + "end": 5394, + "loc": { + "start": { + "line": 134, + "column": 38 + }, + "end": { + "line": 134, + "column": 43 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false }, "property": { "type": "Identifier", - "start": 4847, - "end": 4851, + "start": 5395, + "end": 5400, "loc": { "start": { - "line": 153, - "column": 13 + "line": 134, + "column": 44 }, "end": { - "line": 153, - "column": 17 + "line": 134, + "column": 49 }, - "identifierName": "_img" + "identifierName": "input" }, - "name": "_img" + "name": "input" }, "computed": false }, "property": { "type": "Identifier", - "start": 4852, - "end": 4857, + "start": 5401, + "end": 5403, "loc": { "start": { - "line": 153, - "column": 18 + "line": 134, + "column": 50 }, "end": { - "line": 153, - "column": 23 + "line": 134, + "column": 52 }, - "identifierName": "style" + "identifierName": "on" }, - "name": "style" + "name": "on" }, "computed": false }, - "property": { - "type": "StringLiteral", - "start": 4858, - "end": 4870, - "loc": { - "start": { - "line": 153, - "column": 24 - }, - "end": { - "line": 153, - "column": 36 - } - }, - "extra": { - "rawValue": "background", - "raw": "\"background\"" - }, - "value": "background" - }, - "computed": true - }, - "right": { - "type": "MemberExpression", - "start": 4874, - "end": 4897, - "loc": { - "start": { - "line": 153, - "column": 40 - }, - "end": { - "line": 153, - "column": 63 - } - }, - "object": { - "type": "MemberExpression", - "start": 4874, - "end": 4886, - "loc": { - "start": { - "line": 153, - "column": 40 - }, - "end": { - "line": 153, - "column": 52 - } - }, - "object": { - "type": "Identifier", - "start": 4874, - "end": 4880, + "arguments": [ + { + "type": "StringLiteral", + "start": 5404, + "end": 5413, "loc": { "start": { - "line": 153, - "column": 40 + "line": 134, + "column": 53 }, "end": { - "line": 153, - "column": 46 - }, - "identifierName": "canvas" + "line": 134, + "column": 62 + } }, - "name": "canvas" + "extra": { + "rawValue": "mouseup", + "raw": "\"mouseup\"" + }, + "value": "mouseup" }, - "property": { - "type": "Identifier", - "start": 4881, - "end": 4886, + { + "type": "ArrowFunctionExpression", + "start": 5415, + "end": 5458, "loc": { "start": { - "line": 153, - "column": 47 + "line": 134, + "column": 64 }, "end": { - "line": 153, - "column": 52 - }, - "identifierName": "style" - }, - "name": "style" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 4887, - "end": 4897, - "loc": { - "start": { - "line": 153, - "column": 53 - }, - "end": { - "line": 153, - "column": 63 + "line": 136, + "column": 9 + } }, - "identifierName": "background" - }, - "name": "background" - }, - "computed": false + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 5421, + "end": 5458, + "loc": { + "start": { + "line": 134, + "column": 70 + }, + "end": { + "line": 136, + "column": 9 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 5435, + "end": 5448, + "loc": { + "start": { + "line": 135, + "column": 12 + }, + "end": { + "line": 135, + "column": 25 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5435, + "end": 5447, + "loc": { + "start": { + "line": 135, + "column": 12 + }, + "end": { + "line": 135, + "column": 24 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 5435, + "end": 5439, + "loc": { + "start": { + "line": 135, + "column": 12 + }, + "end": { + "line": 135, + "column": 16 + }, + "identifierName": "down" + }, + "name": "down" + }, + "right": { + "type": "BooleanLiteral", + "start": 5442, + "end": 5447, + "loc": { + "start": { + "line": 135, + "column": 19 + }, + "end": { + "line": 135, + "column": 24 + } + }, + "value": false + } + } + } + ], + "directives": [] + } + } + ] } } }, { "type": "ExpressionStatement", - "start": 4907, - "end": 4955, + "start": 5470, + "end": 5917, "loc": { "start": { - "line": 154, + "line": 138, "column": 8 }, "end": { - "line": 154, - "column": 56 + "line": 150, + "column": 11 } }, "expression": { "type": "AssignmentExpression", - "start": 4907, - "end": 4954, + "start": 5470, + "end": 5916, "loc": { "start": { - "line": 154, + "line": 138, "column": 8 }, "end": { - "line": 154, - "column": 55 + "line": 150, + "column": 10 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 4907, - "end": 4927, + "start": 5470, + "end": 5492, "loc": { "start": { - "line": 154, + "line": 138, "column": 8 }, "end": { - "line": 154, - "column": 28 + "line": 138, + "column": 30 } }, "object": { - "type": "MemberExpression", - "start": 4907, - "end": 4922, + "type": "ThisExpression", + "start": 5470, + "end": 5474, "loc": { "start": { - "line": 154, + "line": 138, "column": 8 }, "end": { - "line": 154, - "column": 23 + "line": 138, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 5475, + "end": 5492, + "loc": { + "start": { + "line": 138, + "column": 13 + }, + "end": { + "line": 138, + "column": 30 + }, + "identifierName": "_onSceneMouseMove" + }, + "name": "_onSceneMouseMove" + }, + "computed": false + }, + "right": { + "type": "CallExpression", + "start": 5495, + "end": 5916, + "loc": { + "start": { + "line": 138, + "column": 33 + }, + "end": { + "line": 150, + "column": 10 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5495, + "end": 5516, + "loc": { + "start": { + "line": 138, + "column": 33 + }, + "end": { + "line": 138, + "column": 54 } }, "object": { "type": "MemberExpression", - "start": 4907, - "end": 4916, + "start": 5495, + "end": 5513, "loc": { "start": { - "line": 154, - "column": 8 + "line": 138, + "column": 33 }, "end": { - "line": 154, - "column": 17 + "line": 138, + "column": 51 } }, "object": { - "type": "ThisExpression", - "start": 4907, - "end": 4911, + "type": "MemberExpression", + "start": 5495, + "end": 5507, "loc": { "start": { - "line": 154, - "column": 8 + "line": 138, + "column": 33 }, "end": { - "line": 154, - "column": 12 + "line": 138, + "column": 45 } - } + }, + "object": { + "type": "Identifier", + "start": 5495, + "end": 5501, + "loc": { + "start": { + "line": 138, + "column": 33 + }, + "end": { + "line": 138, + "column": 39 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 5502, + "end": 5507, + "loc": { + "start": { + "line": 138, + "column": 40 + }, + "end": { + "line": 138, + "column": 45 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false }, "property": { "type": "Identifier", - "start": 4912, - "end": 4916, + "start": 5508, + "end": 5513, "loc": { "start": { - "line": 154, - "column": 13 + "line": 138, + "column": 46 }, "end": { - "line": 154, - "column": 17 + "line": 138, + "column": 51 }, - "identifierName": "_img" + "identifierName": "input" }, - "name": "_img" + "name": "input" }, "computed": false }, "property": { "type": "Identifier", - "start": 4917, - "end": 4922, + "start": 5514, + "end": 5516, "loc": { "start": { - "line": 154, - "column": 18 + "line": 138, + "column": 52 }, "end": { - "line": 154, - "column": 23 + "line": 138, + "column": 54 }, - "identifierName": "style" + "identifierName": "on" }, - "name": "style" + "name": "on" }, "computed": false }, - "property": { - "type": "Identifier", - "start": 4923, - "end": 4927, - "loc": { - "start": { - "line": 154, - "column": 24 + "arguments": [ + { + "type": "StringLiteral", + "start": 5517, + "end": 5528, + "loc": { + "start": { + "line": 138, + "column": 55 + }, + "end": { + "line": 138, + "column": 66 + } }, - "end": { - "line": 154, - "column": 28 + "extra": { + "rawValue": "mousemove", + "raw": "\"mousemove\"" }, - "identifierName": "left" - }, - "name": "left" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 4930, - "end": 4954, - "loc": { - "start": { - "line": 154, - "column": 31 + "value": "mousemove" }, - "end": { - "line": 154, - "column": 55 - } - }, - "left": { - "type": "MemberExpression", - "start": 4930, - "end": 4947, - "loc": { - "start": { - "line": 154, - "column": 31 - }, - "end": { - "line": 154, - "column": 48 - } - }, - "object": { - "type": "Identifier", - "start": 4930, - "end": 4942, - "loc": { - "start": { - "line": 154, - "column": 31 - }, - "end": { - "line": 154, - "column": 43 - }, - "identifierName": "canvasOffset" - }, - "name": "canvasOffset" - }, - "property": { - "type": "Identifier", - "start": 4943, - "end": 4947, - "loc": { - "start": { - "line": 154, - "column": 44 - }, - "end": { - "line": 154, - "column": 48 - }, - "identifierName": "left" - }, - "name": "left" - }, - "computed": false - }, - "operator": "+", - "right": { - "type": "StringLiteral", - "start": 4950, - "end": 4954, - "loc": { - "start": { - "line": 154, - "column": 51 - }, - "end": { - "line": 154, - "column": 55 - } - }, - "extra": { - "rawValue": "px", - "raw": "\"px\"" - }, - "value": "px" - } - } - } - }, - { - "type": "ExpressionStatement", - "start": 4964, - "end": 5010, - "loc": { - "start": { - "line": 155, - "column": 8 - }, - "end": { - "line": 155, - "column": 54 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 4964, - "end": 5009, - "loc": { - "start": { - "line": 155, - "column": 8 - }, - "end": { - "line": 155, - "column": 53 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 4964, - "end": 4983, - "loc": { - "start": { - "line": 155, - "column": 8 - }, - "end": { - "line": 155, - "column": 27 - } - }, - "object": { - "type": "MemberExpression", - "start": 4964, - "end": 4979, - "loc": { - "start": { - "line": 155, - "column": 8 - }, - "end": { - "line": 155, - "column": 23 - } - }, - "object": { - "type": "MemberExpression", - "start": 4964, - "end": 4973, + { + "type": "ArrowFunctionExpression", + "start": 5530, + "end": 5915, "loc": { "start": { - "line": 155, - "column": 8 + "line": 138, + "column": 68 }, "end": { - "line": 155, - "column": 17 + "line": 150, + "column": 9 } }, - "object": { - "type": "ThisExpression", - "start": 4964, - "end": 4968, + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 5536, + "end": 5915, "loc": { "start": { - "line": 155, - "column": 8 + "line": 138, + "column": 74 }, "end": { - "line": 155, - "column": 12 + "line": 150, + "column": 9 } - } - }, - "property": { - "type": "Identifier", - "start": 4969, - "end": 4973, - "loc": { - "start": { - "line": 155, - "column": 13 - }, - "end": { - "line": 155, - "column": 17 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 4974, - "end": 4979, - "loc": { - "start": { - "line": 155, - "column": 18 - }, - "end": { - "line": 155, - "column": 23 - }, - "identifierName": "style" - }, - "name": "style" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 4980, - "end": 4983, - "loc": { - "start": { - "line": 155, - "column": 24 - }, - "end": { - "line": 155, - "column": 27 - }, - "identifierName": "top" - }, - "name": "top" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 4986, - "end": 5009, - "loc": { - "start": { - "line": 155, - "column": 30 - }, - "end": { - "line": 155, - "column": 53 - } - }, - "left": { - "type": "MemberExpression", - "start": 4986, - "end": 5002, - "loc": { - "start": { - "line": 155, - "column": 30 - }, - "end": { - "line": 155, - "column": 46 - } - }, - "object": { - "type": "Identifier", - "start": 4986, - "end": 4998, - "loc": { - "start": { - "line": 155, - "column": 30 - }, - "end": { - "line": 155, - "column": 42 - }, - "identifierName": "canvasOffset" - }, - "name": "canvasOffset" - }, - "property": { - "type": "Identifier", - "start": 4999, - "end": 5002, - "loc": { - "start": { - "line": 155, - "column": 43 - }, - "end": { - "line": 155, - "column": 46 - }, - "identifierName": "top" - }, - "name": "top" - }, - "computed": false - }, - "operator": "+", - "right": { - "type": "StringLiteral", - "start": 5005, - "end": 5009, - "loc": { - "start": { - "line": 155, - "column": 49 - }, - "end": { - "line": 155, - "column": 53 - } - }, - "extra": { - "rawValue": "px", - "raw": "\"px\"" - }, - "value": "px" - } - } - } - }, - { - "type": "ExpressionStatement", - "start": 5019, - "end": 5063, - "loc": { - "start": { - "line": 156, - "column": 8 - }, - "end": { - "line": 156, - "column": 52 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 5019, - "end": 5062, - "loc": { - "start": { - "line": 156, - "column": 8 - }, - "end": { - "line": 156, - "column": 51 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 5019, - "end": 5040, - "loc": { - "start": { - "line": 156, - "column": 8 - }, - "end": { - "line": 156, - "column": 29 - } - }, - "object": { - "type": "MemberExpression", - "start": 5019, - "end": 5034, - "loc": { - "start": { - "line": 156, - "column": 8 - }, - "end": { - "line": 156, - "column": 23 - } - }, - "object": { - "type": "MemberExpression", - "start": 5019, - "end": 5028, - "loc": { - "start": { - "line": 156, - "column": 8 }, - "end": { - "line": 156, - "column": 17 - } - }, - "object": { - "type": "ThisExpression", - "start": 5019, - "end": 5023, - "loc": { - "start": { - "line": 156, - "column": 8 - }, - "end": { - "line": 156, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 5024, - "end": 5028, - "loc": { - "start": { - "line": 156, - "column": 13 + "body": [ + { + "type": "IfStatement", + "start": 5550, + "end": 5600, + "loc": { + "start": { + "line": 139, + "column": 12 + }, + "end": { + "line": 141, + "column": 13 + } + }, + "test": { + "type": "UnaryExpression", + "start": 5554, + "end": 5559, + "loc": { + "start": { + "line": 139, + "column": 16 + }, + "end": { + "line": 139, + "column": 21 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 5555, + "end": 5559, + "loc": { + "start": { + "line": 139, + "column": 17 + }, + "end": { + "line": 139, + "column": 21 + }, + "identifierName": "down" + }, + "name": "down" + }, + "extra": { + "parenthesizedArgument": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 5561, + "end": 5600, + "loc": { + "start": { + "line": 139, + "column": 23 + }, + "end": { + "line": 141, + "column": 13 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 5579, + "end": 5586, + "loc": { + "start": { + "line": 140, + "column": 16 + }, + "end": { + "line": 140, + "column": 23 + } + }, + "argument": null + } + ], + "directives": [] + }, + "alternate": null }, - "end": { - "line": 156, - "column": 17 + { + "type": "ExpressionStatement", + "start": 5613, + "end": 5637, + "loc": { + "start": { + "line": 142, + "column": 12 + }, + "end": { + "line": 142, + "column": 36 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5613, + "end": 5636, + "loc": { + "start": { + "line": 142, + "column": 12 + }, + "end": { + "line": 142, + "column": 35 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 5613, + "end": 5618, + "loc": { + "start": { + "line": 142, + "column": 12 + }, + "end": { + "line": 142, + "column": 17 + }, + "identifierName": "timer" + }, + "name": "timer" + }, + "right": { + "type": "Identifier", + "start": 5621, + "end": 5636, + "loc": { + "start": { + "line": 142, + "column": 20 + }, + "end": { + "line": 142, + "column": 35 + }, + "identifierName": "timeoutDuration" + }, + "name": "timeoutDuration" + } + } }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5029, - "end": 5034, - "loc": { - "start": { - "line": 156, - "column": 18 - }, - "end": { - "line": 156, - "column": 23 - }, - "identifierName": "style" - }, - "name": "style" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5035, - "end": 5040, - "loc": { - "start": { - "line": 156, - "column": 24 - }, - "end": { - "line": 156, - "column": 29 - }, - "identifierName": "width" - }, - "name": "width" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 5043, - "end": 5062, - "loc": { - "start": { - "line": 156, - "column": 32 - }, - "end": { - "line": 156, - "column": 51 - } - }, - "left": { - "type": "MemberExpression", - "start": 5043, - "end": 5055, - "loc": { - "start": { - "line": 156, - "column": 32 - }, - "end": { - "line": 156, - "column": 44 - } - }, - "object": { - "type": "Identifier", - "start": 5043, - "end": 5049, - "loc": { - "start": { - "line": 156, + { + "type": "IfStatement", + "start": 5650, + "end": 5905, + "loc": { + "start": { + "line": 143, + "column": 12 + }, + "end": { + "line": 149, + "column": 13 + } + }, + "test": { + "type": "UnaryExpression", + "start": 5654, + "end": 5663, + "loc": { + "start": { + "line": 143, + "column": 16 + }, + "end": { + "line": 143, + "column": 25 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 5655, + "end": 5663, + "loc": { + "start": { + "line": 143, + "column": 17 + }, + "end": { + "line": 143, + "column": 25 + }, + "identifierName": "fastMode" + }, + "name": "fastMode" + }, + "extra": { + "parenthesizedArgument": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 5665, + "end": 5905, + "loc": { + "start": { + "line": 143, + "column": 27 + }, + "end": { + "line": 149, + "column": 13 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 5683, + "end": 5702, + "loc": { + "start": { + "line": 144, + "column": 16 + }, + "end": { + "line": 144, + "column": 35 + } + }, + "expression": { + "type": "CallExpression", + "start": 5683, + "end": 5701, + "loc": { + "start": { + "line": 144, + "column": 16 + }, + "end": { + "line": 144, + "column": 34 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5683, + "end": 5699, + "loc": { + "start": { + "line": 144, + "column": 16 + }, + "end": { + "line": 144, + "column": 32 + } + }, + "object": { + "type": "ThisExpression", + "start": 5683, + "end": 5687, + "loc": { + "start": { + "line": 144, + "column": 16 + }, + "end": { + "line": 144, + "column": 20 + } + } + }, + "property": { + "type": "Identifier", + "start": 5688, + "end": 5699, + "loc": { + "start": { + "line": 144, + "column": 21 + }, + "end": { + "line": 144, + "column": 32 + }, + "identifierName": "_cancelFade" + }, + "name": "_cancelFade" + }, + "computed": false + }, + "arguments": [] + } + }, + { + "type": "ExpressionStatement", + "start": 5719, + "end": 5751, + "loc": { + "start": { + "line": 145, + "column": 16 + }, + "end": { + "line": 145, + "column": 48 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5719, + "end": 5750, + "loc": { + "start": { + "line": 145, + "column": 16 + }, + "end": { + "line": 145, + "column": 47 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 5719, + "end": 5742, + "loc": { + "start": { + "line": 145, + "column": 16 + }, + "end": { + "line": 145, + "column": 39 + } + }, + "object": { + "type": "MemberExpression", + "start": 5719, + "end": 5731, + "loc": { + "start": { + "line": 145, + "column": 16 + }, + "end": { + "line": 145, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 5719, + "end": 5725, + "loc": { + "start": { + "line": 145, + "column": 16 + }, + "end": { + "line": 145, + "column": 22 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 5726, + "end": 5731, + "loc": { + "start": { + "line": 145, + "column": 23 + }, + "end": { + "line": 145, + "column": 28 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5732, + "end": 5742, + "loc": { + "start": { + "line": 145, + "column": 29 + }, + "end": { + "line": 145, + "column": 39 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" + }, + "computed": false + }, + "right": { + "type": "BooleanLiteral", + "start": 5745, + "end": 5750, + "loc": { + "start": { + "line": 145, + "column": 42 + }, + "end": { + "line": 145, + "column": 47 + } + }, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 5768, + "end": 5801, + "loc": { + "start": { + "line": 146, + "column": 16 + }, + "end": { + "line": 146, + "column": 49 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5768, + "end": 5800, + "loc": { + "start": { + "line": 146, + "column": 16 + }, + "end": { + "line": 146, + "column": 48 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 5768, + "end": 5792, + "loc": { + "start": { + "line": 146, + "column": 16 + }, + "end": { + "line": 146, + "column": 40 + } + }, + "object": { + "type": "MemberExpression", + "start": 5768, + "end": 5784, + "loc": { + "start": { + "line": 146, + "column": 16 + }, + "end": { + "line": 146, + "column": 32 + } + }, + "object": { + "type": "MemberExpression", + "start": 5768, + "end": 5780, + "loc": { + "start": { + "line": 146, + "column": 16 + }, + "end": { + "line": 146, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 5768, + "end": 5774, + "loc": { + "start": { + "line": 146, + "column": 16 + }, + "end": { + "line": 146, + "column": 22 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 5775, + "end": 5780, + "loc": { + "start": { + "line": 146, + "column": 23 + }, + "end": { + "line": 146, + "column": 28 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5781, + "end": 5784, + "loc": { + "start": { + "line": 146, + "column": 29 + }, + "end": { + "line": 146, + "column": 32 + }, + "identifierName": "sao" + }, + "name": "sao" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5785, + "end": 5792, + "loc": { + "start": { + "line": 146, + "column": 33 + }, + "end": { + "line": 146, + "column": 40 + }, + "identifierName": "enabled" + }, + "name": "enabled" + }, + "computed": false + }, + "right": { + "type": "BooleanLiteral", + "start": 5795, + "end": 5800, + "loc": { + "start": { + "line": 146, + "column": 43 + }, + "end": { + "line": 146, + "column": 48 + } + }, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 5818, + "end": 5858, + "loc": { + "start": { + "line": 147, + "column": 16 + }, + "end": { + "line": 147, + "column": 56 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5818, + "end": 5857, + "loc": { + "start": { + "line": 147, + "column": 16 + }, + "end": { + "line": 147, + "column": 55 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 5818, + "end": 5849, + "loc": { + "start": { + "line": 147, + "column": 16 + }, + "end": { + "line": 147, + "column": 47 + } + }, + "object": { + "type": "MemberExpression", + "start": 5818, + "end": 5843, + "loc": { + "start": { + "line": 147, + "column": 16 + }, + "end": { + "line": 147, + "column": 41 + } + }, + "object": { + "type": "MemberExpression", + "start": 5818, + "end": 5830, + "loc": { + "start": { + "line": 147, + "column": 16 + }, + "end": { + "line": 147, + "column": 28 + } + }, + "object": { + "type": "Identifier", + "start": 5818, + "end": 5824, + "loc": { + "start": { + "line": 147, + "column": 16 + }, + "end": { + "line": 147, + "column": 22 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 5825, + "end": 5830, + "loc": { + "start": { + "line": 147, + "column": 23 + }, + "end": { + "line": 147, + "column": 28 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5831, + "end": 5843, + "loc": { + "start": { + "line": 147, + "column": 29 + }, + "end": { + "line": 147, + "column": 41 + }, + "identifierName": "edgeMaterial" + }, + "name": "edgeMaterial" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5844, + "end": 5849, + "loc": { + "start": { + "line": 147, + "column": 42 + }, + "end": { + "line": 147, + "column": 47 + }, + "identifierName": "edges" + }, + "name": "edges" + }, + "computed": false + }, + "right": { + "type": "BooleanLiteral", + "start": 5852, + "end": 5857, + "loc": { + "start": { + "line": 147, + "column": 50 + }, + "end": { + "line": 147, + "column": 55 + } + }, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 5875, + "end": 5891, + "loc": { + "start": { + "line": 148, + "column": 16 + }, + "end": { + "line": 148, + "column": 32 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5875, + "end": 5890, + "loc": { + "start": { + "line": 148, + "column": 16 + }, + "end": { + "line": 148, + "column": 31 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 5875, + "end": 5883, + "loc": { + "start": { + "line": 148, + "column": 16 + }, + "end": { + "line": 148, + "column": 24 + }, + "identifierName": "fastMode" + }, + "name": "fastMode" + }, + "right": { + "type": "BooleanLiteral", + "start": 5886, + "end": 5890, + "loc": { + "start": { + "line": 148, + "column": 27 + }, + "end": { + "line": 148, + "column": 31 + } + }, + "value": true + } + } + } + ], + "directives": [] + }, + "alternate": null + } + ], + "directives": [] + } + } + ] + } + } + } + ], + "directives": [] + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\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.pbrEnabled] Whether to enable physically-based rendering (PBR) when the camera stops moving. When not specified, PBR will be enabled if it's currently enabled for the Viewer (see {@link Viewer#pbrEnabled}).\n * @param {Boolean} [cfg.saoEnabled] Whether to enable scalable ambient occlusion (SAO) when the camera stops moving. When not specified, SAO will be enabled if it's currently enabled for the Viewer (see {@link Scene#pbrEnabled}).\n * @param {Boolean} [cfg.edgesEnabled] Whether to show enhanced edges when the camera stops moving. When not specified, edges will be enabled if they're currently enabled for the Viewer (see {@link EdgeMaterial#edges}).\n ", + "start": 1746, + "end": 2695, + "loc": { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 63, + "column": 7 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 5929, + "end": 7623, + "loc": { + "start": { + "line": 153, + "column": 4 + }, + "end": { + "line": 202, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 5929, + "end": 5939, + "loc": { + "start": { + "line": 153, + "column": 4 + }, + "end": { + "line": 153, + "column": 14 + }, + "identifierName": "_startFade" + }, + "name": "_startFade" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 5942, + "end": 7623, + "loc": { + "start": { + "line": 153, + "column": 17 + }, + "end": { + "line": 202, + "column": 5 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 5953, + "end": 6010, + "loc": { + "start": { + "line": 155, + "column": 8 + }, + "end": { + "line": 157, + "column": 9 + } + }, + "test": { + "type": "UnaryExpression", + "start": 5957, + "end": 5967, + "loc": { + "start": { + "line": 155, + "column": 12 + }, + "end": { + "line": 155, + "column": 22 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "MemberExpression", + "start": 5958, + "end": 5967, + "loc": { + "start": { + "line": 155, + "column": 13 + }, + "end": { + "line": 155, + "column": 22 + } + }, + "object": { + "type": "ThisExpression", + "start": 5958, + "end": 5962, + "loc": { + "start": { + "line": 155, + "column": 13 + }, + "end": { + "line": 155, + "column": 17 + } + } + }, + "property": { + "type": "Identifier", + "start": 5963, + "end": 5967, + "loc": { + "start": { + "line": 155, + "column": 18 + }, + "end": { + "line": 155, + "column": 22 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "extra": { + "parenthesizedArgument": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 5969, + "end": 6010, + "loc": { + "start": { + "line": 155, + "column": 24 + }, + "end": { + "line": 157, + "column": 9 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 5983, + "end": 6000, + "loc": { + "start": { + "line": 156, + "column": 12 + }, + "end": { + "line": 156, + "column": 29 + } + }, + "expression": { + "type": "CallExpression", + "start": 5983, + "end": 5999, + "loc": { + "start": { + "line": 156, + "column": 12 + }, + "end": { + "line": 156, + "column": 28 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5983, + "end": 5997, + "loc": { + "start": { + "line": 156, + "column": 12 + }, + "end": { + "line": 156, + "column": 26 + } + }, + "object": { + "type": "ThisExpression", + "start": 5983, + "end": 5987, + "loc": { + "start": { + "line": 156, + "column": 12 + }, + "end": { + "line": 156, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 5988, + "end": 5997, + "loc": { + "start": { + "line": 156, + "column": 17 + }, + "end": { + "line": 156, + "column": 26 + }, + "identifierName": "_initFade" + }, + "name": "_initFade" + }, + "computed": false + }, + "arguments": [] + } + } + ], + "directives": [] + }, + "alternate": null + }, + { + "type": "VariableDeclaration", + "start": 6020, + "end": 6040, + "loc": { + "start": { + "line": 159, + "column": 8 + }, + "end": { + "line": 159, + "column": 28 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6026, + "end": 6039, + "loc": { + "start": { + "line": 159, + "column": 14 + }, + "end": { + "line": 159, + "column": 27 + } + }, + "id": { + "type": "Identifier", + "start": 6026, + "end": 6034, + "loc": { + "start": { + "line": 159, + "column": 14 + }, + "end": { + "line": 159, + "column": 22 + }, + "identifierName": "interval" + }, + "name": "interval" + }, + "init": { + "type": "NumericLiteral", + "start": 6037, + "end": 6039, + "loc": { + "start": { + "line": 159, + "column": 25 + }, + "end": { + "line": 159, + "column": 27 + } + }, + "extra": { + "rawValue": 50, + "raw": "50" + }, + "value": 50 + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 6049, + "end": 6098, + "loc": { + "start": { + "line": 160, + "column": 8 + }, + "end": { + "line": 160, + "column": 57 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6055, + "end": 6097, + "loc": { + "start": { + "line": 160, + "column": 14 + }, + "end": { + "line": 160, + "column": 56 + } + }, + "id": { + "type": "Identifier", + "start": 6055, + "end": 6058, + "loc": { + "start": { + "line": 160, + "column": 14 + }, + "end": { + "line": 160, + "column": 17 + }, + "identifierName": "inc" + }, + "name": "inc" + }, + "init": { + "type": "BinaryExpression", + "start": 6061, + "end": 6097, + "loc": { + "start": { + "line": 160, + "column": 20 + }, + "end": { + "line": 160, + "column": 56 + } + }, + "left": { + "type": "NumericLiteral", + "start": 6061, + "end": 6062, + "loc": { + "start": { + "line": 160, + "column": 20 + }, + "end": { + "line": 160, + "column": 21 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "operator": "/", + "right": { + "type": "BinaryExpression", + "start": 6066, + "end": 6096, + "loc": { + "start": { + "line": 160, + "column": 25 + }, + "end": { + "line": 160, + "column": 55 + } + }, + "left": { + "type": "MemberExpression", + "start": 6066, + "end": 6085, + "loc": { + "start": { + "line": 160, + "column": 25 + }, + "end": { + "line": 160, + "column": 44 + } + }, + "object": { + "type": "ThisExpression", + "start": 6066, + "end": 6070, + "loc": { + "start": { + "line": 160, + "column": 25 + }, + "end": { + "line": 160, + "column": 29 + } + } + }, + "property": { + "type": "Identifier", + "start": 6071, + "end": 6085, + "loc": { + "start": { + "line": 160, + "column": 30 + }, + "end": { + "line": 160, + "column": 44 + }, + "identifierName": "_fadeMillisecs" + }, + "name": "_fadeMillisecs" + }, + "computed": false + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 6088, + "end": 6096, + "loc": { + "start": { + "line": 160, + "column": 47 + }, + "end": { + "line": 160, + "column": 55 + }, + "identifierName": "interval" + }, + "name": "interval" + }, + "extra": { + "parenthesized": true, + "parenStart": 6065 + } + } + } + } + ], + "kind": "const" + }, + { + "type": "IfStatement", + "start": 6108, + "end": 6220, + "loc": { + "start": { + "line": 162, + "column": 8 + }, + "end": { + "line": 165, + "column": 9 + } + }, + "test": { + "type": "MemberExpression", + "start": 6112, + "end": 6127, + "loc": { + "start": { + "line": 162, + "column": 12 + }, + "end": { + "line": 162, + "column": 27 + } + }, + "object": { + "type": "ThisExpression", + "start": 6112, + "end": 6116, + "loc": { + "start": { + "line": 162, + "column": 12 + }, + "end": { + "line": 162, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 6117, + "end": 6127, + "loc": { + "start": { + "line": 162, + "column": 17 + }, + "end": { + "line": 162, + "column": 27 + }, + "identifierName": "_pInterval" + }, + "name": "_pInterval" + }, + "computed": false + }, + "consequent": { + "type": "BlockStatement", + "start": 6129, + "end": 6220, + "loc": { + "start": { + "line": 162, + "column": 29 + }, + "end": { + "line": 165, + "column": 9 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 6143, + "end": 6174, + "loc": { + "start": { + "line": 163, + "column": 12 + }, + "end": { + "line": 163, + "column": 43 + } + }, + "expression": { + "type": "CallExpression", + "start": 6143, + "end": 6173, + "loc": { + "start": { + "line": 163, + "column": 12 + }, + "end": { + "line": 163, + "column": 42 + } + }, + "callee": { + "type": "Identifier", + "start": 6143, + "end": 6156, + "loc": { + "start": { + "line": 163, + "column": 12 + }, + "end": { + "line": 163, + "column": 25 + }, + "identifierName": "clearInterval" + }, + "name": "clearInterval" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 6157, + "end": 6172, + "loc": { + "start": { + "line": 163, + "column": 26 + }, + "end": { + "line": 163, + "column": 41 + } + }, + "object": { + "type": "ThisExpression", + "start": 6157, + "end": 6161, + "loc": { + "start": { + "line": 163, + "column": 26 + }, + "end": { + "line": 163, + "column": 30 + } + } + }, + "property": { + "type": "Identifier", + "start": 6162, + "end": 6172, + "loc": { + "start": { + "line": 163, + "column": 31 + }, + "end": { + "line": 163, + "column": 41 + }, + "identifierName": "_pInterval" + }, + "name": "_pInterval" + }, + "computed": false + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 6187, + "end": 6210, + "loc": { + "start": { + "line": 164, + "column": 12 + }, + "end": { + "line": 164, + "column": 35 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6187, + "end": 6209, + "loc": { + "start": { + "line": 164, + "column": 12 + }, + "end": { + "line": 164, + "column": 34 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6187, + "end": 6202, + "loc": { + "start": { + "line": 164, + "column": 12 + }, + "end": { + "line": 164, + "column": 27 + } + }, + "object": { + "type": "ThisExpression", + "start": 6187, + "end": 6191, + "loc": { + "start": { + "line": 164, + "column": 12 + }, + "end": { + "line": 164, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 6192, + "end": 6202, + "loc": { + "start": { + "line": 164, + "column": 17 + }, + "end": { + "line": 164, + "column": 27 + }, + "identifierName": "_pInterval" + }, + "name": "_pInterval" + }, + "computed": false + }, + "right": { + "type": "NullLiteral", + "start": 6205, + "end": 6209, + "loc": { + "start": { + "line": 164, + "column": 30 + }, + "end": { + "line": 164, + "column": 34 + } + } + } + } + } + ], + "directives": [] + }, + "alternate": null + }, + { + "type": "VariableDeclaration", + "start": 6230, + "end": 6257, + "loc": { + "start": { + "line": 167, + "column": 8 + }, + "end": { + "line": 167, + "column": 35 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6236, + "end": 6256, + "loc": { + "start": { + "line": 167, + "column": 14 + }, + "end": { + "line": 167, + "column": 34 + } + }, + "id": { + "type": "Identifier", + "start": 6236, + "end": 6242, + "loc": { + "start": { + "line": 167, + "column": 14 + }, + "end": { + "line": 167, + "column": 20 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "init": { + "type": "MemberExpression", + "start": 6245, + "end": 6256, + "loc": { + "start": { + "line": 167, + "column": 23 + }, + "end": { + "line": 167, + "column": 34 + } + }, + "object": { + "type": "ThisExpression", + "start": 6245, + "end": 6249, + "loc": { + "start": { + "line": 167, + "column": 23 + }, + "end": { + "line": 167, + "column": 27 + } + } + }, + "property": { + "type": "Identifier", + "start": 6250, + "end": 6256, + "loc": { + "start": { + "line": 167, + "column": 28 + }, + "end": { + "line": 167, + "column": 34 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 6267, + "end": 6309, + "loc": { + "start": { + "line": 169, + "column": 8 + }, + "end": { + "line": 169, + "column": 50 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6273, + "end": 6308, + "loc": { + "start": { + "line": 169, + "column": 14 + }, + "end": { + "line": 169, + "column": 49 + } + }, + "id": { + "type": "Identifier", + "start": 6273, + "end": 6279, + "loc": { + "start": { + "line": 169, + "column": 14 + }, + "end": { + "line": 169, + "column": 20 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "init": { + "type": "MemberExpression", + "start": 6282, + "end": 6308, + "loc": { + "start": { + "line": 169, + "column": 23 + }, + "end": { + "line": 169, + "column": 49 + } + }, + "object": { + "type": "MemberExpression", + "start": 6282, + "end": 6301, + "loc": { + "start": { + "line": 169, + "column": 23 + }, + "end": { + "line": 169, + "column": 42 + } + }, + "object": { + "type": "MemberExpression", + "start": 6282, + "end": 6294, + "loc": { + "start": { + "line": 169, + "column": 23 + }, + "end": { + "line": 169, + "column": 35 + } + }, + "object": { + "type": "Identifier", + "start": 6282, + "end": 6288, + "loc": { + "start": { + "line": 169, + "column": 23 + }, + "end": { + "line": 169, + "column": 29 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "property": { + "type": "Identifier", + "start": 6289, + "end": 6294, + "loc": { + "start": { + "line": 169, + "column": 30 + }, + "end": { + "line": 169, + "column": 35 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6295, + "end": 6301, + "loc": { + "start": { + "line": 169, + "column": 36 + }, + "end": { + "line": 169, + "column": 42 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6302, + "end": 6308, + "loc": { + "start": { + "line": 169, + "column": 43 + }, + "end": { + "line": 169, + "column": 49 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 6318, + "end": 6364, + "loc": { + "start": { + "line": 170, + "column": 8 + }, + "end": { + "line": 170, + "column": 54 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 6324, + "end": 6363, + "loc": { + "start": { + "line": 170, + "column": 14 + }, + "end": { + "line": 170, + "column": 53 + } + }, + "id": { + "type": "Identifier", + "start": 6324, + "end": 6336, + "loc": { + "start": { + "line": 170, + "column": 14 + }, + "end": { + "line": 170, + "column": 26 + }, + "identifierName": "canvasOffset" + }, + "name": "canvasOffset" + }, + "init": { + "type": "CallExpression", + "start": 6339, + "end": 6363, + "loc": { + "start": { + "line": 170, + "column": 29 + }, + "end": { + "line": 170, + "column": 53 + } + }, + "callee": { + "type": "Identifier", + "start": 6339, + "end": 6355, + "loc": { + "start": { + "line": 170, + "column": 29 + }, + "end": { + "line": 170, + "column": 45 + }, + "identifierName": "cumulativeOffset" + }, + "name": "cumulativeOffset" + }, + "arguments": [ + { + "type": "Identifier", + "start": 6356, + "end": 6362, + "loc": { + "start": { + "line": 170, + "column": 46 + }, + "end": { + "line": 170, + "column": 52 + }, + "identifierName": "canvas" + }, + "name": "canvas" + } + ] + } + } + ], + "kind": "const", + "trailingComments": [ + { + "type": "CommentLine", + "value": "const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;", + "start": 6373, + "end": 6435, + "loc": { + "start": { + "line": 171, + "column": 8 + }, + "end": { + "line": 171, + "column": 70 + } + } + } + ] + }, + { + "type": "ExpressionStatement", + "start": 6445, + "end": 6483, + "loc": { + "start": { + "line": 173, + "column": 8 + }, + "end": { + "line": 173, + "column": 46 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6445, + "end": 6482, + "loc": { + "start": { + "line": 173, + "column": 8 + }, + "end": { + "line": 173, + "column": 45 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6445, + "end": 6469, + "loc": { + "start": { + "line": 173, + "column": 8 + }, + "end": { + "line": 173, + "column": 32 + } + }, + "object": { + "type": "MemberExpression", + "start": 6445, + "end": 6460, + "loc": { + "start": { + "line": 173, + "column": 8 + }, + "end": { + "line": 173, + "column": 23 + } + }, + "object": { + "type": "MemberExpression", + "start": 6445, + "end": 6454, + "loc": { + "start": { + "line": 173, + "column": 8 + }, + "end": { + "line": 173, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 6445, + "end": 6449, + "loc": { + "start": { + "line": 173, + "column": 8 + }, + "end": { + "line": 173, + "column": 12 + } + }, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 6450, + "end": 6454, + "loc": { + "start": { + "line": 173, + "column": 13 + }, + "end": { + "line": 173, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 6455, + "end": 6460, + "loc": { + "start": { + "line": 173, + "column": 18 + }, + "end": { + "line": 173, + "column": 23 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false, + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 6461, + "end": 6469, + "loc": { + "start": { + "line": 173, + "column": 24 + }, + "end": { + "line": 173, + "column": 32 + }, + "identifierName": "position" + }, + "name": "position" + }, + "computed": false, + "leadingComments": null + }, + "right": { + "type": "StringLiteral", + "start": 6472, + "end": 6482, + "loc": { + "start": { + "line": 173, + "column": 35 + }, + "end": { + "line": 173, + "column": 45 + } + }, + "extra": { + "rawValue": "absolute", + "raw": "\"absolute\"" + }, + "value": "absolute" + }, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": "const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;", + "start": 6373, + "end": 6435, + "loc": { + "start": { + "line": 171, + "column": 8 + }, + "end": { + "line": 171, + "column": 70 + } + } + } + ] + }, + { + "type": "ExpressionStatement", + "start": 6492, + "end": 6523, + "loc": { + "start": { + "line": 174, + "column": 8 + }, + "end": { + "line": 174, + "column": 39 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6492, + "end": 6522, + "loc": { + "start": { + "line": 174, + "column": 8 + }, + "end": { + "line": 174, + "column": 38 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6492, + "end": 6518, + "loc": { + "start": { + "line": 174, + "column": 8 + }, + "end": { + "line": 174, + "column": 34 + } + }, + "object": { + "type": "MemberExpression", + "start": 6492, + "end": 6507, + "loc": { + "start": { + "line": 174, + "column": 8 + }, + "end": { + "line": 174, + "column": 23 + } + }, + "object": { + "type": "MemberExpression", + "start": 6492, + "end": 6501, + "loc": { + "start": { + "line": 174, + "column": 8 + }, + "end": { + "line": 174, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 6492, + "end": 6496, + "loc": { + "start": { + "line": 174, + "column": 8 + }, + "end": { + "line": 174, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 6497, + "end": 6501, + "loc": { + "start": { + "line": 174, + "column": 13 + }, + "end": { + "line": 174, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6502, + "end": 6507, + "loc": { + "start": { + "line": 174, + "column": 18 + }, + "end": { + "line": 174, + "column": 23 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "StringLiteral", + "start": 6508, + "end": 6517, + "loc": { + "start": { + "line": 174, + "column": 24 + }, + "end": { + "line": 174, + "column": 33 + } + }, + "extra": { + "rawValue": "z-index", + "raw": "\"z-index\"" + }, + "value": "z-index" + }, + "computed": true + }, + "right": { + "type": "NumericLiteral", + "start": 6521, + "end": 6522, + "loc": { + "start": { + "line": 174, + "column": 37 + }, + "end": { + "line": 174, + "column": 38 + } + }, + "extra": { + "rawValue": 5, + "raw": "5" + }, + "value": 5 + } + } + }, + { + "type": "ExpressionStatement", + "start": 6532, + "end": 6588, + "loc": { + "start": { + "line": 175, + "column": 8 + }, + "end": { + "line": 175, + "column": 64 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6532, + "end": 6587, + "loc": { + "start": { + "line": 175, + "column": 8 + }, + "end": { + "line": 175, + "column": 63 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6532, + "end": 6561, + "loc": { + "start": { + "line": 175, + "column": 8 + }, + "end": { + "line": 175, + "column": 37 + } + }, + "object": { + "type": "MemberExpression", + "start": 6532, + "end": 6547, + "loc": { + "start": { + "line": 175, + "column": 8 + }, + "end": { + "line": 175, + "column": 23 + } + }, + "object": { + "type": "MemberExpression", + "start": 6532, + "end": 6541, + "loc": { + "start": { + "line": 175, + "column": 8 + }, + "end": { + "line": 175, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 6532, + "end": 6536, + "loc": { + "start": { + "line": 175, + "column": 8 + }, + "end": { + "line": 175, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 6537, + "end": 6541, + "loc": { + "start": { + "line": 175, + "column": 13 + }, + "end": { + "line": 175, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6542, + "end": 6547, + "loc": { + "start": { + "line": 175, + "column": 18 + }, + "end": { + "line": 175, + "column": 23 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "StringLiteral", + "start": 6548, + "end": 6560, + "loc": { + "start": { + "line": 175, + "column": 24 + }, + "end": { + "line": 175, + "column": 36 + } + }, + "extra": { + "rawValue": "background", + "raw": "\"background\"" + }, + "value": "background" + }, + "computed": true + }, + "right": { + "type": "MemberExpression", + "start": 6564, + "end": 6587, + "loc": { + "start": { + "line": 175, + "column": 40 + }, + "end": { + "line": 175, + "column": 63 + } + }, + "object": { + "type": "MemberExpression", + "start": 6564, + "end": 6576, + "loc": { + "start": { + "line": 175, + "column": 40 + }, + "end": { + "line": 175, + "column": 52 + } + }, + "object": { + "type": "Identifier", + "start": 6564, + "end": 6570, + "loc": { + "start": { + "line": 175, + "column": 40 + }, + "end": { + "line": 175, + "column": 46 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "property": { + "type": "Identifier", + "start": 6571, + "end": 6576, + "loc": { + "start": { + "line": 175, + "column": 47 + }, + "end": { + "line": 175, + "column": 52 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6577, + "end": 6587, + "loc": { + "start": { + "line": 175, + "column": 53 + }, + "end": { + "line": 175, + "column": 63 + }, + "identifierName": "background" + }, + "name": "background" + }, + "computed": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 6597, + "end": 6645, + "loc": { + "start": { + "line": 176, + "column": 8 + }, + "end": { + "line": 176, + "column": 56 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6597, + "end": 6644, + "loc": { + "start": { + "line": 176, + "column": 8 + }, + "end": { + "line": 176, + "column": 55 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6597, + "end": 6617, + "loc": { + "start": { + "line": 176, + "column": 8 + }, + "end": { + "line": 176, + "column": 28 + } + }, + "object": { + "type": "MemberExpression", + "start": 6597, + "end": 6612, + "loc": { + "start": { + "line": 176, + "column": 8 + }, + "end": { + "line": 176, + "column": 23 + } + }, + "object": { + "type": "MemberExpression", + "start": 6597, + "end": 6606, + "loc": { + "start": { + "line": 176, + "column": 8 + }, + "end": { + "line": 176, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 6597, + "end": 6601, + "loc": { + "start": { + "line": 176, + "column": 8 + }, + "end": { + "line": 176, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 6602, + "end": 6606, + "loc": { + "start": { + "line": 176, + "column": 13 + }, + "end": { + "line": 176, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6607, + "end": 6612, + "loc": { + "start": { + "line": 176, + "column": 18 + }, + "end": { + "line": 176, + "column": 23 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6613, + "end": 6617, + "loc": { + "start": { + "line": 176, + "column": 24 + }, + "end": { + "line": 176, + "column": 28 + }, + "identifierName": "left" + }, + "name": "left" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 6620, + "end": 6644, + "loc": { + "start": { + "line": 176, + "column": 31 + }, + "end": { + "line": 176, + "column": 55 + } + }, + "left": { + "type": "MemberExpression", + "start": 6620, + "end": 6637, + "loc": { + "start": { + "line": 176, + "column": 31 + }, + "end": { + "line": 176, + "column": 48 + } + }, + "object": { + "type": "Identifier", + "start": 6620, + "end": 6632, + "loc": { + "start": { + "line": 176, + "column": 31 + }, + "end": { + "line": 176, + "column": 43 + }, + "identifierName": "canvasOffset" + }, + "name": "canvasOffset" + }, + "property": { + "type": "Identifier", + "start": 6633, + "end": 6637, + "loc": { + "start": { + "line": 176, + "column": 44 + }, + "end": { + "line": 176, + "column": 48 + }, + "identifierName": "left" + }, + "name": "left" + }, + "computed": false + }, + "operator": "+", + "right": { + "type": "StringLiteral", + "start": 6640, + "end": 6644, + "loc": { + "start": { + "line": 176, + "column": 51 + }, + "end": { + "line": 176, + "column": 55 + } + }, + "extra": { + "rawValue": "px", + "raw": "\"px\"" + }, + "value": "px" + } + } + } + }, + { + "type": "ExpressionStatement", + "start": 6654, + "end": 6700, + "loc": { + "start": { + "line": 177, + "column": 8 + }, + "end": { + "line": 177, + "column": 54 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6654, + "end": 6699, + "loc": { + "start": { + "line": 177, + "column": 8 + }, + "end": { + "line": 177, + "column": 53 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6654, + "end": 6673, + "loc": { + "start": { + "line": 177, + "column": 8 + }, + "end": { + "line": 177, + "column": 27 + } + }, + "object": { + "type": "MemberExpression", + "start": 6654, + "end": 6669, + "loc": { + "start": { + "line": 177, + "column": 8 + }, + "end": { + "line": 177, + "column": 23 + } + }, + "object": { + "type": "MemberExpression", + "start": 6654, + "end": 6663, + "loc": { + "start": { + "line": 177, + "column": 8 + }, + "end": { + "line": 177, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 6654, + "end": 6658, + "loc": { + "start": { + "line": 177, + "column": 8 + }, + "end": { + "line": 177, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 6659, + "end": 6663, + "loc": { + "start": { + "line": 177, + "column": 13 + }, + "end": { + "line": 177, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6664, + "end": 6669, + "loc": { + "start": { + "line": 177, + "column": 18 + }, + "end": { + "line": 177, + "column": 23 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6670, + "end": 6673, + "loc": { + "start": { + "line": 177, + "column": 24 + }, + "end": { + "line": 177, + "column": 27 + }, + "identifierName": "top" + }, + "name": "top" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 6676, + "end": 6699, + "loc": { + "start": { + "line": 177, + "column": 30 + }, + "end": { + "line": 177, + "column": 53 + } + }, + "left": { + "type": "MemberExpression", + "start": 6676, + "end": 6692, + "loc": { + "start": { + "line": 177, + "column": 30 + }, + "end": { + "line": 177, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 6676, + "end": 6688, + "loc": { + "start": { + "line": 177, + "column": 30 + }, + "end": { + "line": 177, + "column": 42 + }, + "identifierName": "canvasOffset" + }, + "name": "canvasOffset" + }, + "property": { + "type": "Identifier", + "start": 6689, + "end": 6692, + "loc": { + "start": { + "line": 177, + "column": 43 + }, + "end": { + "line": 177, + "column": 46 + }, + "identifierName": "top" + }, + "name": "top" + }, + "computed": false + }, + "operator": "+", + "right": { + "type": "StringLiteral", + "start": 6695, + "end": 6699, + "loc": { + "start": { + "line": 177, + "column": 49 + }, + "end": { + "line": 177, + "column": 53 + } + }, + "extra": { + "rawValue": "px", + "raw": "\"px\"" + }, + "value": "px" + } + } + } + }, + { + "type": "ExpressionStatement", + "start": 6709, + "end": 6753, + "loc": { + "start": { + "line": 178, + "column": 8 + }, + "end": { + "line": 178, + "column": 52 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6709, + "end": 6752, + "loc": { + "start": { + "line": 178, + "column": 8 + }, + "end": { + "line": 178, + "column": 51 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6709, + "end": 6730, + "loc": { + "start": { + "line": 178, + "column": 8 + }, + "end": { + "line": 178, + "column": 29 + } + }, + "object": { + "type": "MemberExpression", + "start": 6709, + "end": 6724, + "loc": { + "start": { + "line": 178, + "column": 8 + }, + "end": { + "line": 178, + "column": 23 + } + }, + "object": { + "type": "MemberExpression", + "start": 6709, + "end": 6718, + "loc": { + "start": { + "line": 178, + "column": 8 + }, + "end": { + "line": 178, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 6709, + "end": 6713, + "loc": { + "start": { + "line": 178, + "column": 8 + }, + "end": { + "line": 178, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 6714, + "end": 6718, + "loc": { + "start": { + "line": 178, + "column": 13 + }, + "end": { + "line": 178, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6719, + "end": 6724, + "loc": { + "start": { + "line": 178, + "column": 18 + }, + "end": { + "line": 178, + "column": 23 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6725, + "end": 6730, + "loc": { + "start": { + "line": 178, + "column": 24 + }, + "end": { + "line": 178, + "column": 29 + }, + "identifierName": "width" + }, + "name": "width" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 6733, + "end": 6752, + "loc": { + "start": { + "line": 178, + "column": 32 + }, + "end": { + "line": 178, + "column": 51 + } + }, + "left": { + "type": "MemberExpression", + "start": 6733, + "end": 6745, + "loc": { + "start": { + "line": 178, + "column": 32 + }, + "end": { + "line": 178, + "column": 44 + } + }, + "object": { + "type": "Identifier", + "start": 6733, + "end": 6739, + "loc": { + "start": { + "line": 178, "column": 32 }, "end": { - "line": 156, - "column": 38 + "line": 178, + "column": 38 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "property": { + "type": "Identifier", + "start": 6740, + "end": 6745, + "loc": { + "start": { + "line": 178, + "column": 39 + }, + "end": { + "line": 178, + "column": 44 + }, + "identifierName": "width" + }, + "name": "width" + }, + "computed": false + }, + "operator": "+", + "right": { + "type": "StringLiteral", + "start": 6748, + "end": 6752, + "loc": { + "start": { + "line": 178, + "column": 47 + }, + "end": { + "line": 178, + "column": 51 + } + }, + "extra": { + "rawValue": "px", + "raw": "\"px\"" + }, + "value": "px" + } + } + } + }, + { + "type": "ExpressionStatement", + "start": 6762, + "end": 6808, + "loc": { + "start": { + "line": 179, + "column": 8 + }, + "end": { + "line": 179, + "column": 54 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6762, + "end": 6807, + "loc": { + "start": { + "line": 179, + "column": 8 + }, + "end": { + "line": 179, + "column": 53 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6762, + "end": 6784, + "loc": { + "start": { + "line": 179, + "column": 8 + }, + "end": { + "line": 179, + "column": 30 + } + }, + "object": { + "type": "MemberExpression", + "start": 6762, + "end": 6777, + "loc": { + "start": { + "line": 179, + "column": 8 + }, + "end": { + "line": 179, + "column": 23 + } + }, + "object": { + "type": "MemberExpression", + "start": 6762, + "end": 6771, + "loc": { + "start": { + "line": 179, + "column": 8 + }, + "end": { + "line": 179, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 6762, + "end": 6766, + "loc": { + "start": { + "line": 179, + "column": 8 + }, + "end": { + "line": 179, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 6767, + "end": 6771, + "loc": { + "start": { + "line": 179, + "column": 13 + }, + "end": { + "line": 179, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6772, + "end": 6777, + "loc": { + "start": { + "line": 179, + "column": 18 + }, + "end": { + "line": 179, + "column": 23 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6778, + "end": 6784, + "loc": { + "start": { + "line": 179, + "column": 24 + }, + "end": { + "line": 179, + "column": 30 + }, + "identifierName": "height" + }, + "name": "height" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 6787, + "end": 6807, + "loc": { + "start": { + "line": 179, + "column": 33 + }, + "end": { + "line": 179, + "column": 53 + } + }, + "left": { + "type": "MemberExpression", + "start": 6787, + "end": 6800, + "loc": { + "start": { + "line": 179, + "column": 33 + }, + "end": { + "line": 179, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 6787, + "end": 6793, + "loc": { + "start": { + "line": 179, + "column": 33 + }, + "end": { + "line": 179, + "column": 39 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "property": { + "type": "Identifier", + "start": 6794, + "end": 6800, + "loc": { + "start": { + "line": 179, + "column": 40 + }, + "end": { + "line": 179, + "column": 46 + }, + "identifierName": "height" + }, + "name": "height" + }, + "computed": false + }, + "operator": "+", + "right": { + "type": "StringLiteral", + "start": 6803, + "end": 6807, + "loc": { + "start": { + "line": 179, + "column": 49 + }, + "end": { + "line": 179, + "column": 53 + } + }, + "extra": { + "rawValue": "px", + "raw": "\"px\"" + }, + "value": "px" + } + } + } + }, + { + "type": "ExpressionStatement", + "start": 6817, + "end": 6845, + "loc": { + "start": { + "line": 180, + "column": 8 + }, + "end": { + "line": 180, + "column": 36 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6817, + "end": 6844, + "loc": { + "start": { + "line": 180, + "column": 8 + }, + "end": { + "line": 180, + "column": 35 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6817, + "end": 6840, + "loc": { + "start": { + "line": 180, + "column": 8 + }, + "end": { + "line": 180, + "column": 31 + } + }, + "object": { + "type": "MemberExpression", + "start": 6817, + "end": 6832, + "loc": { + "start": { + "line": 180, + "column": 8 + }, + "end": { + "line": 180, + "column": 23 + } + }, + "object": { + "type": "MemberExpression", + "start": 6817, + "end": 6826, + "loc": { + "start": { + "line": 180, + "column": 8 + }, + "end": { + "line": 180, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 6817, + "end": 6821, + "loc": { + "start": { + "line": 180, + "column": 8 + }, + "end": { + "line": 180, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 6822, + "end": 6826, + "loc": { + "start": { + "line": 180, + "column": 13 + }, + "end": { + "line": 180, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6827, + "end": 6832, + "loc": { + "start": { + "line": 180, + "column": 18 + }, + "end": { + "line": 180, + "column": 23 }, - "identifierName": "canvas" + "identifierName": "style" }, - "name": "canvas" + "name": "style" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6833, + "end": 6840, + "loc": { + "start": { + "line": 180, + "column": 24 + }, + "end": { + "line": 180, + "column": 31 + }, + "identifierName": "opacity" + }, + "name": "opacity" + }, + "computed": false + }, + "right": { + "type": "NumericLiteral", + "start": 6843, + "end": 6844, + "loc": { + "start": { + "line": 180, + "column": 34 + }, + "end": { + "line": 180, + "column": 35 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + } + }, + { + "type": "ExpressionStatement", + "start": 6854, + "end": 6885, + "loc": { + "start": { + "line": 181, + "column": 8 + }, + "end": { + "line": 181, + "column": 39 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6854, + "end": 6884, + "loc": { + "start": { + "line": 181, + "column": 8 + }, + "end": { + "line": 181, + "column": 38 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6854, + "end": 6869, + "loc": { + "start": { + "line": 181, + "column": 8 + }, + "end": { + "line": 181, + "column": 23 + } + }, + "object": { + "type": "MemberExpression", + "start": 6854, + "end": 6863, + "loc": { + "start": { + "line": 181, + "column": 8 + }, + "end": { + "line": 181, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 6854, + "end": 6858, + "loc": { + "start": { + "line": 181, + "column": 8 + }, + "end": { + "line": 181, + "column": 12 + } + } }, "property": { "type": "Identifier", - "start": 5050, - "end": 5055, + "start": 6859, + "end": 6863, "loc": { "start": { - "line": 156, - "column": 39 + "line": 181, + "column": 13 }, "end": { - "line": 156, - "column": 44 + "line": 181, + "column": 17 }, - "identifierName": "width" + "identifierName": "_img" }, - "name": "width" + "name": "_img" }, "computed": false }, - "operator": "+", - "right": { - "type": "StringLiteral", - "start": 5058, - "end": 5062, + "property": { + "type": "Identifier", + "start": 6864, + "end": 6869, "loc": { "start": { - "line": 156, - "column": 47 + "line": 181, + "column": 18 }, "end": { - "line": 156, - "column": 51 - } + "line": 181, + "column": 23 + }, + "identifierName": "width" }, - "extra": { - "rawValue": "px", - "raw": "\"px\"" + "name": "width" + }, + "computed": false + }, + "right": { + "type": "MemberExpression", + "start": 6872, + "end": 6884, + "loc": { + "start": { + "line": 181, + "column": 26 }, - "value": "px" - } + "end": { + "line": 181, + "column": 38 + } + }, + "object": { + "type": "Identifier", + "start": 6872, + "end": 6878, + "loc": { + "start": { + "line": 181, + "column": 26 + }, + "end": { + "line": 181, + "column": 32 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "property": { + "type": "Identifier", + "start": 6879, + "end": 6884, + "loc": { + "start": { + "line": 181, + "column": 33 + }, + "end": { + "line": 181, + "column": 38 + }, + "identifierName": "width" + }, + "name": "width" + }, + "computed": false } } }, { "type": "ExpressionStatement", - "start": 5072, - "end": 5118, + "start": 6894, + "end": 6927, "loc": { "start": { - "line": 157, + "line": 182, "column": 8 }, "end": { - "line": 157, - "column": 54 + "line": 182, + "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 5072, - "end": 5117, + "start": 6894, + "end": 6926, "loc": { "start": { - "line": 157, + "line": 182, "column": 8 }, "end": { - "line": 157, - "column": 53 + "line": 182, + "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5072, - "end": 5094, + "start": 6894, + "end": 6910, "loc": { "start": { - "line": 157, + "line": 182, "column": 8 }, "end": { - "line": 157, - "column": 30 + "line": 182, + "column": 24 } }, "object": { "type": "MemberExpression", - "start": 5072, - "end": 5087, + "start": 6894, + "end": 6903, "loc": { "start": { - "line": 157, + "line": 182, "column": 8 }, "end": { - "line": 157, - "column": 23 + "line": 182, + "column": 17 } }, "object": { - "type": "MemberExpression", - "start": 5072, - "end": 5081, + "type": "ThisExpression", + "start": 6894, + "end": 6898, "loc": { "start": { - "line": 157, + "line": 182, "column": 8 }, "end": { - "line": 157, - "column": 17 + "line": 182, + "column": 12 } + } + }, + "property": { + "type": "Identifier", + "start": 6899, + "end": 6903, + "loc": { + "start": { + "line": 182, + "column": 13 + }, + "end": { + "line": 182, + "column": 17 + }, + "identifierName": "_img" }, - "object": { - "type": "ThisExpression", - "start": 5072, - "end": 5076, - "loc": { - "start": { - "line": 157, - "column": 8 - }, - "end": { - "line": 157, - "column": 12 - } + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6904, + "end": 6910, + "loc": { + "start": { + "line": 182, + "column": 18 + }, + "end": { + "line": 182, + "column": 24 + }, + "identifierName": "height" + }, + "name": "height" + }, + "computed": false + }, + "right": { + "type": "MemberExpression", + "start": 6913, + "end": 6926, + "loc": { + "start": { + "line": 182, + "column": 27 + }, + "end": { + "line": 182, + "column": 40 + } + }, + "object": { + "type": "Identifier", + "start": 6913, + "end": 6919, + "loc": { + "start": { + "line": 182, + "column": 27 + }, + "end": { + "line": 182, + "column": 33 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "property": { + "type": "Identifier", + "start": 6920, + "end": 6926, + "loc": { + "start": { + "line": 182, + "column": 34 + }, + "end": { + "line": 182, + "column": 40 + }, + "identifierName": "height" + }, + "name": "height" + }, + "computed": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 6936, + "end": 6955, + "loc": { + "start": { + "line": 183, + "column": 8 + }, + "end": { + "line": 183, + "column": 27 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6936, + "end": 6954, + "loc": { + "start": { + "line": 183, + "column": 8 + }, + "end": { + "line": 183, + "column": 26 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6936, + "end": 6949, + "loc": { + "start": { + "line": 183, + "column": 8 + }, + "end": { + "line": 183, + "column": 21 + } + }, + "object": { + "type": "MemberExpression", + "start": 6936, + "end": 6945, + "loc": { + "start": { + "line": 183, + "column": 8 + }, + "end": { + "line": 183, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 6936, + "end": 6940, + "loc": { + "start": { + "line": 183, + "column": 8 + }, + "end": { + "line": 183, + "column": 12 } + } + }, + "property": { + "type": "Identifier", + "start": 6941, + "end": 6945, + "loc": { + "start": { + "line": 183, + "column": 13 + }, + "end": { + "line": 183, + "column": 17 + }, + "identifierName": "_img" }, - "property": { - "type": "Identifier", - "start": 5077, - "end": 5081, - "loc": { - "start": { - "line": 157, - "column": 13 - }, - "end": { - "line": 157, - "column": 17 - }, - "identifierName": "_img" + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 6946, + "end": 6949, + "loc": { + "start": { + "line": 183, + "column": 18 + }, + "end": { + "line": 183, + "column": 21 + }, + "identifierName": "src" + }, + "name": "src" + }, + "computed": false + }, + "right": { + "type": "StringLiteral", + "start": 6952, + "end": 6954, + "loc": { + "start": { + "line": 183, + "column": 24 + }, + "end": { + "line": 183, + "column": 26 + } + }, + "extra": { + "rawValue": "", + "raw": "\"\"" + }, + "value": "" + } + }, + "trailingComments": [ + { + "type": "CommentLine", + "value": " Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624", + "start": 6956, + "end": 7026, + "loc": { + "start": { + "line": 183, + "column": 28 + }, + "end": { + "line": 183, + "column": 98 + } + } + } + ] + }, + { + "type": "ExpressionStatement", + "start": 7035, + "end": 7142, + "loc": { + "start": { + "line": 184, + "column": 8 + }, + "end": { + "line": 187, + "column": 11 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7035, + "end": 7141, + "loc": { + "start": { + "line": 184, + "column": 8 + }, + "end": { + "line": 187, + "column": 10 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 7035, + "end": 7048, + "loc": { + "start": { + "line": 184, + "column": 8 + }, + "end": { + "line": 184, + "column": 21 + } + }, + "object": { + "type": "MemberExpression", + "start": 7035, + "end": 7044, + "loc": { + "start": { + "line": 184, + "column": 8 + }, + "end": { + "line": 184, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 7035, + "end": 7039, + "loc": { + "start": { + "line": 184, + "column": 8 }, - "name": "_img" + "end": { + "line": 184, + "column": 12 + } }, - "computed": false + "leadingComments": null }, "property": { "type": "Identifier", - "start": 5082, - "end": 5087, + "start": 7040, + "end": 7044, "loc": { "start": { - "line": 157, - "column": 18 + "line": 184, + "column": 13 }, "end": { - "line": 157, - "column": 23 + "line": 184, + "column": 17 }, - "identifierName": "style" + "identifierName": "_img" }, - "name": "style" + "name": "_img" }, - "computed": false + "computed": false, + "leadingComments": null }, "property": { "type": "Identifier", - "start": 5088, - "end": 5094, + "start": 7045, + "end": 7048, "loc": { "start": { - "line": 157, - "column": 24 + "line": 184, + "column": 18 }, "end": { - "line": 157, - "column": 30 + "line": 184, + "column": 21 }, - "identifierName": "height" + "identifierName": "src" }, - "name": "height" + "name": "src" }, - "computed": false + "computed": false, + "leadingComments": null }, "right": { - "type": "BinaryExpression", - "start": 5097, - "end": 5117, + "type": "CallExpression", + "start": 7051, + "end": 7141, "loc": { "start": { - "line": 157, - "column": 33 + "line": 184, + "column": 24 }, "end": { - "line": 157, - "column": 53 + "line": 187, + "column": 10 } }, - "left": { + "callee": { "type": "MemberExpression", - "start": 5097, - "end": 5110, + "start": 7051, + "end": 7069, "loc": { "start": { - "line": 157, - "column": 33 + "line": 184, + "column": 24 }, "end": { - "line": 157, - "column": 46 + "line": 184, + "column": 42 } }, "object": { "type": "Identifier", - "start": 5097, - "end": 5103, + "start": 7051, + "end": 7057, "loc": { "start": { - "line": 157, - "column": 33 + "line": 184, + "column": 24 }, "end": { - "line": 157, - "column": 39 + "line": 184, + "column": 30 }, - "identifierName": "canvas" + "identifierName": "viewer" }, - "name": "canvas" + "name": "viewer" }, "property": { "type": "Identifier", - "start": 5104, - "end": 5110, + "start": 7058, + "end": 7069, "loc": { "start": { - "line": 157, - "column": 40 + "line": 184, + "column": 31 }, "end": { - "line": 157, - "column": 46 + "line": 184, + "column": 42 }, - "identifierName": "height" + "identifierName": "getSnapshot" }, - "name": "height" + "name": "getSnapshot" }, "computed": false }, - "operator": "+", - "right": { - "type": "StringLiteral", - "start": 5113, - "end": 5117, - "loc": { - "start": { - "line": 157, - "column": 49 + "arguments": [ + { + "type": "ObjectExpression", + "start": 7070, + "end": 7140, + "loc": { + "start": { + "line": 184, + "column": 43 + }, + "end": { + "line": 187, + "column": 9 + } }, - "end": { - "line": 157, - "column": 53 - } - }, - "extra": { - "rawValue": "px", - "raw": "\"px\"" + "properties": [ + { + "type": "ObjectProperty", + "start": 7084, + "end": 7097, + "loc": { + "start": { + "line": 185, + "column": 12 + }, + "end": { + "line": 185, + "column": 25 + } + }, + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7084, + "end": 7090, + "loc": { + "start": { + "line": 185, + "column": 12 + }, + "end": { + "line": 185, + "column": 18 + }, + "identifierName": "format" + }, + "name": "format" + }, + "value": { + "type": "StringLiteral", + "start": 7092, + "end": 7097, + "loc": { + "start": { + "line": 185, + "column": 20 + }, + "end": { + "line": 185, + "column": 25 + } + }, + "extra": { + "rawValue": "png", + "raw": "\"png\"" + }, + "value": "png" + } + }, + { + "type": "ObjectProperty", + "start": 7111, + "end": 7130, + "loc": { + "start": { + "line": 186, + "column": 12 + }, + "end": { + "line": 186, + "column": 31 + } + }, + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7111, + "end": 7124, + "loc": { + "start": { + "line": 186, + "column": 12 + }, + "end": { + "line": 186, + "column": 25 + }, + "identifierName": "includeGizmos" + }, + "name": "includeGizmos" + }, + "value": { + "type": "BooleanLiteral", + "start": 7126, + "end": 7130, + "loc": { + "start": { + "line": 186, + "column": 27 + }, + "end": { + "line": 186, + "column": 31 + } + }, + "value": true + } + } + ] + } + ] + }, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624", + "start": 6956, + "end": 7026, + "loc": { + "start": { + "line": 183, + "column": 28 }, - "value": "px" + "end": { + "line": 183, + "column": 98 + } } } - } + ] }, { "type": "ExpressionStatement", - "start": 5127, - "end": 5155, + "start": 7151, + "end": 7190, "loc": { "start": { - "line": 158, + "line": 188, "column": 8 }, "end": { - "line": 158, - "column": 36 + "line": 188, + "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 5127, - "end": 5154, + "start": 7151, + "end": 7189, "loc": { "start": { - "line": 158, + "line": 188, "column": 8 }, "end": { - "line": 158, - "column": 35 + "line": 188, + "column": 46 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5127, - "end": 5150, + "start": 7151, + "end": 7177, "loc": { "start": { - "line": 158, + "line": 188, "column": 8 }, "end": { - "line": 158, - "column": 31 + "line": 188, + "column": 34 } }, "object": { "type": "MemberExpression", - "start": 5127, - "end": 5142, + "start": 7151, + "end": 7166, "loc": { "start": { - "line": 158, + "line": 188, "column": 8 }, "end": { - "line": 158, + "line": 188, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 5127, - "end": 5136, + "start": 7151, + "end": 7160, "loc": { "start": { - "line": 158, + "line": 188, "column": 8 }, "end": { - "line": 158, + "line": 188, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 5127, - "end": 5131, + "start": 7151, + "end": 7155, "loc": { "start": { - "line": 158, + "line": 188, "column": 8 }, "end": { - "line": 158, + "line": 188, "column": 12 } } }, "property": { "type": "Identifier", - "start": 5132, - "end": 5136, + "start": 7156, + "end": 7160, "loc": { "start": { - "line": 158, + "line": 188, "column": 13 }, "end": { - "line": 158, + "line": 188, "column": 17 }, "identifierName": "_img" @@ -27390,15 +33394,15 @@ }, "property": { "type": "Identifier", - "start": 5137, - "end": 5142, + "start": 7161, + "end": 7166, "loc": { "start": { - "line": 158, + "line": 188, "column": 18 }, "end": { - "line": 158, + "line": 188, "column": 23 }, "identifierName": "style" @@ -27409,2822 +33413,2897 @@ }, "property": { "type": "Identifier", - "start": 5143, - "end": 5150, + "start": 7167, + "end": 7177, "loc": { "start": { - "line": 158, + "line": 188, "column": 24 }, "end": { - "line": 158, - "column": 31 + "line": 188, + "column": 34 }, - "identifierName": "opacity" + "identifierName": "visibility" }, - "name": "opacity" + "name": "visibility" }, "computed": false }, "right": { - "type": "NumericLiteral", - "start": 5153, - "end": 5154, + "type": "StringLiteral", + "start": 7180, + "end": 7189, "loc": { "start": { - "line": 158, - "column": 34 + "line": 188, + "column": 37 }, "end": { - "line": 158, - "column": 35 + "line": 188, + "column": 46 } }, "extra": { - "rawValue": 1, - "raw": "1" + "rawValue": "visible", + "raw": "\"visible\"" }, - "value": 1 + "value": "visible" } } }, { - "type": "ExpressionStatement", - "start": 5164, - "end": 5195, + "type": "VariableDeclaration", + "start": 7200, + "end": 7216, "loc": { "start": { - "line": 159, + "line": 190, "column": 8 }, "end": { - "line": 159, - "column": 39 + "line": 190, + "column": 24 } }, - "expression": { - "type": "AssignmentExpression", - "start": 5164, - "end": 5194, - "loc": { - "start": { - "line": 159, - "column": 8 - }, - "end": { - "line": 159, - "column": 38 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 5164, - "end": 5179, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 7204, + "end": 7215, "loc": { "start": { - "line": 159, - "column": 8 + "line": 190, + "column": 12 }, "end": { - "line": 159, + "line": 190, "column": 23 } }, - "object": { - "type": "MemberExpression", - "start": 5164, - "end": 5173, - "loc": { - "start": { - "line": 159, - "column": 8 - }, - "end": { - "line": 159, - "column": 17 - } - }, - "object": { - "type": "ThisExpression", - "start": 5164, - "end": 5168, - "loc": { - "start": { - "line": 159, - "column": 8 - }, - "end": { - "line": 159, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 5169, - "end": 5173, - "loc": { - "start": { - "line": 159, - "column": 13 - }, - "end": { - "line": 159, - "column": 17 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false - }, - "property": { + "id": { "type": "Identifier", - "start": 5174, - "end": 5179, + "start": 7204, + "end": 7211, "loc": { "start": { - "line": 159, - "column": 18 + "line": 190, + "column": 12 }, "end": { - "line": 159, - "column": 23 + "line": 190, + "column": 19 }, - "identifierName": "width" - }, - "name": "width" - }, - "computed": false - }, - "right": { - "type": "MemberExpression", - "start": 5182, - "end": 5194, - "loc": { - "start": { - "line": 159, - "column": 26 + "identifierName": "opacity" }, - "end": { - "line": 159, - "column": 38 - } + "name": "opacity" }, - "object": { - "type": "Identifier", - "start": 5182, - "end": 5188, + "init": { + "type": "NumericLiteral", + "start": 7214, + "end": 7215, "loc": { "start": { - "line": 159, - "column": 26 + "line": 190, + "column": 22 }, "end": { - "line": 159, - "column": 32 - }, - "identifierName": "canvas" + "line": 190, + "column": 23 + } }, - "name": "canvas" - }, - "property": { - "type": "Identifier", - "start": 5189, - "end": 5194, - "loc": { - "start": { - "line": 159, - "column": 33 - }, - "end": { - "line": 159, - "column": 38 - }, - "identifierName": "width" + "extra": { + "rawValue": 1, + "raw": "1" }, - "name": "width" - }, - "computed": false + "value": 1 + } } - } + ], + "kind": "let" }, { "type": "ExpressionStatement", - "start": 5204, - "end": 5237, + "start": 7225, + "end": 7617, "loc": { "start": { - "line": 160, + "line": 191, "column": 8 }, "end": { - "line": 160, - "column": 41 + "line": 201, + "column": 21 } }, "expression": { "type": "AssignmentExpression", - "start": 5204, - "end": 5236, + "start": 7225, + "end": 7616, "loc": { "start": { - "line": 160, + "line": 191, "column": 8 }, "end": { - "line": 160, - "column": 40 + "line": 201, + "column": 20 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5204, - "end": 5220, + "start": 7225, + "end": 7240, "loc": { "start": { - "line": 160, + "line": 191, "column": 8 }, "end": { - "line": 160, - "column": 24 + "line": 191, + "column": 23 } }, "object": { - "type": "MemberExpression", - "start": 5204, - "end": 5213, + "type": "ThisExpression", + "start": 7225, + "end": 7229, "loc": { "start": { - "line": 160, + "line": 191, "column": 8 }, "end": { - "line": 160, - "column": 17 + "line": 191, + "column": 12 } + } + }, + "property": { + "type": "Identifier", + "start": 7230, + "end": 7240, + "loc": { + "start": { + "line": 191, + "column": 13 + }, + "end": { + "line": 191, + "column": 23 + }, + "identifierName": "_pInterval" }, - "object": { - "type": "ThisExpression", - "start": 5204, - "end": 5208, + "name": "_pInterval" + }, + "computed": false + }, + "right": { + "type": "CallExpression", + "start": 7243, + "end": 7616, + "loc": { + "start": { + "line": 191, + "column": 26 + }, + "end": { + "line": 201, + "column": 20 + } + }, + "callee": { + "type": "Identifier", + "start": 7243, + "end": 7254, + "loc": { + "start": { + "line": 191, + "column": 26 + }, + "end": { + "line": 191, + "column": 37 + }, + "identifierName": "setInterval" + }, + "name": "setInterval" + }, + "arguments": [ + { + "type": "ArrowFunctionExpression", + "start": 7255, + "end": 7605, "loc": { "start": { - "line": 160, - "column": 8 + "line": 191, + "column": 38 }, "end": { - "line": 160, - "column": 12 + "line": 201, + "column": 9 } + }, + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7261, + "end": 7605, + "loc": { + "start": { + "line": 191, + "column": 44 + }, + "end": { + "line": 201, + "column": 9 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 7275, + "end": 7290, + "loc": { + "start": { + "line": 192, + "column": 12 + }, + "end": { + "line": 192, + "column": 27 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7275, + "end": 7289, + "loc": { + "start": { + "line": 192, + "column": 12 + }, + "end": { + "line": 192, + "column": 26 + } + }, + "operator": "-=", + "left": { + "type": "Identifier", + "start": 7275, + "end": 7282, + "loc": { + "start": { + "line": 192, + "column": 12 + }, + "end": { + "line": 192, + "column": 19 + }, + "identifierName": "opacity" + }, + "name": "opacity" + }, + "right": { + "type": "Identifier", + "start": 7286, + "end": 7289, + "loc": { + "start": { + "line": 192, + "column": 23 + }, + "end": { + "line": 192, + "column": 26 + }, + "identifierName": "inc" + }, + "name": "inc" + } + } + }, + { + "type": "IfStatement", + "start": 7303, + "end": 7595, + "loc": { + "start": { + "line": 193, + "column": 12 + }, + "end": { + "line": 200, + "column": 13 + } + }, + "test": { + "type": "BinaryExpression", + "start": 7307, + "end": 7318, + "loc": { + "start": { + "line": 193, + "column": 16 + }, + "end": { + "line": 193, + "column": 27 + } + }, + "left": { + "type": "Identifier", + "start": 7307, + "end": 7314, + "loc": { + "start": { + "line": 193, + "column": 16 + }, + "end": { + "line": 193, + "column": 23 + }, + "identifierName": "opacity" + }, + "name": "opacity" + }, + "operator": ">", + "right": { + "type": "NumericLiteral", + "start": 7317, + "end": 7318, + "loc": { + "start": { + "line": 193, + "column": 26 + }, + "end": { + "line": 193, + "column": 27 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + "consequent": { + "type": "BlockStatement", + "start": 7320, + "end": 7386, + "loc": { + "start": { + "line": 193, + "column": 29 + }, + "end": { + "line": 195, + "column": 13 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 7338, + "end": 7372, + "loc": { + "start": { + "line": 194, + "column": 16 + }, + "end": { + "line": 194, + "column": 50 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7338, + "end": 7371, + "loc": { + "start": { + "line": 194, + "column": 16 + }, + "end": { + "line": 194, + "column": 49 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 7338, + "end": 7361, + "loc": { + "start": { + "line": 194, + "column": 16 + }, + "end": { + "line": 194, + "column": 39 + } + }, + "object": { + "type": "MemberExpression", + "start": 7338, + "end": 7353, + "loc": { + "start": { + "line": 194, + "column": 16 + }, + "end": { + "line": 194, + "column": 31 + } + }, + "object": { + "type": "MemberExpression", + "start": 7338, + "end": 7347, + "loc": { + "start": { + "line": 194, + "column": 16 + }, + "end": { + "line": 194, + "column": 25 + } + }, + "object": { + "type": "ThisExpression", + "start": 7338, + "end": 7342, + "loc": { + "start": { + "line": 194, + "column": 16 + }, + "end": { + "line": 194, + "column": 20 + } + } + }, + "property": { + "type": "Identifier", + "start": 7343, + "end": 7347, + "loc": { + "start": { + "line": 194, + "column": 21 + }, + "end": { + "line": 194, + "column": 25 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 7348, + "end": 7353, + "loc": { + "start": { + "line": 194, + "column": 26 + }, + "end": { + "line": 194, + "column": 31 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 7354, + "end": 7361, + "loc": { + "start": { + "line": 194, + "column": 32 + }, + "end": { + "line": 194, + "column": 39 + }, + "identifierName": "opacity" + }, + "name": "opacity" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 7364, + "end": 7371, + "loc": { + "start": { + "line": 194, + "column": 42 + }, + "end": { + "line": 194, + "column": 49 + }, + "identifierName": "opacity" + }, + "name": "opacity" + } + } + } + ], + "directives": [] + }, + "alternate": { + "type": "BlockStatement", + "start": 7392, + "end": 7595, + "loc": { + "start": { + "line": 195, + "column": 19 + }, + "end": { + "line": 200, + "column": 13 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 7410, + "end": 7438, + "loc": { + "start": { + "line": 196, + "column": 16 + }, + "end": { + "line": 196, + "column": 44 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7410, + "end": 7437, + "loc": { + "start": { + "line": 196, + "column": 16 + }, + "end": { + "line": 196, + "column": 43 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 7410, + "end": 7433, + "loc": { + "start": { + "line": 196, + "column": 16 + }, + "end": { + "line": 196, + "column": 39 + } + }, + "object": { + "type": "MemberExpression", + "start": 7410, + "end": 7425, + "loc": { + "start": { + "line": 196, + "column": 16 + }, + "end": { + "line": 196, + "column": 31 + } + }, + "object": { + "type": "MemberExpression", + "start": 7410, + "end": 7419, + "loc": { + "start": { + "line": 196, + "column": 16 + }, + "end": { + "line": 196, + "column": 25 + } + }, + "object": { + "type": "ThisExpression", + "start": 7410, + "end": 7414, + "loc": { + "start": { + "line": 196, + "column": 16 + }, + "end": { + "line": 196, + "column": 20 + } + } + }, + "property": { + "type": "Identifier", + "start": 7415, + "end": 7419, + "loc": { + "start": { + "line": 196, + "column": 21 + }, + "end": { + "line": 196, + "column": 25 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 7420, + "end": 7425, + "loc": { + "start": { + "line": 196, + "column": 26 + }, + "end": { + "line": 196, + "column": 31 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 7426, + "end": 7433, + "loc": { + "start": { + "line": 196, + "column": 32 + }, + "end": { + "line": 196, + "column": 39 + }, + "identifierName": "opacity" + }, + "name": "opacity" + }, + "computed": false + }, + "right": { + "type": "NumericLiteral", + "start": 7436, + "end": 7437, + "loc": { + "start": { + "line": 196, + "column": 42 + }, + "end": { + "line": 196, + "column": 43 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + }, + { + "type": "ExpressionStatement", + "start": 7455, + "end": 7493, + "loc": { + "start": { + "line": 197, + "column": 16 + }, + "end": { + "line": 197, + "column": 54 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7455, + "end": 7492, + "loc": { + "start": { + "line": 197, + "column": 16 + }, + "end": { + "line": 197, + "column": 53 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 7455, + "end": 7481, + "loc": { + "start": { + "line": 197, + "column": 16 + }, + "end": { + "line": 197, + "column": 42 + } + }, + "object": { + "type": "MemberExpression", + "start": 7455, + "end": 7470, + "loc": { + "start": { + "line": 197, + "column": 16 + }, + "end": { + "line": 197, + "column": 31 + } + }, + "object": { + "type": "MemberExpression", + "start": 7455, + "end": 7464, + "loc": { + "start": { + "line": 197, + "column": 16 + }, + "end": { + "line": 197, + "column": 25 + } + }, + "object": { + "type": "ThisExpression", + "start": 7455, + "end": 7459, + "loc": { + "start": { + "line": 197, + "column": 16 + }, + "end": { + "line": 197, + "column": 20 + } + } + }, + "property": { + "type": "Identifier", + "start": 7460, + "end": 7464, + "loc": { + "start": { + "line": 197, + "column": 21 + }, + "end": { + "line": 197, + "column": 25 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 7465, + "end": 7470, + "loc": { + "start": { + "line": 197, + "column": 26 + }, + "end": { + "line": 197, + "column": 31 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 7471, + "end": 7481, + "loc": { + "start": { + "line": 197, + "column": 32 + }, + "end": { + "line": 197, + "column": 42 + }, + "identifierName": "visibility" + }, + "name": "visibility" + }, + "computed": false + }, + "right": { + "type": "StringLiteral", + "start": 7484, + "end": 7492, + "loc": { + "start": { + "line": 197, + "column": 45 + }, + "end": { + "line": 197, + "column": 53 + } + }, + "extra": { + "rawValue": "hidden", + "raw": "\"hidden\"" + }, + "value": "hidden" + } + } + }, + { + "type": "ExpressionStatement", + "start": 7510, + "end": 7541, + "loc": { + "start": { + "line": 198, + "column": 16 + }, + "end": { + "line": 198, + "column": 47 + } + }, + "expression": { + "type": "CallExpression", + "start": 7510, + "end": 7540, + "loc": { + "start": { + "line": 198, + "column": 16 + }, + "end": { + "line": 198, + "column": 46 + } + }, + "callee": { + "type": "Identifier", + "start": 7510, + "end": 7523, + "loc": { + "start": { + "line": 198, + "column": 16 + }, + "end": { + "line": 198, + "column": 29 + }, + "identifierName": "clearInterval" + }, + "name": "clearInterval" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 7524, + "end": 7539, + "loc": { + "start": { + "line": 198, + "column": 30 + }, + "end": { + "line": 198, + "column": 45 + } + }, + "object": { + "type": "ThisExpression", + "start": 7524, + "end": 7528, + "loc": { + "start": { + "line": 198, + "column": 30 + }, + "end": { + "line": 198, + "column": 34 + } + } + }, + "property": { + "type": "Identifier", + "start": 7529, + "end": 7539, + "loc": { + "start": { + "line": 198, + "column": 35 + }, + "end": { + "line": 198, + "column": 45 + }, + "identifierName": "_pInterval" + }, + "name": "_pInterval" + }, + "computed": false + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 7558, + "end": 7581, + "loc": { + "start": { + "line": 199, + "column": 16 + }, + "end": { + "line": 199, + "column": 39 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7558, + "end": 7580, + "loc": { + "start": { + "line": 199, + "column": 16 + }, + "end": { + "line": 199, + "column": 38 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 7558, + "end": 7573, + "loc": { + "start": { + "line": 199, + "column": 16 + }, + "end": { + "line": 199, + "column": 31 + } + }, + "object": { + "type": "ThisExpression", + "start": 7558, + "end": 7562, + "loc": { + "start": { + "line": 199, + "column": 16 + }, + "end": { + "line": 199, + "column": 20 + } + } + }, + "property": { + "type": "Identifier", + "start": 7563, + "end": 7573, + "loc": { + "start": { + "line": 199, + "column": 21 + }, + "end": { + "line": 199, + "column": 31 + }, + "identifierName": "_pInterval" + }, + "name": "_pInterval" + }, + "computed": false + }, + "right": { + "type": "NullLiteral", + "start": 7576, + "end": 7580, + "loc": { + "start": { + "line": 199, + "column": 34 + }, + "end": { + "line": 199, + "column": 38 + } + } + } + } + } + ], + "directives": [] + } + } + ], + "directives": [] } }, - "property": { + { "type": "Identifier", - "start": 5209, - "end": 5213, + "start": 7607, + "end": 7615, "loc": { "start": { - "line": 160, - "column": 13 + "line": 201, + "column": 11 }, "end": { - "line": 160, - "column": 17 + "line": 201, + "column": 19 }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5214, - "end": 5220, - "loc": { - "start": { - "line": 160, - "column": 18 - }, - "end": { - "line": 160, - "column": 24 + "identifierName": "interval" }, - "identifierName": "height" - }, - "name": "height" - }, - "computed": false - }, - "right": { - "type": "MemberExpression", - "start": 5223, - "end": 5236, - "loc": { - "start": { - "line": 160, - "column": 27 - }, - "end": { - "line": 160, - "column": 40 + "name": "interval" } - }, - "object": { - "type": "Identifier", - "start": 5223, - "end": 5229, - "loc": { - "start": { - "line": 160, - "column": 27 - }, - "end": { - "line": 160, - "column": 33 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "property": { - "type": "Identifier", - "start": 5230, - "end": 5236, - "loc": { - "start": { - "line": 160, - "column": 34 - }, - "end": { - "line": 160, - "column": 40 - }, - "identifierName": "height" - }, - "name": "height" - }, - "computed": false + ] } } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 7629, + "end": 8561, + "loc": { + "start": { + "line": 204, + "column": 4 + }, + "end": { + "line": 223, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7629, + "end": 7638, + "loc": { + "start": { + "line": 204, + "column": 4 + }, + "end": { + "line": 204, + "column": 13 + }, + "identifierName": "_initFade" + }, + "name": "_initFade" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 7641, + "end": 8561, + "loc": { + "start": { + "line": 204, + "column": 16 }, + "end": { + "line": 223, + "column": 5 + } + }, + "body": [ { "type": "ExpressionStatement", - "start": 5246, - "end": 5358, + "start": 7651, + "end": 7693, "loc": { "start": { - "line": 161, + "line": 205, "column": 8 }, "end": { - "line": 164, - "column": 11 + "line": 205, + "column": 50 } }, "expression": { "type": "AssignmentExpression", - "start": 5246, - "end": 5357, + "start": 7651, + "end": 7692, "loc": { "start": { - "line": 161, + "line": 205, "column": 8 }, "end": { - "line": 164, - "column": 10 + "line": 205, + "column": 49 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5246, - "end": 5259, + "start": 7651, + "end": 7660, "loc": { "start": { - "line": 161, + "line": 205, "column": 8 }, "end": { - "line": 161, - "column": 21 + "line": 205, + "column": 17 } }, "object": { - "type": "MemberExpression", - "start": 5246, - "end": 5255, + "type": "ThisExpression", + "start": 7651, + "end": 7655, "loc": { "start": { - "line": 161, + "line": 205, "column": 8 }, "end": { - "line": 161, - "column": 17 - } - }, - "object": { - "type": "ThisExpression", - "start": 5246, - "end": 5250, - "loc": { - "start": { - "line": 161, - "column": 8 - }, - "end": { - "line": 161, - "column": 12 - } + "line": 205, + "column": 12 } - }, - "property": { - "type": "Identifier", - "start": 5251, - "end": 5255, - "loc": { - "start": { - "line": 161, - "column": 13 - }, - "end": { - "line": 161, - "column": 17 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false + } }, "property": { "type": "Identifier", - "start": 5256, - "end": 5259, + "start": 7656, + "end": 7660, "loc": { "start": { - "line": 161, - "column": 18 + "line": 205, + "column": 13 }, "end": { - "line": 161, - "column": 21 + "line": 205, + "column": 17 }, - "identifierName": "src" + "identifierName": "_img" }, - "name": "src" + "name": "_img" }, "computed": false }, "right": { "type": "CallExpression", - "start": 5262, - "end": 5357, + "start": 7663, + "end": 7692, "loc": { "start": { - "line": 161, - "column": 24 + "line": 205, + "column": 20 }, "end": { - "line": 164, - "column": 10 + "line": 205, + "column": 49 } }, "callee": { "type": "MemberExpression", - "start": 5262, - "end": 5285, + "start": 7663, + "end": 7685, "loc": { "start": { - "line": 161, - "column": 24 + "line": 205, + "column": 20 }, "end": { - "line": 161, - "column": 47 + "line": 205, + "column": 42 } }, "object": { - "type": "MemberExpression", - "start": 5262, - "end": 5273, + "type": "Identifier", + "start": 7663, + "end": 7671, "loc": { "start": { - "line": 161, - "column": 24 + "line": 205, + "column": 20 }, "end": { - "line": 161, - "column": 35 - } - }, - "object": { - "type": "ThisExpression", - "start": 5262, - "end": 5266, - "loc": { - "start": { - "line": 161, - "column": 24 - }, - "end": { - "line": 161, - "column": 28 - } - } - }, - "property": { - "type": "Identifier", - "start": 5267, - "end": 5273, - "loc": { - "start": { - "line": 161, - "column": 29 - }, - "end": { - "line": 161, - "column": 35 - }, - "identifierName": "viewer" + "line": 205, + "column": 28 }, - "name": "viewer" + "identifierName": "document" }, - "computed": false + "name": "document" }, "property": { "type": "Identifier", - "start": 5274, - "end": 5285, + "start": 7672, + "end": 7685, "loc": { "start": { - "line": 161, - "column": 36 + "line": 205, + "column": 29 }, "end": { - "line": 161, - "column": 47 + "line": 205, + "column": 42 }, - "identifierName": "getSnapshot" + "identifierName": "createElement" }, - "name": "getSnapshot" + "name": "createElement" }, "computed": false }, "arguments": [ { - "type": "ObjectExpression", - "start": 5286, - "end": 5356, + "type": "StringLiteral", + "start": 7686, + "end": 7691, "loc": { "start": { - "line": 161, - "column": 48 + "line": 205, + "column": 43 }, "end": { - "line": 164, - "column": 9 + "line": 205, + "column": 48 } }, - "properties": [ - { - "type": "ObjectProperty", - "start": 5300, - "end": 5313, - "loc": { - "start": { - "line": 162, - "column": 12 - }, - "end": { - "line": 162, - "column": 25 - } - }, - "method": false, - "shorthand": false, - "computed": false, - "key": { - "type": "Identifier", - "start": 5300, - "end": 5306, - "loc": { - "start": { - "line": 162, - "column": 12 - }, - "end": { - "line": 162, - "column": 18 - }, - "identifierName": "format" - }, - "name": "format" - }, - "value": { - "type": "StringLiteral", - "start": 5308, - "end": 5313, - "loc": { - "start": { - "line": 162, - "column": 20 - }, - "end": { - "line": 162, - "column": 25 - } - }, - "extra": { - "rawValue": "png", - "raw": "\"png\"" - }, - "value": "png" - } - }, - { - "type": "ObjectProperty", - "start": 5327, - "end": 5346, - "loc": { - "start": { - "line": 163, - "column": 12 - }, - "end": { - "line": 163, - "column": 31 - } - }, - "method": false, - "shorthand": false, - "computed": false, - "key": { - "type": "Identifier", - "start": 5327, - "end": 5340, - "loc": { - "start": { - "line": 163, - "column": 12 - }, - "end": { - "line": 163, - "column": 25 - }, - "identifierName": "includeGizmos" - }, - "name": "includeGizmos" - }, - "value": { - "type": "BooleanLiteral", - "start": 5342, - "end": 5346, - "loc": { - "start": { - "line": 163, - "column": 27 - }, - "end": { - "line": 163, - "column": 31 - } - }, - "value": true - } - } - ] + "extra": { + "rawValue": "img", + "raw": "'img'" + }, + "value": "img" } ] } } }, { - "type": "ExpressionStatement", - "start": 5367, - "end": 5406, + "type": "VariableDeclaration", + "start": 7702, + "end": 7749, "loc": { "start": { - "line": 165, + "line": 206, "column": 8 }, "end": { - "line": 165, - "column": 47 + "line": 206, + "column": 55 } }, - "expression": { - "type": "AssignmentExpression", - "start": 5367, - "end": 5405, - "loc": { - "start": { - "line": 165, - "column": 8 - }, - "end": { - "line": 165, - "column": 46 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 5367, - "end": 5393, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 7708, + "end": 7748, "loc": { "start": { - "line": 165, - "column": 8 + "line": 206, + "column": 14 }, "end": { - "line": 165, - "column": 34 + "line": 206, + "column": 54 } }, - "object": { - "type": "MemberExpression", - "start": 5367, - "end": 5382, + "id": { + "type": "Identifier", + "start": 7708, + "end": 7714, "loc": { "start": { - "line": 165, - "column": 8 + "line": 206, + "column": 14 }, "end": { - "line": 165, + "line": 206, + "column": 20 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "init": { + "type": "MemberExpression", + "start": 7717, + "end": 7748, + "loc": { + "start": { + "line": 206, "column": 23 + }, + "end": { + "line": 206, + "column": 54 } }, "object": { "type": "MemberExpression", - "start": 5367, - "end": 5376, + "start": 7717, + "end": 7741, "loc": { "start": { - "line": 165, - "column": 8 + "line": 206, + "column": 23 + }, + "end": { + "line": 206, + "column": 47 + } + }, + "object": { + "type": "MemberExpression", + "start": 7717, + "end": 7734, + "loc": { + "start": { + "line": 206, + "column": 23 + }, + "end": { + "line": 206, + "column": 40 + } + }, + "object": { + "type": "MemberExpression", + "start": 7717, + "end": 7728, + "loc": { + "start": { + "line": 206, + "column": 23 + }, + "end": { + "line": 206, + "column": 34 + } + }, + "object": { + "type": "ThisExpression", + "start": 7717, + "end": 7721, + "loc": { + "start": { + "line": 206, + "column": 23 + }, + "end": { + "line": 206, + "column": 27 + } + } + }, + "property": { + "type": "Identifier", + "start": 7722, + "end": 7728, + "loc": { + "start": { + "line": 206, + "column": 28 + }, + "end": { + "line": 206, + "column": 34 + }, + "identifierName": "viewer" + }, + "name": "viewer" + }, + "computed": false }, - "end": { - "line": 165, - "column": 17 - } - }, - "object": { - "type": "ThisExpression", - "start": 5367, - "end": 5371, - "loc": { - "start": { - "line": 165, - "column": 8 + "property": { + "type": "Identifier", + "start": 7729, + "end": 7734, + "loc": { + "start": { + "line": 206, + "column": 35 + }, + "end": { + "line": 206, + "column": 40 + }, + "identifierName": "scene" }, - "end": { - "line": 165, - "column": 12 - } - } + "name": "scene" + }, + "computed": false }, "property": { "type": "Identifier", - "start": 5372, - "end": 5376, + "start": 7735, + "end": 7741, "loc": { "start": { - "line": 165, - "column": 13 + "line": 206, + "column": 41 }, "end": { - "line": 165, - "column": 17 + "line": 206, + "column": 47 }, - "identifierName": "_img" + "identifierName": "canvas" }, - "name": "_img" + "name": "canvas" }, "computed": false }, "property": { "type": "Identifier", - "start": 5377, - "end": 5382, + "start": 7742, + "end": 7748, "loc": { "start": { - "line": 165, - "column": 18 + "line": 206, + "column": 48 }, "end": { - "line": 165, - "column": 23 + "line": 206, + "column": 54 }, - "identifierName": "style" + "identifierName": "canvas" }, - "name": "style" + "name": "canvas" }, "computed": false - }, - "property": { - "type": "Identifier", - "start": 5383, - "end": 5393, - "loc": { - "start": { - "line": 165, - "column": 24 - }, - "end": { - "line": 165, - "column": 34 - }, - "identifierName": "visibility" - }, - "name": "visibility" - }, - "computed": false - }, - "right": { - "type": "StringLiteral", - "start": 5396, - "end": 5405, - "loc": { - "start": { - "line": 165, - "column": 37 - }, - "end": { - "line": 165, - "column": 46 - } - }, - "extra": { - "rawValue": "visible", - "raw": "\"visible\"" - }, - "value": "visible" + } } - } + ], + "kind": "const" }, { "type": "VariableDeclaration", - "start": 5416, - "end": 5432, + "start": 7758, + "end": 7804, "loc": { "start": { - "line": 167, + "line": 207, "column": 8 }, "end": { - "line": 167, - "column": 24 + "line": 207, + "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 5420, - "end": 5431, + "start": 7764, + "end": 7803, "loc": { "start": { - "line": 167, - "column": 12 + "line": 207, + "column": 14 }, "end": { - "line": 167, - "column": 23 + "line": 207, + "column": 53 } }, "id": { "type": "Identifier", - "start": 5420, - "end": 5427, + "start": 7764, + "end": 7776, "loc": { "start": { - "line": 167, - "column": 12 + "line": 207, + "column": 14 }, "end": { - "line": 167, - "column": 19 + "line": 207, + "column": 26 }, - "identifierName": "opacity" + "identifierName": "canvasOffset" }, - "name": "opacity" + "name": "canvasOffset" }, "init": { - "type": "NumericLiteral", - "start": 5430, - "end": 5431, + "type": "CallExpression", + "start": 7779, + "end": 7803, "loc": { "start": { - "line": 167, - "column": 22 + "line": 207, + "column": 29 }, "end": { - "line": 167, - "column": 23 + "line": 207, + "column": 53 } }, - "extra": { - "rawValue": 1, - "raw": "1" + "callee": { + "type": "Identifier", + "start": 7779, + "end": 7795, + "loc": { + "start": { + "line": 207, + "column": 29 + }, + "end": { + "line": 207, + "column": 45 + }, + "identifierName": "cumulativeOffset" + }, + "name": "cumulativeOffset" }, - "value": 1 + "arguments": [ + { + "type": "Identifier", + "start": 7796, + "end": 7802, + "loc": { + "start": { + "line": 207, + "column": 46 + }, + "end": { + "line": 207, + "column": 52 + }, + "identifierName": "canvas" + }, + "name": "canvas" + } + ] } } ], - "kind": "let" + "kind": "const" }, { - "type": "ExpressionStatement", - "start": 5441, - "end": 5833, + "type": "VariableDeclaration", + "start": 7813, + "end": 7873, "loc": { "start": { - "line": 168, + "line": 208, "column": 8 }, "end": { - "line": 178, - "column": 21 + "line": 208, + "column": 68 } }, - "expression": { - "type": "AssignmentExpression", - "start": 5441, - "end": 5832, - "loc": { - "start": { - "line": 168, - "column": 8 - }, - "end": { - "line": 178, - "column": 20 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 5441, - "end": 5456, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 7819, + "end": 7872, "loc": { "start": { - "line": 168, - "column": 8 + "line": 208, + "column": 14 }, "end": { - "line": 168, - "column": 23 - } - }, - "object": { - "type": "ThisExpression", - "start": 5441, - "end": 5445, - "loc": { - "start": { - "line": 168, - "column": 8 - }, - "end": { - "line": 168, - "column": 12 - } + "line": 208, + "column": 67 } }, - "property": { + "id": { "type": "Identifier", - "start": 5446, - "end": 5456, + "start": 7819, + "end": 7825, "loc": { "start": { - "line": 168, - "column": 13 + "line": 208, + "column": 14 }, "end": { - "line": 168, - "column": 23 + "line": 208, + "column": 20 }, - "identifierName": "_pInterval" - }, - "name": "_pInterval" - }, - "computed": false - }, - "right": { - "type": "CallExpression", - "start": 5459, - "end": 5832, - "loc": { - "start": { - "line": 168, - "column": 26 + "identifierName": "zIndex" }, - "end": { - "line": 178, - "column": 20 - } + "name": "zIndex" }, - "callee": { - "type": "Identifier", - "start": 5459, - "end": 5470, + "init": { + "type": "BinaryExpression", + "start": 7828, + "end": 7872, "loc": { "start": { - "line": 168, - "column": 26 + "line": 208, + "column": 23 }, "end": { - "line": 168, - "column": 37 - }, - "identifierName": "setInterval" + "line": 208, + "column": 67 + } }, - "name": "setInterval" - }, - "arguments": [ - { - "type": "ArrowFunctionExpression", - "start": 5471, - "end": 5821, + "left": { + "type": "LogicalExpression", + "start": 7829, + "end": 7867, "loc": { "start": { - "line": 168, - "column": 38 + "line": 208, + "column": 24 }, "end": { - "line": 178, - "column": 9 + "line": 208, + "column": 62 } }, - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [], - "body": { - "type": "BlockStatement", - "start": 5477, - "end": 5821, + "left": { + "type": "CallExpression", + "start": 7829, + "end": 7862, "loc": { "start": { - "line": 168, - "column": 44 + "line": 208, + "column": 24 }, "end": { - "line": 178, - "column": 9 + "line": 208, + "column": 57 } }, - "body": [ - { - "type": "ExpressionStatement", - "start": 5491, - "end": 5506, - "loc": { - "start": { - "line": 169, - "column": 12 - }, - "end": { - "line": 169, - "column": 27 - } + "callee": { + "type": "Identifier", + "start": 7829, + "end": 7837, + "loc": { + "start": { + "line": 208, + "column": 24 }, - "expression": { - "type": "AssignmentExpression", - "start": 5491, - "end": 5505, - "loc": { - "start": { - "line": 169, - "column": 12 - }, - "end": { - "line": 169, - "column": 26 - } - }, - "operator": "-=", - "left": { - "type": "Identifier", - "start": 5491, - "end": 5498, - "loc": { - "start": { - "line": 169, - "column": 12 - }, - "end": { - "line": 169, - "column": 19 - }, - "identifierName": "opacity" - }, - "name": "opacity" - }, - "right": { - "type": "Identifier", - "start": 5502, - "end": 5505, - "loc": { - "start": { - "line": 169, - "column": 23 - }, - "end": { - "line": 169, - "column": 26 - }, - "identifierName": "inc" - }, - "name": "inc" - } - } + "end": { + "line": 208, + "column": 32 + }, + "identifierName": "parseInt" }, + "name": "parseInt" + }, + "arguments": [ { - "type": "IfStatement", - "start": 5519, - "end": 5811, + "type": "MemberExpression", + "start": 7838, + "end": 7861, "loc": { "start": { - "line": 170, - "column": 12 + "line": 208, + "column": 33 }, "end": { - "line": 177, - "column": 13 + "line": 208, + "column": 56 } }, - "test": { - "type": "BinaryExpression", - "start": 5523, - "end": 5534, + "object": { + "type": "MemberExpression", + "start": 7838, + "end": 7850, "loc": { "start": { - "line": 170, - "column": 16 + "line": 208, + "column": 33 }, "end": { - "line": 170, - "column": 27 + "line": 208, + "column": 45 } }, - "left": { + "object": { "type": "Identifier", - "start": 5523, - "end": 5530, - "loc": { - "start": { - "line": 170, - "column": 16 - }, - "end": { - "line": 170, - "column": 23 - }, - "identifierName": "opacity" - }, - "name": "opacity" - }, - "operator": ">", - "right": { - "type": "NumericLiteral", - "start": 5533, - "end": 5534, + "start": 7838, + "end": 7844, "loc": { "start": { - "line": 170, - "column": 26 + "line": 208, + "column": 33 }, "end": { - "line": 170, - "column": 27 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - } - }, - "consequent": { - "type": "BlockStatement", - "start": 5536, - "end": 5602, - "loc": { - "start": { - "line": 170, - "column": 29 - }, - "end": { - "line": 172, - "column": 13 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 5554, - "end": 5588, - "loc": { - "start": { - "line": 171, - "column": 16 - }, - "end": { - "line": 171, - "column": 50 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 5554, - "end": 5587, - "loc": { - "start": { - "line": 171, - "column": 16 - }, - "end": { - "line": 171, - "column": 49 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 5554, - "end": 5577, - "loc": { - "start": { - "line": 171, - "column": 16 - }, - "end": { - "line": 171, - "column": 39 - } - }, - "object": { - "type": "MemberExpression", - "start": 5554, - "end": 5569, - "loc": { - "start": { - "line": 171, - "column": 16 - }, - "end": { - "line": 171, - "column": 31 - } - }, - "object": { - "type": "MemberExpression", - "start": 5554, - "end": 5563, - "loc": { - "start": { - "line": 171, - "column": 16 - }, - "end": { - "line": 171, - "column": 25 - } - }, - "object": { - "type": "ThisExpression", - "start": 5554, - "end": 5558, - "loc": { - "start": { - "line": 171, - "column": 16 - }, - "end": { - "line": 171, - "column": 20 - } - } - }, - "property": { - "type": "Identifier", - "start": 5559, - "end": 5563, - "loc": { - "start": { - "line": 171, - "column": 21 - }, - "end": { - "line": 171, - "column": 25 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5564, - "end": 5569, - "loc": { - "start": { - "line": 171, - "column": 26 - }, - "end": { - "line": 171, - "column": 31 - }, - "identifierName": "style" - }, - "name": "style" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5570, - "end": 5577, - "loc": { - "start": { - "line": 171, - "column": 32 - }, - "end": { - "line": 171, - "column": 39 - }, - "identifierName": "opacity" - }, - "name": "opacity" - }, - "computed": false - }, - "right": { - "type": "Identifier", - "start": 5580, - "end": 5587, - "loc": { - "start": { - "line": 171, - "column": 42 - }, - "end": { - "line": 171, - "column": 49 - }, - "identifierName": "opacity" - }, - "name": "opacity" - } - } - } - ], - "directives": [] - }, - "alternate": { - "type": "BlockStatement", - "start": 5608, - "end": 5811, - "loc": { - "start": { - "line": 172, - "column": 19 + "line": 208, + "column": 39 + }, + "identifierName": "canvas" }, - "end": { - "line": 177, - "column": 13 - } + "name": "canvas" }, - "body": [ - { - "type": "ExpressionStatement", - "start": 5626, - "end": 5654, - "loc": { - "start": { - "line": 173, - "column": 16 - }, - "end": { - "line": 173, - "column": 44 - } + "property": { + "type": "Identifier", + "start": 7845, + "end": 7850, + "loc": { + "start": { + "line": 208, + "column": 40 }, - "expression": { - "type": "AssignmentExpression", - "start": 5626, - "end": 5653, - "loc": { - "start": { - "line": 173, - "column": 16 - }, - "end": { - "line": 173, - "column": 43 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 5626, - "end": 5649, - "loc": { - "start": { - "line": 173, - "column": 16 - }, - "end": { - "line": 173, - "column": 39 - } - }, - "object": { - "type": "MemberExpression", - "start": 5626, - "end": 5641, - "loc": { - "start": { - "line": 173, - "column": 16 - }, - "end": { - "line": 173, - "column": 31 - } - }, - "object": { - "type": "MemberExpression", - "start": 5626, - "end": 5635, - "loc": { - "start": { - "line": 173, - "column": 16 - }, - "end": { - "line": 173, - "column": 25 - } - }, - "object": { - "type": "ThisExpression", - "start": 5626, - "end": 5630, - "loc": { - "start": { - "line": 173, - "column": 16 - }, - "end": { - "line": 173, - "column": 20 - } - } - }, - "property": { - "type": "Identifier", - "start": 5631, - "end": 5635, - "loc": { - "start": { - "line": 173, - "column": 21 - }, - "end": { - "line": 173, - "column": 25 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5636, - "end": 5641, - "loc": { - "start": { - "line": 173, - "column": 26 - }, - "end": { - "line": 173, - "column": 31 - }, - "identifierName": "style" - }, - "name": "style" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5642, - "end": 5649, - "loc": { - "start": { - "line": 173, - "column": 32 - }, - "end": { - "line": 173, - "column": 39 - }, - "identifierName": "opacity" - }, - "name": "opacity" - }, - "computed": false - }, - "right": { - "type": "NumericLiteral", - "start": 5652, - "end": 5653, - "loc": { - "start": { - "line": 173, - "column": 42 - }, - "end": { - "line": 173, - "column": 43 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - } - } - }, - { - "type": "ExpressionStatement", - "start": 5671, - "end": 5709, - "loc": { - "start": { - "line": 174, - "column": 16 - }, - "end": { - "line": 174, - "column": 54 - } + "end": { + "line": 208, + "column": 45 }, - "expression": { - "type": "AssignmentExpression", - "start": 5671, - "end": 5708, - "loc": { - "start": { - "line": 174, - "column": 16 - }, - "end": { - "line": 174, - "column": 53 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 5671, - "end": 5697, - "loc": { - "start": { - "line": 174, - "column": 16 - }, - "end": { - "line": 174, - "column": 42 - } - }, - "object": { - "type": "MemberExpression", - "start": 5671, - "end": 5686, - "loc": { - "start": { - "line": 174, - "column": 16 - }, - "end": { - "line": 174, - "column": 31 - } - }, - "object": { - "type": "MemberExpression", - "start": 5671, - "end": 5680, - "loc": { - "start": { - "line": 174, - "column": 16 - }, - "end": { - "line": 174, - "column": 25 - } - }, - "object": { - "type": "ThisExpression", - "start": 5671, - "end": 5675, - "loc": { - "start": { - "line": 174, - "column": 16 - }, - "end": { - "line": 174, - "column": 20 - } - } - }, - "property": { - "type": "Identifier", - "start": 5676, - "end": 5680, - "loc": { - "start": { - "line": 174, - "column": 21 - }, - "end": { - "line": 174, - "column": 25 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5681, - "end": 5686, - "loc": { - "start": { - "line": 174, - "column": 26 - }, - "end": { - "line": 174, - "column": 31 - }, - "identifierName": "style" - }, - "name": "style" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5687, - "end": 5697, - "loc": { - "start": { - "line": 174, - "column": 32 - }, - "end": { - "line": 174, - "column": 42 - }, - "identifierName": "visibility" - }, - "name": "visibility" - }, - "computed": false - }, - "right": { - "type": "StringLiteral", - "start": 5700, - "end": 5708, - "loc": { - "start": { - "line": 174, - "column": 45 - }, - "end": { - "line": 174, - "column": 53 - } - }, - "extra": { - "rawValue": "hidden", - "raw": "\"hidden\"" - }, - "value": "hidden" - } - } + "identifierName": "style" }, - { - "type": "ExpressionStatement", - "start": 5726, - "end": 5757, - "loc": { - "start": { - "line": 175, - "column": 16 - }, - "end": { - "line": 175, - "column": 47 - } - }, - "expression": { - "type": "CallExpression", - "start": 5726, - "end": 5756, - "loc": { - "start": { - "line": 175, - "column": 16 - }, - "end": { - "line": 175, - "column": 46 - } - }, - "callee": { - "type": "Identifier", - "start": 5726, - "end": 5739, - "loc": { - "start": { - "line": 175, - "column": 16 - }, - "end": { - "line": 175, - "column": 29 - }, - "identifierName": "clearInterval" - }, - "name": "clearInterval" - }, - "arguments": [ - { - "type": "MemberExpression", - "start": 5740, - "end": 5755, - "loc": { - "start": { - "line": 175, - "column": 30 - }, - "end": { - "line": 175, - "column": 45 - } - }, - "object": { - "type": "ThisExpression", - "start": 5740, - "end": 5744, - "loc": { - "start": { - "line": 175, - "column": 30 - }, - "end": { - "line": 175, - "column": 34 - } - } - }, - "property": { - "type": "Identifier", - "start": 5745, - "end": 5755, - "loc": { - "start": { - "line": 175, - "column": 35 - }, - "end": { - "line": 175, - "column": 45 - }, - "identifierName": "_pInterval" - }, - "name": "_pInterval" - }, - "computed": false - } - ] - } + "name": "style" + }, + "computed": false + }, + "property": { + "type": "StringLiteral", + "start": 7851, + "end": 7860, + "loc": { + "start": { + "line": 208, + "column": 46 }, - { - "type": "ExpressionStatement", - "start": 5774, - "end": 5797, - "loc": { - "start": { - "line": 176, - "column": 16 - }, - "end": { - "line": 176, - "column": 39 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 5774, - "end": 5796, - "loc": { - "start": { - "line": 176, - "column": 16 - }, - "end": { - "line": 176, - "column": 38 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 5774, - "end": 5789, - "loc": { - "start": { - "line": 176, - "column": 16 - }, - "end": { - "line": 176, - "column": 31 - } - }, - "object": { - "type": "ThisExpression", - "start": 5774, - "end": 5778, - "loc": { - "start": { - "line": 176, - "column": 16 - }, - "end": { - "line": 176, - "column": 20 - } - } - }, - "property": { - "type": "Identifier", - "start": 5779, - "end": 5789, - "loc": { - "start": { - "line": 176, - "column": 21 - }, - "end": { - "line": 176, - "column": 31 - }, - "identifierName": "_pInterval" - }, - "name": "_pInterval" - }, - "computed": false - }, - "right": { - "type": "NullLiteral", - "start": 5792, - "end": 5796, - "loc": { - "start": { - "line": 176, - "column": 34 - }, - "end": { - "line": 176, - "column": 38 - } - } - } - } + "end": { + "line": 208, + "column": 55 } - ], - "directives": [] - } + }, + "extra": { + "rawValue": "z-index", + "raw": "\"z-index\"" + }, + "value": "z-index" + }, + "computed": true } - ], - "directives": [] + ] + }, + "operator": "||", + "right": { + "type": "NumericLiteral", + "start": 7866, + "end": 7867, + "loc": { + "start": { + "line": 208, + "column": 61 + }, + "end": { + "line": 208, + "column": 62 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "extra": { + "parenthesized": true, + "parenStart": 7828 + } + }, + "operator": "+", + "right": { + "type": "NumericLiteral", + "start": 7871, + "end": 7872, + "loc": { + "start": { + "line": 208, + "column": 66 + }, + "end": { + "line": 208, + "column": 67 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + } + } + ], + "kind": "const" + }, + { + "type": "ExpressionStatement", + "start": 7882, + "end": 7920, + "loc": { + "start": { + "line": 209, + "column": 8 + }, + "end": { + "line": 209, + "column": 46 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7882, + "end": 7919, + "loc": { + "start": { + "line": 209, + "column": 8 + }, + "end": { + "line": 209, + "column": 45 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 7882, + "end": 7906, + "loc": { + "start": { + "line": 209, + "column": 8 + }, + "end": { + "line": 209, + "column": 32 + } + }, + "object": { + "type": "MemberExpression", + "start": 7882, + "end": 7897, + "loc": { + "start": { + "line": 209, + "column": 8 + }, + "end": { + "line": 209, + "column": 23 } }, - { + "object": { + "type": "MemberExpression", + "start": 7882, + "end": 7891, + "loc": { + "start": { + "line": 209, + "column": 8 + }, + "end": { + "line": 209, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 7882, + "end": 7886, + "loc": { + "start": { + "line": 209, + "column": 8 + }, + "end": { + "line": 209, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 7887, + "end": 7891, + "loc": { + "start": { + "line": 209, + "column": 13 + }, + "end": { + "line": 209, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { "type": "Identifier", - "start": 5823, - "end": 5831, + "start": 7892, + "end": 7897, "loc": { "start": { - "line": 178, - "column": 11 + "line": 209, + "column": 18 }, "end": { - "line": 178, - "column": 19 + "line": 209, + "column": 23 }, - "identifierName": "interval" + "identifierName": "style" }, - "name": "interval" + "name": "style" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 7898, + "end": 7906, + "loc": { + "start": { + "line": 209, + "column": 24 + }, + "end": { + "line": 209, + "column": 32 + }, + "identifierName": "position" + }, + "name": "position" + }, + "computed": false + }, + "right": { + "type": "StringLiteral", + "start": 7909, + "end": 7919, + "loc": { + "start": { + "line": 209, + "column": 35 + }, + "end": { + "line": 209, + "column": 45 } - ] + }, + "extra": { + "rawValue": "absolute", + "raw": "\"absolute\"" + }, + "value": "absolute" } } - } - ], - "directives": [] - } - }, - { - "type": "ClassMethod", - "start": 5845, - "end": 6777, - "loc": { - "start": { - "line": 181, - "column": 4 - }, - "end": { - "line": 200, - "column": 5 - } - }, - "static": false, - "computed": false, - "key": { - "type": "Identifier", - "start": 5845, - "end": 5854, - "loc": { - "start": { - "line": 181, - "column": 4 - }, - "end": { - "line": 181, - "column": 13 - }, - "identifierName": "_initFade" - }, - "name": "_initFade" - }, - "kind": "method", - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [], - "body": { - "type": "BlockStatement", - "start": 5857, - "end": 6777, - "loc": { - "start": { - "line": 181, - "column": 16 }, - "end": { - "line": 200, - "column": 5 - } - }, - "body": [ { "type": "ExpressionStatement", - "start": 5867, - "end": 5909, + "start": 7929, + "end": 7967, "loc": { "start": { - "line": 182, + "line": 210, "column": 8 }, "end": { - "line": 182, - "column": 50 + "line": 210, + "column": 46 } }, "expression": { "type": "AssignmentExpression", - "start": 5867, - "end": 5908, + "start": 7929, + "end": 7966, "loc": { "start": { - "line": 182, + "line": 210, "column": 8 }, "end": { - "line": 182, - "column": 49 + "line": 210, + "column": 45 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 5867, - "end": 5876, + "start": 7929, + "end": 7955, "loc": { "start": { - "line": 182, + "line": 210, "column": 8 }, "end": { - "line": 182, - "column": 17 + "line": 210, + "column": 34 } }, "object": { - "type": "ThisExpression", - "start": 5867, - "end": 5871, + "type": "MemberExpression", + "start": 7929, + "end": 7944, "loc": { "start": { - "line": 182, + "line": 210, "column": 8 }, "end": { - "line": 182, - "column": 12 + "line": 210, + "column": 23 } - } + }, + "object": { + "type": "MemberExpression", + "start": 7929, + "end": 7938, + "loc": { + "start": { + "line": 210, + "column": 8 + }, + "end": { + "line": 210, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 7929, + "end": 7933, + "loc": { + "start": { + "line": 210, + "column": 8 + }, + "end": { + "line": 210, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 7934, + "end": 7938, + "loc": { + "start": { + "line": 210, + "column": 13 + }, + "end": { + "line": 210, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 7939, + "end": 7944, + "loc": { + "start": { + "line": 210, + "column": 18 + }, + "end": { + "line": 210, + "column": 23 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false }, "property": { "type": "Identifier", - "start": 5872, - "end": 5876, + "start": 7945, + "end": 7955, "loc": { "start": { - "line": 182, - "column": 13 + "line": 210, + "column": 24 }, "end": { - "line": 182, - "column": 17 + "line": 210, + "column": 34 }, - "identifierName": "_img" + "identifierName": "visibility" }, - "name": "_img" + "name": "visibility" }, "computed": false }, "right": { - "type": "CallExpression", - "start": 5879, - "end": 5908, + "type": "StringLiteral", + "start": 7958, + "end": 7966, "loc": { "start": { - "line": 182, - "column": 20 + "line": 210, + "column": 37 }, "end": { - "line": 182, - "column": 49 + "line": 210, + "column": 45 } }, - "callee": { + "extra": { + "rawValue": "hidden", + "raw": "\"hidden\"" + }, + "value": "hidden" + } + } + }, + { + "type": "ExpressionStatement", + "start": 7976, + "end": 8019, + "loc": { + "start": { + "line": 211, + "column": 8 + }, + "end": { + "line": 211, + "column": 51 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7976, + "end": 8018, + "loc": { + "start": { + "line": 211, + "column": 8 + }, + "end": { + "line": 211, + "column": 50 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 7976, + "end": 8009, + "loc": { + "start": { + "line": 211, + "column": 8 + }, + "end": { + "line": 211, + "column": 41 + } + }, + "object": { "type": "MemberExpression", - "start": 5879, - "end": 5901, + "start": 7976, + "end": 7991, "loc": { "start": { - "line": 182, - "column": 20 + "line": 211, + "column": 8 }, "end": { - "line": 182, - "column": 42 + "line": 211, + "column": 23 } }, "object": { - "type": "Identifier", - "start": 5879, - "end": 5887, + "type": "MemberExpression", + "start": 7976, + "end": 7985, "loc": { "start": { - "line": 182, - "column": 20 + "line": 211, + "column": 8 }, "end": { - "line": 182, - "column": 28 + "line": 211, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 7976, + "end": 7980, + "loc": { + "start": { + "line": 211, + "column": 8 + }, + "end": { + "line": 211, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 7981, + "end": 7985, + "loc": { + "start": { + "line": 211, + "column": 13 + }, + "end": { + "line": 211, + "column": 17 + }, + "identifierName": "_img" }, - "identifierName": "document" + "name": "_img" }, - "name": "document" + "computed": false }, "property": { "type": "Identifier", - "start": 5888, - "end": 5901, + "start": 7986, + "end": 7991, "loc": { "start": { - "line": 182, - "column": 29 + "line": 211, + "column": 18 }, "end": { - "line": 182, - "column": 42 + "line": 211, + "column": 23 }, - "identifierName": "createElement" + "identifierName": "style" }, - "name": "createElement" + "name": "style" }, "computed": false }, - "arguments": [ - { - "type": "StringLiteral", - "start": 5902, - "end": 5907, + "property": { + "type": "StringLiteral", + "start": 7992, + "end": 8008, + "loc": { + "start": { + "line": 211, + "column": 24 + }, + "end": { + "line": 211, + "column": 40 + } + }, + "extra": { + "rawValue": "pointer-events", + "raw": "\"pointer-events\"" + }, + "value": "pointer-events" + }, + "computed": true + }, + "right": { + "type": "StringLiteral", + "start": 8012, + "end": 8018, + "loc": { + "start": { + "line": 211, + "column": 44 + }, + "end": { + "line": 211, + "column": 50 + } + }, + "extra": { + "rawValue": "none", + "raw": "\"none\"" + }, + "value": "none" + } + } + }, + { + "type": "ExpressionStatement", + "start": 8028, + "end": 8059, + "loc": { + "start": { + "line": 212, + "column": 8 + }, + "end": { + "line": 212, + "column": 39 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 8028, + "end": 8058, + "loc": { + "start": { + "line": 212, + "column": 8 + }, + "end": { + "line": 212, + "column": 38 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 8028, + "end": 8054, + "loc": { + "start": { + "line": 212, + "column": 8 + }, + "end": { + "line": 212, + "column": 34 + } + }, + "object": { + "type": "MemberExpression", + "start": 8028, + "end": 8043, + "loc": { + "start": { + "line": 212, + "column": 8 + }, + "end": { + "line": 212, + "column": 23 + } + }, + "object": { + "type": "MemberExpression", + "start": 8028, + "end": 8037, "loc": { "start": { - "line": 182, - "column": 43 + "line": 212, + "column": 8 }, "end": { - "line": 182, - "column": 48 + "line": 212, + "column": 17 } }, - "extra": { - "rawValue": "img", - "raw": "'img'" + "object": { + "type": "ThisExpression", + "start": 8028, + "end": 8032, + "loc": { + "start": { + "line": 212, + "column": 8 + }, + "end": { + "line": 212, + "column": 12 + } + } }, - "value": "img" + "property": { + "type": "Identifier", + "start": 8033, + "end": 8037, + "loc": { + "start": { + "line": 212, + "column": 13 + }, + "end": { + "line": 212, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 8038, + "end": 8043, + "loc": { + "start": { + "line": 212, + "column": 18 + }, + "end": { + "line": 212, + "column": 23 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "StringLiteral", + "start": 8044, + "end": 8053, + "loc": { + "start": { + "line": 212, + "column": 24 + }, + "end": { + "line": 212, + "column": 33 + } + }, + "extra": { + "rawValue": "z-index", + "raw": "\"z-index\"" + }, + "value": "z-index" + }, + "computed": true + }, + "right": { + "type": "NumericLiteral", + "start": 8057, + "end": 8058, + "loc": { + "start": { + "line": 212, + "column": 37 + }, + "end": { + "line": 212, + "column": 38 } - ] + }, + "extra": { + "rawValue": 5, + "raw": "5" + }, + "value": 5 } } }, { - "type": "VariableDeclaration", - "start": 5918, - "end": 5965, + "type": "ExpressionStatement", + "start": 8068, + "end": 8116, "loc": { "start": { - "line": 183, + "line": 213, "column": 8 }, "end": { - "line": 183, - "column": 55 + "line": 213, + "column": 56 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 5924, - "end": 5964, + "expression": { + "type": "AssignmentExpression", + "start": 8068, + "end": 8115, + "loc": { + "start": { + "line": 213, + "column": 8 + }, + "end": { + "line": 213, + "column": 55 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 8068, + "end": 8088, "loc": { "start": { - "line": 183, - "column": 14 + "line": 213, + "column": 8 }, "end": { - "line": 183, - "column": 54 + "line": 213, + "column": 28 } }, - "id": { - "type": "Identifier", - "start": 5924, - "end": 5930, - "loc": { - "start": { - "line": 183, - "column": 14 - }, - "end": { - "line": 183, - "column": 20 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "init": { + "object": { "type": "MemberExpression", - "start": 5933, - "end": 5964, + "start": 8068, + "end": 8083, "loc": { "start": { - "line": 183, - "column": 23 + "line": 213, + "column": 8 }, "end": { - "line": 183, - "column": 54 + "line": 213, + "column": 23 } }, "object": { "type": "MemberExpression", - "start": 5933, - "end": 5957, + "start": 8068, + "end": 8077, "loc": { "start": { - "line": 183, - "column": 23 + "line": 213, + "column": 8 }, "end": { - "line": 183, - "column": 47 + "line": 213, + "column": 17 } }, "object": { - "type": "MemberExpression", - "start": 5933, - "end": 5950, + "type": "ThisExpression", + "start": 8068, + "end": 8072, "loc": { "start": { - "line": 183, - "column": 23 + "line": 213, + "column": 8 }, "end": { - "line": 183, - "column": 40 + "line": 213, + "column": 12 } - }, - "object": { - "type": "MemberExpression", - "start": 5933, - "end": 5944, - "loc": { - "start": { - "line": 183, - "column": 23 - }, - "end": { - "line": 183, - "column": 34 - } - }, - "object": { - "type": "ThisExpression", - "start": 5933, - "end": 5937, - "loc": { - "start": { - "line": 183, - "column": 23 - }, - "end": { - "line": 183, - "column": 27 - } - } - }, - "property": { - "type": "Identifier", - "start": 5938, - "end": 5944, - "loc": { - "start": { - "line": 183, - "column": 28 - }, - "end": { - "line": 183, - "column": 34 - }, - "identifierName": "viewer" - }, - "name": "viewer" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5945, - "end": 5950, - "loc": { - "start": { - "line": 183, - "column": 35 - }, - "end": { - "line": 183, - "column": 40 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "computed": false + } }, "property": { "type": "Identifier", - "start": 5951, - "end": 5957, + "start": 8073, + "end": 8077, "loc": { "start": { - "line": 183, - "column": 41 + "line": 213, + "column": 13 }, "end": { - "line": 183, - "column": 47 + "line": 213, + "column": 17 }, - "identifierName": "canvas" + "identifierName": "_img" }, - "name": "canvas" + "name": "_img" }, "computed": false }, "property": { "type": "Identifier", - "start": 5958, - "end": 5964, + "start": 8078, + "end": 8083, "loc": { "start": { - "line": 183, - "column": 48 + "line": 213, + "column": 18 }, "end": { - "line": 183, - "column": 54 + "line": 213, + "column": 23 }, - "identifierName": "canvas" + "identifierName": "style" }, - "name": "canvas" + "name": "style" }, "computed": false - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 5974, - "end": 6020, - "loc": { - "start": { - "line": 184, - "column": 8 - }, - "end": { - "line": 184, - "column": 54 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 5980, - "end": 6019, - "loc": { - "start": { - "line": 184, - "column": 14 - }, - "end": { - "line": 184, - "column": 53 - } }, - "id": { + "property": { "type": "Identifier", - "start": 5980, - "end": 5992, + "start": 8084, + "end": 8088, "loc": { "start": { - "line": 184, - "column": 14 + "line": 213, + "column": 24 }, "end": { - "line": 184, - "column": 26 + "line": 213, + "column": 28 }, - "identifierName": "canvasOffset" + "identifierName": "left" }, - "name": "canvasOffset" + "name": "left" }, - "init": { - "type": "CallExpression", - "start": 5995, - "end": 6019, - "loc": { - "start": { - "line": 184, - "column": 29 - }, - "end": { - "line": 184, - "column": 53 - } - }, - "callee": { - "type": "Identifier", - "start": 5995, - "end": 6011, - "loc": { - "start": { - "line": 184, - "column": 29 - }, - "end": { - "line": 184, - "column": 45 - }, - "identifierName": "cumulativeOffset" - }, - "name": "cumulativeOffset" - }, - "arguments": [ - { - "type": "Identifier", - "start": 6012, - "end": 6018, - "loc": { - "start": { - "line": 184, - "column": 46 - }, - "end": { - "line": 184, - "column": 52 - }, - "identifierName": "canvas" - }, - "name": "canvas" - } - ] - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 6029, - "end": 6089, - "loc": { - "start": { - "line": 185, - "column": 8 + "computed": false }, - "end": { - "line": 185, - "column": 68 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 6035, - "end": 6088, + "right": { + "type": "BinaryExpression", + "start": 8091, + "end": 8115, "loc": { "start": { - "line": 185, - "column": 14 + "line": 213, + "column": 31 }, "end": { - "line": 185, - "column": 67 + "line": 213, + "column": 55 } }, - "id": { - "type": "Identifier", - "start": 6035, - "end": 6041, - "loc": { - "start": { - "line": 185, - "column": 14 - }, - "end": { - "line": 185, - "column": 20 - }, - "identifierName": "zIndex" - }, - "name": "zIndex" - }, - "init": { - "type": "BinaryExpression", - "start": 6044, - "end": 6088, + "left": { + "type": "MemberExpression", + "start": 8091, + "end": 8108, "loc": { "start": { - "line": 185, - "column": 23 + "line": 213, + "column": 31 }, "end": { - "line": 185, - "column": 67 + "line": 213, + "column": 48 } }, - "left": { - "type": "LogicalExpression", - "start": 6045, - "end": 6083, + "object": { + "type": "Identifier", + "start": 8091, + "end": 8103, "loc": { "start": { - "line": 185, - "column": 24 + "line": 213, + "column": 31 }, "end": { - "line": 185, - "column": 62 - } - }, - "left": { - "type": "CallExpression", - "start": 6045, - "end": 6078, - "loc": { - "start": { - "line": 185, - "column": 24 - }, - "end": { - "line": 185, - "column": 57 - } - }, - "callee": { - "type": "Identifier", - "start": 6045, - "end": 6053, - "loc": { - "start": { - "line": 185, - "column": 24 - }, - "end": { - "line": 185, - "column": 32 - }, - "identifierName": "parseInt" - }, - "name": "parseInt" - }, - "arguments": [ - { - "type": "MemberExpression", - "start": 6054, - "end": 6077, - "loc": { - "start": { - "line": 185, - "column": 33 - }, - "end": { - "line": 185, - "column": 56 - } - }, - "object": { - "type": "MemberExpression", - "start": 6054, - "end": 6066, - "loc": { - "start": { - "line": 185, - "column": 33 - }, - "end": { - "line": 185, - "column": 45 - } - }, - "object": { - "type": "Identifier", - "start": 6054, - "end": 6060, - "loc": { - "start": { - "line": 185, - "column": 33 - }, - "end": { - "line": 185, - "column": 39 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "property": { - "type": "Identifier", - "start": 6061, - "end": 6066, - "loc": { - "start": { - "line": 185, - "column": 40 - }, - "end": { - "line": 185, - "column": 45 - }, - "identifierName": "style" - }, - "name": "style" - }, - "computed": false - }, - "property": { - "type": "StringLiteral", - "start": 6067, - "end": 6076, - "loc": { - "start": { - "line": 185, - "column": 46 - }, - "end": { - "line": 185, - "column": 55 - } - }, - "extra": { - "rawValue": "z-index", - "raw": "\"z-index\"" - }, - "value": "z-index" - }, - "computed": true - } - ] - }, - "operator": "||", - "right": { - "type": "NumericLiteral", - "start": 6082, - "end": 6083, - "loc": { - "start": { - "line": 185, - "column": 61 - }, - "end": { - "line": 185, - "column": 62 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" + "line": 213, + "column": 43 }, - "value": 0 + "identifierName": "canvasOffset" }, - "extra": { - "parenthesized": true, - "parenStart": 6044 - } + "name": "canvasOffset" }, - "operator": "+", - "right": { - "type": "NumericLiteral", - "start": 6087, - "end": 6088, + "property": { + "type": "Identifier", + "start": 8104, + "end": 8108, "loc": { "start": { - "line": 185, - "column": 66 + "line": 213, + "column": 44 }, "end": { - "line": 185, - "column": 67 - } + "line": 213, + "column": 48 + }, + "identifierName": "left" }, - "extra": { - "rawValue": 1, - "raw": "1" + "name": "left" + }, + "computed": false + }, + "operator": "+", + "right": { + "type": "StringLiteral", + "start": 8111, + "end": 8115, + "loc": { + "start": { + "line": 213, + "column": 51 }, - "value": 1 - } + "end": { + "line": 213, + "column": 55 + } + }, + "extra": { + "rawValue": "px", + "raw": "\"px\"" + }, + "value": "px" } } - ], - "kind": "const" + } }, { "type": "ExpressionStatement", - "start": 6098, - "end": 6136, + "start": 8125, + "end": 8171, "loc": { "start": { - "line": 186, + "line": 214, "column": 8 }, "end": { - "line": 186, - "column": 46 + "line": 214, + "column": 54 } }, "expression": { "type": "AssignmentExpression", - "start": 6098, - "end": 6135, + "start": 8125, + "end": 8170, "loc": { "start": { - "line": 186, + "line": 214, "column": 8 }, "end": { - "line": 186, - "column": 45 + "line": 214, + "column": 53 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6098, - "end": 6122, + "start": 8125, + "end": 8144, "loc": { "start": { - "line": 186, + "line": 214, "column": 8 }, "end": { - "line": 186, - "column": 32 + "line": 214, + "column": 27 } }, "object": { "type": "MemberExpression", - "start": 6098, - "end": 6113, + "start": 8125, + "end": 8140, "loc": { "start": { - "line": 186, + "line": 214, "column": 8 }, "end": { - "line": 186, + "line": 214, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6098, - "end": 6107, + "start": 8125, + "end": 8134, "loc": { "start": { - "line": 186, + "line": 214, "column": 8 }, "end": { - "line": 186, + "line": 214, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6098, - "end": 6102, + "start": 8125, + "end": 8129, "loc": { "start": { - "line": 186, + "line": 214, "column": 8 }, "end": { - "line": 186, + "line": 214, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6103, - "end": 6107, + "start": 8130, + "end": 8134, "loc": { "start": { - "line": 186, + "line": 214, "column": 13 }, "end": { - "line": 186, + "line": 214, "column": 17 }, "identifierName": "_img" @@ -30235,15 +36314,15 @@ }, "property": { "type": "Identifier", - "start": 6108, - "end": 6113, + "start": 8135, + "end": 8140, "loc": { "start": { - "line": 186, + "line": 214, "column": 18 }, "end": { - "line": 186, + "line": 214, "column": 23 }, "identifierName": "style" @@ -30254,142 +36333,208 @@ }, "property": { "type": "Identifier", - "start": 6114, - "end": 6122, + "start": 8141, + "end": 8144, "loc": { "start": { - "line": 186, + "line": 214, "column": 24 }, "end": { - "line": 186, - "column": 32 + "line": 214, + "column": 27 }, - "identifierName": "position" + "identifierName": "top" }, - "name": "position" + "name": "top" }, "computed": false }, "right": { - "type": "StringLiteral", - "start": 6125, - "end": 6135, + "type": "BinaryExpression", + "start": 8147, + "end": 8170, "loc": { "start": { - "line": 186, - "column": 35 + "line": 214, + "column": 30 }, "end": { - "line": 186, - "column": 45 + "line": 214, + "column": 53 } }, - "extra": { - "rawValue": "absolute", - "raw": "\"absolute\"" + "left": { + "type": "MemberExpression", + "start": 8147, + "end": 8163, + "loc": { + "start": { + "line": 214, + "column": 30 + }, + "end": { + "line": 214, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 8147, + "end": 8159, + "loc": { + "start": { + "line": 214, + "column": 30 + }, + "end": { + "line": 214, + "column": 42 + }, + "identifierName": "canvasOffset" + }, + "name": "canvasOffset" + }, + "property": { + "type": "Identifier", + "start": 8160, + "end": 8163, + "loc": { + "start": { + "line": 214, + "column": 43 + }, + "end": { + "line": 214, + "column": 46 + }, + "identifierName": "top" + }, + "name": "top" + }, + "computed": false }, - "value": "absolute" + "operator": "+", + "right": { + "type": "StringLiteral", + "start": 8166, + "end": 8170, + "loc": { + "start": { + "line": 214, + "column": 49 + }, + "end": { + "line": 214, + "column": 53 + } + }, + "extra": { + "rawValue": "px", + "raw": "\"px\"" + }, + "value": "px" + } } } }, { "type": "ExpressionStatement", - "start": 6145, - "end": 6183, + "start": 8180, + "end": 8224, "loc": { "start": { - "line": 187, + "line": 215, "column": 8 }, "end": { - "line": 187, - "column": 46 + "line": 215, + "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 6145, - "end": 6182, + "start": 8180, + "end": 8223, "loc": { "start": { - "line": 187, + "line": 215, "column": 8 }, "end": { - "line": 187, - "column": 45 + "line": 215, + "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6145, - "end": 6171, + "start": 8180, + "end": 8201, "loc": { "start": { - "line": 187, + "line": 215, "column": 8 }, "end": { - "line": 187, - "column": 34 + "line": 215, + "column": 29 } }, "object": { "type": "MemberExpression", - "start": 6145, - "end": 6160, + "start": 8180, + "end": 8195, "loc": { "start": { - "line": 187, + "line": 215, "column": 8 }, "end": { - "line": 187, + "line": 215, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6145, - "end": 6154, + "start": 8180, + "end": 8189, "loc": { "start": { - "line": 187, + "line": 215, "column": 8 }, "end": { - "line": 187, + "line": 215, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6145, - "end": 6149, + "start": 8180, + "end": 8184, "loc": { "start": { - "line": 187, + "line": 215, "column": 8 }, "end": { - "line": 187, + "line": 215, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6150, - "end": 6154, + "start": 8185, + "end": 8189, "loc": { "start": { - "line": 187, + "line": 215, "column": 13 }, "end": { - "line": 187, + "line": 215, "column": 17 }, "identifierName": "_img" @@ -30400,15 +36545,15 @@ }, "property": { "type": "Identifier", - "start": 6155, - "end": 6160, + "start": 8190, + "end": 8195, "loc": { "start": { - "line": 187, + "line": 215, "column": 18 }, "end": { - "line": 187, + "line": 215, "column": 23 }, "identifierName": "style" @@ -30419,142 +36564,208 @@ }, "property": { "type": "Identifier", - "start": 6161, - "end": 6171, + "start": 8196, + "end": 8201, "loc": { "start": { - "line": 187, + "line": 215, "column": 24 }, "end": { - "line": 187, - "column": 34 + "line": 215, + "column": 29 }, - "identifierName": "visibility" + "identifierName": "width" }, - "name": "visibility" + "name": "width" }, "computed": false }, "right": { - "type": "StringLiteral", - "start": 6174, - "end": 6182, + "type": "BinaryExpression", + "start": 8204, + "end": 8223, "loc": { "start": { - "line": 187, - "column": 37 + "line": 215, + "column": 32 }, "end": { - "line": 187, - "column": 45 + "line": 215, + "column": 51 } }, - "extra": { - "rawValue": "hidden", - "raw": "\"hidden\"" + "left": { + "type": "MemberExpression", + "start": 8204, + "end": 8216, + "loc": { + "start": { + "line": 215, + "column": 32 + }, + "end": { + "line": 215, + "column": 44 + } + }, + "object": { + "type": "Identifier", + "start": 8204, + "end": 8210, + "loc": { + "start": { + "line": 215, + "column": 32 + }, + "end": { + "line": 215, + "column": 38 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "property": { + "type": "Identifier", + "start": 8211, + "end": 8216, + "loc": { + "start": { + "line": 215, + "column": 39 + }, + "end": { + "line": 215, + "column": 44 + }, + "identifierName": "width" + }, + "name": "width" + }, + "computed": false }, - "value": "hidden" + "operator": "+", + "right": { + "type": "StringLiteral", + "start": 8219, + "end": 8223, + "loc": { + "start": { + "line": 215, + "column": 47 + }, + "end": { + "line": 215, + "column": 51 + } + }, + "extra": { + "rawValue": "px", + "raw": "\"px\"" + }, + "value": "px" + } } } }, { "type": "ExpressionStatement", - "start": 6192, - "end": 6235, + "start": 8233, + "end": 8279, "loc": { "start": { - "line": 188, + "line": 216, "column": 8 }, "end": { - "line": 188, - "column": 51 + "line": 216, + "column": 54 } }, "expression": { "type": "AssignmentExpression", - "start": 6192, - "end": 6234, + "start": 8233, + "end": 8278, "loc": { "start": { - "line": 188, + "line": 216, "column": 8 }, "end": { - "line": 188, - "column": 50 + "line": 216, + "column": 53 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6192, - "end": 6225, + "start": 8233, + "end": 8255, "loc": { "start": { - "line": 188, + "line": 216, "column": 8 }, "end": { - "line": 188, - "column": 41 + "line": 216, + "column": 30 } }, "object": { "type": "MemberExpression", - "start": 6192, - "end": 6207, + "start": 8233, + "end": 8248, "loc": { "start": { - "line": 188, + "line": 216, "column": 8 }, "end": { - "line": 188, + "line": 216, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6192, - "end": 6201, + "start": 8233, + "end": 8242, "loc": { "start": { - "line": 188, + "line": 216, "column": 8 }, "end": { - "line": 188, + "line": 216, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6192, - "end": 6196, + "start": 8233, + "end": 8237, "loc": { "start": { - "line": 188, + "line": 216, "column": 8 }, "end": { - "line": 188, + "line": 216, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6197, - "end": 6201, + "start": 8238, + "end": 8242, "loc": { "start": { - "line": 188, + "line": 216, "column": 13 }, "end": { - "line": 188, + "line": 216, "column": 17 }, "identifierName": "_img" @@ -30565,15 +36776,15 @@ }, "property": { "type": "Identifier", - "start": 6202, - "end": 6207, + "start": 8243, + "end": 8248, "loc": { "start": { - "line": 188, + "line": 216, "column": 18 }, "end": { - "line": 188, + "line": 216, "column": 23 }, "identifierName": "style" @@ -30583,146 +36794,209 @@ "computed": false }, "property": { - "type": "StringLiteral", - "start": 6208, - "end": 6224, + "type": "Identifier", + "start": 8249, + "end": 8255, "loc": { "start": { - "line": 188, + "line": 216, "column": 24 }, "end": { - "line": 188, - "column": 40 - } - }, - "extra": { - "rawValue": "pointer-events", - "raw": "\"pointer-events\"" + "line": 216, + "column": 30 + }, + "identifierName": "height" }, - "value": "pointer-events" + "name": "height" }, - "computed": true + "computed": false }, "right": { - "type": "StringLiteral", - "start": 6228, - "end": 6234, + "type": "BinaryExpression", + "start": 8258, + "end": 8278, "loc": { "start": { - "line": 188, - "column": 44 + "line": 216, + "column": 33 }, "end": { - "line": 188, - "column": 50 + "line": 216, + "column": 53 } }, - "extra": { - "rawValue": "none", - "raw": "\"none\"" + "left": { + "type": "MemberExpression", + "start": 8258, + "end": 8271, + "loc": { + "start": { + "line": 216, + "column": 33 + }, + "end": { + "line": 216, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 8258, + "end": 8264, + "loc": { + "start": { + "line": 216, + "column": 33 + }, + "end": { + "line": 216, + "column": 39 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "property": { + "type": "Identifier", + "start": 8265, + "end": 8271, + "loc": { + "start": { + "line": 216, + "column": 40 + }, + "end": { + "line": 216, + "column": 46 + }, + "identifierName": "height" + }, + "name": "height" + }, + "computed": false }, - "value": "none" + "operator": "+", + "right": { + "type": "StringLiteral", + "start": 8274, + "end": 8278, + "loc": { + "start": { + "line": 216, + "column": 49 + }, + "end": { + "line": 216, + "column": 53 + } + }, + "extra": { + "rawValue": "px", + "raw": "\"px\"" + }, + "value": "px" + } } } }, { "type": "ExpressionStatement", - "start": 6244, - "end": 6275, + "start": 8288, + "end": 8316, "loc": { "start": { - "line": 189, + "line": 217, "column": 8 }, "end": { - "line": 189, - "column": 39 + "line": 217, + "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 6244, - "end": 6274, + "start": 8288, + "end": 8315, "loc": { "start": { - "line": 189, + "line": 217, "column": 8 }, "end": { - "line": 189, - "column": 38 + "line": 217, + "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6244, - "end": 6270, + "start": 8288, + "end": 8311, "loc": { "start": { - "line": 189, + "line": 217, "column": 8 }, "end": { - "line": 189, - "column": 34 + "line": 217, + "column": 31 } }, "object": { "type": "MemberExpression", - "start": 6244, - "end": 6259, + "start": 8288, + "end": 8303, "loc": { "start": { - "line": 189, + "line": 217, "column": 8 }, "end": { - "line": 189, + "line": 217, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6244, - "end": 6253, + "start": 8288, + "end": 8297, "loc": { "start": { - "line": 189, + "line": 217, "column": 8 }, "end": { - "line": 189, + "line": 217, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 6244, - "end": 6248, + "start": 8288, + "end": 8292, "loc": { "start": { - "line": 189, + "line": 217, "column": 8 }, "end": { - "line": 189, + "line": 217, "column": 12 } } }, "property": { "type": "Identifier", - "start": 6249, - "end": 6253, + "start": 8293, + "end": 8297, "loc": { "start": { - "line": 189, + "line": 217, "column": 13 }, "end": { - "line": 189, + "line": 217, "column": 17 }, "identifierName": "_img" @@ -30733,15 +37007,15 @@ }, "property": { "type": "Identifier", - "start": 6254, - "end": 6259, + "start": 8298, + "end": 8303, "loc": { "start": { - "line": 189, + "line": 217, "column": 18 }, "end": { - "line": 189, + "line": 217, "column": 23 }, "identifierName": "style" @@ -30751,2014 +37025,2360 @@ "computed": false }, "property": { - "type": "StringLiteral", - "start": 6260, - "end": 6269, + "type": "Identifier", + "start": 8304, + "end": 8311, "loc": { "start": { - "line": 189, + "line": 217, "column": 24 }, "end": { - "line": 189, - "column": 33 - } - }, - "extra": { - "rawValue": "z-index", - "raw": "\"z-index\"" + "line": 217, + "column": 31 + }, + "identifierName": "opacity" }, - "value": "z-index" + "name": "opacity" }, - "computed": true + "computed": false }, "right": { "type": "NumericLiteral", - "start": 6273, - "end": 6274, + "start": 8314, + "end": 8315, "loc": { "start": { - "line": 189, - "column": 37 + "line": 217, + "column": 34 }, "end": { - "line": 189, - "column": 38 + "line": 217, + "column": 35 } }, "extra": { - "rawValue": 5, - "raw": "5" + "rawValue": 1, + "raw": "1" }, - "value": 5 + "value": 1 } } }, { "type": "ExpressionStatement", - "start": 6284, - "end": 6332, + "start": 8325, + "end": 8356, "loc": { "start": { - "line": 190, + "line": 218, "column": 8 }, "end": { - "line": 190, - "column": 56 + "line": 218, + "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 6284, - "end": 6331, + "start": 8325, + "end": 8355, "loc": { "start": { - "line": 190, + "line": 218, "column": 8 }, "end": { - "line": 190, - "column": 55 + "line": 218, + "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6284, - "end": 6304, + "start": 8325, + "end": 8340, "loc": { "start": { - "line": 190, + "line": 218, "column": 8 }, "end": { - "line": 190, - "column": 28 + "line": 218, + "column": 23 } }, "object": { "type": "MemberExpression", - "start": 6284, - "end": 6299, + "start": 8325, + "end": 8334, "loc": { "start": { - "line": 190, + "line": 218, "column": 8 }, "end": { - "line": 190, - "column": 23 + "line": 218, + "column": 17 } }, "object": { - "type": "MemberExpression", - "start": 6284, - "end": 6293, + "type": "ThisExpression", + "start": 8325, + "end": 8329, "loc": { "start": { - "line": 190, + "line": 218, "column": 8 }, "end": { - "line": 190, - "column": 17 - } - }, - "object": { - "type": "ThisExpression", - "start": 6284, - "end": 6288, - "loc": { - "start": { - "line": 190, - "column": 8 - }, - "end": { - "line": 190, - "column": 12 - } + "line": 218, + "column": 12 } - }, - "property": { - "type": "Identifier", - "start": 6289, - "end": 6293, - "loc": { - "start": { - "line": 190, - "column": 13 - }, - "end": { - "line": 190, - "column": 17 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false + } }, "property": { "type": "Identifier", - "start": 6294, - "end": 6299, + "start": 8330, + "end": 8334, "loc": { "start": { - "line": 190, - "column": 18 + "line": 218, + "column": 13 }, "end": { - "line": 190, - "column": 23 + "line": 218, + "column": 17 }, - "identifierName": "style" + "identifierName": "_img" }, - "name": "style" + "name": "_img" }, "computed": false }, "property": { "type": "Identifier", - "start": 6300, - "end": 6304, + "start": 8335, + "end": 8340, "loc": { "start": { - "line": 190, - "column": 24 + "line": 218, + "column": 18 }, "end": { - "line": 190, - "column": 28 + "line": 218, + "column": 23 }, - "identifierName": "left" + "identifierName": "width" }, - "name": "left" + "name": "width" }, "computed": false }, "right": { - "type": "BinaryExpression", - "start": 6307, - "end": 6331, + "type": "MemberExpression", + "start": 8343, + "end": 8355, "loc": { "start": { - "line": 190, - "column": 31 + "line": 218, + "column": 26 }, "end": { - "line": 190, - "column": 55 + "line": 218, + "column": 38 } }, - "left": { - "type": "MemberExpression", - "start": 6307, - "end": 6324, + "object": { + "type": "Identifier", + "start": 8343, + "end": 8349, "loc": { "start": { - "line": 190, - "column": 31 + "line": 218, + "column": 26 }, "end": { - "line": 190, - "column": 48 - } - }, - "object": { - "type": "Identifier", - "start": 6307, - "end": 6319, - "loc": { - "start": { - "line": 190, - "column": 31 - }, - "end": { - "line": 190, - "column": 43 - }, - "identifierName": "canvasOffset" - }, - "name": "canvasOffset" - }, - "property": { - "type": "Identifier", - "start": 6320, - "end": 6324, - "loc": { - "start": { - "line": 190, - "column": 44 - }, - "end": { - "line": 190, - "column": 48 - }, - "identifierName": "left" + "line": 218, + "column": 32 }, - "name": "left" + "identifierName": "canvas" }, - "computed": false + "name": "canvas" }, - "operator": "+", - "right": { - "type": "StringLiteral", - "start": 6327, - "end": 6331, + "property": { + "type": "Identifier", + "start": 8350, + "end": 8355, "loc": { "start": { - "line": 190, - "column": 51 + "line": 218, + "column": 33 }, "end": { - "line": 190, - "column": 55 - } - }, - "extra": { - "rawValue": "px", - "raw": "\"px\"" + "line": 218, + "column": 38 + }, + "identifierName": "width" }, - "value": "px" - } + "name": "width" + }, + "computed": false } } }, { "type": "ExpressionStatement", - "start": 6341, - "end": 6387, + "start": 8365, + "end": 8398, "loc": { "start": { - "line": 191, + "line": 219, "column": 8 }, "end": { - "line": 191, - "column": 54 + "line": 219, + "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 6341, - "end": 6386, + "start": 8365, + "end": 8397, "loc": { "start": { - "line": 191, + "line": 219, "column": 8 }, "end": { - "line": 191, - "column": 53 + "line": 219, + "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6341, - "end": 6360, + "start": 8365, + "end": 8381, "loc": { "start": { - "line": 191, + "line": 219, "column": 8 }, "end": { - "line": 191, - "column": 27 + "line": 219, + "column": 24 } }, "object": { "type": "MemberExpression", - "start": 6341, - "end": 6356, + "start": 8365, + "end": 8374, "loc": { "start": { - "line": 191, + "line": 219, "column": 8 }, "end": { - "line": 191, - "column": 23 + "line": 219, + "column": 17 } }, "object": { - "type": "MemberExpression", - "start": 6341, - "end": 6350, + "type": "ThisExpression", + "start": 8365, + "end": 8369, "loc": { "start": { - "line": 191, + "line": 219, "column": 8 }, "end": { - "line": 191, - "column": 17 - } - }, - "object": { - "type": "ThisExpression", - "start": 6341, - "end": 6345, - "loc": { - "start": { - "line": 191, - "column": 8 - }, - "end": { - "line": 191, - "column": 12 - } + "line": 219, + "column": 12 } - }, - "property": { - "type": "Identifier", - "start": 6346, - "end": 6350, - "loc": { - "start": { - "line": 191, - "column": 13 - }, - "end": { - "line": 191, - "column": 17 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false + } }, "property": { "type": "Identifier", - "start": 6351, - "end": 6356, + "start": 8370, + "end": 8374, "loc": { "start": { - "line": 191, - "column": 18 + "line": 219, + "column": 13 }, "end": { - "line": 191, - "column": 23 + "line": 219, + "column": 17 }, - "identifierName": "style" + "identifierName": "_img" }, - "name": "style" + "name": "_img" }, "computed": false }, "property": { "type": "Identifier", - "start": 6357, - "end": 6360, + "start": 8375, + "end": 8381, "loc": { "start": { - "line": 191, - "column": 24 + "line": 219, + "column": 18 }, "end": { - "line": 191, - "column": 27 + "line": 219, + "column": 24 }, - "identifierName": "top" + "identifierName": "height" }, - "name": "top" + "name": "height" }, "computed": false }, "right": { - "type": "BinaryExpression", - "start": 6363, - "end": 6386, + "type": "MemberExpression", + "start": 8384, + "end": 8397, "loc": { "start": { - "line": 191, - "column": 30 + "line": 219, + "column": 27 }, "end": { - "line": 191, - "column": 53 + "line": 219, + "column": 40 } }, - "left": { - "type": "MemberExpression", - "start": 6363, - "end": 6379, + "object": { + "type": "Identifier", + "start": 8384, + "end": 8390, "loc": { "start": { - "line": 191, - "column": 30 + "line": 219, + "column": 27 }, "end": { - "line": 191, - "column": 46 - } - }, - "object": { - "type": "Identifier", - "start": 6363, - "end": 6375, - "loc": { - "start": { - "line": 191, - "column": 30 - }, - "end": { - "line": 191, - "column": 42 - }, - "identifierName": "canvasOffset" - }, - "name": "canvasOffset" - }, - "property": { - "type": "Identifier", - "start": 6376, - "end": 6379, - "loc": { - "start": { - "line": 191, - "column": 43 - }, - "end": { - "line": 191, - "column": 46 - }, - "identifierName": "top" + "line": 219, + "column": 33 }, - "name": "top" + "identifierName": "canvas" }, - "computed": false + "name": "canvas" }, - "operator": "+", - "right": { - "type": "StringLiteral", - "start": 6382, - "end": 6386, + "property": { + "type": "Identifier", + "start": 8391, + "end": 8397, "loc": { "start": { - "line": 191, - "column": 49 + "line": 219, + "column": 34 }, "end": { - "line": 191, - "column": 53 - } - }, - "extra": { - "rawValue": "px", - "raw": "\"px\"" + "line": 219, + "column": 40 + }, + "identifierName": "height" }, - "value": "px" - } + "name": "height" + }, + "computed": false } } }, { "type": "ExpressionStatement", - "start": 6396, - "end": 6440, + "start": 8407, + "end": 8442, "loc": { "start": { - "line": 192, + "line": 220, "column": 8 }, "end": { - "line": 192, - "column": 52 + "line": 220, + "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 6396, - "end": 6439, + "start": 8407, + "end": 8441, "loc": { "start": { - "line": 192, + "line": 220, "column": 8 }, "end": { - "line": 192, - "column": 51 + "line": 220, + "column": 42 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6396, - "end": 6417, + "start": 8407, + "end": 8421, "loc": { "start": { - "line": 192, + "line": 220, "column": 8 }, "end": { - "line": 192, - "column": 29 + "line": 220, + "column": 22 } }, "object": { "type": "MemberExpression", - "start": 6396, - "end": 6411, + "start": 8407, + "end": 8416, "loc": { "start": { - "line": 192, + "line": 220, "column": 8 }, "end": { - "line": 192, - "column": 23 + "line": 220, + "column": 17 } }, "object": { - "type": "MemberExpression", - "start": 6396, - "end": 6405, + "type": "ThisExpression", + "start": 8407, + "end": 8411, "loc": { "start": { - "line": 192, + "line": 220, "column": 8 }, "end": { - "line": 192, - "column": 17 - } - }, - "object": { - "type": "ThisExpression", - "start": 6396, - "end": 6400, - "loc": { - "start": { - "line": 192, - "column": 8 - }, - "end": { - "line": 192, - "column": 12 - } + "line": 220, + "column": 12 } - }, - "property": { - "type": "Identifier", - "start": 6401, - "end": 6405, - "loc": { - "start": { - "line": 192, - "column": 13 - }, - "end": { - "line": 192, - "column": 17 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false + } }, "property": { "type": "Identifier", - "start": 6406, - "end": 6411, + "start": 8412, + "end": 8416, "loc": { "start": { - "line": 192, - "column": 18 + "line": 220, + "column": 13 }, "end": { - "line": 192, - "column": 23 + "line": 220, + "column": 17 }, - "identifierName": "style" + "identifierName": "_img" }, - "name": "style" + "name": "_img" }, "computed": false }, "property": { "type": "Identifier", - "start": 6412, - "end": 6417, + "start": 8417, + "end": 8421, "loc": { "start": { - "line": 192, - "column": 24 + "line": 220, + "column": 18 }, "end": { - "line": 192, - "column": 29 + "line": 220, + "column": 22 }, - "identifierName": "width" + "identifierName": "left" }, - "name": "width" + "name": "left" }, "computed": false }, "right": { - "type": "BinaryExpression", - "start": 6420, - "end": 6439, + "type": "MemberExpression", + "start": 8424, + "end": 8441, "loc": { "start": { - "line": 192, - "column": 32 + "line": 220, + "column": 25 }, "end": { - "line": 192, - "column": 51 + "line": 220, + "column": 42 } }, - "left": { - "type": "MemberExpression", - "start": 6420, - "end": 6432, + "object": { + "type": "Identifier", + "start": 8424, + "end": 8436, "loc": { "start": { - "line": 192, - "column": 32 + "line": 220, + "column": 25 }, "end": { - "line": 192, - "column": 44 - } - }, - "object": { - "type": "Identifier", - "start": 6420, - "end": 6426, - "loc": { - "start": { - "line": 192, - "column": 32 - }, - "end": { - "line": 192, - "column": 38 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "property": { - "type": "Identifier", - "start": 6427, - "end": 6432, - "loc": { - "start": { - "line": 192, - "column": 39 - }, - "end": { - "line": 192, - "column": 44 - }, - "identifierName": "width" + "line": 220, + "column": 37 }, - "name": "width" + "identifierName": "canvasOffset" }, - "computed": false + "name": "canvasOffset" }, - "operator": "+", - "right": { - "type": "StringLiteral", - "start": 6435, - "end": 6439, + "property": { + "type": "Identifier", + "start": 8437, + "end": 8441, "loc": { "start": { - "line": 192, - "column": 47 + "line": 220, + "column": 38 }, "end": { - "line": 192, - "column": 51 - } - }, - "extra": { - "rawValue": "px", - "raw": "\"px\"" + "line": 220, + "column": 42 + }, + "identifierName": "left" }, - "value": "px" - } + "name": "left" + }, + "computed": false } } }, { "type": "ExpressionStatement", - "start": 6449, - "end": 6495, + "start": 8451, + "end": 8484, "loc": { "start": { - "line": 193, + "line": 221, "column": 8 }, "end": { - "line": 193, - "column": 54 + "line": 221, + "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 6449, - "end": 6494, + "start": 8451, + "end": 8483, "loc": { "start": { - "line": 193, + "line": 221, "column": 8 }, "end": { - "line": 193, - "column": 53 + "line": 221, + "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6449, - "end": 6471, + "start": 8451, + "end": 8464, "loc": { "start": { - "line": 193, + "line": 221, "column": 8 }, "end": { - "line": 193, - "column": 30 + "line": 221, + "column": 21 } }, "object": { "type": "MemberExpression", - "start": 6449, - "end": 6464, + "start": 8451, + "end": 8460, "loc": { "start": { - "line": 193, + "line": 221, "column": 8 }, "end": { - "line": 193, - "column": 23 + "line": 221, + "column": 17 } }, "object": { - "type": "MemberExpression", - "start": 6449, - "end": 6458, + "type": "ThisExpression", + "start": 8451, + "end": 8455, "loc": { "start": { - "line": 193, + "line": 221, "column": 8 }, "end": { - "line": 193, - "column": 17 - } - }, - "object": { - "type": "ThisExpression", - "start": 6449, - "end": 6453, - "loc": { - "start": { - "line": 193, - "column": 8 - }, - "end": { - "line": 193, - "column": 12 - } + "line": 221, + "column": 12 } - }, - "property": { - "type": "Identifier", - "start": 6454, - "end": 6458, - "loc": { - "start": { - "line": 193, - "column": 13 - }, - "end": { - "line": 193, - "column": 17 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false + } }, "property": { "type": "Identifier", - "start": 6459, - "end": 6464, + "start": 8456, + "end": 8460, "loc": { "start": { - "line": 193, - "column": 18 + "line": 221, + "column": 13 }, "end": { - "line": 193, - "column": 23 + "line": 221, + "column": 17 }, - "identifierName": "style" + "identifierName": "_img" }, - "name": "style" + "name": "_img" }, "computed": false }, "property": { "type": "Identifier", - "start": 6465, - "end": 6471, + "start": 8461, + "end": 8464, "loc": { "start": { - "line": 193, - "column": 24 + "line": 221, + "column": 18 }, "end": { - "line": 193, - "column": 30 + "line": 221, + "column": 21 }, - "identifierName": "height" + "identifierName": "top" }, - "name": "height" + "name": "top" }, "computed": false }, "right": { - "type": "BinaryExpression", - "start": 6474, - "end": 6494, + "type": "MemberExpression", + "start": 8467, + "end": 8483, "loc": { "start": { - "line": 193, - "column": 33 + "line": 221, + "column": 24 }, "end": { - "line": 193, - "column": 53 + "line": 221, + "column": 40 } }, - "left": { - "type": "MemberExpression", - "start": 6474, - "end": 6487, + "object": { + "type": "Identifier", + "start": 8467, + "end": 8479, "loc": { "start": { - "line": 193, - "column": 33 + "line": 221, + "column": 24 }, "end": { - "line": 193, - "column": 46 - } - }, - "object": { - "type": "Identifier", - "start": 6474, - "end": 6480, - "loc": { - "start": { - "line": 193, - "column": 33 - }, - "end": { - "line": 193, - "column": 39 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "property": { - "type": "Identifier", - "start": 6481, - "end": 6487, - "loc": { - "start": { - "line": 193, - "column": 40 - }, - "end": { - "line": 193, - "column": 46 - }, - "identifierName": "height" + "line": 221, + "column": 36 }, - "name": "height" + "identifierName": "canvasOffset" }, - "computed": false + "name": "canvasOffset" }, - "operator": "+", - "right": { - "type": "StringLiteral", - "start": 6490, - "end": 6494, + "property": { + "type": "Identifier", + "start": 8480, + "end": 8483, "loc": { "start": { - "line": 193, - "column": 49 + "line": 221, + "column": 37 }, "end": { - "line": 193, - "column": 53 - } - }, - "extra": { - "rawValue": "px", - "raw": "\"px\"" + "line": 221, + "column": 40 + }, + "identifierName": "top" }, - "value": "px" - } + "name": "top" + }, + "computed": false } } }, { "type": "ExpressionStatement", - "start": 6504, - "end": 6532, + "start": 8493, + "end": 8555, "loc": { "start": { - "line": 194, + "line": 222, "column": 8 }, "end": { - "line": 194, - "column": 36 + "line": 222, + "column": 70 } }, "expression": { - "type": "AssignmentExpression", - "start": 6504, - "end": 6531, + "type": "CallExpression", + "start": 8493, + "end": 8554, "loc": { "start": { - "line": 194, + "line": 222, "column": 8 }, "end": { - "line": 194, - "column": 35 + "line": 222, + "column": 69 } }, - "operator": "=", - "left": { + "callee": { "type": "MemberExpression", - "start": 6504, - "end": 6527, + "start": 8493, + "end": 8523, "loc": { "start": { - "line": 194, + "line": 222, "column": 8 }, "end": { - "line": 194, - "column": 31 + "line": 222, + "column": 38 } }, "object": { "type": "MemberExpression", - "start": 6504, - "end": 6519, + "start": 8493, + "end": 8510, "loc": { "start": { - "line": 194, + "line": 222, "column": 8 }, "end": { - "line": 194, - "column": 23 + "line": 222, + "column": 25 } }, "object": { - "type": "MemberExpression", - "start": 6504, - "end": 6513, + "type": "Identifier", + "start": 8493, + "end": 8499, "loc": { "start": { - "line": 194, + "line": 222, "column": 8 }, "end": { - "line": 194, - "column": 17 - } - }, - "object": { - "type": "ThisExpression", - "start": 6504, - "end": 6508, - "loc": { - "start": { - "line": 194, - "column": 8 - }, - "end": { - "line": 194, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 6509, - "end": 6513, - "loc": { - "start": { - "line": 194, - "column": 13 - }, - "end": { - "line": 194, - "column": 17 - }, - "identifierName": "_img" + "line": 222, + "column": 14 }, - "name": "_img" + "identifierName": "canvas" }, - "computed": false + "name": "canvas" }, "property": { "type": "Identifier", - "start": 6514, - "end": 6519, + "start": 8500, + "end": 8510, "loc": { "start": { - "line": 194, - "column": 18 + "line": 222, + "column": 15 }, "end": { - "line": 194, - "column": 23 + "line": 222, + "column": 25 }, - "identifierName": "style" + "identifierName": "parentNode" }, - "name": "style" + "name": "parentNode" }, "computed": false }, "property": { "type": "Identifier", - "start": 6520, - "end": 6527, + "start": 8511, + "end": 8523, "loc": { "start": { - "line": 194, - "column": 24 + "line": 222, + "column": 26 }, "end": { - "line": 194, - "column": 31 + "line": 222, + "column": 38 }, - "identifierName": "opacity" + "identifierName": "insertBefore" }, - "name": "opacity" + "name": "insertBefore" }, "computed": false }, - "right": { - "type": "NumericLiteral", - "start": 6530, - "end": 6531, - "loc": { - "start": { - "line": 194, - "column": 34 + "arguments": [ + { + "type": "MemberExpression", + "start": 8524, + "end": 8533, + "loc": { + "start": { + "line": 222, + "column": 39 + }, + "end": { + "line": 222, + "column": 48 + } }, - "end": { - "line": 194, - "column": 35 - } - }, - "extra": { - "rawValue": 1, - "raw": "1" + "object": { + "type": "ThisExpression", + "start": 8524, + "end": 8528, + "loc": { + "start": { + "line": 222, + "column": 39 + }, + "end": { + "line": 222, + "column": 43 + } + } + }, + "property": { + "type": "Identifier", + "start": 8529, + "end": 8533, + "loc": { + "start": { + "line": 222, + "column": 44 + }, + "end": { + "line": 222, + "column": 48 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false }, - "value": 1 - } + { + "type": "MemberExpression", + "start": 8535, + "end": 8553, + "loc": { + "start": { + "line": 222, + "column": 50 + }, + "end": { + "line": 222, + "column": 68 + } + }, + "object": { + "type": "Identifier", + "start": 8535, + "end": 8541, + "loc": { + "start": { + "line": 222, + "column": 50 + }, + "end": { + "line": 222, + "column": 56 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "property": { + "type": "Identifier", + "start": 8542, + "end": 8553, + "loc": { + "start": { + "line": 222, + "column": 57 + }, + "end": { + "line": 222, + "column": 68 + }, + "identifierName": "nextSibling" + }, + "name": "nextSibling" + }, + "computed": false + } + ] } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 8567, + "end": 8973, + "loc": { + "start": { + "line": 225, + "column": 4 + }, + "end": { + "line": 239, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 8567, + "end": 8578, + "loc": { + "start": { + "line": 225, + "column": 4 + }, + "end": { + "line": 225, + "column": 15 + }, + "identifierName": "_cancelFade" + }, + "name": "_cancelFade" + }, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 8581, + "end": 8973, + "loc": { + "start": { + "line": 225, + "column": 18 }, + "end": { + "line": 239, + "column": 5 + } + }, + "body": [ { - "type": "ExpressionStatement", - "start": 6541, - "end": 6572, + "type": "IfStatement", + "start": 8591, + "end": 8638, "loc": { "start": { - "line": 195, + "line": 226, "column": 8 }, "end": { - "line": 195, - "column": 39 + "line": 228, + "column": 9 } }, - "expression": { - "type": "AssignmentExpression", - "start": 6541, - "end": 6571, + "test": { + "type": "UnaryExpression", + "start": 8595, + "end": 8605, "loc": { "start": { - "line": 195, - "column": 8 + "line": 226, + "column": 12 }, "end": { - "line": 195, - "column": 38 + "line": 226, + "column": 22 } }, - "operator": "=", - "left": { + "operator": "!", + "prefix": true, + "argument": { "type": "MemberExpression", - "start": 6541, - "end": 6556, + "start": 8596, + "end": 8605, "loc": { "start": { - "line": 195, - "column": 8 + "line": 226, + "column": 13 }, "end": { - "line": 195, - "column": 23 + "line": 226, + "column": 22 } }, "object": { - "type": "MemberExpression", - "start": 6541, - "end": 6550, + "type": "ThisExpression", + "start": 8596, + "end": 8600, "loc": { "start": { - "line": 195, - "column": 8 + "line": 226, + "column": 13 }, "end": { - "line": 195, + "line": 226, "column": 17 } - }, - "object": { - "type": "ThisExpression", - "start": 6541, - "end": 6545, - "loc": { - "start": { - "line": 195, - "column": 8 - }, - "end": { - "line": 195, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 6546, - "end": 6550, - "loc": { - "start": { - "line": 195, - "column": 13 - }, - "end": { - "line": 195, - "column": 17 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false + } }, "property": { "type": "Identifier", - "start": 6551, - "end": 6556, + "start": 8601, + "end": 8605, "loc": { "start": { - "line": 195, + "line": 226, "column": 18 }, "end": { - "line": 195, - "column": 23 + "line": 226, + "column": 22 }, - "identifierName": "width" + "identifierName": "_img" }, - "name": "width" + "name": "_img" }, "computed": false }, - "right": { - "type": "MemberExpression", - "start": 6559, - "end": 6571, - "loc": { - "start": { - "line": 195, - "column": 26 - }, - "end": { - "line": 195, - "column": 38 - } - }, - "object": { - "type": "Identifier", - "start": 6559, - "end": 6565, - "loc": { - "start": { - "line": 195, - "column": 26 - }, - "end": { - "line": 195, - "column": 32 - }, - "identifierName": "canvas" - }, - "name": "canvas" + "extra": { + "parenthesizedArgument": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 8607, + "end": 8638, + "loc": { + "start": { + "line": 226, + "column": 24 }, - "property": { - "type": "Identifier", - "start": 6566, - "end": 6571, + "end": { + "line": 228, + "column": 9 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 8621, + "end": 8628, "loc": { "start": { - "line": 195, - "column": 33 + "line": 227, + "column": 12 }, "end": { - "line": 195, - "column": 38 - }, - "identifierName": "width" + "line": 227, + "column": 19 + } }, - "name": "width" - }, - "computed": false - } - } + "argument": null + } + ], + "directives": [] + }, + "alternate": null }, { - "type": "ExpressionStatement", - "start": 6581, - "end": 6614, + "type": "IfStatement", + "start": 8647, + "end": 8759, "loc": { "start": { - "line": 196, + "line": 229, "column": 8 }, "end": { - "line": 196, - "column": 41 + "line": 232, + "column": 9 } }, - "expression": { - "type": "AssignmentExpression", - "start": 6581, - "end": 6613, + "test": { + "type": "MemberExpression", + "start": 8651, + "end": 8666, "loc": { "start": { - "line": 196, - "column": 8 + "line": 229, + "column": 12 }, "end": { - "line": 196, - "column": 40 + "line": 229, + "column": 27 } }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 6581, - "end": 6597, + "object": { + "type": "ThisExpression", + "start": 8651, + "end": 8655, "loc": { "start": { - "line": 196, - "column": 8 + "line": 229, + "column": 12 }, "end": { - "line": 196, - "column": 24 + "line": 229, + "column": 16 } + } + }, + "property": { + "type": "Identifier", + "start": 8656, + "end": 8666, + "loc": { + "start": { + "line": 229, + "column": 17 + }, + "end": { + "line": 229, + "column": 27 + }, + "identifierName": "_pInterval" }, - "object": { - "type": "MemberExpression", - "start": 6581, - "end": 6590, + "name": "_pInterval" + }, + "computed": false + }, + "consequent": { + "type": "BlockStatement", + "start": 8668, + "end": 8759, + "loc": { + "start": { + "line": 229, + "column": 29 + }, + "end": { + "line": 232, + "column": 9 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 8682, + "end": 8713, "loc": { "start": { - "line": 196, - "column": 8 + "line": 230, + "column": 12 }, "end": { - "line": 196, - "column": 17 + "line": 230, + "column": 43 } }, - "object": { - "type": "ThisExpression", - "start": 6581, - "end": 6585, + "expression": { + "type": "CallExpression", + "start": 8682, + "end": 8712, "loc": { "start": { - "line": 196, - "column": 8 - }, - "end": { - "line": 196, + "line": 230, "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 6586, - "end": 6590, - "loc": { - "start": { - "line": 196, - "column": 13 }, "end": { - "line": 196, - "column": 17 + "line": 230, + "column": 42 + } + }, + "callee": { + "type": "Identifier", + "start": 8682, + "end": 8695, + "loc": { + "start": { + "line": 230, + "column": 12 + }, + "end": { + "line": 230, + "column": 25 + }, + "identifierName": "clearInterval" }, - "identifierName": "_img" + "name": "clearInterval" }, - "name": "_img" - }, - "computed": false + "arguments": [ + { + "type": "MemberExpression", + "start": 8696, + "end": 8711, + "loc": { + "start": { + "line": 230, + "column": 26 + }, + "end": { + "line": 230, + "column": 41 + } + }, + "object": { + "type": "ThisExpression", + "start": 8696, + "end": 8700, + "loc": { + "start": { + "line": 230, + "column": 26 + }, + "end": { + "line": 230, + "column": 30 + } + } + }, + "property": { + "type": "Identifier", + "start": 8701, + "end": 8711, + "loc": { + "start": { + "line": 230, + "column": 31 + }, + "end": { + "line": 230, + "column": 41 + }, + "identifierName": "_pInterval" + }, + "name": "_pInterval" + }, + "computed": false + } + ] + } }, - "property": { - "type": "Identifier", - "start": 6591, - "end": 6597, + { + "type": "ExpressionStatement", + "start": 8726, + "end": 8749, "loc": { "start": { - "line": 196, - "column": 18 + "line": 231, + "column": 12 }, "end": { - "line": 196, - "column": 24 - }, - "identifierName": "height" + "line": 231, + "column": 35 + } }, - "name": "height" + "expression": { + "type": "AssignmentExpression", + "start": 8726, + "end": 8748, + "loc": { + "start": { + "line": 231, + "column": 12 + }, + "end": { + "line": 231, + "column": 34 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 8726, + "end": 8741, + "loc": { + "start": { + "line": 231, + "column": 12 + }, + "end": { + "line": 231, + "column": 27 + } + }, + "object": { + "type": "ThisExpression", + "start": 8726, + "end": 8730, + "loc": { + "start": { + "line": 231, + "column": 12 + }, + "end": { + "line": 231, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 8731, + "end": 8741, + "loc": { + "start": { + "line": 231, + "column": 17 + }, + "end": { + "line": 231, + "column": 27 + }, + "identifierName": "_pInterval" + }, + "name": "_pInterval" + }, + "computed": false + }, + "right": { + "type": "NullLiteral", + "start": 8744, + "end": 8748, + "loc": { + "start": { + "line": 231, + "column": 30 + }, + "end": { + "line": 231, + "column": 34 + } + } + } + } + } + ], + "directives": [] + }, + "alternate": null + }, + { + "type": "IfStatement", + "start": 8768, + "end": 8883, + "loc": { + "start": { + "line": 233, + "column": 8 + }, + "end": { + "line": 236, + "column": 9 + } + }, + "test": { + "type": "MemberExpression", + "start": 8772, + "end": 8788, + "loc": { + "start": { + "line": 233, + "column": 12 }, - "computed": false + "end": { + "line": 233, + "column": 28 + } }, - "right": { - "type": "MemberExpression", - "start": 6600, - "end": 6613, + "object": { + "type": "ThisExpression", + "start": 8772, + "end": 8776, "loc": { "start": { - "line": 196, - "column": 27 + "line": 233, + "column": 12 }, "end": { - "line": 196, - "column": 40 + "line": 233, + "column": 16 } + } + }, + "property": { + "type": "Identifier", + "start": 8777, + "end": 8788, + "loc": { + "start": { + "line": 233, + "column": 17 + }, + "end": { + "line": 233, + "column": 28 + }, + "identifierName": "_pInterval2" }, - "object": { - "type": "Identifier", - "start": 6600, - "end": 6606, + "name": "_pInterval2" + }, + "computed": false + }, + "consequent": { + "type": "BlockStatement", + "start": 8790, + "end": 8883, + "loc": { + "start": { + "line": 233, + "column": 30 + }, + "end": { + "line": 236, + "column": 9 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 8804, + "end": 8836, "loc": { "start": { - "line": 196, - "column": 27 + "line": 234, + "column": 12 }, "end": { - "line": 196, - "column": 33 - }, - "identifierName": "canvas" + "line": 234, + "column": 44 + } }, - "name": "canvas" + "expression": { + "type": "CallExpression", + "start": 8804, + "end": 8835, + "loc": { + "start": { + "line": 234, + "column": 12 + }, + "end": { + "line": 234, + "column": 43 + } + }, + "callee": { + "type": "Identifier", + "start": 8804, + "end": 8817, + "loc": { + "start": { + "line": 234, + "column": 12 + }, + "end": { + "line": 234, + "column": 25 + }, + "identifierName": "clearInterval" + }, + "name": "clearInterval" + }, + "arguments": [ + { + "type": "MemberExpression", + "start": 8818, + "end": 8834, + "loc": { + "start": { + "line": 234, + "column": 26 + }, + "end": { + "line": 234, + "column": 42 + } + }, + "object": { + "type": "ThisExpression", + "start": 8818, + "end": 8822, + "loc": { + "start": { + "line": 234, + "column": 26 + }, + "end": { + "line": 234, + "column": 30 + } + } + }, + "property": { + "type": "Identifier", + "start": 8823, + "end": 8834, + "loc": { + "start": { + "line": 234, + "column": 31 + }, + "end": { + "line": 234, + "column": 42 + }, + "identifierName": "_pInterval2" + }, + "name": "_pInterval2" + }, + "computed": false + } + ] + } }, - "property": { - "type": "Identifier", - "start": 6607, - "end": 6613, + { + "type": "ExpressionStatement", + "start": 8849, + "end": 8873, "loc": { "start": { - "line": 196, - "column": 34 + "line": 235, + "column": 12 }, "end": { - "line": 196, - "column": 40 + "line": 235, + "column": 36 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 8849, + "end": 8872, + "loc": { + "start": { + "line": 235, + "column": 12 + }, + "end": { + "line": 235, + "column": 35 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 8849, + "end": 8865, + "loc": { + "start": { + "line": 235, + "column": 12 + }, + "end": { + "line": 235, + "column": 28 + } + }, + "object": { + "type": "ThisExpression", + "start": 8849, + "end": 8853, + "loc": { + "start": { + "line": 235, + "column": 12 + }, + "end": { + "line": 235, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 8854, + "end": 8865, + "loc": { + "start": { + "line": 235, + "column": 17 + }, + "end": { + "line": 235, + "column": 28 + }, + "identifierName": "_pInterval2" + }, + "name": "_pInterval2" + }, + "computed": false }, - "identifierName": "height" - }, - "name": "height" - }, - "computed": false - } - } + "right": { + "type": "NullLiteral", + "start": 8868, + "end": 8872, + "loc": { + "start": { + "line": 235, + "column": 31 + }, + "end": { + "line": 235, + "column": 35 + } + } + } + } + } + ], + "directives": [] + }, + "alternate": null }, { "type": "ExpressionStatement", - "start": 6623, - "end": 6658, + "start": 8892, + "end": 8920, "loc": { "start": { - "line": 197, + "line": 237, "column": 8 }, "end": { - "line": 197, - "column": 43 + "line": 237, + "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 6623, - "end": 6657, + "start": 8892, + "end": 8919, "loc": { "start": { - "line": 197, + "line": 237, "column": 8 }, "end": { - "line": 197, - "column": 42 + "line": 237, + "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6623, - "end": 6637, + "start": 8892, + "end": 8915, "loc": { "start": { - "line": 197, + "line": 237, "column": 8 }, "end": { - "line": 197, - "column": 22 + "line": 237, + "column": 31 } }, "object": { "type": "MemberExpression", - "start": 6623, - "end": 6632, + "start": 8892, + "end": 8907, "loc": { "start": { - "line": 197, + "line": 237, "column": 8 }, "end": { - "line": 197, - "column": 17 + "line": 237, + "column": 23 } }, "object": { - "type": "ThisExpression", - "start": 6623, - "end": 6627, + "type": "MemberExpression", + "start": 8892, + "end": 8901, "loc": { "start": { - "line": 197, + "line": 237, "column": 8 }, "end": { - "line": 197, - "column": 12 + "line": 237, + "column": 17 } - } + }, + "object": { + "type": "ThisExpression", + "start": 8892, + "end": 8896, + "loc": { + "start": { + "line": 237, + "column": 8 + }, + "end": { + "line": 237, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 8897, + "end": 8901, + "loc": { + "start": { + "line": 237, + "column": 13 + }, + "end": { + "line": 237, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false }, "property": { "type": "Identifier", - "start": 6628, - "end": 6632, + "start": 8902, + "end": 8907, "loc": { "start": { - "line": 197, - "column": 13 + "line": 237, + "column": 18 }, "end": { - "line": 197, - "column": 17 + "line": 237, + "column": 23 }, - "identifierName": "_img" + "identifierName": "style" }, - "name": "_img" + "name": "style" }, "computed": false }, "property": { "type": "Identifier", - "start": 6633, - "end": 6637, + "start": 8908, + "end": 8915, "loc": { "start": { - "line": 197, - "column": 18 + "line": 237, + "column": 24 }, "end": { - "line": 197, - "column": 22 + "line": 237, + "column": 31 }, - "identifierName": "left" + "identifierName": "opacity" }, - "name": "left" + "name": "opacity" }, "computed": false }, "right": { - "type": "MemberExpression", - "start": 6640, - "end": 6657, + "type": "NumericLiteral", + "start": 8918, + "end": 8919, "loc": { "start": { - "line": 197, - "column": 25 + "line": 237, + "column": 34 }, "end": { - "line": 197, - "column": 42 + "line": 237, + "column": 35 } }, - "object": { - "type": "Identifier", - "start": 6640, - "end": 6652, - "loc": { - "start": { - "line": 197, - "column": 25 - }, - "end": { - "line": 197, - "column": 37 - }, - "identifierName": "canvasOffset" - }, - "name": "canvasOffset" - }, - "property": { - "type": "Identifier", - "start": 6653, - "end": 6657, - "loc": { - "start": { - "line": 197, - "column": 38 - }, - "end": { - "line": 197, - "column": 42 - }, - "identifierName": "left" - }, - "name": "left" + "extra": { + "rawValue": 0, + "raw": "0" }, - "computed": false + "value": 0 } } }, { "type": "ExpressionStatement", - "start": 6667, - "end": 6700, + "start": 8929, + "end": 8967, "loc": { "start": { - "line": 198, + "line": 238, "column": 8 }, "end": { - "line": 198, - "column": 41 + "line": 238, + "column": 46 } }, "expression": { "type": "AssignmentExpression", - "start": 6667, - "end": 6699, + "start": 8929, + "end": 8966, "loc": { "start": { - "line": 198, + "line": 238, "column": 8 }, "end": { - "line": 198, - "column": 40 + "line": 238, + "column": 45 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6667, - "end": 6680, + "start": 8929, + "end": 8955, "loc": { "start": { - "line": 198, + "line": 238, "column": 8 }, "end": { - "line": 198, - "column": 21 + "line": 238, + "column": 34 } }, "object": { "type": "MemberExpression", - "start": 6667, - "end": 6676, + "start": 8929, + "end": 8944, "loc": { "start": { - "line": 198, + "line": 238, "column": 8 }, "end": { - "line": 198, - "column": 17 + "line": 238, + "column": 23 } }, "object": { - "type": "ThisExpression", - "start": 6667, - "end": 6671, + "type": "MemberExpression", + "start": 8929, + "end": 8938, "loc": { "start": { - "line": 198, + "line": 238, "column": 8 }, "end": { - "line": 198, - "column": 12 + "line": 238, + "column": 17 } - } + }, + "object": { + "type": "ThisExpression", + "start": 8929, + "end": 8933, + "loc": { + "start": { + "line": 238, + "column": 8 + }, + "end": { + "line": 238, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 8934, + "end": 8938, + "loc": { + "start": { + "line": 238, + "column": 13 + }, + "end": { + "line": 238, + "column": 17 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false }, "property": { "type": "Identifier", - "start": 6672, - "end": 6676, + "start": 8939, + "end": 8944, "loc": { "start": { - "line": 198, - "column": 13 + "line": 238, + "column": 18 }, "end": { - "line": 198, - "column": 17 + "line": 238, + "column": 23 }, - "identifierName": "_img" + "identifierName": "style" }, - "name": "_img" + "name": "style" }, "computed": false }, "property": { "type": "Identifier", - "start": 6677, - "end": 6680, + "start": 8945, + "end": 8955, "loc": { "start": { - "line": 198, - "column": 18 + "line": 238, + "column": 24 }, "end": { - "line": 198, - "column": 21 + "line": 238, + "column": 34 }, - "identifierName": "top" + "identifierName": "visibility" }, - "name": "top" + "name": "visibility" }, "computed": false }, "right": { - "type": "MemberExpression", - "start": 6683, - "end": 6699, + "type": "StringLiteral", + "start": 8958, + "end": 8966, "loc": { "start": { - "line": 198, - "column": 24 + "line": 238, + "column": 37 }, "end": { - "line": 198, - "column": 40 + "line": 238, + "column": 45 } }, - "object": { - "type": "Identifier", - "start": 6683, - "end": 6695, - "loc": { - "start": { - "line": 198, - "column": 24 - }, - "end": { - "line": 198, - "column": 36 - }, - "identifierName": "canvasOffset" - }, - "name": "canvasOffset" - }, - "property": { - "type": "Identifier", - "start": 6696, - "end": 6699, - "loc": { - "start": { - "line": 198, - "column": 37 - }, - "end": { - "line": 198, - "column": 40 - }, - "identifierName": "top" - }, - "name": "top" + "extra": { + "rawValue": "hidden", + "raw": "\"hidden\"" }, - "computed": false + "value": "hidden" } } + } + ], + "directives": [], + "trailingComments": null + }, + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Sets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n ", + "start": 8979, + "end": 9144, + "loc": { + "start": { + "line": 241, + "column": 4 + }, + "end": { + "line": 245, + "column": 7 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 9149, + "end": 9222, + "loc": { + "start": { + "line": 246, + "column": 4 + }, + "end": { + "line": 248, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9153, + "end": 9163, + "loc": { + "start": { + "line": 246, + "column": 8 + }, + "end": { + "line": 246, + "column": 18 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" + }, + "kind": "set", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 9164, + "end": 9174, + "loc": { + "start": { + "line": 246, + "column": 19 + }, + "end": { + "line": 246, + "column": 29 + }, + "identifierName": "pbrEnabled" }, + "name": "pbrEnabled" + } + ], + "body": { + "type": "BlockStatement", + "start": 9176, + "end": 9222, + "loc": { + "start": { + "line": 246, + "column": 31 + }, + "end": { + "line": 248, + "column": 5 + } + }, + "body": [ { "type": "ExpressionStatement", - "start": 6709, - "end": 6771, + "start": 9186, + "end": 9216, "loc": { "start": { - "line": 199, + "line": 247, "column": 8 }, "end": { - "line": 199, - "column": 70 + "line": 247, + "column": 38 } }, "expression": { - "type": "CallExpression", - "start": 6709, - "end": 6770, + "type": "AssignmentExpression", + "start": 9186, + "end": 9215, "loc": { "start": { - "line": 199, + "line": 247, "column": 8 }, "end": { - "line": 199, - "column": 69 + "line": 247, + "column": 37 } }, - "callee": { + "operator": "=", + "left": { "type": "MemberExpression", - "start": 6709, - "end": 6739, + "start": 9186, + "end": 9202, "loc": { "start": { - "line": 199, + "line": 247, "column": 8 }, "end": { - "line": 199, - "column": 38 + "line": 247, + "column": 24 } }, "object": { - "type": "MemberExpression", - "start": 6709, - "end": 6726, + "type": "ThisExpression", + "start": 9186, + "end": 9190, "loc": { "start": { - "line": 199, + "line": 247, "column": 8 }, "end": { - "line": 199, - "column": 25 + "line": 247, + "column": 12 } - }, - "object": { - "type": "Identifier", - "start": 6709, - "end": 6715, - "loc": { - "start": { - "line": 199, - "column": 8 - }, - "end": { - "line": 199, - "column": 14 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "property": { - "type": "Identifier", - "start": 6716, - "end": 6726, - "loc": { - "start": { - "line": 199, - "column": 15 - }, - "end": { - "line": 199, - "column": 25 - }, - "identifierName": "parentNode" - }, - "name": "parentNode" - }, - "computed": false + } }, "property": { "type": "Identifier", - "start": 6727, - "end": 6739, + "start": 9191, + "end": 9202, "loc": { "start": { - "line": 199, - "column": 26 + "line": 247, + "column": 13 }, "end": { - "line": 199, - "column": 38 + "line": 247, + "column": 24 }, - "identifierName": "insertBefore" + "identifierName": "_pbrEnabled" }, - "name": "insertBefore" + "name": "_pbrEnabled" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 9205, + "end": 9215, + "loc": { + "start": { + "line": 247, + "column": 27 + }, + "end": { + "line": 247, + "column": 37 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" + } + } + } + ], + "directives": [], + "trailingComments": null + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Sets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n ", + "start": 8979, + "end": 9144, + "loc": { + "start": { + "line": 241, + "column": 4 + }, + "end": { + "line": 245, + "column": 7 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Gets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n ", + "start": 9228, + "end": 9393, + "loc": { + "start": { + "line": 250, + "column": 4 + }, + "end": { + "line": 254, + "column": 7 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 9398, + "end": 9454, + "loc": { + "start": { + "line": 255, + "column": 4 + }, + "end": { + "line": 257, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9402, + "end": 9412, + "loc": { + "start": { + "line": 255, + "column": 8 + }, + "end": { + "line": 255, + "column": 18 + }, + "identifierName": "pbrEnabled" + }, + "name": "pbrEnabled" + }, + "kind": "get", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 9415, + "end": 9454, + "loc": { + "start": { + "line": 255, + "column": 21 + }, + "end": { + "line": 257, + "column": 5 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 9425, + "end": 9448, + "loc": { + "start": { + "line": 256, + "column": 8 + }, + "end": { + "line": 256, + "column": 31 + } + }, + "argument": { + "type": "MemberExpression", + "start": 9432, + "end": 9448, + "loc": { + "start": { + "line": 256, + "column": 15 }, - "computed": false + "end": { + "line": 256, + "column": 31 + } }, - "arguments": [ - { - "type": "MemberExpression", - "start": 6740, - "end": 6749, - "loc": { - "start": { - "line": 199, - "column": 39 - }, - "end": { - "line": 199, - "column": 48 - } + "object": { + "type": "ThisExpression", + "start": 9432, + "end": 9436, + "loc": { + "start": { + "line": 256, + "column": 15 }, - "object": { - "type": "ThisExpression", - "start": 6740, - "end": 6744, - "loc": { - "start": { - "line": 199, - "column": 39 - }, - "end": { - "line": 199, - "column": 43 - } - } + "end": { + "line": 256, + "column": 19 + } + } + }, + "property": { + "type": "Identifier", + "start": 9437, + "end": 9448, + "loc": { + "start": { + "line": 256, + "column": 20 }, - "property": { - "type": "Identifier", - "start": 6745, - "end": 6749, - "loc": { - "start": { - "line": 199, - "column": 44 - }, - "end": { - "line": 199, - "column": 48 - }, - "identifierName": "_img" - }, - "name": "_img" + "end": { + "line": 256, + "column": 31 }, - "computed": false + "identifierName": "_pbrEnabled" }, - { - "type": "MemberExpression", - "start": 6751, - "end": 6769, - "loc": { - "start": { - "line": 199, - "column": 50 - }, - "end": { - "line": 199, - "column": 68 - } - }, - "object": { - "type": "Identifier", - "start": 6751, - "end": 6757, - "loc": { - "start": { - "line": 199, - "column": 50 - }, - "end": { - "line": 199, - "column": 56 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "property": { - "type": "Identifier", - "start": 6758, - "end": 6769, - "loc": { - "start": { - "line": 199, - "column": 57 - }, - "end": { - "line": 199, - "column": 68 - }, - "identifierName": "nextSibling" - }, - "name": "nextSibling" - }, - "computed": false - } - ] + "name": "_pbrEnabled" + }, + "computed": false } } ], - "directives": [] - } + "directives": [], + "trailingComments": null + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Gets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n ", + "start": 9228, + "end": 9393, + "loc": { + "start": { + "line": 250, + "column": 4 + }, + "end": { + "line": 254, + "column": 7 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Sets whether to enable scalable ambient occlusion (SAO) when the camera stops moving.\n *\n * @return {Boolean} Whether SAO will be enabled.\n ", + "start": 9460, + "end": 9625, + "loc": { + "start": { + "line": 259, + "column": 4 + }, + "end": { + "line": 263, + "column": 7 + } + } + } + ] }, { "type": "ClassMethod", - "start": 6783, - "end": 7065, + "start": 9630, + "end": 9703, "loc": { "start": { - "line": 202, + "line": 264, "column": 4 }, "end": { - "line": 212, + "line": 266, "column": 5 } }, @@ -32766,780 +39386,716 @@ "computed": false, "key": { "type": "Identifier", - "start": 6783, - "end": 6794, + "start": 9634, + "end": 9644, "loc": { "start": { - "line": 202, - "column": 4 + "line": 264, + "column": 8 }, "end": { - "line": 202, - "column": 15 + "line": 264, + "column": 18 }, - "identifierName": "_cancelFade" + "identifierName": "saoEnabled" }, - "name": "_cancelFade" + "name": "saoEnabled" }, - "kind": "method", + "kind": "set", "id": null, "generator": false, "expression": false, "async": false, - "params": [], + "params": [ + { + "type": "Identifier", + "start": 9645, + "end": 9655, + "loc": { + "start": { + "line": 264, + "column": 19 + }, + "end": { + "line": 264, + "column": 29 + }, + "identifierName": "saoEnabled" + }, + "name": "saoEnabled" + } + ], "body": { "type": "BlockStatement", - "start": 6797, - "end": 7065, + "start": 9657, + "end": 9703, "loc": { "start": { - "line": 202, - "column": 18 + "line": 264, + "column": 31 }, "end": { - "line": 212, + "line": 266, "column": 5 } }, "body": [ { - "type": "IfStatement", - "start": 6807, - "end": 6854, + "type": "ExpressionStatement", + "start": 9667, + "end": 9697, "loc": { "start": { - "line": 203, + "line": 265, "column": 8 }, "end": { - "line": 205, - "column": 9 + "line": 265, + "column": 38 } }, - "test": { - "type": "UnaryExpression", - "start": 6811, - "end": 6821, + "expression": { + "type": "AssignmentExpression", + "start": 9667, + "end": 9696, "loc": { "start": { - "line": 203, - "column": 12 + "line": 265, + "column": 8 }, "end": { - "line": 203, - "column": 22 + "line": 265, + "column": 37 } }, - "operator": "!", - "prefix": true, - "argument": { + "operator": "=", + "left": { "type": "MemberExpression", - "start": 6812, - "end": 6821, + "start": 9667, + "end": 9683, "loc": { "start": { - "line": 203, - "column": 13 + "line": 265, + "column": 8 }, "end": { - "line": 203, - "column": 22 + "line": 265, + "column": 24 } }, "object": { "type": "ThisExpression", - "start": 6812, - "end": 6816, + "start": 9667, + "end": 9671, "loc": { "start": { - "line": 203, - "column": 13 + "line": 265, + "column": 8 }, "end": { - "line": 203, - "column": 17 + "line": 265, + "column": 12 } } }, "property": { "type": "Identifier", - "start": 6817, - "end": 6821, + "start": 9672, + "end": 9683, "loc": { "start": { - "line": 203, - "column": 18 + "line": 265, + "column": 13 }, "end": { - "line": 203, - "column": 22 + "line": 265, + "column": 24 }, - "identifierName": "_img" + "identifierName": "_saoEnabled" }, - "name": "_img" + "name": "_saoEnabled" }, "computed": false }, - "extra": { - "parenthesizedArgument": false + "right": { + "type": "Identifier", + "start": 9686, + "end": 9696, + "loc": { + "start": { + "line": 265, + "column": 27 + }, + "end": { + "line": 265, + "column": 37 + }, + "identifierName": "saoEnabled" + }, + "name": "saoEnabled" } + } + } + ], + "directives": [], + "trailingComments": null + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Sets whether to enable scalable ambient occlusion (SAO) when the camera stops moving.\n *\n * @return {Boolean} Whether SAO will be enabled.\n ", + "start": 9460, + "end": 9625, + "loc": { + "start": { + "line": 259, + "column": 4 }, - "consequent": { - "type": "BlockStatement", - "start": 6823, - "end": 6854, - "loc": { - "start": { - "line": 203, - "column": 24 - }, - "end": { - "line": 205, - "column": 9 - } - }, - "body": [ - { - "type": "ReturnStatement", - "start": 6837, - "end": 6844, - "loc": { - "start": { - "line": 204, - "column": 12 - }, - "end": { - "line": 204, - "column": 19 - } - }, - "argument": null - } - ], - "directives": [] + "end": { + "line": 263, + "column": 7 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Gets whether the FastNavPlugin enables SAO when switching to quality rendering.\n *\n * @return {Boolean} Whether SAO will be enabled.\n ", + "start": 9709, + "end": 9868, + "loc": { + "start": { + "line": 268, + "column": 4 }, - "alternate": null + "end": { + "line": 272, + "column": 7 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 9873, + "end": 9929, + "loc": { + "start": { + "line": 273, + "column": 4 + }, + "end": { + "line": 275, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 9877, + "end": 9887, + "loc": { + "start": { + "line": 273, + "column": 8 + }, + "end": { + "line": 273, + "column": 18 + }, + "identifierName": "saoEnabled" + }, + "name": "saoEnabled" + }, + "kind": "get", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 9890, + "end": 9929, + "loc": { + "start": { + "line": 273, + "column": 21 }, + "end": { + "line": 275, + "column": 5 + } + }, + "body": [ { - "type": "IfStatement", - "start": 6863, - "end": 6975, + "type": "ReturnStatement", + "start": 9900, + "end": 9923, "loc": { "start": { - "line": 206, + "line": 274, "column": 8 }, "end": { - "line": 209, - "column": 9 + "line": 274, + "column": 31 } }, - "test": { + "argument": { "type": "MemberExpression", - "start": 6867, - "end": 6882, - "loc": { - "start": { - "line": 206, - "column": 12 - }, - "end": { - "line": 206, - "column": 27 - } - }, - "object": { - "type": "ThisExpression", - "start": 6867, - "end": 6871, - "loc": { - "start": { - "line": 206, - "column": 12 - }, - "end": { - "line": 206, - "column": 16 - } - } - }, - "property": { - "type": "Identifier", - "start": 6872, - "end": 6882, - "loc": { - "start": { - "line": 206, - "column": 17 - }, - "end": { - "line": 206, - "column": 27 - }, - "identifierName": "_pInterval" - }, - "name": "_pInterval" - }, - "computed": false - }, - "consequent": { - "type": "BlockStatement", - "start": 6884, - "end": 6975, + "start": 9907, + "end": 9923, "loc": { "start": { - "line": 206, - "column": 29 - }, - "end": { - "line": 209, - "column": 9 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 6898, - "end": 6929, - "loc": { - "start": { - "line": 207, - "column": 12 - }, - "end": { - "line": 207, - "column": 43 - } - }, - "expression": { - "type": "CallExpression", - "start": 6898, - "end": 6928, - "loc": { - "start": { - "line": 207, - "column": 12 - }, - "end": { - "line": 207, - "column": 42 - } - }, - "callee": { - "type": "Identifier", - "start": 6898, - "end": 6911, - "loc": { - "start": { - "line": 207, - "column": 12 - }, - "end": { - "line": 207, - "column": 25 - }, - "identifierName": "clearInterval" - }, - "name": "clearInterval" - }, - "arguments": [ - { - "type": "MemberExpression", - "start": 6912, - "end": 6927, - "loc": { - "start": { - "line": 207, - "column": 26 - }, - "end": { - "line": 207, - "column": 41 - } - }, - "object": { - "type": "ThisExpression", - "start": 6912, - "end": 6916, - "loc": { - "start": { - "line": 207, - "column": 26 - }, - "end": { - "line": 207, - "column": 30 - } - } - }, - "property": { - "type": "Identifier", - "start": 6917, - "end": 6927, - "loc": { - "start": { - "line": 207, - "column": 31 - }, - "end": { - "line": 207, - "column": 41 - }, - "identifierName": "_pInterval" - }, - "name": "_pInterval" - }, - "computed": false - } - ] - } - }, - { - "type": "ExpressionStatement", - "start": 6942, - "end": 6965, - "loc": { - "start": { - "line": 208, - "column": 12 - }, - "end": { - "line": 208, - "column": 35 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 6942, - "end": 6964, - "loc": { - "start": { - "line": 208, - "column": 12 - }, - "end": { - "line": 208, - "column": 34 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 6942, - "end": 6957, - "loc": { - "start": { - "line": 208, - "column": 12 - }, - "end": { - "line": 208, - "column": 27 - } - }, - "object": { - "type": "ThisExpression", - "start": 6942, - "end": 6946, - "loc": { - "start": { - "line": 208, - "column": 12 - }, - "end": { - "line": 208, - "column": 16 - } - } - }, - "property": { - "type": "Identifier", - "start": 6947, - "end": 6957, - "loc": { - "start": { - "line": 208, - "column": 17 - }, - "end": { - "line": 208, - "column": 27 - }, - "identifierName": "_pInterval" - }, - "name": "_pInterval" - }, - "computed": false - }, - "right": { - "type": "NullLiteral", - "start": 6960, - "end": 6964, - "loc": { - "start": { - "line": 208, - "column": 30 - }, - "end": { - "line": 208, - "column": 34 - } - } - } + "line": 274, + "column": 15 + }, + "end": { + "line": 274, + "column": 31 + } + }, + "object": { + "type": "ThisExpression", + "start": 9907, + "end": 9911, + "loc": { + "start": { + "line": 274, + "column": 15 + }, + "end": { + "line": 274, + "column": 19 } } - ], - "directives": [] + }, + "property": { + "type": "Identifier", + "start": 9912, + "end": 9923, + "loc": { + "start": { + "line": 274, + "column": 20 + }, + "end": { + "line": 274, + "column": 31 + }, + "identifierName": "_saoEnabled" + }, + "name": "_saoEnabled" + }, + "computed": false + } + } + ], + "directives": [], + "trailingComments": null + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Gets whether the FastNavPlugin enables SAO when switching to quality rendering.\n *\n * @return {Boolean} Whether SAO will be enabled.\n ", + "start": 9709, + "end": 9868, + "loc": { + "start": { + "line": 268, + "column": 4 }, - "alternate": null + "end": { + "line": 272, + "column": 7 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Sets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n ", + "start": 9935, + "end": 10093, + "loc": { + "start": { + "line": 277, + "column": 4 + }, + "end": { + "line": 281, + "column": 7 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 10098, + "end": 10179, + "loc": { + "start": { + "line": 282, + "column": 4 + }, + "end": { + "line": 284, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 10102, + "end": 10114, + "loc": { + "start": { + "line": 282, + "column": 8 + }, + "end": { + "line": 282, + "column": 20 + }, + "identifierName": "edgesEnabled" + }, + "name": "edgesEnabled" + }, + "kind": "set", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 10115, + "end": 10127, + "loc": { + "start": { + "line": 282, + "column": 21 + }, + "end": { + "line": 282, + "column": 33 + }, + "identifierName": "edgesEnabled" + }, + "name": "edgesEnabled" + } + ], + "body": { + "type": "BlockStatement", + "start": 10129, + "end": 10179, + "loc": { + "start": { + "line": 282, + "column": 35 }, + "end": { + "line": 284, + "column": 5 + } + }, + "body": [ { "type": "ExpressionStatement", - "start": 6984, - "end": 7012, + "start": 10139, + "end": 10173, "loc": { "start": { - "line": 210, + "line": 283, "column": 8 }, "end": { - "line": 210, - "column": 36 + "line": 283, + "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 6984, - "end": 7011, + "start": 10139, + "end": 10172, "loc": { "start": { - "line": 210, + "line": 283, "column": 8 }, "end": { - "line": 210, - "column": 35 + "line": 283, + "column": 41 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6984, - "end": 7007, + "start": 10139, + "end": 10157, "loc": { "start": { - "line": 210, + "line": 283, "column": 8 }, "end": { - "line": 210, - "column": 31 + "line": 283, + "column": 26 } }, "object": { - "type": "MemberExpression", - "start": 6984, - "end": 6999, + "type": "ThisExpression", + "start": 10139, + "end": 10143, "loc": { "start": { - "line": 210, + "line": 283, "column": 8 }, "end": { - "line": 210, - "column": 23 + "line": 283, + "column": 12 } - }, - "object": { - "type": "MemberExpression", - "start": 6984, - "end": 6993, - "loc": { - "start": { - "line": 210, - "column": 8 - }, - "end": { - "line": 210, - "column": 17 - } - }, - "object": { - "type": "ThisExpression", - "start": 6984, - "end": 6988, - "loc": { - "start": { - "line": 210, - "column": 8 - }, - "end": { - "line": 210, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 6989, - "end": 6993, - "loc": { - "start": { - "line": 210, - "column": 13 - }, - "end": { - "line": 210, - "column": 17 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 6994, - "end": 6999, - "loc": { - "start": { - "line": 210, - "column": 18 - }, - "end": { - "line": 210, - "column": 23 - }, - "identifierName": "style" - }, - "name": "style" - }, - "computed": false + } }, "property": { "type": "Identifier", - "start": 7000, - "end": 7007, + "start": 10144, + "end": 10157, "loc": { "start": { - "line": 210, - "column": 24 + "line": 283, + "column": 13 }, "end": { - "line": 210, - "column": 31 + "line": 283, + "column": 26 }, - "identifierName": "opacity" + "identifierName": "_edgesEnabled" }, - "name": "opacity" + "name": "_edgesEnabled" }, "computed": false }, "right": { - "type": "NumericLiteral", - "start": 7010, - "end": 7011, + "type": "Identifier", + "start": 10160, + "end": 10172, "loc": { "start": { - "line": 210, - "column": 34 + "line": 283, + "column": 29 }, "end": { - "line": 210, - "column": 35 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" + "line": 283, + "column": 41 + }, + "identifierName": "edgesEnabled" }, - "value": 0 + "name": "edgesEnabled" } } + } + ], + "directives": [], + "trailingComments": null + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Sets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n ", + "start": 9935, + "end": 10093, + "loc": { + "start": { + "line": 277, + "column": 4 + }, + "end": { + "line": 281, + "column": 7 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Gets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n ", + "start": 10185, + "end": 10343, + "loc": { + "start": { + "line": 286, + "column": 4 + }, + "end": { + "line": 290, + "column": 7 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 10348, + "end": 10408, + "loc": { + "start": { + "line": 291, + "column": 4 + }, + "end": { + "line": 293, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 10352, + "end": 10364, + "loc": { + "start": { + "line": 291, + "column": 8 + }, + "end": { + "line": 291, + "column": 20 + }, + "identifierName": "edgesEnabled" + }, + "name": "edgesEnabled" + }, + "kind": "get", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 10367, + "end": 10408, + "loc": { + "start": { + "line": 291, + "column": 23 }, + "end": { + "line": 293, + "column": 5 + } + }, + "body": [ { - "type": "ExpressionStatement", - "start": 7021, - "end": 7059, + "type": "ReturnStatement", + "start": 10377, + "end": 10402, "loc": { "start": { - "line": 211, + "line": 292, "column": 8 }, "end": { - "line": 211, - "column": 46 + "line": 292, + "column": 33 } }, - "expression": { - "type": "AssignmentExpression", - "start": 7021, - "end": 7058, + "argument": { + "type": "MemberExpression", + "start": 10384, + "end": 10402, "loc": { "start": { - "line": 211, - "column": 8 + "line": 292, + "column": 15 }, "end": { - "line": 211, - "column": 45 + "line": 292, + "column": 33 } }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 7021, - "end": 7047, + "object": { + "type": "ThisExpression", + "start": 10384, + "end": 10388, "loc": { "start": { - "line": 211, - "column": 8 + "line": 292, + "column": 15 }, "end": { - "line": 211, - "column": 34 + "line": 292, + "column": 19 } - }, - "object": { - "type": "MemberExpression", - "start": 7021, - "end": 7036, - "loc": { - "start": { - "line": 211, - "column": 8 - }, - "end": { - "line": 211, - "column": 23 - } - }, - "object": { - "type": "MemberExpression", - "start": 7021, - "end": 7030, - "loc": { - "start": { - "line": 211, - "column": 8 - }, - "end": { - "line": 211, - "column": 17 - } - }, - "object": { - "type": "ThisExpression", - "start": 7021, - "end": 7025, - "loc": { - "start": { - "line": 211, - "column": 8 - }, - "end": { - "line": 211, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 7026, - "end": 7030, - "loc": { - "start": { - "line": 211, - "column": 13 - }, - "end": { - "line": 211, - "column": 17 - }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 7031, - "end": 7036, - "loc": { - "start": { - "line": 211, - "column": 18 - }, - "end": { - "line": 211, - "column": 23 - }, - "identifierName": "style" - }, - "name": "style" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 7037, - "end": 7047, - "loc": { - "start": { - "line": 211, - "column": 24 - }, - "end": { - "line": 211, - "column": 34 - }, - "identifierName": "visibility" - }, - "name": "visibility" - }, - "computed": false + } }, - "right": { - "type": "StringLiteral", - "start": 7050, - "end": 7058, + "property": { + "type": "Identifier", + "start": 10389, + "end": 10402, "loc": { "start": { - "line": 211, - "column": 37 + "line": 292, + "column": 20 }, "end": { - "line": 211, - "column": 45 - } - }, - "extra": { - "rawValue": "hidden", - "raw": "\"hidden\"" + "line": 292, + "column": 33 + }, + "identifierName": "_edgesEnabled" }, - "value": "hidden" - } + "name": "_edgesEnabled" + }, + "computed": false } } ], "directives": [], "trailingComments": null }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Gets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n ", + "start": 10185, + "end": 10343, + "loc": { + "start": { + "line": 286, + "column": 4 + }, + "end": { + "line": 290, + "column": 7 + } + } + } + ], "trailingComments": [ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 7071, - "end": 7098, + "start": 10414, + "end": 10441, "loc": { "start": { - "line": 214, + "line": 295, "column": 4 }, "end": { - "line": 216, + "line": 297, "column": 7 } } @@ -33548,15 +40104,15 @@ }, { "type": "ClassMethod", - "start": 7103, - "end": 7247, + "start": 10446, + "end": 10590, "loc": { "start": { - "line": 217, + "line": 298, "column": 4 }, "end": { - "line": 223, + "line": 304, "column": 5 } }, @@ -33564,15 +40120,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7103, - "end": 7107, + "start": 10446, + "end": 10450, "loc": { "start": { - "line": 217, + "line": 298, "column": 4 }, "end": { - "line": 217, + "line": 298, "column": 8 }, "identifierName": "send" @@ -33588,15 +40144,15 @@ "params": [ { "type": "Identifier", - "start": 7108, - "end": 7112, + "start": 10451, + "end": 10455, "loc": { "start": { - "line": 217, + "line": 298, "column": 9 }, "end": { - "line": 217, + "line": 298, "column": 13 }, "identifierName": "name" @@ -33605,15 +40161,15 @@ }, { "type": "Identifier", - "start": 7114, - "end": 7119, + "start": 10457, + "end": 10462, "loc": { "start": { - "line": 217, + "line": 298, "column": 15 }, "end": { - "line": 217, + "line": 298, "column": 20 }, "identifierName": "value" @@ -33623,44 +40179,44 @@ ], "body": { "type": "BlockStatement", - "start": 7121, - "end": 7247, + "start": 10464, + "end": 10590, "loc": { "start": { - "line": 217, + "line": 298, "column": 22 }, "end": { - "line": 223, + "line": 304, "column": 5 } }, "body": [ { "type": "SwitchStatement", - "start": 7131, - "end": 7241, + "start": 10474, + "end": 10584, "loc": { "start": { - "line": 218, + "line": 299, "column": 8 }, "end": { - "line": 222, + "line": 303, "column": 9 } }, "discriminant": { "type": "Identifier", - "start": 7139, - "end": 7143, + "start": 10482, + "end": 10486, "loc": { "start": { - "line": 218, + "line": 299, "column": 16 }, "end": { - "line": 218, + "line": 299, "column": 20 }, "identifierName": "name" @@ -33670,87 +40226,87 @@ "cases": [ { "type": "SwitchCase", - "start": 7159, - "end": 7231, + "start": 10502, + "end": 10574, "loc": { "start": { - "line": 219, + "line": 300, "column": 12 }, "end": { - "line": 221, + "line": 302, "column": 22 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 7189, - "end": 7208, + "start": 10532, + "end": 10551, "loc": { "start": { - "line": 220, + "line": 301, "column": 16 }, "end": { - "line": 220, + "line": 301, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 7189, - "end": 7207, + "start": 10532, + "end": 10550, "loc": { "start": { - "line": 220, + "line": 301, "column": 16 }, "end": { - "line": 220, + "line": 301, "column": 34 } }, "callee": { "type": "MemberExpression", - "start": 7189, - "end": 7205, + "start": 10532, + "end": 10548, "loc": { "start": { - "line": 220, + "line": 301, "column": 16 }, "end": { - "line": 220, + "line": 301, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 7189, - "end": 7193, + "start": 10532, + "end": 10536, "loc": { "start": { - "line": 220, + "line": 301, "column": 16 }, "end": { - "line": 220, + "line": 301, "column": 20 } } }, "property": { "type": "Identifier", - "start": 7194, - "end": 7205, + "start": 10537, + "end": 10548, "loc": { "start": { - "line": 220, + "line": 301, "column": 21 }, "end": { - "line": 220, + "line": 301, "column": 32 }, "identifierName": "_cancelFade" @@ -33764,15 +40320,15 @@ }, { "type": "BreakStatement", - "start": 7225, - "end": 7231, + "start": 10568, + "end": 10574, "loc": { "start": { - "line": 221, + "line": 302, "column": 16 }, "end": { - "line": 221, + "line": 302, "column": 22 } }, @@ -33781,15 +40337,15 @@ ], "test": { "type": "StringLiteral", - "start": 7164, - "end": 7171, + "start": 10507, + "end": 10514, "loc": { "start": { - "line": 219, + "line": 300, "column": 17 }, "end": { - "line": 219, + "line": 300, "column": 24 } }, @@ -33810,15 +40366,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 7071, - "end": 7098, + "start": 10414, + "end": 10441, "loc": { "start": { - "line": 214, + "line": 295, "column": 4 }, "end": { - "line": 216, + "line": 297, "column": 7 } } @@ -33828,15 +40384,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this plugin.\n ", - "start": 7253, - "end": 7293, + "start": 10596, + "end": 10636, "loc": { "start": { - "line": 225, + "line": 306, "column": 4 }, "end": { - "line": 227, + "line": 308, "column": 7 } } @@ -33845,15 +40401,15 @@ }, { "type": "ClassMethod", - "start": 7298, - "end": 7800, + "start": 10641, + "end": 11186, "loc": { "start": { - "line": 228, + "line": 309, "column": 4 }, "end": { - "line": 239, + "line": 322, "column": 5 } }, @@ -33861,15 +40417,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7298, - "end": 7305, + "start": 10641, + "end": 10648, "loc": { "start": { - "line": 228, + "line": 309, "column": 4 }, "end": { - "line": 228, + "line": 309, "column": 11 }, "identifierName": "destroy" @@ -33885,87 +40441,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 7308, - "end": 7800, + "start": 10651, + "end": 11186, "loc": { "start": { - "line": 228, + "line": 309, "column": 14 }, "end": { - "line": 239, + "line": 322, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 7318, - "end": 7337, + "start": 10661, + "end": 10680, "loc": { "start": { - "line": 229, + "line": 310, "column": 8 }, "end": { - "line": 229, + "line": 310, "column": 27 } }, "expression": { "type": "CallExpression", - "start": 7318, - "end": 7336, + "start": 10661, + "end": 10679, "loc": { "start": { - "line": 229, + "line": 310, "column": 8 }, "end": { - "line": 229, + "line": 310, "column": 26 } }, "callee": { "type": "MemberExpression", - "start": 7318, - "end": 7334, + "start": 10661, + "end": 10677, "loc": { "start": { - "line": 229, + "line": 310, "column": 8 }, "end": { - "line": 229, + "line": 310, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 7318, - "end": 7322, + "start": 10661, + "end": 10665, "loc": { "start": { - "line": 229, + "line": 310, "column": 8 }, "end": { - "line": 229, + "line": 310, "column": 12 } } }, "property": { "type": "Identifier", - "start": 7323, - "end": 7334, + "start": 10666, + "end": 10677, "loc": { "start": { - "line": 229, + "line": 310, "column": 13 }, "end": { - "line": 229, + "line": 310, "column": 24 }, "identifierName": "_cancelFade" @@ -33979,114 +40535,114 @@ }, { "type": "ExpressionStatement", - "start": 7346, - "end": 7397, + "start": 10689, + "end": 10740, "loc": { "start": { - "line": 230, + "line": 311, "column": 8 }, "end": { - "line": 230, + "line": 311, "column": 59 } }, "expression": { "type": "CallExpression", - "start": 7346, - "end": 7396, + "start": 10689, + "end": 10739, "loc": { "start": { - "line": 230, + "line": 311, "column": 8 }, "end": { - "line": 230, + "line": 311, "column": 58 } }, "callee": { "type": "MemberExpression", - "start": 7346, - "end": 7374, + "start": 10689, + "end": 10717, "loc": { "start": { - "line": 230, + "line": 311, "column": 8 }, "end": { - "line": 230, + "line": 311, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 7346, - "end": 7370, + "start": 10689, + "end": 10713, "loc": { "start": { - "line": 230, + "line": 311, "column": 8 }, "end": { - "line": 230, + "line": 311, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 7346, - "end": 7363, + "start": 10689, + "end": 10706, "loc": { "start": { - "line": 230, + "line": 311, "column": 8 }, "end": { - "line": 230, + "line": 311, "column": 25 } }, "object": { "type": "MemberExpression", - "start": 7346, - "end": 7357, + "start": 10689, + "end": 10700, "loc": { "start": { - "line": 230, + "line": 311, "column": 8 }, "end": { - "line": 230, + "line": 311, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 7346, - "end": 7350, + "start": 10689, + "end": 10693, "loc": { "start": { - "line": 230, + "line": 311, "column": 8 }, "end": { - "line": 230, + "line": 311, "column": 12 } } }, "property": { "type": "Identifier", - "start": 7351, - "end": 7357, + "start": 10694, + "end": 10700, "loc": { "start": { - "line": 230, + "line": 311, "column": 13 }, "end": { - "line": 230, + "line": 311, "column": 19 }, "identifierName": "viewer" @@ -34097,15 +40653,15 @@ }, "property": { "type": "Identifier", - "start": 7358, - "end": 7363, + "start": 10701, + "end": 10706, "loc": { "start": { - "line": 230, + "line": 311, "column": 20 }, "end": { - "line": 230, + "line": 311, "column": 25 }, "identifierName": "scene" @@ -34116,15 +40672,15 @@ }, "property": { "type": "Identifier", - "start": 7364, - "end": 7370, + "start": 10707, + "end": 10713, "loc": { "start": { - "line": 230, + "line": 311, "column": 26 }, "end": { - "line": 230, + "line": 311, "column": 32 }, "identifierName": "camera" @@ -34135,15 +40691,15 @@ }, "property": { "type": "Identifier", - "start": 7371, - "end": 7374, + "start": 10714, + "end": 10717, "loc": { "start": { - "line": 230, + "line": 311, "column": 33 }, "end": { - "line": 230, + "line": 311, "column": 36 }, "identifierName": "off" @@ -34155,44 +40711,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 7375, - "end": 7395, + "start": 10718, + "end": 10738, "loc": { "start": { - "line": 230, + "line": 311, "column": 37 }, "end": { - "line": 230, + "line": 311, "column": 57 } }, "object": { "type": "ThisExpression", - "start": 7375, - "end": 7379, + "start": 10718, + "end": 10722, "loc": { "start": { - "line": 230, + "line": 311, "column": 37 }, "end": { - "line": 230, + "line": 311, "column": 41 } } }, "property": { "type": "Identifier", - "start": 7380, - "end": 7395, + "start": 10723, + "end": 10738, "loc": { "start": { - "line": 230, + "line": 311, "column": 42 }, "end": { - "line": 230, + "line": 311, "column": 57 }, "identifierName": "_onCameraMatrix" @@ -34206,100 +40762,100 @@ }, { "type": "ExpressionStatement", - "start": 7406, - "end": 7447, + "start": 10749, + "end": 10790, "loc": { "start": { - "line": 231, + "line": 312, "column": 8 }, "end": { - "line": 231, + "line": 312, "column": 49 } }, "expression": { "type": "CallExpression", - "start": 7406, - "end": 7446, + "start": 10749, + "end": 10789, "loc": { "start": { - "line": 231, + "line": 312, "column": 8 }, "end": { - "line": 231, + "line": 312, "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 7406, - "end": 7427, + "start": 10749, + "end": 10770, "loc": { "start": { - "line": 231, + "line": 312, "column": 8 }, "end": { - "line": 231, + "line": 312, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 7406, - "end": 7423, + "start": 10749, + "end": 10766, "loc": { "start": { - "line": 231, + "line": 312, "column": 8 }, "end": { - "line": 231, + "line": 312, "column": 25 } }, "object": { "type": "MemberExpression", - "start": 7406, - "end": 7417, + "start": 10749, + "end": 10760, "loc": { "start": { - "line": 231, + "line": 312, "column": 8 }, "end": { - "line": 231, + "line": 312, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 7406, - "end": 7410, + "start": 10749, + "end": 10753, "loc": { "start": { - "line": 231, + "line": 312, "column": 8 }, "end": { - "line": 231, + "line": 312, "column": 12 } } }, "property": { "type": "Identifier", - "start": 7411, - "end": 7417, + "start": 10754, + "end": 10760, "loc": { "start": { - "line": 231, + "line": 312, "column": 13 }, "end": { - "line": 231, + "line": 312, "column": 19 }, "identifierName": "viewer" @@ -34310,15 +40866,15 @@ }, "property": { "type": "Identifier", - "start": 7418, - "end": 7423, + "start": 10761, + "end": 10766, "loc": { "start": { - "line": 231, + "line": 312, "column": 20 }, "end": { - "line": 231, + "line": 312, "column": 25 }, "identifierName": "scene" @@ -34329,15 +40885,15 @@ }, "property": { "type": "Identifier", - "start": 7424, - "end": 7427, + "start": 10767, + "end": 10770, "loc": { "start": { - "line": 231, + "line": 312, "column": 26 }, "end": { - "line": 231, + "line": 312, "column": 29 }, "identifierName": "off" @@ -34349,44 +40905,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 7428, - "end": 7445, + "start": 10771, + "end": 10788, "loc": { "start": { - "line": 231, + "line": 312, "column": 30 }, "end": { - "line": 231, + "line": 312, "column": 47 } }, "object": { "type": "ThisExpression", - "start": 7428, - "end": 7432, + "start": 10771, + "end": 10775, "loc": { "start": { - "line": 231, + "line": 312, "column": 30 }, "end": { - "line": 231, + "line": 312, "column": 34 } } }, "property": { "type": "Identifier", - "start": 7433, - "end": 7445, + "start": 10776, + "end": 10788, "loc": { "start": { - "line": 231, + "line": 312, "column": 35 }, "end": { - "line": 231, + "line": 312, "column": 47 }, "identifierName": "_onSceneTick" @@ -34400,100 +40956,100 @@ }, { "type": "ExpressionStatement", - "start": 7456, - "end": 7509, + "start": 10799, + "end": 10852, "loc": { "start": { - "line": 232, + "line": 313, "column": 8 }, "end": { - "line": 232, + "line": 313, "column": 61 } }, "expression": { "type": "CallExpression", - "start": 7456, - "end": 7508, + "start": 10799, + "end": 10851, "loc": { "start": { - "line": 232, + "line": 313, "column": 8 }, "end": { - "line": 232, + "line": 313, "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 7456, - "end": 7477, + "start": 10799, + "end": 10820, "loc": { "start": { - "line": 232, + "line": 313, "column": 8 }, "end": { - "line": 232, + "line": 313, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 7456, - "end": 7473, + "start": 10799, + "end": 10816, "loc": { "start": { - "line": 232, + "line": 313, "column": 8 }, "end": { - "line": 232, + "line": 313, "column": 25 } }, "object": { "type": "MemberExpression", - "start": 7456, - "end": 7467, + "start": 10799, + "end": 10810, "loc": { "start": { - "line": 232, + "line": 313, "column": 8 }, "end": { - "line": 232, + "line": 313, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 7456, - "end": 7460, + "start": 10799, + "end": 10803, "loc": { "start": { - "line": 232, + "line": 313, "column": 8 }, "end": { - "line": 232, + "line": 313, "column": 12 } } }, "property": { "type": "Identifier", - "start": 7461, - "end": 7467, + "start": 10804, + "end": 10810, "loc": { "start": { - "line": 232, + "line": 313, "column": 13 }, "end": { - "line": 232, + "line": 313, "column": 19 }, "identifierName": "viewer" @@ -34504,15 +41060,15 @@ }, "property": { "type": "Identifier", - "start": 7468, - "end": 7473, + "start": 10811, + "end": 10816, "loc": { "start": { - "line": 232, + "line": 313, "column": 20 }, "end": { - "line": 232, + "line": 313, "column": 25 }, "identifierName": "scene" @@ -34523,15 +41079,15 @@ }, "property": { "type": "Identifier", - "start": 7474, - "end": 7477, + "start": 10817, + "end": 10820, "loc": { "start": { - "line": 232, + "line": 313, "column": 26 }, "end": { - "line": 232, + "line": 313, "column": 29 }, "identifierName": "off" @@ -34543,44 +41099,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 7478, - "end": 7507, + "start": 10821, + "end": 10850, "loc": { "start": { - "line": 232, + "line": 313, "column": 30 }, "end": { - "line": 232, + "line": 313, "column": 59 } }, "object": { "type": "ThisExpression", - "start": 7478, - "end": 7482, + "start": 10821, + "end": 10825, "loc": { "start": { - "line": 232, + "line": 313, "column": 30 }, "end": { - "line": 232, + "line": 313, "column": 34 } } }, "property": { "type": "Identifier", - "start": 7483, - "end": 7507, + "start": 10826, + "end": 10850, "loc": { "start": { - "line": 232, + "line": 313, "column": 35 }, "end": { - "line": 232, + "line": 313, "column": 59 }, "identifierName": "_onSceneObjectVisibility" @@ -34594,114 +41150,114 @@ }, { "type": "ExpressionStatement", - "start": 7518, - "end": 7570, + "start": 10861, + "end": 10913, "loc": { "start": { - "line": 233, + "line": 314, "column": 8 }, "end": { - "line": 233, + "line": 314, "column": 60 } }, "expression": { "type": "CallExpression", - "start": 7518, - "end": 7569, + "start": 10861, + "end": 10912, "loc": { "start": { - "line": 233, + "line": 314, "column": 8 }, "end": { - "line": 233, + "line": 314, "column": 59 } }, "callee": { "type": "MemberExpression", - "start": 7518, - "end": 7545, + "start": 10861, + "end": 10888, "loc": { "start": { - "line": 233, + "line": 314, "column": 8 }, "end": { - "line": 233, + "line": 314, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 7518, - "end": 7541, + "start": 10861, + "end": 10884, "loc": { "start": { - "line": 233, + "line": 314, "column": 8 }, "end": { - "line": 233, + "line": 314, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 7518, - "end": 7535, + "start": 10861, + "end": 10878, "loc": { "start": { - "line": 233, + "line": 314, "column": 8 }, "end": { - "line": 233, + "line": 314, "column": 25 } }, "object": { "type": "MemberExpression", - "start": 7518, - "end": 7529, + "start": 10861, + "end": 10872, "loc": { "start": { - "line": 233, + "line": 314, "column": 8 }, "end": { - "line": 233, + "line": 314, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 7518, - "end": 7522, + "start": 10861, + "end": 10865, "loc": { "start": { - "line": 233, + "line": 314, "column": 8 }, "end": { - "line": 233, + "line": 314, "column": 12 } } }, "property": { "type": "Identifier", - "start": 7523, - "end": 7529, + "start": 10866, + "end": 10872, "loc": { "start": { - "line": 233, + "line": 314, "column": 13 }, "end": { - "line": 233, + "line": 314, "column": 19 }, "identifierName": "viewer" @@ -34712,15 +41268,15 @@ }, "property": { "type": "Identifier", - "start": 7530, - "end": 7535, + "start": 10873, + "end": 10878, "loc": { "start": { - "line": 233, + "line": 314, "column": 20 }, "end": { - "line": 233, + "line": 314, "column": 25 }, "identifierName": "scene" @@ -34731,15 +41287,15 @@ }, "property": { "type": "Identifier", - "start": 7536, - "end": 7541, + "start": 10879, + "end": 10884, "loc": { "start": { - "line": 233, + "line": 314, "column": 26 }, "end": { - "line": 233, + "line": 314, "column": 31 }, "identifierName": "input" @@ -34750,15 +41306,15 @@ }, "property": { "type": "Identifier", - "start": 7542, - "end": 7545, + "start": 10885, + "end": 10888, "loc": { "start": { - "line": 233, + "line": 314, "column": 32 }, "end": { - "line": 233, + "line": 314, "column": 35 }, "identifierName": "off" @@ -34770,44 +41326,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 7546, - "end": 7568, + "start": 10889, + "end": 10911, "loc": { "start": { - "line": 233, + "line": 314, "column": 36 }, "end": { - "line": 233, + "line": 314, "column": 58 } }, "object": { "type": "ThisExpression", - "start": 7546, - "end": 7550, + "start": 10889, + "end": 10893, "loc": { "start": { - "line": 233, + "line": 314, "column": 36 }, "end": { - "line": 233, + "line": 314, "column": 40 } } }, "property": { "type": "Identifier", - "start": 7551, - "end": 7568, + "start": 10894, + "end": 10911, "loc": { "start": { - "line": 233, + "line": 314, "column": 41 }, "end": { - "line": 233, + "line": 314, "column": 58 }, "identifierName": "_onSceneMouseDown" @@ -34821,114 +41377,114 @@ }, { "type": "ExpressionStatement", - "start": 7579, - "end": 7629, + "start": 10922, + "end": 10972, "loc": { "start": { - "line": 234, + "line": 315, "column": 8 }, "end": { - "line": 234, + "line": 315, "column": 58 } }, "expression": { "type": "CallExpression", - "start": 7579, - "end": 7628, + "start": 10922, + "end": 10971, "loc": { "start": { - "line": 234, + "line": 315, "column": 8 }, "end": { - "line": 234, + "line": 315, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 7579, - "end": 7606, + "start": 10922, + "end": 10949, "loc": { "start": { - "line": 234, + "line": 315, "column": 8 }, "end": { - "line": 234, + "line": 315, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 7579, - "end": 7602, + "start": 10922, + "end": 10945, "loc": { "start": { - "line": 234, + "line": 315, "column": 8 }, "end": { - "line": 234, + "line": 315, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 7579, - "end": 7596, + "start": 10922, + "end": 10939, "loc": { "start": { - "line": 234, + "line": 315, "column": 8 }, "end": { - "line": 234, + "line": 315, "column": 25 } }, "object": { "type": "MemberExpression", - "start": 7579, - "end": 7590, + "start": 10922, + "end": 10933, "loc": { "start": { - "line": 234, + "line": 315, "column": 8 }, "end": { - "line": 234, + "line": 315, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 7579, - "end": 7583, + "start": 10922, + "end": 10926, "loc": { "start": { - "line": 234, + "line": 315, "column": 8 }, "end": { - "line": 234, + "line": 315, "column": 12 } } }, "property": { "type": "Identifier", - "start": 7584, - "end": 7590, + "start": 10927, + "end": 10933, "loc": { "start": { - "line": 234, + "line": 315, "column": 13 }, "end": { - "line": 234, + "line": 315, "column": 19 }, "identifierName": "viewer" @@ -34939,15 +41495,15 @@ }, "property": { "type": "Identifier", - "start": 7591, - "end": 7596, + "start": 10934, + "end": 10939, "loc": { "start": { - "line": 234, + "line": 315, "column": 20 }, "end": { - "line": 234, + "line": 315, "column": 25 }, "identifierName": "scene" @@ -34958,15 +41514,15 @@ }, "property": { "type": "Identifier", - "start": 7597, - "end": 7602, + "start": 10940, + "end": 10945, "loc": { "start": { - "line": 234, + "line": 315, "column": 26 }, "end": { - "line": 234, + "line": 315, "column": 31 }, "identifierName": "input" @@ -34977,15 +41533,15 @@ }, "property": { "type": "Identifier", - "start": 7603, - "end": 7606, + "start": 10946, + "end": 10949, "loc": { "start": { - "line": 234, + "line": 315, "column": 32 }, "end": { - "line": 234, + "line": 315, "column": 35 }, "identifierName": "off" @@ -34997,44 +41553,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 7607, - "end": 7627, + "start": 10950, + "end": 10970, "loc": { "start": { - "line": 234, + "line": 315, "column": 36 }, "end": { - "line": 234, + "line": 315, "column": 56 } }, "object": { "type": "ThisExpression", - "start": 7607, - "end": 7611, + "start": 10950, + "end": 10954, "loc": { "start": { - "line": 234, + "line": 315, "column": 36 }, "end": { - "line": 234, + "line": 315, "column": 40 } } }, "property": { "type": "Identifier", - "start": 7612, - "end": 7627, + "start": 10955, + "end": 10970, "loc": { "start": { - "line": 234, + "line": 315, "column": 41 }, "end": { - "line": 234, + "line": 315, "column": 56 }, "identifierName": "_onSceneMouseUp" @@ -35048,114 +41604,114 @@ }, { "type": "ExpressionStatement", - "start": 7638, - "end": 7690, + "start": 10981, + "end": 11033, "loc": { "start": { - "line": 235, + "line": 316, "column": 8 }, "end": { - "line": 235, + "line": 316, "column": 60 } }, "expression": { "type": "CallExpression", - "start": 7638, - "end": 7689, + "start": 10981, + "end": 11032, "loc": { "start": { - "line": 235, + "line": 316, "column": 8 }, "end": { - "line": 235, + "line": 316, "column": 59 } }, "callee": { "type": "MemberExpression", - "start": 7638, - "end": 7665, + "start": 10981, + "end": 11008, "loc": { "start": { - "line": 235, + "line": 316, "column": 8 }, "end": { - "line": 235, + "line": 316, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 7638, - "end": 7661, + "start": 10981, + "end": 11004, "loc": { "start": { - "line": 235, + "line": 316, "column": 8 }, "end": { - "line": 235, + "line": 316, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 7638, - "end": 7655, + "start": 10981, + "end": 10998, "loc": { "start": { - "line": 235, + "line": 316, "column": 8 }, "end": { - "line": 235, + "line": 316, "column": 25 } }, "object": { "type": "MemberExpression", - "start": 7638, - "end": 7649, + "start": 10981, + "end": 10992, "loc": { "start": { - "line": 235, + "line": 316, "column": 8 }, "end": { - "line": 235, + "line": 316, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 7638, - "end": 7642, + "start": 10981, + "end": 10985, "loc": { "start": { - "line": 235, + "line": 316, "column": 8 }, "end": { - "line": 235, + "line": 316, "column": 12 } } }, "property": { "type": "Identifier", - "start": 7643, - "end": 7649, + "start": 10986, + "end": 10992, "loc": { "start": { - "line": 235, + "line": 316, "column": 13 }, "end": { - "line": 235, + "line": 316, "column": 19 }, "identifierName": "viewer" @@ -35166,15 +41722,15 @@ }, "property": { "type": "Identifier", - "start": 7650, - "end": 7655, + "start": 10993, + "end": 10998, "loc": { "start": { - "line": 235, + "line": 316, "column": 20 }, "end": { - "line": 235, + "line": 316, "column": 25 }, "identifierName": "scene" @@ -35185,15 +41741,15 @@ }, "property": { "type": "Identifier", - "start": 7656, - "end": 7661, + "start": 10999, + "end": 11004, "loc": { "start": { - "line": 235, + "line": 316, "column": 26 }, "end": { - "line": 235, + "line": 316, "column": 31 }, "identifierName": "input" @@ -35204,15 +41760,15 @@ }, "property": { "type": "Identifier", - "start": 7662, - "end": 7665, + "start": 11005, + "end": 11008, "loc": { "start": { - "line": 235, + "line": 316, "column": 32 }, "end": { - "line": 235, + "line": 316, "column": 35 }, "identifierName": "off" @@ -35224,44 +41780,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 7666, - "end": 7688, + "start": 11009, + "end": 11031, "loc": { "start": { - "line": 235, + "line": 316, "column": 36 }, "end": { - "line": 235, + "line": 316, "column": 58 } }, "object": { "type": "ThisExpression", - "start": 7666, - "end": 7670, + "start": 11009, + "end": 11013, "loc": { "start": { - "line": 235, + "line": 316, "column": 36 }, "end": { - "line": 235, + "line": 316, "column": 40 } } }, "property": { "type": "Identifier", - "start": 7671, - "end": 7688, + "start": 11014, + "end": 11031, "loc": { "start": { - "line": 235, + "line": 316, "column": 41 }, "end": { - "line": 235, + "line": 316, "column": 58 }, "identifierName": "_onSceneMouseMove" @@ -35275,72 +41831,72 @@ }, { "type": "ExpressionStatement", - "start": 7699, - "end": 7715, + "start": 11042, + "end": 11058, "loc": { "start": { - "line": 236, + "line": 317, "column": 8 }, "end": { - "line": 236, + "line": 317, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 7699, - "end": 7714, + "start": 11042, + "end": 11057, "loc": { "start": { - "line": 236, + "line": 317, "column": 8 }, "end": { - "line": 236, + "line": 317, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 7699, - "end": 7712, + "start": 11042, + "end": 11055, "loc": { "start": { - "line": 236, + "line": 317, "column": 8 }, "end": { - "line": 236, + "line": 317, "column": 21 } }, "object": { "type": "Super", - "start": 7699, - "end": 7704, + "start": 11042, + "end": 11047, "loc": { "start": { - "line": 236, + "line": 317, "column": 8 }, "end": { - "line": 236, + "line": 317, "column": 13 } } }, "property": { "type": "Identifier", - "start": 7705, - "end": 7712, + "start": 11048, + "end": 11055, "loc": { "start": { - "line": 236, + "line": 317, "column": 14 }, "end": { - "line": 236, + "line": 317, "column": 21 }, "identifierName": "destroy" @@ -35353,292 +41909,374 @@ } }, { - "type": "ExpressionStatement", - "start": 7724, - "end": 7768, + "type": "IfStatement", + "start": 11067, + "end": 11180, "loc": { "start": { - "line": 237, + "line": 318, "column": 8 }, "end": { - "line": 237, - "column": 52 + "line": 321, + "column": 9 } }, - "expression": { - "type": "CallExpression", - "start": 7724, - "end": 7767, + "test": { + "type": "MemberExpression", + "start": 11071, + "end": 11080, "loc": { "start": { - "line": 237, - "column": 8 + "line": 318, + "column": 12 }, "end": { - "line": 237, - "column": 51 + "line": 318, + "column": 21 } }, - "callee": { - "type": "MemberExpression", - "start": 7724, - "end": 7756, + "object": { + "type": "ThisExpression", + "start": 11071, + "end": 11075, "loc": { "start": { - "line": 237, - "column": 8 + "line": 318, + "column": 12 }, "end": { - "line": 237, - "column": 40 + "line": 318, + "column": 16 } + } + }, + "property": { + "type": "Identifier", + "start": 11076, + "end": 11080, + "loc": { + "start": { + "line": 318, + "column": 17 + }, + "end": { + "line": 318, + "column": 21 + }, + "identifierName": "_img" }, - "object": { - "type": "MemberExpression", - "start": 7724, - "end": 7744, + "name": "_img" + }, + "computed": false + }, + "consequent": { + "type": "BlockStatement", + "start": 11082, + "end": 11180, + "loc": { + "start": { + "line": 318, + "column": 23 + }, + "end": { + "line": 321, + "column": 9 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 11096, + "end": 11140, "loc": { "start": { - "line": 237, - "column": 8 + "line": 319, + "column": 12 }, "end": { - "line": 237, - "column": 28 + "line": 319, + "column": 56 } }, - "object": { - "type": "MemberExpression", - "start": 7724, - "end": 7733, + "expression": { + "type": "CallExpression", + "start": 11096, + "end": 11139, "loc": { "start": { - "line": 237, - "column": 8 + "line": 319, + "column": 12 }, "end": { - "line": 237, - "column": 17 + "line": 319, + "column": 55 } }, - "object": { - "type": "ThisExpression", - "start": 7724, - "end": 7728, + "callee": { + "type": "MemberExpression", + "start": 11096, + "end": 11128, "loc": { "start": { - "line": 237, - "column": 8 + "line": 319, + "column": 12 }, "end": { - "line": 237, - "column": 12 + "line": 319, + "column": 44 } - } - }, - "property": { - "type": "Identifier", - "start": 7729, - "end": 7733, - "loc": { - "start": { - "line": 237, - "column": 13 + }, + "object": { + "type": "MemberExpression", + "start": 11096, + "end": 11116, + "loc": { + "start": { + "line": 319, + "column": 12 + }, + "end": { + "line": 319, + "column": 32 + } }, - "end": { - "line": 237, - "column": 17 + "object": { + "type": "MemberExpression", + "start": 11096, + "end": 11105, + "loc": { + "start": { + "line": 319, + "column": 12 + }, + "end": { + "line": 319, + "column": 21 + } + }, + "object": { + "type": "ThisExpression", + "start": 11096, + "end": 11100, + "loc": { + "start": { + "line": 319, + "column": 12 + }, + "end": { + "line": 319, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 11101, + "end": 11105, + "loc": { + "start": { + "line": 319, + "column": 17 + }, + "end": { + "line": 319, + "column": 21 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 7734, - "end": 7744, - "loc": { - "start": { - "line": 237, - "column": 18 - }, - "end": { - "line": 237, - "column": 28 - }, - "identifierName": "parentNode" - }, - "name": "parentNode" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 7745, - "end": 7756, - "loc": { - "start": { - "line": 237, - "column": 29 - }, - "end": { - "line": 237, - "column": 40 - }, - "identifierName": "removeChild" - }, - "name": "removeChild" - }, - "computed": false - }, - "arguments": [ - { - "type": "MemberExpression", - "start": 7757, - "end": 7766, - "loc": { - "start": { - "line": 237, - "column": 41 - }, - "end": { - "line": 237, - "column": 50 - } - }, - "object": { - "type": "ThisExpression", - "start": 7757, - "end": 7761, - "loc": { - "start": { - "line": 237, - "column": 41 - }, - "end": { - "line": 237, - "column": 45 - } - } - }, - "property": { - "type": "Identifier", - "start": 7762, - "end": 7766, - "loc": { - "start": { - "line": 237, - "column": 46 + "property": { + "type": "Identifier", + "start": 11106, + "end": 11116, + "loc": { + "start": { + "line": 319, + "column": 22 + }, + "end": { + "line": 319, + "column": 32 + }, + "identifierName": "parentNode" + }, + "name": "parentNode" + }, + "computed": false }, - "end": { - "line": 237, - "column": 50 + "property": { + "type": "Identifier", + "start": 11117, + "end": 11128, + "loc": { + "start": { + "line": 319, + "column": 33 + }, + "end": { + "line": 319, + "column": 44 + }, + "identifierName": "removeChild" + }, + "name": "removeChild" }, - "identifierName": "_img" + "computed": false }, - "name": "_img" - }, - "computed": false - } - ] - } - }, - { - "type": "ExpressionStatement", - "start": 7777, - "end": 7794, - "loc": { - "start": { - "line": 238, - "column": 8 - }, - "end": { - "line": 238, - "column": 25 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 7777, - "end": 7793, - "loc": { - "start": { - "line": 238, - "column": 8 - }, - "end": { - "line": 238, - "column": 24 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 7777, - "end": 7786, - "loc": { - "start": { - "line": 238, - "column": 8 - }, - "end": { - "line": 238, - "column": 17 + "arguments": [ + { + "type": "MemberExpression", + "start": 11129, + "end": 11138, + "loc": { + "start": { + "line": 319, + "column": 45 + }, + "end": { + "line": 319, + "column": 54 + } + }, + "object": { + "type": "ThisExpression", + "start": 11129, + "end": 11133, + "loc": { + "start": { + "line": 319, + "column": 45 + }, + "end": { + "line": 319, + "column": 49 + } + } + }, + "property": { + "type": "Identifier", + "start": 11134, + "end": 11138, + "loc": { + "start": { + "line": 319, + "column": 50 + }, + "end": { + "line": 319, + "column": 54 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false + } + ] } }, - "object": { - "type": "ThisExpression", - "start": 7777, - "end": 7781, + { + "type": "ExpressionStatement", + "start": 11153, + "end": 11170, "loc": { "start": { - "line": 238, - "column": 8 + "line": 320, + "column": 12 }, "end": { - "line": 238, - "column": 12 + "line": 320, + "column": 29 } - } - }, - "property": { - "type": "Identifier", - "start": 7782, - "end": 7786, - "loc": { - "start": { - "line": 238, - "column": 13 + }, + "expression": { + "type": "AssignmentExpression", + "start": 11153, + "end": 11169, + "loc": { + "start": { + "line": 320, + "column": 12 + }, + "end": { + "line": 320, + "column": 28 + } }, - "end": { - "line": 238, - "column": 17 + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 11153, + "end": 11162, + "loc": { + "start": { + "line": 320, + "column": 12 + }, + "end": { + "line": 320, + "column": 21 + } + }, + "object": { + "type": "ThisExpression", + "start": 11153, + "end": 11157, + "loc": { + "start": { + "line": 320, + "column": 12 + }, + "end": { + "line": 320, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 11158, + "end": 11162, + "loc": { + "start": { + "line": 320, + "column": 17 + }, + "end": { + "line": 320, + "column": 21 + }, + "identifierName": "_img" + }, + "name": "_img" + }, + "computed": false }, - "identifierName": "_img" - }, - "name": "_img" - }, - "computed": false - }, - "right": { - "type": "NullLiteral", - "start": 7789, - "end": 7793, - "loc": { - "start": { - "line": 238, - "column": 20 - }, - "end": { - "line": 238, - "column": 24 + "right": { + "type": "NullLiteral", + "start": 11165, + "end": 11169, + "loc": { + "start": { + "line": 320, + "column": 24 + }, + "end": { + "line": 320, + "column": 28 + } + } + } } } - } - } + ], + "directives": [] + }, + "alternate": null } ], "directives": [] @@ -35647,15 +42285,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this plugin.\n ", - "start": 7253, - "end": 7293, + "start": 10596, + "end": 10636, "loc": { "start": { - "line": 225, + "line": 306, "column": 4 }, "end": { - "line": 227, + "line": 308, "column": 7 } } @@ -35667,16 +42305,16 @@ "leadingComments": [ { "type": "CommentBlock", - "value": "*\n * {@link Viewer} plugin that improves interactivity by disabling expensive rendering effects while the {@link Camera} is moving.\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 * This viewer will only render the model with enhanced edges, physically-based rendering (PBR) and scalable\n * ambient obscurance (SAO) when the camera is not moving.\n *\n * Note how we enable SAO and PBR on the ````Scene```` and the model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#performance_FastNavPlugin)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {FastNavPlugin} from \"../src/plugins/FastNavPlugin/FastNavPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true,\n * pbrEnabled: true,\n * saoEnabled: true\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 * new FastNavPlugin(viewer, {});\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/HolterTower/HolterTower.xkt\",\n * metaModelSrc: \"./metaModels/HolterTower/HolterTower.json\",\n * edges: true,\n * saoEnabled: true,\n * pbrEnabled: true\n * });\n * ````\n *\n * @class FastNavPlugin\n ", + "value": "*\n * {@link Viewer} plugin that improves interactivity by disabling expensive rendering effects while the {@link Camera} is moving.\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 * This viewer will only render the model with enhanced edges, physically-based rendering (PBR) and scalable\n * ambient obscurance (SAO) when the camera is not moving.\n *\n * Note how we enable SAO and PBR on the ````Scene```` and the model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#performance_FastNavPlugin)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {FastNavPlugin} from \"../src/plugins/FastNavPlugin/FastNavPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true,\n * pbrEnabled: true,\n * saoEnabled: true\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 * new FastNavPlugin(viewer, {\n * pbrEnabled: true,\n * saoEnabled: true,\n * edgesEnabled: true\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/HolterTower/HolterTower.xkt\",\n * metaModelSrc: \"./metaModels/HolterTower/HolterTower.json\",\n * edges: true,\n * saoEnabled: true,\n * pbrEnabled: true\n * });\n * ````\n *\n * @class FastNavPlugin\n ", "start": 48, - "end": 1623, + "end": 1703, "loc": { "start": { "line": 3, "column": 0 }, "end": { - "line": 48, + "line": 52, "column": 3 } } @@ -35685,116 +42323,5660 @@ "__PseudoExport__": false, "trailingComments": [] }, - "specifiers": null, - "source": null, - "leadingComments": null + "specifiers": null, + "source": null, + "leadingComments": null + } + ], + "directives": [] + }, + "comments": [ + { + "type": "CommentBlock", + "value": "*\n * {@link Viewer} plugin that improves interactivity by disabling expensive rendering effects while the {@link Camera} is moving.\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 * This viewer will only render the model with enhanced edges, physically-based rendering (PBR) and scalable\n * ambient obscurance (SAO) when the camera is not moving.\n *\n * Note how we enable SAO and PBR on the ````Scene```` and the model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#performance_FastNavPlugin)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {FastNavPlugin} from \"../src/plugins/FastNavPlugin/FastNavPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true,\n * pbrEnabled: true,\n * saoEnabled: true\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 * new FastNavPlugin(viewer, {\n * pbrEnabled: true,\n * saoEnabled: true,\n * edgesEnabled: true\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/HolterTower/HolterTower.xkt\",\n * metaModelSrc: \"./metaModels/HolterTower/HolterTower.json\",\n * edges: true,\n * saoEnabled: true,\n * pbrEnabled: true\n * });\n * ````\n *\n * @class FastNavPlugin\n ", + "start": 48, + "end": 1703, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 52, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\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.pbrEnabled] Whether to enable physically-based rendering (PBR) when the camera stops moving. When not specified, PBR will be enabled if it's currently enabled for the Viewer (see {@link Viewer#pbrEnabled}).\n * @param {Boolean} [cfg.saoEnabled] Whether to enable scalable ambient occlusion (SAO) when the camera stops moving. When not specified, SAO will be enabled if it's currently enabled for the Viewer (see {@link Scene#pbrEnabled}).\n * @param {Boolean} [cfg.edgesEnabled] Whether to show enhanced edges when the camera stops moving. When not specified, edges will be enabled if they're currently enabled for the Viewer (see {@link EdgeMaterial#edges}).\n ", + "start": 1746, + "end": 2695, + "loc": { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 63, + "column": 7 + } + } + }, + { + "type": "CommentLine", + "value": " Milliseconds", + "start": 3276, + "end": 3291, + "loc": { + "start": { + "line": 75, + "column": 35 + }, + "end": { + "line": 75, + "column": 50 + } + } + }, + { + "type": "CommentLine", + "value": " Milliseconds", + "start": 3820, + "end": 3835, + "loc": { + "start": { + "line": 90, + "column": 70 + }, + "end": { + "line": 90, + "column": 85 + } + } + }, + { + "type": "CommentLine", + "value": " Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624", + "start": 4104, + "end": 4174, + "loc": { + "start": { + "line": 98, + "column": 58 + }, + "end": { + "line": 98, + "column": 128 + } + } + }, + { + "type": "CommentLine", + "value": "const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;", + "start": 6373, + "end": 6435, + "loc": { + "start": { + "line": 171, + "column": 8 + }, + "end": { + "line": 171, + "column": 70 + } + } + }, + { + "type": "CommentLine", + "value": " Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624", + "start": 6956, + "end": 7026, + "loc": { + "start": { + "line": 183, + "column": 28 + }, + "end": { + "line": 183, + "column": 98 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Sets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n ", + "start": 8979, + "end": 9144, + "loc": { + "start": { + "line": 241, + "column": 4 + }, + "end": { + "line": 245, + "column": 7 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Gets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n ", + "start": 9228, + "end": 9393, + "loc": { + "start": { + "line": 250, + "column": 4 + }, + "end": { + "line": 254, + "column": 7 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Sets whether to enable scalable ambient occlusion (SAO) when the camera stops moving.\n *\n * @return {Boolean} Whether SAO will be enabled.\n ", + "start": 9460, + "end": 9625, + "loc": { + "start": { + "line": 259, + "column": 4 + }, + "end": { + "line": 263, + "column": 7 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Gets whether the FastNavPlugin enables SAO when switching to quality rendering.\n *\n * @return {Boolean} Whether SAO will be enabled.\n ", + "start": 9709, + "end": 9868, + "loc": { + "start": { + "line": 268, + "column": 4 + }, + "end": { + "line": 272, + "column": 7 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Sets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n ", + "start": 9935, + "end": 10093, + "loc": { + "start": { + "line": 277, + "column": 4 + }, + "end": { + "line": 281, + "column": 7 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Gets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n ", + "start": 10185, + "end": 10343, + "loc": { + "start": { + "line": 286, + "column": 4 + }, + "end": { + "line": 290, + "column": 7 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * @private\n ", + "start": 10414, + "end": 10441, + "loc": { + "start": { + "line": 295, + "column": 4 + }, + "end": { + "line": 297, + "column": 7 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Destroys this plugin.\n ", + "start": 10596, + "end": 10636, + "loc": { + "start": { + "line": 306, + "column": 4 + }, + "end": { + "line": 308, + "column": 7 + } + } + } + ], + "tokens": [ + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7, + "end": 8, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Plugin", + "start": 8, + "end": 14, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 14 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 14, + "end": 15, + "loc": { + "start": { + "line": 1, + "column": 14 + }, + "end": { + "line": 1, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 16, + "end": 20, + "loc": { + "start": { + "line": 1, + "column": 16 + }, + "end": { + "line": 1, + "column": 20 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "../../viewer/Plugin.js", + "start": 21, + "end": 45, + "loc": { + "start": { + "line": 1, + "column": 21 + }, + "end": { + "line": 1, + "column": 45 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 45, + "end": 46, + "loc": { + "start": { + "line": 1, + "column": 45 + }, + "end": { + "line": 1, + "column": 46 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * {@link Viewer} plugin that improves interactivity by disabling expensive rendering effects while the {@link Camera} is moving.\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 * This viewer will only render the model with enhanced edges, physically-based rendering (PBR) and scalable\n * ambient obscurance (SAO) when the camera is not moving.\n *\n * Note how we enable SAO and PBR on the ````Scene```` and the model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#performance_FastNavPlugin)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {FastNavPlugin} from \"../src/plugins/FastNavPlugin/FastNavPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true,\n * pbrEnabled: true,\n * saoEnabled: true\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 * new FastNavPlugin(viewer, {\n * pbrEnabled: true,\n * saoEnabled: true,\n * edgesEnabled: true\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/HolterTower/HolterTower.xkt\",\n * metaModelSrc: \"./metaModels/HolterTower/HolterTower.json\",\n * edges: true,\n * saoEnabled: true,\n * pbrEnabled: true\n * });\n * ````\n *\n * @class FastNavPlugin\n ", + "start": 48, + "end": 1703, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 52, + "column": 3 + } + } + }, + { + "type": { + "label": "class", + "keyword": "class", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "class", + "start": 1704, + "end": 1709, + "loc": { + "start": { + "line": 53, + "column": 0 + }, + "end": { + "line": 53, + "column": 5 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "FastNavPlugin", + "start": 1710, + "end": 1723, + "loc": { + "start": { + "line": 53, + "column": 6 + }, + "end": { + "line": 53, + "column": 19 + } + } + }, + { + "type": { + "label": "extends", + "keyword": "extends", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "extends", + "start": 1724, + "end": 1731, + "loc": { + "start": { + "line": 53, + "column": 20 + }, + "end": { + "line": 53, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Plugin", + "start": 1732, + "end": 1738, + "loc": { + "start": { + "line": 53, + "column": 28 + }, + "end": { + "line": 53, + "column": 34 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 1739, + "end": 1740, + "loc": { + "start": { + "line": 53, + "column": 35 + }, + "end": { + "line": 53, + "column": 36 + } + } + }, + { + "type": "CommentBlock", + "value": "*\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.pbrEnabled] Whether to enable physically-based rendering (PBR) when the camera stops moving. When not specified, PBR will be enabled if it's currently enabled for the Viewer (see {@link Viewer#pbrEnabled}).\n * @param {Boolean} [cfg.saoEnabled] Whether to enable scalable ambient occlusion (SAO) when the camera stops moving. When not specified, SAO will be enabled if it's currently enabled for the Viewer (see {@link Scene#pbrEnabled}).\n * @param {Boolean} [cfg.edgesEnabled] Whether to show enhanced edges when the camera stops moving. When not specified, edges will be enabled if they're currently enabled for the Viewer (see {@link EdgeMaterial#edges}).\n ", + "start": 1746, + "end": 2695, + "loc": { + "start": { + "line": 55, + "column": 4 + }, + "end": { + "line": 63, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "constructor", + "start": 2700, + "end": 2711, + "loc": { + "start": { + "line": 64, + "column": 4 + }, + "end": { + "line": 64, + "column": 15 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2711, + "end": 2712, + "loc": { + "start": { + "line": 64, + "column": 15 + }, + "end": { + "line": 64, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "viewer", + "start": 2712, + "end": 2718, + "loc": { + "start": { + "line": 64, + "column": 16 + }, + "end": { + "line": 64, + "column": 22 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2718, + "end": 2719, + "loc": { + "start": { + "line": 64, + "column": 22 + }, + "end": { + "line": 64, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 2720, + "end": 2723, + "loc": { + "start": { + "line": 64, + "column": 24 + }, + "end": { + "line": 64, + "column": 27 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2724, + "end": 2725, + "loc": { + "start": { + "line": 64, + "column": 28 + }, + "end": { + "line": 64, + "column": 29 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2726, + "end": 2727, + "loc": { + "start": { + "line": 64, + "column": 30 + }, + "end": { + "line": 64, + "column": 31 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2727, + "end": 2728, + "loc": { + "start": { + "line": 64, + "column": 31 + }, + "end": { + "line": 64, + "column": 32 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2728, + "end": 2729, + "loc": { + "start": { + "line": 64, + "column": 32 + }, + "end": { + "line": 64, + "column": 33 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2730, + "end": 2731, + "loc": { + "start": { + "line": 64, + "column": 34 + }, + "end": { + "line": 64, + "column": 35 + } + } + }, + { + "type": { + "label": "super", + "keyword": "super", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "super", + "start": 2741, + "end": 2746, + "loc": { + "start": { + "line": 66, + "column": 8 + }, + "end": { + "line": 66, + "column": 13 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2746, + "end": 2747, + "loc": { + "start": { + "line": 66, + "column": 13 + }, + "end": { + "line": 66, + "column": 14 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "FastNav", + "start": 2747, + "end": 2756, + "loc": { + "start": { + "line": 66, + "column": 14 + }, + "end": { + "line": 66, + "column": 23 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2756, + "end": 2757, + "loc": { + "start": { + "line": 66, + "column": 23 + }, + "end": { + "line": 66, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "viewer", + "start": 2758, + "end": 2764, + "loc": { + "start": { + "line": 66, + "column": 25 + }, + "end": { + "line": 66, + "column": 31 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2764, + "end": 2765, + "loc": { + "start": { + "line": 66, + "column": 31 + }, + "end": { + "line": 66, + "column": 32 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2765, + "end": 2766, + "loc": { + "start": { + "line": 66, + "column": 32 + }, + "end": { + "line": 66, + "column": 33 + } + } + }, + { + "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": 2776, + "end": 2780, + "loc": { + "start": { + "line": 68, + "column": 8 + }, + "end": { + "line": 68, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2780, + "end": 2781, + "loc": { + "start": { + "line": 68, + "column": 12 + }, + "end": { + "line": 68, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_pbrEnabled", + "start": 2781, + "end": 2792, + "loc": { + "start": { + "line": 68, + "column": 13 + }, + "end": { + "line": 68, + "column": 24 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2793, + "end": 2794, + "loc": { + "start": { + "line": 68, + "column": 25 + }, + "end": { + "line": 68, + "column": 26 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2795, + "end": 2796, + "loc": { + "start": { + "line": 68, + "column": 27 + }, + "end": { + "line": 68, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 2796, + "end": 2799, + "loc": { + "start": { + "line": 68, + "column": 28 + }, + "end": { + "line": 68, + "column": 31 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2799, + "end": 2800, + "loc": { + "start": { + "line": 68, + "column": 31 + }, + "end": { + "line": 68, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pbrEnabled", + "start": 2800, + "end": 2810, + "loc": { + "start": { + "line": 68, + "column": 32 + }, + "end": { + "line": 68, + "column": 42 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 2811, + "end": 2814, + "loc": { + "start": { + "line": 68, + "column": 43 + }, + "end": { + "line": 68, + "column": 46 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "undefined", + "start": 2815, + "end": 2824, + "loc": { + "start": { + "line": 68, + "column": 47 + }, + "end": { + "line": 68, + "column": 56 + } + } + }, + { + "type": { + "label": "&&", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 2, + "updateContext": null + }, + "value": "&&", + "start": 2825, + "end": 2827, + "loc": { + "start": { + "line": 68, + "column": 57 + }, + "end": { + "line": 68, + "column": 59 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 2828, + "end": 2831, + "loc": { + "start": { + "line": 68, + "column": 60 + }, + "end": { + "line": 68, + "column": 63 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2831, + "end": 2832, + "loc": { + "start": { + "line": 68, + "column": 63 + }, + "end": { + "line": 68, + "column": 64 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pbrEnabled", + "start": 2832, + "end": 2842, + "loc": { + "start": { + "line": 68, + "column": 64 + }, + "end": { + "line": 68, + "column": 74 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 2843, + "end": 2846, + "loc": { + "start": { + "line": 68, + "column": 75 + }, + "end": { + "line": 68, + "column": 78 + } + } + }, + { + "type": { + "label": "null", + "keyword": "null", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "null", + "start": 2847, + "end": 2851, + "loc": { + "start": { + "line": 68, + "column": 79 + }, + "end": { + "line": 68, + "column": 83 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2851, + "end": 2852, + "loc": { + "start": { + "line": 68, + "column": 83 + }, + "end": { + "line": 68, + "column": 84 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2853, + "end": 2854, + "loc": { + "start": { + "line": 68, + "column": 85 + }, + "end": { + "line": 68, + "column": 86 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 2855, + "end": 2858, + "loc": { + "start": { + "line": 68, + "column": 87 + }, + "end": { + "line": 68, + "column": 90 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2858, + "end": 2859, + "loc": { + "start": { + "line": 68, + "column": 90 + }, + "end": { + "line": 68, + "column": 91 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pbrEnabled", + "start": 2859, + "end": 2869, + "loc": { + "start": { + "line": 68, + "column": 91 + }, + "end": { + "line": 68, + "column": 101 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2870, + "end": 2871, + "loc": { + "start": { + "line": 68, + "column": 102 + }, + "end": { + "line": 68, + "column": 103 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "viewer", + "start": 2872, + "end": 2878, + "loc": { + "start": { + "line": 68, + "column": 104 + }, + "end": { + "line": 68, + "column": 110 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2878, + "end": 2879, + "loc": { + "start": { + "line": 68, + "column": 110 + }, + "end": { + "line": 68, + "column": 111 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "scene", + "start": 2879, + "end": 2884, + "loc": { + "start": { + "line": 68, + "column": 111 + }, + "end": { + "line": 68, + "column": 116 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2884, + "end": 2885, + "loc": { + "start": { + "line": 68, + "column": 116 + }, + "end": { + "line": 68, + "column": 117 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pbrEnabled", + "start": 2885, + "end": 2895, + "loc": { + "start": { + "line": 68, + "column": 117 + }, + "end": { + "line": 68, + "column": 127 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2895, + "end": 2896, + "loc": { + "start": { + "line": 68, + "column": 127 + }, + "end": { + "line": 68, + "column": 128 + } + } + }, + { + "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": 2905, + "end": 2909, + "loc": { + "start": { + "line": 69, + "column": 8 + }, + "end": { + "line": 69, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2909, + "end": 2910, + "loc": { + "start": { + "line": 69, + "column": 12 + }, + "end": { + "line": 69, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_saoEnabled", + "start": 2910, + "end": 2921, + "loc": { + "start": { + "line": 69, + "column": 13 + }, + "end": { + "line": 69, + "column": 24 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2922, + "end": 2923, + "loc": { + "start": { + "line": 69, + "column": 25 + }, + "end": { + "line": 69, + "column": 26 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2924, + "end": 2925, + "loc": { + "start": { + "line": 69, + "column": 27 + }, + "end": { + "line": 69, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 2925, + "end": 2928, + "loc": { + "start": { + "line": 69, + "column": 28 + }, + "end": { + "line": 69, + "column": 31 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2928, + "end": 2929, + "loc": { + "start": { + "line": 69, + "column": 31 + }, + "end": { + "line": 69, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "saoEnabled", + "start": 2929, + "end": 2939, + "loc": { + "start": { + "line": 69, + "column": 32 + }, + "end": { + "line": 69, + "column": 42 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 2940, + "end": 2943, + "loc": { + "start": { + "line": 69, + "column": 43 + }, + "end": { + "line": 69, + "column": 46 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "undefined", + "start": 2944, + "end": 2953, + "loc": { + "start": { + "line": 69, + "column": 47 + }, + "end": { + "line": 69, + "column": 56 + } + } + }, + { + "type": { + "label": "&&", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 2, + "updateContext": null + }, + "value": "&&", + "start": 2954, + "end": 2956, + "loc": { + "start": { + "line": 69, + "column": 57 + }, + "end": { + "line": 69, + "column": 59 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 2957, + "end": 2960, + "loc": { + "start": { + "line": 69, + "column": 60 + }, + "end": { + "line": 69, + "column": 63 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2960, + "end": 2961, + "loc": { + "start": { + "line": 69, + "column": 63 + }, + "end": { + "line": 69, + "column": 64 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "saoEnabled", + "start": 2961, + "end": 2971, + "loc": { + "start": { + "line": 69, + "column": 64 + }, + "end": { + "line": 69, + "column": 74 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 2972, + "end": 2975, + "loc": { + "start": { + "line": 69, + "column": 75 + }, + "end": { + "line": 69, + "column": 78 + } + } + }, + { + "type": { + "label": "null", + "keyword": "null", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "null", + "start": 2976, + "end": 2980, + "loc": { + "start": { + "line": 69, + "column": 79 + }, + "end": { + "line": 69, + "column": 83 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2980, + "end": 2981, + "loc": { + "start": { + "line": 69, + "column": 83 + }, + "end": { + "line": 69, + "column": 84 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2982, + "end": 2983, + "loc": { + "start": { + "line": 69, + "column": 85 + }, + "end": { + "line": 69, + "column": 86 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 2984, + "end": 2987, + "loc": { + "start": { + "line": 69, + "column": 87 + }, + "end": { + "line": 69, + "column": 90 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2987, + "end": 2988, + "loc": { + "start": { + "line": 69, + "column": 90 + }, + "end": { + "line": 69, + "column": 91 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "saoEnabled", + "start": 2988, + "end": 2998, + "loc": { + "start": { + "line": 69, + "column": 91 + }, + "end": { + "line": 69, + "column": 101 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2999, + "end": 3000, + "loc": { + "start": { + "line": 69, + "column": 102 + }, + "end": { + "line": 69, + "column": 103 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "viewer", + "start": 3001, + "end": 3007, + "loc": { + "start": { + "line": 69, + "column": 104 + }, + "end": { + "line": 69, + "column": 110 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3007, + "end": 3008, + "loc": { + "start": { + "line": 69, + "column": 110 + }, + "end": { + "line": 69, + "column": 111 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "scene", + "start": 3008, + "end": 3013, + "loc": { + "start": { + "line": 69, + "column": 111 + }, + "end": { + "line": 69, + "column": 116 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3013, + "end": 3014, + "loc": { + "start": { + "line": 69, + "column": 116 + }, + "end": { + "line": 69, + "column": 117 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sao", + "start": 3014, + "end": 3017, + "loc": { + "start": { + "line": 69, + "column": 117 + }, + "end": { + "line": 69, + "column": 120 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3017, + "end": 3018, + "loc": { + "start": { + "line": 69, + "column": 120 + }, + "end": { + "line": 69, + "column": 121 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "enabled", + "start": 3018, + "end": 3025, + "loc": { + "start": { + "line": 69, + "column": 121 + }, + "end": { + "line": 69, + "column": 128 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3025, + "end": 3026, + "loc": { + "start": { + "line": 69, + "column": 128 + }, + "end": { + "line": 69, + "column": 129 + } + } + }, + { + "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": 3035, + "end": 3039, + "loc": { + "start": { + "line": 70, + "column": 8 + }, + "end": { + "line": 70, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3039, + "end": 3040, + "loc": { + "start": { + "line": 70, + "column": 12 + }, + "end": { + "line": 70, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_edgesEnabled", + "start": 3040, + "end": 3053, + "loc": { + "start": { + "line": 70, + "column": 13 + }, + "end": { + "line": 70, + "column": 26 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3054, + "end": 3055, + "loc": { + "start": { + "line": 70, + "column": 27 + }, + "end": { + "line": 70, + "column": 28 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3056, + "end": 3057, + "loc": { + "start": { + "line": 70, + "column": 29 + }, + "end": { + "line": 70, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 3057, + "end": 3060, + "loc": { + "start": { + "line": 70, + "column": 30 + }, + "end": { + "line": 70, + "column": 33 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3060, + "end": 3061, + "loc": { + "start": { + "line": 70, + "column": 33 + }, + "end": { + "line": 70, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "edgesEnabled", + "start": 3061, + "end": 3073, + "loc": { + "start": { + "line": 70, + "column": 34 + }, + "end": { + "line": 70, + "column": 46 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 3074, + "end": 3077, + "loc": { + "start": { + "line": 70, + "column": 47 + }, + "end": { + "line": 70, + "column": 50 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "undefined", + "start": 3078, + "end": 3087, + "loc": { + "start": { + "line": 70, + "column": 51 + }, + "end": { + "line": 70, + "column": 60 + } + } + }, + { + "type": { + "label": "&&", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 2, + "updateContext": null + }, + "value": "&&", + "start": 3088, + "end": 3090, + "loc": { + "start": { + "line": 70, + "column": 61 + }, + "end": { + "line": 70, + "column": 63 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 3091, + "end": 3094, + "loc": { + "start": { + "line": 70, + "column": 64 + }, + "end": { + "line": 70, + "column": 67 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3094, + "end": 3095, + "loc": { + "start": { + "line": 70, + "column": 67 + }, + "end": { + "line": 70, + "column": 68 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "edgesEnabled", + "start": 3095, + "end": 3107, + "loc": { + "start": { + "line": 70, + "column": 68 + }, + "end": { + "line": 70, + "column": 80 + } + } + }, + { + "type": { + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 6, + "updateContext": null + }, + "value": "!==", + "start": 3108, + "end": 3111, + "loc": { + "start": { + "line": 70, + "column": 81 + }, + "end": { + "line": 70, + "column": 84 + } + } + }, + { + "type": { + "label": "null", + "keyword": "null", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "null", + "start": 3112, + "end": 3116, + "loc": { + "start": { + "line": 70, + "column": 85 + }, + "end": { + "line": 70, + "column": 89 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3116, + "end": 3117, + "loc": { + "start": { + "line": 70, + "column": 89 + }, + "end": { + "line": 70, + "column": 90 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3118, + "end": 3119, + "loc": { + "start": { + "line": 70, + "column": 91 + }, + "end": { + "line": 70, + "column": 92 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 3120, + "end": 3123, + "loc": { + "start": { + "line": 70, + "column": 93 + }, + "end": { + "line": 70, + "column": 96 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3123, + "end": 3124, + "loc": { + "start": { + "line": 70, + "column": 96 + }, + "end": { + "line": 70, + "column": 97 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "edgesEnabled", + "start": 3124, + "end": 3136, + "loc": { + "start": { + "line": 70, + "column": 97 + }, + "end": { + "line": 70, + "column": 109 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3137, + "end": 3138, + "loc": { + "start": { + "line": 70, + "column": 110 + }, + "end": { + "line": 70, + "column": 111 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "viewer", + "start": 3139, + "end": 3145, + "loc": { + "start": { + "line": 70, + "column": 112 + }, + "end": { + "line": 70, + "column": 118 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3145, + "end": 3146, + "loc": { + "start": { + "line": 70, + "column": 118 + }, + "end": { + "line": 70, + "column": 119 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "scene", + "start": 3146, + "end": 3151, + "loc": { + "start": { + "line": 70, + "column": 119 + }, + "end": { + "line": 70, + "column": 124 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3151, + "end": 3152, + "loc": { + "start": { + "line": 70, + "column": 124 + }, + "end": { + "line": 70, + "column": 125 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "edgeMaterial", + "start": 3152, + "end": 3164, + "loc": { + "start": { + "line": 70, + "column": 125 + }, + "end": { + "line": 70, + "column": 137 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3164, + "end": 3165, + "loc": { + "start": { + "line": 70, + "column": 137 + }, + "end": { + "line": 70, + "column": 138 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "edges", + "start": 3165, + "end": 3170, + "loc": { + "start": { + "line": 70, + "column": 138 + }, + "end": { + "line": 70, + "column": 143 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3170, + "end": 3171, + "loc": { + "start": { + "line": 70, + "column": 143 + }, + "end": { + "line": 70, + "column": 144 + } + } + }, + { + "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": 3181, + "end": 3185, + "loc": { + "start": { + "line": 72, + "column": 8 + }, + "end": { + "line": 72, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3185, + "end": 3186, + "loc": { + "start": { + "line": 72, + "column": 12 + }, + "end": { + "line": 72, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_pInterval", + "start": 3186, + "end": 3196, + "loc": { + "start": { + "line": 72, + "column": 13 + }, + "end": { + "line": 72, + "column": 23 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3197, + "end": 3198, + "loc": { + "start": { + "line": 72, + "column": 24 + }, + "end": { + "line": 72, + "column": 25 + } + } + }, + { + "type": { + "label": "null", + "keyword": "null", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "null", + "start": 3199, + "end": 3203, + "loc": { + "start": { + "line": 72, + "column": 26 + }, + "end": { + "line": 72, + "column": 30 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3203, + "end": 3204, + "loc": { + "start": { + "line": 72, + "column": 30 + }, + "end": { + "line": 72, + "column": 31 + } + } + }, + { + "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": 3213, + "end": 3217, + "loc": { + "start": { + "line": 73, + "column": 8 + }, + "end": { + "line": 73, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3217, + "end": 3218, + "loc": { + "start": { + "line": 73, + "column": 12 + }, + "end": { + "line": 73, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_fadeMillisecs", + "start": 3218, + "end": 3232, + "loc": { + "start": { + "line": 73, + "column": 13 + }, + "end": { + "line": 73, + "column": 27 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3233, + "end": 3234, + "loc": { + "start": { + "line": 73, + "column": 28 + }, + "end": { + "line": 73, + "column": 29 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 500, + "start": 3235, + "end": 3238, + "loc": { + "start": { + "line": 73, + "column": 30 + }, + "end": { + "line": 73, + "column": 33 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3238, + "end": 3239, + "loc": { + "start": { + "line": 73, + "column": 33 + }, + "end": { + "line": 73, + "column": 34 + } + } + }, + { + "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": 3249, + "end": 3252, + "loc": { + "start": { + "line": 75, + "column": 8 + }, + "end": { + "line": 75, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "timeoutDuration", + "start": 3253, + "end": 3268, + "loc": { + "start": { + "line": 75, + "column": 12 + }, + "end": { + "line": 75, + "column": 27 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3269, + "end": 3270, + "loc": { + "start": { + "line": 75, + "column": 28 + }, + "end": { + "line": 75, + "column": 29 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 600, + "start": 3271, + "end": 3274, + "loc": { + "start": { + "line": 75, + "column": 30 + }, + "end": { + "line": 75, + "column": 33 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3274, + "end": 3275, + "loc": { + "start": { + "line": 75, + "column": 33 + }, + "end": { + "line": 75, + "column": 34 + } + } + }, + { + "type": "CommentLine", + "value": " Milliseconds", + "start": 3276, + "end": 3291, + "loc": { + "start": { + "line": 75, + "column": 35 + }, + "end": { + "line": 75, + "column": 50 + } + } + }, + { + "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": 3300, + "end": 3303, + "loc": { + "start": { + "line": 76, + "column": 8 + }, + "end": { + "line": 76, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "timer", + "start": 3304, + "end": 3309, + "loc": { + "start": { + "line": 76, + "column": 12 + }, + "end": { + "line": 76, + "column": 17 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3310, + "end": 3311, + "loc": { + "start": { + "line": 76, + "column": 18 + }, + "end": { + "line": 76, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "timeoutDuration", + "start": 3312, + "end": 3327, + "loc": { + "start": { + "line": 76, + "column": 20 + }, + "end": { + "line": 76, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3327, + "end": 3328, + "loc": { + "start": { + "line": 76, + "column": 35 + }, + "end": { + "line": 76, + "column": 36 + } + } + }, + { + "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": 3337, + "end": 3340, + "loc": { + "start": { + "line": 77, + "column": 8 + }, + "end": { + "line": 77, + "column": 11 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "fastMode", + "start": 3341, + "end": 3349, + "loc": { + "start": { + "line": 77, + "column": 12 + }, + "end": { + "line": 77, + "column": 20 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3350, + "end": 3351, + "loc": { + "start": { + "line": 77, + "column": 21 + }, + "end": { + "line": 77, + "column": 22 + } + } + }, + { + "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": 3352, + "end": 3357, + "loc": { + "start": { + "line": 77, + "column": 23 + }, + "end": { + "line": 77, + "column": 28 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3357, + "end": 3358, + "loc": { + "start": { + "line": 77, + "column": 28 + }, + "end": { + "line": 77, + "column": 29 + } + } + }, + { + "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": 3368, + "end": 3372, + "loc": { + "start": { + "line": 79, + "column": 8 + }, + "end": { + "line": 79, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3372, + "end": 3373, + "loc": { + "start": { + "line": 79, + "column": 12 + }, + "end": { + "line": 79, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_onCameraMatrix", + "start": 3373, + "end": 3388, + "loc": { + "start": { + "line": 79, + "column": 13 + }, + "end": { + "line": 79, + "column": 28 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3389, + "end": 3390, + "loc": { + "start": { + "line": 79, + "column": 29 + }, + "end": { + "line": 79, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "viewer", + "start": 3391, + "end": 3397, + "loc": { + "start": { + "line": 79, + "column": 31 + }, + "end": { + "line": 79, + "column": 37 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3397, + "end": 3398, + "loc": { + "start": { + "line": 79, + "column": 37 + }, + "end": { + "line": 79, + "column": 38 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "scene", + "start": 3398, + "end": 3403, + "loc": { + "start": { + "line": 79, + "column": 38 + }, + "end": { + "line": 79, + "column": 43 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3403, + "end": 3404, + "loc": { + "start": { + "line": 79, + "column": 43 + }, + "end": { + "line": 79, + "column": 44 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "camera", + "start": 3404, + "end": 3410, + "loc": { + "start": { + "line": 79, + "column": 44 + }, + "end": { + "line": 79, + "column": 50 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3410, + "end": 3411, + "loc": { + "start": { + "line": 79, + "column": 50 + }, + "end": { + "line": 79, + "column": 51 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "on", + "start": 3411, + "end": 3413, + "loc": { + "start": { + "line": 79, + "column": 51 + }, + "end": { + "line": 79, + "column": 53 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3413, + "end": 3414, + "loc": { + "start": { + "line": 79, + "column": 53 + }, + "end": { + "line": 79, + "column": 54 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "matrix", + "start": 3414, + "end": 3422, + "loc": { + "start": { + "line": 79, + "column": 54 + }, + "end": { + "line": 79, + "column": 62 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3422, + "end": 3423, + "loc": { + "start": { + "line": 79, + "column": 62 + }, + "end": { + "line": 79, + "column": 63 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3424, + "end": 3425, + "loc": { + "start": { + "line": 79, + "column": 64 + }, + "end": { + "line": 79, + "column": 65 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3425, + "end": 3426, + "loc": { + "start": { + "line": 79, + "column": 65 + }, + "end": { + "line": 79, + "column": 66 + } + } + }, + { + "type": { + "label": "=>", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3427, + "end": 3429, + "loc": { + "start": { + "line": 79, + "column": 67 + }, + "end": { + "line": 79, + "column": 69 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3430, + "end": 3431, + "loc": { + "start": { + "line": 79, + "column": 70 + }, + "end": { + "line": 79, + "column": 71 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "timer", + "start": 3444, + "end": 3449, + "loc": { + "start": { + "line": 80, + "column": 12 + }, + "end": { + "line": 80, + "column": 17 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3450, + "end": 3451, + "loc": { + "start": { + "line": 80, + "column": 18 + }, + "end": { + "line": 80, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "timeoutDuration", + "start": 3452, + "end": 3467, + "loc": { + "start": { + "line": 80, + "column": 20 + }, + "end": { + "line": 80, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3467, + "end": 3468, + "loc": { + "start": { + "line": 80, + "column": 35 + }, + "end": { + "line": 80, + "column": 36 + } + } + }, + { + "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": 3481, + "end": 3483, + "loc": { + "start": { + "line": 81, + "column": 12 + }, + "end": { + "line": 81, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3484, + "end": 3485, + "loc": { + "start": { + "line": 81, + "column": 15 + }, + "end": { + "line": 81, + "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": 3485, + "end": 3486, + "loc": { + "start": { + "line": 81, + "column": 16 + }, + "end": { + "line": 81, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "fastMode", + "start": 3486, + "end": 3494, + "loc": { + "start": { + "line": 81, + "column": 17 + }, + "end": { + "line": 81, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3494, + "end": 3495, + "loc": { + "start": { + "line": 81, + "column": 25 + }, + "end": { + "line": 81, + "column": 26 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3496, + "end": 3497, + "loc": { + "start": { + "line": 81, + "column": 27 + }, + "end": { + "line": 81, + "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": 3514, + "end": 3518, + "loc": { + "start": { + "line": 82, + "column": 16 + }, + "end": { + "line": 82, + "column": 20 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3518, + "end": 3519, + "loc": { + "start": { + "line": 82, + "column": 20 + }, + "end": { + "line": 82, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_cancelFade", + "start": 3519, + "end": 3530, + "loc": { + "start": { + "line": 82, + "column": 21 + }, + "end": { + "line": 82, + "column": 32 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3530, + "end": 3531, + "loc": { + "start": { + "line": 82, + "column": 32 + }, + "end": { + "line": 82, + "column": 33 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3531, + "end": 3532, + "loc": { + "start": { + "line": 82, + "column": 33 + }, + "end": { + "line": 82, + "column": 34 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3532, + "end": 3533, + "loc": { + "start": { + "line": 82, + "column": 34 + }, + "end": { + "line": 82, + "column": 35 + } } - ], - "directives": [] - }, - "comments": [ + }, { - "type": "CommentBlock", - "value": "*\n * {@link Viewer} plugin that improves interactivity by disabling expensive rendering effects while the {@link Camera} is moving.\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 * This viewer will only render the model with enhanced edges, physically-based rendering (PBR) and scalable\n * ambient obscurance (SAO) when the camera is not moving.\n *\n * Note how we enable SAO and PBR on the ````Scene```` and the model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#performance_FastNavPlugin)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {FastNavPlugin} from \"../src/plugins/FastNavPlugin/FastNavPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true,\n * pbrEnabled: true,\n * saoEnabled: true\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 * new FastNavPlugin(viewer, {});\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/HolterTower/HolterTower.xkt\",\n * metaModelSrc: \"./metaModels/HolterTower/HolterTower.json\",\n * edges: true,\n * saoEnabled: true,\n * pbrEnabled: true\n * });\n * ````\n *\n * @class FastNavPlugin\n ", - "start": 48, - "end": 1623, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "viewer", + "start": 3550, + "end": 3556, + "loc": { + "start": { + "line": 83, + "column": 16 + }, + "end": { + "line": 83, + "column": 22 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3556, + "end": 3557, + "loc": { + "start": { + "line": 83, + "column": 22 + }, + "end": { + "line": 83, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "scene", + "start": 3557, + "end": 3562, + "loc": { + "start": { + "line": 83, + "column": 23 + }, + "end": { + "line": 83, + "column": 28 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3562, + "end": 3563, + "loc": { + "start": { + "line": 83, + "column": 28 + }, + "end": { + "line": 83, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pbrEnabled", + "start": 3563, + "end": 3573, + "loc": { + "start": { + "line": 83, + "column": 29 + }, + "end": { + "line": 83, + "column": 39 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3574, + "end": 3575, + "loc": { + "start": { + "line": 83, + "column": 40 + }, + "end": { + "line": 83, + "column": 41 + } + } + }, + { + "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": 3576, + "end": 3581, + "loc": { + "start": { + "line": 83, + "column": 42 + }, + "end": { + "line": 83, + "column": 47 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3581, + "end": 3582, + "loc": { + "start": { + "line": 83, + "column": 47 + }, + "end": { + "line": 83, + "column": 48 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "viewer", + "start": 3599, + "end": 3605, + "loc": { + "start": { + "line": 84, + "column": 16 + }, + "end": { + "line": 84, + "column": 22 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3605, + "end": 3606, + "loc": { + "start": { + "line": 84, + "column": 22 + }, + "end": { + "line": 84, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "scene", + "start": 3606, + "end": 3611, + "loc": { + "start": { + "line": 84, + "column": 23 + }, + "end": { + "line": 84, + "column": 28 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3611, + "end": 3612, + "loc": { + "start": { + "line": 84, + "column": 28 + }, + "end": { + "line": 84, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sao", + "start": 3612, + "end": 3615, + "loc": { + "start": { + "line": 84, + "column": 29 + }, + "end": { + "line": 84, + "column": 32 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3615, + "end": 3616, + "loc": { + "start": { + "line": 84, + "column": 32 + }, + "end": { + "line": 84, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "enabled", + "start": 3616, + "end": 3623, + "loc": { + "start": { + "line": 84, + "column": 33 + }, + "end": { + "line": 84, + "column": 40 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3624, + "end": 3625, + "loc": { + "start": { + "line": 84, + "column": 41 + }, + "end": { + "line": 84, + "column": 42 + } + } + }, + { + "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": 3626, + "end": 3631, + "loc": { + "start": { + "line": 84, + "column": 43 + }, + "end": { + "line": 84, + "column": 48 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3631, + "end": 3632, + "loc": { + "start": { + "line": 84, + "column": 48 + }, + "end": { + "line": 84, + "column": 49 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "viewer", + "start": 3649, + "end": 3655, + "loc": { + "start": { + "line": 85, + "column": 16 + }, + "end": { + "line": 85, + "column": 22 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3655, + "end": 3656, + "loc": { + "start": { + "line": 85, + "column": 22 + }, + "end": { + "line": 85, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "scene", + "start": 3656, + "end": 3661, "loc": { "start": { - "line": 3, - "column": 0 + "line": 85, + "column": 23 }, "end": { - "line": 48, - "column": 3 + "line": 85, + "column": 28 } } }, { - "type": "CommentLine", - "value": " Milliseconds", - "start": 1827, - "end": 1842, + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3661, + "end": 3662, "loc": { "start": { - "line": 58, - "column": 35 + "line": 85, + "column": 28 }, "end": { - "line": 58, - "column": 50 + "line": 85, + "column": 29 } } }, { - "type": "CommentLine", - "value": " Milliseconds", - "start": 2371, - "end": 2386, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "edgeMaterial", + "start": 3662, + "end": 3674, "loc": { "start": { - "line": 73, - "column": 70 + "line": 85, + "column": 29 }, "end": { - "line": 73, - "column": 85 + "line": 85, + "column": 41 } } }, { - "type": "CommentLine", - "value": "const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;", - "start": 4683, - "end": 4745, + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3674, + "end": 3675, "loc": { "start": { - "line": 149, - "column": 8 + "line": 85, + "column": 41 }, "end": { - "line": 149, - "column": 70 + "line": 85, + "column": 42 } } }, { - "type": "CommentBlock", - "value": "*\n * @private\n ", - "start": 7071, - "end": 7098, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "edges", + "start": 3675, + "end": 3680, "loc": { "start": { - "line": 214, - "column": 4 + "line": 85, + "column": 42 }, "end": { - "line": 216, - "column": 7 + "line": 85, + "column": 47 } } }, { - "type": "CommentBlock", - "value": "*\n * Destroys this plugin.\n ", - "start": 7253, - "end": 7293, + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3681, + "end": 3682, "loc": { "start": { - "line": 225, - "column": 4 + "line": 85, + "column": 48 }, "end": { - "line": 227, - "column": 7 + "line": 85, + "column": 49 } } - } - ], - "tokens": [ + }, { "type": { - "label": "import", - "keyword": "import", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -35805,42 +47987,43 @@ "binop": null, "updateContext": null }, - "value": "import", - "start": 0, - "end": 6, + "value": "false", + "start": 3683, + "end": 3688, "loc": { "start": { - "line": 1, - "column": 0 + "line": 85, + "column": 50 }, "end": { - "line": 1, - "column": 6 + "line": 85, + "column": 55 } } }, { "type": { - "label": "{", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 7, - "end": 8, + "start": 3688, + "end": 3689, "loc": { "start": { - "line": 1, - "column": 7 + "line": 85, + "column": 55 }, "end": { - "line": 1, - "column": 8 + "line": 85, + "column": 56 } } }, @@ -35856,17 +48039,98 @@ "postfix": false, "binop": null }, - "value": "Plugin", - "start": 8, - "end": 14, + "value": "fastMode", + "start": 3706, + "end": 3714, "loc": { "start": { - "line": 1, - "column": 8 + "line": 86, + "column": 16 }, "end": { - "line": 1, - "column": 14 + "line": 86, + "column": 24 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 3715, + "end": 3716, + "loc": { + "start": { + "line": 86, + "column": 25 + }, + "end": { + "line": 86, + "column": 26 + } + } + }, + { + "type": { + "label": "true", + "keyword": "true", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "true", + "start": 3717, + "end": 3721, + "loc": { + "start": { + "line": 86, + "column": 27 + }, + "end": { + "line": 86, + "column": 31 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3721, + "end": 3722, + "loc": { + "start": { + "line": 86, + "column": 31 + }, + "end": { + "line": 86, + "column": 32 } } }, @@ -35882,24 +48146,24 @@ "postfix": false, "binop": null }, - "start": 14, - "end": 15, + "start": 3735, + "end": 3736, "loc": { "start": { - "line": 1, - "column": 14 + "line": 87, + "column": 12 }, "end": { - "line": 1, - "column": 15 + "line": 87, + "column": 13 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -35907,44 +48171,41 @@ "postfix": false, "binop": null }, - "value": "from", - "start": 16, - "end": 20, + "start": 3745, + "end": 3746, "loc": { "start": { - "line": 1, - "column": 16 + "line": 88, + "column": 8 }, "end": { - "line": 1, - "column": 20 + "line": 88, + "column": 9 } } }, { "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": "../../viewer/Plugin.js", - "start": 21, - "end": 45, + "start": 3746, + "end": 3747, "loc": { "start": { - "line": 1, - "column": 21 + "line": 88, + "column": 9 }, "end": { - "line": 1, - "column": 45 + "line": 88, + "column": 10 } } }, @@ -35961,39 +48222,50 @@ "binop": null, "updateContext": null }, - "start": 45, - "end": 46, + "start": 3747, + "end": 3748, "loc": { "start": { - "line": 1, - "column": 45 + "line": 88, + "column": 10 }, "end": { - "line": 1, - "column": 46 + "line": 88, + "column": 11 } } }, { - "type": "CommentBlock", - "value": "*\n * {@link Viewer} plugin that improves interactivity by disabling expensive rendering effects while the {@link Camera} is moving.\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 * This viewer will only render the model with enhanced edges, physically-based rendering (PBR) and scalable\n * ambient obscurance (SAO) when the camera is not moving.\n *\n * Note how we enable SAO and PBR on the ````Scene```` and the model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#performance_FastNavPlugin)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {FastNavPlugin} from \"../src/plugins/FastNavPlugin/FastNavPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true,\n * pbrEnabled: true,\n * saoEnabled: true\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 * new FastNavPlugin(viewer, {});\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/HolterTower/HolterTower.xkt\",\n * metaModelSrc: \"./metaModels/HolterTower/HolterTower.json\",\n * edges: true,\n * saoEnabled: true,\n * pbrEnabled: true\n * });\n * ````\n *\n * @class FastNavPlugin\n ", - "start": 48, - "end": 1623, + "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": 3758, + "end": 3762, "loc": { "start": { - "line": 3, - "column": 0 + "line": 90, + "column": 8 }, "end": { - "line": 48, - "column": 3 + "line": 90, + "column": 12 } } }, { "type": { - "label": "class", - "keyword": "class", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -36004,17 +48276,16 @@ "binop": null, "updateContext": null }, - "value": "class", - "start": 1624, - "end": 1629, + "start": 3762, + "end": 3763, "loc": { "start": { - "line": 49, - "column": 0 + "line": 90, + "column": 12 }, "end": { - "line": 49, - "column": 5 + "line": 90, + "column": 13 } } }, @@ -36030,44 +48301,43 @@ "postfix": false, "binop": null }, - "value": "FastNavPlugin", - "start": 1630, - "end": 1643, + "value": "_onSceneTick", + "start": 3763, + "end": 3775, "loc": { "start": { - "line": 49, - "column": 6 + "line": 90, + "column": 13 }, "end": { - "line": 49, - "column": 19 + "line": 90, + "column": 25 } } }, { "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": 1644, - "end": 1651, + "value": "=", + "start": 3776, + "end": 3777, "loc": { "start": { - "line": 49, - "column": 20 + "line": 90, + "column": 26 }, "end": { - "line": 49, + "line": 90, "column": 27 } } @@ -36084,49 +48354,206 @@ "postfix": false, "binop": null }, - "value": "Plugin", - "start": 1652, - "end": 1658, + "value": "viewer", + "start": 3778, + "end": 3784, "loc": { "start": { - "line": 49, + "line": 90, "column": 28 }, "end": { - "line": 49, + "line": 90, "column": 34 } } }, { "type": { - "label": "{", + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3784, + "end": 3785, + "loc": { + "start": { + "line": 90, + "column": 34 + }, + "end": { + "line": 90, + "column": 35 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "scene", + "start": 3785, + "end": 3790, + "loc": { + "start": { + "line": 90, + "column": 35 + }, + "end": { + "line": 90, + "column": 40 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 3790, + "end": 3791, + "loc": { + "start": { + "line": 90, + "column": 40 + }, + "end": { + "line": 90, + "column": 41 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "on", + "start": 3791, + "end": 3793, + "loc": { + "start": { + "line": 90, + "column": 41 + }, + "end": { + "line": 90, + "column": 43 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3793, + "end": 3794, + "loc": { + "start": { + "line": 90, + "column": 43 + }, + "end": { + "line": 90, + "column": 44 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "tick", + "start": 3794, + "end": 3800, + "loc": { + "start": { + "line": 90, + "column": 44 + }, + "end": { + "line": 90, + "column": 50 + } + } + }, + { + "type": { + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 1659, - "end": 1660, + "start": 3800, + "end": 3801, "loc": { "start": { - "line": 49, - "column": 35 + "line": 90, + "column": 50 }, "end": { - "line": 49, - "column": 36 + "line": 90, + "column": 51 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -36135,24 +48562,23 @@ "postfix": false, "binop": null }, - "value": "constructor", - "start": 1666, - "end": 1677, + "start": 3802, + "end": 3803, "loc": { "start": { - "line": 51, - "column": 4 + "line": 90, + "column": 52 }, "end": { - "line": 51, - "column": 15 + "line": 90, + "column": 53 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -36161,24 +48587,25 @@ "postfix": false, "binop": null }, - "start": 1677, - "end": 1678, + "value": "tickEvent", + "start": 3803, + "end": 3812, "loc": { "start": { - "line": 51, - "column": 15 + "line": 90, + "column": 53 }, "end": { - "line": 51, - "column": 16 + "line": 90, + "column": 62 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -36186,42 +48613,42 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 1678, - "end": 1684, + "start": 3812, + "end": 3813, "loc": { "start": { - "line": 51, - "column": 16 + "line": 90, + "column": 62 }, "end": { - "line": 51, - "column": 22 + "line": 90, + "column": 63 } } }, { "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": 1684, - "end": 1685, + "start": 3814, + "end": 3816, "loc": { "start": { - "line": 51, - "column": 22 + "line": 90, + "column": 64 }, "end": { - "line": 51, - "column": 23 + "line": 90, + "column": 66 } } }, @@ -36237,25 +48664,41 @@ "postfix": false, "binop": null }, - "start": 1686, - "end": 1687, + "start": 3817, + "end": 3818, "loc": { "start": { - "line": 51, - "column": 24 + "line": 90, + "column": 67 }, "end": { - "line": 51, - "column": 25 + "line": 90, + "column": 68 + } + } + }, + { + "type": "CommentLine", + "value": " Milliseconds", + "start": 3820, + "end": 3835, + "loc": { + "start": { + "line": 90, + "column": 70 + }, + "end": { + "line": 90, + "column": 85 } } }, { "type": { - "label": "super", - "keyword": "super", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -36264,17 +48707,17 @@ "binop": null, "updateContext": null }, - "value": "super", - "start": 1697, - "end": 1702, + "value": "if", + "start": 3848, + "end": 3850, "loc": { "start": { - "line": 53, - "column": 8 + "line": 91, + "column": 12 }, "end": { - "line": 53, - "column": 13 + "line": 91, + "column": 14 } } }, @@ -36290,77 +48733,77 @@ "postfix": false, "binop": null }, - "start": 1702, - "end": 1703, + "start": 3851, + "end": 3852, "loc": { "start": { - "line": 53, - "column": 13 + "line": 91, + "column": 15 }, "end": { - "line": 53, - "column": 14 + "line": 91, + "column": 16 } } }, { "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": "FastNav", - "start": 1703, - "end": 1712, + "value": "!", + "start": 3852, + "end": 3853, "loc": { "start": { - "line": 53, - "column": 14 + "line": 91, + "column": 16 }, "end": { - "line": 53, - "column": 23 + "line": 91, + "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": 1712, - "end": 1713, + "value": "fastMode", + "start": 3853, + "end": 3861, "loc": { "start": { - "line": 53, - "column": 23 + "line": 91, + "column": 17 }, "end": { - "line": 53, - "column": 24 + "line": 91, + "column": 25 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -36368,25 +48811,24 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 1714, - "end": 1720, + "start": 3861, + "end": 3862, "loc": { "start": { - "line": 53, + "line": 91, "column": 25 }, "end": { - "line": 53, - "column": 31 + "line": 91, + "column": 26 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -36394,22 +48836,23 @@ "postfix": false, "binop": null }, - "start": 1720, - "end": 1721, + "start": 3863, + "end": 3864, "loc": { "start": { - "line": 53, - "column": 31 + "line": 91, + "column": 27 }, "end": { - "line": 53, - "column": 32 + "line": 91, + "column": 28 } } }, { "type": { - "label": ";", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -36420,25 +48863,25 @@ "binop": null, "updateContext": null }, - "start": 1721, - "end": 1722, + "value": "return", + "start": 3881, + "end": 3887, "loc": { "start": { - "line": 53, - "column": 32 + "line": 92, + "column": 16 }, "end": { - "line": 53, - "column": 33 + "line": 92, + "column": 22 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -36447,23 +48890,22 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 1732, - "end": 1736, + "start": 3887, + "end": 3888, "loc": { "start": { - "line": 55, - "column": 8 + "line": 92, + "column": 22 }, "end": { - "line": 55, - "column": 12 + "line": 92, + "column": 23 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -36471,18 +48913,17 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 1736, - "end": 1737, + "start": 3901, + "end": 3902, "loc": { "start": { - "line": 55, + "line": 93, "column": 12 }, "end": { - "line": 55, + "line": 93, "column": 13 } } @@ -36499,23 +48940,23 @@ "postfix": false, "binop": null }, - "value": "_pInterval", - "start": 1737, - "end": 1747, + "value": "timer", + "start": 3915, + "end": 3920, "loc": { "start": { - "line": 55, - "column": 13 + "line": 94, + "column": 12 }, "end": { - "line": 55, - "column": 23 + "line": 94, + "column": 17 } } }, { "type": { - "label": "=", + "label": "_=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -36526,24 +48967,23 @@ "binop": null, "updateContext": null }, - "value": "=", - "start": 1748, - "end": 1749, + "value": "-=", + "start": 3921, + "end": 3923, "loc": { "start": { - "line": 55, - "column": 24 + "line": 94, + "column": 18 }, "end": { - "line": 55, - "column": 25 + "line": 94, + "column": 20 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -36551,27 +48991,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 1750, - "end": 1754, + "value": "tickEvent", + "start": 3924, + "end": 3933, "loc": { "start": { - "line": 55, - "column": 26 + "line": 94, + "column": 21 }, "end": { - "line": 55, + "line": 94, "column": 30 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -36581,23 +49020,22 @@ "binop": null, "updateContext": null }, - "start": 1754, - "end": 1755, + "start": 3933, + "end": 3934, "loc": { "start": { - "line": 55, + "line": 94, "column": 30 }, "end": { - "line": 55, + "line": 94, "column": 31 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -36605,27 +49043,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 1764, - "end": 1768, + "value": "deltaTime", + "start": 3934, + "end": 3943, "loc": { "start": { - "line": 56, - "column": 8 + "line": 94, + "column": 31 }, "end": { - "line": 56, - "column": 12 + "line": 94, + "column": 40 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -36635,75 +49072,75 @@ "binop": null, "updateContext": null }, - "start": 1768, - "end": 1769, + "start": 3943, + "end": 3944, "loc": { "start": { - "line": 56, - "column": 12 + "line": 94, + "column": 40 }, "end": { - "line": 56, - "column": 13 + "line": 94, + "column": 41 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_fadeMillisecs", - "start": 1769, - "end": 1783, + "value": "if", + "start": 3957, + "end": 3959, "loc": { "start": { - "line": 56, - "column": 13 + "line": 95, + "column": 12 }, "end": { - "line": 56, - "column": 27 + "line": 95, + "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": 1784, - "end": 1785, + "start": 3960, + "end": 3961, "loc": { "start": { - "line": 56, - "column": 28 + "line": 95, + "column": 15 }, "end": { - "line": 56, - "column": 29 + "line": 95, + "column": 16 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -36711,26 +49148,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 500, - "start": 1786, - "end": 1789, + "value": "timer", + "start": 3961, + "end": 3966, "loc": { "start": { - "line": 56, - "column": 30 + "line": 95, + "column": 16 }, "end": { - "line": 56, - "column": 33 + "line": 95, + "column": 21 } } }, { "type": { - "label": ";", + "label": "", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -36738,28 +49174,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 7, "updateContext": null }, - "start": 1789, - "end": 1790, + "value": "<=", + "start": 3967, + "end": 3969, "loc": { "start": { - "line": 56, - "column": 33 + "line": 95, + "column": 22 }, "end": { - "line": 56, - "column": 34 + "line": 95, + "column": 24 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -36768,25 +49204,25 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 1800, - "end": 1803, + "value": 0, + "start": 3970, + "end": 3971, "loc": { "start": { - "line": 58, - "column": 8 + "line": 95, + "column": 25 }, "end": { - "line": 58, - "column": 11 + "line": 95, + "column": 26 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -36794,78 +49230,49 @@ "postfix": false, "binop": null }, - "value": "timeoutDuration", - "start": 1804, - "end": 1819, + "start": 3971, + "end": 3972, "loc": { "start": { - "line": 58, - "column": 12 + "line": 95, + "column": 26 }, "end": { - "line": 58, + "line": 95, "column": 27 } } }, { "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": 1820, - "end": 1821, + "start": 3973, + "end": 3974, "loc": { "start": { - "line": 58, + "line": 95, "column": 28 }, "end": { - "line": 58, + "line": 95, "column": 29 } } }, { "type": { - "label": "num", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": 600, - "start": 1822, - "end": 1825, - "loc": { - "start": { - "line": 58, - "column": 30 - }, - "end": { - "line": 58, - "column": 33 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -36875,60 +49282,42 @@ "binop": null, "updateContext": null }, - "start": 1825, - "end": 1826, - "loc": { - "start": { - "line": 58, - "column": 33 - }, - "end": { - "line": 58, - "column": 34 - } - } - }, - { - "type": "CommentLine", - "value": " Milliseconds", - "start": 1827, - "end": 1842, + "value": "if", + "start": 3991, + "end": 3993, "loc": { "start": { - "line": 58, - "column": 35 + "line": 96, + "column": 16 }, "end": { - "line": 58, - "column": 50 + "line": 96, + "column": 18 } } }, { "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": 1851, - "end": 1854, + "start": 3994, + "end": 3995, "loc": { "start": { - "line": 59, - "column": 8 + "line": 96, + "column": 19 }, "end": { - "line": 59, - "column": 11 + "line": 96, + "column": 20 } } }, @@ -36944,51 +49333,49 @@ "postfix": false, "binop": null }, - "value": "timer", - "start": 1855, - "end": 1860, + "value": "fastMode", + "start": 3995, + "end": 4003, "loc": { "start": { - "line": 59, - "column": 12 + "line": 96, + "column": 20 }, "end": { - "line": 59, - "column": 17 + "line": 96, + "column": 28 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 1861, - "end": 1862, + "start": 4003, + "end": 4004, "loc": { "start": { - "line": 59, - "column": 18 + "line": 96, + "column": 28 }, "end": { - "line": 59, - "column": 19 + "line": 96, + "column": 29 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -36997,25 +49384,25 @@ "postfix": false, "binop": null }, - "value": "timeoutDuration", - "start": 1863, - "end": 1878, + "start": 4005, + "end": 4006, "loc": { "start": { - "line": 59, - "column": 20 + "line": 96, + "column": 30 }, "end": { - "line": 59, - "column": 35 + "line": 96, + "column": 31 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -37024,23 +49411,23 @@ "binop": null, "updateContext": null }, - "start": 1878, - "end": 1879, + "value": "this", + "start": 4027, + "end": 4031, "loc": { "start": { - "line": 59, - "column": 35 + "line": 97, + "column": 20 }, "end": { - "line": 59, - "column": 36 + "line": 97, + "column": 24 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -37051,17 +49438,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 1888, - "end": 1891, + "start": 4031, + "end": 4032, "loc": { "start": { - "line": 60, - "column": 8 + "line": 97, + "column": 24 }, "end": { - "line": 60, - "column": 11 + "line": 97, + "column": 25 } } }, @@ -37077,72 +49463,67 @@ "postfix": false, "binop": null }, - "value": "fastMode", - "start": 1892, - "end": 1900, + "value": "_startFade", + "start": 4032, + "end": 4042, "loc": { "start": { - "line": 60, - "column": 12 + "line": 97, + "column": 25 }, "end": { - "line": 60, - "column": 20 + "line": 97, + "column": 35 } } }, { "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": 1901, - "end": 1902, + "start": 4042, + "end": 4043, "loc": { "start": { - "line": 60, - "column": 21 + "line": 97, + "column": 35 }, "end": { - "line": 60, - "column": 22 + "line": 97, + "column": 36 } } }, { "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": 1903, - "end": 1908, + "start": 4043, + "end": 4044, "loc": { "start": { - "line": 60, - "column": 23 + "line": 97, + "column": 36 }, "end": { - "line": 60, - "column": 28 + "line": 97, + "column": 37 } } }, @@ -37159,16 +49540,16 @@ "binop": null, "updateContext": null }, - "start": 1908, - "end": 1909, + "start": 4044, + "end": 4045, "loc": { "start": { - "line": 60, - "column": 28 + "line": 97, + "column": 37 }, "end": { - "line": 60, - "column": 29 + "line": 97, + "column": 38 } } }, @@ -37187,16 +49568,16 @@ "updateContext": null }, "value": "this", - "start": 1919, - "end": 1923, + "start": 4066, + "end": 4070, "loc": { "start": { - "line": 62, - "column": 8 + "line": 98, + "column": 20 }, "end": { - "line": 62, - "column": 12 + "line": 98, + "column": 24 } } }, @@ -37213,16 +49594,16 @@ "binop": null, "updateContext": null }, - "start": 1923, - "end": 1924, + "start": 4070, + "end": 4071, "loc": { "start": { - "line": 62, - "column": 12 + "line": 98, + "column": 24 }, "end": { - "line": 62, - "column": 13 + "line": 98, + "column": 25 } } }, @@ -37238,17 +49619,17 @@ "postfix": false, "binop": null }, - "value": "_onCameraMatrix", - "start": 1924, - "end": 1939, + "value": "_pInterval2", + "start": 4071, + "end": 4082, "loc": { "start": { - "line": 62, - "column": 13 + "line": 98, + "column": 25 }, "end": { - "line": 62, - "column": 28 + "line": 98, + "column": 36 } } }, @@ -37266,16 +49647,16 @@ "updateContext": null }, "value": "=", - "start": 1940, - "end": 1941, + "start": 4083, + "end": 4084, "loc": { "start": { - "line": 62, - "column": 29 + "line": 98, + "column": 37 }, "end": { - "line": 62, - "column": 30 + "line": 98, + "column": 38 } } }, @@ -37291,50 +49672,49 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 1942, - "end": 1948, + "value": "setTimeout", + "start": 4085, + "end": 4095, "loc": { "start": { - "line": 62, - "column": 31 + "line": 98, + "column": 39 }, "end": { - "line": 62, - "column": 37 + "line": 98, + "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": 1948, - "end": 1949, + "start": 4095, + "end": 4096, "loc": { "start": { - "line": 62, - "column": 37 + "line": 98, + "column": 49 }, "end": { - "line": 62, - "column": 38 + "line": 98, + "column": 50 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -37343,23 +49723,22 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 1949, - "end": 1954, + "start": 4096, + "end": 4097, "loc": { "start": { - "line": 62, - "column": 38 + "line": 98, + "column": 50 }, "end": { - "line": 62, - "column": 43 + "line": 98, + "column": 51 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -37367,71 +49746,85 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 1954, - "end": 1955, + "start": 4097, + "end": 4098, "loc": { "start": { - "line": 62, - "column": 43 + "line": 98, + "column": 51 }, "end": { - "line": 62, - "column": 44 + "line": 98, + "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": "camera", - "start": 1955, - "end": 1961, + "start": 4099, + "end": 4101, "loc": { "start": { - "line": 62, - "column": 44 + "line": 98, + "column": 53 }, "end": { - "line": 62, - "column": 50 + "line": 98, + "column": 55 } } }, { "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": 1961, - "end": 1962, + "start": 4102, + "end": 4103, "loc": { "start": { - "line": 62, - "column": 50 + "line": 98, + "column": 56 }, "end": { - "line": 62, - "column": 51 + "line": 98, + "column": 57 + } + } + }, + { + "type": "CommentLine", + "value": " Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624", + "start": 4104, + "end": 4174, + "loc": { + "start": { + "line": 98, + "column": 58 + }, + "end": { + "line": 98, + "column": 128 } } }, @@ -37447,48 +49840,49 @@ "postfix": false, "binop": null }, - "value": "on", - "start": 1962, - "end": 1964, + "value": "viewer", + "start": 4199, + "end": 4205, "loc": { "start": { - "line": 62, - "column": 51 + "line": 99, + "column": 24 }, "end": { - "line": 62, - "column": 53 + "line": 99, + "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": 1964, - "end": 1965, + "start": 4205, + "end": 4206, "loc": { "start": { - "line": 62, - "column": 53 + "line": 99, + "column": 30 }, "end": { - "line": 62, - "column": 54 + "line": 99, + "column": 31 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -37496,27 +49890,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "matrix", - "start": 1965, - "end": 1973, + "value": "scene", + "start": 4206, + "end": 4211, "loc": { "start": { - "line": 62, - "column": 54 + "line": 99, + "column": 31 }, "end": { - "line": 62, - "column": 62 + "line": 99, + "column": 36 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -37526,23 +49919,23 @@ "binop": null, "updateContext": null }, - "start": 1973, - "end": 1974, + "start": 4211, + "end": 4212, "loc": { "start": { - "line": 62, - "column": 62 + "line": 99, + "column": 36 }, "end": { - "line": 62, - "column": 63 + "line": 99, + "column": 37 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -37551,49 +49944,53 @@ "postfix": false, "binop": null }, - "start": 1975, - "end": 1976, + "value": "pbrEnabled", + "start": 4212, + "end": 4222, "loc": { "start": { - "line": 62, - "column": 64 + "line": 99, + "column": 37 }, "end": { - "line": 62, - "column": 65 + "line": 99, + "column": 47 } } }, { "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": 1976, - "end": 1977, + "value": "=", + "start": 4223, + "end": 4224, "loc": { "start": { - "line": 62, - "column": 65 + "line": 99, + "column": 48 }, "end": { - "line": 62, - "column": 66 + "line": 99, + "column": 49 } } }, { "type": { - "label": "=>", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -37602,41 +49999,43 @@ "binop": null, "updateContext": null }, - "start": 1978, - "end": 1980, + "value": "this", + "start": 4225, + "end": 4229, "loc": { "start": { - "line": 62, - "column": 67 + "line": 99, + "column": 50 }, "end": { - "line": 62, - "column": 69 + "line": 99, + "column": 54 } } }, { "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": 1981, - "end": 1982, + "start": 4229, + "end": 4230, "loc": { "start": { - "line": 62, - "column": 70 + "line": 99, + "column": 54 }, "end": { - "line": 62, - "column": 71 + "line": 99, + "column": 55 } } }, @@ -37652,44 +50051,43 @@ "postfix": false, "binop": null }, - "value": "timer", - "start": 1995, - "end": 2000, + "value": "_pbrEnabled", + "start": 4230, + "end": 4241, "loc": { "start": { - "line": 63, - "column": 12 + "line": 99, + "column": 55 }, "end": { - "line": 63, - "column": 17 + "line": 99, + "column": 66 } } }, { "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": 2001, - "end": 2002, + "start": 4241, + "end": 4242, "loc": { "start": { - "line": 63, - "column": 18 + "line": 99, + "column": 66 }, "end": { - "line": 63, - "column": 19 + "line": 99, + "column": 67 } } }, @@ -37705,24 +50103,24 @@ "postfix": false, "binop": null }, - "value": "timeoutDuration", - "start": 2003, - "end": 2018, + "value": "viewer", + "start": 4267, + "end": 4273, "loc": { "start": { - "line": 63, - "column": 20 + "line": 100, + "column": 24 }, "end": { - "line": 63, - "column": 35 + "line": 100, + "column": 30 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -37732,130 +50130,128 @@ "binop": null, "updateContext": null }, - "start": 2018, - "end": 2019, + "start": 4273, + "end": 4274, "loc": { "start": { - "line": 63, - "column": 35 + "line": 100, + "column": 30 }, "end": { - "line": 63, - "column": 36 + "line": 100, + "column": 31 } } }, { "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": 2032, - "end": 2034, + "value": "scene", + "start": 4274, + "end": 4279, "loc": { "start": { - "line": 64, - "column": 12 + "line": 100, + "column": 31 }, "end": { - "line": 64, - "column": 14 + "line": 100, + "column": 36 } } }, { "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": 2035, - "end": 2036, + "start": 4279, + "end": 4280, "loc": { "start": { - "line": 64, - "column": 15 + "line": 100, + "column": 36 }, "end": { - "line": 64, - "column": 16 + "line": 100, + "column": 37 } } }, { "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": 2036, - "end": 2037, + "value": "sao", + "start": 4280, + "end": 4283, "loc": { "start": { - "line": 64, - "column": 16 + "line": 100, + "column": 37 }, "end": { - "line": 64, - "column": 17 + "line": 100, + "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": "fastMode", - "start": 2037, - "end": 2045, + "start": 4283, + "end": 4284, "loc": { "start": { - "line": 64, - "column": 17 + "line": 100, + "column": 40 }, "end": { - "line": 64, - "column": 25 + "line": 100, + "column": 41 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -37863,41 +50259,44 @@ "postfix": false, "binop": null }, - "start": 2045, - "end": 2046, + "value": "enabled", + "start": 4284, + "end": 4291, "loc": { "start": { - "line": 64, - "column": 25 + "line": 100, + "column": 41 }, "end": { - "line": 64, - "column": 26 + "line": 100, + "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": 2047, - "end": 2048, + "value": "=", + "start": 4292, + "end": 4293, "loc": { "start": { - "line": 64, - "column": 27 + "line": 100, + "column": 49 }, "end": { - "line": 64, - "column": 28 + "line": 100, + "column": 50 } } }, @@ -37916,16 +50315,16 @@ "updateContext": null }, "value": "this", - "start": 2065, - "end": 2069, + "start": 4294, + "end": 4298, "loc": { "start": { - "line": 65, - "column": 16 + "line": 100, + "column": 51 }, "end": { - "line": 65, - "column": 20 + "line": 100, + "column": 55 } } }, @@ -37942,16 +50341,16 @@ "binop": null, "updateContext": null }, - "start": 2069, - "end": 2070, + "start": 4298, + "end": 4299, "loc": { "start": { - "line": 65, - "column": 20 + "line": 100, + "column": 55 }, "end": { - "line": 65, - "column": 21 + "line": 100, + "column": 56 } } }, @@ -37967,50 +50366,51 @@ "postfix": false, "binop": null }, - "value": "_cancelFade", - "start": 2070, - "end": 2081, + "value": "_saoEnabled", + "start": 4299, + "end": 4310, "loc": { "start": { - "line": 65, - "column": 21 + "line": 100, + "column": 56 }, "end": { - "line": 65, - "column": 32 + "line": 100, + "column": 67 } } }, { "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": 2081, - "end": 2082, + "start": 4310, + "end": 4311, "loc": { "start": { - "line": 65, - "column": 32 + "line": 100, + "column": 67 }, "end": { - "line": 65, - "column": 33 + "line": 100, + "column": 68 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -38018,23 +50418,24 @@ "postfix": false, "binop": null }, - "start": 2082, - "end": 2083, + "value": "viewer", + "start": 4336, + "end": 4342, "loc": { "start": { - "line": 65, - "column": 33 + "line": 101, + "column": 24 }, "end": { - "line": 65, - "column": 34 + "line": 101, + "column": 30 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -38044,16 +50445,16 @@ "binop": null, "updateContext": null }, - "start": 2083, - "end": 2084, + "start": 4342, + "end": 4343, "loc": { "start": { - "line": 65, - "column": 34 + "line": 101, + "column": 30 }, "end": { - "line": 65, - "column": 35 + "line": 101, + "column": 31 } } }, @@ -38069,17 +50470,17 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 2101, - "end": 2107, + "value": "scene", + "start": 4343, + "end": 4348, "loc": { "start": { - "line": 66, - "column": 16 + "line": 101, + "column": 31 }, "end": { - "line": 66, - "column": 22 + "line": 101, + "column": 36 } } }, @@ -38096,16 +50497,16 @@ "binop": null, "updateContext": null }, - "start": 2107, - "end": 2108, + "start": 4348, + "end": 4349, "loc": { "start": { - "line": 66, - "column": 22 + "line": 101, + "column": 36 }, "end": { - "line": 66, - "column": 23 + "line": 101, + "column": 37 } } }, @@ -38121,17 +50522,17 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 2108, - "end": 2113, + "value": "edgeMaterial", + "start": 4349, + "end": 4361, "loc": { "start": { - "line": 66, - "column": 23 + "line": 101, + "column": 37 }, "end": { - "line": 66, - "column": 28 + "line": 101, + "column": 49 } } }, @@ -38148,16 +50549,16 @@ "binop": null, "updateContext": null }, - "start": 2113, - "end": 2114, + "start": 4361, + "end": 4362, "loc": { "start": { - "line": 66, - "column": 28 + "line": 101, + "column": 49 }, "end": { - "line": 66, - "column": 29 + "line": 101, + "column": 50 } } }, @@ -38173,17 +50574,17 @@ "postfix": false, "binop": null }, - "value": "pbrEnabled", - "start": 2114, - "end": 2124, + "value": "edges", + "start": 4362, + "end": 4367, "loc": { "start": { - "line": 66, - "column": 29 + "line": 101, + "column": 50 }, "end": { - "line": 66, - "column": 39 + "line": 101, + "column": 55 } } }, @@ -38201,23 +50602,23 @@ "updateContext": null }, "value": "=", - "start": 2125, - "end": 2126, + "start": 4368, + "end": 4369, "loc": { "start": { - "line": 66, - "column": 40 + "line": 101, + "column": 56 }, "end": { - "line": 66, - "column": 41 + "line": 101, + "column": 57 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -38228,24 +50629,24 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 2127, - "end": 2132, + "value": "this", + "start": 4370, + "end": 4374, "loc": { "start": { - "line": 66, - "column": 42 + "line": 101, + "column": 58 }, "end": { - "line": 66, - "column": 47 + "line": 101, + "column": 62 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -38255,16 +50656,16 @@ "binop": null, "updateContext": null }, - "start": 2132, - "end": 2133, + "start": 4374, + "end": 4375, "loc": { "start": { - "line": 66, - "column": 47 + "line": 101, + "column": 62 }, "end": { - "line": 66, - "column": 48 + "line": 101, + "column": 63 } } }, @@ -38278,25 +50679,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null + }, + "value": "_edgesEnabled", + "start": 4375, + "end": 4388, + "loc": { + "start": { + "line": 101, + "column": 63 + }, + "end": { + "line": 101, + "column": 76 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null }, - "value": "viewer", - "start": 2150, - "end": 2156, + "start": 4388, + "end": 4389, "loc": { "start": { - "line": 67, - "column": 16 + "line": 101, + "column": 76 }, "end": { - "line": 67, - "column": 22 + "line": 101, + "column": 77 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -38304,53 +50731,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 2156, - "end": 2157, + "start": 4410, + "end": 4411, "loc": { "start": { - "line": 67, - "column": 22 + "line": 102, + "column": 20 }, "end": { - "line": 67, - "column": 23 + "line": 102, + "column": 21 } } }, { "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": "scene", - "start": 2157, - "end": 2162, + "start": 4411, + "end": 4412, "loc": { "start": { - "line": 67, - "column": 23 + "line": 102, + "column": 21 }, "end": { - "line": 67, - "column": 28 + "line": 102, + "column": 22 } } }, { "type": { - "label": ".", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -38359,24 +50785,25 @@ "binop": null, "updateContext": null }, - "start": 2162, - "end": 2163, + "value": 100, + "start": 4413, + "end": 4416, "loc": { "start": { - "line": 67, - "column": 28 + "line": 102, + "column": 23 }, "end": { - "line": 67, - "column": 29 + "line": 102, + "column": 26 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -38384,24 +50811,23 @@ "postfix": false, "binop": null }, - "value": "sao", - "start": 2163, - "end": 2166, + "start": 4416, + "end": 4417, "loc": { "start": { - "line": 67, - "column": 29 + "line": 102, + "column": 26 }, "end": { - "line": 67, - "column": 32 + "line": 102, + "column": 27 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -38411,16 +50837,16 @@ "binop": null, "updateContext": null }, - "start": 2166, - "end": 2167, + "start": 4417, + "end": 4418, "loc": { "start": { - "line": 67, - "column": 32 + "line": 102, + "column": 27 }, "end": { - "line": 67, - "column": 33 + "line": 102, + "column": 28 } } }, @@ -38436,17 +50862,17 @@ "postfix": false, "binop": null }, - "value": "enabled", - "start": 2167, - "end": 2174, + "value": "fastMode", + "start": 4440, + "end": 4448, "loc": { "start": { - "line": 67, - "column": 33 + "line": 104, + "column": 20 }, "end": { - "line": 67, - "column": 40 + "line": 104, + "column": 28 } } }, @@ -38464,16 +50890,16 @@ "updateContext": null }, "value": "=", - "start": 2175, - "end": 2176, + "start": 4449, + "end": 4450, "loc": { "start": { - "line": 67, - "column": 41 + "line": 104, + "column": 29 }, "end": { - "line": 67, - "column": 42 + "line": 104, + "column": 30 } } }, @@ -38492,16 +50918,16 @@ "updateContext": null }, "value": "false", - "start": 2177, - "end": 2182, + "start": 4451, + "end": 4456, "loc": { "start": { - "line": 67, - "column": 43 + "line": 104, + "column": 31 }, "end": { - "line": 67, - "column": 48 + "line": 104, + "column": 36 } } }, @@ -38518,24 +50944,24 @@ "binop": null, "updateContext": null }, - "start": 2182, - "end": 2183, + "start": 4456, + "end": 4457, "loc": { "start": { - "line": 67, - "column": 48 + "line": 104, + "column": 36 }, "end": { - "line": 67, - "column": 49 + "line": 104, + "column": 37 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -38543,23 +50969,22 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 2200, - "end": 2206, + "start": 4474, + "end": 4475, "loc": { "start": { - "line": 68, + "line": 105, "column": 16 }, "end": { - "line": 68, - "column": 22 + "line": 105, + "column": 17 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -38567,27 +50992,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 2206, - "end": 2207, + "start": 4488, + "end": 4489, "loc": { "start": { - "line": 68, - "column": 22 + "line": 106, + "column": 12 }, "end": { - "line": 68, - "column": 23 + "line": 106, + "column": 13 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -38595,23 +51019,22 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 2207, - "end": 2212, + "start": 4498, + "end": 4499, "loc": { "start": { - "line": 68, - "column": 23 + "line": 107, + "column": 8 }, "end": { - "line": 68, - "column": 28 + "line": 107, + "column": 9 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -38619,25 +51042,51 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "start": 4499, + "end": 4500, + "loc": { + "start": { + "line": 107, + "column": 9 + }, + "end": { + "line": 107, + "column": 10 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "start": 2212, - "end": 2213, + "start": 4500, + "end": 4501, "loc": { "start": { - "line": 68, - "column": 28 + "line": 107, + "column": 10 }, "end": { - "line": 68, - "column": 29 + "line": 107, + "column": 11 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -38645,19 +51094,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "edgeMaterial", - "start": 2213, - "end": 2225, + "value": "this", + "start": 4511, + "end": 4515, "loc": { "start": { - "line": 68, - "column": 29 + "line": 109, + "column": 8 }, "end": { - "line": 68, - "column": 41 + "line": 109, + "column": 12 } } }, @@ -38674,16 +51124,16 @@ "binop": null, "updateContext": null }, - "start": 2225, - "end": 2226, + "start": 4515, + "end": 4516, "loc": { "start": { - "line": 68, - "column": 41 + "line": 109, + "column": 12 }, "end": { - "line": 68, - "column": 42 + "line": 109, + "column": 13 } } }, @@ -38699,17 +51149,17 @@ "postfix": false, "binop": null }, - "value": "edges", - "start": 2226, - "end": 2231, + "value": "_onSceneObjectVisibility", + "start": 4516, + "end": 4540, "loc": { "start": { - "line": 68, - "column": 42 + "line": 109, + "column": 13 }, "end": { - "line": 68, - "column": 47 + "line": 109, + "column": 37 } } }, @@ -38727,23 +51177,22 @@ "updateContext": null }, "value": "=", - "start": 2232, - "end": 2233, + "start": 4541, + "end": 4542, "loc": { "start": { - "line": 68, - "column": 48 + "line": 109, + "column": 38 }, "end": { - "line": 68, - "column": 49 + "line": 109, + "column": 39 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -38751,27 +51200,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 2234, - "end": 2239, + "value": "viewer", + "start": 4543, + "end": 4549, "loc": { "start": { - "line": 68, - "column": 50 + "line": 109, + "column": 40 }, "end": { - "line": 68, - "column": 55 + "line": 109, + "column": 46 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -38781,16 +51229,16 @@ "binop": null, "updateContext": null }, - "start": 2239, - "end": 2240, + "start": 4549, + "end": 4550, "loc": { "start": { - "line": 68, - "column": 55 + "line": 109, + "column": 46 }, "end": { - "line": 68, - "column": 56 + "line": 109, + "column": 47 } } }, @@ -38806,51 +51254,49 @@ "postfix": false, "binop": null }, - "value": "fastMode", - "start": 2257, - "end": 2265, + "value": "scene", + "start": 4550, + "end": 4555, "loc": { "start": { - "line": 69, - "column": 16 + "line": 109, + "column": 47 }, "end": { - "line": 69, - "column": 24 + "line": 109, + "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": 2266, - "end": 2267, + "start": 4555, + "end": 4556, "loc": { "start": { - "line": 69, - "column": 25 + "line": 109, + "column": 52 }, "end": { - "line": 69, - "column": 26 + "line": 109, + "column": 53 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -38858,104 +51304,105 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 2268, - "end": 2272, + "value": "on", + "start": 4556, + "end": 4558, "loc": { "start": { - "line": 69, - "column": 27 + "line": 109, + "column": 53 }, "end": { - "line": 69, - "column": 31 + "line": 109, + "column": 55 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 2272, - "end": 2273, + "start": 4558, + "end": 4559, "loc": { "start": { - "line": 69, - "column": 31 + "line": 109, + "column": 55 }, "end": { - "line": 69, - "column": 32 + "line": 109, + "column": 56 } } }, { "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": 2286, - "end": 2287, + "value": "objectVisibility", + "start": 4559, + "end": 4577, "loc": { "start": { - "line": 70, - "column": 12 + "line": 109, + "column": 56 }, "end": { - "line": 70, - "column": 13 + "line": 109, + "column": 74 } } }, { "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": 2296, - "end": 2297, + "start": 4577, + "end": 4578, "loc": { "start": { - "line": 71, - "column": 8 + "line": 109, + "column": 74 }, "end": { - "line": 71, - "column": 9 + "line": 109, + "column": 75 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -38963,51 +51410,49 @@ "postfix": false, "binop": null }, - "start": 2297, - "end": 2298, + "start": 4579, + "end": 4580, "loc": { "start": { - "line": 71, - "column": 9 + "line": 109, + "column": 76 }, "end": { - "line": 71, - "column": 10 + "line": 109, + "column": 77 } } }, { "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": 2298, - "end": 2299, + "start": 4580, + "end": 4581, "loc": { "start": { - "line": 71, - "column": 10 + "line": 109, + "column": 77 }, "end": { - "line": 71, - "column": 11 + "line": 109, + "column": 78 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": "=>", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -39016,43 +51461,41 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 2309, - "end": 2313, + "start": 4582, + "end": 4584, "loc": { "start": { - "line": 73, - "column": 8 + "line": 109, + "column": 79 }, "end": { - "line": 73, - "column": 12 + "line": 109, + "column": 81 } } }, { "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": 2313, - "end": 2314, + "start": 4585, + "end": 4586, "loc": { "start": { - "line": 73, - "column": 12 + "line": 109, + "column": 82 }, "end": { - "line": 73, - "column": 13 + "line": 109, + "column": 83 } } }, @@ -39068,17 +51511,17 @@ "postfix": false, "binop": null }, - "value": "_onSceneTick", - "start": 2314, - "end": 2326, + "value": "timer", + "start": 4599, + "end": 4604, "loc": { "start": { - "line": 73, - "column": 13 + "line": 110, + "column": 12 }, "end": { - "line": 73, - "column": 25 + "line": 110, + "column": 17 } } }, @@ -39096,16 +51539,16 @@ "updateContext": null }, "value": "=", - "start": 2327, - "end": 2328, + "start": 4605, + "end": 4606, "loc": { "start": { - "line": 73, - "column": 26 + "line": 110, + "column": 18 }, "end": { - "line": 73, - "column": 27 + "line": 110, + "column": 19 } } }, @@ -39121,24 +51564,24 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 2329, - "end": 2335, + "value": "timeoutDuration", + "start": 4607, + "end": 4622, "loc": { "start": { - "line": 73, - "column": 28 + "line": 110, + "column": 20 }, "end": { - "line": 73, - "column": 34 + "line": 110, + "column": 35 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -39148,23 +51591,51 @@ "binop": null, "updateContext": null }, - "start": 2335, - "end": 2336, + "start": 4622, + "end": 4623, "loc": { "start": { - "line": 73, - "column": 34 + "line": 110, + "column": 35 }, "end": { - "line": 73, - "column": 35 + "line": 110, + "column": 36 } } }, { "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": 4636, + "end": 4638, + "loc": { + "start": { + "line": 111, + "column": 12 + }, + "end": { + "line": 111, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -39173,43 +51644,43 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 2336, - "end": 2341, + "start": 4639, + "end": 4640, "loc": { "start": { - "line": 73, - "column": 35 + "line": 111, + "column": 15 }, "end": { - "line": 73, - "column": 40 + "line": 111, + "column": 16 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 2341, - "end": 2342, + "value": "!", + "start": 4640, + "end": 4641, "loc": { "start": { - "line": 73, - "column": 40 + "line": 111, + "column": 16 }, "end": { - "line": 73, - "column": 41 + "line": 111, + "column": 17 } } }, @@ -39225,23 +51696,48 @@ "postfix": false, "binop": null }, - "value": "on", - "start": 2342, - "end": 2344, + "value": "fastMode", + "start": 4641, + "end": 4649, + "loc": { + "start": { + "line": 111, + "column": 17 + }, + "end": { + "line": 111, + "column": 25 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4649, + "end": 4650, "loc": { "start": { - "line": 73, - "column": 41 + "line": 111, + "column": 25 }, "end": { - "line": 73, - "column": 43 + "line": 111, + "column": 26 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -39251,22 +51747,23 @@ "postfix": false, "binop": null }, - "start": 2344, - "end": 2345, + "start": 4651, + "end": 4652, "loc": { "start": { - "line": 73, - "column": 43 + "line": 111, + "column": 27 }, "end": { - "line": 73, - "column": 44 + "line": 111, + "column": 28 } } }, { "type": { - "label": "string", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -39277,24 +51774,24 @@ "binop": null, "updateContext": null }, - "value": "tick", - "start": 2345, - "end": 2351, + "value": "this", + "start": 4669, + "end": 4673, "loc": { "start": { - "line": 73, - "column": 44 + "line": 112, + "column": 16 }, "end": { - "line": 73, - "column": 50 + "line": 112, + "column": 20 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -39304,23 +51801,23 @@ "binop": null, "updateContext": null }, - "start": 2351, - "end": 2352, + "start": 4673, + "end": 4674, "loc": { "start": { - "line": 73, - "column": 50 + "line": 112, + "column": 20 }, "end": { - "line": 73, - "column": 51 + "line": 112, + "column": 21 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -39329,23 +51826,24 @@ "postfix": false, "binop": null }, - "start": 2353, - "end": 2354, + "value": "_cancelFade", + "start": 4674, + "end": 4685, "loc": { "start": { - "line": 73, - "column": 52 + "line": 112, + "column": 21 }, "end": { - "line": 73, - "column": 53 + "line": 112, + "column": 32 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -39354,17 +51852,16 @@ "postfix": false, "binop": null }, - "value": "tickEvent", - "start": 2354, - "end": 2363, + "start": 4685, + "end": 4686, "loc": { "start": { - "line": 73, - "column": 53 + "line": 112, + "column": 32 }, "end": { - "line": 73, - "column": 62 + "line": 112, + "column": 33 } } }, @@ -39380,22 +51877,22 @@ "postfix": false, "binop": null }, - "start": 2363, - "end": 2364, + "start": 4686, + "end": 4687, "loc": { "start": { - "line": 73, - "column": 62 + "line": 112, + "column": 33 }, "end": { - "line": 73, - "column": 63 + "line": 112, + "column": 34 } } }, { "type": { - "label": "=>", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -39406,23 +51903,23 @@ "binop": null, "updateContext": null }, - "start": 2365, - "end": 2367, + "start": 4687, + "end": 4688, "loc": { "start": { - "line": 73, - "column": 64 + "line": 112, + "column": 34 }, "end": { - "line": 73, - "column": 66 + "line": 112, + "column": 35 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -39431,39 +51928,23 @@ "postfix": false, "binop": null }, - "start": 2368, - "end": 2369, - "loc": { - "start": { - "line": 73, - "column": 67 - }, - "end": { - "line": 73, - "column": 68 - } - } - }, - { - "type": "CommentLine", - "value": " Milliseconds", - "start": 2371, - "end": 2386, + "value": "viewer", + "start": 4705, + "end": 4711, "loc": { "start": { - "line": 73, - "column": 70 + "line": 113, + "column": 16 }, "end": { - "line": 73, - "column": 85 + "line": 113, + "column": 22 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -39474,24 +51955,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 2399, - "end": 2401, + "start": 4711, + "end": 4712, "loc": { "start": { - "line": 74, - "column": 12 + "line": 113, + "column": 22 }, "end": { - "line": 74, - "column": 14 + "line": 113, + "column": 23 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -39500,43 +51980,43 @@ "postfix": false, "binop": null }, - "start": 2402, - "end": 2403, + "value": "scene", + "start": 4712, + "end": 4717, "loc": { "start": { - "line": 74, - "column": 15 + "line": 113, + "column": 23 }, "end": { - "line": 74, - "column": 16 + "line": 113, + "column": 28 } } }, { "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": 2403, - "end": 2404, + "start": 4717, + "end": 4718, "loc": { "start": { - "line": 74, - "column": 16 + "line": 113, + "column": 28 }, "end": { - "line": 74, - "column": 17 + "line": 113, + "column": 29 } } }, @@ -39552,74 +52032,78 @@ "postfix": false, "binop": null }, - "value": "fastMode", - "start": 2404, - "end": 2412, + "value": "pbrEnabled", + "start": 4718, + "end": 4728, "loc": { "start": { - "line": 74, - "column": 17 + "line": 113, + "column": 29 }, "end": { - "line": 74, - "column": 25 + "line": 113, + "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": 2412, - "end": 2413, + "value": "=", + "start": 4729, + "end": 4730, "loc": { "start": { - "line": 74, - "column": 25 + "line": 113, + "column": 40 }, "end": { - "line": 74, - "column": 26 + "line": 113, + "column": 41 } } }, { "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": 2414, - "end": 2415, + "value": "false", + "start": 4731, + "end": 4736, "loc": { "start": { - "line": 74, - "column": 27 + "line": 113, + "column": 42 }, "end": { - "line": 74, - "column": 28 + "line": 113, + "column": 47 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -39630,49 +52114,48 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 2432, - "end": 2438, + "start": 4736, + "end": 4737, "loc": { "start": { - "line": 75, - "column": 16 + "line": 113, + "column": 47 }, "end": { - "line": 75, - "column": 22 + "line": 113, + "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": 2438, - "end": 2439, + "value": "viewer", + "start": 4754, + "end": 4760, "loc": { "start": { - "line": 75, - "column": 22 + "line": 114, + "column": 16 }, "end": { - "line": 75, - "column": 23 + "line": 114, + "column": 22 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -39680,18 +52163,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2452, - "end": 2453, + "start": 4760, + "end": 4761, "loc": { "start": { - "line": 76, - "column": 12 + "line": 114, + "column": 22 }, "end": { - "line": 76, - "column": 13 + "line": 114, + "column": 23 } } }, @@ -39707,44 +52191,43 @@ "postfix": false, "binop": null }, - "value": "timer", - "start": 2466, - "end": 2471, + "value": "scene", + "start": 4761, + "end": 4766, "loc": { "start": { - "line": 77, - "column": 12 + "line": 114, + "column": 23 }, "end": { - "line": 77, - "column": 17 + "line": 114, + "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": 2472, - "end": 2474, + "start": 4766, + "end": 4767, "loc": { "start": { - "line": 77, - "column": 18 + "line": 114, + "column": 28 }, "end": { - "line": 77, - "column": 20 + "line": 114, + "column": 29 } } }, @@ -39760,17 +52243,17 @@ "postfix": false, "binop": null }, - "value": "tickEvent", - "start": 2475, - "end": 2484, + "value": "sao", + "start": 4767, + "end": 4770, "loc": { "start": { - "line": 77, - "column": 21 + "line": 114, + "column": 29 }, "end": { - "line": 77, - "column": 30 + "line": 114, + "column": 32 } } }, @@ -39787,16 +52270,16 @@ "binop": null, "updateContext": null }, - "start": 2484, - "end": 2485, + "start": 4770, + "end": 4771, "loc": { "start": { - "line": 77, - "column": 30 + "line": 114, + "column": 32 }, "end": { - "line": 77, - "column": 31 + "line": 114, + "column": 33 } } }, @@ -39812,52 +52295,53 @@ "postfix": false, "binop": null }, - "value": "deltaTime", - "start": 2485, - "end": 2494, + "value": "enabled", + "start": 4771, + "end": 4778, "loc": { "start": { - "line": 77, - "column": 31 + "line": 114, + "column": 33 }, "end": { - "line": 77, + "line": 114, "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": 2494, - "end": 2495, + "value": "=", + "start": 4779, + "end": 4780, "loc": { "start": { - "line": 77, - "column": 40 + "line": 114, + "column": 41 }, "end": { - "line": 77, - "column": 41 + "line": 114, + "column": 42 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "false", + "keyword": "false", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -39866,42 +52350,43 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 2508, - "end": 2510, + "value": "false", + "start": 4781, + "end": 4786, "loc": { "start": { - "line": 78, - "column": 12 + "line": 114, + "column": 43 }, "end": { - "line": 78, - "column": 14 + "line": 114, + "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": 2511, - "end": 2512, + "start": 4786, + "end": 4787, "loc": { "start": { - "line": 78, - "column": 15 + "line": 114, + "column": 48 }, "end": { - "line": 78, - "column": 16 + "line": 114, + "column": 49 } } }, @@ -39917,50 +52402,49 @@ "postfix": false, "binop": null }, - "value": "timer", - "start": 2512, - "end": 2517, + "value": "viewer", + "start": 4804, + "end": 4810, "loc": { "start": { - "line": 78, + "line": 115, "column": 16 }, "end": { - "line": 78, - "column": 21 + "line": 115, + "column": 22 } } }, { "type": { - "label": "", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": "<=", - "start": 2518, - "end": 2520, + "start": 4810, + "end": 4811, "loc": { "start": { - "line": 78, + "line": 115, "column": 22 }, "end": { - "line": 78, - "column": 24 + "line": 115, + "column": 23 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -39968,26 +52452,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 2521, - "end": 2522, + "value": "scene", + "start": 4811, + "end": 4816, "loc": { "start": { - "line": 78, - "column": 25 + "line": 115, + "column": 23 }, "end": { - "line": 78, - "column": 26 + "line": 115, + "column": 28 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -39995,25 +52478,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2522, - "end": 2523, + "start": 4816, + "end": 4817, "loc": { "start": { - "line": 78, - "column": 26 + "line": 115, + "column": 28 }, "end": { - "line": 78, - "column": 27 + "line": 115, + "column": 29 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -40022,23 +52506,23 @@ "postfix": false, "binop": null }, - "start": 2524, - "end": 2525, + "value": "edgeMaterial", + "start": 4817, + "end": 4829, "loc": { "start": { - "line": 78, - "column": 28 + "line": 115, + "column": 29 }, "end": { - "line": 78, - "column": 29 + "line": 115, + "column": 41 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -40049,24 +52533,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 2542, - "end": 2544, + "start": 4829, + "end": 4830, "loc": { "start": { - "line": 79, - "column": 16 + "line": 115, + "column": 41 }, "end": { - "line": 79, - "column": 18 + "line": 115, + "column": 42 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -40075,99 +52558,104 @@ "postfix": false, "binop": null }, - "start": 2545, - "end": 2546, + "value": "edges", + "start": 4830, + "end": 4835, "loc": { "start": { - "line": 79, - "column": 19 + "line": 115, + "column": 42 }, "end": { - "line": 79, - "column": 20 + "line": 115, + "column": 47 } } }, { "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": "fastMode", - "start": 2546, - "end": 2554, + "value": "=", + "start": 4836, + "end": 4837, "loc": { "start": { - "line": 79, - "column": 20 + "line": 115, + "column": 48 }, "end": { - "line": 79, - "column": 28 + "line": 115, + "column": 49 } } }, { "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": 2554, - "end": 2555, + "value": "false", + "start": 4838, + "end": 4843, "loc": { "start": { - "line": 79, - "column": 28 + "line": 115, + "column": 50 }, "end": { - "line": 79, - "column": 29 + "line": 115, + "column": 55 } } }, { "type": { - "label": "{", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2556, - "end": 2557, + "start": 4843, + "end": 4844, "loc": { "start": { - "line": 79, - "column": 30 + "line": 115, + "column": 55 }, "end": { - "line": 79, - "column": 31 + "line": 115, + "column": 56 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -40175,156 +52663,133 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 2578, - "end": 2582, + "value": "fastMode", + "start": 4861, + "end": 4869, "loc": { "start": { - "line": 80, - "column": 20 + "line": 116, + "column": 16 }, "end": { - "line": 80, + "line": 116, "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": 2582, - "end": 2583, - "loc": { - "start": { - "line": 80, - "column": 24 - }, - "end": { - "line": 80, - "column": 25 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "_startFade", - "start": 2583, - "end": 2593, + "value": "=", + "start": 4870, + "end": 4871, "loc": { "start": { - "line": 80, + "line": 116, "column": 25 }, "end": { - "line": 80, - "column": 35 + "line": 116, + "column": 26 } } }, { "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": 2593, - "end": 2594, + "value": "true", + "start": 4872, + "end": 4876, "loc": { "start": { - "line": 80, - "column": 35 + "line": 116, + "column": 27 }, "end": { - "line": 80, - "column": 36 + "line": 116, + "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": 2594, - "end": 2595, + "start": 4876, + "end": 4877, "loc": { "start": { - "line": 80, - "column": 36 + "line": 116, + "column": 31 }, "end": { - "line": 80, - "column": 37 + "line": 116, + "column": 32 } } }, { "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": 2595, - "end": 2596, + "start": 4890, + "end": 4891, "loc": { "start": { - "line": 80, - "column": 37 + "line": 117, + "column": 12 }, "end": { - "line": 80, - "column": 38 + "line": 117, + "column": 13 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -40332,23 +52797,22 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 2617, - "end": 2623, + "start": 4900, + "end": 4901, "loc": { "start": { - "line": 81, - "column": 20 + "line": 118, + "column": 8 }, "end": { - "line": 81, - "column": 26 + "line": 118, + "column": 9 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -40356,51 +52820,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 2623, - "end": 2624, + "start": 4901, + "end": 4902, "loc": { "start": { - "line": 81, - "column": 26 + "line": 118, + "column": 9 }, "end": { - "line": 81, - "column": 27 + "line": 118, + "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": "scene", - "start": 2624, - "end": 2629, + "start": 4902, + "end": 4903, "loc": { "start": { - "line": 81, - "column": 27 + "line": 118, + "column": 10 }, "end": { - "line": 81, - "column": 32 + "line": 118, + "column": 11 } } }, { "type": { - "label": ".", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -40411,16 +52875,17 @@ "binop": null, "updateContext": null }, - "start": 2629, - "end": 2630, + "value": "let", + "start": 4913, + "end": 4916, "loc": { "start": { - "line": 81, - "column": 32 + "line": 120, + "column": 8 }, "end": { - "line": 81, - "column": 33 + "line": 120, + "column": 11 } } }, @@ -40436,17 +52901,17 @@ "postfix": false, "binop": null }, - "value": "pbrEnabled", - "start": 2630, - "end": 2640, + "value": "down", + "start": 4917, + "end": 4921, "loc": { "start": { - "line": 81, - "column": 33 + "line": 120, + "column": 12 }, "end": { - "line": 81, - "column": 43 + "line": 120, + "column": 16 } } }, @@ -40464,23 +52929,23 @@ "updateContext": null }, "value": "=", - "start": 2641, - "end": 2642, + "start": 4922, + "end": 4923, "loc": { "start": { - "line": 81, - "column": 44 + "line": 120, + "column": 17 }, "end": { - "line": 81, - "column": 45 + "line": 120, + "column": 18 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -40491,17 +52956,17 @@ "binop": null, "updateContext": null }, - "value": "true", - "start": 2643, - "end": 2647, + "value": "false", + "start": 4924, + "end": 4929, "loc": { "start": { - "line": 81, - "column": 46 + "line": 120, + "column": 19 }, "end": { - "line": 81, - "column": 50 + "line": 120, + "column": 24 } } }, @@ -40518,22 +52983,23 @@ "binop": null, "updateContext": null }, - "start": 2647, - "end": 2648, + "start": 4929, + "end": 4930, "loc": { "start": { - "line": 81, - "column": 50 + "line": 120, + "column": 24 }, "end": { - "line": 81, - "column": 51 + "line": 120, + "column": 25 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -40541,19 +53007,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "viewer", - "start": 2669, - "end": 2675, + "value": "this", + "start": 4940, + "end": 4944, "loc": { "start": { - "line": 82, - "column": 20 + "line": 122, + "column": 8 }, "end": { - "line": 82, - "column": 26 + "line": 122, + "column": 12 } } }, @@ -40570,16 +53037,16 @@ "binop": null, "updateContext": null }, - "start": 2675, - "end": 2676, + "start": 4944, + "end": 4945, "loc": { "start": { - "line": 82, - "column": 26 + "line": 122, + "column": 12 }, "end": { - "line": 82, - "column": 27 + "line": 122, + "column": 13 } } }, @@ -40595,43 +53062,44 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 2676, - "end": 2681, + "value": "_onSceneMouseDown", + "start": 4945, + "end": 4962, "loc": { "start": { - "line": 82, - "column": 27 + "line": 122, + "column": 13 }, "end": { - "line": 82, - "column": 32 + "line": 122, + "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": 2681, - "end": 2682, + "value": "=", + "start": 4963, + "end": 4964, "loc": { "start": { - "line": 82, - "column": 32 + "line": 122, + "column": 31 }, "end": { - "line": 82, - "column": 33 + "line": 122, + "column": 32 } } }, @@ -40647,17 +53115,17 @@ "postfix": false, "binop": null }, - "value": "sao", - "start": 2682, - "end": 2685, + "value": "viewer", + "start": 4965, + "end": 4971, "loc": { "start": { - "line": 82, + "line": 122, "column": 33 }, "end": { - "line": 82, - "column": 36 + "line": 122, + "column": 39 } } }, @@ -40674,16 +53142,16 @@ "binop": null, "updateContext": null }, - "start": 2685, - "end": 2686, + "start": 4971, + "end": 4972, "loc": { "start": { - "line": 82, - "column": 36 + "line": 122, + "column": 39 }, "end": { - "line": 82, - "column": 37 + "line": 122, + "column": 40 } } }, @@ -40699,51 +53167,49 @@ "postfix": false, "binop": null }, - "value": "enabled", - "start": 2686, - "end": 2693, + "value": "scene", + "start": 4972, + "end": 4977, "loc": { "start": { - "line": 82, - "column": 37 + "line": 122, + "column": 40 }, "end": { - "line": 82, - "column": 44 + "line": 122, + "column": 45 } } }, { "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": 2694, - "end": 2695, + "start": 4977, + "end": 4978, "loc": { "start": { - "line": 82, + "line": 122, "column": 45 }, "end": { - "line": 82, + "line": 122, "column": 46 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -40751,27 +53217,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 2696, - "end": 2700, + "value": "input", + "start": 4978, + "end": 4983, "loc": { "start": { - "line": 82, - "column": 47 + "line": 122, + "column": 46 }, "end": { - "line": 82, + "line": 122, "column": 51 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -40781,15 +53246,15 @@ "binop": null, "updateContext": null }, - "start": 2700, - "end": 2701, + "start": 4983, + "end": 4984, "loc": { "start": { - "line": 82, + "line": 122, "column": 51 }, "end": { - "line": 82, + "line": 122, "column": 52 } } @@ -40806,49 +53271,48 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 2722, - "end": 2728, + "value": "on", + "start": 4984, + "end": 4986, "loc": { "start": { - "line": 83, - "column": 20 + "line": 122, + "column": 52 }, "end": { - "line": 83, - "column": 26 + "line": 122, + "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": 2728, - "end": 2729, + "start": 4986, + "end": 4987, "loc": { "start": { - "line": 83, - "column": 26 + "line": 122, + "column": 54 }, "end": { - "line": 83, - "column": 27 + "line": 122, + "column": 55 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -40856,26 +53320,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "scene", - "start": 2729, - "end": 2734, + "value": "mousedown", + "start": 4987, + "end": 4998, "loc": { "start": { - "line": 83, - "column": 27 + "line": 122, + "column": 55 }, "end": { - "line": 83, - "column": 32 + "line": 122, + "column": 66 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -40885,23 +53350,23 @@ "binop": null, "updateContext": null }, - "start": 2734, - "end": 2735, + "start": 4998, + "end": 4999, "loc": { "start": { - "line": 83, - "column": 32 + "line": 122, + "column": 66 }, "end": { - "line": 83, - "column": 33 + "line": 122, + "column": 67 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -40910,23 +53375,22 @@ "postfix": false, "binop": null }, - "value": "edgeMaterial", - "start": 2735, - "end": 2747, + "start": 5000, + "end": 5001, "loc": { "start": { - "line": 83, - "column": 33 + "line": 122, + "column": 68 }, "end": { - "line": 83, - "column": 45 + "line": 122, + "column": 69 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -40934,79 +53398,75 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 2747, - "end": 2748, + "start": 5001, + "end": 5002, "loc": { "start": { - "line": 83, - "column": 45 + "line": 122, + "column": 69 }, "end": { - "line": 83, - "column": 46 + "line": 122, + "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": "edges", - "start": 2748, - "end": 2753, + "start": 5003, + "end": 5005, "loc": { "start": { - "line": 83, - "column": 46 + "line": 122, + "column": 71 }, "end": { - "line": 83, - "column": 51 + "line": 122, + "column": 73 } } }, { "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": 2754, - "end": 2755, + "start": 5006, + "end": 5007, "loc": { "start": { - "line": 83, - "column": 52 + "line": 122, + "column": 74 }, "end": { - "line": 83, - "column": 53 + "line": 122, + "column": 75 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -41014,46 +53474,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 2756, - "end": 2760, + "value": "timer", + "start": 5020, + "end": 5025, "loc": { "start": { - "line": 83, - "column": 54 + "line": 123, + "column": 12 }, "end": { - "line": 83, - "column": 58 + "line": 123, + "column": 17 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 2760, - "end": 2761, + "value": "=", + "start": 5026, + "end": 5027, "loc": { "start": { - "line": 83, - "column": 58 + "line": 123, + "column": 18 }, "end": { - "line": 83, - "column": 59 + "line": 123, + "column": 19 } } }, @@ -41069,79 +53529,51 @@ "postfix": false, "binop": null }, - "value": "fastMode", - "start": 2782, - "end": 2790, + "value": "timeoutDuration", + "start": 5028, + "end": 5043, "loc": { "start": { - "line": 84, + "line": 123, "column": 20 }, "end": { - "line": 84, - "column": 28 + "line": 123, + "column": 35 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 2791, - "end": 2792, - "loc": { - "start": { - "line": 84, - "column": 29 - }, - "end": { - "line": 84, - "column": 30 - } - } - }, - { - "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": 2793, - "end": 2798, + "start": 5043, + "end": 5044, "loc": { "start": { - "line": 84, - "column": 31 + "line": 123, + "column": 35 }, "end": { - "line": 84, + "line": 123, "column": 36 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -41151,24 +53583,25 @@ "binop": null, "updateContext": null }, - "start": 2798, - "end": 2799, + "value": "if", + "start": 5057, + "end": 5059, "loc": { "start": { - "line": 84, - "column": 36 + "line": 124, + "column": 12 }, "end": { - "line": 84, - "column": 37 + "line": 124, + "column": 14 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -41176,49 +53609,51 @@ "postfix": false, "binop": null }, - "start": 2816, - "end": 2817, + "start": 5060, + "end": 5061, "loc": { "start": { - "line": 85, - "column": 16 + "line": 124, + "column": 15 }, "end": { - "line": 85, - "column": 17 + "line": 124, + "column": 16 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2830, - "end": 2831, + "value": "!", + "start": 5061, + "end": 5062, "loc": { "start": { - "line": 86, - "column": 12 + "line": 124, + "column": 16 }, "end": { - "line": 86, - "column": 13 + "line": 124, + "column": 17 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -41226,16 +53661,17 @@ "postfix": false, "binop": null }, - "start": 2840, - "end": 2841, + "value": "fastMode", + "start": 5062, + "end": 5070, "loc": { "start": { - "line": 87, - "column": 8 + "line": 124, + "column": 17 }, "end": { - "line": 87, - "column": 9 + "line": 124, + "column": 25 } } }, @@ -41251,42 +53687,41 @@ "postfix": false, "binop": null }, - "start": 2841, - "end": 2842, + "start": 5070, + "end": 5071, "loc": { "start": { - "line": 87, - "column": 9 + "line": 124, + "column": 25 }, "end": { - "line": 87, - "column": 10 + "line": 124, + "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": 2842, - "end": 2843, + "start": 5072, + "end": 5073, "loc": { "start": { - "line": 87, - "column": 10 + "line": 124, + "column": 27 }, "end": { - "line": 87, - "column": 11 + "line": 124, + "column": 28 } } }, @@ -41305,16 +53740,16 @@ "updateContext": null }, "value": "this", - "start": 2853, - "end": 2857, + "start": 5090, + "end": 5094, "loc": { "start": { - "line": 89, - "column": 8 + "line": 125, + "column": 16 }, "end": { - "line": 89, - "column": 12 + "line": 125, + "column": 20 } } }, @@ -41331,16 +53766,16 @@ "binop": null, "updateContext": null }, - "start": 2857, - "end": 2858, + "start": 5094, + "end": 5095, "loc": { "start": { - "line": 89, - "column": 12 + "line": 125, + "column": 20 }, "end": { - "line": 89, - "column": 13 + "line": 125, + "column": 21 } } }, @@ -41356,52 +53791,50 @@ "postfix": false, "binop": null }, - "value": "_onSceneObjectVisibility", - "start": 2858, - "end": 2882, + "value": "_cancelFade", + "start": 5095, + "end": 5106, "loc": { "start": { - "line": 89, - "column": 13 + "line": 125, + "column": 21 }, "end": { - "line": 89, - "column": 37 + "line": 125, + "column": 32 } } }, { "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": 2883, - "end": 2884, + "start": 5106, + "end": 5107, "loc": { "start": { - "line": 89, - "column": 38 + "line": 125, + "column": 32 }, "end": { - "line": 89, - "column": 39 + "line": 125, + "column": 33 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -41409,24 +53842,23 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 2885, - "end": 2891, + "start": 5107, + "end": 5108, "loc": { "start": { - "line": 89, - "column": 40 + "line": 125, + "column": 33 }, "end": { - "line": 89, - "column": 46 + "line": 125, + "column": 34 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -41436,16 +53868,16 @@ "binop": null, "updateContext": null }, - "start": 2891, - "end": 2892, + "start": 5108, + "end": 5109, "loc": { "start": { - "line": 89, - "column": 46 + "line": 125, + "column": 34 }, "end": { - "line": 89, - "column": 47 + "line": 125, + "column": 35 } } }, @@ -41461,17 +53893,17 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 2892, - "end": 2897, + "value": "viewer", + "start": 5126, + "end": 5132, "loc": { "start": { - "line": 89, - "column": 47 + "line": 126, + "column": 16 }, "end": { - "line": 89, - "column": 52 + "line": 126, + "column": 22 } } }, @@ -41488,16 +53920,16 @@ "binop": null, "updateContext": null }, - "start": 2897, - "end": 2898, + "start": 5132, + "end": 5133, "loc": { "start": { - "line": 89, - "column": 52 + "line": 126, + "column": 22 }, "end": { - "line": 89, - "column": 53 + "line": 126, + "column": 23 } } }, @@ -41513,48 +53945,49 @@ "postfix": false, "binop": null }, - "value": "on", - "start": 2898, - "end": 2900, + "value": "scene", + "start": 5133, + "end": 5138, "loc": { "start": { - "line": 89, - "column": 53 + "line": 126, + "column": 23 }, "end": { - "line": 89, - "column": 55 + "line": 126, + "column": 28 } } }, { "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": 2900, - "end": 2901, + "start": 5138, + "end": 5139, "loc": { "start": { - "line": 89, - "column": 55 + "line": 126, + "column": 28 }, "end": { - "line": 89, - "column": 56 + "line": 126, + "column": 29 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -41562,147 +53995,152 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "objectVisibility", - "start": 2901, - "end": 2919, + "value": "pbrEnabled", + "start": 5139, + "end": 5149, "loc": { "start": { - "line": 89, - "column": 56 + "line": 126, + "column": 29 }, "end": { - "line": 89, - "column": 74 + "line": 126, + "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": 2919, - "end": 2920, + "value": "=", + "start": 5150, + "end": 5151, "loc": { "start": { - "line": 89, - "column": 74 + "line": 126, + "column": 40 }, "end": { - "line": 89, - "column": 75 + "line": 126, + "column": 41 } } }, { "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": 2921, - "end": 2922, + "value": "false", + "start": 5152, + "end": 5157, "loc": { "start": { - "line": 89, - "column": 76 + "line": 126, + "column": 42 }, "end": { - "line": 89, - "column": 77 + "line": 126, + "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": 2922, - "end": 2923, + "start": 5157, + "end": 5158, "loc": { "start": { - "line": 89, - "column": 77 + "line": 126, + "column": 47 }, "end": { - "line": 89, - "column": 78 + "line": 126, + "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": 2924, - "end": 2926, + "value": "viewer", + "start": 5175, + "end": 5181, "loc": { "start": { - "line": 89, - "column": 79 + "line": 127, + "column": 16 }, "end": { - "line": 89, - "column": 81 + "line": 127, + "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": 2927, - "end": 2928, + "start": 5181, + "end": 5182, "loc": { "start": { - "line": 89, - "column": 82 + "line": 127, + "column": 22 }, "end": { - "line": 89, - "column": 83 + "line": 127, + "column": 23 } } }, @@ -41718,44 +54156,43 @@ "postfix": false, "binop": null }, - "value": "timer", - "start": 2941, - "end": 2946, + "value": "scene", + "start": 5182, + "end": 5187, "loc": { "start": { - "line": 90, - "column": 12 + "line": 127, + "column": 23 }, "end": { - "line": 90, - "column": 17 + "line": 127, + "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": 2947, - "end": 2948, + "start": 5187, + "end": 5188, "loc": { "start": { - "line": 90, - "column": 18 + "line": 127, + "column": 28 }, "end": { - "line": 90, - "column": 19 + "line": 127, + "column": 29 } } }, @@ -41771,50 +54208,23 @@ "postfix": false, "binop": null }, - "value": "timeoutDuration", - "start": 2949, - "end": 2964, - "loc": { - "start": { - "line": 90, - "column": 20 - }, - "end": { - "line": 90, - "column": 35 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 2964, - "end": 2965, + "value": "sao", + "start": 5188, + "end": 5191, "loc": { "start": { - "line": 90, - "column": 35 + "line": 127, + "column": 29 }, "end": { - "line": 90, - "column": 36 + "line": 127, + "column": 32 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -41825,24 +54235,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 2978, - "end": 2980, + "start": 5191, + "end": 5192, "loc": { "start": { - "line": 91, - "column": 12 + "line": 127, + "column": 32 }, "end": { - "line": 91, - "column": 14 + "line": 127, + "column": 33 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -41851,49 +54260,51 @@ "postfix": false, "binop": null }, - "start": 2981, - "end": 2982, + "value": "enabled", + "start": 5192, + "end": 5199, "loc": { "start": { - "line": 91, - "column": 15 + "line": 127, + "column": 33 }, "end": { - "line": 91, - "column": 16 + "line": 127, + "column": 40 } } }, { "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": 2982, - "end": 2983, + "value": "=", + "start": 5200, + "end": 5201, "loc": { "start": { - "line": 91, - "column": 16 + "line": 127, + "column": 41 }, "end": { - "line": 91, - "column": 17 + "line": 127, + "column": 42 } } }, { "type": { - "label": "name", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -41901,76 +54312,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "value": "fastMode", - "start": 2983, - "end": 2991, - "loc": { - "start": { - "line": 91, - "column": 17 - }, - "end": { - "line": 91, - "column": 25 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2991, - "end": 2992, + "value": "false", + "start": 5202, + "end": 5207, "loc": { "start": { - "line": 91, - "column": 25 + "line": 127, + "column": 43 }, "end": { - "line": 91, - "column": 26 + "line": 127, + "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": 2993, - "end": 2994, + "start": 5207, + "end": 5208, "loc": { "start": { - "line": 91, - "column": 27 + "line": 127, + "column": 48 }, "end": { - "line": 91, - "column": 28 + "line": 127, + "column": 49 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -41978,20 +54365,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 3011, - "end": 3015, + "value": "viewer", + "start": 5225, + "end": 5231, "loc": { "start": { - "line": 92, + "line": 128, "column": 16 }, "end": { - "line": 92, - "column": 20 + "line": 128, + "column": 22 } } }, @@ -42008,16 +54394,16 @@ "binop": null, "updateContext": null }, - "start": 3015, - "end": 3016, + "start": 5231, + "end": 5232, "loc": { "start": { - "line": 92, - "column": 20 + "line": 128, + "column": 22 }, "end": { - "line": 92, - "column": 21 + "line": 128, + "column": 23 } } }, @@ -42033,50 +54419,51 @@ "postfix": false, "binop": null }, - "value": "_cancelFade", - "start": 3016, - "end": 3027, + "value": "scene", + "start": 5232, + "end": 5237, "loc": { "start": { - "line": 92, - "column": 21 + "line": 128, + "column": 23 }, "end": { - "line": 92, - "column": 32 + "line": 128, + "column": 28 } } }, { "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": 3027, - "end": 3028, + "start": 5237, + "end": 5238, "loc": { "start": { - "line": 92, - "column": 32 + "line": 128, + "column": 28 }, "end": { - "line": 92, - "column": 33 + "line": 128, + "column": 29 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -42084,23 +54471,24 @@ "postfix": false, "binop": null }, - "start": 3028, - "end": 3029, + "value": "edgeMaterial", + "start": 5238, + "end": 5250, "loc": { "start": { - "line": 92, - "column": 33 + "line": 128, + "column": 29 }, "end": { - "line": 92, - "column": 34 + "line": 128, + "column": 41 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -42110,16 +54498,16 @@ "binop": null, "updateContext": null }, - "start": 3029, - "end": 3030, + "start": 5250, + "end": 5251, "loc": { "start": { - "line": 92, - "column": 34 + "line": 128, + "column": 41 }, "end": { - "line": 92, - "column": 35 + "line": 128, + "column": 42 } } }, @@ -42135,49 +54523,51 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 3047, - "end": 3053, + "value": "edges", + "start": 5251, + "end": 5256, "loc": { "start": { - "line": 93, - "column": 16 + "line": 128, + "column": 42 }, "end": { - "line": 93, - "column": 22 + "line": 128, + "column": 47 } } }, { "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": 3053, - "end": 3054, + "value": "=", + "start": 5257, + "end": 5258, "loc": { "start": { - "line": 93, - "column": 22 + "line": 128, + "column": 48 }, "end": { - "line": 93, - "column": 23 + "line": 128, + "column": 49 } } }, { "type": { - "label": "name", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -42185,26 +54575,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "scene", - "start": 3054, - "end": 3059, + "value": "false", + "start": 5259, + "end": 5264, "loc": { "start": { - "line": 93, - "column": 23 + "line": 128, + "column": 50 }, "end": { - "line": 93, - "column": 28 + "line": 128, + "column": 55 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -42214,16 +54605,16 @@ "binop": null, "updateContext": null }, - "start": 3059, - "end": 3060, + "start": 5264, + "end": 5265, "loc": { "start": { - "line": 93, - "column": 28 + "line": 128, + "column": 55 }, "end": { - "line": 93, - "column": 29 + "line": 128, + "column": 56 } } }, @@ -42239,17 +54630,17 @@ "postfix": false, "binop": null }, - "value": "pbrEnabled", - "start": 3060, - "end": 3070, + "value": "fastMode", + "start": 5282, + "end": 5290, "loc": { "start": { - "line": 93, - "column": 29 + "line": 129, + "column": 16 }, "end": { - "line": 93, - "column": 39 + "line": 129, + "column": 24 } } }, @@ -42267,23 +54658,23 @@ "updateContext": null }, "value": "=", - "start": 3071, - "end": 3072, + "start": 5291, + "end": 5292, "loc": { "start": { - "line": 93, - "column": 40 + "line": 129, + "column": 25 }, "end": { - "line": 93, - "column": 41 + "line": 129, + "column": 26 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -42294,17 +54685,17 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 3073, - "end": 3078, + "value": "true", + "start": 5293, + "end": 5297, "loc": { "start": { - "line": 93, - "column": 42 + "line": 129, + "column": 27 }, "end": { - "line": 93, - "column": 47 + "line": 129, + "column": 31 } } }, @@ -42321,24 +54712,24 @@ "binop": null, "updateContext": null }, - "start": 3078, - "end": 3079, + "start": 5297, + "end": 5298, "loc": { "start": { - "line": 93, - "column": 47 + "line": 129, + "column": 31 }, "end": { - "line": 93, - "column": 48 + "line": 129, + "column": 32 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -42346,77 +54737,78 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 3096, - "end": 3102, + "start": 5311, + "end": 5312, "loc": { "start": { - "line": 94, - "column": 16 + "line": 130, + "column": 12 }, "end": { - "line": 94, - "column": 22 + "line": 130, + "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": 3102, - "end": 3103, + "value": "down", + "start": 5325, + "end": 5329, "loc": { "start": { - "line": 94, - "column": 22 + "line": 131, + "column": 12 }, "end": { - "line": 94, - "column": 23 + "line": 131, + "column": 16 } } }, { "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": "scene", - "start": 3103, - "end": 3108, + "value": "=", + "start": 5330, + "end": 5331, "loc": { "start": { - "line": 94, - "column": 23 + "line": 131, + "column": 17 }, "end": { - "line": 94, - "column": 28 + "line": 131, + "column": 18 } } }, { "type": { - "label": ".", + "label": "true", + "keyword": "true", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -42425,48 +54817,49 @@ "binop": null, "updateContext": null }, - "start": 3108, - "end": 3109, + "value": "true", + "start": 5332, + "end": 5336, "loc": { "start": { - "line": 94, - "column": 28 + "line": 131, + "column": 19 }, "end": { - "line": 94, - "column": 29 + "line": 131, + "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": "sao", - "start": 3109, - "end": 3112, + "start": 5336, + "end": 5337, "loc": { "start": { - "line": 94, - "column": 29 + "line": 131, + "column": 23 }, "end": { - "line": 94, - "column": 32 + "line": 131, + "column": 24 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -42474,27 +54867,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3112, - "end": 3113, + "start": 5346, + "end": 5347, "loc": { "start": { - "line": 94, - "column": 32 + "line": 132, + "column": 8 }, "end": { - "line": 94, - "column": 33 + "line": 132, + "column": 9 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -42502,51 +54894,49 @@ "postfix": false, "binop": null }, - "value": "enabled", - "start": 3113, - "end": 3120, + "start": 5347, + "end": 5348, "loc": { "start": { - "line": 94, - "column": 33 + "line": 132, + "column": 9 }, "end": { - "line": 94, - "column": 40 + "line": 132, + "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": 3121, - "end": 3122, + "start": 5348, + "end": 5349, "loc": { "start": { - "line": 94, - "column": 41 + "line": 132, + "column": 10 }, "end": { - "line": 94, - "column": 42 + "line": 132, + "column": 11 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -42557,24 +54947,24 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 3123, - "end": 3128, + "value": "this", + "start": 5359, + "end": 5363, "loc": { "start": { - "line": 94, - "column": 43 + "line": 134, + "column": 8 }, "end": { - "line": 94, - "column": 48 + "line": 134, + "column": 12 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -42584,16 +54974,16 @@ "binop": null, "updateContext": null }, - "start": 3128, - "end": 3129, + "start": 5363, + "end": 5364, "loc": { "start": { - "line": 94, - "column": 48 + "line": 134, + "column": 12 }, "end": { - "line": 94, - "column": 49 + "line": 134, + "column": 13 } } }, @@ -42609,43 +54999,44 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 3146, - "end": 3152, + "value": "_onSceneMouseUp", + "start": 5364, + "end": 5379, "loc": { "start": { - "line": 95, - "column": 16 + "line": 134, + "column": 13 }, "end": { - "line": 95, - "column": 22 + "line": 134, + "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, "updateContext": null }, - "start": 3152, - "end": 3153, + "value": "=", + "start": 5380, + "end": 5381, "loc": { "start": { - "line": 95, - "column": 22 + "line": 134, + "column": 29 }, "end": { - "line": 95, - "column": 23 + "line": 134, + "column": 30 } } }, @@ -42661,17 +55052,17 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 3153, - "end": 3158, + "value": "viewer", + "start": 5382, + "end": 5388, "loc": { "start": { - "line": 95, - "column": 23 + "line": 134, + "column": 31 }, "end": { - "line": 95, - "column": 28 + "line": 134, + "column": 37 } } }, @@ -42688,16 +55079,16 @@ "binop": null, "updateContext": null }, - "start": 3158, - "end": 3159, + "start": 5388, + "end": 5389, "loc": { "start": { - "line": 95, - "column": 28 + "line": 134, + "column": 37 }, "end": { - "line": 95, - "column": 29 + "line": 134, + "column": 38 } } }, @@ -42713,17 +55104,17 @@ "postfix": false, "binop": null }, - "value": "edgeMaterial", - "start": 3159, - "end": 3171, + "value": "scene", + "start": 5389, + "end": 5394, "loc": { "start": { - "line": 95, - "column": 29 + "line": 134, + "column": 38 }, "end": { - "line": 95, - "column": 41 + "line": 134, + "column": 43 } } }, @@ -42740,16 +55131,16 @@ "binop": null, "updateContext": null }, - "start": 3171, - "end": 3172, + "start": 5394, + "end": 5395, "loc": { "start": { - "line": 95, - "column": 41 + "line": 134, + "column": 43 }, "end": { - "line": 95, - "column": 42 + "line": 134, + "column": 44 } } }, @@ -42765,51 +55156,49 @@ "postfix": false, "binop": null }, - "value": "edges", - "start": 3172, - "end": 3177, + "value": "input", + "start": 5395, + "end": 5400, "loc": { "start": { - "line": 95, - "column": 42 + "line": 134, + "column": 44 }, "end": { - "line": 95, - "column": 47 + "line": 134, + "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": 3178, - "end": 3179, + "start": 5400, + "end": 5401, "loc": { "start": { - "line": 95, - "column": 48 + "line": 134, + "column": 49 }, "end": { - "line": 95, - "column": 49 + "line": 134, + "column": 50 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -42817,52 +55206,50 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 3180, - "end": 3185, + "value": "on", + "start": 5401, + "end": 5403, "loc": { "start": { - "line": 95, + "line": 134, "column": 50 }, "end": { - "line": 95, - "column": 55 + "line": 134, + "column": 52 } } }, { "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": 3185, - "end": 3186, + "start": 5403, + "end": 5404, "loc": { "start": { - "line": 95, - "column": 55 + "line": 134, + "column": 52 }, "end": { - "line": 95, - "column": 56 + "line": 134, + "column": 53 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -42870,133 +55257,130 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "fastMode", - "start": 3203, - "end": 3211, + "value": "mouseup", + "start": 5404, + "end": 5413, "loc": { "start": { - "line": 96, - "column": 16 + "line": 134, + "column": 53 }, "end": { - "line": 96, - "column": 24 + "line": 134, + "column": 62 } } }, { "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": 3212, - "end": 3213, + "start": 5413, + "end": 5414, "loc": { "start": { - "line": 96, - "column": 25 + "line": 134, + "column": 62 }, "end": { - "line": 96, - "column": 26 + "line": 134, + "column": 63 } } }, { "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": 3214, - "end": 3218, + "start": 5415, + "end": 5416, "loc": { "start": { - "line": 96, - "column": 27 + "line": 134, + "column": 64 }, "end": { - "line": 96, - "column": 31 + "line": 134, + "column": 65 } } }, { "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": 3218, - "end": 3219, + "start": 5416, + "end": 5417, "loc": { "start": { - "line": 96, - "column": 31 + "line": 134, + "column": 65 }, "end": { - "line": 96, - "column": 32 + "line": 134, + "column": 66 } } }, { "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": 3232, - "end": 3233, + "start": 5418, + "end": 5420, "loc": { "start": { - "line": 97, - "column": 12 + "line": 134, + "column": 67 }, "end": { - "line": 97, - "column": 13 + "line": 134, + "column": 69 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -43004,24 +55388,24 @@ "postfix": false, "binop": null }, - "start": 3242, - "end": 3243, + "start": 5421, + "end": 5422, "loc": { "start": { - "line": 98, - "column": 8 + "line": 134, + "column": 70 }, "end": { - "line": 98, - "column": 9 + "line": 134, + "column": 71 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -43029,51 +55413,53 @@ "postfix": false, "binop": null }, - "start": 3243, - "end": 3244, + "value": "down", + "start": 5435, + "end": 5439, "loc": { "start": { - "line": 98, - "column": 9 + "line": 135, + "column": 12 }, "end": { - "line": 98, - "column": 10 + "line": 135, + "column": 16 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 3244, - "end": 3245, + "value": "=", + "start": 5440, + "end": 5441, "loc": { "start": { - "line": 98, - "column": 10 + "line": 135, + "column": 17 }, "end": { - "line": 98, - "column": 11 + "line": 135, + "column": 18 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": "false", + "keyword": "false", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -43082,98 +55468,93 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 3255, - "end": 3258, + "value": "false", + "start": 5442, + "end": 5447, "loc": { "start": { - "line": 100, - "column": 8 + "line": 135, + "column": 19 }, "end": { - "line": 100, - "column": 11 + "line": 135, + "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": "down", - "start": 3259, - "end": 3263, + "start": 5447, + "end": 5448, "loc": { "start": { - "line": 100, - "column": 12 + "line": 135, + "column": 24 }, "end": { - "line": 100, - "column": 16 + "line": 135, + "column": 25 } } }, { "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": 3264, - "end": 3265, + "start": 5457, + "end": 5458, "loc": { "start": { - "line": 100, - "column": 17 + "line": 136, + "column": 8 }, "end": { - "line": 100, - "column": 18 + "line": 136, + "column": 9 } } }, { "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": 3266, - "end": 3271, + "start": 5458, + "end": 5459, "loc": { "start": { - "line": 100, - "column": 19 + "line": 136, + "column": 9 }, "end": { - "line": 100, - "column": 24 + "line": 136, + "column": 10 } } }, @@ -43190,16 +55571,16 @@ "binop": null, "updateContext": null }, - "start": 3271, - "end": 3272, + "start": 5459, + "end": 5460, "loc": { "start": { - "line": 100, - "column": 24 + "line": 136, + "column": 10 }, "end": { - "line": 100, - "column": 25 + "line": 136, + "column": 11 } } }, @@ -43218,15 +55599,15 @@ "updateContext": null }, "value": "this", - "start": 3282, - "end": 3286, + "start": 5470, + "end": 5474, "loc": { "start": { - "line": 102, + "line": 138, "column": 8 }, "end": { - "line": 102, + "line": 138, "column": 12 } } @@ -43244,15 +55625,15 @@ "binop": null, "updateContext": null }, - "start": 3286, - "end": 3287, + "start": 5474, + "end": 5475, "loc": { "start": { - "line": 102, + "line": 138, "column": 12 }, "end": { - "line": 102, + "line": 138, "column": 13 } } @@ -43269,16 +55650,16 @@ "postfix": false, "binop": null }, - "value": "_onSceneMouseDown", - "start": 3287, - "end": 3304, + "value": "_onSceneMouseMove", + "start": 5475, + "end": 5492, "loc": { "start": { - "line": 102, + "line": 138, "column": 13 }, "end": { - "line": 102, + "line": 138, "column": 30 } } @@ -43297,15 +55678,15 @@ "updateContext": null }, "value": "=", - "start": 3305, - "end": 3306, + "start": 5493, + "end": 5494, "loc": { "start": { - "line": 102, + "line": 138, "column": 31 }, "end": { - "line": 102, + "line": 138, "column": 32 } } @@ -43323,15 +55704,15 @@ "binop": null }, "value": "viewer", - "start": 3307, - "end": 3313, + "start": 5495, + "end": 5501, "loc": { "start": { - "line": 102, + "line": 138, "column": 33 }, "end": { - "line": 102, + "line": 138, "column": 39 } } @@ -43349,15 +55730,15 @@ "binop": null, "updateContext": null }, - "start": 3313, - "end": 3314, + "start": 5501, + "end": 5502, "loc": { "start": { - "line": 102, + "line": 138, "column": 39 }, "end": { - "line": 102, + "line": 138, "column": 40 } } @@ -43375,15 +55756,15 @@ "binop": null }, "value": "scene", - "start": 3314, - "end": 3319, + "start": 5502, + "end": 5507, "loc": { "start": { - "line": 102, + "line": 138, "column": 40 }, "end": { - "line": 102, + "line": 138, "column": 45 } } @@ -43401,15 +55782,15 @@ "binop": null, "updateContext": null }, - "start": 3319, - "end": 3320, + "start": 5507, + "end": 5508, "loc": { "start": { - "line": 102, + "line": 138, "column": 45 }, "end": { - "line": 102, + "line": 138, "column": 46 } } @@ -43427,15 +55808,15 @@ "binop": null }, "value": "input", - "start": 3320, - "end": 3325, + "start": 5508, + "end": 5513, "loc": { "start": { - "line": 102, + "line": 138, "column": 46 }, "end": { - "line": 102, + "line": 138, "column": 51 } } @@ -43453,15 +55834,15 @@ "binop": null, "updateContext": null }, - "start": 3325, - "end": 3326, + "start": 5513, + "end": 5514, "loc": { "start": { - "line": 102, + "line": 138, "column": 51 }, "end": { - "line": 102, + "line": 138, "column": 52 } } @@ -43479,15 +55860,15 @@ "binop": null }, "value": "on", - "start": 3326, - "end": 3328, + "start": 5514, + "end": 5516, "loc": { "start": { - "line": 102, + "line": 138, "column": 52 }, "end": { - "line": 102, + "line": 138, "column": 54 } } @@ -43504,15 +55885,15 @@ "postfix": false, "binop": null }, - "start": 3328, - "end": 3329, + "start": 5516, + "end": 5517, "loc": { "start": { - "line": 102, + "line": 138, "column": 54 }, "end": { - "line": 102, + "line": 138, "column": 55 } } @@ -43530,16 +55911,16 @@ "binop": null, "updateContext": null }, - "value": "mousedown", - "start": 3329, - "end": 3340, + "value": "mousemove", + "start": 5517, + "end": 5528, "loc": { "start": { - "line": 102, + "line": 138, "column": 55 }, "end": { - "line": 102, + "line": 138, "column": 66 } } @@ -43557,15 +55938,15 @@ "binop": null, "updateContext": null }, - "start": 3340, - "end": 3341, + "start": 5528, + "end": 5529, "loc": { "start": { - "line": 102, + "line": 138, "column": 66 }, "end": { - "line": 102, + "line": 138, "column": 67 } } @@ -43582,15 +55963,15 @@ "postfix": false, "binop": null }, - "start": 3342, - "end": 3343, + "start": 5530, + "end": 5531, "loc": { "start": { - "line": 102, + "line": 138, "column": 68 }, "end": { - "line": 102, + "line": 138, "column": 69 } } @@ -43607,15 +55988,15 @@ "postfix": false, "binop": null }, - "start": 3343, - "end": 3344, + "start": 5531, + "end": 5532, "loc": { "start": { - "line": 102, + "line": 138, "column": 69 }, "end": { - "line": 102, + "line": 138, "column": 70 } } @@ -43633,15 +56014,15 @@ "binop": null, "updateContext": null }, - "start": 3345, - "end": 3347, + "start": 5533, + "end": 5535, "loc": { "start": { - "line": 102, + "line": 138, "column": 71 }, "end": { - "line": 102, + "line": 138, "column": 73 } } @@ -43658,128 +56039,128 @@ "postfix": false, "binop": null }, - "start": 3348, - "end": 3349, + "start": 5536, + "end": 5537, "loc": { "start": { - "line": 102, + "line": 138, "column": 74 }, "end": { - "line": 102, + "line": 138, "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": "timer", - "start": 3362, - "end": 3367, + "value": "if", + "start": 5550, + "end": 5552, "loc": { "start": { - "line": 103, + "line": 139, "column": 12 }, "end": { - "line": 103, - "column": 17 + "line": 139, + "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": 3368, - "end": 3369, + "start": 5553, + "end": 5554, "loc": { "start": { - "line": 103, - "column": 18 + "line": 139, + "column": 15 }, "end": { - "line": 103, - "column": 19 + "line": 139, + "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": "timeoutDuration", - "start": 3370, - "end": 3385, + "value": "!", + "start": 5554, + "end": 5555, "loc": { "start": { - "line": 103, - "column": 20 + "line": 139, + "column": 16 }, "end": { - "line": 103, - "column": 35 + "line": 139, + "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": 3385, - "end": 3386, + "value": "down", + "start": 5555, + "end": 5559, "loc": { "start": { - "line": 103, - "column": 35 + "line": 139, + "column": 17 }, "end": { - "line": 103, - "column": 36 + "line": 139, + "column": 21 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -43787,26 +56168,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 3399, - "end": 3401, + "start": 5559, + "end": 5560, "loc": { "start": { - "line": 104, - "column": 12 + "line": 139, + "column": 21 }, "end": { - "line": 104, - "column": 14 + "line": 139, + "column": 22 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -43816,75 +56195,76 @@ "postfix": false, "binop": null }, - "start": 3402, - "end": 3403, + "start": 5561, + "end": 5562, "loc": { "start": { - "line": 104, - "column": 15 + "line": 139, + "column": 23 }, "end": { - "line": 104, - "column": 16 + "line": 139, + "column": 24 } } }, { "type": { - "label": "prefix", + "label": "return", + "keyword": "return", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 3403, - "end": 3404, + "value": "return", + "start": 5579, + "end": 5585, "loc": { "start": { - "line": 104, + "line": 140, "column": 16 }, "end": { - "line": 104, - "column": 17 + "line": 140, + "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": "fastMode", - "start": 3404, - "end": 3412, + "start": 5585, + "end": 5586, "loc": { "start": { - "line": 104, - "column": 17 + "line": 140, + "column": 22 }, "end": { - "line": 104, - "column": 25 + "line": 140, + "column": 23 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -43894,23 +56274,23 @@ "postfix": false, "binop": null }, - "start": 3412, - "end": 3413, + "start": 5599, + "end": 5600, "loc": { "start": { - "line": 104, - "column": 25 + "line": 141, + "column": 12 }, "end": { - "line": 104, - "column": 26 + "line": 141, + "column": 13 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -43919,129 +56299,132 @@ "postfix": false, "binop": null }, - "start": 3414, - "end": 3415, + "value": "timer", + "start": 5613, + "end": 5618, "loc": { "start": { - "line": 104, - "column": 27 + "line": 142, + "column": 12 }, "end": { - "line": 104, - "column": 28 + "line": 142, + "column": 17 } } }, { "type": { - "label": "this", - "keyword": "this", - "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": "this", - "start": 3432, - "end": 3436, + "value": "=", + "start": 5619, + "end": 5620, "loc": { "start": { - "line": 105, - "column": 16 + "line": 142, + "column": 18 }, "end": { - "line": 105, - "column": 20 + "line": 142, + "column": 19 } } }, { "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": 3436, - "end": 3437, + "value": "timeoutDuration", + "start": 5621, + "end": 5636, "loc": { "start": { - "line": 105, + "line": 142, "column": 20 }, "end": { - "line": 105, - "column": 21 + "line": 142, + "column": 35 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_cancelFade", - "start": 3437, - "end": 3448, + "start": 5636, + "end": 5637, "loc": { "start": { - "line": 105, - "column": 21 + "line": 142, + "column": 35 }, "end": { - "line": 105, - "column": 32 + "line": 142, + "column": 36 } } }, { "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": 3448, - "end": 3449, + "value": "if", + "start": 5650, + "end": 5652, "loc": { "start": { - "line": 105, - "column": 32 + "line": 143, + "column": 12 }, "end": { - "line": 105, - "column": 33 + "line": 143, + "column": 14 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -44049,42 +56432,43 @@ "postfix": false, "binop": null }, - "start": 3449, - "end": 3450, + "start": 5653, + "end": 5654, "loc": { "start": { - "line": 105, - "column": 33 + "line": 143, + "column": 15 }, "end": { - "line": 105, - "column": 34 + "line": 143, + "column": 16 } } }, { "type": { - "label": ";", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 3450, - "end": 3451, + "value": "!", + "start": 5654, + "end": 5655, "loc": { "start": { - "line": 105, - "column": 34 + "line": 143, + "column": 16 }, "end": { - "line": 105, - "column": 35 + "line": 143, + "column": 17 } } }, @@ -44100,23 +56484,23 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 3468, - "end": 3474, + "value": "fastMode", + "start": 5655, + "end": 5663, "loc": { "start": { - "line": 106, - "column": 16 + "line": 143, + "column": 17 }, "end": { - "line": 106, - "column": 22 + "line": 143, + "column": 25 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -44124,26 +56508,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3474, - "end": 3475, + "start": 5663, + "end": 5664, "loc": { "start": { - "line": 106, - "column": 22 + "line": 143, + "column": 25 }, "end": { - "line": 106, - "column": 23 + "line": 143, + "column": 26 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -44152,25 +56535,25 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 3475, - "end": 3480, + "start": 5665, + "end": 5666, "loc": { "start": { - "line": 106, - "column": 23 + "line": 143, + "column": 27 }, "end": { - "line": 106, + "line": 143, "column": 28 } } }, { "type": { - "label": ".", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -44179,76 +56562,49 @@ "binop": null, "updateContext": null }, - "start": 3480, - "end": 3481, + "value": "this", + "start": 5683, + "end": 5687, "loc": { "start": { - "line": 106, - "column": 28 + "line": 144, + "column": 16 }, "end": { - "line": 106, - "column": 29 + "line": 144, + "column": 20 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "pbrEnabled", - "start": 3481, - "end": 3491, - "loc": { - "start": { - "line": 106, - "column": 29 - }, - "end": { - "line": 106, - "column": 39 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 3492, - "end": 3493, + "start": 5687, + "end": 5688, "loc": { "start": { - "line": 106, - "column": 40 + "line": 144, + "column": 20 }, "end": { - "line": 106, - "column": 41 + "line": 144, + "column": 21 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -44256,54 +56612,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 3494, - "end": 3499, + "value": "_cancelFade", + "start": 5688, + "end": 5699, "loc": { "start": { - "line": 106, - "column": 42 + "line": 144, + "column": 21 }, "end": { - "line": 106, - "column": 47 + "line": 144, + "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": 3499, - "end": 3500, + "start": 5699, + "end": 5700, "loc": { "start": { - "line": 106, - "column": 47 + "line": 144, + "column": 32 }, "end": { - "line": 106, - "column": 48 + "line": 144, + "column": 33 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -44311,24 +56665,23 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 3517, - "end": 3523, + "start": 5700, + "end": 5701, "loc": { "start": { - "line": 107, - "column": 16 + "line": 144, + "column": 33 }, "end": { - "line": 107, - "column": 22 + "line": 144, + "column": 34 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -44338,16 +56691,16 @@ "binop": null, "updateContext": null }, - "start": 3523, - "end": 3524, + "start": 5701, + "end": 5702, "loc": { "start": { - "line": 107, - "column": 22 + "line": 144, + "column": 34 }, "end": { - "line": 107, - "column": 23 + "line": 144, + "column": 35 } } }, @@ -44363,17 +56716,17 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 3524, - "end": 3529, + "value": "viewer", + "start": 5719, + "end": 5725, "loc": { "start": { - "line": 107, - "column": 23 + "line": 145, + "column": 16 }, "end": { - "line": 107, - "column": 28 + "line": 145, + "column": 22 } } }, @@ -44390,16 +56743,16 @@ "binop": null, "updateContext": null }, - "start": 3529, - "end": 3530, + "start": 5725, + "end": 5726, "loc": { "start": { - "line": 107, - "column": 28 + "line": 145, + "column": 22 }, "end": { - "line": 107, - "column": 29 + "line": 145, + "column": 23 } } }, @@ -44415,17 +56768,17 @@ "postfix": false, "binop": null }, - "value": "sao", - "start": 3530, - "end": 3533, + "value": "scene", + "start": 5726, + "end": 5731, "loc": { "start": { - "line": 107, - "column": 29 + "line": 145, + "column": 23 }, "end": { - "line": 107, - "column": 32 + "line": 145, + "column": 28 } } }, @@ -44442,16 +56795,16 @@ "binop": null, "updateContext": null }, - "start": 3533, - "end": 3534, + "start": 5731, + "end": 5732, "loc": { "start": { - "line": 107, - "column": 32 + "line": 145, + "column": 28 }, "end": { - "line": 107, - "column": 33 + "line": 145, + "column": 29 } } }, @@ -44467,17 +56820,17 @@ "postfix": false, "binop": null }, - "value": "enabled", - "start": 3534, - "end": 3541, + "value": "pbrEnabled", + "start": 5732, + "end": 5742, "loc": { "start": { - "line": 107, - "column": 33 + "line": 145, + "column": 29 }, "end": { - "line": 107, - "column": 40 + "line": 145, + "column": 39 } } }, @@ -44495,16 +56848,16 @@ "updateContext": null }, "value": "=", - "start": 3542, - "end": 3543, + "start": 5743, + "end": 5744, "loc": { "start": { - "line": 107, - "column": 41 + "line": 145, + "column": 40 }, "end": { - "line": 107, - "column": 42 + "line": 145, + "column": 41 } } }, @@ -44523,16 +56876,16 @@ "updateContext": null }, "value": "false", - "start": 3544, - "end": 3549, + "start": 5745, + "end": 5750, "loc": { "start": { - "line": 107, - "column": 43 + "line": 145, + "column": 42 }, "end": { - "line": 107, - "column": 48 + "line": 145, + "column": 47 } } }, @@ -44549,16 +56902,16 @@ "binop": null, "updateContext": null }, - "start": 3549, - "end": 3550, + "start": 5750, + "end": 5751, "loc": { "start": { - "line": 107, - "column": 48 + "line": 145, + "column": 47 }, "end": { - "line": 107, - "column": 49 + "line": 145, + "column": 48 } } }, @@ -44575,15 +56928,15 @@ "binop": null }, "value": "viewer", - "start": 3567, - "end": 3573, + "start": 5768, + "end": 5774, "loc": { "start": { - "line": 108, + "line": 146, "column": 16 }, "end": { - "line": 108, + "line": 146, "column": 22 } } @@ -44601,15 +56954,15 @@ "binop": null, "updateContext": null }, - "start": 3573, - "end": 3574, + "start": 5774, + "end": 5775, "loc": { "start": { - "line": 108, + "line": 146, "column": 22 }, "end": { - "line": 108, + "line": 146, "column": 23 } } @@ -44627,15 +56980,15 @@ "binop": null }, "value": "scene", - "start": 3574, - "end": 3579, + "start": 5775, + "end": 5780, "loc": { "start": { - "line": 108, + "line": 146, "column": 23 }, "end": { - "line": 108, + "line": 146, "column": 28 } } @@ -44653,15 +57006,15 @@ "binop": null, "updateContext": null }, - "start": 3579, - "end": 3580, + "start": 5780, + "end": 5781, "loc": { "start": { - "line": 108, + "line": 146, "column": 28 }, "end": { - "line": 108, + "line": 146, "column": 29 } } @@ -44678,17 +57031,17 @@ "postfix": false, "binop": null }, - "value": "edgeMaterial", - "start": 3580, - "end": 3592, + "value": "sao", + "start": 5781, + "end": 5784, "loc": { "start": { - "line": 108, + "line": 146, "column": 29 }, "end": { - "line": 108, - "column": 41 + "line": 146, + "column": 32 } } }, @@ -44705,16 +57058,16 @@ "binop": null, "updateContext": null }, - "start": 3592, - "end": 3593, + "start": 5784, + "end": 5785, "loc": { "start": { - "line": 108, - "column": 41 + "line": 146, + "column": 32 }, "end": { - "line": 108, - "column": 42 + "line": 146, + "column": 33 } } }, @@ -44730,17 +57083,17 @@ "postfix": false, "binop": null }, - "value": "edges", - "start": 3593, - "end": 3598, + "value": "enabled", + "start": 5785, + "end": 5792, "loc": { "start": { - "line": 108, - "column": 42 + "line": 146, + "column": 33 }, "end": { - "line": 108, - "column": 47 + "line": 146, + "column": 40 } } }, @@ -44758,16 +57111,16 @@ "updateContext": null }, "value": "=", - "start": 3599, - "end": 3600, + "start": 5793, + "end": 5794, "loc": { "start": { - "line": 108, - "column": 48 + "line": 146, + "column": 41 }, "end": { - "line": 108, - "column": 49 + "line": 146, + "column": 42 } } }, @@ -44786,16 +57139,16 @@ "updateContext": null }, "value": "false", - "start": 3601, - "end": 3606, + "start": 5795, + "end": 5800, "loc": { "start": { - "line": 108, - "column": 50 + "line": 146, + "column": 43 }, "end": { - "line": 108, - "column": 55 + "line": 146, + "column": 48 } } }, @@ -44812,16 +57165,16 @@ "binop": null, "updateContext": null }, - "start": 3606, - "end": 3607, + "start": 5800, + "end": 5801, "loc": { "start": { - "line": 108, - "column": 55 + "line": 146, + "column": 48 }, "end": { - "line": 108, - "column": 56 + "line": 146, + "column": 49 } } }, @@ -44837,51 +57190,49 @@ "postfix": false, "binop": null }, - "value": "fastMode", - "start": 3624, - "end": 3632, + "value": "viewer", + "start": 5818, + "end": 5824, "loc": { "start": { - "line": 109, + "line": 147, "column": 16 }, "end": { - "line": 109, - "column": 24 + "line": 147, + "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": 3633, - "end": 3634, + "start": 5824, + "end": 5825, "loc": { "start": { - "line": 109, - "column": 25 + "line": 147, + "column": 22 }, "end": { - "line": 109, - "column": 26 + "line": 147, + "column": 23 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -44889,27 +57240,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 3635, - "end": 3639, + "value": "scene", + "start": 5825, + "end": 5830, "loc": { "start": { - "line": 109, - "column": 27 + "line": 147, + "column": 23 }, "end": { - "line": 109, - "column": 31 + "line": 147, + "column": 28 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -44919,24 +57269,24 @@ "binop": null, "updateContext": null }, - "start": 3639, - "end": 3640, + "start": 5830, + "end": 5831, "loc": { "start": { - "line": 109, - "column": 31 + "line": 147, + "column": 28 }, "end": { - "line": 109, - "column": 32 + "line": 147, + "column": 29 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -44944,105 +57294,105 @@ "postfix": false, "binop": null }, - "start": 3653, - "end": 3654, + "value": "edgeMaterial", + "start": 5831, + "end": 5843, "loc": { "start": { - "line": 110, - "column": 12 + "line": 147, + "column": 29 }, "end": { - "line": 110, - "column": 13 + "line": 147, + "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": "down", - "start": 3667, - "end": 3671, + "start": 5843, + "end": 5844, "loc": { "start": { - "line": 111, - "column": 12 + "line": 147, + "column": 41 }, "end": { - "line": 111, - "column": 16 + "line": 147, + "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": 3672, - "end": 3673, + "value": "edges", + "start": 5844, + "end": 5849, "loc": { "start": { - "line": 111, - "column": 17 + "line": 147, + "column": 42 }, "end": { - "line": 111, - "column": 18 + "line": 147, + "column": 47 } } }, { "type": { - "label": "true", - "keyword": "true", - "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": "true", - "start": 3674, - "end": 3678, + "value": "=", + "start": 5850, + "end": 5851, "loc": { "start": { - "line": 111, - "column": 19 + "line": 147, + "column": 48 }, "end": { - "line": 111, - "column": 23 + "line": 147, + "column": 49 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "false", + "keyword": "false", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -45051,49 +57401,51 @@ "binop": null, "updateContext": null }, - "start": 3678, - "end": 3679, + "value": "false", + "start": 5852, + "end": 5857, "loc": { "start": { - "line": 111, - "column": 23 + "line": 147, + "column": 50 }, "end": { - "line": 111, - "column": 24 + "line": 147, + "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": 3688, - "end": 3689, + "start": 5857, + "end": 5858, "loc": { "start": { - "line": 112, - "column": 8 + "line": 147, + "column": 55 }, "end": { - "line": 112, - "column": 9 + "line": 147, + "column": 56 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -45101,49 +57453,51 @@ "postfix": false, "binop": null }, - "start": 3689, - "end": 3690, + "value": "fastMode", + "start": 5875, + "end": 5883, "loc": { "start": { - "line": 112, - "column": 9 + "line": 148, + "column": 16 }, "end": { - "line": 112, - "column": 10 + "line": 148, + "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": 3690, - "end": 3691, + "value": "=", + "start": 5884, + "end": 5885, "loc": { "start": { - "line": 112, - "column": 10 + "line": 148, + "column": 25 }, "end": { - "line": 112, - "column": 11 + "line": 148, + "column": 26 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -45154,24 +57508,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 3701, - "end": 3705, + "value": "true", + "start": 5886, + "end": 5890, "loc": { "start": { - "line": 114, - "column": 8 + "line": 148, + "column": 27 }, "end": { - "line": 114, - "column": 12 + "line": 148, + "column": 31 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -45181,24 +57535,24 @@ "binop": null, "updateContext": null }, - "start": 3705, - "end": 3706, + "start": 5890, + "end": 5891, "loc": { "start": { - "line": 114, - "column": 12 + "line": 148, + "column": 31 }, "end": { - "line": 114, - "column": 13 + "line": 148, + "column": 32 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -45206,52 +57560,49 @@ "postfix": false, "binop": null }, - "value": "_onSceneMouseUp", - "start": 3706, - "end": 3721, + "start": 5904, + "end": 5905, "loc": { "start": { - "line": 114, - "column": 13 + "line": 149, + "column": 12 }, "end": { - "line": 114, - "column": 28 + "line": 149, + "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": 3722, - "end": 3723, + "start": 5914, + "end": 5915, "loc": { "start": { - "line": 114, - "column": 29 + "line": 150, + "column": 8 }, "end": { - "line": 114, - "column": 30 + "line": 150, + "column": 9 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -45259,24 +57610,23 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 3724, - "end": 3730, + "start": 5915, + "end": 5916, "loc": { "start": { - "line": 114, - "column": 31 + "line": 150, + "column": 9 }, "end": { - "line": 114, - "column": 37 + "line": 150, + "column": 10 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -45285,49 +57635,23 @@ "postfix": false, "binop": null, "updateContext": null - }, - "start": 3730, - "end": 3731, - "loc": { - "start": { - "line": 114, - "column": 37 - }, - "end": { - "line": 114, - "column": 38 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "scene", - "start": 3731, - "end": 3736, + }, + "start": 5916, + "end": 5917, "loc": { "start": { - "line": 114, - "column": 38 + "line": 150, + "column": 10 }, "end": { - "line": 114, - "column": 43 + "line": 150, + "column": 11 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -45335,19 +57659,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3736, - "end": 3737, + "start": 5922, + "end": 5923, "loc": { "start": { - "line": 114, - "column": 43 + "line": 151, + "column": 4 }, "end": { - "line": 114, - "column": 44 + "line": 151, + "column": 5 } } }, @@ -45363,51 +57686,50 @@ "postfix": false, "binop": null }, - "value": "input", - "start": 3737, - "end": 3742, + "value": "_startFade", + "start": 5929, + "end": 5939, "loc": { "start": { - "line": 114, - "column": 44 + "line": 153, + "column": 4 }, "end": { - "line": 114, - "column": 49 + "line": 153, + "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": 3742, - "end": 3743, + "start": 5939, + "end": 5940, "loc": { "start": { - "line": 114, - "column": 49 + "line": 153, + "column": 14 }, "end": { - "line": 114, - "column": 50 + "line": 153, + "column": 15 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -45415,23 +57737,22 @@ "postfix": false, "binop": null }, - "value": "on", - "start": 3743, - "end": 3745, + "start": 5940, + "end": 5941, "loc": { "start": { - "line": 114, - "column": 50 + "line": 153, + "column": 15 }, "end": { - "line": 114, - "column": 52 + "line": 153, + "column": 16 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -45441,24 +57762,25 @@ "postfix": false, "binop": null }, - "start": 3745, - "end": 3746, + "start": 5942, + "end": 5943, "loc": { "start": { - "line": 114, - "column": 52 + "line": 153, + "column": 17 }, "end": { - "line": 114, - "column": 53 + "line": 153, + "column": 18 } } }, { "type": { - "label": "string", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -45467,100 +57789,104 @@ "binop": null, "updateContext": null }, - "value": "mouseup", - "start": 3746, - "end": 3755, + "value": "if", + "start": 5953, + "end": 5955, "loc": { "start": { - "line": 114, - "column": 53 + "line": 155, + "column": 8 }, "end": { - "line": 114, - "column": 62 + "line": 155, + "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": 3755, - "end": 3756, + "start": 5956, + "end": 5957, "loc": { "start": { - "line": 114, - "column": 62 + "line": 155, + "column": 11 }, "end": { - "line": 114, - "column": 63 + "line": 155, + "column": 12 } } }, { "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": 3757, - "end": 3758, + "value": "!", + "start": 5957, + "end": 5958, "loc": { "start": { - "line": 114, - "column": 64 + "line": 155, + "column": 12 }, "end": { - "line": 114, - "column": 65 + "line": 155, + "column": 13 } } }, { "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": 3758, - "end": 3759, + "value": "this", + "start": 5958, + "end": 5962, "loc": { "start": { - "line": 114, - "column": 65 + "line": 155, + "column": 13 }, "end": { - "line": 114, - "column": 66 + "line": 155, + "column": 17 } } }, { "type": { - "label": "=>", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -45570,23 +57896,23 @@ "binop": null, "updateContext": null }, - "start": 3760, - "end": 3762, + "start": 5962, + "end": 5963, "loc": { "start": { - "line": 114, - "column": 67 + "line": 155, + "column": 17 }, "end": { - "line": 114, - "column": 69 + "line": 155, + "column": 18 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -45595,24 +57921,25 @@ "postfix": false, "binop": null }, - "start": 3763, - "end": 3764, + "value": "_img", + "start": 5963, + "end": 5967, "loc": { "start": { - "line": 114, - "column": 70 + "line": 155, + "column": 18 }, "end": { - "line": 114, - "column": 71 + "line": 155, + "column": 22 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -45620,51 +57947,48 @@ "postfix": false, "binop": null }, - "value": "down", - "start": 3777, - "end": 3781, + "start": 5967, + "end": 5968, "loc": { "start": { - "line": 115, - "column": 12 + "line": 155, + "column": 22 }, "end": { - "line": 115, - "column": 16 + "line": 155, + "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": 3782, - "end": 3783, + "start": 5969, + "end": 5970, "loc": { "start": { - "line": 115, - "column": 17 + "line": 155, + "column": 24 }, "end": { - "line": 115, - "column": 18 + "line": 155, + "column": 25 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -45675,24 +57999,24 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 3784, - "end": 3789, + "value": "this", + "start": 5983, + "end": 5987, "loc": { "start": { - "line": 115, - "column": 19 + "line": 156, + "column": 12 }, "end": { - "line": 115, - "column": 24 + "line": 156, + "column": 16 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -45702,24 +58026,24 @@ "binop": null, "updateContext": null }, - "start": 3789, - "end": 3790, + "start": 5987, + "end": 5988, "loc": { "start": { - "line": 115, - "column": 24 + "line": 156, + "column": 16 }, "end": { - "line": 115, - "column": 25 + "line": 156, + "column": 17 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -45727,16 +58051,42 @@ "postfix": false, "binop": null }, - "start": 3799, - "end": 3800, + "value": "_initFade", + "start": 5988, + "end": 5997, "loc": { "start": { - "line": 116, - "column": 8 + "line": 156, + "column": 17 }, "end": { - "line": 116, - "column": 9 + "line": 156, + "column": 26 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5997, + "end": 5998, + "loc": { + "start": { + "line": 156, + "column": 26 + }, + "end": { + "line": 156, + "column": 27 } } }, @@ -45752,16 +58102,16 @@ "postfix": false, "binop": null }, - "start": 3800, - "end": 3801, + "start": 5998, + "end": 5999, "loc": { "start": { - "line": 116, - "column": 9 + "line": 156, + "column": 27 }, "end": { - "line": 116, - "column": 10 + "line": 156, + "column": 28 } } }, @@ -45778,50 +58128,48 @@ "binop": null, "updateContext": null }, - "start": 3801, - "end": 3802, + "start": 5999, + "end": 6000, "loc": { "start": { - "line": 116, - "column": 10 + "line": 156, + "column": 28 }, "end": { - "line": 116, - "column": 11 + "line": 156, + "column": 29 } } }, { "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": 3812, - "end": 3816, + "start": 6009, + "end": 6010, "loc": { "start": { - "line": 118, + "line": 157, "column": 8 }, "end": { - "line": 118, - "column": 12 + "line": 157, + "column": 9 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -45832,15 +58180,16 @@ "binop": null, "updateContext": null }, - "start": 3816, - "end": 3817, + "value": "const", + "start": 6020, + "end": 6025, "loc": { "start": { - "line": 118, - "column": 12 + "line": 159, + "column": 8 }, "end": { - "line": 118, + "line": 159, "column": 13 } } @@ -45857,17 +58206,17 @@ "postfix": false, "binop": null }, - "value": "_onSceneMouseMove", - "start": 3817, - "end": 3834, + "value": "interval", + "start": 6026, + "end": 6034, "loc": { "start": { - "line": 118, - "column": 13 + "line": 159, + "column": 14 }, "end": { - "line": 118, - "column": 30 + "line": 159, + "column": 22 } } }, @@ -45885,22 +58234,22 @@ "updateContext": null }, "value": "=", - "start": 3835, - "end": 3836, + "start": 6035, + "end": 6036, "loc": { "start": { - "line": 118, - "column": 31 + "line": 159, + "column": 23 }, "end": { - "line": 118, - "column": 32 + "line": 159, + "column": 24 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -45908,25 +58257,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "viewer", - "start": 3837, - "end": 3843, + "value": 50, + "start": 6037, + "end": 6039, "loc": { "start": { - "line": 118, - "column": 33 + "line": 159, + "column": 25 }, "end": { - "line": 118, - "column": 39 + "line": 159, + "column": 27 } } }, { "type": { - "label": ".", + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6039, + "end": 6040, + "loc": { + "start": { + "line": 159, + "column": 27 + }, + "end": { + "line": 159, + "column": 28 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -45937,16 +58314,17 @@ "binop": null, "updateContext": null }, - "start": 3843, - "end": 3844, + "value": "const", + "start": 6049, + "end": 6054, "loc": { "start": { - "line": 118, - "column": 39 + "line": 160, + "column": 8 }, "end": { - "line": 118, - "column": 40 + "line": 160, + "column": 13 } } }, @@ -45962,49 +58340,50 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 3844, - "end": 3849, + "value": "inc", + "start": 6055, + "end": 6058, "loc": { "start": { - "line": 118, - "column": 40 + "line": 160, + "column": 14 }, "end": { - "line": 118, - "column": 45 + "line": 160, + "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": 3849, - "end": 3850, + "value": "=", + "start": 6059, + "end": 6060, "loc": { "start": { - "line": 118, - "column": 45 + "line": 160, + "column": 18 }, "end": { - "line": 118, - "column": 46 + "line": 160, + "column": 19 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -46012,52 +58391,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "input", - "start": 3850, - "end": 3855, + "value": 1, + "start": 6061, + "end": 6062, "loc": { "start": { - "line": 118, - "column": 46 + "line": 160, + "column": 20 }, "end": { - "line": 118, - "column": 51 + "line": 160, + "column": 21 } } }, { "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": 3855, - "end": 3856, + "value": "/", + "start": 6063, + "end": 6064, "loc": { "start": { - "line": 118, - "column": 51 + "line": 160, + "column": 22 }, "end": { - "line": 118, - "column": 52 + "line": 160, + "column": 23 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -46066,50 +58447,52 @@ "postfix": false, "binop": null }, - "value": "on", - "start": 3856, - "end": 3858, + "start": 6065, + "end": 6066, "loc": { "start": { - "line": 118, - "column": 52 + "line": 160, + "column": 24 }, "end": { - "line": 118, - "column": 54 + "line": 160, + "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": 3858, - "end": 3859, + "value": "this", + "start": 6066, + "end": 6070, "loc": { "start": { - "line": 118, - "column": 54 + "line": 160, + "column": 25 }, "end": { - "line": 118, - "column": 55 + "line": 160, + "column": 29 } } }, { "type": { - "label": "string", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -46118,76 +58501,77 @@ "binop": null, "updateContext": null }, - "value": "mousemove", - "start": 3859, - "end": 3870, + "start": 6070, + "end": 6071, "loc": { "start": { - "line": 118, - "column": 55 + "line": 160, + "column": 29 }, "end": { - "line": 118, - "column": 66 + "line": 160, + "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": 3870, - "end": 3871, + "value": "_fadeMillisecs", + "start": 6071, + "end": 6085, "loc": { "start": { - "line": 118, - "column": 66 + "line": 160, + "column": 30 }, "end": { - "line": 118, - "column": 67 + "line": 160, + "column": 44 } } }, { "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": 3872, - "end": 3873, + "value": "/", + "start": 6086, + "end": 6087, "loc": { "start": { - "line": 118, - "column": 68 + "line": 160, + "column": 45 }, "end": { - "line": 118, - "column": 69 + "line": 160, + "column": 46 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -46195,67 +58579,68 @@ "postfix": false, "binop": null }, - "start": 3873, - "end": 3874, + "value": "interval", + "start": 6088, + "end": 6096, "loc": { "start": { - "line": 118, - "column": 69 + "line": 160, + "column": 47 }, "end": { - "line": 118, - "column": 70 + "line": 160, + "column": 55 } } }, { "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": 3875, - "end": 3877, + "start": 6096, + "end": 6097, "loc": { "start": { - "line": 118, - "column": 71 + "line": 160, + "column": 55 }, "end": { - "line": 118, - "column": 73 + "line": 160, + "column": 56 } } }, { "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": 3878, - "end": 3879, + "start": 6097, + "end": 6098, "loc": { "start": { - "line": 118, - "column": 74 + "line": 160, + "column": 56 }, "end": { - "line": 118, - "column": 75 + "line": 160, + "column": 57 } } }, @@ -46274,16 +58659,16 @@ "updateContext": null }, "value": "if", - "start": 3892, - "end": 3894, + "start": 6108, + "end": 6110, "loc": { "start": { - "line": 119, - "column": 12 + "line": 162, + "column": 8 }, "end": { - "line": 119, - "column": 14 + "line": 162, + "column": 10 } } }, @@ -46299,77 +58684,78 @@ "postfix": false, "binop": null }, - "start": 3895, - "end": 3896, + "start": 6111, + "end": 6112, "loc": { "start": { - "line": 119, - "column": 15 + "line": 162, + "column": 11 }, "end": { - "line": 119, - "column": 16 + "line": 162, + "column": 12 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 3896, - "end": 3897, + "value": "this", + "start": 6112, + "end": 6116, "loc": { "start": { - "line": 119, - "column": 16 + "line": 162, + "column": 12 }, "end": { - "line": 119, - "column": 17 + "line": 162, + "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": "down", - "start": 3897, - "end": 3901, + "start": 6116, + "end": 6117, "loc": { "start": { - "line": 119, - "column": 17 + "line": 162, + "column": 16 }, "end": { - "line": 119, - "column": 21 + "line": 162, + "column": 17 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -46377,24 +58763,25 @@ "postfix": false, "binop": null }, - "start": 3901, - "end": 3902, + "value": "_pInterval", + "start": 6117, + "end": 6127, "loc": { "start": { - "line": 119, - "column": 21 + "line": 162, + "column": 17 }, "end": { - "line": 119, - "column": 22 + "line": 162, + "column": 27 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -46402,78 +58789,75 @@ "postfix": false, "binop": null }, - "start": 3903, - "end": 3904, + "start": 6127, + "end": 6128, "loc": { "start": { - "line": 119, - "column": 23 + "line": 162, + "column": 27 }, "end": { - "line": 119, - "column": 24 + "line": 162, + "column": 28 } } }, { "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": 3921, - "end": 3927, + "start": 6129, + "end": 6130, "loc": { "start": { - "line": 120, - "column": 16 + "line": 162, + "column": 29 }, "end": { - "line": 120, - "column": 22 + "line": 162, + "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": 3927, - "end": 3928, + "value": "clearInterval", + "start": 6143, + "end": 6156, "loc": { "start": { - "line": 120, - "column": 22 + "line": 163, + "column": 12 }, "end": { - "line": 120, - "column": 23 + "line": 163, + "column": 25 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -46481,22 +58865,23 @@ "postfix": false, "binop": null }, - "start": 3941, - "end": 3942, + "start": 6156, + "end": 6157, "loc": { "start": { - "line": 121, - "column": 12 + "line": 163, + "column": 25 }, "end": { - "line": 121, - "column": 13 + "line": 163, + "column": 26 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -46504,46 +58889,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "timer", - "start": 3955, - "end": 3960, + "value": "this", + "start": 6157, + "end": 6161, "loc": { "start": { - "line": 122, - "column": 12 + "line": 163, + "column": 26 }, "end": { - "line": 122, - "column": 17 + "line": 163, + "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": 3961, - "end": 3962, + "start": 6161, + "end": 6162, "loc": { "start": { - "line": 122, - "column": 18 + "line": 163, + "column": 30 }, "end": { - "line": 122, - "column": 19 + "line": 163, + "column": 31 } } }, @@ -46559,51 +58944,49 @@ "postfix": false, "binop": null }, - "value": "timeoutDuration", - "start": 3963, - "end": 3978, + "value": "_pInterval", + "start": 6162, + "end": 6172, "loc": { "start": { - "line": 122, - "column": 20 + "line": 163, + "column": 31 }, "end": { - "line": 122, - "column": 35 + "line": 163, + "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": 3978, - "end": 3979, + "start": 6172, + "end": 6173, "loc": { "start": { - "line": 122, - "column": 35 + "line": 163, + "column": 41 }, "end": { - "line": 122, - "column": 36 + "line": 163, + "column": 42 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -46613,68 +58996,69 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 3992, - "end": 3994, + "start": 6173, + "end": 6174, "loc": { "start": { - "line": 123, - "column": 12 + "line": 163, + "column": 42 }, "end": { - "line": 123, - "column": 14 + "line": 163, + "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": 3995, - "end": 3996, + "value": "this", + "start": 6187, + "end": 6191, "loc": { "start": { - "line": 123, - "column": 15 + "line": 164, + "column": 12 }, "end": { - "line": 123, + "line": 164, "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": 3996, - "end": 3997, + "start": 6191, + "end": 6192, "loc": { "start": { - "line": 123, + "line": 164, "column": 16 }, "end": { - "line": 123, + "line": 164, "column": 17 } } @@ -46691,76 +59075,80 @@ "postfix": false, "binop": null }, - "value": "fastMode", - "start": 3997, - "end": 4005, + "value": "_pInterval", + "start": 6192, + "end": 6202, "loc": { "start": { - "line": 123, + "line": 164, "column": 17 }, "end": { - "line": 123, - "column": 25 + "line": 164, + "column": 27 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4005, - "end": 4006, + "value": "=", + "start": 6203, + "end": 6204, "loc": { "start": { - "line": 123, - "column": 25 + "line": 164, + "column": 28 }, "end": { - "line": 123, - "column": 26 + "line": 164, + "column": 29 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "null", + "keyword": "null", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4007, - "end": 4008, + "value": "null", + "start": 6205, + "end": 6209, "loc": { "start": { - "line": 123, - "column": 27 + "line": 164, + "column": 30 }, "end": { - "line": 123, - "column": 28 + "line": 164, + "column": 34 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -46769,23 +59157,22 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 4025, - "end": 4029, + "start": 6209, + "end": 6210, "loc": { "start": { - "line": 124, - "column": 16 + "line": 164, + "column": 34 }, "end": { - "line": 124, - "column": 20 + "line": 164, + "column": 35 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -46793,52 +59180,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4029, - "end": 4030, + "start": 6219, + "end": 6220, "loc": { "start": { - "line": 124, - "column": 20 + "line": 165, + "column": 8 }, "end": { - "line": 124, - "column": 21 + "line": 165, + "column": 9 } } }, { "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": "_cancelFade", - "start": 4030, - "end": 4041, + "value": "const", + "start": 6230, + "end": 6235, "loc": { "start": { - "line": 124, - "column": 21 + "line": 167, + "column": 8 }, "end": { - "line": 124, - "column": 32 + "line": 167, + "column": 13 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -46847,49 +59235,53 @@ "postfix": false, "binop": null }, - "start": 4041, - "end": 4042, + "value": "viewer", + "start": 6236, + "end": 6242, "loc": { "start": { - "line": 124, - "column": 32 + "line": 167, + "column": 14 }, "end": { - "line": 124, - "column": 33 + "line": 167, + "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 + "binop": null, + "updateContext": null }, - "start": 4042, - "end": 4043, + "value": "=", + "start": 6243, + "end": 6244, "loc": { "start": { - "line": 124, - "column": 33 + "line": 167, + "column": 21 }, "end": { - "line": 124, - "column": 34 + "line": 167, + "column": 22 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -46898,100 +59290,102 @@ "binop": null, "updateContext": null }, - "start": 4043, - "end": 4044, + "value": "this", + "start": 6245, + "end": 6249, "loc": { "start": { - "line": 124, - "column": 34 + "line": 167, + "column": 23 }, "end": { - "line": 124, - "column": 35 + "line": 167, + "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": "viewer", - "start": 4061, - "end": 4067, + "start": 6249, + "end": 6250, "loc": { "start": { - "line": 125, - "column": 16 + "line": 167, + "column": 27 }, "end": { - "line": 125, - "column": 22 + "line": 167, + "column": 28 } } }, { "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": 4067, - "end": 4068, + "value": "viewer", + "start": 6250, + "end": 6256, "loc": { "start": { - "line": 125, - "column": 22 + "line": 167, + "column": 28 }, "end": { - "line": 125, - "column": 23 + "line": 167, + "column": 34 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "scene", - "start": 4068, - "end": 4073, + "start": 6256, + "end": 6257, "loc": { "start": { - "line": 125, - "column": 23 + "line": 167, + "column": 34 }, "end": { - "line": 125, - "column": 28 + "line": 167, + "column": 35 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -47002,16 +59396,17 @@ "binop": null, "updateContext": null }, - "start": 4073, - "end": 4074, + "value": "const", + "start": 6267, + "end": 6272, "loc": { "start": { - "line": 125, - "column": 28 + "line": 169, + "column": 8 }, "end": { - "line": 125, - "column": 29 + "line": 169, + "column": 13 } } }, @@ -47027,17 +59422,17 @@ "postfix": false, "binop": null }, - "value": "pbrEnabled", - "start": 4074, - "end": 4084, + "value": "canvas", + "start": 6273, + "end": 6279, "loc": { "start": { - "line": 125, - "column": 29 + "line": 169, + "column": 14 }, "end": { - "line": 125, - "column": 39 + "line": 169, + "column": 20 } } }, @@ -47055,23 +59450,22 @@ "updateContext": null }, "value": "=", - "start": 4085, - "end": 4086, + "start": 6280, + "end": 6281, "loc": { "start": { - "line": 125, - "column": 40 + "line": 169, + "column": 21 }, "end": { - "line": 125, - "column": 41 + "line": 169, + "column": 22 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -47079,27 +59473,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 4087, - "end": 4092, + "value": "viewer", + "start": 6282, + "end": 6288, "loc": { "start": { - "line": 125, - "column": 42 + "line": 169, + "column": 23 }, "end": { - "line": 125, - "column": 47 + "line": 169, + "column": 29 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -47109,16 +59502,16 @@ "binop": null, "updateContext": null }, - "start": 4092, - "end": 4093, + "start": 6288, + "end": 6289, "loc": { "start": { - "line": 125, - "column": 47 + "line": 169, + "column": 29 }, "end": { - "line": 125, - "column": 48 + "line": 169, + "column": 30 } } }, @@ -47134,17 +59527,17 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 4110, - "end": 4116, + "value": "scene", + "start": 6289, + "end": 6294, "loc": { "start": { - "line": 126, - "column": 16 + "line": 169, + "column": 30 }, "end": { - "line": 126, - "column": 22 + "line": 169, + "column": 35 } } }, @@ -47161,16 +59554,16 @@ "binop": null, "updateContext": null }, - "start": 4116, - "end": 4117, + "start": 6294, + "end": 6295, "loc": { "start": { - "line": 126, - "column": 22 + "line": 169, + "column": 35 }, "end": { - "line": 126, - "column": 23 + "line": 169, + "column": 36 } } }, @@ -47186,17 +59579,17 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 4117, - "end": 4122, + "value": "canvas", + "start": 6295, + "end": 6301, "loc": { "start": { - "line": 126, - "column": 23 + "line": 169, + "column": 36 }, "end": { - "line": 126, - "column": 28 + "line": 169, + "column": 42 } } }, @@ -47213,16 +59606,16 @@ "binop": null, "updateContext": null }, - "start": 4122, - "end": 4123, + "start": 6301, + "end": 6302, "loc": { "start": { - "line": 126, - "column": 28 + "line": 169, + "column": 42 }, "end": { - "line": 126, - "column": 29 + "line": 169, + "column": 43 } } }, @@ -47238,23 +59631,50 @@ "postfix": false, "binop": null }, - "value": "sao", - "start": 4123, - "end": 4126, + "value": "canvas", + "start": 6302, + "end": 6308, "loc": { "start": { - "line": 126, - "column": 29 + "line": 169, + "column": 43 }, "end": { - "line": 126, - "column": 32 + "line": 169, + "column": 49 } } }, { "type": { - "label": ".", + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6308, + "end": 6309, + "loc": { + "start": { + "line": 169, + "column": 49 + }, + "end": { + "line": 169, + "column": 50 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -47265,16 +59685,17 @@ "binop": null, "updateContext": null }, - "start": 4126, - "end": 4127, + "value": "const", + "start": 6318, + "end": 6323, "loc": { "start": { - "line": 126, - "column": 32 + "line": 170, + "column": 8 }, "end": { - "line": 126, - "column": 33 + "line": 170, + "column": 13 } } }, @@ -47290,17 +59711,17 @@ "postfix": false, "binop": null }, - "value": "enabled", - "start": 4127, - "end": 4134, + "value": "canvasOffset", + "start": 6324, + "end": 6336, "loc": { "start": { - "line": 126, - "column": 33 + "line": 170, + "column": 14 }, "end": { - "line": 126, - "column": 40 + "line": 170, + "column": 26 } } }, @@ -47318,23 +59739,22 @@ "updateContext": null }, "value": "=", - "start": 4135, - "end": 4136, + "start": 6337, + "end": 6338, "loc": { "start": { - "line": 126, - "column": 41 + "line": 170, + "column": 27 }, "end": { - "line": 126, - "column": 42 + "line": 170, + "column": 28 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -47342,46 +59762,44 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 4137, - "end": 4142, + "value": "cumulativeOffset", + "start": 6339, + "end": 6355, "loc": { "start": { - "line": 126, - "column": 43 + "line": 170, + "column": 29 }, "end": { - "line": 126, - "column": 48 + "line": 170, + "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": 4142, - "end": 4143, + "start": 6355, + "end": 6356, "loc": { "start": { - "line": 126, - "column": 48 + "line": 170, + "column": 45 }, "end": { - "line": 126, - "column": 49 + "line": 170, + "column": 46 } } }, @@ -47397,23 +59815,23 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 4160, - "end": 4166, + "value": "canvas", + "start": 6356, + "end": 6362, "loc": { "start": { - "line": 127, - "column": 16 + "line": 170, + "column": 46 }, "end": { - "line": 127, - "column": 22 + "line": 170, + "column": 52 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -47421,77 +59839,67 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4166, - "end": 4167, + "start": 6362, + "end": 6363, "loc": { "start": { - "line": 127, - "column": 22 + "line": 170, + "column": 52 }, "end": { - "line": 127, - "column": 23 + "line": 170, + "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": "scene", - "start": 4167, - "end": 4172, + "start": 6363, + "end": 6364, "loc": { "start": { - "line": 127, - "column": 23 + "line": 170, + "column": 53 }, "end": { - "line": 127, - "column": 28 + "line": 170, + "column": 54 } } }, { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 4172, - "end": 4173, + "type": "CommentLine", + "value": "const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;", + "start": 6373, + "end": 6435, "loc": { "start": { - "line": 127, - "column": 28 + "line": 171, + "column": 8 }, "end": { - "line": 127, - "column": 29 + "line": 171, + "column": 70 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -47499,19 +59907,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "edgeMaterial", - "start": 4173, - "end": 4185, + "value": "this", + "start": 6445, + "end": 6449, "loc": { "start": { - "line": 127, - "column": 29 + "line": 173, + "column": 8 }, "end": { - "line": 127, - "column": 41 + "line": 173, + "column": 12 } } }, @@ -47528,16 +59937,16 @@ "binop": null, "updateContext": null }, - "start": 4185, - "end": 4186, + "start": 6449, + "end": 6450, "loc": { "start": { - "line": 127, - "column": 41 + "line": 173, + "column": 12 }, "end": { - "line": 127, - "column": 42 + "line": 173, + "column": 13 } } }, @@ -47553,51 +59962,49 @@ "postfix": false, "binop": null }, - "value": "edges", - "start": 4186, - "end": 4191, + "value": "_img", + "start": 6450, + "end": 6454, "loc": { "start": { - "line": 127, - "column": 42 + "line": 173, + "column": 13 }, "end": { - "line": 127, - "column": 47 + "line": 173, + "column": 17 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 4192, - "end": 4193, + "start": 6454, + "end": 6455, "loc": { "start": { - "line": 127, - "column": 48 + "line": 173, + "column": 17 }, "end": { - "line": 127, - "column": 49 + "line": 173, + "column": 18 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -47605,27 +60012,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 4194, - "end": 4199, + "value": "style", + "start": 6455, + "end": 6460, "loc": { "start": { - "line": 127, - "column": 50 + "line": 173, + "column": 18 }, "end": { - "line": 127, - "column": 55 + "line": 173, + "column": 23 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -47635,16 +60041,16 @@ "binop": null, "updateContext": null }, - "start": 4199, - "end": 4200, + "start": 6460, + "end": 6461, "loc": { "start": { - "line": 127, - "column": 55 + "line": 173, + "column": 23 }, "end": { - "line": 127, - "column": 56 + "line": 173, + "column": 24 } } }, @@ -47660,17 +60066,17 @@ "postfix": false, "binop": null }, - "value": "fastMode", - "start": 4217, - "end": 4225, + "value": "position", + "start": 6461, + "end": 6469, "loc": { "start": { - "line": 128, - "column": 16 + "line": 173, + "column": 24 }, "end": { - "line": 128, - "column": 24 + "line": 173, + "column": 32 } } }, @@ -47688,23 +60094,22 @@ "updateContext": null }, "value": "=", - "start": 4226, - "end": 4227, + "start": 6470, + "end": 6471, "loc": { "start": { - "line": 128, - "column": 25 + "line": 173, + "column": 33 }, "end": { - "line": 128, - "column": 26 + "line": 173, + "column": 34 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -47715,17 +60120,17 @@ "binop": null, "updateContext": null }, - "value": "true", - "start": 4228, - "end": 4232, + "value": "absolute", + "start": 6472, + "end": 6482, "loc": { "start": { - "line": 128, - "column": 27 + "line": 173, + "column": 35 }, "end": { - "line": 128, - "column": 31 + "line": 173, + "column": 45 } } }, @@ -47742,47 +60147,50 @@ "binop": null, "updateContext": null }, - "start": 4232, - "end": 4233, + "start": 6482, + "end": 6483, "loc": { "start": { - "line": 128, - "column": 31 + "line": 173, + "column": 45 }, "end": { - "line": 128, - "column": 32 + "line": 173, + "column": 46 } } }, { "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": 4246, - "end": 4247, + "value": "this", + "start": 6492, + "end": 6496, "loc": { "start": { - "line": 129, - "column": 12 + "line": 174, + "column": 8 }, "end": { - "line": 129, - "column": 13 + "line": 174, + "column": 12 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -47790,26 +60198,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4256, - "end": 4257, + "start": 6496, + "end": 6497, "loc": { "start": { - "line": 130, - "column": 8 + "line": 174, + "column": 12 }, "end": { - "line": 130, - "column": 9 + "line": 174, + "column": 13 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -47817,23 +60226,24 @@ "postfix": false, "binop": null }, - "start": 4257, - "end": 4258, + "value": "_img", + "start": 6497, + "end": 6501, "loc": { "start": { - "line": 130, - "column": 9 + "line": 174, + "column": 13 }, "end": { - "line": 130, - "column": 10 + "line": 174, + "column": 17 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -47843,41 +60253,16 @@ "binop": null, "updateContext": null }, - "start": 4258, - "end": 4259, - "loc": { - "start": { - "line": 130, - "column": 10 - }, - "end": { - "line": 130, - "column": 11 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 4264, - "end": 4265, + "start": 6501, + "end": 6502, "loc": { "start": { - "line": 131, - "column": 4 + "line": 174, + "column": 17 }, "end": { - "line": 131, - "column": 5 + "line": 174, + "column": 18 } } }, @@ -47893,23 +60278,23 @@ "postfix": false, "binop": null }, - "value": "_startFade", - "start": 4271, - "end": 4281, + "value": "style", + "start": 6502, + "end": 6507, "loc": { "start": { - "line": 133, - "column": 4 + "line": 174, + "column": 18 }, "end": { - "line": 133, - "column": 14 + "line": 174, + "column": 23 } } }, { "type": { - "label": "(", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -47917,148 +60302,152 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4281, - "end": 4282, + "start": 6507, + "end": 6508, "loc": { "start": { - "line": 133, - "column": 14 + "line": 174, + "column": 23 }, "end": { - "line": 133, - "column": 15 + "line": 174, + "column": 24 } } }, { "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": 4282, - "end": 4283, + "value": "z-index", + "start": 6508, + "end": 6517, "loc": { "start": { - "line": 133, - "column": 15 + "line": 174, + "column": 24 }, "end": { - "line": 133, - "column": 16 + "line": 174, + "column": 33 } } }, { "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": 4284, - "end": 4285, + "start": 6517, + "end": 6518, "loc": { "start": { - "line": 133, - "column": 17 + "line": 174, + "column": 33 }, "end": { - "line": 133, - "column": 18 + "line": 174, + "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": 4295, - "end": 4297, + "value": "=", + "start": 6519, + "end": 6520, "loc": { "start": { - "line": 135, - "column": 8 + "line": 174, + "column": 35 }, "end": { - "line": 135, - "column": 10 + "line": 174, + "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": 4298, - "end": 4299, + "value": 5, + "start": 6521, + "end": 6522, "loc": { "start": { - "line": 135, - "column": 11 + "line": 174, + "column": 37 }, - "end": { - "line": 135, - "column": 12 + "end": { + "line": 174, + "column": 38 } } }, { "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": 4299, - "end": 4300, + "start": 6522, + "end": 6523, "loc": { "start": { - "line": 135, - "column": 12 + "line": 174, + "column": 38 }, "end": { - "line": 135, - "column": 13 + "line": 174, + "column": 39 } } }, @@ -48077,16 +60466,16 @@ "updateContext": null }, "value": "this", - "start": 4300, - "end": 4304, + "start": 6532, + "end": 6536, "loc": { "start": { - "line": 135, - "column": 13 + "line": 175, + "column": 8 }, "end": { - "line": 135, - "column": 17 + "line": 175, + "column": 12 } } }, @@ -48103,16 +60492,16 @@ "binop": null, "updateContext": null }, - "start": 4304, - "end": 4305, + "start": 6536, + "end": 6537, "loc": { "start": { - "line": 135, - "column": 17 + "line": 175, + "column": 12 }, "end": { - "line": 135, - "column": 18 + "line": 175, + "column": 13 } } }, @@ -48129,22 +60518,22 @@ "binop": null }, "value": "_img", - "start": 4305, - "end": 4309, + "start": 6537, + "end": 6541, "loc": { "start": { - "line": 135, - "column": 18 + "line": 175, + "column": 13 }, "end": { - "line": 135, - "column": 22 + "line": 175, + "column": 17 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -48152,25 +60541,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4309, - "end": 4310, + "start": 6541, + "end": 6542, "loc": { "start": { - "line": 135, - "column": 22 + "line": 175, + "column": 17 }, "end": { - "line": 135, - "column": 23 + "line": 175, + "column": 18 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -48179,24 +60569,24 @@ "postfix": false, "binop": null }, - "start": 4311, - "end": 4312, + "value": "style", + "start": 6542, + "end": 6547, "loc": { "start": { - "line": 135, - "column": 24 + "line": 175, + "column": 18 }, "end": { - "line": 135, - "column": 25 + "line": 175, + "column": 23 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "[", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -48206,25 +60596,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 4325, - "end": 4329, + "start": 6547, + "end": 6548, "loc": { "start": { - "line": 136, - "column": 12 + "line": 175, + "column": 23 }, "end": { - "line": 136, - "column": 16 + "line": 175, + "column": 24 } } }, { "type": { - "label": ".", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -48233,75 +60622,78 @@ "binop": null, "updateContext": null }, - "start": 4329, - "end": 4330, + "value": "background", + "start": 6548, + "end": 6560, "loc": { "start": { - "line": 136, - "column": 16 + "line": 175, + "column": 24 }, "end": { - "line": 136, - "column": 17 + "line": 175, + "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": "_initFade", - "start": 4330, - "end": 4339, + "start": 6560, + "end": 6561, "loc": { "start": { - "line": 136, - "column": 17 + "line": 175, + "column": 36 }, "end": { - "line": 136, - "column": 26 + "line": 175, + "column": 37 } } }, { "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": 4339, - "end": 4340, + "value": "=", + "start": 6562, + "end": 6563, "loc": { "start": { - "line": 136, - "column": 26 + "line": 175, + "column": 38 }, "end": { - "line": 136, - "column": 27 + "line": 175, + "column": 39 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -48309,23 +60701,24 @@ "postfix": false, "binop": null }, - "start": 4340, - "end": 4341, + "value": "canvas", + "start": 6564, + "end": 6570, "loc": { "start": { - "line": 136, - "column": 27 + "line": 175, + "column": 40 }, "end": { - "line": 136, - "column": 28 + "line": 175, + "column": 46 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -48335,24 +60728,24 @@ "binop": null, "updateContext": null }, - "start": 4341, - "end": 4342, + "start": 6570, + "end": 6571, "loc": { "start": { - "line": 136, - "column": 28 + "line": 175, + "column": 46 }, "end": { - "line": 136, - "column": 29 + "line": 175, + "column": 47 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -48360,23 +60753,23 @@ "postfix": false, "binop": null }, - "start": 4351, - "end": 4352, + "value": "style", + "start": 6571, + "end": 6576, "loc": { "start": { - "line": 137, - "column": 8 + "line": 175, + "column": 47 }, "end": { - "line": 137, - "column": 9 + "line": 175, + "column": 52 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -48387,17 +60780,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 4362, - "end": 4367, + "start": 6576, + "end": 6577, "loc": { "start": { - "line": 139, - "column": 8 + "line": 175, + "column": 52 }, "end": { - "line": 139, - "column": 13 + "line": 175, + "column": 53 } } }, @@ -48413,50 +60805,50 @@ "postfix": false, "binop": null }, - "value": "interval", - "start": 4368, - "end": 4376, + "value": "background", + "start": 6577, + "end": 6587, "loc": { "start": { - "line": 139, - "column": 14 + "line": 175, + "column": 53 }, "end": { - "line": 139, - "column": 22 + "line": 175, + "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": 4377, - "end": 4378, + "start": 6587, + "end": 6588, "loc": { "start": { - "line": 139, - "column": 23 + "line": 175, + "column": 63 }, "end": { - "line": 139, - "column": 24 + "line": 175, + "column": 64 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -48467,50 +60859,23 @@ "binop": null, "updateContext": null }, - "value": 50, - "start": 4379, - "end": 4381, - "loc": { - "start": { - "line": 139, - "column": 25 - }, - "end": { - "line": 139, - "column": 27 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 4381, - "end": 4382, + "value": "this", + "start": 6597, + "end": 6601, "loc": { "start": { - "line": 139, - "column": 27 + "line": 176, + "column": 8 }, "end": { - "line": 139, - "column": 28 + "line": 176, + "column": 12 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -48521,16 +60886,15 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 4391, - "end": 4396, + "start": 6601, + "end": 6602, "loc": { "start": { - "line": 140, - "column": 8 + "line": 176, + "column": 12 }, "end": { - "line": 140, + "line": 176, "column": 13 } } @@ -48547,50 +60911,49 @@ "postfix": false, "binop": null }, - "value": "inc", - "start": 4397, - "end": 4400, + "value": "_img", + "start": 6602, + "end": 6606, "loc": { "start": { - "line": 140, - "column": 14 + "line": 176, + "column": 13 }, "end": { - "line": 140, + "line": 176, "column": 17 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 4401, - "end": 4402, + "start": 6606, + "end": 6607, "loc": { "start": { - "line": 140, - "column": 18 + "line": 176, + "column": 17 }, "end": { - "line": 140, - "column": 19 + "line": 176, + "column": 18 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -48598,79 +60961,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 4403, - "end": 4404, + "value": "style", + "start": 6607, + "end": 6612, "loc": { "start": { - "line": 140, - "column": 20 + "line": 176, + "column": 18 }, "end": { - "line": 140, - "column": 21 + "line": 176, + "column": 23 } } }, { "type": { - "label": "/", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, + "binop": null, "updateContext": null }, - "value": "/", - "start": 4405, - "end": 4406, + "start": 6612, + "end": 6613, "loc": { "start": { - "line": 140, - "column": 22 - }, - "end": { - "line": 140, + "line": 176, "column": 23 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 4407, - "end": 4408, - "loc": { - "start": { - "line": 140, - "column": 24 }, "end": { - "line": 140, - "column": 25 + "line": 176, + "column": 24 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -48678,45 +61013,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 4408, - "end": 4412, + "value": "left", + "start": 6613, + "end": 6617, "loc": { "start": { - "line": 140, - "column": 25 + "line": 176, + "column": 24 }, "end": { - "line": 140, - "column": 29 + "line": 176, + "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, "updateContext": null }, - "start": 4412, - "end": 4413, + "value": "=", + "start": 6618, + "end": 6619, "loc": { "start": { - "line": 140, + "line": 176, "column": 29 }, "end": { - "line": 140, + "line": 176, "column": 30 } } @@ -48733,44 +61068,43 @@ "postfix": false, "binop": null }, - "value": "_fadeMillisecs", - "start": 4413, - "end": 4427, + "value": "canvasOffset", + "start": 6620, + "end": 6632, "loc": { "start": { - "line": 140, - "column": 30 + "line": 176, + "column": 31 }, "end": { - "line": 140, - "column": 44 + "line": 176, + "column": 43 } } }, { "type": { - "label": "/", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 10, + "binop": null, "updateContext": null }, - "value": "/", - "start": 4428, - "end": 4429, + "start": 6632, + "end": 6633, "loc": { "start": { - "line": 140, - "column": 45 + "line": 176, + "column": 43 }, "end": { - "line": 140, - "column": 46 + "line": 176, + "column": 44 } } }, @@ -48786,50 +61120,52 @@ "postfix": false, "binop": null }, - "value": "interval", - "start": 4430, - "end": 4438, + "value": "left", + "start": 6633, + "end": 6637, "loc": { "start": { - "line": 140, - "column": 47 + "line": 176, + "column": 44 }, "end": { - "line": 140, - "column": 55 + "line": 176, + "column": 48 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null + "binop": 9, + "updateContext": null }, - "start": 4438, - "end": 4439, + "value": "+", + "start": 6638, + "end": 6639, "loc": { "start": { - "line": 140, - "column": 55 + "line": 176, + "column": 49 }, "end": { - "line": 140, - "column": 56 + "line": 176, + "column": 50 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -48838,24 +61174,24 @@ "binop": null, "updateContext": null }, - "start": 4439, - "end": 4440, + "value": "px", + "start": 6640, + "end": 6644, "loc": { "start": { - "line": 140, - "column": 56 + "line": 176, + "column": 51 }, "end": { - "line": 140, - "column": 57 + "line": 176, + "column": 55 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -48865,51 +61201,52 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 4450, - "end": 4452, + "start": 6644, + "end": 6645, "loc": { "start": { - "line": 142, - "column": 8 + "line": 176, + "column": 55 }, "end": { - "line": 142, - "column": 10 + "line": 176, + "column": 56 } } }, { "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": 4453, - "end": 4454, + "value": "this", + "start": 6654, + "end": 6658, "loc": { "start": { - "line": 142, - "column": 11 + "line": 177, + "column": 8 }, "end": { - "line": 142, + "line": 177, "column": 12 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -48918,77 +61255,76 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 4454, - "end": 4458, + "start": 6658, + "end": 6659, "loc": { "start": { - "line": 142, + "line": 177, "column": 12 }, "end": { - "line": 142, - "column": 16 + "line": 177, + "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": 4458, - "end": 4459, + "value": "_img", + "start": 6659, + "end": 6663, "loc": { "start": { - "line": 142, - "column": 16 + "line": 177, + "column": 13 }, "end": { - "line": 142, + "line": 177, "column": 17 } } }, { "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": "_pInterval", - "start": 4459, - "end": 4469, + "start": 6663, + "end": 6664, "loc": { "start": { - "line": 142, + "line": 177, "column": 17 }, "end": { - "line": 142, - "column": 27 + "line": 177, + "column": 18 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -48996,41 +61332,43 @@ "postfix": false, "binop": null }, - "start": 4469, - "end": 4470, + "value": "style", + "start": 6664, + "end": 6669, "loc": { "start": { - "line": 142, - "column": 27 + "line": 177, + "column": 18 }, "end": { - "line": 142, - "column": 28 + "line": 177, + "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": 4471, - "end": 4472, + "start": 6669, + "end": 6670, "loc": { "start": { - "line": 142, - "column": 29 + "line": 177, + "column": 23 }, "end": { - "line": 142, - "column": 30 + "line": 177, + "column": 24 } } }, @@ -49046,49 +61384,50 @@ "postfix": false, "binop": null }, - "value": "clearInterval", - "start": 4485, - "end": 4498, + "value": "top", + "start": 6670, + "end": 6673, "loc": { "start": { - "line": 143, - "column": 12 + "line": 177, + "column": 24 }, "end": { - "line": 143, - "column": 25 + "line": 177, + "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": 4498, - "end": 4499, + "value": "=", + "start": 6674, + "end": 6675, "loc": { "start": { - "line": 143, - "column": 25 + "line": 177, + "column": 28 }, "end": { - "line": 143, - "column": 26 + "line": 177, + "column": 29 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -49096,20 +61435,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 4499, - "end": 4503, + "value": "canvasOffset", + "start": 6676, + "end": 6688, "loc": { "start": { - "line": 143, - "column": 26 + "line": 177, + "column": 30 }, "end": { - "line": 143, - "column": 30 + "line": 177, + "column": 42 } } }, @@ -49126,16 +61464,16 @@ "binop": null, "updateContext": null }, - "start": 4503, - "end": 4504, + "start": 6688, + "end": 6689, "loc": { "start": { - "line": 143, - "column": 30 + "line": 177, + "column": 42 }, "end": { - "line": 143, - "column": 31 + "line": 177, + "column": 43 } } }, @@ -49151,42 +61489,71 @@ "postfix": false, "binop": null }, - "value": "_pInterval", - "start": 4504, - "end": 4514, + "value": "top", + "start": 6689, + "end": 6692, "loc": { "start": { - "line": 143, - "column": 31 + "line": 177, + "column": 43 }, "end": { - "line": 143, - "column": 41 + "line": 177, + "column": 46 } } }, { "type": { - "label": ")", + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "+", + "start": 6693, + "end": 6694, + "loc": { + "start": { + "line": 177, + "column": 47 + }, + "end": { + "line": 177, + "column": 48 + } + } + }, + { + "type": { + "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": 4514, - "end": 4515, + "value": "px", + "start": 6695, + "end": 6699, "loc": { "start": { - "line": 143, - "column": 41 + "line": 177, + "column": 49 }, "end": { - "line": 143, - "column": 42 + "line": 177, + "column": 53 } } }, @@ -49203,16 +61570,16 @@ "binop": null, "updateContext": null }, - "start": 4515, - "end": 4516, + "start": 6699, + "end": 6700, "loc": { "start": { - "line": 143, - "column": 42 + "line": 177, + "column": 53 }, "end": { - "line": 143, - "column": 43 + "line": 177, + "column": 54 } } }, @@ -49231,16 +61598,16 @@ "updateContext": null }, "value": "this", - "start": 4529, - "end": 4533, + "start": 6709, + "end": 6713, "loc": { "start": { - "line": 144, - "column": 12 + "line": 178, + "column": 8 }, "end": { - "line": 144, - "column": 16 + "line": 178, + "column": 12 } } }, @@ -49257,16 +61624,16 @@ "binop": null, "updateContext": null }, - "start": 4533, - "end": 4534, + "start": 6713, + "end": 6714, "loc": { "start": { - "line": 144, - "column": 16 + "line": 178, + "column": 12 }, "end": { - "line": 144, - "column": 17 + "line": 178, + "column": 13 } } }, @@ -49282,51 +61649,49 @@ "postfix": false, "binop": null }, - "value": "_pInterval", - "start": 4534, - "end": 4544, + "value": "_img", + "start": 6714, + "end": 6718, "loc": { "start": { - "line": 144, - "column": 17 + "line": 178, + "column": 13 }, "end": { - "line": 144, - "column": 27 + "line": 178, + "column": 17 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 4545, - "end": 4546, + "start": 6718, + "end": 6719, "loc": { "start": { - "line": 144, - "column": 28 + "line": 178, + "column": 17 }, "end": { - "line": 144, - "column": 29 + "line": 178, + "column": 18 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -49334,27 +61699,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 4547, - "end": 4551, + "value": "style", + "start": 6719, + "end": 6724, "loc": { "start": { - "line": 144, - "column": 30 + "line": 178, + "column": 18 }, "end": { - "line": 144, - "column": 34 + "line": 178, + "column": 23 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -49364,24 +61728,24 @@ "binop": null, "updateContext": null }, - "start": 4551, - "end": 4552, + "start": 6724, + "end": 6725, "loc": { "start": { - "line": 144, - "column": 34 + "line": 178, + "column": 23 }, "end": { - "line": 144, - "column": 35 + "line": 178, + "column": 24 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -49389,44 +61753,44 @@ "postfix": false, "binop": null }, - "start": 4561, - "end": 4562, + "value": "width", + "start": 6725, + "end": 6730, "loc": { "start": { - "line": 145, - "column": 8 + "line": 178, + "column": 24 }, "end": { - "line": 145, - "column": 9 + "line": 178, + "column": 29 } } }, { "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": 4572, - "end": 4577, + "value": "=", + "start": 6731, + "end": 6732, "loc": { "start": { - "line": 147, - "column": 8 + "line": 178, + "column": 30 }, "end": { - "line": 147, - "column": 13 + "line": 178, + "column": 31 } } }, @@ -49443,50 +61807,48 @@ "binop": null }, "value": "canvas", - "start": 4578, - "end": 4584, + "start": 6733, + "end": 6739, "loc": { "start": { - "line": 147, - "column": 14 + "line": 178, + "column": 32 }, "end": { - "line": 147, - "column": 20 + "line": 178, + "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 }, - "value": "=", - "start": 4585, - "end": 4586, + "start": 6739, + "end": 6740, "loc": { "start": { - "line": 147, - "column": 21 + "line": 178, + "column": 38 }, "end": { - "line": 147, - "column": 22 + "line": 178, + "column": 39 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -49494,52 +61856,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 4587, - "end": 4591, + "value": "width", + "start": 6740, + "end": 6745, "loc": { "start": { - "line": 147, - "column": 23 + "line": 178, + "column": 39 }, "end": { - "line": 147, - "column": 27 + "line": 178, + "column": 44 } } }, { "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": 4591, - "end": 4592, + "value": "+", + "start": 6746, + "end": 6747, "loc": { "start": { - "line": 147, - "column": 27 + "line": 178, + "column": 45 }, "end": { - "line": 147, - "column": 28 + "line": 178, + "column": 46 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -49547,26 +61909,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "viewer", - "start": 4592, - "end": 4598, + "value": "px", + "start": 6748, + "end": 6752, "loc": { "start": { - "line": 147, - "column": 28 + "line": 178, + "column": 47 }, "end": { - "line": 147, - "column": 34 + "line": 178, + "column": 51 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -49576,22 +61939,23 @@ "binop": null, "updateContext": null }, - "start": 4598, - "end": 4599, + "start": 6752, + "end": 6753, "loc": { "start": { - "line": 147, - "column": 34 + "line": 178, + "column": 51 }, "end": { - "line": 147, - "column": 35 + "line": 178, + "column": 52 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -49599,19 +61963,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "scene", - "start": 4599, - "end": 4604, + "value": "this", + "start": 6762, + "end": 6766, "loc": { "start": { - "line": 147, - "column": 35 + "line": 179, + "column": 8 }, "end": { - "line": 147, - "column": 40 + "line": 179, + "column": 12 } } }, @@ -49628,16 +61993,16 @@ "binop": null, "updateContext": null }, - "start": 4604, - "end": 4605, + "start": 6766, + "end": 6767, "loc": { "start": { - "line": 147, - "column": 40 + "line": 179, + "column": 12 }, "end": { - "line": 147, - "column": 41 + "line": 179, + "column": 13 } } }, @@ -49653,17 +62018,17 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 4605, - "end": 4611, + "value": "_img", + "start": 6767, + "end": 6771, "loc": { "start": { - "line": 147, - "column": 41 + "line": 179, + "column": 13 }, "end": { - "line": 147, - "column": 47 + "line": 179, + "column": 17 } } }, @@ -49680,16 +62045,16 @@ "binop": null, "updateContext": null }, - "start": 4611, - "end": 4612, + "start": 6771, + "end": 6772, "loc": { "start": { - "line": 147, - "column": 47 + "line": 179, + "column": 17 }, "end": { - "line": 147, - "column": 48 + "line": 179, + "column": 18 } } }, @@ -49705,50 +62070,23 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 4612, - "end": 4618, - "loc": { - "start": { - "line": 147, - "column": 48 - }, - "end": { - "line": 147, - "column": 54 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 4618, - "end": 4619, + "value": "style", + "start": 6772, + "end": 6777, "loc": { "start": { - "line": 147, - "column": 54 + "line": 179, + "column": 18 }, "end": { - "line": 147, - "column": 55 + "line": 179, + "column": 23 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -49759,17 +62097,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 4628, - "end": 4633, + "start": 6777, + "end": 6778, "loc": { "start": { - "line": 148, - "column": 8 + "line": 179, + "column": 23 }, "end": { - "line": 148, - "column": 13 + "line": 179, + "column": 24 } } }, @@ -49785,17 +62122,17 @@ "postfix": false, "binop": null }, - "value": "canvasOffset", - "start": 4634, - "end": 4646, + "value": "height", + "start": 6778, + "end": 6784, "loc": { "start": { - "line": 148, - "column": 14 + "line": 179, + "column": 24 }, "end": { - "line": 148, - "column": 26 + "line": 179, + "column": 30 } } }, @@ -49813,16 +62150,16 @@ "updateContext": null }, "value": "=", - "start": 4647, - "end": 4648, + "start": 6785, + "end": 6786, "loc": { "start": { - "line": 148, - "column": 27 + "line": 179, + "column": 31 }, "end": { - "line": 148, - "column": 28 + "line": 179, + "column": 32 } } }, @@ -49838,42 +62175,43 @@ "postfix": false, "binop": null }, - "value": "cumulativeOffset", - "start": 4649, - "end": 4665, + "value": "canvas", + "start": 6787, + "end": 6793, "loc": { "start": { - "line": 148, - "column": 29 + "line": 179, + "column": 33 }, "end": { - "line": 148, - "column": 45 + "line": 179, + "column": 39 } } }, { "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": 4665, - "end": 4666, + "start": 6793, + "end": 6794, "loc": { "start": { - "line": 148, - "column": 45 + "line": 179, + "column": 39 }, "end": { - "line": 148, - "column": 46 + "line": 179, + "column": 40 } } }, @@ -49887,43 +62225,72 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null + }, + "value": "height", + "start": 6794, + "end": 6800, + "loc": { + "start": { + "line": 179, + "column": 40 + }, + "end": { + "line": 179, + "column": 46 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null }, - "value": "canvas", - "start": 4666, - "end": 4672, + "value": "+", + "start": 6801, + "end": 6802, "loc": { "start": { - "line": 148, - "column": 46 + "line": 179, + "column": 47 }, "end": { - "line": 148, - "column": 52 + "line": 179, + "column": 48 } } }, { "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": 4672, - "end": 4673, + "value": "px", + "start": 6803, + "end": 6807, "loc": { "start": { - "line": 148, - "column": 52 + "line": 179, + "column": 49 }, "end": { - "line": 148, + "line": 179, "column": 53 } } @@ -49941,35 +62308,19 @@ "binop": null, "updateContext": null }, - "start": 4673, - "end": 4674, + "start": 6807, + "end": 6808, "loc": { "start": { - "line": 148, + "line": 179, "column": 53 }, "end": { - "line": 148, + "line": 179, "column": 54 } } }, - { - "type": "CommentLine", - "value": "const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;", - "start": 4683, - "end": 4745, - "loc": { - "start": { - "line": 149, - "column": 8 - }, - "end": { - "line": 149, - "column": 70 - } - } - }, { "type": { "label": "this", @@ -49985,15 +62336,15 @@ "updateContext": null }, "value": "this", - "start": 4755, - "end": 4759, + "start": 6817, + "end": 6821, "loc": { "start": { - "line": 151, + "line": 180, "column": 8 }, "end": { - "line": 151, + "line": 180, "column": 12 } } @@ -50011,15 +62362,15 @@ "binop": null, "updateContext": null }, - "start": 4759, - "end": 4760, + "start": 6821, + "end": 6822, "loc": { "start": { - "line": 151, + "line": 180, "column": 12 }, "end": { - "line": 151, + "line": 180, "column": 13 } } @@ -50037,15 +62388,15 @@ "binop": null }, "value": "_img", - "start": 4760, - "end": 4764, + "start": 6822, + "end": 6826, "loc": { "start": { - "line": 151, + "line": 180, "column": 13 }, "end": { - "line": 151, + "line": 180, "column": 17 } } @@ -50063,15 +62414,15 @@ "binop": null, "updateContext": null }, - "start": 4764, - "end": 4765, + "start": 6826, + "end": 6827, "loc": { "start": { - "line": 151, + "line": 180, "column": 17 }, "end": { - "line": 151, + "line": 180, "column": 18 } } @@ -50089,15 +62440,15 @@ "binop": null }, "value": "style", - "start": 4765, - "end": 4770, + "start": 6827, + "end": 6832, "loc": { "start": { - "line": 151, + "line": 180, "column": 18 }, "end": { - "line": 151, + "line": 180, "column": 23 } } @@ -50115,15 +62466,15 @@ "binop": null, "updateContext": null }, - "start": 4770, - "end": 4771, + "start": 6832, + "end": 6833, "loc": { "start": { - "line": 151, + "line": 180, "column": 23 }, "end": { - "line": 151, + "line": 180, "column": 24 } } @@ -50140,17 +62491,17 @@ "postfix": false, "binop": null }, - "value": "position", - "start": 4771, - "end": 4779, + "value": "opacity", + "start": 6833, + "end": 6840, "loc": { "start": { - "line": 151, + "line": 180, "column": 24 }, "end": { - "line": 151, - "column": 32 + "line": 180, + "column": 31 } } }, @@ -50168,22 +62519,22 @@ "updateContext": null }, "value": "=", - "start": 4780, - "end": 4781, + "start": 6841, + "end": 6842, "loc": { "start": { - "line": 151, - "column": 33 + "line": 180, + "column": 32 }, "end": { - "line": 151, - "column": 34 + "line": 180, + "column": 33 } } }, { "type": { - "label": "string", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -50194,17 +62545,17 @@ "binop": null, "updateContext": null }, - "value": "absolute", - "start": 4782, - "end": 4792, + "value": 1, + "start": 6843, + "end": 6844, "loc": { "start": { - "line": 151, - "column": 35 + "line": 180, + "column": 34 }, "end": { - "line": 151, - "column": 45 + "line": 180, + "column": 35 } } }, @@ -50221,16 +62572,16 @@ "binop": null, "updateContext": null }, - "start": 4792, - "end": 4793, + "start": 6844, + "end": 6845, "loc": { "start": { - "line": 151, - "column": 45 + "line": 180, + "column": 35 }, "end": { - "line": 151, - "column": 46 + "line": 180, + "column": 36 } } }, @@ -50249,15 +62600,15 @@ "updateContext": null }, "value": "this", - "start": 4802, - "end": 4806, + "start": 6854, + "end": 6858, "loc": { "start": { - "line": 152, + "line": 181, "column": 8 }, "end": { - "line": 152, + "line": 181, "column": 12 } } @@ -50275,15 +62626,15 @@ "binop": null, "updateContext": null }, - "start": 4806, - "end": 4807, + "start": 6858, + "end": 6859, "loc": { "start": { - "line": 152, + "line": 181, "column": 12 }, "end": { - "line": 152, + "line": 181, "column": 13 } } @@ -50301,15 +62652,15 @@ "binop": null }, "value": "_img", - "start": 4807, - "end": 4811, + "start": 6859, + "end": 6863, "loc": { "start": { - "line": 152, + "line": 181, "column": 13 }, "end": { - "line": 152, + "line": 181, "column": 17 } } @@ -50327,15 +62678,15 @@ "binop": null, "updateContext": null }, - "start": 4811, - "end": 4812, + "start": 6863, + "end": 6864, "loc": { "start": { - "line": 152, + "line": 181, "column": 17 }, "end": { - "line": 152, + "line": 181, "column": 18 } } @@ -50352,49 +62703,50 @@ "postfix": false, "binop": null }, - "value": "style", - "start": 4812, - "end": 4817, + "value": "width", + "start": 6864, + "end": 6869, "loc": { "start": { - "line": 152, + "line": 181, "column": 18 }, "end": { - "line": 152, + "line": 181, "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, "updateContext": null }, - "start": 4817, - "end": 4818, + "value": "=", + "start": 6870, + "end": 6871, "loc": { "start": { - "line": 152, - "column": 23 + "line": 181, + "column": 24 }, "end": { - "line": 152, - "column": 24 + "line": 181, + "column": 25 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -50402,26 +62754,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "z-index", - "start": 4818, - "end": 4827, + "value": "canvas", + "start": 6872, + "end": 6878, "loc": { "start": { - "line": 152, - "column": 24 + "line": 181, + "column": 26 }, "end": { - "line": 152, - "column": 33 + "line": 181, + "column": 32 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -50432,49 +62783,22 @@ "binop": null, "updateContext": null }, - "start": 4827, - "end": 4828, - "loc": { - "start": { - "line": 152, - "column": 33 - }, - "end": { - "line": 152, - "column": 34 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 4829, - "end": 4830, + "start": 6878, + "end": 6879, "loc": { "start": { - "line": 152, - "column": 35 + "line": 181, + "column": 32 }, "end": { - "line": 152, - "column": 36 + "line": 181, + "column": 33 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -50482,19 +62806,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 5, - "start": 4831, - "end": 4832, + "value": "width", + "start": 6879, + "end": 6884, "loc": { "start": { - "line": 152, - "column": 37 + "line": 181, + "column": 33 }, "end": { - "line": 152, + "line": 181, "column": 38 } } @@ -50512,15 +62835,15 @@ "binop": null, "updateContext": null }, - "start": 4832, - "end": 4833, + "start": 6884, + "end": 6885, "loc": { "start": { - "line": 152, + "line": 181, "column": 38 }, "end": { - "line": 152, + "line": 181, "column": 39 } } @@ -50540,15 +62863,15 @@ "updateContext": null }, "value": "this", - "start": 4842, - "end": 4846, + "start": 6894, + "end": 6898, "loc": { "start": { - "line": 153, + "line": 182, "column": 8 }, "end": { - "line": 153, + "line": 182, "column": 12 } } @@ -50566,15 +62889,15 @@ "binop": null, "updateContext": null }, - "start": 4846, - "end": 4847, + "start": 6898, + "end": 6899, "loc": { "start": { - "line": 153, + "line": 182, "column": 12 }, "end": { - "line": 153, + "line": 182, "column": 13 } } @@ -50592,15 +62915,15 @@ "binop": null }, "value": "_img", - "start": 4847, - "end": 4851, + "start": 6899, + "end": 6903, "loc": { "start": { - "line": 153, + "line": 182, "column": 13 }, "end": { - "line": 153, + "line": 182, "column": 17 } } @@ -50618,15 +62941,15 @@ "binop": null, "updateContext": null }, - "start": 4851, - "end": 4852, + "start": 6903, + "end": 6904, "loc": { "start": { - "line": 153, + "line": 182, "column": 17 }, "end": { - "line": 153, + "line": 182, "column": 18 } } @@ -50643,49 +62966,50 @@ "postfix": false, "binop": null }, - "value": "style", - "start": 4852, - "end": 4857, + "value": "height", + "start": 6904, + "end": 6910, "loc": { "start": { - "line": 153, + "line": 182, "column": 18 }, "end": { - "line": 153, - "column": 23 + "line": 182, + "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": 4857, - "end": 4858, + "value": "=", + "start": 6911, + "end": 6912, "loc": { "start": { - "line": 153, - "column": 23 + "line": 182, + "column": 25 }, "end": { - "line": 153, - "column": 24 + "line": 182, + "column": 26 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -50693,26 +63017,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "background", - "start": 4858, - "end": 4870, + "value": "canvas", + "start": 6913, + "end": 6919, "loc": { "start": { - "line": 153, - "column": 24 + "line": 182, + "column": 27 }, "end": { - "line": 153, - "column": 36 + "line": 182, + "column": 33 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -50723,49 +63046,75 @@ "binop": null, "updateContext": null }, - "start": 4870, - "end": 4871, + "start": 6919, + "end": 6920, "loc": { "start": { - "line": 153, - "column": 36 + "line": 182, + "column": 33 }, "end": { - "line": 153, - "column": 37 + "line": 182, + "column": 34 } } }, { "type": { - "label": "=", + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "height", + "start": 6920, + "end": 6926, + "loc": { + "start": { + "line": 182, + "column": 34 + }, + "end": { + "line": 182, + "column": 40 + } + } + }, + { + "type": { + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 4872, - "end": 4873, + "start": 6926, + "end": 6927, "loc": { "start": { - "line": 153, - "column": 38 + "line": 182, + "column": 40 }, "end": { - "line": 153, - "column": 39 + "line": 182, + "column": 41 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -50773,19 +63122,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "canvas", - "start": 4874, - "end": 4880, + "value": "this", + "start": 6936, + "end": 6940, "loc": { "start": { - "line": 153, - "column": 40 + "line": 183, + "column": 8 }, "end": { - "line": 153, - "column": 46 + "line": 183, + "column": 12 } } }, @@ -50802,16 +63152,16 @@ "binop": null, "updateContext": null }, - "start": 4880, - "end": 4881, + "start": 6940, + "end": 6941, "loc": { "start": { - "line": 153, - "column": 46 + "line": 183, + "column": 12 }, "end": { - "line": 153, - "column": 47 + "line": 183, + "column": 13 } } }, @@ -50827,17 +63177,17 @@ "postfix": false, "binop": null }, - "value": "style", - "start": 4881, - "end": 4886, + "value": "_img", + "start": 6941, + "end": 6945, "loc": { "start": { - "line": 153, - "column": 47 + "line": 183, + "column": 13 }, "end": { - "line": 153, - "column": 52 + "line": 183, + "column": 17 } } }, @@ -50854,16 +63204,16 @@ "binop": null, "updateContext": null }, - "start": 4886, - "end": 4887, + "start": 6945, + "end": 6946, "loc": { "start": { - "line": 153, - "column": 52 + "line": 183, + "column": 17 }, "end": { - "line": 153, - "column": 53 + "line": 183, + "column": 18 } } }, @@ -50879,17 +63229,71 @@ "postfix": false, "binop": null }, - "value": "background", - "start": 4887, - "end": 4897, + "value": "src", + "start": 6946, + "end": 6949, "loc": { "start": { - "line": 153, - "column": 53 + "line": 183, + "column": 18 }, "end": { - "line": 153, - "column": 63 + "line": 183, + "column": 21 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 6950, + "end": 6951, + "loc": { + "start": { + "line": 183, + "column": 22 + }, + "end": { + "line": 183, + "column": 23 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "", + "start": 6952, + "end": 6954, + "loc": { + "start": { + "line": 183, + "column": 24 + }, + "end": { + "line": 183, + "column": 26 } } }, @@ -50906,16 +63310,32 @@ "binop": null, "updateContext": null }, - "start": 4897, - "end": 4898, + "start": 6954, + "end": 6955, "loc": { "start": { - "line": 153, - "column": 63 + "line": 183, + "column": 26 }, "end": { - "line": 153, - "column": 64 + "line": 183, + "column": 27 + } + } + }, + { + "type": "CommentLine", + "value": " Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624", + "start": 6956, + "end": 7026, + "loc": { + "start": { + "line": 183, + "column": 28 + }, + "end": { + "line": 183, + "column": 98 } } }, @@ -50934,15 +63354,15 @@ "updateContext": null }, "value": "this", - "start": 4907, - "end": 4911, + "start": 7035, + "end": 7039, "loc": { "start": { - "line": 154, + "line": 184, "column": 8 }, "end": { - "line": 154, + "line": 184, "column": 12 } } @@ -50960,15 +63380,15 @@ "binop": null, "updateContext": null }, - "start": 4911, - "end": 4912, + "start": 7039, + "end": 7040, "loc": { "start": { - "line": 154, + "line": 184, "column": 12 }, "end": { - "line": 154, + "line": 184, "column": 13 } } @@ -50986,15 +63406,15 @@ "binop": null }, "value": "_img", - "start": 4912, - "end": 4916, + "start": 7040, + "end": 7044, "loc": { "start": { - "line": 154, + "line": 184, "column": 13 }, "end": { - "line": 154, + "line": 184, "column": 17 } } @@ -51012,15 +63432,15 @@ "binop": null, "updateContext": null }, - "start": 4916, - "end": 4917, + "start": 7044, + "end": 7045, "loc": { "start": { - "line": 154, + "line": 184, "column": 17 }, "end": { - "line": 154, + "line": 184, "column": 18 } } @@ -51037,50 +63457,129 @@ "postfix": false, "binop": null }, - "value": "style", - "start": 4917, - "end": 4922, + "value": "src", + "start": 7045, + "end": 7048, + "loc": { + "start": { + "line": 184, + "column": 18 + }, + "end": { + "line": 184, + "column": 21 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 7049, + "end": 7050, + "loc": { + "start": { + "line": 184, + "column": 22 + }, + "end": { + "line": 184, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "viewer", + "start": 7051, + "end": 7057, + "loc": { + "start": { + "line": 184, + "column": 24 + }, + "end": { + "line": 184, + "column": 30 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7057, + "end": 7058, "loc": { "start": { - "line": 154, - "column": 18 + "line": 184, + "column": 30 }, "end": { - "line": 154, - "column": 23 + "line": 184, + "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": 4922, - "end": 4923, + "value": "getSnapshot", + "start": 7058, + "end": 7069, "loc": { "start": { - "line": 154, - "column": 23 + "line": 184, + "column": 31 }, "end": { - "line": 154, - "column": 24 + "line": 184, + "column": 42 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -51089,44 +63588,41 @@ "postfix": false, "binop": null }, - "value": "left", - "start": 4923, - "end": 4927, + "start": 7069, + "end": 7070, "loc": { "start": { - "line": 154, - "column": 24 + "line": 184, + "column": 42 }, "end": { - "line": 154, - "column": 28 + "line": 184, + "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": 4928, - "end": 4929, + "start": 7070, + "end": 7071, "loc": { "start": { - "line": 154, - "column": 29 + "line": 184, + "column": 43 }, "end": { - "line": 154, - "column": 30 + "line": 184, + "column": 44 } } }, @@ -51142,24 +63638,24 @@ "postfix": false, "binop": null }, - "value": "canvasOffset", - "start": 4930, - "end": 4942, + "value": "format", + "start": 7084, + "end": 7090, "loc": { "start": { - "line": 154, - "column": 31 + "line": 185, + "column": 12 }, "end": { - "line": 154, - "column": 43 + "line": 185, + "column": 18 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -51169,22 +63665,22 @@ "binop": null, "updateContext": null }, - "start": 4942, - "end": 4943, + "start": 7090, + "end": 7091, "loc": { "start": { - "line": 154, - "column": 43 + "line": 185, + "column": 18 }, "end": { - "line": 154, - "column": 44 + "line": 185, + "column": 19 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -51192,52 +63688,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "left", - "start": 4943, - "end": 4947, + "value": "png", + "start": 7092, + "end": 7097, "loc": { "start": { - "line": 154, - "column": 44 + "line": 185, + "column": 20 }, "end": { - "line": 154, - "column": 48 + "line": 185, + "column": 25 } } }, { "type": { - "label": "+/-", + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": 9, + "binop": null, "updateContext": null }, - "value": "+", - "start": 4948, - "end": 4949, + "start": 7097, + "end": 7098, "loc": { "start": { - "line": 154, - "column": 49 + "line": 185, + "column": 25 }, "end": { - "line": 154, - "column": 50 + "line": 185, + "column": 26 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -51245,26 +63741,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "px", - "start": 4950, - "end": 4954, + "value": "includeGizmos", + "start": 7111, + "end": 7124, "loc": { "start": { - "line": 154, - "column": 51 + "line": 186, + "column": 12 }, "end": { - "line": 154, - "column": 55 + "line": 186, + "column": 25 } } }, { "type": { - "label": ";", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -51275,23 +63770,23 @@ "binop": null, "updateContext": null }, - "start": 4954, - "end": 4955, + "start": 7124, + "end": 7125, "loc": { "start": { - "line": 154, - "column": 55 + "line": 186, + "column": 25 }, "end": { - "line": 154, - "column": 56 + "line": 186, + "column": 26 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -51302,23 +63797,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 4964, - "end": 4968, + "value": "true", + "start": 7126, + "end": 7130, "loc": { "start": { - "line": 155, - "column": 8 + "line": 186, + "column": 27 }, "end": { - "line": 155, - "column": 12 + "line": 186, + "column": 31 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -51326,27 +63821,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4968, - "end": 4969, + "start": 7139, + "end": 7140, "loc": { "start": { - "line": 155, - "column": 12 + "line": 187, + "column": 8 }, "end": { - "line": 155, - "column": 13 + "line": 187, + "column": 9 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -51354,24 +63848,23 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 4969, - "end": 4973, + "start": 7140, + "end": 7141, "loc": { "start": { - "line": 155, - "column": 13 + "line": 187, + "column": 9 }, "end": { - "line": 155, - "column": 17 + "line": 187, + "column": 10 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -51381,22 +63874,23 @@ "binop": null, "updateContext": null }, - "start": 4973, - "end": 4974, + "start": 7141, + "end": 7142, "loc": { "start": { - "line": 155, - "column": 17 + "line": 187, + "column": 10 }, "end": { - "line": 155, - "column": 18 + "line": 187, + "column": 11 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -51404,19 +63898,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "style", - "start": 4974, - "end": 4979, + "value": "this", + "start": 7151, + "end": 7155, "loc": { "start": { - "line": 155, - "column": 18 + "line": 188, + "column": 8 }, "end": { - "line": 155, - "column": 23 + "line": 188, + "column": 12 } } }, @@ -51433,16 +63928,16 @@ "binop": null, "updateContext": null }, - "start": 4979, - "end": 4980, + "start": 7155, + "end": 7156, "loc": { "start": { - "line": 155, - "column": 23 + "line": 188, + "column": 12 }, "end": { - "line": 155, - "column": 24 + "line": 188, + "column": 13 } } }, @@ -51458,44 +63953,43 @@ "postfix": false, "binop": null }, - "value": "top", - "start": 4980, - "end": 4983, + "value": "_img", + "start": 7156, + "end": 7160, "loc": { "start": { - "line": 155, - "column": 24 + "line": 188, + "column": 13 }, "end": { - "line": 155, - "column": 27 + "line": 188, + "column": 17 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 4984, - "end": 4985, + "start": 7160, + "end": 7161, "loc": { "start": { - "line": 155, - "column": 28 + "line": 188, + "column": 17 }, "end": { - "line": 155, - "column": 29 + "line": 188, + "column": 18 } } }, @@ -51511,17 +64005,17 @@ "postfix": false, "binop": null }, - "value": "canvasOffset", - "start": 4986, - "end": 4998, + "value": "style", + "start": 7161, + "end": 7166, "loc": { "start": { - "line": 155, - "column": 30 + "line": 188, + "column": 18 }, "end": { - "line": 155, - "column": 42 + "line": 188, + "column": 23 } } }, @@ -51538,16 +64032,16 @@ "binop": null, "updateContext": null }, - "start": 4998, - "end": 4999, + "start": 7166, + "end": 7167, "loc": { "start": { - "line": 155, - "column": 42 + "line": 188, + "column": 23 }, "end": { - "line": 155, - "column": 43 + "line": 188, + "column": 24 } } }, @@ -51563,44 +64057,44 @@ "postfix": false, "binop": null }, - "value": "top", - "start": 4999, - "end": 5002, + "value": "visibility", + "start": 7167, + "end": 7177, "loc": { "start": { - "line": 155, - "column": 43 + "line": 188, + "column": 24 }, "end": { - "line": 155, - "column": 46 + "line": 188, + "column": 34 } } }, { "type": { - "label": "+/-", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, - "prefix": true, + "isAssign": true, + "prefix": false, "postfix": false, - "binop": 9, + "binop": null, "updateContext": null }, - "value": "+", - "start": 5003, - "end": 5004, + "value": "=", + "start": 7178, + "end": 7179, "loc": { "start": { - "line": 155, - "column": 47 + "line": 188, + "column": 35 }, "end": { - "line": 155, - "column": 48 + "line": 188, + "column": 36 } } }, @@ -51617,17 +64111,17 @@ "binop": null, "updateContext": null }, - "value": "px", - "start": 5005, - "end": 5009, + "value": "visible", + "start": 7180, + "end": 7189, "loc": { "start": { - "line": 155, - "column": 49 + "line": 188, + "column": 37 }, "end": { - "line": 155, - "column": 53 + "line": 188, + "column": 46 } } }, @@ -51644,50 +64138,23 @@ "binop": null, "updateContext": null }, - "start": 5009, - "end": 5010, - "loc": { - "start": { - "line": 155, - "column": 53 - }, - "end": { - "line": 155, - "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": 5019, - "end": 5023, + "start": 7189, + "end": 7190, "loc": { "start": { - "line": 156, - "column": 8 + "line": 188, + "column": 46 }, "end": { - "line": 156, - "column": 12 + "line": 188, + "column": 47 } } }, { "type": { - "label": ".", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -51698,16 +64165,17 @@ "binop": null, "updateContext": null }, - "start": 5023, - "end": 5024, + "value": "let", + "start": 7200, + "end": 7203, "loc": { "start": { - "line": 156, - "column": 12 + "line": 190, + "column": 8 }, "end": { - "line": 156, - "column": 13 + "line": 190, + "column": 11 } } }, @@ -51723,49 +64191,50 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 5024, - "end": 5028, + "value": "opacity", + "start": 7204, + "end": 7211, "loc": { "start": { - "line": 156, - "column": 13 + "line": 190, + "column": 12 }, "end": { - "line": 156, - "column": 17 + "line": 190, + "column": 19 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 5028, - "end": 5029, + "value": "=", + "start": 7212, + "end": 7213, "loc": { "start": { - "line": 156, - "column": 17 + "line": 190, + "column": 20 }, "end": { - "line": 156, - "column": 18 + "line": 190, + "column": 21 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -51773,26 +64242,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "style", - "start": 5029, - "end": 5034, + "value": 1, + "start": 7214, + "end": 7215, "loc": { "start": { - "line": 156, - "column": 18 + "line": 190, + "column": 22 }, "end": { - "line": 156, + "line": 190, "column": 23 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -51802,22 +64272,23 @@ "binop": null, "updateContext": null }, - "start": 5034, - "end": 5035, + "start": 7215, + "end": 7216, "loc": { "start": { - "line": 156, + "line": 190, "column": 23 }, "end": { - "line": 156, + "line": 190, "column": 24 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -51825,46 +64296,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "width", - "start": 5035, - "end": 5040, + "value": "this", + "start": 7225, + "end": 7229, "loc": { "start": { - "line": 156, - "column": 24 + "line": 191, + "column": 8 }, "end": { - "line": 156, - "column": 29 + "line": 191, + "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": 5041, - "end": 5042, + "start": 7229, + "end": 7230, "loc": { "start": { - "line": 156, - "column": 30 + "line": 191, + "column": 12 }, "end": { - "line": 156, - "column": 31 + "line": 191, + "column": 13 } } }, @@ -51880,43 +64351,44 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 5043, - "end": 5049, + "value": "_pInterval", + "start": 7230, + "end": 7240, "loc": { "start": { - "line": 156, - "column": 32 + "line": 191, + "column": 13 }, "end": { - "line": 156, - "column": 38 + "line": 191, + "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": 5049, - "end": 5050, + "value": "=", + "start": 7241, + "end": 7242, "loc": { "start": { - "line": 156, - "column": 38 + "line": 191, + "column": 24 }, "end": { - "line": 156, - "column": 39 + "line": 191, + "column": 25 } } }, @@ -51932,106 +64404,100 @@ "postfix": false, "binop": null }, - "value": "width", - "start": 5050, - "end": 5055, + "value": "setInterval", + "start": 7243, + "end": 7254, "loc": { "start": { - "line": 156, - "column": 39 + "line": 191, + "column": 26 }, "end": { - "line": 156, - "column": 44 + "line": 191, + "column": 37 } } }, { "type": { - "label": "+/-", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": 9, - "updateContext": null + "binop": null }, - "value": "+", - "start": 5056, - "end": 5057, + "start": 7254, + "end": 7255, "loc": { "start": { - "line": 156, - "column": 45 + "line": 191, + "column": 37 }, "end": { - "line": 156, - "column": 46 + "line": 191, + "column": 38 } } }, { "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": "px", - "start": 5058, - "end": 5062, + "start": 7255, + "end": 7256, "loc": { "start": { - "line": 156, - "column": 47 + "line": 191, + "column": 38 }, "end": { - "line": 156, - "column": 51 + "line": 191, + "column": 39 } } }, { "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": 5062, - "end": 5063, + "start": 7256, + "end": 7257, "loc": { "start": { - "line": 156, - "column": 51 + "line": 191, + "column": 39 }, "end": { - "line": 156, - "column": 52 + "line": 191, + "column": 40 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": "=>", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -52040,43 +64506,41 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 5072, - "end": 5076, + "start": 7258, + "end": 7260, "loc": { - "start": { - "line": 157, - "column": 8 + "start": { + "line": 191, + "column": 41 }, "end": { - "line": 157, - "column": 12 + "line": 191, + "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": 5076, - "end": 5077, + "start": 7261, + "end": 7262, "loc": { "start": { - "line": 157, - "column": 12 + "line": 191, + "column": 44 }, "end": { - "line": 157, - "column": 13 + "line": 191, + "column": 45 } } }, @@ -52092,43 +64556,44 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 5077, - "end": 5081, + "value": "opacity", + "start": 7275, + "end": 7282, "loc": { "start": { - "line": 157, - "column": 13 + "line": 192, + "column": 12 }, "end": { - "line": 157, - "column": 17 + "line": 192, + "column": 19 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "_=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 5081, - "end": 5082, + "value": "-=", + "start": 7283, + "end": 7285, "loc": { "start": { - "line": 157, - "column": 17 + "line": 192, + "column": 20 }, "end": { - "line": 157, - "column": 18 + "line": 192, + "column": 22 } } }, @@ -52144,24 +64609,24 @@ "postfix": false, "binop": null }, - "value": "style", - "start": 5082, - "end": 5087, + "value": "inc", + "start": 7286, + "end": 7289, "loc": { "start": { - "line": 157, - "column": 18 + "line": 192, + "column": 23 }, "end": { - "line": 157, - "column": 23 + "line": 192, + "column": 26 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -52171,69 +64636,69 @@ "binop": null, "updateContext": null }, - "start": 5087, - "end": 5088, + "start": 7289, + "end": 7290, "loc": { "start": { - "line": 157, - "column": 23 + "line": 192, + "column": 26 }, "end": { - "line": 157, - "column": 24 + "line": 192, + "column": 27 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "height", - "start": 5088, - "end": 5094, + "value": "if", + "start": 7303, + "end": 7305, "loc": { "start": { - "line": 157, - "column": 24 + "line": 193, + "column": 12 }, "end": { - "line": 157, - "column": 30 + "line": 193, + "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": 5095, - "end": 5096, + "start": 7306, + "end": 7307, "loc": { "start": { - "line": 157, - "column": 31 + "line": 193, + "column": 15 }, "end": { - "line": 157, - "column": 32 + "line": 193, + "column": 16 } } }, @@ -52249,49 +64714,50 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 5097, - "end": 5103, + "value": "opacity", + "start": 7307, + "end": 7314, "loc": { "start": { - "line": 157, - "column": 33 + "line": 193, + "column": 16 }, "end": { - "line": 157, - "column": 39 + "line": 193, + "column": 23 } } }, { "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": 5103, - "end": 5104, + "value": ">", + "start": 7315, + "end": 7316, "loc": { "start": { - "line": 157, - "column": 39 + "line": 193, + "column": 24 }, "end": { - "line": 157, - "column": 40 + "line": 193, + "column": 25 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -52299,99 +64765,70 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "value": "height", - "start": 5104, - "end": 5110, - "loc": { - "start": { - "line": 157, - "column": 40 - }, - "end": { - "line": 157, - "column": 46 - } - } - }, - { - "type": { - "label": "+/-", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": false, - "binop": 9, + "binop": null, "updateContext": null }, - "value": "+", - "start": 5111, - "end": 5112, + "value": 0, + "start": 7317, + "end": 7318, "loc": { "start": { - "line": 157, - "column": 47 + "line": 193, + "column": 26 }, "end": { - "line": 157, - "column": 48 + "line": 193, + "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": "px", - "start": 5113, - "end": 5117, + "start": 7318, + "end": 7319, "loc": { "start": { - "line": 157, - "column": 49 + "line": 193, + "column": 27 }, "end": { - "line": 157, - "column": 53 + "line": 193, + "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": 5117, - "end": 5118, + "start": 7320, + "end": 7321, "loc": { "start": { - "line": 157, - "column": 53 + "line": 193, + "column": 29 }, "end": { - "line": 157, - "column": 54 + "line": 193, + "column": 30 } } }, @@ -52410,16 +64847,16 @@ "updateContext": null }, "value": "this", - "start": 5127, - "end": 5131, + "start": 7338, + "end": 7342, "loc": { "start": { - "line": 158, - "column": 8 + "line": 194, + "column": 16 }, "end": { - "line": 158, - "column": 12 + "line": 194, + "column": 20 } } }, @@ -52436,16 +64873,16 @@ "binop": null, "updateContext": null }, - "start": 5131, - "end": 5132, + "start": 7342, + "end": 7343, "loc": { "start": { - "line": 158, - "column": 12 + "line": 194, + "column": 20 }, "end": { - "line": 158, - "column": 13 + "line": 194, + "column": 21 } } }, @@ -52462,16 +64899,16 @@ "binop": null }, "value": "_img", - "start": 5132, - "end": 5136, + "start": 7343, + "end": 7347, "loc": { "start": { - "line": 158, - "column": 13 + "line": 194, + "column": 21 }, "end": { - "line": 158, - "column": 17 + "line": 194, + "column": 25 } } }, @@ -52488,16 +64925,16 @@ "binop": null, "updateContext": null }, - "start": 5136, - "end": 5137, + "start": 7347, + "end": 7348, "loc": { "start": { - "line": 158, - "column": 17 + "line": 194, + "column": 25 }, "end": { - "line": 158, - "column": 18 + "line": 194, + "column": 26 } } }, @@ -52514,16 +64951,16 @@ "binop": null }, "value": "style", - "start": 5137, - "end": 5142, + "start": 7348, + "end": 7353, "loc": { "start": { - "line": 158, - "column": 18 + "line": 194, + "column": 26 }, "end": { - "line": 158, - "column": 23 + "line": 194, + "column": 31 } } }, @@ -52540,16 +64977,16 @@ "binop": null, "updateContext": null }, - "start": 5142, - "end": 5143, + "start": 7353, + "end": 7354, "loc": { "start": { - "line": 158, - "column": 23 + "line": 194, + "column": 31 }, "end": { - "line": 158, - "column": 24 + "line": 194, + "column": 32 } } }, @@ -52566,16 +65003,16 @@ "binop": null }, "value": "opacity", - "start": 5143, - "end": 5150, + "start": 7354, + "end": 7361, "loc": { "start": { - "line": 158, - "column": 24 + "line": 194, + "column": 32 }, "end": { - "line": 158, - "column": 31 + "line": 194, + "column": 39 } } }, @@ -52593,22 +65030,22 @@ "updateContext": null }, "value": "=", - "start": 5151, - "end": 5152, + "start": 7362, + "end": 7363, "loc": { "start": { - "line": 158, - "column": 32 + "line": 194, + "column": 40 }, "end": { - "line": 158, - "column": 33 + "line": 194, + "column": 41 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -52616,20 +65053,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 5153, - "end": 5154, + "value": "opacity", + "start": 7364, + "end": 7371, "loc": { "start": { - "line": 158, - "column": 34 + "line": 194, + "column": 42 }, "end": { - "line": 158, - "column": 35 + "line": 194, + "column": 49 } } }, @@ -52646,51 +65082,49 @@ "binop": null, "updateContext": null }, - "start": 5154, - "end": 5155, + "start": 7371, + "end": 7372, "loc": { "start": { - "line": 158, - "column": 35 + "line": 194, + "column": 49 }, "end": { - "line": 158, - "column": 36 + "line": 194, + "column": 50 } } }, { "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": 5164, - "end": 5168, + "start": 7385, + "end": 7386, "loc": { "start": { - "line": 159, - "column": 8 + "line": 195, + "column": 12 }, "end": { - "line": 159, - "column": 12 + "line": 195, + "column": 13 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "else", + "keyword": "else", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -52700,23 +65134,24 @@ "binop": null, "updateContext": null }, - "start": 5168, - "end": 5169, + "value": "else", + "start": 7387, + "end": 7391, "loc": { "start": { - "line": 159, - "column": 12 + "line": 195, + "column": 14 }, "end": { - "line": 159, - "column": 13 + "line": 195, + "column": 18 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -52725,25 +65160,25 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 5169, - "end": 5173, + "start": 7392, + "end": 7393, "loc": { "start": { - "line": 159, - "column": 13 + "line": 195, + "column": 19 }, "end": { - "line": 159, - "column": 17 + "line": 195, + "column": 20 } } }, { "type": { - "label": ".", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -52752,69 +65187,43 @@ "binop": null, "updateContext": null }, - "start": 5173, - "end": 5174, + "value": "this", + "start": 7410, + "end": 7414, "loc": { "start": { - "line": 159, - "column": 17 + "line": 196, + "column": 16 }, "end": { - "line": 159, - "column": 18 + "line": 196, + "column": 20 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "width", - "start": 5174, - "end": 5179, - "loc": { - "start": { - "line": 159, - "column": 18 - }, - "end": { - "line": 159, - "column": 23 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 5180, - "end": 5181, + "start": 7414, + "end": 7415, "loc": { "start": { - "line": 159, - "column": 24 + "line": 196, + "column": 20 }, "end": { - "line": 159, - "column": 25 + "line": 196, + "column": 21 } } }, @@ -52830,17 +65239,17 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 5182, - "end": 5188, + "value": "_img", + "start": 7415, + "end": 7419, "loc": { "start": { - "line": 159, - "column": 26 + "line": 196, + "column": 21 }, "end": { - "line": 159, - "column": 32 + "line": 196, + "column": 25 } } }, @@ -52857,16 +65266,16 @@ "binop": null, "updateContext": null }, - "start": 5188, - "end": 5189, + "start": 7419, + "end": 7420, "loc": { "start": { - "line": 159, - "column": 32 + "line": 196, + "column": 25 }, "end": { - "line": 159, - "column": 33 + "line": 196, + "column": 26 } } }, @@ -52882,24 +65291,24 @@ "postfix": false, "binop": null }, - "value": "width", - "start": 5189, - "end": 5194, + "value": "style", + "start": 7420, + "end": 7425, "loc": { "start": { - "line": 159, - "column": 33 + "line": 196, + "column": 26 }, "end": { - "line": 159, - "column": 38 + "line": 196, + "column": 31 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -52909,23 +65318,22 @@ "binop": null, "updateContext": null }, - "start": 5194, - "end": 5195, + "start": 7425, + "end": 7426, "loc": { "start": { - "line": 159, - "column": 38 + "line": 196, + "column": 31 }, "end": { - "line": 159, - "column": 39 + "line": 196, + "column": 32 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -52933,52 +65341,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 5204, - "end": 5208, + "value": "opacity", + "start": 7426, + "end": 7433, "loc": { "start": { - "line": 160, - "column": 8 + "line": 196, + "column": 32 }, "end": { - "line": 160, - "column": 12 + "line": 196, + "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": 5208, - "end": 5209, + "value": "=", + "start": 7434, + "end": 7435, "loc": { "start": { - "line": 160, - "column": 12 + "line": 196, + "column": 40 }, "end": { - "line": 160, - "column": 13 + "line": 196, + "column": 41 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -52986,26 +65394,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_img", - "start": 5209, - "end": 5213, + "value": 0, + "start": 7436, + "end": 7437, "loc": { "start": { - "line": 160, - "column": 13 + "line": 196, + "column": 42 }, "end": { - "line": 160, - "column": 17 + "line": 196, + "column": 43 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -53015,22 +65424,23 @@ "binop": null, "updateContext": null }, - "start": 5213, - "end": 5214, + "start": 7437, + "end": 7438, "loc": { "start": { - "line": 160, - "column": 17 + "line": 196, + "column": 43 }, "end": { - "line": 160, - "column": 18 + "line": 196, + "column": 44 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -53038,46 +65448,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "height", - "start": 5214, - "end": 5220, + "value": "this", + "start": 7455, + "end": 7459, "loc": { "start": { - "line": 160, - "column": 18 + "line": 197, + "column": 16 }, "end": { - "line": 160, - "column": 24 + "line": 197, + "column": 20 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 5221, - "end": 5222, + "start": 7459, + "end": 7460, "loc": { "start": { - "line": 160, - "column": 25 + "line": 197, + "column": 20 }, "end": { - "line": 160, - "column": 26 + "line": 197, + "column": 21 } } }, @@ -53093,17 +65503,17 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 5223, - "end": 5229, + "value": "_img", + "start": 7460, + "end": 7464, "loc": { "start": { - "line": 160, - "column": 27 + "line": 197, + "column": 21 }, "end": { - "line": 160, - "column": 33 + "line": 197, + "column": 25 } } }, @@ -53120,16 +65530,16 @@ "binop": null, "updateContext": null }, - "start": 5229, - "end": 5230, + "start": 7464, + "end": 7465, "loc": { "start": { - "line": 160, - "column": 33 + "line": 197, + "column": 25 }, "end": { - "line": 160, - "column": 34 + "line": 197, + "column": 26 } } }, @@ -53145,24 +65555,24 @@ "postfix": false, "binop": null }, - "value": "height", - "start": 5230, - "end": 5236, + "value": "style", + "start": 7465, + "end": 7470, "loc": { "start": { - "line": 160, - "column": 34 + "line": 197, + "column": 26 }, "end": { - "line": 160, - "column": 40 + "line": 197, + "column": 31 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -53172,23 +65582,22 @@ "binop": null, "updateContext": null }, - "start": 5236, - "end": 5237, + "start": 7470, + "end": 7471, "loc": { "start": { - "line": 160, - "column": 40 + "line": 197, + "column": 31 }, "end": { - "line": 160, - "column": 41 + "line": 197, + "column": 32 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -53196,52 +65605,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 5246, - "end": 5250, + "value": "visibility", + "start": 7471, + "end": 7481, "loc": { "start": { - "line": 161, - "column": 8 + "line": 197, + "column": 32 }, "end": { - "line": 161, - "column": 12 + "line": 197, + "column": 42 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 5250, - "end": 5251, + "value": "=", + "start": 7482, + "end": 7483, "loc": { "start": { - "line": 161, - "column": 12 + "line": 197, + "column": 43 }, "end": { - "line": 161, - "column": 13 + "line": 197, + "column": 44 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -53249,26 +65658,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_img", - "start": 5251, - "end": 5255, + "value": "hidden", + "start": 7484, + "end": 7492, "loc": { "start": { - "line": 161, - "column": 13 + "line": 197, + "column": 45 }, "end": { - "line": 161, - "column": 17 + "line": 197, + "column": 53 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -53278,16 +65688,16 @@ "binop": null, "updateContext": null }, - "start": 5255, - "end": 5256, + "start": 7492, + "end": 7493, "loc": { "start": { - "line": 161, - "column": 17 + "line": 197, + "column": 53 }, "end": { - "line": 161, - "column": 18 + "line": 197, + "column": 54 } } }, @@ -53303,44 +65713,42 @@ "postfix": false, "binop": null }, - "value": "src", - "start": 5256, - "end": 5259, + "value": "clearInterval", + "start": 7510, + "end": 7523, "loc": { "start": { - "line": 161, - "column": 18 + "line": 198, + "column": 16 }, "end": { - "line": 161, - "column": 21 + "line": 198, + "column": 29 } } }, { "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": 5260, - "end": 5261, + "start": 7523, + "end": 7524, "loc": { "start": { - "line": 161, - "column": 22 + "line": 198, + "column": 29 }, "end": { - "line": 161, - "column": 23 + "line": 198, + "column": 30 } } }, @@ -53359,16 +65767,16 @@ "updateContext": null }, "value": "this", - "start": 5262, - "end": 5266, + "start": 7524, + "end": 7528, "loc": { "start": { - "line": 161, - "column": 24 + "line": 198, + "column": 30 }, "end": { - "line": 161, - "column": 28 + "line": 198, + "column": 34 } } }, @@ -53385,16 +65793,16 @@ "binop": null, "updateContext": null }, - "start": 5266, - "end": 5267, + "start": 7528, + "end": 7529, "loc": { "start": { - "line": 161, - "column": 28 + "line": 198, + "column": 34 }, "end": { - "line": 161, - "column": 29 + "line": 198, + "column": 35 } } }, @@ -53410,23 +65818,23 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 5267, - "end": 5273, + "value": "_pInterval", + "start": 7529, + "end": 7539, "loc": { "start": { - "line": 161, - "column": 29 + "line": 198, + "column": 35 }, "end": { - "line": 161, - "column": 35 + "line": 198, + "column": 45 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -53434,95 +65842,98 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 5273, - "end": 5274, + "start": 7539, + "end": 7540, "loc": { "start": { - "line": 161, - "column": 35 + "line": 198, + "column": 45 }, "end": { - "line": 161, - "column": 36 + "line": 198, + "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": "getSnapshot", - "start": 5274, - "end": 5285, + "start": 7540, + "end": 7541, "loc": { "start": { - "line": 161, - "column": 36 + "line": 198, + "column": 46 }, "end": { - "line": 161, + "line": 198, "column": 47 } } }, { "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": 5285, - "end": 5286, + "value": "this", + "start": 7558, + "end": 7562, "loc": { "start": { - "line": 161, - "column": 47 + "line": 199, + "column": 16 }, "end": { - "line": 161, - "column": 48 + "line": 199, + "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": 5286, - "end": 5287, + "start": 7562, + "end": 7563, "loc": { "start": { - "line": 161, - "column": 48 + "line": 199, + "column": 20 }, "end": { - "line": 161, - "column": 49 + "line": 199, + "column": 21 } } }, @@ -53538,49 +65949,51 @@ "postfix": false, "binop": null }, - "value": "format", - "start": 5300, - "end": 5306, + "value": "_pInterval", + "start": 7563, + "end": 7573, "loc": { "start": { - "line": 162, - "column": 12 + "line": 199, + "column": 21 }, "end": { - "line": 162, - "column": 18 + "line": 199, + "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": 5306, - "end": 5307, + "value": "=", + "start": 7574, + "end": 7575, "loc": { "start": { - "line": 162, - "column": 18 + "line": 199, + "column": 32 }, "end": { - "line": 162, - "column": 19 + "line": 199, + "column": 33 } } }, { "type": { - "label": "string", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -53591,23 +66004,23 @@ "binop": null, "updateContext": null }, - "value": "png", - "start": 5308, - "end": 5313, + "value": "null", + "start": 7576, + "end": 7580, "loc": { "start": { - "line": 162, - "column": 20 + "line": 199, + "column": 34 }, "end": { - "line": 162, - "column": 25 + "line": 199, + "column": 38 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -53618,24 +66031,24 @@ "binop": null, "updateContext": null }, - "start": 5313, - "end": 5314, + "start": 7580, + "end": 7581, "loc": { "start": { - "line": 162, - "column": 25 + "line": 199, + "column": 38 }, "end": { - "line": 162, - "column": 26 + "line": 199, + "column": 39 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -53643,52 +66056,49 @@ "postfix": false, "binop": null }, - "value": "includeGizmos", - "start": 5327, - "end": 5340, + "start": 7594, + "end": 7595, "loc": { "start": { - "line": 163, + "line": 200, "column": 12 }, "end": { - "line": 163, - "column": 25 + "line": 200, + "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": 5340, - "end": 5341, + "start": 7604, + "end": 7605, "loc": { "start": { - "line": 163, - "column": 25 + "line": 201, + "column": 8 }, "end": { - "line": 163, - "column": 26 + "line": 201, + "column": 9 } } }, { "type": { - "label": "true", - "keyword": "true", - "beforeExpr": false, - "startsExpr": true, + "label": ",", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -53697,25 +66107,24 @@ "binop": null, "updateContext": null }, - "value": "true", - "start": 5342, - "end": 5346, + "start": 7605, + "end": 7606, "loc": { "start": { - "line": 163, - "column": 27 + "line": 201, + "column": 9 }, "end": { - "line": 163, - "column": 31 + "line": 201, + "column": 10 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -53723,16 +66132,17 @@ "postfix": false, "binop": null }, - "start": 5355, - "end": 5356, + "value": "interval", + "start": 7607, + "end": 7615, "loc": { "start": { - "line": 164, - "column": 8 + "line": 201, + "column": 11 }, "end": { - "line": 164, - "column": 9 + "line": 201, + "column": 19 } } }, @@ -53748,16 +66158,16 @@ "postfix": false, "binop": null }, - "start": 5356, - "end": 5357, + "start": 7615, + "end": 7616, "loc": { "start": { - "line": 164, - "column": 9 + "line": 201, + "column": 19 }, "end": { - "line": 164, - "column": 10 + "line": 201, + "column": 20 } } }, @@ -53774,77 +66184,74 @@ "binop": null, "updateContext": null }, - "start": 5357, - "end": 5358, + "start": 7616, + "end": 7617, "loc": { "start": { - "line": 164, - "column": 10 + "line": 201, + "column": 20 }, "end": { - "line": 164, - "column": 11 + "line": 201, + "column": 21 } } }, { "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": 5367, - "end": 5371, + "start": 7622, + "end": 7623, "loc": { "start": { - "line": 165, - "column": 8 + "line": 202, + "column": 4 }, "end": { - "line": 165, - "column": 12 + "line": 202, + "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": 5371, - "end": 5372, + "value": "_initFade", + "start": 7629, + "end": 7638, "loc": { "start": { - "line": 165, - "column": 12 + "line": 204, + "column": 4 }, "end": { - "line": 165, + "line": 204, "column": 13 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -53853,23 +66260,22 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 5372, - "end": 5376, + "start": 7638, + "end": 7639, "loc": { "start": { - "line": 165, + "line": 204, "column": 13 }, "end": { - "line": 165, - "column": 17 + "line": 204, + "column": 14 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -53877,26 +66283,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 5376, - "end": 5377, + "start": 7639, + "end": 7640, "loc": { "start": { - "line": 165, - "column": 17 + "line": 204, + "column": 14 }, "end": { - "line": 165, - "column": 18 + "line": 204, + "column": 15 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -53905,25 +66310,25 @@ "postfix": false, "binop": null }, - "value": "style", - "start": 5377, - "end": 5382, + "start": 7641, + "end": 7642, "loc": { "start": { - "line": 165, - "column": 18 + "line": 204, + "column": 16 }, "end": { - "line": 165, - "column": 23 + "line": 204, + "column": 17 } } }, { "type": { - "label": ".", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -53932,129 +66337,128 @@ "binop": null, "updateContext": null }, - "start": 5382, - "end": 5383, + "value": "this", + "start": 7651, + "end": 7655, "loc": { "start": { - "line": 165, - "column": 23 + "line": 205, + "column": 8 }, "end": { - "line": 165, - "column": 24 + "line": 205, + "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": "visibility", - "start": 5383, - "end": 5393, + "start": 7655, + "end": 7656, "loc": { "start": { - "line": 165, - "column": 24 + "line": 205, + "column": 12 }, "end": { - "line": 165, - "column": 34 + "line": 205, + "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": 5394, - "end": 5395, + "value": "_img", + "start": 7656, + "end": 7660, "loc": { "start": { - "line": 165, - "column": 35 + "line": 205, + "column": 13 }, "end": { - "line": 165, - "column": 36 + "line": 205, + "column": 17 } } }, { "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": "visible", - "start": 5396, - "end": 5405, + "value": "=", + "start": 7661, + "end": 7662, "loc": { "start": { - "line": 165, - "column": 37 + "line": 205, + "column": 18 }, "end": { - "line": 165, - "column": 46 + "line": 205, + "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": 5405, - "end": 5406, + "value": "document", + "start": 7663, + "end": 7671, "loc": { "start": { - "line": 165, - "column": 46 + "line": 205, + "column": 20 }, "end": { - "line": 165, - "column": 47 + "line": 205, + "column": 28 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -54065,17 +66469,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 5416, - "end": 5419, + "start": 7671, + "end": 7672, "loc": { "start": { - "line": 167, - "column": 8 + "line": 205, + "column": 28 }, "end": { - "line": 167, - "column": 11 + "line": 205, + "column": 29 } } }, @@ -54091,50 +66494,48 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 5420, - "end": 5427, + "value": "createElement", + "start": 7672, + "end": 7685, "loc": { "start": { - "line": 167, - "column": 12 + "line": 205, + "column": 29 }, "end": { - "line": 167, - "column": 19 + "line": 205, + "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": 5428, - "end": 5429, + "start": 7685, + "end": 7686, "loc": { "start": { - "line": 167, - "column": 20 + "line": 205, + "column": 42 }, "end": { - "line": 167, - "column": 21 + "line": 205, + "column": 43 } } }, { "type": { - "label": "num", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -54145,52 +66546,50 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 5430, - "end": 5431, + "value": "img", + "start": 7686, + "end": 7691, "loc": { "start": { - "line": 167, - "column": 22 + "line": 205, + "column": 43 }, "end": { - "line": 167, - "column": 23 + "line": 205, + "column": 48 } } }, { "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": 5431, - "end": 5432, + "start": 7691, + "end": 7692, "loc": { "start": { - "line": 167, - "column": 23 + "line": 205, + "column": 48 }, "end": { - "line": 167, - "column": 24 + "line": 205, + "column": 49 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -54199,23 +66598,23 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 5441, - "end": 5445, + "start": 7692, + "end": 7693, "loc": { "start": { - "line": 168, - "column": 8 + "line": 205, + "column": 49 }, "end": { - "line": 168, - "column": 12 + "line": 205, + "column": 50 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -54226,15 +66625,16 @@ "binop": null, "updateContext": null }, - "start": 5445, - "end": 5446, + "value": "const", + "start": 7702, + "end": 7707, "loc": { "start": { - "line": 168, - "column": 12 + "line": 206, + "column": 8 }, "end": { - "line": 168, + "line": 206, "column": 13 } } @@ -54251,17 +66651,17 @@ "postfix": false, "binop": null }, - "value": "_pInterval", - "start": 5446, - "end": 5456, + "value": "canvas", + "start": 7708, + "end": 7714, "loc": { "start": { - "line": 168, - "column": 13 + "line": 206, + "column": 14 }, "end": { - "line": 168, - "column": 23 + "line": 206, + "column": 20 } } }, @@ -54279,22 +66679,23 @@ "updateContext": null }, "value": "=", - "start": 5457, - "end": 5458, + "start": 7715, + "end": 7716, "loc": { "start": { - "line": 168, - "column": 24 + "line": 206, + "column": 21 }, "end": { - "line": 168, - "column": 25 + "line": 206, + "column": 22 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -54302,51 +66703,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "setInterval", - "start": 5459, - "end": 5470, + "value": "this", + "start": 7717, + "end": 7721, "loc": { "start": { - "line": 168, - "column": 26 + "line": 206, + "column": 23 }, "end": { - "line": 168, - "column": 37 + "line": 206, + "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": 5470, - "end": 5471, + "start": 7721, + "end": 7722, "loc": { "start": { - "line": 168, - "column": 37 + "line": 206, + "column": 27 }, "end": { - "line": 168, - "column": 38 + "line": 206, + "column": 28 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -54355,22 +66758,23 @@ "postfix": false, "binop": null }, - "start": 5471, - "end": 5472, + "value": "viewer", + "start": 7722, + "end": 7728, "loc": { "start": { - "line": 168, - "column": 38 + "line": 206, + "column": 28 }, "end": { - "line": 168, - "column": 39 + "line": 206, + "column": 34 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -54378,69 +66782,71 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5472, - "end": 5473, + "start": 7728, + "end": 7729, "loc": { "start": { - "line": 168, - "column": 39 + "line": 206, + "column": 34 }, "end": { - "line": 168, - "column": 40 + "line": 206, + "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": 5474, - "end": 5476, + "value": "scene", + "start": 7729, + "end": 7734, "loc": { "start": { - "line": 168, - "column": 41 + "line": 206, + "column": 35 }, "end": { - "line": 168, - "column": 43 + "line": 206, + "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": 5477, - "end": 5478, + "start": 7734, + "end": 7735, "loc": { "start": { - "line": 168, - "column": 44 + "line": 206, + "column": 40 }, "end": { - "line": 168, - "column": 45 + "line": 206, + "column": 41 } } }, @@ -54456,44 +66862,43 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 5491, - "end": 5498, + "value": "canvas", + "start": 7735, + "end": 7741, "loc": { "start": { - "line": 169, - "column": 12 + "line": 206, + "column": 41 }, "end": { - "line": 169, - "column": 19 + "line": 206, + "column": 47 } } }, { "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": 5499, - "end": 5501, + "start": 7741, + "end": 7742, "loc": { "start": { - "line": 169, - "column": 20 + "line": 206, + "column": 47 }, "end": { - "line": 169, - "column": 22 + "line": 206, + "column": 48 } } }, @@ -54509,17 +66914,17 @@ "postfix": false, "binop": null }, - "value": "inc", - "start": 5502, - "end": 5505, + "value": "canvas", + "start": 7742, + "end": 7748, "loc": { "start": { - "line": 169, - "column": 23 + "line": 206, + "column": 48 }, "end": { - "line": 169, - "column": 26 + "line": 206, + "column": 54 } } }, @@ -54536,23 +66941,23 @@ "binop": null, "updateContext": null }, - "start": 5505, - "end": 5506, + "start": 7748, + "end": 7749, "loc": { "start": { - "line": 169, - "column": 26 + "line": 206, + "column": 54 }, "end": { - "line": 169, - "column": 27 + "line": 206, + "column": 55 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -54563,42 +66968,17 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 5519, - "end": 5521, - "loc": { - "start": { - "line": 170, - "column": 12 - }, - "end": { - "line": 170, - "column": 14 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 5522, - "end": 5523, + "value": "const", + "start": 7758, + "end": 7763, "loc": { "start": { - "line": 170, - "column": 15 + "line": 207, + "column": 8 }, "end": { - "line": 170, - "column": 16 + "line": 207, + "column": 13 } } }, @@ -54614,79 +66994,52 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 5523, - "end": 5530, + "value": "canvasOffset", + "start": 7764, + "end": 7776, "loc": { "start": { - "line": 170, - "column": 16 + "line": 207, + "column": 14 }, "end": { - "line": 170, - "column": 23 + "line": 207, + "column": 26 } } }, { "type": { - "label": "", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 7, - "updateContext": null - }, - "value": ">", - "start": 5531, - "end": 5532, - "loc": { - "start": { - "line": 170, - "column": 24 - }, - "end": { - "line": 170, - "column": 25 - } - } - }, - { - "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": 0, - "start": 5533, - "end": 5534, + "value": "=", + "start": 7777, + "end": 7778, "loc": { "start": { - "line": 170, - "column": 26 + "line": 207, + "column": 27 }, "end": { - "line": 170, - "column": 27 + "line": 207, + "column": 28 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -54694,22 +67047,23 @@ "postfix": false, "binop": null }, - "start": 5534, - "end": 5535, + "value": "cumulativeOffset", + "start": 7779, + "end": 7795, "loc": { "start": { - "line": 170, - "column": 27 + "line": 207, + "column": 29 }, "end": { - "line": 170, - "column": 28 + "line": 207, + "column": 45 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -54719,23 +67073,22 @@ "postfix": false, "binop": null }, - "start": 5536, - "end": 5537, + "start": 7795, + "end": 7796, "loc": { "start": { - "line": 170, - "column": 29 + "line": 207, + "column": 45 }, "end": { - "line": 170, - "column": 30 + "line": 207, + "column": 46 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -54743,26 +67096,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 5554, - "end": 5558, + "value": "canvas", + "start": 7796, + "end": 7802, "loc": { "start": { - "line": 171, - "column": 16 + "line": 207, + "column": 46 }, "end": { - "line": 171, - "column": 20 + "line": 207, + "column": 52 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -54770,51 +67122,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 5558, - "end": 5559, + "start": 7802, + "end": 7803, "loc": { "start": { - "line": 171, - "column": 20 + "line": 207, + "column": 52 }, "end": { - "line": 171, - "column": 21 + "line": 207, + "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": "_img", - "start": 5559, - "end": 5563, + "start": 7803, + "end": 7804, "loc": { "start": { - "line": 171, - "column": 21 + "line": 207, + "column": 53 }, "end": { - "line": 171, - "column": 25 + "line": 207, + "column": 54 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -54825,16 +67177,17 @@ "binop": null, "updateContext": null }, - "start": 5563, - "end": 5564, + "value": "const", + "start": 7813, + "end": 7818, "loc": { "start": { - "line": 171, - "column": 25 + "line": 208, + "column": 8 }, "end": { - "line": 171, - "column": 26 + "line": 208, + "column": 13 } } }, @@ -54850,50 +67203,51 @@ "postfix": false, "binop": null }, - "value": "style", - "start": 5564, - "end": 5569, + "value": "zIndex", + "start": 7819, + "end": 7825, "loc": { "start": { - "line": 171, - "column": 26 + "line": 208, + "column": 14 }, "end": { - "line": 171, - "column": 31 + "line": 208, + "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": 5569, - "end": 5570, + "value": "=", + "start": 7826, + "end": 7827, "loc": { "start": { - "line": 171, - "column": 31 + "line": 208, + "column": 21 }, "end": { - "line": 171, - "column": 32 + "line": 208, + "column": 22 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -54902,44 +67256,16 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 5570, - "end": 5577, - "loc": { - "start": { - "line": 171, - "column": 32 - }, - "end": { - "line": 171, - "column": 39 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 5578, - "end": 5579, + "start": 7828, + "end": 7829, "loc": { "start": { - "line": 171, - "column": 40 + "line": 208, + "column": 23 }, "end": { - "line": 171, - "column": 41 + "line": 208, + "column": 24 } } }, @@ -54955,51 +67281,50 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 5580, - "end": 5587, + "value": "parseInt", + "start": 7829, + "end": 7837, "loc": { "start": { - "line": 171, - "column": 42 + "line": 208, + "column": 24 }, "end": { - "line": 171, - "column": 49 + "line": 208, + "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": 5587, - "end": 5588, + "start": 7837, + "end": 7838, "loc": { "start": { - "line": 171, - "column": 49 + "line": 208, + "column": 32 }, "end": { - "line": 171, - "column": 50 + "line": 208, + "column": 33 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55007,24 +67332,24 @@ "postfix": false, "binop": null }, - "start": 5601, - "end": 5602, + "value": "canvas", + "start": 7838, + "end": 7844, "loc": { "start": { - "line": 172, - "column": 12 + "line": 208, + "column": 33 }, "end": { - "line": 172, - "column": 13 + "line": 208, + "column": 39 } } }, { "type": { - "label": "else", - "keyword": "else", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -55034,24 +67359,23 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 5603, - "end": 5607, + "start": 7844, + "end": 7845, "loc": { "start": { - "line": 172, - "column": 14 + "line": 208, + "column": 39 }, "end": { - "line": 172, - "column": 18 + "line": 208, + "column": 40 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -55060,24 +67384,24 @@ "postfix": false, "binop": null }, - "start": 5608, - "end": 5609, + "value": "style", + "start": 7845, + "end": 7850, "loc": { "start": { - "line": 172, - "column": 19 + "line": 208, + "column": 40 }, "end": { - "line": 172, - "column": 20 + "line": 208, + "column": 45 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, + "label": "[", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -55087,25 +67411,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 5626, - "end": 5630, + "start": 7850, + "end": 7851, "loc": { "start": { - "line": 173, - "column": 16 + "line": 208, + "column": 45 }, "end": { - "line": 173, - "column": 20 + "line": 208, + "column": 46 } } }, { "type": { - "label": ".", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55114,48 +67437,49 @@ "binop": null, "updateContext": null }, - "start": 5630, - "end": 5631, + "value": "z-index", + "start": 7851, + "end": 7860, "loc": { "start": { - "line": 173, - "column": 20 + "line": 208, + "column": 46 }, "end": { - "line": 173, - "column": 21 + "line": 208, + "column": 55 } } }, { "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": "_img", - "start": 5631, - "end": 5635, + "start": 7860, + "end": 7861, "loc": { "start": { - "line": 173, - "column": 21 + "line": 208, + "column": 55 }, "end": { - "line": 173, - "column": 25 + "line": 208, + "column": 56 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -55163,53 +67487,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 5635, - "end": 5636, + "start": 7861, + "end": 7862, "loc": { "start": { - "line": 173, - "column": 25 + "line": 208, + "column": 56 }, "end": { - "line": 173, - "column": 26 + "line": 208, + "column": 57 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "||", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 1, + "updateContext": null }, - "value": "style", - "start": 5636, - "end": 5641, + "value": "||", + "start": 7863, + "end": 7865, "loc": { "start": { - "line": 173, - "column": 26 + "line": 208, + "column": 58 }, "end": { - "line": 173, - "column": 31 + "line": 208, + "column": 60 } } }, { "type": { - "label": ".", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55218,24 +67542,25 @@ "binop": null, "updateContext": null }, - "start": 5641, - "end": 5642, + "value": 0, + "start": 7866, + "end": 7867, "loc": { "start": { - "line": 173, - "column": 31 + "line": 208, + "column": 61 }, "end": { - "line": 173, - "column": 32 + "line": 208, + "column": 62 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55243,44 +67568,43 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 5642, - "end": 5649, + "start": 7867, + "end": 7868, "loc": { "start": { - "line": 173, - "column": 32 + "line": 208, + "column": 62 }, "end": { - "line": 173, - "column": 39 + "line": 208, + "column": 63 } } }, { "type": { - "label": "=", + "label": "+/-", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, - "prefix": false, + "isAssign": false, + "prefix": true, "postfix": false, - "binop": null, + "binop": 9, "updateContext": null }, - "value": "=", - "start": 5650, - "end": 5651, + "value": "+", + "start": 7869, + "end": 7870, "loc": { "start": { - "line": 173, - "column": 40 + "line": 208, + "column": 64 }, "end": { - "line": 173, - "column": 41 + "line": 208, + "column": 65 } } }, @@ -55297,17 +67621,17 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 5652, - "end": 5653, + "value": 1, + "start": 7871, + "end": 7872, "loc": { "start": { - "line": 173, - "column": 42 + "line": 208, + "column": 66 }, "end": { - "line": 173, - "column": 43 + "line": 208, + "column": 67 } } }, @@ -55324,16 +67648,16 @@ "binop": null, "updateContext": null }, - "start": 5653, - "end": 5654, + "start": 7872, + "end": 7873, "loc": { "start": { - "line": 173, - "column": 43 + "line": 208, + "column": 67 }, "end": { - "line": 173, - "column": 44 + "line": 208, + "column": 68 } } }, @@ -55352,16 +67676,16 @@ "updateContext": null }, "value": "this", - "start": 5671, - "end": 5675, + "start": 7882, + "end": 7886, "loc": { "start": { - "line": 174, - "column": 16 + "line": 209, + "column": 8 }, "end": { - "line": 174, - "column": 20 + "line": 209, + "column": 12 } } }, @@ -55378,16 +67702,16 @@ "binop": null, "updateContext": null }, - "start": 5675, - "end": 5676, + "start": 7886, + "end": 7887, "loc": { "start": { - "line": 174, - "column": 20 + "line": 209, + "column": 12 }, "end": { - "line": 174, - "column": 21 + "line": 209, + "column": 13 } } }, @@ -55404,16 +67728,16 @@ "binop": null }, "value": "_img", - "start": 5676, - "end": 5680, + "start": 7887, + "end": 7891, "loc": { "start": { - "line": 174, - "column": 21 + "line": 209, + "column": 13 }, "end": { - "line": 174, - "column": 25 + "line": 209, + "column": 17 } } }, @@ -55430,16 +67754,16 @@ "binop": null, "updateContext": null }, - "start": 5680, - "end": 5681, + "start": 7891, + "end": 7892, "loc": { "start": { - "line": 174, - "column": 25 + "line": 209, + "column": 17 }, "end": { - "line": 174, - "column": 26 + "line": 209, + "column": 18 } } }, @@ -55456,16 +67780,16 @@ "binop": null }, "value": "style", - "start": 5681, - "end": 5686, + "start": 7892, + "end": 7897, "loc": { "start": { - "line": 174, - "column": 26 + "line": 209, + "column": 18 }, "end": { - "line": 174, - "column": 31 + "line": 209, + "column": 23 } } }, @@ -55482,16 +67806,16 @@ "binop": null, "updateContext": null }, - "start": 5686, - "end": 5687, + "start": 7897, + "end": 7898, "loc": { "start": { - "line": 174, - "column": 31 + "line": 209, + "column": 23 }, "end": { - "line": 174, - "column": 32 + "line": 209, + "column": 24 } } }, @@ -55507,17 +67831,17 @@ "postfix": false, "binop": null }, - "value": "visibility", - "start": 5687, - "end": 5697, + "value": "position", + "start": 7898, + "end": 7906, "loc": { "start": { - "line": 174, - "column": 32 + "line": 209, + "column": 24 }, "end": { - "line": 174, - "column": 42 + "line": 209, + "column": 32 } } }, @@ -55535,16 +67859,16 @@ "updateContext": null }, "value": "=", - "start": 5698, - "end": 5699, + "start": 7907, + "end": 7908, "loc": { "start": { - "line": 174, - "column": 43 + "line": 209, + "column": 33 }, "end": { - "line": 174, - "column": 44 + "line": 209, + "column": 34 } } }, @@ -55561,17 +67885,17 @@ "binop": null, "updateContext": null }, - "value": "hidden", - "start": 5700, - "end": 5708, + "value": "absolute", + "start": 7909, + "end": 7919, "loc": { "start": { - "line": 174, - "column": 45 + "line": 209, + "column": 35 }, "end": { - "line": 174, - "column": 53 + "line": 209, + "column": 45 } } }, @@ -55588,67 +67912,16 @@ "binop": null, "updateContext": null }, - "start": 5708, - "end": 5709, - "loc": { - "start": { - "line": 174, - "column": 53 - }, - "end": { - "line": 174, - "column": 54 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "clearInterval", - "start": 5726, - "end": 5739, - "loc": { - "start": { - "line": 175, - "column": 16 - }, - "end": { - "line": 175, - "column": 29 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 5739, - "end": 5740, + "start": 7919, + "end": 7920, "loc": { "start": { - "line": 175, - "column": 29 + "line": 209, + "column": 45 }, "end": { - "line": 175, - "column": 30 + "line": 209, + "column": 46 } } }, @@ -55667,16 +67940,16 @@ "updateContext": null }, "value": "this", - "start": 5740, - "end": 5744, + "start": 7929, + "end": 7933, "loc": { "start": { - "line": 175, - "column": 30 + "line": 210, + "column": 8 }, "end": { - "line": 175, - "column": 34 + "line": 210, + "column": 12 } } }, @@ -55693,16 +67966,16 @@ "binop": null, "updateContext": null }, - "start": 5744, - "end": 5745, + "start": 7933, + "end": 7934, "loc": { "start": { - "line": 175, - "column": 34 + "line": 210, + "column": 12 }, "end": { - "line": 175, - "column": 35 + "line": 210, + "column": 13 } } }, @@ -55718,23 +67991,23 @@ "postfix": false, "binop": null }, - "value": "_pInterval", - "start": 5745, - "end": 5755, + "value": "_img", + "start": 7934, + "end": 7938, "loc": { "start": { - "line": 175, - "column": 35 + "line": 210, + "column": 13 }, "end": { - "line": 175, - "column": 45 + "line": 210, + "column": 17 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -55742,51 +68015,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 5755, - "end": 5756, - "loc": { - "start": { - "line": 175, - "column": 45 - }, - "end": { - "line": 175, - "column": 46 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null, "updateContext": null }, - "start": 5756, - "end": 5757, + "start": 7938, + "end": 7939, "loc": { "start": { - "line": 175, - "column": 46 + "line": 210, + "column": 17 }, "end": { - "line": 175, - "column": 47 + "line": 210, + "column": 18 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -55794,20 +68041,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 5774, - "end": 5778, + "value": "style", + "start": 7939, + "end": 7944, "loc": { "start": { - "line": 176, - "column": 16 + "line": 210, + "column": 18 }, "end": { - "line": 176, - "column": 20 + "line": 210, + "column": 23 } } }, @@ -55824,16 +68070,16 @@ "binop": null, "updateContext": null }, - "start": 5778, - "end": 5779, + "start": 7944, + "end": 7945, "loc": { "start": { - "line": 176, - "column": 20 + "line": 210, + "column": 23 }, "end": { - "line": 176, - "column": 21 + "line": 210, + "column": 24 } } }, @@ -55849,17 +68095,17 @@ "postfix": false, "binop": null }, - "value": "_pInterval", - "start": 5779, - "end": 5789, + "value": "visibility", + "start": 7945, + "end": 7955, "loc": { "start": { - "line": 176, - "column": 21 + "line": 210, + "column": 24 }, "end": { - "line": 176, - "column": 31 + "line": 210, + "column": 34 } } }, @@ -55877,23 +68123,22 @@ "updateContext": null }, "value": "=", - "start": 5790, - "end": 5791, + "start": 7956, + "end": 7957, "loc": { "start": { - "line": 176, - "column": 32 + "line": 210, + "column": 35 }, "end": { - "line": 176, - "column": 33 + "line": 210, + "column": 36 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -55904,17 +68149,17 @@ "binop": null, "updateContext": null }, - "value": "null", - "start": 5792, - "end": 5796, + "value": "hidden", + "start": 7958, + "end": 7966, "loc": { "start": { - "line": 176, - "column": 34 + "line": 210, + "column": 37 }, "end": { - "line": 176, - "column": 38 + "line": 210, + "column": 45 } } }, @@ -55931,47 +68176,50 @@ "binop": null, "updateContext": null }, - "start": 5796, - "end": 5797, + "start": 7966, + "end": 7967, "loc": { "start": { - "line": 176, - "column": 38 + "line": 210, + "column": 45 }, "end": { - "line": 176, - "column": 39 + "line": 210, + "column": 46 } } }, { "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": 5810, - "end": 5811, + "value": "this", + "start": 7976, + "end": 7980, "loc": { "start": { - "line": 177, - "column": 12 + "line": 211, + "column": 8 }, "end": { - "line": 177, - "column": 13 + "line": 211, + "column": 12 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -55979,78 +68227,79 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5820, - "end": 5821, + "start": 7980, + "end": 7981, "loc": { "start": { - "line": 178, - "column": 8 + "line": 211, + "column": 12 }, "end": { - "line": 178, - "column": 9 + "line": 211, + "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": 5821, - "end": 5822, + "value": "_img", + "start": 7981, + "end": 7985, "loc": { "start": { - "line": 178, - "column": 9 + "line": 211, + "column": 13 }, "end": { - "line": 178, - "column": 10 + "line": 211, + "column": 17 } } }, { "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": "interval", - "start": 5823, - "end": 5831, + "start": 7985, + "end": 7986, "loc": { "start": { - "line": 178, - "column": 11 + "line": 211, + "column": 17 }, "end": { - "line": 178, - "column": 19 + "line": 211, + "column": 18 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56058,24 +68307,25 @@ "postfix": false, "binop": null }, - "start": 5831, - "end": 5832, + "value": "style", + "start": 7986, + "end": 7991, "loc": { "start": { - "line": 178, - "column": 19 + "line": 211, + "column": 18 }, "end": { - "line": 178, - "column": 20 + "line": 211, + "column": 23 } } }, { "type": { - "label": ";", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56084,142 +68334,149 @@ "binop": null, "updateContext": null }, - "start": 5832, - "end": 5833, + "start": 7991, + "end": 7992, "loc": { "start": { - "line": 178, - "column": 20 + "line": 211, + "column": 23 }, "end": { - "line": 178, - "column": 21 + "line": 211, + "column": 24 } } }, { "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": 5838, - "end": 5839, + "value": "pointer-events", + "start": 7992, + "end": 8008, "loc": { "start": { - "line": 179, - "column": 4 + "line": 211, + "column": 24 }, "end": { - "line": 179, - "column": 5 + "line": 211, + "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": "_initFade", - "start": 5845, - "end": 5854, + "start": 8008, + "end": 8009, "loc": { "start": { - "line": 181, - "column": 4 + "line": 211, + "column": 40 }, "end": { - "line": 181, - "column": 13 + "line": 211, + "column": 41 } } }, { "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": 5854, - "end": 5855, + "value": "=", + "start": 8010, + "end": 8011, "loc": { "start": { - "line": 181, - "column": 13 + "line": 211, + "column": 42 }, "end": { - "line": 181, - "column": 14 + "line": 211, + "column": 43 } } }, { "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": 5855, - "end": 5856, + "value": "none", + "start": 8012, + "end": 8018, "loc": { "start": { - "line": 181, - "column": 14 + "line": 211, + "column": 44 }, "end": { - "line": 181, - "column": 15 + "line": 211, + "column": 50 } } }, { "type": { - "label": "{", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5857, - "end": 5858, + "start": 8018, + "end": 8019, "loc": { "start": { - "line": 181, - "column": 16 + "line": 211, + "column": 50 }, "end": { - "line": 181, - "column": 17 + "line": 211, + "column": 51 } } }, @@ -56238,15 +68495,15 @@ "updateContext": null }, "value": "this", - "start": 5867, - "end": 5871, + "start": 8028, + "end": 8032, "loc": { "start": { - "line": 182, + "line": 212, "column": 8 }, "end": { - "line": 182, + "line": 212, "column": 12 } } @@ -56264,15 +68521,15 @@ "binop": null, "updateContext": null }, - "start": 5871, - "end": 5872, + "start": 8032, + "end": 8033, "loc": { "start": { - "line": 182, + "line": 212, "column": 12 }, "end": { - "line": 182, + "line": 212, "column": 13 } } @@ -56290,43 +68547,42 @@ "binop": null }, "value": "_img", - "start": 5872, - "end": 5876, + "start": 8033, + "end": 8037, "loc": { "start": { - "line": 182, + "line": 212, "column": 13 }, "end": { - "line": 182, + "line": 212, "column": 17 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 5877, - "end": 5878, + "start": 8037, + "end": 8038, "loc": { "start": { - "line": 182, - "column": 18 + "line": 212, + "column": 17 }, "end": { - "line": 182, - "column": 19 + "line": 212, + "column": 18 } } }, @@ -56342,25 +68598,25 @@ "postfix": false, "binop": null }, - "value": "document", - "start": 5879, - "end": 5887, + "value": "style", + "start": 8038, + "end": 8043, "loc": { "start": { - "line": 182, - "column": 20 + "line": 212, + "column": 18 }, "end": { - "line": 182, - "column": 28 + "line": 212, + "column": 23 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56369,22 +68625,22 @@ "binop": null, "updateContext": null }, - "start": 5887, - "end": 5888, + "start": 8043, + "end": 8044, "loc": { "start": { - "line": 182, - "column": 28 + "line": 212, + "column": 23 }, "end": { - "line": 182, - "column": 29 + "line": 212, + "column": 24 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -56392,96 +68648,100 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "createElement", - "start": 5888, - "end": 5901, + "value": "z-index", + "start": 8044, + "end": 8053, "loc": { "start": { - "line": 182, - "column": 29 + "line": 212, + "column": 24 }, "end": { - "line": 182, - "column": 42 + "line": 212, + "column": 33 } } }, { "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": 5901, - "end": 5902, + "start": 8053, + "end": 8054, "loc": { "start": { - "line": 182, - "column": 42 + "line": 212, + "column": 33 }, "end": { - "line": 182, - "column": 43 + "line": 212, + "column": 34 } } }, { "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": "img", - "start": 5902, - "end": 5907, + "value": "=", + "start": 8055, + "end": 8056, "loc": { "start": { - "line": 182, - "column": 43 + "line": 212, + "column": 35 }, "end": { - "line": 182, - "column": 48 + "line": 212, + "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": 5907, - "end": 5908, + "value": 5, + "start": 8057, + "end": 8058, "loc": { "start": { - "line": 182, - "column": 48 + "line": 212, + "column": 37 }, "end": { - "line": 182, - "column": 49 + "line": 212, + "column": 38 } } }, @@ -56498,25 +68758,25 @@ "binop": null, "updateContext": null }, - "start": 5908, - "end": 5909, + "start": 8058, + "end": 8059, "loc": { "start": { - "line": 182, - "column": 49 + "line": 212, + "column": 38 }, "end": { - "line": 182, - "column": 50 + "line": 212, + "column": 39 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56525,16 +68785,42 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 5918, - "end": 5923, + "value": "this", + "start": 8068, + "end": 8072, "loc": { "start": { - "line": 183, + "line": 213, "column": 8 }, "end": { - "line": 183, + "line": 213, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8072, + "end": 8073, + "loc": { + "start": { + "line": 213, + "column": 12 + }, + "end": { + "line": 213, "column": 13 } } @@ -56551,51 +68837,49 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 5924, - "end": 5930, + "value": "_img", + "start": 8073, + "end": 8077, "loc": { "start": { - "line": 183, - "column": 14 + "line": 213, + "column": 13 }, "end": { - "line": 183, - "column": 20 + "line": 213, + "column": 17 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 5931, - "end": 5932, + "start": 8077, + "end": 8078, "loc": { "start": { - "line": 183, - "column": 21 + "line": 213, + "column": 17 }, "end": { - "line": 183, - "column": 22 + "line": 213, + "column": 18 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -56603,20 +68887,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 5933, - "end": 5937, + "value": "style", + "start": 8078, + "end": 8083, "loc": { "start": { - "line": 183, - "column": 23 + "line": 213, + "column": 18 }, "end": { - "line": 183, - "column": 27 + "line": 213, + "column": 23 } } }, @@ -56633,16 +68916,16 @@ "binop": null, "updateContext": null }, - "start": 5937, - "end": 5938, + "start": 8083, + "end": 8084, "loc": { "start": { - "line": 183, - "column": 27 + "line": 213, + "column": 23 }, "end": { - "line": 183, - "column": 28 + "line": 213, + "column": 24 } } }, @@ -56658,43 +68941,44 @@ "postfix": false, "binop": null }, - "value": "viewer", - "start": 5938, - "end": 5944, + "value": "left", + "start": 8084, + "end": 8088, "loc": { "start": { - "line": 183, - "column": 28 + "line": 213, + "column": 24 }, "end": { - "line": 183, - "column": 34 + "line": 213, + "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, "updateContext": null }, - "start": 5944, - "end": 5945, + "value": "=", + "start": 8089, + "end": 8090, "loc": { "start": { - "line": 183, - "column": 34 + "line": 213, + "column": 29 }, "end": { - "line": 183, - "column": 35 + "line": 213, + "column": 30 } } }, @@ -56710,17 +68994,17 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 5945, - "end": 5950, + "value": "canvasOffset", + "start": 8091, + "end": 8103, "loc": { "start": { - "line": 183, - "column": 35 + "line": 213, + "column": 31 }, "end": { - "line": 183, - "column": 40 + "line": 213, + "column": 43 } } }, @@ -56737,16 +69021,16 @@ "binop": null, "updateContext": null }, - "start": 5950, - "end": 5951, + "start": 8103, + "end": 8104, "loc": { "start": { - "line": 183, - "column": 40 + "line": 213, + "column": 43 }, "end": { - "line": 183, - "column": 41 + "line": 213, + "column": 44 } } }, @@ -56762,49 +69046,50 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 5951, - "end": 5957, + "value": "left", + "start": 8104, + "end": 8108, "loc": { "start": { - "line": 183, - "column": 41 + "line": 213, + "column": 44 }, "end": { - "line": 183, - "column": 47 + "line": 213, + "column": 48 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null, + "binop": 9, "updateContext": null }, - "start": 5957, - "end": 5958, + "value": "+", + "start": 8109, + "end": 8110, "loc": { "start": { - "line": 183, - "column": 47 + "line": 213, + "column": 49 }, "end": { - "line": 183, - "column": 48 + "line": 213, + "column": 50 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -56812,19 +69097,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "canvas", - "start": 5958, - "end": 5964, + "value": "px", + "start": 8111, + "end": 8115, "loc": { "start": { - "line": 183, - "column": 48 + "line": 213, + "column": 51 }, "end": { - "line": 183, - "column": 54 + "line": 213, + "column": 55 } } }, @@ -56841,25 +69127,25 @@ "binop": null, "updateContext": null }, - "start": 5964, - "end": 5965, + "start": 8115, + "end": 8116, "loc": { "start": { - "line": 183, - "column": 54 + "line": 213, + "column": 55 }, "end": { - "line": 183, - "column": 55 + "line": 213, + "column": 56 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56868,103 +69154,102 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 5974, - "end": 5979, + "value": "this", + "start": 8125, + "end": 8129, "loc": { "start": { - "line": 184, + "line": 214, "column": 8 }, "end": { - "line": 184, - "column": 13 + "line": 214, + "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": "canvasOffset", - "start": 5980, - "end": 5992, + "start": 8129, + "end": 8130, "loc": { "start": { - "line": 184, - "column": 14 + "line": 214, + "column": 12 }, "end": { - "line": 184, - "column": 26 + "line": 214, + "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": 5993, - "end": 5994, + "value": "_img", + "start": 8130, + "end": 8134, "loc": { "start": { - "line": 184, - "column": 27 + "line": 214, + "column": 13 }, "end": { - "line": 184, - "column": 28 + "line": 214, + "column": 17 } } }, { "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": "cumulativeOffset", - "start": 5995, - "end": 6011, + "start": 8134, + "end": 8135, "loc": { "start": { - "line": 184, - "column": 29 + "line": 214, + "column": 17 }, "end": { - "line": 184, - "column": 45 + "line": 214, + "column": 18 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -56973,50 +69258,51 @@ "postfix": false, "binop": null }, - "start": 6011, - "end": 6012, + "value": "style", + "start": 8135, + "end": 8140, "loc": { "start": { - "line": 184, - "column": 45 + "line": 214, + "column": 18 }, "end": { - "line": 184, - "column": 46 + "line": 214, + "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": "canvas", - "start": 6012, - "end": 6018, + "start": 8140, + "end": 8141, "loc": { "start": { - "line": 184, - "column": 46 + "line": 214, + "column": 23 }, "end": { - "line": 184, - "column": 52 + "line": 214, + "column": 24 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57024,154 +69310,155 @@ "postfix": false, "binop": null }, - "start": 6018, - "end": 6019, + "value": "top", + "start": 8141, + "end": 8144, "loc": { "start": { - "line": 184, - "column": 52 + "line": 214, + "column": 24 }, "end": { - "line": 184, - "column": 53 + "line": 214, + "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": 6019, - "end": 6020, + "value": "=", + "start": 8145, + "end": 8146, "loc": { "start": { - "line": 184, - "column": 53 + "line": 214, + "column": 28 }, "end": { - "line": 184, - "column": 54 + "line": 214, + "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": 6029, - "end": 6034, + "value": "canvasOffset", + "start": 8147, + "end": 8159, "loc": { "start": { - "line": 185, - "column": 8 + "line": 214, + "column": 30 }, "end": { - "line": 185, - "column": 13 + "line": 214, + "column": 42 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "zIndex", - "start": 6035, - "end": 6041, + "start": 8159, + "end": 8160, "loc": { "start": { - "line": 185, - "column": 14 + "line": 214, + "column": 42 }, "end": { - "line": 185, - "column": 20 + "line": 214, + "column": 43 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 6042, - "end": 6043, + "value": "top", + "start": 8160, + "end": 8163, "loc": { "start": { - "line": 185, - "column": 21 + "line": 214, + "column": 43 }, "end": { - "line": 185, - "column": 22 + "line": 214, + "column": 46 } } }, { "type": { - "label": "(", + "label": "+/-", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null + "binop": 9, + "updateContext": null }, - "start": 6044, - "end": 6045, + "value": "+", + "start": 8164, + "end": 8165, "loc": { "start": { - "line": 185, - "column": 23 + "line": 214, + "column": 47 }, "end": { - "line": 185, - "column": 24 + "line": 214, + "column": 48 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -57179,50 +69466,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "parseInt", - "start": 6045, - "end": 6053, + "value": "px", + "start": 8166, + "end": 8170, "loc": { "start": { - "line": 185, - "column": 24 + "line": 214, + "column": 49 }, "end": { - "line": 185, - "column": 32 + "line": 214, + "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": 6053, - "end": 6054, + "start": 8170, + "end": 8171, "loc": { "start": { - "line": 185, - "column": 32 + "line": 214, + "column": 53 }, "end": { - "line": 185, - "column": 33 + "line": 214, + "column": 54 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -57230,19 +69520,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "canvas", - "start": 6054, - "end": 6060, + "value": "this", + "start": 8180, + "end": 8184, "loc": { "start": { - "line": 185, - "column": 33 + "line": 215, + "column": 8 }, "end": { - "line": 185, - "column": 39 + "line": 215, + "column": 12 } } }, @@ -57259,16 +69550,16 @@ "binop": null, "updateContext": null }, - "start": 6060, - "end": 6061, + "start": 8184, + "end": 8185, "loc": { "start": { - "line": 185, - "column": 39 + "line": 215, + "column": 12 }, "end": { - "line": 185, - "column": 40 + "line": 215, + "column": 13 } } }, @@ -57284,25 +69575,25 @@ "postfix": false, "binop": null }, - "value": "style", - "start": 6061, - "end": 6066, + "value": "_img", + "start": 8185, + "end": 8189, "loc": { "start": { - "line": 185, - "column": 40 + "line": 215, + "column": 13 }, "end": { - "line": 185, - "column": 45 + "line": 215, + "column": 17 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57311,22 +69602,22 @@ "binop": null, "updateContext": null }, - "start": 6066, - "end": 6067, + "start": 8189, + "end": 8190, "loc": { "start": { - "line": 185, - "column": 45 + "line": 215, + "column": 17 }, "end": { - "line": 185, - "column": 46 + "line": 215, + "column": 18 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -57334,26 +69625,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "z-index", - "start": 6067, - "end": 6076, + "value": "style", + "start": 8190, + "end": 8195, "loc": { "start": { - "line": 185, - "column": 46 + "line": 215, + "column": 18 }, "end": { - "line": 185, - "column": 55 + "line": 215, + "column": 23 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -57364,24 +69654,24 @@ "binop": null, "updateContext": null }, - "start": 6076, - "end": 6077, + "start": 8195, + "end": 8196, "loc": { "start": { - "line": 185, - "column": 55 + "line": 215, + "column": 23 }, "end": { - "line": 185, - "column": 56 + "line": 215, + "column": 24 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57389,49 +69679,50 @@ "postfix": false, "binop": null }, - "start": 6077, - "end": 6078, + "value": "width", + "start": 8196, + "end": 8201, "loc": { "start": { - "line": 185, - "column": 56 + "line": 215, + "column": 24 }, "end": { - "line": 185, - "column": 57 + "line": 215, + "column": 29 } } }, { "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": 6079, - "end": 6081, + "value": "=", + "start": 8202, + "end": 8203, "loc": { "start": { - "line": 185, - "column": 58 + "line": 215, + "column": 30 }, "end": { - "line": 185, - "column": 60 + "line": 215, + "column": 31 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -57439,28 +69730,53 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "value": "canvas", + "start": 8204, + "end": 8210, + "loc": { + "start": { + "line": 215, + "column": 32 + }, + "end": { + "line": 215, + "column": 38 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "value": 0, - "start": 6082, - "end": 6083, + "start": 8210, + "end": 8211, "loc": { "start": { - "line": 185, - "column": 61 + "line": 215, + "column": 38 }, "end": { - "line": 185, - "column": 62 + "line": 215, + "column": 39 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57468,16 +69784,17 @@ "postfix": false, "binop": null }, - "start": 6083, - "end": 6084, + "value": "width", + "start": 8211, + "end": 8216, "loc": { "start": { - "line": 185, - "column": 62 + "line": 215, + "column": 39 }, "end": { - "line": 185, - "column": 63 + "line": 215, + "column": 44 } } }, @@ -57495,22 +69812,22 @@ "updateContext": null }, "value": "+", - "start": 6085, - "end": 6086, + "start": 8217, + "end": 8218, "loc": { "start": { - "line": 185, - "column": 64 + "line": 215, + "column": 45 }, "end": { - "line": 185, - "column": 65 + "line": 215, + "column": 46 } } }, { "type": { - "label": "num", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -57521,17 +69838,17 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 6087, - "end": 6088, + "value": "px", + "start": 8219, + "end": 8223, "loc": { "start": { - "line": 185, - "column": 66 + "line": 215, + "column": 47 }, "end": { - "line": 185, - "column": 67 + "line": 215, + "column": 51 } } }, @@ -57548,16 +69865,16 @@ "binop": null, "updateContext": null }, - "start": 6088, - "end": 6089, + "start": 8223, + "end": 8224, "loc": { "start": { - "line": 185, - "column": 67 + "line": 215, + "column": 51 }, "end": { - "line": 185, - "column": 68 + "line": 215, + "column": 52 } } }, @@ -57576,15 +69893,15 @@ "updateContext": null }, "value": "this", - "start": 6098, - "end": 6102, + "start": 8233, + "end": 8237, "loc": { "start": { - "line": 186, + "line": 216, "column": 8 }, "end": { - "line": 186, + "line": 216, "column": 12 } } @@ -57602,15 +69919,15 @@ "binop": null, "updateContext": null }, - "start": 6102, - "end": 6103, + "start": 8237, + "end": 8238, "loc": { "start": { - "line": 186, + "line": 216, "column": 12 }, "end": { - "line": 186, + "line": 216, "column": 13 } } @@ -57628,15 +69945,15 @@ "binop": null }, "value": "_img", - "start": 6103, - "end": 6107, + "start": 8238, + "end": 8242, "loc": { "start": { - "line": 186, + "line": 216, "column": 13 }, "end": { - "line": 186, + "line": 216, "column": 17 } } @@ -57654,15 +69971,15 @@ "binop": null, "updateContext": null }, - "start": 6107, - "end": 6108, + "start": 8242, + "end": 8243, "loc": { "start": { - "line": 186, + "line": 216, "column": 17 }, "end": { - "line": 186, + "line": 216, "column": 18 } } @@ -57680,15 +69997,15 @@ "binop": null }, "value": "style", - "start": 6108, - "end": 6113, + "start": 8243, + "end": 8248, "loc": { "start": { - "line": 186, + "line": 216, "column": 18 }, "end": { - "line": 186, + "line": 216, "column": 23 } } @@ -57706,15 +70023,15 @@ "binop": null, "updateContext": null }, - "start": 6113, - "end": 6114, + "start": 8248, + "end": 8249, "loc": { "start": { - "line": 186, + "line": 216, "column": 23 }, "end": { - "line": 186, + "line": 216, "column": 24 } } @@ -57731,17 +70048,17 @@ "postfix": false, "binop": null }, - "value": "position", - "start": 6114, - "end": 6122, + "value": "height", + "start": 8249, + "end": 8255, "loc": { "start": { - "line": 186, + "line": 216, "column": 24 }, "end": { - "line": 186, - "column": 32 + "line": 216, + "column": 30 } } }, @@ -57759,16 +70076,121 @@ "updateContext": null }, "value": "=", - "start": 6123, - "end": 6124, + "start": 8256, + "end": 8257, "loc": { "start": { - "line": 186, + "line": 216, + "column": 31 + }, + "end": { + "line": 216, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "canvas", + "start": 8258, + "end": 8264, + "loc": { + "start": { + "line": 216, "column": 33 }, "end": { - "line": 186, - "column": 34 + "line": 216, + "column": 39 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8264, + "end": 8265, + "loc": { + "start": { + "line": 216, + "column": 39 + }, + "end": { + "line": 216, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "height", + "start": 8265, + "end": 8271, + "loc": { + "start": { + "line": 216, + "column": 40 + }, + "end": { + "line": 216, + "column": 46 + } + } + }, + { + "type": { + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": 9, + "updateContext": null + }, + "value": "+", + "start": 8272, + "end": 8273, + "loc": { + "start": { + "line": 216, + "column": 47 + }, + "end": { + "line": 216, + "column": 48 } } }, @@ -57785,17 +70207,17 @@ "binop": null, "updateContext": null }, - "value": "absolute", - "start": 6125, - "end": 6135, + "value": "px", + "start": 8274, + "end": 8278, "loc": { "start": { - "line": 186, - "column": 35 + "line": 216, + "column": 49 }, "end": { - "line": 186, - "column": 45 + "line": 216, + "column": 53 } } }, @@ -57812,16 +70234,16 @@ "binop": null, "updateContext": null }, - "start": 6135, - "end": 6136, + "start": 8278, + "end": 8279, "loc": { "start": { - "line": 186, - "column": 45 + "line": 216, + "column": 53 }, "end": { - "line": 186, - "column": 46 + "line": 216, + "column": 54 } } }, @@ -57840,15 +70262,15 @@ "updateContext": null }, "value": "this", - "start": 6145, - "end": 6149, + "start": 8288, + "end": 8292, "loc": { "start": { - "line": 187, + "line": 217, "column": 8 }, "end": { - "line": 187, + "line": 217, "column": 12 } } @@ -57866,15 +70288,15 @@ "binop": null, "updateContext": null }, - "start": 6149, - "end": 6150, + "start": 8292, + "end": 8293, "loc": { "start": { - "line": 187, + "line": 217, "column": 12 }, "end": { - "line": 187, + "line": 217, "column": 13 } } @@ -57892,15 +70314,15 @@ "binop": null }, "value": "_img", - "start": 6150, - "end": 6154, + "start": 8293, + "end": 8297, "loc": { "start": { - "line": 187, + "line": 217, "column": 13 }, "end": { - "line": 187, + "line": 217, "column": 17 } } @@ -57918,15 +70340,15 @@ "binop": null, "updateContext": null }, - "start": 6154, - "end": 6155, + "start": 8297, + "end": 8298, "loc": { "start": { - "line": 187, + "line": 217, "column": 17 }, "end": { - "line": 187, + "line": 217, "column": 18 } } @@ -57944,15 +70366,15 @@ "binop": null }, "value": "style", - "start": 6155, - "end": 6160, + "start": 8298, + "end": 8303, "loc": { "start": { - "line": 187, + "line": 217, "column": 18 }, "end": { - "line": 187, + "line": 217, "column": 23 } } @@ -57970,15 +70392,15 @@ "binop": null, "updateContext": null }, - "start": 6160, - "end": 6161, + "start": 8303, + "end": 8304, "loc": { "start": { - "line": 187, + "line": 217, "column": 23 }, "end": { - "line": 187, + "line": 217, "column": 24 } } @@ -57995,17 +70417,17 @@ "postfix": false, "binop": null }, - "value": "visibility", - "start": 6161, - "end": 6171, + "value": "opacity", + "start": 8304, + "end": 8311, "loc": { "start": { - "line": 187, + "line": 217, "column": 24 }, "end": { - "line": 187, - "column": 34 + "line": 217, + "column": 31 } } }, @@ -58023,22 +70445,22 @@ "updateContext": null }, "value": "=", - "start": 6172, - "end": 6173, + "start": 8312, + "end": 8313, "loc": { "start": { - "line": 187, - "column": 35 + "line": 217, + "column": 32 }, "end": { - "line": 187, - "column": 36 + "line": 217, + "column": 33 } } }, { "type": { - "label": "string", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -58049,17 +70471,17 @@ "binop": null, "updateContext": null }, - "value": "hidden", - "start": 6174, - "end": 6182, + "value": 1, + "start": 8314, + "end": 8315, "loc": { "start": { - "line": 187, - "column": 37 + "line": 217, + "column": 34 }, "end": { - "line": 187, - "column": 45 + "line": 217, + "column": 35 } } }, @@ -58076,16 +70498,16 @@ "binop": null, "updateContext": null }, - "start": 6182, - "end": 6183, + "start": 8315, + "end": 8316, "loc": { "start": { - "line": 187, - "column": 45 + "line": 217, + "column": 35 }, "end": { - "line": 187, - "column": 46 + "line": 217, + "column": 36 } } }, @@ -58104,15 +70526,15 @@ "updateContext": null }, "value": "this", - "start": 6192, - "end": 6196, + "start": 8325, + "end": 8329, "loc": { "start": { - "line": 188, + "line": 218, "column": 8 }, "end": { - "line": 188, + "line": 218, "column": 12 } } @@ -58130,15 +70552,15 @@ "binop": null, "updateContext": null }, - "start": 6196, - "end": 6197, + "start": 8329, + "end": 8330, "loc": { "start": { - "line": 188, + "line": 218, "column": 12 }, "end": { - "line": 188, + "line": 218, "column": 13 } } @@ -58156,15 +70578,15 @@ "binop": null }, "value": "_img", - "start": 6197, - "end": 6201, + "start": 8330, + "end": 8334, "loc": { "start": { - "line": 188, + "line": 218, "column": 13 }, "end": { - "line": 188, + "line": 218, "column": 17 } } @@ -58182,15 +70604,15 @@ "binop": null, "updateContext": null }, - "start": 6201, - "end": 6202, + "start": 8334, + "end": 8335, "loc": { "start": { - "line": 188, + "line": 218, "column": 17 }, "end": { - "line": 188, + "line": 218, "column": 18 } } @@ -58204,132 +70626,105 @@ "isLoop": false, "isAssign": false, "prefix": false, - "postfix": false, - "binop": null - }, - "value": "style", - "start": 6202, - "end": 6207, - "loc": { - "start": { - "line": 188, - "column": 18 - }, - "end": { - "line": 188, - "column": 23 - } - } - }, - { - "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "postfix": false, + "binop": null }, - "start": 6207, - "end": 6208, + "value": "width", + "start": 8335, + "end": 8340, "loc": { "start": { - "line": 188, - "column": 23 + "line": 218, + "column": 18 }, "end": { - "line": 188, - "column": 24 + "line": 218, + "column": 23 } } }, { "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": "pointer-events", - "start": 6208, - "end": 6224, + "value": "=", + "start": 8341, + "end": 8342, "loc": { "start": { - "line": 188, + "line": 218, "column": 24 }, "end": { - "line": 188, - "column": 40 + "line": 218, + "column": 25 } } }, { "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": 6224, - "end": 6225, + "value": "canvas", + "start": 8343, + "end": 8349, "loc": { "start": { - "line": 188, - "column": 40 + "line": 218, + "column": 26 }, "end": { - "line": 188, - "column": 41 + "line": 218, + "column": 32 } } }, { "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": 6226, - "end": 6227, + "start": 8349, + "end": 8350, "loc": { "start": { - "line": 188, - "column": 42 + "line": 218, + "column": 32 }, "end": { - "line": 188, - "column": 43 + "line": 218, + "column": 33 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -58337,20 +70732,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "none", - "start": 6228, - "end": 6234, + "value": "width", + "start": 8350, + "end": 8355, "loc": { "start": { - "line": 188, - "column": 44 + "line": 218, + "column": 33 }, "end": { - "line": 188, - "column": 50 + "line": 218, + "column": 38 } } }, @@ -58367,16 +70761,16 @@ "binop": null, "updateContext": null }, - "start": 6234, - "end": 6235, + "start": 8355, + "end": 8356, "loc": { "start": { - "line": 188, - "column": 50 + "line": 218, + "column": 38 }, "end": { - "line": 188, - "column": 51 + "line": 218, + "column": 39 } } }, @@ -58395,15 +70789,15 @@ "updateContext": null }, "value": "this", - "start": 6244, - "end": 6248, + "start": 8365, + "end": 8369, "loc": { "start": { - "line": 189, + "line": 219, "column": 8 }, "end": { - "line": 189, + "line": 219, "column": 12 } } @@ -58421,15 +70815,15 @@ "binop": null, "updateContext": null }, - "start": 6248, - "end": 6249, + "start": 8369, + "end": 8370, "loc": { "start": { - "line": 189, + "line": 219, "column": 12 }, "end": { - "line": 189, + "line": 219, "column": 13 } } @@ -58447,15 +70841,15 @@ "binop": null }, "value": "_img", - "start": 6249, - "end": 6253, + "start": 8370, + "end": 8374, "loc": { "start": { - "line": 189, + "line": 219, "column": 13 }, "end": { - "line": 189, + "line": 219, "column": 17 } } @@ -58473,15 +70867,15 @@ "binop": null, "updateContext": null }, - "start": 6253, - "end": 6254, + "start": 8374, + "end": 8375, "loc": { "start": { - "line": 189, + "line": 219, "column": 17 }, "end": { - "line": 189, + "line": 219, "column": 18 } } @@ -58498,49 +70892,50 @@ "postfix": false, "binop": null }, - "value": "style", - "start": 6254, - "end": 6259, + "value": "height", + "start": 8375, + "end": 8381, "loc": { "start": { - "line": 189, + "line": 219, "column": 18 }, "end": { - "line": 189, - "column": 23 + "line": 219, + "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": 6259, - "end": 6260, + "value": "=", + "start": 8382, + "end": 8383, "loc": { "start": { - "line": 189, - "column": 23 + "line": 219, + "column": 25 }, "end": { - "line": 189, - "column": 24 + "line": 219, + "column": 26 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -58548,26 +70943,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "z-index", - "start": 6260, - "end": 6269, + "value": "canvas", + "start": 8384, + "end": 8390, "loc": { "start": { - "line": 189, - "column": 24 + "line": 219, + "column": 27 }, "end": { - "line": 189, + "line": 219, "column": 33 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -58578,49 +70972,22 @@ "binop": null, "updateContext": null }, - "start": 6269, - "end": 6270, + "start": 8390, + "end": 8391, "loc": { "start": { - "line": 189, + "line": 219, "column": 33 }, "end": { - "line": 189, + "line": 219, "column": 34 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 6271, - "end": 6272, - "loc": { - "start": { - "line": 189, - "column": 35 - }, - "end": { - "line": 189, - "column": 36 - } - } - }, - { - "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -58628,20 +70995,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 5, - "start": 6273, - "end": 6274, + "value": "height", + "start": 8391, + "end": 8397, "loc": { "start": { - "line": 189, - "column": 37 + "line": 219, + "column": 34 }, "end": { - "line": 189, - "column": 38 + "line": 219, + "column": 40 } } }, @@ -58658,16 +71024,16 @@ "binop": null, "updateContext": null }, - "start": 6274, - "end": 6275, + "start": 8397, + "end": 8398, "loc": { "start": { - "line": 189, - "column": 38 + "line": 219, + "column": 40 }, "end": { - "line": 189, - "column": 39 + "line": 219, + "column": 41 } } }, @@ -58686,15 +71052,15 @@ "updateContext": null }, "value": "this", - "start": 6284, - "end": 6288, + "start": 8407, + "end": 8411, "loc": { "start": { - "line": 190, + "line": 220, "column": 8 }, "end": { - "line": 190, + "line": 220, "column": 12 } } @@ -58712,15 +71078,15 @@ "binop": null, "updateContext": null }, - "start": 6288, - "end": 6289, + "start": 8411, + "end": 8412, "loc": { "start": { - "line": 190, + "line": 220, "column": 12 }, "end": { - "line": 190, + "line": 220, "column": 13 } } @@ -58738,15 +71104,15 @@ "binop": null }, "value": "_img", - "start": 6289, - "end": 6293, + "start": 8412, + "end": 8416, "loc": { "start": { - "line": 190, + "line": 220, "column": 13 }, "end": { - "line": 190, + "line": 220, "column": 17 } } @@ -58764,15 +71130,15 @@ "binop": null, "updateContext": null }, - "start": 6293, - "end": 6294, + "start": 8416, + "end": 8417, "loc": { "start": { - "line": 190, + "line": 220, "column": 17 }, "end": { - "line": 190, + "line": 220, "column": 18 } } @@ -58789,42 +71155,43 @@ "postfix": false, "binop": null }, - "value": "style", - "start": 6294, - "end": 6299, + "value": "left", + "start": 8417, + "end": 8421, "loc": { "start": { - "line": 190, + "line": 220, "column": 18 }, "end": { - "line": 190, - "column": 23 + "line": 220, + "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": 6299, - "end": 6300, + "value": "=", + "start": 8422, + "end": 8423, "loc": { "start": { - "line": 190, + "line": 220, "column": 23 }, "end": { - "line": 190, + "line": 220, "column": 24 } } @@ -58841,44 +71208,43 @@ "postfix": false, "binop": null }, - "value": "left", - "start": 6300, - "end": 6304, + "value": "canvasOffset", + "start": 8424, + "end": 8436, "loc": { "start": { - "line": 190, - "column": 24 + "line": 220, + "column": 25 }, "end": { - "line": 190, - "column": 28 + "line": 220, + "column": 37 } } }, { "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": 6305, - "end": 6306, + "start": 8436, + "end": 8437, "loc": { "start": { - "line": 190, - "column": 29 + "line": 220, + "column": 37 }, "end": { - "line": 190, - "column": 30 + "line": 220, + "column": 38 } } }, @@ -58894,24 +71260,24 @@ "postfix": false, "binop": null }, - "value": "canvasOffset", - "start": 6307, - "end": 6319, + "value": "left", + "start": 8437, + "end": 8441, "loc": { "start": { - "line": 190, - "column": 31 + "line": 220, + "column": 38 }, "end": { - "line": 190, - "column": 43 + "line": 220, + "column": 42 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -58921,22 +71287,23 @@ "binop": null, "updateContext": null }, - "start": 6319, - "end": 6320, + "start": 8441, + "end": 8442, "loc": { "start": { - "line": 190, - "column": 43 + "line": 220, + "column": 42 }, "end": { - "line": 190, - "column": 44 + "line": 220, + "column": 43 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -58944,52 +71311,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "left", - "start": 6320, - "end": 6324, + "value": "this", + "start": 8451, + "end": 8455, "loc": { "start": { - "line": 190, - "column": 44 + "line": 221, + "column": 8 }, "end": { - "line": 190, - "column": 48 + "line": 221, + "column": 12 } } }, { "type": { - "label": "+/-", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": 9, + "binop": null, "updateContext": null }, - "value": "+", - "start": 6325, - "end": 6326, + "start": 8455, + "end": 8456, "loc": { "start": { - "line": 190, - "column": 49 + "line": 221, + "column": 12 }, "end": { - "line": 190, - "column": 50 + "line": 221, + "column": 13 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -58997,27 +71364,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "px", - "start": 6327, - "end": 6331, + "value": "_img", + "start": 8456, + "end": 8460, "loc": { "start": { - "line": 190, - "column": 51 + "line": 221, + "column": 13 }, "end": { - "line": 190, - "column": 55 + "line": 221, + "column": 17 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -59027,23 +71393,22 @@ "binop": null, "updateContext": null }, - "start": 6331, - "end": 6332, + "start": 8460, + "end": 8461, "loc": { "start": { - "line": 190, - "column": 55 + "line": 221, + "column": 17 }, "end": { - "line": 190, - "column": 56 + "line": 221, + "column": 18 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -59051,46 +71416,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 6341, - "end": 6345, + "value": "top", + "start": 8461, + "end": 8464, "loc": { "start": { - "line": 191, - "column": 8 + "line": 221, + "column": 18 }, "end": { - "line": 191, - "column": 12 + "line": 221, + "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": 6345, - "end": 6346, + "value": "=", + "start": 8465, + "end": 8466, "loc": { "start": { - "line": 191, - "column": 12 + "line": 221, + "column": 22 }, "end": { - "line": 191, - "column": 13 + "line": 221, + "column": 23 } } }, @@ -59106,17 +71471,17 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 6346, - "end": 6350, + "value": "canvasOffset", + "start": 8467, + "end": 8479, "loc": { "start": { - "line": 191, - "column": 13 + "line": 221, + "column": 24 }, "end": { - "line": 191, - "column": 17 + "line": 221, + "column": 36 } } }, @@ -59133,16 +71498,16 @@ "binop": null, "updateContext": null }, - "start": 6350, - "end": 6351, + "start": 8479, + "end": 8480, "loc": { "start": { - "line": 191, - "column": 17 + "line": 221, + "column": 36 }, "end": { - "line": 191, - "column": 18 + "line": 221, + "column": 37 } } }, @@ -59158,24 +71523,24 @@ "postfix": false, "binop": null }, - "value": "style", - "start": 6351, - "end": 6356, + "value": "top", + "start": 8480, + "end": 8483, "loc": { "start": { - "line": 191, - "column": 18 + "line": 221, + "column": 37 }, "end": { - "line": 191, - "column": 23 + "line": 221, + "column": 40 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -59185,16 +71550,16 @@ "binop": null, "updateContext": null }, - "start": 6356, - "end": 6357, + "start": 8483, + "end": 8484, "loc": { "start": { - "line": 191, - "column": 23 + "line": 221, + "column": 40 }, "end": { - "line": 191, - "column": 24 + "line": 221, + "column": 41 } } }, @@ -59210,44 +71575,43 @@ "postfix": false, "binop": null }, - "value": "top", - "start": 6357, - "end": 6360, + "value": "canvas", + "start": 8493, + "end": 8499, "loc": { "start": { - "line": 191, - "column": 24 + "line": 222, + "column": 8 }, "end": { - "line": 191, - "column": 27 + "line": 222, + "column": 14 } } }, { "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": 6361, - "end": 6362, + "start": 8499, + "end": 8500, "loc": { "start": { - "line": 191, - "column": 28 + "line": 222, + "column": 14 }, "end": { - "line": 191, - "column": 29 + "line": 222, + "column": 15 } } }, @@ -59263,17 +71627,17 @@ "postfix": false, "binop": null }, - "value": "canvasOffset", - "start": 6363, - "end": 6375, + "value": "parentNode", + "start": 8500, + "end": 8510, "loc": { "start": { - "line": 191, - "column": 30 + "line": 222, + "column": 15 }, "end": { - "line": 191, - "column": 42 + "line": 222, + "column": 25 } } }, @@ -59290,16 +71654,16 @@ "binop": null, "updateContext": null }, - "start": 6375, - "end": 6376, + "start": 8510, + "end": 8511, "loc": { "start": { - "line": 191, - "column": 42 + "line": 222, + "column": 25 }, "end": { - "line": 191, - "column": 43 + "line": 222, + "column": 26 } } }, @@ -59315,50 +71679,102 @@ "postfix": false, "binop": null }, - "value": "top", - "start": 6376, - "end": 6379, + "value": "insertBefore", + "start": 8511, + "end": 8523, "loc": { "start": { - "line": 191, - "column": 43 + "line": 222, + "column": 26 }, "end": { - "line": 191, - "column": 46 + "line": 222, + "column": 38 } } }, { "type": { - "label": "+/-", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": 9, + "binop": null + }, + "start": 8523, + "end": 8524, + "loc": { + "start": { + "line": 222, + "column": 38 + }, + "end": { + "line": 222, + "column": 39 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, "updateContext": null }, - "value": "+", - "start": 6380, - "end": 6381, + "value": "this", + "start": 8524, + "end": 8528, "loc": { "start": { - "line": 191, - "column": 47 + "line": 222, + "column": 39 }, "end": { - "line": 191, - "column": 48 + "line": 222, + "column": 43 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8528, + "end": 8529, + "loc": { + "start": { + "line": 222, + "column": 43 + }, + "end": { + "line": 222, + "column": 44 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -59366,26 +71782,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "px", - "start": 6382, - "end": 6386, + "value": "_img", + "start": 8529, + "end": 8533, "loc": { "start": { - "line": 191, - "column": 49 + "line": 222, + "column": 44 }, "end": { - "line": 191, - "column": 53 + "line": 222, + "column": 48 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -59396,23 +71811,22 @@ "binop": null, "updateContext": null }, - "start": 6386, - "end": 6387, + "start": 8533, + "end": 8534, "loc": { "start": { - "line": 191, - "column": 53 + "line": 222, + "column": 48 }, "end": { - "line": 191, - "column": 54 + "line": 222, + "column": 49 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -59420,20 +71834,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 6396, - "end": 6400, + "value": "canvas", + "start": 8535, + "end": 8541, "loc": { "start": { - "line": 192, - "column": 8 + "line": 222, + "column": 50 }, "end": { - "line": 192, - "column": 12 + "line": 222, + "column": 56 } } }, @@ -59450,16 +71863,16 @@ "binop": null, "updateContext": null }, - "start": 6400, - "end": 6401, + "start": 8541, + "end": 8542, "loc": { "start": { - "line": 192, - "column": 12 + "line": 222, + "column": 56 }, "end": { - "line": 192, - "column": 13 + "line": 222, + "column": 57 } } }, @@ -59475,23 +71888,23 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 6401, - "end": 6405, + "value": "nextSibling", + "start": 8542, + "end": 8553, "loc": { "start": { - "line": 192, - "column": 13 + "line": 222, + "column": 57 }, "end": { - "line": 192, - "column": 17 + "line": 222, + "column": 68 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -59499,51 +71912,50 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 6405, - "end": 6406, + "start": 8553, + "end": 8554, "loc": { "start": { - "line": 192, - "column": 17 + "line": 222, + "column": 68 }, "end": { - "line": 192, - "column": 18 + "line": 222, + "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": "style", - "start": 6406, - "end": 6411, + "start": 8554, + "end": 8555, "loc": { "start": { - "line": 192, - "column": 18 + "line": 222, + "column": 69 }, "end": { - "line": 192, - "column": 23 + "line": 222, + "column": 70 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -59551,19 +71963,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 6411, - "end": 6412, + "start": 8560, + "end": 8561, "loc": { "start": { - "line": 192, - "column": 23 + "line": 223, + "column": 4 }, "end": { - "line": 192, - "column": 24 + "line": 223, + "column": 5 } } }, @@ -59579,51 +71990,74 @@ "postfix": false, "binop": null }, - "value": "width", - "start": 6412, - "end": 6417, + "value": "_cancelFade", + "start": 8567, + "end": 8578, "loc": { "start": { - "line": 192, - "column": 24 + "line": 225, + "column": 4 }, "end": { - "line": 192, - "column": 29 + "line": 225, + "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": 6418, - "end": 6419, + "start": 8578, + "end": 8579, "loc": { "start": { - "line": 192, - "column": 30 + "line": 225, + "column": 15 }, "end": { - "line": 192, - "column": 31 + "line": 225, + "column": 16 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8579, + "end": 8580, + "loc": { + "start": { + "line": 225, + "column": 16 + }, + "end": { + "line": 225, + "column": 17 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -59632,23 +72066,23 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 6420, - "end": 6426, + "start": 8581, + "end": 8582, "loc": { "start": { - "line": 192, - "column": 32 + "line": 225, + "column": 18 }, "end": { - "line": 192, - "column": 38 + "line": 225, + "column": 19 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -59659,23 +72093,24 @@ "binop": null, "updateContext": null }, - "start": 6426, - "end": 6427, + "value": "if", + "start": 8591, + "end": 8593, "loc": { "start": { - "line": 192, - "column": 38 + "line": 226, + "column": 8 }, "end": { - "line": 192, - "column": 39 + "line": 226, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -59684,23 +72119,22 @@ "postfix": false, "binop": null }, - "value": "width", - "start": 6427, - "end": 6432, + "start": 8594, + "end": 8595, "loc": { "start": { - "line": 192, - "column": 39 + "line": 226, + "column": 11 }, "end": { - "line": 192, - "column": 44 + "line": 226, + "column": 12 } } }, { "type": { - "label": "+/-", + "label": "prefix", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -59708,26 +72142,27 @@ "isAssign": false, "prefix": true, "postfix": false, - "binop": 9, + "binop": null, "updateContext": null }, - "value": "+", - "start": 6433, - "end": 6434, + "value": "!", + "start": 8595, + "end": 8596, "loc": { "start": { - "line": 192, - "column": 45 + "line": 226, + "column": 12 }, "end": { - "line": 192, - "column": 46 + "line": 226, + "column": 13 } } }, { "type": { - "label": "string", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -59738,24 +72173,24 @@ "binop": null, "updateContext": null }, - "value": "px", - "start": 6435, - "end": 6439, + "value": "this", + "start": 8596, + "end": 8600, "loc": { "start": { - "line": 192, - "column": 47 + "line": 226, + "column": 13 }, "end": { - "line": 192, - "column": 51 + "line": 226, + "column": 17 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -59765,23 +72200,22 @@ "binop": null, "updateContext": null }, - "start": 6439, - "end": 6440, + "start": 8600, + "end": 8601, "loc": { "start": { - "line": 192, - "column": 51 + "line": 226, + "column": 17 }, "end": { - "line": 192, - "column": 52 + "line": 226, + "column": 18 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -59789,26 +72223,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 6449, - "end": 6453, + "value": "_img", + "start": 8601, + "end": 8605, "loc": { "start": { - "line": 193, - "column": 8 + "line": 226, + "column": 18 }, "end": { - "line": 193, - "column": 12 + "line": 226, + "column": 22 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -59816,26 +72249,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 6453, - "end": 6454, + "start": 8605, + "end": 8606, "loc": { "start": { - "line": 193, - "column": 12 + "line": 226, + "column": 22 }, "end": { - "line": 193, - "column": 13 + "line": 226, + "column": 23 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -59844,24 +72276,24 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 6454, - "end": 6458, + "start": 8607, + "end": 8608, "loc": { "start": { - "line": 193, - "column": 13 + "line": 226, + "column": 24 }, "end": { - "line": 193, - "column": 17 + "line": 226, + "column": 25 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -59871,48 +72303,49 @@ "binop": null, "updateContext": null }, - "start": 6458, - "end": 6459, + "value": "return", + "start": 8621, + "end": 8627, "loc": { "start": { - "line": 193, - "column": 17 + "line": 227, + "column": 12 }, "end": { - "line": 193, + "line": 227, "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": "style", - "start": 6459, - "end": 6464, + "start": 8627, + "end": 8628, "loc": { "start": { - "line": 193, + "line": 227, "column": 18 }, "end": { - "line": 193, - "column": 23 + "line": 227, + "column": 19 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -59920,78 +72353,78 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 6464, - "end": 6465, + "start": 8637, + "end": 8638, "loc": { "start": { - "line": 193, - "column": 23 + "line": 228, + "column": 8 }, "end": { - "line": 193, - "column": 24 + "line": 228, + "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": "height", - "start": 6465, - "end": 6471, + "value": "if", + "start": 8647, + "end": 8649, "loc": { "start": { - "line": 193, - "column": 24 + "line": 229, + "column": 8 }, "end": { - "line": 193, - "column": 30 + "line": 229, + "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": 6472, - "end": 6473, + "start": 8650, + "end": 8651, "loc": { "start": { - "line": 193, - "column": 31 + "line": 229, + "column": 11 }, "end": { - "line": 193, - "column": 32 + "line": 229, + "column": 12 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -59999,19 +72432,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "canvas", - "start": 6474, - "end": 6480, + "value": "this", + "start": 8651, + "end": 8655, "loc": { "start": { - "line": 193, - "column": 33 + "line": 229, + "column": 12 }, "end": { - "line": 193, - "column": 39 + "line": 229, + "column": 16 } } }, @@ -60028,16 +72462,16 @@ "binop": null, "updateContext": null }, - "start": 6480, - "end": 6481, + "start": 8655, + "end": 8656, "loc": { "start": { - "line": 193, - "column": 39 + "line": 229, + "column": 16 }, "end": { - "line": 193, - "column": 40 + "line": 229, + "column": 17 } } }, @@ -60053,50 +72487,73 @@ "postfix": false, "binop": null }, - "value": "height", - "start": 6481, - "end": 6487, + "value": "_pInterval", + "start": 8656, + "end": 8666, "loc": { "start": { - "line": 193, - "column": 40 + "line": 229, + "column": 17 }, "end": { - "line": 193, - "column": 46 + "line": 229, + "column": 27 } } }, { "type": { - "label": "+/-", + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8666, + "end": 8667, + "loc": { + "start": { + "line": 229, + "column": 27 + }, + "end": { + "line": 229, + "column": 28 + } + } + }, + { + "type": { + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": 9, - "updateContext": null + "binop": null }, - "value": "+", - "start": 6488, - "end": 6489, + "start": 8668, + "end": 8669, "loc": { "start": { - "line": 193, - "column": 47 + "line": 229, + "column": 29 }, "end": { - "line": 193, - "column": 48 + "line": 229, + "column": 30 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -60104,46 +72561,44 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "px", - "start": 6490, - "end": 6494, + "value": "clearInterval", + "start": 8682, + "end": 8695, "loc": { "start": { - "line": 193, - "column": 49 + "line": 230, + "column": 12 }, "end": { - "line": 193, - "column": 53 + "line": 230, + "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": 6494, - "end": 6495, + "start": 8695, + "end": 8696, "loc": { "start": { - "line": 193, - "column": 53 + "line": 230, + "column": 25 }, "end": { - "line": 193, - "column": 54 + "line": 230, + "column": 26 } } }, @@ -60162,16 +72617,16 @@ "updateContext": null }, "value": "this", - "start": 6504, - "end": 6508, + "start": 8696, + "end": 8700, "loc": { "start": { - "line": 194, - "column": 8 + "line": 230, + "column": 26 }, "end": { - "line": 194, - "column": 12 + "line": 230, + "column": 30 } } }, @@ -60188,16 +72643,16 @@ "binop": null, "updateContext": null }, - "start": 6508, - "end": 6509, + "start": 8700, + "end": 8701, "loc": { "start": { - "line": 194, - "column": 12 + "line": 230, + "column": 30 }, "end": { - "line": 194, - "column": 13 + "line": 230, + "column": 31 } } }, @@ -60213,23 +72668,23 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 6509, - "end": 6513, + "value": "_pInterval", + "start": 8701, + "end": 8711, "loc": { "start": { - "line": 194, - "column": 13 + "line": 230, + "column": 31 }, "end": { - "line": 194, - "column": 17 + "line": 230, + "column": 41 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -60237,25 +72692,51 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "start": 8711, + "end": 8712, + "loc": { + "start": { + "line": 230, + "column": 41 + }, + "end": { + "line": 230, + "column": 42 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "start": 6513, - "end": 6514, + "start": 8712, + "end": 8713, "loc": { "start": { - "line": 194, - "column": 17 + "line": 230, + "column": 42 }, "end": { - "line": 194, - "column": 18 + "line": 230, + "column": 43 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -60263,19 +72744,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "style", - "start": 6514, - "end": 6519, + "value": "this", + "start": 8726, + "end": 8730, "loc": { "start": { - "line": 194, - "column": 18 + "line": 231, + "column": 12 }, "end": { - "line": 194, - "column": 23 + "line": 231, + "column": 16 } } }, @@ -60292,16 +72774,16 @@ "binop": null, "updateContext": null }, - "start": 6519, - "end": 6520, + "start": 8730, + "end": 8731, "loc": { "start": { - "line": 194, - "column": 23 + "line": 231, + "column": 16 }, "end": { - "line": 194, - "column": 24 + "line": 231, + "column": 17 } } }, @@ -60317,17 +72799,17 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 6520, - "end": 6527, + "value": "_pInterval", + "start": 8731, + "end": 8741, "loc": { "start": { - "line": 194, - "column": 24 + "line": 231, + "column": 17 }, "end": { - "line": 194, - "column": 31 + "line": 231, + "column": 27 } } }, @@ -60345,22 +72827,23 @@ "updateContext": null }, "value": "=", - "start": 6528, - "end": 6529, + "start": 8742, + "end": 8743, "loc": { "start": { - "line": 194, - "column": 32 + "line": 231, + "column": 28 }, "end": { - "line": 194, - "column": 33 + "line": 231, + "column": 29 } } }, { "type": { - "label": "num", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -60371,17 +72854,17 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 6530, - "end": 6531, + "value": "null", + "start": 8744, + "end": 8748, "loc": { "start": { - "line": 194, - "column": 34 + "line": 231, + "column": 30 }, "end": { - "line": 194, - "column": 35 + "line": 231, + "column": 34 } } }, @@ -60398,50 +72881,48 @@ "binop": null, "updateContext": null }, - "start": 6531, - "end": 6532, + "start": 8748, + "end": 8749, "loc": { "start": { - "line": 194, - "column": 35 + "line": 231, + "column": 34 }, "end": { - "line": 194, - "column": 36 + "line": 231, + "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": 6541, - "end": 6545, + "start": 8758, + "end": 8759, "loc": { "start": { - "line": 195, + "line": 232, "column": 8 }, "end": { - "line": 195, - "column": 12 + "line": 232, + "column": 9 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -60452,23 +72933,24 @@ "binop": null, "updateContext": null }, - "start": 6545, - "end": 6546, + "value": "if", + "start": 8768, + "end": 8770, "loc": { "start": { - "line": 195, - "column": 12 + "line": 233, + "column": 8 }, "end": { - "line": 195, - "column": 13 + "line": 233, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -60477,25 +72959,25 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 6546, - "end": 6550, + "start": 8771, + "end": 8772, "loc": { "start": { - "line": 195, - "column": 13 + "line": 233, + "column": 11 }, "end": { - "line": 195, - "column": 17 + "line": 233, + "column": 12 } } }, { "type": { - "label": ".", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -60504,77 +72986,77 @@ "binop": null, "updateContext": null }, - "start": 6550, - "end": 6551, + "value": "this", + "start": 8772, + "end": 8776, "loc": { "start": { - "line": 195, - "column": 17 + "line": 233, + "column": 12 }, "end": { - "line": 195, - "column": 18 + "line": 233, + "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": "width", - "start": 6551, - "end": 6556, + "start": 8776, + "end": 8777, "loc": { "start": { - "line": 195, - "column": 18 + "line": 233, + "column": 16 }, "end": { - "line": 195, - "column": 23 + "line": 233, + "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": 6557, - "end": 6558, + "value": "_pInterval2", + "start": 8777, + "end": 8788, "loc": { "start": { - "line": 195, - "column": 24 + "line": 233, + "column": 17 }, "end": { - "line": 195, - "column": 25 + "line": 233, + "column": 28 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -60582,43 +73064,41 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 6559, - "end": 6565, + "start": 8788, + "end": 8789, "loc": { "start": { - "line": 195, - "column": 26 + "line": 233, + "column": 28 }, "end": { - "line": 195, - "column": 32 + "line": 233, + "column": 29 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 6565, - "end": 6566, + "start": 8790, + "end": 8791, "loc": { "start": { - "line": 195, - "column": 32 + "line": 233, + "column": 30 }, "end": { - "line": 195, - "column": 33 + "line": 233, + "column": 31 } } }, @@ -60634,43 +73114,42 @@ "postfix": false, "binop": null }, - "value": "width", - "start": 6566, - "end": 6571, + "value": "clearInterval", + "start": 8804, + "end": 8817, "loc": { "start": { - "line": 195, - "column": 33 + "line": 234, + "column": 12 }, "end": { - "line": 195, - "column": 38 + "line": 234, + "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": 6571, - "end": 6572, + "start": 8817, + "end": 8818, "loc": { "start": { - "line": 195, - "column": 38 + "line": 234, + "column": 25 }, "end": { - "line": 195, - "column": 39 + "line": 234, + "column": 26 } } }, @@ -60689,16 +73168,16 @@ "updateContext": null }, "value": "this", - "start": 6581, - "end": 6585, + "start": 8818, + "end": 8822, "loc": { "start": { - "line": 196, - "column": 8 + "line": 234, + "column": 26 }, "end": { - "line": 196, - "column": 12 + "line": 234, + "column": 30 } } }, @@ -60715,16 +73194,16 @@ "binop": null, "updateContext": null }, - "start": 6585, - "end": 6586, + "start": 8822, + "end": 8823, "loc": { "start": { - "line": 196, - "column": 12 + "line": 234, + "column": 30 }, "end": { - "line": 196, - "column": 13 + "line": 234, + "column": 31 } } }, @@ -60740,23 +73219,23 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 6586, - "end": 6590, + "value": "_pInterval2", + "start": 8823, + "end": 8834, "loc": { "start": { - "line": 196, - "column": 13 + "line": 234, + "column": 31 }, "end": { - "line": 196, - "column": 17 + "line": 234, + "column": 42 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -60764,25 +73243,51 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "start": 8834, + "end": 8835, + "loc": { + "start": { + "line": 234, + "column": 42 + }, + "end": { + "line": 234, + "column": 43 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "start": 6590, - "end": 6591, + "start": 8835, + "end": 8836, "loc": { "start": { - "line": 196, - "column": 17 + "line": 234, + "column": 43 }, "end": { - "line": 196, - "column": 18 + "line": 234, + "column": 44 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -60790,46 +73295,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "height", - "start": 6591, - "end": 6597, + "value": "this", + "start": 8849, + "end": 8853, "loc": { "start": { - "line": 196, - "column": 18 + "line": 235, + "column": 12 }, "end": { - "line": 196, - "column": 24 + "line": 235, + "column": 16 } } }, { "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": 6598, - "end": 6599, + "start": 8853, + "end": 8854, "loc": { "start": { - "line": 196, - "column": 25 + "line": 235, + "column": 16 }, "end": { - "line": 196, - "column": 26 + "line": 235, + "column": 17 } } }, @@ -60845,49 +73350,51 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 6600, - "end": 6606, + "value": "_pInterval2", + "start": 8854, + "end": 8865, "loc": { "start": { - "line": 196, - "column": 27 + "line": 235, + "column": 17 }, "end": { - "line": 196, - "column": 33 + "line": 235, + "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, "updateContext": null }, - "start": 6606, - "end": 6607, + "value": "=", + "start": 8866, + "end": 8867, "loc": { "start": { - "line": 196, - "column": 33 + "line": 235, + "column": 29 }, "end": { - "line": 196, - "column": 34 + "line": 235, + "column": 30 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -60895,19 +73402,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "height", - "start": 6607, - "end": 6613, + "value": "null", + "start": 8868, + "end": 8872, "loc": { "start": { - "line": 196, - "column": 34 + "line": 235, + "column": 31 }, "end": { - "line": 196, - "column": 40 + "line": 235, + "column": 35 } } }, @@ -60924,16 +73432,41 @@ "binop": null, "updateContext": null }, - "start": 6613, - "end": 6614, + "start": 8872, + "end": 8873, "loc": { "start": { - "line": 196, - "column": 40 + "line": 235, + "column": 35 }, "end": { - "line": 196, - "column": 41 + "line": 235, + "column": 36 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8882, + "end": 8883, + "loc": { + "start": { + "line": 236, + "column": 8 + }, + "end": { + "line": 236, + "column": 9 } } }, @@ -60952,15 +73485,15 @@ "updateContext": null }, "value": "this", - "start": 6623, - "end": 6627, + "start": 8892, + "end": 8896, "loc": { "start": { - "line": 197, + "line": 237, "column": 8 }, "end": { - "line": 197, + "line": 237, "column": 12 } } @@ -60978,15 +73511,15 @@ "binop": null, "updateContext": null }, - "start": 6627, - "end": 6628, + "start": 8896, + "end": 8897, "loc": { "start": { - "line": 197, + "line": 237, "column": 12 }, "end": { - "line": 197, + "line": 237, "column": 13 } } @@ -61004,15 +73537,15 @@ "binop": null }, "value": "_img", - "start": 6628, - "end": 6632, + "start": 8897, + "end": 8901, "loc": { "start": { - "line": 197, + "line": 237, "column": 13 }, "end": { - "line": 197, + "line": 237, "column": 17 } } @@ -61030,15 +73563,15 @@ "binop": null, "updateContext": null }, - "start": 6632, - "end": 6633, + "start": 8901, + "end": 8902, "loc": { "start": { - "line": 197, + "line": 237, "column": 17 }, "end": { - "line": 197, + "line": 237, "column": 18 } } @@ -61055,43 +73588,42 @@ "postfix": false, "binop": null }, - "value": "left", - "start": 6633, - "end": 6637, + "value": "style", + "start": 8902, + "end": 8907, "loc": { "start": { - "line": 197, + "line": 237, "column": 18 }, "end": { - "line": 197, - "column": 22 + "line": 237, + "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": 6638, - "end": 6639, + "start": 8907, + "end": 8908, "loc": { "start": { - "line": 197, + "line": 237, "column": 23 }, "end": { - "line": 197, + "line": 237, "column": 24 } } @@ -61108,49 +73640,50 @@ "postfix": false, "binop": null }, - "value": "canvasOffset", - "start": 6640, - "end": 6652, + "value": "opacity", + "start": 8908, + "end": 8915, "loc": { "start": { - "line": 197, - "column": 25 + "line": 237, + "column": 24 }, "end": { - "line": 197, - "column": 37 + "line": 237, + "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": 6652, - "end": 6653, + "value": "=", + "start": 8916, + "end": 8917, "loc": { "start": { - "line": 197, - "column": 37 + "line": 237, + "column": 32 }, "end": { - "line": 197, - "column": 38 + "line": 237, + "column": 33 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -61158,19 +73691,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "left", - "start": 6653, - "end": 6657, + "value": 0, + "start": 8918, + "end": 8919, "loc": { "start": { - "line": 197, - "column": 38 + "line": 237, + "column": 34 }, "end": { - "line": 197, - "column": 42 + "line": 237, + "column": 35 } } }, @@ -61187,16 +73721,16 @@ "binop": null, "updateContext": null }, - "start": 6657, - "end": 6658, + "start": 8919, + "end": 8920, "loc": { "start": { - "line": 197, - "column": 42 + "line": 237, + "column": 35 }, "end": { - "line": 197, - "column": 43 + "line": 237, + "column": 36 } } }, @@ -61215,16 +73749,68 @@ "updateContext": null }, "value": "this", - "start": 6667, - "end": 6671, + "start": 8929, + "end": 8933, "loc": { "start": { - "line": 198, + "line": 238, "column": 8 }, "end": { - "line": 198, + "line": 238, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8933, + "end": 8934, + "loc": { + "start": { + "line": 238, "column": 12 + }, + "end": { + "line": 238, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_img", + "start": 8934, + "end": 8938, + "loc": { + "start": { + "line": 238, + "column": 13 + }, + "end": { + "line": 238, + "column": 17 } } }, @@ -61241,16 +73827,16 @@ "binop": null, "updateContext": null }, - "start": 6671, - "end": 6672, + "start": 8938, + "end": 8939, "loc": { "start": { - "line": 198, - "column": 12 + "line": 238, + "column": 17 }, "end": { - "line": 198, - "column": 13 + "line": 238, + "column": 18 } } }, @@ -61266,17 +73852,17 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 6672, - "end": 6676, + "value": "style", + "start": 8939, + "end": 8944, "loc": { "start": { - "line": 198, - "column": 13 + "line": 238, + "column": 18 }, "end": { - "line": 198, - "column": 17 + "line": 238, + "column": 23 } } }, @@ -61293,16 +73879,16 @@ "binop": null, "updateContext": null }, - "start": 6676, - "end": 6677, + "start": 8944, + "end": 8945, "loc": { "start": { - "line": 198, - "column": 17 + "line": 238, + "column": 23 }, "end": { - "line": 198, - "column": 18 + "line": 238, + "column": 24 } } }, @@ -61318,17 +73904,17 @@ "postfix": false, "binop": null }, - "value": "top", - "start": 6677, - "end": 6680, + "value": "visibility", + "start": 8945, + "end": 8955, "loc": { "start": { - "line": 198, - "column": 18 + "line": 238, + "column": 24 }, "end": { - "line": 198, - "column": 21 + "line": 238, + "column": 34 } } }, @@ -61346,22 +73932,22 @@ "updateContext": null }, "value": "=", - "start": 6681, - "end": 6682, + "start": 8956, + "end": 8957, "loc": { "start": { - "line": 198, - "column": 22 + "line": 238, + "column": 35 }, "end": { - "line": 198, - "column": 23 + "line": 238, + "column": 36 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -61369,26 +73955,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "canvasOffset", - "start": 6683, - "end": 6695, + "value": "hidden", + "start": 8958, + "end": 8966, "loc": { "start": { - "line": 198, - "column": 24 + "line": 238, + "column": 37 }, "end": { - "line": 198, - "column": 36 + "line": 238, + "column": 45 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -61398,24 +73985,24 @@ "binop": null, "updateContext": null }, - "start": 6695, - "end": 6696, + "start": 8966, + "end": 8967, "loc": { "start": { - "line": 198, - "column": 36 + "line": 238, + "column": 45 }, "end": { - "line": 198, - "column": 37 + "line": 238, + "column": 46 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -61423,43 +74010,32 @@ "postfix": false, "binop": null }, - "value": "top", - "start": 6696, - "end": 6699, + "start": 8972, + "end": 8973, "loc": { "start": { - "line": 198, - "column": 37 + "line": 239, + "column": 4 }, "end": { - "line": 198, - "column": 40 + "line": 239, + "column": 5 } } }, { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 6699, - "end": 6700, + "type": "CommentBlock", + "value": "*\n * Sets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n ", + "start": 8979, + "end": 9144, "loc": { "start": { - "line": 198, - "column": 40 + "line": 241, + "column": 4 }, "end": { - "line": 198, - "column": 41 + "line": 245, + "column": 7 } } }, @@ -61475,50 +74051,50 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 6709, - "end": 6715, + "value": "set", + "start": 9149, + "end": 9152, "loc": { "start": { - "line": 199, - "column": 8 + "line": 246, + "column": 4 }, "end": { - "line": 199, - "column": 14 + "line": 246, + "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": 6715, - "end": 6716, + "value": "pbrEnabled", + "start": 9153, + "end": 9163, "loc": { "start": { - "line": 199, - "column": 14 + "line": 246, + "column": 8 }, "end": { - "line": 199, - "column": 15 + "line": 246, + "column": 18 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -61527,51 +74103,50 @@ "postfix": false, "binop": null }, - "value": "parentNode", - "start": 6716, - "end": 6726, + "start": 9163, + "end": 9164, "loc": { "start": { - "line": 199, - "column": 15 + "line": 246, + "column": 18 }, "end": { - "line": 199, - "column": 25 + "line": 246, + "column": 19 } } }, { "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": 6726, - "end": 6727, + "value": "pbrEnabled", + "start": 9164, + "end": 9174, "loc": { "start": { - "line": 199, - "column": 25 + "line": 246, + "column": 19 }, "end": { - "line": 199, - "column": 26 + "line": 246, + "column": 29 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -61579,23 +74154,22 @@ "postfix": false, "binop": null }, - "value": "insertBefore", - "start": 6727, - "end": 6739, + "start": 9174, + "end": 9175, "loc": { "start": { - "line": 199, - "column": 26 + "line": 246, + "column": 29 }, "end": { - "line": 199, - "column": 38 + "line": 246, + "column": 30 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -61605,16 +74179,16 @@ "postfix": false, "binop": null }, - "start": 6739, - "end": 6740, + "start": 9176, + "end": 9177, "loc": { "start": { - "line": 199, - "column": 38 + "line": 246, + "column": 31 }, "end": { - "line": 199, - "column": 39 + "line": 246, + "column": 32 } } }, @@ -61633,16 +74207,16 @@ "updateContext": null }, "value": "this", - "start": 6740, - "end": 6744, + "start": 9186, + "end": 9190, "loc": { "start": { - "line": 199, - "column": 39 + "line": 247, + "column": 8 }, "end": { - "line": 199, - "column": 43 + "line": 247, + "column": 12 } } }, @@ -61659,16 +74233,16 @@ "binop": null, "updateContext": null }, - "start": 6744, - "end": 6745, + "start": 9190, + "end": 9191, "loc": { "start": { - "line": 199, - "column": 43 + "line": 247, + "column": 12 }, "end": { - "line": 199, - "column": 44 + "line": 247, + "column": 13 } } }, @@ -61684,43 +74258,44 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 6745, - "end": 6749, + "value": "_pbrEnabled", + "start": 9191, + "end": 9202, "loc": { "start": { - "line": 199, - "column": 44 + "line": 247, + "column": 13 }, "end": { - "line": 199, - "column": 48 + "line": 247, + "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": 6749, - "end": 6750, + "value": "=", + "start": 9203, + "end": 9204, "loc": { "start": { - "line": 199, - "column": 48 + "line": 247, + "column": 25 }, "end": { - "line": 199, - "column": 49 + "line": 247, + "column": 26 } } }, @@ -61736,24 +74311,24 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 6751, - "end": 6757, + "value": "pbrEnabled", + "start": 9205, + "end": 9215, "loc": { "start": { - "line": 199, - "column": 50 + "line": 247, + "column": 27 }, "end": { - "line": 199, - "column": 56 + "line": 247, + "column": 37 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -61763,48 +74338,22 @@ "binop": null, "updateContext": null }, - "start": 6757, - "end": 6758, - "loc": { - "start": { - "line": 199, - "column": 56 - }, - "end": { - "line": 199, - "column": 57 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "nextSibling", - "start": 6758, - "end": 6769, + "start": 9215, + "end": 9216, "loc": { "start": { - "line": 199, - "column": 57 + "line": 247, + "column": 37 }, "end": { - "line": 199, - "column": 68 + "line": 247, + "column": 38 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -61814,50 +74363,40 @@ "postfix": false, "binop": null }, - "start": 6769, - "end": 6770, + "start": 9221, + "end": 9222, "loc": { "start": { - "line": 199, - "column": 68 + "line": 248, + "column": 4 }, "end": { - "line": 199, - "column": 69 + "line": 248, + "column": 5 } } }, { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 6770, - "end": 6771, + "type": "CommentBlock", + "value": "*\n * Gets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n ", + "start": 9228, + "end": 9393, "loc": { "start": { - "line": 199, - "column": 69 + "line": 250, + "column": 4 }, "end": { - "line": 199, - "column": 70 + "line": 254, + "column": 7 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -61865,16 +74404,17 @@ "postfix": false, "binop": null }, - "start": 6776, - "end": 6777, + "value": "get", + "start": 9398, + "end": 9401, "loc": { "start": { - "line": 200, + "line": 255, "column": 4 }, "end": { - "line": 200, - "column": 5 + "line": 255, + "column": 7 } } }, @@ -61890,17 +74430,17 @@ "postfix": false, "binop": null }, - "value": "_cancelFade", - "start": 6783, - "end": 6794, + "value": "pbrEnabled", + "start": 9402, + "end": 9412, "loc": { "start": { - "line": 202, - "column": 4 + "line": 255, + "column": 8 }, "end": { - "line": 202, - "column": 15 + "line": 255, + "column": 18 } } }, @@ -61916,16 +74456,16 @@ "postfix": false, "binop": null }, - "start": 6794, - "end": 6795, + "start": 9412, + "end": 9413, "loc": { "start": { - "line": 202, - "column": 15 + "line": 255, + "column": 18 }, "end": { - "line": 202, - "column": 16 + "line": 255, + "column": 19 } } }, @@ -61941,16 +74481,16 @@ "postfix": false, "binop": null }, - "start": 6795, - "end": 6796, + "start": 9413, + "end": 9414, "loc": { "start": { - "line": 202, - "column": 16 + "line": 255, + "column": 19 }, "end": { - "line": 202, - "column": 17 + "line": 255, + "column": 20 } } }, @@ -61966,24 +74506,24 @@ "postfix": false, "binop": null }, - "start": 6797, - "end": 6798, + "start": 9415, + "end": 9416, "loc": { "start": { - "line": 202, - "column": 18 + "line": 255, + "column": 21 }, "end": { - "line": 202, - "column": 19 + "line": 255, + "column": 22 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -61993,76 +74533,77 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 6807, - "end": 6809, + "value": "return", + "start": 9425, + "end": 9431, "loc": { "start": { - "line": 203, + "line": 256, "column": 8 }, "end": { - "line": 203, - "column": 10 + "line": 256, + "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": 6810, - "end": 6811, + "value": "this", + "start": 9432, + "end": 9436, "loc": { "start": { - "line": 203, - "column": 11 + "line": 256, + "column": 15 }, "end": { - "line": 203, - "column": 12 + "line": 256, + "column": 19 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 6811, - "end": 6812, + "start": 9436, + "end": 9437, "loc": { "start": { - "line": 203, - "column": 12 + "line": 256, + "column": 19 }, "end": { - "line": 203, - "column": 13 + "line": 256, + "column": 20 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -62070,26 +74611,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 6812, - "end": 6816, + "value": "_pbrEnabled", + "start": 9437, + "end": 9448, "loc": { "start": { - "line": 203, - "column": 13 + "line": 256, + "column": 20 }, "end": { - "line": 203, - "column": 17 + "line": 256, + "column": 31 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -62097,19 +74637,34 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 6816, - "end": 6817, + "start": 9453, + "end": 9454, "loc": { "start": { - "line": 203, - "column": 17 + "line": 257, + "column": 4 }, "end": { - "line": 203, - "column": 18 + "line": 257, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Sets whether to enable scalable ambient occlusion (SAO) when the camera stops moving.\n *\n * @return {Boolean} Whether SAO will be enabled.\n ", + "start": 9460, + "end": 9625, + "loc": { + "start": { + "line": 259, + "column": 4 + }, + "end": { + "line": 263, + "column": 7 } } }, @@ -62125,25 +74680,25 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 6817, - "end": 6821, + "value": "set", + "start": 9630, + "end": 9633, "loc": { "start": { - "line": 203, - "column": 18 + "line": 264, + "column": 4 }, "end": { - "line": 203, - "column": 22 + "line": 264, + "column": 7 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -62151,22 +74706,23 @@ "postfix": false, "binop": null }, - "start": 6821, - "end": 6822, + "value": "saoEnabled", + "start": 9634, + "end": 9644, "loc": { "start": { - "line": 203, - "column": 22 + "line": 264, + "column": 8 }, "end": { - "line": 203, - "column": 23 + "line": 264, + "column": 18 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -62176,78 +74732,75 @@ "postfix": false, "binop": null }, - "start": 6823, - "end": 6824, + "start": 9644, + "end": 9645, "loc": { "start": { - "line": 203, - "column": 24 + "line": 264, + "column": 18 }, "end": { - "line": 203, - "column": 25 + "line": 264, + "column": 19 } } }, { "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": 6837, - "end": 6843, + "value": "saoEnabled", + "start": 9645, + "end": 9655, "loc": { "start": { - "line": 204, - "column": 12 + "line": 264, + "column": 19 }, "end": { - "line": 204, - "column": 18 + "line": 264, + "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": 6843, - "end": 6844, + "start": 9655, + "end": 9656, "loc": { "start": { - "line": 204, - "column": 18 + "line": 264, + "column": 29 }, "end": { - "line": 204, - "column": 19 + "line": 264, + "column": 30 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -62255,25 +74808,25 @@ "postfix": false, "binop": null }, - "start": 6853, - "end": 6854, + "start": 9657, + "end": 9658, "loc": { "start": { - "line": 205, - "column": 8 + "line": 264, + "column": 31 }, "end": { - "line": 205, - "column": 9 + "line": 264, + "column": 32 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "this", + "keyword": "this", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -62282,49 +74835,49 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 6863, - "end": 6865, + "value": "this", + "start": 9667, + "end": 9671, "loc": { "start": { - "line": 206, + "line": 265, "column": 8 }, "end": { - "line": 206, - "column": 10 + "line": 265, + "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": 6866, - "end": 6867, + "start": 9671, + "end": 9672, "loc": { "start": { - "line": 206, - "column": 11 + "line": 265, + "column": 12 }, "end": { - "line": 206, - "column": 12 + "line": 265, + "column": 13 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -62332,46 +74885,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 6867, - "end": 6871, + "value": "_saoEnabled", + "start": 9672, + "end": 9683, "loc": { "start": { - "line": 206, - "column": 12 + "line": 265, + "column": 13 }, "end": { - "line": 206, - "column": 16 + "line": 265, + "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": 6871, - "end": 6872, + "value": "=", + "start": 9684, + "end": 9685, "loc": { "start": { - "line": 206, - "column": 16 + "line": 265, + "column": 25 }, "end": { - "line": 206, - "column": 17 + "line": 265, + "column": 26 } } }, @@ -62387,50 +74940,51 @@ "postfix": false, "binop": null }, - "value": "_pInterval", - "start": 6872, - "end": 6882, + "value": "saoEnabled", + "start": 9686, + "end": 9696, "loc": { "start": { - "line": 206, - "column": 17 + "line": 265, + "column": 27 }, "end": { - "line": 206, - "column": 27 + "line": 265, + "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": 6882, - "end": 6883, + "start": 9696, + "end": 9697, "loc": { "start": { - "line": 206, - "column": 27 + "line": 265, + "column": 37 }, "end": { - "line": 206, - "column": 28 + "line": 265, + "column": 38 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -62438,49 +74992,39 @@ "postfix": false, "binop": null }, - "start": 6884, - "end": 6885, + "start": 9702, + "end": 9703, "loc": { "start": { - "line": 206, - "column": 29 + "line": 266, + "column": 4 }, "end": { - "line": 206, - "column": 30 + "line": 266, + "column": 5 } } }, { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "clearInterval", - "start": 6898, - "end": 6911, + "type": "CommentBlock", + "value": "*\n * Gets whether the FastNavPlugin enables SAO when switching to quality rendering.\n *\n * @return {Boolean} Whether SAO will be enabled.\n ", + "start": 9709, + "end": 9868, "loc": { "start": { - "line": 207, - "column": 12 + "line": 268, + "column": 4 }, "end": { - "line": 207, - "column": 25 + "line": 272, + "column": 7 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -62489,23 +75033,23 @@ "postfix": false, "binop": null }, - "start": 6911, - "end": 6912, + "value": "get", + "start": 9873, + "end": 9876, "loc": { "start": { - "line": 207, - "column": 25 + "line": 273, + "column": 4 }, "end": { - "line": 207, - "column": 26 + "line": 273, + "column": 7 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -62513,54 +75057,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 6912, - "end": 6916, + "value": "saoEnabled", + "start": 9877, + "end": 9887, "loc": { "start": { - "line": 207, - "column": 26 + "line": 273, + "column": 8 }, "end": { - "line": 207, - "column": 30 + "line": 273, + "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": 6916, - "end": 6917, + "start": 9887, + "end": 9888, "loc": { "start": { - "line": 207, - "column": 30 + "line": 273, + "column": 18 }, "end": { - "line": 207, - "column": 31 + "line": 273, + "column": 19 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -62568,25 +75110,24 @@ "postfix": false, "binop": null }, - "value": "_pInterval", - "start": 6917, - "end": 6927, + "start": 9888, + "end": 9889, "loc": { "start": { - "line": 207, - "column": 31 + "line": 273, + "column": 19 }, "end": { - "line": 207, - "column": 41 + "line": 273, + "column": 20 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -62594,22 +75135,23 @@ "postfix": false, "binop": null }, - "start": 6927, - "end": 6928, + "start": 9890, + "end": 9891, "loc": { "start": { - "line": 207, - "column": 41 + "line": 273, + "column": 21 }, "end": { - "line": 207, - "column": 42 + "line": 273, + "column": 22 } } }, { "type": { - "label": ";", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -62620,16 +75162,17 @@ "binop": null, "updateContext": null }, - "start": 6928, - "end": 6929, + "value": "return", + "start": 9900, + "end": 9906, "loc": { "start": { - "line": 207, - "column": 42 + "line": 274, + "column": 8 }, "end": { - "line": 207, - "column": 43 + "line": 274, + "column": 14 } } }, @@ -62648,16 +75191,16 @@ "updateContext": null }, "value": "this", - "start": 6942, - "end": 6946, + "start": 9907, + "end": 9911, "loc": { "start": { - "line": 208, - "column": 12 + "line": 274, + "column": 15 }, "end": { - "line": 208, - "column": 16 + "line": 274, + "column": 19 } } }, @@ -62674,16 +75217,16 @@ "binop": null, "updateContext": null }, - "start": 6946, - "end": 6947, + "start": 9911, + "end": 9912, "loc": { "start": { - "line": 208, - "column": 16 + "line": 274, + "column": 19 }, "end": { - "line": 208, - "column": 17 + "line": 274, + "column": 20 } } }, @@ -62699,106 +75242,92 @@ "postfix": false, "binop": null }, - "value": "_pInterval", - "start": 6947, - "end": 6957, + "value": "_saoEnabled", + "start": 9912, + "end": 9923, "loc": { "start": { - "line": 208, - "column": 17 + "line": 274, + "column": 20 }, "end": { - "line": 208, - "column": 27 + "line": 274, + "column": 31 } } }, { "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": 6958, - "end": 6959, + "start": 9928, + "end": 9929, "loc": { "start": { - "line": 208, - "column": 28 + "line": 275, + "column": 4 }, "end": { - "line": 208, - "column": 29 + "line": 275, + "column": 5 } } }, { - "type": { - "label": "null", - "keyword": "null", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "null", - "start": 6960, - "end": 6964, + "type": "CommentBlock", + "value": "*\n * Sets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n ", + "start": 9935, + "end": 10093, "loc": { "start": { - "line": 208, - "column": 30 + "line": 277, + "column": 4 }, "end": { - "line": 208, - "column": 34 + "line": 281, + "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": 6964, - "end": 6965, + "value": "set", + "start": 10098, + "end": 10101, "loc": { "start": { - "line": 208, - "column": 34 + "line": 282, + "column": 4 }, "end": { - "line": 208, - "column": 35 + "line": 282, + "column": 7 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -62806,78 +75335,76 @@ "postfix": false, "binop": null }, - "start": 6974, - "end": 6975, + "value": "edgesEnabled", + "start": 10102, + "end": 10114, "loc": { "start": { - "line": 209, + "line": 282, "column": 8 }, "end": { - "line": 209, - "column": 9 + "line": 282, + "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": 6984, - "end": 6988, + "start": 10114, + "end": 10115, "loc": { "start": { - "line": 210, - "column": 8 + "line": 282, + "column": 20 }, "end": { - "line": 210, - "column": 12 + "line": 282, + "column": 21 } } }, { "type": { - "label": ".", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 6988, - "end": 6989, + "value": "edgesEnabled", + "start": 10115, + "end": 10127, "loc": { "start": { - "line": 210, - "column": 12 + "line": 282, + "column": 21 }, "end": { - "line": 210, - "column": 13 + "line": 282, + "column": 33 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -62885,49 +75412,48 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 6989, - "end": 6993, + "start": 10127, + "end": 10128, "loc": { "start": { - "line": 210, - "column": 13 + "line": 282, + "column": 33 }, "end": { - "line": 210, - "column": 17 + "line": 282, + "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": 6993, - "end": 6994, + "start": 10129, + "end": 10130, "loc": { "start": { - "line": 210, - "column": 17 + "line": 282, + "column": 35 }, "end": { - "line": 210, - "column": 18 + "line": 282, + "column": 36 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -62935,19 +75461,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "style", - "start": 6994, - "end": 6999, + "value": "this", + "start": 10139, + "end": 10143, "loc": { "start": { - "line": 210, - "column": 18 + "line": 283, + "column": 8 }, "end": { - "line": 210, - "column": 23 + "line": 283, + "column": 12 } } }, @@ -62964,16 +75491,16 @@ "binop": null, "updateContext": null }, - "start": 6999, - "end": 7000, + "start": 10143, + "end": 10144, "loc": { "start": { - "line": 210, - "column": 23 + "line": 283, + "column": 12 }, "end": { - "line": 210, - "column": 24 + "line": 283, + "column": 13 } } }, @@ -62989,17 +75516,17 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 7000, - "end": 7007, + "value": "_edgesEnabled", + "start": 10144, + "end": 10157, "loc": { "start": { - "line": 210, - "column": 24 + "line": 283, + "column": 13 }, "end": { - "line": 210, - "column": 31 + "line": 283, + "column": 26 } } }, @@ -63017,22 +75544,22 @@ "updateContext": null }, "value": "=", - "start": 7008, - "end": 7009, + "start": 10158, + "end": 10159, "loc": { "start": { - "line": 210, - "column": 32 + "line": 283, + "column": 27 }, "end": { - "line": 210, - "column": 33 + "line": 283, + "column": 28 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -63040,20 +75567,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 7010, - "end": 7011, + "value": "edgesEnabled", + "start": 10160, + "end": 10172, "loc": { "start": { - "line": 210, - "column": 34 + "line": 283, + "column": 29 }, "end": { - "line": 210, - "column": 35 + "line": 283, + "column": 41 } } }, @@ -63070,70 +75596,57 @@ "binop": null, "updateContext": null }, - "start": 7011, - "end": 7012, + "start": 10172, + "end": 10173, "loc": { "start": { - "line": 210, - "column": 35 + "line": 283, + "column": 41 }, "end": { - "line": 210, - "column": 36 + "line": 283, + "column": 42 } } }, { "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": 7021, - "end": 7025, + "start": 10178, + "end": 10179, "loc": { "start": { - "line": 211, - "column": 8 + "line": 284, + "column": 4 }, "end": { - "line": 211, - "column": 12 + "line": 284, + "column": 5 } } }, { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 7025, - "end": 7026, + "type": "CommentBlock", + "value": "*\n * Gets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n ", + "start": 10185, + "end": 10343, "loc": { "start": { - "line": 211, - "column": 12 + "line": 286, + "column": 4 }, "end": { - "line": 211, - "column": 13 + "line": 290, + "column": 7 } } }, @@ -63149,50 +75662,50 @@ "postfix": false, "binop": null }, - "value": "_img", - "start": 7026, - "end": 7030, + "value": "get", + "start": 10348, + "end": 10351, "loc": { "start": { - "line": 211, - "column": 13 + "line": 291, + "column": 4 }, "end": { - "line": 211, - "column": 17 + "line": 291, + "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": 7030, - "end": 7031, + "value": "edgesEnabled", + "start": 10352, + "end": 10364, "loc": { "start": { - "line": 211, - "column": 17 + "line": 291, + "column": 8 }, "end": { - "line": 211, - "column": 18 + "line": 291, + "column": 20 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -63201,23 +75714,22 @@ "postfix": false, "binop": null }, - "value": "style", - "start": 7031, - "end": 7036, + "start": 10364, + "end": 10365, "loc": { "start": { - "line": 211, - "column": 18 + "line": 291, + "column": 20 }, "end": { - "line": 211, - "column": 23 + "line": 291, + "column": 21 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -63225,26 +75737,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 7036, - "end": 7037, + "start": 10365, + "end": 10366, "loc": { "start": { - "line": 211, - "column": 23 + "line": 291, + "column": 21 }, "end": { - "line": 211, - "column": 24 + "line": 291, + "column": 22 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -63253,50 +75764,51 @@ "postfix": false, "binop": null }, - "value": "visibility", - "start": 7037, - "end": 7047, + "start": 10367, + "end": 10368, "loc": { "start": { - "line": 211, - "column": 24 + "line": 291, + "column": 23 }, "end": { - "line": 211, - "column": 34 + "line": 291, + "column": 24 } } }, { "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": 7048, - "end": 7049, + "value": "return", + "start": 10377, + "end": 10383, "loc": { "start": { - "line": 211, - "column": 35 + "line": 292, + "column": 8 }, "end": { - "line": 211, - "column": 36 + "line": 292, + "column": 14 } } }, { "type": { - "label": "string", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -63307,24 +75819,24 @@ "binop": null, "updateContext": null }, - "value": "hidden", - "start": 7050, - "end": 7058, + "value": "this", + "start": 10384, + "end": 10388, "loc": { "start": { - "line": 211, - "column": 37 + "line": 292, + "column": 15 }, "end": { - "line": 211, - "column": 45 + "line": 292, + "column": 19 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -63334,16 +75846,42 @@ "binop": null, "updateContext": null }, - "start": 7058, - "end": 7059, + "start": 10388, + "end": 10389, "loc": { "start": { - "line": 211, - "column": 45 + "line": 292, + "column": 19 }, "end": { - "line": 211, - "column": 46 + "line": 292, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_edgesEnabled", + "start": 10389, + "end": 10402, + "loc": { + "start": { + "line": 292, + "column": 20 + }, + "end": { + "line": 292, + "column": 33 } } }, @@ -63359,15 +75897,15 @@ "postfix": false, "binop": null }, - "start": 7064, - "end": 7065, + "start": 10407, + "end": 10408, "loc": { "start": { - "line": 212, + "line": 293, "column": 4 }, "end": { - "line": 212, + "line": 293, "column": 5 } } @@ -63375,15 +75913,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 7071, - "end": 7098, + "start": 10414, + "end": 10441, "loc": { "start": { - "line": 214, + "line": 295, "column": 4 }, "end": { - "line": 216, + "line": 297, "column": 7 } } @@ -63401,15 +75939,15 @@ "binop": null }, "value": "send", - "start": 7103, - "end": 7107, + "start": 10446, + "end": 10450, "loc": { "start": { - "line": 217, + "line": 298, "column": 4 }, "end": { - "line": 217, + "line": 298, "column": 8 } } @@ -63426,15 +75964,15 @@ "postfix": false, "binop": null }, - "start": 7107, - "end": 7108, + "start": 10450, + "end": 10451, "loc": { "start": { - "line": 217, + "line": 298, "column": 8 }, "end": { - "line": 217, + "line": 298, "column": 9 } } @@ -63452,15 +75990,15 @@ "binop": null }, "value": "name", - "start": 7108, - "end": 7112, + "start": 10451, + "end": 10455, "loc": { "start": { - "line": 217, + "line": 298, "column": 9 }, "end": { - "line": 217, + "line": 298, "column": 13 } } @@ -63478,15 +76016,15 @@ "binop": null, "updateContext": null }, - "start": 7112, - "end": 7113, + "start": 10455, + "end": 10456, "loc": { "start": { - "line": 217, + "line": 298, "column": 13 }, "end": { - "line": 217, + "line": 298, "column": 14 } } @@ -63504,15 +76042,15 @@ "binop": null }, "value": "value", - "start": 7114, - "end": 7119, + "start": 10457, + "end": 10462, "loc": { "start": { - "line": 217, + "line": 298, "column": 15 }, "end": { - "line": 217, + "line": 298, "column": 20 } } @@ -63529,15 +76067,15 @@ "postfix": false, "binop": null }, - "start": 7119, - "end": 7120, + "start": 10462, + "end": 10463, "loc": { "start": { - "line": 217, + "line": 298, "column": 20 }, "end": { - "line": 217, + "line": 298, "column": 21 } } @@ -63554,15 +76092,15 @@ "postfix": false, "binop": null }, - "start": 7121, - "end": 7122, + "start": 10464, + "end": 10465, "loc": { "start": { - "line": 217, + "line": 298, "column": 22 }, "end": { - "line": 217, + "line": 298, "column": 23 } } @@ -63582,15 +76120,15 @@ "updateContext": null }, "value": "switch", - "start": 7131, - "end": 7137, + "start": 10474, + "end": 10480, "loc": { "start": { - "line": 218, + "line": 299, "column": 8 }, "end": { - "line": 218, + "line": 299, "column": 14 } } @@ -63607,15 +76145,15 @@ "postfix": false, "binop": null }, - "start": 7138, - "end": 7139, + "start": 10481, + "end": 10482, "loc": { "start": { - "line": 218, + "line": 299, "column": 15 }, "end": { - "line": 218, + "line": 299, "column": 16 } } @@ -63633,15 +76171,15 @@ "binop": null }, "value": "name", - "start": 7139, - "end": 7143, + "start": 10482, + "end": 10486, "loc": { "start": { - "line": 218, + "line": 299, "column": 16 }, "end": { - "line": 218, + "line": 299, "column": 20 } } @@ -63658,15 +76196,15 @@ "postfix": false, "binop": null }, - "start": 7143, - "end": 7144, + "start": 10486, + "end": 10487, "loc": { "start": { - "line": 218, + "line": 299, "column": 20 }, "end": { - "line": 218, + "line": 299, "column": 21 } } @@ -63683,15 +76221,15 @@ "postfix": false, "binop": null }, - "start": 7145, - "end": 7146, + "start": 10488, + "end": 10489, "loc": { "start": { - "line": 218, + "line": 299, "column": 22 }, "end": { - "line": 218, + "line": 299, "column": 23 } } @@ -63711,15 +76249,15 @@ "updateContext": null }, "value": "case", - "start": 7159, - "end": 7163, + "start": 10502, + "end": 10506, "loc": { "start": { - "line": 219, + "line": 300, "column": 12 }, "end": { - "line": 219, + "line": 300, "column": 16 } } @@ -63738,15 +76276,15 @@ "updateContext": null }, "value": "clear", - "start": 7164, - "end": 7171, + "start": 10507, + "end": 10514, "loc": { "start": { - "line": 219, + "line": 300, "column": 17 }, "end": { - "line": 219, + "line": 300, "column": 24 } } @@ -63764,15 +76302,15 @@ "binop": null, "updateContext": null }, - "start": 7171, - "end": 7172, + "start": 10514, + "end": 10515, "loc": { "start": { - "line": 219, + "line": 300, "column": 24 }, "end": { - "line": 219, + "line": 300, "column": 25 } } @@ -63792,15 +76330,15 @@ "updateContext": null }, "value": "this", - "start": 7189, - "end": 7193, + "start": 10532, + "end": 10536, "loc": { "start": { - "line": 220, + "line": 301, "column": 16 }, "end": { - "line": 220, + "line": 301, "column": 20 } } @@ -63818,15 +76356,15 @@ "binop": null, "updateContext": null }, - "start": 7193, - "end": 7194, + "start": 10536, + "end": 10537, "loc": { "start": { - "line": 220, + "line": 301, "column": 20 }, "end": { - "line": 220, + "line": 301, "column": 21 } } @@ -63844,15 +76382,15 @@ "binop": null }, "value": "_cancelFade", - "start": 7194, - "end": 7205, + "start": 10537, + "end": 10548, "loc": { "start": { - "line": 220, + "line": 301, "column": 21 }, "end": { - "line": 220, + "line": 301, "column": 32 } } @@ -63869,15 +76407,15 @@ "postfix": false, "binop": null }, - "start": 7205, - "end": 7206, + "start": 10548, + "end": 10549, "loc": { "start": { - "line": 220, + "line": 301, "column": 32 }, "end": { - "line": 220, + "line": 301, "column": 33 } } @@ -63894,15 +76432,15 @@ "postfix": false, "binop": null }, - "start": 7206, - "end": 7207, + "start": 10549, + "end": 10550, "loc": { "start": { - "line": 220, + "line": 301, "column": 33 }, "end": { - "line": 220, + "line": 301, "column": 34 } } @@ -63920,15 +76458,15 @@ "binop": null, "updateContext": null }, - "start": 7207, - "end": 7208, + "start": 10550, + "end": 10551, "loc": { "start": { - "line": 220, + "line": 301, "column": 34 }, "end": { - "line": 220, + "line": 301, "column": 35 } } @@ -63948,15 +76486,15 @@ "updateContext": null }, "value": "break", - "start": 7225, - "end": 7230, + "start": 10568, + "end": 10573, "loc": { "start": { - "line": 221, + "line": 302, "column": 16 }, "end": { - "line": 221, + "line": 302, "column": 21 } } @@ -63974,15 +76512,15 @@ "binop": null, "updateContext": null }, - "start": 7230, - "end": 7231, + "start": 10573, + "end": 10574, "loc": { "start": { - "line": 221, + "line": 302, "column": 21 }, "end": { - "line": 221, + "line": 302, "column": 22 } } @@ -63999,15 +76537,15 @@ "postfix": false, "binop": null }, - "start": 7240, - "end": 7241, + "start": 10583, + "end": 10584, "loc": { "start": { - "line": 222, + "line": 303, "column": 8 }, "end": { - "line": 222, + "line": 303, "column": 9 } } @@ -64024,15 +76562,15 @@ "postfix": false, "binop": null }, - "start": 7246, - "end": 7247, + "start": 10589, + "end": 10590, "loc": { "start": { - "line": 223, + "line": 304, "column": 4 }, "end": { - "line": 223, + "line": 304, "column": 5 } } @@ -64040,15 +76578,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this plugin.\n ", - "start": 7253, - "end": 7293, + "start": 10596, + "end": 10636, "loc": { "start": { - "line": 225, + "line": 306, "column": 4 }, "end": { - "line": 227, + "line": 308, "column": 7 } } @@ -64066,15 +76604,15 @@ "binop": null }, "value": "destroy", - "start": 7298, - "end": 7305, + "start": 10641, + "end": 10648, "loc": { "start": { - "line": 228, + "line": 309, "column": 4 }, "end": { - "line": 228, + "line": 309, "column": 11 } } @@ -64091,15 +76629,15 @@ "postfix": false, "binop": null }, - "start": 7305, - "end": 7306, + "start": 10648, + "end": 10649, "loc": { "start": { - "line": 228, + "line": 309, "column": 11 }, "end": { - "line": 228, + "line": 309, "column": 12 } } @@ -64116,15 +76654,15 @@ "postfix": false, "binop": null }, - "start": 7306, - "end": 7307, + "start": 10649, + "end": 10650, "loc": { "start": { - "line": 228, + "line": 309, "column": 12 }, "end": { - "line": 228, + "line": 309, "column": 13 } } @@ -64141,15 +76679,15 @@ "postfix": false, "binop": null }, - "start": 7308, - "end": 7309, + "start": 10651, + "end": 10652, "loc": { "start": { - "line": 228, + "line": 309, "column": 14 }, "end": { - "line": 228, + "line": 309, "column": 15 } } @@ -64169,15 +76707,15 @@ "updateContext": null }, "value": "this", - "start": 7318, - "end": 7322, + "start": 10661, + "end": 10665, "loc": { "start": { - "line": 229, + "line": 310, "column": 8 }, "end": { - "line": 229, + "line": 310, "column": 12 } } @@ -64195,15 +76733,15 @@ "binop": null, "updateContext": null }, - "start": 7322, - "end": 7323, + "start": 10665, + "end": 10666, "loc": { "start": { - "line": 229, + "line": 310, "column": 12 }, "end": { - "line": 229, + "line": 310, "column": 13 } } @@ -64221,15 +76759,15 @@ "binop": null }, "value": "_cancelFade", - "start": 7323, - "end": 7334, + "start": 10666, + "end": 10677, "loc": { "start": { - "line": 229, + "line": 310, "column": 13 }, "end": { - "line": 229, + "line": 310, "column": 24 } } @@ -64246,15 +76784,15 @@ "postfix": false, "binop": null }, - "start": 7334, - "end": 7335, + "start": 10677, + "end": 10678, "loc": { "start": { - "line": 229, + "line": 310, "column": 24 }, "end": { - "line": 229, + "line": 310, "column": 25 } } @@ -64271,15 +76809,15 @@ "postfix": false, "binop": null }, - "start": 7335, - "end": 7336, + "start": 10678, + "end": 10679, "loc": { "start": { - "line": 229, + "line": 310, "column": 25 }, "end": { - "line": 229, + "line": 310, "column": 26 } } @@ -64297,15 +76835,15 @@ "binop": null, "updateContext": null }, - "start": 7336, - "end": 7337, + "start": 10679, + "end": 10680, "loc": { "start": { - "line": 229, + "line": 310, "column": 26 }, "end": { - "line": 229, + "line": 310, "column": 27 } } @@ -64325,15 +76863,15 @@ "updateContext": null }, "value": "this", - "start": 7346, - "end": 7350, + "start": 10689, + "end": 10693, "loc": { "start": { - "line": 230, + "line": 311, "column": 8 }, "end": { - "line": 230, + "line": 311, "column": 12 } } @@ -64351,15 +76889,15 @@ "binop": null, "updateContext": null }, - "start": 7350, - "end": 7351, + "start": 10693, + "end": 10694, "loc": { "start": { - "line": 230, + "line": 311, "column": 12 }, "end": { - "line": 230, + "line": 311, "column": 13 } } @@ -64377,15 +76915,15 @@ "binop": null }, "value": "viewer", - "start": 7351, - "end": 7357, + "start": 10694, + "end": 10700, "loc": { "start": { - "line": 230, + "line": 311, "column": 13 }, "end": { - "line": 230, + "line": 311, "column": 19 } } @@ -64403,15 +76941,15 @@ "binop": null, "updateContext": null }, - "start": 7357, - "end": 7358, + "start": 10700, + "end": 10701, "loc": { "start": { - "line": 230, + "line": 311, "column": 19 }, "end": { - "line": 230, + "line": 311, "column": 20 } } @@ -64429,15 +76967,15 @@ "binop": null }, "value": "scene", - "start": 7358, - "end": 7363, + "start": 10701, + "end": 10706, "loc": { "start": { - "line": 230, + "line": 311, "column": 20 }, "end": { - "line": 230, + "line": 311, "column": 25 } } @@ -64455,15 +76993,15 @@ "binop": null, "updateContext": null }, - "start": 7363, - "end": 7364, + "start": 10706, + "end": 10707, "loc": { "start": { - "line": 230, + "line": 311, "column": 25 }, "end": { - "line": 230, + "line": 311, "column": 26 } } @@ -64481,15 +77019,15 @@ "binop": null }, "value": "camera", - "start": 7364, - "end": 7370, + "start": 10707, + "end": 10713, "loc": { "start": { - "line": 230, + "line": 311, "column": 26 }, "end": { - "line": 230, + "line": 311, "column": 32 } } @@ -64507,15 +77045,15 @@ "binop": null, "updateContext": null }, - "start": 7370, - "end": 7371, + "start": 10713, + "end": 10714, "loc": { "start": { - "line": 230, + "line": 311, "column": 32 }, "end": { - "line": 230, + "line": 311, "column": 33 } } @@ -64533,15 +77071,15 @@ "binop": null }, "value": "off", - "start": 7371, - "end": 7374, + "start": 10714, + "end": 10717, "loc": { "start": { - "line": 230, + "line": 311, "column": 33 }, "end": { - "line": 230, + "line": 311, "column": 36 } } @@ -64558,15 +77096,15 @@ "postfix": false, "binop": null }, - "start": 7374, - "end": 7375, + "start": 10717, + "end": 10718, "loc": { "start": { - "line": 230, + "line": 311, "column": 36 }, "end": { - "line": 230, + "line": 311, "column": 37 } } @@ -64586,15 +77124,15 @@ "updateContext": null }, "value": "this", - "start": 7375, - "end": 7379, + "start": 10718, + "end": 10722, "loc": { "start": { - "line": 230, + "line": 311, "column": 37 }, "end": { - "line": 230, + "line": 311, "column": 41 } } @@ -64612,15 +77150,15 @@ "binop": null, "updateContext": null }, - "start": 7379, - "end": 7380, + "start": 10722, + "end": 10723, "loc": { "start": { - "line": 230, + "line": 311, "column": 41 }, "end": { - "line": 230, + "line": 311, "column": 42 } } @@ -64638,15 +77176,15 @@ "binop": null }, "value": "_onCameraMatrix", - "start": 7380, - "end": 7395, + "start": 10723, + "end": 10738, "loc": { "start": { - "line": 230, + "line": 311, "column": 42 }, "end": { - "line": 230, + "line": 311, "column": 57 } } @@ -64663,15 +77201,15 @@ "postfix": false, "binop": null }, - "start": 7395, - "end": 7396, + "start": 10738, + "end": 10739, "loc": { "start": { - "line": 230, + "line": 311, "column": 57 }, "end": { - "line": 230, + "line": 311, "column": 58 } } @@ -64689,15 +77227,15 @@ "binop": null, "updateContext": null }, - "start": 7396, - "end": 7397, + "start": 10739, + "end": 10740, "loc": { "start": { - "line": 230, + "line": 311, "column": 58 }, "end": { - "line": 230, + "line": 311, "column": 59 } } @@ -64717,15 +77255,15 @@ "updateContext": null }, "value": "this", - "start": 7406, - "end": 7410, + "start": 10749, + "end": 10753, "loc": { "start": { - "line": 231, + "line": 312, "column": 8 }, "end": { - "line": 231, + "line": 312, "column": 12 } } @@ -64743,15 +77281,15 @@ "binop": null, "updateContext": null }, - "start": 7410, - "end": 7411, + "start": 10753, + "end": 10754, "loc": { "start": { - "line": 231, + "line": 312, "column": 12 }, "end": { - "line": 231, + "line": 312, "column": 13 } } @@ -64769,15 +77307,15 @@ "binop": null }, "value": "viewer", - "start": 7411, - "end": 7417, + "start": 10754, + "end": 10760, "loc": { "start": { - "line": 231, + "line": 312, "column": 13 }, "end": { - "line": 231, + "line": 312, "column": 19 } } @@ -64795,15 +77333,15 @@ "binop": null, "updateContext": null }, - "start": 7417, - "end": 7418, + "start": 10760, + "end": 10761, "loc": { "start": { - "line": 231, + "line": 312, "column": 19 }, "end": { - "line": 231, + "line": 312, "column": 20 } } @@ -64821,15 +77359,15 @@ "binop": null }, "value": "scene", - "start": 7418, - "end": 7423, + "start": 10761, + "end": 10766, "loc": { "start": { - "line": 231, + "line": 312, "column": 20 }, "end": { - "line": 231, + "line": 312, "column": 25 } } @@ -64847,15 +77385,15 @@ "binop": null, "updateContext": null }, - "start": 7423, - "end": 7424, + "start": 10766, + "end": 10767, "loc": { "start": { - "line": 231, + "line": 312, "column": 25 }, "end": { - "line": 231, + "line": 312, "column": 26 } } @@ -64873,15 +77411,15 @@ "binop": null }, "value": "off", - "start": 7424, - "end": 7427, + "start": 10767, + "end": 10770, "loc": { "start": { - "line": 231, + "line": 312, "column": 26 }, "end": { - "line": 231, + "line": 312, "column": 29 } } @@ -64898,15 +77436,15 @@ "postfix": false, "binop": null }, - "start": 7427, - "end": 7428, + "start": 10770, + "end": 10771, "loc": { "start": { - "line": 231, + "line": 312, "column": 29 }, "end": { - "line": 231, + "line": 312, "column": 30 } } @@ -64926,15 +77464,15 @@ "updateContext": null }, "value": "this", - "start": 7428, - "end": 7432, + "start": 10771, + "end": 10775, "loc": { "start": { - "line": 231, + "line": 312, "column": 30 }, "end": { - "line": 231, + "line": 312, "column": 34 } } @@ -64952,15 +77490,15 @@ "binop": null, "updateContext": null }, - "start": 7432, - "end": 7433, + "start": 10775, + "end": 10776, "loc": { "start": { - "line": 231, + "line": 312, "column": 34 }, "end": { - "line": 231, + "line": 312, "column": 35 } } @@ -64978,15 +77516,15 @@ "binop": null }, "value": "_onSceneTick", - "start": 7433, - "end": 7445, + "start": 10776, + "end": 10788, "loc": { "start": { - "line": 231, + "line": 312, "column": 35 }, "end": { - "line": 231, + "line": 312, "column": 47 } } @@ -65003,15 +77541,15 @@ "postfix": false, "binop": null }, - "start": 7445, - "end": 7446, + "start": 10788, + "end": 10789, "loc": { "start": { - "line": 231, + "line": 312, "column": 47 }, "end": { - "line": 231, + "line": 312, "column": 48 } } @@ -65029,15 +77567,15 @@ "binop": null, "updateContext": null }, - "start": 7446, - "end": 7447, + "start": 10789, + "end": 10790, "loc": { "start": { - "line": 231, + "line": 312, "column": 48 }, "end": { - "line": 231, + "line": 312, "column": 49 } } @@ -65057,15 +77595,15 @@ "updateContext": null }, "value": "this", - "start": 7456, - "end": 7460, + "start": 10799, + "end": 10803, "loc": { "start": { - "line": 232, + "line": 313, "column": 8 }, "end": { - "line": 232, + "line": 313, "column": 12 } } @@ -65083,15 +77621,15 @@ "binop": null, "updateContext": null }, - "start": 7460, - "end": 7461, + "start": 10803, + "end": 10804, "loc": { "start": { - "line": 232, + "line": 313, "column": 12 }, "end": { - "line": 232, + "line": 313, "column": 13 } } @@ -65109,15 +77647,15 @@ "binop": null }, "value": "viewer", - "start": 7461, - "end": 7467, + "start": 10804, + "end": 10810, "loc": { "start": { - "line": 232, + "line": 313, "column": 13 }, "end": { - "line": 232, + "line": 313, "column": 19 } } @@ -65135,15 +77673,15 @@ "binop": null, "updateContext": null }, - "start": 7467, - "end": 7468, + "start": 10810, + "end": 10811, "loc": { "start": { - "line": 232, + "line": 313, "column": 19 }, "end": { - "line": 232, + "line": 313, "column": 20 } } @@ -65161,15 +77699,15 @@ "binop": null }, "value": "scene", - "start": 7468, - "end": 7473, + "start": 10811, + "end": 10816, "loc": { "start": { - "line": 232, + "line": 313, "column": 20 }, "end": { - "line": 232, + "line": 313, "column": 25 } } @@ -65187,15 +77725,15 @@ "binop": null, "updateContext": null }, - "start": 7473, - "end": 7474, + "start": 10816, + "end": 10817, "loc": { "start": { - "line": 232, + "line": 313, "column": 25 }, "end": { - "line": 232, + "line": 313, "column": 26 } } @@ -65213,15 +77751,15 @@ "binop": null }, "value": "off", - "start": 7474, - "end": 7477, + "start": 10817, + "end": 10820, "loc": { "start": { - "line": 232, + "line": 313, "column": 26 }, "end": { - "line": 232, + "line": 313, "column": 29 } } @@ -65238,15 +77776,15 @@ "postfix": false, "binop": null }, - "start": 7477, - "end": 7478, + "start": 10820, + "end": 10821, "loc": { "start": { - "line": 232, + "line": 313, "column": 29 }, "end": { - "line": 232, + "line": 313, "column": 30 } } @@ -65266,15 +77804,15 @@ "updateContext": null }, "value": "this", - "start": 7478, - "end": 7482, + "start": 10821, + "end": 10825, "loc": { "start": { - "line": 232, + "line": 313, "column": 30 }, "end": { - "line": 232, + "line": 313, "column": 34 } } @@ -65292,15 +77830,15 @@ "binop": null, "updateContext": null }, - "start": 7482, - "end": 7483, + "start": 10825, + "end": 10826, "loc": { "start": { - "line": 232, + "line": 313, "column": 34 }, "end": { - "line": 232, + "line": 313, "column": 35 } } @@ -65318,15 +77856,15 @@ "binop": null }, "value": "_onSceneObjectVisibility", - "start": 7483, - "end": 7507, + "start": 10826, + "end": 10850, "loc": { "start": { - "line": 232, + "line": 313, "column": 35 }, "end": { - "line": 232, + "line": 313, "column": 59 } } @@ -65343,15 +77881,15 @@ "postfix": false, "binop": null }, - "start": 7507, - "end": 7508, + "start": 10850, + "end": 10851, "loc": { "start": { - "line": 232, + "line": 313, "column": 59 }, "end": { - "line": 232, + "line": 313, "column": 60 } } @@ -65369,15 +77907,15 @@ "binop": null, "updateContext": null }, - "start": 7508, - "end": 7509, + "start": 10851, + "end": 10852, "loc": { "start": { - "line": 232, + "line": 313, "column": 60 }, "end": { - "line": 232, + "line": 313, "column": 61 } } @@ -65397,15 +77935,15 @@ "updateContext": null }, "value": "this", - "start": 7518, - "end": 7522, + "start": 10861, + "end": 10865, "loc": { "start": { - "line": 233, + "line": 314, "column": 8 }, "end": { - "line": 233, + "line": 314, "column": 12 } } @@ -65423,15 +77961,15 @@ "binop": null, "updateContext": null }, - "start": 7522, - "end": 7523, + "start": 10865, + "end": 10866, "loc": { "start": { - "line": 233, + "line": 314, "column": 12 }, "end": { - "line": 233, + "line": 314, "column": 13 } } @@ -65449,15 +77987,15 @@ "binop": null }, "value": "viewer", - "start": 7523, - "end": 7529, + "start": 10866, + "end": 10872, "loc": { "start": { - "line": 233, + "line": 314, "column": 13 }, "end": { - "line": 233, + "line": 314, "column": 19 } } @@ -65475,15 +78013,15 @@ "binop": null, "updateContext": null }, - "start": 7529, - "end": 7530, + "start": 10872, + "end": 10873, "loc": { "start": { - "line": 233, + "line": 314, "column": 19 }, "end": { - "line": 233, + "line": 314, "column": 20 } } @@ -65501,15 +78039,15 @@ "binop": null }, "value": "scene", - "start": 7530, - "end": 7535, + "start": 10873, + "end": 10878, "loc": { "start": { - "line": 233, + "line": 314, "column": 20 }, "end": { - "line": 233, + "line": 314, "column": 25 } } @@ -65527,15 +78065,15 @@ "binop": null, "updateContext": null }, - "start": 7535, - "end": 7536, + "start": 10878, + "end": 10879, "loc": { "start": { - "line": 233, + "line": 314, "column": 25 }, "end": { - "line": 233, + "line": 314, "column": 26 } } @@ -65553,15 +78091,15 @@ "binop": null }, "value": "input", - "start": 7536, - "end": 7541, + "start": 10879, + "end": 10884, "loc": { "start": { - "line": 233, + "line": 314, "column": 26 }, "end": { - "line": 233, + "line": 314, "column": 31 } } @@ -65579,15 +78117,15 @@ "binop": null, "updateContext": null }, - "start": 7541, - "end": 7542, + "start": 10884, + "end": 10885, "loc": { "start": { - "line": 233, + "line": 314, "column": 31 }, "end": { - "line": 233, + "line": 314, "column": 32 } } @@ -65605,15 +78143,15 @@ "binop": null }, "value": "off", - "start": 7542, - "end": 7545, + "start": 10885, + "end": 10888, "loc": { "start": { - "line": 233, + "line": 314, "column": 32 }, "end": { - "line": 233, + "line": 314, "column": 35 } } @@ -65630,15 +78168,15 @@ "postfix": false, "binop": null }, - "start": 7545, - "end": 7546, + "start": 10888, + "end": 10889, "loc": { "start": { - "line": 233, + "line": 314, "column": 35 }, "end": { - "line": 233, + "line": 314, "column": 36 } } @@ -65658,15 +78196,15 @@ "updateContext": null }, "value": "this", - "start": 7546, - "end": 7550, + "start": 10889, + "end": 10893, "loc": { "start": { - "line": 233, + "line": 314, "column": 36 }, "end": { - "line": 233, + "line": 314, "column": 40 } } @@ -65684,15 +78222,15 @@ "binop": null, "updateContext": null }, - "start": 7550, - "end": 7551, + "start": 10893, + "end": 10894, "loc": { "start": { - "line": 233, + "line": 314, "column": 40 }, "end": { - "line": 233, + "line": 314, "column": 41 } } @@ -65710,15 +78248,15 @@ "binop": null }, "value": "_onSceneMouseDown", - "start": 7551, - "end": 7568, + "start": 10894, + "end": 10911, "loc": { "start": { - "line": 233, + "line": 314, "column": 41 }, "end": { - "line": 233, + "line": 314, "column": 58 } } @@ -65735,15 +78273,15 @@ "postfix": false, "binop": null }, - "start": 7568, - "end": 7569, + "start": 10911, + "end": 10912, "loc": { "start": { - "line": 233, + "line": 314, "column": 58 }, "end": { - "line": 233, + "line": 314, "column": 59 } } @@ -65761,15 +78299,15 @@ "binop": null, "updateContext": null }, - "start": 7569, - "end": 7570, + "start": 10912, + "end": 10913, "loc": { "start": { - "line": 233, + "line": 314, "column": 59 }, "end": { - "line": 233, + "line": 314, "column": 60 } } @@ -65789,15 +78327,15 @@ "updateContext": null }, "value": "this", - "start": 7579, - "end": 7583, + "start": 10922, + "end": 10926, "loc": { "start": { - "line": 234, + "line": 315, "column": 8 }, "end": { - "line": 234, + "line": 315, "column": 12 } } @@ -65815,15 +78353,15 @@ "binop": null, "updateContext": null }, - "start": 7583, - "end": 7584, + "start": 10926, + "end": 10927, "loc": { "start": { - "line": 234, + "line": 315, "column": 12 }, "end": { - "line": 234, + "line": 315, "column": 13 } } @@ -65841,15 +78379,15 @@ "binop": null }, "value": "viewer", - "start": 7584, - "end": 7590, + "start": 10927, + "end": 10933, "loc": { "start": { - "line": 234, + "line": 315, "column": 13 }, "end": { - "line": 234, + "line": 315, "column": 19 } } @@ -65867,15 +78405,15 @@ "binop": null, "updateContext": null }, - "start": 7590, - "end": 7591, + "start": 10933, + "end": 10934, "loc": { "start": { - "line": 234, + "line": 315, "column": 19 }, "end": { - "line": 234, + "line": 315, "column": 20 } } @@ -65893,15 +78431,15 @@ "binop": null }, "value": "scene", - "start": 7591, - "end": 7596, + "start": 10934, + "end": 10939, "loc": { "start": { - "line": 234, + "line": 315, "column": 20 }, "end": { - "line": 234, + "line": 315, "column": 25 } } @@ -65919,15 +78457,15 @@ "binop": null, "updateContext": null }, - "start": 7596, - "end": 7597, + "start": 10939, + "end": 10940, "loc": { "start": { - "line": 234, + "line": 315, "column": 25 }, "end": { - "line": 234, + "line": 315, "column": 26 } } @@ -65945,15 +78483,15 @@ "binop": null }, "value": "input", - "start": 7597, - "end": 7602, + "start": 10940, + "end": 10945, "loc": { "start": { - "line": 234, + "line": 315, "column": 26 }, "end": { - "line": 234, + "line": 315, "column": 31 } } @@ -65971,15 +78509,15 @@ "binop": null, "updateContext": null }, - "start": 7602, - "end": 7603, + "start": 10945, + "end": 10946, "loc": { "start": { - "line": 234, + "line": 315, "column": 31 }, "end": { - "line": 234, + "line": 315, "column": 32 } } @@ -65997,15 +78535,15 @@ "binop": null }, "value": "off", - "start": 7603, - "end": 7606, + "start": 10946, + "end": 10949, "loc": { "start": { - "line": 234, + "line": 315, "column": 32 }, "end": { - "line": 234, + "line": 315, "column": 35 } } @@ -66022,15 +78560,15 @@ "postfix": false, "binop": null }, - "start": 7606, - "end": 7607, + "start": 10949, + "end": 10950, "loc": { "start": { - "line": 234, + "line": 315, "column": 35 }, "end": { - "line": 234, + "line": 315, "column": 36 } } @@ -66050,15 +78588,15 @@ "updateContext": null }, "value": "this", - "start": 7607, - "end": 7611, + "start": 10950, + "end": 10954, "loc": { "start": { - "line": 234, + "line": 315, "column": 36 }, "end": { - "line": 234, + "line": 315, "column": 40 } } @@ -66076,15 +78614,15 @@ "binop": null, "updateContext": null }, - "start": 7611, - "end": 7612, + "start": 10954, + "end": 10955, "loc": { "start": { - "line": 234, + "line": 315, "column": 40 }, "end": { - "line": 234, + "line": 315, "column": 41 } } @@ -66102,15 +78640,15 @@ "binop": null }, "value": "_onSceneMouseUp", - "start": 7612, - "end": 7627, + "start": 10955, + "end": 10970, "loc": { "start": { - "line": 234, + "line": 315, "column": 41 }, "end": { - "line": 234, + "line": 315, "column": 56 } } @@ -66127,15 +78665,15 @@ "postfix": false, "binop": null }, - "start": 7627, - "end": 7628, + "start": 10970, + "end": 10971, "loc": { "start": { - "line": 234, + "line": 315, "column": 56 }, "end": { - "line": 234, + "line": 315, "column": 57 } } @@ -66153,15 +78691,15 @@ "binop": null, "updateContext": null }, - "start": 7628, - "end": 7629, + "start": 10971, + "end": 10972, "loc": { "start": { - "line": 234, + "line": 315, "column": 57 }, "end": { - "line": 234, + "line": 315, "column": 58 } } @@ -66181,15 +78719,15 @@ "updateContext": null }, "value": "this", - "start": 7638, - "end": 7642, + "start": 10981, + "end": 10985, "loc": { "start": { - "line": 235, + "line": 316, "column": 8 }, "end": { - "line": 235, + "line": 316, "column": 12 } } @@ -66207,15 +78745,15 @@ "binop": null, "updateContext": null }, - "start": 7642, - "end": 7643, + "start": 10985, + "end": 10986, "loc": { "start": { - "line": 235, + "line": 316, "column": 12 }, "end": { - "line": 235, + "line": 316, "column": 13 } } @@ -66233,15 +78771,15 @@ "binop": null }, "value": "viewer", - "start": 7643, - "end": 7649, + "start": 10986, + "end": 10992, "loc": { "start": { - "line": 235, + "line": 316, "column": 13 }, "end": { - "line": 235, + "line": 316, "column": 19 } } @@ -66259,15 +78797,15 @@ "binop": null, "updateContext": null }, - "start": 7649, - "end": 7650, + "start": 10992, + "end": 10993, "loc": { "start": { - "line": 235, + "line": 316, "column": 19 }, "end": { - "line": 235, + "line": 316, "column": 20 } } @@ -66285,15 +78823,15 @@ "binop": null }, "value": "scene", - "start": 7650, - "end": 7655, + "start": 10993, + "end": 10998, "loc": { "start": { - "line": 235, + "line": 316, "column": 20 }, "end": { - "line": 235, + "line": 316, "column": 25 } } @@ -66311,15 +78849,15 @@ "binop": null, "updateContext": null }, - "start": 7655, - "end": 7656, + "start": 10998, + "end": 10999, "loc": { "start": { - "line": 235, + "line": 316, "column": 25 }, "end": { - "line": 235, + "line": 316, "column": 26 } } @@ -66337,15 +78875,15 @@ "binop": null }, "value": "input", - "start": 7656, - "end": 7661, + "start": 10999, + "end": 11004, "loc": { "start": { - "line": 235, + "line": 316, "column": 26 }, "end": { - "line": 235, + "line": 316, "column": 31 } } @@ -66363,15 +78901,15 @@ "binop": null, "updateContext": null }, - "start": 7661, - "end": 7662, + "start": 11004, + "end": 11005, "loc": { "start": { - "line": 235, + "line": 316, "column": 31 }, "end": { - "line": 235, + "line": 316, "column": 32 } } @@ -66389,15 +78927,15 @@ "binop": null }, "value": "off", - "start": 7662, - "end": 7665, + "start": 11005, + "end": 11008, "loc": { "start": { - "line": 235, + "line": 316, "column": 32 }, "end": { - "line": 235, + "line": 316, "column": 35 } } @@ -66414,15 +78952,15 @@ "postfix": false, "binop": null }, - "start": 7665, - "end": 7666, + "start": 11008, + "end": 11009, "loc": { "start": { - "line": 235, + "line": 316, "column": 35 }, "end": { - "line": 235, + "line": 316, "column": 36 } } @@ -66442,15 +78980,15 @@ "updateContext": null }, "value": "this", - "start": 7666, - "end": 7670, + "start": 11009, + "end": 11013, "loc": { "start": { - "line": 235, + "line": 316, "column": 36 }, "end": { - "line": 235, + "line": 316, "column": 40 } } @@ -66468,15 +79006,15 @@ "binop": null, "updateContext": null }, - "start": 7670, - "end": 7671, + "start": 11013, + "end": 11014, "loc": { "start": { - "line": 235, + "line": 316, "column": 40 }, "end": { - "line": 235, + "line": 316, "column": 41 } } @@ -66494,15 +79032,15 @@ "binop": null }, "value": "_onSceneMouseMove", - "start": 7671, - "end": 7688, + "start": 11014, + "end": 11031, "loc": { "start": { - "line": 235, + "line": 316, "column": 41 }, "end": { - "line": 235, + "line": 316, "column": 58 } } @@ -66519,15 +79057,15 @@ "postfix": false, "binop": null }, - "start": 7688, - "end": 7689, + "start": 11031, + "end": 11032, "loc": { "start": { - "line": 235, + "line": 316, "column": 58 }, "end": { - "line": 235, + "line": 316, "column": 59 } } @@ -66545,15 +79083,15 @@ "binop": null, "updateContext": null }, - "start": 7689, - "end": 7690, + "start": 11032, + "end": 11033, "loc": { "start": { - "line": 235, + "line": 316, "column": 59 }, "end": { - "line": 235, + "line": 316, "column": 60 } } @@ -66573,15 +79111,15 @@ "updateContext": null }, "value": "super", - "start": 7699, - "end": 7704, + "start": 11042, + "end": 11047, "loc": { "start": { - "line": 236, + "line": 317, "column": 8 }, "end": { - "line": 236, + "line": 317, "column": 13 } } @@ -66599,15 +79137,15 @@ "binop": null, "updateContext": null }, - "start": 7704, - "end": 7705, + "start": 11047, + "end": 11048, "loc": { "start": { - "line": 236, + "line": 317, "column": 13 }, "end": { - "line": 236, + "line": 317, "column": 14 } } @@ -66625,15 +79163,15 @@ "binop": null }, "value": "destroy", - "start": 7705, - "end": 7712, + "start": 11048, + "end": 11055, "loc": { "start": { - "line": 236, + "line": 317, "column": 14 }, "end": { - "line": 236, + "line": 317, "column": 21 } } @@ -66650,15 +79188,15 @@ "postfix": false, "binop": null }, - "start": 7712, - "end": 7713, + "start": 11055, + "end": 11056, "loc": { "start": { - "line": 236, + "line": 317, "column": 21 }, "end": { - "line": 236, + "line": 317, "column": 22 } } @@ -66675,15 +79213,15 @@ "postfix": false, "binop": null }, - "start": 7713, - "end": 7714, + "start": 11056, + "end": 11057, "loc": { "start": { - "line": 236, + "line": 317, "column": 22 }, "end": { - "line": 236, + "line": 317, "column": 23 } } @@ -66701,19 +79239,72 @@ "binop": null, "updateContext": null }, - "start": 7714, - "end": 7715, + "start": 11057, + "end": 11058, "loc": { "start": { - "line": 236, + "line": 317, "column": 23 }, "end": { - "line": 236, + "line": 317, "column": 24 } } }, + { + "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": 11067, + "end": 11069, + "loc": { + "start": { + "line": 318, + "column": 8 + }, + "end": { + "line": 318, + "column": 10 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11070, + "end": 11071, + "loc": { + "start": { + "line": 318, + "column": 11 + }, + "end": { + "line": 318, + "column": 12 + } + } + }, { "type": { "label": "this", @@ -66729,16 +79320,16 @@ "updateContext": null }, "value": "this", - "start": 7724, - "end": 7728, + "start": 11071, + "end": 11075, "loc": { "start": { - "line": 237, - "column": 8 + "line": 318, + "column": 12 }, "end": { - "line": 237, - "column": 12 + "line": 318, + "column": 16 } } }, @@ -66755,16 +79346,16 @@ "binop": null, "updateContext": null }, - "start": 7728, - "end": 7729, + "start": 11075, + "end": 11076, "loc": { "start": { - "line": 237, - "column": 12 + "line": 318, + "column": 16 }, "end": { - "line": 237, - "column": 13 + "line": 318, + "column": 17 } } }, @@ -66781,16 +79372,94 @@ "binop": null }, "value": "_img", - "start": 7729, - "end": 7733, + "start": 11076, + "end": 11080, "loc": { "start": { - "line": 237, - "column": 13 + "line": 318, + "column": 17 }, "end": { - "line": 237, - "column": 17 + "line": 318, + "column": 21 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11080, + "end": 11081, + "loc": { + "start": { + "line": 318, + "column": 21 + }, + "end": { + "line": 318, + "column": 22 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11082, + "end": 11083, + "loc": { + "start": { + "line": 318, + "column": 23 + }, + "end": { + "line": 318, + "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": 11096, + "end": 11100, + "loc": { + "start": { + "line": 319, + "column": 12 + }, + "end": { + "line": 319, + "column": 16 } } }, @@ -66807,16 +79476,68 @@ "binop": null, "updateContext": null }, - "start": 7733, - "end": 7734, + "start": 11100, + "end": 11101, "loc": { "start": { - "line": 237, + "line": 319, + "column": 16 + }, + "end": { + "line": 319, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_img", + "start": 11101, + "end": 11105, + "loc": { + "start": { + "line": 319, "column": 17 }, "end": { - "line": 237, - "column": 18 + "line": 319, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11105, + "end": 11106, + "loc": { + "start": { + "line": 319, + "column": 21 + }, + "end": { + "line": 319, + "column": 22 } } }, @@ -66833,16 +79554,16 @@ "binop": null }, "value": "parentNode", - "start": 7734, - "end": 7744, + "start": 11106, + "end": 11116, "loc": { "start": { - "line": 237, - "column": 18 + "line": 319, + "column": 22 }, "end": { - "line": 237, - "column": 28 + "line": 319, + "column": 32 } } }, @@ -66859,16 +79580,16 @@ "binop": null, "updateContext": null }, - "start": 7744, - "end": 7745, + "start": 11116, + "end": 11117, "loc": { "start": { - "line": 237, - "column": 28 + "line": 319, + "column": 32 }, "end": { - "line": 237, - "column": 29 + "line": 319, + "column": 33 } } }, @@ -66885,16 +79606,16 @@ "binop": null }, "value": "removeChild", - "start": 7745, - "end": 7756, + "start": 11117, + "end": 11128, "loc": { "start": { - "line": 237, - "column": 29 + "line": 319, + "column": 33 }, "end": { - "line": 237, - "column": 40 + "line": 319, + "column": 44 } } }, @@ -66910,16 +79631,16 @@ "postfix": false, "binop": null }, - "start": 7756, - "end": 7757, + "start": 11128, + "end": 11129, "loc": { "start": { - "line": 237, - "column": 40 + "line": 319, + "column": 44 }, "end": { - "line": 237, - "column": 41 + "line": 319, + "column": 45 } } }, @@ -66938,16 +79659,16 @@ "updateContext": null }, "value": "this", - "start": 7757, - "end": 7761, + "start": 11129, + "end": 11133, "loc": { "start": { - "line": 237, - "column": 41 + "line": 319, + "column": 45 }, "end": { - "line": 237, - "column": 45 + "line": 319, + "column": 49 } } }, @@ -66964,16 +79685,16 @@ "binop": null, "updateContext": null }, - "start": 7761, - "end": 7762, + "start": 11133, + "end": 11134, "loc": { "start": { - "line": 237, - "column": 45 + "line": 319, + "column": 49 }, "end": { - "line": 237, - "column": 46 + "line": 319, + "column": 50 } } }, @@ -66990,16 +79711,16 @@ "binop": null }, "value": "_img", - "start": 7762, - "end": 7766, + "start": 11134, + "end": 11138, "loc": { "start": { - "line": 237, - "column": 46 + "line": 319, + "column": 50 }, "end": { - "line": 237, - "column": 50 + "line": 319, + "column": 54 } } }, @@ -67015,16 +79736,16 @@ "postfix": false, "binop": null }, - "start": 7766, - "end": 7767, + "start": 11138, + "end": 11139, "loc": { "start": { - "line": 237, - "column": 50 + "line": 319, + "column": 54 }, "end": { - "line": 237, - "column": 51 + "line": 319, + "column": 55 } } }, @@ -67041,16 +79762,16 @@ "binop": null, "updateContext": null }, - "start": 7767, - "end": 7768, + "start": 11139, + "end": 11140, "loc": { "start": { - "line": 237, - "column": 51 + "line": 319, + "column": 55 }, "end": { - "line": 237, - "column": 52 + "line": 319, + "column": 56 } } }, @@ -67069,16 +79790,16 @@ "updateContext": null }, "value": "this", - "start": 7777, - "end": 7781, + "start": 11153, + "end": 11157, "loc": { "start": { - "line": 238, - "column": 8 + "line": 320, + "column": 12 }, "end": { - "line": 238, - "column": 12 + "line": 320, + "column": 16 } } }, @@ -67095,16 +79816,16 @@ "binop": null, "updateContext": null }, - "start": 7781, - "end": 7782, + "start": 11157, + "end": 11158, "loc": { "start": { - "line": 238, - "column": 12 + "line": 320, + "column": 16 }, "end": { - "line": 238, - "column": 13 + "line": 320, + "column": 17 } } }, @@ -67121,16 +79842,16 @@ "binop": null }, "value": "_img", - "start": 7782, - "end": 7786, + "start": 11158, + "end": 11162, "loc": { "start": { - "line": 238, - "column": 13 + "line": 320, + "column": 17 }, "end": { - "line": 238, - "column": 17 + "line": 320, + "column": 21 } } }, @@ -67148,16 +79869,16 @@ "updateContext": null }, "value": "=", - "start": 7787, - "end": 7788, + "start": 11163, + "end": 11164, "loc": { "start": { - "line": 238, - "column": 18 + "line": 320, + "column": 22 }, "end": { - "line": 238, - "column": 19 + "line": 320, + "column": 23 } } }, @@ -67176,16 +79897,16 @@ "updateContext": null }, "value": "null", - "start": 7789, - "end": 7793, + "start": 11165, + "end": 11169, "loc": { "start": { - "line": 238, - "column": 20 + "line": 320, + "column": 24 }, "end": { - "line": 238, - "column": 24 + "line": 320, + "column": 28 } } }, @@ -67202,16 +79923,16 @@ "binop": null, "updateContext": null }, - "start": 7793, - "end": 7794, + "start": 11169, + "end": 11170, "loc": { "start": { - "line": 238, - "column": 24 + "line": 320, + "column": 28 }, "end": { - "line": 238, - "column": 25 + "line": 320, + "column": 29 } } }, @@ -67227,15 +79948,40 @@ "postfix": false, "binop": null }, - "start": 7799, - "end": 7800, + "start": 11179, + "end": 11180, "loc": { "start": { - "line": 239, + "line": 321, + "column": 8 + }, + "end": { + "line": 321, + "column": 9 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11185, + "end": 11186, + "loc": { + "start": { + "line": 322, "column": 4 }, "end": { - "line": 239, + "line": 322, "column": 5 } } @@ -67252,15 +79998,15 @@ "postfix": false, "binop": null }, - "start": 7801, - "end": 7802, + "start": 11187, + "end": 11188, "loc": { "start": { - "line": 240, + "line": 323, "column": 0 }, "end": { - "line": 240, + "line": 323, "column": 1 } } @@ -67279,15 +80025,15 @@ "binop": null }, "value": "function", - "start": 7804, - "end": 7812, + "start": 11190, + "end": 11198, "loc": { "start": { - "line": 242, + "line": 325, "column": 0 }, "end": { - "line": 242, + "line": 325, "column": 8 } } @@ -67305,15 +80051,15 @@ "binop": null }, "value": "cumulativeOffset", - "start": 7813, - "end": 7829, + "start": 11199, + "end": 11215, "loc": { "start": { - "line": 242, + "line": 325, "column": 9 }, "end": { - "line": 242, + "line": 325, "column": 25 } } @@ -67330,15 +80076,15 @@ "postfix": false, "binop": null }, - "start": 7829, - "end": 7830, + "start": 11215, + "end": 11216, "loc": { "start": { - "line": 242, + "line": 325, "column": 25 }, "end": { - "line": 242, + "line": 325, "column": 26 } } @@ -67356,15 +80102,15 @@ "binop": null }, "value": "element", - "start": 7830, - "end": 7837, + "start": 11216, + "end": 11223, "loc": { "start": { - "line": 242, + "line": 325, "column": 26 }, "end": { - "line": 242, + "line": 325, "column": 33 } } @@ -67381,15 +80127,15 @@ "postfix": false, "binop": null }, - "start": 7837, - "end": 7838, + "start": 11223, + "end": 11224, "loc": { "start": { - "line": 242, + "line": 325, "column": 33 }, "end": { - "line": 242, + "line": 325, "column": 34 } } @@ -67406,15 +80152,15 @@ "postfix": false, "binop": null }, - "start": 7839, - "end": 7840, + "start": 11225, + "end": 11226, "loc": { "start": { - "line": 242, + "line": 325, "column": 35 }, "end": { - "line": 242, + "line": 325, "column": 36 } } @@ -67434,15 +80180,15 @@ "updateContext": null }, "value": "let", - "start": 7845, - "end": 7848, + "start": 11231, + "end": 11234, "loc": { "start": { - "line": 243, + "line": 326, "column": 4 }, "end": { - "line": 243, + "line": 326, "column": 7 } } @@ -67460,15 +80206,15 @@ "binop": null }, "value": "top", - "start": 7849, - "end": 7852, + "start": 11235, + "end": 11238, "loc": { "start": { - "line": 243, + "line": 326, "column": 8 }, "end": { - "line": 243, + "line": 326, "column": 11 } } @@ -67487,15 +80233,15 @@ "updateContext": null }, "value": "=", - "start": 7853, - "end": 7854, + "start": 11239, + "end": 11240, "loc": { "start": { - "line": 243, + "line": 326, "column": 12 }, "end": { - "line": 243, + "line": 326, "column": 13 } } @@ -67514,15 +80260,15 @@ "updateContext": null }, "value": 0, - "start": 7855, - "end": 7856, + "start": 11241, + "end": 11242, "loc": { "start": { - "line": 243, + "line": 326, "column": 14 }, "end": { - "line": 243, + "line": 326, "column": 15 } } @@ -67540,15 +80286,15 @@ "binop": null, "updateContext": null }, - "start": 7856, - "end": 7857, + "start": 11242, + "end": 11243, "loc": { "start": { - "line": 243, + "line": 326, "column": 15 }, "end": { - "line": 243, + "line": 326, "column": 16 } } @@ -67566,15 +80312,15 @@ "binop": null }, "value": "left", - "start": 7858, - "end": 7862, + "start": 11244, + "end": 11248, "loc": { "start": { - "line": 243, + "line": 326, "column": 17 }, "end": { - "line": 243, + "line": 326, "column": 21 } } @@ -67593,15 +80339,15 @@ "updateContext": null }, "value": "=", - "start": 7863, - "end": 7864, + "start": 11249, + "end": 11250, "loc": { "start": { - "line": 243, + "line": 326, "column": 22 }, "end": { - "line": 243, + "line": 326, "column": 23 } } @@ -67620,15 +80366,15 @@ "updateContext": null }, "value": 0, - "start": 7865, - "end": 7866, + "start": 11251, + "end": 11252, "loc": { "start": { - "line": 243, + "line": 326, "column": 24 }, "end": { - "line": 243, + "line": 326, "column": 25 } } @@ -67646,15 +80392,15 @@ "binop": null, "updateContext": null }, - "start": 7866, - "end": 7867, + "start": 11252, + "end": 11253, "loc": { "start": { - "line": 243, + "line": 326, "column": 25 }, "end": { - "line": 243, + "line": 326, "column": 26 } } @@ -67674,15 +80420,15 @@ "updateContext": null }, "value": "do", - "start": 7872, - "end": 7874, + "start": 11258, + "end": 11260, "loc": { "start": { - "line": 244, + "line": 327, "column": 4 }, "end": { - "line": 244, + "line": 327, "column": 6 } } @@ -67699,15 +80445,15 @@ "postfix": false, "binop": null }, - "start": 7875, - "end": 7876, + "start": 11261, + "end": 11262, "loc": { "start": { - "line": 244, + "line": 327, "column": 7 }, "end": { - "line": 244, + "line": 327, "column": 8 } } @@ -67725,15 +80471,15 @@ "binop": null }, "value": "top", - "start": 7885, - "end": 7888, + "start": 11271, + "end": 11274, "loc": { "start": { - "line": 245, + "line": 328, "column": 8 }, "end": { - "line": 245, + "line": 328, "column": 11 } } @@ -67752,15 +80498,15 @@ "updateContext": null }, "value": "+=", - "start": 7889, - "end": 7891, + "start": 11275, + "end": 11277, "loc": { "start": { - "line": 245, + "line": 328, "column": 12 }, "end": { - "line": 245, + "line": 328, "column": 14 } } @@ -67778,15 +80524,15 @@ "binop": null }, "value": "element", - "start": 7892, - "end": 7899, + "start": 11278, + "end": 11285, "loc": { "start": { - "line": 245, + "line": 328, "column": 15 }, "end": { - "line": 245, + "line": 328, "column": 22 } } @@ -67804,15 +80550,15 @@ "binop": null, "updateContext": null }, - "start": 7899, - "end": 7900, + "start": 11285, + "end": 11286, "loc": { "start": { - "line": 245, + "line": 328, "column": 22 }, "end": { - "line": 245, + "line": 328, "column": 23 } } @@ -67830,15 +80576,15 @@ "binop": null }, "value": "offsetTop", - "start": 7900, - "end": 7909, + "start": 11286, + "end": 11295, "loc": { "start": { - "line": 245, + "line": 328, "column": 23 }, "end": { - "line": 245, + "line": 328, "column": 32 } } @@ -67857,15 +80603,15 @@ "updateContext": null }, "value": "||", - "start": 7910, - "end": 7912, + "start": 11296, + "end": 11298, "loc": { "start": { - "line": 245, + "line": 328, "column": 33 }, "end": { - "line": 245, + "line": 328, "column": 35 } } @@ -67884,15 +80630,15 @@ "updateContext": null }, "value": 0, - "start": 7913, - "end": 7914, + "start": 11299, + "end": 11300, "loc": { "start": { - "line": 245, + "line": 328, "column": 36 }, "end": { - "line": 245, + "line": 328, "column": 37 } } @@ -67910,15 +80656,15 @@ "binop": null, "updateContext": null }, - "start": 7914, - "end": 7915, + "start": 11300, + "end": 11301, "loc": { "start": { - "line": 245, + "line": 328, "column": 37 }, "end": { - "line": 245, + "line": 328, "column": 38 } } @@ -67936,15 +80682,15 @@ "binop": null }, "value": "left", - "start": 7924, - "end": 7928, + "start": 11310, + "end": 11314, "loc": { "start": { - "line": 246, + "line": 329, "column": 8 }, "end": { - "line": 246, + "line": 329, "column": 12 } } @@ -67963,15 +80709,15 @@ "updateContext": null }, "value": "+=", - "start": 7929, - "end": 7931, + "start": 11315, + "end": 11317, "loc": { "start": { - "line": 246, + "line": 329, "column": 13 }, "end": { - "line": 246, + "line": 329, "column": 15 } } @@ -67989,15 +80735,15 @@ "binop": null }, "value": "element", - "start": 7932, - "end": 7939, + "start": 11318, + "end": 11325, "loc": { "start": { - "line": 246, + "line": 329, "column": 16 }, "end": { - "line": 246, + "line": 329, "column": 23 } } @@ -68015,15 +80761,15 @@ "binop": null, "updateContext": null }, - "start": 7939, - "end": 7940, + "start": 11325, + "end": 11326, "loc": { "start": { - "line": 246, + "line": 329, "column": 23 }, "end": { - "line": 246, + "line": 329, "column": 24 } } @@ -68041,15 +80787,15 @@ "binop": null }, "value": "offsetLeft", - "start": 7940, - "end": 7950, + "start": 11326, + "end": 11336, "loc": { "start": { - "line": 246, + "line": 329, "column": 24 }, "end": { - "line": 246, + "line": 329, "column": 34 } } @@ -68068,15 +80814,15 @@ "updateContext": null }, "value": "||", - "start": 7951, - "end": 7953, + "start": 11337, + "end": 11339, "loc": { "start": { - "line": 246, + "line": 329, "column": 35 }, "end": { - "line": 246, + "line": 329, "column": 37 } } @@ -68095,15 +80841,15 @@ "updateContext": null }, "value": 0, - "start": 7954, - "end": 7955, + "start": 11340, + "end": 11341, "loc": { "start": { - "line": 246, + "line": 329, "column": 38 }, "end": { - "line": 246, + "line": 329, "column": 39 } } @@ -68121,15 +80867,15 @@ "binop": null, "updateContext": null }, - "start": 7955, - "end": 7956, + "start": 11341, + "end": 11342, "loc": { "start": { - "line": 246, + "line": 329, "column": 39 }, "end": { - "line": 246, + "line": 329, "column": 40 } } @@ -68147,15 +80893,15 @@ "binop": null }, "value": "element", - "start": 7965, - "end": 7972, + "start": 11351, + "end": 11358, "loc": { "start": { - "line": 247, + "line": 330, "column": 8 }, "end": { - "line": 247, + "line": 330, "column": 15 } } @@ -68174,15 +80920,15 @@ "updateContext": null }, "value": "=", - "start": 7973, - "end": 7974, + "start": 11359, + "end": 11360, "loc": { "start": { - "line": 247, + "line": 330, "column": 16 }, "end": { - "line": 247, + "line": 330, "column": 17 } } @@ -68200,15 +80946,15 @@ "binop": null }, "value": "element", - "start": 7975, - "end": 7982, + "start": 11361, + "end": 11368, "loc": { "start": { - "line": 247, + "line": 330, "column": 18 }, "end": { - "line": 247, + "line": 330, "column": 25 } } @@ -68226,15 +80972,15 @@ "binop": null, "updateContext": null }, - "start": 7982, - "end": 7983, + "start": 11368, + "end": 11369, "loc": { "start": { - "line": 247, + "line": 330, "column": 25 }, "end": { - "line": 247, + "line": 330, "column": 26 } } @@ -68252,15 +80998,15 @@ "binop": null }, "value": "offsetParent", - "start": 7983, - "end": 7995, + "start": 11369, + "end": 11381, "loc": { "start": { - "line": 247, + "line": 330, "column": 26 }, "end": { - "line": 247, + "line": 330, "column": 38 } } @@ -68278,15 +81024,15 @@ "binop": null, "updateContext": null }, - "start": 7995, - "end": 7996, + "start": 11381, + "end": 11382, "loc": { "start": { - "line": 247, + "line": 330, "column": 38 }, "end": { - "line": 247, + "line": 330, "column": 39 } } @@ -68303,15 +81049,15 @@ "postfix": false, "binop": null }, - "start": 8001, - "end": 8002, + "start": 11387, + "end": 11388, "loc": { "start": { - "line": 248, + "line": 331, "column": 4 }, "end": { - "line": 248, + "line": 331, "column": 5 } } @@ -68331,15 +81077,15 @@ "updateContext": null }, "value": "while", - "start": 8003, - "end": 8008, + "start": 11389, + "end": 11394, "loc": { "start": { - "line": 248, + "line": 331, "column": 6 }, "end": { - "line": 248, + "line": 331, "column": 11 } } @@ -68356,15 +81102,15 @@ "postfix": false, "binop": null }, - "start": 8009, - "end": 8010, + "start": 11395, + "end": 11396, "loc": { "start": { - "line": 248, + "line": 331, "column": 12 }, "end": { - "line": 248, + "line": 331, "column": 13 } } @@ -68382,15 +81128,15 @@ "binop": null }, "value": "element", - "start": 8010, - "end": 8017, + "start": 11396, + "end": 11403, "loc": { "start": { - "line": 248, + "line": 331, "column": 13 }, "end": { - "line": 248, + "line": 331, "column": 20 } } @@ -68407,15 +81153,15 @@ "postfix": false, "binop": null }, - "start": 8017, - "end": 8018, + "start": 11403, + "end": 11404, "loc": { "start": { - "line": 248, + "line": 331, "column": 20 }, "end": { - "line": 248, + "line": 331, "column": 21 } } @@ -68433,15 +81179,15 @@ "binop": null, "updateContext": null }, - "start": 8018, - "end": 8019, + "start": 11404, + "end": 11405, "loc": { "start": { - "line": 248, + "line": 331, "column": 21 }, "end": { - "line": 248, + "line": 331, "column": 22 } } @@ -68461,15 +81207,15 @@ "updateContext": null }, "value": "return", - "start": 8025, - "end": 8031, + "start": 11411, + "end": 11417, "loc": { "start": { - "line": 250, + "line": 333, "column": 4 }, "end": { - "line": 250, + "line": 333, "column": 10 } } @@ -68486,15 +81232,15 @@ "postfix": false, "binop": null }, - "start": 8032, - "end": 8033, + "start": 11418, + "end": 11419, "loc": { "start": { - "line": 250, + "line": 333, "column": 11 }, "end": { - "line": 250, + "line": 333, "column": 12 } } @@ -68512,15 +81258,15 @@ "binop": null }, "value": "top", - "start": 8042, - "end": 8045, + "start": 11428, + "end": 11431, "loc": { "start": { - "line": 251, + "line": 334, "column": 8 }, "end": { - "line": 251, + "line": 334, "column": 11 } } @@ -68538,15 +81284,15 @@ "binop": null, "updateContext": null }, - "start": 8045, - "end": 8046, + "start": 11431, + "end": 11432, "loc": { "start": { - "line": 251, + "line": 334, "column": 11 }, "end": { - "line": 251, + "line": 334, "column": 12 } } @@ -68564,15 +81310,15 @@ "binop": null }, "value": "top", - "start": 8047, - "end": 8050, + "start": 11433, + "end": 11436, "loc": { "start": { - "line": 251, + "line": 334, "column": 13 }, "end": { - "line": 251, + "line": 334, "column": 16 } } @@ -68590,15 +81336,15 @@ "binop": null, "updateContext": null }, - "start": 8050, - "end": 8051, + "start": 11436, + "end": 11437, "loc": { "start": { - "line": 251, + "line": 334, "column": 16 }, "end": { - "line": 251, + "line": 334, "column": 17 } } @@ -68616,15 +81362,15 @@ "binop": null }, "value": "left", - "start": 8060, - "end": 8064, + "start": 11446, + "end": 11450, "loc": { "start": { - "line": 252, + "line": 335, "column": 8 }, "end": { - "line": 252, + "line": 335, "column": 12 } } @@ -68642,15 +81388,15 @@ "binop": null, "updateContext": null }, - "start": 8064, - "end": 8065, + "start": 11450, + "end": 11451, "loc": { "start": { - "line": 252, + "line": 335, "column": 12 }, "end": { - "line": 252, + "line": 335, "column": 13 } } @@ -68668,15 +81414,15 @@ "binop": null }, "value": "left", - "start": 8066, - "end": 8070, + "start": 11452, + "end": 11456, "loc": { "start": { - "line": 252, + "line": 335, "column": 14 }, "end": { - "line": 252, + "line": 335, "column": 18 } } @@ -68693,15 +81439,15 @@ "postfix": false, "binop": null }, - "start": 8075, - "end": 8076, + "start": 11461, + "end": 11462, "loc": { "start": { - "line": 253, + "line": 336, "column": 4 }, "end": { - "line": 253, + "line": 336, "column": 5 } } @@ -68719,15 +81465,15 @@ "binop": null, "updateContext": null }, - "start": 8076, - "end": 8077, + "start": 11462, + "end": 11463, "loc": { "start": { - "line": 253, + "line": 336, "column": 5 }, "end": { - "line": 253, + "line": 336, "column": 6 } } @@ -68744,15 +81490,15 @@ "postfix": false, "binop": null }, - "start": 8078, - "end": 8079, + "start": 11464, + "end": 11465, "loc": { "start": { - "line": 254, + "line": 337, "column": 0 }, "end": { - "line": 254, + "line": 337, "column": 1 } } @@ -68772,15 +81518,15 @@ "updateContext": null }, "value": "export", - "start": 8081, - "end": 8087, + "start": 11467, + "end": 11473, "loc": { "start": { - "line": 256, + "line": 339, "column": 0 }, "end": { - "line": 256, + "line": 339, "column": 6 } } @@ -68797,15 +81543,15 @@ "postfix": false, "binop": null }, - "start": 8088, - "end": 8089, + "start": 11474, + "end": 11475, "loc": { "start": { - "line": 256, + "line": 339, "column": 7 }, "end": { - "line": 256, + "line": 339, "column": 8 } } @@ -68823,15 +81569,15 @@ "binop": null }, "value": "FastNavPlugin", - "start": 8089, - "end": 8102, + "start": 11475, + "end": 11488, "loc": { "start": { - "line": 256, + "line": 339, "column": 8 }, "end": { - "line": 256, + "line": 339, "column": 21 } } @@ -68848,15 +81594,15 @@ "postfix": false, "binop": null }, - "start": 8102, - "end": 8103, + "start": 11488, + "end": 11489, "loc": { "start": { - "line": 256, + "line": 339, "column": 21 }, "end": { - "line": 256, + "line": 339, "column": 22 } } @@ -68874,15 +81620,15 @@ "binop": null, "updateContext": null }, - "start": 8104, - "end": 8104, + "start": 11490, + "end": 11490, "loc": { "start": { - "line": 257, + "line": 340, "column": 0 }, "end": { - "line": 257, + "line": 340, "column": 0 } } diff --git a/docs/ast/source/plugins/TreeViewPlugin/ModelTreeView.js.json b/docs/ast/source/plugins/TreeViewPlugin/ModelTreeView.js.json index 0282c0b43f..14babb2895 100644 --- a/docs/ast/source/plugins/TreeViewPlugin/ModelTreeView.js.json +++ b/docs/ast/source/plugins/TreeViewPlugin/ModelTreeView.js.json @@ -1,28 +1,28 @@ { "type": "File", "start": 0, - "end": 31140, + "end": 31190, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 852, + "line": 853, "column": 23 } }, "program": { "type": "Program", "start": 0, - "end": 31140, + "end": 31190, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 852, + "line": 853, "column": 23 } }, @@ -402,14 +402,14 @@ { "type": "Identifier", "start": 491, - "end": 31115, + "end": 31165, "loc": { "start": { "line": 15, "column": 0 }, "end": { - "line": 850, + "line": 851, "column": 1 } }, @@ -435,14 +435,14 @@ "body": { "type": "ClassBody", "start": 511, - "end": 31115, + "end": 31165, "loc": { "start": { "line": 15, "column": 20 }, "end": { - "line": 850, + "line": 851, "column": 1 } }, @@ -46146,14 +46146,14 @@ { "type": "ClassMethod", "start": 23874, - "end": 25635, + "end": 25685, "loc": { "start": { "line": 644, "column": 4 }, "end": { - "line": 687, + "line": 688, "column": 5 } }, @@ -46203,14 +46203,14 @@ "body": { "type": "BlockStatement", "start": 23899, - "end": 25635, + "end": 25685, "loc": { "start": { "line": 644, "column": 29 }, "end": { - "line": 687, + "line": 688, "column": 5 } }, @@ -48171,7 +48171,7 @@ { "type": "ExpressionStatement", "start": 24753, - "end": 24818, + "end": 24794, "loc": { "start": { "line": 663, @@ -48179,13 +48179,13 @@ }, "end": { "line": 663, - "column": 73 + "column": 49 } }, "expression": { - "type": "CallExpression", + "type": "AssignmentExpression", "start": 24753, - "end": 24817, + "end": 24793, "loc": { "start": { "line": 663, @@ -48193,13 +48193,14 @@ }, "end": { "line": 663, - "column": 72 + "column": 48 } }, - "callee": { + "operator": "=", + "left": { "type": "MemberExpression", "start": 24753, - "end": 24778, + "end": 24785, "loc": { "start": { "line": 663, @@ -48207,13 +48208,13 @@ }, "end": { "line": 663, - "column": 33 + "column": 40 } }, "object": { - "type": "Identifier", + "type": "MemberExpression", "start": 24753, - "end": 24761, + "end": 24767, "loc": { "start": { "line": 663, @@ -48221,6 +48222,142 @@ }, "end": { "line": 663, + "column": 22 + } + }, + "object": { + "type": "Identifier", + "start": 24753, + "end": 24761, + "loc": { + "start": { + "line": 663, + "column": 8 + }, + "end": { + "line": 663, + "column": 16 + }, + "identifierName": "checkbox" + }, + "name": "checkbox" + }, + "property": { + "type": "Identifier", + "start": 24762, + "end": 24767, + "loc": { + "start": { + "line": 663, + "column": 17 + }, + "end": { + "line": 663, + "column": 22 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "StringLiteral", + "start": 24768, + "end": 24784, + "loc": { + "start": { + "line": 663, + "column": 23 + }, + "end": { + "line": 663, + "column": 39 + } + }, + "extra": { + "rawValue": "pointer-events", + "raw": "\"pointer-events\"" + }, + "value": "pointer-events" + }, + "computed": true + }, + "right": { + "type": "StringLiteral", + "start": 24788, + "end": 24793, + "loc": { + "start": { + "line": 663, + "column": 43 + }, + "end": { + "line": 663, + "column": 48 + } + }, + "extra": { + "rawValue": "all", + "raw": "\"all\"" + }, + "value": "all" + } + } + }, + { + "type": "ExpressionStatement", + "start": 24803, + "end": 24868, + "loc": { + "start": { + "line": 664, + "column": 8 + }, + "end": { + "line": 664, + "column": 73 + } + }, + "expression": { + "type": "CallExpression", + "start": 24803, + "end": 24867, + "loc": { + "start": { + "line": 664, + "column": 8 + }, + "end": { + "line": 664, + "column": 72 + } + }, + "callee": { + "type": "MemberExpression", + "start": 24803, + "end": 24828, + "loc": { + "start": { + "line": 664, + "column": 8 + }, + "end": { + "line": 664, + "column": 33 + } + }, + "object": { + "type": "Identifier", + "start": 24803, + "end": 24811, + "loc": { + "start": { + "line": 664, + "column": 8 + }, + "end": { + "line": 664, "column": 16 }, "identifierName": "checkbox" @@ -48229,15 +48366,15 @@ }, "property": { "type": "Identifier", - "start": 24762, - "end": 24778, + "start": 24812, + "end": 24828, "loc": { "start": { - "line": 663, + "line": 664, "column": 17 }, "end": { - "line": 663, + "line": 664, "column": 33 }, "identifierName": "addEventListener" @@ -48249,15 +48386,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 24779, - "end": 24787, + "start": 24829, + "end": 24837, "loc": { "start": { - "line": 663, + "line": 664, "column": 34 }, "end": { - "line": 663, + "line": 664, "column": 42 } }, @@ -48269,44 +48406,44 @@ }, { "type": "MemberExpression", - "start": 24789, - "end": 24816, + "start": 24839, + "end": 24866, "loc": { "start": { - "line": 663, + "line": 664, "column": 44 }, "end": { - "line": 663, + "line": 664, "column": 71 } }, "object": { "type": "ThisExpression", - "start": 24789, - "end": 24793, + "start": 24839, + "end": 24843, "loc": { "start": { - "line": 663, + "line": 664, "column": 44 }, "end": { - "line": 663, + "line": 664, "column": 48 } } }, "property": { "type": "Identifier", - "start": 24794, - "end": 24816, + "start": 24844, + "end": 24866, "loc": { "start": { - "line": 663, + "line": 664, "column": 49 }, "end": { - "line": 663, + "line": 664, "column": 71 }, "identifierName": "_checkboxChangeHandler" @@ -48320,57 +48457,57 @@ }, { "type": "ExpressionStatement", - "start": 24827, - "end": 24861, + "start": 24877, + "end": 24911, "loc": { "start": { - "line": 664, + "line": 665, "column": 8 }, "end": { - "line": 664, + "line": 665, "column": 42 } }, "expression": { "type": "CallExpression", - "start": 24827, - "end": 24860, + "start": 24877, + "end": 24910, "loc": { "start": { - "line": 664, + "line": 665, "column": 8 }, "end": { - "line": 664, + "line": 665, "column": 41 } }, "callee": { "type": "MemberExpression", - "start": 24827, - "end": 24850, + "start": 24877, + "end": 24900, "loc": { "start": { - "line": 664, + "line": 665, "column": 8 }, "end": { - "line": 664, + "line": 665, "column": 31 } }, "object": { "type": "Identifier", - "start": 24827, - "end": 24838, + "start": 24877, + "end": 24888, "loc": { "start": { - "line": 664, + "line": 665, "column": 8 }, "end": { - "line": 664, + "line": 665, "column": 19 }, "identifierName": "nodeElement" @@ -48379,15 +48516,15 @@ }, "property": { "type": "Identifier", - "start": 24839, - "end": 24850, + "start": 24889, + "end": 24900, "loc": { "start": { - "line": 664, + "line": 665, "column": 20 }, "end": { - "line": 664, + "line": 665, "column": 31 }, "identifierName": "appendChild" @@ -48399,15 +48536,15 @@ "arguments": [ { "type": "Identifier", - "start": 24851, - "end": 24859, + "start": 24901, + "end": 24909, "loc": { "start": { - "line": 664, + "line": 665, "column": 32 }, "end": { - "line": 664, + "line": 665, "column": 40 }, "identifierName": "checkbox" @@ -48419,44 +48556,44 @@ }, { "type": "VariableDeclaration", - "start": 24870, - "end": 24914, + "start": 24920, + "end": 24964, "loc": { "start": { - "line": 665, + "line": 666, "column": 8 }, "end": { - "line": 665, + "line": 666, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 24876, - "end": 24913, + "start": 24926, + "end": 24963, "loc": { "start": { - "line": 665, + "line": 666, "column": 14 }, "end": { - "line": 665, + "line": 666, "column": 51 } }, "id": { "type": "Identifier", - "start": 24876, - "end": 24880, + "start": 24926, + "end": 24930, "loc": { "start": { - "line": 665, + "line": 666, "column": 14 }, "end": { - "line": 665, + "line": 666, "column": 18 }, "identifierName": "span" @@ -48465,43 +48602,43 @@ }, "init": { "type": "CallExpression", - "start": 24883, - "end": 24913, + "start": 24933, + "end": 24963, "loc": { "start": { - "line": 665, + "line": 666, "column": 21 }, "end": { - "line": 665, + "line": 666, "column": 51 } }, "callee": { "type": "MemberExpression", - "start": 24883, - "end": 24905, + "start": 24933, + "end": 24955, "loc": { "start": { - "line": 665, + "line": 666, "column": 21 }, "end": { - "line": 665, + "line": 666, "column": 43 } }, "object": { "type": "Identifier", - "start": 24883, - "end": 24891, + "start": 24933, + "end": 24941, "loc": { "start": { - "line": 665, + "line": 666, "column": 21 }, "end": { - "line": 665, + "line": 666, "column": 29 }, "identifierName": "document" @@ -48510,15 +48647,15 @@ }, "property": { "type": "Identifier", - "start": 24892, - "end": 24905, + "start": 24942, + "end": 24955, "loc": { "start": { - "line": 665, + "line": 666, "column": 30 }, "end": { - "line": 665, + "line": 666, "column": 43 }, "identifierName": "createElement" @@ -48530,15 +48667,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 24906, - "end": 24912, + "start": 24956, + "end": 24962, "loc": { "start": { - "line": 665, + "line": 666, "column": 44 }, "end": { - "line": 665, + "line": 666, "column": 50 } }, @@ -48556,58 +48693,58 @@ }, { "type": "ExpressionStatement", - "start": 24923, - "end": 24953, + "start": 24973, + "end": 25003, "loc": { "start": { - "line": 666, + "line": 667, "column": 8 }, "end": { - "line": 666, + "line": 667, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 24923, - "end": 24952, + "start": 24973, + "end": 25002, "loc": { "start": { - "line": 666, + "line": 667, "column": 8 }, "end": { - "line": 666, + "line": 667, "column": 37 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24923, - "end": 24939, + "start": 24973, + "end": 24989, "loc": { "start": { - "line": 666, + "line": 667, "column": 8 }, "end": { - "line": 666, + "line": 667, "column": 24 } }, "object": { "type": "Identifier", - "start": 24923, - "end": 24927, + "start": 24973, + "end": 24977, "loc": { "start": { - "line": 666, + "line": 667, "column": 8 }, "end": { - "line": 666, + "line": 667, "column": 12 }, "identifierName": "span" @@ -48616,15 +48753,15 @@ }, "property": { "type": "Identifier", - "start": 24928, - "end": 24939, + "start": 24978, + "end": 24989, "loc": { "start": { - "line": 666, + "line": 667, "column": 13 }, "end": { - "line": 666, + "line": 667, "column": 24 }, "identifierName": "textContent" @@ -48635,29 +48772,29 @@ }, "right": { "type": "MemberExpression", - "start": 24942, - "end": 24952, + "start": 24992, + "end": 25002, "loc": { "start": { - "line": 666, + "line": 667, "column": 27 }, "end": { - "line": 666, + "line": 667, "column": 37 } }, "object": { "type": "Identifier", - "start": 24942, - "end": 24946, + "start": 24992, + "end": 24996, "loc": { "start": { - "line": 666, + "line": 667, "column": 27 }, "end": { - "line": 666, + "line": 667, "column": 31 }, "identifierName": "node" @@ -48666,15 +48803,15 @@ }, "property": { "type": "Identifier", - "start": 24947, - "end": 24952, + "start": 24997, + "end": 25002, "loc": { "start": { - "line": 666, + "line": 667, "column": 32 }, "end": { - "line": 666, + "line": 667, "column": 37 }, "identifierName": "title" @@ -48687,57 +48824,57 @@ }, { "type": "ExpressionStatement", - "start": 24962, - "end": 24992, + "start": 25012, + "end": 25042, "loc": { "start": { - "line": 667, + "line": 668, "column": 8 }, "end": { - "line": 667, + "line": 668, "column": 38 } }, "expression": { "type": "CallExpression", - "start": 24962, - "end": 24991, + "start": 25012, + "end": 25041, "loc": { "start": { - "line": 667, + "line": 668, "column": 8 }, "end": { - "line": 667, + "line": 668, "column": 37 } }, "callee": { "type": "MemberExpression", - "start": 24962, - "end": 24985, + "start": 25012, + "end": 25035, "loc": { "start": { - "line": 667, + "line": 668, "column": 8 }, "end": { - "line": 667, + "line": 668, "column": 31 } }, "object": { "type": "Identifier", - "start": 24962, - "end": 24973, + "start": 25012, + "end": 25023, "loc": { "start": { - "line": 667, + "line": 668, "column": 8 }, "end": { - "line": 667, + "line": 668, "column": 19 }, "identifierName": "nodeElement" @@ -48746,15 +48883,15 @@ }, "property": { "type": "Identifier", - "start": 24974, - "end": 24985, + "start": 25024, + "end": 25035, "loc": { "start": { - "line": 667, + "line": 668, "column": 20 }, "end": { - "line": 667, + "line": 668, "column": 31 }, "identifierName": "appendChild" @@ -48766,15 +48903,15 @@ "arguments": [ { "type": "Identifier", - "start": 24986, - "end": 24990, + "start": 25036, + "end": 25040, "loc": { "start": { - "line": 667, + "line": 668, "column": 32 }, "end": { - "line": 667, + "line": 668, "column": 36 }, "identifierName": "span" @@ -48786,58 +48923,58 @@ }, { "type": "ExpressionStatement", - "start": 25001, - "end": 25297, + "start": 25051, + "end": 25347, "loc": { "start": { - "line": 668, + "line": 669, "column": 8 }, "end": { - "line": 676, + "line": 677, "column": 10 } }, "expression": { "type": "AssignmentExpression", - "start": 25001, - "end": 25296, + "start": 25051, + "end": 25346, "loc": { "start": { - "line": 668, + "line": 669, "column": 8 }, "end": { - "line": 676, + "line": 677, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25001, - "end": 25019, + "start": 25051, + "end": 25069, "loc": { "start": { - "line": 668, + "line": 669, "column": 8 }, "end": { - "line": 668, + "line": 669, "column": 26 } }, "object": { "type": "Identifier", - "start": 25001, - "end": 25005, + "start": 25051, + "end": 25055, "loc": { "start": { - "line": 668, + "line": 669, "column": 8 }, "end": { - "line": 668, + "line": 669, "column": 12 }, "identifierName": "span" @@ -48846,15 +48983,15 @@ }, "property": { "type": "Identifier", - "start": 25006, - "end": 25019, + "start": 25056, + "end": 25069, "loc": { "start": { - "line": 668, + "line": 669, "column": 13 }, "end": { - "line": 668, + "line": 669, "column": 26 }, "identifierName": "oncontextmenu" @@ -48865,15 +49002,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 25022, - "end": 25296, + "start": 25072, + "end": 25346, "loc": { "start": { - "line": 668, + "line": 669, "column": 29 }, "end": { - "line": 676, + "line": 677, "column": 9 } }, @@ -48884,15 +49021,15 @@ "params": [ { "type": "Identifier", - "start": 25023, - "end": 25024, + "start": 25073, + "end": 25074, "loc": { "start": { - "line": 668, + "line": 669, "column": 30 }, "end": { - "line": 668, + "line": 669, "column": 31 }, "identifierName": "e" @@ -48902,101 +49039,101 @@ ], "body": { "type": "BlockStatement", - "start": 25029, - "end": 25296, + "start": 25079, + "end": 25346, "loc": { "start": { - "line": 668, + "line": 669, "column": 36 }, "end": { - "line": 676, + "line": 677, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 25043, - "end": 25254, + "start": 25093, + "end": 25304, "loc": { "start": { - "line": 669, + "line": 670, "column": 12 }, "end": { - "line": 674, + "line": 675, "column": 15 } }, "expression": { "type": "CallExpression", - "start": 25043, - "end": 25253, + "start": 25093, + "end": 25303, "loc": { "start": { - "line": 669, + "line": 670, "column": 12 }, "end": { - "line": 674, + "line": 675, "column": 14 } }, "callee": { "type": "MemberExpression", - "start": 25043, - "end": 25068, + "start": 25093, + "end": 25118, "loc": { "start": { - "line": 669, + "line": 670, "column": 12 }, "end": { - "line": 669, + "line": 670, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 25043, - "end": 25063, + "start": 25093, + "end": 25113, "loc": { "start": { - "line": 669, + "line": 670, "column": 12 }, "end": { - "line": 669, + "line": 670, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 25043, - "end": 25047, + "start": 25093, + "end": 25097, "loc": { "start": { - "line": 669, + "line": 670, "column": 12 }, "end": { - "line": 669, + "line": 670, "column": 16 } } }, "property": { "type": "Identifier", - "start": 25048, - "end": 25063, + "start": 25098, + "end": 25113, "loc": { "start": { - "line": 669, + "line": 670, "column": 17 }, "end": { - "line": 669, + "line": 670, "column": 32 }, "identifierName": "_treeViewPlugin" @@ -49007,15 +49144,15 @@ }, "property": { "type": "Identifier", - "start": 25064, - "end": 25068, + "start": 25114, + "end": 25118, "loc": { "start": { - "line": 669, + "line": 670, "column": 33 }, "end": { - "line": 669, + "line": 670, "column": 37 }, "identifierName": "fire" @@ -49027,15 +49164,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 25069, - "end": 25082, + "start": 25119, + "end": 25132, "loc": { "start": { - "line": 669, + "line": 670, "column": 38 }, "end": { - "line": 669, + "line": 670, "column": 51 } }, @@ -49047,30 +49184,30 @@ }, { "type": "ObjectExpression", - "start": 25084, - "end": 25252, + "start": 25134, + "end": 25302, "loc": { "start": { - "line": 669, + "line": 670, "column": 53 }, "end": { - "line": 674, + "line": 675, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 25102, - "end": 25110, + "start": 25152, + "end": 25160, "loc": { "start": { - "line": 670, + "line": 671, "column": 16 }, "end": { - "line": 670, + "line": 671, "column": 24 } }, @@ -49079,15 +49216,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25102, - "end": 25107, + "start": 25152, + "end": 25157, "loc": { "start": { - "line": 670, + "line": 671, "column": 16 }, "end": { - "line": 670, + "line": 671, "column": 21 }, "identifierName": "event" @@ -49096,15 +49233,15 @@ }, "value": { "type": "Identifier", - "start": 25109, - "end": 25110, + "start": 25159, + "end": 25160, "loc": { "start": { - "line": 670, + "line": 671, "column": 23 }, "end": { - "line": 670, + "line": 671, "column": 24 }, "identifierName": "e" @@ -49114,15 +49251,15 @@ }, { "type": "ObjectProperty", - "start": 25128, - "end": 25148, + "start": 25178, + "end": 25198, "loc": { "start": { - "line": 671, + "line": 672, "column": 16 }, "end": { - "line": 671, + "line": 672, "column": 36 } }, @@ -49131,15 +49268,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25128, - "end": 25134, + "start": 25178, + "end": 25184, "loc": { "start": { - "line": 671, + "line": 672, "column": 16 }, "end": { - "line": 671, + "line": 672, "column": 22 }, "identifierName": "viewer" @@ -49148,44 +49285,44 @@ }, "value": { "type": "MemberExpression", - "start": 25136, - "end": 25148, + "start": 25186, + "end": 25198, "loc": { "start": { - "line": 671, + "line": 672, "column": 24 }, "end": { - "line": 671, + "line": 672, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 25136, - "end": 25140, + "start": 25186, + "end": 25190, "loc": { "start": { - "line": 671, + "line": 672, "column": 24 }, "end": { - "line": 671, + "line": 672, "column": 28 } } }, "property": { "type": "Identifier", - "start": 25141, - "end": 25148, + "start": 25191, + "end": 25198, "loc": { "start": { - "line": 671, + "line": 672, "column": 29 }, "end": { - "line": 671, + "line": 672, "column": 36 }, "identifierName": "_viewer" @@ -49197,15 +49334,15 @@ }, { "type": "ObjectProperty", - "start": 25166, - "end": 25202, + "start": 25216, + "end": 25252, "loc": { "start": { - "line": 672, + "line": 673, "column": 16 }, "end": { - "line": 672, + "line": 673, "column": 52 } }, @@ -49214,15 +49351,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25166, - "end": 25180, + "start": 25216, + "end": 25230, "loc": { "start": { - "line": 672, + "line": 673, "column": 16 }, "end": { - "line": 672, + "line": 673, "column": 30 }, "identifierName": "treeViewPlugin" @@ -49231,44 +49368,44 @@ }, "value": { "type": "MemberExpression", - "start": 25182, - "end": 25202, + "start": 25232, + "end": 25252, "loc": { "start": { - "line": 672, + "line": 673, "column": 32 }, "end": { - "line": 672, + "line": 673, "column": 52 } }, "object": { "type": "ThisExpression", - "start": 25182, - "end": 25186, + "start": 25232, + "end": 25236, "loc": { "start": { - "line": 672, + "line": 673, "column": 32 }, "end": { - "line": 672, + "line": 673, "column": 36 } } }, "property": { "type": "Identifier", - "start": 25187, - "end": 25202, + "start": 25237, + "end": 25252, "loc": { "start": { - "line": 672, + "line": 673, "column": 37 }, "end": { - "line": 672, + "line": 673, "column": 52 }, "identifierName": "_treeViewPlugin" @@ -49280,15 +49417,15 @@ }, { "type": "ObjectProperty", - "start": 25220, - "end": 25238, + "start": 25270, + "end": 25288, "loc": { "start": { - "line": 673, + "line": 674, "column": 16 }, "end": { - "line": 673, + "line": 674, "column": 34 } }, @@ -49297,15 +49434,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25220, - "end": 25232, + "start": 25270, + "end": 25282, "loc": { "start": { - "line": 673, + "line": 674, "column": 16 }, "end": { - "line": 673, + "line": 674, "column": 28 }, "identifierName": "treeViewNode" @@ -49314,15 +49451,15 @@ }, "value": { "type": "Identifier", - "start": 25234, - "end": 25238, + "start": 25284, + "end": 25288, "loc": { "start": { - "line": 673, + "line": 674, "column": 30 }, "end": { - "line": 673, + "line": 674, "column": 34 }, "identifierName": "node" @@ -49337,57 +49474,57 @@ }, { "type": "ExpressionStatement", - "start": 25267, - "end": 25286, + "start": 25317, + "end": 25336, "loc": { "start": { - "line": 675, + "line": 676, "column": 12 }, "end": { - "line": 675, + "line": 676, "column": 31 } }, "expression": { "type": "CallExpression", - "start": 25267, - "end": 25285, + "start": 25317, + "end": 25335, "loc": { "start": { - "line": 675, + "line": 676, "column": 12 }, "end": { - "line": 675, + "line": 676, "column": 30 } }, "callee": { "type": "MemberExpression", - "start": 25267, - "end": 25283, + "start": 25317, + "end": 25333, "loc": { "start": { - "line": 675, + "line": 676, "column": 12 }, "end": { - "line": 675, + "line": 676, "column": 28 } }, "object": { "type": "Identifier", - "start": 25267, - "end": 25268, + "start": 25317, + "end": 25318, "loc": { "start": { - "line": 675, + "line": 676, "column": 12 }, "end": { - "line": 675, + "line": 676, "column": 13 }, "identifierName": "e" @@ -49396,15 +49533,15 @@ }, "property": { "type": "Identifier", - "start": 25269, - "end": 25283, + "start": 25319, + "end": 25333, "loc": { "start": { - "line": 675, + "line": 676, "column": 14 }, "end": { - "line": 675, + "line": 676, "column": 28 }, "identifierName": "preventDefault" @@ -49424,58 +49561,58 @@ }, { "type": "ExpressionStatement", - "start": 25306, - "end": 25601, + "start": 25356, + "end": 25651, "loc": { "start": { - "line": 677, + "line": 678, "column": 8 }, "end": { - "line": 685, + "line": 686, "column": 10 } }, "expression": { "type": "AssignmentExpression", - "start": 25306, - "end": 25600, + "start": 25356, + "end": 25650, "loc": { "start": { - "line": 677, + "line": 678, "column": 8 }, "end": { - "line": 685, + "line": 686, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25306, - "end": 25318, + "start": 25356, + "end": 25368, "loc": { "start": { - "line": 677, + "line": 678, "column": 8 }, "end": { - "line": 677, + "line": 678, "column": 20 } }, "object": { "type": "Identifier", - "start": 25306, - "end": 25310, + "start": 25356, + "end": 25360, "loc": { "start": { - "line": 677, + "line": 678, "column": 8 }, "end": { - "line": 677, + "line": 678, "column": 12 }, "identifierName": "span" @@ -49484,15 +49621,15 @@ }, "property": { "type": "Identifier", - "start": 25311, - "end": 25318, + "start": 25361, + "end": 25368, "loc": { "start": { - "line": 677, + "line": 678, "column": 13 }, "end": { - "line": 677, + "line": 678, "column": 20 }, "identifierName": "onclick" @@ -49503,15 +49640,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 25321, - "end": 25600, + "start": 25371, + "end": 25650, "loc": { "start": { - "line": 677, + "line": 678, "column": 23 }, "end": { - "line": 685, + "line": 686, "column": 9 } }, @@ -49522,15 +49659,15 @@ "params": [ { "type": "Identifier", - "start": 25322, - "end": 25323, + "start": 25372, + "end": 25373, "loc": { "start": { - "line": 677, + "line": 678, "column": 24 }, "end": { - "line": 677, + "line": 678, "column": 25 }, "identifierName": "e" @@ -49540,101 +49677,101 @@ ], "body": { "type": "BlockStatement", - "start": 25328, - "end": 25600, + "start": 25378, + "end": 25650, "loc": { "start": { - "line": 677, + "line": 678, "column": 30 }, "end": { - "line": 685, + "line": 686, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 25342, - "end": 25558, + "start": 25392, + "end": 25608, "loc": { "start": { - "line": 678, + "line": 679, "column": 12 }, "end": { - "line": 683, + "line": 684, "column": 15 } }, "expression": { "type": "CallExpression", - "start": 25342, - "end": 25557, + "start": 25392, + "end": 25607, "loc": { "start": { - "line": 678, + "line": 679, "column": 12 }, "end": { - "line": 683, + "line": 684, "column": 14 } }, "callee": { "type": "MemberExpression", - "start": 25342, - "end": 25367, + "start": 25392, + "end": 25417, "loc": { "start": { - "line": 678, + "line": 679, "column": 12 }, "end": { - "line": 678, + "line": 679, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 25342, - "end": 25362, + "start": 25392, + "end": 25412, "loc": { "start": { - "line": 678, + "line": 679, "column": 12 }, "end": { - "line": 678, + "line": 679, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 25342, - "end": 25346, + "start": 25392, + "end": 25396, "loc": { "start": { - "line": 678, + "line": 679, "column": 12 }, "end": { - "line": 678, + "line": 679, "column": 16 } } }, "property": { "type": "Identifier", - "start": 25347, - "end": 25362, + "start": 25397, + "end": 25412, "loc": { "start": { - "line": 678, + "line": 679, "column": 17 }, "end": { - "line": 678, + "line": 679, "column": 32 }, "identifierName": "_treeViewPlugin" @@ -49645,15 +49782,15 @@ }, "property": { "type": "Identifier", - "start": 25363, - "end": 25367, + "start": 25413, + "end": 25417, "loc": { "start": { - "line": 678, + "line": 679, "column": 33 }, "end": { - "line": 678, + "line": 679, "column": 37 }, "identifierName": "fire" @@ -49665,15 +49802,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 25368, - "end": 25386, + "start": 25418, + "end": 25436, "loc": { "start": { - "line": 678, + "line": 679, "column": 38 }, "end": { - "line": 678, + "line": 679, "column": 56 } }, @@ -49685,30 +49822,30 @@ }, { "type": "ObjectExpression", - "start": 25388, - "end": 25556, + "start": 25438, + "end": 25606, "loc": { "start": { - "line": 678, + "line": 679, "column": 58 }, "end": { - "line": 683, + "line": 684, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 25406, - "end": 25414, + "start": 25456, + "end": 25464, "loc": { "start": { - "line": 679, + "line": 680, "column": 16 }, "end": { - "line": 679, + "line": 680, "column": 24 } }, @@ -49717,15 +49854,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25406, - "end": 25411, + "start": 25456, + "end": 25461, "loc": { "start": { - "line": 679, + "line": 680, "column": 16 }, "end": { - "line": 679, + "line": 680, "column": 21 }, "identifierName": "event" @@ -49734,15 +49871,15 @@ }, "value": { "type": "Identifier", - "start": 25413, - "end": 25414, + "start": 25463, + "end": 25464, "loc": { "start": { - "line": 679, + "line": 680, "column": 23 }, "end": { - "line": 679, + "line": 680, "column": 24 }, "identifierName": "e" @@ -49752,15 +49889,15 @@ }, { "type": "ObjectProperty", - "start": 25432, - "end": 25452, + "start": 25482, + "end": 25502, "loc": { "start": { - "line": 680, + "line": 681, "column": 16 }, "end": { - "line": 680, + "line": 681, "column": 36 } }, @@ -49769,15 +49906,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25432, - "end": 25438, + "start": 25482, + "end": 25488, "loc": { "start": { - "line": 680, + "line": 681, "column": 16 }, "end": { - "line": 680, + "line": 681, "column": 22 }, "identifierName": "viewer" @@ -49786,44 +49923,44 @@ }, "value": { "type": "MemberExpression", - "start": 25440, - "end": 25452, + "start": 25490, + "end": 25502, "loc": { "start": { - "line": 680, + "line": 681, "column": 24 }, "end": { - "line": 680, + "line": 681, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 25440, - "end": 25444, + "start": 25490, + "end": 25494, "loc": { "start": { - "line": 680, + "line": 681, "column": 24 }, "end": { - "line": 680, + "line": 681, "column": 28 } } }, "property": { "type": "Identifier", - "start": 25445, - "end": 25452, + "start": 25495, + "end": 25502, "loc": { "start": { - "line": 680, + "line": 681, "column": 29 }, "end": { - "line": 680, + "line": 681, "column": 36 }, "identifierName": "_viewer" @@ -49835,15 +49972,15 @@ }, { "type": "ObjectProperty", - "start": 25470, - "end": 25506, + "start": 25520, + "end": 25556, "loc": { "start": { - "line": 681, + "line": 682, "column": 16 }, "end": { - "line": 681, + "line": 682, "column": 52 } }, @@ -49852,15 +49989,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25470, - "end": 25484, + "start": 25520, + "end": 25534, "loc": { "start": { - "line": 681, + "line": 682, "column": 16 }, "end": { - "line": 681, + "line": 682, "column": 30 }, "identifierName": "treeViewPlugin" @@ -49869,44 +50006,44 @@ }, "value": { "type": "MemberExpression", - "start": 25486, - "end": 25506, + "start": 25536, + "end": 25556, "loc": { "start": { - "line": 681, + "line": 682, "column": 32 }, "end": { - "line": 681, + "line": 682, "column": 52 } }, "object": { "type": "ThisExpression", - "start": 25486, - "end": 25490, + "start": 25536, + "end": 25540, "loc": { "start": { - "line": 681, + "line": 682, "column": 32 }, "end": { - "line": 681, + "line": 682, "column": 36 } } }, "property": { "type": "Identifier", - "start": 25491, - "end": 25506, + "start": 25541, + "end": 25556, "loc": { "start": { - "line": 681, + "line": 682, "column": 37 }, "end": { - "line": 681, + "line": 682, "column": 52 }, "identifierName": "_treeViewPlugin" @@ -49918,15 +50055,15 @@ }, { "type": "ObjectProperty", - "start": 25524, - "end": 25542, + "start": 25574, + "end": 25592, "loc": { "start": { - "line": 682, + "line": 683, "column": 16 }, "end": { - "line": 682, + "line": 683, "column": 34 } }, @@ -49935,15 +50072,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25524, - "end": 25536, + "start": 25574, + "end": 25586, "loc": { "start": { - "line": 682, + "line": 683, "column": 16 }, "end": { - "line": 682, + "line": 683, "column": 28 }, "identifierName": "treeViewNode" @@ -49952,15 +50089,15 @@ }, "value": { "type": "Identifier", - "start": 25538, - "end": 25542, + "start": 25588, + "end": 25592, "loc": { "start": { - "line": 682, + "line": 683, "column": 30 }, "end": { - "line": 682, + "line": 683, "column": 34 }, "identifierName": "node" @@ -49975,57 +50112,57 @@ }, { "type": "ExpressionStatement", - "start": 25571, - "end": 25590, + "start": 25621, + "end": 25640, "loc": { "start": { - "line": 684, + "line": 685, "column": 12 }, "end": { - "line": 684, + "line": 685, "column": 31 } }, "expression": { "type": "CallExpression", - "start": 25571, - "end": 25589, + "start": 25621, + "end": 25639, "loc": { "start": { - "line": 684, + "line": 685, "column": 12 }, "end": { - "line": 684, + "line": 685, "column": 30 } }, "callee": { "type": "MemberExpression", - "start": 25571, - "end": 25587, + "start": 25621, + "end": 25637, "loc": { "start": { - "line": 684, + "line": 685, "column": 12 }, "end": { - "line": 684, + "line": 685, "column": 28 } }, "object": { "type": "Identifier", - "start": 25571, - "end": 25572, + "start": 25621, + "end": 25622, "loc": { "start": { - "line": 684, + "line": 685, "column": 12 }, "end": { - "line": 684, + "line": 685, "column": 13 }, "identifierName": "e" @@ -50034,15 +50171,15 @@ }, "property": { "type": "Identifier", - "start": 25573, - "end": 25587, + "start": 25623, + "end": 25637, "loc": { "start": { - "line": 684, + "line": 685, "column": 14 }, "end": { - "line": 684, + "line": 685, "column": 28 }, "identifierName": "preventDefault" @@ -50062,29 +50199,29 @@ }, { "type": "ReturnStatement", - "start": 25610, - "end": 25629, + "start": 25660, + "end": 25679, "loc": { "start": { - "line": 686, + "line": 687, "column": 8 }, "end": { - "line": 686, + "line": 687, "column": 27 } }, "argument": { "type": "Identifier", - "start": 25617, - "end": 25628, + "start": 25667, + "end": 25678, "loc": { "start": { - "line": 686, + "line": 687, "column": 15 }, "end": { - "line": 686, + "line": 687, "column": 26 }, "identifierName": "nodeElement" @@ -50100,15 +50237,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n * @param depth\n ", - "start": 25641, - "end": 25688, + "start": 25691, + "end": 25738, "loc": { "start": { - "line": 689, + "line": 690, "column": 4 }, "end": { - "line": 692, + "line": 693, "column": 7 } } @@ -50117,15 +50254,15 @@ }, { "type": "ClassMethod", - "start": 25693, - "end": 26545, + "start": 25743, + "end": 26595, "loc": { "start": { - "line": 693, + "line": 694, "column": 4 }, "end": { - "line": 714, + "line": 715, "column": 5 } }, @@ -50133,15 +50270,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25693, - "end": 25706, + "start": 25743, + "end": 25756, "loc": { "start": { - "line": 693, + "line": 694, "column": 4 }, "end": { - "line": 693, + "line": 694, "column": 17 }, "identifierName": "expandToDepth" @@ -50157,15 +50294,15 @@ "params": [ { "type": "Identifier", - "start": 25707, - "end": 25712, + "start": 25757, + "end": 25762, "loc": { "start": { - "line": 693, + "line": 694, "column": 18 }, "end": { - "line": 693, + "line": 694, "column": 23 }, "identifierName": "depth" @@ -50175,59 +50312,59 @@ ], "body": { "type": "BlockStatement", - "start": 25714, - "end": 26545, + "start": 25764, + "end": 26595, "loc": { "start": { - "line": 693, + "line": 694, "column": 25 }, "end": { - "line": 714, + "line": 715, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 25724, - "end": 26377, + "start": 25774, + "end": 26427, "loc": { "start": { - "line": 694, + "line": 695, "column": 8 }, "end": { - "line": 709, + "line": 710, "column": 10 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 25730, - "end": 26376, + "start": 25780, + "end": 26426, "loc": { "start": { - "line": 694, + "line": 695, "column": 14 }, "end": { - "line": 709, + "line": 710, "column": 9 } }, "id": { "type": "Identifier", - "start": 25730, - "end": 25736, + "start": 25780, + "end": 25786, "loc": { "start": { - "line": 694, + "line": 695, "column": 14 }, "end": { - "line": 694, + "line": 695, "column": 20 }, "identifierName": "expand" @@ -50236,15 +50373,15 @@ }, "init": { "type": "ArrowFunctionExpression", - "start": 25739, - "end": 26376, + "start": 25789, + "end": 26426, "loc": { "start": { - "line": 694, + "line": 695, "column": 23 }, "end": { - "line": 709, + "line": 710, "column": 9 } }, @@ -50255,15 +50392,15 @@ "params": [ { "type": "Identifier", - "start": 25740, - "end": 25744, + "start": 25790, + "end": 25794, "loc": { "start": { - "line": 694, + "line": 695, "column": 24 }, "end": { - "line": 694, + "line": 695, "column": 28 }, "identifierName": "node" @@ -50272,15 +50409,15 @@ }, { "type": "Identifier", - "start": 25746, - "end": 25756, + "start": 25796, + "end": 25806, "loc": { "start": { - "line": 694, + "line": 695, "column": 30 }, "end": { - "line": 694, + "line": 695, "column": 40 }, "identifierName": "countDepth" @@ -50290,58 +50427,58 @@ ], "body": { "type": "BlockStatement", - "start": 25761, - "end": 26376, + "start": 25811, + "end": 26426, "loc": { "start": { - "line": 694, + "line": 695, "column": 45 }, "end": { - "line": 709, + "line": 710, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 25775, - "end": 25840, + "start": 25825, + "end": 25890, "loc": { "start": { - "line": 695, + "line": 696, "column": 12 }, "end": { - "line": 697, + "line": 698, "column": 13 } }, "test": { "type": "BinaryExpression", - "start": 25779, - "end": 25799, + "start": 25829, + "end": 25849, "loc": { "start": { - "line": 695, + "line": 696, "column": 16 }, "end": { - "line": 695, + "line": 696, "column": 36 } }, "left": { "type": "Identifier", - "start": 25779, - "end": 25789, + "start": 25829, + "end": 25839, "loc": { "start": { - "line": 695, + "line": 696, "column": 16 }, "end": { - "line": 695, + "line": 696, "column": 26 }, "identifierName": "countDepth" @@ -50351,15 +50488,15 @@ "operator": "===", "right": { "type": "Identifier", - "start": 25794, - "end": 25799, + "start": 25844, + "end": 25849, "loc": { "start": { - "line": 695, + "line": 696, "column": 31 }, "end": { - "line": 695, + "line": 696, "column": 36 }, "identifierName": "depth" @@ -50369,30 +50506,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 25801, - "end": 25840, + "start": 25851, + "end": 25890, "loc": { "start": { - "line": 695, + "line": 696, "column": 38 }, "end": { - "line": 697, + "line": 698, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 25819, - "end": 25826, + "start": 25869, + "end": 25876, "loc": { "start": { - "line": 696, + "line": 697, "column": 16 }, "end": { - "line": 696, + "line": 697, "column": 23 } }, @@ -50405,44 +50542,44 @@ }, { "type": "VariableDeclaration", - "start": 25853, - "end": 25880, + "start": 25903, + "end": 25930, "loc": { "start": { - "line": 698, + "line": 699, "column": 12 }, "end": { - "line": 698, + "line": 699, "column": 39 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 25859, - "end": 25879, + "start": 25909, + "end": 25929, "loc": { "start": { - "line": 698, + "line": 699, "column": 18 }, "end": { - "line": 698, + "line": 699, "column": 38 } }, "id": { "type": "Identifier", - "start": 25859, - "end": 25865, + "start": 25909, + "end": 25915, "loc": { "start": { - "line": 698, + "line": 699, "column": 18 }, "end": { - "line": 698, + "line": 699, "column": 24 }, "identifierName": "nodeId" @@ -50451,29 +50588,29 @@ }, "init": { "type": "MemberExpression", - "start": 25868, - "end": 25879, + "start": 25918, + "end": 25929, "loc": { "start": { - "line": 698, + "line": 699, "column": 27 }, "end": { - "line": 698, + "line": 699, "column": 38 } }, "object": { "type": "Identifier", - "start": 25868, - "end": 25872, + "start": 25918, + "end": 25922, "loc": { "start": { - "line": 698, + "line": 699, "column": 27 }, "end": { - "line": 698, + "line": 699, "column": 31 }, "identifierName": "node" @@ -50482,15 +50619,15 @@ }, "property": { "type": "Identifier", - "start": 25873, - "end": 25879, + "start": 25923, + "end": 25929, "loc": { "start": { - "line": 698, + "line": 699, "column": 32 }, "end": { - "line": 698, + "line": 699, "column": 38 }, "identifierName": "nodeId" @@ -50505,44 +50642,44 @@ }, { "type": "VariableDeclaration", - "start": 25893, - "end": 25936, + "start": 25943, + "end": 25986, "loc": { "start": { - "line": 699, + "line": 700, "column": 12 }, "end": { - "line": 699, + "line": 700, "column": 55 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 25899, - "end": 25935, + "start": 25949, + "end": 25985, "loc": { "start": { - "line": 699, + "line": 700, "column": 18 }, "end": { - "line": 699, + "line": 700, "column": 54 } }, "id": { "type": "Identifier", - "start": 25899, - "end": 25914, + "start": 25949, + "end": 25964, "loc": { "start": { - "line": 699, + "line": 700, "column": 18 }, "end": { - "line": 699, + "line": 700, "column": 33 }, "identifierName": "switchElementId" @@ -50551,29 +50688,29 @@ }, "init": { "type": "BinaryExpression", - "start": 25917, - "end": 25935, + "start": 25967, + "end": 25985, "loc": { "start": { - "line": 699, + "line": 700, "column": 36 }, "end": { - "line": 699, + "line": 700, "column": 54 } }, "left": { "type": "StringLiteral", - "start": 25917, - "end": 25926, + "start": 25967, + "end": 25976, "loc": { "start": { - "line": 699, + "line": 700, "column": 36 }, "end": { - "line": 699, + "line": 700, "column": 45 } }, @@ -50586,15 +50723,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 25929, - "end": 25935, + "start": 25979, + "end": 25985, "loc": { "start": { - "line": 699, + "line": 700, "column": 48 }, "end": { - "line": 699, + "line": 700, "column": 54 }, "identifierName": "nodeId" @@ -50608,44 +50745,44 @@ }, { "type": "VariableDeclaration", - "start": 25949, - "end": 26012, + "start": 25999, + "end": 26062, "loc": { "start": { - "line": 700, + "line": 701, "column": 12 }, "end": { - "line": 700, + "line": 701, "column": 75 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 25955, - "end": 26011, + "start": 26005, + "end": 26061, "loc": { "start": { - "line": 700, + "line": 701, "column": 18 }, "end": { - "line": 700, + "line": 701, "column": 74 } }, "id": { "type": "Identifier", - "start": 25955, - "end": 25968, + "start": 26005, + "end": 26018, "loc": { "start": { - "line": 700, + "line": 701, "column": 18 }, "end": { - "line": 700, + "line": 701, "column": 31 }, "identifierName": "switchElement" @@ -50654,43 +50791,43 @@ }, "init": { "type": "CallExpression", - "start": 25971, - "end": 26011, + "start": 26021, + "end": 26061, "loc": { "start": { - "line": 700, + "line": 701, "column": 34 }, "end": { - "line": 700, + "line": 701, "column": 74 } }, "callee": { "type": "MemberExpression", - "start": 25971, - "end": 25994, + "start": 26021, + "end": 26044, "loc": { "start": { - "line": 700, + "line": 701, "column": 34 }, "end": { - "line": 700, + "line": 701, "column": 57 } }, "object": { "type": "Identifier", - "start": 25971, - "end": 25979, + "start": 26021, + "end": 26029, "loc": { "start": { - "line": 700, + "line": 701, "column": 34 }, "end": { - "line": 700, + "line": 701, "column": 42 }, "identifierName": "document" @@ -50699,15 +50836,15 @@ }, "property": { "type": "Identifier", - "start": 25980, - "end": 25994, + "start": 26030, + "end": 26044, "loc": { "start": { - "line": 700, + "line": 701, "column": 43 }, "end": { - "line": 700, + "line": 701, "column": 57 }, "identifierName": "getElementById" @@ -50719,15 +50856,15 @@ "arguments": [ { "type": "Identifier", - "start": 25995, - "end": 26010, + "start": 26045, + "end": 26060, "loc": { "start": { - "line": 700, + "line": 701, "column": 58 }, "end": { - "line": 700, + "line": 701, "column": 73 }, "identifierName": "switchElementId" @@ -50742,29 +50879,29 @@ }, { "type": "IfStatement", - "start": 26025, - "end": 26366, + "start": 26075, + "end": 26416, "loc": { "start": { - "line": 701, + "line": 702, "column": 12 }, "end": { - "line": 708, + "line": 709, "column": 13 } }, "test": { "type": "Identifier", - "start": 26029, - "end": 26042, + "start": 26079, + "end": 26092, "loc": { "start": { - "line": 701, + "line": 702, "column": 16 }, "end": { - "line": 701, + "line": 702, "column": 29 }, "identifierName": "switchElement" @@ -50773,87 +50910,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 26044, - "end": 26366, + "start": 26094, + "end": 26416, "loc": { "start": { - "line": 701, + "line": 702, "column": 31 }, "end": { - "line": 708, + "line": 709, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 26062, - "end": 26103, + "start": 26112, + "end": 26153, "loc": { "start": { - "line": 702, + "line": 703, "column": 16 }, "end": { - "line": 702, + "line": 703, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 26062, - "end": 26102, + "start": 26112, + "end": 26152, "loc": { "start": { - "line": 702, + "line": 703, "column": 16 }, "end": { - "line": 702, + "line": 703, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 26062, - "end": 26087, + "start": 26112, + "end": 26137, "loc": { "start": { - "line": 702, + "line": 703, "column": 16 }, "end": { - "line": 702, + "line": 703, "column": 41 } }, "object": { "type": "ThisExpression", - "start": 26062, - "end": 26066, + "start": 26112, + "end": 26116, "loc": { "start": { - "line": 702, + "line": 703, "column": 16 }, "end": { - "line": 702, + "line": 703, "column": 20 } } }, "property": { "type": "Identifier", - "start": 26067, - "end": 26087, + "start": 26117, + "end": 26137, "loc": { "start": { - "line": 702, + "line": 703, "column": 21 }, "end": { - "line": 702, + "line": 703, "column": 41 }, "identifierName": "_expandSwitchElement" @@ -50865,15 +51002,15 @@ "arguments": [ { "type": "Identifier", - "start": 26088, - "end": 26101, + "start": 26138, + "end": 26151, "loc": { "start": { - "line": 702, + "line": 703, "column": 42 }, "end": { - "line": 702, + "line": 703, "column": 55 }, "identifierName": "switchElement" @@ -50885,44 +51022,44 @@ }, { "type": "VariableDeclaration", - "start": 26120, - "end": 26153, + "start": 26170, + "end": 26203, "loc": { "start": { - "line": 703, + "line": 704, "column": 16 }, "end": { - "line": 703, + "line": 704, "column": 49 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26126, - "end": 26152, + "start": 26176, + "end": 26202, "loc": { "start": { - "line": 703, + "line": 704, "column": 22 }, "end": { - "line": 703, + "line": 704, "column": 48 } }, "id": { "type": "Identifier", - "start": 26126, - "end": 26136, + "start": 26176, + "end": 26186, "loc": { "start": { - "line": 703, + "line": 704, "column": 22 }, "end": { - "line": 703, + "line": 704, "column": 32 }, "identifierName": "childNodes" @@ -50931,29 +51068,29 @@ }, "init": { "type": "MemberExpression", - "start": 26139, - "end": 26152, + "start": 26189, + "end": 26202, "loc": { "start": { - "line": 703, + "line": 704, "column": 35 }, "end": { - "line": 703, + "line": 704, "column": 48 } }, "object": { "type": "Identifier", - "start": 26139, - "end": 26143, + "start": 26189, + "end": 26193, "loc": { "start": { - "line": 703, + "line": 704, "column": 35 }, "end": { - "line": 703, + "line": 704, "column": 39 }, "identifierName": "node" @@ -50962,15 +51099,15 @@ }, "property": { "type": "Identifier", - "start": 26144, - "end": 26152, + "start": 26194, + "end": 26202, "loc": { "start": { - "line": 703, + "line": 704, "column": 40 }, "end": { - "line": 703, + "line": 704, "column": 48 }, "identifierName": "children" @@ -50985,58 +51122,58 @@ }, { "type": "ForStatement", - "start": 26170, - "end": 26352, + "start": 26220, + "end": 26402, "loc": { "start": { - "line": 704, + "line": 705, "column": 16 }, "end": { - "line": 707, + "line": 708, "column": 17 } }, "init": { "type": "VariableDeclaration", - "start": 26175, - "end": 26209, + "start": 26225, + "end": 26259, "loc": { "start": { - "line": 704, + "line": 705, "column": 21 }, "end": { - "line": 704, + "line": 705, "column": 55 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26179, - "end": 26184, + "start": 26229, + "end": 26234, "loc": { "start": { - "line": 704, + "line": 705, "column": 25 }, "end": { - "line": 704, + "line": 705, "column": 30 } }, "id": { "type": "Identifier", - "start": 26179, - "end": 26180, + "start": 26229, + "end": 26230, "loc": { "start": { - "line": 704, + "line": 705, "column": 25 }, "end": { - "line": 704, + "line": 705, "column": 26 }, "identifierName": "i" @@ -51045,15 +51182,15 @@ }, "init": { "type": "NumericLiteral", - "start": 26183, - "end": 26184, + "start": 26233, + "end": 26234, "loc": { "start": { - "line": 704, + "line": 705, "column": 29 }, "end": { - "line": 704, + "line": 705, "column": 30 } }, @@ -51066,29 +51203,29 @@ }, { "type": "VariableDeclarator", - "start": 26186, - "end": 26209, + "start": 26236, + "end": 26259, "loc": { "start": { - "line": 704, + "line": 705, "column": 32 }, "end": { - "line": 704, + "line": 705, "column": 55 } }, "id": { "type": "Identifier", - "start": 26186, - "end": 26189, + "start": 26236, + "end": 26239, "loc": { "start": { - "line": 704, + "line": 705, "column": 32 }, "end": { - "line": 704, + "line": 705, "column": 35 }, "identifierName": "len" @@ -51097,29 +51234,29 @@ }, "init": { "type": "MemberExpression", - "start": 26192, - "end": 26209, + "start": 26242, + "end": 26259, "loc": { "start": { - "line": 704, + "line": 705, "column": 38 }, "end": { - "line": 704, + "line": 705, "column": 55 } }, "object": { "type": "Identifier", - "start": 26192, - "end": 26202, + "start": 26242, + "end": 26252, "loc": { "start": { - "line": 704, + "line": 705, "column": 38 }, "end": { - "line": 704, + "line": 705, "column": 48 }, "identifierName": "childNodes" @@ -51128,15 +51265,15 @@ }, "property": { "type": "Identifier", - "start": 26203, - "end": 26209, + "start": 26253, + "end": 26259, "loc": { "start": { - "line": 704, + "line": 705, "column": 49 }, "end": { - "line": 704, + "line": 705, "column": 55 }, "identifierName": "length" @@ -51151,29 +51288,29 @@ }, "test": { "type": "BinaryExpression", - "start": 26211, - "end": 26218, + "start": 26261, + "end": 26268, "loc": { "start": { - "line": 704, + "line": 705, "column": 57 }, "end": { - "line": 704, + "line": 705, "column": 64 } }, "left": { "type": "Identifier", - "start": 26211, - "end": 26212, + "start": 26261, + "end": 26262, "loc": { "start": { - "line": 704, + "line": 705, "column": 57 }, "end": { - "line": 704, + "line": 705, "column": 58 }, "identifierName": "i" @@ -51183,15 +51320,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 26215, - "end": 26218, + "start": 26265, + "end": 26268, "loc": { "start": { - "line": 704, + "line": 705, "column": 61 }, "end": { - "line": 704, + "line": 705, "column": 64 }, "identifierName": "len" @@ -51201,15 +51338,15 @@ }, "update": { "type": "UpdateExpression", - "start": 26220, - "end": 26223, + "start": 26270, + "end": 26273, "loc": { "start": { - "line": 704, + "line": 705, "column": 66 }, "end": { - "line": 704, + "line": 705, "column": 69 } }, @@ -51217,15 +51354,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 26220, - "end": 26221, + "start": 26270, + "end": 26271, "loc": { "start": { - "line": 704, + "line": 705, "column": 66 }, "end": { - "line": 704, + "line": 705, "column": 67 }, "identifierName": "i" @@ -51235,59 +51372,59 @@ }, "body": { "type": "BlockStatement", - "start": 26225, - "end": 26352, + "start": 26275, + "end": 26402, "loc": { "start": { - "line": 704, + "line": 705, "column": 71 }, "end": { - "line": 707, + "line": 708, "column": 17 } }, "body": [ { "type": "VariableDeclaration", - "start": 26247, - "end": 26279, + "start": 26297, + "end": 26329, "loc": { "start": { - "line": 705, + "line": 706, "column": 20 }, "end": { - "line": 705, + "line": 706, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26253, - "end": 26278, + "start": 26303, + "end": 26328, "loc": { "start": { - "line": 705, + "line": 706, "column": 26 }, "end": { - "line": 705, + "line": 706, "column": 51 } }, "id": { "type": "Identifier", - "start": 26253, - "end": 26262, + "start": 26303, + "end": 26312, "loc": { "start": { - "line": 705, + "line": 706, "column": 26 }, "end": { - "line": 705, + "line": 706, "column": 35 }, "identifierName": "childNode" @@ -51296,29 +51433,29 @@ }, "init": { "type": "MemberExpression", - "start": 26265, - "end": 26278, + "start": 26315, + "end": 26328, "loc": { "start": { - "line": 705, + "line": 706, "column": 38 }, "end": { - "line": 705, + "line": 706, "column": 51 } }, "object": { "type": "Identifier", - "start": 26265, - "end": 26275, + "start": 26315, + "end": 26325, "loc": { "start": { - "line": 705, + "line": 706, "column": 38 }, "end": { - "line": 705, + "line": 706, "column": 48 }, "identifierName": "childNodes" @@ -51327,15 +51464,15 @@ }, "property": { "type": "Identifier", - "start": 26276, - "end": 26277, + "start": 26326, + "end": 26327, "loc": { "start": { - "line": 705, + "line": 706, "column": 49 }, "end": { - "line": 705, + "line": 706, "column": 50 }, "identifierName": "i" @@ -51350,43 +51487,43 @@ }, { "type": "ExpressionStatement", - "start": 26300, - "end": 26334, + "start": 26350, + "end": 26384, "loc": { "start": { - "line": 706, + "line": 707, "column": 20 }, "end": { - "line": 706, + "line": 707, "column": 54 } }, "expression": { "type": "CallExpression", - "start": 26300, - "end": 26333, + "start": 26350, + "end": 26383, "loc": { "start": { - "line": 706, + "line": 707, "column": 20 }, "end": { - "line": 706, + "line": 707, "column": 53 } }, "callee": { "type": "Identifier", - "start": 26300, - "end": 26306, + "start": 26350, + "end": 26356, "loc": { "start": { - "line": 706, + "line": 707, "column": 20 }, "end": { - "line": 706, + "line": 707, "column": 26 }, "identifierName": "expand" @@ -51396,15 +51533,15 @@ "arguments": [ { "type": "Identifier", - "start": 26307, - "end": 26316, + "start": 26357, + "end": 26366, "loc": { "start": { - "line": 706, + "line": 707, "column": 27 }, "end": { - "line": 706, + "line": 707, "column": 36 }, "identifierName": "childNode" @@ -51413,29 +51550,29 @@ }, { "type": "BinaryExpression", - "start": 26318, - "end": 26332, + "start": 26368, + "end": 26382, "loc": { "start": { - "line": 706, + "line": 707, "column": 38 }, "end": { - "line": 706, + "line": 707, "column": 52 } }, "left": { "type": "Identifier", - "start": 26318, - "end": 26328, + "start": 26368, + "end": 26378, "loc": { "start": { - "line": 706, + "line": 707, "column": 38 }, "end": { - "line": 706, + "line": 707, "column": 48 }, "identifierName": "countDepth" @@ -51445,15 +51582,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 26331, - "end": 26332, + "start": 26381, + "end": 26382, "loc": { "start": { - "line": 706, + "line": 707, "column": 51 }, "end": { - "line": 706, + "line": 707, "column": 52 } }, @@ -51486,58 +51623,58 @@ }, { "type": "ForStatement", - "start": 26386, - "end": 26539, + "start": 26436, + "end": 26589, "loc": { "start": { - "line": 710, + "line": 711, "column": 8 }, "end": { - "line": 713, + "line": 714, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 26391, - "end": 26430, + "start": 26441, + "end": 26480, "loc": { "start": { - "line": 710, + "line": 711, "column": 13 }, "end": { - "line": 710, + "line": 711, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26395, - "end": 26400, + "start": 26445, + "end": 26450, "loc": { "start": { - "line": 710, + "line": 711, "column": 17 }, "end": { - "line": 710, + "line": 711, "column": 22 } }, "id": { "type": "Identifier", - "start": 26395, - "end": 26396, + "start": 26445, + "end": 26446, "loc": { "start": { - "line": 710, + "line": 711, "column": 17 }, "end": { - "line": 710, + "line": 711, "column": 18 }, "identifierName": "i" @@ -51546,15 +51683,15 @@ }, "init": { "type": "NumericLiteral", - "start": 26399, - "end": 26400, + "start": 26449, + "end": 26450, "loc": { "start": { - "line": 710, + "line": 711, "column": 21 }, "end": { - "line": 710, + "line": 711, "column": 22 } }, @@ -51567,29 +51704,29 @@ }, { "type": "VariableDeclarator", - "start": 26402, - "end": 26430, + "start": 26452, + "end": 26480, "loc": { "start": { - "line": 710, + "line": 711, "column": 24 }, "end": { - "line": 710, + "line": 711, "column": 52 } }, "id": { "type": "Identifier", - "start": 26402, - "end": 26405, + "start": 26452, + "end": 26455, "loc": { "start": { - "line": 710, + "line": 711, "column": 24 }, "end": { - "line": 710, + "line": 711, "column": 27 }, "identifierName": "len" @@ -51598,58 +51735,58 @@ }, "init": { "type": "MemberExpression", - "start": 26408, - "end": 26430, + "start": 26458, + "end": 26480, "loc": { "start": { - "line": 710, + "line": 711, "column": 30 }, "end": { - "line": 710, + "line": 711, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 26408, - "end": 26423, + "start": 26458, + "end": 26473, "loc": { "start": { - "line": 710, + "line": 711, "column": 30 }, "end": { - "line": 710, + "line": 711, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 26408, - "end": 26412, + "start": 26458, + "end": 26462, "loc": { "start": { - "line": 710, + "line": 711, "column": 30 }, "end": { - "line": 710, + "line": 711, "column": 34 } } }, "property": { "type": "Identifier", - "start": 26413, - "end": 26423, + "start": 26463, + "end": 26473, "loc": { "start": { - "line": 710, + "line": 711, "column": 35 }, "end": { - "line": 710, + "line": 711, "column": 45 }, "identifierName": "_rootNodes" @@ -51660,15 +51797,15 @@ }, "property": { "type": "Identifier", - "start": 26424, - "end": 26430, + "start": 26474, + "end": 26480, "loc": { "start": { - "line": 710, + "line": 711, "column": 46 }, "end": { - "line": 710, + "line": 711, "column": 52 }, "identifierName": "length" @@ -51683,29 +51820,29 @@ }, "test": { "type": "BinaryExpression", - "start": 26432, - "end": 26439, + "start": 26482, + "end": 26489, "loc": { "start": { - "line": 710, + "line": 711, "column": 54 }, "end": { - "line": 710, + "line": 711, "column": 61 } }, "left": { "type": "Identifier", - "start": 26432, - "end": 26433, + "start": 26482, + "end": 26483, "loc": { "start": { - "line": 710, + "line": 711, "column": 54 }, "end": { - "line": 710, + "line": 711, "column": 55 }, "identifierName": "i" @@ -51715,15 +51852,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 26436, - "end": 26439, + "start": 26486, + "end": 26489, "loc": { "start": { - "line": 710, + "line": 711, "column": 58 }, "end": { - "line": 710, + "line": 711, "column": 61 }, "identifierName": "len" @@ -51733,15 +51870,15 @@ }, "update": { "type": "UpdateExpression", - "start": 26441, - "end": 26444, + "start": 26491, + "end": 26494, "loc": { "start": { - "line": 710, + "line": 711, "column": 63 }, "end": { - "line": 710, + "line": 711, "column": 66 } }, @@ -51749,15 +51886,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 26441, - "end": 26442, + "start": 26491, + "end": 26492, "loc": { "start": { - "line": 710, + "line": 711, "column": 63 }, "end": { - "line": 710, + "line": 711, "column": 64 }, "identifierName": "i" @@ -51767,59 +51904,59 @@ }, "body": { "type": "BlockStatement", - "start": 26446, - "end": 26539, + "start": 26496, + "end": 26589, "loc": { "start": { - "line": 710, + "line": 711, "column": 68 }, "end": { - "line": 713, + "line": 714, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 26460, - "end": 26496, + "start": 26510, + "end": 26546, "loc": { "start": { - "line": 711, + "line": 712, "column": 12 }, "end": { - "line": 711, + "line": 712, "column": 48 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26466, - "end": 26495, + "start": 26516, + "end": 26545, "loc": { "start": { - "line": 711, + "line": 712, "column": 18 }, "end": { - "line": 711, + "line": 712, "column": 47 } }, "id": { "type": "Identifier", - "start": 26466, - "end": 26474, + "start": 26516, + "end": 26524, "loc": { "start": { - "line": 711, + "line": 712, "column": 18 }, "end": { - "line": 711, + "line": 712, "column": 26 }, "identifierName": "rootNode" @@ -51828,58 +51965,58 @@ }, "init": { "type": "MemberExpression", - "start": 26477, - "end": 26495, + "start": 26527, + "end": 26545, "loc": { "start": { - "line": 711, + "line": 712, "column": 29 }, "end": { - "line": 711, + "line": 712, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 26477, - "end": 26492, + "start": 26527, + "end": 26542, "loc": { "start": { - "line": 711, + "line": 712, "column": 29 }, "end": { - "line": 711, + "line": 712, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 26477, - "end": 26481, + "start": 26527, + "end": 26531, "loc": { "start": { - "line": 711, + "line": 712, "column": 29 }, "end": { - "line": 711, + "line": 712, "column": 33 } } }, "property": { "type": "Identifier", - "start": 26482, - "end": 26492, + "start": 26532, + "end": 26542, "loc": { "start": { - "line": 711, + "line": 712, "column": 34 }, "end": { - "line": 711, + "line": 712, "column": 44 }, "identifierName": "_rootNodes" @@ -51890,15 +52027,15 @@ }, "property": { "type": "Identifier", - "start": 26493, - "end": 26494, + "start": 26543, + "end": 26544, "loc": { "start": { - "line": 711, + "line": 712, "column": 45 }, "end": { - "line": 711, + "line": 712, "column": 46 }, "identifierName": "i" @@ -51913,43 +52050,43 @@ }, { "type": "ExpressionStatement", - "start": 26509, - "end": 26529, + "start": 26559, + "end": 26579, "loc": { "start": { - "line": 712, + "line": 713, "column": 12 }, "end": { - "line": 712, + "line": 713, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 26509, - "end": 26528, + "start": 26559, + "end": 26578, "loc": { "start": { - "line": 712, + "line": 713, "column": 12 }, "end": { - "line": 712, + "line": 713, "column": 31 } }, "callee": { "type": "Identifier", - "start": 26509, - "end": 26515, + "start": 26559, + "end": 26565, "loc": { "start": { - "line": 712, + "line": 713, "column": 12 }, "end": { - "line": 712, + "line": 713, "column": 18 }, "identifierName": "expand" @@ -51959,15 +52096,15 @@ "arguments": [ { "type": "Identifier", - "start": 26516, - "end": 26524, + "start": 26566, + "end": 26574, "loc": { "start": { - "line": 712, + "line": 713, "column": 19 }, "end": { - "line": 712, + "line": 713, "column": 27 }, "identifierName": "rootNode" @@ -51976,15 +52113,15 @@ }, { "type": "NumericLiteral", - "start": 26526, - "end": 26527, + "start": 26576, + "end": 26577, "loc": { "start": { - "line": 712, + "line": 713, "column": 29 }, "end": { - "line": 712, + "line": 713, "column": 30 } }, @@ -52009,15 +52146,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n * @param depth\n ", - "start": 25641, - "end": 25688, + "start": 25691, + "end": 25738, "loc": { "start": { - "line": 689, + "line": 690, "column": 4 }, "end": { - "line": 692, + "line": 693, "column": 7 } } @@ -52027,15 +52164,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 26551, - "end": 26578, + "start": 26601, + "end": 26628, "loc": { "start": { - "line": 716, + "line": 717, "column": 4 }, "end": { - "line": 718, + "line": 719, "column": 7 } } @@ -52044,15 +52181,15 @@ }, { "type": "ClassMethod", - "start": 26583, - "end": 26820, + "start": 26633, + "end": 26870, "loc": { "start": { - "line": 719, + "line": 720, "column": 4 }, "end": { - "line": 725, + "line": 726, "column": 5 } }, @@ -52060,15 +52197,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 26583, - "end": 26591, + "start": 26633, + "end": 26641, "loc": { "start": { - "line": 719, + "line": 720, "column": 4 }, "end": { - "line": 719, + "line": 720, "column": 12 }, "identifierName": "collapse" @@ -52084,73 +52221,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 26594, - "end": 26820, + "start": 26644, + "end": 26870, "loc": { "start": { - "line": 719, + "line": 720, "column": 15 }, "end": { - "line": 725, + "line": 726, "column": 5 } }, "body": [ { "type": "ForStatement", - "start": 26604, - "end": 26814, + "start": 26654, + "end": 26864, "loc": { "start": { - "line": 720, + "line": 721, "column": 8 }, "end": { - "line": 724, + "line": 725, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 26609, - "end": 26648, + "start": 26659, + "end": 26698, "loc": { "start": { - "line": 720, + "line": 721, "column": 13 }, "end": { - "line": 720, + "line": 721, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26613, - "end": 26618, + "start": 26663, + "end": 26668, "loc": { "start": { - "line": 720, + "line": 721, "column": 17 }, "end": { - "line": 720, + "line": 721, "column": 22 } }, "id": { "type": "Identifier", - "start": 26613, - "end": 26614, + "start": 26663, + "end": 26664, "loc": { "start": { - "line": 720, + "line": 721, "column": 17 }, "end": { - "line": 720, + "line": 721, "column": 18 }, "identifierName": "i" @@ -52159,15 +52296,15 @@ }, "init": { "type": "NumericLiteral", - "start": 26617, - "end": 26618, + "start": 26667, + "end": 26668, "loc": { "start": { - "line": 720, + "line": 721, "column": 21 }, "end": { - "line": 720, + "line": 721, "column": 22 } }, @@ -52180,29 +52317,29 @@ }, { "type": "VariableDeclarator", - "start": 26620, - "end": 26648, + "start": 26670, + "end": 26698, "loc": { "start": { - "line": 720, + "line": 721, "column": 24 }, "end": { - "line": 720, + "line": 721, "column": 52 } }, "id": { "type": "Identifier", - "start": 26620, - "end": 26623, + "start": 26670, + "end": 26673, "loc": { "start": { - "line": 720, + "line": 721, "column": 24 }, "end": { - "line": 720, + "line": 721, "column": 27 }, "identifierName": "len" @@ -52211,58 +52348,58 @@ }, "init": { "type": "MemberExpression", - "start": 26626, - "end": 26648, + "start": 26676, + "end": 26698, "loc": { "start": { - "line": 720, + "line": 721, "column": 30 }, "end": { - "line": 720, + "line": 721, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 26626, - "end": 26641, + "start": 26676, + "end": 26691, "loc": { "start": { - "line": 720, + "line": 721, "column": 30 }, "end": { - "line": 720, + "line": 721, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 26626, - "end": 26630, + "start": 26676, + "end": 26680, "loc": { "start": { - "line": 720, + "line": 721, "column": 30 }, "end": { - "line": 720, + "line": 721, "column": 34 } } }, "property": { "type": "Identifier", - "start": 26631, - "end": 26641, + "start": 26681, + "end": 26691, "loc": { "start": { - "line": 720, + "line": 721, "column": 35 }, "end": { - "line": 720, + "line": 721, "column": 45 }, "identifierName": "_rootNodes" @@ -52273,15 +52410,15 @@ }, "property": { "type": "Identifier", - "start": 26642, - "end": 26648, + "start": 26692, + "end": 26698, "loc": { "start": { - "line": 720, + "line": 721, "column": 46 }, "end": { - "line": 720, + "line": 721, "column": 52 }, "identifierName": "length" @@ -52296,29 +52433,29 @@ }, "test": { "type": "BinaryExpression", - "start": 26650, - "end": 26657, + "start": 26700, + "end": 26707, "loc": { "start": { - "line": 720, + "line": 721, "column": 54 }, "end": { - "line": 720, + "line": 721, "column": 61 } }, "left": { "type": "Identifier", - "start": 26650, - "end": 26651, + "start": 26700, + "end": 26701, "loc": { "start": { - "line": 720, + "line": 721, "column": 54 }, "end": { - "line": 720, + "line": 721, "column": 55 }, "identifierName": "i" @@ -52328,15 +52465,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 26654, - "end": 26657, + "start": 26704, + "end": 26707, "loc": { "start": { - "line": 720, + "line": 721, "column": 58 }, "end": { - "line": 720, + "line": 721, "column": 61 }, "identifierName": "len" @@ -52346,15 +52483,15 @@ }, "update": { "type": "UpdateExpression", - "start": 26659, - "end": 26662, + "start": 26709, + "end": 26712, "loc": { "start": { - "line": 720, + "line": 721, "column": 63 }, "end": { - "line": 720, + "line": 721, "column": 66 } }, @@ -52362,15 +52499,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 26659, - "end": 26660, + "start": 26709, + "end": 26710, "loc": { "start": { - "line": 720, + "line": 721, "column": 63 }, "end": { - "line": 720, + "line": 721, "column": 64 }, "identifierName": "i" @@ -52380,59 +52517,59 @@ }, "body": { "type": "BlockStatement", - "start": 26664, - "end": 26814, + "start": 26714, + "end": 26864, "loc": { "start": { - "line": 720, + "line": 721, "column": 68 }, "end": { - "line": 724, + "line": 725, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 26678, - "end": 26714, + "start": 26728, + "end": 26764, "loc": { "start": { - "line": 721, + "line": 722, "column": 12 }, "end": { - "line": 721, + "line": 722, "column": 48 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26684, - "end": 26713, + "start": 26734, + "end": 26763, "loc": { "start": { - "line": 721, + "line": 722, "column": 18 }, "end": { - "line": 721, + "line": 722, "column": 47 } }, "id": { "type": "Identifier", - "start": 26684, - "end": 26692, + "start": 26734, + "end": 26742, "loc": { "start": { - "line": 721, + "line": 722, "column": 18 }, "end": { - "line": 721, + "line": 722, "column": 26 }, "identifierName": "rootNode" @@ -52441,58 +52578,58 @@ }, "init": { "type": "MemberExpression", - "start": 26695, - "end": 26713, + "start": 26745, + "end": 26763, "loc": { "start": { - "line": 721, + "line": 722, "column": 29 }, "end": { - "line": 721, + "line": 722, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 26695, - "end": 26710, + "start": 26745, + "end": 26760, "loc": { "start": { - "line": 721, + "line": 722, "column": 29 }, "end": { - "line": 721, + "line": 722, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 26695, - "end": 26699, + "start": 26745, + "end": 26749, "loc": { "start": { - "line": 721, + "line": 722, "column": 29 }, "end": { - "line": 721, + "line": 722, "column": 33 } } }, "property": { "type": "Identifier", - "start": 26700, - "end": 26710, + "start": 26750, + "end": 26760, "loc": { "start": { - "line": 721, + "line": 722, "column": 34 }, "end": { - "line": 721, + "line": 722, "column": 44 }, "identifierName": "_rootNodes" @@ -52503,15 +52640,15 @@ }, "property": { "type": "Identifier", - "start": 26711, - "end": 26712, + "start": 26761, + "end": 26762, "loc": { "start": { - "line": 721, + "line": 722, "column": 45 }, "end": { - "line": 721, + "line": 722, "column": 46 }, "identifierName": "i" @@ -52526,44 +52663,44 @@ }, { "type": "VariableDeclaration", - "start": 26727, - "end": 26762, + "start": 26777, + "end": 26812, "loc": { "start": { - "line": 722, + "line": 723, "column": 12 }, "end": { - "line": 722, + "line": 723, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26733, - "end": 26761, + "start": 26783, + "end": 26811, "loc": { "start": { - "line": 722, + "line": 723, "column": 18 }, "end": { - "line": 722, + "line": 723, "column": 46 } }, "id": { "type": "Identifier", - "start": 26733, - "end": 26741, + "start": 26783, + "end": 26791, "loc": { "start": { - "line": 722, + "line": 723, "column": 18 }, "end": { - "line": 722, + "line": 723, "column": 26 }, "identifierName": "objectId" @@ -52572,29 +52709,29 @@ }, "init": { "type": "MemberExpression", - "start": 26744, - "end": 26761, + "start": 26794, + "end": 26811, "loc": { "start": { - "line": 722, + "line": 723, "column": 29 }, "end": { - "line": 722, + "line": 723, "column": 46 } }, "object": { "type": "Identifier", - "start": 26744, - "end": 26752, + "start": 26794, + "end": 26802, "loc": { "start": { - "line": 722, + "line": 723, "column": 29 }, "end": { - "line": 722, + "line": 723, "column": 37 }, "identifierName": "rootNode" @@ -52603,15 +52740,15 @@ }, "property": { "type": "Identifier", - "start": 26753, - "end": 26761, + "start": 26803, + "end": 26811, "loc": { "start": { - "line": 722, + "line": 723, "column": 38 }, "end": { - "line": 722, + "line": 723, "column": 46 }, "identifierName": "objectId" @@ -52626,72 +52763,72 @@ }, { "type": "ExpressionStatement", - "start": 26775, - "end": 26804, + "start": 26825, + "end": 26854, "loc": { "start": { - "line": 723, + "line": 724, "column": 12 }, "end": { - "line": 723, + "line": 724, "column": 41 } }, "expression": { "type": "CallExpression", - "start": 26775, - "end": 26803, + "start": 26825, + "end": 26853, "loc": { "start": { - "line": 723, + "line": 724, "column": 12 }, "end": { - "line": 723, + "line": 724, "column": 40 } }, "callee": { "type": "MemberExpression", - "start": 26775, - "end": 26793, + "start": 26825, + "end": 26843, "loc": { "start": { - "line": 723, + "line": 724, "column": 12 }, "end": { - "line": 723, + "line": 724, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 26775, - "end": 26779, + "start": 26825, + "end": 26829, "loc": { "start": { - "line": 723, + "line": 724, "column": 12 }, "end": { - "line": 723, + "line": 724, "column": 16 } } }, "property": { "type": "Identifier", - "start": 26780, - "end": 26793, + "start": 26830, + "end": 26843, "loc": { "start": { - "line": 723, + "line": 724, "column": 17 }, "end": { - "line": 723, + "line": 724, "column": 30 }, "identifierName": "_collapseNode" @@ -52703,15 +52840,15 @@ "arguments": [ { "type": "Identifier", - "start": 26794, - "end": 26802, + "start": 26844, + "end": 26852, "loc": { "start": { - "line": 723, + "line": 724, "column": 31 }, "end": { - "line": 723, + "line": 724, "column": 39 }, "identifierName": "objectId" @@ -52733,15 +52870,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 26551, - "end": 26578, + "start": 26601, + "end": 26628, "loc": { "start": { - "line": 716, + "line": 717, "column": 4 }, "end": { - "line": 718, + "line": 719, "column": 7 } } @@ -52751,15 +52888,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n * @param objectId\n ", - "start": 26826, - "end": 26876, + "start": 26876, + "end": 26926, "loc": { "start": { - "line": 727, + "line": 728, "column": 4 }, "end": { - "line": 730, + "line": 731, "column": 7 } } @@ -52768,15 +52905,15 @@ }, { "type": "ClassMethod", - "start": 26881, - "end": 28362, + "start": 26931, + "end": 28412, "loc": { "start": { - "line": 731, + "line": 732, "column": 4 }, "end": { - "line": 768, + "line": 769, "column": 5 } }, @@ -52784,15 +52921,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 26881, - "end": 26889, + "start": 26931, + "end": 26939, "loc": { "start": { - "line": 731, + "line": 732, "column": 4 }, "end": { - "line": 731, + "line": 732, "column": 12 }, "identifierName": "showNode" @@ -52808,15 +52945,15 @@ "params": [ { "type": "Identifier", - "start": 26890, - "end": 26898, + "start": 26940, + "end": 26948, "loc": { "start": { - "line": 731, + "line": 732, "column": 13 }, "end": { - "line": 731, + "line": 732, "column": 21 }, "identifierName": "objectId" @@ -52826,73 +52963,73 @@ ], "body": { "type": "BlockStatement", - "start": 26900, - "end": 28362, + "start": 26950, + "end": 28412, "loc": { "start": { - "line": 731, + "line": 732, "column": 23 }, "end": { - "line": 768, + "line": 769, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 26910, - "end": 26985, + "start": 26960, + "end": 27035, "loc": { "start": { - "line": 732, + "line": 733, "column": 8 }, "end": { - "line": 734, + "line": 735, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 26914, - "end": 26941, + "start": 26964, + "end": 26991, "loc": { "start": { - "line": 732, + "line": 733, "column": 12 }, "end": { - "line": 732, + "line": 733, "column": 39 } }, "object": { "type": "ThisExpression", - "start": 26914, - "end": 26918, + "start": 26964, + "end": 26968, "loc": { "start": { - "line": 732, + "line": 733, "column": 12 }, "end": { - "line": 732, + "line": 733, "column": 16 } } }, "property": { "type": "Identifier", - "start": 26919, - "end": 26941, + "start": 26969, + "end": 26991, "loc": { "start": { - "line": 732, + "line": 733, "column": 17 }, "end": { - "line": 732, + "line": 733, "column": 39 }, "identifierName": "_showListItemElementId" @@ -52903,87 +53040,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 26943, - "end": 26985, + "start": 26993, + "end": 27035, "loc": { "start": { - "line": 732, + "line": 733, "column": 41 }, "end": { - "line": 734, + "line": 735, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 26957, - "end": 26975, + "start": 27007, + "end": 27025, "loc": { "start": { - "line": 733, + "line": 734, "column": 12 }, "end": { - "line": 733, + "line": 734, "column": 30 } }, "expression": { "type": "CallExpression", - "start": 26957, - "end": 26974, + "start": 27007, + "end": 27024, "loc": { "start": { - "line": 733, + "line": 734, "column": 12 }, "end": { - "line": 733, + "line": 734, "column": 29 } }, "callee": { "type": "MemberExpression", - "start": 26957, - "end": 26972, + "start": 27007, + "end": 27022, "loc": { "start": { - "line": 733, + "line": 734, "column": 12 }, "end": { - "line": 733, + "line": 734, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 26957, - "end": 26961, + "start": 27007, + "end": 27011, "loc": { "start": { - "line": 733, + "line": 734, "column": 12 }, "end": { - "line": 733, + "line": 734, "column": 16 } } }, "property": { "type": "Identifier", - "start": 26962, - "end": 26972, + "start": 27012, + "end": 27022, "loc": { "start": { - "line": 733, + "line": 734, "column": 17 }, "end": { - "line": 733, + "line": 734, "column": 27 }, "identifierName": "unShowNode" @@ -53002,44 +53139,44 @@ }, { "type": "VariableDeclaration", - "start": 26994, - "end": 27035, + "start": 27044, + "end": 27085, "loc": { "start": { - "line": 735, + "line": 736, "column": 8 }, "end": { - "line": 735, + "line": 736, "column": 49 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27000, - "end": 27034, + "start": 27050, + "end": 27084, "loc": { "start": { - "line": 735, + "line": 736, "column": 14 }, "end": { - "line": 735, + "line": 736, "column": 48 } }, "id": { "type": "Identifier", - "start": 27000, - "end": 27004, + "start": 27050, + "end": 27054, "loc": { "start": { - "line": 735, + "line": 736, "column": 14 }, "end": { - "line": 735, + "line": 736, "column": 18 }, "identifierName": "node" @@ -53048,58 +53185,58 @@ }, "init": { "type": "MemberExpression", - "start": 27007, - "end": 27034, + "start": 27057, + "end": 27084, "loc": { "start": { - "line": 735, + "line": 736, "column": 21 }, "end": { - "line": 735, + "line": 736, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 27007, - "end": 27024, + "start": 27057, + "end": 27074, "loc": { "start": { - "line": 735, + "line": 736, "column": 21 }, "end": { - "line": 735, + "line": 736, "column": 38 } }, "object": { "type": "ThisExpression", - "start": 27007, - "end": 27011, + "start": 27057, + "end": 27061, "loc": { "start": { - "line": 735, + "line": 736, "column": 21 }, "end": { - "line": 735, + "line": 736, "column": 25 } } }, "property": { "type": "Identifier", - "start": 27012, - "end": 27024, + "start": 27062, + "end": 27074, "loc": { "start": { - "line": 735, + "line": 736, "column": 26 }, "end": { - "line": 735, + "line": 736, "column": 38 }, "identifierName": "_objectNodes" @@ -53110,15 +53247,15 @@ }, "property": { "type": "Identifier", - "start": 27025, - "end": 27033, + "start": 27075, + "end": 27083, "loc": { "start": { - "line": 735, + "line": 736, "column": 39 }, "end": { - "line": 735, + "line": 736, "column": 47 }, "identifierName": "objectId" @@ -53133,29 +53270,29 @@ }, { "type": "IfStatement", - "start": 27044, - "end": 27164, + "start": 27094, + "end": 27214, "loc": { "start": { - "line": 736, + "line": 737, "column": 8 }, "end": { - "line": 738, + "line": 739, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 27048, - "end": 27053, + "start": 27098, + "end": 27103, "loc": { "start": { - "line": 736, + "line": 737, "column": 12 }, "end": { - "line": 736, + "line": 737, "column": 17 } }, @@ -53163,15 +53300,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 27049, - "end": 27053, + "start": 27099, + "end": 27103, "loc": { "start": { - "line": 736, + "line": 737, "column": 13 }, "end": { - "line": 736, + "line": 737, "column": 17 }, "identifierName": "node" @@ -53184,30 +53321,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 27055, - "end": 27164, + "start": 27105, + "end": 27214, "loc": { "start": { - "line": 736, + "line": 737, "column": 19 }, "end": { - "line": 738, + "line": 739, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 27069, - "end": 27076, + "start": 27119, + "end": 27126, "loc": { "start": { - "line": 737, + "line": 738, "column": 12 }, "end": { - "line": 737, + "line": 738, "column": 19 } }, @@ -53217,15 +53354,15 @@ { "type": "CommentLine", "value": " Node may not exist for the given object if (this._pruneEmptyNodes == true)", - "start": 27077, - "end": 27154, + "start": 27127, + "end": 27204, "loc": { "start": { - "line": 737, + "line": 738, "column": 20 }, "end": { - "line": 737, + "line": 738, "column": 97 } } @@ -53239,44 +53376,44 @@ }, { "type": "VariableDeclaration", - "start": 27173, - "end": 27200, + "start": 27223, + "end": 27250, "loc": { "start": { - "line": 739, + "line": 740, "column": 8 }, "end": { - "line": 739, + "line": 740, "column": 35 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27179, - "end": 27199, + "start": 27229, + "end": 27249, "loc": { "start": { - "line": 739, + "line": 740, "column": 14 }, "end": { - "line": 739, + "line": 740, "column": 34 } }, "id": { "type": "Identifier", - "start": 27179, - "end": 27185, + "start": 27229, + "end": 27235, "loc": { "start": { - "line": 739, + "line": 740, "column": 14 }, "end": { - "line": 739, + "line": 740, "column": 20 }, "identifierName": "nodeId" @@ -53285,29 +53422,29 @@ }, "init": { "type": "MemberExpression", - "start": 27188, - "end": 27199, + "start": 27238, + "end": 27249, "loc": { "start": { - "line": 739, + "line": 740, "column": 23 }, "end": { - "line": 739, + "line": 740, "column": 34 } }, "object": { "type": "Identifier", - "start": 27188, - "end": 27192, + "start": 27238, + "end": 27242, "loc": { "start": { - "line": 739, + "line": 740, "column": 23 }, "end": { - "line": 739, + "line": 740, "column": 27 }, "identifierName": "node" @@ -53316,15 +53453,15 @@ }, "property": { "type": "Identifier", - "start": 27193, - "end": 27199, + "start": 27243, + "end": 27249, "loc": { "start": { - "line": 739, + "line": 740, "column": 28 }, "end": { - "line": 739, + "line": 740, "column": 34 }, "identifierName": "nodeId" @@ -53339,44 +53476,44 @@ }, { "type": "VariableDeclaration", - "start": 27209, - "end": 27252, + "start": 27259, + "end": 27302, "loc": { "start": { - "line": 740, + "line": 741, "column": 8 }, "end": { - "line": 740, + "line": 741, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27215, - "end": 27251, + "start": 27265, + "end": 27301, "loc": { "start": { - "line": 740, + "line": 741, "column": 14 }, "end": { - "line": 740, + "line": 741, "column": 50 } }, "id": { "type": "Identifier", - "start": 27215, - "end": 27230, + "start": 27265, + "end": 27280, "loc": { "start": { - "line": 740, + "line": 741, "column": 14 }, "end": { - "line": 740, + "line": 741, "column": 29 }, "identifierName": "switchElementId" @@ -53385,29 +53522,29 @@ }, "init": { "type": "BinaryExpression", - "start": 27233, - "end": 27251, + "start": 27283, + "end": 27301, "loc": { "start": { - "line": 740, + "line": 741, "column": 32 }, "end": { - "line": 740, + "line": 741, "column": 50 } }, "left": { "type": "StringLiteral", - "start": 27233, - "end": 27242, + "start": 27283, + "end": 27292, "loc": { "start": { - "line": 740, + "line": 741, "column": 32 }, "end": { - "line": 740, + "line": 741, "column": 41 } }, @@ -53420,15 +53557,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 27245, - "end": 27251, + "start": 27295, + "end": 27301, "loc": { "start": { - "line": 740, + "line": 741, "column": 44 }, "end": { - "line": 740, + "line": 741, "column": 50 }, "identifierName": "nodeId" @@ -53442,44 +53579,44 @@ }, { "type": "VariableDeclaration", - "start": 27261, - "end": 27324, + "start": 27311, + "end": 27374, "loc": { "start": { - "line": 741, + "line": 742, "column": 8 }, "end": { - "line": 741, + "line": 742, "column": 71 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27267, - "end": 27323, + "start": 27317, + "end": 27373, "loc": { "start": { - "line": 741, + "line": 742, "column": 14 }, "end": { - "line": 741, + "line": 742, "column": 70 } }, "id": { "type": "Identifier", - "start": 27267, - "end": 27280, + "start": 27317, + "end": 27330, "loc": { "start": { - "line": 741, + "line": 742, "column": 14 }, "end": { - "line": 741, + "line": 742, "column": 27 }, "identifierName": "switchElement" @@ -53488,43 +53625,43 @@ }, "init": { "type": "CallExpression", - "start": 27283, - "end": 27323, + "start": 27333, + "end": 27373, "loc": { "start": { - "line": 741, + "line": 742, "column": 30 }, "end": { - "line": 741, + "line": 742, "column": 70 } }, "callee": { "type": "MemberExpression", - "start": 27283, - "end": 27306, + "start": 27333, + "end": 27356, "loc": { "start": { - "line": 741, + "line": 742, "column": 30 }, "end": { - "line": 741, + "line": 742, "column": 53 } }, "object": { "type": "Identifier", - "start": 27283, - "end": 27291, + "start": 27333, + "end": 27341, "loc": { "start": { - "line": 741, + "line": 742, "column": 30 }, "end": { - "line": 741, + "line": 742, "column": 38 }, "identifierName": "document" @@ -53533,15 +53670,15 @@ }, "property": { "type": "Identifier", - "start": 27292, - "end": 27306, + "start": 27342, + "end": 27356, "loc": { "start": { - "line": 741, + "line": 742, "column": 39 }, "end": { - "line": 741, + "line": 742, "column": 53 }, "identifierName": "getElementById" @@ -53553,15 +53690,15 @@ "arguments": [ { "type": "Identifier", - "start": 27307, - "end": 27322, + "start": 27357, + "end": 27372, "loc": { "start": { - "line": 741, + "line": 742, "column": 54 }, "end": { - "line": 741, + "line": 742, "column": 69 }, "identifierName": "switchElementId" @@ -53576,29 +53713,29 @@ }, { "type": "IfStatement", - "start": 27333, - "end": 27481, + "start": 27383, + "end": 27531, "loc": { "start": { - "line": 742, + "line": 743, "column": 8 }, "end": { - "line": 746, + "line": 747, "column": 9 } }, "test": { "type": "Identifier", - "start": 27337, - "end": 27350, + "start": 27387, + "end": 27400, "loc": { "start": { - "line": 742, + "line": 743, "column": 12 }, "end": { - "line": 742, + "line": 743, "column": 25 }, "identifierName": "switchElement" @@ -53607,87 +53744,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 27352, - "end": 27481, + "start": 27402, + "end": 27531, "loc": { "start": { - "line": 742, + "line": 743, "column": 27 }, "end": { - "line": 746, + "line": 747, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 27366, - "end": 27407, + "start": 27416, + "end": 27457, "loc": { "start": { - "line": 743, + "line": 744, "column": 12 }, "end": { - "line": 743, + "line": 744, "column": 53 } }, "expression": { "type": "CallExpression", - "start": 27366, - "end": 27406, + "start": 27416, + "end": 27456, "loc": { "start": { - "line": 743, + "line": 744, "column": 12 }, "end": { - "line": 743, + "line": 744, "column": 52 } }, "callee": { "type": "MemberExpression", - "start": 27366, - "end": 27391, + "start": 27416, + "end": 27441, "loc": { "start": { - "line": 743, + "line": 744, "column": 12 }, "end": { - "line": 743, + "line": 744, "column": 37 } }, "object": { "type": "ThisExpression", - "start": 27366, - "end": 27370, + "start": 27416, + "end": 27420, "loc": { "start": { - "line": 743, + "line": 744, "column": 12 }, "end": { - "line": 743, + "line": 744, "column": 16 } } }, "property": { "type": "Identifier", - "start": 27371, - "end": 27391, + "start": 27421, + "end": 27441, "loc": { "start": { - "line": 743, + "line": 744, "column": 17 }, "end": { - "line": 743, + "line": 744, "column": 37 }, "identifierName": "_expandSwitchElement" @@ -53699,15 +53836,15 @@ "arguments": [ { "type": "Identifier", - "start": 27392, - "end": 27405, + "start": 27442, + "end": 27455, "loc": { "start": { - "line": 743, + "line": 744, "column": 38 }, "end": { - "line": 743, + "line": 744, "column": 51 }, "identifierName": "switchElement" @@ -53719,57 +53856,57 @@ }, { "type": "ExpressionStatement", - "start": 27420, - "end": 27451, + "start": 27470, + "end": 27501, "loc": { "start": { - "line": 744, + "line": 745, "column": 12 }, "end": { - "line": 744, + "line": 745, "column": 43 } }, "expression": { "type": "CallExpression", - "start": 27420, - "end": 27450, + "start": 27470, + "end": 27500, "loc": { "start": { - "line": 744, + "line": 745, "column": 12 }, "end": { - "line": 744, + "line": 745, "column": 42 } }, "callee": { "type": "MemberExpression", - "start": 27420, - "end": 27448, + "start": 27470, + "end": 27498, "loc": { "start": { - "line": 744, + "line": 745, "column": 12 }, "end": { - "line": 744, + "line": 745, "column": 40 } }, "object": { "type": "Identifier", - "start": 27420, - "end": 27433, + "start": 27470, + "end": 27483, "loc": { "start": { - "line": 744, + "line": 745, "column": 12 }, "end": { - "line": 744, + "line": 745, "column": 25 }, "identifierName": "switchElement" @@ -53778,15 +53915,15 @@ }, "property": { "type": "Identifier", - "start": 27434, - "end": 27448, + "start": 27484, + "end": 27498, "loc": { "start": { - "line": 744, + "line": 745, "column": 26 }, "end": { - "line": 744, + "line": 745, "column": 40 }, "identifierName": "scrollIntoView" @@ -53800,15 +53937,15 @@ }, { "type": "ReturnStatement", - "start": 27464, - "end": 27471, + "start": 27514, + "end": 27521, "loc": { "start": { - "line": 745, + "line": 746, "column": 12 }, "end": { - "line": 745, + "line": 746, "column": 19 } }, @@ -53821,44 +53958,44 @@ }, { "type": "VariableDeclaration", - "start": 27490, - "end": 27506, + "start": 27540, + "end": 27556, "loc": { "start": { - "line": 747, + "line": 748, "column": 8 }, "end": { - "line": 747, + "line": 748, "column": 24 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27496, - "end": 27505, + "start": 27546, + "end": 27555, "loc": { "start": { - "line": 747, + "line": 748, "column": 14 }, "end": { - "line": 747, + "line": 748, "column": 23 } }, "id": { "type": "Identifier", - "start": 27496, - "end": 27500, + "start": 27546, + "end": 27550, "loc": { "start": { - "line": 747, + "line": 748, "column": 14 }, "end": { - "line": 747, + "line": 748, "column": 18 }, "identifierName": "path" @@ -53867,15 +54004,15 @@ }, "init": { "type": "ArrayExpression", - "start": 27503, - "end": 27505, + "start": 27553, + "end": 27555, "loc": { "start": { - "line": 747, + "line": 748, "column": 21 }, "end": { - "line": 747, + "line": 748, "column": 23 } }, @@ -53887,57 +54024,57 @@ }, { "type": "ExpressionStatement", - "start": 27515, - "end": 27534, + "start": 27565, + "end": 27584, "loc": { "start": { - "line": 748, + "line": 749, "column": 8 }, "end": { - "line": 748, + "line": 749, "column": 27 } }, "expression": { "type": "CallExpression", - "start": 27515, - "end": 27533, + "start": 27565, + "end": 27583, "loc": { "start": { - "line": 748, + "line": 749, "column": 8 }, "end": { - "line": 748, + "line": 749, "column": 26 } }, "callee": { "type": "MemberExpression", - "start": 27515, - "end": 27527, + "start": 27565, + "end": 27577, "loc": { "start": { - "line": 748, + "line": 749, "column": 8 }, "end": { - "line": 748, + "line": 749, "column": 20 } }, "object": { "type": "Identifier", - "start": 27515, - "end": 27519, + "start": 27565, + "end": 27569, "loc": { "start": { - "line": 748, + "line": 749, "column": 8 }, "end": { - "line": 748, + "line": 749, "column": 12 }, "identifierName": "path" @@ -53946,15 +54083,15 @@ }, "property": { "type": "Identifier", - "start": 27520, - "end": 27527, + "start": 27570, + "end": 27577, "loc": { "start": { - "line": 748, + "line": 749, "column": 13 }, "end": { - "line": 748, + "line": 749, "column": 20 }, "identifierName": "unshift" @@ -53966,15 +54103,15 @@ "arguments": [ { "type": "Identifier", - "start": 27528, - "end": 27532, + "start": 27578, + "end": 27582, "loc": { "start": { - "line": 748, + "line": 749, "column": 21 }, "end": { - "line": 748, + "line": 749, "column": 25 }, "identifierName": "node" @@ -53986,44 +54123,44 @@ }, { "type": "VariableDeclaration", - "start": 27543, - "end": 27568, + "start": 27593, + "end": 27618, "loc": { "start": { - "line": 749, + "line": 750, "column": 8 }, "end": { - "line": 749, + "line": 750, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27547, - "end": 27567, + "start": 27597, + "end": 27617, "loc": { "start": { - "line": 749, + "line": 750, "column": 12 }, "end": { - "line": 749, + "line": 750, "column": 32 } }, "id": { "type": "Identifier", - "start": 27547, - "end": 27553, + "start": 27597, + "end": 27603, "loc": { "start": { - "line": 749, + "line": 750, "column": 12 }, "end": { - "line": 749, + "line": 750, "column": 18 }, "identifierName": "parent" @@ -54032,29 +54169,29 @@ }, "init": { "type": "MemberExpression", - "start": 27556, - "end": 27567, + "start": 27606, + "end": 27617, "loc": { "start": { - "line": 749, + "line": 750, "column": 21 }, "end": { - "line": 749, + "line": 750, "column": 32 } }, "object": { "type": "Identifier", - "start": 27556, - "end": 27560, + "start": 27606, + "end": 27610, "loc": { "start": { - "line": 749, + "line": 750, "column": 21 }, "end": { - "line": 749, + "line": 750, "column": 25 }, "identifierName": "node" @@ -54063,15 +54200,15 @@ }, "property": { "type": "Identifier", - "start": 27561, - "end": 27567, + "start": 27611, + "end": 27617, "loc": { "start": { - "line": 749, + "line": 750, "column": 26 }, "end": { - "line": 749, + "line": 750, "column": 32 }, "identifierName": "parent" @@ -54086,29 +54223,29 @@ }, { "type": "WhileStatement", - "start": 27577, - "end": 27673, + "start": 27627, + "end": 27723, "loc": { "start": { - "line": 750, + "line": 751, "column": 8 }, "end": { - "line": 753, + "line": 754, "column": 9 } }, "test": { "type": "Identifier", - "start": 27584, - "end": 27590, + "start": 27634, + "end": 27640, "loc": { "start": { - "line": 750, + "line": 751, "column": 15 }, "end": { - "line": 750, + "line": 751, "column": 21 }, "identifierName": "parent" @@ -54117,72 +54254,72 @@ }, "body": { "type": "BlockStatement", - "start": 27592, - "end": 27673, + "start": 27642, + "end": 27723, "loc": { "start": { - "line": 750, + "line": 751, "column": 23 }, "end": { - "line": 753, + "line": 754, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 27606, - "end": 27627, + "start": 27656, + "end": 27677, "loc": { "start": { - "line": 751, + "line": 752, "column": 12 }, "end": { - "line": 751, + "line": 752, "column": 33 } }, "expression": { "type": "CallExpression", - "start": 27606, - "end": 27626, + "start": 27656, + "end": 27676, "loc": { "start": { - "line": 751, + "line": 752, "column": 12 }, "end": { - "line": 751, + "line": 752, "column": 32 } }, "callee": { "type": "MemberExpression", - "start": 27606, - "end": 27618, + "start": 27656, + "end": 27668, "loc": { "start": { - "line": 751, + "line": 752, "column": 12 }, "end": { - "line": 751, + "line": 752, "column": 24 } }, "object": { "type": "Identifier", - "start": 27606, - "end": 27610, + "start": 27656, + "end": 27660, "loc": { "start": { - "line": 751, + "line": 752, "column": 12 }, "end": { - "line": 751, + "line": 752, "column": 16 }, "identifierName": "path" @@ -54191,15 +54328,15 @@ }, "property": { "type": "Identifier", - "start": 27611, - "end": 27618, + "start": 27661, + "end": 27668, "loc": { "start": { - "line": 751, + "line": 752, "column": 17 }, "end": { - "line": 751, + "line": 752, "column": 24 }, "identifierName": "unshift" @@ -54211,15 +54348,15 @@ "arguments": [ { "type": "Identifier", - "start": 27619, - "end": 27625, + "start": 27669, + "end": 27675, "loc": { "start": { - "line": 751, + "line": 752, "column": 25 }, "end": { - "line": 751, + "line": 752, "column": 31 }, "identifierName": "parent" @@ -54231,44 +54368,44 @@ }, { "type": "ExpressionStatement", - "start": 27640, - "end": 27663, + "start": 27690, + "end": 27713, "loc": { "start": { - "line": 752, + "line": 753, "column": 12 }, "end": { - "line": 752, + "line": 753, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 27640, - "end": 27662, + "start": 27690, + "end": 27712, "loc": { "start": { - "line": 752, + "line": 753, "column": 12 }, "end": { - "line": 752, + "line": 753, "column": 34 } }, "operator": "=", "left": { "type": "Identifier", - "start": 27640, - "end": 27646, + "start": 27690, + "end": 27696, "loc": { "start": { - "line": 752, + "line": 753, "column": 12 }, "end": { - "line": 752, + "line": 753, "column": 18 }, "identifierName": "parent" @@ -54277,29 +54414,29 @@ }, "right": { "type": "MemberExpression", - "start": 27649, - "end": 27662, + "start": 27699, + "end": 27712, "loc": { "start": { - "line": 752, + "line": 753, "column": 21 }, "end": { - "line": 752, + "line": 753, "column": 34 } }, "object": { "type": "Identifier", - "start": 27649, - "end": 27655, + "start": 27699, + "end": 27705, "loc": { "start": { - "line": 752, + "line": 753, "column": 21 }, "end": { - "line": 752, + "line": 753, "column": 27 }, "identifierName": "parent" @@ -54308,15 +54445,15 @@ }, "property": { "type": "Identifier", - "start": 27656, - "end": 27662, + "start": 27706, + "end": 27712, "loc": { "start": { - "line": 752, + "line": 753, "column": 28 }, "end": { - "line": 752, + "line": 753, "column": 34 }, "identifierName": "parent" @@ -54333,58 +54470,58 @@ }, { "type": "ForStatement", - "start": 27682, - "end": 28053, + "start": 27732, + "end": 28103, "loc": { "start": { - "line": 754, + "line": 755, "column": 8 }, "end": { - "line": 762, + "line": 763, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 27687, - "end": 27715, + "start": 27737, + "end": 27765, "loc": { "start": { - "line": 754, + "line": 755, "column": 13 }, "end": { - "line": 754, + "line": 755, "column": 41 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27691, - "end": 27696, + "start": 27741, + "end": 27746, "loc": { "start": { - "line": 754, + "line": 755, "column": 17 }, "end": { - "line": 754, + "line": 755, "column": 22 } }, "id": { "type": "Identifier", - "start": 27691, - "end": 27692, + "start": 27741, + "end": 27742, "loc": { "start": { - "line": 754, + "line": 755, "column": 17 }, "end": { - "line": 754, + "line": 755, "column": 18 }, "identifierName": "i" @@ -54393,15 +54530,15 @@ }, "init": { "type": "NumericLiteral", - "start": 27695, - "end": 27696, + "start": 27745, + "end": 27746, "loc": { "start": { - "line": 754, + "line": 755, "column": 21 }, "end": { - "line": 754, + "line": 755, "column": 22 } }, @@ -54414,29 +54551,29 @@ }, { "type": "VariableDeclarator", - "start": 27698, - "end": 27715, + "start": 27748, + "end": 27765, "loc": { "start": { - "line": 754, + "line": 755, "column": 24 }, "end": { - "line": 754, + "line": 755, "column": 41 } }, "id": { "type": "Identifier", - "start": 27698, - "end": 27701, + "start": 27748, + "end": 27751, "loc": { "start": { - "line": 754, + "line": 755, "column": 24 }, "end": { - "line": 754, + "line": 755, "column": 27 }, "identifierName": "len" @@ -54445,29 +54582,29 @@ }, "init": { "type": "MemberExpression", - "start": 27704, - "end": 27715, + "start": 27754, + "end": 27765, "loc": { "start": { - "line": 754, + "line": 755, "column": 30 }, "end": { - "line": 754, + "line": 755, "column": 41 } }, "object": { "type": "Identifier", - "start": 27704, - "end": 27708, + "start": 27754, + "end": 27758, "loc": { "start": { - "line": 754, + "line": 755, "column": 30 }, "end": { - "line": 754, + "line": 755, "column": 34 }, "identifierName": "path" @@ -54476,15 +54613,15 @@ }, "property": { "type": "Identifier", - "start": 27709, - "end": 27715, + "start": 27759, + "end": 27765, "loc": { "start": { - "line": 754, + "line": 755, "column": 35 }, "end": { - "line": 754, + "line": 755, "column": 41 }, "identifierName": "length" @@ -54499,29 +54636,29 @@ }, "test": { "type": "BinaryExpression", - "start": 27717, - "end": 27724, + "start": 27767, + "end": 27774, "loc": { "start": { - "line": 754, + "line": 755, "column": 43 }, "end": { - "line": 754, + "line": 755, "column": 50 } }, "left": { "type": "Identifier", - "start": 27717, - "end": 27718, + "start": 27767, + "end": 27768, "loc": { "start": { - "line": 754, + "line": 755, "column": 43 }, "end": { - "line": 754, + "line": 755, "column": 44 }, "identifierName": "i" @@ -54531,15 +54668,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 27721, - "end": 27724, + "start": 27771, + "end": 27774, "loc": { "start": { - "line": 754, + "line": 755, "column": 47 }, "end": { - "line": 754, + "line": 755, "column": 50 }, "identifierName": "len" @@ -54549,15 +54686,15 @@ }, "update": { "type": "UpdateExpression", - "start": 27726, - "end": 27729, + "start": 27776, + "end": 27779, "loc": { "start": { - "line": 754, + "line": 755, "column": 52 }, "end": { - "line": 754, + "line": 755, "column": 55 } }, @@ -54565,15 +54702,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 27726, - "end": 27727, + "start": 27776, + "end": 27777, "loc": { "start": { - "line": 754, + "line": 755, "column": 52 }, "end": { - "line": 754, + "line": 755, "column": 53 }, "identifierName": "i" @@ -54583,59 +54720,59 @@ }, "body": { "type": "BlockStatement", - "start": 27731, - "end": 28053, + "start": 27781, + "end": 28103, "loc": { "start": { - "line": 754, + "line": 755, "column": 57 }, "end": { - "line": 762, + "line": 763, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 27745, - "end": 27766, + "start": 27795, + "end": 27816, "loc": { "start": { - "line": 755, + "line": 756, "column": 12 }, "end": { - "line": 755, + "line": 756, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27751, - "end": 27765, + "start": 27801, + "end": 27815, "loc": { "start": { - "line": 755, + "line": 756, "column": 18 }, "end": { - "line": 755, + "line": 756, "column": 32 } }, "id": { "type": "Identifier", - "start": 27751, - "end": 27755, + "start": 27801, + "end": 27805, "loc": { "start": { - "line": 755, + "line": 756, "column": 18 }, "end": { - "line": 755, + "line": 756, "column": 22 }, "identifierName": "node" @@ -54644,29 +54781,29 @@ }, "init": { "type": "MemberExpression", - "start": 27758, - "end": 27765, + "start": 27808, + "end": 27815, "loc": { "start": { - "line": 755, + "line": 756, "column": 25 }, "end": { - "line": 755, + "line": 756, "column": 32 } }, "object": { "type": "Identifier", - "start": 27758, - "end": 27762, + "start": 27808, + "end": 27812, "loc": { "start": { - "line": 755, + "line": 756, "column": 25 }, "end": { - "line": 755, + "line": 756, "column": 29 }, "identifierName": "path" @@ -54675,15 +54812,15 @@ }, "property": { "type": "Identifier", - "start": 27763, - "end": 27764, + "start": 27813, + "end": 27814, "loc": { "start": { - "line": 755, + "line": 756, "column": 30 }, "end": { - "line": 755, + "line": 756, "column": 31 }, "identifierName": "i" @@ -54698,44 +54835,44 @@ }, { "type": "VariableDeclaration", - "start": 27779, - "end": 27806, + "start": 27829, + "end": 27856, "loc": { "start": { - "line": 756, + "line": 757, "column": 12 }, "end": { - "line": 756, + "line": 757, "column": 39 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27785, - "end": 27805, + "start": 27835, + "end": 27855, "loc": { "start": { - "line": 756, + "line": 757, "column": 18 }, "end": { - "line": 756, + "line": 757, "column": 38 } }, "id": { "type": "Identifier", - "start": 27785, - "end": 27791, + "start": 27835, + "end": 27841, "loc": { "start": { - "line": 756, + "line": 757, "column": 18 }, "end": { - "line": 756, + "line": 757, "column": 24 }, "identifierName": "nodeId" @@ -54744,29 +54881,29 @@ }, "init": { "type": "MemberExpression", - "start": 27794, - "end": 27805, + "start": 27844, + "end": 27855, "loc": { "start": { - "line": 756, + "line": 757, "column": 27 }, "end": { - "line": 756, + "line": 757, "column": 38 } }, "object": { "type": "Identifier", - "start": 27794, - "end": 27798, + "start": 27844, + "end": 27848, "loc": { "start": { - "line": 756, + "line": 757, "column": 27 }, "end": { - "line": 756, + "line": 757, "column": 31 }, "identifierName": "node" @@ -54775,15 +54912,15 @@ }, "property": { "type": "Identifier", - "start": 27799, - "end": 27805, + "start": 27849, + "end": 27855, "loc": { "start": { - "line": 756, + "line": 757, "column": 32 }, "end": { - "line": 756, + "line": 757, "column": 38 }, "identifierName": "nodeId" @@ -54798,44 +54935,44 @@ }, { "type": "VariableDeclaration", - "start": 27819, - "end": 27862, + "start": 27869, + "end": 27912, "loc": { "start": { - "line": 757, + "line": 758, "column": 12 }, "end": { - "line": 757, + "line": 758, "column": 55 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27825, - "end": 27861, + "start": 27875, + "end": 27911, "loc": { "start": { - "line": 757, + "line": 758, "column": 18 }, "end": { - "line": 757, + "line": 758, "column": 54 } }, "id": { "type": "Identifier", - "start": 27825, - "end": 27840, + "start": 27875, + "end": 27890, "loc": { "start": { - "line": 757, + "line": 758, "column": 18 }, "end": { - "line": 757, + "line": 758, "column": 33 }, "identifierName": "switchElementId" @@ -54844,29 +54981,29 @@ }, "init": { "type": "BinaryExpression", - "start": 27843, - "end": 27861, + "start": 27893, + "end": 27911, "loc": { "start": { - "line": 757, + "line": 758, "column": 36 }, "end": { - "line": 757, + "line": 758, "column": 54 } }, "left": { "type": "StringLiteral", - "start": 27843, - "end": 27852, + "start": 27893, + "end": 27902, "loc": { "start": { - "line": 757, + "line": 758, "column": 36 }, "end": { - "line": 757, + "line": 758, "column": 45 } }, @@ -54879,15 +55016,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 27855, - "end": 27861, + "start": 27905, + "end": 27911, "loc": { "start": { - "line": 757, + "line": 758, "column": 48 }, "end": { - "line": 757, + "line": 758, "column": 54 }, "identifierName": "nodeId" @@ -54901,44 +55038,44 @@ }, { "type": "VariableDeclaration", - "start": 27875, - "end": 27938, + "start": 27925, + "end": 27988, "loc": { "start": { - "line": 758, + "line": 759, "column": 12 }, "end": { - "line": 758, + "line": 759, "column": 75 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27881, - "end": 27937, + "start": 27931, + "end": 27987, "loc": { "start": { - "line": 758, + "line": 759, "column": 18 }, "end": { - "line": 758, + "line": 759, "column": 74 } }, "id": { "type": "Identifier", - "start": 27881, - "end": 27894, + "start": 27931, + "end": 27944, "loc": { "start": { - "line": 758, + "line": 759, "column": 18 }, "end": { - "line": 758, + "line": 759, "column": 31 }, "identifierName": "switchElement" @@ -54947,43 +55084,43 @@ }, "init": { "type": "CallExpression", - "start": 27897, - "end": 27937, + "start": 27947, + "end": 27987, "loc": { "start": { - "line": 758, + "line": 759, "column": 34 }, "end": { - "line": 758, + "line": 759, "column": 74 } }, "callee": { "type": "MemberExpression", - "start": 27897, - "end": 27920, + "start": 27947, + "end": 27970, "loc": { "start": { - "line": 758, + "line": 759, "column": 34 }, "end": { - "line": 758, + "line": 759, "column": 57 } }, "object": { "type": "Identifier", - "start": 27897, - "end": 27905, + "start": 27947, + "end": 27955, "loc": { "start": { - "line": 758, + "line": 759, "column": 34 }, "end": { - "line": 758, + "line": 759, "column": 42 }, "identifierName": "document" @@ -54992,15 +55129,15 @@ }, "property": { "type": "Identifier", - "start": 27906, - "end": 27920, + "start": 27956, + "end": 27970, "loc": { "start": { - "line": 758, + "line": 759, "column": 43 }, "end": { - "line": 758, + "line": 759, "column": 57 }, "identifierName": "getElementById" @@ -55012,15 +55149,15 @@ "arguments": [ { "type": "Identifier", - "start": 27921, - "end": 27936, + "start": 27971, + "end": 27986, "loc": { "start": { - "line": 758, + "line": 759, "column": 58 }, "end": { - "line": 758, + "line": 759, "column": 73 }, "identifierName": "switchElementId" @@ -55035,29 +55172,29 @@ }, { "type": "IfStatement", - "start": 27951, - "end": 28043, + "start": 28001, + "end": 28093, "loc": { "start": { - "line": 759, + "line": 760, "column": 12 }, "end": { - "line": 761, + "line": 762, "column": 13 } }, "test": { "type": "Identifier", - "start": 27955, - "end": 27968, + "start": 28005, + "end": 28018, "loc": { "start": { - "line": 759, + "line": 760, "column": 16 }, "end": { - "line": 759, + "line": 760, "column": 29 }, "identifierName": "switchElement" @@ -55066,87 +55203,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 27970, - "end": 28043, + "start": 28020, + "end": 28093, "loc": { "start": { - "line": 759, + "line": 760, "column": 31 }, "end": { - "line": 761, + "line": 762, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 27988, - "end": 28029, + "start": 28038, + "end": 28079, "loc": { "start": { - "line": 760, + "line": 761, "column": 16 }, "end": { - "line": 760, + "line": 761, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 27988, - "end": 28028, + "start": 28038, + "end": 28078, "loc": { "start": { - "line": 760, + "line": 761, "column": 16 }, "end": { - "line": 760, + "line": 761, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 27988, - "end": 28013, + "start": 28038, + "end": 28063, "loc": { "start": { - "line": 760, + "line": 761, "column": 16 }, "end": { - "line": 760, + "line": 761, "column": 41 } }, "object": { "type": "ThisExpression", - "start": 27988, - "end": 27992, + "start": 28038, + "end": 28042, "loc": { "start": { - "line": 760, + "line": 761, "column": 16 }, "end": { - "line": 760, + "line": 761, "column": 20 } } }, "property": { "type": "Identifier", - "start": 27993, - "end": 28013, + "start": 28043, + "end": 28063, "loc": { "start": { - "line": 760, + "line": 761, "column": 21 }, "end": { - "line": 760, + "line": 761, "column": 41 }, "identifierName": "_expandSwitchElement" @@ -55158,15 +55295,15 @@ "arguments": [ { "type": "Identifier", - "start": 28014, - "end": 28027, + "start": 28064, + "end": 28077, "loc": { "start": { - "line": 760, + "line": 761, "column": 42 }, "end": { - "line": 760, + "line": 761, "column": 55 }, "identifierName": "switchElement" @@ -55187,44 +55324,44 @@ }, { "type": "VariableDeclaration", - "start": 28062, - "end": 28105, + "start": 28112, + "end": 28155, "loc": { "start": { - "line": 763, + "line": 764, "column": 8 }, "end": { - "line": 763, + "line": 764, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 28068, - "end": 28104, + "start": 28118, + "end": 28154, "loc": { "start": { - "line": 763, + "line": 764, "column": 14 }, "end": { - "line": 763, + "line": 764, "column": 50 } }, "id": { "type": "Identifier", - "start": 28068, - "end": 28085, + "start": 28118, + "end": 28135, "loc": { "start": { - "line": 763, + "line": 764, "column": 14 }, "end": { - "line": 763, + "line": 764, "column": 31 }, "identifierName": "listItemElementId" @@ -55233,29 +55370,29 @@ }, "init": { "type": "BinaryExpression", - "start": 28088, - "end": 28104, + "start": 28138, + "end": 28154, "loc": { "start": { - "line": 763, + "line": 764, "column": 34 }, "end": { - "line": 763, + "line": 764, "column": 50 } }, "left": { "type": "StringLiteral", - "start": 28088, - "end": 28095, + "start": 28138, + "end": 28145, "loc": { "start": { - "line": 763, + "line": 764, "column": 34 }, "end": { - "line": 763, + "line": 764, "column": 41 } }, @@ -55268,15 +55405,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 28098, - "end": 28104, + "start": 28148, + "end": 28154, "loc": { "start": { - "line": 763, + "line": 764, "column": 44 }, "end": { - "line": 763, + "line": 764, "column": 50 }, "identifierName": "nodeId" @@ -55290,44 +55427,44 @@ }, { "type": "VariableDeclaration", - "start": 28114, - "end": 28181, + "start": 28164, + "end": 28231, "loc": { "start": { - "line": 764, + "line": 765, "column": 8 }, "end": { - "line": 764, + "line": 765, "column": 75 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 28120, - "end": 28180, + "start": 28170, + "end": 28230, "loc": { "start": { - "line": 764, + "line": 765, "column": 14 }, "end": { - "line": 764, + "line": 765, "column": 74 } }, "id": { "type": "Identifier", - "start": 28120, - "end": 28135, + "start": 28170, + "end": 28185, "loc": { "start": { - "line": 764, + "line": 765, "column": 14 }, "end": { - "line": 764, + "line": 765, "column": 29 }, "identifierName": "listItemElement" @@ -55336,43 +55473,43 @@ }, "init": { "type": "CallExpression", - "start": 28138, - "end": 28180, + "start": 28188, + "end": 28230, "loc": { "start": { - "line": 764, + "line": 765, "column": 32 }, "end": { - "line": 764, + "line": 765, "column": 74 } }, "callee": { "type": "MemberExpression", - "start": 28138, - "end": 28161, + "start": 28188, + "end": 28211, "loc": { "start": { - "line": 764, + "line": 765, "column": 32 }, "end": { - "line": 764, + "line": 765, "column": 55 } }, "object": { "type": "Identifier", - "start": 28138, - "end": 28146, + "start": 28188, + "end": 28196, "loc": { "start": { - "line": 764, + "line": 765, "column": 32 }, "end": { - "line": 764, + "line": 765, "column": 40 }, "identifierName": "document" @@ -55381,15 +55518,15 @@ }, "property": { "type": "Identifier", - "start": 28147, - "end": 28161, + "start": 28197, + "end": 28211, "loc": { "start": { - "line": 764, + "line": 765, "column": 41 }, "end": { - "line": 764, + "line": 765, "column": 55 }, "identifierName": "getElementById" @@ -55401,15 +55538,15 @@ "arguments": [ { "type": "Identifier", - "start": 28162, - "end": 28179, + "start": 28212, + "end": 28229, "loc": { "start": { - "line": 764, + "line": 765, "column": 56 }, "end": { - "line": 764, + "line": 765, "column": 73 }, "identifierName": "listItemElementId" @@ -55424,57 +55561,57 @@ }, { "type": "ExpressionStatement", - "start": 28190, - "end": 28240, + "start": 28240, + "end": 28290, "loc": { "start": { - "line": 765, + "line": 766, "column": 8 }, "end": { - "line": 765, + "line": 766, "column": 58 } }, "expression": { "type": "CallExpression", - "start": 28190, - "end": 28239, + "start": 28240, + "end": 28289, "loc": { "start": { - "line": 765, + "line": 766, "column": 8 }, "end": { - "line": 765, + "line": 766, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 28190, - "end": 28220, + "start": 28240, + "end": 28270, "loc": { "start": { - "line": 765, + "line": 766, "column": 8 }, "end": { - "line": 765, + "line": 766, "column": 38 } }, "object": { "type": "Identifier", - "start": 28190, - "end": 28205, + "start": 28240, + "end": 28255, "loc": { "start": { - "line": 765, + "line": 766, "column": 8 }, "end": { - "line": 765, + "line": 766, "column": 23 }, "identifierName": "listItemElement" @@ -55483,15 +55620,15 @@ }, "property": { "type": "Identifier", - "start": 28206, - "end": 28220, + "start": 28256, + "end": 28270, "loc": { "start": { - "line": 765, + "line": 766, "column": 24 }, "end": { - "line": 765, + "line": 766, "column": 38 }, "identifierName": "scrollIntoView" @@ -55503,30 +55640,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 28221, - "end": 28238, + "start": 28271, + "end": 28288, "loc": { "start": { - "line": 765, + "line": 766, "column": 39 }, "end": { - "line": 765, + "line": 766, "column": 56 } }, "properties": [ { "type": "ObjectProperty", - "start": 28222, - "end": 28237, + "start": 28272, + "end": 28287, "loc": { "start": { - "line": 765, + "line": 766, "column": 40 }, "end": { - "line": 765, + "line": 766, "column": 55 } }, @@ -55535,15 +55672,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 28222, - "end": 28227, + "start": 28272, + "end": 28277, "loc": { "start": { - "line": 765, + "line": 766, "column": 40 }, "end": { - "line": 765, + "line": 766, "column": 45 }, "identifierName": "block" @@ -55552,15 +55689,15 @@ }, "value": { "type": "StringLiteral", - "start": 28229, - "end": 28237, + "start": 28279, + "end": 28287, "loc": { "start": { - "line": 765, + "line": 766, "column": 47 }, "end": { - "line": 765, + "line": 766, "column": 55 } }, @@ -55578,71 +55715,71 @@ }, { "type": "ExpressionStatement", - "start": 28249, - "end": 28299, + "start": 28299, + "end": 28349, "loc": { "start": { - "line": 766, + "line": 767, "column": 8 }, "end": { - "line": 766, + "line": 767, "column": 58 } }, "expression": { "type": "CallExpression", - "start": 28249, - "end": 28298, + "start": 28299, + "end": 28348, "loc": { "start": { - "line": 766, + "line": 767, "column": 8 }, "end": { - "line": 766, + "line": 767, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 28249, - "end": 28278, + "start": 28299, + "end": 28328, "loc": { "start": { - "line": 766, + "line": 767, "column": 8 }, "end": { - "line": 766, + "line": 767, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 28249, - "end": 28274, + "start": 28299, + "end": 28324, "loc": { "start": { - "line": 766, + "line": 767, "column": 8 }, "end": { - "line": 766, + "line": 767, "column": 33 } }, "object": { "type": "Identifier", - "start": 28249, - "end": 28264, + "start": 28299, + "end": 28314, "loc": { "start": { - "line": 766, + "line": 767, "column": 8 }, "end": { - "line": 766, + "line": 767, "column": 23 }, "identifierName": "listItemElement" @@ -55651,15 +55788,15 @@ }, "property": { "type": "Identifier", - "start": 28265, - "end": 28274, + "start": 28315, + "end": 28324, "loc": { "start": { - "line": 766, + "line": 767, "column": 24 }, "end": { - "line": 766, + "line": 767, "column": 33 }, "identifierName": "classList" @@ -55670,15 +55807,15 @@ }, "property": { "type": "Identifier", - "start": 28275, - "end": 28278, + "start": 28325, + "end": 28328, "loc": { "start": { - "line": 766, + "line": 767, "column": 34 }, "end": { - "line": 766, + "line": 767, "column": 37 }, "identifierName": "add" @@ -55690,15 +55827,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 28279, - "end": 28297, + "start": 28329, + "end": 28347, "loc": { "start": { - "line": 766, + "line": 767, "column": 38 }, "end": { - "line": 766, + "line": 767, "column": 56 } }, @@ -55713,73 +55850,73 @@ }, { "type": "ExpressionStatement", - "start": 28308, - "end": 28356, + "start": 28358, + "end": 28406, "loc": { "start": { - "line": 767, + "line": 768, "column": 8 }, "end": { - "line": 767, + "line": 768, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 28308, - "end": 28355, + "start": 28358, + "end": 28405, "loc": { "start": { - "line": 767, + "line": 768, "column": 8 }, "end": { - "line": 767, + "line": 768, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28308, - "end": 28335, + "start": 28358, + "end": 28385, "loc": { "start": { - "line": 767, + "line": 768, "column": 8 }, "end": { - "line": 767, + "line": 768, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 28308, - "end": 28312, + "start": 28358, + "end": 28362, "loc": { "start": { - "line": 767, + "line": 768, "column": 8 }, "end": { - "line": 767, + "line": 768, "column": 12 } } }, "property": { "type": "Identifier", - "start": 28313, - "end": 28335, + "start": 28363, + "end": 28385, "loc": { "start": { - "line": 767, + "line": 768, "column": 13 }, "end": { - "line": 767, + "line": 768, "column": 35 }, "identifierName": "_showListItemElementId" @@ -55790,15 +55927,15 @@ }, "right": { "type": "Identifier", - "start": 28338, - "end": 28355, + "start": 28388, + "end": 28405, "loc": { "start": { - "line": 767, + "line": 768, "column": 38 }, "end": { - "line": 767, + "line": 768, "column": 55 }, "identifierName": "listItemElementId" @@ -55815,15 +55952,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n * @param objectId\n ", - "start": 26826, - "end": 26876, + "start": 26876, + "end": 26926, "loc": { "start": { - "line": 727, + "line": 728, "column": 4 }, "end": { - "line": 730, + "line": 731, "column": 7 } } @@ -55833,15 +55970,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 28368, - "end": 28395, + "start": 28418, + "end": 28445, "loc": { "start": { - "line": 770, + "line": 771, "column": 4 }, "end": { - "line": 772, + "line": 773, "column": 7 } } @@ -55850,15 +55987,15 @@ }, { "type": "ClassMethod", - "start": 28400, - "end": 28796, + "start": 28450, + "end": 28846, "loc": { "start": { - "line": 773, + "line": 774, "column": 4 }, "end": { - "line": 784, + "line": 785, "column": 5 } }, @@ -55866,15 +56003,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 28400, - "end": 28410, + "start": 28450, + "end": 28460, "loc": { "start": { - "line": 773, + "line": 774, "column": 4 }, "end": { - "line": 773, + "line": 774, "column": 14 }, "identifierName": "unShowNode" @@ -55890,44 +56027,44 @@ "params": [], "body": { "type": "BlockStatement", - "start": 28413, - "end": 28796, + "start": 28463, + "end": 28846, "loc": { "start": { - "line": 773, + "line": 774, "column": 17 }, "end": { - "line": 784, + "line": 785, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 28423, - "end": 28488, + "start": 28473, + "end": 28538, "loc": { "start": { - "line": 774, + "line": 775, "column": 8 }, "end": { - "line": 776, + "line": 777, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 28427, - "end": 28455, + "start": 28477, + "end": 28505, "loc": { "start": { - "line": 774, + "line": 775, "column": 12 }, "end": { - "line": 774, + "line": 775, "column": 40 } }, @@ -55935,44 +56072,44 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 28428, - "end": 28455, + "start": 28478, + "end": 28505, "loc": { "start": { - "line": 774, + "line": 775, "column": 13 }, "end": { - "line": 774, + "line": 775, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 28428, - "end": 28432, + "start": 28478, + "end": 28482, "loc": { "start": { - "line": 774, + "line": 775, "column": 13 }, "end": { - "line": 774, + "line": 775, "column": 17 } } }, "property": { "type": "Identifier", - "start": 28433, - "end": 28455, + "start": 28483, + "end": 28505, "loc": { "start": { - "line": 774, + "line": 775, "column": 18 }, "end": { - "line": 774, + "line": 775, "column": 40 }, "identifierName": "_showListItemElementId" @@ -55987,30 +56124,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 28457, - "end": 28488, + "start": 28507, + "end": 28538, "loc": { "start": { - "line": 774, + "line": 775, "column": 42 }, "end": { - "line": 776, + "line": 777, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 28471, - "end": 28478, + "start": 28521, + "end": 28528, "loc": { "start": { - "line": 775, + "line": 776, "column": 12 }, "end": { - "line": 775, + "line": 776, "column": 19 } }, @@ -56023,44 +56160,44 @@ }, { "type": "VariableDeclaration", - "start": 28497, - "end": 28574, + "start": 28547, + "end": 28624, "loc": { "start": { - "line": 777, + "line": 778, "column": 8 }, "end": { - "line": 777, + "line": 778, "column": 85 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 28503, - "end": 28573, + "start": 28553, + "end": 28623, "loc": { "start": { - "line": 777, + "line": 778, "column": 14 }, "end": { - "line": 777, + "line": 778, "column": 84 } }, "id": { "type": "Identifier", - "start": 28503, - "end": 28518, + "start": 28553, + "end": 28568, "loc": { "start": { - "line": 777, + "line": 778, "column": 14 }, "end": { - "line": 777, + "line": 778, "column": 29 }, "identifierName": "listItemElement" @@ -56069,43 +56206,43 @@ }, "init": { "type": "CallExpression", - "start": 28521, - "end": 28573, + "start": 28571, + "end": 28623, "loc": { "start": { - "line": 777, + "line": 778, "column": 32 }, "end": { - "line": 777, + "line": 778, "column": 84 } }, "callee": { "type": "MemberExpression", - "start": 28521, - "end": 28544, + "start": 28571, + "end": 28594, "loc": { "start": { - "line": 777, + "line": 778, "column": 32 }, "end": { - "line": 777, + "line": 778, "column": 55 } }, "object": { "type": "Identifier", - "start": 28521, - "end": 28529, + "start": 28571, + "end": 28579, "loc": { "start": { - "line": 777, + "line": 778, "column": 32 }, "end": { - "line": 777, + "line": 778, "column": 40 }, "identifierName": "document" @@ -56114,15 +56251,15 @@ }, "property": { "type": "Identifier", - "start": 28530, - "end": 28544, + "start": 28580, + "end": 28594, "loc": { "start": { - "line": 777, + "line": 778, "column": 41 }, "end": { - "line": 777, + "line": 778, "column": 55 }, "identifierName": "getElementById" @@ -56134,44 +56271,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 28545, - "end": 28572, + "start": 28595, + "end": 28622, "loc": { "start": { - "line": 777, + "line": 778, "column": 56 }, "end": { - "line": 777, + "line": 778, "column": 83 } }, "object": { "type": "ThisExpression", - "start": 28545, - "end": 28549, + "start": 28595, + "end": 28599, "loc": { "start": { - "line": 777, + "line": 778, "column": 56 }, "end": { - "line": 777, + "line": 778, "column": 60 } } }, "property": { "type": "Identifier", - "start": 28550, - "end": 28572, + "start": 28600, + "end": 28622, "loc": { "start": { - "line": 777, + "line": 778, "column": 61 }, "end": { - "line": 777, + "line": 778, "column": 83 }, "identifierName": "_showListItemElementId" @@ -56188,29 +56325,29 @@ }, { "type": "IfStatement", - "start": 28583, - "end": 28684, + "start": 28633, + "end": 28734, "loc": { "start": { - "line": 778, + "line": 779, "column": 8 }, "end": { - "line": 781, + "line": 782, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 28587, - "end": 28603, + "start": 28637, + "end": 28653, "loc": { "start": { - "line": 778, + "line": 779, "column": 12 }, "end": { - "line": 778, + "line": 779, "column": 28 } }, @@ -56218,15 +56355,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 28588, - "end": 28603, + "start": 28638, + "end": 28653, "loc": { "start": { - "line": 778, + "line": 779, "column": 13 }, "end": { - "line": 778, + "line": 779, "column": 28 }, "identifierName": "listItemElement" @@ -56239,88 +56376,88 @@ }, "consequent": { "type": "BlockStatement", - "start": 28605, - "end": 28684, + "start": 28655, + "end": 28734, "loc": { "start": { - "line": 778, + "line": 779, "column": 30 }, "end": { - "line": 781, + "line": 782, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 28619, - "end": 28654, + "start": 28669, + "end": 28704, "loc": { "start": { - "line": 779, + "line": 780, "column": 12 }, "end": { - "line": 779, + "line": 780, "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 28619, - "end": 28653, + "start": 28669, + "end": 28703, "loc": { "start": { - "line": 779, + "line": 780, "column": 12 }, "end": { - "line": 779, + "line": 780, "column": 46 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28619, - "end": 28646, + "start": 28669, + "end": 28696, "loc": { "start": { - "line": 779, + "line": 780, "column": 12 }, "end": { - "line": 779, + "line": 780, "column": 39 } }, "object": { "type": "ThisExpression", - "start": 28619, - "end": 28623, + "start": 28669, + "end": 28673, "loc": { "start": { - "line": 779, + "line": 780, "column": 12 }, "end": { - "line": 779, + "line": 780, "column": 16 } } }, "property": { "type": "Identifier", - "start": 28624, - "end": 28646, + "start": 28674, + "end": 28696, "loc": { "start": { - "line": 779, + "line": 780, "column": 17 }, "end": { - "line": 779, + "line": 780, "column": 39 }, "identifierName": "_showListItemElementId" @@ -56331,15 +56468,15 @@ }, "right": { "type": "NullLiteral", - "start": 28649, - "end": 28653, + "start": 28699, + "end": 28703, "loc": { "start": { - "line": 779, + "line": 780, "column": 42 }, "end": { - "line": 779, + "line": 780, "column": 46 } } @@ -56348,15 +56485,15 @@ }, { "type": "ReturnStatement", - "start": 28667, - "end": 28674, + "start": 28717, + "end": 28724, "loc": { "start": { - "line": 780, + "line": 781, "column": 12 }, "end": { - "line": 780, + "line": 781, "column": 19 } }, @@ -56369,71 +56506,71 @@ }, { "type": "ExpressionStatement", - "start": 28693, - "end": 28746, + "start": 28743, + "end": 28796, "loc": { "start": { - "line": 782, + "line": 783, "column": 8 }, "end": { - "line": 782, + "line": 783, "column": 61 } }, "expression": { "type": "CallExpression", - "start": 28693, - "end": 28745, + "start": 28743, + "end": 28795, "loc": { "start": { - "line": 782, + "line": 783, "column": 8 }, "end": { - "line": 782, + "line": 783, "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 28693, - "end": 28725, + "start": 28743, + "end": 28775, "loc": { "start": { - "line": 782, + "line": 783, "column": 8 }, "end": { - "line": 782, + "line": 783, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 28693, - "end": 28718, + "start": 28743, + "end": 28768, "loc": { "start": { - "line": 782, + "line": 783, "column": 8 }, "end": { - "line": 782, + "line": 783, "column": 33 } }, "object": { "type": "Identifier", - "start": 28693, - "end": 28708, + "start": 28743, + "end": 28758, "loc": { "start": { - "line": 782, + "line": 783, "column": 8 }, "end": { - "line": 782, + "line": 783, "column": 23 }, "identifierName": "listItemElement" @@ -56442,15 +56579,15 @@ }, "property": { "type": "Identifier", - "start": 28709, - "end": 28718, + "start": 28759, + "end": 28768, "loc": { "start": { - "line": 782, + "line": 783, "column": 24 }, "end": { - "line": 782, + "line": 783, "column": 33 }, "identifierName": "classList" @@ -56461,15 +56598,15 @@ }, "property": { "type": "Identifier", - "start": 28719, - "end": 28725, + "start": 28769, + "end": 28775, "loc": { "start": { - "line": 782, + "line": 783, "column": 34 }, "end": { - "line": 782, + "line": 783, "column": 40 }, "identifierName": "remove" @@ -56481,15 +56618,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 28726, - "end": 28744, + "start": 28776, + "end": 28794, "loc": { "start": { - "line": 782, + "line": 783, "column": 41 }, "end": { - "line": 782, + "line": 783, "column": 59 } }, @@ -56504,73 +56641,73 @@ }, { "type": "ExpressionStatement", - "start": 28755, - "end": 28790, + "start": 28805, + "end": 28840, "loc": { "start": { - "line": 783, + "line": 784, "column": 8 }, "end": { - "line": 783, + "line": 784, "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 28755, - "end": 28789, + "start": 28805, + "end": 28839, "loc": { "start": { - "line": 783, + "line": 784, "column": 8 }, "end": { - "line": 783, + "line": 784, "column": 42 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28755, - "end": 28782, + "start": 28805, + "end": 28832, "loc": { "start": { - "line": 783, + "line": 784, "column": 8 }, "end": { - "line": 783, + "line": 784, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 28755, - "end": 28759, + "start": 28805, + "end": 28809, "loc": { "start": { - "line": 783, + "line": 784, "column": 8 }, "end": { - "line": 783, + "line": 784, "column": 12 } } }, "property": { "type": "Identifier", - "start": 28760, - "end": 28782, + "start": 28810, + "end": 28832, "loc": { "start": { - "line": 783, + "line": 784, "column": 13 }, "end": { - "line": 783, + "line": 784, "column": 35 }, "identifierName": "_showListItemElementId" @@ -56581,15 +56718,15 @@ }, "right": { "type": "NullLiteral", - "start": 28785, - "end": 28789, + "start": 28835, + "end": 28839, "loc": { "start": { - "line": 783, + "line": 784, "column": 38 }, "end": { - "line": 783, + "line": 784, "column": 42 } } @@ -56603,15 +56740,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 28368, - "end": 28395, + "start": 28418, + "end": 28445, "loc": { "start": { - "line": 770, + "line": 771, "column": 4 }, "end": { - "line": 772, + "line": 773, "column": 7 } } @@ -56620,15 +56757,15 @@ }, { "type": "ClassMethod", - "start": 28802, - "end": 29846, + "start": 28852, + "end": 29896, "loc": { "start": { - "line": 786, + "line": 787, "column": 4 }, "end": { - "line": 809, + "line": 810, "column": 5 } }, @@ -56636,15 +56773,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 28802, - "end": 28822, + "start": 28852, + "end": 28872, "loc": { "start": { - "line": 786, + "line": 787, "column": 4 }, "end": { - "line": 786, + "line": 787, "column": 24 }, "identifierName": "_expandSwitchElement" @@ -56659,15 +56796,15 @@ "params": [ { "type": "Identifier", - "start": 28823, - "end": 28836, + "start": 28873, + "end": 28886, "loc": { "start": { - "line": 786, + "line": 787, "column": 25 }, "end": { - "line": 786, + "line": 787, "column": 38 }, "identifierName": "switchElement" @@ -56677,59 +56814,59 @@ ], "body": { "type": "BlockStatement", - "start": 28838, - "end": 29846, + "start": 28888, + "end": 29896, "loc": { "start": { - "line": 786, + "line": 787, "column": 40 }, "end": { - "line": 809, + "line": 810, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 28848, - "end": 28898, + "start": 28898, + "end": 28948, "loc": { "start": { - "line": 787, + "line": 788, "column": 8 }, "end": { - "line": 787, + "line": 788, "column": 58 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 28854, - "end": 28897, + "start": 28904, + "end": 28947, "loc": { "start": { - "line": 787, + "line": 788, "column": 14 }, "end": { - "line": 787, + "line": 788, "column": 57 } }, "id": { "type": "Identifier", - "start": 28854, - "end": 28867, + "start": 28904, + "end": 28917, "loc": { "start": { - "line": 787, + "line": 788, "column": 14 }, "end": { - "line": 787, + "line": 788, "column": 27 }, "identifierName": "parentElement" @@ -56738,29 +56875,29 @@ }, "init": { "type": "MemberExpression", - "start": 28870, - "end": 28897, + "start": 28920, + "end": 28947, "loc": { "start": { - "line": 787, + "line": 788, "column": 30 }, "end": { - "line": 787, + "line": 788, "column": 57 } }, "object": { "type": "Identifier", - "start": 28870, - "end": 28883, + "start": 28920, + "end": 28933, "loc": { "start": { - "line": 787, + "line": 788, "column": 30 }, "end": { - "line": 787, + "line": 788, "column": 43 }, "identifierName": "switchElement" @@ -56769,15 +56906,15 @@ }, "property": { "type": "Identifier", - "start": 28884, - "end": 28897, + "start": 28934, + "end": 28947, "loc": { "start": { - "line": 787, + "line": 788, "column": 44 }, "end": { - "line": 787, + "line": 788, "column": 57 }, "identifierName": "parentElement" @@ -56792,44 +56929,44 @@ }, { "type": "VariableDeclaration", - "start": 28907, - "end": 28968, + "start": 28957, + "end": 29018, "loc": { "start": { - "line": 788, + "line": 789, "column": 8 }, "end": { - "line": 788, + "line": 789, "column": 69 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 28913, - "end": 28967, + "start": 28963, + "end": 29017, "loc": { "start": { - "line": 788, + "line": 789, "column": 14 }, "end": { - "line": 788, + "line": 789, "column": 68 } }, "id": { "type": "Identifier", - "start": 28913, - "end": 28921, + "start": 28963, + "end": 28971, "loc": { "start": { - "line": 788, + "line": 789, "column": 14 }, "end": { - "line": 788, + "line": 789, "column": 22 }, "identifierName": "expanded" @@ -56838,57 +56975,57 @@ }, "init": { "type": "MemberExpression", - "start": 28924, - "end": 28967, + "start": 28974, + "end": 29017, "loc": { "start": { - "line": 788, + "line": 789, "column": 25 }, "end": { - "line": 788, + "line": 789, "column": 68 } }, "object": { "type": "CallExpression", - "start": 28924, - "end": 28964, + "start": 28974, + "end": 29014, "loc": { "start": { - "line": 788, + "line": 789, "column": 25 }, "end": { - "line": 788, + "line": 789, "column": 65 } }, "callee": { "type": "MemberExpression", - "start": 28924, - "end": 28958, + "start": 28974, + "end": 29008, "loc": { "start": { - "line": 788, + "line": 789, "column": 25 }, "end": { - "line": 788, + "line": 789, "column": 59 } }, "object": { "type": "Identifier", - "start": 28924, - "end": 28937, + "start": 28974, + "end": 28987, "loc": { "start": { - "line": 788, + "line": 789, "column": 25 }, "end": { - "line": 788, + "line": 789, "column": 38 }, "identifierName": "parentElement" @@ -56897,15 +57034,15 @@ }, "property": { "type": "Identifier", - "start": 28938, - "end": 28958, + "start": 28988, + "end": 29008, "loc": { "start": { - "line": 788, + "line": 789, "column": 39 }, "end": { - "line": 788, + "line": 789, "column": 59 }, "identifierName": "getElementsByTagName" @@ -56917,15 +57054,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 28959, - "end": 28963, + "start": 29009, + "end": 29013, "loc": { "start": { - "line": 788, + "line": 789, "column": 60 }, "end": { - "line": 788, + "line": 789, "column": 64 } }, @@ -56939,15 +57076,15 @@ }, "property": { "type": "NumericLiteral", - "start": 28965, - "end": 28966, + "start": 29015, + "end": 29016, "loc": { "start": { - "line": 788, + "line": 789, "column": 66 }, "end": { - "line": 788, + "line": 789, "column": 67 } }, @@ -56965,29 +57102,29 @@ }, { "type": "IfStatement", - "start": 28977, - "end": 29022, + "start": 29027, + "end": 29072, "loc": { "start": { - "line": 789, + "line": 790, "column": 8 }, "end": { - "line": 791, + "line": 792, "column": 9 } }, "test": { "type": "Identifier", - "start": 28981, - "end": 28989, + "start": 29031, + "end": 29039, "loc": { "start": { - "line": 789, + "line": 790, "column": 12 }, "end": { - "line": 789, + "line": 790, "column": 20 }, "identifierName": "expanded" @@ -56996,30 +57133,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 28991, - "end": 29022, + "start": 29041, + "end": 29072, "loc": { "start": { - "line": 789, + "line": 790, "column": 22 }, "end": { - "line": 791, + "line": 792, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 29005, - "end": 29012, + "start": 29055, + "end": 29062, "loc": { "start": { - "line": 790, + "line": 791, "column": 12 }, "end": { - "line": 790, + "line": 791, "column": 19 } }, @@ -57032,44 +57169,44 @@ }, { "type": "VariableDeclaration", - "start": 29031, - "end": 29084, + "start": 29081, + "end": 29134, "loc": { "start": { - "line": 792, + "line": 793, "column": 8 }, "end": { - "line": 792, + "line": 793, "column": 61 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29037, - "end": 29083, + "start": 29087, + "end": 29133, "loc": { "start": { - "line": 792, + "line": 793, "column": 14 }, "end": { - "line": 792, + "line": 793, "column": 60 } }, "id": { "type": "Identifier", - "start": 29037, - "end": 29043, + "start": 29087, + "end": 29093, "loc": { "start": { - "line": 792, + "line": 793, "column": 14 }, "end": { - "line": 792, + "line": 793, "column": 20 }, "identifierName": "nodeId" @@ -57078,57 +57215,57 @@ }, "init": { "type": "CallExpression", - "start": 29046, - "end": 29083, + "start": 29096, + "end": 29133, "loc": { "start": { - "line": 792, + "line": 793, "column": 23 }, "end": { - "line": 792, + "line": 793, "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 29046, - "end": 29070, + "start": 29096, + "end": 29120, "loc": { "start": { - "line": 792, + "line": 793, "column": 23 }, "end": { - "line": 792, + "line": 793, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 29046, - "end": 29062, + "start": 29096, + "end": 29112, "loc": { "start": { - "line": 792, + "line": 793, "column": 23 }, "end": { - "line": 792, + "line": 793, "column": 39 } }, "object": { "type": "Identifier", - "start": 29046, - "end": 29059, + "start": 29096, + "end": 29109, "loc": { "start": { - "line": 792, + "line": 793, "column": 23 }, "end": { - "line": 792, + "line": 793, "column": 36 }, "identifierName": "parentElement" @@ -57137,15 +57274,15 @@ }, "property": { "type": "Identifier", - "start": 29060, - "end": 29062, + "start": 29110, + "end": 29112, "loc": { "start": { - "line": 792, + "line": 793, "column": 37 }, "end": { - "line": 792, + "line": 793, "column": 39 }, "identifierName": "id" @@ -57156,15 +57293,15 @@ }, "property": { "type": "Identifier", - "start": 29063, - "end": 29070, + "start": 29113, + "end": 29120, "loc": { "start": { - "line": 792, + "line": 793, "column": 40 }, "end": { - "line": 792, + "line": 793, "column": 47 }, "identifierName": "replace" @@ -57176,15 +57313,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 29071, - "end": 29078, + "start": 29121, + "end": 29128, "loc": { "start": { - "line": 792, + "line": 793, "column": 48 }, "end": { - "line": 792, + "line": 793, "column": 55 } }, @@ -57196,15 +57333,15 @@ }, { "type": "StringLiteral", - "start": 29080, - "end": 29082, + "start": 29130, + "end": 29132, "loc": { "start": { - "line": 792, + "line": 793, "column": 57 }, "end": { - "line": 792, + "line": 793, "column": 59 } }, @@ -57222,44 +57359,44 @@ }, { "type": "VariableDeclaration", - "start": 29093, - "end": 29139, + "start": 29143, + "end": 29189, "loc": { "start": { - "line": 793, + "line": 794, "column": 8 }, "end": { - "line": 793, + "line": 794, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29099, - "end": 29138, + "start": 29149, + "end": 29188, "loc": { "start": { - "line": 793, + "line": 794, "column": 14 }, "end": { - "line": 793, + "line": 794, "column": 53 } }, "id": { "type": "Identifier", - "start": 29099, - "end": 29107, + "start": 29149, + "end": 29157, "loc": { "start": { - "line": 793, + "line": 794, "column": 14 }, "end": { - "line": 793, + "line": 794, "column": 22 }, "identifierName": "objectId" @@ -57268,58 +57405,58 @@ }, "init": { "type": "CallExpression", - "start": 29110, - "end": 29138, + "start": 29160, + "end": 29188, "loc": { "start": { - "line": 793, + "line": 794, "column": 25 }, "end": { - "line": 793, + "line": 794, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 29110, - "end": 29130, + "start": 29160, + "end": 29180, "loc": { "start": { - "line": 793, + "line": 794, "column": 25 }, "end": { - "line": 793, + "line": 794, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 29110, - "end": 29114, + "start": 29160, + "end": 29164, "loc": { "start": { - "line": 793, + "line": 794, "column": 25 }, "end": { - "line": 793, + "line": 794, "column": 29 } } }, "property": { "type": "Identifier", - "start": 29115, - "end": 29130, + "start": 29165, + "end": 29180, "loc": { "start": { - "line": 793, + "line": 794, "column": 30 }, "end": { - "line": 793, + "line": 794, "column": 45 }, "identifierName": "_nodeToObjectID" @@ -57331,15 +57468,15 @@ "arguments": [ { "type": "Identifier", - "start": 29131, - "end": 29137, + "start": 29181, + "end": 29187, "loc": { "start": { - "line": 793, + "line": 794, "column": 46 }, "end": { - "line": 793, + "line": 794, "column": 52 }, "identifierName": "nodeId" @@ -57354,44 +57491,44 @@ }, { "type": "VariableDeclaration", - "start": 29148, - "end": 29195, + "start": 29198, + "end": 29245, "loc": { "start": { - "line": 794, + "line": 795, "column": 8 }, "end": { - "line": 794, + "line": 795, "column": 55 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29154, - "end": 29194, + "start": 29204, + "end": 29244, "loc": { "start": { - "line": 794, + "line": 795, "column": 14 }, "end": { - "line": 794, + "line": 795, "column": 54 } }, "id": { "type": "Identifier", - "start": 29154, - "end": 29164, + "start": 29204, + "end": 29214, "loc": { "start": { - "line": 794, + "line": 795, "column": 14 }, "end": { - "line": 794, + "line": 795, "column": 24 }, "identifierName": "switchNode" @@ -57400,58 +57537,58 @@ }, "init": { "type": "MemberExpression", - "start": 29167, - "end": 29194, + "start": 29217, + "end": 29244, "loc": { "start": { - "line": 794, + "line": 795, "column": 27 }, "end": { - "line": 794, + "line": 795, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 29167, - "end": 29184, + "start": 29217, + "end": 29234, "loc": { "start": { - "line": 794, + "line": 795, "column": 27 }, "end": { - "line": 794, + "line": 795, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 29167, - "end": 29171, + "start": 29217, + "end": 29221, "loc": { "start": { - "line": 794, + "line": 795, "column": 27 }, "end": { - "line": 794, + "line": 795, "column": 31 } } }, "property": { "type": "Identifier", - "start": 29172, - "end": 29184, + "start": 29222, + "end": 29234, "loc": { "start": { - "line": 794, + "line": 795, "column": 32 }, "end": { - "line": 794, + "line": 795, "column": 44 }, "identifierName": "_objectNodes" @@ -57462,15 +57599,15 @@ }, "property": { "type": "Identifier", - "start": 29185, - "end": 29193, + "start": 29235, + "end": 29243, "loc": { "start": { - "line": 794, + "line": 795, "column": 45 }, "end": { - "line": 794, + "line": 795, "column": 53 }, "identifierName": "objectId" @@ -57485,44 +57622,44 @@ }, { "type": "VariableDeclaration", - "start": 29204, - "end": 29243, + "start": 29254, + "end": 29293, "loc": { "start": { - "line": 795, + "line": 796, "column": 8 }, "end": { - "line": 795, + "line": 796, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29210, - "end": 29242, + "start": 29260, + "end": 29292, "loc": { "start": { - "line": 795, + "line": 796, "column": 14 }, "end": { - "line": 795, + "line": 796, "column": 46 } }, "id": { "type": "Identifier", - "start": 29210, - "end": 29220, + "start": 29260, + "end": 29270, "loc": { "start": { - "line": 795, + "line": 796, "column": 14 }, "end": { - "line": 795, + "line": 796, "column": 24 }, "identifierName": "childNodes" @@ -57531,29 +57668,29 @@ }, "init": { "type": "MemberExpression", - "start": 29223, - "end": 29242, + "start": 29273, + "end": 29292, "loc": { "start": { - "line": 795, + "line": 796, "column": 27 }, "end": { - "line": 795, + "line": 796, "column": 46 } }, "object": { "type": "Identifier", - "start": 29223, - "end": 29233, + "start": 29273, + "end": 29283, "loc": { "start": { - "line": 795, + "line": 796, "column": 27 }, "end": { - "line": 795, + "line": 796, "column": 37 }, "identifierName": "switchNode" @@ -57562,15 +57699,15 @@ }, "property": { "type": "Identifier", - "start": 29234, - "end": 29242, + "start": 29284, + "end": 29292, "loc": { "start": { - "line": 795, + "line": 796, "column": 38 }, "end": { - "line": 795, + "line": 796, "column": 46 }, "identifierName": "children" @@ -57585,44 +57722,44 @@ }, { "type": "VariableDeclaration", - "start": 29252, - "end": 29361, + "start": 29302, + "end": 29411, "loc": { "start": { - "line": 796, + "line": 797, "column": 8 }, "end": { - "line": 798, + "line": 799, "column": 11 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29258, - "end": 29360, + "start": 29308, + "end": 29410, "loc": { "start": { - "line": 796, + "line": 797, "column": 14 }, "end": { - "line": 798, + "line": 799, "column": 10 } }, "id": { "type": "Identifier", - "start": 29258, - "end": 29270, + "start": 29308, + "end": 29320, "loc": { "start": { - "line": 796, + "line": 797, "column": 14 }, "end": { - "line": 796, + "line": 797, "column": 26 }, "identifierName": "nodeElements" @@ -57631,43 +57768,43 @@ }, "init": { "type": "CallExpression", - "start": 29273, - "end": 29360, + "start": 29323, + "end": 29410, "loc": { "start": { - "line": 796, + "line": 797, "column": 29 }, "end": { - "line": 798, + "line": 799, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 29273, - "end": 29287, + "start": 29323, + "end": 29337, "loc": { "start": { - "line": 796, + "line": 797, "column": 29 }, "end": { - "line": 796, + "line": 797, "column": 43 } }, "object": { "type": "Identifier", - "start": 29273, - "end": 29283, + "start": 29323, + "end": 29333, "loc": { "start": { - "line": 796, + "line": 797, "column": 29 }, "end": { - "line": 796, + "line": 797, "column": 39 }, "identifierName": "childNodes" @@ -57676,15 +57813,15 @@ }, "property": { "type": "Identifier", - "start": 29284, - "end": 29287, + "start": 29334, + "end": 29337, "loc": { "start": { - "line": 796, + "line": 797, "column": 40 }, "end": { - "line": 796, + "line": 797, "column": 43 }, "identifierName": "map" @@ -57696,15 +57833,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 29288, - "end": 29359, + "start": 29338, + "end": 29409, "loc": { "start": { - "line": 796, + "line": 797, "column": 44 }, "end": { - "line": 798, + "line": 799, "column": 9 } }, @@ -57715,15 +57852,15 @@ "params": [ { "type": "Identifier", - "start": 29289, - "end": 29293, + "start": 29339, + "end": 29343, "loc": { "start": { - "line": 796, + "line": 797, "column": 45 }, "end": { - "line": 796, + "line": 797, "column": 49 }, "identifierName": "node" @@ -57733,87 +57870,87 @@ ], "body": { "type": "BlockStatement", - "start": 29298, - "end": 29359, + "start": 29348, + "end": 29409, "loc": { "start": { - "line": 796, + "line": 797, "column": 54 }, "end": { - "line": 798, + "line": 799, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 29312, - "end": 29349, + "start": 29362, + "end": 29399, "loc": { "start": { - "line": 797, + "line": 798, "column": 12 }, "end": { - "line": 797, + "line": 798, "column": 49 } }, "argument": { "type": "CallExpression", - "start": 29319, - "end": 29348, + "start": 29369, + "end": 29398, "loc": { "start": { - "line": 797, + "line": 798, "column": 19 }, "end": { - "line": 797, + "line": 798, "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 29319, - "end": 29342, + "start": 29369, + "end": 29392, "loc": { "start": { - "line": 797, + "line": 798, "column": 19 }, "end": { - "line": 797, + "line": 798, "column": 42 } }, "object": { "type": "ThisExpression", - "start": 29319, - "end": 29323, + "start": 29369, + "end": 29373, "loc": { "start": { - "line": 797, + "line": 798, "column": 19 }, "end": { - "line": 797, + "line": 798, "column": 23 } } }, "property": { "type": "Identifier", - "start": 29324, - "end": 29342, + "start": 29374, + "end": 29392, "loc": { "start": { - "line": 797, + "line": 798, "column": 24 }, "end": { - "line": 797, + "line": 798, "column": 42 }, "identifierName": "_createNodeElement" @@ -57825,15 +57962,15 @@ "arguments": [ { "type": "Identifier", - "start": 29343, - "end": 29347, + "start": 29393, + "end": 29397, "loc": { "start": { - "line": 797, + "line": 798, "column": 43 }, "end": { - "line": 797, + "line": 798, "column": 47 }, "identifierName": "node" @@ -57855,44 +57992,44 @@ }, { "type": "VariableDeclaration", - "start": 29370, - "end": 29410, + "start": 29420, + "end": 29460, "loc": { "start": { - "line": 799, + "line": 800, "column": 8 }, "end": { - "line": 799, + "line": 800, "column": 48 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29376, - "end": 29409, + "start": 29426, + "end": 29459, "loc": { "start": { - "line": 799, + "line": 800, "column": 14 }, "end": { - "line": 799, + "line": 800, "column": 47 } }, "id": { "type": "Identifier", - "start": 29376, - "end": 29378, + "start": 29426, + "end": 29428, "loc": { "start": { - "line": 799, + "line": 800, "column": 14 }, "end": { - "line": 799, + "line": 800, "column": 16 }, "identifierName": "ul" @@ -57901,43 +58038,43 @@ }, "init": { "type": "CallExpression", - "start": 29381, - "end": 29409, + "start": 29431, + "end": 29459, "loc": { "start": { - "line": 799, + "line": 800, "column": 19 }, "end": { - "line": 799, + "line": 800, "column": 47 } }, "callee": { "type": "MemberExpression", - "start": 29381, - "end": 29403, + "start": 29431, + "end": 29453, "loc": { "start": { - "line": 799, + "line": 800, "column": 19 }, "end": { - "line": 799, + "line": 800, "column": 41 } }, "object": { "type": "Identifier", - "start": 29381, - "end": 29389, + "start": 29431, + "end": 29439, "loc": { "start": { - "line": 799, + "line": 800, "column": 19 }, "end": { - "line": 799, + "line": 800, "column": 27 }, "identifierName": "document" @@ -57946,15 +58083,15 @@ }, "property": { "type": "Identifier", - "start": 29390, - "end": 29403, + "start": 29440, + "end": 29453, "loc": { "start": { - "line": 799, + "line": 800, "column": 28 }, "end": { - "line": 799, + "line": 800, "column": 41 }, "identifierName": "createElement" @@ -57966,15 +58103,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 29404, - "end": 29408, + "start": 29454, + "end": 29458, "loc": { "start": { - "line": 799, + "line": 800, "column": 42 }, "end": { - "line": 799, + "line": 800, "column": 46 } }, @@ -57992,57 +58129,57 @@ }, { "type": "ExpressionStatement", - "start": 29419, - "end": 29511, + "start": 29469, + "end": 29561, "loc": { "start": { - "line": 800, + "line": 801, "column": 8 }, "end": { - "line": 802, + "line": 803, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 29419, - "end": 29510, + "start": 29469, + "end": 29560, "loc": { "start": { - "line": 800, + "line": 801, "column": 8 }, "end": { - "line": 802, + "line": 803, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 29419, - "end": 29439, + "start": 29469, + "end": 29489, "loc": { "start": { - "line": 800, + "line": 801, "column": 8 }, "end": { - "line": 800, + "line": 801, "column": 28 } }, "object": { "type": "Identifier", - "start": 29419, - "end": 29431, + "start": 29469, + "end": 29481, "loc": { "start": { - "line": 800, + "line": 801, "column": 8 }, "end": { - "line": 800, + "line": 801, "column": 20 }, "identifierName": "nodeElements" @@ -58051,15 +58188,15 @@ }, "property": { "type": "Identifier", - "start": 29432, - "end": 29439, + "start": 29482, + "end": 29489, "loc": { "start": { - "line": 800, + "line": 801, "column": 21 }, "end": { - "line": 800, + "line": 801, "column": 28 }, "identifierName": "forEach" @@ -58071,15 +58208,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 29440, - "end": 29509, + "start": 29490, + "end": 29559, "loc": { "start": { - "line": 800, + "line": 801, "column": 29 }, "end": { - "line": 802, + "line": 803, "column": 9 } }, @@ -58090,15 +58227,15 @@ "params": [ { "type": "Identifier", - "start": 29441, - "end": 29452, + "start": 29491, + "end": 29502, "loc": { "start": { - "line": 800, + "line": 801, "column": 30 }, "end": { - "line": 800, + "line": 801, "column": 41 }, "identifierName": "nodeElement" @@ -58108,72 +58245,72 @@ ], "body": { "type": "BlockStatement", - "start": 29457, - "end": 29509, + "start": 29507, + "end": 29559, "loc": { "start": { - "line": 800, + "line": 801, "column": 46 }, "end": { - "line": 802, + "line": 803, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 29471, - "end": 29499, + "start": 29521, + "end": 29549, "loc": { "start": { - "line": 801, + "line": 802, "column": 12 }, "end": { - "line": 801, + "line": 802, "column": 40 } }, "expression": { "type": "CallExpression", - "start": 29471, - "end": 29498, + "start": 29521, + "end": 29548, "loc": { "start": { - "line": 801, + "line": 802, "column": 12 }, "end": { - "line": 801, + "line": 802, "column": 39 } }, "callee": { "type": "MemberExpression", - "start": 29471, - "end": 29485, + "start": 29521, + "end": 29535, "loc": { "start": { - "line": 801, + "line": 802, "column": 12 }, "end": { - "line": 801, + "line": 802, "column": 26 } }, "object": { "type": "Identifier", - "start": 29471, - "end": 29473, + "start": 29521, + "end": 29523, "loc": { "start": { - "line": 801, + "line": 802, "column": 12 }, "end": { - "line": 801, + "line": 802, "column": 14 }, "identifierName": "ul" @@ -58182,15 +58319,15 @@ }, "property": { "type": "Identifier", - "start": 29474, - "end": 29485, + "start": 29524, + "end": 29535, "loc": { "start": { - "line": 801, + "line": 802, "column": 15 }, "end": { - "line": 801, + "line": 802, "column": 26 }, "identifierName": "appendChild" @@ -58202,15 +58339,15 @@ "arguments": [ { "type": "Identifier", - "start": 29486, - "end": 29497, + "start": 29536, + "end": 29547, "loc": { "start": { - "line": 801, + "line": 802, "column": 27 }, "end": { - "line": 801, + "line": 802, "column": 38 }, "identifierName": "nodeElement" @@ -58229,57 +58366,57 @@ }, { "type": "ExpressionStatement", - "start": 29520, - "end": 29550, + "start": 29570, + "end": 29600, "loc": { "start": { - "line": 803, + "line": 804, "column": 8 }, "end": { - "line": 803, + "line": 804, "column": 38 } }, "expression": { "type": "CallExpression", - "start": 29520, - "end": 29549, + "start": 29570, + "end": 29599, "loc": { "start": { - "line": 803, + "line": 804, "column": 8 }, "end": { - "line": 803, + "line": 804, "column": 37 } }, "callee": { "type": "MemberExpression", - "start": 29520, - "end": 29545, + "start": 29570, + "end": 29595, "loc": { "start": { - "line": 803, + "line": 804, "column": 8 }, "end": { - "line": 803, + "line": 804, "column": 33 } }, "object": { "type": "Identifier", - "start": 29520, - "end": 29533, + "start": 29570, + "end": 29583, "loc": { "start": { - "line": 803, + "line": 804, "column": 8 }, "end": { - "line": 803, + "line": 804, "column": 21 }, "identifierName": "parentElement" @@ -58288,15 +58425,15 @@ }, "property": { "type": "Identifier", - "start": 29534, - "end": 29545, + "start": 29584, + "end": 29595, "loc": { "start": { - "line": 803, + "line": 804, "column": 22 }, "end": { - "line": 803, + "line": 804, "column": 33 }, "identifierName": "appendChild" @@ -58308,15 +58445,15 @@ "arguments": [ { "type": "Identifier", - "start": 29546, - "end": 29548, + "start": 29596, + "end": 29598, "loc": { "start": { - "line": 803, + "line": 804, "column": 34 }, "end": { - "line": 803, + "line": 804, "column": 36 }, "identifierName": "ul" @@ -58328,71 +58465,71 @@ }, { "type": "ExpressionStatement", - "start": 29559, - "end": 29598, + "start": 29609, + "end": 29648, "loc": { "start": { - "line": 804, + "line": 805, "column": 8 }, "end": { - "line": 804, + "line": 805, "column": 47 } }, "expression": { "type": "CallExpression", - "start": 29559, - "end": 29597, + "start": 29609, + "end": 29647, "loc": { "start": { - "line": 804, + "line": 805, "column": 8 }, "end": { - "line": 804, + "line": 805, "column": 46 } }, "callee": { "type": "MemberExpression", - "start": 29559, - "end": 29589, + "start": 29609, + "end": 29639, "loc": { "start": { - "line": 804, + "line": 805, "column": 8 }, "end": { - "line": 804, + "line": 805, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 29559, - "end": 29582, + "start": 29609, + "end": 29632, "loc": { "start": { - "line": 804, + "line": 805, "column": 8 }, "end": { - "line": 804, + "line": 805, "column": 31 } }, "object": { "type": "Identifier", - "start": 29559, - "end": 29572, + "start": 29609, + "end": 29622, "loc": { "start": { - "line": 804, + "line": 805, "column": 8 }, "end": { - "line": 804, + "line": 805, "column": 21 }, "identifierName": "switchElement" @@ -58401,15 +58538,15 @@ }, "property": { "type": "Identifier", - "start": 29573, - "end": 29582, + "start": 29623, + "end": 29632, "loc": { "start": { - "line": 804, + "line": 805, "column": 22 }, "end": { - "line": 804, + "line": 805, "column": 31 }, "identifierName": "classList" @@ -58420,15 +58557,15 @@ }, "property": { "type": "Identifier", - "start": 29583, - "end": 29589, + "start": 29633, + "end": 29639, "loc": { "start": { - "line": 804, + "line": 805, "column": 32 }, "end": { - "line": 804, + "line": 805, "column": 38 }, "identifierName": "remove" @@ -58440,15 +58577,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 29590, - "end": 29596, + "start": 29640, + "end": 29646, "loc": { "start": { - "line": 804, + "line": 805, "column": 39 }, "end": { - "line": 804, + "line": 805, "column": 45 } }, @@ -58463,71 +58600,71 @@ }, { "type": "ExpressionStatement", - "start": 29607, - "end": 29644, + "start": 29657, + "end": 29694, "loc": { "start": { - "line": 805, + "line": 806, "column": 8 }, "end": { - "line": 805, + "line": 806, "column": 45 } }, "expression": { "type": "CallExpression", - "start": 29607, - "end": 29643, + "start": 29657, + "end": 29693, "loc": { "start": { - "line": 805, + "line": 806, "column": 8 }, "end": { - "line": 805, + "line": 806, "column": 44 } }, "callee": { "type": "MemberExpression", - "start": 29607, - "end": 29634, + "start": 29657, + "end": 29684, "loc": { "start": { - "line": 805, + "line": 806, "column": 8 }, "end": { - "line": 805, + "line": 806, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 29607, - "end": 29630, + "start": 29657, + "end": 29680, "loc": { "start": { - "line": 805, + "line": 806, "column": 8 }, "end": { - "line": 805, + "line": 806, "column": 31 } }, "object": { "type": "Identifier", - "start": 29607, - "end": 29620, + "start": 29657, + "end": 29670, "loc": { "start": { - "line": 805, + "line": 806, "column": 8 }, "end": { - "line": 805, + "line": 806, "column": 21 }, "identifierName": "switchElement" @@ -58536,15 +58673,15 @@ }, "property": { "type": "Identifier", - "start": 29621, - "end": 29630, + "start": 29671, + "end": 29680, "loc": { "start": { - "line": 805, + "line": 806, "column": 22 }, "end": { - "line": 805, + "line": 806, "column": 31 }, "identifierName": "classList" @@ -58555,15 +58692,15 @@ }, "property": { "type": "Identifier", - "start": 29631, - "end": 29634, + "start": 29681, + "end": 29684, "loc": { "start": { - "line": 805, + "line": 806, "column": 32 }, "end": { - "line": 805, + "line": 806, "column": 35 }, "identifierName": "add" @@ -58575,15 +58712,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 29635, - "end": 29642, + "start": 29685, + "end": 29692, "loc": { "start": { - "line": 805, + "line": 806, "column": 36 }, "end": { - "line": 805, + "line": 806, "column": 43 } }, @@ -58598,58 +58735,58 @@ }, { "type": "ExpressionStatement", - "start": 29653, - "end": 29685, + "start": 29703, + "end": 29735, "loc": { "start": { - "line": 806, + "line": 807, "column": 8 }, "end": { - "line": 806, + "line": 807, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 29653, - "end": 29684, + "start": 29703, + "end": 29734, "loc": { "start": { - "line": 806, + "line": 807, "column": 8 }, "end": { - "line": 806, + "line": 807, "column": 39 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 29653, - "end": 29678, + "start": 29703, + "end": 29728, "loc": { "start": { - "line": 806, + "line": 807, "column": 8 }, "end": { - "line": 806, + "line": 807, "column": 33 } }, "object": { "type": "Identifier", - "start": 29653, - "end": 29666, + "start": 29703, + "end": 29716, "loc": { "start": { - "line": 806, + "line": 807, "column": 8 }, "end": { - "line": 806, + "line": 807, "column": 21 }, "identifierName": "switchElement" @@ -58658,15 +58795,15 @@ }, "property": { "type": "Identifier", - "start": 29667, - "end": 29678, + "start": 29717, + "end": 29728, "loc": { "start": { - "line": 806, + "line": 807, "column": 22 }, "end": { - "line": 806, + "line": 807, "column": 33 }, "identifierName": "textContent" @@ -58677,15 +58814,15 @@ }, "right": { "type": "StringLiteral", - "start": 29681, - "end": 29684, + "start": 29731, + "end": 29734, "loc": { "start": { - "line": 806, + "line": 807, "column": 36 }, "end": { - "line": 806, + "line": 807, "column": 39 } }, @@ -58699,158 +58836,8 @@ }, { "type": "ExpressionStatement", - "start": 29694, - "end": 29763, - "loc": { - "start": { - "line": 807, - "column": 8 - }, - "end": { - "line": 807, - "column": 77 - } - }, - "expression": { - "type": "CallExpression", - "start": 29694, - "end": 29762, - "loc": { - "start": { - "line": 807, - "column": 8 - }, - "end": { - "line": 807, - "column": 76 - } - }, - "callee": { - "type": "MemberExpression", - "start": 29694, - "end": 29727, - "loc": { - "start": { - "line": 807, - "column": 8 - }, - "end": { - "line": 807, - "column": 41 - } - }, - "object": { - "type": "Identifier", - "start": 29694, - "end": 29707, - "loc": { - "start": { - "line": 807, - "column": 8 - }, - "end": { - "line": 807, - "column": 21 - }, - "identifierName": "switchElement" - }, - "name": "switchElement" - }, - "property": { - "type": "Identifier", - "start": 29708, - "end": 29727, - "loc": { - "start": { - "line": 807, - "column": 22 - }, - "end": { - "line": 807, - "column": 41 - }, - "identifierName": "removeEventListener" - }, - "name": "removeEventListener" - }, - "computed": false - }, - "arguments": [ - { - "type": "StringLiteral", - "start": 29728, - "end": 29735, - "loc": { - "start": { - "line": 807, - "column": 42 - }, - "end": { - "line": 807, - "column": 49 - } - }, - "extra": { - "rawValue": "click", - "raw": "'click'" - }, - "value": "click" - }, - { - "type": "MemberExpression", - "start": 29737, - "end": 29761, - "loc": { - "start": { - "line": 807, - "column": 51 - }, - "end": { - "line": 807, - "column": 75 - } - }, - "object": { - "type": "ThisExpression", - "start": 29737, - "end": 29741, - "loc": { - "start": { - "line": 807, - "column": 51 - }, - "end": { - "line": 807, - "column": 55 - } - } - }, - "property": { - "type": "Identifier", - "start": 29742, - "end": 29761, - "loc": { - "start": { - "line": 807, - "column": 56 - }, - "end": { - "line": 807, - "column": 75 - }, - "identifierName": "switchExpandHandler" - }, - "name": "switchExpandHandler" - }, - "computed": false - } - ] - } - }, - { - "type": "ExpressionStatement", - "start": 29772, - "end": 29840, + "start": 29744, + "end": 29813, "loc": { "start": { "line": 808, @@ -58858,13 +58845,13 @@ }, "end": { "line": 808, - "column": 76 + "column": 77 } }, "expression": { "type": "CallExpression", - "start": 29772, - "end": 29839, + "start": 29744, + "end": 29812, "loc": { "start": { "line": 808, @@ -58872,13 +58859,13 @@ }, "end": { "line": 808, - "column": 75 + "column": 76 } }, "callee": { "type": "MemberExpression", - "start": 29772, - "end": 29802, + "start": 29744, + "end": 29777, "loc": { "start": { "line": 808, @@ -58886,13 +58873,13 @@ }, "end": { "line": 808, - "column": 38 + "column": 41 } }, "object": { "type": "Identifier", - "start": 29772, - "end": 29785, + "start": 29744, + "end": 29757, "loc": { "start": { "line": 808, @@ -58908,8 +58895,8 @@ }, "property": { "type": "Identifier", - "start": 29786, - "end": 29802, + "start": 29758, + "end": 29777, "loc": { "start": { "line": 808, @@ -58917,6 +58904,156 @@ }, "end": { "line": 808, + "column": 41 + }, + "identifierName": "removeEventListener" + }, + "name": "removeEventListener" + }, + "computed": false + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 29778, + "end": 29785, + "loc": { + "start": { + "line": 808, + "column": 42 + }, + "end": { + "line": 808, + "column": 49 + } + }, + "extra": { + "rawValue": "click", + "raw": "'click'" + }, + "value": "click" + }, + { + "type": "MemberExpression", + "start": 29787, + "end": 29811, + "loc": { + "start": { + "line": 808, + "column": 51 + }, + "end": { + "line": 808, + "column": 75 + } + }, + "object": { + "type": "ThisExpression", + "start": 29787, + "end": 29791, + "loc": { + "start": { + "line": 808, + "column": 51 + }, + "end": { + "line": 808, + "column": 55 + } + } + }, + "property": { + "type": "Identifier", + "start": 29792, + "end": 29811, + "loc": { + "start": { + "line": 808, + "column": 56 + }, + "end": { + "line": 808, + "column": 75 + }, + "identifierName": "switchExpandHandler" + }, + "name": "switchExpandHandler" + }, + "computed": false + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 29822, + "end": 29890, + "loc": { + "start": { + "line": 809, + "column": 8 + }, + "end": { + "line": 809, + "column": 76 + } + }, + "expression": { + "type": "CallExpression", + "start": 29822, + "end": 29889, + "loc": { + "start": { + "line": 809, + "column": 8 + }, + "end": { + "line": 809, + "column": 75 + } + }, + "callee": { + "type": "MemberExpression", + "start": 29822, + "end": 29852, + "loc": { + "start": { + "line": 809, + "column": 8 + }, + "end": { + "line": 809, + "column": 38 + } + }, + "object": { + "type": "Identifier", + "start": 29822, + "end": 29835, + "loc": { + "start": { + "line": 809, + "column": 8 + }, + "end": { + "line": 809, + "column": 21 + }, + "identifierName": "switchElement" + }, + "name": "switchElement" + }, + "property": { + "type": "Identifier", + "start": 29836, + "end": 29852, + "loc": { + "start": { + "line": 809, + "column": 22 + }, + "end": { + "line": 809, "column": 38 }, "identifierName": "addEventListener" @@ -58928,15 +59065,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 29803, - "end": 29810, + "start": 29853, + "end": 29860, "loc": { "start": { - "line": 808, + "line": 809, "column": 39 }, "end": { - "line": 808, + "line": 809, "column": 46 } }, @@ -58948,44 +59085,44 @@ }, { "type": "MemberExpression", - "start": 29812, - "end": 29838, + "start": 29862, + "end": 29888, "loc": { "start": { - "line": 808, + "line": 809, "column": 48 }, "end": { - "line": 808, + "line": 809, "column": 74 } }, "object": { "type": "ThisExpression", - "start": 29812, - "end": 29816, + "start": 29862, + "end": 29866, "loc": { "start": { - "line": 808, + "line": 809, "column": 48 }, "end": { - "line": 808, + "line": 809, "column": 52 } } }, "property": { "type": "Identifier", - "start": 29817, - "end": 29838, + "start": 29867, + "end": 29888, "loc": { "start": { - "line": 808, + "line": 809, "column": 53 }, "end": { - "line": 808, + "line": 809, "column": 74 }, "identifierName": "switchCollapseHandler" @@ -59003,15 +59140,15 @@ }, { "type": "ClassMethod", - "start": 29852, - "end": 30114, + "start": 29902, + "end": 30164, "loc": { "start": { - "line": 811, + "line": 812, "column": 4 }, "end": { - "line": 816, + "line": 817, "column": 5 } }, @@ -59019,15 +59156,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 29852, - "end": 29865, + "start": 29902, + "end": 29915, "loc": { "start": { - "line": 811, + "line": 812, "column": 4 }, "end": { - "line": 811, + "line": 812, "column": 17 }, "identifierName": "_collapseNode" @@ -59042,15 +59179,15 @@ "params": [ { "type": "Identifier", - "start": 29866, - "end": 29874, + "start": 29916, + "end": 29924, "loc": { "start": { - "line": 811, + "line": 812, "column": 18 }, "end": { - "line": 811, + "line": 812, "column": 26 }, "identifierName": "objectId" @@ -59060,59 +59197,59 @@ ], "body": { "type": "BlockStatement", - "start": 29876, - "end": 30114, + "start": 29926, + "end": 30164, "loc": { "start": { - "line": 811, + "line": 812, "column": 28 }, "end": { - "line": 816, + "line": 817, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 29886, - "end": 29932, + "start": 29936, + "end": 29982, "loc": { "start": { - "line": 812, + "line": 813, "column": 8 }, "end": { - "line": 812, + "line": 813, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29892, - "end": 29931, + "start": 29942, + "end": 29981, "loc": { "start": { - "line": 812, + "line": 813, "column": 14 }, "end": { - "line": 812, + "line": 813, "column": 53 } }, "id": { "type": "Identifier", - "start": 29892, - "end": 29898, + "start": 29942, + "end": 29948, "loc": { "start": { - "line": 812, + "line": 813, "column": 14 }, "end": { - "line": 812, + "line": 813, "column": 20 }, "identifierName": "nodeId" @@ -59121,58 +59258,58 @@ }, "init": { "type": "CallExpression", - "start": 29901, - "end": 29931, + "start": 29951, + "end": 29981, "loc": { "start": { - "line": 812, + "line": 813, "column": 23 }, "end": { - "line": 812, + "line": 813, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 29901, - "end": 29921, + "start": 29951, + "end": 29971, "loc": { "start": { - "line": 812, + "line": 813, "column": 23 }, "end": { - "line": 812, + "line": 813, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 29901, - "end": 29905, + "start": 29951, + "end": 29955, "loc": { "start": { - "line": 812, + "line": 813, "column": 23 }, "end": { - "line": 812, + "line": 813, "column": 27 } } }, "property": { "type": "Identifier", - "start": 29906, - "end": 29921, + "start": 29956, + "end": 29971, "loc": { "start": { - "line": 812, + "line": 813, "column": 28 }, "end": { - "line": 812, + "line": 813, "column": 43 }, "identifierName": "_objectToNodeID" @@ -59184,15 +59321,15 @@ "arguments": [ { "type": "Identifier", - "start": 29922, - "end": 29930, + "start": 29972, + "end": 29980, "loc": { "start": { - "line": 812, + "line": 813, "column": 44 }, "end": { - "line": 812, + "line": 813, "column": 52 }, "identifierName": "objectId" @@ -59207,44 +59344,44 @@ }, { "type": "VariableDeclaration", - "start": 29941, - "end": 29984, + "start": 29991, + "end": 30034, "loc": { "start": { - "line": 813, + "line": 814, "column": 8 }, "end": { - "line": 813, + "line": 814, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29947, - "end": 29983, + "start": 29997, + "end": 30033, "loc": { "start": { - "line": 813, + "line": 814, "column": 14 }, "end": { - "line": 813, + "line": 814, "column": 50 } }, "id": { "type": "Identifier", - "start": 29947, - "end": 29962, + "start": 29997, + "end": 30012, "loc": { "start": { - "line": 813, + "line": 814, "column": 14 }, "end": { - "line": 813, + "line": 814, "column": 29 }, "identifierName": "switchElementId" @@ -59253,29 +59390,29 @@ }, "init": { "type": "BinaryExpression", - "start": 29965, - "end": 29983, + "start": 30015, + "end": 30033, "loc": { "start": { - "line": 813, + "line": 814, "column": 32 }, "end": { - "line": 813, + "line": 814, "column": 50 } }, "left": { "type": "StringLiteral", - "start": 29965, - "end": 29974, + "start": 30015, + "end": 30024, "loc": { "start": { - "line": 813, + "line": 814, "column": 32 }, "end": { - "line": 813, + "line": 814, "column": 41 } }, @@ -59288,15 +59425,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 29977, - "end": 29983, + "start": 30027, + "end": 30033, "loc": { "start": { - "line": 813, + "line": 814, "column": 44 }, "end": { - "line": 813, + "line": 814, "column": 50 }, "identifierName": "nodeId" @@ -59310,44 +59447,44 @@ }, { "type": "VariableDeclaration", - "start": 29993, - "end": 30056, + "start": 30043, + "end": 30106, "loc": { "start": { - "line": 814, + "line": 815, "column": 8 }, "end": { - "line": 814, + "line": 815, "column": 71 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29999, - "end": 30055, + "start": 30049, + "end": 30105, "loc": { "start": { - "line": 814, + "line": 815, "column": 14 }, "end": { - "line": 814, + "line": 815, "column": 70 } }, "id": { "type": "Identifier", - "start": 29999, - "end": 30012, + "start": 30049, + "end": 30062, "loc": { "start": { - "line": 814, + "line": 815, "column": 14 }, "end": { - "line": 814, + "line": 815, "column": 27 }, "identifierName": "switchElement" @@ -59356,43 +59493,43 @@ }, "init": { "type": "CallExpression", - "start": 30015, - "end": 30055, + "start": 30065, + "end": 30105, "loc": { "start": { - "line": 814, + "line": 815, "column": 30 }, "end": { - "line": 814, + "line": 815, "column": 70 } }, "callee": { "type": "MemberExpression", - "start": 30015, - "end": 30038, + "start": 30065, + "end": 30088, "loc": { "start": { - "line": 814, + "line": 815, "column": 30 }, "end": { - "line": 814, + "line": 815, "column": 53 } }, "object": { "type": "Identifier", - "start": 30015, - "end": 30023, + "start": 30065, + "end": 30073, "loc": { "start": { - "line": 814, + "line": 815, "column": 30 }, "end": { - "line": 814, + "line": 815, "column": 38 }, "identifierName": "document" @@ -59401,15 +59538,15 @@ }, "property": { "type": "Identifier", - "start": 30024, - "end": 30038, + "start": 30074, + "end": 30088, "loc": { "start": { - "line": 814, + "line": 815, "column": 39 }, "end": { - "line": 814, + "line": 815, "column": 53 }, "identifierName": "getElementById" @@ -59421,15 +59558,15 @@ "arguments": [ { "type": "Identifier", - "start": 30039, - "end": 30054, + "start": 30089, + "end": 30104, "loc": { "start": { - "line": 814, + "line": 815, "column": 54 }, "end": { - "line": 814, + "line": 815, "column": 69 }, "identifierName": "switchElementId" @@ -59444,72 +59581,72 @@ }, { "type": "ExpressionStatement", - "start": 30065, - "end": 30108, + "start": 30115, + "end": 30158, "loc": { "start": { - "line": 815, + "line": 816, "column": 8 }, "end": { - "line": 815, + "line": 816, "column": 51 } }, "expression": { "type": "CallExpression", - "start": 30065, - "end": 30107, + "start": 30115, + "end": 30157, "loc": { "start": { - "line": 815, + "line": 816, "column": 8 }, "end": { - "line": 815, + "line": 816, "column": 50 } }, "callee": { "type": "MemberExpression", - "start": 30065, - "end": 30092, + "start": 30115, + "end": 30142, "loc": { "start": { - "line": 815, + "line": 816, "column": 8 }, "end": { - "line": 815, + "line": 816, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 30065, - "end": 30069, + "start": 30115, + "end": 30119, "loc": { "start": { - "line": 815, + "line": 816, "column": 8 }, "end": { - "line": 815, + "line": 816, "column": 12 } } }, "property": { "type": "Identifier", - "start": 30070, - "end": 30092, + "start": 30120, + "end": 30142, "loc": { "start": { - "line": 815, + "line": 816, "column": 13 }, "end": { - "line": 815, + "line": 816, "column": 35 }, "identifierName": "_collapseSwitchElement" @@ -59521,15 +59658,15 @@ "arguments": [ { "type": "Identifier", - "start": 30093, - "end": 30106, + "start": 30143, + "end": 30156, "loc": { "start": { - "line": 815, + "line": 816, "column": 36 }, "end": { - "line": 815, + "line": 816, "column": 49 }, "identifierName": "switchElement" @@ -59545,15 +59682,15 @@ }, { "type": "ClassMethod", - "start": 30120, - "end": 30748, + "start": 30170, + "end": 30798, "loc": { "start": { - "line": 818, + "line": 819, "column": 4 }, "end": { - "line": 836, + "line": 837, "column": 5 } }, @@ -59561,15 +59698,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 30120, - "end": 30142, + "start": 30170, + "end": 30192, "loc": { "start": { - "line": 818, + "line": 819, "column": 4 }, "end": { - "line": 818, + "line": 819, "column": 26 }, "identifierName": "_collapseSwitchElement" @@ -59584,15 +59721,15 @@ "params": [ { "type": "Identifier", - "start": 30143, - "end": 30156, + "start": 30193, + "end": 30206, "loc": { "start": { - "line": 818, + "line": 819, "column": 27 }, "end": { - "line": 818, + "line": 819, "column": 40 }, "identifierName": "switchElement" @@ -59602,44 +59739,44 @@ ], "body": { "type": "BlockStatement", - "start": 30158, - "end": 30748, + "start": 30208, + "end": 30798, "loc": { "start": { - "line": 818, + "line": 819, "column": 42 }, "end": { - "line": 836, + "line": 837, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 30168, - "end": 30219, + "start": 30218, + "end": 30269, "loc": { "start": { - "line": 819, + "line": 820, "column": 8 }, "end": { - "line": 821, + "line": 822, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 30172, - "end": 30186, + "start": 30222, + "end": 30236, "loc": { "start": { - "line": 819, + "line": 820, "column": 12 }, "end": { - "line": 819, + "line": 820, "column": 26 } }, @@ -59647,15 +59784,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 30173, - "end": 30186, + "start": 30223, + "end": 30236, "loc": { "start": { - "line": 819, + "line": 820, "column": 13 }, "end": { - "line": 819, + "line": 820, "column": 26 }, "identifierName": "switchElement" @@ -59668,30 +59805,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 30188, - "end": 30219, + "start": 30238, + "end": 30269, "loc": { "start": { - "line": 819, + "line": 820, "column": 28 }, "end": { - "line": 821, + "line": 822, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 30202, - "end": 30209, + "start": 30252, + "end": 30259, "loc": { "start": { - "line": 820, + "line": 821, "column": 12 }, "end": { - "line": 820, + "line": 821, "column": 19 } }, @@ -59704,44 +59841,44 @@ }, { "type": "VariableDeclaration", - "start": 30228, - "end": 30271, + "start": 30278, + "end": 30321, "loc": { "start": { - "line": 822, + "line": 823, "column": 8 }, "end": { - "line": 822, + "line": 823, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 30234, - "end": 30270, + "start": 30284, + "end": 30320, "loc": { "start": { - "line": 822, + "line": 823, "column": 14 }, "end": { - "line": 822, + "line": 823, "column": 50 } }, "id": { "type": "Identifier", - "start": 30234, - "end": 30240, + "start": 30284, + "end": 30290, "loc": { "start": { - "line": 822, + "line": 823, "column": 14 }, "end": { - "line": 822, + "line": 823, "column": 20 }, "identifierName": "parent" @@ -59750,29 +59887,29 @@ }, "init": { "type": "MemberExpression", - "start": 30243, - "end": 30270, + "start": 30293, + "end": 30320, "loc": { "start": { - "line": 822, + "line": 823, "column": 23 }, "end": { - "line": 822, + "line": 823, "column": 50 } }, "object": { "type": "Identifier", - "start": 30243, - "end": 30256, + "start": 30293, + "end": 30306, "loc": { "start": { - "line": 822, + "line": 823, "column": 23 }, "end": { - "line": 822, + "line": 823, "column": 36 }, "identifierName": "switchElement" @@ -59781,15 +59918,15 @@ }, "property": { "type": "Identifier", - "start": 30257, - "end": 30270, + "start": 30307, + "end": 30320, "loc": { "start": { - "line": 822, + "line": 823, "column": 37 }, "end": { - "line": 822, + "line": 823, "column": 50 }, "identifierName": "parentElement" @@ -59804,29 +59941,29 @@ }, { "type": "IfStatement", - "start": 30280, - "end": 30324, + "start": 30330, + "end": 30374, "loc": { "start": { - "line": 823, + "line": 824, "column": 8 }, "end": { - "line": 825, + "line": 826, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 30284, - "end": 30291, + "start": 30334, + "end": 30341, "loc": { "start": { - "line": 823, + "line": 824, "column": 12 }, "end": { - "line": 823, + "line": 824, "column": 19 } }, @@ -59834,15 +59971,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 30285, - "end": 30291, + "start": 30335, + "end": 30341, "loc": { "start": { - "line": 823, + "line": 824, "column": 13 }, "end": { - "line": 823, + "line": 824, "column": 19 }, "identifierName": "parent" @@ -59855,30 +59992,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 30293, - "end": 30324, + "start": 30343, + "end": 30374, "loc": { "start": { - "line": 823, + "line": 824, "column": 21 }, "end": { - "line": 825, + "line": 826, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 30307, - "end": 30314, + "start": 30357, + "end": 30364, "loc": { "start": { - "line": 824, + "line": 825, "column": 12 }, "end": { - "line": 824, + "line": 825, "column": 19 } }, @@ -59891,44 +60028,44 @@ }, { "type": "VariableDeclaration", - "start": 30333, - "end": 30371, + "start": 30383, + "end": 30421, "loc": { "start": { - "line": 826, + "line": 827, "column": 8 }, "end": { - "line": 826, + "line": 827, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 30339, - "end": 30370, + "start": 30389, + "end": 30420, "loc": { "start": { - "line": 826, + "line": 827, "column": 14 }, "end": { - "line": 826, + "line": 827, "column": 45 } }, "id": { "type": "Identifier", - "start": 30339, - "end": 30341, + "start": 30389, + "end": 30391, "loc": { "start": { - "line": 826, + "line": 827, "column": 14 }, "end": { - "line": 826, + "line": 827, "column": 16 }, "identifierName": "ul" @@ -59937,43 +60074,43 @@ }, "init": { "type": "CallExpression", - "start": 30344, - "end": 30370, + "start": 30394, + "end": 30420, "loc": { "start": { - "line": 826, + "line": 827, "column": 19 }, "end": { - "line": 826, + "line": 827, "column": 45 } }, "callee": { "type": "MemberExpression", - "start": 30344, - "end": 30364, + "start": 30394, + "end": 30414, "loc": { "start": { - "line": 826, + "line": 827, "column": 19 }, "end": { - "line": 826, + "line": 827, "column": 39 } }, "object": { "type": "Identifier", - "start": 30344, - "end": 30350, + "start": 30394, + "end": 30400, "loc": { "start": { - "line": 826, + "line": 827, "column": 19 }, "end": { - "line": 826, + "line": 827, "column": 25 }, "identifierName": "parent" @@ -59982,15 +60119,15 @@ }, "property": { "type": "Identifier", - "start": 30351, - "end": 30364, + "start": 30401, + "end": 30414, "loc": { "start": { - "line": 826, + "line": 827, "column": 26 }, "end": { - "line": 826, + "line": 827, "column": 39 }, "identifierName": "querySelector" @@ -60002,15 +60139,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 30365, - "end": 30369, + "start": 30415, + "end": 30419, "loc": { "start": { - "line": 826, + "line": 827, "column": 40 }, "end": { - "line": 826, + "line": 827, "column": 44 } }, @@ -60028,29 +60165,29 @@ }, { "type": "IfStatement", - "start": 30380, - "end": 30420, + "start": 30430, + "end": 30470, "loc": { "start": { - "line": 827, + "line": 828, "column": 8 }, "end": { - "line": 829, + "line": 830, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 30384, - "end": 30387, + "start": 30434, + "end": 30437, "loc": { "start": { - "line": 827, + "line": 828, "column": 12 }, "end": { - "line": 827, + "line": 828, "column": 15 } }, @@ -60058,15 +60195,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 30385, - "end": 30387, + "start": 30435, + "end": 30437, "loc": { "start": { - "line": 827, + "line": 828, "column": 13 }, "end": { - "line": 827, + "line": 828, "column": 15 }, "identifierName": "ul" @@ -60079,30 +60216,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 30389, - "end": 30420, + "start": 30439, + "end": 30470, "loc": { "start": { - "line": 827, + "line": 828, "column": 17 }, "end": { - "line": 829, + "line": 830, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 30403, - "end": 30410, + "start": 30453, + "end": 30460, "loc": { "start": { - "line": 828, + "line": 829, "column": 12 }, "end": { - "line": 828, + "line": 829, "column": 19 } }, @@ -60115,57 +60252,57 @@ }, { "type": "ExpressionStatement", - "start": 30429, - "end": 30452, + "start": 30479, + "end": 30502, "loc": { "start": { - "line": 830, + "line": 831, "column": 8 }, "end": { - "line": 830, + "line": 831, "column": 31 } }, "expression": { "type": "CallExpression", - "start": 30429, - "end": 30451, + "start": 30479, + "end": 30501, "loc": { "start": { - "line": 830, + "line": 831, "column": 8 }, "end": { - "line": 830, + "line": 831, "column": 30 } }, "callee": { "type": "MemberExpression", - "start": 30429, - "end": 30447, + "start": 30479, + "end": 30497, "loc": { "start": { - "line": 830, + "line": 831, "column": 8 }, "end": { - "line": 830, + "line": 831, "column": 26 } }, "object": { "type": "Identifier", - "start": 30429, - "end": 30435, + "start": 30479, + "end": 30485, "loc": { "start": { - "line": 830, + "line": 831, "column": 8 }, "end": { - "line": 830, + "line": 831, "column": 14 }, "identifierName": "parent" @@ -60174,15 +60311,15 @@ }, "property": { "type": "Identifier", - "start": 30436, - "end": 30447, + "start": 30486, + "end": 30497, "loc": { "start": { - "line": 830, + "line": 831, "column": 15 }, "end": { - "line": 830, + "line": 831, "column": 26 }, "identifierName": "removeChild" @@ -60194,15 +60331,15 @@ "arguments": [ { "type": "Identifier", - "start": 30448, - "end": 30450, + "start": 30498, + "end": 30500, "loc": { "start": { - "line": 830, + "line": 831, "column": 27 }, "end": { - "line": 830, + "line": 831, "column": 29 }, "identifierName": "ul" @@ -60214,71 +60351,71 @@ }, { "type": "ExpressionStatement", - "start": 30461, - "end": 30501, + "start": 30511, + "end": 30551, "loc": { "start": { - "line": 831, + "line": 832, "column": 8 }, "end": { - "line": 831, + "line": 832, "column": 48 } }, "expression": { "type": "CallExpression", - "start": 30461, - "end": 30500, + "start": 30511, + "end": 30550, "loc": { "start": { - "line": 831, + "line": 832, "column": 8 }, "end": { - "line": 831, + "line": 832, "column": 47 } }, "callee": { "type": "MemberExpression", - "start": 30461, - "end": 30491, + "start": 30511, + "end": 30541, "loc": { "start": { - "line": 831, + "line": 832, "column": 8 }, "end": { - "line": 831, + "line": 832, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 30461, - "end": 30484, + "start": 30511, + "end": 30534, "loc": { "start": { - "line": 831, + "line": 832, "column": 8 }, "end": { - "line": 831, + "line": 832, "column": 31 } }, "object": { "type": "Identifier", - "start": 30461, - "end": 30474, + "start": 30511, + "end": 30524, "loc": { "start": { - "line": 831, + "line": 832, "column": 8 }, "end": { - "line": 831, + "line": 832, "column": 21 }, "identifierName": "switchElement" @@ -60287,15 +60424,15 @@ }, "property": { "type": "Identifier", - "start": 30475, - "end": 30484, + "start": 30525, + "end": 30534, "loc": { "start": { - "line": 831, + "line": 832, "column": 22 }, "end": { - "line": 831, + "line": 832, "column": 31 }, "identifierName": "classList" @@ -60306,15 +60443,15 @@ }, "property": { "type": "Identifier", - "start": 30485, - "end": 30491, + "start": 30535, + "end": 30541, "loc": { "start": { - "line": 831, + "line": 832, "column": 32 }, "end": { - "line": 831, + "line": 832, "column": 38 }, "identifierName": "remove" @@ -60326,15 +60463,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 30492, - "end": 30499, + "start": 30542, + "end": 30549, "loc": { "start": { - "line": 831, + "line": 832, "column": 39 }, "end": { - "line": 831, + "line": 832, "column": 46 } }, @@ -60349,71 +60486,71 @@ }, { "type": "ExpressionStatement", - "start": 30510, - "end": 30546, + "start": 30560, + "end": 30596, "loc": { "start": { - "line": 832, + "line": 833, "column": 8 }, "end": { - "line": 832, + "line": 833, "column": 44 } }, "expression": { "type": "CallExpression", - "start": 30510, - "end": 30545, + "start": 30560, + "end": 30595, "loc": { "start": { - "line": 832, + "line": 833, "column": 8 }, "end": { - "line": 832, + "line": 833, "column": 43 } }, "callee": { "type": "MemberExpression", - "start": 30510, - "end": 30537, + "start": 30560, + "end": 30587, "loc": { "start": { - "line": 832, + "line": 833, "column": 8 }, "end": { - "line": 832, + "line": 833, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 30510, - "end": 30533, + "start": 30560, + "end": 30583, "loc": { "start": { - "line": 832, + "line": 833, "column": 8 }, "end": { - "line": 832, + "line": 833, "column": 31 } }, "object": { "type": "Identifier", - "start": 30510, - "end": 30523, + "start": 30560, + "end": 30573, "loc": { "start": { - "line": 832, + "line": 833, "column": 8 }, "end": { - "line": 832, + "line": 833, "column": 21 }, "identifierName": "switchElement" @@ -60422,15 +60559,15 @@ }, "property": { "type": "Identifier", - "start": 30524, - "end": 30533, + "start": 30574, + "end": 30583, "loc": { "start": { - "line": 832, + "line": 833, "column": 22 }, "end": { - "line": 832, + "line": 833, "column": 31 }, "identifierName": "classList" @@ -60441,15 +60578,15 @@ }, "property": { "type": "Identifier", - "start": 30534, - "end": 30537, + "start": 30584, + "end": 30587, "loc": { "start": { - "line": 832, + "line": 833, "column": 32 }, "end": { - "line": 832, + "line": 833, "column": 35 }, "identifierName": "add" @@ -60461,15 +60598,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 30538, - "end": 30544, + "start": 30588, + "end": 30594, "loc": { "start": { - "line": 832, + "line": 833, "column": 36 }, "end": { - "line": 832, + "line": 833, "column": 42 } }, @@ -60484,58 +60621,58 @@ }, { "type": "ExpressionStatement", - "start": 30555, - "end": 30587, + "start": 30605, + "end": 30637, "loc": { "start": { - "line": 833, + "line": 834, "column": 8 }, "end": { - "line": 833, + "line": 834, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 30555, - "end": 30586, + "start": 30605, + "end": 30636, "loc": { "start": { - "line": 833, + "line": 834, "column": 8 }, "end": { - "line": 833, + "line": 834, "column": 39 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 30555, - "end": 30580, + "start": 30605, + "end": 30630, "loc": { "start": { - "line": 833, + "line": 834, "column": 8 }, "end": { - "line": 833, + "line": 834, "column": 33 } }, "object": { "type": "Identifier", - "start": 30555, - "end": 30568, + "start": 30605, + "end": 30618, "loc": { "start": { - "line": 833, + "line": 834, "column": 8 }, "end": { - "line": 833, + "line": 834, "column": 21 }, "identifierName": "switchElement" @@ -60544,15 +60681,15 @@ }, "property": { "type": "Identifier", - "start": 30569, - "end": 30580, + "start": 30619, + "end": 30630, "loc": { "start": { - "line": 833, + "line": 834, "column": 22 }, "end": { - "line": 833, + "line": 834, "column": 33 }, "identifierName": "textContent" @@ -60563,15 +60700,15 @@ }, "right": { "type": "StringLiteral", - "start": 30583, - "end": 30586, + "start": 30633, + "end": 30636, "loc": { "start": { - "line": 833, + "line": 834, "column": 36 }, "end": { - "line": 833, + "line": 834, "column": 39 } }, @@ -60585,57 +60722,57 @@ }, { "type": "ExpressionStatement", - "start": 30596, - "end": 30667, + "start": 30646, + "end": 30717, "loc": { "start": { - "line": 834, + "line": 835, "column": 8 }, "end": { - "line": 834, + "line": 835, "column": 79 } }, "expression": { "type": "CallExpression", - "start": 30596, - "end": 30666, + "start": 30646, + "end": 30716, "loc": { "start": { - "line": 834, + "line": 835, "column": 8 }, "end": { - "line": 834, + "line": 835, "column": 78 } }, "callee": { "type": "MemberExpression", - "start": 30596, - "end": 30629, + "start": 30646, + "end": 30679, "loc": { "start": { - "line": 834, + "line": 835, "column": 8 }, "end": { - "line": 834, + "line": 835, "column": 41 } }, "object": { "type": "Identifier", - "start": 30596, - "end": 30609, + "start": 30646, + "end": 30659, "loc": { "start": { - "line": 834, + "line": 835, "column": 8 }, "end": { - "line": 834, + "line": 835, "column": 21 }, "identifierName": "switchElement" @@ -60644,15 +60781,15 @@ }, "property": { "type": "Identifier", - "start": 30610, - "end": 30629, + "start": 30660, + "end": 30679, "loc": { "start": { - "line": 834, + "line": 835, "column": 22 }, "end": { - "line": 834, + "line": 835, "column": 41 }, "identifierName": "removeEventListener" @@ -60664,15 +60801,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 30630, - "end": 30637, + "start": 30680, + "end": 30687, "loc": { "start": { - "line": 834, + "line": 835, "column": 42 }, "end": { - "line": 834, + "line": 835, "column": 49 } }, @@ -60684,44 +60821,44 @@ }, { "type": "MemberExpression", - "start": 30639, - "end": 30665, + "start": 30689, + "end": 30715, "loc": { "start": { - "line": 834, + "line": 835, "column": 51 }, "end": { - "line": 834, + "line": 835, "column": 77 } }, "object": { "type": "ThisExpression", - "start": 30639, - "end": 30643, + "start": 30689, + "end": 30693, "loc": { "start": { - "line": 834, + "line": 835, "column": 51 }, "end": { - "line": 834, + "line": 835, "column": 55 } } }, "property": { "type": "Identifier", - "start": 30644, - "end": 30665, + "start": 30694, + "end": 30715, "loc": { "start": { - "line": 834, + "line": 835, "column": 56 }, "end": { - "line": 834, + "line": 835, "column": 77 }, "identifierName": "switchCollapseHandler" @@ -60735,57 +60872,57 @@ }, { "type": "ExpressionStatement", - "start": 30676, - "end": 30742, + "start": 30726, + "end": 30792, "loc": { "start": { - "line": 835, + "line": 836, "column": 8 }, "end": { - "line": 835, + "line": 836, "column": 74 } }, "expression": { "type": "CallExpression", - "start": 30676, - "end": 30741, + "start": 30726, + "end": 30791, "loc": { "start": { - "line": 835, + "line": 836, "column": 8 }, "end": { - "line": 835, + "line": 836, "column": 73 } }, "callee": { "type": "MemberExpression", - "start": 30676, - "end": 30706, + "start": 30726, + "end": 30756, "loc": { "start": { - "line": 835, + "line": 836, "column": 8 }, "end": { - "line": 835, + "line": 836, "column": 38 } }, "object": { "type": "Identifier", - "start": 30676, - "end": 30689, + "start": 30726, + "end": 30739, "loc": { "start": { - "line": 835, + "line": 836, "column": 8 }, "end": { - "line": 835, + "line": 836, "column": 21 }, "identifierName": "switchElement" @@ -60794,15 +60931,15 @@ }, "property": { "type": "Identifier", - "start": 30690, - "end": 30706, + "start": 30740, + "end": 30756, "loc": { "start": { - "line": 835, + "line": 836, "column": 22 }, "end": { - "line": 835, + "line": 836, "column": 38 }, "identifierName": "addEventListener" @@ -60814,15 +60951,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 30707, - "end": 30714, + "start": 30757, + "end": 30764, "loc": { "start": { - "line": 835, + "line": 836, "column": 39 }, "end": { - "line": 835, + "line": 836, "column": 46 } }, @@ -60834,44 +60971,44 @@ }, { "type": "MemberExpression", - "start": 30716, - "end": 30740, + "start": 30766, + "end": 30790, "loc": { "start": { - "line": 835, + "line": 836, "column": 48 }, "end": { - "line": 835, + "line": 836, "column": 72 } }, "object": { "type": "ThisExpression", - "start": 30716, - "end": 30720, + "start": 30766, + "end": 30770, "loc": { "start": { - "line": 835, + "line": 836, "column": 48 }, "end": { - "line": 835, + "line": 836, "column": 52 } } }, "property": { "type": "Identifier", - "start": 30721, - "end": 30740, + "start": 30771, + "end": 30790, "loc": { "start": { - "line": 835, + "line": 836, "column": 53 }, "end": { - "line": 835, + "line": 836, "column": 72 }, "identifierName": "switchExpandHandler" @@ -60891,15 +61028,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this ModelTreeView.\n * @private\n ", - "start": 30754, - "end": 30817, + "start": 30804, + "end": 30867, "loc": { "start": { - "line": 838, + "line": 839, "column": 4 }, "end": { - "line": 841, + "line": 842, "column": 7 } } @@ -60908,15 +61045,15 @@ }, { "type": "ClassMethod", - "start": 30822, - "end": 31113, + "start": 30872, + "end": 31163, "loc": { "start": { - "line": 842, + "line": 843, "column": 4 }, "end": { - "line": 849, + "line": 850, "column": 5 } }, @@ -60924,15 +61061,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 30822, - "end": 30829, + "start": 30872, + "end": 30879, "loc": { "start": { - "line": 842, + "line": 843, "column": 4 }, "end": { - "line": 842, + "line": 843, "column": 11 }, "identifierName": "destroy" @@ -60948,87 +61085,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 30832, - "end": 31113, + "start": 30882, + "end": 31163, "loc": { "start": { - "line": 842, + "line": 843, "column": 14 }, "end": { - "line": 849, + "line": 850, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 30842, - "end": 31107, + "start": 30892, + "end": 31157, "loc": { "start": { - "line": 843, + "line": 844, "column": 8 }, "end": { - "line": 848, + "line": 849, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 30846, - "end": 30883, + "start": 30896, + "end": 30933, "loc": { "start": { - "line": 843, + "line": 844, "column": 12 }, "end": { - "line": 843, + "line": 844, "column": 49 } }, "left": { "type": "MemberExpression", - "start": 30846, - "end": 30863, + "start": 30896, + "end": 30913, "loc": { "start": { - "line": 843, + "line": 844, "column": 12 }, "end": { - "line": 843, + "line": 844, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 30846, - "end": 30850, + "start": 30896, + "end": 30900, "loc": { "start": { - "line": 843, + "line": 844, "column": 12 }, "end": { - "line": 843, + "line": 844, "column": 16 } } }, "property": { "type": "Identifier", - "start": 30851, - "end": 30863, + "start": 30901, + "end": 30913, "loc": { "start": { - "line": 843, + "line": 844, "column": 17 }, "end": { - "line": 843, + "line": 844, "column": 29 }, "identifierName": "_rootElement" @@ -61040,15 +61177,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 30867, - "end": 30883, + "start": 30917, + "end": 30933, "loc": { "start": { - "line": 843, + "line": 844, "column": 33 }, "end": { - "line": 843, + "line": 844, "column": 49 } }, @@ -61056,44 +61193,44 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 30868, - "end": 30883, + "start": 30918, + "end": 30933, "loc": { "start": { - "line": 843, + "line": 844, "column": 34 }, "end": { - "line": 843, + "line": 844, "column": 49 } }, "object": { "type": "ThisExpression", - "start": 30868, - "end": 30872, + "start": 30918, + "end": 30922, "loc": { "start": { - "line": 843, + "line": 844, "column": 34 }, "end": { - "line": 843, + "line": 844, "column": 38 } } }, "property": { "type": "Identifier", - "start": 30873, - "end": 30883, + "start": 30923, + "end": 30933, "loc": { "start": { - "line": 843, + "line": 844, "column": 39 }, "end": { - "line": 843, + "line": 844, "column": 49 }, "identifierName": "_destroyed" @@ -61109,115 +61246,115 @@ }, "consequent": { "type": "BlockStatement", - "start": 30885, - "end": 31107, + "start": 30935, + "end": 31157, "loc": { "start": { - "line": 843, + "line": 844, "column": 51 }, "end": { - "line": 848, + "line": 849, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 30899, - "end": 30959, + "start": 30949, + "end": 31009, "loc": { "start": { - "line": 844, + "line": 845, "column": 12 }, "end": { - "line": 844, + "line": 845, "column": 72 } }, "expression": { "type": "CallExpression", - "start": 30899, - "end": 30958, + "start": 30949, + "end": 31008, "loc": { "start": { - "line": 844, + "line": 845, "column": 12 }, "end": { - "line": 844, + "line": 845, "column": 71 } }, "callee": { "type": "MemberExpression", - "start": 30899, - "end": 30939, + "start": 30949, + "end": 30989, "loc": { "start": { - "line": 844, + "line": 845, "column": 12 }, "end": { - "line": 844, + "line": 845, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 30899, - "end": 30927, + "start": 30949, + "end": 30977, "loc": { "start": { - "line": 844, + "line": 845, "column": 12 }, "end": { - "line": 844, + "line": 845, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 30899, - "end": 30916, + "start": 30949, + "end": 30966, "loc": { "start": { - "line": 844, + "line": 845, "column": 12 }, "end": { - "line": 844, + "line": 845, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 30899, - "end": 30903, + "start": 30949, + "end": 30953, "loc": { "start": { - "line": 844, + "line": 845, "column": 12 }, "end": { - "line": 844, + "line": 845, "column": 16 } } }, "property": { "type": "Identifier", - "start": 30904, - "end": 30916, + "start": 30954, + "end": 30966, "loc": { "start": { - "line": 844, + "line": 845, "column": 17 }, "end": { - "line": 844, + "line": 845, "column": 29 }, "identifierName": "_rootElement" @@ -61228,15 +61365,15 @@ }, "property": { "type": "Identifier", - "start": 30917, - "end": 30927, + "start": 30967, + "end": 30977, "loc": { "start": { - "line": 844, + "line": 845, "column": 30 }, "end": { - "line": 844, + "line": 845, "column": 40 }, "identifierName": "parentNode" @@ -61247,15 +61384,15 @@ }, "property": { "type": "Identifier", - "start": 30928, - "end": 30939, + "start": 30978, + "end": 30989, "loc": { "start": { - "line": 844, + "line": 845, "column": 41 }, "end": { - "line": 844, + "line": 845, "column": 52 }, "identifierName": "removeChild" @@ -61267,44 +61404,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 30940, - "end": 30957, + "start": 30990, + "end": 31007, "loc": { "start": { - "line": 844, + "line": 845, "column": 53 }, "end": { - "line": 844, + "line": 845, "column": 70 } }, "object": { "type": "ThisExpression", - "start": 30940, - "end": 30944, + "start": 30990, + "end": 30994, "loc": { "start": { - "line": 844, + "line": 845, "column": 53 }, "end": { - "line": 844, + "line": 845, "column": 57 } } }, "property": { "type": "Identifier", - "start": 30945, - "end": 30957, + "start": 30995, + "end": 31007, "loc": { "start": { - "line": 844, + "line": 845, "column": 58 }, "end": { - "line": 844, + "line": 845, "column": 70 }, "identifierName": "_rootElement" @@ -61318,100 +61455,100 @@ }, { "type": "ExpressionStatement", - "start": 30972, - "end": 31021, + "start": 31022, + "end": 31071, "loc": { "start": { - "line": 845, + "line": 846, "column": 12 }, "end": { - "line": 845, + "line": 846, "column": 61 } }, "expression": { "type": "CallExpression", - "start": 30972, - "end": 31020, + "start": 31022, + "end": 31070, "loc": { "start": { - "line": 845, + "line": 846, "column": 12 }, "end": { - "line": 845, + "line": 846, "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 30972, - "end": 30994, + "start": 31022, + "end": 31044, "loc": { "start": { - "line": 845, + "line": 846, "column": 12 }, "end": { - "line": 845, + "line": 846, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 30972, - "end": 30990, + "start": 31022, + "end": 31040, "loc": { "start": { - "line": 845, + "line": 846, "column": 12 }, "end": { - "line": 845, + "line": 846, "column": 30 } }, "object": { "type": "MemberExpression", - "start": 30972, - "end": 30984, + "start": 31022, + "end": 31034, "loc": { "start": { - "line": 845, + "line": 846, "column": 12 }, "end": { - "line": 845, + "line": 846, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 30972, - "end": 30976, + "start": 31022, + "end": 31026, "loc": { "start": { - "line": 845, + "line": 846, "column": 12 }, "end": { - "line": 845, + "line": 846, "column": 16 } } }, "property": { "type": "Identifier", - "start": 30977, - "end": 30984, + "start": 31027, + "end": 31034, "loc": { "start": { - "line": 845, + "line": 846, "column": 17 }, "end": { - "line": 845, + "line": 846, "column": 24 }, "identifierName": "_viewer" @@ -61422,15 +61559,15 @@ }, "property": { "type": "Identifier", - "start": 30985, - "end": 30990, + "start": 31035, + "end": 31040, "loc": { "start": { - "line": 845, + "line": 846, "column": 25 }, "end": { - "line": 845, + "line": 846, "column": 30 }, "identifierName": "scene" @@ -61441,15 +61578,15 @@ }, "property": { "type": "Identifier", - "start": 30991, - "end": 30994, + "start": 31041, + "end": 31044, "loc": { "start": { - "line": 845, + "line": 846, "column": 31 }, "end": { - "line": 845, + "line": 846, "column": 34 }, "identifierName": "off" @@ -61461,44 +61598,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 30995, - "end": 31019, + "start": 31045, + "end": 31069, "loc": { "start": { - "line": 845, + "line": 846, "column": 35 }, "end": { - "line": 845, + "line": 846, "column": 59 } }, "object": { "type": "ThisExpression", - "start": 30995, - "end": 30999, + "start": 31045, + "end": 31049, "loc": { "start": { - "line": 845, + "line": 846, "column": 35 }, "end": { - "line": 845, + "line": 846, "column": 39 } } }, "property": { "type": "Identifier", - "start": 31000, - "end": 31019, + "start": 31050, + "end": 31069, "loc": { "start": { - "line": 845, + "line": 846, "column": 40 }, "end": { - "line": 845, + "line": 846, "column": 59 }, "identifierName": "_onObjectVisibility" @@ -61512,73 +61649,73 @@ }, { "type": "ExpressionStatement", - "start": 31034, - "end": 31057, + "start": 31084, + "end": 31107, "loc": { "start": { - "line": 846, + "line": 847, "column": 12 }, "end": { - "line": 846, + "line": 847, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 31034, - "end": 31056, + "start": 31084, + "end": 31106, "loc": { "start": { - "line": 846, + "line": 847, "column": 12 }, "end": { - "line": 846, + "line": 847, "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 31034, - "end": 31049, + "start": 31084, + "end": 31099, "loc": { "start": { - "line": 846, + "line": 847, "column": 12 }, "end": { - "line": 846, + "line": 847, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 31034, - "end": 31038, + "start": 31084, + "end": 31088, "loc": { "start": { - "line": 846, + "line": 847, "column": 12 }, "end": { - "line": 846, + "line": 847, "column": 16 } } }, "property": { "type": "Identifier", - "start": 31039, - "end": 31049, + "start": 31089, + "end": 31099, "loc": { "start": { - "line": 846, + "line": 847, "column": 17 }, "end": { - "line": 846, + "line": 847, "column": 27 }, "identifierName": "_destroyed" @@ -61589,15 +61726,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 31052, - "end": 31056, + "start": 31102, + "end": 31106, "loc": { "start": { - "line": 846, + "line": 847, "column": 30 }, "end": { - "line": 846, + "line": 847, "column": 34 } }, @@ -61607,57 +61744,57 @@ }, { "type": "ExpressionStatement", - "start": 31070, - "end": 31097, + "start": 31120, + "end": 31147, "loc": { "start": { - "line": 847, + "line": 848, "column": 12 }, "end": { - "line": 847, + "line": 848, "column": 39 } }, "expression": { "type": "CallExpression", - "start": 31070, - "end": 31096, + "start": 31120, + "end": 31146, "loc": { "start": { - "line": 847, + "line": 848, "column": 12 }, "end": { - "line": 847, + "line": 848, "column": 38 } }, "callee": { "type": "MemberExpression", - "start": 31070, - "end": 31086, + "start": 31120, + "end": 31136, "loc": { "start": { - "line": 847, + "line": 848, "column": 12 }, "end": { - "line": 847, + "line": 848, "column": 28 } }, "object": { "type": "Identifier", - "start": 31070, - "end": 31075, + "start": 31120, + "end": 31125, "loc": { "start": { - "line": 847, + "line": 848, "column": 12 }, "end": { - "line": 847, + "line": 848, "column": 17 }, "identifierName": "idMap" @@ -61666,15 +61803,15 @@ }, "property": { "type": "Identifier", - "start": 31076, - "end": 31086, + "start": 31126, + "end": 31136, "loc": { "start": { - "line": 847, + "line": 848, "column": 18 }, "end": { - "line": 847, + "line": 848, "column": 28 }, "identifierName": "removeItem" @@ -61686,44 +61823,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 31087, - "end": 31095, + "start": 31137, + "end": 31145, "loc": { "start": { - "line": 847, + "line": 848, "column": 29 }, "end": { - "line": 847, + "line": 848, "column": 37 } }, "object": { "type": "ThisExpression", - "start": 31087, - "end": 31091, + "start": 31137, + "end": 31141, "loc": { "start": { - "line": 847, + "line": 848, "column": 29 }, "end": { - "line": 847, + "line": 848, "column": 33 } } }, "property": { "type": "Identifier", - "start": 31092, - "end": 31095, + "start": 31142, + "end": 31145, "loc": { "start": { - "line": 847, + "line": 848, "column": 34 }, "end": { - "line": 847, + "line": 848, "column": 37 }, "identifierName": "_id" @@ -61747,15 +61884,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this ModelTreeView.\n * @private\n ", - "start": 30754, - "end": 30817, + "start": 30804, + "end": 30867, "loc": { "start": { - "line": 838, + "line": 839, "column": 4 }, "end": { - "line": 841, + "line": 842, "column": 7 } } @@ -61770,15 +61907,15 @@ }, { "type": "ExportNamedDeclaration", - "start": 31117, - "end": 31140, + "start": 31167, + "end": 31190, "loc": { "start": { - "line": 852, + "line": 853, "column": 0 }, "end": { - "line": 852, + "line": 853, "column": 23 } }, @@ -61786,29 +61923,29 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 31125, - "end": 31138, + "start": 31175, + "end": 31188, "loc": { "start": { - "line": 852, + "line": 853, "column": 8 }, "end": { - "line": 852, + "line": 853, "column": 21 } }, "local": { "type": "Identifier", - "start": 31125, - "end": 31138, + "start": 31175, + "end": 31188, "loc": { "start": { - "line": 852, + "line": 853, "column": 8 }, "end": { - "line": 852, + "line": 853, "column": 21 }, "identifierName": "ModelTreeView" @@ -61817,15 +61954,15 @@ }, "exported": { "type": "Identifier", - "start": 31125, - "end": 31138, + "start": 31175, + "end": 31188, "loc": { "start": { - "line": 852, + "line": 853, "column": 8 }, "end": { - "line": 852, + "line": 853, "column": 21 }, "identifierName": "ModelTreeView" @@ -61838,29 +61975,29 @@ }, { "type": "ExportNamedDeclaration", - "start": 31117, - "end": 31140, + "start": 31167, + "end": 31190, "loc": { "start": { - "line": 852, + "line": 853, "column": 0 }, "end": { - "line": 852, + "line": 853, "column": 23 } }, "declaration": { "type": "ClassDeclaration", "start": 491, - "end": 31115, + "end": 31165, "loc": { "start": { "line": 15, "column": 0 }, "end": { - "line": 850, + "line": 851, "column": 1 } }, @@ -61886,14 +62023,14 @@ "body": { "type": "ClassBody", "start": 511, - "end": 31115, + "end": 31165, "loc": { "start": { "line": 15, "column": 20 }, "end": { - "line": 850, + "line": 851, "column": 1 } }, @@ -107597,14 +107734,14 @@ { "type": "ClassMethod", "start": 23874, - "end": 25635, + "end": 25685, "loc": { "start": { "line": 644, "column": 4 }, "end": { - "line": 687, + "line": 688, "column": 5 } }, @@ -107654,14 +107791,14 @@ "body": { "type": "BlockStatement", "start": 23899, - "end": 25635, + "end": 25685, "loc": { "start": { "line": 644, "column": 29 }, "end": { - "line": 687, + "line": 688, "column": 5 } }, @@ -109622,7 +109759,7 @@ { "type": "ExpressionStatement", "start": 24753, - "end": 24818, + "end": 24794, "loc": { "start": { "line": 663, @@ -109630,13 +109767,13 @@ }, "end": { "line": 663, - "column": 73 + "column": 49 } }, "expression": { - "type": "CallExpression", + "type": "AssignmentExpression", "start": 24753, - "end": 24817, + "end": 24793, "loc": { "start": { "line": 663, @@ -109644,13 +109781,14 @@ }, "end": { "line": 663, - "column": 72 + "column": 48 } }, - "callee": { + "operator": "=", + "left": { "type": "MemberExpression", "start": 24753, - "end": 24778, + "end": 24785, "loc": { "start": { "line": 663, @@ -109658,13 +109796,13 @@ }, "end": { "line": 663, - "column": 33 + "column": 40 } }, "object": { - "type": "Identifier", + "type": "MemberExpression", "start": 24753, - "end": 24761, + "end": 24767, "loc": { "start": { "line": 663, @@ -109672,6 +109810,142 @@ }, "end": { "line": 663, + "column": 22 + } + }, + "object": { + "type": "Identifier", + "start": 24753, + "end": 24761, + "loc": { + "start": { + "line": 663, + "column": 8 + }, + "end": { + "line": 663, + "column": 16 + }, + "identifierName": "checkbox" + }, + "name": "checkbox" + }, + "property": { + "type": "Identifier", + "start": 24762, + "end": 24767, + "loc": { + "start": { + "line": 663, + "column": 17 + }, + "end": { + "line": 663, + "column": 22 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "StringLiteral", + "start": 24768, + "end": 24784, + "loc": { + "start": { + "line": 663, + "column": 23 + }, + "end": { + "line": 663, + "column": 39 + } + }, + "extra": { + "rawValue": "pointer-events", + "raw": "\"pointer-events\"" + }, + "value": "pointer-events" + }, + "computed": true + }, + "right": { + "type": "StringLiteral", + "start": 24788, + "end": 24793, + "loc": { + "start": { + "line": 663, + "column": 43 + }, + "end": { + "line": 663, + "column": 48 + } + }, + "extra": { + "rawValue": "all", + "raw": "\"all\"" + }, + "value": "all" + } + } + }, + { + "type": "ExpressionStatement", + "start": 24803, + "end": 24868, + "loc": { + "start": { + "line": 664, + "column": 8 + }, + "end": { + "line": 664, + "column": 73 + } + }, + "expression": { + "type": "CallExpression", + "start": 24803, + "end": 24867, + "loc": { + "start": { + "line": 664, + "column": 8 + }, + "end": { + "line": 664, + "column": 72 + } + }, + "callee": { + "type": "MemberExpression", + "start": 24803, + "end": 24828, + "loc": { + "start": { + "line": 664, + "column": 8 + }, + "end": { + "line": 664, + "column": 33 + } + }, + "object": { + "type": "Identifier", + "start": 24803, + "end": 24811, + "loc": { + "start": { + "line": 664, + "column": 8 + }, + "end": { + "line": 664, "column": 16 }, "identifierName": "checkbox" @@ -109680,15 +109954,15 @@ }, "property": { "type": "Identifier", - "start": 24762, - "end": 24778, + "start": 24812, + "end": 24828, "loc": { "start": { - "line": 663, + "line": 664, "column": 17 }, "end": { - "line": 663, + "line": 664, "column": 33 }, "identifierName": "addEventListener" @@ -109700,15 +109974,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 24779, - "end": 24787, + "start": 24829, + "end": 24837, "loc": { "start": { - "line": 663, + "line": 664, "column": 34 }, "end": { - "line": 663, + "line": 664, "column": 42 } }, @@ -109720,44 +109994,44 @@ }, { "type": "MemberExpression", - "start": 24789, - "end": 24816, + "start": 24839, + "end": 24866, "loc": { "start": { - "line": 663, + "line": 664, "column": 44 }, "end": { - "line": 663, + "line": 664, "column": 71 } }, "object": { "type": "ThisExpression", - "start": 24789, - "end": 24793, + "start": 24839, + "end": 24843, "loc": { "start": { - "line": 663, + "line": 664, "column": 44 }, "end": { - "line": 663, + "line": 664, "column": 48 } } }, "property": { "type": "Identifier", - "start": 24794, - "end": 24816, + "start": 24844, + "end": 24866, "loc": { "start": { - "line": 663, + "line": 664, "column": 49 }, "end": { - "line": 663, + "line": 664, "column": 71 }, "identifierName": "_checkboxChangeHandler" @@ -109771,57 +110045,57 @@ }, { "type": "ExpressionStatement", - "start": 24827, - "end": 24861, + "start": 24877, + "end": 24911, "loc": { "start": { - "line": 664, + "line": 665, "column": 8 }, "end": { - "line": 664, + "line": 665, "column": 42 } }, "expression": { "type": "CallExpression", - "start": 24827, - "end": 24860, + "start": 24877, + "end": 24910, "loc": { "start": { - "line": 664, + "line": 665, "column": 8 }, "end": { - "line": 664, + "line": 665, "column": 41 } }, "callee": { "type": "MemberExpression", - "start": 24827, - "end": 24850, + "start": 24877, + "end": 24900, "loc": { "start": { - "line": 664, + "line": 665, "column": 8 }, "end": { - "line": 664, + "line": 665, "column": 31 } }, "object": { "type": "Identifier", - "start": 24827, - "end": 24838, + "start": 24877, + "end": 24888, "loc": { "start": { - "line": 664, + "line": 665, "column": 8 }, "end": { - "line": 664, + "line": 665, "column": 19 }, "identifierName": "nodeElement" @@ -109830,15 +110104,15 @@ }, "property": { "type": "Identifier", - "start": 24839, - "end": 24850, + "start": 24889, + "end": 24900, "loc": { "start": { - "line": 664, + "line": 665, "column": 20 }, "end": { - "line": 664, + "line": 665, "column": 31 }, "identifierName": "appendChild" @@ -109850,15 +110124,15 @@ "arguments": [ { "type": "Identifier", - "start": 24851, - "end": 24859, + "start": 24901, + "end": 24909, "loc": { "start": { - "line": 664, + "line": 665, "column": 32 }, "end": { - "line": 664, + "line": 665, "column": 40 }, "identifierName": "checkbox" @@ -109870,44 +110144,44 @@ }, { "type": "VariableDeclaration", - "start": 24870, - "end": 24914, + "start": 24920, + "end": 24964, "loc": { "start": { - "line": 665, + "line": 666, "column": 8 }, "end": { - "line": 665, + "line": 666, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 24876, - "end": 24913, + "start": 24926, + "end": 24963, "loc": { "start": { - "line": 665, + "line": 666, "column": 14 }, "end": { - "line": 665, + "line": 666, "column": 51 } }, "id": { "type": "Identifier", - "start": 24876, - "end": 24880, + "start": 24926, + "end": 24930, "loc": { "start": { - "line": 665, + "line": 666, "column": 14 }, "end": { - "line": 665, + "line": 666, "column": 18 }, "identifierName": "span" @@ -109916,43 +110190,43 @@ }, "init": { "type": "CallExpression", - "start": 24883, - "end": 24913, + "start": 24933, + "end": 24963, "loc": { "start": { - "line": 665, + "line": 666, "column": 21 }, "end": { - "line": 665, + "line": 666, "column": 51 } }, "callee": { "type": "MemberExpression", - "start": 24883, - "end": 24905, + "start": 24933, + "end": 24955, "loc": { "start": { - "line": 665, + "line": 666, "column": 21 }, "end": { - "line": 665, + "line": 666, "column": 43 } }, "object": { "type": "Identifier", - "start": 24883, - "end": 24891, + "start": 24933, + "end": 24941, "loc": { "start": { - "line": 665, + "line": 666, "column": 21 }, "end": { - "line": 665, + "line": 666, "column": 29 }, "identifierName": "document" @@ -109961,15 +110235,15 @@ }, "property": { "type": "Identifier", - "start": 24892, - "end": 24905, + "start": 24942, + "end": 24955, "loc": { "start": { - "line": 665, + "line": 666, "column": 30 }, "end": { - "line": 665, + "line": 666, "column": 43 }, "identifierName": "createElement" @@ -109981,15 +110255,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 24906, - "end": 24912, + "start": 24956, + "end": 24962, "loc": { "start": { - "line": 665, + "line": 666, "column": 44 }, "end": { - "line": 665, + "line": 666, "column": 50 } }, @@ -110007,58 +110281,58 @@ }, { "type": "ExpressionStatement", - "start": 24923, - "end": 24953, + "start": 24973, + "end": 25003, "loc": { "start": { - "line": 666, + "line": 667, "column": 8 }, "end": { - "line": 666, + "line": 667, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 24923, - "end": 24952, + "start": 24973, + "end": 25002, "loc": { "start": { - "line": 666, + "line": 667, "column": 8 }, "end": { - "line": 666, + "line": 667, "column": 37 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24923, - "end": 24939, + "start": 24973, + "end": 24989, "loc": { "start": { - "line": 666, + "line": 667, "column": 8 }, "end": { - "line": 666, + "line": 667, "column": 24 } }, "object": { "type": "Identifier", - "start": 24923, - "end": 24927, + "start": 24973, + "end": 24977, "loc": { "start": { - "line": 666, + "line": 667, "column": 8 }, "end": { - "line": 666, + "line": 667, "column": 12 }, "identifierName": "span" @@ -110067,15 +110341,15 @@ }, "property": { "type": "Identifier", - "start": 24928, - "end": 24939, + "start": 24978, + "end": 24989, "loc": { "start": { - "line": 666, + "line": 667, "column": 13 }, "end": { - "line": 666, + "line": 667, "column": 24 }, "identifierName": "textContent" @@ -110086,29 +110360,29 @@ }, "right": { "type": "MemberExpression", - "start": 24942, - "end": 24952, + "start": 24992, + "end": 25002, "loc": { "start": { - "line": 666, + "line": 667, "column": 27 }, "end": { - "line": 666, + "line": 667, "column": 37 } }, "object": { "type": "Identifier", - "start": 24942, - "end": 24946, + "start": 24992, + "end": 24996, "loc": { "start": { - "line": 666, + "line": 667, "column": 27 }, "end": { - "line": 666, + "line": 667, "column": 31 }, "identifierName": "node" @@ -110117,15 +110391,15 @@ }, "property": { "type": "Identifier", - "start": 24947, - "end": 24952, + "start": 24997, + "end": 25002, "loc": { "start": { - "line": 666, + "line": 667, "column": 32 }, "end": { - "line": 666, + "line": 667, "column": 37 }, "identifierName": "title" @@ -110138,57 +110412,57 @@ }, { "type": "ExpressionStatement", - "start": 24962, - "end": 24992, + "start": 25012, + "end": 25042, "loc": { "start": { - "line": 667, + "line": 668, "column": 8 }, "end": { - "line": 667, + "line": 668, "column": 38 } }, "expression": { "type": "CallExpression", - "start": 24962, - "end": 24991, + "start": 25012, + "end": 25041, "loc": { "start": { - "line": 667, + "line": 668, "column": 8 }, "end": { - "line": 667, + "line": 668, "column": 37 } }, "callee": { "type": "MemberExpression", - "start": 24962, - "end": 24985, + "start": 25012, + "end": 25035, "loc": { "start": { - "line": 667, + "line": 668, "column": 8 }, "end": { - "line": 667, + "line": 668, "column": 31 } }, "object": { "type": "Identifier", - "start": 24962, - "end": 24973, + "start": 25012, + "end": 25023, "loc": { "start": { - "line": 667, + "line": 668, "column": 8 }, "end": { - "line": 667, + "line": 668, "column": 19 }, "identifierName": "nodeElement" @@ -110197,15 +110471,15 @@ }, "property": { "type": "Identifier", - "start": 24974, - "end": 24985, + "start": 25024, + "end": 25035, "loc": { "start": { - "line": 667, + "line": 668, "column": 20 }, "end": { - "line": 667, + "line": 668, "column": 31 }, "identifierName": "appendChild" @@ -110217,15 +110491,15 @@ "arguments": [ { "type": "Identifier", - "start": 24986, - "end": 24990, + "start": 25036, + "end": 25040, "loc": { "start": { - "line": 667, + "line": 668, "column": 32 }, "end": { - "line": 667, + "line": 668, "column": 36 }, "identifierName": "span" @@ -110237,58 +110511,58 @@ }, { "type": "ExpressionStatement", - "start": 25001, - "end": 25297, + "start": 25051, + "end": 25347, "loc": { "start": { - "line": 668, + "line": 669, "column": 8 }, "end": { - "line": 676, + "line": 677, "column": 10 } }, "expression": { "type": "AssignmentExpression", - "start": 25001, - "end": 25296, + "start": 25051, + "end": 25346, "loc": { "start": { - "line": 668, + "line": 669, "column": 8 }, "end": { - "line": 676, + "line": 677, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25001, - "end": 25019, + "start": 25051, + "end": 25069, "loc": { "start": { - "line": 668, + "line": 669, "column": 8 }, "end": { - "line": 668, + "line": 669, "column": 26 } }, "object": { "type": "Identifier", - "start": 25001, - "end": 25005, + "start": 25051, + "end": 25055, "loc": { "start": { - "line": 668, + "line": 669, "column": 8 }, "end": { - "line": 668, + "line": 669, "column": 12 }, "identifierName": "span" @@ -110297,15 +110571,15 @@ }, "property": { "type": "Identifier", - "start": 25006, - "end": 25019, + "start": 25056, + "end": 25069, "loc": { "start": { - "line": 668, + "line": 669, "column": 13 }, "end": { - "line": 668, + "line": 669, "column": 26 }, "identifierName": "oncontextmenu" @@ -110316,15 +110590,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 25022, - "end": 25296, + "start": 25072, + "end": 25346, "loc": { "start": { - "line": 668, + "line": 669, "column": 29 }, "end": { - "line": 676, + "line": 677, "column": 9 } }, @@ -110335,15 +110609,15 @@ "params": [ { "type": "Identifier", - "start": 25023, - "end": 25024, + "start": 25073, + "end": 25074, "loc": { "start": { - "line": 668, + "line": 669, "column": 30 }, "end": { - "line": 668, + "line": 669, "column": 31 }, "identifierName": "e" @@ -110353,101 +110627,101 @@ ], "body": { "type": "BlockStatement", - "start": 25029, - "end": 25296, + "start": 25079, + "end": 25346, "loc": { "start": { - "line": 668, + "line": 669, "column": 36 }, "end": { - "line": 676, + "line": 677, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 25043, - "end": 25254, + "start": 25093, + "end": 25304, "loc": { "start": { - "line": 669, + "line": 670, "column": 12 }, "end": { - "line": 674, + "line": 675, "column": 15 } }, "expression": { "type": "CallExpression", - "start": 25043, - "end": 25253, + "start": 25093, + "end": 25303, "loc": { "start": { - "line": 669, + "line": 670, "column": 12 }, "end": { - "line": 674, + "line": 675, "column": 14 } }, "callee": { "type": "MemberExpression", - "start": 25043, - "end": 25068, + "start": 25093, + "end": 25118, "loc": { "start": { - "line": 669, + "line": 670, "column": 12 }, "end": { - "line": 669, + "line": 670, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 25043, - "end": 25063, + "start": 25093, + "end": 25113, "loc": { "start": { - "line": 669, + "line": 670, "column": 12 }, "end": { - "line": 669, + "line": 670, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 25043, - "end": 25047, + "start": 25093, + "end": 25097, "loc": { "start": { - "line": 669, + "line": 670, "column": 12 }, "end": { - "line": 669, + "line": 670, "column": 16 } } }, "property": { "type": "Identifier", - "start": 25048, - "end": 25063, + "start": 25098, + "end": 25113, "loc": { "start": { - "line": 669, + "line": 670, "column": 17 }, "end": { - "line": 669, + "line": 670, "column": 32 }, "identifierName": "_treeViewPlugin" @@ -110458,15 +110732,15 @@ }, "property": { "type": "Identifier", - "start": 25064, - "end": 25068, + "start": 25114, + "end": 25118, "loc": { "start": { - "line": 669, + "line": 670, "column": 33 }, "end": { - "line": 669, + "line": 670, "column": 37 }, "identifierName": "fire" @@ -110478,15 +110752,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 25069, - "end": 25082, + "start": 25119, + "end": 25132, "loc": { "start": { - "line": 669, + "line": 670, "column": 38 }, "end": { - "line": 669, + "line": 670, "column": 51 } }, @@ -110498,30 +110772,30 @@ }, { "type": "ObjectExpression", - "start": 25084, - "end": 25252, + "start": 25134, + "end": 25302, "loc": { "start": { - "line": 669, + "line": 670, "column": 53 }, "end": { - "line": 674, + "line": 675, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 25102, - "end": 25110, + "start": 25152, + "end": 25160, "loc": { "start": { - "line": 670, + "line": 671, "column": 16 }, "end": { - "line": 670, + "line": 671, "column": 24 } }, @@ -110530,15 +110804,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25102, - "end": 25107, + "start": 25152, + "end": 25157, "loc": { "start": { - "line": 670, + "line": 671, "column": 16 }, "end": { - "line": 670, + "line": 671, "column": 21 }, "identifierName": "event" @@ -110547,15 +110821,15 @@ }, "value": { "type": "Identifier", - "start": 25109, - "end": 25110, + "start": 25159, + "end": 25160, "loc": { "start": { - "line": 670, + "line": 671, "column": 23 }, "end": { - "line": 670, + "line": 671, "column": 24 }, "identifierName": "e" @@ -110565,15 +110839,15 @@ }, { "type": "ObjectProperty", - "start": 25128, - "end": 25148, + "start": 25178, + "end": 25198, "loc": { "start": { - "line": 671, + "line": 672, "column": 16 }, "end": { - "line": 671, + "line": 672, "column": 36 } }, @@ -110582,15 +110856,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25128, - "end": 25134, + "start": 25178, + "end": 25184, "loc": { "start": { - "line": 671, + "line": 672, "column": 16 }, "end": { - "line": 671, + "line": 672, "column": 22 }, "identifierName": "viewer" @@ -110599,44 +110873,44 @@ }, "value": { "type": "MemberExpression", - "start": 25136, - "end": 25148, + "start": 25186, + "end": 25198, "loc": { "start": { - "line": 671, + "line": 672, "column": 24 }, "end": { - "line": 671, + "line": 672, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 25136, - "end": 25140, + "start": 25186, + "end": 25190, "loc": { "start": { - "line": 671, + "line": 672, "column": 24 }, "end": { - "line": 671, + "line": 672, "column": 28 } } }, "property": { "type": "Identifier", - "start": 25141, - "end": 25148, + "start": 25191, + "end": 25198, "loc": { "start": { - "line": 671, + "line": 672, "column": 29 }, "end": { - "line": 671, + "line": 672, "column": 36 }, "identifierName": "_viewer" @@ -110648,15 +110922,15 @@ }, { "type": "ObjectProperty", - "start": 25166, - "end": 25202, + "start": 25216, + "end": 25252, "loc": { "start": { - "line": 672, + "line": 673, "column": 16 }, "end": { - "line": 672, + "line": 673, "column": 52 } }, @@ -110665,15 +110939,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25166, - "end": 25180, + "start": 25216, + "end": 25230, "loc": { "start": { - "line": 672, + "line": 673, "column": 16 }, "end": { - "line": 672, + "line": 673, "column": 30 }, "identifierName": "treeViewPlugin" @@ -110682,44 +110956,44 @@ }, "value": { "type": "MemberExpression", - "start": 25182, - "end": 25202, + "start": 25232, + "end": 25252, "loc": { "start": { - "line": 672, + "line": 673, "column": 32 }, "end": { - "line": 672, + "line": 673, "column": 52 } }, "object": { "type": "ThisExpression", - "start": 25182, - "end": 25186, + "start": 25232, + "end": 25236, "loc": { "start": { - "line": 672, + "line": 673, "column": 32 }, "end": { - "line": 672, + "line": 673, "column": 36 } } }, "property": { "type": "Identifier", - "start": 25187, - "end": 25202, + "start": 25237, + "end": 25252, "loc": { "start": { - "line": 672, + "line": 673, "column": 37 }, "end": { - "line": 672, + "line": 673, "column": 52 }, "identifierName": "_treeViewPlugin" @@ -110731,15 +111005,15 @@ }, { "type": "ObjectProperty", - "start": 25220, - "end": 25238, + "start": 25270, + "end": 25288, "loc": { "start": { - "line": 673, + "line": 674, "column": 16 }, "end": { - "line": 673, + "line": 674, "column": 34 } }, @@ -110748,15 +111022,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25220, - "end": 25232, + "start": 25270, + "end": 25282, "loc": { "start": { - "line": 673, + "line": 674, "column": 16 }, "end": { - "line": 673, + "line": 674, "column": 28 }, "identifierName": "treeViewNode" @@ -110765,15 +111039,15 @@ }, "value": { "type": "Identifier", - "start": 25234, - "end": 25238, + "start": 25284, + "end": 25288, "loc": { "start": { - "line": 673, + "line": 674, "column": 30 }, "end": { - "line": 673, + "line": 674, "column": 34 }, "identifierName": "node" @@ -110788,57 +111062,57 @@ }, { "type": "ExpressionStatement", - "start": 25267, - "end": 25286, + "start": 25317, + "end": 25336, "loc": { "start": { - "line": 675, + "line": 676, "column": 12 }, "end": { - "line": 675, + "line": 676, "column": 31 } }, "expression": { "type": "CallExpression", - "start": 25267, - "end": 25285, + "start": 25317, + "end": 25335, "loc": { "start": { - "line": 675, + "line": 676, "column": 12 }, "end": { - "line": 675, + "line": 676, "column": 30 } }, "callee": { "type": "MemberExpression", - "start": 25267, - "end": 25283, + "start": 25317, + "end": 25333, "loc": { "start": { - "line": 675, + "line": 676, "column": 12 }, "end": { - "line": 675, + "line": 676, "column": 28 } }, "object": { "type": "Identifier", - "start": 25267, - "end": 25268, + "start": 25317, + "end": 25318, "loc": { "start": { - "line": 675, + "line": 676, "column": 12 }, "end": { - "line": 675, + "line": 676, "column": 13 }, "identifierName": "e" @@ -110847,15 +111121,15 @@ }, "property": { "type": "Identifier", - "start": 25269, - "end": 25283, + "start": 25319, + "end": 25333, "loc": { "start": { - "line": 675, + "line": 676, "column": 14 }, "end": { - "line": 675, + "line": 676, "column": 28 }, "identifierName": "preventDefault" @@ -110875,58 +111149,58 @@ }, { "type": "ExpressionStatement", - "start": 25306, - "end": 25601, + "start": 25356, + "end": 25651, "loc": { "start": { - "line": 677, + "line": 678, "column": 8 }, "end": { - "line": 685, + "line": 686, "column": 10 } }, "expression": { "type": "AssignmentExpression", - "start": 25306, - "end": 25600, + "start": 25356, + "end": 25650, "loc": { "start": { - "line": 677, + "line": 678, "column": 8 }, "end": { - "line": 685, + "line": 686, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25306, - "end": 25318, + "start": 25356, + "end": 25368, "loc": { "start": { - "line": 677, + "line": 678, "column": 8 }, "end": { - "line": 677, + "line": 678, "column": 20 } }, "object": { "type": "Identifier", - "start": 25306, - "end": 25310, + "start": 25356, + "end": 25360, "loc": { "start": { - "line": 677, + "line": 678, "column": 8 }, "end": { - "line": 677, + "line": 678, "column": 12 }, "identifierName": "span" @@ -110935,15 +111209,15 @@ }, "property": { "type": "Identifier", - "start": 25311, - "end": 25318, + "start": 25361, + "end": 25368, "loc": { "start": { - "line": 677, + "line": 678, "column": 13 }, "end": { - "line": 677, + "line": 678, "column": 20 }, "identifierName": "onclick" @@ -110954,15 +111228,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 25321, - "end": 25600, + "start": 25371, + "end": 25650, "loc": { "start": { - "line": 677, + "line": 678, "column": 23 }, "end": { - "line": 685, + "line": 686, "column": 9 } }, @@ -110973,15 +111247,15 @@ "params": [ { "type": "Identifier", - "start": 25322, - "end": 25323, + "start": 25372, + "end": 25373, "loc": { "start": { - "line": 677, + "line": 678, "column": 24 }, "end": { - "line": 677, + "line": 678, "column": 25 }, "identifierName": "e" @@ -110991,101 +111265,101 @@ ], "body": { "type": "BlockStatement", - "start": 25328, - "end": 25600, + "start": 25378, + "end": 25650, "loc": { "start": { - "line": 677, + "line": 678, "column": 30 }, "end": { - "line": 685, + "line": 686, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 25342, - "end": 25558, + "start": 25392, + "end": 25608, "loc": { "start": { - "line": 678, + "line": 679, "column": 12 }, "end": { - "line": 683, + "line": 684, "column": 15 } }, "expression": { "type": "CallExpression", - "start": 25342, - "end": 25557, + "start": 25392, + "end": 25607, "loc": { "start": { - "line": 678, + "line": 679, "column": 12 }, "end": { - "line": 683, + "line": 684, "column": 14 } }, "callee": { "type": "MemberExpression", - "start": 25342, - "end": 25367, + "start": 25392, + "end": 25417, "loc": { "start": { - "line": 678, + "line": 679, "column": 12 }, "end": { - "line": 678, + "line": 679, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 25342, - "end": 25362, + "start": 25392, + "end": 25412, "loc": { "start": { - "line": 678, + "line": 679, "column": 12 }, "end": { - "line": 678, + "line": 679, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 25342, - "end": 25346, + "start": 25392, + "end": 25396, "loc": { "start": { - "line": 678, + "line": 679, "column": 12 }, "end": { - "line": 678, + "line": 679, "column": 16 } } }, "property": { "type": "Identifier", - "start": 25347, - "end": 25362, + "start": 25397, + "end": 25412, "loc": { "start": { - "line": 678, + "line": 679, "column": 17 }, "end": { - "line": 678, + "line": 679, "column": 32 }, "identifierName": "_treeViewPlugin" @@ -111096,15 +111370,15 @@ }, "property": { "type": "Identifier", - "start": 25363, - "end": 25367, + "start": 25413, + "end": 25417, "loc": { "start": { - "line": 678, + "line": 679, "column": 33 }, "end": { - "line": 678, + "line": 679, "column": 37 }, "identifierName": "fire" @@ -111116,15 +111390,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 25368, - "end": 25386, + "start": 25418, + "end": 25436, "loc": { "start": { - "line": 678, + "line": 679, "column": 38 }, "end": { - "line": 678, + "line": 679, "column": 56 } }, @@ -111136,30 +111410,30 @@ }, { "type": "ObjectExpression", - "start": 25388, - "end": 25556, + "start": 25438, + "end": 25606, "loc": { "start": { - "line": 678, + "line": 679, "column": 58 }, "end": { - "line": 683, + "line": 684, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 25406, - "end": 25414, + "start": 25456, + "end": 25464, "loc": { "start": { - "line": 679, + "line": 680, "column": 16 }, "end": { - "line": 679, + "line": 680, "column": 24 } }, @@ -111168,15 +111442,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25406, - "end": 25411, + "start": 25456, + "end": 25461, "loc": { "start": { - "line": 679, + "line": 680, "column": 16 }, "end": { - "line": 679, + "line": 680, "column": 21 }, "identifierName": "event" @@ -111185,15 +111459,15 @@ }, "value": { "type": "Identifier", - "start": 25413, - "end": 25414, + "start": 25463, + "end": 25464, "loc": { "start": { - "line": 679, + "line": 680, "column": 23 }, "end": { - "line": 679, + "line": 680, "column": 24 }, "identifierName": "e" @@ -111203,15 +111477,15 @@ }, { "type": "ObjectProperty", - "start": 25432, - "end": 25452, + "start": 25482, + "end": 25502, "loc": { "start": { - "line": 680, + "line": 681, "column": 16 }, "end": { - "line": 680, + "line": 681, "column": 36 } }, @@ -111220,15 +111494,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25432, - "end": 25438, + "start": 25482, + "end": 25488, "loc": { "start": { - "line": 680, + "line": 681, "column": 16 }, "end": { - "line": 680, + "line": 681, "column": 22 }, "identifierName": "viewer" @@ -111237,44 +111511,44 @@ }, "value": { "type": "MemberExpression", - "start": 25440, - "end": 25452, + "start": 25490, + "end": 25502, "loc": { "start": { - "line": 680, + "line": 681, "column": 24 }, "end": { - "line": 680, + "line": 681, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 25440, - "end": 25444, + "start": 25490, + "end": 25494, "loc": { "start": { - "line": 680, + "line": 681, "column": 24 }, "end": { - "line": 680, + "line": 681, "column": 28 } } }, "property": { "type": "Identifier", - "start": 25445, - "end": 25452, + "start": 25495, + "end": 25502, "loc": { "start": { - "line": 680, + "line": 681, "column": 29 }, "end": { - "line": 680, + "line": 681, "column": 36 }, "identifierName": "_viewer" @@ -111286,15 +111560,15 @@ }, { "type": "ObjectProperty", - "start": 25470, - "end": 25506, + "start": 25520, + "end": 25556, "loc": { "start": { - "line": 681, + "line": 682, "column": 16 }, "end": { - "line": 681, + "line": 682, "column": 52 } }, @@ -111303,15 +111577,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25470, - "end": 25484, + "start": 25520, + "end": 25534, "loc": { "start": { - "line": 681, + "line": 682, "column": 16 }, "end": { - "line": 681, + "line": 682, "column": 30 }, "identifierName": "treeViewPlugin" @@ -111320,44 +111594,44 @@ }, "value": { "type": "MemberExpression", - "start": 25486, - "end": 25506, + "start": 25536, + "end": 25556, "loc": { "start": { - "line": 681, + "line": 682, "column": 32 }, "end": { - "line": 681, + "line": 682, "column": 52 } }, "object": { "type": "ThisExpression", - "start": 25486, - "end": 25490, + "start": 25536, + "end": 25540, "loc": { "start": { - "line": 681, + "line": 682, "column": 32 }, "end": { - "line": 681, + "line": 682, "column": 36 } } }, "property": { "type": "Identifier", - "start": 25491, - "end": 25506, + "start": 25541, + "end": 25556, "loc": { "start": { - "line": 681, + "line": 682, "column": 37 }, "end": { - "line": 681, + "line": 682, "column": 52 }, "identifierName": "_treeViewPlugin" @@ -111369,15 +111643,15 @@ }, { "type": "ObjectProperty", - "start": 25524, - "end": 25542, + "start": 25574, + "end": 25592, "loc": { "start": { - "line": 682, + "line": 683, "column": 16 }, "end": { - "line": 682, + "line": 683, "column": 34 } }, @@ -111386,15 +111660,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25524, - "end": 25536, + "start": 25574, + "end": 25586, "loc": { "start": { - "line": 682, + "line": 683, "column": 16 }, "end": { - "line": 682, + "line": 683, "column": 28 }, "identifierName": "treeViewNode" @@ -111403,15 +111677,15 @@ }, "value": { "type": "Identifier", - "start": 25538, - "end": 25542, + "start": 25588, + "end": 25592, "loc": { "start": { - "line": 682, + "line": 683, "column": 30 }, "end": { - "line": 682, + "line": 683, "column": 34 }, "identifierName": "node" @@ -111426,57 +111700,57 @@ }, { "type": "ExpressionStatement", - "start": 25571, - "end": 25590, + "start": 25621, + "end": 25640, "loc": { "start": { - "line": 684, + "line": 685, "column": 12 }, "end": { - "line": 684, + "line": 685, "column": 31 } }, "expression": { "type": "CallExpression", - "start": 25571, - "end": 25589, + "start": 25621, + "end": 25639, "loc": { "start": { - "line": 684, + "line": 685, "column": 12 }, "end": { - "line": 684, + "line": 685, "column": 30 } }, "callee": { "type": "MemberExpression", - "start": 25571, - "end": 25587, + "start": 25621, + "end": 25637, "loc": { "start": { - "line": 684, + "line": 685, "column": 12 }, "end": { - "line": 684, + "line": 685, "column": 28 } }, "object": { "type": "Identifier", - "start": 25571, - "end": 25572, + "start": 25621, + "end": 25622, "loc": { "start": { - "line": 684, + "line": 685, "column": 12 }, "end": { - "line": 684, + "line": 685, "column": 13 }, "identifierName": "e" @@ -111485,15 +111759,15 @@ }, "property": { "type": "Identifier", - "start": 25573, - "end": 25587, + "start": 25623, + "end": 25637, "loc": { "start": { - "line": 684, + "line": 685, "column": 14 }, "end": { - "line": 684, + "line": 685, "column": 28 }, "identifierName": "preventDefault" @@ -111513,29 +111787,29 @@ }, { "type": "ReturnStatement", - "start": 25610, - "end": 25629, + "start": 25660, + "end": 25679, "loc": { "start": { - "line": 686, + "line": 687, "column": 8 }, "end": { - "line": 686, + "line": 687, "column": 27 } }, "argument": { "type": "Identifier", - "start": 25617, - "end": 25628, + "start": 25667, + "end": 25678, "loc": { "start": { - "line": 686, + "line": 687, "column": 15 }, "end": { - "line": 686, + "line": 687, "column": 26 }, "identifierName": "nodeElement" @@ -111551,15 +111825,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n * @param depth\n ", - "start": 25641, - "end": 25688, + "start": 25691, + "end": 25738, "loc": { "start": { - "line": 689, + "line": 690, "column": 4 }, "end": { - "line": 692, + "line": 693, "column": 7 } } @@ -111568,15 +111842,15 @@ }, { "type": "ClassMethod", - "start": 25693, - "end": 26545, + "start": 25743, + "end": 26595, "loc": { "start": { - "line": 693, + "line": 694, "column": 4 }, "end": { - "line": 714, + "line": 715, "column": 5 } }, @@ -111584,15 +111858,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25693, - "end": 25706, + "start": 25743, + "end": 25756, "loc": { "start": { - "line": 693, + "line": 694, "column": 4 }, "end": { - "line": 693, + "line": 694, "column": 17 }, "identifierName": "expandToDepth" @@ -111608,15 +111882,15 @@ "params": [ { "type": "Identifier", - "start": 25707, - "end": 25712, + "start": 25757, + "end": 25762, "loc": { "start": { - "line": 693, + "line": 694, "column": 18 }, "end": { - "line": 693, + "line": 694, "column": 23 }, "identifierName": "depth" @@ -111626,59 +111900,59 @@ ], "body": { "type": "BlockStatement", - "start": 25714, - "end": 26545, + "start": 25764, + "end": 26595, "loc": { "start": { - "line": 693, + "line": 694, "column": 25 }, "end": { - "line": 714, + "line": 715, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 25724, - "end": 26377, + "start": 25774, + "end": 26427, "loc": { "start": { - "line": 694, + "line": 695, "column": 8 }, "end": { - "line": 709, + "line": 710, "column": 10 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 25730, - "end": 26376, + "start": 25780, + "end": 26426, "loc": { "start": { - "line": 694, + "line": 695, "column": 14 }, "end": { - "line": 709, + "line": 710, "column": 9 } }, "id": { "type": "Identifier", - "start": 25730, - "end": 25736, + "start": 25780, + "end": 25786, "loc": { "start": { - "line": 694, + "line": 695, "column": 14 }, "end": { - "line": 694, + "line": 695, "column": 20 }, "identifierName": "expand" @@ -111687,15 +111961,15 @@ }, "init": { "type": "ArrowFunctionExpression", - "start": 25739, - "end": 26376, + "start": 25789, + "end": 26426, "loc": { "start": { - "line": 694, + "line": 695, "column": 23 }, "end": { - "line": 709, + "line": 710, "column": 9 } }, @@ -111706,15 +111980,15 @@ "params": [ { "type": "Identifier", - "start": 25740, - "end": 25744, + "start": 25790, + "end": 25794, "loc": { "start": { - "line": 694, + "line": 695, "column": 24 }, "end": { - "line": 694, + "line": 695, "column": 28 }, "identifierName": "node" @@ -111723,15 +111997,15 @@ }, { "type": "Identifier", - "start": 25746, - "end": 25756, + "start": 25796, + "end": 25806, "loc": { "start": { - "line": 694, + "line": 695, "column": 30 }, "end": { - "line": 694, + "line": 695, "column": 40 }, "identifierName": "countDepth" @@ -111741,58 +112015,58 @@ ], "body": { "type": "BlockStatement", - "start": 25761, - "end": 26376, + "start": 25811, + "end": 26426, "loc": { "start": { - "line": 694, + "line": 695, "column": 45 }, "end": { - "line": 709, + "line": 710, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 25775, - "end": 25840, + "start": 25825, + "end": 25890, "loc": { "start": { - "line": 695, + "line": 696, "column": 12 }, "end": { - "line": 697, + "line": 698, "column": 13 } }, "test": { "type": "BinaryExpression", - "start": 25779, - "end": 25799, + "start": 25829, + "end": 25849, "loc": { "start": { - "line": 695, + "line": 696, "column": 16 }, "end": { - "line": 695, + "line": 696, "column": 36 } }, "left": { "type": "Identifier", - "start": 25779, - "end": 25789, + "start": 25829, + "end": 25839, "loc": { "start": { - "line": 695, + "line": 696, "column": 16 }, "end": { - "line": 695, + "line": 696, "column": 26 }, "identifierName": "countDepth" @@ -111802,15 +112076,15 @@ "operator": "===", "right": { "type": "Identifier", - "start": 25794, - "end": 25799, + "start": 25844, + "end": 25849, "loc": { "start": { - "line": 695, + "line": 696, "column": 31 }, "end": { - "line": 695, + "line": 696, "column": 36 }, "identifierName": "depth" @@ -111820,30 +112094,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 25801, - "end": 25840, + "start": 25851, + "end": 25890, "loc": { "start": { - "line": 695, + "line": 696, "column": 38 }, "end": { - "line": 697, + "line": 698, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 25819, - "end": 25826, + "start": 25869, + "end": 25876, "loc": { "start": { - "line": 696, + "line": 697, "column": 16 }, "end": { - "line": 696, + "line": 697, "column": 23 } }, @@ -111856,44 +112130,44 @@ }, { "type": "VariableDeclaration", - "start": 25853, - "end": 25880, + "start": 25903, + "end": 25930, "loc": { "start": { - "line": 698, + "line": 699, "column": 12 }, "end": { - "line": 698, + "line": 699, "column": 39 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 25859, - "end": 25879, + "start": 25909, + "end": 25929, "loc": { "start": { - "line": 698, + "line": 699, "column": 18 }, "end": { - "line": 698, + "line": 699, "column": 38 } }, "id": { "type": "Identifier", - "start": 25859, - "end": 25865, + "start": 25909, + "end": 25915, "loc": { "start": { - "line": 698, + "line": 699, "column": 18 }, "end": { - "line": 698, + "line": 699, "column": 24 }, "identifierName": "nodeId" @@ -111902,29 +112176,29 @@ }, "init": { "type": "MemberExpression", - "start": 25868, - "end": 25879, + "start": 25918, + "end": 25929, "loc": { "start": { - "line": 698, + "line": 699, "column": 27 }, "end": { - "line": 698, + "line": 699, "column": 38 } }, "object": { "type": "Identifier", - "start": 25868, - "end": 25872, + "start": 25918, + "end": 25922, "loc": { "start": { - "line": 698, + "line": 699, "column": 27 }, "end": { - "line": 698, + "line": 699, "column": 31 }, "identifierName": "node" @@ -111933,15 +112207,15 @@ }, "property": { "type": "Identifier", - "start": 25873, - "end": 25879, + "start": 25923, + "end": 25929, "loc": { "start": { - "line": 698, + "line": 699, "column": 32 }, "end": { - "line": 698, + "line": 699, "column": 38 }, "identifierName": "nodeId" @@ -111956,44 +112230,44 @@ }, { "type": "VariableDeclaration", - "start": 25893, - "end": 25936, + "start": 25943, + "end": 25986, "loc": { "start": { - "line": 699, + "line": 700, "column": 12 }, "end": { - "line": 699, + "line": 700, "column": 55 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 25899, - "end": 25935, + "start": 25949, + "end": 25985, "loc": { "start": { - "line": 699, + "line": 700, "column": 18 }, "end": { - "line": 699, + "line": 700, "column": 54 } }, "id": { "type": "Identifier", - "start": 25899, - "end": 25914, + "start": 25949, + "end": 25964, "loc": { "start": { - "line": 699, + "line": 700, "column": 18 }, "end": { - "line": 699, + "line": 700, "column": 33 }, "identifierName": "switchElementId" @@ -112002,29 +112276,29 @@ }, "init": { "type": "BinaryExpression", - "start": 25917, - "end": 25935, + "start": 25967, + "end": 25985, "loc": { "start": { - "line": 699, + "line": 700, "column": 36 }, "end": { - "line": 699, + "line": 700, "column": 54 } }, "left": { "type": "StringLiteral", - "start": 25917, - "end": 25926, + "start": 25967, + "end": 25976, "loc": { "start": { - "line": 699, + "line": 700, "column": 36 }, "end": { - "line": 699, + "line": 700, "column": 45 } }, @@ -112037,15 +112311,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 25929, - "end": 25935, + "start": 25979, + "end": 25985, "loc": { "start": { - "line": 699, + "line": 700, "column": 48 }, "end": { - "line": 699, + "line": 700, "column": 54 }, "identifierName": "nodeId" @@ -112059,44 +112333,44 @@ }, { "type": "VariableDeclaration", - "start": 25949, - "end": 26012, + "start": 25999, + "end": 26062, "loc": { "start": { - "line": 700, + "line": 701, "column": 12 }, "end": { - "line": 700, + "line": 701, "column": 75 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 25955, - "end": 26011, + "start": 26005, + "end": 26061, "loc": { "start": { - "line": 700, + "line": 701, "column": 18 }, "end": { - "line": 700, + "line": 701, "column": 74 } }, "id": { "type": "Identifier", - "start": 25955, - "end": 25968, + "start": 26005, + "end": 26018, "loc": { "start": { - "line": 700, + "line": 701, "column": 18 }, "end": { - "line": 700, + "line": 701, "column": 31 }, "identifierName": "switchElement" @@ -112105,43 +112379,43 @@ }, "init": { "type": "CallExpression", - "start": 25971, - "end": 26011, + "start": 26021, + "end": 26061, "loc": { "start": { - "line": 700, + "line": 701, "column": 34 }, "end": { - "line": 700, + "line": 701, "column": 74 } }, "callee": { "type": "MemberExpression", - "start": 25971, - "end": 25994, + "start": 26021, + "end": 26044, "loc": { "start": { - "line": 700, + "line": 701, "column": 34 }, "end": { - "line": 700, + "line": 701, "column": 57 } }, "object": { "type": "Identifier", - "start": 25971, - "end": 25979, + "start": 26021, + "end": 26029, "loc": { "start": { - "line": 700, + "line": 701, "column": 34 }, "end": { - "line": 700, + "line": 701, "column": 42 }, "identifierName": "document" @@ -112150,15 +112424,15 @@ }, "property": { "type": "Identifier", - "start": 25980, - "end": 25994, + "start": 26030, + "end": 26044, "loc": { "start": { - "line": 700, + "line": 701, "column": 43 }, "end": { - "line": 700, + "line": 701, "column": 57 }, "identifierName": "getElementById" @@ -112170,15 +112444,15 @@ "arguments": [ { "type": "Identifier", - "start": 25995, - "end": 26010, + "start": 26045, + "end": 26060, "loc": { "start": { - "line": 700, + "line": 701, "column": 58 }, "end": { - "line": 700, + "line": 701, "column": 73 }, "identifierName": "switchElementId" @@ -112193,29 +112467,29 @@ }, { "type": "IfStatement", - "start": 26025, - "end": 26366, + "start": 26075, + "end": 26416, "loc": { "start": { - "line": 701, + "line": 702, "column": 12 }, "end": { - "line": 708, + "line": 709, "column": 13 } }, "test": { "type": "Identifier", - "start": 26029, - "end": 26042, + "start": 26079, + "end": 26092, "loc": { "start": { - "line": 701, + "line": 702, "column": 16 }, "end": { - "line": 701, + "line": 702, "column": 29 }, "identifierName": "switchElement" @@ -112224,87 +112498,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 26044, - "end": 26366, + "start": 26094, + "end": 26416, "loc": { "start": { - "line": 701, + "line": 702, "column": 31 }, "end": { - "line": 708, + "line": 709, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 26062, - "end": 26103, + "start": 26112, + "end": 26153, "loc": { "start": { - "line": 702, + "line": 703, "column": 16 }, "end": { - "line": 702, + "line": 703, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 26062, - "end": 26102, + "start": 26112, + "end": 26152, "loc": { "start": { - "line": 702, + "line": 703, "column": 16 }, "end": { - "line": 702, + "line": 703, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 26062, - "end": 26087, + "start": 26112, + "end": 26137, "loc": { "start": { - "line": 702, + "line": 703, "column": 16 }, "end": { - "line": 702, + "line": 703, "column": 41 } }, "object": { "type": "ThisExpression", - "start": 26062, - "end": 26066, + "start": 26112, + "end": 26116, "loc": { "start": { - "line": 702, + "line": 703, "column": 16 }, "end": { - "line": 702, + "line": 703, "column": 20 } } }, "property": { "type": "Identifier", - "start": 26067, - "end": 26087, + "start": 26117, + "end": 26137, "loc": { "start": { - "line": 702, + "line": 703, "column": 21 }, "end": { - "line": 702, + "line": 703, "column": 41 }, "identifierName": "_expandSwitchElement" @@ -112316,15 +112590,15 @@ "arguments": [ { "type": "Identifier", - "start": 26088, - "end": 26101, + "start": 26138, + "end": 26151, "loc": { "start": { - "line": 702, + "line": 703, "column": 42 }, "end": { - "line": 702, + "line": 703, "column": 55 }, "identifierName": "switchElement" @@ -112336,44 +112610,44 @@ }, { "type": "VariableDeclaration", - "start": 26120, - "end": 26153, + "start": 26170, + "end": 26203, "loc": { "start": { - "line": 703, + "line": 704, "column": 16 }, "end": { - "line": 703, + "line": 704, "column": 49 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26126, - "end": 26152, + "start": 26176, + "end": 26202, "loc": { "start": { - "line": 703, + "line": 704, "column": 22 }, "end": { - "line": 703, + "line": 704, "column": 48 } }, "id": { "type": "Identifier", - "start": 26126, - "end": 26136, + "start": 26176, + "end": 26186, "loc": { "start": { - "line": 703, + "line": 704, "column": 22 }, "end": { - "line": 703, + "line": 704, "column": 32 }, "identifierName": "childNodes" @@ -112382,29 +112656,29 @@ }, "init": { "type": "MemberExpression", - "start": 26139, - "end": 26152, + "start": 26189, + "end": 26202, "loc": { "start": { - "line": 703, + "line": 704, "column": 35 }, "end": { - "line": 703, + "line": 704, "column": 48 } }, "object": { "type": "Identifier", - "start": 26139, - "end": 26143, + "start": 26189, + "end": 26193, "loc": { "start": { - "line": 703, + "line": 704, "column": 35 }, "end": { - "line": 703, + "line": 704, "column": 39 }, "identifierName": "node" @@ -112413,15 +112687,15 @@ }, "property": { "type": "Identifier", - "start": 26144, - "end": 26152, + "start": 26194, + "end": 26202, "loc": { "start": { - "line": 703, + "line": 704, "column": 40 }, "end": { - "line": 703, + "line": 704, "column": 48 }, "identifierName": "children" @@ -112436,58 +112710,58 @@ }, { "type": "ForStatement", - "start": 26170, - "end": 26352, + "start": 26220, + "end": 26402, "loc": { "start": { - "line": 704, + "line": 705, "column": 16 }, "end": { - "line": 707, + "line": 708, "column": 17 } }, "init": { "type": "VariableDeclaration", - "start": 26175, - "end": 26209, + "start": 26225, + "end": 26259, "loc": { "start": { - "line": 704, + "line": 705, "column": 21 }, "end": { - "line": 704, + "line": 705, "column": 55 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26179, - "end": 26184, + "start": 26229, + "end": 26234, "loc": { "start": { - "line": 704, + "line": 705, "column": 25 }, "end": { - "line": 704, + "line": 705, "column": 30 } }, "id": { "type": "Identifier", - "start": 26179, - "end": 26180, + "start": 26229, + "end": 26230, "loc": { "start": { - "line": 704, + "line": 705, "column": 25 }, "end": { - "line": 704, + "line": 705, "column": 26 }, "identifierName": "i" @@ -112496,15 +112770,15 @@ }, "init": { "type": "NumericLiteral", - "start": 26183, - "end": 26184, + "start": 26233, + "end": 26234, "loc": { "start": { - "line": 704, + "line": 705, "column": 29 }, "end": { - "line": 704, + "line": 705, "column": 30 } }, @@ -112517,29 +112791,29 @@ }, { "type": "VariableDeclarator", - "start": 26186, - "end": 26209, + "start": 26236, + "end": 26259, "loc": { "start": { - "line": 704, + "line": 705, "column": 32 }, "end": { - "line": 704, + "line": 705, "column": 55 } }, "id": { "type": "Identifier", - "start": 26186, - "end": 26189, + "start": 26236, + "end": 26239, "loc": { "start": { - "line": 704, + "line": 705, "column": 32 }, "end": { - "line": 704, + "line": 705, "column": 35 }, "identifierName": "len" @@ -112548,29 +112822,29 @@ }, "init": { "type": "MemberExpression", - "start": 26192, - "end": 26209, + "start": 26242, + "end": 26259, "loc": { "start": { - "line": 704, + "line": 705, "column": 38 }, "end": { - "line": 704, + "line": 705, "column": 55 } }, "object": { "type": "Identifier", - "start": 26192, - "end": 26202, + "start": 26242, + "end": 26252, "loc": { "start": { - "line": 704, + "line": 705, "column": 38 }, "end": { - "line": 704, + "line": 705, "column": 48 }, "identifierName": "childNodes" @@ -112579,15 +112853,15 @@ }, "property": { "type": "Identifier", - "start": 26203, - "end": 26209, + "start": 26253, + "end": 26259, "loc": { "start": { - "line": 704, + "line": 705, "column": 49 }, "end": { - "line": 704, + "line": 705, "column": 55 }, "identifierName": "length" @@ -112602,29 +112876,29 @@ }, "test": { "type": "BinaryExpression", - "start": 26211, - "end": 26218, + "start": 26261, + "end": 26268, "loc": { "start": { - "line": 704, + "line": 705, "column": 57 }, "end": { - "line": 704, + "line": 705, "column": 64 } }, "left": { "type": "Identifier", - "start": 26211, - "end": 26212, + "start": 26261, + "end": 26262, "loc": { "start": { - "line": 704, + "line": 705, "column": 57 }, "end": { - "line": 704, + "line": 705, "column": 58 }, "identifierName": "i" @@ -112634,15 +112908,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 26215, - "end": 26218, + "start": 26265, + "end": 26268, "loc": { "start": { - "line": 704, + "line": 705, "column": 61 }, "end": { - "line": 704, + "line": 705, "column": 64 }, "identifierName": "len" @@ -112652,15 +112926,15 @@ }, "update": { "type": "UpdateExpression", - "start": 26220, - "end": 26223, + "start": 26270, + "end": 26273, "loc": { "start": { - "line": 704, + "line": 705, "column": 66 }, "end": { - "line": 704, + "line": 705, "column": 69 } }, @@ -112668,15 +112942,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 26220, - "end": 26221, + "start": 26270, + "end": 26271, "loc": { "start": { - "line": 704, + "line": 705, "column": 66 }, "end": { - "line": 704, + "line": 705, "column": 67 }, "identifierName": "i" @@ -112686,59 +112960,59 @@ }, "body": { "type": "BlockStatement", - "start": 26225, - "end": 26352, + "start": 26275, + "end": 26402, "loc": { "start": { - "line": 704, + "line": 705, "column": 71 }, "end": { - "line": 707, + "line": 708, "column": 17 } }, "body": [ { "type": "VariableDeclaration", - "start": 26247, - "end": 26279, + "start": 26297, + "end": 26329, "loc": { "start": { - "line": 705, + "line": 706, "column": 20 }, "end": { - "line": 705, + "line": 706, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26253, - "end": 26278, + "start": 26303, + "end": 26328, "loc": { "start": { - "line": 705, + "line": 706, "column": 26 }, "end": { - "line": 705, + "line": 706, "column": 51 } }, "id": { "type": "Identifier", - "start": 26253, - "end": 26262, + "start": 26303, + "end": 26312, "loc": { "start": { - "line": 705, + "line": 706, "column": 26 }, "end": { - "line": 705, + "line": 706, "column": 35 }, "identifierName": "childNode" @@ -112747,29 +113021,29 @@ }, "init": { "type": "MemberExpression", - "start": 26265, - "end": 26278, + "start": 26315, + "end": 26328, "loc": { "start": { - "line": 705, + "line": 706, "column": 38 }, "end": { - "line": 705, + "line": 706, "column": 51 } }, "object": { "type": "Identifier", - "start": 26265, - "end": 26275, + "start": 26315, + "end": 26325, "loc": { "start": { - "line": 705, + "line": 706, "column": 38 }, "end": { - "line": 705, + "line": 706, "column": 48 }, "identifierName": "childNodes" @@ -112778,15 +113052,15 @@ }, "property": { "type": "Identifier", - "start": 26276, - "end": 26277, + "start": 26326, + "end": 26327, "loc": { "start": { - "line": 705, + "line": 706, "column": 49 }, "end": { - "line": 705, + "line": 706, "column": 50 }, "identifierName": "i" @@ -112801,43 +113075,43 @@ }, { "type": "ExpressionStatement", - "start": 26300, - "end": 26334, + "start": 26350, + "end": 26384, "loc": { "start": { - "line": 706, + "line": 707, "column": 20 }, "end": { - "line": 706, + "line": 707, "column": 54 } }, "expression": { "type": "CallExpression", - "start": 26300, - "end": 26333, + "start": 26350, + "end": 26383, "loc": { "start": { - "line": 706, + "line": 707, "column": 20 }, "end": { - "line": 706, + "line": 707, "column": 53 } }, "callee": { "type": "Identifier", - "start": 26300, - "end": 26306, + "start": 26350, + "end": 26356, "loc": { "start": { - "line": 706, + "line": 707, "column": 20 }, "end": { - "line": 706, + "line": 707, "column": 26 }, "identifierName": "expand" @@ -112847,15 +113121,15 @@ "arguments": [ { "type": "Identifier", - "start": 26307, - "end": 26316, + "start": 26357, + "end": 26366, "loc": { "start": { - "line": 706, + "line": 707, "column": 27 }, "end": { - "line": 706, + "line": 707, "column": 36 }, "identifierName": "childNode" @@ -112864,29 +113138,29 @@ }, { "type": "BinaryExpression", - "start": 26318, - "end": 26332, + "start": 26368, + "end": 26382, "loc": { "start": { - "line": 706, + "line": 707, "column": 38 }, "end": { - "line": 706, + "line": 707, "column": 52 } }, "left": { "type": "Identifier", - "start": 26318, - "end": 26328, + "start": 26368, + "end": 26378, "loc": { "start": { - "line": 706, + "line": 707, "column": 38 }, "end": { - "line": 706, + "line": 707, "column": 48 }, "identifierName": "countDepth" @@ -112896,15 +113170,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 26331, - "end": 26332, + "start": 26381, + "end": 26382, "loc": { "start": { - "line": 706, + "line": 707, "column": 51 }, "end": { - "line": 706, + "line": 707, "column": 52 } }, @@ -112937,58 +113211,58 @@ }, { "type": "ForStatement", - "start": 26386, - "end": 26539, + "start": 26436, + "end": 26589, "loc": { "start": { - "line": 710, + "line": 711, "column": 8 }, "end": { - "line": 713, + "line": 714, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 26391, - "end": 26430, + "start": 26441, + "end": 26480, "loc": { "start": { - "line": 710, + "line": 711, "column": 13 }, "end": { - "line": 710, + "line": 711, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26395, - "end": 26400, + "start": 26445, + "end": 26450, "loc": { "start": { - "line": 710, + "line": 711, "column": 17 }, "end": { - "line": 710, + "line": 711, "column": 22 } }, "id": { "type": "Identifier", - "start": 26395, - "end": 26396, + "start": 26445, + "end": 26446, "loc": { "start": { - "line": 710, + "line": 711, "column": 17 }, "end": { - "line": 710, + "line": 711, "column": 18 }, "identifierName": "i" @@ -112997,15 +113271,15 @@ }, "init": { "type": "NumericLiteral", - "start": 26399, - "end": 26400, + "start": 26449, + "end": 26450, "loc": { "start": { - "line": 710, + "line": 711, "column": 21 }, "end": { - "line": 710, + "line": 711, "column": 22 } }, @@ -113018,29 +113292,29 @@ }, { "type": "VariableDeclarator", - "start": 26402, - "end": 26430, + "start": 26452, + "end": 26480, "loc": { "start": { - "line": 710, + "line": 711, "column": 24 }, "end": { - "line": 710, + "line": 711, "column": 52 } }, "id": { "type": "Identifier", - "start": 26402, - "end": 26405, + "start": 26452, + "end": 26455, "loc": { "start": { - "line": 710, + "line": 711, "column": 24 }, "end": { - "line": 710, + "line": 711, "column": 27 }, "identifierName": "len" @@ -113049,58 +113323,58 @@ }, "init": { "type": "MemberExpression", - "start": 26408, - "end": 26430, + "start": 26458, + "end": 26480, "loc": { "start": { - "line": 710, + "line": 711, "column": 30 }, "end": { - "line": 710, + "line": 711, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 26408, - "end": 26423, + "start": 26458, + "end": 26473, "loc": { "start": { - "line": 710, + "line": 711, "column": 30 }, "end": { - "line": 710, + "line": 711, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 26408, - "end": 26412, + "start": 26458, + "end": 26462, "loc": { "start": { - "line": 710, + "line": 711, "column": 30 }, "end": { - "line": 710, + "line": 711, "column": 34 } } }, "property": { "type": "Identifier", - "start": 26413, - "end": 26423, + "start": 26463, + "end": 26473, "loc": { "start": { - "line": 710, + "line": 711, "column": 35 }, "end": { - "line": 710, + "line": 711, "column": 45 }, "identifierName": "_rootNodes" @@ -113111,15 +113385,15 @@ }, "property": { "type": "Identifier", - "start": 26424, - "end": 26430, + "start": 26474, + "end": 26480, "loc": { "start": { - "line": 710, + "line": 711, "column": 46 }, "end": { - "line": 710, + "line": 711, "column": 52 }, "identifierName": "length" @@ -113134,29 +113408,29 @@ }, "test": { "type": "BinaryExpression", - "start": 26432, - "end": 26439, + "start": 26482, + "end": 26489, "loc": { "start": { - "line": 710, + "line": 711, "column": 54 }, "end": { - "line": 710, + "line": 711, "column": 61 } }, "left": { "type": "Identifier", - "start": 26432, - "end": 26433, + "start": 26482, + "end": 26483, "loc": { "start": { - "line": 710, + "line": 711, "column": 54 }, "end": { - "line": 710, + "line": 711, "column": 55 }, "identifierName": "i" @@ -113166,15 +113440,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 26436, - "end": 26439, + "start": 26486, + "end": 26489, "loc": { "start": { - "line": 710, + "line": 711, "column": 58 }, "end": { - "line": 710, + "line": 711, "column": 61 }, "identifierName": "len" @@ -113184,15 +113458,15 @@ }, "update": { "type": "UpdateExpression", - "start": 26441, - "end": 26444, + "start": 26491, + "end": 26494, "loc": { "start": { - "line": 710, + "line": 711, "column": 63 }, "end": { - "line": 710, + "line": 711, "column": 66 } }, @@ -113200,15 +113474,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 26441, - "end": 26442, + "start": 26491, + "end": 26492, "loc": { "start": { - "line": 710, + "line": 711, "column": 63 }, "end": { - "line": 710, + "line": 711, "column": 64 }, "identifierName": "i" @@ -113218,59 +113492,59 @@ }, "body": { "type": "BlockStatement", - "start": 26446, - "end": 26539, + "start": 26496, + "end": 26589, "loc": { "start": { - "line": 710, + "line": 711, "column": 68 }, "end": { - "line": 713, + "line": 714, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 26460, - "end": 26496, + "start": 26510, + "end": 26546, "loc": { "start": { - "line": 711, + "line": 712, "column": 12 }, "end": { - "line": 711, + "line": 712, "column": 48 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26466, - "end": 26495, + "start": 26516, + "end": 26545, "loc": { "start": { - "line": 711, + "line": 712, "column": 18 }, "end": { - "line": 711, + "line": 712, "column": 47 } }, "id": { "type": "Identifier", - "start": 26466, - "end": 26474, + "start": 26516, + "end": 26524, "loc": { "start": { - "line": 711, + "line": 712, "column": 18 }, "end": { - "line": 711, + "line": 712, "column": 26 }, "identifierName": "rootNode" @@ -113279,58 +113553,58 @@ }, "init": { "type": "MemberExpression", - "start": 26477, - "end": 26495, + "start": 26527, + "end": 26545, "loc": { "start": { - "line": 711, + "line": 712, "column": 29 }, "end": { - "line": 711, + "line": 712, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 26477, - "end": 26492, + "start": 26527, + "end": 26542, "loc": { "start": { - "line": 711, + "line": 712, "column": 29 }, "end": { - "line": 711, + "line": 712, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 26477, - "end": 26481, + "start": 26527, + "end": 26531, "loc": { "start": { - "line": 711, + "line": 712, "column": 29 }, "end": { - "line": 711, + "line": 712, "column": 33 } } }, "property": { "type": "Identifier", - "start": 26482, - "end": 26492, + "start": 26532, + "end": 26542, "loc": { "start": { - "line": 711, + "line": 712, "column": 34 }, "end": { - "line": 711, + "line": 712, "column": 44 }, "identifierName": "_rootNodes" @@ -113341,15 +113615,15 @@ }, "property": { "type": "Identifier", - "start": 26493, - "end": 26494, + "start": 26543, + "end": 26544, "loc": { "start": { - "line": 711, + "line": 712, "column": 45 }, "end": { - "line": 711, + "line": 712, "column": 46 }, "identifierName": "i" @@ -113364,43 +113638,43 @@ }, { "type": "ExpressionStatement", - "start": 26509, - "end": 26529, + "start": 26559, + "end": 26579, "loc": { "start": { - "line": 712, + "line": 713, "column": 12 }, "end": { - "line": 712, + "line": 713, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 26509, - "end": 26528, + "start": 26559, + "end": 26578, "loc": { "start": { - "line": 712, + "line": 713, "column": 12 }, "end": { - "line": 712, + "line": 713, "column": 31 } }, "callee": { "type": "Identifier", - "start": 26509, - "end": 26515, + "start": 26559, + "end": 26565, "loc": { "start": { - "line": 712, + "line": 713, "column": 12 }, "end": { - "line": 712, + "line": 713, "column": 18 }, "identifierName": "expand" @@ -113410,15 +113684,15 @@ "arguments": [ { "type": "Identifier", - "start": 26516, - "end": 26524, + "start": 26566, + "end": 26574, "loc": { "start": { - "line": 712, + "line": 713, "column": 19 }, "end": { - "line": 712, + "line": 713, "column": 27 }, "identifierName": "rootNode" @@ -113427,15 +113701,15 @@ }, { "type": "NumericLiteral", - "start": 26526, - "end": 26527, + "start": 26576, + "end": 26577, "loc": { "start": { - "line": 712, + "line": 713, "column": 29 }, "end": { - "line": 712, + "line": 713, "column": 30 } }, @@ -113460,15 +113734,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n * @param depth\n ", - "start": 25641, - "end": 25688, + "start": 25691, + "end": 25738, "loc": { "start": { - "line": 689, + "line": 690, "column": 4 }, "end": { - "line": 692, + "line": 693, "column": 7 } } @@ -113478,15 +113752,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 26551, - "end": 26578, + "start": 26601, + "end": 26628, "loc": { "start": { - "line": 716, + "line": 717, "column": 4 }, "end": { - "line": 718, + "line": 719, "column": 7 } } @@ -113495,15 +113769,15 @@ }, { "type": "ClassMethod", - "start": 26583, - "end": 26820, + "start": 26633, + "end": 26870, "loc": { "start": { - "line": 719, + "line": 720, "column": 4 }, "end": { - "line": 725, + "line": 726, "column": 5 } }, @@ -113511,15 +113785,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 26583, - "end": 26591, + "start": 26633, + "end": 26641, "loc": { "start": { - "line": 719, + "line": 720, "column": 4 }, "end": { - "line": 719, + "line": 720, "column": 12 }, "identifierName": "collapse" @@ -113535,73 +113809,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 26594, - "end": 26820, + "start": 26644, + "end": 26870, "loc": { "start": { - "line": 719, + "line": 720, "column": 15 }, "end": { - "line": 725, + "line": 726, "column": 5 } }, "body": [ { "type": "ForStatement", - "start": 26604, - "end": 26814, + "start": 26654, + "end": 26864, "loc": { "start": { - "line": 720, + "line": 721, "column": 8 }, "end": { - "line": 724, + "line": 725, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 26609, - "end": 26648, + "start": 26659, + "end": 26698, "loc": { "start": { - "line": 720, + "line": 721, "column": 13 }, "end": { - "line": 720, + "line": 721, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26613, - "end": 26618, + "start": 26663, + "end": 26668, "loc": { "start": { - "line": 720, + "line": 721, "column": 17 }, "end": { - "line": 720, + "line": 721, "column": 22 } }, "id": { "type": "Identifier", - "start": 26613, - "end": 26614, + "start": 26663, + "end": 26664, "loc": { "start": { - "line": 720, + "line": 721, "column": 17 }, "end": { - "line": 720, + "line": 721, "column": 18 }, "identifierName": "i" @@ -113610,15 +113884,15 @@ }, "init": { "type": "NumericLiteral", - "start": 26617, - "end": 26618, + "start": 26667, + "end": 26668, "loc": { "start": { - "line": 720, + "line": 721, "column": 21 }, "end": { - "line": 720, + "line": 721, "column": 22 } }, @@ -113631,29 +113905,29 @@ }, { "type": "VariableDeclarator", - "start": 26620, - "end": 26648, + "start": 26670, + "end": 26698, "loc": { "start": { - "line": 720, + "line": 721, "column": 24 }, "end": { - "line": 720, + "line": 721, "column": 52 } }, "id": { "type": "Identifier", - "start": 26620, - "end": 26623, + "start": 26670, + "end": 26673, "loc": { "start": { - "line": 720, + "line": 721, "column": 24 }, "end": { - "line": 720, + "line": 721, "column": 27 }, "identifierName": "len" @@ -113662,58 +113936,58 @@ }, "init": { "type": "MemberExpression", - "start": 26626, - "end": 26648, + "start": 26676, + "end": 26698, "loc": { "start": { - "line": 720, + "line": 721, "column": 30 }, "end": { - "line": 720, + "line": 721, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 26626, - "end": 26641, + "start": 26676, + "end": 26691, "loc": { "start": { - "line": 720, + "line": 721, "column": 30 }, "end": { - "line": 720, + "line": 721, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 26626, - "end": 26630, + "start": 26676, + "end": 26680, "loc": { "start": { - "line": 720, + "line": 721, "column": 30 }, "end": { - "line": 720, + "line": 721, "column": 34 } } }, "property": { "type": "Identifier", - "start": 26631, - "end": 26641, + "start": 26681, + "end": 26691, "loc": { "start": { - "line": 720, + "line": 721, "column": 35 }, "end": { - "line": 720, + "line": 721, "column": 45 }, "identifierName": "_rootNodes" @@ -113724,15 +113998,15 @@ }, "property": { "type": "Identifier", - "start": 26642, - "end": 26648, + "start": 26692, + "end": 26698, "loc": { "start": { - "line": 720, + "line": 721, "column": 46 }, "end": { - "line": 720, + "line": 721, "column": 52 }, "identifierName": "length" @@ -113747,29 +114021,29 @@ }, "test": { "type": "BinaryExpression", - "start": 26650, - "end": 26657, + "start": 26700, + "end": 26707, "loc": { "start": { - "line": 720, + "line": 721, "column": 54 }, "end": { - "line": 720, + "line": 721, "column": 61 } }, "left": { "type": "Identifier", - "start": 26650, - "end": 26651, + "start": 26700, + "end": 26701, "loc": { "start": { - "line": 720, + "line": 721, "column": 54 }, "end": { - "line": 720, + "line": 721, "column": 55 }, "identifierName": "i" @@ -113779,15 +114053,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 26654, - "end": 26657, + "start": 26704, + "end": 26707, "loc": { "start": { - "line": 720, + "line": 721, "column": 58 }, "end": { - "line": 720, + "line": 721, "column": 61 }, "identifierName": "len" @@ -113797,15 +114071,15 @@ }, "update": { "type": "UpdateExpression", - "start": 26659, - "end": 26662, + "start": 26709, + "end": 26712, "loc": { "start": { - "line": 720, + "line": 721, "column": 63 }, "end": { - "line": 720, + "line": 721, "column": 66 } }, @@ -113813,15 +114087,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 26659, - "end": 26660, + "start": 26709, + "end": 26710, "loc": { "start": { - "line": 720, + "line": 721, "column": 63 }, "end": { - "line": 720, + "line": 721, "column": 64 }, "identifierName": "i" @@ -113831,59 +114105,59 @@ }, "body": { "type": "BlockStatement", - "start": 26664, - "end": 26814, + "start": 26714, + "end": 26864, "loc": { "start": { - "line": 720, + "line": 721, "column": 68 }, "end": { - "line": 724, + "line": 725, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 26678, - "end": 26714, + "start": 26728, + "end": 26764, "loc": { "start": { - "line": 721, + "line": 722, "column": 12 }, "end": { - "line": 721, + "line": 722, "column": 48 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26684, - "end": 26713, + "start": 26734, + "end": 26763, "loc": { "start": { - "line": 721, + "line": 722, "column": 18 }, "end": { - "line": 721, + "line": 722, "column": 47 } }, "id": { "type": "Identifier", - "start": 26684, - "end": 26692, + "start": 26734, + "end": 26742, "loc": { "start": { - "line": 721, + "line": 722, "column": 18 }, "end": { - "line": 721, + "line": 722, "column": 26 }, "identifierName": "rootNode" @@ -113892,58 +114166,58 @@ }, "init": { "type": "MemberExpression", - "start": 26695, - "end": 26713, + "start": 26745, + "end": 26763, "loc": { "start": { - "line": 721, + "line": 722, "column": 29 }, "end": { - "line": 721, + "line": 722, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 26695, - "end": 26710, + "start": 26745, + "end": 26760, "loc": { "start": { - "line": 721, + "line": 722, "column": 29 }, "end": { - "line": 721, + "line": 722, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 26695, - "end": 26699, + "start": 26745, + "end": 26749, "loc": { "start": { - "line": 721, + "line": 722, "column": 29 }, "end": { - "line": 721, + "line": 722, "column": 33 } } }, "property": { "type": "Identifier", - "start": 26700, - "end": 26710, + "start": 26750, + "end": 26760, "loc": { "start": { - "line": 721, + "line": 722, "column": 34 }, "end": { - "line": 721, + "line": 722, "column": 44 }, "identifierName": "_rootNodes" @@ -113954,15 +114228,15 @@ }, "property": { "type": "Identifier", - "start": 26711, - "end": 26712, + "start": 26761, + "end": 26762, "loc": { "start": { - "line": 721, + "line": 722, "column": 45 }, "end": { - "line": 721, + "line": 722, "column": 46 }, "identifierName": "i" @@ -113977,44 +114251,44 @@ }, { "type": "VariableDeclaration", - "start": 26727, - "end": 26762, + "start": 26777, + "end": 26812, "loc": { "start": { - "line": 722, + "line": 723, "column": 12 }, "end": { - "line": 722, + "line": 723, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 26733, - "end": 26761, + "start": 26783, + "end": 26811, "loc": { "start": { - "line": 722, + "line": 723, "column": 18 }, "end": { - "line": 722, + "line": 723, "column": 46 } }, "id": { "type": "Identifier", - "start": 26733, - "end": 26741, + "start": 26783, + "end": 26791, "loc": { "start": { - "line": 722, + "line": 723, "column": 18 }, "end": { - "line": 722, + "line": 723, "column": 26 }, "identifierName": "objectId" @@ -114023,29 +114297,29 @@ }, "init": { "type": "MemberExpression", - "start": 26744, - "end": 26761, + "start": 26794, + "end": 26811, "loc": { "start": { - "line": 722, + "line": 723, "column": 29 }, "end": { - "line": 722, + "line": 723, "column": 46 } }, "object": { "type": "Identifier", - "start": 26744, - "end": 26752, + "start": 26794, + "end": 26802, "loc": { "start": { - "line": 722, + "line": 723, "column": 29 }, "end": { - "line": 722, + "line": 723, "column": 37 }, "identifierName": "rootNode" @@ -114054,15 +114328,15 @@ }, "property": { "type": "Identifier", - "start": 26753, - "end": 26761, + "start": 26803, + "end": 26811, "loc": { "start": { - "line": 722, + "line": 723, "column": 38 }, "end": { - "line": 722, + "line": 723, "column": 46 }, "identifierName": "objectId" @@ -114077,72 +114351,72 @@ }, { "type": "ExpressionStatement", - "start": 26775, - "end": 26804, + "start": 26825, + "end": 26854, "loc": { "start": { - "line": 723, + "line": 724, "column": 12 }, "end": { - "line": 723, + "line": 724, "column": 41 } }, "expression": { "type": "CallExpression", - "start": 26775, - "end": 26803, + "start": 26825, + "end": 26853, "loc": { "start": { - "line": 723, + "line": 724, "column": 12 }, "end": { - "line": 723, + "line": 724, "column": 40 } }, "callee": { "type": "MemberExpression", - "start": 26775, - "end": 26793, + "start": 26825, + "end": 26843, "loc": { "start": { - "line": 723, + "line": 724, "column": 12 }, "end": { - "line": 723, + "line": 724, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 26775, - "end": 26779, + "start": 26825, + "end": 26829, "loc": { "start": { - "line": 723, + "line": 724, "column": 12 }, "end": { - "line": 723, + "line": 724, "column": 16 } } }, "property": { "type": "Identifier", - "start": 26780, - "end": 26793, + "start": 26830, + "end": 26843, "loc": { "start": { - "line": 723, + "line": 724, "column": 17 }, "end": { - "line": 723, + "line": 724, "column": 30 }, "identifierName": "_collapseNode" @@ -114154,15 +114428,15 @@ "arguments": [ { "type": "Identifier", - "start": 26794, - "end": 26802, + "start": 26844, + "end": 26852, "loc": { "start": { - "line": 723, + "line": 724, "column": 31 }, "end": { - "line": 723, + "line": 724, "column": 39 }, "identifierName": "objectId" @@ -114184,15 +114458,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 26551, - "end": 26578, + "start": 26601, + "end": 26628, "loc": { "start": { - "line": 716, + "line": 717, "column": 4 }, "end": { - "line": 718, + "line": 719, "column": 7 } } @@ -114202,15 +114476,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n * @param objectId\n ", - "start": 26826, - "end": 26876, + "start": 26876, + "end": 26926, "loc": { "start": { - "line": 727, + "line": 728, "column": 4 }, "end": { - "line": 730, + "line": 731, "column": 7 } } @@ -114219,15 +114493,15 @@ }, { "type": "ClassMethod", - "start": 26881, - "end": 28362, + "start": 26931, + "end": 28412, "loc": { "start": { - "line": 731, + "line": 732, "column": 4 }, "end": { - "line": 768, + "line": 769, "column": 5 } }, @@ -114235,15 +114509,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 26881, - "end": 26889, + "start": 26931, + "end": 26939, "loc": { "start": { - "line": 731, + "line": 732, "column": 4 }, "end": { - "line": 731, + "line": 732, "column": 12 }, "identifierName": "showNode" @@ -114259,15 +114533,15 @@ "params": [ { "type": "Identifier", - "start": 26890, - "end": 26898, + "start": 26940, + "end": 26948, "loc": { "start": { - "line": 731, + "line": 732, "column": 13 }, "end": { - "line": 731, + "line": 732, "column": 21 }, "identifierName": "objectId" @@ -114277,73 +114551,73 @@ ], "body": { "type": "BlockStatement", - "start": 26900, - "end": 28362, + "start": 26950, + "end": 28412, "loc": { "start": { - "line": 731, + "line": 732, "column": 23 }, "end": { - "line": 768, + "line": 769, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 26910, - "end": 26985, + "start": 26960, + "end": 27035, "loc": { "start": { - "line": 732, + "line": 733, "column": 8 }, "end": { - "line": 734, + "line": 735, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 26914, - "end": 26941, + "start": 26964, + "end": 26991, "loc": { "start": { - "line": 732, + "line": 733, "column": 12 }, "end": { - "line": 732, + "line": 733, "column": 39 } }, "object": { "type": "ThisExpression", - "start": 26914, - "end": 26918, + "start": 26964, + "end": 26968, "loc": { "start": { - "line": 732, + "line": 733, "column": 12 }, "end": { - "line": 732, + "line": 733, "column": 16 } } }, "property": { "type": "Identifier", - "start": 26919, - "end": 26941, + "start": 26969, + "end": 26991, "loc": { "start": { - "line": 732, + "line": 733, "column": 17 }, "end": { - "line": 732, + "line": 733, "column": 39 }, "identifierName": "_showListItemElementId" @@ -114354,87 +114628,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 26943, - "end": 26985, + "start": 26993, + "end": 27035, "loc": { "start": { - "line": 732, + "line": 733, "column": 41 }, "end": { - "line": 734, + "line": 735, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 26957, - "end": 26975, + "start": 27007, + "end": 27025, "loc": { "start": { - "line": 733, + "line": 734, "column": 12 }, "end": { - "line": 733, + "line": 734, "column": 30 } }, "expression": { "type": "CallExpression", - "start": 26957, - "end": 26974, + "start": 27007, + "end": 27024, "loc": { "start": { - "line": 733, + "line": 734, "column": 12 }, "end": { - "line": 733, + "line": 734, "column": 29 } }, "callee": { "type": "MemberExpression", - "start": 26957, - "end": 26972, + "start": 27007, + "end": 27022, "loc": { "start": { - "line": 733, + "line": 734, "column": 12 }, "end": { - "line": 733, + "line": 734, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 26957, - "end": 26961, + "start": 27007, + "end": 27011, "loc": { "start": { - "line": 733, + "line": 734, "column": 12 }, "end": { - "line": 733, + "line": 734, "column": 16 } } }, "property": { "type": "Identifier", - "start": 26962, - "end": 26972, + "start": 27012, + "end": 27022, "loc": { "start": { - "line": 733, + "line": 734, "column": 17 }, "end": { - "line": 733, + "line": 734, "column": 27 }, "identifierName": "unShowNode" @@ -114453,44 +114727,44 @@ }, { "type": "VariableDeclaration", - "start": 26994, - "end": 27035, + "start": 27044, + "end": 27085, "loc": { "start": { - "line": 735, + "line": 736, "column": 8 }, "end": { - "line": 735, + "line": 736, "column": 49 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27000, - "end": 27034, + "start": 27050, + "end": 27084, "loc": { "start": { - "line": 735, + "line": 736, "column": 14 }, "end": { - "line": 735, + "line": 736, "column": 48 } }, "id": { "type": "Identifier", - "start": 27000, - "end": 27004, + "start": 27050, + "end": 27054, "loc": { "start": { - "line": 735, + "line": 736, "column": 14 }, "end": { - "line": 735, + "line": 736, "column": 18 }, "identifierName": "node" @@ -114499,58 +114773,58 @@ }, "init": { "type": "MemberExpression", - "start": 27007, - "end": 27034, + "start": 27057, + "end": 27084, "loc": { "start": { - "line": 735, + "line": 736, "column": 21 }, "end": { - "line": 735, + "line": 736, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 27007, - "end": 27024, + "start": 27057, + "end": 27074, "loc": { "start": { - "line": 735, + "line": 736, "column": 21 }, "end": { - "line": 735, + "line": 736, "column": 38 } }, "object": { "type": "ThisExpression", - "start": 27007, - "end": 27011, + "start": 27057, + "end": 27061, "loc": { "start": { - "line": 735, + "line": 736, "column": 21 }, "end": { - "line": 735, + "line": 736, "column": 25 } } }, "property": { "type": "Identifier", - "start": 27012, - "end": 27024, + "start": 27062, + "end": 27074, "loc": { "start": { - "line": 735, + "line": 736, "column": 26 }, "end": { - "line": 735, + "line": 736, "column": 38 }, "identifierName": "_objectNodes" @@ -114561,15 +114835,15 @@ }, "property": { "type": "Identifier", - "start": 27025, - "end": 27033, + "start": 27075, + "end": 27083, "loc": { "start": { - "line": 735, + "line": 736, "column": 39 }, "end": { - "line": 735, + "line": 736, "column": 47 }, "identifierName": "objectId" @@ -114584,29 +114858,29 @@ }, { "type": "IfStatement", - "start": 27044, - "end": 27164, + "start": 27094, + "end": 27214, "loc": { "start": { - "line": 736, + "line": 737, "column": 8 }, "end": { - "line": 738, + "line": 739, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 27048, - "end": 27053, + "start": 27098, + "end": 27103, "loc": { "start": { - "line": 736, + "line": 737, "column": 12 }, "end": { - "line": 736, + "line": 737, "column": 17 } }, @@ -114614,15 +114888,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 27049, - "end": 27053, + "start": 27099, + "end": 27103, "loc": { "start": { - "line": 736, + "line": 737, "column": 13 }, "end": { - "line": 736, + "line": 737, "column": 17 }, "identifierName": "node" @@ -114635,30 +114909,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 27055, - "end": 27164, + "start": 27105, + "end": 27214, "loc": { "start": { - "line": 736, + "line": 737, "column": 19 }, "end": { - "line": 738, + "line": 739, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 27069, - "end": 27076, + "start": 27119, + "end": 27126, "loc": { "start": { - "line": 737, + "line": 738, "column": 12 }, "end": { - "line": 737, + "line": 738, "column": 19 } }, @@ -114668,15 +114942,15 @@ { "type": "CommentLine", "value": " Node may not exist for the given object if (this._pruneEmptyNodes == true)", - "start": 27077, - "end": 27154, + "start": 27127, + "end": 27204, "loc": { "start": { - "line": 737, + "line": 738, "column": 20 }, "end": { - "line": 737, + "line": 738, "column": 97 } } @@ -114690,44 +114964,44 @@ }, { "type": "VariableDeclaration", - "start": 27173, - "end": 27200, + "start": 27223, + "end": 27250, "loc": { "start": { - "line": 739, + "line": 740, "column": 8 }, "end": { - "line": 739, + "line": 740, "column": 35 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27179, - "end": 27199, + "start": 27229, + "end": 27249, "loc": { "start": { - "line": 739, + "line": 740, "column": 14 }, "end": { - "line": 739, + "line": 740, "column": 34 } }, "id": { "type": "Identifier", - "start": 27179, - "end": 27185, + "start": 27229, + "end": 27235, "loc": { "start": { - "line": 739, + "line": 740, "column": 14 }, "end": { - "line": 739, + "line": 740, "column": 20 }, "identifierName": "nodeId" @@ -114736,29 +115010,29 @@ }, "init": { "type": "MemberExpression", - "start": 27188, - "end": 27199, + "start": 27238, + "end": 27249, "loc": { "start": { - "line": 739, + "line": 740, "column": 23 }, "end": { - "line": 739, + "line": 740, "column": 34 } }, "object": { "type": "Identifier", - "start": 27188, - "end": 27192, + "start": 27238, + "end": 27242, "loc": { "start": { - "line": 739, + "line": 740, "column": 23 }, "end": { - "line": 739, + "line": 740, "column": 27 }, "identifierName": "node" @@ -114767,15 +115041,15 @@ }, "property": { "type": "Identifier", - "start": 27193, - "end": 27199, + "start": 27243, + "end": 27249, "loc": { "start": { - "line": 739, + "line": 740, "column": 28 }, "end": { - "line": 739, + "line": 740, "column": 34 }, "identifierName": "nodeId" @@ -114790,44 +115064,44 @@ }, { "type": "VariableDeclaration", - "start": 27209, - "end": 27252, + "start": 27259, + "end": 27302, "loc": { "start": { - "line": 740, + "line": 741, "column": 8 }, "end": { - "line": 740, + "line": 741, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27215, - "end": 27251, + "start": 27265, + "end": 27301, "loc": { "start": { - "line": 740, + "line": 741, "column": 14 }, "end": { - "line": 740, + "line": 741, "column": 50 } }, "id": { "type": "Identifier", - "start": 27215, - "end": 27230, + "start": 27265, + "end": 27280, "loc": { "start": { - "line": 740, + "line": 741, "column": 14 }, "end": { - "line": 740, + "line": 741, "column": 29 }, "identifierName": "switchElementId" @@ -114836,29 +115110,29 @@ }, "init": { "type": "BinaryExpression", - "start": 27233, - "end": 27251, + "start": 27283, + "end": 27301, "loc": { "start": { - "line": 740, + "line": 741, "column": 32 }, "end": { - "line": 740, + "line": 741, "column": 50 } }, "left": { "type": "StringLiteral", - "start": 27233, - "end": 27242, + "start": 27283, + "end": 27292, "loc": { "start": { - "line": 740, + "line": 741, "column": 32 }, "end": { - "line": 740, + "line": 741, "column": 41 } }, @@ -114871,15 +115145,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 27245, - "end": 27251, + "start": 27295, + "end": 27301, "loc": { "start": { - "line": 740, + "line": 741, "column": 44 }, "end": { - "line": 740, + "line": 741, "column": 50 }, "identifierName": "nodeId" @@ -114893,44 +115167,44 @@ }, { "type": "VariableDeclaration", - "start": 27261, - "end": 27324, + "start": 27311, + "end": 27374, "loc": { "start": { - "line": 741, + "line": 742, "column": 8 }, "end": { - "line": 741, + "line": 742, "column": 71 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27267, - "end": 27323, + "start": 27317, + "end": 27373, "loc": { "start": { - "line": 741, + "line": 742, "column": 14 }, "end": { - "line": 741, + "line": 742, "column": 70 } }, "id": { "type": "Identifier", - "start": 27267, - "end": 27280, + "start": 27317, + "end": 27330, "loc": { "start": { - "line": 741, + "line": 742, "column": 14 }, "end": { - "line": 741, + "line": 742, "column": 27 }, "identifierName": "switchElement" @@ -114939,43 +115213,43 @@ }, "init": { "type": "CallExpression", - "start": 27283, - "end": 27323, + "start": 27333, + "end": 27373, "loc": { "start": { - "line": 741, + "line": 742, "column": 30 }, "end": { - "line": 741, + "line": 742, "column": 70 } }, "callee": { "type": "MemberExpression", - "start": 27283, - "end": 27306, + "start": 27333, + "end": 27356, "loc": { "start": { - "line": 741, + "line": 742, "column": 30 }, "end": { - "line": 741, + "line": 742, "column": 53 } }, "object": { "type": "Identifier", - "start": 27283, - "end": 27291, + "start": 27333, + "end": 27341, "loc": { "start": { - "line": 741, + "line": 742, "column": 30 }, "end": { - "line": 741, + "line": 742, "column": 38 }, "identifierName": "document" @@ -114984,15 +115258,15 @@ }, "property": { "type": "Identifier", - "start": 27292, - "end": 27306, + "start": 27342, + "end": 27356, "loc": { "start": { - "line": 741, + "line": 742, "column": 39 }, "end": { - "line": 741, + "line": 742, "column": 53 }, "identifierName": "getElementById" @@ -115004,15 +115278,15 @@ "arguments": [ { "type": "Identifier", - "start": 27307, - "end": 27322, + "start": 27357, + "end": 27372, "loc": { "start": { - "line": 741, + "line": 742, "column": 54 }, "end": { - "line": 741, + "line": 742, "column": 69 }, "identifierName": "switchElementId" @@ -115027,29 +115301,29 @@ }, { "type": "IfStatement", - "start": 27333, - "end": 27481, + "start": 27383, + "end": 27531, "loc": { "start": { - "line": 742, + "line": 743, "column": 8 }, "end": { - "line": 746, + "line": 747, "column": 9 } }, "test": { "type": "Identifier", - "start": 27337, - "end": 27350, + "start": 27387, + "end": 27400, "loc": { "start": { - "line": 742, + "line": 743, "column": 12 }, "end": { - "line": 742, + "line": 743, "column": 25 }, "identifierName": "switchElement" @@ -115058,87 +115332,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 27352, - "end": 27481, + "start": 27402, + "end": 27531, "loc": { "start": { - "line": 742, + "line": 743, "column": 27 }, "end": { - "line": 746, + "line": 747, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 27366, - "end": 27407, + "start": 27416, + "end": 27457, "loc": { "start": { - "line": 743, + "line": 744, "column": 12 }, "end": { - "line": 743, + "line": 744, "column": 53 } }, "expression": { "type": "CallExpression", - "start": 27366, - "end": 27406, + "start": 27416, + "end": 27456, "loc": { "start": { - "line": 743, + "line": 744, "column": 12 }, "end": { - "line": 743, + "line": 744, "column": 52 } }, "callee": { "type": "MemberExpression", - "start": 27366, - "end": 27391, + "start": 27416, + "end": 27441, "loc": { "start": { - "line": 743, + "line": 744, "column": 12 }, "end": { - "line": 743, + "line": 744, "column": 37 } }, "object": { "type": "ThisExpression", - "start": 27366, - "end": 27370, + "start": 27416, + "end": 27420, "loc": { "start": { - "line": 743, + "line": 744, "column": 12 }, "end": { - "line": 743, + "line": 744, "column": 16 } } }, "property": { "type": "Identifier", - "start": 27371, - "end": 27391, + "start": 27421, + "end": 27441, "loc": { "start": { - "line": 743, + "line": 744, "column": 17 }, "end": { - "line": 743, + "line": 744, "column": 37 }, "identifierName": "_expandSwitchElement" @@ -115150,15 +115424,15 @@ "arguments": [ { "type": "Identifier", - "start": 27392, - "end": 27405, + "start": 27442, + "end": 27455, "loc": { "start": { - "line": 743, + "line": 744, "column": 38 }, "end": { - "line": 743, + "line": 744, "column": 51 }, "identifierName": "switchElement" @@ -115170,57 +115444,57 @@ }, { "type": "ExpressionStatement", - "start": 27420, - "end": 27451, + "start": 27470, + "end": 27501, "loc": { "start": { - "line": 744, + "line": 745, "column": 12 }, "end": { - "line": 744, + "line": 745, "column": 43 } }, "expression": { "type": "CallExpression", - "start": 27420, - "end": 27450, + "start": 27470, + "end": 27500, "loc": { "start": { - "line": 744, + "line": 745, "column": 12 }, "end": { - "line": 744, + "line": 745, "column": 42 } }, "callee": { "type": "MemberExpression", - "start": 27420, - "end": 27448, + "start": 27470, + "end": 27498, "loc": { "start": { - "line": 744, + "line": 745, "column": 12 }, "end": { - "line": 744, + "line": 745, "column": 40 } }, "object": { "type": "Identifier", - "start": 27420, - "end": 27433, + "start": 27470, + "end": 27483, "loc": { "start": { - "line": 744, + "line": 745, "column": 12 }, "end": { - "line": 744, + "line": 745, "column": 25 }, "identifierName": "switchElement" @@ -115229,15 +115503,15 @@ }, "property": { "type": "Identifier", - "start": 27434, - "end": 27448, + "start": 27484, + "end": 27498, "loc": { "start": { - "line": 744, + "line": 745, "column": 26 }, "end": { - "line": 744, + "line": 745, "column": 40 }, "identifierName": "scrollIntoView" @@ -115251,15 +115525,15 @@ }, { "type": "ReturnStatement", - "start": 27464, - "end": 27471, + "start": 27514, + "end": 27521, "loc": { "start": { - "line": 745, + "line": 746, "column": 12 }, "end": { - "line": 745, + "line": 746, "column": 19 } }, @@ -115272,44 +115546,44 @@ }, { "type": "VariableDeclaration", - "start": 27490, - "end": 27506, + "start": 27540, + "end": 27556, "loc": { "start": { - "line": 747, + "line": 748, "column": 8 }, "end": { - "line": 747, + "line": 748, "column": 24 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27496, - "end": 27505, + "start": 27546, + "end": 27555, "loc": { "start": { - "line": 747, + "line": 748, "column": 14 }, "end": { - "line": 747, + "line": 748, "column": 23 } }, "id": { "type": "Identifier", - "start": 27496, - "end": 27500, + "start": 27546, + "end": 27550, "loc": { "start": { - "line": 747, + "line": 748, "column": 14 }, "end": { - "line": 747, + "line": 748, "column": 18 }, "identifierName": "path" @@ -115318,15 +115592,15 @@ }, "init": { "type": "ArrayExpression", - "start": 27503, - "end": 27505, + "start": 27553, + "end": 27555, "loc": { "start": { - "line": 747, + "line": 748, "column": 21 }, "end": { - "line": 747, + "line": 748, "column": 23 } }, @@ -115338,57 +115612,57 @@ }, { "type": "ExpressionStatement", - "start": 27515, - "end": 27534, + "start": 27565, + "end": 27584, "loc": { "start": { - "line": 748, + "line": 749, "column": 8 }, "end": { - "line": 748, + "line": 749, "column": 27 } }, "expression": { "type": "CallExpression", - "start": 27515, - "end": 27533, + "start": 27565, + "end": 27583, "loc": { "start": { - "line": 748, + "line": 749, "column": 8 }, "end": { - "line": 748, + "line": 749, "column": 26 } }, "callee": { "type": "MemberExpression", - "start": 27515, - "end": 27527, + "start": 27565, + "end": 27577, "loc": { "start": { - "line": 748, + "line": 749, "column": 8 }, "end": { - "line": 748, + "line": 749, "column": 20 } }, "object": { "type": "Identifier", - "start": 27515, - "end": 27519, + "start": 27565, + "end": 27569, "loc": { "start": { - "line": 748, + "line": 749, "column": 8 }, "end": { - "line": 748, + "line": 749, "column": 12 }, "identifierName": "path" @@ -115397,15 +115671,15 @@ }, "property": { "type": "Identifier", - "start": 27520, - "end": 27527, + "start": 27570, + "end": 27577, "loc": { "start": { - "line": 748, + "line": 749, "column": 13 }, "end": { - "line": 748, + "line": 749, "column": 20 }, "identifierName": "unshift" @@ -115417,15 +115691,15 @@ "arguments": [ { "type": "Identifier", - "start": 27528, - "end": 27532, + "start": 27578, + "end": 27582, "loc": { "start": { - "line": 748, + "line": 749, "column": 21 }, "end": { - "line": 748, + "line": 749, "column": 25 }, "identifierName": "node" @@ -115437,44 +115711,44 @@ }, { "type": "VariableDeclaration", - "start": 27543, - "end": 27568, + "start": 27593, + "end": 27618, "loc": { "start": { - "line": 749, + "line": 750, "column": 8 }, "end": { - "line": 749, + "line": 750, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27547, - "end": 27567, + "start": 27597, + "end": 27617, "loc": { "start": { - "line": 749, + "line": 750, "column": 12 }, "end": { - "line": 749, + "line": 750, "column": 32 } }, "id": { "type": "Identifier", - "start": 27547, - "end": 27553, + "start": 27597, + "end": 27603, "loc": { "start": { - "line": 749, + "line": 750, "column": 12 }, "end": { - "line": 749, + "line": 750, "column": 18 }, "identifierName": "parent" @@ -115483,29 +115757,29 @@ }, "init": { "type": "MemberExpression", - "start": 27556, - "end": 27567, + "start": 27606, + "end": 27617, "loc": { "start": { - "line": 749, + "line": 750, "column": 21 }, "end": { - "line": 749, + "line": 750, "column": 32 } }, "object": { "type": "Identifier", - "start": 27556, - "end": 27560, + "start": 27606, + "end": 27610, "loc": { "start": { - "line": 749, + "line": 750, "column": 21 }, "end": { - "line": 749, + "line": 750, "column": 25 }, "identifierName": "node" @@ -115514,15 +115788,15 @@ }, "property": { "type": "Identifier", - "start": 27561, - "end": 27567, + "start": 27611, + "end": 27617, "loc": { "start": { - "line": 749, + "line": 750, "column": 26 }, "end": { - "line": 749, + "line": 750, "column": 32 }, "identifierName": "parent" @@ -115537,29 +115811,29 @@ }, { "type": "WhileStatement", - "start": 27577, - "end": 27673, + "start": 27627, + "end": 27723, "loc": { "start": { - "line": 750, + "line": 751, "column": 8 }, "end": { - "line": 753, + "line": 754, "column": 9 } }, "test": { "type": "Identifier", - "start": 27584, - "end": 27590, + "start": 27634, + "end": 27640, "loc": { "start": { - "line": 750, + "line": 751, "column": 15 }, "end": { - "line": 750, + "line": 751, "column": 21 }, "identifierName": "parent" @@ -115568,72 +115842,72 @@ }, "body": { "type": "BlockStatement", - "start": 27592, - "end": 27673, + "start": 27642, + "end": 27723, "loc": { "start": { - "line": 750, + "line": 751, "column": 23 }, "end": { - "line": 753, + "line": 754, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 27606, - "end": 27627, + "start": 27656, + "end": 27677, "loc": { "start": { - "line": 751, + "line": 752, "column": 12 }, "end": { - "line": 751, + "line": 752, "column": 33 } }, "expression": { "type": "CallExpression", - "start": 27606, - "end": 27626, + "start": 27656, + "end": 27676, "loc": { "start": { - "line": 751, + "line": 752, "column": 12 }, "end": { - "line": 751, + "line": 752, "column": 32 } }, "callee": { "type": "MemberExpression", - "start": 27606, - "end": 27618, + "start": 27656, + "end": 27668, "loc": { "start": { - "line": 751, + "line": 752, "column": 12 }, "end": { - "line": 751, + "line": 752, "column": 24 } }, "object": { "type": "Identifier", - "start": 27606, - "end": 27610, + "start": 27656, + "end": 27660, "loc": { "start": { - "line": 751, + "line": 752, "column": 12 }, "end": { - "line": 751, + "line": 752, "column": 16 }, "identifierName": "path" @@ -115642,15 +115916,15 @@ }, "property": { "type": "Identifier", - "start": 27611, - "end": 27618, + "start": 27661, + "end": 27668, "loc": { "start": { - "line": 751, + "line": 752, "column": 17 }, "end": { - "line": 751, + "line": 752, "column": 24 }, "identifierName": "unshift" @@ -115662,15 +115936,15 @@ "arguments": [ { "type": "Identifier", - "start": 27619, - "end": 27625, + "start": 27669, + "end": 27675, "loc": { "start": { - "line": 751, + "line": 752, "column": 25 }, "end": { - "line": 751, + "line": 752, "column": 31 }, "identifierName": "parent" @@ -115682,44 +115956,44 @@ }, { "type": "ExpressionStatement", - "start": 27640, - "end": 27663, + "start": 27690, + "end": 27713, "loc": { "start": { - "line": 752, + "line": 753, "column": 12 }, "end": { - "line": 752, + "line": 753, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 27640, - "end": 27662, + "start": 27690, + "end": 27712, "loc": { "start": { - "line": 752, + "line": 753, "column": 12 }, "end": { - "line": 752, + "line": 753, "column": 34 } }, "operator": "=", "left": { "type": "Identifier", - "start": 27640, - "end": 27646, + "start": 27690, + "end": 27696, "loc": { "start": { - "line": 752, + "line": 753, "column": 12 }, "end": { - "line": 752, + "line": 753, "column": 18 }, "identifierName": "parent" @@ -115728,29 +116002,29 @@ }, "right": { "type": "MemberExpression", - "start": 27649, - "end": 27662, + "start": 27699, + "end": 27712, "loc": { "start": { - "line": 752, + "line": 753, "column": 21 }, "end": { - "line": 752, + "line": 753, "column": 34 } }, "object": { "type": "Identifier", - "start": 27649, - "end": 27655, + "start": 27699, + "end": 27705, "loc": { "start": { - "line": 752, + "line": 753, "column": 21 }, "end": { - "line": 752, + "line": 753, "column": 27 }, "identifierName": "parent" @@ -115759,15 +116033,15 @@ }, "property": { "type": "Identifier", - "start": 27656, - "end": 27662, + "start": 27706, + "end": 27712, "loc": { "start": { - "line": 752, + "line": 753, "column": 28 }, "end": { - "line": 752, + "line": 753, "column": 34 }, "identifierName": "parent" @@ -115784,58 +116058,58 @@ }, { "type": "ForStatement", - "start": 27682, - "end": 28053, + "start": 27732, + "end": 28103, "loc": { "start": { - "line": 754, + "line": 755, "column": 8 }, "end": { - "line": 762, + "line": 763, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 27687, - "end": 27715, + "start": 27737, + "end": 27765, "loc": { "start": { - "line": 754, + "line": 755, "column": 13 }, "end": { - "line": 754, + "line": 755, "column": 41 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27691, - "end": 27696, + "start": 27741, + "end": 27746, "loc": { "start": { - "line": 754, + "line": 755, "column": 17 }, "end": { - "line": 754, + "line": 755, "column": 22 } }, "id": { "type": "Identifier", - "start": 27691, - "end": 27692, + "start": 27741, + "end": 27742, "loc": { "start": { - "line": 754, + "line": 755, "column": 17 }, "end": { - "line": 754, + "line": 755, "column": 18 }, "identifierName": "i" @@ -115844,15 +116118,15 @@ }, "init": { "type": "NumericLiteral", - "start": 27695, - "end": 27696, + "start": 27745, + "end": 27746, "loc": { "start": { - "line": 754, + "line": 755, "column": 21 }, "end": { - "line": 754, + "line": 755, "column": 22 } }, @@ -115865,29 +116139,29 @@ }, { "type": "VariableDeclarator", - "start": 27698, - "end": 27715, + "start": 27748, + "end": 27765, "loc": { "start": { - "line": 754, + "line": 755, "column": 24 }, "end": { - "line": 754, + "line": 755, "column": 41 } }, "id": { "type": "Identifier", - "start": 27698, - "end": 27701, + "start": 27748, + "end": 27751, "loc": { "start": { - "line": 754, + "line": 755, "column": 24 }, "end": { - "line": 754, + "line": 755, "column": 27 }, "identifierName": "len" @@ -115896,29 +116170,29 @@ }, "init": { "type": "MemberExpression", - "start": 27704, - "end": 27715, + "start": 27754, + "end": 27765, "loc": { "start": { - "line": 754, + "line": 755, "column": 30 }, "end": { - "line": 754, + "line": 755, "column": 41 } }, "object": { "type": "Identifier", - "start": 27704, - "end": 27708, + "start": 27754, + "end": 27758, "loc": { "start": { - "line": 754, + "line": 755, "column": 30 }, "end": { - "line": 754, + "line": 755, "column": 34 }, "identifierName": "path" @@ -115927,15 +116201,15 @@ }, "property": { "type": "Identifier", - "start": 27709, - "end": 27715, + "start": 27759, + "end": 27765, "loc": { "start": { - "line": 754, + "line": 755, "column": 35 }, "end": { - "line": 754, + "line": 755, "column": 41 }, "identifierName": "length" @@ -115950,29 +116224,29 @@ }, "test": { "type": "BinaryExpression", - "start": 27717, - "end": 27724, + "start": 27767, + "end": 27774, "loc": { "start": { - "line": 754, + "line": 755, "column": 43 }, "end": { - "line": 754, + "line": 755, "column": 50 } }, "left": { "type": "Identifier", - "start": 27717, - "end": 27718, + "start": 27767, + "end": 27768, "loc": { "start": { - "line": 754, + "line": 755, "column": 43 }, "end": { - "line": 754, + "line": 755, "column": 44 }, "identifierName": "i" @@ -115982,15 +116256,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 27721, - "end": 27724, + "start": 27771, + "end": 27774, "loc": { "start": { - "line": 754, + "line": 755, "column": 47 }, "end": { - "line": 754, + "line": 755, "column": 50 }, "identifierName": "len" @@ -116000,15 +116274,15 @@ }, "update": { "type": "UpdateExpression", - "start": 27726, - "end": 27729, + "start": 27776, + "end": 27779, "loc": { "start": { - "line": 754, + "line": 755, "column": 52 }, "end": { - "line": 754, + "line": 755, "column": 55 } }, @@ -116016,15 +116290,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 27726, - "end": 27727, + "start": 27776, + "end": 27777, "loc": { "start": { - "line": 754, + "line": 755, "column": 52 }, "end": { - "line": 754, + "line": 755, "column": 53 }, "identifierName": "i" @@ -116034,59 +116308,59 @@ }, "body": { "type": "BlockStatement", - "start": 27731, - "end": 28053, + "start": 27781, + "end": 28103, "loc": { "start": { - "line": 754, + "line": 755, "column": 57 }, "end": { - "line": 762, + "line": 763, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 27745, - "end": 27766, + "start": 27795, + "end": 27816, "loc": { "start": { - "line": 755, + "line": 756, "column": 12 }, "end": { - "line": 755, + "line": 756, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27751, - "end": 27765, + "start": 27801, + "end": 27815, "loc": { "start": { - "line": 755, + "line": 756, "column": 18 }, "end": { - "line": 755, + "line": 756, "column": 32 } }, "id": { "type": "Identifier", - "start": 27751, - "end": 27755, + "start": 27801, + "end": 27805, "loc": { "start": { - "line": 755, + "line": 756, "column": 18 }, "end": { - "line": 755, + "line": 756, "column": 22 }, "identifierName": "node" @@ -116095,29 +116369,29 @@ }, "init": { "type": "MemberExpression", - "start": 27758, - "end": 27765, + "start": 27808, + "end": 27815, "loc": { "start": { - "line": 755, + "line": 756, "column": 25 }, "end": { - "line": 755, + "line": 756, "column": 32 } }, "object": { "type": "Identifier", - "start": 27758, - "end": 27762, + "start": 27808, + "end": 27812, "loc": { "start": { - "line": 755, + "line": 756, "column": 25 }, "end": { - "line": 755, + "line": 756, "column": 29 }, "identifierName": "path" @@ -116126,15 +116400,15 @@ }, "property": { "type": "Identifier", - "start": 27763, - "end": 27764, + "start": 27813, + "end": 27814, "loc": { "start": { - "line": 755, + "line": 756, "column": 30 }, "end": { - "line": 755, + "line": 756, "column": 31 }, "identifierName": "i" @@ -116149,44 +116423,44 @@ }, { "type": "VariableDeclaration", - "start": 27779, - "end": 27806, + "start": 27829, + "end": 27856, "loc": { "start": { - "line": 756, + "line": 757, "column": 12 }, "end": { - "line": 756, + "line": 757, "column": 39 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27785, - "end": 27805, + "start": 27835, + "end": 27855, "loc": { "start": { - "line": 756, + "line": 757, "column": 18 }, "end": { - "line": 756, + "line": 757, "column": 38 } }, "id": { "type": "Identifier", - "start": 27785, - "end": 27791, + "start": 27835, + "end": 27841, "loc": { "start": { - "line": 756, + "line": 757, "column": 18 }, "end": { - "line": 756, + "line": 757, "column": 24 }, "identifierName": "nodeId" @@ -116195,29 +116469,29 @@ }, "init": { "type": "MemberExpression", - "start": 27794, - "end": 27805, + "start": 27844, + "end": 27855, "loc": { "start": { - "line": 756, + "line": 757, "column": 27 }, "end": { - "line": 756, + "line": 757, "column": 38 } }, "object": { "type": "Identifier", - "start": 27794, - "end": 27798, + "start": 27844, + "end": 27848, "loc": { "start": { - "line": 756, + "line": 757, "column": 27 }, "end": { - "line": 756, + "line": 757, "column": 31 }, "identifierName": "node" @@ -116226,15 +116500,15 @@ }, "property": { "type": "Identifier", - "start": 27799, - "end": 27805, + "start": 27849, + "end": 27855, "loc": { "start": { - "line": 756, + "line": 757, "column": 32 }, "end": { - "line": 756, + "line": 757, "column": 38 }, "identifierName": "nodeId" @@ -116249,44 +116523,44 @@ }, { "type": "VariableDeclaration", - "start": 27819, - "end": 27862, + "start": 27869, + "end": 27912, "loc": { "start": { - "line": 757, + "line": 758, "column": 12 }, "end": { - "line": 757, + "line": 758, "column": 55 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27825, - "end": 27861, + "start": 27875, + "end": 27911, "loc": { "start": { - "line": 757, + "line": 758, "column": 18 }, "end": { - "line": 757, + "line": 758, "column": 54 } }, "id": { "type": "Identifier", - "start": 27825, - "end": 27840, + "start": 27875, + "end": 27890, "loc": { "start": { - "line": 757, + "line": 758, "column": 18 }, "end": { - "line": 757, + "line": 758, "column": 33 }, "identifierName": "switchElementId" @@ -116295,29 +116569,29 @@ }, "init": { "type": "BinaryExpression", - "start": 27843, - "end": 27861, + "start": 27893, + "end": 27911, "loc": { "start": { - "line": 757, + "line": 758, "column": 36 }, "end": { - "line": 757, + "line": 758, "column": 54 } }, "left": { "type": "StringLiteral", - "start": 27843, - "end": 27852, + "start": 27893, + "end": 27902, "loc": { "start": { - "line": 757, + "line": 758, "column": 36 }, "end": { - "line": 757, + "line": 758, "column": 45 } }, @@ -116330,15 +116604,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 27855, - "end": 27861, + "start": 27905, + "end": 27911, "loc": { "start": { - "line": 757, + "line": 758, "column": 48 }, "end": { - "line": 757, + "line": 758, "column": 54 }, "identifierName": "nodeId" @@ -116352,44 +116626,44 @@ }, { "type": "VariableDeclaration", - "start": 27875, - "end": 27938, + "start": 27925, + "end": 27988, "loc": { "start": { - "line": 758, + "line": 759, "column": 12 }, "end": { - "line": 758, + "line": 759, "column": 75 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 27881, - "end": 27937, + "start": 27931, + "end": 27987, "loc": { "start": { - "line": 758, + "line": 759, "column": 18 }, "end": { - "line": 758, + "line": 759, "column": 74 } }, "id": { "type": "Identifier", - "start": 27881, - "end": 27894, + "start": 27931, + "end": 27944, "loc": { "start": { - "line": 758, + "line": 759, "column": 18 }, "end": { - "line": 758, + "line": 759, "column": 31 }, "identifierName": "switchElement" @@ -116398,43 +116672,43 @@ }, "init": { "type": "CallExpression", - "start": 27897, - "end": 27937, + "start": 27947, + "end": 27987, "loc": { "start": { - "line": 758, + "line": 759, "column": 34 }, "end": { - "line": 758, + "line": 759, "column": 74 } }, "callee": { "type": "MemberExpression", - "start": 27897, - "end": 27920, + "start": 27947, + "end": 27970, "loc": { "start": { - "line": 758, + "line": 759, "column": 34 }, "end": { - "line": 758, + "line": 759, "column": 57 } }, "object": { "type": "Identifier", - "start": 27897, - "end": 27905, + "start": 27947, + "end": 27955, "loc": { "start": { - "line": 758, + "line": 759, "column": 34 }, "end": { - "line": 758, + "line": 759, "column": 42 }, "identifierName": "document" @@ -116443,15 +116717,15 @@ }, "property": { "type": "Identifier", - "start": 27906, - "end": 27920, + "start": 27956, + "end": 27970, "loc": { "start": { - "line": 758, + "line": 759, "column": 43 }, "end": { - "line": 758, + "line": 759, "column": 57 }, "identifierName": "getElementById" @@ -116463,15 +116737,15 @@ "arguments": [ { "type": "Identifier", - "start": 27921, - "end": 27936, + "start": 27971, + "end": 27986, "loc": { "start": { - "line": 758, + "line": 759, "column": 58 }, "end": { - "line": 758, + "line": 759, "column": 73 }, "identifierName": "switchElementId" @@ -116486,29 +116760,29 @@ }, { "type": "IfStatement", - "start": 27951, - "end": 28043, + "start": 28001, + "end": 28093, "loc": { "start": { - "line": 759, + "line": 760, "column": 12 }, "end": { - "line": 761, + "line": 762, "column": 13 } }, "test": { "type": "Identifier", - "start": 27955, - "end": 27968, + "start": 28005, + "end": 28018, "loc": { "start": { - "line": 759, + "line": 760, "column": 16 }, "end": { - "line": 759, + "line": 760, "column": 29 }, "identifierName": "switchElement" @@ -116517,87 +116791,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 27970, - "end": 28043, + "start": 28020, + "end": 28093, "loc": { "start": { - "line": 759, + "line": 760, "column": 31 }, "end": { - "line": 761, + "line": 762, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 27988, - "end": 28029, + "start": 28038, + "end": 28079, "loc": { "start": { - "line": 760, + "line": 761, "column": 16 }, "end": { - "line": 760, + "line": 761, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 27988, - "end": 28028, + "start": 28038, + "end": 28078, "loc": { "start": { - "line": 760, + "line": 761, "column": 16 }, "end": { - "line": 760, + "line": 761, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 27988, - "end": 28013, + "start": 28038, + "end": 28063, "loc": { "start": { - "line": 760, + "line": 761, "column": 16 }, "end": { - "line": 760, + "line": 761, "column": 41 } }, "object": { "type": "ThisExpression", - "start": 27988, - "end": 27992, + "start": 28038, + "end": 28042, "loc": { "start": { - "line": 760, + "line": 761, "column": 16 }, "end": { - "line": 760, + "line": 761, "column": 20 } } }, "property": { "type": "Identifier", - "start": 27993, - "end": 28013, + "start": 28043, + "end": 28063, "loc": { "start": { - "line": 760, + "line": 761, "column": 21 }, "end": { - "line": 760, + "line": 761, "column": 41 }, "identifierName": "_expandSwitchElement" @@ -116609,15 +116883,15 @@ "arguments": [ { "type": "Identifier", - "start": 28014, - "end": 28027, + "start": 28064, + "end": 28077, "loc": { "start": { - "line": 760, + "line": 761, "column": 42 }, "end": { - "line": 760, + "line": 761, "column": 55 }, "identifierName": "switchElement" @@ -116638,44 +116912,44 @@ }, { "type": "VariableDeclaration", - "start": 28062, - "end": 28105, + "start": 28112, + "end": 28155, "loc": { "start": { - "line": 763, + "line": 764, "column": 8 }, "end": { - "line": 763, + "line": 764, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 28068, - "end": 28104, + "start": 28118, + "end": 28154, "loc": { "start": { - "line": 763, + "line": 764, "column": 14 }, "end": { - "line": 763, + "line": 764, "column": 50 } }, "id": { "type": "Identifier", - "start": 28068, - "end": 28085, + "start": 28118, + "end": 28135, "loc": { "start": { - "line": 763, + "line": 764, "column": 14 }, "end": { - "line": 763, + "line": 764, "column": 31 }, "identifierName": "listItemElementId" @@ -116684,29 +116958,29 @@ }, "init": { "type": "BinaryExpression", - "start": 28088, - "end": 28104, + "start": 28138, + "end": 28154, "loc": { "start": { - "line": 763, + "line": 764, "column": 34 }, "end": { - "line": 763, + "line": 764, "column": 50 } }, "left": { "type": "StringLiteral", - "start": 28088, - "end": 28095, + "start": 28138, + "end": 28145, "loc": { "start": { - "line": 763, + "line": 764, "column": 34 }, "end": { - "line": 763, + "line": 764, "column": 41 } }, @@ -116719,15 +116993,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 28098, - "end": 28104, + "start": 28148, + "end": 28154, "loc": { "start": { - "line": 763, + "line": 764, "column": 44 }, "end": { - "line": 763, + "line": 764, "column": 50 }, "identifierName": "nodeId" @@ -116741,44 +117015,44 @@ }, { "type": "VariableDeclaration", - "start": 28114, - "end": 28181, + "start": 28164, + "end": 28231, "loc": { "start": { - "line": 764, + "line": 765, "column": 8 }, "end": { - "line": 764, + "line": 765, "column": 75 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 28120, - "end": 28180, + "start": 28170, + "end": 28230, "loc": { "start": { - "line": 764, + "line": 765, "column": 14 }, "end": { - "line": 764, + "line": 765, "column": 74 } }, "id": { "type": "Identifier", - "start": 28120, - "end": 28135, + "start": 28170, + "end": 28185, "loc": { "start": { - "line": 764, + "line": 765, "column": 14 }, "end": { - "line": 764, + "line": 765, "column": 29 }, "identifierName": "listItemElement" @@ -116787,43 +117061,43 @@ }, "init": { "type": "CallExpression", - "start": 28138, - "end": 28180, + "start": 28188, + "end": 28230, "loc": { "start": { - "line": 764, + "line": 765, "column": 32 }, "end": { - "line": 764, + "line": 765, "column": 74 } }, "callee": { "type": "MemberExpression", - "start": 28138, - "end": 28161, + "start": 28188, + "end": 28211, "loc": { "start": { - "line": 764, + "line": 765, "column": 32 }, "end": { - "line": 764, + "line": 765, "column": 55 } }, "object": { "type": "Identifier", - "start": 28138, - "end": 28146, + "start": 28188, + "end": 28196, "loc": { "start": { - "line": 764, + "line": 765, "column": 32 }, "end": { - "line": 764, + "line": 765, "column": 40 }, "identifierName": "document" @@ -116832,15 +117106,15 @@ }, "property": { "type": "Identifier", - "start": 28147, - "end": 28161, + "start": 28197, + "end": 28211, "loc": { "start": { - "line": 764, + "line": 765, "column": 41 }, "end": { - "line": 764, + "line": 765, "column": 55 }, "identifierName": "getElementById" @@ -116852,15 +117126,15 @@ "arguments": [ { "type": "Identifier", - "start": 28162, - "end": 28179, + "start": 28212, + "end": 28229, "loc": { "start": { - "line": 764, + "line": 765, "column": 56 }, "end": { - "line": 764, + "line": 765, "column": 73 }, "identifierName": "listItemElementId" @@ -116875,57 +117149,57 @@ }, { "type": "ExpressionStatement", - "start": 28190, - "end": 28240, + "start": 28240, + "end": 28290, "loc": { "start": { - "line": 765, + "line": 766, "column": 8 }, "end": { - "line": 765, + "line": 766, "column": 58 } }, "expression": { "type": "CallExpression", - "start": 28190, - "end": 28239, + "start": 28240, + "end": 28289, "loc": { "start": { - "line": 765, + "line": 766, "column": 8 }, "end": { - "line": 765, + "line": 766, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 28190, - "end": 28220, + "start": 28240, + "end": 28270, "loc": { "start": { - "line": 765, + "line": 766, "column": 8 }, "end": { - "line": 765, + "line": 766, "column": 38 } }, "object": { "type": "Identifier", - "start": 28190, - "end": 28205, + "start": 28240, + "end": 28255, "loc": { "start": { - "line": 765, + "line": 766, "column": 8 }, "end": { - "line": 765, + "line": 766, "column": 23 }, "identifierName": "listItemElement" @@ -116934,15 +117208,15 @@ }, "property": { "type": "Identifier", - "start": 28206, - "end": 28220, + "start": 28256, + "end": 28270, "loc": { "start": { - "line": 765, + "line": 766, "column": 24 }, "end": { - "line": 765, + "line": 766, "column": 38 }, "identifierName": "scrollIntoView" @@ -116954,30 +117228,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 28221, - "end": 28238, + "start": 28271, + "end": 28288, "loc": { "start": { - "line": 765, + "line": 766, "column": 39 }, "end": { - "line": 765, + "line": 766, "column": 56 } }, "properties": [ { "type": "ObjectProperty", - "start": 28222, - "end": 28237, + "start": 28272, + "end": 28287, "loc": { "start": { - "line": 765, + "line": 766, "column": 40 }, "end": { - "line": 765, + "line": 766, "column": 55 } }, @@ -116986,15 +117260,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 28222, - "end": 28227, + "start": 28272, + "end": 28277, "loc": { "start": { - "line": 765, + "line": 766, "column": 40 }, "end": { - "line": 765, + "line": 766, "column": 45 }, "identifierName": "block" @@ -117003,15 +117277,15 @@ }, "value": { "type": "StringLiteral", - "start": 28229, - "end": 28237, + "start": 28279, + "end": 28287, "loc": { "start": { - "line": 765, + "line": 766, "column": 47 }, "end": { - "line": 765, + "line": 766, "column": 55 } }, @@ -117029,71 +117303,71 @@ }, { "type": "ExpressionStatement", - "start": 28249, - "end": 28299, + "start": 28299, + "end": 28349, "loc": { "start": { - "line": 766, + "line": 767, "column": 8 }, "end": { - "line": 766, + "line": 767, "column": 58 } }, "expression": { "type": "CallExpression", - "start": 28249, - "end": 28298, + "start": 28299, + "end": 28348, "loc": { "start": { - "line": 766, + "line": 767, "column": 8 }, "end": { - "line": 766, + "line": 767, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 28249, - "end": 28278, + "start": 28299, + "end": 28328, "loc": { "start": { - "line": 766, + "line": 767, "column": 8 }, "end": { - "line": 766, + "line": 767, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 28249, - "end": 28274, + "start": 28299, + "end": 28324, "loc": { "start": { - "line": 766, + "line": 767, "column": 8 }, "end": { - "line": 766, + "line": 767, "column": 33 } }, "object": { "type": "Identifier", - "start": 28249, - "end": 28264, + "start": 28299, + "end": 28314, "loc": { "start": { - "line": 766, + "line": 767, "column": 8 }, "end": { - "line": 766, + "line": 767, "column": 23 }, "identifierName": "listItemElement" @@ -117102,15 +117376,15 @@ }, "property": { "type": "Identifier", - "start": 28265, - "end": 28274, + "start": 28315, + "end": 28324, "loc": { "start": { - "line": 766, + "line": 767, "column": 24 }, "end": { - "line": 766, + "line": 767, "column": 33 }, "identifierName": "classList" @@ -117121,15 +117395,15 @@ }, "property": { "type": "Identifier", - "start": 28275, - "end": 28278, + "start": 28325, + "end": 28328, "loc": { "start": { - "line": 766, + "line": 767, "column": 34 }, "end": { - "line": 766, + "line": 767, "column": 37 }, "identifierName": "add" @@ -117141,15 +117415,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 28279, - "end": 28297, + "start": 28329, + "end": 28347, "loc": { "start": { - "line": 766, + "line": 767, "column": 38 }, "end": { - "line": 766, + "line": 767, "column": 56 } }, @@ -117164,73 +117438,73 @@ }, { "type": "ExpressionStatement", - "start": 28308, - "end": 28356, + "start": 28358, + "end": 28406, "loc": { "start": { - "line": 767, + "line": 768, "column": 8 }, "end": { - "line": 767, + "line": 768, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 28308, - "end": 28355, + "start": 28358, + "end": 28405, "loc": { "start": { - "line": 767, + "line": 768, "column": 8 }, "end": { - "line": 767, + "line": 768, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28308, - "end": 28335, + "start": 28358, + "end": 28385, "loc": { "start": { - "line": 767, + "line": 768, "column": 8 }, "end": { - "line": 767, + "line": 768, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 28308, - "end": 28312, + "start": 28358, + "end": 28362, "loc": { "start": { - "line": 767, + "line": 768, "column": 8 }, "end": { - "line": 767, + "line": 768, "column": 12 } } }, "property": { "type": "Identifier", - "start": 28313, - "end": 28335, + "start": 28363, + "end": 28385, "loc": { "start": { - "line": 767, + "line": 768, "column": 13 }, "end": { - "line": 767, + "line": 768, "column": 35 }, "identifierName": "_showListItemElementId" @@ -117241,15 +117515,15 @@ }, "right": { "type": "Identifier", - "start": 28338, - "end": 28355, + "start": 28388, + "end": 28405, "loc": { "start": { - "line": 767, + "line": 768, "column": 38 }, "end": { - "line": 767, + "line": 768, "column": 55 }, "identifierName": "listItemElementId" @@ -117266,15 +117540,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n * @param objectId\n ", - "start": 26826, - "end": 26876, + "start": 26876, + "end": 26926, "loc": { "start": { - "line": 727, + "line": 728, "column": 4 }, "end": { - "line": 730, + "line": 731, "column": 7 } } @@ -117284,15 +117558,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 28368, - "end": 28395, + "start": 28418, + "end": 28445, "loc": { "start": { - "line": 770, + "line": 771, "column": 4 }, "end": { - "line": 772, + "line": 773, "column": 7 } } @@ -117301,15 +117575,15 @@ }, { "type": "ClassMethod", - "start": 28400, - "end": 28796, + "start": 28450, + "end": 28846, "loc": { "start": { - "line": 773, + "line": 774, "column": 4 }, "end": { - "line": 784, + "line": 785, "column": 5 } }, @@ -117317,15 +117591,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 28400, - "end": 28410, + "start": 28450, + "end": 28460, "loc": { "start": { - "line": 773, + "line": 774, "column": 4 }, "end": { - "line": 773, + "line": 774, "column": 14 }, "identifierName": "unShowNode" @@ -117341,44 +117615,44 @@ "params": [], "body": { "type": "BlockStatement", - "start": 28413, - "end": 28796, + "start": 28463, + "end": 28846, "loc": { "start": { - "line": 773, + "line": 774, "column": 17 }, "end": { - "line": 784, + "line": 785, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 28423, - "end": 28488, + "start": 28473, + "end": 28538, "loc": { "start": { - "line": 774, + "line": 775, "column": 8 }, "end": { - "line": 776, + "line": 777, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 28427, - "end": 28455, + "start": 28477, + "end": 28505, "loc": { "start": { - "line": 774, + "line": 775, "column": 12 }, "end": { - "line": 774, + "line": 775, "column": 40 } }, @@ -117386,44 +117660,44 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 28428, - "end": 28455, + "start": 28478, + "end": 28505, "loc": { "start": { - "line": 774, + "line": 775, "column": 13 }, "end": { - "line": 774, + "line": 775, "column": 40 } }, "object": { "type": "ThisExpression", - "start": 28428, - "end": 28432, + "start": 28478, + "end": 28482, "loc": { "start": { - "line": 774, + "line": 775, "column": 13 }, "end": { - "line": 774, + "line": 775, "column": 17 } } }, "property": { "type": "Identifier", - "start": 28433, - "end": 28455, + "start": 28483, + "end": 28505, "loc": { "start": { - "line": 774, + "line": 775, "column": 18 }, "end": { - "line": 774, + "line": 775, "column": 40 }, "identifierName": "_showListItemElementId" @@ -117438,30 +117712,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 28457, - "end": 28488, + "start": 28507, + "end": 28538, "loc": { "start": { - "line": 774, + "line": 775, "column": 42 }, "end": { - "line": 776, + "line": 777, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 28471, - "end": 28478, + "start": 28521, + "end": 28528, "loc": { "start": { - "line": 775, + "line": 776, "column": 12 }, "end": { - "line": 775, + "line": 776, "column": 19 } }, @@ -117474,44 +117748,44 @@ }, { "type": "VariableDeclaration", - "start": 28497, - "end": 28574, + "start": 28547, + "end": 28624, "loc": { "start": { - "line": 777, + "line": 778, "column": 8 }, "end": { - "line": 777, + "line": 778, "column": 85 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 28503, - "end": 28573, + "start": 28553, + "end": 28623, "loc": { "start": { - "line": 777, + "line": 778, "column": 14 }, "end": { - "line": 777, + "line": 778, "column": 84 } }, "id": { "type": "Identifier", - "start": 28503, - "end": 28518, + "start": 28553, + "end": 28568, "loc": { "start": { - "line": 777, + "line": 778, "column": 14 }, "end": { - "line": 777, + "line": 778, "column": 29 }, "identifierName": "listItemElement" @@ -117520,43 +117794,43 @@ }, "init": { "type": "CallExpression", - "start": 28521, - "end": 28573, + "start": 28571, + "end": 28623, "loc": { "start": { - "line": 777, + "line": 778, "column": 32 }, "end": { - "line": 777, + "line": 778, "column": 84 } }, "callee": { "type": "MemberExpression", - "start": 28521, - "end": 28544, + "start": 28571, + "end": 28594, "loc": { "start": { - "line": 777, + "line": 778, "column": 32 }, "end": { - "line": 777, + "line": 778, "column": 55 } }, "object": { "type": "Identifier", - "start": 28521, - "end": 28529, + "start": 28571, + "end": 28579, "loc": { "start": { - "line": 777, + "line": 778, "column": 32 }, "end": { - "line": 777, + "line": 778, "column": 40 }, "identifierName": "document" @@ -117565,15 +117839,15 @@ }, "property": { "type": "Identifier", - "start": 28530, - "end": 28544, + "start": 28580, + "end": 28594, "loc": { "start": { - "line": 777, + "line": 778, "column": 41 }, "end": { - "line": 777, + "line": 778, "column": 55 }, "identifierName": "getElementById" @@ -117585,44 +117859,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 28545, - "end": 28572, + "start": 28595, + "end": 28622, "loc": { "start": { - "line": 777, + "line": 778, "column": 56 }, "end": { - "line": 777, + "line": 778, "column": 83 } }, "object": { "type": "ThisExpression", - "start": 28545, - "end": 28549, + "start": 28595, + "end": 28599, "loc": { "start": { - "line": 777, + "line": 778, "column": 56 }, "end": { - "line": 777, + "line": 778, "column": 60 } } }, "property": { "type": "Identifier", - "start": 28550, - "end": 28572, + "start": 28600, + "end": 28622, "loc": { "start": { - "line": 777, + "line": 778, "column": 61 }, "end": { - "line": 777, + "line": 778, "column": 83 }, "identifierName": "_showListItemElementId" @@ -117639,29 +117913,29 @@ }, { "type": "IfStatement", - "start": 28583, - "end": 28684, + "start": 28633, + "end": 28734, "loc": { "start": { - "line": 778, + "line": 779, "column": 8 }, "end": { - "line": 781, + "line": 782, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 28587, - "end": 28603, + "start": 28637, + "end": 28653, "loc": { "start": { - "line": 778, + "line": 779, "column": 12 }, "end": { - "line": 778, + "line": 779, "column": 28 } }, @@ -117669,15 +117943,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 28588, - "end": 28603, + "start": 28638, + "end": 28653, "loc": { "start": { - "line": 778, + "line": 779, "column": 13 }, "end": { - "line": 778, + "line": 779, "column": 28 }, "identifierName": "listItemElement" @@ -117690,88 +117964,88 @@ }, "consequent": { "type": "BlockStatement", - "start": 28605, - "end": 28684, + "start": 28655, + "end": 28734, "loc": { "start": { - "line": 778, + "line": 779, "column": 30 }, "end": { - "line": 781, + "line": 782, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 28619, - "end": 28654, + "start": 28669, + "end": 28704, "loc": { "start": { - "line": 779, + "line": 780, "column": 12 }, "end": { - "line": 779, + "line": 780, "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 28619, - "end": 28653, + "start": 28669, + "end": 28703, "loc": { "start": { - "line": 779, + "line": 780, "column": 12 }, "end": { - "line": 779, + "line": 780, "column": 46 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28619, - "end": 28646, + "start": 28669, + "end": 28696, "loc": { "start": { - "line": 779, + "line": 780, "column": 12 }, "end": { - "line": 779, + "line": 780, "column": 39 } }, "object": { "type": "ThisExpression", - "start": 28619, - "end": 28623, + "start": 28669, + "end": 28673, "loc": { "start": { - "line": 779, + "line": 780, "column": 12 }, "end": { - "line": 779, + "line": 780, "column": 16 } } }, "property": { "type": "Identifier", - "start": 28624, - "end": 28646, + "start": 28674, + "end": 28696, "loc": { "start": { - "line": 779, + "line": 780, "column": 17 }, "end": { - "line": 779, + "line": 780, "column": 39 }, "identifierName": "_showListItemElementId" @@ -117782,15 +118056,15 @@ }, "right": { "type": "NullLiteral", - "start": 28649, - "end": 28653, + "start": 28699, + "end": 28703, "loc": { "start": { - "line": 779, + "line": 780, "column": 42 }, "end": { - "line": 779, + "line": 780, "column": 46 } } @@ -117799,15 +118073,15 @@ }, { "type": "ReturnStatement", - "start": 28667, - "end": 28674, + "start": 28717, + "end": 28724, "loc": { "start": { - "line": 780, + "line": 781, "column": 12 }, "end": { - "line": 780, + "line": 781, "column": 19 } }, @@ -117820,71 +118094,71 @@ }, { "type": "ExpressionStatement", - "start": 28693, - "end": 28746, + "start": 28743, + "end": 28796, "loc": { "start": { - "line": 782, + "line": 783, "column": 8 }, "end": { - "line": 782, + "line": 783, "column": 61 } }, "expression": { "type": "CallExpression", - "start": 28693, - "end": 28745, + "start": 28743, + "end": 28795, "loc": { "start": { - "line": 782, + "line": 783, "column": 8 }, "end": { - "line": 782, + "line": 783, "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 28693, - "end": 28725, + "start": 28743, + "end": 28775, "loc": { "start": { - "line": 782, + "line": 783, "column": 8 }, "end": { - "line": 782, + "line": 783, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 28693, - "end": 28718, + "start": 28743, + "end": 28768, "loc": { "start": { - "line": 782, + "line": 783, "column": 8 }, "end": { - "line": 782, + "line": 783, "column": 33 } }, "object": { "type": "Identifier", - "start": 28693, - "end": 28708, + "start": 28743, + "end": 28758, "loc": { "start": { - "line": 782, + "line": 783, "column": 8 }, "end": { - "line": 782, + "line": 783, "column": 23 }, "identifierName": "listItemElement" @@ -117893,15 +118167,15 @@ }, "property": { "type": "Identifier", - "start": 28709, - "end": 28718, + "start": 28759, + "end": 28768, "loc": { "start": { - "line": 782, + "line": 783, "column": 24 }, "end": { - "line": 782, + "line": 783, "column": 33 }, "identifierName": "classList" @@ -117912,15 +118186,15 @@ }, "property": { "type": "Identifier", - "start": 28719, - "end": 28725, + "start": 28769, + "end": 28775, "loc": { "start": { - "line": 782, + "line": 783, "column": 34 }, "end": { - "line": 782, + "line": 783, "column": 40 }, "identifierName": "remove" @@ -117932,15 +118206,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 28726, - "end": 28744, + "start": 28776, + "end": 28794, "loc": { "start": { - "line": 782, + "line": 783, "column": 41 }, "end": { - "line": 782, + "line": 783, "column": 59 } }, @@ -117955,73 +118229,73 @@ }, { "type": "ExpressionStatement", - "start": 28755, - "end": 28790, + "start": 28805, + "end": 28840, "loc": { "start": { - "line": 783, + "line": 784, "column": 8 }, "end": { - "line": 783, + "line": 784, "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 28755, - "end": 28789, + "start": 28805, + "end": 28839, "loc": { "start": { - "line": 783, + "line": 784, "column": 8 }, "end": { - "line": 783, + "line": 784, "column": 42 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28755, - "end": 28782, + "start": 28805, + "end": 28832, "loc": { "start": { - "line": 783, + "line": 784, "column": 8 }, "end": { - "line": 783, + "line": 784, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 28755, - "end": 28759, + "start": 28805, + "end": 28809, "loc": { "start": { - "line": 783, + "line": 784, "column": 8 }, "end": { - "line": 783, + "line": 784, "column": 12 } } }, "property": { "type": "Identifier", - "start": 28760, - "end": 28782, + "start": 28810, + "end": 28832, "loc": { "start": { - "line": 783, + "line": 784, "column": 13 }, "end": { - "line": 783, + "line": 784, "column": 35 }, "identifierName": "_showListItemElementId" @@ -118032,15 +118306,15 @@ }, "right": { "type": "NullLiteral", - "start": 28785, - "end": 28789, + "start": 28835, + "end": 28839, "loc": { "start": { - "line": 783, + "line": 784, "column": 38 }, "end": { - "line": 783, + "line": 784, "column": 42 } } @@ -118054,15 +118328,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 28368, - "end": 28395, + "start": 28418, + "end": 28445, "loc": { "start": { - "line": 770, + "line": 771, "column": 4 }, "end": { - "line": 772, + "line": 773, "column": 7 } } @@ -118071,15 +118345,15 @@ }, { "type": "ClassMethod", - "start": 28802, - "end": 29846, + "start": 28852, + "end": 29896, "loc": { "start": { - "line": 786, + "line": 787, "column": 4 }, "end": { - "line": 809, + "line": 810, "column": 5 } }, @@ -118087,15 +118361,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 28802, - "end": 28822, + "start": 28852, + "end": 28872, "loc": { "start": { - "line": 786, + "line": 787, "column": 4 }, "end": { - "line": 786, + "line": 787, "column": 24 }, "identifierName": "_expandSwitchElement" @@ -118110,15 +118384,15 @@ "params": [ { "type": "Identifier", - "start": 28823, - "end": 28836, + "start": 28873, + "end": 28886, "loc": { "start": { - "line": 786, + "line": 787, "column": 25 }, "end": { - "line": 786, + "line": 787, "column": 38 }, "identifierName": "switchElement" @@ -118128,59 +118402,59 @@ ], "body": { "type": "BlockStatement", - "start": 28838, - "end": 29846, + "start": 28888, + "end": 29896, "loc": { "start": { - "line": 786, + "line": 787, "column": 40 }, "end": { - "line": 809, + "line": 810, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 28848, - "end": 28898, + "start": 28898, + "end": 28948, "loc": { "start": { - "line": 787, + "line": 788, "column": 8 }, "end": { - "line": 787, + "line": 788, "column": 58 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 28854, - "end": 28897, + "start": 28904, + "end": 28947, "loc": { "start": { - "line": 787, + "line": 788, "column": 14 }, "end": { - "line": 787, + "line": 788, "column": 57 } }, "id": { "type": "Identifier", - "start": 28854, - "end": 28867, + "start": 28904, + "end": 28917, "loc": { "start": { - "line": 787, + "line": 788, "column": 14 }, "end": { - "line": 787, + "line": 788, "column": 27 }, "identifierName": "parentElement" @@ -118189,29 +118463,29 @@ }, "init": { "type": "MemberExpression", - "start": 28870, - "end": 28897, + "start": 28920, + "end": 28947, "loc": { "start": { - "line": 787, + "line": 788, "column": 30 }, "end": { - "line": 787, + "line": 788, "column": 57 } }, "object": { "type": "Identifier", - "start": 28870, - "end": 28883, + "start": 28920, + "end": 28933, "loc": { "start": { - "line": 787, + "line": 788, "column": 30 }, "end": { - "line": 787, + "line": 788, "column": 43 }, "identifierName": "switchElement" @@ -118220,15 +118494,15 @@ }, "property": { "type": "Identifier", - "start": 28884, - "end": 28897, + "start": 28934, + "end": 28947, "loc": { "start": { - "line": 787, + "line": 788, "column": 44 }, "end": { - "line": 787, + "line": 788, "column": 57 }, "identifierName": "parentElement" @@ -118243,44 +118517,44 @@ }, { "type": "VariableDeclaration", - "start": 28907, - "end": 28968, + "start": 28957, + "end": 29018, "loc": { "start": { - "line": 788, + "line": 789, "column": 8 }, "end": { - "line": 788, + "line": 789, "column": 69 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 28913, - "end": 28967, + "start": 28963, + "end": 29017, "loc": { "start": { - "line": 788, + "line": 789, "column": 14 }, "end": { - "line": 788, + "line": 789, "column": 68 } }, "id": { "type": "Identifier", - "start": 28913, - "end": 28921, + "start": 28963, + "end": 28971, "loc": { "start": { - "line": 788, + "line": 789, "column": 14 }, "end": { - "line": 788, + "line": 789, "column": 22 }, "identifierName": "expanded" @@ -118289,57 +118563,57 @@ }, "init": { "type": "MemberExpression", - "start": 28924, - "end": 28967, + "start": 28974, + "end": 29017, "loc": { "start": { - "line": 788, + "line": 789, "column": 25 }, "end": { - "line": 788, + "line": 789, "column": 68 } }, "object": { "type": "CallExpression", - "start": 28924, - "end": 28964, + "start": 28974, + "end": 29014, "loc": { "start": { - "line": 788, + "line": 789, "column": 25 }, "end": { - "line": 788, + "line": 789, "column": 65 } }, "callee": { "type": "MemberExpression", - "start": 28924, - "end": 28958, + "start": 28974, + "end": 29008, "loc": { "start": { - "line": 788, + "line": 789, "column": 25 }, "end": { - "line": 788, + "line": 789, "column": 59 } }, "object": { "type": "Identifier", - "start": 28924, - "end": 28937, + "start": 28974, + "end": 28987, "loc": { "start": { - "line": 788, + "line": 789, "column": 25 }, "end": { - "line": 788, + "line": 789, "column": 38 }, "identifierName": "parentElement" @@ -118348,15 +118622,15 @@ }, "property": { "type": "Identifier", - "start": 28938, - "end": 28958, + "start": 28988, + "end": 29008, "loc": { "start": { - "line": 788, + "line": 789, "column": 39 }, "end": { - "line": 788, + "line": 789, "column": 59 }, "identifierName": "getElementsByTagName" @@ -118368,15 +118642,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 28959, - "end": 28963, + "start": 29009, + "end": 29013, "loc": { "start": { - "line": 788, + "line": 789, "column": 60 }, "end": { - "line": 788, + "line": 789, "column": 64 } }, @@ -118390,15 +118664,15 @@ }, "property": { "type": "NumericLiteral", - "start": 28965, - "end": 28966, + "start": 29015, + "end": 29016, "loc": { "start": { - "line": 788, + "line": 789, "column": 66 }, "end": { - "line": 788, + "line": 789, "column": 67 } }, @@ -118416,29 +118690,29 @@ }, { "type": "IfStatement", - "start": 28977, - "end": 29022, + "start": 29027, + "end": 29072, "loc": { "start": { - "line": 789, + "line": 790, "column": 8 }, "end": { - "line": 791, + "line": 792, "column": 9 } }, "test": { "type": "Identifier", - "start": 28981, - "end": 28989, + "start": 29031, + "end": 29039, "loc": { "start": { - "line": 789, + "line": 790, "column": 12 }, "end": { - "line": 789, + "line": 790, "column": 20 }, "identifierName": "expanded" @@ -118447,30 +118721,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 28991, - "end": 29022, + "start": 29041, + "end": 29072, "loc": { "start": { - "line": 789, + "line": 790, "column": 22 }, "end": { - "line": 791, + "line": 792, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 29005, - "end": 29012, + "start": 29055, + "end": 29062, "loc": { "start": { - "line": 790, + "line": 791, "column": 12 }, "end": { - "line": 790, + "line": 791, "column": 19 } }, @@ -118483,44 +118757,44 @@ }, { "type": "VariableDeclaration", - "start": 29031, - "end": 29084, + "start": 29081, + "end": 29134, "loc": { "start": { - "line": 792, + "line": 793, "column": 8 }, "end": { - "line": 792, + "line": 793, "column": 61 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29037, - "end": 29083, + "start": 29087, + "end": 29133, "loc": { "start": { - "line": 792, + "line": 793, "column": 14 }, "end": { - "line": 792, + "line": 793, "column": 60 } }, "id": { "type": "Identifier", - "start": 29037, - "end": 29043, + "start": 29087, + "end": 29093, "loc": { "start": { - "line": 792, + "line": 793, "column": 14 }, "end": { - "line": 792, + "line": 793, "column": 20 }, "identifierName": "nodeId" @@ -118529,57 +118803,57 @@ }, "init": { "type": "CallExpression", - "start": 29046, - "end": 29083, + "start": 29096, + "end": 29133, "loc": { "start": { - "line": 792, + "line": 793, "column": 23 }, "end": { - "line": 792, + "line": 793, "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 29046, - "end": 29070, + "start": 29096, + "end": 29120, "loc": { "start": { - "line": 792, + "line": 793, "column": 23 }, "end": { - "line": 792, + "line": 793, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 29046, - "end": 29062, + "start": 29096, + "end": 29112, "loc": { "start": { - "line": 792, + "line": 793, "column": 23 }, "end": { - "line": 792, + "line": 793, "column": 39 } }, "object": { "type": "Identifier", - "start": 29046, - "end": 29059, + "start": 29096, + "end": 29109, "loc": { "start": { - "line": 792, + "line": 793, "column": 23 }, "end": { - "line": 792, + "line": 793, "column": 36 }, "identifierName": "parentElement" @@ -118588,15 +118862,15 @@ }, "property": { "type": "Identifier", - "start": 29060, - "end": 29062, + "start": 29110, + "end": 29112, "loc": { "start": { - "line": 792, + "line": 793, "column": 37 }, "end": { - "line": 792, + "line": 793, "column": 39 }, "identifierName": "id" @@ -118607,15 +118881,15 @@ }, "property": { "type": "Identifier", - "start": 29063, - "end": 29070, + "start": 29113, + "end": 29120, "loc": { "start": { - "line": 792, + "line": 793, "column": 40 }, "end": { - "line": 792, + "line": 793, "column": 47 }, "identifierName": "replace" @@ -118627,15 +118901,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 29071, - "end": 29078, + "start": 29121, + "end": 29128, "loc": { "start": { - "line": 792, + "line": 793, "column": 48 }, "end": { - "line": 792, + "line": 793, "column": 55 } }, @@ -118647,15 +118921,15 @@ }, { "type": "StringLiteral", - "start": 29080, - "end": 29082, + "start": 29130, + "end": 29132, "loc": { "start": { - "line": 792, + "line": 793, "column": 57 }, "end": { - "line": 792, + "line": 793, "column": 59 } }, @@ -118673,44 +118947,44 @@ }, { "type": "VariableDeclaration", - "start": 29093, - "end": 29139, + "start": 29143, + "end": 29189, "loc": { "start": { - "line": 793, + "line": 794, "column": 8 }, "end": { - "line": 793, + "line": 794, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29099, - "end": 29138, + "start": 29149, + "end": 29188, "loc": { "start": { - "line": 793, + "line": 794, "column": 14 }, "end": { - "line": 793, + "line": 794, "column": 53 } }, "id": { "type": "Identifier", - "start": 29099, - "end": 29107, + "start": 29149, + "end": 29157, "loc": { "start": { - "line": 793, + "line": 794, "column": 14 }, "end": { - "line": 793, + "line": 794, "column": 22 }, "identifierName": "objectId" @@ -118719,58 +118993,58 @@ }, "init": { "type": "CallExpression", - "start": 29110, - "end": 29138, + "start": 29160, + "end": 29188, "loc": { "start": { - "line": 793, + "line": 794, "column": 25 }, "end": { - "line": 793, + "line": 794, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 29110, - "end": 29130, + "start": 29160, + "end": 29180, "loc": { "start": { - "line": 793, + "line": 794, "column": 25 }, "end": { - "line": 793, + "line": 794, "column": 45 } }, "object": { "type": "ThisExpression", - "start": 29110, - "end": 29114, + "start": 29160, + "end": 29164, "loc": { "start": { - "line": 793, + "line": 794, "column": 25 }, "end": { - "line": 793, + "line": 794, "column": 29 } } }, "property": { "type": "Identifier", - "start": 29115, - "end": 29130, + "start": 29165, + "end": 29180, "loc": { "start": { - "line": 793, + "line": 794, "column": 30 }, "end": { - "line": 793, + "line": 794, "column": 45 }, "identifierName": "_nodeToObjectID" @@ -118782,15 +119056,15 @@ "arguments": [ { "type": "Identifier", - "start": 29131, - "end": 29137, + "start": 29181, + "end": 29187, "loc": { "start": { - "line": 793, + "line": 794, "column": 46 }, "end": { - "line": 793, + "line": 794, "column": 52 }, "identifierName": "nodeId" @@ -118805,44 +119079,44 @@ }, { "type": "VariableDeclaration", - "start": 29148, - "end": 29195, + "start": 29198, + "end": 29245, "loc": { "start": { - "line": 794, + "line": 795, "column": 8 }, "end": { - "line": 794, + "line": 795, "column": 55 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29154, - "end": 29194, + "start": 29204, + "end": 29244, "loc": { "start": { - "line": 794, + "line": 795, "column": 14 }, "end": { - "line": 794, + "line": 795, "column": 54 } }, "id": { "type": "Identifier", - "start": 29154, - "end": 29164, + "start": 29204, + "end": 29214, "loc": { "start": { - "line": 794, + "line": 795, "column": 14 }, "end": { - "line": 794, + "line": 795, "column": 24 }, "identifierName": "switchNode" @@ -118851,58 +119125,58 @@ }, "init": { "type": "MemberExpression", - "start": 29167, - "end": 29194, + "start": 29217, + "end": 29244, "loc": { "start": { - "line": 794, + "line": 795, "column": 27 }, "end": { - "line": 794, + "line": 795, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 29167, - "end": 29184, + "start": 29217, + "end": 29234, "loc": { "start": { - "line": 794, + "line": 795, "column": 27 }, "end": { - "line": 794, + "line": 795, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 29167, - "end": 29171, + "start": 29217, + "end": 29221, "loc": { "start": { - "line": 794, + "line": 795, "column": 27 }, "end": { - "line": 794, + "line": 795, "column": 31 } } }, "property": { "type": "Identifier", - "start": 29172, - "end": 29184, + "start": 29222, + "end": 29234, "loc": { "start": { - "line": 794, + "line": 795, "column": 32 }, "end": { - "line": 794, + "line": 795, "column": 44 }, "identifierName": "_objectNodes" @@ -118913,15 +119187,15 @@ }, "property": { "type": "Identifier", - "start": 29185, - "end": 29193, + "start": 29235, + "end": 29243, "loc": { "start": { - "line": 794, + "line": 795, "column": 45 }, "end": { - "line": 794, + "line": 795, "column": 53 }, "identifierName": "objectId" @@ -118936,44 +119210,44 @@ }, { "type": "VariableDeclaration", - "start": 29204, - "end": 29243, + "start": 29254, + "end": 29293, "loc": { "start": { - "line": 795, + "line": 796, "column": 8 }, "end": { - "line": 795, + "line": 796, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29210, - "end": 29242, + "start": 29260, + "end": 29292, "loc": { "start": { - "line": 795, + "line": 796, "column": 14 }, "end": { - "line": 795, + "line": 796, "column": 46 } }, "id": { "type": "Identifier", - "start": 29210, - "end": 29220, + "start": 29260, + "end": 29270, "loc": { "start": { - "line": 795, + "line": 796, "column": 14 }, "end": { - "line": 795, + "line": 796, "column": 24 }, "identifierName": "childNodes" @@ -118982,29 +119256,29 @@ }, "init": { "type": "MemberExpression", - "start": 29223, - "end": 29242, + "start": 29273, + "end": 29292, "loc": { "start": { - "line": 795, + "line": 796, "column": 27 }, "end": { - "line": 795, + "line": 796, "column": 46 } }, "object": { "type": "Identifier", - "start": 29223, - "end": 29233, + "start": 29273, + "end": 29283, "loc": { "start": { - "line": 795, + "line": 796, "column": 27 }, "end": { - "line": 795, + "line": 796, "column": 37 }, "identifierName": "switchNode" @@ -119013,15 +119287,15 @@ }, "property": { "type": "Identifier", - "start": 29234, - "end": 29242, + "start": 29284, + "end": 29292, "loc": { "start": { - "line": 795, + "line": 796, "column": 38 }, "end": { - "line": 795, + "line": 796, "column": 46 }, "identifierName": "children" @@ -119036,44 +119310,44 @@ }, { "type": "VariableDeclaration", - "start": 29252, - "end": 29361, + "start": 29302, + "end": 29411, "loc": { "start": { - "line": 796, + "line": 797, "column": 8 }, "end": { - "line": 798, + "line": 799, "column": 11 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29258, - "end": 29360, + "start": 29308, + "end": 29410, "loc": { "start": { - "line": 796, + "line": 797, "column": 14 }, "end": { - "line": 798, + "line": 799, "column": 10 } }, "id": { "type": "Identifier", - "start": 29258, - "end": 29270, + "start": 29308, + "end": 29320, "loc": { "start": { - "line": 796, + "line": 797, "column": 14 }, "end": { - "line": 796, + "line": 797, "column": 26 }, "identifierName": "nodeElements" @@ -119082,43 +119356,43 @@ }, "init": { "type": "CallExpression", - "start": 29273, - "end": 29360, + "start": 29323, + "end": 29410, "loc": { "start": { - "line": 796, + "line": 797, "column": 29 }, "end": { - "line": 798, + "line": 799, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 29273, - "end": 29287, + "start": 29323, + "end": 29337, "loc": { "start": { - "line": 796, + "line": 797, "column": 29 }, "end": { - "line": 796, + "line": 797, "column": 43 } }, "object": { "type": "Identifier", - "start": 29273, - "end": 29283, + "start": 29323, + "end": 29333, "loc": { "start": { - "line": 796, + "line": 797, "column": 29 }, "end": { - "line": 796, + "line": 797, "column": 39 }, "identifierName": "childNodes" @@ -119127,15 +119401,15 @@ }, "property": { "type": "Identifier", - "start": 29284, - "end": 29287, + "start": 29334, + "end": 29337, "loc": { "start": { - "line": 796, + "line": 797, "column": 40 }, "end": { - "line": 796, + "line": 797, "column": 43 }, "identifierName": "map" @@ -119147,15 +119421,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 29288, - "end": 29359, + "start": 29338, + "end": 29409, "loc": { "start": { - "line": 796, + "line": 797, "column": 44 }, "end": { - "line": 798, + "line": 799, "column": 9 } }, @@ -119166,15 +119440,15 @@ "params": [ { "type": "Identifier", - "start": 29289, - "end": 29293, + "start": 29339, + "end": 29343, "loc": { "start": { - "line": 796, + "line": 797, "column": 45 }, "end": { - "line": 796, + "line": 797, "column": 49 }, "identifierName": "node" @@ -119184,87 +119458,87 @@ ], "body": { "type": "BlockStatement", - "start": 29298, - "end": 29359, + "start": 29348, + "end": 29409, "loc": { "start": { - "line": 796, + "line": 797, "column": 54 }, "end": { - "line": 798, + "line": 799, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 29312, - "end": 29349, + "start": 29362, + "end": 29399, "loc": { "start": { - "line": 797, + "line": 798, "column": 12 }, "end": { - "line": 797, + "line": 798, "column": 49 } }, "argument": { "type": "CallExpression", - "start": 29319, - "end": 29348, + "start": 29369, + "end": 29398, "loc": { "start": { - "line": 797, + "line": 798, "column": 19 }, "end": { - "line": 797, + "line": 798, "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 29319, - "end": 29342, + "start": 29369, + "end": 29392, "loc": { "start": { - "line": 797, + "line": 798, "column": 19 }, "end": { - "line": 797, + "line": 798, "column": 42 } }, "object": { "type": "ThisExpression", - "start": 29319, - "end": 29323, + "start": 29369, + "end": 29373, "loc": { "start": { - "line": 797, + "line": 798, "column": 19 }, "end": { - "line": 797, + "line": 798, "column": 23 } } }, "property": { "type": "Identifier", - "start": 29324, - "end": 29342, + "start": 29374, + "end": 29392, "loc": { "start": { - "line": 797, + "line": 798, "column": 24 }, "end": { - "line": 797, + "line": 798, "column": 42 }, "identifierName": "_createNodeElement" @@ -119276,15 +119550,15 @@ "arguments": [ { "type": "Identifier", - "start": 29343, - "end": 29347, + "start": 29393, + "end": 29397, "loc": { "start": { - "line": 797, + "line": 798, "column": 43 }, "end": { - "line": 797, + "line": 798, "column": 47 }, "identifierName": "node" @@ -119306,44 +119580,44 @@ }, { "type": "VariableDeclaration", - "start": 29370, - "end": 29410, + "start": 29420, + "end": 29460, "loc": { "start": { - "line": 799, + "line": 800, "column": 8 }, "end": { - "line": 799, + "line": 800, "column": 48 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29376, - "end": 29409, + "start": 29426, + "end": 29459, "loc": { "start": { - "line": 799, + "line": 800, "column": 14 }, "end": { - "line": 799, + "line": 800, "column": 47 } }, "id": { "type": "Identifier", - "start": 29376, - "end": 29378, + "start": 29426, + "end": 29428, "loc": { "start": { - "line": 799, + "line": 800, "column": 14 }, "end": { - "line": 799, + "line": 800, "column": 16 }, "identifierName": "ul" @@ -119352,43 +119626,43 @@ }, "init": { "type": "CallExpression", - "start": 29381, - "end": 29409, + "start": 29431, + "end": 29459, "loc": { "start": { - "line": 799, + "line": 800, "column": 19 }, "end": { - "line": 799, + "line": 800, "column": 47 } }, "callee": { "type": "MemberExpression", - "start": 29381, - "end": 29403, + "start": 29431, + "end": 29453, "loc": { "start": { - "line": 799, + "line": 800, "column": 19 }, "end": { - "line": 799, + "line": 800, "column": 41 } }, "object": { "type": "Identifier", - "start": 29381, - "end": 29389, + "start": 29431, + "end": 29439, "loc": { "start": { - "line": 799, + "line": 800, "column": 19 }, "end": { - "line": 799, + "line": 800, "column": 27 }, "identifierName": "document" @@ -119397,15 +119671,15 @@ }, "property": { "type": "Identifier", - "start": 29390, - "end": 29403, + "start": 29440, + "end": 29453, "loc": { "start": { - "line": 799, + "line": 800, "column": 28 }, "end": { - "line": 799, + "line": 800, "column": 41 }, "identifierName": "createElement" @@ -119417,15 +119691,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 29404, - "end": 29408, + "start": 29454, + "end": 29458, "loc": { "start": { - "line": 799, + "line": 800, "column": 42 }, "end": { - "line": 799, + "line": 800, "column": 46 } }, @@ -119443,57 +119717,57 @@ }, { "type": "ExpressionStatement", - "start": 29419, - "end": 29511, + "start": 29469, + "end": 29561, "loc": { "start": { - "line": 800, + "line": 801, "column": 8 }, "end": { - "line": 802, + "line": 803, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 29419, - "end": 29510, + "start": 29469, + "end": 29560, "loc": { "start": { - "line": 800, + "line": 801, "column": 8 }, "end": { - "line": 802, + "line": 803, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 29419, - "end": 29439, + "start": 29469, + "end": 29489, "loc": { "start": { - "line": 800, + "line": 801, "column": 8 }, "end": { - "line": 800, + "line": 801, "column": 28 } }, "object": { "type": "Identifier", - "start": 29419, - "end": 29431, + "start": 29469, + "end": 29481, "loc": { "start": { - "line": 800, + "line": 801, "column": 8 }, "end": { - "line": 800, + "line": 801, "column": 20 }, "identifierName": "nodeElements" @@ -119502,15 +119776,15 @@ }, "property": { "type": "Identifier", - "start": 29432, - "end": 29439, + "start": 29482, + "end": 29489, "loc": { "start": { - "line": 800, + "line": 801, "column": 21 }, "end": { - "line": 800, + "line": 801, "column": 28 }, "identifierName": "forEach" @@ -119522,15 +119796,15 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 29440, - "end": 29509, + "start": 29490, + "end": 29559, "loc": { "start": { - "line": 800, + "line": 801, "column": 29 }, "end": { - "line": 802, + "line": 803, "column": 9 } }, @@ -119541,15 +119815,15 @@ "params": [ { "type": "Identifier", - "start": 29441, - "end": 29452, + "start": 29491, + "end": 29502, "loc": { "start": { - "line": 800, + "line": 801, "column": 30 }, "end": { - "line": 800, + "line": 801, "column": 41 }, "identifierName": "nodeElement" @@ -119559,72 +119833,72 @@ ], "body": { "type": "BlockStatement", - "start": 29457, - "end": 29509, + "start": 29507, + "end": 29559, "loc": { "start": { - "line": 800, + "line": 801, "column": 46 }, "end": { - "line": 802, + "line": 803, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 29471, - "end": 29499, + "start": 29521, + "end": 29549, "loc": { "start": { - "line": 801, + "line": 802, "column": 12 }, "end": { - "line": 801, + "line": 802, "column": 40 } }, "expression": { "type": "CallExpression", - "start": 29471, - "end": 29498, + "start": 29521, + "end": 29548, "loc": { "start": { - "line": 801, + "line": 802, "column": 12 }, "end": { - "line": 801, + "line": 802, "column": 39 } }, "callee": { "type": "MemberExpression", - "start": 29471, - "end": 29485, + "start": 29521, + "end": 29535, "loc": { "start": { - "line": 801, + "line": 802, "column": 12 }, "end": { - "line": 801, + "line": 802, "column": 26 } }, "object": { "type": "Identifier", - "start": 29471, - "end": 29473, + "start": 29521, + "end": 29523, "loc": { "start": { - "line": 801, + "line": 802, "column": 12 }, "end": { - "line": 801, + "line": 802, "column": 14 }, "identifierName": "ul" @@ -119633,15 +119907,15 @@ }, "property": { "type": "Identifier", - "start": 29474, - "end": 29485, + "start": 29524, + "end": 29535, "loc": { "start": { - "line": 801, + "line": 802, "column": 15 }, "end": { - "line": 801, + "line": 802, "column": 26 }, "identifierName": "appendChild" @@ -119653,15 +119927,15 @@ "arguments": [ { "type": "Identifier", - "start": 29486, - "end": 29497, + "start": 29536, + "end": 29547, "loc": { "start": { - "line": 801, + "line": 802, "column": 27 }, "end": { - "line": 801, + "line": 802, "column": 38 }, "identifierName": "nodeElement" @@ -119680,57 +119954,57 @@ }, { "type": "ExpressionStatement", - "start": 29520, - "end": 29550, + "start": 29570, + "end": 29600, "loc": { "start": { - "line": 803, + "line": 804, "column": 8 }, "end": { - "line": 803, + "line": 804, "column": 38 } }, "expression": { "type": "CallExpression", - "start": 29520, - "end": 29549, + "start": 29570, + "end": 29599, "loc": { "start": { - "line": 803, + "line": 804, "column": 8 }, "end": { - "line": 803, + "line": 804, "column": 37 } }, "callee": { "type": "MemberExpression", - "start": 29520, - "end": 29545, + "start": 29570, + "end": 29595, "loc": { "start": { - "line": 803, + "line": 804, "column": 8 }, "end": { - "line": 803, + "line": 804, "column": 33 } }, "object": { "type": "Identifier", - "start": 29520, - "end": 29533, + "start": 29570, + "end": 29583, "loc": { "start": { - "line": 803, + "line": 804, "column": 8 }, "end": { - "line": 803, + "line": 804, "column": 21 }, "identifierName": "parentElement" @@ -119739,15 +120013,15 @@ }, "property": { "type": "Identifier", - "start": 29534, - "end": 29545, + "start": 29584, + "end": 29595, "loc": { "start": { - "line": 803, + "line": 804, "column": 22 }, "end": { - "line": 803, + "line": 804, "column": 33 }, "identifierName": "appendChild" @@ -119759,15 +120033,15 @@ "arguments": [ { "type": "Identifier", - "start": 29546, - "end": 29548, + "start": 29596, + "end": 29598, "loc": { "start": { - "line": 803, + "line": 804, "column": 34 }, "end": { - "line": 803, + "line": 804, "column": 36 }, "identifierName": "ul" @@ -119779,71 +120053,71 @@ }, { "type": "ExpressionStatement", - "start": 29559, - "end": 29598, + "start": 29609, + "end": 29648, "loc": { "start": { - "line": 804, + "line": 805, "column": 8 }, "end": { - "line": 804, + "line": 805, "column": 47 } }, "expression": { "type": "CallExpression", - "start": 29559, - "end": 29597, + "start": 29609, + "end": 29647, "loc": { "start": { - "line": 804, + "line": 805, "column": 8 }, "end": { - "line": 804, + "line": 805, "column": 46 } }, "callee": { "type": "MemberExpression", - "start": 29559, - "end": 29589, + "start": 29609, + "end": 29639, "loc": { "start": { - "line": 804, + "line": 805, "column": 8 }, "end": { - "line": 804, + "line": 805, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 29559, - "end": 29582, + "start": 29609, + "end": 29632, "loc": { "start": { - "line": 804, + "line": 805, "column": 8 }, "end": { - "line": 804, + "line": 805, "column": 31 } }, "object": { "type": "Identifier", - "start": 29559, - "end": 29572, + "start": 29609, + "end": 29622, "loc": { "start": { - "line": 804, + "line": 805, "column": 8 }, "end": { - "line": 804, + "line": 805, "column": 21 }, "identifierName": "switchElement" @@ -119852,15 +120126,15 @@ }, "property": { "type": "Identifier", - "start": 29573, - "end": 29582, + "start": 29623, + "end": 29632, "loc": { "start": { - "line": 804, + "line": 805, "column": 22 }, "end": { - "line": 804, + "line": 805, "column": 31 }, "identifierName": "classList" @@ -119871,15 +120145,15 @@ }, "property": { "type": "Identifier", - "start": 29583, - "end": 29589, + "start": 29633, + "end": 29639, "loc": { "start": { - "line": 804, + "line": 805, "column": 32 }, "end": { - "line": 804, + "line": 805, "column": 38 }, "identifierName": "remove" @@ -119891,15 +120165,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 29590, - "end": 29596, + "start": 29640, + "end": 29646, "loc": { "start": { - "line": 804, + "line": 805, "column": 39 }, "end": { - "line": 804, + "line": 805, "column": 45 } }, @@ -119914,71 +120188,71 @@ }, { "type": "ExpressionStatement", - "start": 29607, - "end": 29644, + "start": 29657, + "end": 29694, "loc": { "start": { - "line": 805, + "line": 806, "column": 8 }, "end": { - "line": 805, + "line": 806, "column": 45 } }, "expression": { "type": "CallExpression", - "start": 29607, - "end": 29643, + "start": 29657, + "end": 29693, "loc": { "start": { - "line": 805, + "line": 806, "column": 8 }, "end": { - "line": 805, + "line": 806, "column": 44 } }, "callee": { "type": "MemberExpression", - "start": 29607, - "end": 29634, + "start": 29657, + "end": 29684, "loc": { "start": { - "line": 805, + "line": 806, "column": 8 }, "end": { - "line": 805, + "line": 806, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 29607, - "end": 29630, + "start": 29657, + "end": 29680, "loc": { "start": { - "line": 805, + "line": 806, "column": 8 }, "end": { - "line": 805, + "line": 806, "column": 31 } }, "object": { "type": "Identifier", - "start": 29607, - "end": 29620, + "start": 29657, + "end": 29670, "loc": { "start": { - "line": 805, + "line": 806, "column": 8 }, "end": { - "line": 805, + "line": 806, "column": 21 }, "identifierName": "switchElement" @@ -119987,15 +120261,15 @@ }, "property": { "type": "Identifier", - "start": 29621, - "end": 29630, + "start": 29671, + "end": 29680, "loc": { "start": { - "line": 805, + "line": 806, "column": 22 }, "end": { - "line": 805, + "line": 806, "column": 31 }, "identifierName": "classList" @@ -120006,15 +120280,15 @@ }, "property": { "type": "Identifier", - "start": 29631, - "end": 29634, + "start": 29681, + "end": 29684, "loc": { "start": { - "line": 805, + "line": 806, "column": 32 }, "end": { - "line": 805, + "line": 806, "column": 35 }, "identifierName": "add" @@ -120026,15 +120300,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 29635, - "end": 29642, + "start": 29685, + "end": 29692, "loc": { "start": { - "line": 805, + "line": 806, "column": 36 }, "end": { - "line": 805, + "line": 806, "column": 43 } }, @@ -120049,58 +120323,58 @@ }, { "type": "ExpressionStatement", - "start": 29653, - "end": 29685, + "start": 29703, + "end": 29735, "loc": { "start": { - "line": 806, + "line": 807, "column": 8 }, "end": { - "line": 806, + "line": 807, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 29653, - "end": 29684, + "start": 29703, + "end": 29734, "loc": { "start": { - "line": 806, + "line": 807, "column": 8 }, "end": { - "line": 806, + "line": 807, "column": 39 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 29653, - "end": 29678, + "start": 29703, + "end": 29728, "loc": { "start": { - "line": 806, + "line": 807, "column": 8 }, "end": { - "line": 806, + "line": 807, "column": 33 } }, "object": { "type": "Identifier", - "start": 29653, - "end": 29666, + "start": 29703, + "end": 29716, "loc": { "start": { - "line": 806, + "line": 807, "column": 8 }, "end": { - "line": 806, + "line": 807, "column": 21 }, "identifierName": "switchElement" @@ -120109,15 +120383,15 @@ }, "property": { "type": "Identifier", - "start": 29667, - "end": 29678, + "start": 29717, + "end": 29728, "loc": { "start": { - "line": 806, + "line": 807, "column": 22 }, "end": { - "line": 806, + "line": 807, "column": 33 }, "identifierName": "textContent" @@ -120128,15 +120402,15 @@ }, "right": { "type": "StringLiteral", - "start": 29681, - "end": 29684, + "start": 29731, + "end": 29734, "loc": { "start": { - "line": 806, + "line": 807, "column": 36 }, "end": { - "line": 806, + "line": 807, "column": 39 } }, @@ -120150,57 +120424,57 @@ }, { "type": "ExpressionStatement", - "start": 29694, - "end": 29763, + "start": 29744, + "end": 29813, "loc": { "start": { - "line": 807, + "line": 808, "column": 8 }, "end": { - "line": 807, + "line": 808, "column": 77 } }, "expression": { "type": "CallExpression", - "start": 29694, - "end": 29762, + "start": 29744, + "end": 29812, "loc": { "start": { - "line": 807, + "line": 808, "column": 8 }, "end": { - "line": 807, + "line": 808, "column": 76 } }, "callee": { "type": "MemberExpression", - "start": 29694, - "end": 29727, + "start": 29744, + "end": 29777, "loc": { "start": { - "line": 807, + "line": 808, "column": 8 }, "end": { - "line": 807, + "line": 808, "column": 41 } }, "object": { "type": "Identifier", - "start": 29694, - "end": 29707, + "start": 29744, + "end": 29757, "loc": { "start": { - "line": 807, + "line": 808, "column": 8 }, "end": { - "line": 807, + "line": 808, "column": 21 }, "identifierName": "switchElement" @@ -120209,15 +120483,15 @@ }, "property": { "type": "Identifier", - "start": 29708, - "end": 29727, + "start": 29758, + "end": 29777, "loc": { "start": { - "line": 807, + "line": 808, "column": 22 }, "end": { - "line": 807, + "line": 808, "column": 41 }, "identifierName": "removeEventListener" @@ -120229,15 +120503,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 29728, - "end": 29735, + "start": 29778, + "end": 29785, "loc": { "start": { - "line": 807, + "line": 808, "column": 42 }, "end": { - "line": 807, + "line": 808, "column": 49 } }, @@ -120249,44 +120523,44 @@ }, { "type": "MemberExpression", - "start": 29737, - "end": 29761, + "start": 29787, + "end": 29811, "loc": { "start": { - "line": 807, + "line": 808, "column": 51 }, "end": { - "line": 807, + "line": 808, "column": 75 } }, "object": { "type": "ThisExpression", - "start": 29737, - "end": 29741, + "start": 29787, + "end": 29791, "loc": { "start": { - "line": 807, + "line": 808, "column": 51 }, "end": { - "line": 807, + "line": 808, "column": 55 } } }, "property": { "type": "Identifier", - "start": 29742, - "end": 29761, + "start": 29792, + "end": 29811, "loc": { "start": { - "line": 807, + "line": 808, "column": 56 }, "end": { - "line": 807, + "line": 808, "column": 75 }, "identifierName": "switchExpandHandler" @@ -120300,57 +120574,57 @@ }, { "type": "ExpressionStatement", - "start": 29772, - "end": 29840, + "start": 29822, + "end": 29890, "loc": { "start": { - "line": 808, + "line": 809, "column": 8 }, "end": { - "line": 808, + "line": 809, "column": 76 } }, "expression": { "type": "CallExpression", - "start": 29772, - "end": 29839, + "start": 29822, + "end": 29889, "loc": { "start": { - "line": 808, + "line": 809, "column": 8 }, "end": { - "line": 808, + "line": 809, "column": 75 } }, "callee": { "type": "MemberExpression", - "start": 29772, - "end": 29802, + "start": 29822, + "end": 29852, "loc": { "start": { - "line": 808, + "line": 809, "column": 8 }, "end": { - "line": 808, + "line": 809, "column": 38 } }, "object": { "type": "Identifier", - "start": 29772, - "end": 29785, + "start": 29822, + "end": 29835, "loc": { "start": { - "line": 808, + "line": 809, "column": 8 }, "end": { - "line": 808, + "line": 809, "column": 21 }, "identifierName": "switchElement" @@ -120359,15 +120633,15 @@ }, "property": { "type": "Identifier", - "start": 29786, - "end": 29802, + "start": 29836, + "end": 29852, "loc": { "start": { - "line": 808, + "line": 809, "column": 22 }, "end": { - "line": 808, + "line": 809, "column": 38 }, "identifierName": "addEventListener" @@ -120379,15 +120653,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 29803, - "end": 29810, + "start": 29853, + "end": 29860, "loc": { "start": { - "line": 808, + "line": 809, "column": 39 }, "end": { - "line": 808, + "line": 809, "column": 46 } }, @@ -120399,44 +120673,44 @@ }, { "type": "MemberExpression", - "start": 29812, - "end": 29838, + "start": 29862, + "end": 29888, "loc": { "start": { - "line": 808, + "line": 809, "column": 48 }, "end": { - "line": 808, + "line": 809, "column": 74 } }, "object": { "type": "ThisExpression", - "start": 29812, - "end": 29816, + "start": 29862, + "end": 29866, "loc": { "start": { - "line": 808, + "line": 809, "column": 48 }, "end": { - "line": 808, + "line": 809, "column": 52 } } }, "property": { "type": "Identifier", - "start": 29817, - "end": 29838, + "start": 29867, + "end": 29888, "loc": { "start": { - "line": 808, + "line": 809, "column": 53 }, "end": { - "line": 808, + "line": 809, "column": 74 }, "identifierName": "switchCollapseHandler" @@ -120454,15 +120728,15 @@ }, { "type": "ClassMethod", - "start": 29852, - "end": 30114, + "start": 29902, + "end": 30164, "loc": { "start": { - "line": 811, + "line": 812, "column": 4 }, "end": { - "line": 816, + "line": 817, "column": 5 } }, @@ -120470,15 +120744,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 29852, - "end": 29865, + "start": 29902, + "end": 29915, "loc": { "start": { - "line": 811, + "line": 812, "column": 4 }, "end": { - "line": 811, + "line": 812, "column": 17 }, "identifierName": "_collapseNode" @@ -120493,15 +120767,15 @@ "params": [ { "type": "Identifier", - "start": 29866, - "end": 29874, + "start": 29916, + "end": 29924, "loc": { "start": { - "line": 811, + "line": 812, "column": 18 }, "end": { - "line": 811, + "line": 812, "column": 26 }, "identifierName": "objectId" @@ -120511,59 +120785,59 @@ ], "body": { "type": "BlockStatement", - "start": 29876, - "end": 30114, + "start": 29926, + "end": 30164, "loc": { "start": { - "line": 811, + "line": 812, "column": 28 }, "end": { - "line": 816, + "line": 817, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 29886, - "end": 29932, + "start": 29936, + "end": 29982, "loc": { "start": { - "line": 812, + "line": 813, "column": 8 }, "end": { - "line": 812, + "line": 813, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29892, - "end": 29931, + "start": 29942, + "end": 29981, "loc": { "start": { - "line": 812, + "line": 813, "column": 14 }, "end": { - "line": 812, + "line": 813, "column": 53 } }, "id": { "type": "Identifier", - "start": 29892, - "end": 29898, + "start": 29942, + "end": 29948, "loc": { "start": { - "line": 812, + "line": 813, "column": 14 }, "end": { - "line": 812, + "line": 813, "column": 20 }, "identifierName": "nodeId" @@ -120572,58 +120846,58 @@ }, "init": { "type": "CallExpression", - "start": 29901, - "end": 29931, + "start": 29951, + "end": 29981, "loc": { "start": { - "line": 812, + "line": 813, "column": 23 }, "end": { - "line": 812, + "line": 813, "column": 53 } }, "callee": { "type": "MemberExpression", - "start": 29901, - "end": 29921, + "start": 29951, + "end": 29971, "loc": { "start": { - "line": 812, + "line": 813, "column": 23 }, "end": { - "line": 812, + "line": 813, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 29901, - "end": 29905, + "start": 29951, + "end": 29955, "loc": { "start": { - "line": 812, + "line": 813, "column": 23 }, "end": { - "line": 812, + "line": 813, "column": 27 } } }, "property": { "type": "Identifier", - "start": 29906, - "end": 29921, + "start": 29956, + "end": 29971, "loc": { "start": { - "line": 812, + "line": 813, "column": 28 }, "end": { - "line": 812, + "line": 813, "column": 43 }, "identifierName": "_objectToNodeID" @@ -120635,15 +120909,15 @@ "arguments": [ { "type": "Identifier", - "start": 29922, - "end": 29930, + "start": 29972, + "end": 29980, "loc": { "start": { - "line": 812, + "line": 813, "column": 44 }, "end": { - "line": 812, + "line": 813, "column": 52 }, "identifierName": "objectId" @@ -120658,44 +120932,44 @@ }, { "type": "VariableDeclaration", - "start": 29941, - "end": 29984, + "start": 29991, + "end": 30034, "loc": { "start": { - "line": 813, + "line": 814, "column": 8 }, "end": { - "line": 813, + "line": 814, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29947, - "end": 29983, + "start": 29997, + "end": 30033, "loc": { "start": { - "line": 813, + "line": 814, "column": 14 }, "end": { - "line": 813, + "line": 814, "column": 50 } }, "id": { "type": "Identifier", - "start": 29947, - "end": 29962, + "start": 29997, + "end": 30012, "loc": { "start": { - "line": 813, + "line": 814, "column": 14 }, "end": { - "line": 813, + "line": 814, "column": 29 }, "identifierName": "switchElementId" @@ -120704,29 +120978,29 @@ }, "init": { "type": "BinaryExpression", - "start": 29965, - "end": 29983, + "start": 30015, + "end": 30033, "loc": { "start": { - "line": 813, + "line": 814, "column": 32 }, "end": { - "line": 813, + "line": 814, "column": 50 } }, "left": { "type": "StringLiteral", - "start": 29965, - "end": 29974, + "start": 30015, + "end": 30024, "loc": { "start": { - "line": 813, + "line": 814, "column": 32 }, "end": { - "line": 813, + "line": 814, "column": 41 } }, @@ -120739,15 +121013,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 29977, - "end": 29983, + "start": 30027, + "end": 30033, "loc": { "start": { - "line": 813, + "line": 814, "column": 44 }, "end": { - "line": 813, + "line": 814, "column": 50 }, "identifierName": "nodeId" @@ -120761,44 +121035,44 @@ }, { "type": "VariableDeclaration", - "start": 29993, - "end": 30056, + "start": 30043, + "end": 30106, "loc": { "start": { - "line": 814, + "line": 815, "column": 8 }, "end": { - "line": 814, + "line": 815, "column": 71 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29999, - "end": 30055, + "start": 30049, + "end": 30105, "loc": { "start": { - "line": 814, + "line": 815, "column": 14 }, "end": { - "line": 814, + "line": 815, "column": 70 } }, "id": { "type": "Identifier", - "start": 29999, - "end": 30012, + "start": 30049, + "end": 30062, "loc": { "start": { - "line": 814, + "line": 815, "column": 14 }, "end": { - "line": 814, + "line": 815, "column": 27 }, "identifierName": "switchElement" @@ -120807,43 +121081,43 @@ }, "init": { "type": "CallExpression", - "start": 30015, - "end": 30055, + "start": 30065, + "end": 30105, "loc": { "start": { - "line": 814, + "line": 815, "column": 30 }, "end": { - "line": 814, + "line": 815, "column": 70 } }, "callee": { "type": "MemberExpression", - "start": 30015, - "end": 30038, + "start": 30065, + "end": 30088, "loc": { "start": { - "line": 814, + "line": 815, "column": 30 }, "end": { - "line": 814, + "line": 815, "column": 53 } }, "object": { "type": "Identifier", - "start": 30015, - "end": 30023, + "start": 30065, + "end": 30073, "loc": { "start": { - "line": 814, + "line": 815, "column": 30 }, "end": { - "line": 814, + "line": 815, "column": 38 }, "identifierName": "document" @@ -120852,15 +121126,15 @@ }, "property": { "type": "Identifier", - "start": 30024, - "end": 30038, + "start": 30074, + "end": 30088, "loc": { "start": { - "line": 814, + "line": 815, "column": 39 }, "end": { - "line": 814, + "line": 815, "column": 53 }, "identifierName": "getElementById" @@ -120872,15 +121146,15 @@ "arguments": [ { "type": "Identifier", - "start": 30039, - "end": 30054, + "start": 30089, + "end": 30104, "loc": { "start": { - "line": 814, + "line": 815, "column": 54 }, "end": { - "line": 814, + "line": 815, "column": 69 }, "identifierName": "switchElementId" @@ -120895,72 +121169,72 @@ }, { "type": "ExpressionStatement", - "start": 30065, - "end": 30108, + "start": 30115, + "end": 30158, "loc": { "start": { - "line": 815, + "line": 816, "column": 8 }, "end": { - "line": 815, + "line": 816, "column": 51 } }, "expression": { "type": "CallExpression", - "start": 30065, - "end": 30107, + "start": 30115, + "end": 30157, "loc": { "start": { - "line": 815, + "line": 816, "column": 8 }, "end": { - "line": 815, + "line": 816, "column": 50 } }, "callee": { "type": "MemberExpression", - "start": 30065, - "end": 30092, + "start": 30115, + "end": 30142, "loc": { "start": { - "line": 815, + "line": 816, "column": 8 }, "end": { - "line": 815, + "line": 816, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 30065, - "end": 30069, + "start": 30115, + "end": 30119, "loc": { "start": { - "line": 815, + "line": 816, "column": 8 }, "end": { - "line": 815, + "line": 816, "column": 12 } } }, "property": { "type": "Identifier", - "start": 30070, - "end": 30092, + "start": 30120, + "end": 30142, "loc": { "start": { - "line": 815, + "line": 816, "column": 13 }, "end": { - "line": 815, + "line": 816, "column": 35 }, "identifierName": "_collapseSwitchElement" @@ -120972,15 +121246,15 @@ "arguments": [ { "type": "Identifier", - "start": 30093, - "end": 30106, + "start": 30143, + "end": 30156, "loc": { "start": { - "line": 815, + "line": 816, "column": 36 }, "end": { - "line": 815, + "line": 816, "column": 49 }, "identifierName": "switchElement" @@ -120996,15 +121270,15 @@ }, { "type": "ClassMethod", - "start": 30120, - "end": 30748, + "start": 30170, + "end": 30798, "loc": { "start": { - "line": 818, + "line": 819, "column": 4 }, "end": { - "line": 836, + "line": 837, "column": 5 } }, @@ -121012,15 +121286,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 30120, - "end": 30142, + "start": 30170, + "end": 30192, "loc": { "start": { - "line": 818, + "line": 819, "column": 4 }, "end": { - "line": 818, + "line": 819, "column": 26 }, "identifierName": "_collapseSwitchElement" @@ -121035,15 +121309,15 @@ "params": [ { "type": "Identifier", - "start": 30143, - "end": 30156, + "start": 30193, + "end": 30206, "loc": { "start": { - "line": 818, + "line": 819, "column": 27 }, "end": { - "line": 818, + "line": 819, "column": 40 }, "identifierName": "switchElement" @@ -121053,44 +121327,44 @@ ], "body": { "type": "BlockStatement", - "start": 30158, - "end": 30748, + "start": 30208, + "end": 30798, "loc": { "start": { - "line": 818, + "line": 819, "column": 42 }, "end": { - "line": 836, + "line": 837, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 30168, - "end": 30219, + "start": 30218, + "end": 30269, "loc": { "start": { - "line": 819, + "line": 820, "column": 8 }, "end": { - "line": 821, + "line": 822, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 30172, - "end": 30186, + "start": 30222, + "end": 30236, "loc": { "start": { - "line": 819, + "line": 820, "column": 12 }, "end": { - "line": 819, + "line": 820, "column": 26 } }, @@ -121098,15 +121372,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 30173, - "end": 30186, + "start": 30223, + "end": 30236, "loc": { "start": { - "line": 819, + "line": 820, "column": 13 }, "end": { - "line": 819, + "line": 820, "column": 26 }, "identifierName": "switchElement" @@ -121119,30 +121393,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 30188, - "end": 30219, + "start": 30238, + "end": 30269, "loc": { "start": { - "line": 819, + "line": 820, "column": 28 }, "end": { - "line": 821, + "line": 822, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 30202, - "end": 30209, + "start": 30252, + "end": 30259, "loc": { "start": { - "line": 820, + "line": 821, "column": 12 }, "end": { - "line": 820, + "line": 821, "column": 19 } }, @@ -121155,44 +121429,44 @@ }, { "type": "VariableDeclaration", - "start": 30228, - "end": 30271, + "start": 30278, + "end": 30321, "loc": { "start": { - "line": 822, + "line": 823, "column": 8 }, "end": { - "line": 822, + "line": 823, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 30234, - "end": 30270, + "start": 30284, + "end": 30320, "loc": { "start": { - "line": 822, + "line": 823, "column": 14 }, "end": { - "line": 822, + "line": 823, "column": 50 } }, "id": { "type": "Identifier", - "start": 30234, - "end": 30240, + "start": 30284, + "end": 30290, "loc": { "start": { - "line": 822, + "line": 823, "column": 14 }, "end": { - "line": 822, + "line": 823, "column": 20 }, "identifierName": "parent" @@ -121201,29 +121475,29 @@ }, "init": { "type": "MemberExpression", - "start": 30243, - "end": 30270, + "start": 30293, + "end": 30320, "loc": { "start": { - "line": 822, + "line": 823, "column": 23 }, "end": { - "line": 822, + "line": 823, "column": 50 } }, "object": { "type": "Identifier", - "start": 30243, - "end": 30256, + "start": 30293, + "end": 30306, "loc": { "start": { - "line": 822, + "line": 823, "column": 23 }, "end": { - "line": 822, + "line": 823, "column": 36 }, "identifierName": "switchElement" @@ -121232,15 +121506,15 @@ }, "property": { "type": "Identifier", - "start": 30257, - "end": 30270, + "start": 30307, + "end": 30320, "loc": { "start": { - "line": 822, + "line": 823, "column": 37 }, "end": { - "line": 822, + "line": 823, "column": 50 }, "identifierName": "parentElement" @@ -121255,29 +121529,29 @@ }, { "type": "IfStatement", - "start": 30280, - "end": 30324, + "start": 30330, + "end": 30374, "loc": { "start": { - "line": 823, + "line": 824, "column": 8 }, "end": { - "line": 825, + "line": 826, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 30284, - "end": 30291, + "start": 30334, + "end": 30341, "loc": { "start": { - "line": 823, + "line": 824, "column": 12 }, "end": { - "line": 823, + "line": 824, "column": 19 } }, @@ -121285,15 +121559,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 30285, - "end": 30291, + "start": 30335, + "end": 30341, "loc": { "start": { - "line": 823, + "line": 824, "column": 13 }, "end": { - "line": 823, + "line": 824, "column": 19 }, "identifierName": "parent" @@ -121306,30 +121580,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 30293, - "end": 30324, + "start": 30343, + "end": 30374, "loc": { "start": { - "line": 823, + "line": 824, "column": 21 }, "end": { - "line": 825, + "line": 826, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 30307, - "end": 30314, + "start": 30357, + "end": 30364, "loc": { "start": { - "line": 824, + "line": 825, "column": 12 }, "end": { - "line": 824, + "line": 825, "column": 19 } }, @@ -121342,44 +121616,44 @@ }, { "type": "VariableDeclaration", - "start": 30333, - "end": 30371, + "start": 30383, + "end": 30421, "loc": { "start": { - "line": 826, + "line": 827, "column": 8 }, "end": { - "line": 826, + "line": 827, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 30339, - "end": 30370, + "start": 30389, + "end": 30420, "loc": { "start": { - "line": 826, + "line": 827, "column": 14 }, "end": { - "line": 826, + "line": 827, "column": 45 } }, "id": { "type": "Identifier", - "start": 30339, - "end": 30341, + "start": 30389, + "end": 30391, "loc": { "start": { - "line": 826, + "line": 827, "column": 14 }, "end": { - "line": 826, + "line": 827, "column": 16 }, "identifierName": "ul" @@ -121388,43 +121662,43 @@ }, "init": { "type": "CallExpression", - "start": 30344, - "end": 30370, + "start": 30394, + "end": 30420, "loc": { "start": { - "line": 826, + "line": 827, "column": 19 }, "end": { - "line": 826, + "line": 827, "column": 45 } }, "callee": { "type": "MemberExpression", - "start": 30344, - "end": 30364, + "start": 30394, + "end": 30414, "loc": { "start": { - "line": 826, + "line": 827, "column": 19 }, "end": { - "line": 826, + "line": 827, "column": 39 } }, "object": { "type": "Identifier", - "start": 30344, - "end": 30350, + "start": 30394, + "end": 30400, "loc": { "start": { - "line": 826, + "line": 827, "column": 19 }, "end": { - "line": 826, + "line": 827, "column": 25 }, "identifierName": "parent" @@ -121433,15 +121707,15 @@ }, "property": { "type": "Identifier", - "start": 30351, - "end": 30364, + "start": 30401, + "end": 30414, "loc": { "start": { - "line": 826, + "line": 827, "column": 26 }, "end": { - "line": 826, + "line": 827, "column": 39 }, "identifierName": "querySelector" @@ -121453,15 +121727,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 30365, - "end": 30369, + "start": 30415, + "end": 30419, "loc": { "start": { - "line": 826, + "line": 827, "column": 40 }, "end": { - "line": 826, + "line": 827, "column": 44 } }, @@ -121479,29 +121753,29 @@ }, { "type": "IfStatement", - "start": 30380, - "end": 30420, + "start": 30430, + "end": 30470, "loc": { "start": { - "line": 827, + "line": 828, "column": 8 }, "end": { - "line": 829, + "line": 830, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 30384, - "end": 30387, + "start": 30434, + "end": 30437, "loc": { "start": { - "line": 827, + "line": 828, "column": 12 }, "end": { - "line": 827, + "line": 828, "column": 15 } }, @@ -121509,15 +121783,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 30385, - "end": 30387, + "start": 30435, + "end": 30437, "loc": { "start": { - "line": 827, + "line": 828, "column": 13 }, "end": { - "line": 827, + "line": 828, "column": 15 }, "identifierName": "ul" @@ -121530,30 +121804,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 30389, - "end": 30420, + "start": 30439, + "end": 30470, "loc": { "start": { - "line": 827, + "line": 828, "column": 17 }, "end": { - "line": 829, + "line": 830, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 30403, - "end": 30410, + "start": 30453, + "end": 30460, "loc": { "start": { - "line": 828, + "line": 829, "column": 12 }, "end": { - "line": 828, + "line": 829, "column": 19 } }, @@ -121566,57 +121840,57 @@ }, { "type": "ExpressionStatement", - "start": 30429, - "end": 30452, + "start": 30479, + "end": 30502, "loc": { "start": { - "line": 830, + "line": 831, "column": 8 }, "end": { - "line": 830, + "line": 831, "column": 31 } }, "expression": { "type": "CallExpression", - "start": 30429, - "end": 30451, + "start": 30479, + "end": 30501, "loc": { "start": { - "line": 830, + "line": 831, "column": 8 }, "end": { - "line": 830, + "line": 831, "column": 30 } }, "callee": { "type": "MemberExpression", - "start": 30429, - "end": 30447, + "start": 30479, + "end": 30497, "loc": { "start": { - "line": 830, + "line": 831, "column": 8 }, "end": { - "line": 830, + "line": 831, "column": 26 } }, "object": { "type": "Identifier", - "start": 30429, - "end": 30435, + "start": 30479, + "end": 30485, "loc": { "start": { - "line": 830, + "line": 831, "column": 8 }, "end": { - "line": 830, + "line": 831, "column": 14 }, "identifierName": "parent" @@ -121625,15 +121899,15 @@ }, "property": { "type": "Identifier", - "start": 30436, - "end": 30447, + "start": 30486, + "end": 30497, "loc": { "start": { - "line": 830, + "line": 831, "column": 15 }, "end": { - "line": 830, + "line": 831, "column": 26 }, "identifierName": "removeChild" @@ -121645,15 +121919,15 @@ "arguments": [ { "type": "Identifier", - "start": 30448, - "end": 30450, + "start": 30498, + "end": 30500, "loc": { "start": { - "line": 830, + "line": 831, "column": 27 }, "end": { - "line": 830, + "line": 831, "column": 29 }, "identifierName": "ul" @@ -121665,71 +121939,71 @@ }, { "type": "ExpressionStatement", - "start": 30461, - "end": 30501, + "start": 30511, + "end": 30551, "loc": { "start": { - "line": 831, + "line": 832, "column": 8 }, "end": { - "line": 831, + "line": 832, "column": 48 } }, "expression": { "type": "CallExpression", - "start": 30461, - "end": 30500, + "start": 30511, + "end": 30550, "loc": { "start": { - "line": 831, + "line": 832, "column": 8 }, "end": { - "line": 831, + "line": 832, "column": 47 } }, "callee": { "type": "MemberExpression", - "start": 30461, - "end": 30491, + "start": 30511, + "end": 30541, "loc": { "start": { - "line": 831, + "line": 832, "column": 8 }, "end": { - "line": 831, + "line": 832, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 30461, - "end": 30484, + "start": 30511, + "end": 30534, "loc": { "start": { - "line": 831, + "line": 832, "column": 8 }, "end": { - "line": 831, + "line": 832, "column": 31 } }, "object": { "type": "Identifier", - "start": 30461, - "end": 30474, + "start": 30511, + "end": 30524, "loc": { "start": { - "line": 831, + "line": 832, "column": 8 }, "end": { - "line": 831, + "line": 832, "column": 21 }, "identifierName": "switchElement" @@ -121738,15 +122012,15 @@ }, "property": { "type": "Identifier", - "start": 30475, - "end": 30484, + "start": 30525, + "end": 30534, "loc": { "start": { - "line": 831, + "line": 832, "column": 22 }, "end": { - "line": 831, + "line": 832, "column": 31 }, "identifierName": "classList" @@ -121757,15 +122031,15 @@ }, "property": { "type": "Identifier", - "start": 30485, - "end": 30491, + "start": 30535, + "end": 30541, "loc": { "start": { - "line": 831, + "line": 832, "column": 32 }, "end": { - "line": 831, + "line": 832, "column": 38 }, "identifierName": "remove" @@ -121777,15 +122051,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 30492, - "end": 30499, + "start": 30542, + "end": 30549, "loc": { "start": { - "line": 831, + "line": 832, "column": 39 }, "end": { - "line": 831, + "line": 832, "column": 46 } }, @@ -121800,71 +122074,71 @@ }, { "type": "ExpressionStatement", - "start": 30510, - "end": 30546, + "start": 30560, + "end": 30596, "loc": { "start": { - "line": 832, + "line": 833, "column": 8 }, "end": { - "line": 832, + "line": 833, "column": 44 } }, "expression": { "type": "CallExpression", - "start": 30510, - "end": 30545, + "start": 30560, + "end": 30595, "loc": { "start": { - "line": 832, + "line": 833, "column": 8 }, "end": { - "line": 832, + "line": 833, "column": 43 } }, "callee": { "type": "MemberExpression", - "start": 30510, - "end": 30537, + "start": 30560, + "end": 30587, "loc": { "start": { - "line": 832, + "line": 833, "column": 8 }, "end": { - "line": 832, + "line": 833, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 30510, - "end": 30533, + "start": 30560, + "end": 30583, "loc": { "start": { - "line": 832, + "line": 833, "column": 8 }, "end": { - "line": 832, + "line": 833, "column": 31 } }, "object": { "type": "Identifier", - "start": 30510, - "end": 30523, + "start": 30560, + "end": 30573, "loc": { "start": { - "line": 832, + "line": 833, "column": 8 }, "end": { - "line": 832, + "line": 833, "column": 21 }, "identifierName": "switchElement" @@ -121873,15 +122147,15 @@ }, "property": { "type": "Identifier", - "start": 30524, - "end": 30533, + "start": 30574, + "end": 30583, "loc": { "start": { - "line": 832, + "line": 833, "column": 22 }, "end": { - "line": 832, + "line": 833, "column": 31 }, "identifierName": "classList" @@ -121892,15 +122166,15 @@ }, "property": { "type": "Identifier", - "start": 30534, - "end": 30537, + "start": 30584, + "end": 30587, "loc": { "start": { - "line": 832, + "line": 833, "column": 32 }, "end": { - "line": 832, + "line": 833, "column": 35 }, "identifierName": "add" @@ -121912,15 +122186,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 30538, - "end": 30544, + "start": 30588, + "end": 30594, "loc": { "start": { - "line": 832, + "line": 833, "column": 36 }, "end": { - "line": 832, + "line": 833, "column": 42 } }, @@ -121935,58 +122209,58 @@ }, { "type": "ExpressionStatement", - "start": 30555, - "end": 30587, + "start": 30605, + "end": 30637, "loc": { "start": { - "line": 833, + "line": 834, "column": 8 }, "end": { - "line": 833, + "line": 834, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 30555, - "end": 30586, + "start": 30605, + "end": 30636, "loc": { "start": { - "line": 833, + "line": 834, "column": 8 }, "end": { - "line": 833, + "line": 834, "column": 39 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 30555, - "end": 30580, + "start": 30605, + "end": 30630, "loc": { "start": { - "line": 833, + "line": 834, "column": 8 }, "end": { - "line": 833, + "line": 834, "column": 33 } }, "object": { "type": "Identifier", - "start": 30555, - "end": 30568, + "start": 30605, + "end": 30618, "loc": { "start": { - "line": 833, + "line": 834, "column": 8 }, "end": { - "line": 833, + "line": 834, "column": 21 }, "identifierName": "switchElement" @@ -121995,15 +122269,15 @@ }, "property": { "type": "Identifier", - "start": 30569, - "end": 30580, + "start": 30619, + "end": 30630, "loc": { "start": { - "line": 833, + "line": 834, "column": 22 }, "end": { - "line": 833, + "line": 834, "column": 33 }, "identifierName": "textContent" @@ -122014,15 +122288,15 @@ }, "right": { "type": "StringLiteral", - "start": 30583, - "end": 30586, + "start": 30633, + "end": 30636, "loc": { "start": { - "line": 833, + "line": 834, "column": 36 }, "end": { - "line": 833, + "line": 834, "column": 39 } }, @@ -122036,158 +122310,8 @@ }, { "type": "ExpressionStatement", - "start": 30596, - "end": 30667, - "loc": { - "start": { - "line": 834, - "column": 8 - }, - "end": { - "line": 834, - "column": 79 - } - }, - "expression": { - "type": "CallExpression", - "start": 30596, - "end": 30666, - "loc": { - "start": { - "line": 834, - "column": 8 - }, - "end": { - "line": 834, - "column": 78 - } - }, - "callee": { - "type": "MemberExpression", - "start": 30596, - "end": 30629, - "loc": { - "start": { - "line": 834, - "column": 8 - }, - "end": { - "line": 834, - "column": 41 - } - }, - "object": { - "type": "Identifier", - "start": 30596, - "end": 30609, - "loc": { - "start": { - "line": 834, - "column": 8 - }, - "end": { - "line": 834, - "column": 21 - }, - "identifierName": "switchElement" - }, - "name": "switchElement" - }, - "property": { - "type": "Identifier", - "start": 30610, - "end": 30629, - "loc": { - "start": { - "line": 834, - "column": 22 - }, - "end": { - "line": 834, - "column": 41 - }, - "identifierName": "removeEventListener" - }, - "name": "removeEventListener" - }, - "computed": false - }, - "arguments": [ - { - "type": "StringLiteral", - "start": 30630, - "end": 30637, - "loc": { - "start": { - "line": 834, - "column": 42 - }, - "end": { - "line": 834, - "column": 49 - } - }, - "extra": { - "rawValue": "click", - "raw": "'click'" - }, - "value": "click" - }, - { - "type": "MemberExpression", - "start": 30639, - "end": 30665, - "loc": { - "start": { - "line": 834, - "column": 51 - }, - "end": { - "line": 834, - "column": 77 - } - }, - "object": { - "type": "ThisExpression", - "start": 30639, - "end": 30643, - "loc": { - "start": { - "line": 834, - "column": 51 - }, - "end": { - "line": 834, - "column": 55 - } - } - }, - "property": { - "type": "Identifier", - "start": 30644, - "end": 30665, - "loc": { - "start": { - "line": 834, - "column": 56 - }, - "end": { - "line": 834, - "column": 77 - }, - "identifierName": "switchCollapseHandler" - }, - "name": "switchCollapseHandler" - }, - "computed": false - } - ] - } - }, - { - "type": "ExpressionStatement", - "start": 30676, - "end": 30742, + "start": 30646, + "end": 30717, "loc": { "start": { "line": 835, @@ -122195,13 +122319,13 @@ }, "end": { "line": 835, - "column": 74 + "column": 79 } }, "expression": { "type": "CallExpression", - "start": 30676, - "end": 30741, + "start": 30646, + "end": 30716, "loc": { "start": { "line": 835, @@ -122209,13 +122333,13 @@ }, "end": { "line": 835, - "column": 73 + "column": 78 } }, "callee": { "type": "MemberExpression", - "start": 30676, - "end": 30706, + "start": 30646, + "end": 30679, "loc": { "start": { "line": 835, @@ -122223,13 +122347,13 @@ }, "end": { "line": 835, - "column": 38 + "column": 41 } }, "object": { "type": "Identifier", - "start": 30676, - "end": 30689, + "start": 30646, + "end": 30659, "loc": { "start": { "line": 835, @@ -122245,8 +122369,8 @@ }, "property": { "type": "Identifier", - "start": 30690, - "end": 30706, + "start": 30660, + "end": 30679, "loc": { "start": { "line": 835, @@ -122254,6 +122378,156 @@ }, "end": { "line": 835, + "column": 41 + }, + "identifierName": "removeEventListener" + }, + "name": "removeEventListener" + }, + "computed": false + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 30680, + "end": 30687, + "loc": { + "start": { + "line": 835, + "column": 42 + }, + "end": { + "line": 835, + "column": 49 + } + }, + "extra": { + "rawValue": "click", + "raw": "'click'" + }, + "value": "click" + }, + { + "type": "MemberExpression", + "start": 30689, + "end": 30715, + "loc": { + "start": { + "line": 835, + "column": 51 + }, + "end": { + "line": 835, + "column": 77 + } + }, + "object": { + "type": "ThisExpression", + "start": 30689, + "end": 30693, + "loc": { + "start": { + "line": 835, + "column": 51 + }, + "end": { + "line": 835, + "column": 55 + } + } + }, + "property": { + "type": "Identifier", + "start": 30694, + "end": 30715, + "loc": { + "start": { + "line": 835, + "column": 56 + }, + "end": { + "line": 835, + "column": 77 + }, + "identifierName": "switchCollapseHandler" + }, + "name": "switchCollapseHandler" + }, + "computed": false + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 30726, + "end": 30792, + "loc": { + "start": { + "line": 836, + "column": 8 + }, + "end": { + "line": 836, + "column": 74 + } + }, + "expression": { + "type": "CallExpression", + "start": 30726, + "end": 30791, + "loc": { + "start": { + "line": 836, + "column": 8 + }, + "end": { + "line": 836, + "column": 73 + } + }, + "callee": { + "type": "MemberExpression", + "start": 30726, + "end": 30756, + "loc": { + "start": { + "line": 836, + "column": 8 + }, + "end": { + "line": 836, + "column": 38 + } + }, + "object": { + "type": "Identifier", + "start": 30726, + "end": 30739, + "loc": { + "start": { + "line": 836, + "column": 8 + }, + "end": { + "line": 836, + "column": 21 + }, + "identifierName": "switchElement" + }, + "name": "switchElement" + }, + "property": { + "type": "Identifier", + "start": 30740, + "end": 30756, + "loc": { + "start": { + "line": 836, + "column": 22 + }, + "end": { + "line": 836, "column": 38 }, "identifierName": "addEventListener" @@ -122265,15 +122539,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 30707, - "end": 30714, + "start": 30757, + "end": 30764, "loc": { "start": { - "line": 835, + "line": 836, "column": 39 }, "end": { - "line": 835, + "line": 836, "column": 46 } }, @@ -122285,44 +122559,44 @@ }, { "type": "MemberExpression", - "start": 30716, - "end": 30740, + "start": 30766, + "end": 30790, "loc": { "start": { - "line": 835, + "line": 836, "column": 48 }, "end": { - "line": 835, + "line": 836, "column": 72 } }, "object": { "type": "ThisExpression", - "start": 30716, - "end": 30720, + "start": 30766, + "end": 30770, "loc": { "start": { - "line": 835, + "line": 836, "column": 48 }, "end": { - "line": 835, + "line": 836, "column": 52 } } }, "property": { "type": "Identifier", - "start": 30721, - "end": 30740, + "start": 30771, + "end": 30790, "loc": { "start": { - "line": 835, + "line": 836, "column": 53 }, "end": { - "line": 835, + "line": 836, "column": 72 }, "identifierName": "switchExpandHandler" @@ -122342,15 +122616,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this ModelTreeView.\n * @private\n ", - "start": 30754, - "end": 30817, + "start": 30804, + "end": 30867, "loc": { "start": { - "line": 838, + "line": 839, "column": 4 }, "end": { - "line": 841, + "line": 842, "column": 7 } } @@ -122359,15 +122633,15 @@ }, { "type": "ClassMethod", - "start": 30822, - "end": 31113, + "start": 30872, + "end": 31163, "loc": { "start": { - "line": 842, + "line": 843, "column": 4 }, "end": { - "line": 849, + "line": 850, "column": 5 } }, @@ -122375,15 +122649,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 30822, - "end": 30829, + "start": 30872, + "end": 30879, "loc": { "start": { - "line": 842, + "line": 843, "column": 4 }, "end": { - "line": 842, + "line": 843, "column": 11 }, "identifierName": "destroy" @@ -122399,87 +122673,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 30832, - "end": 31113, + "start": 30882, + "end": 31163, "loc": { "start": { - "line": 842, + "line": 843, "column": 14 }, "end": { - "line": 849, + "line": 850, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 30842, - "end": 31107, + "start": 30892, + "end": 31157, "loc": { "start": { - "line": 843, + "line": 844, "column": 8 }, "end": { - "line": 848, + "line": 849, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 30846, - "end": 30883, + "start": 30896, + "end": 30933, "loc": { "start": { - "line": 843, + "line": 844, "column": 12 }, "end": { - "line": 843, + "line": 844, "column": 49 } }, "left": { "type": "MemberExpression", - "start": 30846, - "end": 30863, + "start": 30896, + "end": 30913, "loc": { "start": { - "line": 843, + "line": 844, "column": 12 }, "end": { - "line": 843, + "line": 844, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 30846, - "end": 30850, + "start": 30896, + "end": 30900, "loc": { "start": { - "line": 843, + "line": 844, "column": 12 }, "end": { - "line": 843, + "line": 844, "column": 16 } } }, "property": { "type": "Identifier", - "start": 30851, - "end": 30863, + "start": 30901, + "end": 30913, "loc": { "start": { - "line": 843, + "line": 844, "column": 17 }, "end": { - "line": 843, + "line": 844, "column": 29 }, "identifierName": "_rootElement" @@ -122491,15 +122765,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 30867, - "end": 30883, + "start": 30917, + "end": 30933, "loc": { "start": { - "line": 843, + "line": 844, "column": 33 }, "end": { - "line": 843, + "line": 844, "column": 49 } }, @@ -122507,44 +122781,44 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 30868, - "end": 30883, + "start": 30918, + "end": 30933, "loc": { "start": { - "line": 843, + "line": 844, "column": 34 }, "end": { - "line": 843, + "line": 844, "column": 49 } }, "object": { "type": "ThisExpression", - "start": 30868, - "end": 30872, + "start": 30918, + "end": 30922, "loc": { "start": { - "line": 843, + "line": 844, "column": 34 }, "end": { - "line": 843, + "line": 844, "column": 38 } } }, "property": { "type": "Identifier", - "start": 30873, - "end": 30883, + "start": 30923, + "end": 30933, "loc": { "start": { - "line": 843, + "line": 844, "column": 39 }, "end": { - "line": 843, + "line": 844, "column": 49 }, "identifierName": "_destroyed" @@ -122560,115 +122834,115 @@ }, "consequent": { "type": "BlockStatement", - "start": 30885, - "end": 31107, + "start": 30935, + "end": 31157, "loc": { "start": { - "line": 843, + "line": 844, "column": 51 }, "end": { - "line": 848, + "line": 849, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 30899, - "end": 30959, + "start": 30949, + "end": 31009, "loc": { "start": { - "line": 844, + "line": 845, "column": 12 }, "end": { - "line": 844, + "line": 845, "column": 72 } }, "expression": { "type": "CallExpression", - "start": 30899, - "end": 30958, + "start": 30949, + "end": 31008, "loc": { "start": { - "line": 844, + "line": 845, "column": 12 }, "end": { - "line": 844, + "line": 845, "column": 71 } }, "callee": { "type": "MemberExpression", - "start": 30899, - "end": 30939, + "start": 30949, + "end": 30989, "loc": { "start": { - "line": 844, + "line": 845, "column": 12 }, "end": { - "line": 844, + "line": 845, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 30899, - "end": 30927, + "start": 30949, + "end": 30977, "loc": { "start": { - "line": 844, + "line": 845, "column": 12 }, "end": { - "line": 844, + "line": 845, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 30899, - "end": 30916, + "start": 30949, + "end": 30966, "loc": { "start": { - "line": 844, + "line": 845, "column": 12 }, "end": { - "line": 844, + "line": 845, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 30899, - "end": 30903, + "start": 30949, + "end": 30953, "loc": { "start": { - "line": 844, + "line": 845, "column": 12 }, "end": { - "line": 844, + "line": 845, "column": 16 } } }, "property": { "type": "Identifier", - "start": 30904, - "end": 30916, + "start": 30954, + "end": 30966, "loc": { "start": { - "line": 844, + "line": 845, "column": 17 }, "end": { - "line": 844, + "line": 845, "column": 29 }, "identifierName": "_rootElement" @@ -122679,15 +122953,15 @@ }, "property": { "type": "Identifier", - "start": 30917, - "end": 30927, + "start": 30967, + "end": 30977, "loc": { "start": { - "line": 844, + "line": 845, "column": 30 }, "end": { - "line": 844, + "line": 845, "column": 40 }, "identifierName": "parentNode" @@ -122698,15 +122972,15 @@ }, "property": { "type": "Identifier", - "start": 30928, - "end": 30939, + "start": 30978, + "end": 30989, "loc": { "start": { - "line": 844, + "line": 845, "column": 41 }, "end": { - "line": 844, + "line": 845, "column": 52 }, "identifierName": "removeChild" @@ -122718,44 +122992,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 30940, - "end": 30957, + "start": 30990, + "end": 31007, "loc": { "start": { - "line": 844, + "line": 845, "column": 53 }, "end": { - "line": 844, + "line": 845, "column": 70 } }, "object": { "type": "ThisExpression", - "start": 30940, - "end": 30944, + "start": 30990, + "end": 30994, "loc": { "start": { - "line": 844, + "line": 845, "column": 53 }, "end": { - "line": 844, + "line": 845, "column": 57 } } }, "property": { "type": "Identifier", - "start": 30945, - "end": 30957, + "start": 30995, + "end": 31007, "loc": { "start": { - "line": 844, + "line": 845, "column": 58 }, "end": { - "line": 844, + "line": 845, "column": 70 }, "identifierName": "_rootElement" @@ -122769,100 +123043,100 @@ }, { "type": "ExpressionStatement", - "start": 30972, - "end": 31021, + "start": 31022, + "end": 31071, "loc": { "start": { - "line": 845, + "line": 846, "column": 12 }, "end": { - "line": 845, + "line": 846, "column": 61 } }, "expression": { "type": "CallExpression", - "start": 30972, - "end": 31020, + "start": 31022, + "end": 31070, "loc": { "start": { - "line": 845, + "line": 846, "column": 12 }, "end": { - "line": 845, + "line": 846, "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 30972, - "end": 30994, + "start": 31022, + "end": 31044, "loc": { "start": { - "line": 845, + "line": 846, "column": 12 }, "end": { - "line": 845, + "line": 846, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 30972, - "end": 30990, + "start": 31022, + "end": 31040, "loc": { "start": { - "line": 845, + "line": 846, "column": 12 }, "end": { - "line": 845, + "line": 846, "column": 30 } }, "object": { "type": "MemberExpression", - "start": 30972, - "end": 30984, + "start": 31022, + "end": 31034, "loc": { "start": { - "line": 845, + "line": 846, "column": 12 }, "end": { - "line": 845, + "line": 846, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 30972, - "end": 30976, + "start": 31022, + "end": 31026, "loc": { "start": { - "line": 845, + "line": 846, "column": 12 }, "end": { - "line": 845, + "line": 846, "column": 16 } } }, "property": { "type": "Identifier", - "start": 30977, - "end": 30984, + "start": 31027, + "end": 31034, "loc": { "start": { - "line": 845, + "line": 846, "column": 17 }, "end": { - "line": 845, + "line": 846, "column": 24 }, "identifierName": "_viewer" @@ -122873,15 +123147,15 @@ }, "property": { "type": "Identifier", - "start": 30985, - "end": 30990, + "start": 31035, + "end": 31040, "loc": { "start": { - "line": 845, + "line": 846, "column": 25 }, "end": { - "line": 845, + "line": 846, "column": 30 }, "identifierName": "scene" @@ -122892,15 +123166,15 @@ }, "property": { "type": "Identifier", - "start": 30991, - "end": 30994, + "start": 31041, + "end": 31044, "loc": { "start": { - "line": 845, + "line": 846, "column": 31 }, "end": { - "line": 845, + "line": 846, "column": 34 }, "identifierName": "off" @@ -122912,44 +123186,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 30995, - "end": 31019, + "start": 31045, + "end": 31069, "loc": { "start": { - "line": 845, + "line": 846, "column": 35 }, "end": { - "line": 845, + "line": 846, "column": 59 } }, "object": { "type": "ThisExpression", - "start": 30995, - "end": 30999, + "start": 31045, + "end": 31049, "loc": { "start": { - "line": 845, + "line": 846, "column": 35 }, "end": { - "line": 845, + "line": 846, "column": 39 } } }, "property": { "type": "Identifier", - "start": 31000, - "end": 31019, + "start": 31050, + "end": 31069, "loc": { "start": { - "line": 845, + "line": 846, "column": 40 }, "end": { - "line": 845, + "line": 846, "column": 59 }, "identifierName": "_onObjectVisibility" @@ -122963,73 +123237,73 @@ }, { "type": "ExpressionStatement", - "start": 31034, - "end": 31057, + "start": 31084, + "end": 31107, "loc": { "start": { - "line": 846, + "line": 847, "column": 12 }, "end": { - "line": 846, + "line": 847, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 31034, - "end": 31056, + "start": 31084, + "end": 31106, "loc": { "start": { - "line": 846, + "line": 847, "column": 12 }, "end": { - "line": 846, + "line": 847, "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 31034, - "end": 31049, + "start": 31084, + "end": 31099, "loc": { "start": { - "line": 846, + "line": 847, "column": 12 }, "end": { - "line": 846, + "line": 847, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 31034, - "end": 31038, + "start": 31084, + "end": 31088, "loc": { "start": { - "line": 846, + "line": 847, "column": 12 }, "end": { - "line": 846, + "line": 847, "column": 16 } } }, "property": { "type": "Identifier", - "start": 31039, - "end": 31049, + "start": 31089, + "end": 31099, "loc": { "start": { - "line": 846, + "line": 847, "column": 17 }, "end": { - "line": 846, + "line": 847, "column": 27 }, "identifierName": "_destroyed" @@ -123040,15 +123314,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 31052, - "end": 31056, + "start": 31102, + "end": 31106, "loc": { "start": { - "line": 846, + "line": 847, "column": 30 }, "end": { - "line": 846, + "line": 847, "column": 34 } }, @@ -123058,57 +123332,57 @@ }, { "type": "ExpressionStatement", - "start": 31070, - "end": 31097, + "start": 31120, + "end": 31147, "loc": { "start": { - "line": 847, + "line": 848, "column": 12 }, "end": { - "line": 847, + "line": 848, "column": 39 } }, "expression": { "type": "CallExpression", - "start": 31070, - "end": 31096, + "start": 31120, + "end": 31146, "loc": { "start": { - "line": 847, + "line": 848, "column": 12 }, "end": { - "line": 847, + "line": 848, "column": 38 } }, "callee": { "type": "MemberExpression", - "start": 31070, - "end": 31086, + "start": 31120, + "end": 31136, "loc": { "start": { - "line": 847, + "line": 848, "column": 12 }, "end": { - "line": 847, + "line": 848, "column": 28 } }, "object": { "type": "Identifier", - "start": 31070, - "end": 31075, + "start": 31120, + "end": 31125, "loc": { "start": { - "line": 847, + "line": 848, "column": 12 }, "end": { - "line": 847, + "line": 848, "column": 17 }, "identifierName": "idMap" @@ -123117,15 +123391,15 @@ }, "property": { "type": "Identifier", - "start": 31076, - "end": 31086, + "start": 31126, + "end": 31136, "loc": { "start": { - "line": 847, + "line": 848, "column": 18 }, "end": { - "line": 847, + "line": 848, "column": 28 }, "identifierName": "removeItem" @@ -123137,44 +123411,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 31087, - "end": 31095, + "start": 31137, + "end": 31145, "loc": { "start": { - "line": 847, + "line": 848, "column": 29 }, "end": { - "line": 847, + "line": 848, "column": 37 } }, "object": { "type": "ThisExpression", - "start": 31087, - "end": 31091, + "start": 31137, + "end": 31141, "loc": { "start": { - "line": 847, + "line": 848, "column": 29 }, "end": { - "line": 847, + "line": 848, "column": 33 } } }, "property": { "type": "Identifier", - "start": 31092, - "end": 31095, + "start": 31142, + "end": 31145, "loc": { "start": { - "line": 847, + "line": 848, "column": 34 }, "end": { - "line": 847, + "line": 848, "column": 37 }, "identifierName": "_id" @@ -123198,15 +123472,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this ModelTreeView.\n * @private\n ", - "start": 30754, - "end": 30817, + "start": 30804, + "end": 30867, "loc": { "start": { - "line": 838, + "line": 839, "column": 4 }, "end": { - "line": 841, + "line": 842, "column": 7 } } @@ -123487,15 +123761,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n * @param depth\n ", - "start": 25641, - "end": 25688, + "start": 25691, + "end": 25738, "loc": { "start": { - "line": 689, + "line": 690, "column": 4 }, "end": { - "line": 692, + "line": 693, "column": 7 } } @@ -123503,15 +123777,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 26551, - "end": 26578, + "start": 26601, + "end": 26628, "loc": { "start": { - "line": 716, + "line": 717, "column": 4 }, "end": { - "line": 718, + "line": 719, "column": 7 } } @@ -123519,15 +123793,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n * @param objectId\n ", - "start": 26826, - "end": 26876, + "start": 26876, + "end": 26926, "loc": { "start": { - "line": 727, + "line": 728, "column": 4 }, "end": { - "line": 730, + "line": 731, "column": 7 } } @@ -123535,15 +123809,15 @@ { "type": "CommentLine", "value": " Node may not exist for the given object if (this._pruneEmptyNodes == true)", - "start": 27077, - "end": 27154, + "start": 27127, + "end": 27204, "loc": { "start": { - "line": 737, + "line": 738, "column": 20 }, "end": { - "line": 737, + "line": 738, "column": 97 } } @@ -123551,15 +123825,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 28368, - "end": 28395, + "start": 28418, + "end": 28445, "loc": { "start": { - "line": 770, + "line": 771, "column": 4 }, "end": { - "line": 772, + "line": 773, "column": 7 } } @@ -123567,15 +123841,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this ModelTreeView.\n * @private\n ", - "start": 30754, - "end": 30817, + "start": 30804, + "end": 30867, "loc": { "start": { - "line": 838, + "line": 839, "column": 4 }, "end": { - "line": 841, + "line": 842, "column": 7 } } @@ -218409,9 +218683,9 @@ "postfix": false, "binop": null }, - "value": "addEventListener", + "value": "style", "start": 24762, - "end": 24778, + "end": 24767, "loc": { "start": { "line": 663, @@ -218419,13 +218693,13 @@ }, "end": { "line": 663, - "column": 33 + "column": 22 } } }, { "type": { - "label": "(", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -218433,18 +218707,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 24778, - "end": 24779, + "start": 24767, + "end": 24768, "loc": { "start": { "line": 663, - "column": 33 + "column": 22 }, "end": { "line": 663, - "column": 34 + "column": 23 } } }, @@ -218461,24 +218736,24 @@ "binop": null, "updateContext": null }, - "value": "change", - "start": 24779, - "end": 24787, + "value": "pointer-events", + "start": 24768, + "end": 24784, "loc": { "start": { "line": 663, - "column": 34 + "column": 23 }, "end": { "line": 663, - "column": 42 + "column": 39 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -218488,23 +218763,49 @@ "binop": null, "updateContext": null }, - "start": 24787, - "end": 24788, + "start": 24784, + "end": 24785, "loc": { "start": { "line": 663, - "column": 42 + "column": 39 }, "end": { "line": 663, - "column": 43 + "column": 40 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 24786, + "end": 24787, + "loc": { + "start": { + "line": 663, + "column": 41 + }, + "end": { + "line": 663, + "column": 42 + } + } + }, + { + "type": { + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -218515,13 +218816,13 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 24789, + "value": "all", + "start": 24788, "end": 24793, "loc": { "start": { "line": 663, - "column": 44 + "column": 43 }, "end": { "line": 663, @@ -218531,8 +218832,8 @@ }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -218567,23 +218868,23 @@ "postfix": false, "binop": null }, - "value": "_checkboxChangeHandler", - "start": 24794, - "end": 24816, + "value": "checkbox", + "start": 24803, + "end": 24811, "loc": { "start": { - "line": 663, - "column": 49 + "line": 664, + "column": 8 }, "end": { - "line": 663, - "column": 71 + "line": 664, + "column": 16 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -218591,50 +218892,76 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 24811, + "end": 24812, + "loc": { + "start": { + "line": 664, + "column": 16 + }, + "end": { + "line": 664, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "start": 24816, - "end": 24817, + "value": "addEventListener", + "start": 24812, + "end": 24828, "loc": { "start": { - "line": 663, - "column": 71 + "line": 664, + "column": 17 }, "end": { - "line": 663, - "column": 72 + "line": 664, + "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": 24817, - "end": 24818, + "start": 24828, + "end": 24829, "loc": { "start": { - "line": 663, - "column": 72 + "line": 664, + "column": 33 }, "end": { - "line": 663, - "column": 73 + "line": 664, + "column": 34 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -218642,26 +218969,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "nodeElement", - "start": 24827, - "end": 24838, + "value": "change", + "start": 24829, + "end": 24837, "loc": { "start": { "line": 664, - "column": 8 + "column": 34 }, "end": { "line": 664, - "column": 19 + "column": 42 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -218671,22 +218999,23 @@ "binop": null, "updateContext": null }, - "start": 24838, - "end": 24839, + "start": 24837, + "end": 24838, "loc": { "start": { "line": 664, - "column": 19 + "column": 42 }, "end": { "line": 664, - "column": 20 + "column": 43 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -218694,44 +219023,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "appendChild", + "value": "this", "start": 24839, - "end": 24850, + "end": 24843, "loc": { "start": { "line": 664, - "column": 20 + "column": 44 }, "end": { "line": 664, - "column": 31 + "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": 24850, - "end": 24851, + "start": 24843, + "end": 24844, "loc": { "start": { "line": 664, - "column": 31 + "column": 48 }, "end": { "line": 664, - "column": 32 + "column": 49 } } }, @@ -218747,17 +219078,17 @@ "postfix": false, "binop": null }, - "value": "checkbox", - "start": 24851, - "end": 24859, + "value": "_checkboxChangeHandler", + "start": 24844, + "end": 24866, "loc": { "start": { "line": 664, - "column": 32 + "column": 49 }, "end": { "line": 664, - "column": 40 + "column": 71 } } }, @@ -218773,16 +219104,16 @@ "postfix": false, "binop": null }, - "start": 24859, - "end": 24860, + "start": 24866, + "end": 24867, "loc": { "start": { "line": 664, - "column": 40 + "column": 71 }, "end": { "line": 664, - "column": 41 + "column": 72 } } }, @@ -218799,36 +219130,34 @@ "binop": null, "updateContext": null }, - "start": 24860, - "end": 24861, + "start": 24867, + "end": 24868, "loc": { "start": { "line": 664, - "column": 41 + "column": 72 }, "end": { "line": 664, - "column": 42 + "column": 73 } } }, { "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": 24870, - "end": 24875, + "value": "nodeElement", + "start": 24877, + "end": 24888, "loc": { "start": { "line": 665, @@ -218836,67 +219165,66 @@ }, "end": { "line": 665, - "column": 13 + "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": "span", - "start": 24876, - "end": 24880, + "start": 24888, + "end": 24889, "loc": { "start": { "line": 665, - "column": 14 + "column": 19 }, "end": { "line": 665, - "column": 18 + "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": 24881, - "end": 24882, + "value": "appendChild", + "start": 24889, + "end": 24900, "loc": { "start": { "line": 665, - "column": 19 + "column": 20 }, "end": { "line": 665, - "column": 20 + "column": 31 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -218905,51 +219233,50 @@ "postfix": false, "binop": null }, - "value": "document", - "start": 24883, - "end": 24891, + "start": 24900, + "end": 24901, "loc": { "start": { "line": 665, - "column": 21 + "column": 31 }, "end": { "line": 665, - "column": 29 + "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": 24891, - "end": 24892, + "value": "checkbox", + "start": 24901, + "end": 24909, "loc": { "start": { "line": 665, - "column": 29 + "column": 32 }, "end": { "line": 665, - "column": 30 + "column": 40 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -218957,50 +219284,51 @@ "postfix": false, "binop": null }, - "value": "createElement", - "start": 24892, - "end": 24905, + "start": 24909, + "end": 24910, "loc": { "start": { "line": 665, - "column": 30 + "column": 40 }, "end": { "line": 665, - "column": 43 + "column": 41 } } }, { "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": 24905, - "end": 24906, + "start": 24910, + "end": 24911, "loc": { "start": { "line": 665, - "column": 43 + "column": 41 }, "end": { "line": 665, - "column": 44 + "column": 42 } } }, { "type": { - "label": "string", + "label": "const", + "keyword": "const", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -219009,25 +219337,25 @@ "binop": null, "updateContext": null }, - "value": "span", - "start": 24906, - "end": 24912, + "value": "const", + "start": 24920, + "end": 24925, "loc": { "start": { - "line": 665, - "column": 44 + "line": 666, + "column": 8 }, "end": { - "line": 665, - "column": 50 + "line": 666, + "column": 13 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -219035,42 +219363,44 @@ "postfix": false, "binop": null }, - "start": 24912, - "end": 24913, + "value": "span", + "start": 24926, + "end": 24930, "loc": { "start": { - "line": 665, - "column": 50 + "line": 666, + "column": 14 }, "end": { - "line": 665, - "column": 51 + "line": 666, + "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": 24913, - "end": 24914, + "value": "=", + "start": 24931, + "end": 24932, "loc": { "start": { - "line": 665, - "column": 51 + "line": 666, + "column": 19 }, "end": { - "line": 665, - "column": 52 + "line": 666, + "column": 20 } } }, @@ -219086,17 +219416,17 @@ "postfix": false, "binop": null }, - "value": "span", - "start": 24923, - "end": 24927, + "value": "document", + "start": 24933, + "end": 24941, "loc": { "start": { "line": 666, - "column": 8 + "column": 21 }, "end": { "line": 666, - "column": 12 + "column": 29 } } }, @@ -219113,16 +219443,16 @@ "binop": null, "updateContext": null }, - "start": 24927, - "end": 24928, + "start": 24941, + "end": 24942, "loc": { "start": { "line": 666, - "column": 12 + "column": 29 }, "end": { "line": 666, - "column": 13 + "column": 30 } } }, @@ -219138,52 +219468,77 @@ "postfix": false, "binop": null }, - "value": "textContent", - "start": 24928, - "end": 24939, + "value": "createElement", + "start": 24942, + "end": 24955, "loc": { "start": { "line": 666, - "column": 13 + "column": 30 }, "end": { "line": 666, - "column": 24 + "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 + }, + "start": 24955, + "end": 24956, + "loc": { + "start": { + "line": 666, + "column": 43 + }, + "end": { + "line": 666, + "column": 44 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 24940, - "end": 24941, + "value": "span", + "start": 24956, + "end": 24962, "loc": { "start": { "line": 666, - "column": 25 + "column": 44 }, "end": { "line": 666, - "column": 26 + "column": 50 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -219191,24 +219546,23 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 24942, - "end": 24946, + "start": 24962, + "end": 24963, "loc": { "start": { "line": 666, - "column": 27 + "column": 50 }, "end": { "line": 666, - "column": 31 + "column": 51 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -219218,16 +219572,16 @@ "binop": null, "updateContext": null }, - "start": 24946, - "end": 24947, + "start": 24963, + "end": 24964, "loc": { "start": { "line": 666, - "column": 31 + "column": 51 }, "end": { "line": 666, - "column": 32 + "column": 52 } } }, @@ -219243,24 +219597,24 @@ "postfix": false, "binop": null }, - "value": "title", - "start": 24947, - "end": 24952, + "value": "span", + "start": 24973, + "end": 24977, "loc": { "start": { - "line": 666, - "column": 32 + "line": 667, + "column": 8 }, "end": { - "line": 666, - "column": 37 + "line": 667, + "column": 12 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -219270,16 +219624,16 @@ "binop": null, "updateContext": null }, - "start": 24952, - "end": 24953, + "start": 24977, + "end": 24978, "loc": { "start": { - "line": 666, - "column": 37 + "line": 667, + "column": 12 }, "end": { - "line": 666, - "column": 38 + "line": 667, + "column": 13 } } }, @@ -219295,43 +219649,44 @@ "postfix": false, "binop": null }, - "value": "nodeElement", - "start": 24962, - "end": 24973, + "value": "textContent", + "start": 24978, + "end": 24989, "loc": { "start": { "line": 667, - "column": 8 + "column": 13 }, "end": { "line": 667, - "column": 19 + "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": 24973, - "end": 24974, + "value": "=", + "start": 24990, + "end": 24991, "loc": { "start": { "line": 667, - "column": 19 + "column": 25 }, "end": { "line": 667, - "column": 20 + "column": 26 } } }, @@ -219347,13 +219702,13 @@ "postfix": false, "binop": null }, - "value": "appendChild", - "start": 24974, - "end": 24985, + "value": "node", + "start": 24992, + "end": 24996, "loc": { "start": { "line": 667, - "column": 20 + "column": 27 }, "end": { "line": 667, @@ -219363,18 +219718,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": 24985, - "end": 24986, + "start": 24996, + "end": 24997, "loc": { "start": { "line": 667, @@ -219398,9 +219754,9 @@ "postfix": false, "binop": null }, - "value": "span", - "start": 24986, - "end": 24990, + "value": "title", + "start": 24997, + "end": 25002, "loc": { "start": { "line": 667, @@ -219408,6 +219764,161 @@ }, "end": { "line": 667, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 25002, + "end": 25003, + "loc": { + "start": { + "line": 667, + "column": 37 + }, + "end": { + "line": 667, + "column": 38 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "nodeElement", + "start": 25012, + "end": 25023, + "loc": { + "start": { + "line": 668, + "column": 8 + }, + "end": { + "line": 668, + "column": 19 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 25023, + "end": 25024, + "loc": { + "start": { + "line": 668, + "column": 19 + }, + "end": { + "line": 668, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "appendChild", + "start": 25024, + "end": 25035, + "loc": { + "start": { + "line": 668, + "column": 20 + }, + "end": { + "line": 668, + "column": 31 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 25035, + "end": 25036, + "loc": { + "start": { + "line": 668, + "column": 31 + }, + "end": { + "line": 668, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "span", + "start": 25036, + "end": 25040, + "loc": { + "start": { + "line": 668, + "column": 32 + }, + "end": { + "line": 668, "column": 36 } } @@ -219424,15 +219935,15 @@ "postfix": false, "binop": null }, - "start": 24990, - "end": 24991, + "start": 25040, + "end": 25041, "loc": { "start": { - "line": 667, + "line": 668, "column": 36 }, "end": { - "line": 667, + "line": 668, "column": 37 } } @@ -219450,15 +219961,15 @@ "binop": null, "updateContext": null }, - "start": 24991, - "end": 24992, + "start": 25041, + "end": 25042, "loc": { "start": { - "line": 667, + "line": 668, "column": 37 }, "end": { - "line": 667, + "line": 668, "column": 38 } } @@ -219476,15 +219987,15 @@ "binop": null }, "value": "span", - "start": 25001, - "end": 25005, + "start": 25051, + "end": 25055, "loc": { "start": { - "line": 668, + "line": 669, "column": 8 }, "end": { - "line": 668, + "line": 669, "column": 12 } } @@ -219502,15 +220013,15 @@ "binop": null, "updateContext": null }, - "start": 25005, - "end": 25006, + "start": 25055, + "end": 25056, "loc": { "start": { - "line": 668, + "line": 669, "column": 12 }, "end": { - "line": 668, + "line": 669, "column": 13 } } @@ -219528,15 +220039,15 @@ "binop": null }, "value": "oncontextmenu", - "start": 25006, - "end": 25019, + "start": 25056, + "end": 25069, "loc": { "start": { - "line": 668, + "line": 669, "column": 13 }, "end": { - "line": 668, + "line": 669, "column": 26 } } @@ -219555,15 +220066,15 @@ "updateContext": null }, "value": "=", - "start": 25020, - "end": 25021, + "start": 25070, + "end": 25071, "loc": { "start": { - "line": 668, + "line": 669, "column": 27 }, "end": { - "line": 668, + "line": 669, "column": 28 } } @@ -219580,15 +220091,15 @@ "postfix": false, "binop": null }, - "start": 25022, - "end": 25023, + "start": 25072, + "end": 25073, "loc": { "start": { - "line": 668, + "line": 669, "column": 29 }, "end": { - "line": 668, + "line": 669, "column": 30 } } @@ -219606,15 +220117,15 @@ "binop": null }, "value": "e", - "start": 25023, - "end": 25024, + "start": 25073, + "end": 25074, "loc": { "start": { - "line": 668, + "line": 669, "column": 30 }, "end": { - "line": 668, + "line": 669, "column": 31 } } @@ -219631,15 +220142,15 @@ "postfix": false, "binop": null }, - "start": 25024, - "end": 25025, + "start": 25074, + "end": 25075, "loc": { "start": { - "line": 668, + "line": 669, "column": 31 }, "end": { - "line": 668, + "line": 669, "column": 32 } } @@ -219657,15 +220168,15 @@ "binop": null, "updateContext": null }, - "start": 25026, - "end": 25028, + "start": 25076, + "end": 25078, "loc": { "start": { - "line": 668, + "line": 669, "column": 33 }, "end": { - "line": 668, + "line": 669, "column": 35 } } @@ -219682,15 +220193,15 @@ "postfix": false, "binop": null }, - "start": 25029, - "end": 25030, + "start": 25079, + "end": 25080, "loc": { "start": { - "line": 668, + "line": 669, "column": 36 }, "end": { - "line": 668, + "line": 669, "column": 37 } } @@ -219710,15 +220221,15 @@ "updateContext": null }, "value": "this", - "start": 25043, - "end": 25047, + "start": 25093, + "end": 25097, "loc": { "start": { - "line": 669, + "line": 670, "column": 12 }, "end": { - "line": 669, + "line": 670, "column": 16 } } @@ -219736,15 +220247,15 @@ "binop": null, "updateContext": null }, - "start": 25047, - "end": 25048, + "start": 25097, + "end": 25098, "loc": { "start": { - "line": 669, + "line": 670, "column": 16 }, "end": { - "line": 669, + "line": 670, "column": 17 } } @@ -219762,15 +220273,15 @@ "binop": null }, "value": "_treeViewPlugin", - "start": 25048, - "end": 25063, + "start": 25098, + "end": 25113, "loc": { "start": { - "line": 669, + "line": 670, "column": 17 }, "end": { - "line": 669, + "line": 670, "column": 32 } } @@ -219788,15 +220299,15 @@ "binop": null, "updateContext": null }, - "start": 25063, - "end": 25064, + "start": 25113, + "end": 25114, "loc": { "start": { - "line": 669, + "line": 670, "column": 32 }, "end": { - "line": 669, + "line": 670, "column": 33 } } @@ -219814,15 +220325,15 @@ "binop": null }, "value": "fire", - "start": 25064, - "end": 25068, + "start": 25114, + "end": 25118, "loc": { "start": { - "line": 669, + "line": 670, "column": 33 }, "end": { - "line": 669, + "line": 670, "column": 37 } } @@ -219839,15 +220350,15 @@ "postfix": false, "binop": null }, - "start": 25068, - "end": 25069, + "start": 25118, + "end": 25119, "loc": { "start": { - "line": 669, + "line": 670, "column": 37 }, "end": { - "line": 669, + "line": 670, "column": 38 } } @@ -219866,15 +220377,15 @@ "updateContext": null }, "value": "contextmenu", - "start": 25069, - "end": 25082, + "start": 25119, + "end": 25132, "loc": { "start": { - "line": 669, + "line": 670, "column": 38 }, "end": { - "line": 669, + "line": 670, "column": 51 } } @@ -219892,15 +220403,15 @@ "binop": null, "updateContext": null }, - "start": 25082, - "end": 25083, + "start": 25132, + "end": 25133, "loc": { "start": { - "line": 669, + "line": 670, "column": 51 }, "end": { - "line": 669, + "line": 670, "column": 52 } } @@ -219917,15 +220428,15 @@ "postfix": false, "binop": null }, - "start": 25084, - "end": 25085, + "start": 25134, + "end": 25135, "loc": { "start": { - "line": 669, + "line": 670, "column": 53 }, "end": { - "line": 669, + "line": 670, "column": 54 } } @@ -219943,15 +220454,15 @@ "binop": null }, "value": "event", - "start": 25102, - "end": 25107, + "start": 25152, + "end": 25157, "loc": { "start": { - "line": 670, + "line": 671, "column": 16 }, "end": { - "line": 670, + "line": 671, "column": 21 } } @@ -219969,15 +220480,15 @@ "binop": null, "updateContext": null }, - "start": 25107, - "end": 25108, + "start": 25157, + "end": 25158, "loc": { "start": { - "line": 670, + "line": 671, "column": 21 }, "end": { - "line": 670, + "line": 671, "column": 22 } } @@ -219995,15 +220506,15 @@ "binop": null }, "value": "e", - "start": 25109, - "end": 25110, + "start": 25159, + "end": 25160, "loc": { "start": { - "line": 670, + "line": 671, "column": 23 }, "end": { - "line": 670, + "line": 671, "column": 24 } } @@ -220021,15 +220532,15 @@ "binop": null, "updateContext": null }, - "start": 25110, - "end": 25111, + "start": 25160, + "end": 25161, "loc": { "start": { - "line": 670, + "line": 671, "column": 24 }, "end": { - "line": 670, + "line": 671, "column": 25 } } @@ -220047,15 +220558,15 @@ "binop": null }, "value": "viewer", - "start": 25128, - "end": 25134, + "start": 25178, + "end": 25184, "loc": { "start": { - "line": 671, + "line": 672, "column": 16 }, "end": { - "line": 671, + "line": 672, "column": 22 } } @@ -220073,15 +220584,15 @@ "binop": null, "updateContext": null }, - "start": 25134, - "end": 25135, + "start": 25184, + "end": 25185, "loc": { "start": { - "line": 671, + "line": 672, "column": 22 }, "end": { - "line": 671, + "line": 672, "column": 23 } } @@ -220101,15 +220612,15 @@ "updateContext": null }, "value": "this", - "start": 25136, - "end": 25140, + "start": 25186, + "end": 25190, "loc": { "start": { - "line": 671, + "line": 672, "column": 24 }, "end": { - "line": 671, + "line": 672, "column": 28 } } @@ -220127,15 +220638,15 @@ "binop": null, "updateContext": null }, - "start": 25140, - "end": 25141, + "start": 25190, + "end": 25191, "loc": { "start": { - "line": 671, + "line": 672, "column": 28 }, "end": { - "line": 671, + "line": 672, "column": 29 } } @@ -220153,15 +220664,15 @@ "binop": null }, "value": "_viewer", - "start": 25141, - "end": 25148, + "start": 25191, + "end": 25198, "loc": { "start": { - "line": 671, + "line": 672, "column": 29 }, "end": { - "line": 671, + "line": 672, "column": 36 } } @@ -220179,15 +220690,15 @@ "binop": null, "updateContext": null }, - "start": 25148, - "end": 25149, + "start": 25198, + "end": 25199, "loc": { "start": { - "line": 671, + "line": 672, "column": 36 }, "end": { - "line": 671, + "line": 672, "column": 37 } } @@ -220205,15 +220716,15 @@ "binop": null }, "value": "treeViewPlugin", - "start": 25166, - "end": 25180, + "start": 25216, + "end": 25230, "loc": { "start": { - "line": 672, + "line": 673, "column": 16 }, "end": { - "line": 672, + "line": 673, "column": 30 } } @@ -220231,15 +220742,15 @@ "binop": null, "updateContext": null }, - "start": 25180, - "end": 25181, + "start": 25230, + "end": 25231, "loc": { "start": { - "line": 672, + "line": 673, "column": 30 }, "end": { - "line": 672, + "line": 673, "column": 31 } } @@ -220259,15 +220770,15 @@ "updateContext": null }, "value": "this", - "start": 25182, - "end": 25186, + "start": 25232, + "end": 25236, "loc": { "start": { - "line": 672, + "line": 673, "column": 32 }, "end": { - "line": 672, + "line": 673, "column": 36 } } @@ -220285,15 +220796,15 @@ "binop": null, "updateContext": null }, - "start": 25186, - "end": 25187, + "start": 25236, + "end": 25237, "loc": { "start": { - "line": 672, + "line": 673, "column": 36 }, "end": { - "line": 672, + "line": 673, "column": 37 } } @@ -220311,15 +220822,15 @@ "binop": null }, "value": "_treeViewPlugin", - "start": 25187, - "end": 25202, + "start": 25237, + "end": 25252, "loc": { "start": { - "line": 672, + "line": 673, "column": 37 }, "end": { - "line": 672, + "line": 673, "column": 52 } } @@ -220337,15 +220848,15 @@ "binop": null, "updateContext": null }, - "start": 25202, - "end": 25203, + "start": 25252, + "end": 25253, "loc": { "start": { - "line": 672, + "line": 673, "column": 52 }, "end": { - "line": 672, + "line": 673, "column": 53 } } @@ -220363,15 +220874,15 @@ "binop": null }, "value": "treeViewNode", - "start": 25220, - "end": 25232, + "start": 25270, + "end": 25282, "loc": { "start": { - "line": 673, + "line": 674, "column": 16 }, "end": { - "line": 673, + "line": 674, "column": 28 } } @@ -220389,15 +220900,15 @@ "binop": null, "updateContext": null }, - "start": 25232, - "end": 25233, + "start": 25282, + "end": 25283, "loc": { "start": { - "line": 673, + "line": 674, "column": 28 }, "end": { - "line": 673, + "line": 674, "column": 29 } } @@ -220415,15 +220926,15 @@ "binop": null }, "value": "node", - "start": 25234, - "end": 25238, + "start": 25284, + "end": 25288, "loc": { "start": { - "line": 673, + "line": 674, "column": 30 }, "end": { - "line": 673, + "line": 674, "column": 34 } } @@ -220440,15 +220951,15 @@ "postfix": false, "binop": null }, - "start": 25251, - "end": 25252, + "start": 25301, + "end": 25302, "loc": { "start": { - "line": 674, + "line": 675, "column": 12 }, "end": { - "line": 674, + "line": 675, "column": 13 } } @@ -220465,15 +220976,15 @@ "postfix": false, "binop": null }, - "start": 25252, - "end": 25253, + "start": 25302, + "end": 25303, "loc": { "start": { - "line": 674, + "line": 675, "column": 13 }, "end": { - "line": 674, + "line": 675, "column": 14 } } @@ -220491,15 +221002,15 @@ "binop": null, "updateContext": null }, - "start": 25253, - "end": 25254, + "start": 25303, + "end": 25304, "loc": { "start": { - "line": 674, + "line": 675, "column": 14 }, "end": { - "line": 674, + "line": 675, "column": 15 } } @@ -220517,15 +221028,15 @@ "binop": null }, "value": "e", - "start": 25267, - "end": 25268, + "start": 25317, + "end": 25318, "loc": { "start": { - "line": 675, + "line": 676, "column": 12 }, "end": { - "line": 675, + "line": 676, "column": 13 } } @@ -220543,15 +221054,15 @@ "binop": null, "updateContext": null }, - "start": 25268, - "end": 25269, + "start": 25318, + "end": 25319, "loc": { "start": { - "line": 675, + "line": 676, "column": 13 }, "end": { - "line": 675, + "line": 676, "column": 14 } } @@ -220569,15 +221080,15 @@ "binop": null }, "value": "preventDefault", - "start": 25269, - "end": 25283, + "start": 25319, + "end": 25333, "loc": { "start": { - "line": 675, + "line": 676, "column": 14 }, "end": { - "line": 675, + "line": 676, "column": 28 } } @@ -220594,15 +221105,15 @@ "postfix": false, "binop": null }, - "start": 25283, - "end": 25284, + "start": 25333, + "end": 25334, "loc": { "start": { - "line": 675, + "line": 676, "column": 28 }, "end": { - "line": 675, + "line": 676, "column": 29 } } @@ -220619,15 +221130,15 @@ "postfix": false, "binop": null }, - "start": 25284, - "end": 25285, + "start": 25334, + "end": 25335, "loc": { "start": { - "line": 675, + "line": 676, "column": 29 }, "end": { - "line": 675, + "line": 676, "column": 30 } } @@ -220645,15 +221156,15 @@ "binop": null, "updateContext": null }, - "start": 25285, - "end": 25286, + "start": 25335, + "end": 25336, "loc": { "start": { - "line": 675, + "line": 676, "column": 30 }, "end": { - "line": 675, + "line": 676, "column": 31 } } @@ -220670,15 +221181,15 @@ "postfix": false, "binop": null }, - "start": 25295, - "end": 25296, + "start": 25345, + "end": 25346, "loc": { "start": { - "line": 676, + "line": 677, "column": 8 }, "end": { - "line": 676, + "line": 677, "column": 9 } } @@ -220696,15 +221207,15 @@ "binop": null, "updateContext": null }, - "start": 25296, - "end": 25297, + "start": 25346, + "end": 25347, "loc": { "start": { - "line": 676, + "line": 677, "column": 9 }, "end": { - "line": 676, + "line": 677, "column": 10 } } @@ -220722,15 +221233,15 @@ "binop": null }, "value": "span", - "start": 25306, - "end": 25310, + "start": 25356, + "end": 25360, "loc": { "start": { - "line": 677, + "line": 678, "column": 8 }, "end": { - "line": 677, + "line": 678, "column": 12 } } @@ -220748,15 +221259,15 @@ "binop": null, "updateContext": null }, - "start": 25310, - "end": 25311, + "start": 25360, + "end": 25361, "loc": { "start": { - "line": 677, + "line": 678, "column": 12 }, "end": { - "line": 677, + "line": 678, "column": 13 } } @@ -220774,15 +221285,15 @@ "binop": null }, "value": "onclick", - "start": 25311, - "end": 25318, + "start": 25361, + "end": 25368, "loc": { "start": { - "line": 677, + "line": 678, "column": 13 }, "end": { - "line": 677, + "line": 678, "column": 20 } } @@ -220801,15 +221312,15 @@ "updateContext": null }, "value": "=", - "start": 25319, - "end": 25320, + "start": 25369, + "end": 25370, "loc": { "start": { - "line": 677, + "line": 678, "column": 21 }, "end": { - "line": 677, + "line": 678, "column": 22 } } @@ -220826,15 +221337,15 @@ "postfix": false, "binop": null }, - "start": 25321, - "end": 25322, + "start": 25371, + "end": 25372, "loc": { "start": { - "line": 677, + "line": 678, "column": 23 }, "end": { - "line": 677, + "line": 678, "column": 24 } } @@ -220852,15 +221363,15 @@ "binop": null }, "value": "e", - "start": 25322, - "end": 25323, + "start": 25372, + "end": 25373, "loc": { "start": { - "line": 677, + "line": 678, "column": 24 }, "end": { - "line": 677, + "line": 678, "column": 25 } } @@ -220877,15 +221388,15 @@ "postfix": false, "binop": null }, - "start": 25323, - "end": 25324, + "start": 25373, + "end": 25374, "loc": { "start": { - "line": 677, + "line": 678, "column": 25 }, "end": { - "line": 677, + "line": 678, "column": 26 } } @@ -220903,15 +221414,15 @@ "binop": null, "updateContext": null }, - "start": 25325, - "end": 25327, + "start": 25375, + "end": 25377, "loc": { "start": { - "line": 677, + "line": 678, "column": 27 }, "end": { - "line": 677, + "line": 678, "column": 29 } } @@ -220928,15 +221439,15 @@ "postfix": false, "binop": null }, - "start": 25328, - "end": 25329, + "start": 25378, + "end": 25379, "loc": { "start": { - "line": 677, + "line": 678, "column": 30 }, "end": { - "line": 677, + "line": 678, "column": 31 } } @@ -220956,15 +221467,15 @@ "updateContext": null }, "value": "this", - "start": 25342, - "end": 25346, + "start": 25392, + "end": 25396, "loc": { "start": { - "line": 678, + "line": 679, "column": 12 }, "end": { - "line": 678, + "line": 679, "column": 16 } } @@ -220982,15 +221493,15 @@ "binop": null, "updateContext": null }, - "start": 25346, - "end": 25347, + "start": 25396, + "end": 25397, "loc": { "start": { - "line": 678, + "line": 679, "column": 16 }, "end": { - "line": 678, + "line": 679, "column": 17 } } @@ -221008,15 +221519,15 @@ "binop": null }, "value": "_treeViewPlugin", - "start": 25347, - "end": 25362, + "start": 25397, + "end": 25412, "loc": { "start": { - "line": 678, + "line": 679, "column": 17 }, "end": { - "line": 678, + "line": 679, "column": 32 } } @@ -221034,15 +221545,15 @@ "binop": null, "updateContext": null }, - "start": 25362, - "end": 25363, + "start": 25412, + "end": 25413, "loc": { "start": { - "line": 678, + "line": 679, "column": 32 }, "end": { - "line": 678, + "line": 679, "column": 33 } } @@ -221060,15 +221571,15 @@ "binop": null }, "value": "fire", - "start": 25363, - "end": 25367, + "start": 25413, + "end": 25417, "loc": { "start": { - "line": 678, + "line": 679, "column": 33 }, "end": { - "line": 678, + "line": 679, "column": 37 } } @@ -221085,15 +221596,15 @@ "postfix": false, "binop": null }, - "start": 25367, - "end": 25368, + "start": 25417, + "end": 25418, "loc": { "start": { - "line": 678, + "line": 679, "column": 37 }, "end": { - "line": 678, + "line": 679, "column": 38 } } @@ -221112,15 +221623,15 @@ "updateContext": null }, "value": "nodeTitleClicked", - "start": 25368, - "end": 25386, + "start": 25418, + "end": 25436, "loc": { "start": { - "line": 678, + "line": 679, "column": 38 }, "end": { - "line": 678, + "line": 679, "column": 56 } } @@ -221138,15 +221649,15 @@ "binop": null, "updateContext": null }, - "start": 25386, - "end": 25387, + "start": 25436, + "end": 25437, "loc": { "start": { - "line": 678, + "line": 679, "column": 56 }, "end": { - "line": 678, + "line": 679, "column": 57 } } @@ -221163,15 +221674,15 @@ "postfix": false, "binop": null }, - "start": 25388, - "end": 25389, + "start": 25438, + "end": 25439, "loc": { "start": { - "line": 678, + "line": 679, "column": 58 }, "end": { - "line": 678, + "line": 679, "column": 59 } } @@ -221189,15 +221700,15 @@ "binop": null }, "value": "event", - "start": 25406, - "end": 25411, + "start": 25456, + "end": 25461, "loc": { "start": { - "line": 679, + "line": 680, "column": 16 }, "end": { - "line": 679, + "line": 680, "column": 21 } } @@ -221215,15 +221726,15 @@ "binop": null, "updateContext": null }, - "start": 25411, - "end": 25412, + "start": 25461, + "end": 25462, "loc": { "start": { - "line": 679, + "line": 680, "column": 21 }, "end": { - "line": 679, + "line": 680, "column": 22 } } @@ -221241,15 +221752,15 @@ "binop": null }, "value": "e", - "start": 25413, - "end": 25414, + "start": 25463, + "end": 25464, "loc": { "start": { - "line": 679, + "line": 680, "column": 23 }, "end": { - "line": 679, + "line": 680, "column": 24 } } @@ -221267,15 +221778,15 @@ "binop": null, "updateContext": null }, - "start": 25414, - "end": 25415, + "start": 25464, + "end": 25465, "loc": { "start": { - "line": 679, + "line": 680, "column": 24 }, "end": { - "line": 679, + "line": 680, "column": 25 } } @@ -221293,15 +221804,15 @@ "binop": null }, "value": "viewer", - "start": 25432, - "end": 25438, + "start": 25482, + "end": 25488, "loc": { "start": { - "line": 680, + "line": 681, "column": 16 }, "end": { - "line": 680, + "line": 681, "column": 22 } } @@ -221319,15 +221830,15 @@ "binop": null, "updateContext": null }, - "start": 25438, - "end": 25439, + "start": 25488, + "end": 25489, "loc": { "start": { - "line": 680, + "line": 681, "column": 22 }, "end": { - "line": 680, + "line": 681, "column": 23 } } @@ -221347,15 +221858,15 @@ "updateContext": null }, "value": "this", - "start": 25440, - "end": 25444, + "start": 25490, + "end": 25494, "loc": { "start": { - "line": 680, + "line": 681, "column": 24 }, "end": { - "line": 680, + "line": 681, "column": 28 } } @@ -221373,15 +221884,15 @@ "binop": null, "updateContext": null }, - "start": 25444, - "end": 25445, + "start": 25494, + "end": 25495, "loc": { "start": { - "line": 680, + "line": 681, "column": 28 }, "end": { - "line": 680, + "line": 681, "column": 29 } } @@ -221399,15 +221910,15 @@ "binop": null }, "value": "_viewer", - "start": 25445, - "end": 25452, + "start": 25495, + "end": 25502, "loc": { "start": { - "line": 680, + "line": 681, "column": 29 }, "end": { - "line": 680, + "line": 681, "column": 36 } } @@ -221425,15 +221936,15 @@ "binop": null, "updateContext": null }, - "start": 25452, - "end": 25453, + "start": 25502, + "end": 25503, "loc": { "start": { - "line": 680, + "line": 681, "column": 36 }, "end": { - "line": 680, + "line": 681, "column": 37 } } @@ -221451,15 +221962,15 @@ "binop": null }, "value": "treeViewPlugin", - "start": 25470, - "end": 25484, + "start": 25520, + "end": 25534, "loc": { "start": { - "line": 681, + "line": 682, "column": 16 }, "end": { - "line": 681, + "line": 682, "column": 30 } } @@ -221477,15 +221988,15 @@ "binop": null, "updateContext": null }, - "start": 25484, - "end": 25485, + "start": 25534, + "end": 25535, "loc": { "start": { - "line": 681, + "line": 682, "column": 30 }, "end": { - "line": 681, + "line": 682, "column": 31 } } @@ -221505,15 +222016,15 @@ "updateContext": null }, "value": "this", - "start": 25486, - "end": 25490, + "start": 25536, + "end": 25540, "loc": { "start": { - "line": 681, + "line": 682, "column": 32 }, "end": { - "line": 681, + "line": 682, "column": 36 } } @@ -221531,15 +222042,15 @@ "binop": null, "updateContext": null }, - "start": 25490, - "end": 25491, + "start": 25540, + "end": 25541, "loc": { "start": { - "line": 681, + "line": 682, "column": 36 }, "end": { - "line": 681, + "line": 682, "column": 37 } } @@ -221557,15 +222068,15 @@ "binop": null }, "value": "_treeViewPlugin", - "start": 25491, - "end": 25506, + "start": 25541, + "end": 25556, "loc": { "start": { - "line": 681, + "line": 682, "column": 37 }, "end": { - "line": 681, + "line": 682, "column": 52 } } @@ -221583,15 +222094,15 @@ "binop": null, "updateContext": null }, - "start": 25506, - "end": 25507, + "start": 25556, + "end": 25557, "loc": { "start": { - "line": 681, + "line": 682, "column": 52 }, "end": { - "line": 681, + "line": 682, "column": 53 } } @@ -221609,15 +222120,15 @@ "binop": null }, "value": "treeViewNode", - "start": 25524, - "end": 25536, + "start": 25574, + "end": 25586, "loc": { "start": { - "line": 682, + "line": 683, "column": 16 }, "end": { - "line": 682, + "line": 683, "column": 28 } } @@ -221635,15 +222146,15 @@ "binop": null, "updateContext": null }, - "start": 25536, - "end": 25537, + "start": 25586, + "end": 25587, "loc": { "start": { - "line": 682, + "line": 683, "column": 28 }, "end": { - "line": 682, + "line": 683, "column": 29 } } @@ -221661,15 +222172,15 @@ "binop": null }, "value": "node", - "start": 25538, - "end": 25542, + "start": 25588, + "end": 25592, "loc": { "start": { - "line": 682, + "line": 683, "column": 30 }, "end": { - "line": 682, + "line": 683, "column": 34 } } @@ -221686,15 +222197,15 @@ "postfix": false, "binop": null }, - "start": 25555, - "end": 25556, + "start": 25605, + "end": 25606, "loc": { "start": { - "line": 683, + "line": 684, "column": 12 }, "end": { - "line": 683, + "line": 684, "column": 13 } } @@ -221711,15 +222222,15 @@ "postfix": false, "binop": null }, - "start": 25556, - "end": 25557, + "start": 25606, + "end": 25607, "loc": { "start": { - "line": 683, + "line": 684, "column": 13 }, "end": { - "line": 683, + "line": 684, "column": 14 } } @@ -221737,15 +222248,15 @@ "binop": null, "updateContext": null }, - "start": 25557, - "end": 25558, + "start": 25607, + "end": 25608, "loc": { "start": { - "line": 683, + "line": 684, "column": 14 }, "end": { - "line": 683, + "line": 684, "column": 15 } } @@ -221763,15 +222274,15 @@ "binop": null }, "value": "e", - "start": 25571, - "end": 25572, + "start": 25621, + "end": 25622, "loc": { "start": { - "line": 684, + "line": 685, "column": 12 }, "end": { - "line": 684, + "line": 685, "column": 13 } } @@ -221789,15 +222300,15 @@ "binop": null, "updateContext": null }, - "start": 25572, - "end": 25573, + "start": 25622, + "end": 25623, "loc": { "start": { - "line": 684, + "line": 685, "column": 13 }, "end": { - "line": 684, + "line": 685, "column": 14 } } @@ -221815,15 +222326,15 @@ "binop": null }, "value": "preventDefault", - "start": 25573, - "end": 25587, + "start": 25623, + "end": 25637, "loc": { "start": { - "line": 684, + "line": 685, "column": 14 }, "end": { - "line": 684, + "line": 685, "column": 28 } } @@ -221840,15 +222351,15 @@ "postfix": false, "binop": null }, - "start": 25587, - "end": 25588, + "start": 25637, + "end": 25638, "loc": { "start": { - "line": 684, + "line": 685, "column": 28 }, "end": { - "line": 684, + "line": 685, "column": 29 } } @@ -221865,15 +222376,15 @@ "postfix": false, "binop": null }, - "start": 25588, - "end": 25589, + "start": 25638, + "end": 25639, "loc": { "start": { - "line": 684, + "line": 685, "column": 29 }, "end": { - "line": 684, + "line": 685, "column": 30 } } @@ -221891,15 +222402,15 @@ "binop": null, "updateContext": null }, - "start": 25589, - "end": 25590, + "start": 25639, + "end": 25640, "loc": { "start": { - "line": 684, + "line": 685, "column": 30 }, "end": { - "line": 684, + "line": 685, "column": 31 } } @@ -221916,15 +222427,15 @@ "postfix": false, "binop": null }, - "start": 25599, - "end": 25600, + "start": 25649, + "end": 25650, "loc": { "start": { - "line": 685, + "line": 686, "column": 8 }, "end": { - "line": 685, + "line": 686, "column": 9 } } @@ -221942,15 +222453,15 @@ "binop": null, "updateContext": null }, - "start": 25600, - "end": 25601, + "start": 25650, + "end": 25651, "loc": { "start": { - "line": 685, + "line": 686, "column": 9 }, "end": { - "line": 685, + "line": 686, "column": 10 } } @@ -221970,15 +222481,15 @@ "updateContext": null }, "value": "return", - "start": 25610, - "end": 25616, + "start": 25660, + "end": 25666, "loc": { "start": { - "line": 686, + "line": 687, "column": 8 }, "end": { - "line": 686, + "line": 687, "column": 14 } } @@ -221996,15 +222507,15 @@ "binop": null }, "value": "nodeElement", - "start": 25617, - "end": 25628, + "start": 25667, + "end": 25678, "loc": { "start": { - "line": 686, + "line": 687, "column": 15 }, "end": { - "line": 686, + "line": 687, "column": 26 } } @@ -222022,15 +222533,15 @@ "binop": null, "updateContext": null }, - "start": 25628, - "end": 25629, + "start": 25678, + "end": 25679, "loc": { "start": { - "line": 686, + "line": 687, "column": 26 }, "end": { - "line": 686, + "line": 687, "column": 27 } } @@ -222047,15 +222558,15 @@ "postfix": false, "binop": null }, - "start": 25634, - "end": 25635, + "start": 25684, + "end": 25685, "loc": { "start": { - "line": 687, + "line": 688, "column": 4 }, "end": { - "line": 687, + "line": 688, "column": 5 } } @@ -222063,15 +222574,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n * @param depth\n ", - "start": 25641, - "end": 25688, + "start": 25691, + "end": 25738, "loc": { "start": { - "line": 689, + "line": 690, "column": 4 }, "end": { - "line": 692, + "line": 693, "column": 7 } } @@ -222089,15 +222600,15 @@ "binop": null }, "value": "expandToDepth", - "start": 25693, - "end": 25706, + "start": 25743, + "end": 25756, "loc": { "start": { - "line": 693, + "line": 694, "column": 4 }, "end": { - "line": 693, + "line": 694, "column": 17 } } @@ -222114,15 +222625,15 @@ "postfix": false, "binop": null }, - "start": 25706, - "end": 25707, + "start": 25756, + "end": 25757, "loc": { "start": { - "line": 693, + "line": 694, "column": 17 }, "end": { - "line": 693, + "line": 694, "column": 18 } } @@ -222140,15 +222651,15 @@ "binop": null }, "value": "depth", - "start": 25707, - "end": 25712, + "start": 25757, + "end": 25762, "loc": { "start": { - "line": 693, + "line": 694, "column": 18 }, "end": { - "line": 693, + "line": 694, "column": 23 } } @@ -222165,15 +222676,15 @@ "postfix": false, "binop": null }, - "start": 25712, - "end": 25713, + "start": 25762, + "end": 25763, "loc": { "start": { - "line": 693, + "line": 694, "column": 23 }, "end": { - "line": 693, + "line": 694, "column": 24 } } @@ -222190,15 +222701,15 @@ "postfix": false, "binop": null }, - "start": 25714, - "end": 25715, + "start": 25764, + "end": 25765, "loc": { "start": { - "line": 693, + "line": 694, "column": 25 }, "end": { - "line": 693, + "line": 694, "column": 26 } } @@ -222218,15 +222729,15 @@ "updateContext": null }, "value": "const", - "start": 25724, - "end": 25729, + "start": 25774, + "end": 25779, "loc": { "start": { - "line": 694, + "line": 695, "column": 8 }, "end": { - "line": 694, + "line": 695, "column": 13 } } @@ -222244,15 +222755,15 @@ "binop": null }, "value": "expand", - "start": 25730, - "end": 25736, + "start": 25780, + "end": 25786, "loc": { "start": { - "line": 694, + "line": 695, "column": 14 }, "end": { - "line": 694, + "line": 695, "column": 20 } } @@ -222271,15 +222782,15 @@ "updateContext": null }, "value": "=", - "start": 25737, - "end": 25738, + "start": 25787, + "end": 25788, "loc": { "start": { - "line": 694, + "line": 695, "column": 21 }, "end": { - "line": 694, + "line": 695, "column": 22 } } @@ -222296,15 +222807,15 @@ "postfix": false, "binop": null }, - "start": 25739, - "end": 25740, + "start": 25789, + "end": 25790, "loc": { "start": { - "line": 694, + "line": 695, "column": 23 }, "end": { - "line": 694, + "line": 695, "column": 24 } } @@ -222322,15 +222833,15 @@ "binop": null }, "value": "node", - "start": 25740, - "end": 25744, + "start": 25790, + "end": 25794, "loc": { "start": { - "line": 694, + "line": 695, "column": 24 }, "end": { - "line": 694, + "line": 695, "column": 28 } } @@ -222348,15 +222859,15 @@ "binop": null, "updateContext": null }, - "start": 25744, - "end": 25745, + "start": 25794, + "end": 25795, "loc": { "start": { - "line": 694, + "line": 695, "column": 28 }, "end": { - "line": 694, + "line": 695, "column": 29 } } @@ -222374,15 +222885,15 @@ "binop": null }, "value": "countDepth", - "start": 25746, - "end": 25756, + "start": 25796, + "end": 25806, "loc": { "start": { - "line": 694, + "line": 695, "column": 30 }, "end": { - "line": 694, + "line": 695, "column": 40 } } @@ -222399,15 +222910,15 @@ "postfix": false, "binop": null }, - "start": 25756, - "end": 25757, + "start": 25806, + "end": 25807, "loc": { "start": { - "line": 694, + "line": 695, "column": 40 }, "end": { - "line": 694, + "line": 695, "column": 41 } } @@ -222425,15 +222936,15 @@ "binop": null, "updateContext": null }, - "start": 25758, - "end": 25760, + "start": 25808, + "end": 25810, "loc": { "start": { - "line": 694, + "line": 695, "column": 42 }, "end": { - "line": 694, + "line": 695, "column": 44 } } @@ -222450,15 +222961,15 @@ "postfix": false, "binop": null }, - "start": 25761, - "end": 25762, + "start": 25811, + "end": 25812, "loc": { "start": { - "line": 694, + "line": 695, "column": 45 }, "end": { - "line": 694, + "line": 695, "column": 46 } } @@ -222478,15 +222989,15 @@ "updateContext": null }, "value": "if", - "start": 25775, - "end": 25777, + "start": 25825, + "end": 25827, "loc": { "start": { - "line": 695, + "line": 696, "column": 12 }, "end": { - "line": 695, + "line": 696, "column": 14 } } @@ -222503,15 +223014,15 @@ "postfix": false, "binop": null }, - "start": 25778, - "end": 25779, + "start": 25828, + "end": 25829, "loc": { "start": { - "line": 695, + "line": 696, "column": 15 }, "end": { - "line": 695, + "line": 696, "column": 16 } } @@ -222529,15 +223040,15 @@ "binop": null }, "value": "countDepth", - "start": 25779, - "end": 25789, + "start": 25829, + "end": 25839, "loc": { "start": { - "line": 695, + "line": 696, "column": 16 }, "end": { - "line": 695, + "line": 696, "column": 26 } } @@ -222556,15 +223067,15 @@ "updateContext": null }, "value": "===", - "start": 25790, - "end": 25793, + "start": 25840, + "end": 25843, "loc": { "start": { - "line": 695, + "line": 696, "column": 27 }, "end": { - "line": 695, + "line": 696, "column": 30 } } @@ -222582,15 +223093,15 @@ "binop": null }, "value": "depth", - "start": 25794, - "end": 25799, + "start": 25844, + "end": 25849, "loc": { "start": { - "line": 695, + "line": 696, "column": 31 }, "end": { - "line": 695, + "line": 696, "column": 36 } } @@ -222607,15 +223118,15 @@ "postfix": false, "binop": null }, - "start": 25799, - "end": 25800, + "start": 25849, + "end": 25850, "loc": { "start": { - "line": 695, + "line": 696, "column": 36 }, "end": { - "line": 695, + "line": 696, "column": 37 } } @@ -222632,15 +223143,15 @@ "postfix": false, "binop": null }, - "start": 25801, - "end": 25802, + "start": 25851, + "end": 25852, "loc": { "start": { - "line": 695, + "line": 696, "column": 38 }, "end": { - "line": 695, + "line": 696, "column": 39 } } @@ -222660,15 +223171,15 @@ "updateContext": null }, "value": "return", - "start": 25819, - "end": 25825, + "start": 25869, + "end": 25875, "loc": { "start": { - "line": 696, + "line": 697, "column": 16 }, "end": { - "line": 696, + "line": 697, "column": 22 } } @@ -222686,15 +223197,15 @@ "binop": null, "updateContext": null }, - "start": 25825, - "end": 25826, + "start": 25875, + "end": 25876, "loc": { "start": { - "line": 696, + "line": 697, "column": 22 }, "end": { - "line": 696, + "line": 697, "column": 23 } } @@ -222711,15 +223222,15 @@ "postfix": false, "binop": null }, - "start": 25839, - "end": 25840, + "start": 25889, + "end": 25890, "loc": { "start": { - "line": 697, + "line": 698, "column": 12 }, "end": { - "line": 697, + "line": 698, "column": 13 } } @@ -222739,15 +223250,15 @@ "updateContext": null }, "value": "const", - "start": 25853, - "end": 25858, + "start": 25903, + "end": 25908, "loc": { "start": { - "line": 698, + "line": 699, "column": 12 }, "end": { - "line": 698, + "line": 699, "column": 17 } } @@ -222765,15 +223276,15 @@ "binop": null }, "value": "nodeId", - "start": 25859, - "end": 25865, + "start": 25909, + "end": 25915, "loc": { "start": { - "line": 698, + "line": 699, "column": 18 }, "end": { - "line": 698, + "line": 699, "column": 24 } } @@ -222792,15 +223303,15 @@ "updateContext": null }, "value": "=", - "start": 25866, - "end": 25867, + "start": 25916, + "end": 25917, "loc": { "start": { - "line": 698, + "line": 699, "column": 25 }, "end": { - "line": 698, + "line": 699, "column": 26 } } @@ -222818,15 +223329,15 @@ "binop": null }, "value": "node", - "start": 25868, - "end": 25872, + "start": 25918, + "end": 25922, "loc": { "start": { - "line": 698, + "line": 699, "column": 27 }, "end": { - "line": 698, + "line": 699, "column": 31 } } @@ -222844,15 +223355,15 @@ "binop": null, "updateContext": null }, - "start": 25872, - "end": 25873, + "start": 25922, + "end": 25923, "loc": { "start": { - "line": 698, + "line": 699, "column": 31 }, "end": { - "line": 698, + "line": 699, "column": 32 } } @@ -222870,15 +223381,15 @@ "binop": null }, "value": "nodeId", - "start": 25873, - "end": 25879, + "start": 25923, + "end": 25929, "loc": { "start": { - "line": 698, + "line": 699, "column": 32 }, "end": { - "line": 698, + "line": 699, "column": 38 } } @@ -222896,15 +223407,15 @@ "binop": null, "updateContext": null }, - "start": 25879, - "end": 25880, + "start": 25929, + "end": 25930, "loc": { "start": { - "line": 698, + "line": 699, "column": 38 }, "end": { - "line": 698, + "line": 699, "column": 39 } } @@ -222924,15 +223435,15 @@ "updateContext": null }, "value": "const", - "start": 25893, - "end": 25898, + "start": 25943, + "end": 25948, "loc": { "start": { - "line": 699, + "line": 700, "column": 12 }, "end": { - "line": 699, + "line": 700, "column": 17 } } @@ -222950,15 +223461,15 @@ "binop": null }, "value": "switchElementId", - "start": 25899, - "end": 25914, + "start": 25949, + "end": 25964, "loc": { "start": { - "line": 699, + "line": 700, "column": 18 }, "end": { - "line": 699, + "line": 700, "column": 33 } } @@ -222977,15 +223488,15 @@ "updateContext": null }, "value": "=", - "start": 25915, - "end": 25916, + "start": 25965, + "end": 25966, "loc": { "start": { - "line": 699, + "line": 700, "column": 34 }, "end": { - "line": 699, + "line": 700, "column": 35 } } @@ -223004,15 +223515,15 @@ "updateContext": null }, "value": "switch-", - "start": 25917, - "end": 25926, + "start": 25967, + "end": 25976, "loc": { "start": { - "line": 699, + "line": 700, "column": 36 }, "end": { - "line": 699, + "line": 700, "column": 45 } } @@ -223031,15 +223542,15 @@ "updateContext": null }, "value": "+", - "start": 25927, - "end": 25928, + "start": 25977, + "end": 25978, "loc": { "start": { - "line": 699, + "line": 700, "column": 46 }, "end": { - "line": 699, + "line": 700, "column": 47 } } @@ -223057,15 +223568,15 @@ "binop": null }, "value": "nodeId", - "start": 25929, - "end": 25935, + "start": 25979, + "end": 25985, "loc": { "start": { - "line": 699, + "line": 700, "column": 48 }, "end": { - "line": 699, + "line": 700, "column": 54 } } @@ -223083,15 +223594,15 @@ "binop": null, "updateContext": null }, - "start": 25935, - "end": 25936, + "start": 25985, + "end": 25986, "loc": { "start": { - "line": 699, + "line": 700, "column": 54 }, "end": { - "line": 699, + "line": 700, "column": 55 } } @@ -223111,15 +223622,15 @@ "updateContext": null }, "value": "const", - "start": 25949, - "end": 25954, + "start": 25999, + "end": 26004, "loc": { "start": { - "line": 700, + "line": 701, "column": 12 }, "end": { - "line": 700, + "line": 701, "column": 17 } } @@ -223137,15 +223648,15 @@ "binop": null }, "value": "switchElement", - "start": 25955, - "end": 25968, + "start": 26005, + "end": 26018, "loc": { "start": { - "line": 700, + "line": 701, "column": 18 }, "end": { - "line": 700, + "line": 701, "column": 31 } } @@ -223164,15 +223675,15 @@ "updateContext": null }, "value": "=", - "start": 25969, - "end": 25970, + "start": 26019, + "end": 26020, "loc": { "start": { - "line": 700, + "line": 701, "column": 32 }, "end": { - "line": 700, + "line": 701, "column": 33 } } @@ -223190,15 +223701,15 @@ "binop": null }, "value": "document", - "start": 25971, - "end": 25979, + "start": 26021, + "end": 26029, "loc": { "start": { - "line": 700, + "line": 701, "column": 34 }, "end": { - "line": 700, + "line": 701, "column": 42 } } @@ -223216,15 +223727,15 @@ "binop": null, "updateContext": null }, - "start": 25979, - "end": 25980, + "start": 26029, + "end": 26030, "loc": { "start": { - "line": 700, + "line": 701, "column": 42 }, "end": { - "line": 700, + "line": 701, "column": 43 } } @@ -223242,15 +223753,15 @@ "binop": null }, "value": "getElementById", - "start": 25980, - "end": 25994, + "start": 26030, + "end": 26044, "loc": { "start": { - "line": 700, + "line": 701, "column": 43 }, "end": { - "line": 700, + "line": 701, "column": 57 } } @@ -223267,15 +223778,15 @@ "postfix": false, "binop": null }, - "start": 25994, - "end": 25995, + "start": 26044, + "end": 26045, "loc": { "start": { - "line": 700, + "line": 701, "column": 57 }, "end": { - "line": 700, + "line": 701, "column": 58 } } @@ -223293,15 +223804,15 @@ "binop": null }, "value": "switchElementId", - "start": 25995, - "end": 26010, + "start": 26045, + "end": 26060, "loc": { "start": { - "line": 700, + "line": 701, "column": 58 }, "end": { - "line": 700, + "line": 701, "column": 73 } } @@ -223318,15 +223829,15 @@ "postfix": false, "binop": null }, - "start": 26010, - "end": 26011, + "start": 26060, + "end": 26061, "loc": { "start": { - "line": 700, + "line": 701, "column": 73 }, "end": { - "line": 700, + "line": 701, "column": 74 } } @@ -223344,15 +223855,15 @@ "binop": null, "updateContext": null }, - "start": 26011, - "end": 26012, + "start": 26061, + "end": 26062, "loc": { "start": { - "line": 700, + "line": 701, "column": 74 }, "end": { - "line": 700, + "line": 701, "column": 75 } } @@ -223372,15 +223883,15 @@ "updateContext": null }, "value": "if", - "start": 26025, - "end": 26027, + "start": 26075, + "end": 26077, "loc": { "start": { - "line": 701, + "line": 702, "column": 12 }, "end": { - "line": 701, + "line": 702, "column": 14 } } @@ -223397,15 +223908,15 @@ "postfix": false, "binop": null }, - "start": 26028, - "end": 26029, + "start": 26078, + "end": 26079, "loc": { "start": { - "line": 701, + "line": 702, "column": 15 }, "end": { - "line": 701, + "line": 702, "column": 16 } } @@ -223423,15 +223934,15 @@ "binop": null }, "value": "switchElement", - "start": 26029, - "end": 26042, + "start": 26079, + "end": 26092, "loc": { "start": { - "line": 701, + "line": 702, "column": 16 }, "end": { - "line": 701, + "line": 702, "column": 29 } } @@ -223448,15 +223959,15 @@ "postfix": false, "binop": null }, - "start": 26042, - "end": 26043, + "start": 26092, + "end": 26093, "loc": { "start": { - "line": 701, + "line": 702, "column": 29 }, "end": { - "line": 701, + "line": 702, "column": 30 } } @@ -223473,15 +223984,15 @@ "postfix": false, "binop": null }, - "start": 26044, - "end": 26045, + "start": 26094, + "end": 26095, "loc": { "start": { - "line": 701, + "line": 702, "column": 31 }, "end": { - "line": 701, + "line": 702, "column": 32 } } @@ -223501,15 +224012,15 @@ "updateContext": null }, "value": "this", - "start": 26062, - "end": 26066, + "start": 26112, + "end": 26116, "loc": { "start": { - "line": 702, + "line": 703, "column": 16 }, "end": { - "line": 702, + "line": 703, "column": 20 } } @@ -223527,15 +224038,15 @@ "binop": null, "updateContext": null }, - "start": 26066, - "end": 26067, + "start": 26116, + "end": 26117, "loc": { "start": { - "line": 702, + "line": 703, "column": 20 }, "end": { - "line": 702, + "line": 703, "column": 21 } } @@ -223553,15 +224064,15 @@ "binop": null }, "value": "_expandSwitchElement", - "start": 26067, - "end": 26087, + "start": 26117, + "end": 26137, "loc": { "start": { - "line": 702, + "line": 703, "column": 21 }, "end": { - "line": 702, + "line": 703, "column": 41 } } @@ -223578,15 +224089,15 @@ "postfix": false, "binop": null }, - "start": 26087, - "end": 26088, + "start": 26137, + "end": 26138, "loc": { "start": { - "line": 702, + "line": 703, "column": 41 }, "end": { - "line": 702, + "line": 703, "column": 42 } } @@ -223604,15 +224115,15 @@ "binop": null }, "value": "switchElement", - "start": 26088, - "end": 26101, + "start": 26138, + "end": 26151, "loc": { "start": { - "line": 702, + "line": 703, "column": 42 }, "end": { - "line": 702, + "line": 703, "column": 55 } } @@ -223629,15 +224140,15 @@ "postfix": false, "binop": null }, - "start": 26101, - "end": 26102, + "start": 26151, + "end": 26152, "loc": { "start": { - "line": 702, + "line": 703, "column": 55 }, "end": { - "line": 702, + "line": 703, "column": 56 } } @@ -223655,15 +224166,15 @@ "binop": null, "updateContext": null }, - "start": 26102, - "end": 26103, + "start": 26152, + "end": 26153, "loc": { "start": { - "line": 702, + "line": 703, "column": 56 }, "end": { - "line": 702, + "line": 703, "column": 57 } } @@ -223683,15 +224194,15 @@ "updateContext": null }, "value": "const", - "start": 26120, - "end": 26125, + "start": 26170, + "end": 26175, "loc": { "start": { - "line": 703, + "line": 704, "column": 16 }, "end": { - "line": 703, + "line": 704, "column": 21 } } @@ -223709,15 +224220,15 @@ "binop": null }, "value": "childNodes", - "start": 26126, - "end": 26136, + "start": 26176, + "end": 26186, "loc": { "start": { - "line": 703, + "line": 704, "column": 22 }, "end": { - "line": 703, + "line": 704, "column": 32 } } @@ -223736,15 +224247,15 @@ "updateContext": null }, "value": "=", - "start": 26137, - "end": 26138, + "start": 26187, + "end": 26188, "loc": { "start": { - "line": 703, + "line": 704, "column": 33 }, "end": { - "line": 703, + "line": 704, "column": 34 } } @@ -223762,15 +224273,15 @@ "binop": null }, "value": "node", - "start": 26139, - "end": 26143, + "start": 26189, + "end": 26193, "loc": { "start": { - "line": 703, + "line": 704, "column": 35 }, "end": { - "line": 703, + "line": 704, "column": 39 } } @@ -223788,15 +224299,15 @@ "binop": null, "updateContext": null }, - "start": 26143, - "end": 26144, + "start": 26193, + "end": 26194, "loc": { "start": { - "line": 703, + "line": 704, "column": 39 }, "end": { - "line": 703, + "line": 704, "column": 40 } } @@ -223814,15 +224325,15 @@ "binop": null }, "value": "children", - "start": 26144, - "end": 26152, + "start": 26194, + "end": 26202, "loc": { "start": { - "line": 703, + "line": 704, "column": 40 }, "end": { - "line": 703, + "line": 704, "column": 48 } } @@ -223840,15 +224351,15 @@ "binop": null, "updateContext": null }, - "start": 26152, - "end": 26153, + "start": 26202, + "end": 26203, "loc": { "start": { - "line": 703, + "line": 704, "column": 48 }, "end": { - "line": 703, + "line": 704, "column": 49 } } @@ -223868,15 +224379,15 @@ "updateContext": null }, "value": "for", - "start": 26170, - "end": 26173, + "start": 26220, + "end": 26223, "loc": { "start": { - "line": 704, + "line": 705, "column": 16 }, "end": { - "line": 704, + "line": 705, "column": 19 } } @@ -223893,15 +224404,15 @@ "postfix": false, "binop": null }, - "start": 26174, - "end": 26175, + "start": 26224, + "end": 26225, "loc": { "start": { - "line": 704, + "line": 705, "column": 20 }, "end": { - "line": 704, + "line": 705, "column": 21 } } @@ -223921,15 +224432,15 @@ "updateContext": null }, "value": "var", - "start": 26175, - "end": 26178, + "start": 26225, + "end": 26228, "loc": { "start": { - "line": 704, + "line": 705, "column": 21 }, "end": { - "line": 704, + "line": 705, "column": 24 } } @@ -223947,15 +224458,15 @@ "binop": null }, "value": "i", - "start": 26179, - "end": 26180, + "start": 26229, + "end": 26230, "loc": { "start": { - "line": 704, + "line": 705, "column": 25 }, "end": { - "line": 704, + "line": 705, "column": 26 } } @@ -223974,15 +224485,15 @@ "updateContext": null }, "value": "=", - "start": 26181, - "end": 26182, + "start": 26231, + "end": 26232, "loc": { "start": { - "line": 704, + "line": 705, "column": 27 }, "end": { - "line": 704, + "line": 705, "column": 28 } } @@ -224001,15 +224512,15 @@ "updateContext": null }, "value": 0, - "start": 26183, - "end": 26184, + "start": 26233, + "end": 26234, "loc": { "start": { - "line": 704, + "line": 705, "column": 29 }, "end": { - "line": 704, + "line": 705, "column": 30 } } @@ -224027,15 +224538,15 @@ "binop": null, "updateContext": null }, - "start": 26184, - "end": 26185, + "start": 26234, + "end": 26235, "loc": { "start": { - "line": 704, + "line": 705, "column": 30 }, "end": { - "line": 704, + "line": 705, "column": 31 } } @@ -224053,15 +224564,15 @@ "binop": null }, "value": "len", - "start": 26186, - "end": 26189, + "start": 26236, + "end": 26239, "loc": { "start": { - "line": 704, + "line": 705, "column": 32 }, "end": { - "line": 704, + "line": 705, "column": 35 } } @@ -224080,15 +224591,15 @@ "updateContext": null }, "value": "=", - "start": 26190, - "end": 26191, + "start": 26240, + "end": 26241, "loc": { "start": { - "line": 704, + "line": 705, "column": 36 }, "end": { - "line": 704, + "line": 705, "column": 37 } } @@ -224106,15 +224617,15 @@ "binop": null }, "value": "childNodes", - "start": 26192, - "end": 26202, + "start": 26242, + "end": 26252, "loc": { "start": { - "line": 704, + "line": 705, "column": 38 }, "end": { - "line": 704, + "line": 705, "column": 48 } } @@ -224132,15 +224643,15 @@ "binop": null, "updateContext": null }, - "start": 26202, - "end": 26203, + "start": 26252, + "end": 26253, "loc": { "start": { - "line": 704, + "line": 705, "column": 48 }, "end": { - "line": 704, + "line": 705, "column": 49 } } @@ -224158,15 +224669,15 @@ "binop": null }, "value": "length", - "start": 26203, - "end": 26209, + "start": 26253, + "end": 26259, "loc": { "start": { - "line": 704, + "line": 705, "column": 49 }, "end": { - "line": 704, + "line": 705, "column": 55 } } @@ -224184,15 +224695,15 @@ "binop": null, "updateContext": null }, - "start": 26209, - "end": 26210, + "start": 26259, + "end": 26260, "loc": { "start": { - "line": 704, + "line": 705, "column": 55 }, "end": { - "line": 704, + "line": 705, "column": 56 } } @@ -224210,15 +224721,15 @@ "binop": null }, "value": "i", - "start": 26211, - "end": 26212, + "start": 26261, + "end": 26262, "loc": { "start": { - "line": 704, + "line": 705, "column": 57 }, "end": { - "line": 704, + "line": 705, "column": 58 } } @@ -224237,15 +224748,15 @@ "updateContext": null }, "value": "<", - "start": 26213, - "end": 26214, + "start": 26263, + "end": 26264, "loc": { "start": { - "line": 704, + "line": 705, "column": 59 }, "end": { - "line": 704, + "line": 705, "column": 60 } } @@ -224263,15 +224774,15 @@ "binop": null }, "value": "len", - "start": 26215, - "end": 26218, + "start": 26265, + "end": 26268, "loc": { "start": { - "line": 704, + "line": 705, "column": 61 }, "end": { - "line": 704, + "line": 705, "column": 64 } } @@ -224289,15 +224800,15 @@ "binop": null, "updateContext": null }, - "start": 26218, - "end": 26219, + "start": 26268, + "end": 26269, "loc": { "start": { - "line": 704, + "line": 705, "column": 64 }, "end": { - "line": 704, + "line": 705, "column": 65 } } @@ -224315,15 +224826,15 @@ "binop": null }, "value": "i", - "start": 26220, - "end": 26221, + "start": 26270, + "end": 26271, "loc": { "start": { - "line": 704, + "line": 705, "column": 66 }, "end": { - "line": 704, + "line": 705, "column": 67 } } @@ -224341,15 +224852,15 @@ "binop": null }, "value": "++", - "start": 26221, - "end": 26223, + "start": 26271, + "end": 26273, "loc": { "start": { - "line": 704, + "line": 705, "column": 67 }, "end": { - "line": 704, + "line": 705, "column": 69 } } @@ -224366,15 +224877,15 @@ "postfix": false, "binop": null }, - "start": 26223, - "end": 26224, + "start": 26273, + "end": 26274, "loc": { "start": { - "line": 704, + "line": 705, "column": 69 }, "end": { - "line": 704, + "line": 705, "column": 70 } } @@ -224391,15 +224902,15 @@ "postfix": false, "binop": null }, - "start": 26225, - "end": 26226, + "start": 26275, + "end": 26276, "loc": { "start": { - "line": 704, + "line": 705, "column": 71 }, "end": { - "line": 704, + "line": 705, "column": 72 } } @@ -224419,15 +224930,15 @@ "updateContext": null }, "value": "const", - "start": 26247, - "end": 26252, + "start": 26297, + "end": 26302, "loc": { "start": { - "line": 705, + "line": 706, "column": 20 }, "end": { - "line": 705, + "line": 706, "column": 25 } } @@ -224445,15 +224956,15 @@ "binop": null }, "value": "childNode", - "start": 26253, - "end": 26262, + "start": 26303, + "end": 26312, "loc": { "start": { - "line": 705, + "line": 706, "column": 26 }, "end": { - "line": 705, + "line": 706, "column": 35 } } @@ -224472,15 +224983,15 @@ "updateContext": null }, "value": "=", - "start": 26263, - "end": 26264, + "start": 26313, + "end": 26314, "loc": { "start": { - "line": 705, + "line": 706, "column": 36 }, "end": { - "line": 705, + "line": 706, "column": 37 } } @@ -224498,15 +225009,15 @@ "binop": null }, "value": "childNodes", - "start": 26265, - "end": 26275, + "start": 26315, + "end": 26325, "loc": { "start": { - "line": 705, + "line": 706, "column": 38 }, "end": { - "line": 705, + "line": 706, "column": 48 } } @@ -224524,15 +225035,15 @@ "binop": null, "updateContext": null }, - "start": 26275, - "end": 26276, + "start": 26325, + "end": 26326, "loc": { "start": { - "line": 705, + "line": 706, "column": 48 }, "end": { - "line": 705, + "line": 706, "column": 49 } } @@ -224550,15 +225061,15 @@ "binop": null }, "value": "i", - "start": 26276, - "end": 26277, + "start": 26326, + "end": 26327, "loc": { "start": { - "line": 705, + "line": 706, "column": 49 }, "end": { - "line": 705, + "line": 706, "column": 50 } } @@ -224576,15 +225087,15 @@ "binop": null, "updateContext": null }, - "start": 26277, - "end": 26278, + "start": 26327, + "end": 26328, "loc": { "start": { - "line": 705, + "line": 706, "column": 50 }, "end": { - "line": 705, + "line": 706, "column": 51 } } @@ -224602,15 +225113,15 @@ "binop": null, "updateContext": null }, - "start": 26278, - "end": 26279, + "start": 26328, + "end": 26329, "loc": { "start": { - "line": 705, + "line": 706, "column": 51 }, "end": { - "line": 705, + "line": 706, "column": 52 } } @@ -224628,15 +225139,15 @@ "binop": null }, "value": "expand", - "start": 26300, - "end": 26306, + "start": 26350, + "end": 26356, "loc": { "start": { - "line": 706, + "line": 707, "column": 20 }, "end": { - "line": 706, + "line": 707, "column": 26 } } @@ -224653,15 +225164,15 @@ "postfix": false, "binop": null }, - "start": 26306, - "end": 26307, + "start": 26356, + "end": 26357, "loc": { "start": { - "line": 706, + "line": 707, "column": 26 }, "end": { - "line": 706, + "line": 707, "column": 27 } } @@ -224679,15 +225190,15 @@ "binop": null }, "value": "childNode", - "start": 26307, - "end": 26316, + "start": 26357, + "end": 26366, "loc": { "start": { - "line": 706, + "line": 707, "column": 27 }, "end": { - "line": 706, + "line": 707, "column": 36 } } @@ -224705,15 +225216,15 @@ "binop": null, "updateContext": null }, - "start": 26316, - "end": 26317, + "start": 26366, + "end": 26367, "loc": { "start": { - "line": 706, + "line": 707, "column": 36 }, "end": { - "line": 706, + "line": 707, "column": 37 } } @@ -224731,15 +225242,15 @@ "binop": null }, "value": "countDepth", - "start": 26318, - "end": 26328, + "start": 26368, + "end": 26378, "loc": { "start": { - "line": 706, + "line": 707, "column": 38 }, "end": { - "line": 706, + "line": 707, "column": 48 } } @@ -224758,15 +225269,15 @@ "updateContext": null }, "value": "+", - "start": 26329, - "end": 26330, + "start": 26379, + "end": 26380, "loc": { "start": { - "line": 706, + "line": 707, "column": 49 }, "end": { - "line": 706, + "line": 707, "column": 50 } } @@ -224785,15 +225296,15 @@ "updateContext": null }, "value": 1, - "start": 26331, - "end": 26332, + "start": 26381, + "end": 26382, "loc": { "start": { - "line": 706, + "line": 707, "column": 51 }, "end": { - "line": 706, + "line": 707, "column": 52 } } @@ -224810,15 +225321,15 @@ "postfix": false, "binop": null }, - "start": 26332, - "end": 26333, + "start": 26382, + "end": 26383, "loc": { "start": { - "line": 706, + "line": 707, "column": 52 }, "end": { - "line": 706, + "line": 707, "column": 53 } } @@ -224836,15 +225347,15 @@ "binop": null, "updateContext": null }, - "start": 26333, - "end": 26334, + "start": 26383, + "end": 26384, "loc": { "start": { - "line": 706, + "line": 707, "column": 53 }, "end": { - "line": 706, + "line": 707, "column": 54 } } @@ -224861,15 +225372,15 @@ "postfix": false, "binop": null }, - "start": 26351, - "end": 26352, + "start": 26401, + "end": 26402, "loc": { "start": { - "line": 707, + "line": 708, "column": 16 }, "end": { - "line": 707, + "line": 708, "column": 17 } } @@ -224886,15 +225397,15 @@ "postfix": false, "binop": null }, - "start": 26365, - "end": 26366, + "start": 26415, + "end": 26416, "loc": { "start": { - "line": 708, + "line": 709, "column": 12 }, "end": { - "line": 708, + "line": 709, "column": 13 } } @@ -224911,15 +225422,15 @@ "postfix": false, "binop": null }, - "start": 26375, - "end": 26376, + "start": 26425, + "end": 26426, "loc": { "start": { - "line": 709, + "line": 710, "column": 8 }, "end": { - "line": 709, + "line": 710, "column": 9 } } @@ -224937,15 +225448,15 @@ "binop": null, "updateContext": null }, - "start": 26376, - "end": 26377, + "start": 26426, + "end": 26427, "loc": { "start": { - "line": 709, + "line": 710, "column": 9 }, "end": { - "line": 709, + "line": 710, "column": 10 } } @@ -224965,15 +225476,15 @@ "updateContext": null }, "value": "for", - "start": 26386, - "end": 26389, + "start": 26436, + "end": 26439, "loc": { "start": { - "line": 710, + "line": 711, "column": 8 }, "end": { - "line": 710, + "line": 711, "column": 11 } } @@ -224990,15 +225501,15 @@ "postfix": false, "binop": null }, - "start": 26390, - "end": 26391, + "start": 26440, + "end": 26441, "loc": { "start": { - "line": 710, + "line": 711, "column": 12 }, "end": { - "line": 710, + "line": 711, "column": 13 } } @@ -225018,15 +225529,15 @@ "updateContext": null }, "value": "let", - "start": 26391, - "end": 26394, + "start": 26441, + "end": 26444, "loc": { "start": { - "line": 710, + "line": 711, "column": 13 }, "end": { - "line": 710, + "line": 711, "column": 16 } } @@ -225044,15 +225555,15 @@ "binop": null }, "value": "i", - "start": 26395, - "end": 26396, + "start": 26445, + "end": 26446, "loc": { "start": { - "line": 710, + "line": 711, "column": 17 }, "end": { - "line": 710, + "line": 711, "column": 18 } } @@ -225071,15 +225582,15 @@ "updateContext": null }, "value": "=", - "start": 26397, - "end": 26398, + "start": 26447, + "end": 26448, "loc": { "start": { - "line": 710, + "line": 711, "column": 19 }, "end": { - "line": 710, + "line": 711, "column": 20 } } @@ -225098,15 +225609,15 @@ "updateContext": null }, "value": 0, - "start": 26399, - "end": 26400, + "start": 26449, + "end": 26450, "loc": { "start": { - "line": 710, + "line": 711, "column": 21 }, "end": { - "line": 710, + "line": 711, "column": 22 } } @@ -225124,15 +225635,15 @@ "binop": null, "updateContext": null }, - "start": 26400, - "end": 26401, + "start": 26450, + "end": 26451, "loc": { "start": { - "line": 710, + "line": 711, "column": 22 }, "end": { - "line": 710, + "line": 711, "column": 23 } } @@ -225150,15 +225661,15 @@ "binop": null }, "value": "len", - "start": 26402, - "end": 26405, + "start": 26452, + "end": 26455, "loc": { "start": { - "line": 710, + "line": 711, "column": 24 }, "end": { - "line": 710, + "line": 711, "column": 27 } } @@ -225177,15 +225688,15 @@ "updateContext": null }, "value": "=", - "start": 26406, - "end": 26407, + "start": 26456, + "end": 26457, "loc": { "start": { - "line": 710, + "line": 711, "column": 28 }, "end": { - "line": 710, + "line": 711, "column": 29 } } @@ -225205,15 +225716,15 @@ "updateContext": null }, "value": "this", - "start": 26408, - "end": 26412, + "start": 26458, + "end": 26462, "loc": { "start": { - "line": 710, + "line": 711, "column": 30 }, "end": { - "line": 710, + "line": 711, "column": 34 } } @@ -225231,15 +225742,15 @@ "binop": null, "updateContext": null }, - "start": 26412, - "end": 26413, + "start": 26462, + "end": 26463, "loc": { "start": { - "line": 710, + "line": 711, "column": 34 }, "end": { - "line": 710, + "line": 711, "column": 35 } } @@ -225257,15 +225768,15 @@ "binop": null }, "value": "_rootNodes", - "start": 26413, - "end": 26423, + "start": 26463, + "end": 26473, "loc": { "start": { - "line": 710, + "line": 711, "column": 35 }, "end": { - "line": 710, + "line": 711, "column": 45 } } @@ -225283,15 +225794,15 @@ "binop": null, "updateContext": null }, - "start": 26423, - "end": 26424, + "start": 26473, + "end": 26474, "loc": { "start": { - "line": 710, + "line": 711, "column": 45 }, "end": { - "line": 710, + "line": 711, "column": 46 } } @@ -225309,15 +225820,15 @@ "binop": null }, "value": "length", - "start": 26424, - "end": 26430, + "start": 26474, + "end": 26480, "loc": { "start": { - "line": 710, + "line": 711, "column": 46 }, "end": { - "line": 710, + "line": 711, "column": 52 } } @@ -225335,15 +225846,15 @@ "binop": null, "updateContext": null }, - "start": 26430, - "end": 26431, + "start": 26480, + "end": 26481, "loc": { "start": { - "line": 710, + "line": 711, "column": 52 }, "end": { - "line": 710, + "line": 711, "column": 53 } } @@ -225361,15 +225872,15 @@ "binop": null }, "value": "i", - "start": 26432, - "end": 26433, + "start": 26482, + "end": 26483, "loc": { "start": { - "line": 710, + "line": 711, "column": 54 }, "end": { - "line": 710, + "line": 711, "column": 55 } } @@ -225388,15 +225899,15 @@ "updateContext": null }, "value": "<", - "start": 26434, - "end": 26435, + "start": 26484, + "end": 26485, "loc": { "start": { - "line": 710, + "line": 711, "column": 56 }, "end": { - "line": 710, + "line": 711, "column": 57 } } @@ -225414,15 +225925,15 @@ "binop": null }, "value": "len", - "start": 26436, - "end": 26439, + "start": 26486, + "end": 26489, "loc": { "start": { - "line": 710, + "line": 711, "column": 58 }, "end": { - "line": 710, + "line": 711, "column": 61 } } @@ -225440,15 +225951,15 @@ "binop": null, "updateContext": null }, - "start": 26439, - "end": 26440, + "start": 26489, + "end": 26490, "loc": { "start": { - "line": 710, + "line": 711, "column": 61 }, "end": { - "line": 710, + "line": 711, "column": 62 } } @@ -225466,15 +225977,15 @@ "binop": null }, "value": "i", - "start": 26441, - "end": 26442, + "start": 26491, + "end": 26492, "loc": { "start": { - "line": 710, + "line": 711, "column": 63 }, "end": { - "line": 710, + "line": 711, "column": 64 } } @@ -225492,15 +226003,15 @@ "binop": null }, "value": "++", - "start": 26442, - "end": 26444, + "start": 26492, + "end": 26494, "loc": { "start": { - "line": 710, + "line": 711, "column": 64 }, "end": { - "line": 710, + "line": 711, "column": 66 } } @@ -225517,15 +226028,15 @@ "postfix": false, "binop": null }, - "start": 26444, - "end": 26445, + "start": 26494, + "end": 26495, "loc": { "start": { - "line": 710, + "line": 711, "column": 66 }, "end": { - "line": 710, + "line": 711, "column": 67 } } @@ -225542,15 +226053,15 @@ "postfix": false, "binop": null }, - "start": 26446, - "end": 26447, + "start": 26496, + "end": 26497, "loc": { "start": { - "line": 710, + "line": 711, "column": 68 }, "end": { - "line": 710, + "line": 711, "column": 69 } } @@ -225570,15 +226081,15 @@ "updateContext": null }, "value": "const", - "start": 26460, - "end": 26465, + "start": 26510, + "end": 26515, "loc": { "start": { - "line": 711, + "line": 712, "column": 12 }, "end": { - "line": 711, + "line": 712, "column": 17 } } @@ -225596,15 +226107,15 @@ "binop": null }, "value": "rootNode", - "start": 26466, - "end": 26474, + "start": 26516, + "end": 26524, "loc": { "start": { - "line": 711, + "line": 712, "column": 18 }, "end": { - "line": 711, + "line": 712, "column": 26 } } @@ -225623,15 +226134,15 @@ "updateContext": null }, "value": "=", - "start": 26475, - "end": 26476, + "start": 26525, + "end": 26526, "loc": { "start": { - "line": 711, + "line": 712, "column": 27 }, "end": { - "line": 711, + "line": 712, "column": 28 } } @@ -225651,15 +226162,15 @@ "updateContext": null }, "value": "this", - "start": 26477, - "end": 26481, + "start": 26527, + "end": 26531, "loc": { "start": { - "line": 711, + "line": 712, "column": 29 }, "end": { - "line": 711, + "line": 712, "column": 33 } } @@ -225677,15 +226188,15 @@ "binop": null, "updateContext": null }, - "start": 26481, - "end": 26482, + "start": 26531, + "end": 26532, "loc": { "start": { - "line": 711, + "line": 712, "column": 33 }, "end": { - "line": 711, + "line": 712, "column": 34 } } @@ -225703,15 +226214,15 @@ "binop": null }, "value": "_rootNodes", - "start": 26482, - "end": 26492, + "start": 26532, + "end": 26542, "loc": { "start": { - "line": 711, + "line": 712, "column": 34 }, "end": { - "line": 711, + "line": 712, "column": 44 } } @@ -225729,15 +226240,15 @@ "binop": null, "updateContext": null }, - "start": 26492, - "end": 26493, + "start": 26542, + "end": 26543, "loc": { "start": { - "line": 711, + "line": 712, "column": 44 }, "end": { - "line": 711, + "line": 712, "column": 45 } } @@ -225755,15 +226266,15 @@ "binop": null }, "value": "i", - "start": 26493, - "end": 26494, + "start": 26543, + "end": 26544, "loc": { "start": { - "line": 711, + "line": 712, "column": 45 }, "end": { - "line": 711, + "line": 712, "column": 46 } } @@ -225781,15 +226292,15 @@ "binop": null, "updateContext": null }, - "start": 26494, - "end": 26495, + "start": 26544, + "end": 26545, "loc": { "start": { - "line": 711, + "line": 712, "column": 46 }, "end": { - "line": 711, + "line": 712, "column": 47 } } @@ -225807,15 +226318,15 @@ "binop": null, "updateContext": null }, - "start": 26495, - "end": 26496, + "start": 26545, + "end": 26546, "loc": { "start": { - "line": 711, + "line": 712, "column": 47 }, "end": { - "line": 711, + "line": 712, "column": 48 } } @@ -225833,15 +226344,15 @@ "binop": null }, "value": "expand", - "start": 26509, - "end": 26515, + "start": 26559, + "end": 26565, "loc": { "start": { - "line": 712, + "line": 713, "column": 12 }, "end": { - "line": 712, + "line": 713, "column": 18 } } @@ -225858,15 +226369,15 @@ "postfix": false, "binop": null }, - "start": 26515, - "end": 26516, + "start": 26565, + "end": 26566, "loc": { "start": { - "line": 712, + "line": 713, "column": 18 }, "end": { - "line": 712, + "line": 713, "column": 19 } } @@ -225884,15 +226395,15 @@ "binop": null }, "value": "rootNode", - "start": 26516, - "end": 26524, + "start": 26566, + "end": 26574, "loc": { "start": { - "line": 712, + "line": 713, "column": 19 }, "end": { - "line": 712, + "line": 713, "column": 27 } } @@ -225910,15 +226421,15 @@ "binop": null, "updateContext": null }, - "start": 26524, - "end": 26525, + "start": 26574, + "end": 26575, "loc": { "start": { - "line": 712, + "line": 713, "column": 27 }, "end": { - "line": 712, + "line": 713, "column": 28 } } @@ -225937,15 +226448,15 @@ "updateContext": null }, "value": 0, - "start": 26526, - "end": 26527, + "start": 26576, + "end": 26577, "loc": { "start": { - "line": 712, + "line": 713, "column": 29 }, "end": { - "line": 712, + "line": 713, "column": 30 } } @@ -225962,15 +226473,15 @@ "postfix": false, "binop": null }, - "start": 26527, - "end": 26528, + "start": 26577, + "end": 26578, "loc": { "start": { - "line": 712, + "line": 713, "column": 30 }, "end": { - "line": 712, + "line": 713, "column": 31 } } @@ -225988,15 +226499,15 @@ "binop": null, "updateContext": null }, - "start": 26528, - "end": 26529, + "start": 26578, + "end": 26579, "loc": { "start": { - "line": 712, + "line": 713, "column": 31 }, "end": { - "line": 712, + "line": 713, "column": 32 } } @@ -226013,15 +226524,15 @@ "postfix": false, "binop": null }, - "start": 26538, - "end": 26539, + "start": 26588, + "end": 26589, "loc": { "start": { - "line": 713, + "line": 714, "column": 8 }, "end": { - "line": 713, + "line": 714, "column": 9 } } @@ -226038,15 +226549,15 @@ "postfix": false, "binop": null }, - "start": 26544, - "end": 26545, + "start": 26594, + "end": 26595, "loc": { "start": { - "line": 714, + "line": 715, "column": 4 }, "end": { - "line": 714, + "line": 715, "column": 5 } } @@ -226054,15 +226565,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 26551, - "end": 26578, + "start": 26601, + "end": 26628, "loc": { "start": { - "line": 716, + "line": 717, "column": 4 }, "end": { - "line": 718, + "line": 719, "column": 7 } } @@ -226080,15 +226591,15 @@ "binop": null }, "value": "collapse", - "start": 26583, - "end": 26591, + "start": 26633, + "end": 26641, "loc": { "start": { - "line": 719, + "line": 720, "column": 4 }, "end": { - "line": 719, + "line": 720, "column": 12 } } @@ -226105,15 +226616,15 @@ "postfix": false, "binop": null }, - "start": 26591, - "end": 26592, + "start": 26641, + "end": 26642, "loc": { "start": { - "line": 719, + "line": 720, "column": 12 }, "end": { - "line": 719, + "line": 720, "column": 13 } } @@ -226130,15 +226641,15 @@ "postfix": false, "binop": null }, - "start": 26592, - "end": 26593, + "start": 26642, + "end": 26643, "loc": { "start": { - "line": 719, + "line": 720, "column": 13 }, "end": { - "line": 719, + "line": 720, "column": 14 } } @@ -226155,15 +226666,15 @@ "postfix": false, "binop": null }, - "start": 26594, - "end": 26595, + "start": 26644, + "end": 26645, "loc": { "start": { - "line": 719, + "line": 720, "column": 15 }, "end": { - "line": 719, + "line": 720, "column": 16 } } @@ -226183,15 +226694,15 @@ "updateContext": null }, "value": "for", - "start": 26604, - "end": 26607, + "start": 26654, + "end": 26657, "loc": { "start": { - "line": 720, + "line": 721, "column": 8 }, "end": { - "line": 720, + "line": 721, "column": 11 } } @@ -226208,15 +226719,15 @@ "postfix": false, "binop": null }, - "start": 26608, - "end": 26609, + "start": 26658, + "end": 26659, "loc": { "start": { - "line": 720, + "line": 721, "column": 12 }, "end": { - "line": 720, + "line": 721, "column": 13 } } @@ -226236,15 +226747,15 @@ "updateContext": null }, "value": "let", - "start": 26609, - "end": 26612, + "start": 26659, + "end": 26662, "loc": { "start": { - "line": 720, + "line": 721, "column": 13 }, "end": { - "line": 720, + "line": 721, "column": 16 } } @@ -226262,15 +226773,15 @@ "binop": null }, "value": "i", - "start": 26613, - "end": 26614, + "start": 26663, + "end": 26664, "loc": { "start": { - "line": 720, + "line": 721, "column": 17 }, "end": { - "line": 720, + "line": 721, "column": 18 } } @@ -226289,15 +226800,15 @@ "updateContext": null }, "value": "=", - "start": 26615, - "end": 26616, + "start": 26665, + "end": 26666, "loc": { "start": { - "line": 720, + "line": 721, "column": 19 }, "end": { - "line": 720, + "line": 721, "column": 20 } } @@ -226316,15 +226827,15 @@ "updateContext": null }, "value": 0, - "start": 26617, - "end": 26618, + "start": 26667, + "end": 26668, "loc": { "start": { - "line": 720, + "line": 721, "column": 21 }, "end": { - "line": 720, + "line": 721, "column": 22 } } @@ -226342,15 +226853,15 @@ "binop": null, "updateContext": null }, - "start": 26618, - "end": 26619, + "start": 26668, + "end": 26669, "loc": { "start": { - "line": 720, + "line": 721, "column": 22 }, "end": { - "line": 720, + "line": 721, "column": 23 } } @@ -226368,15 +226879,15 @@ "binop": null }, "value": "len", - "start": 26620, - "end": 26623, + "start": 26670, + "end": 26673, "loc": { "start": { - "line": 720, + "line": 721, "column": 24 }, "end": { - "line": 720, + "line": 721, "column": 27 } } @@ -226395,15 +226906,15 @@ "updateContext": null }, "value": "=", - "start": 26624, - "end": 26625, + "start": 26674, + "end": 26675, "loc": { "start": { - "line": 720, + "line": 721, "column": 28 }, "end": { - "line": 720, + "line": 721, "column": 29 } } @@ -226423,15 +226934,15 @@ "updateContext": null }, "value": "this", - "start": 26626, - "end": 26630, + "start": 26676, + "end": 26680, "loc": { "start": { - "line": 720, + "line": 721, "column": 30 }, "end": { - "line": 720, + "line": 721, "column": 34 } } @@ -226449,15 +226960,15 @@ "binop": null, "updateContext": null }, - "start": 26630, - "end": 26631, + "start": 26680, + "end": 26681, "loc": { "start": { - "line": 720, + "line": 721, "column": 34 }, "end": { - "line": 720, + "line": 721, "column": 35 } } @@ -226475,15 +226986,15 @@ "binop": null }, "value": "_rootNodes", - "start": 26631, - "end": 26641, + "start": 26681, + "end": 26691, "loc": { "start": { - "line": 720, + "line": 721, "column": 35 }, "end": { - "line": 720, + "line": 721, "column": 45 } } @@ -226501,15 +227012,15 @@ "binop": null, "updateContext": null }, - "start": 26641, - "end": 26642, + "start": 26691, + "end": 26692, "loc": { "start": { - "line": 720, + "line": 721, "column": 45 }, "end": { - "line": 720, + "line": 721, "column": 46 } } @@ -226527,15 +227038,15 @@ "binop": null }, "value": "length", - "start": 26642, - "end": 26648, + "start": 26692, + "end": 26698, "loc": { "start": { - "line": 720, + "line": 721, "column": 46 }, "end": { - "line": 720, + "line": 721, "column": 52 } } @@ -226553,15 +227064,15 @@ "binop": null, "updateContext": null }, - "start": 26648, - "end": 26649, + "start": 26698, + "end": 26699, "loc": { "start": { - "line": 720, + "line": 721, "column": 52 }, "end": { - "line": 720, + "line": 721, "column": 53 } } @@ -226579,15 +227090,15 @@ "binop": null }, "value": "i", - "start": 26650, - "end": 26651, + "start": 26700, + "end": 26701, "loc": { "start": { - "line": 720, + "line": 721, "column": 54 }, "end": { - "line": 720, + "line": 721, "column": 55 } } @@ -226606,15 +227117,15 @@ "updateContext": null }, "value": "<", - "start": 26652, - "end": 26653, + "start": 26702, + "end": 26703, "loc": { "start": { - "line": 720, + "line": 721, "column": 56 }, "end": { - "line": 720, + "line": 721, "column": 57 } } @@ -226632,15 +227143,15 @@ "binop": null }, "value": "len", - "start": 26654, - "end": 26657, + "start": 26704, + "end": 26707, "loc": { "start": { - "line": 720, + "line": 721, "column": 58 }, "end": { - "line": 720, + "line": 721, "column": 61 } } @@ -226658,15 +227169,15 @@ "binop": null, "updateContext": null }, - "start": 26657, - "end": 26658, + "start": 26707, + "end": 26708, "loc": { "start": { - "line": 720, + "line": 721, "column": 61 }, "end": { - "line": 720, + "line": 721, "column": 62 } } @@ -226684,15 +227195,15 @@ "binop": null }, "value": "i", - "start": 26659, - "end": 26660, + "start": 26709, + "end": 26710, "loc": { "start": { - "line": 720, + "line": 721, "column": 63 }, "end": { - "line": 720, + "line": 721, "column": 64 } } @@ -226710,15 +227221,15 @@ "binop": null }, "value": "++", - "start": 26660, - "end": 26662, + "start": 26710, + "end": 26712, "loc": { "start": { - "line": 720, + "line": 721, "column": 64 }, "end": { - "line": 720, + "line": 721, "column": 66 } } @@ -226735,15 +227246,15 @@ "postfix": false, "binop": null }, - "start": 26662, - "end": 26663, + "start": 26712, + "end": 26713, "loc": { "start": { - "line": 720, + "line": 721, "column": 66 }, "end": { - "line": 720, + "line": 721, "column": 67 } } @@ -226760,15 +227271,15 @@ "postfix": false, "binop": null }, - "start": 26664, - "end": 26665, + "start": 26714, + "end": 26715, "loc": { "start": { - "line": 720, + "line": 721, "column": 68 }, "end": { - "line": 720, + "line": 721, "column": 69 } } @@ -226788,15 +227299,15 @@ "updateContext": null }, "value": "const", - "start": 26678, - "end": 26683, + "start": 26728, + "end": 26733, "loc": { "start": { - "line": 721, + "line": 722, "column": 12 }, "end": { - "line": 721, + "line": 722, "column": 17 } } @@ -226814,15 +227325,15 @@ "binop": null }, "value": "rootNode", - "start": 26684, - "end": 26692, + "start": 26734, + "end": 26742, "loc": { "start": { - "line": 721, + "line": 722, "column": 18 }, "end": { - "line": 721, + "line": 722, "column": 26 } } @@ -226841,15 +227352,15 @@ "updateContext": null }, "value": "=", - "start": 26693, - "end": 26694, + "start": 26743, + "end": 26744, "loc": { "start": { - "line": 721, + "line": 722, "column": 27 }, "end": { - "line": 721, + "line": 722, "column": 28 } } @@ -226869,15 +227380,15 @@ "updateContext": null }, "value": "this", - "start": 26695, - "end": 26699, + "start": 26745, + "end": 26749, "loc": { "start": { - "line": 721, + "line": 722, "column": 29 }, "end": { - "line": 721, + "line": 722, "column": 33 } } @@ -226895,15 +227406,15 @@ "binop": null, "updateContext": null }, - "start": 26699, - "end": 26700, + "start": 26749, + "end": 26750, "loc": { "start": { - "line": 721, + "line": 722, "column": 33 }, "end": { - "line": 721, + "line": 722, "column": 34 } } @@ -226921,15 +227432,15 @@ "binop": null }, "value": "_rootNodes", - "start": 26700, - "end": 26710, + "start": 26750, + "end": 26760, "loc": { "start": { - "line": 721, + "line": 722, "column": 34 }, "end": { - "line": 721, + "line": 722, "column": 44 } } @@ -226947,15 +227458,15 @@ "binop": null, "updateContext": null }, - "start": 26710, - "end": 26711, + "start": 26760, + "end": 26761, "loc": { "start": { - "line": 721, + "line": 722, "column": 44 }, "end": { - "line": 721, + "line": 722, "column": 45 } } @@ -226973,15 +227484,15 @@ "binop": null }, "value": "i", - "start": 26711, - "end": 26712, + "start": 26761, + "end": 26762, "loc": { "start": { - "line": 721, + "line": 722, "column": 45 }, "end": { - "line": 721, + "line": 722, "column": 46 } } @@ -226999,15 +227510,15 @@ "binop": null, "updateContext": null }, - "start": 26712, - "end": 26713, + "start": 26762, + "end": 26763, "loc": { "start": { - "line": 721, + "line": 722, "column": 46 }, "end": { - "line": 721, + "line": 722, "column": 47 } } @@ -227025,15 +227536,15 @@ "binop": null, "updateContext": null }, - "start": 26713, - "end": 26714, + "start": 26763, + "end": 26764, "loc": { "start": { - "line": 721, + "line": 722, "column": 47 }, "end": { - "line": 721, + "line": 722, "column": 48 } } @@ -227053,15 +227564,15 @@ "updateContext": null }, "value": "const", - "start": 26727, - "end": 26732, + "start": 26777, + "end": 26782, "loc": { "start": { - "line": 722, + "line": 723, "column": 12 }, "end": { - "line": 722, + "line": 723, "column": 17 } } @@ -227079,15 +227590,15 @@ "binop": null }, "value": "objectId", - "start": 26733, - "end": 26741, + "start": 26783, + "end": 26791, "loc": { "start": { - "line": 722, + "line": 723, "column": 18 }, "end": { - "line": 722, + "line": 723, "column": 26 } } @@ -227106,15 +227617,15 @@ "updateContext": null }, "value": "=", - "start": 26742, - "end": 26743, + "start": 26792, + "end": 26793, "loc": { "start": { - "line": 722, + "line": 723, "column": 27 }, "end": { - "line": 722, + "line": 723, "column": 28 } } @@ -227132,15 +227643,15 @@ "binop": null }, "value": "rootNode", - "start": 26744, - "end": 26752, + "start": 26794, + "end": 26802, "loc": { "start": { - "line": 722, + "line": 723, "column": 29 }, "end": { - "line": 722, + "line": 723, "column": 37 } } @@ -227158,15 +227669,15 @@ "binop": null, "updateContext": null }, - "start": 26752, - "end": 26753, + "start": 26802, + "end": 26803, "loc": { "start": { - "line": 722, + "line": 723, "column": 37 }, "end": { - "line": 722, + "line": 723, "column": 38 } } @@ -227184,15 +227695,15 @@ "binop": null }, "value": "objectId", - "start": 26753, - "end": 26761, + "start": 26803, + "end": 26811, "loc": { "start": { - "line": 722, + "line": 723, "column": 38 }, "end": { - "line": 722, + "line": 723, "column": 46 } } @@ -227210,15 +227721,15 @@ "binop": null, "updateContext": null }, - "start": 26761, - "end": 26762, + "start": 26811, + "end": 26812, "loc": { "start": { - "line": 722, + "line": 723, "column": 46 }, "end": { - "line": 722, + "line": 723, "column": 47 } } @@ -227238,15 +227749,15 @@ "updateContext": null }, "value": "this", - "start": 26775, - "end": 26779, + "start": 26825, + "end": 26829, "loc": { "start": { - "line": 723, + "line": 724, "column": 12 }, "end": { - "line": 723, + "line": 724, "column": 16 } } @@ -227264,15 +227775,15 @@ "binop": null, "updateContext": null }, - "start": 26779, - "end": 26780, + "start": 26829, + "end": 26830, "loc": { "start": { - "line": 723, + "line": 724, "column": 16 }, "end": { - "line": 723, + "line": 724, "column": 17 } } @@ -227290,15 +227801,15 @@ "binop": null }, "value": "_collapseNode", - "start": 26780, - "end": 26793, + "start": 26830, + "end": 26843, "loc": { "start": { - "line": 723, + "line": 724, "column": 17 }, "end": { - "line": 723, + "line": 724, "column": 30 } } @@ -227315,15 +227826,15 @@ "postfix": false, "binop": null }, - "start": 26793, - "end": 26794, + "start": 26843, + "end": 26844, "loc": { "start": { - "line": 723, + "line": 724, "column": 30 }, "end": { - "line": 723, + "line": 724, "column": 31 } } @@ -227341,15 +227852,15 @@ "binop": null }, "value": "objectId", - "start": 26794, - "end": 26802, + "start": 26844, + "end": 26852, "loc": { "start": { - "line": 723, + "line": 724, "column": 31 }, "end": { - "line": 723, + "line": 724, "column": 39 } } @@ -227366,15 +227877,15 @@ "postfix": false, "binop": null }, - "start": 26802, - "end": 26803, + "start": 26852, + "end": 26853, "loc": { "start": { - "line": 723, + "line": 724, "column": 39 }, "end": { - "line": 723, + "line": 724, "column": 40 } } @@ -227392,15 +227903,15 @@ "binop": null, "updateContext": null }, - "start": 26803, - "end": 26804, + "start": 26853, + "end": 26854, "loc": { "start": { - "line": 723, + "line": 724, "column": 40 }, "end": { - "line": 723, + "line": 724, "column": 41 } } @@ -227417,15 +227928,15 @@ "postfix": false, "binop": null }, - "start": 26813, - "end": 26814, + "start": 26863, + "end": 26864, "loc": { "start": { - "line": 724, + "line": 725, "column": 8 }, "end": { - "line": 724, + "line": 725, "column": 9 } } @@ -227442,15 +227953,15 @@ "postfix": false, "binop": null }, - "start": 26819, - "end": 26820, + "start": 26869, + "end": 26870, "loc": { "start": { - "line": 725, + "line": 726, "column": 4 }, "end": { - "line": 725, + "line": 726, "column": 5 } } @@ -227458,15 +227969,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n * @param objectId\n ", - "start": 26826, - "end": 26876, + "start": 26876, + "end": 26926, "loc": { "start": { - "line": 727, + "line": 728, "column": 4 }, "end": { - "line": 730, + "line": 731, "column": 7 } } @@ -227484,15 +227995,15 @@ "binop": null }, "value": "showNode", - "start": 26881, - "end": 26889, + "start": 26931, + "end": 26939, "loc": { "start": { - "line": 731, + "line": 732, "column": 4 }, "end": { - "line": 731, + "line": 732, "column": 12 } } @@ -227509,15 +228020,15 @@ "postfix": false, "binop": null }, - "start": 26889, - "end": 26890, + "start": 26939, + "end": 26940, "loc": { "start": { - "line": 731, + "line": 732, "column": 12 }, "end": { - "line": 731, + "line": 732, "column": 13 } } @@ -227535,15 +228046,15 @@ "binop": null }, "value": "objectId", - "start": 26890, - "end": 26898, + "start": 26940, + "end": 26948, "loc": { "start": { - "line": 731, + "line": 732, "column": 13 }, "end": { - "line": 731, + "line": 732, "column": 21 } } @@ -227560,15 +228071,15 @@ "postfix": false, "binop": null }, - "start": 26898, - "end": 26899, + "start": 26948, + "end": 26949, "loc": { "start": { - "line": 731, + "line": 732, "column": 21 }, "end": { - "line": 731, + "line": 732, "column": 22 } } @@ -227585,15 +228096,15 @@ "postfix": false, "binop": null }, - "start": 26900, - "end": 26901, + "start": 26950, + "end": 26951, "loc": { "start": { - "line": 731, + "line": 732, "column": 23 }, "end": { - "line": 731, + "line": 732, "column": 24 } } @@ -227613,15 +228124,15 @@ "updateContext": null }, "value": "if", - "start": 26910, - "end": 26912, + "start": 26960, + "end": 26962, "loc": { "start": { - "line": 732, + "line": 733, "column": 8 }, "end": { - "line": 732, + "line": 733, "column": 10 } } @@ -227638,146 +228149,16 @@ "postfix": false, "binop": null }, - "start": 26913, - "end": 26914, + "start": 26963, + "end": 26964, "loc": { "start": { - "line": 732, + "line": 733, "column": 11 }, "end": { - "line": 732, - "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": 26914, - "end": 26918, - "loc": { - "start": { - "line": 732, + "line": 733, "column": 12 - }, - "end": { - "line": 732, - "column": 16 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 26918, - "end": 26919, - "loc": { - "start": { - "line": 732, - "column": 16 - }, - "end": { - "line": 732, - "column": 17 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "_showListItemElementId", - "start": 26919, - "end": 26941, - "loc": { - "start": { - "line": 732, - "column": 17 - }, - "end": { - "line": 732, - "column": 39 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 26941, - "end": 26942, - "loc": { - "start": { - "line": 732, - "column": 39 - }, - "end": { - "line": 732, - "column": 40 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 26943, - "end": 26944, - "loc": { - "start": { - "line": 732, - "column": 41 - }, - "end": { - "line": 732, - "column": 42 } } }, @@ -227796,8 +228177,8 @@ "updateContext": null }, "value": "this", - "start": 26957, - "end": 26961, + "start": 26964, + "end": 26968, "loc": { "start": { "line": 733, @@ -227822,8 +228203,8 @@ "binop": null, "updateContext": null }, - "start": 26961, - "end": 26962, + "start": 26968, + "end": 26969, "loc": { "start": { "line": 733, @@ -227847,9 +228228,9 @@ "postfix": false, "binop": null }, - "value": "unShowNode", - "start": 26962, - "end": 26972, + "value": "_showListItemElementId", + "start": 26969, + "end": 26991, "loc": { "start": { "line": 733, @@ -227857,6 +228238,136 @@ }, "end": { "line": 733, + "column": 39 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 26991, + "end": 26992, + "loc": { + "start": { + "line": 733, + "column": 39 + }, + "end": { + "line": 733, + "column": 40 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 26993, + "end": 26994, + "loc": { + "start": { + "line": 733, + "column": 41 + }, + "end": { + "line": 733, + "column": 42 + } + } + }, + { + "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": 27007, + "end": 27011, + "loc": { + "start": { + "line": 734, + "column": 12 + }, + "end": { + "line": 734, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 27011, + "end": 27012, + "loc": { + "start": { + "line": 734, + "column": 16 + }, + "end": { + "line": 734, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "unShowNode", + "start": 27012, + "end": 27022, + "loc": { + "start": { + "line": 734, + "column": 17 + }, + "end": { + "line": 734, "column": 27 } } @@ -227873,15 +228384,15 @@ "postfix": false, "binop": null }, - "start": 26972, - "end": 26973, + "start": 27022, + "end": 27023, "loc": { "start": { - "line": 733, + "line": 734, "column": 27 }, "end": { - "line": 733, + "line": 734, "column": 28 } } @@ -227898,15 +228409,15 @@ "postfix": false, "binop": null }, - "start": 26973, - "end": 26974, + "start": 27023, + "end": 27024, "loc": { "start": { - "line": 733, + "line": 734, "column": 28 }, "end": { - "line": 733, + "line": 734, "column": 29 } } @@ -227924,15 +228435,15 @@ "binop": null, "updateContext": null }, - "start": 26974, - "end": 26975, + "start": 27024, + "end": 27025, "loc": { "start": { - "line": 733, + "line": 734, "column": 29 }, "end": { - "line": 733, + "line": 734, "column": 30 } } @@ -227949,15 +228460,15 @@ "postfix": false, "binop": null }, - "start": 26984, - "end": 26985, + "start": 27034, + "end": 27035, "loc": { "start": { - "line": 734, + "line": 735, "column": 8 }, "end": { - "line": 734, + "line": 735, "column": 9 } } @@ -227977,15 +228488,15 @@ "updateContext": null }, "value": "const", - "start": 26994, - "end": 26999, + "start": 27044, + "end": 27049, "loc": { "start": { - "line": 735, + "line": 736, "column": 8 }, "end": { - "line": 735, + "line": 736, "column": 13 } } @@ -228003,15 +228514,15 @@ "binop": null }, "value": "node", - "start": 27000, - "end": 27004, + "start": 27050, + "end": 27054, "loc": { "start": { - "line": 735, + "line": 736, "column": 14 }, "end": { - "line": 735, + "line": 736, "column": 18 } } @@ -228030,15 +228541,15 @@ "updateContext": null }, "value": "=", - "start": 27005, - "end": 27006, + "start": 27055, + "end": 27056, "loc": { "start": { - "line": 735, + "line": 736, "column": 19 }, "end": { - "line": 735, + "line": 736, "column": 20 } } @@ -228058,15 +228569,15 @@ "updateContext": null }, "value": "this", - "start": 27007, - "end": 27011, + "start": 27057, + "end": 27061, "loc": { "start": { - "line": 735, + "line": 736, "column": 21 }, "end": { - "line": 735, + "line": 736, "column": 25 } } @@ -228084,15 +228595,15 @@ "binop": null, "updateContext": null }, - "start": 27011, - "end": 27012, + "start": 27061, + "end": 27062, "loc": { "start": { - "line": 735, + "line": 736, "column": 25 }, "end": { - "line": 735, + "line": 736, "column": 26 } } @@ -228110,15 +228621,15 @@ "binop": null }, "value": "_objectNodes", - "start": 27012, - "end": 27024, + "start": 27062, + "end": 27074, "loc": { "start": { - "line": 735, + "line": 736, "column": 26 }, "end": { - "line": 735, + "line": 736, "column": 38 } } @@ -228136,15 +228647,15 @@ "binop": null, "updateContext": null }, - "start": 27024, - "end": 27025, + "start": 27074, + "end": 27075, "loc": { "start": { - "line": 735, + "line": 736, "column": 38 }, "end": { - "line": 735, + "line": 736, "column": 39 } } @@ -228162,15 +228673,15 @@ "binop": null }, "value": "objectId", - "start": 27025, - "end": 27033, + "start": 27075, + "end": 27083, "loc": { "start": { - "line": 735, + "line": 736, "column": 39 }, "end": { - "line": 735, + "line": 736, "column": 47 } } @@ -228188,15 +228699,15 @@ "binop": null, "updateContext": null }, - "start": 27033, - "end": 27034, + "start": 27083, + "end": 27084, "loc": { "start": { - "line": 735, + "line": 736, "column": 47 }, "end": { - "line": 735, + "line": 736, "column": 48 } } @@ -228214,15 +228725,15 @@ "binop": null, "updateContext": null }, - "start": 27034, - "end": 27035, + "start": 27084, + "end": 27085, "loc": { "start": { - "line": 735, + "line": 736, "column": 48 }, "end": { - "line": 735, + "line": 736, "column": 49 } } @@ -228242,15 +228753,15 @@ "updateContext": null }, "value": "if", - "start": 27044, - "end": 27046, + "start": 27094, + "end": 27096, "loc": { "start": { - "line": 736, + "line": 737, "column": 8 }, "end": { - "line": 736, + "line": 737, "column": 10 } } @@ -228267,15 +228778,15 @@ "postfix": false, "binop": null }, - "start": 27047, - "end": 27048, + "start": 27097, + "end": 27098, "loc": { "start": { - "line": 736, + "line": 737, "column": 11 }, "end": { - "line": 736, + "line": 737, "column": 12 } } @@ -228294,15 +228805,15 @@ "updateContext": null }, "value": "!", - "start": 27048, - "end": 27049, + "start": 27098, + "end": 27099, "loc": { "start": { - "line": 736, + "line": 737, "column": 12 }, "end": { - "line": 736, + "line": 737, "column": 13 } } @@ -228320,15 +228831,15 @@ "binop": null }, "value": "node", - "start": 27049, - "end": 27053, + "start": 27099, + "end": 27103, "loc": { "start": { - "line": 736, + "line": 737, "column": 13 }, "end": { - "line": 736, + "line": 737, "column": 17 } } @@ -228345,15 +228856,15 @@ "postfix": false, "binop": null }, - "start": 27053, - "end": 27054, + "start": 27103, + "end": 27104, "loc": { "start": { - "line": 736, + "line": 737, "column": 17 }, "end": { - "line": 736, + "line": 737, "column": 18 } } @@ -228370,15 +228881,15 @@ "postfix": false, "binop": null }, - "start": 27055, - "end": 27056, + "start": 27105, + "end": 27106, "loc": { "start": { - "line": 736, + "line": 737, "column": 19 }, "end": { - "line": 736, + "line": 737, "column": 20 } } @@ -228398,15 +228909,15 @@ "updateContext": null }, "value": "return", - "start": 27069, - "end": 27075, + "start": 27119, + "end": 27125, "loc": { "start": { - "line": 737, + "line": 738, "column": 12 }, "end": { - "line": 737, + "line": 738, "column": 18 } } @@ -228424,15 +228935,15 @@ "binop": null, "updateContext": null }, - "start": 27075, - "end": 27076, + "start": 27125, + "end": 27126, "loc": { "start": { - "line": 737, + "line": 738, "column": 18 }, "end": { - "line": 737, + "line": 738, "column": 19 } } @@ -228440,15 +228951,15 @@ { "type": "CommentLine", "value": " Node may not exist for the given object if (this._pruneEmptyNodes == true)", - "start": 27077, - "end": 27154, + "start": 27127, + "end": 27204, "loc": { "start": { - "line": 737, + "line": 738, "column": 20 }, "end": { - "line": 737, + "line": 738, "column": 97 } } @@ -228465,15 +228976,15 @@ "postfix": false, "binop": null }, - "start": 27163, - "end": 27164, + "start": 27213, + "end": 27214, "loc": { "start": { - "line": 738, + "line": 739, "column": 8 }, "end": { - "line": 738, + "line": 739, "column": 9 } } @@ -228493,15 +229004,15 @@ "updateContext": null }, "value": "const", - "start": 27173, - "end": 27178, + "start": 27223, + "end": 27228, "loc": { "start": { - "line": 739, + "line": 740, "column": 8 }, "end": { - "line": 739, + "line": 740, "column": 13 } } @@ -228519,15 +229030,15 @@ "binop": null }, "value": "nodeId", - "start": 27179, - "end": 27185, + "start": 27229, + "end": 27235, "loc": { "start": { - "line": 739, + "line": 740, "column": 14 }, "end": { - "line": 739, + "line": 740, "column": 20 } } @@ -228546,15 +229057,15 @@ "updateContext": null }, "value": "=", - "start": 27186, - "end": 27187, + "start": 27236, + "end": 27237, "loc": { "start": { - "line": 739, + "line": 740, "column": 21 }, "end": { - "line": 739, + "line": 740, "column": 22 } } @@ -228572,15 +229083,15 @@ "binop": null }, "value": "node", - "start": 27188, - "end": 27192, + "start": 27238, + "end": 27242, "loc": { "start": { - "line": 739, + "line": 740, "column": 23 }, "end": { - "line": 739, + "line": 740, "column": 27 } } @@ -228598,15 +229109,15 @@ "binop": null, "updateContext": null }, - "start": 27192, - "end": 27193, + "start": 27242, + "end": 27243, "loc": { "start": { - "line": 739, + "line": 740, "column": 27 }, "end": { - "line": 739, + "line": 740, "column": 28 } } @@ -228624,15 +229135,15 @@ "binop": null }, "value": "nodeId", - "start": 27193, - "end": 27199, + "start": 27243, + "end": 27249, "loc": { "start": { - "line": 739, + "line": 740, "column": 28 }, "end": { - "line": 739, + "line": 740, "column": 34 } } @@ -228650,15 +229161,15 @@ "binop": null, "updateContext": null }, - "start": 27199, - "end": 27200, + "start": 27249, + "end": 27250, "loc": { "start": { - "line": 739, + "line": 740, "column": 34 }, "end": { - "line": 739, + "line": 740, "column": 35 } } @@ -228678,15 +229189,15 @@ "updateContext": null }, "value": "const", - "start": 27209, - "end": 27214, + "start": 27259, + "end": 27264, "loc": { "start": { - "line": 740, + "line": 741, "column": 8 }, "end": { - "line": 740, + "line": 741, "column": 13 } } @@ -228704,15 +229215,15 @@ "binop": null }, "value": "switchElementId", - "start": 27215, - "end": 27230, + "start": 27265, + "end": 27280, "loc": { "start": { - "line": 740, + "line": 741, "column": 14 }, "end": { - "line": 740, + "line": 741, "column": 29 } } @@ -228731,15 +229242,15 @@ "updateContext": null }, "value": "=", - "start": 27231, - "end": 27232, + "start": 27281, + "end": 27282, "loc": { "start": { - "line": 740, + "line": 741, "column": 30 }, "end": { - "line": 740, + "line": 741, "column": 31 } } @@ -228758,15 +229269,15 @@ "updateContext": null }, "value": "switch-", - "start": 27233, - "end": 27242, + "start": 27283, + "end": 27292, "loc": { "start": { - "line": 740, + "line": 741, "column": 32 }, "end": { - "line": 740, + "line": 741, "column": 41 } } @@ -228785,15 +229296,15 @@ "updateContext": null }, "value": "+", - "start": 27243, - "end": 27244, + "start": 27293, + "end": 27294, "loc": { "start": { - "line": 740, + "line": 741, "column": 42 }, "end": { - "line": 740, + "line": 741, "column": 43 } } @@ -228811,15 +229322,15 @@ "binop": null }, "value": "nodeId", - "start": 27245, - "end": 27251, + "start": 27295, + "end": 27301, "loc": { "start": { - "line": 740, + "line": 741, "column": 44 }, "end": { - "line": 740, + "line": 741, "column": 50 } } @@ -228837,15 +229348,15 @@ "binop": null, "updateContext": null }, - "start": 27251, - "end": 27252, + "start": 27301, + "end": 27302, "loc": { "start": { - "line": 740, + "line": 741, "column": 50 }, "end": { - "line": 740, + "line": 741, "column": 51 } } @@ -228865,15 +229376,15 @@ "updateContext": null }, "value": "const", - "start": 27261, - "end": 27266, + "start": 27311, + "end": 27316, "loc": { "start": { - "line": 741, + "line": 742, "column": 8 }, "end": { - "line": 741, + "line": 742, "column": 13 } } @@ -228891,15 +229402,15 @@ "binop": null }, "value": "switchElement", - "start": 27267, - "end": 27280, + "start": 27317, + "end": 27330, "loc": { "start": { - "line": 741, + "line": 742, "column": 14 }, "end": { - "line": 741, + "line": 742, "column": 27 } } @@ -228918,15 +229429,15 @@ "updateContext": null }, "value": "=", - "start": 27281, - "end": 27282, + "start": 27331, + "end": 27332, "loc": { "start": { - "line": 741, + "line": 742, "column": 28 }, "end": { - "line": 741, + "line": 742, "column": 29 } } @@ -228944,15 +229455,15 @@ "binop": null }, "value": "document", - "start": 27283, - "end": 27291, + "start": 27333, + "end": 27341, "loc": { "start": { - "line": 741, + "line": 742, "column": 30 }, "end": { - "line": 741, + "line": 742, "column": 38 } } @@ -228970,15 +229481,15 @@ "binop": null, "updateContext": null }, - "start": 27291, - "end": 27292, + "start": 27341, + "end": 27342, "loc": { "start": { - "line": 741, + "line": 742, "column": 38 }, "end": { - "line": 741, + "line": 742, "column": 39 } } @@ -228996,15 +229507,15 @@ "binop": null }, "value": "getElementById", - "start": 27292, - "end": 27306, + "start": 27342, + "end": 27356, "loc": { "start": { - "line": 741, + "line": 742, "column": 39 }, "end": { - "line": 741, + "line": 742, "column": 53 } } @@ -229021,15 +229532,15 @@ "postfix": false, "binop": null }, - "start": 27306, - "end": 27307, + "start": 27356, + "end": 27357, "loc": { "start": { - "line": 741, + "line": 742, "column": 53 }, "end": { - "line": 741, + "line": 742, "column": 54 } } @@ -229047,15 +229558,15 @@ "binop": null }, "value": "switchElementId", - "start": 27307, - "end": 27322, + "start": 27357, + "end": 27372, "loc": { "start": { - "line": 741, + "line": 742, "column": 54 }, "end": { - "line": 741, + "line": 742, "column": 69 } } @@ -229072,15 +229583,15 @@ "postfix": false, "binop": null }, - "start": 27322, - "end": 27323, + "start": 27372, + "end": 27373, "loc": { "start": { - "line": 741, + "line": 742, "column": 69 }, "end": { - "line": 741, + "line": 742, "column": 70 } } @@ -229098,15 +229609,15 @@ "binop": null, "updateContext": null }, - "start": 27323, - "end": 27324, + "start": 27373, + "end": 27374, "loc": { "start": { - "line": 741, + "line": 742, "column": 70 }, "end": { - "line": 741, + "line": 742, "column": 71 } } @@ -229126,15 +229637,15 @@ "updateContext": null }, "value": "if", - "start": 27333, - "end": 27335, + "start": 27383, + "end": 27385, "loc": { "start": { - "line": 742, + "line": 743, "column": 8 }, "end": { - "line": 742, + "line": 743, "column": 10 } } @@ -229151,15 +229662,15 @@ "postfix": false, "binop": null }, - "start": 27336, - "end": 27337, + "start": 27386, + "end": 27387, "loc": { "start": { - "line": 742, + "line": 743, "column": 11 }, "end": { - "line": 742, + "line": 743, "column": 12 } } @@ -229177,15 +229688,15 @@ "binop": null }, "value": "switchElement", - "start": 27337, - "end": 27350, + "start": 27387, + "end": 27400, "loc": { "start": { - "line": 742, + "line": 743, "column": 12 }, "end": { - "line": 742, + "line": 743, "column": 25 } } @@ -229202,15 +229713,15 @@ "postfix": false, "binop": null }, - "start": 27350, - "end": 27351, + "start": 27400, + "end": 27401, "loc": { "start": { - "line": 742, + "line": 743, "column": 25 }, "end": { - "line": 742, + "line": 743, "column": 26 } } @@ -229227,15 +229738,15 @@ "postfix": false, "binop": null }, - "start": 27352, - "end": 27353, + "start": 27402, + "end": 27403, "loc": { "start": { - "line": 742, + "line": 743, "column": 27 }, "end": { - "line": 742, + "line": 743, "column": 28 } } @@ -229255,15 +229766,15 @@ "updateContext": null }, "value": "this", - "start": 27366, - "end": 27370, + "start": 27416, + "end": 27420, "loc": { "start": { - "line": 743, + "line": 744, "column": 12 }, "end": { - "line": 743, + "line": 744, "column": 16 } } @@ -229281,15 +229792,15 @@ "binop": null, "updateContext": null }, - "start": 27370, - "end": 27371, + "start": 27420, + "end": 27421, "loc": { "start": { - "line": 743, + "line": 744, "column": 16 }, "end": { - "line": 743, + "line": 744, "column": 17 } } @@ -229307,15 +229818,15 @@ "binop": null }, "value": "_expandSwitchElement", - "start": 27371, - "end": 27391, + "start": 27421, + "end": 27441, "loc": { "start": { - "line": 743, + "line": 744, "column": 17 }, "end": { - "line": 743, + "line": 744, "column": 37 } } @@ -229332,15 +229843,15 @@ "postfix": false, "binop": null }, - "start": 27391, - "end": 27392, + "start": 27441, + "end": 27442, "loc": { "start": { - "line": 743, + "line": 744, "column": 37 }, "end": { - "line": 743, + "line": 744, "column": 38 } } @@ -229358,15 +229869,15 @@ "binop": null }, "value": "switchElement", - "start": 27392, - "end": 27405, + "start": 27442, + "end": 27455, "loc": { "start": { - "line": 743, + "line": 744, "column": 38 }, "end": { - "line": 743, + "line": 744, "column": 51 } } @@ -229383,15 +229894,15 @@ "postfix": false, "binop": null }, - "start": 27405, - "end": 27406, + "start": 27455, + "end": 27456, "loc": { "start": { - "line": 743, + "line": 744, "column": 51 }, "end": { - "line": 743, + "line": 744, "column": 52 } } @@ -229409,15 +229920,15 @@ "binop": null, "updateContext": null }, - "start": 27406, - "end": 27407, + "start": 27456, + "end": 27457, "loc": { "start": { - "line": 743, + "line": 744, "column": 52 }, "end": { - "line": 743, + "line": 744, "column": 53 } } @@ -229435,15 +229946,15 @@ "binop": null }, "value": "switchElement", - "start": 27420, - "end": 27433, + "start": 27470, + "end": 27483, "loc": { "start": { - "line": 744, + "line": 745, "column": 12 }, "end": { - "line": 744, + "line": 745, "column": 25 } } @@ -229461,15 +229972,15 @@ "binop": null, "updateContext": null }, - "start": 27433, - "end": 27434, + "start": 27483, + "end": 27484, "loc": { "start": { - "line": 744, + "line": 745, "column": 25 }, "end": { - "line": 744, + "line": 745, "column": 26 } } @@ -229487,15 +229998,15 @@ "binop": null }, "value": "scrollIntoView", - "start": 27434, - "end": 27448, + "start": 27484, + "end": 27498, "loc": { "start": { - "line": 744, + "line": 745, "column": 26 }, "end": { - "line": 744, + "line": 745, "column": 40 } } @@ -229512,15 +230023,15 @@ "postfix": false, "binop": null }, - "start": 27448, - "end": 27449, + "start": 27498, + "end": 27499, "loc": { "start": { - "line": 744, + "line": 745, "column": 40 }, "end": { - "line": 744, + "line": 745, "column": 41 } } @@ -229537,15 +230048,15 @@ "postfix": false, "binop": null }, - "start": 27449, - "end": 27450, + "start": 27499, + "end": 27500, "loc": { "start": { - "line": 744, + "line": 745, "column": 41 }, "end": { - "line": 744, + "line": 745, "column": 42 } } @@ -229563,15 +230074,15 @@ "binop": null, "updateContext": null }, - "start": 27450, - "end": 27451, + "start": 27500, + "end": 27501, "loc": { "start": { - "line": 744, + "line": 745, "column": 42 }, "end": { - "line": 744, + "line": 745, "column": 43 } } @@ -229591,15 +230102,15 @@ "updateContext": null }, "value": "return", - "start": 27464, - "end": 27470, + "start": 27514, + "end": 27520, "loc": { "start": { - "line": 745, + "line": 746, "column": 12 }, "end": { - "line": 745, + "line": 746, "column": 18 } } @@ -229617,15 +230128,15 @@ "binop": null, "updateContext": null }, - "start": 27470, - "end": 27471, + "start": 27520, + "end": 27521, "loc": { "start": { - "line": 745, + "line": 746, "column": 18 }, "end": { - "line": 745, + "line": 746, "column": 19 } } @@ -229642,15 +230153,15 @@ "postfix": false, "binop": null }, - "start": 27480, - "end": 27481, + "start": 27530, + "end": 27531, "loc": { "start": { - "line": 746, + "line": 747, "column": 8 }, "end": { - "line": 746, + "line": 747, "column": 9 } } @@ -229670,15 +230181,15 @@ "updateContext": null }, "value": "const", - "start": 27490, - "end": 27495, + "start": 27540, + "end": 27545, "loc": { "start": { - "line": 747, + "line": 748, "column": 8 }, "end": { - "line": 747, + "line": 748, "column": 13 } } @@ -229696,15 +230207,15 @@ "binop": null }, "value": "path", - "start": 27496, - "end": 27500, + "start": 27546, + "end": 27550, "loc": { "start": { - "line": 747, + "line": 748, "column": 14 }, "end": { - "line": 747, + "line": 748, "column": 18 } } @@ -229723,15 +230234,15 @@ "updateContext": null }, "value": "=", - "start": 27501, - "end": 27502, + "start": 27551, + "end": 27552, "loc": { "start": { - "line": 747, + "line": 748, "column": 19 }, "end": { - "line": 747, + "line": 748, "column": 20 } } @@ -229749,15 +230260,15 @@ "binop": null, "updateContext": null }, - "start": 27503, - "end": 27504, + "start": 27553, + "end": 27554, "loc": { "start": { - "line": 747, + "line": 748, "column": 21 }, "end": { - "line": 747, + "line": 748, "column": 22 } } @@ -229775,15 +230286,15 @@ "binop": null, "updateContext": null }, - "start": 27504, - "end": 27505, + "start": 27554, + "end": 27555, "loc": { "start": { - "line": 747, + "line": 748, "column": 22 }, "end": { - "line": 747, + "line": 748, "column": 23 } } @@ -229801,15 +230312,15 @@ "binop": null, "updateContext": null }, - "start": 27505, - "end": 27506, + "start": 27555, + "end": 27556, "loc": { "start": { - "line": 747, + "line": 748, "column": 23 }, "end": { - "line": 747, + "line": 748, "column": 24 } } @@ -229827,15 +230338,15 @@ "binop": null }, "value": "path", - "start": 27515, - "end": 27519, + "start": 27565, + "end": 27569, "loc": { "start": { - "line": 748, + "line": 749, "column": 8 }, "end": { - "line": 748, + "line": 749, "column": 12 } } @@ -229853,15 +230364,15 @@ "binop": null, "updateContext": null }, - "start": 27519, - "end": 27520, + "start": 27569, + "end": 27570, "loc": { "start": { - "line": 748, + "line": 749, "column": 12 }, "end": { - "line": 748, + "line": 749, "column": 13 } } @@ -229879,15 +230390,15 @@ "binop": null }, "value": "unshift", - "start": 27520, - "end": 27527, + "start": 27570, + "end": 27577, "loc": { "start": { - "line": 748, + "line": 749, "column": 13 }, "end": { - "line": 748, + "line": 749, "column": 20 } } @@ -229904,15 +230415,15 @@ "postfix": false, "binop": null }, - "start": 27527, - "end": 27528, + "start": 27577, + "end": 27578, "loc": { "start": { - "line": 748, + "line": 749, "column": 20 }, "end": { - "line": 748, + "line": 749, "column": 21 } } @@ -229930,15 +230441,15 @@ "binop": null }, "value": "node", - "start": 27528, - "end": 27532, + "start": 27578, + "end": 27582, "loc": { "start": { - "line": 748, + "line": 749, "column": 21 }, "end": { - "line": 748, + "line": 749, "column": 25 } } @@ -229955,15 +230466,15 @@ "postfix": false, "binop": null }, - "start": 27532, - "end": 27533, + "start": 27582, + "end": 27583, "loc": { "start": { - "line": 748, + "line": 749, "column": 25 }, "end": { - "line": 748, + "line": 749, "column": 26 } } @@ -229981,15 +230492,15 @@ "binop": null, "updateContext": null }, - "start": 27533, - "end": 27534, + "start": 27583, + "end": 27584, "loc": { "start": { - "line": 748, + "line": 749, "column": 26 }, "end": { - "line": 748, + "line": 749, "column": 27 } } @@ -230009,15 +230520,15 @@ "updateContext": null }, "value": "let", - "start": 27543, - "end": 27546, + "start": 27593, + "end": 27596, "loc": { "start": { - "line": 749, + "line": 750, "column": 8 }, "end": { - "line": 749, + "line": 750, "column": 11 } } @@ -230035,15 +230546,15 @@ "binop": null }, "value": "parent", - "start": 27547, - "end": 27553, + "start": 27597, + "end": 27603, "loc": { "start": { - "line": 749, + "line": 750, "column": 12 }, "end": { - "line": 749, + "line": 750, "column": 18 } } @@ -230062,15 +230573,15 @@ "updateContext": null }, "value": "=", - "start": 27554, - "end": 27555, + "start": 27604, + "end": 27605, "loc": { "start": { - "line": 749, + "line": 750, "column": 19 }, "end": { - "line": 749, + "line": 750, "column": 20 } } @@ -230088,15 +230599,15 @@ "binop": null }, "value": "node", - "start": 27556, - "end": 27560, + "start": 27606, + "end": 27610, "loc": { "start": { - "line": 749, + "line": 750, "column": 21 }, "end": { - "line": 749, + "line": 750, "column": 25 } } @@ -230114,15 +230625,15 @@ "binop": null, "updateContext": null }, - "start": 27560, - "end": 27561, + "start": 27610, + "end": 27611, "loc": { "start": { - "line": 749, + "line": 750, "column": 25 }, "end": { - "line": 749, + "line": 750, "column": 26 } } @@ -230140,15 +230651,15 @@ "binop": null }, "value": "parent", - "start": 27561, - "end": 27567, + "start": 27611, + "end": 27617, "loc": { "start": { - "line": 749, + "line": 750, "column": 26 }, "end": { - "line": 749, + "line": 750, "column": 32 } } @@ -230166,15 +230677,15 @@ "binop": null, "updateContext": null }, - "start": 27567, - "end": 27568, + "start": 27617, + "end": 27618, "loc": { "start": { - "line": 749, + "line": 750, "column": 32 }, "end": { - "line": 749, + "line": 750, "column": 33 } } @@ -230194,15 +230705,15 @@ "updateContext": null }, "value": "while", - "start": 27577, - "end": 27582, + "start": 27627, + "end": 27632, "loc": { "start": { - "line": 750, + "line": 751, "column": 8 }, "end": { - "line": 750, + "line": 751, "column": 13 } } @@ -230219,15 +230730,15 @@ "postfix": false, "binop": null }, - "start": 27583, - "end": 27584, + "start": 27633, + "end": 27634, "loc": { "start": { - "line": 750, + "line": 751, "column": 14 }, "end": { - "line": 750, + "line": 751, "column": 15 } } @@ -230245,15 +230756,15 @@ "binop": null }, "value": "parent", - "start": 27584, - "end": 27590, + "start": 27634, + "end": 27640, "loc": { "start": { - "line": 750, + "line": 751, "column": 15 }, "end": { - "line": 750, + "line": 751, "column": 21 } } @@ -230270,15 +230781,15 @@ "postfix": false, "binop": null }, - "start": 27590, - "end": 27591, + "start": 27640, + "end": 27641, "loc": { "start": { - "line": 750, + "line": 751, "column": 21 }, "end": { - "line": 750, + "line": 751, "column": 22 } } @@ -230295,15 +230806,15 @@ "postfix": false, "binop": null }, - "start": 27592, - "end": 27593, + "start": 27642, + "end": 27643, "loc": { "start": { - "line": 750, + "line": 751, "column": 23 }, "end": { - "line": 750, + "line": 751, "column": 24 } } @@ -230321,15 +230832,15 @@ "binop": null }, "value": "path", - "start": 27606, - "end": 27610, + "start": 27656, + "end": 27660, "loc": { "start": { - "line": 751, + "line": 752, "column": 12 }, "end": { - "line": 751, + "line": 752, "column": 16 } } @@ -230347,15 +230858,15 @@ "binop": null, "updateContext": null }, - "start": 27610, - "end": 27611, + "start": 27660, + "end": 27661, "loc": { "start": { - "line": 751, + "line": 752, "column": 16 }, "end": { - "line": 751, + "line": 752, "column": 17 } } @@ -230373,15 +230884,15 @@ "binop": null }, "value": "unshift", - "start": 27611, - "end": 27618, + "start": 27661, + "end": 27668, "loc": { "start": { - "line": 751, + "line": 752, "column": 17 }, "end": { - "line": 751, + "line": 752, "column": 24 } } @@ -230398,15 +230909,15 @@ "postfix": false, "binop": null }, - "start": 27618, - "end": 27619, + "start": 27668, + "end": 27669, "loc": { "start": { - "line": 751, + "line": 752, "column": 24 }, "end": { - "line": 751, + "line": 752, "column": 25 } } @@ -230424,15 +230935,15 @@ "binop": null }, "value": "parent", - "start": 27619, - "end": 27625, + "start": 27669, + "end": 27675, "loc": { "start": { - "line": 751, + "line": 752, "column": 25 }, "end": { - "line": 751, + "line": 752, "column": 31 } } @@ -230449,15 +230960,15 @@ "postfix": false, "binop": null }, - "start": 27625, - "end": 27626, + "start": 27675, + "end": 27676, "loc": { "start": { - "line": 751, + "line": 752, "column": 31 }, "end": { - "line": 751, + "line": 752, "column": 32 } } @@ -230475,15 +230986,15 @@ "binop": null, "updateContext": null }, - "start": 27626, - "end": 27627, + "start": 27676, + "end": 27677, "loc": { "start": { - "line": 751, + "line": 752, "column": 32 }, "end": { - "line": 751, + "line": 752, "column": 33 } } @@ -230501,15 +231012,15 @@ "binop": null }, "value": "parent", - "start": 27640, - "end": 27646, + "start": 27690, + "end": 27696, "loc": { "start": { - "line": 752, + "line": 753, "column": 12 }, "end": { - "line": 752, + "line": 753, "column": 18 } } @@ -230528,15 +231039,15 @@ "updateContext": null }, "value": "=", - "start": 27647, - "end": 27648, + "start": 27697, + "end": 27698, "loc": { "start": { - "line": 752, + "line": 753, "column": 19 }, "end": { - "line": 752, + "line": 753, "column": 20 } } @@ -230554,15 +231065,15 @@ "binop": null }, "value": "parent", - "start": 27649, - "end": 27655, + "start": 27699, + "end": 27705, "loc": { "start": { - "line": 752, + "line": 753, "column": 21 }, "end": { - "line": 752, + "line": 753, "column": 27 } } @@ -230580,15 +231091,15 @@ "binop": null, "updateContext": null }, - "start": 27655, - "end": 27656, + "start": 27705, + "end": 27706, "loc": { "start": { - "line": 752, + "line": 753, "column": 27 }, "end": { - "line": 752, + "line": 753, "column": 28 } } @@ -230606,15 +231117,15 @@ "binop": null }, "value": "parent", - "start": 27656, - "end": 27662, + "start": 27706, + "end": 27712, "loc": { "start": { - "line": 752, + "line": 753, "column": 28 }, "end": { - "line": 752, + "line": 753, "column": 34 } } @@ -230632,15 +231143,15 @@ "binop": null, "updateContext": null }, - "start": 27662, - "end": 27663, + "start": 27712, + "end": 27713, "loc": { "start": { - "line": 752, + "line": 753, "column": 34 }, "end": { - "line": 752, + "line": 753, "column": 35 } } @@ -230657,15 +231168,15 @@ "postfix": false, "binop": null }, - "start": 27672, - "end": 27673, + "start": 27722, + "end": 27723, "loc": { "start": { - "line": 753, + "line": 754, "column": 8 }, "end": { - "line": 753, + "line": 754, "column": 9 } } @@ -230685,15 +231196,15 @@ "updateContext": null }, "value": "for", - "start": 27682, - "end": 27685, + "start": 27732, + "end": 27735, "loc": { "start": { - "line": 754, + "line": 755, "column": 8 }, "end": { - "line": 754, + "line": 755, "column": 11 } } @@ -230710,15 +231221,15 @@ "postfix": false, "binop": null }, - "start": 27686, - "end": 27687, + "start": 27736, + "end": 27737, "loc": { "start": { - "line": 754, + "line": 755, "column": 12 }, "end": { - "line": 754, + "line": 755, "column": 13 } } @@ -230738,15 +231249,15 @@ "updateContext": null }, "value": "let", - "start": 27687, - "end": 27690, + "start": 27737, + "end": 27740, "loc": { "start": { - "line": 754, + "line": 755, "column": 13 }, "end": { - "line": 754, + "line": 755, "column": 16 } } @@ -230764,15 +231275,15 @@ "binop": null }, "value": "i", - "start": 27691, - "end": 27692, + "start": 27741, + "end": 27742, "loc": { "start": { - "line": 754, + "line": 755, "column": 17 }, "end": { - "line": 754, + "line": 755, "column": 18 } } @@ -230791,15 +231302,15 @@ "updateContext": null }, "value": "=", - "start": 27693, - "end": 27694, + "start": 27743, + "end": 27744, "loc": { "start": { - "line": 754, + "line": 755, "column": 19 }, "end": { - "line": 754, + "line": 755, "column": 20 } } @@ -230818,15 +231329,15 @@ "updateContext": null }, "value": 0, - "start": 27695, - "end": 27696, + "start": 27745, + "end": 27746, "loc": { "start": { - "line": 754, + "line": 755, "column": 21 }, "end": { - "line": 754, + "line": 755, "column": 22 } } @@ -230844,15 +231355,15 @@ "binop": null, "updateContext": null }, - "start": 27696, - "end": 27697, + "start": 27746, + "end": 27747, "loc": { "start": { - "line": 754, + "line": 755, "column": 22 }, "end": { - "line": 754, + "line": 755, "column": 23 } } @@ -230870,15 +231381,15 @@ "binop": null }, "value": "len", - "start": 27698, - "end": 27701, + "start": 27748, + "end": 27751, "loc": { "start": { - "line": 754, + "line": 755, "column": 24 }, "end": { - "line": 754, + "line": 755, "column": 27 } } @@ -230897,15 +231408,15 @@ "updateContext": null }, "value": "=", - "start": 27702, - "end": 27703, + "start": 27752, + "end": 27753, "loc": { "start": { - "line": 754, + "line": 755, "column": 28 }, "end": { - "line": 754, + "line": 755, "column": 29 } } @@ -230923,15 +231434,15 @@ "binop": null }, "value": "path", - "start": 27704, - "end": 27708, + "start": 27754, + "end": 27758, "loc": { "start": { - "line": 754, + "line": 755, "column": 30 }, "end": { - "line": 754, + "line": 755, "column": 34 } } @@ -230949,15 +231460,15 @@ "binop": null, "updateContext": null }, - "start": 27708, - "end": 27709, + "start": 27758, + "end": 27759, "loc": { "start": { - "line": 754, + "line": 755, "column": 34 }, "end": { - "line": 754, + "line": 755, "column": 35 } } @@ -230975,15 +231486,15 @@ "binop": null }, "value": "length", - "start": 27709, - "end": 27715, + "start": 27759, + "end": 27765, "loc": { "start": { - "line": 754, + "line": 755, "column": 35 }, "end": { - "line": 754, + "line": 755, "column": 41 } } @@ -231001,15 +231512,15 @@ "binop": null, "updateContext": null }, - "start": 27715, - "end": 27716, + "start": 27765, + "end": 27766, "loc": { "start": { - "line": 754, + "line": 755, "column": 41 }, "end": { - "line": 754, + "line": 755, "column": 42 } } @@ -231027,15 +231538,15 @@ "binop": null }, "value": "i", - "start": 27717, - "end": 27718, + "start": 27767, + "end": 27768, "loc": { "start": { - "line": 754, + "line": 755, "column": 43 }, "end": { - "line": 754, + "line": 755, "column": 44 } } @@ -231054,15 +231565,15 @@ "updateContext": null }, "value": "<", - "start": 27719, - "end": 27720, + "start": 27769, + "end": 27770, "loc": { "start": { - "line": 754, + "line": 755, "column": 45 }, "end": { - "line": 754, + "line": 755, "column": 46 } } @@ -231080,15 +231591,15 @@ "binop": null }, "value": "len", - "start": 27721, - "end": 27724, + "start": 27771, + "end": 27774, "loc": { "start": { - "line": 754, + "line": 755, "column": 47 }, "end": { - "line": 754, + "line": 755, "column": 50 } } @@ -231106,15 +231617,15 @@ "binop": null, "updateContext": null }, - "start": 27724, - "end": 27725, + "start": 27774, + "end": 27775, "loc": { "start": { - "line": 754, + "line": 755, "column": 50 }, "end": { - "line": 754, + "line": 755, "column": 51 } } @@ -231132,15 +231643,15 @@ "binop": null }, "value": "i", - "start": 27726, - "end": 27727, + "start": 27776, + "end": 27777, "loc": { "start": { - "line": 754, + "line": 755, "column": 52 }, "end": { - "line": 754, + "line": 755, "column": 53 } } @@ -231158,15 +231669,15 @@ "binop": null }, "value": "++", - "start": 27727, - "end": 27729, + "start": 27777, + "end": 27779, "loc": { "start": { - "line": 754, + "line": 755, "column": 53 }, "end": { - "line": 754, + "line": 755, "column": 55 } } @@ -231183,15 +231694,15 @@ "postfix": false, "binop": null }, - "start": 27729, - "end": 27730, + "start": 27779, + "end": 27780, "loc": { "start": { - "line": 754, + "line": 755, "column": 55 }, "end": { - "line": 754, + "line": 755, "column": 56 } } @@ -231208,15 +231719,15 @@ "postfix": false, "binop": null }, - "start": 27731, - "end": 27732, + "start": 27781, + "end": 27782, "loc": { "start": { - "line": 754, + "line": 755, "column": 57 }, "end": { - "line": 754, + "line": 755, "column": 58 } } @@ -231236,15 +231747,15 @@ "updateContext": null }, "value": "const", - "start": 27745, - "end": 27750, + "start": 27795, + "end": 27800, "loc": { "start": { - "line": 755, + "line": 756, "column": 12 }, "end": { - "line": 755, + "line": 756, "column": 17 } } @@ -231262,15 +231773,15 @@ "binop": null }, "value": "node", - "start": 27751, - "end": 27755, + "start": 27801, + "end": 27805, "loc": { "start": { - "line": 755, + "line": 756, "column": 18 }, "end": { - "line": 755, + "line": 756, "column": 22 } } @@ -231289,15 +231800,15 @@ "updateContext": null }, "value": "=", - "start": 27756, - "end": 27757, + "start": 27806, + "end": 27807, "loc": { "start": { - "line": 755, + "line": 756, "column": 23 }, "end": { - "line": 755, + "line": 756, "column": 24 } } @@ -231315,15 +231826,15 @@ "binop": null }, "value": "path", - "start": 27758, - "end": 27762, + "start": 27808, + "end": 27812, "loc": { "start": { - "line": 755, + "line": 756, "column": 25 }, "end": { - "line": 755, + "line": 756, "column": 29 } } @@ -231341,15 +231852,15 @@ "binop": null, "updateContext": null }, - "start": 27762, - "end": 27763, + "start": 27812, + "end": 27813, "loc": { "start": { - "line": 755, + "line": 756, "column": 29 }, "end": { - "line": 755, + "line": 756, "column": 30 } } @@ -231367,15 +231878,15 @@ "binop": null }, "value": "i", - "start": 27763, - "end": 27764, + "start": 27813, + "end": 27814, "loc": { "start": { - "line": 755, + "line": 756, "column": 30 }, "end": { - "line": 755, + "line": 756, "column": 31 } } @@ -231393,15 +231904,15 @@ "binop": null, "updateContext": null }, - "start": 27764, - "end": 27765, + "start": 27814, + "end": 27815, "loc": { "start": { - "line": 755, + "line": 756, "column": 31 }, "end": { - "line": 755, + "line": 756, "column": 32 } } @@ -231419,15 +231930,15 @@ "binop": null, "updateContext": null }, - "start": 27765, - "end": 27766, + "start": 27815, + "end": 27816, "loc": { "start": { - "line": 755, + "line": 756, "column": 32 }, "end": { - "line": 755, + "line": 756, "column": 33 } } @@ -231447,15 +231958,15 @@ "updateContext": null }, "value": "const", - "start": 27779, - "end": 27784, + "start": 27829, + "end": 27834, "loc": { "start": { - "line": 756, + "line": 757, "column": 12 }, "end": { - "line": 756, + "line": 757, "column": 17 } } @@ -231473,15 +231984,15 @@ "binop": null }, "value": "nodeId", - "start": 27785, - "end": 27791, + "start": 27835, + "end": 27841, "loc": { "start": { - "line": 756, + "line": 757, "column": 18 }, "end": { - "line": 756, + "line": 757, "column": 24 } } @@ -231500,15 +232011,15 @@ "updateContext": null }, "value": "=", - "start": 27792, - "end": 27793, + "start": 27842, + "end": 27843, "loc": { "start": { - "line": 756, + "line": 757, "column": 25 }, "end": { - "line": 756, + "line": 757, "column": 26 } } @@ -231526,15 +232037,15 @@ "binop": null }, "value": "node", - "start": 27794, - "end": 27798, + "start": 27844, + "end": 27848, "loc": { "start": { - "line": 756, + "line": 757, "column": 27 }, "end": { - "line": 756, + "line": 757, "column": 31 } } @@ -231552,15 +232063,15 @@ "binop": null, "updateContext": null }, - "start": 27798, - "end": 27799, + "start": 27848, + "end": 27849, "loc": { "start": { - "line": 756, + "line": 757, "column": 31 }, "end": { - "line": 756, + "line": 757, "column": 32 } } @@ -231578,15 +232089,15 @@ "binop": null }, "value": "nodeId", - "start": 27799, - "end": 27805, + "start": 27849, + "end": 27855, "loc": { "start": { - "line": 756, + "line": 757, "column": 32 }, "end": { - "line": 756, + "line": 757, "column": 38 } } @@ -231604,15 +232115,15 @@ "binop": null, "updateContext": null }, - "start": 27805, - "end": 27806, + "start": 27855, + "end": 27856, "loc": { "start": { - "line": 756, + "line": 757, "column": 38 }, "end": { - "line": 756, + "line": 757, "column": 39 } } @@ -231632,15 +232143,15 @@ "updateContext": null }, "value": "const", - "start": 27819, - "end": 27824, + "start": 27869, + "end": 27874, "loc": { "start": { - "line": 757, + "line": 758, "column": 12 }, "end": { - "line": 757, + "line": 758, "column": 17 } } @@ -231658,15 +232169,15 @@ "binop": null }, "value": "switchElementId", - "start": 27825, - "end": 27840, + "start": 27875, + "end": 27890, "loc": { "start": { - "line": 757, + "line": 758, "column": 18 }, "end": { - "line": 757, + "line": 758, "column": 33 } } @@ -231685,15 +232196,15 @@ "updateContext": null }, "value": "=", - "start": 27841, - "end": 27842, + "start": 27891, + "end": 27892, "loc": { "start": { - "line": 757, + "line": 758, "column": 34 }, "end": { - "line": 757, + "line": 758, "column": 35 } } @@ -231712,15 +232223,15 @@ "updateContext": null }, "value": "switch-", - "start": 27843, - "end": 27852, + "start": 27893, + "end": 27902, "loc": { "start": { - "line": 757, + "line": 758, "column": 36 }, "end": { - "line": 757, + "line": 758, "column": 45 } } @@ -231739,15 +232250,15 @@ "updateContext": null }, "value": "+", - "start": 27853, - "end": 27854, + "start": 27903, + "end": 27904, "loc": { "start": { - "line": 757, + "line": 758, "column": 46 }, "end": { - "line": 757, + "line": 758, "column": 47 } } @@ -231765,15 +232276,15 @@ "binop": null }, "value": "nodeId", - "start": 27855, - "end": 27861, + "start": 27905, + "end": 27911, "loc": { "start": { - "line": 757, + "line": 758, "column": 48 }, "end": { - "line": 757, + "line": 758, "column": 54 } } @@ -231791,15 +232302,15 @@ "binop": null, "updateContext": null }, - "start": 27861, - "end": 27862, + "start": 27911, + "end": 27912, "loc": { "start": { - "line": 757, + "line": 758, "column": 54 }, "end": { - "line": 757, + "line": 758, "column": 55 } } @@ -231819,15 +232330,15 @@ "updateContext": null }, "value": "const", - "start": 27875, - "end": 27880, + "start": 27925, + "end": 27930, "loc": { "start": { - "line": 758, + "line": 759, "column": 12 }, "end": { - "line": 758, + "line": 759, "column": 17 } } @@ -231845,15 +232356,15 @@ "binop": null }, "value": "switchElement", - "start": 27881, - "end": 27894, + "start": 27931, + "end": 27944, "loc": { "start": { - "line": 758, + "line": 759, "column": 18 }, "end": { - "line": 758, + "line": 759, "column": 31 } } @@ -231872,15 +232383,15 @@ "updateContext": null }, "value": "=", - "start": 27895, - "end": 27896, + "start": 27945, + "end": 27946, "loc": { "start": { - "line": 758, + "line": 759, "column": 32 }, "end": { - "line": 758, + "line": 759, "column": 33 } } @@ -231898,15 +232409,15 @@ "binop": null }, "value": "document", - "start": 27897, - "end": 27905, + "start": 27947, + "end": 27955, "loc": { "start": { - "line": 758, + "line": 759, "column": 34 }, "end": { - "line": 758, + "line": 759, "column": 42 } } @@ -231924,15 +232435,15 @@ "binop": null, "updateContext": null }, - "start": 27905, - "end": 27906, + "start": 27955, + "end": 27956, "loc": { "start": { - "line": 758, + "line": 759, "column": 42 }, "end": { - "line": 758, + "line": 759, "column": 43 } } @@ -231950,15 +232461,15 @@ "binop": null }, "value": "getElementById", - "start": 27906, - "end": 27920, + "start": 27956, + "end": 27970, "loc": { "start": { - "line": 758, + "line": 759, "column": 43 }, "end": { - "line": 758, + "line": 759, "column": 57 } } @@ -231975,15 +232486,15 @@ "postfix": false, "binop": null }, - "start": 27920, - "end": 27921, + "start": 27970, + "end": 27971, "loc": { "start": { - "line": 758, + "line": 759, "column": 57 }, "end": { - "line": 758, + "line": 759, "column": 58 } } @@ -232001,15 +232512,15 @@ "binop": null }, "value": "switchElementId", - "start": 27921, - "end": 27936, + "start": 27971, + "end": 27986, "loc": { "start": { - "line": 758, + "line": 759, "column": 58 }, "end": { - "line": 758, + "line": 759, "column": 73 } } @@ -232026,15 +232537,15 @@ "postfix": false, "binop": null }, - "start": 27936, - "end": 27937, + "start": 27986, + "end": 27987, "loc": { "start": { - "line": 758, + "line": 759, "column": 73 }, "end": { - "line": 758, + "line": 759, "column": 74 } } @@ -232052,15 +232563,15 @@ "binop": null, "updateContext": null }, - "start": 27937, - "end": 27938, + "start": 27987, + "end": 27988, "loc": { "start": { - "line": 758, + "line": 759, "column": 74 }, "end": { - "line": 758, + "line": 759, "column": 75 } } @@ -232080,15 +232591,15 @@ "updateContext": null }, "value": "if", - "start": 27951, - "end": 27953, + "start": 28001, + "end": 28003, "loc": { "start": { - "line": 759, + "line": 760, "column": 12 }, "end": { - "line": 759, + "line": 760, "column": 14 } } @@ -232105,15 +232616,15 @@ "postfix": false, "binop": null }, - "start": 27954, - "end": 27955, + "start": 28004, + "end": 28005, "loc": { "start": { - "line": 759, + "line": 760, "column": 15 }, "end": { - "line": 759, + "line": 760, "column": 16 } } @@ -232131,15 +232642,15 @@ "binop": null }, "value": "switchElement", - "start": 27955, - "end": 27968, + "start": 28005, + "end": 28018, "loc": { "start": { - "line": 759, + "line": 760, "column": 16 }, "end": { - "line": 759, + "line": 760, "column": 29 } } @@ -232156,15 +232667,15 @@ "postfix": false, "binop": null }, - "start": 27968, - "end": 27969, + "start": 28018, + "end": 28019, "loc": { "start": { - "line": 759, + "line": 760, "column": 29 }, "end": { - "line": 759, + "line": 760, "column": 30 } } @@ -232181,15 +232692,15 @@ "postfix": false, "binop": null }, - "start": 27970, - "end": 27971, + "start": 28020, + "end": 28021, "loc": { "start": { - "line": 759, + "line": 760, "column": 31 }, "end": { - "line": 759, + "line": 760, "column": 32 } } @@ -232209,15 +232720,15 @@ "updateContext": null }, "value": "this", - "start": 27988, - "end": 27992, + "start": 28038, + "end": 28042, "loc": { "start": { - "line": 760, + "line": 761, "column": 16 }, "end": { - "line": 760, + "line": 761, "column": 20 } } @@ -232235,15 +232746,15 @@ "binop": null, "updateContext": null }, - "start": 27992, - "end": 27993, + "start": 28042, + "end": 28043, "loc": { "start": { - "line": 760, + "line": 761, "column": 20 }, "end": { - "line": 760, + "line": 761, "column": 21 } } @@ -232261,15 +232772,15 @@ "binop": null }, "value": "_expandSwitchElement", - "start": 27993, - "end": 28013, + "start": 28043, + "end": 28063, "loc": { "start": { - "line": 760, + "line": 761, "column": 21 }, "end": { - "line": 760, + "line": 761, "column": 41 } } @@ -232286,15 +232797,15 @@ "postfix": false, "binop": null }, - "start": 28013, - "end": 28014, + "start": 28063, + "end": 28064, "loc": { "start": { - "line": 760, + "line": 761, "column": 41 }, "end": { - "line": 760, + "line": 761, "column": 42 } } @@ -232312,15 +232823,15 @@ "binop": null }, "value": "switchElement", - "start": 28014, - "end": 28027, + "start": 28064, + "end": 28077, "loc": { "start": { - "line": 760, + "line": 761, "column": 42 }, "end": { - "line": 760, + "line": 761, "column": 55 } } @@ -232337,15 +232848,15 @@ "postfix": false, "binop": null }, - "start": 28027, - "end": 28028, + "start": 28077, + "end": 28078, "loc": { "start": { - "line": 760, + "line": 761, "column": 55 }, "end": { - "line": 760, + "line": 761, "column": 56 } } @@ -232363,15 +232874,15 @@ "binop": null, "updateContext": null }, - "start": 28028, - "end": 28029, + "start": 28078, + "end": 28079, "loc": { "start": { - "line": 760, + "line": 761, "column": 56 }, "end": { - "line": 760, + "line": 761, "column": 57 } } @@ -232388,15 +232899,15 @@ "postfix": false, "binop": null }, - "start": 28042, - "end": 28043, + "start": 28092, + "end": 28093, "loc": { "start": { - "line": 761, + "line": 762, "column": 12 }, "end": { - "line": 761, + "line": 762, "column": 13 } } @@ -232413,15 +232924,15 @@ "postfix": false, "binop": null }, - "start": 28052, - "end": 28053, + "start": 28102, + "end": 28103, "loc": { "start": { - "line": 762, + "line": 763, "column": 8 }, "end": { - "line": 762, + "line": 763, "column": 9 } } @@ -232441,15 +232952,15 @@ "updateContext": null }, "value": "const", - "start": 28062, - "end": 28067, + "start": 28112, + "end": 28117, "loc": { "start": { - "line": 763, + "line": 764, "column": 8 }, "end": { - "line": 763, + "line": 764, "column": 13 } } @@ -232467,15 +232978,15 @@ "binop": null }, "value": "listItemElementId", - "start": 28068, - "end": 28085, + "start": 28118, + "end": 28135, "loc": { "start": { - "line": 763, + "line": 764, "column": 14 }, "end": { - "line": 763, + "line": 764, "column": 31 } } @@ -232494,15 +233005,15 @@ "updateContext": null }, "value": "=", - "start": 28086, - "end": 28087, + "start": 28136, + "end": 28137, "loc": { "start": { - "line": 763, + "line": 764, "column": 32 }, "end": { - "line": 763, + "line": 764, "column": 33 } } @@ -232521,15 +233032,15 @@ "updateContext": null }, "value": "node-", - "start": 28088, - "end": 28095, + "start": 28138, + "end": 28145, "loc": { "start": { - "line": 763, + "line": 764, "column": 34 }, "end": { - "line": 763, + "line": 764, "column": 41 } } @@ -232548,15 +233059,15 @@ "updateContext": null }, "value": "+", - "start": 28096, - "end": 28097, + "start": 28146, + "end": 28147, "loc": { "start": { - "line": 763, + "line": 764, "column": 42 }, "end": { - "line": 763, + "line": 764, "column": 43 } } @@ -232574,15 +233085,15 @@ "binop": null }, "value": "nodeId", - "start": 28098, - "end": 28104, + "start": 28148, + "end": 28154, "loc": { "start": { - "line": 763, + "line": 764, "column": 44 }, "end": { - "line": 763, + "line": 764, "column": 50 } } @@ -232600,15 +233111,15 @@ "binop": null, "updateContext": null }, - "start": 28104, - "end": 28105, + "start": 28154, + "end": 28155, "loc": { "start": { - "line": 763, + "line": 764, "column": 50 }, "end": { - "line": 763, + "line": 764, "column": 51 } } @@ -232628,15 +233139,15 @@ "updateContext": null }, "value": "const", - "start": 28114, - "end": 28119, + "start": 28164, + "end": 28169, "loc": { "start": { - "line": 764, + "line": 765, "column": 8 }, "end": { - "line": 764, + "line": 765, "column": 13 } } @@ -232654,15 +233165,15 @@ "binop": null }, "value": "listItemElement", - "start": 28120, - "end": 28135, + "start": 28170, + "end": 28185, "loc": { "start": { - "line": 764, + "line": 765, "column": 14 }, "end": { - "line": 764, + "line": 765, "column": 29 } } @@ -232681,15 +233192,15 @@ "updateContext": null }, "value": "=", - "start": 28136, - "end": 28137, + "start": 28186, + "end": 28187, "loc": { "start": { - "line": 764, + "line": 765, "column": 30 }, "end": { - "line": 764, + "line": 765, "column": 31 } } @@ -232707,15 +233218,15 @@ "binop": null }, "value": "document", - "start": 28138, - "end": 28146, + "start": 28188, + "end": 28196, "loc": { "start": { - "line": 764, + "line": 765, "column": 32 }, "end": { - "line": 764, + "line": 765, "column": 40 } } @@ -232733,15 +233244,15 @@ "binop": null, "updateContext": null }, - "start": 28146, - "end": 28147, + "start": 28196, + "end": 28197, "loc": { "start": { - "line": 764, + "line": 765, "column": 40 }, "end": { - "line": 764, + "line": 765, "column": 41 } } @@ -232759,15 +233270,15 @@ "binop": null }, "value": "getElementById", - "start": 28147, - "end": 28161, + "start": 28197, + "end": 28211, "loc": { "start": { - "line": 764, + "line": 765, "column": 41 }, "end": { - "line": 764, + "line": 765, "column": 55 } } @@ -232784,15 +233295,15 @@ "postfix": false, "binop": null }, - "start": 28161, - "end": 28162, + "start": 28211, + "end": 28212, "loc": { "start": { - "line": 764, + "line": 765, "column": 55 }, "end": { - "line": 764, + "line": 765, "column": 56 } } @@ -232810,15 +233321,15 @@ "binop": null }, "value": "listItemElementId", - "start": 28162, - "end": 28179, + "start": 28212, + "end": 28229, "loc": { "start": { - "line": 764, + "line": 765, "column": 56 }, "end": { - "line": 764, + "line": 765, "column": 73 } } @@ -232835,15 +233346,15 @@ "postfix": false, "binop": null }, - "start": 28179, - "end": 28180, + "start": 28229, + "end": 28230, "loc": { "start": { - "line": 764, + "line": 765, "column": 73 }, "end": { - "line": 764, + "line": 765, "column": 74 } } @@ -232861,15 +233372,15 @@ "binop": null, "updateContext": null }, - "start": 28180, - "end": 28181, + "start": 28230, + "end": 28231, "loc": { "start": { - "line": 764, + "line": 765, "column": 74 }, "end": { - "line": 764, + "line": 765, "column": 75 } } @@ -232887,15 +233398,15 @@ "binop": null }, "value": "listItemElement", - "start": 28190, - "end": 28205, + "start": 28240, + "end": 28255, "loc": { "start": { - "line": 765, + "line": 766, "column": 8 }, "end": { - "line": 765, + "line": 766, "column": 23 } } @@ -232913,15 +233424,15 @@ "binop": null, "updateContext": null }, - "start": 28205, - "end": 28206, + "start": 28255, + "end": 28256, "loc": { "start": { - "line": 765, + "line": 766, "column": 23 }, "end": { - "line": 765, + "line": 766, "column": 24 } } @@ -232939,15 +233450,15 @@ "binop": null }, "value": "scrollIntoView", - "start": 28206, - "end": 28220, + "start": 28256, + "end": 28270, "loc": { "start": { - "line": 765, + "line": 766, "column": 24 }, "end": { - "line": 765, + "line": 766, "column": 38 } } @@ -232964,15 +233475,15 @@ "postfix": false, "binop": null }, - "start": 28220, - "end": 28221, + "start": 28270, + "end": 28271, "loc": { "start": { - "line": 765, + "line": 766, "column": 38 }, "end": { - "line": 765, + "line": 766, "column": 39 } } @@ -232989,15 +233500,15 @@ "postfix": false, "binop": null }, - "start": 28221, - "end": 28222, + "start": 28271, + "end": 28272, "loc": { "start": { - "line": 765, + "line": 766, "column": 39 }, "end": { - "line": 765, + "line": 766, "column": 40 } } @@ -233015,15 +233526,15 @@ "binop": null }, "value": "block", - "start": 28222, - "end": 28227, + "start": 28272, + "end": 28277, "loc": { "start": { - "line": 765, + "line": 766, "column": 40 }, "end": { - "line": 765, + "line": 766, "column": 45 } } @@ -233041,15 +233552,15 @@ "binop": null, "updateContext": null }, - "start": 28227, - "end": 28228, + "start": 28277, + "end": 28278, "loc": { "start": { - "line": 765, + "line": 766, "column": 45 }, "end": { - "line": 765, + "line": 766, "column": 46 } } @@ -233068,15 +233579,15 @@ "updateContext": null }, "value": "center", - "start": 28229, - "end": 28237, + "start": 28279, + "end": 28287, "loc": { "start": { - "line": 765, + "line": 766, "column": 47 }, "end": { - "line": 765, + "line": 766, "column": 55 } } @@ -233093,15 +233604,15 @@ "postfix": false, "binop": null }, - "start": 28237, - "end": 28238, + "start": 28287, + "end": 28288, "loc": { "start": { - "line": 765, + "line": 766, "column": 55 }, "end": { - "line": 765, + "line": 766, "column": 56 } } @@ -233118,15 +233629,15 @@ "postfix": false, "binop": null }, - "start": 28238, - "end": 28239, + "start": 28288, + "end": 28289, "loc": { "start": { - "line": 765, + "line": 766, "column": 56 }, "end": { - "line": 765, + "line": 766, "column": 57 } } @@ -233144,15 +233655,15 @@ "binop": null, "updateContext": null }, - "start": 28239, - "end": 28240, + "start": 28289, + "end": 28290, "loc": { "start": { - "line": 765, + "line": 766, "column": 57 }, "end": { - "line": 765, + "line": 766, "column": 58 } } @@ -233170,15 +233681,15 @@ "binop": null }, "value": "listItemElement", - "start": 28249, - "end": 28264, + "start": 28299, + "end": 28314, "loc": { "start": { - "line": 766, + "line": 767, "column": 8 }, "end": { - "line": 766, + "line": 767, "column": 23 } } @@ -233196,15 +233707,15 @@ "binop": null, "updateContext": null }, - "start": 28264, - "end": 28265, + "start": 28314, + "end": 28315, "loc": { "start": { - "line": 766, + "line": 767, "column": 23 }, "end": { - "line": 766, + "line": 767, "column": 24 } } @@ -233222,15 +233733,15 @@ "binop": null }, "value": "classList", - "start": 28265, - "end": 28274, + "start": 28315, + "end": 28324, "loc": { "start": { - "line": 766, + "line": 767, "column": 24 }, "end": { - "line": 766, + "line": 767, "column": 33 } } @@ -233248,15 +233759,15 @@ "binop": null, "updateContext": null }, - "start": 28274, - "end": 28275, + "start": 28324, + "end": 28325, "loc": { "start": { - "line": 766, + "line": 767, "column": 33 }, "end": { - "line": 766, + "line": 767, "column": 34 } } @@ -233274,15 +233785,15 @@ "binop": null }, "value": "add", - "start": 28275, - "end": 28278, + "start": 28325, + "end": 28328, "loc": { "start": { - "line": 766, + "line": 767, "column": 34 }, "end": { - "line": 766, + "line": 767, "column": 37 } } @@ -233299,15 +233810,15 @@ "postfix": false, "binop": null }, - "start": 28278, - "end": 28279, + "start": 28328, + "end": 28329, "loc": { "start": { - "line": 766, + "line": 767, "column": 37 }, "end": { - "line": 766, + "line": 767, "column": 38 } } @@ -233326,15 +233837,15 @@ "updateContext": null }, "value": "highlighted-node", - "start": 28279, - "end": 28297, + "start": 28329, + "end": 28347, "loc": { "start": { - "line": 766, + "line": 767, "column": 38 }, "end": { - "line": 766, + "line": 767, "column": 56 } } @@ -233351,15 +233862,15 @@ "postfix": false, "binop": null }, - "start": 28297, - "end": 28298, + "start": 28347, + "end": 28348, "loc": { "start": { - "line": 766, + "line": 767, "column": 56 }, "end": { - "line": 766, + "line": 767, "column": 57 } } @@ -233377,15 +233888,15 @@ "binop": null, "updateContext": null }, - "start": 28298, - "end": 28299, + "start": 28348, + "end": 28349, "loc": { "start": { - "line": 766, + "line": 767, "column": 57 }, "end": { - "line": 766, + "line": 767, "column": 58 } } @@ -233405,15 +233916,15 @@ "updateContext": null }, "value": "this", - "start": 28308, - "end": 28312, + "start": 28358, + "end": 28362, "loc": { "start": { - "line": 767, + "line": 768, "column": 8 }, "end": { - "line": 767, + "line": 768, "column": 12 } } @@ -233431,15 +233942,15 @@ "binop": null, "updateContext": null }, - "start": 28312, - "end": 28313, + "start": 28362, + "end": 28363, "loc": { "start": { - "line": 767, + "line": 768, "column": 12 }, "end": { - "line": 767, + "line": 768, "column": 13 } } @@ -233457,15 +233968,15 @@ "binop": null }, "value": "_showListItemElementId", - "start": 28313, - "end": 28335, + "start": 28363, + "end": 28385, "loc": { "start": { - "line": 767, + "line": 768, "column": 13 }, "end": { - "line": 767, + "line": 768, "column": 35 } } @@ -233484,15 +233995,15 @@ "updateContext": null }, "value": "=", - "start": 28336, - "end": 28337, + "start": 28386, + "end": 28387, "loc": { "start": { - "line": 767, + "line": 768, "column": 36 }, "end": { - "line": 767, + "line": 768, "column": 37 } } @@ -233510,15 +234021,15 @@ "binop": null }, "value": "listItemElementId", - "start": 28338, - "end": 28355, + "start": 28388, + "end": 28405, "loc": { "start": { - "line": 767, + "line": 768, "column": 38 }, "end": { - "line": 767, + "line": 768, "column": 55 } } @@ -233536,15 +234047,15 @@ "binop": null, "updateContext": null }, - "start": 28355, - "end": 28356, + "start": 28405, + "end": 28406, "loc": { "start": { - "line": 767, + "line": 768, "column": 55 }, "end": { - "line": 767, + "line": 768, "column": 56 } } @@ -233561,15 +234072,15 @@ "postfix": false, "binop": null }, - "start": 28361, - "end": 28362, + "start": 28411, + "end": 28412, "loc": { "start": { - "line": 768, + "line": 769, "column": 4 }, "end": { - "line": 768, + "line": 769, "column": 5 } } @@ -233577,15 +234088,15 @@ { "type": "CommentBlock", "value": "*\n * @private\n ", - "start": 28368, - "end": 28395, + "start": 28418, + "end": 28445, "loc": { "start": { - "line": 770, + "line": 771, "column": 4 }, "end": { - "line": 772, + "line": 773, "column": 7 } } @@ -233603,15 +234114,15 @@ "binop": null }, "value": "unShowNode", - "start": 28400, - "end": 28410, + "start": 28450, + "end": 28460, "loc": { "start": { - "line": 773, + "line": 774, "column": 4 }, "end": { - "line": 773, + "line": 774, "column": 14 } } @@ -233628,15 +234139,15 @@ "postfix": false, "binop": null }, - "start": 28410, - "end": 28411, + "start": 28460, + "end": 28461, "loc": { "start": { - "line": 773, + "line": 774, "column": 14 }, "end": { - "line": 773, + "line": 774, "column": 15 } } @@ -233653,15 +234164,15 @@ "postfix": false, "binop": null }, - "start": 28411, - "end": 28412, + "start": 28461, + "end": 28462, "loc": { "start": { - "line": 773, + "line": 774, "column": 15 }, "end": { - "line": 773, + "line": 774, "column": 16 } } @@ -233678,15 +234189,15 @@ "postfix": false, "binop": null }, - "start": 28413, - "end": 28414, + "start": 28463, + "end": 28464, "loc": { "start": { - "line": 773, + "line": 774, "column": 17 }, "end": { - "line": 773, + "line": 774, "column": 18 } } @@ -233706,15 +234217,15 @@ "updateContext": null }, "value": "if", - "start": 28423, - "end": 28425, + "start": 28473, + "end": 28475, "loc": { "start": { - "line": 774, + "line": 775, "column": 8 }, "end": { - "line": 774, + "line": 775, "column": 10 } } @@ -233731,15 +234242,15 @@ "postfix": false, "binop": null }, - "start": 28426, - "end": 28427, + "start": 28476, + "end": 28477, "loc": { "start": { - "line": 774, + "line": 775, "column": 11 }, "end": { - "line": 774, + "line": 775, "column": 12 } } @@ -233758,15 +234269,15 @@ "updateContext": null }, "value": "!", - "start": 28427, - "end": 28428, + "start": 28477, + "end": 28478, "loc": { "start": { - "line": 774, + "line": 775, "column": 12 }, "end": { - "line": 774, + "line": 775, "column": 13 } } @@ -233786,15 +234297,15 @@ "updateContext": null }, "value": "this", - "start": 28428, - "end": 28432, + "start": 28478, + "end": 28482, "loc": { "start": { - "line": 774, + "line": 775, "column": 13 }, "end": { - "line": 774, + "line": 775, "column": 17 } } @@ -233812,15 +234323,15 @@ "binop": null, "updateContext": null }, - "start": 28432, - "end": 28433, + "start": 28482, + "end": 28483, "loc": { "start": { - "line": 774, + "line": 775, "column": 17 }, "end": { - "line": 774, + "line": 775, "column": 18 } } @@ -233838,15 +234349,15 @@ "binop": null }, "value": "_showListItemElementId", - "start": 28433, - "end": 28455, + "start": 28483, + "end": 28505, "loc": { "start": { - "line": 774, + "line": 775, "column": 18 }, "end": { - "line": 774, + "line": 775, "column": 40 } } @@ -233863,15 +234374,15 @@ "postfix": false, "binop": null }, - "start": 28455, - "end": 28456, + "start": 28505, + "end": 28506, "loc": { "start": { - "line": 774, + "line": 775, "column": 40 }, "end": { - "line": 774, + "line": 775, "column": 41 } } @@ -233888,15 +234399,15 @@ "postfix": false, "binop": null }, - "start": 28457, - "end": 28458, + "start": 28507, + "end": 28508, "loc": { "start": { - "line": 774, + "line": 775, "column": 42 }, "end": { - "line": 774, + "line": 775, "column": 43 } } @@ -233916,15 +234427,15 @@ "updateContext": null }, "value": "return", - "start": 28471, - "end": 28477, + "start": 28521, + "end": 28527, "loc": { "start": { - "line": 775, + "line": 776, "column": 12 }, "end": { - "line": 775, + "line": 776, "column": 18 } } @@ -233942,15 +234453,15 @@ "binop": null, "updateContext": null }, - "start": 28477, - "end": 28478, + "start": 28527, + "end": 28528, "loc": { "start": { - "line": 775, + "line": 776, "column": 18 }, "end": { - "line": 775, + "line": 776, "column": 19 } } @@ -233967,15 +234478,15 @@ "postfix": false, "binop": null }, - "start": 28487, - "end": 28488, + "start": 28537, + "end": 28538, "loc": { "start": { - "line": 776, + "line": 777, "column": 8 }, "end": { - "line": 776, + "line": 777, "column": 9 } } @@ -233995,15 +234506,15 @@ "updateContext": null }, "value": "const", - "start": 28497, - "end": 28502, + "start": 28547, + "end": 28552, "loc": { "start": { - "line": 777, + "line": 778, "column": 8 }, "end": { - "line": 777, + "line": 778, "column": 13 } } @@ -234021,15 +234532,15 @@ "binop": null }, "value": "listItemElement", - "start": 28503, - "end": 28518, + "start": 28553, + "end": 28568, "loc": { "start": { - "line": 777, + "line": 778, "column": 14 }, "end": { - "line": 777, + "line": 778, "column": 29 } } @@ -234048,15 +234559,15 @@ "updateContext": null }, "value": "=", - "start": 28519, - "end": 28520, + "start": 28569, + "end": 28570, "loc": { "start": { - "line": 777, + "line": 778, "column": 30 }, "end": { - "line": 777, + "line": 778, "column": 31 } } @@ -234074,15 +234585,15 @@ "binop": null }, "value": "document", - "start": 28521, - "end": 28529, + "start": 28571, + "end": 28579, "loc": { "start": { - "line": 777, + "line": 778, "column": 32 }, "end": { - "line": 777, + "line": 778, "column": 40 } } @@ -234100,15 +234611,15 @@ "binop": null, "updateContext": null }, - "start": 28529, - "end": 28530, + "start": 28579, + "end": 28580, "loc": { "start": { - "line": 777, + "line": 778, "column": 40 }, "end": { - "line": 777, + "line": 778, "column": 41 } } @@ -234126,15 +234637,15 @@ "binop": null }, "value": "getElementById", - "start": 28530, - "end": 28544, + "start": 28580, + "end": 28594, "loc": { "start": { - "line": 777, + "line": 778, "column": 41 }, "end": { - "line": 777, + "line": 778, "column": 55 } } @@ -234151,15 +234662,15 @@ "postfix": false, "binop": null }, - "start": 28544, - "end": 28545, + "start": 28594, + "end": 28595, "loc": { "start": { - "line": 777, + "line": 778, "column": 55 }, "end": { - "line": 777, + "line": 778, "column": 56 } } @@ -234179,15 +234690,15 @@ "updateContext": null }, "value": "this", - "start": 28545, - "end": 28549, + "start": 28595, + "end": 28599, "loc": { "start": { - "line": 777, + "line": 778, "column": 56 }, "end": { - "line": 777, + "line": 778, "column": 60 } } @@ -234205,15 +234716,15 @@ "binop": null, "updateContext": null }, - "start": 28549, - "end": 28550, + "start": 28599, + "end": 28600, "loc": { "start": { - "line": 777, + "line": 778, "column": 60 }, "end": { - "line": 777, + "line": 778, "column": 61 } } @@ -234231,15 +234742,15 @@ "binop": null }, "value": "_showListItemElementId", - "start": 28550, - "end": 28572, + "start": 28600, + "end": 28622, "loc": { "start": { - "line": 777, + "line": 778, "column": 61 }, "end": { - "line": 777, + "line": 778, "column": 83 } } @@ -234256,15 +234767,15 @@ "postfix": false, "binop": null }, - "start": 28572, - "end": 28573, + "start": 28622, + "end": 28623, "loc": { "start": { - "line": 777, + "line": 778, "column": 83 }, "end": { - "line": 777, + "line": 778, "column": 84 } } @@ -234282,15 +234793,15 @@ "binop": null, "updateContext": null }, - "start": 28573, - "end": 28574, + "start": 28623, + "end": 28624, "loc": { "start": { - "line": 777, + "line": 778, "column": 84 }, "end": { - "line": 777, + "line": 778, "column": 85 } } @@ -234310,15 +234821,15 @@ "updateContext": null }, "value": "if", - "start": 28583, - "end": 28585, + "start": 28633, + "end": 28635, "loc": { "start": { - "line": 778, + "line": 779, "column": 8 }, "end": { - "line": 778, + "line": 779, "column": 10 } } @@ -234335,15 +234846,15 @@ "postfix": false, "binop": null }, - "start": 28586, - "end": 28587, + "start": 28636, + "end": 28637, "loc": { "start": { - "line": 778, + "line": 779, "column": 11 }, "end": { - "line": 778, + "line": 779, "column": 12 } } @@ -234362,15 +234873,15 @@ "updateContext": null }, "value": "!", - "start": 28587, - "end": 28588, + "start": 28637, + "end": 28638, "loc": { "start": { - "line": 778, + "line": 779, "column": 12 }, "end": { - "line": 778, + "line": 779, "column": 13 } } @@ -234388,15 +234899,15 @@ "binop": null }, "value": "listItemElement", - "start": 28588, - "end": 28603, + "start": 28638, + "end": 28653, "loc": { "start": { - "line": 778, + "line": 779, "column": 13 }, "end": { - "line": 778, + "line": 779, "column": 28 } } @@ -234413,15 +234924,15 @@ "postfix": false, "binop": null }, - "start": 28603, - "end": 28604, + "start": 28653, + "end": 28654, "loc": { "start": { - "line": 778, + "line": 779, "column": 28 }, "end": { - "line": 778, + "line": 779, "column": 29 } } @@ -234438,15 +234949,15 @@ "postfix": false, "binop": null }, - "start": 28605, - "end": 28606, + "start": 28655, + "end": 28656, "loc": { "start": { - "line": 778, + "line": 779, "column": 30 }, "end": { - "line": 778, + "line": 779, "column": 31 } } @@ -234466,15 +234977,15 @@ "updateContext": null }, "value": "this", - "start": 28619, - "end": 28623, + "start": 28669, + "end": 28673, "loc": { "start": { - "line": 779, + "line": 780, "column": 12 }, "end": { - "line": 779, + "line": 780, "column": 16 } } @@ -234492,15 +235003,15 @@ "binop": null, "updateContext": null }, - "start": 28623, - "end": 28624, + "start": 28673, + "end": 28674, "loc": { "start": { - "line": 779, + "line": 780, "column": 16 }, "end": { - "line": 779, + "line": 780, "column": 17 } } @@ -234518,15 +235029,15 @@ "binop": null }, "value": "_showListItemElementId", - "start": 28624, - "end": 28646, + "start": 28674, + "end": 28696, "loc": { "start": { - "line": 779, + "line": 780, "column": 17 }, "end": { - "line": 779, + "line": 780, "column": 39 } } @@ -234545,15 +235056,15 @@ "updateContext": null }, "value": "=", - "start": 28647, - "end": 28648, + "start": 28697, + "end": 28698, "loc": { "start": { - "line": 779, + "line": 780, "column": 40 }, "end": { - "line": 779, + "line": 780, "column": 41 } } @@ -234573,15 +235084,15 @@ "updateContext": null }, "value": "null", - "start": 28649, - "end": 28653, + "start": 28699, + "end": 28703, "loc": { "start": { - "line": 779, + "line": 780, "column": 42 }, "end": { - "line": 779, + "line": 780, "column": 46 } } @@ -234599,15 +235110,15 @@ "binop": null, "updateContext": null }, - "start": 28653, - "end": 28654, + "start": 28703, + "end": 28704, "loc": { "start": { - "line": 779, + "line": 780, "column": 46 }, "end": { - "line": 779, + "line": 780, "column": 47 } } @@ -234627,15 +235138,15 @@ "updateContext": null }, "value": "return", - "start": 28667, - "end": 28673, + "start": 28717, + "end": 28723, "loc": { "start": { - "line": 780, + "line": 781, "column": 12 }, "end": { - "line": 780, + "line": 781, "column": 18 } } @@ -234653,15 +235164,15 @@ "binop": null, "updateContext": null }, - "start": 28673, - "end": 28674, + "start": 28723, + "end": 28724, "loc": { "start": { - "line": 780, + "line": 781, "column": 18 }, "end": { - "line": 780, + "line": 781, "column": 19 } } @@ -234678,15 +235189,15 @@ "postfix": false, "binop": null }, - "start": 28683, - "end": 28684, + "start": 28733, + "end": 28734, "loc": { "start": { - "line": 781, + "line": 782, "column": 8 }, "end": { - "line": 781, + "line": 782, "column": 9 } } @@ -234704,15 +235215,15 @@ "binop": null }, "value": "listItemElement", - "start": 28693, - "end": 28708, + "start": 28743, + "end": 28758, "loc": { "start": { - "line": 782, + "line": 783, "column": 8 }, "end": { - "line": 782, + "line": 783, "column": 23 } } @@ -234730,15 +235241,15 @@ "binop": null, "updateContext": null }, - "start": 28708, - "end": 28709, + "start": 28758, + "end": 28759, "loc": { "start": { - "line": 782, + "line": 783, "column": 23 }, "end": { - "line": 782, + "line": 783, "column": 24 } } @@ -234756,15 +235267,15 @@ "binop": null }, "value": "classList", - "start": 28709, - "end": 28718, + "start": 28759, + "end": 28768, "loc": { "start": { - "line": 782, + "line": 783, "column": 24 }, "end": { - "line": 782, + "line": 783, "column": 33 } } @@ -234782,15 +235293,15 @@ "binop": null, "updateContext": null }, - "start": 28718, - "end": 28719, + "start": 28768, + "end": 28769, "loc": { "start": { - "line": 782, + "line": 783, "column": 33 }, "end": { - "line": 782, + "line": 783, "column": 34 } } @@ -234808,15 +235319,15 @@ "binop": null }, "value": "remove", - "start": 28719, - "end": 28725, + "start": 28769, + "end": 28775, "loc": { "start": { - "line": 782, + "line": 783, "column": 34 }, "end": { - "line": 782, + "line": 783, "column": 40 } } @@ -234833,15 +235344,15 @@ "postfix": false, "binop": null }, - "start": 28725, - "end": 28726, + "start": 28775, + "end": 28776, "loc": { "start": { - "line": 782, + "line": 783, "column": 40 }, "end": { - "line": 782, + "line": 783, "column": 41 } } @@ -234860,15 +235371,15 @@ "updateContext": null }, "value": "highlighted-node", - "start": 28726, - "end": 28744, + "start": 28776, + "end": 28794, "loc": { "start": { - "line": 782, + "line": 783, "column": 41 }, "end": { - "line": 782, + "line": 783, "column": 59 } } @@ -234885,15 +235396,15 @@ "postfix": false, "binop": null }, - "start": 28744, - "end": 28745, + "start": 28794, + "end": 28795, "loc": { "start": { - "line": 782, + "line": 783, "column": 59 }, "end": { - "line": 782, + "line": 783, "column": 60 } } @@ -234911,15 +235422,15 @@ "binop": null, "updateContext": null }, - "start": 28745, - "end": 28746, + "start": 28795, + "end": 28796, "loc": { "start": { - "line": 782, + "line": 783, "column": 60 }, "end": { - "line": 782, + "line": 783, "column": 61 } } @@ -234939,15 +235450,15 @@ "updateContext": null }, "value": "this", - "start": 28755, - "end": 28759, + "start": 28805, + "end": 28809, "loc": { "start": { - "line": 783, + "line": 784, "column": 8 }, "end": { - "line": 783, + "line": 784, "column": 12 } } @@ -234965,15 +235476,15 @@ "binop": null, "updateContext": null }, - "start": 28759, - "end": 28760, + "start": 28809, + "end": 28810, "loc": { "start": { - "line": 783, + "line": 784, "column": 12 }, "end": { - "line": 783, + "line": 784, "column": 13 } } @@ -234991,15 +235502,15 @@ "binop": null }, "value": "_showListItemElementId", - "start": 28760, - "end": 28782, + "start": 28810, + "end": 28832, "loc": { "start": { - "line": 783, + "line": 784, "column": 13 }, "end": { - "line": 783, + "line": 784, "column": 35 } } @@ -235018,15 +235529,15 @@ "updateContext": null }, "value": "=", - "start": 28783, - "end": 28784, + "start": 28833, + "end": 28834, "loc": { "start": { - "line": 783, + "line": 784, "column": 36 }, "end": { - "line": 783, + "line": 784, "column": 37 } } @@ -235046,15 +235557,15 @@ "updateContext": null }, "value": "null", - "start": 28785, - "end": 28789, + "start": 28835, + "end": 28839, "loc": { "start": { - "line": 783, + "line": 784, "column": 38 }, "end": { - "line": 783, + "line": 784, "column": 42 } } @@ -235072,15 +235583,15 @@ "binop": null, "updateContext": null }, - "start": 28789, - "end": 28790, + "start": 28839, + "end": 28840, "loc": { "start": { - "line": 783, + "line": 784, "column": 42 }, "end": { - "line": 783, + "line": 784, "column": 43 } } @@ -235097,15 +235608,15 @@ "postfix": false, "binop": null }, - "start": 28795, - "end": 28796, + "start": 28845, + "end": 28846, "loc": { "start": { - "line": 784, + "line": 785, "column": 4 }, "end": { - "line": 784, + "line": 785, "column": 5 } } @@ -235123,15 +235634,15 @@ "binop": null }, "value": "_expandSwitchElement", - "start": 28802, - "end": 28822, + "start": 28852, + "end": 28872, "loc": { "start": { - "line": 786, + "line": 787, "column": 4 }, "end": { - "line": 786, + "line": 787, "column": 24 } } @@ -235148,15 +235659,15 @@ "postfix": false, "binop": null }, - "start": 28822, - "end": 28823, + "start": 28872, + "end": 28873, "loc": { "start": { - "line": 786, + "line": 787, "column": 24 }, "end": { - "line": 786, + "line": 787, "column": 25 } } @@ -235174,15 +235685,15 @@ "binop": null }, "value": "switchElement", - "start": 28823, - "end": 28836, + "start": 28873, + "end": 28886, "loc": { "start": { - "line": 786, + "line": 787, "column": 25 }, "end": { - "line": 786, + "line": 787, "column": 38 } } @@ -235199,15 +235710,15 @@ "postfix": false, "binop": null }, - "start": 28836, - "end": 28837, + "start": 28886, + "end": 28887, "loc": { "start": { - "line": 786, + "line": 787, "column": 38 }, "end": { - "line": 786, + "line": 787, "column": 39 } } @@ -235224,15 +235735,15 @@ "postfix": false, "binop": null }, - "start": 28838, - "end": 28839, + "start": 28888, + "end": 28889, "loc": { "start": { - "line": 786, + "line": 787, "column": 40 }, "end": { - "line": 786, + "line": 787, "column": 41 } } @@ -235252,15 +235763,15 @@ "updateContext": null }, "value": "const", - "start": 28848, - "end": 28853, + "start": 28898, + "end": 28903, "loc": { "start": { - "line": 787, + "line": 788, "column": 8 }, "end": { - "line": 787, + "line": 788, "column": 13 } } @@ -235278,15 +235789,15 @@ "binop": null }, "value": "parentElement", - "start": 28854, - "end": 28867, + "start": 28904, + "end": 28917, "loc": { "start": { - "line": 787, + "line": 788, "column": 14 }, "end": { - "line": 787, + "line": 788, "column": 27 } } @@ -235305,15 +235816,15 @@ "updateContext": null }, "value": "=", - "start": 28868, - "end": 28869, + "start": 28918, + "end": 28919, "loc": { "start": { - "line": 787, + "line": 788, "column": 28 }, "end": { - "line": 787, + "line": 788, "column": 29 } } @@ -235331,15 +235842,15 @@ "binop": null }, "value": "switchElement", - "start": 28870, - "end": 28883, + "start": 28920, + "end": 28933, "loc": { "start": { - "line": 787, + "line": 788, "column": 30 }, "end": { - "line": 787, + "line": 788, "column": 43 } } @@ -235357,15 +235868,15 @@ "binop": null, "updateContext": null }, - "start": 28883, - "end": 28884, + "start": 28933, + "end": 28934, "loc": { "start": { - "line": 787, + "line": 788, "column": 43 }, "end": { - "line": 787, + "line": 788, "column": 44 } } @@ -235383,15 +235894,15 @@ "binop": null }, "value": "parentElement", - "start": 28884, - "end": 28897, + "start": 28934, + "end": 28947, "loc": { "start": { - "line": 787, + "line": 788, "column": 44 }, "end": { - "line": 787, + "line": 788, "column": 57 } } @@ -235409,15 +235920,15 @@ "binop": null, "updateContext": null }, - "start": 28897, - "end": 28898, + "start": 28947, + "end": 28948, "loc": { "start": { - "line": 787, + "line": 788, "column": 57 }, "end": { - "line": 787, + "line": 788, "column": 58 } } @@ -235437,15 +235948,15 @@ "updateContext": null }, "value": "const", - "start": 28907, - "end": 28912, + "start": 28957, + "end": 28962, "loc": { "start": { - "line": 788, + "line": 789, "column": 8 }, "end": { - "line": 788, + "line": 789, "column": 13 } } @@ -235463,15 +235974,15 @@ "binop": null }, "value": "expanded", - "start": 28913, - "end": 28921, + "start": 28963, + "end": 28971, "loc": { "start": { - "line": 788, + "line": 789, "column": 14 }, "end": { - "line": 788, + "line": 789, "column": 22 } } @@ -235490,15 +236001,15 @@ "updateContext": null }, "value": "=", - "start": 28922, - "end": 28923, + "start": 28972, + "end": 28973, "loc": { "start": { - "line": 788, + "line": 789, "column": 23 }, "end": { - "line": 788, + "line": 789, "column": 24 } } @@ -235516,15 +236027,15 @@ "binop": null }, "value": "parentElement", - "start": 28924, - "end": 28937, + "start": 28974, + "end": 28987, "loc": { "start": { - "line": 788, + "line": 789, "column": 25 }, "end": { - "line": 788, + "line": 789, "column": 38 } } @@ -235542,15 +236053,15 @@ "binop": null, "updateContext": null }, - "start": 28937, - "end": 28938, + "start": 28987, + "end": 28988, "loc": { "start": { - "line": 788, + "line": 789, "column": 38 }, "end": { - "line": 788, + "line": 789, "column": 39 } } @@ -235568,15 +236079,15 @@ "binop": null }, "value": "getElementsByTagName", - "start": 28938, - "end": 28958, + "start": 28988, + "end": 29008, "loc": { "start": { - "line": 788, + "line": 789, "column": 39 }, "end": { - "line": 788, + "line": 789, "column": 59 } } @@ -235593,15 +236104,15 @@ "postfix": false, "binop": null }, - "start": 28958, - "end": 28959, + "start": 29008, + "end": 29009, "loc": { "start": { - "line": 788, + "line": 789, "column": 59 }, "end": { - "line": 788, + "line": 789, "column": 60 } } @@ -235620,15 +236131,15 @@ "updateContext": null }, "value": "li", - "start": 28959, - "end": 28963, + "start": 29009, + "end": 29013, "loc": { "start": { - "line": 788, + "line": 789, "column": 60 }, "end": { - "line": 788, + "line": 789, "column": 64 } } @@ -235645,15 +236156,15 @@ "postfix": false, "binop": null }, - "start": 28963, - "end": 28964, + "start": 29013, + "end": 29014, "loc": { "start": { - "line": 788, + "line": 789, "column": 64 }, "end": { - "line": 788, + "line": 789, "column": 65 } } @@ -235671,15 +236182,15 @@ "binop": null, "updateContext": null }, - "start": 28964, - "end": 28965, + "start": 29014, + "end": 29015, "loc": { "start": { - "line": 788, + "line": 789, "column": 65 }, "end": { - "line": 788, + "line": 789, "column": 66 } } @@ -235698,15 +236209,15 @@ "updateContext": null }, "value": 0, - "start": 28965, - "end": 28966, + "start": 29015, + "end": 29016, "loc": { "start": { - "line": 788, + "line": 789, "column": 66 }, "end": { - "line": 788, + "line": 789, "column": 67 } } @@ -235724,15 +236235,15 @@ "binop": null, "updateContext": null }, - "start": 28966, - "end": 28967, + "start": 29016, + "end": 29017, "loc": { "start": { - "line": 788, + "line": 789, "column": 67 }, "end": { - "line": 788, + "line": 789, "column": 68 } } @@ -235750,15 +236261,15 @@ "binop": null, "updateContext": null }, - "start": 28967, - "end": 28968, + "start": 29017, + "end": 29018, "loc": { "start": { - "line": 788, + "line": 789, "column": 68 }, "end": { - "line": 788, + "line": 789, "column": 69 } } @@ -235778,15 +236289,15 @@ "updateContext": null }, "value": "if", - "start": 28977, - "end": 28979, + "start": 29027, + "end": 29029, "loc": { "start": { - "line": 789, + "line": 790, "column": 8 }, "end": { - "line": 789, + "line": 790, "column": 10 } } @@ -235803,15 +236314,15 @@ "postfix": false, "binop": null }, - "start": 28980, - "end": 28981, + "start": 29030, + "end": 29031, "loc": { "start": { - "line": 789, + "line": 790, "column": 11 }, "end": { - "line": 789, + "line": 790, "column": 12 } } @@ -235829,15 +236340,15 @@ "binop": null }, "value": "expanded", - "start": 28981, - "end": 28989, + "start": 29031, + "end": 29039, "loc": { "start": { - "line": 789, + "line": 790, "column": 12 }, "end": { - "line": 789, + "line": 790, "column": 20 } } @@ -235854,15 +236365,15 @@ "postfix": false, "binop": null }, - "start": 28989, - "end": 28990, + "start": 29039, + "end": 29040, "loc": { "start": { - "line": 789, + "line": 790, "column": 20 }, "end": { - "line": 789, + "line": 790, "column": 21 } } @@ -235879,15 +236390,15 @@ "postfix": false, "binop": null }, - "start": 28991, - "end": 28992, + "start": 29041, + "end": 29042, "loc": { "start": { - "line": 789, + "line": 790, "column": 22 }, "end": { - "line": 789, + "line": 790, "column": 23 } } @@ -235907,15 +236418,15 @@ "updateContext": null }, "value": "return", - "start": 29005, - "end": 29011, + "start": 29055, + "end": 29061, "loc": { "start": { - "line": 790, + "line": 791, "column": 12 }, "end": { - "line": 790, + "line": 791, "column": 18 } } @@ -235933,15 +236444,15 @@ "binop": null, "updateContext": null }, - "start": 29011, - "end": 29012, + "start": 29061, + "end": 29062, "loc": { "start": { - "line": 790, + "line": 791, "column": 18 }, "end": { - "line": 790, + "line": 791, "column": 19 } } @@ -235958,383 +236469,16 @@ "postfix": false, "binop": null }, - "start": 29021, - "end": 29022, - "loc": { - "start": { - "line": 791, - "column": 8 - }, - "end": { - "line": 791, - "column": 9 - } - } - }, - { - "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": 29031, - "end": 29036, - "loc": { - "start": { - "line": 792, - "column": 8 - }, - "end": { - "line": 792, - "column": 13 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "nodeId", - "start": 29037, - "end": 29043, - "loc": { - "start": { - "line": 792, - "column": 14 - }, - "end": { - "line": 792, - "column": 20 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 29044, - "end": 29045, - "loc": { - "start": { - "line": 792, - "column": 21 - }, - "end": { - "line": 792, - "column": 22 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "parentElement", - "start": 29046, - "end": 29059, - "loc": { - "start": { - "line": 792, - "column": 23 - }, - "end": { - "line": 792, - "column": 36 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 29059, - "end": 29060, - "loc": { - "start": { - "line": 792, - "column": 36 - }, - "end": { - "line": 792, - "column": 37 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "id", - "start": 29060, - "end": 29062, - "loc": { - "start": { - "line": 792, - "column": 37 - }, - "end": { - "line": 792, - "column": 39 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 29062, - "end": 29063, - "loc": { - "start": { - "line": 792, - "column": 39 - }, - "end": { - "line": 792, - "column": 40 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "replace", - "start": 29063, - "end": 29070, - "loc": { - "start": { - "line": 792, - "column": 40 - }, - "end": { - "line": 792, - "column": 47 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 29070, - "end": 29071, - "loc": { - "start": { - "line": 792, - "column": 47 - }, - "end": { - "line": 792, - "column": 48 - } - } - }, - { - "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "node-", "start": 29071, - "end": 29078, - "loc": { - "start": { - "line": 792, - "column": 48 - }, - "end": { - "line": 792, - "column": 55 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 29078, - "end": 29079, + "end": 29072, "loc": { "start": { "line": 792, - "column": 55 - }, - "end": { - "line": 792, - "column": 56 - } - } - }, - { - "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "", - "start": 29080, - "end": 29082, - "loc": { - "start": { - "line": 792, - "column": 57 - }, - "end": { - "line": 792, - "column": 59 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 29082, - "end": 29083, - "loc": { - "start": { - "line": 792, - "column": 59 - }, - "end": { - "line": 792, - "column": 60 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 29083, - "end": 29084, - "loc": { - "start": { - "line": 792, - "column": 60 + "column": 8 }, "end": { "line": 792, - "column": 61 + "column": 9 } } }, @@ -236353,8 +236497,8 @@ "updateContext": null }, "value": "const", - "start": 29093, - "end": 29098, + "start": 29081, + "end": 29086, "loc": { "start": { "line": 793, @@ -236378,9 +236522,9 @@ "postfix": false, "binop": null }, - "value": "objectId", - "start": 29099, - "end": 29107, + "value": "nodeId", + "start": 29087, + "end": 29093, "loc": { "start": { "line": 793, @@ -236388,7 +236532,7 @@ }, "end": { "line": 793, - "column": 22 + "column": 20 } } }, @@ -236406,7 +236550,33 @@ "updateContext": null }, "value": "=", - "start": 29108, + "start": 29094, + "end": 29095, + "loc": { + "start": { + "line": 793, + "column": 21 + }, + "end": { + "line": 793, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "parentElement", + "start": 29096, "end": 29109, "loc": { "start": { @@ -236415,16 +236585,15 @@ }, "end": { "line": 793, - "column": 24 + "column": 36 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -236433,17 +236602,42 @@ "binop": null, "updateContext": null }, - "value": "this", + "start": 29109, + "end": 29110, + "loc": { + "start": { + "line": 793, + "column": 36 + }, + "end": { + "line": 793, + "column": 37 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "id", "start": 29110, - "end": 29114, + "end": 29112, "loc": { "start": { "line": 793, - "column": 25 + "column": 37 }, "end": { "line": 793, - "column": 29 + "column": 39 } } }, @@ -236460,16 +236654,16 @@ "binop": null, "updateContext": null }, - "start": 29114, - "end": 29115, + "start": 29112, + "end": 29113, "loc": { "start": { "line": 793, - "column": 29 + "column": 39 }, "end": { "line": 793, - "column": 30 + "column": 40 } } }, @@ -236485,17 +236679,17 @@ "postfix": false, "binop": null }, - "value": "_nodeToObjectID", - "start": 29115, - "end": 29130, + "value": "replace", + "start": 29113, + "end": 29120, "loc": { "start": { "line": 793, - "column": 30 + "column": 40 }, "end": { "line": 793, - "column": 45 + "column": 47 } } }, @@ -236511,22 +236705,22 @@ "postfix": false, "binop": null }, - "start": 29130, - "end": 29131, + "start": 29120, + "end": 29121, "loc": { "start": { "line": 793, - "column": 45 + "column": 47 }, "end": { "line": 793, - "column": 46 + "column": 48 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -236534,19 +236728,73 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "nodeId", - "start": 29131, - "end": 29137, + "value": "node-", + "start": 29121, + "end": 29128, "loc": { "start": { "line": 793, - "column": 46 + "column": 48 }, "end": { "line": 793, - "column": 52 + "column": 55 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 29128, + "end": 29129, + "loc": { + "start": { + "line": 793, + "column": 55 + }, + "end": { + "line": 793, + "column": 56 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "", + "start": 29130, + "end": 29132, + "loc": { + "start": { + "line": 793, + "column": 57 + }, + "end": { + "line": 793, + "column": 59 } } }, @@ -236562,16 +236810,16 @@ "postfix": false, "binop": null }, - "start": 29137, - "end": 29138, + "start": 29132, + "end": 29133, "loc": { "start": { "line": 793, - "column": 52 + "column": 59 }, "end": { "line": 793, - "column": 53 + "column": 60 } } }, @@ -236588,16 +236836,16 @@ "binop": null, "updateContext": null }, - "start": 29138, - "end": 29139, + "start": 29133, + "end": 29134, "loc": { "start": { "line": 793, - "column": 53 + "column": 60 }, "end": { "line": 793, - "column": 54 + "column": 61 } } }, @@ -236616,8 +236864,8 @@ "updateContext": null }, "value": "const", - "start": 29148, - "end": 29153, + "start": 29143, + "end": 29148, "loc": { "start": { "line": 794, @@ -236641,9 +236889,9 @@ "postfix": false, "binop": null }, - "value": "switchNode", - "start": 29154, - "end": 29164, + "value": "objectId", + "start": 29149, + "end": 29157, "loc": { "start": { "line": 794, @@ -236651,7 +236899,7 @@ }, "end": { "line": 794, - "column": 24 + "column": 22 } } }, @@ -236669,16 +236917,16 @@ "updateContext": null }, "value": "=", - "start": 29165, - "end": 29166, + "start": 29158, + "end": 29159, "loc": { "start": { "line": 794, - "column": 25 + "column": 23 }, "end": { "line": 794, - "column": 26 + "column": 24 } } }, @@ -236697,16 +236945,16 @@ "updateContext": null }, "value": "this", - "start": 29167, - "end": 29171, + "start": 29160, + "end": 29164, "loc": { "start": { "line": 794, - "column": 27 + "column": 25 }, "end": { "line": 794, - "column": 31 + "column": 29 } } }, @@ -236723,16 +236971,16 @@ "binop": null, "updateContext": null }, - "start": 29171, - "end": 29172, + "start": 29164, + "end": 29165, "loc": { "start": { "line": 794, - "column": 31 + "column": 29 }, "end": { "line": 794, - "column": 32 + "column": 30 } } }, @@ -236748,23 +236996,23 @@ "postfix": false, "binop": null }, - "value": "_objectNodes", - "start": 29172, - "end": 29184, + "value": "_nodeToObjectID", + "start": 29165, + "end": 29180, "loc": { "start": { "line": 794, - "column": 32 + "column": 30 }, "end": { "line": 794, - "column": 44 + "column": 45 } } }, { "type": { - "label": "[", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -236772,19 +237020,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 29184, - "end": 29185, + "start": 29180, + "end": 29181, "loc": { "start": { "line": 794, - "column": 44 + "column": 45 }, "end": { "line": 794, - "column": 45 + "column": 46 } } }, @@ -236800,23 +237047,23 @@ "postfix": false, "binop": null }, - "value": "objectId", - "start": 29185, - "end": 29193, + "value": "nodeId", + "start": 29181, + "end": 29187, "loc": { "start": { "line": 794, - "column": 45 + "column": 46 }, "end": { "line": 794, - "column": 53 + "column": 52 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -236824,19 +237071,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 29193, - "end": 29194, + "start": 29187, + "end": 29188, "loc": { "start": { "line": 794, - "column": 53 + "column": 52 }, "end": { "line": 794, - "column": 54 + "column": 53 } } }, @@ -236853,16 +237099,16 @@ "binop": null, "updateContext": null }, - "start": 29194, - "end": 29195, + "start": 29188, + "end": 29189, "loc": { "start": { "line": 794, - "column": 54 + "column": 53 }, "end": { "line": 794, - "column": 55 + "column": 54 } } }, @@ -236881,8 +237127,8 @@ "updateContext": null }, "value": "const", - "start": 29204, - "end": 29209, + "start": 29198, + "end": 29203, "loc": { "start": { "line": 795, @@ -236906,9 +237152,9 @@ "postfix": false, "binop": null }, - "value": "childNodes", - "start": 29210, - "end": 29220, + "value": "switchNode", + "start": 29204, + "end": 29214, "loc": { "start": { "line": 795, @@ -236934,8 +237180,8 @@ "updateContext": null }, "value": "=", - "start": 29221, - "end": 29222, + "start": 29215, + "end": 29216, "loc": { "start": { "line": 795, @@ -236949,7 +237195,8 @@ }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -236957,11 +237204,12 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "switchNode", - "start": 29223, - "end": 29233, + "value": "this", + "start": 29217, + "end": 29221, "loc": { "start": { "line": 795, @@ -236969,7 +237217,7 @@ }, "end": { "line": 795, - "column": 37 + "column": 31 } } }, @@ -236986,16 +237234,16 @@ "binop": null, "updateContext": null }, - "start": 29233, - "end": 29234, + "start": 29221, + "end": 29222, "loc": { "start": { "line": 795, - "column": 37 + "column": 31 }, "end": { "line": 795, - "column": 38 + "column": 32 } } }, @@ -237011,17 +237259,95 @@ "postfix": false, "binop": null }, - "value": "children", + "value": "_objectNodes", + "start": 29222, + "end": 29234, + "loc": { + "start": { + "line": 795, + "column": 32 + }, + "end": { + "line": 795, + "column": 44 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, "start": 29234, - "end": 29242, + "end": 29235, "loc": { "start": { "line": 795, - "column": 38 + "column": 44 }, "end": { "line": 795, - "column": 46 + "column": 45 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "objectId", + "start": 29235, + "end": 29243, + "loc": { + "start": { + "line": 795, + "column": 45 + }, + "end": { + "line": 795, + "column": 53 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 29243, + "end": 29244, + "loc": { + "start": { + "line": 795, + "column": 53 + }, + "end": { + "line": 795, + "column": 54 } } }, @@ -237038,16 +237364,16 @@ "binop": null, "updateContext": null }, - "start": 29242, - "end": 29243, + "start": 29244, + "end": 29245, "loc": { "start": { "line": 795, - "column": 46 + "column": 54 }, "end": { "line": 795, - "column": 47 + "column": 55 } } }, @@ -237066,8 +237392,8 @@ "updateContext": null }, "value": "const", - "start": 29252, - "end": 29257, + "start": 29254, + "end": 29259, "loc": { "start": { "line": 796, @@ -237091,8 +237417,8 @@ "postfix": false, "binop": null }, - "value": "nodeElements", - "start": 29258, + "value": "childNodes", + "start": 29260, "end": 29270, "loc": { "start": { @@ -237101,7 +237427,7 @@ }, "end": { "line": 796, - "column": 26 + "column": 24 } } }, @@ -237124,11 +237450,11 @@ "loc": { "start": { "line": 796, - "column": 27 + "column": 25 }, "end": { "line": 796, - "column": 28 + "column": 26 } } }, @@ -237144,17 +237470,17 @@ "postfix": false, "binop": null }, - "value": "childNodes", + "value": "switchNode", "start": 29273, "end": 29283, "loc": { "start": { "line": 796, - "column": 29 + "column": 27 }, "end": { "line": 796, - "column": 39 + "column": 37 } } }, @@ -237176,11 +237502,11 @@ "loc": { "start": { "line": 796, - "column": 39 + "column": 37 }, "end": { "line": 796, - "column": 40 + "column": 38 } } }, @@ -237196,16 +237522,201 @@ "postfix": false, "binop": null }, - "value": "map", + "value": "children", "start": 29284, - "end": 29287, + "end": 29292, "loc": { "start": { "line": 796, - "column": 40 + "column": 38 + }, + "end": { + "line": 796, + "column": 46 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 29292, + "end": 29293, + "loc": { + "start": { + "line": 796, + "column": 46 }, "end": { "line": 796, + "column": 47 + } + } + }, + { + "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": 29302, + "end": 29307, + "loc": { + "start": { + "line": 797, + "column": 8 + }, + "end": { + "line": 797, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "nodeElements", + "start": 29308, + "end": 29320, + "loc": { + "start": { + "line": 797, + "column": 14 + }, + "end": { + "line": 797, + "column": 26 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 29321, + "end": 29322, + "loc": { + "start": { + "line": 797, + "column": 27 + }, + "end": { + "line": 797, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "childNodes", + "start": 29323, + "end": 29333, + "loc": { + "start": { + "line": 797, + "column": 29 + }, + "end": { + "line": 797, + "column": 39 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 29333, + "end": 29334, + "loc": { + "start": { + "line": 797, + "column": 39 + }, + "end": { + "line": 797, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "map", + "start": 29334, + "end": 29337, + "loc": { + "start": { + "line": 797, + "column": 40 + }, + "end": { + "line": 797, "column": 43 } } @@ -237222,15 +237733,15 @@ "postfix": false, "binop": null }, - "start": 29287, - "end": 29288, + "start": 29337, + "end": 29338, "loc": { "start": { - "line": 796, + "line": 797, "column": 43 }, "end": { - "line": 796, + "line": 797, "column": 44 } } @@ -237247,15 +237758,15 @@ "postfix": false, "binop": null }, - "start": 29288, - "end": 29289, + "start": 29338, + "end": 29339, "loc": { "start": { - "line": 796, + "line": 797, "column": 44 }, "end": { - "line": 796, + "line": 797, "column": 45 } } @@ -237273,15 +237784,15 @@ "binop": null }, "value": "node", - "start": 29289, - "end": 29293, + "start": 29339, + "end": 29343, "loc": { "start": { - "line": 796, + "line": 797, "column": 45 }, "end": { - "line": 796, + "line": 797, "column": 49 } } @@ -237298,15 +237809,15 @@ "postfix": false, "binop": null }, - "start": 29293, - "end": 29294, + "start": 29343, + "end": 29344, "loc": { "start": { - "line": 796, + "line": 797, "column": 49 }, "end": { - "line": 796, + "line": 797, "column": 50 } } @@ -237324,15 +237835,15 @@ "binop": null, "updateContext": null }, - "start": 29295, - "end": 29297, + "start": 29345, + "end": 29347, "loc": { "start": { - "line": 796, + "line": 797, "column": 51 }, "end": { - "line": 796, + "line": 797, "column": 53 } } @@ -237349,15 +237860,15 @@ "postfix": false, "binop": null }, - "start": 29298, - "end": 29299, + "start": 29348, + "end": 29349, "loc": { "start": { - "line": 796, + "line": 797, "column": 54 }, "end": { - "line": 796, + "line": 797, "column": 55 } } @@ -237377,15 +237888,15 @@ "updateContext": null }, "value": "return", - "start": 29312, - "end": 29318, + "start": 29362, + "end": 29368, "loc": { "start": { - "line": 797, + "line": 798, "column": 12 }, "end": { - "line": 797, + "line": 798, "column": 18 } } @@ -237405,15 +237916,15 @@ "updateContext": null }, "value": "this", - "start": 29319, - "end": 29323, + "start": 29369, + "end": 29373, "loc": { "start": { - "line": 797, + "line": 798, "column": 19 }, "end": { - "line": 797, + "line": 798, "column": 23 } } @@ -237431,15 +237942,15 @@ "binop": null, "updateContext": null }, - "start": 29323, - "end": 29324, + "start": 29373, + "end": 29374, "loc": { "start": { - "line": 797, + "line": 798, "column": 23 }, "end": { - "line": 797, + "line": 798, "column": 24 } } @@ -237457,15 +237968,15 @@ "binop": null }, "value": "_createNodeElement", - "start": 29324, - "end": 29342, + "start": 29374, + "end": 29392, "loc": { "start": { - "line": 797, + "line": 798, "column": 24 }, "end": { - "line": 797, + "line": 798, "column": 42 } } @@ -237482,15 +237993,15 @@ "postfix": false, "binop": null }, - "start": 29342, - "end": 29343, + "start": 29392, + "end": 29393, "loc": { "start": { - "line": 797, + "line": 798, "column": 42 }, "end": { - "line": 797, + "line": 798, "column": 43 } } @@ -237508,15 +238019,15 @@ "binop": null }, "value": "node", - "start": 29343, - "end": 29347, + "start": 29393, + "end": 29397, "loc": { "start": { - "line": 797, + "line": 798, "column": 43 }, "end": { - "line": 797, + "line": 798, "column": 47 } } @@ -237533,15 +238044,15 @@ "postfix": false, "binop": null }, - "start": 29347, - "end": 29348, + "start": 29397, + "end": 29398, "loc": { "start": { - "line": 797, + "line": 798, "column": 47 }, "end": { - "line": 797, + "line": 798, "column": 48 } } @@ -237559,15 +238070,15 @@ "binop": null, "updateContext": null }, - "start": 29348, - "end": 29349, + "start": 29398, + "end": 29399, "loc": { "start": { - "line": 797, + "line": 798, "column": 48 }, "end": { - "line": 797, + "line": 798, "column": 49 } } @@ -237584,15 +238095,15 @@ "postfix": false, "binop": null }, - "start": 29358, - "end": 29359, + "start": 29408, + "end": 29409, "loc": { "start": { - "line": 798, + "line": 799, "column": 8 }, "end": { - "line": 798, + "line": 799, "column": 9 } } @@ -237609,15 +238120,15 @@ "postfix": false, "binop": null }, - "start": 29359, - "end": 29360, + "start": 29409, + "end": 29410, "loc": { "start": { - "line": 798, + "line": 799, "column": 9 }, "end": { - "line": 798, + "line": 799, "column": 10 } } @@ -237635,15 +238146,15 @@ "binop": null, "updateContext": null }, - "start": 29360, - "end": 29361, + "start": 29410, + "end": 29411, "loc": { "start": { - "line": 798, + "line": 799, "column": 10 }, "end": { - "line": 798, + "line": 799, "column": 11 } } @@ -237663,15 +238174,15 @@ "updateContext": null }, "value": "const", - "start": 29370, - "end": 29375, + "start": 29420, + "end": 29425, "loc": { "start": { - "line": 799, + "line": 800, "column": 8 }, "end": { - "line": 799, + "line": 800, "column": 13 } } @@ -237689,15 +238200,15 @@ "binop": null }, "value": "ul", - "start": 29376, - "end": 29378, + "start": 29426, + "end": 29428, "loc": { "start": { - "line": 799, + "line": 800, "column": 14 }, "end": { - "line": 799, + "line": 800, "column": 16 } } @@ -237716,15 +238227,15 @@ "updateContext": null }, "value": "=", - "start": 29379, - "end": 29380, + "start": 29429, + "end": 29430, "loc": { "start": { - "line": 799, + "line": 800, "column": 17 }, "end": { - "line": 799, + "line": 800, "column": 18 } } @@ -237742,15 +238253,15 @@ "binop": null }, "value": "document", - "start": 29381, - "end": 29389, + "start": 29431, + "end": 29439, "loc": { "start": { - "line": 799, + "line": 800, "column": 19 }, "end": { - "line": 799, + "line": 800, "column": 27 } } @@ -237768,15 +238279,15 @@ "binop": null, "updateContext": null }, - "start": 29389, - "end": 29390, + "start": 29439, + "end": 29440, "loc": { "start": { - "line": 799, + "line": 800, "column": 27 }, "end": { - "line": 799, + "line": 800, "column": 28 } } @@ -237794,15 +238305,15 @@ "binop": null }, "value": "createElement", - "start": 29390, - "end": 29403, + "start": 29440, + "end": 29453, "loc": { "start": { - "line": 799, + "line": 800, "column": 28 }, "end": { - "line": 799, + "line": 800, "column": 41 } } @@ -237819,15 +238330,15 @@ "postfix": false, "binop": null }, - "start": 29403, - "end": 29404, + "start": 29453, + "end": 29454, "loc": { "start": { - "line": 799, + "line": 800, "column": 41 }, "end": { - "line": 799, + "line": 800, "column": 42 } } @@ -237846,15 +238357,15 @@ "updateContext": null }, "value": "ul", - "start": 29404, - "end": 29408, + "start": 29454, + "end": 29458, "loc": { "start": { - "line": 799, + "line": 800, "column": 42 }, "end": { - "line": 799, + "line": 800, "column": 46 } } @@ -237871,15 +238382,15 @@ "postfix": false, "binop": null }, - "start": 29408, - "end": 29409, + "start": 29458, + "end": 29459, "loc": { "start": { - "line": 799, + "line": 800, "column": 46 }, "end": { - "line": 799, + "line": 800, "column": 47 } } @@ -237897,15 +238408,15 @@ "binop": null, "updateContext": null }, - "start": 29409, - "end": 29410, + "start": 29459, + "end": 29460, "loc": { "start": { - "line": 799, + "line": 800, "column": 47 }, "end": { - "line": 799, + "line": 800, "column": 48 } } @@ -237923,15 +238434,15 @@ "binop": null }, "value": "nodeElements", - "start": 29419, - "end": 29431, + "start": 29469, + "end": 29481, "loc": { "start": { - "line": 800, + "line": 801, "column": 8 }, "end": { - "line": 800, + "line": 801, "column": 20 } } @@ -237949,15 +238460,15 @@ "binop": null, "updateContext": null }, - "start": 29431, - "end": 29432, + "start": 29481, + "end": 29482, "loc": { "start": { - "line": 800, + "line": 801, "column": 20 }, "end": { - "line": 800, + "line": 801, "column": 21 } } @@ -237975,15 +238486,15 @@ "binop": null }, "value": "forEach", - "start": 29432, - "end": 29439, + "start": 29482, + "end": 29489, "loc": { "start": { - "line": 800, + "line": 801, "column": 21 }, "end": { - "line": 800, + "line": 801, "column": 28 } } @@ -238000,15 +238511,15 @@ "postfix": false, "binop": null }, - "start": 29439, - "end": 29440, + "start": 29489, + "end": 29490, "loc": { "start": { - "line": 800, + "line": 801, "column": 28 }, "end": { - "line": 800, + "line": 801, "column": 29 } } @@ -238025,15 +238536,15 @@ "postfix": false, "binop": null }, - "start": 29440, - "end": 29441, + "start": 29490, + "end": 29491, "loc": { "start": { - "line": 800, + "line": 801, "column": 29 }, "end": { - "line": 800, + "line": 801, "column": 30 } } @@ -238051,15 +238562,15 @@ "binop": null }, "value": "nodeElement", - "start": 29441, - "end": 29452, + "start": 29491, + "end": 29502, "loc": { "start": { - "line": 800, + "line": 801, "column": 30 }, "end": { - "line": 800, + "line": 801, "column": 41 } } @@ -238076,15 +238587,15 @@ "postfix": false, "binop": null }, - "start": 29452, - "end": 29453, + "start": 29502, + "end": 29503, "loc": { "start": { - "line": 800, + "line": 801, "column": 41 }, "end": { - "line": 800, + "line": 801, "column": 42 } } @@ -238102,15 +238613,15 @@ "binop": null, "updateContext": null }, - "start": 29454, - "end": 29456, + "start": 29504, + "end": 29506, "loc": { "start": { - "line": 800, + "line": 801, "column": 43 }, "end": { - "line": 800, + "line": 801, "column": 45 } } @@ -238127,15 +238638,15 @@ "postfix": false, "binop": null }, - "start": 29457, - "end": 29458, + "start": 29507, + "end": 29508, "loc": { "start": { - "line": 800, + "line": 801, "column": 46 }, "end": { - "line": 800, + "line": 801, "column": 47 } } @@ -238153,15 +238664,15 @@ "binop": null }, "value": "ul", - "start": 29471, - "end": 29473, + "start": 29521, + "end": 29523, "loc": { "start": { - "line": 801, + "line": 802, "column": 12 }, "end": { - "line": 801, + "line": 802, "column": 14 } } @@ -238179,15 +238690,15 @@ "binop": null, "updateContext": null }, - "start": 29473, - "end": 29474, + "start": 29523, + "end": 29524, "loc": { "start": { - "line": 801, + "line": 802, "column": 14 }, "end": { - "line": 801, + "line": 802, "column": 15 } } @@ -238205,15 +238716,15 @@ "binop": null }, "value": "appendChild", - "start": 29474, - "end": 29485, + "start": 29524, + "end": 29535, "loc": { "start": { - "line": 801, + "line": 802, "column": 15 }, "end": { - "line": 801, + "line": 802, "column": 26 } } @@ -238230,15 +238741,15 @@ "postfix": false, "binop": null }, - "start": 29485, - "end": 29486, + "start": 29535, + "end": 29536, "loc": { "start": { - "line": 801, + "line": 802, "column": 26 }, "end": { - "line": 801, + "line": 802, "column": 27 } } @@ -238256,15 +238767,15 @@ "binop": null }, "value": "nodeElement", - "start": 29486, - "end": 29497, + "start": 29536, + "end": 29547, "loc": { "start": { - "line": 801, + "line": 802, "column": 27 }, "end": { - "line": 801, + "line": 802, "column": 38 } } @@ -238281,15 +238792,15 @@ "postfix": false, "binop": null }, - "start": 29497, - "end": 29498, + "start": 29547, + "end": 29548, "loc": { "start": { - "line": 801, + "line": 802, "column": 38 }, "end": { - "line": 801, + "line": 802, "column": 39 } } @@ -238307,15 +238818,15 @@ "binop": null, "updateContext": null }, - "start": 29498, - "end": 29499, + "start": 29548, + "end": 29549, "loc": { "start": { - "line": 801, + "line": 802, "column": 39 }, "end": { - "line": 801, + "line": 802, "column": 40 } } @@ -238332,15 +238843,15 @@ "postfix": false, "binop": null }, - "start": 29508, - "end": 29509, + "start": 29558, + "end": 29559, "loc": { "start": { - "line": 802, + "line": 803, "column": 8 }, "end": { - "line": 802, + "line": 803, "column": 9 } } @@ -238357,15 +238868,15 @@ "postfix": false, "binop": null }, - "start": 29509, - "end": 29510, + "start": 29559, + "end": 29560, "loc": { "start": { - "line": 802, + "line": 803, "column": 9 }, "end": { - "line": 802, + "line": 803, "column": 10 } } @@ -238383,15 +238894,15 @@ "binop": null, "updateContext": null }, - "start": 29510, - "end": 29511, + "start": 29560, + "end": 29561, "loc": { "start": { - "line": 802, + "line": 803, "column": 10 }, "end": { - "line": 802, + "line": 803, "column": 11 } } @@ -238409,15 +238920,15 @@ "binop": null }, "value": "parentElement", - "start": 29520, - "end": 29533, + "start": 29570, + "end": 29583, "loc": { "start": { - "line": 803, + "line": 804, "column": 8 }, "end": { - "line": 803, + "line": 804, "column": 21 } } @@ -238435,15 +238946,15 @@ "binop": null, "updateContext": null }, - "start": 29533, - "end": 29534, + "start": 29583, + "end": 29584, "loc": { "start": { - "line": 803, + "line": 804, "column": 21 }, "end": { - "line": 803, + "line": 804, "column": 22 } } @@ -238461,15 +238972,15 @@ "binop": null }, "value": "appendChild", - "start": 29534, - "end": 29545, + "start": 29584, + "end": 29595, "loc": { "start": { - "line": 803, + "line": 804, "column": 22 }, "end": { - "line": 803, + "line": 804, "column": 33 } } @@ -238486,15 +238997,15 @@ "postfix": false, "binop": null }, - "start": 29545, - "end": 29546, + "start": 29595, + "end": 29596, "loc": { "start": { - "line": 803, + "line": 804, "column": 33 }, "end": { - "line": 803, + "line": 804, "column": 34 } } @@ -238512,15 +239023,15 @@ "binop": null }, "value": "ul", - "start": 29546, - "end": 29548, + "start": 29596, + "end": 29598, "loc": { "start": { - "line": 803, + "line": 804, "column": 34 }, "end": { - "line": 803, + "line": 804, "column": 36 } } @@ -238537,15 +239048,15 @@ "postfix": false, "binop": null }, - "start": 29548, - "end": 29549, + "start": 29598, + "end": 29599, "loc": { "start": { - "line": 803, + "line": 804, "column": 36 }, "end": { - "line": 803, + "line": 804, "column": 37 } } @@ -238563,15 +239074,15 @@ "binop": null, "updateContext": null }, - "start": 29549, - "end": 29550, + "start": 29599, + "end": 29600, "loc": { "start": { - "line": 803, + "line": 804, "column": 37 }, "end": { - "line": 803, + "line": 804, "column": 38 } } @@ -238589,15 +239100,15 @@ "binop": null }, "value": "switchElement", - "start": 29559, - "end": 29572, + "start": 29609, + "end": 29622, "loc": { "start": { - "line": 804, + "line": 805, "column": 8 }, "end": { - "line": 804, + "line": 805, "column": 21 } } @@ -238615,15 +239126,15 @@ "binop": null, "updateContext": null }, - "start": 29572, - "end": 29573, + "start": 29622, + "end": 29623, "loc": { "start": { - "line": 804, + "line": 805, "column": 21 }, "end": { - "line": 804, + "line": 805, "column": 22 } } @@ -238641,15 +239152,15 @@ "binop": null }, "value": "classList", - "start": 29573, - "end": 29582, + "start": 29623, + "end": 29632, "loc": { "start": { - "line": 804, + "line": 805, "column": 22 }, "end": { - "line": 804, + "line": 805, "column": 31 } } @@ -238667,15 +239178,15 @@ "binop": null, "updateContext": null }, - "start": 29582, - "end": 29583, + "start": 29632, + "end": 29633, "loc": { "start": { - "line": 804, + "line": 805, "column": 31 }, "end": { - "line": 804, + "line": 805, "column": 32 } } @@ -238693,15 +239204,15 @@ "binop": null }, "value": "remove", - "start": 29583, - "end": 29589, + "start": 29633, + "end": 29639, "loc": { "start": { - "line": 804, + "line": 805, "column": 32 }, "end": { - "line": 804, + "line": 805, "column": 38 } } @@ -238718,15 +239229,15 @@ "postfix": false, "binop": null }, - "start": 29589, - "end": 29590, + "start": 29639, + "end": 29640, "loc": { "start": { - "line": 804, + "line": 805, "column": 38 }, "end": { - "line": 804, + "line": 805, "column": 39 } } @@ -238745,15 +239256,15 @@ "updateContext": null }, "value": "plus", - "start": 29590, - "end": 29596, + "start": 29640, + "end": 29646, "loc": { "start": { - "line": 804, + "line": 805, "column": 39 }, "end": { - "line": 804, + "line": 805, "column": 45 } } @@ -238770,15 +239281,15 @@ "postfix": false, "binop": null }, - "start": 29596, - "end": 29597, + "start": 29646, + "end": 29647, "loc": { "start": { - "line": 804, + "line": 805, "column": 45 }, "end": { - "line": 804, + "line": 805, "column": 46 } } @@ -238796,15 +239307,15 @@ "binop": null, "updateContext": null }, - "start": 29597, - "end": 29598, + "start": 29647, + "end": 29648, "loc": { "start": { - "line": 804, + "line": 805, "column": 46 }, "end": { - "line": 804, + "line": 805, "column": 47 } } @@ -238822,15 +239333,15 @@ "binop": null }, "value": "switchElement", - "start": 29607, - "end": 29620, + "start": 29657, + "end": 29670, "loc": { "start": { - "line": 805, + "line": 806, "column": 8 }, "end": { - "line": 805, + "line": 806, "column": 21 } } @@ -238848,15 +239359,15 @@ "binop": null, "updateContext": null }, - "start": 29620, - "end": 29621, + "start": 29670, + "end": 29671, "loc": { "start": { - "line": 805, + "line": 806, "column": 21 }, "end": { - "line": 805, + "line": 806, "column": 22 } } @@ -238874,15 +239385,15 @@ "binop": null }, "value": "classList", - "start": 29621, - "end": 29630, + "start": 29671, + "end": 29680, "loc": { "start": { - "line": 805, + "line": 806, "column": 22 }, "end": { - "line": 805, + "line": 806, "column": 31 } } @@ -238900,15 +239411,15 @@ "binop": null, "updateContext": null }, - "start": 29630, - "end": 29631, + "start": 29680, + "end": 29681, "loc": { "start": { - "line": 805, + "line": 806, "column": 31 }, "end": { - "line": 805, + "line": 806, "column": 32 } } @@ -238926,15 +239437,15 @@ "binop": null }, "value": "add", - "start": 29631, - "end": 29634, + "start": 29681, + "end": 29684, "loc": { "start": { - "line": 805, + "line": 806, "column": 32 }, "end": { - "line": 805, + "line": 806, "column": 35 } } @@ -238951,15 +239462,15 @@ "postfix": false, "binop": null }, - "start": 29634, - "end": 29635, + "start": 29684, + "end": 29685, "loc": { "start": { - "line": 805, + "line": 806, "column": 35 }, "end": { - "line": 805, + "line": 806, "column": 36 } } @@ -238978,15 +239489,15 @@ "updateContext": null }, "value": "minus", - "start": 29635, - "end": 29642, + "start": 29685, + "end": 29692, "loc": { "start": { - "line": 805, + "line": 806, "column": 36 }, "end": { - "line": 805, + "line": 806, "column": 43 } } @@ -239003,174 +239514,16 @@ "postfix": false, "binop": null }, - "start": 29642, - "end": 29643, + "start": 29692, + "end": 29693, "loc": { "start": { - "line": 805, - "column": 43 - }, - "end": { - "line": 805, - "column": 44 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 29643, - "end": 29644, - "loc": { - "start": { - "line": 805, - "column": 44 - }, - "end": { - "line": 805, - "column": 45 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "switchElement", - "start": 29653, - "end": 29666, - "loc": { - "start": { - "line": 806, - "column": 8 - }, - "end": { "line": 806, - "column": 21 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 29666, - "end": 29667, - "loc": { - "start": { - "line": 806, - "column": 21 - }, - "end": { - "line": 806, - "column": 22 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "textContent", - "start": 29667, - "end": 29678, - "loc": { - "start": { - "line": 806, - "column": 22 - }, - "end": { - "line": 806, - "column": 33 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 29679, - "end": 29680, - "loc": { - "start": { - "line": 806, - "column": 34 - }, - "end": { - "line": 806, - "column": 35 - } - } - }, - { - "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "-", - "start": 29681, - "end": 29684, - "loc": { - "start": { - "line": 806, - "column": 36 + "column": 43 }, "end": { "line": 806, - "column": 39 + "column": 44 } } }, @@ -239187,16 +239540,16 @@ "binop": null, "updateContext": null }, - "start": 29684, - "end": 29685, + "start": 29693, + "end": 29694, "loc": { "start": { "line": 806, - "column": 39 + "column": 44 }, "end": { "line": 806, - "column": 40 + "column": 45 } } }, @@ -239213,8 +239566,8 @@ "binop": null }, "value": "switchElement", - "start": 29694, - "end": 29707, + "start": 29703, + "end": 29716, "loc": { "start": { "line": 807, @@ -239239,8 +239592,8 @@ "binop": null, "updateContext": null }, - "start": 29707, - "end": 29708, + "start": 29716, + "end": 29717, "loc": { "start": { "line": 807, @@ -239264,9 +239617,9 @@ "postfix": false, "binop": null }, - "value": "removeEventListener", - "start": 29708, - "end": 29727, + "value": "textContent", + "start": 29717, + "end": 29728, "loc": { "start": { "line": 807, @@ -239274,6 +239627,164 @@ }, "end": { "line": 807, + "column": 33 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 29729, + "end": 29730, + "loc": { + "start": { + "line": 807, + "column": 34 + }, + "end": { + "line": 807, + "column": 35 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "-", + "start": 29731, + "end": 29734, + "loc": { + "start": { + "line": 807, + "column": 36 + }, + "end": { + "line": 807, + "column": 39 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 29734, + "end": 29735, + "loc": { + "start": { + "line": 807, + "column": 39 + }, + "end": { + "line": 807, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "switchElement", + "start": 29744, + "end": 29757, + "loc": { + "start": { + "line": 808, + "column": 8 + }, + "end": { + "line": 808, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 29757, + "end": 29758, + "loc": { + "start": { + "line": 808, + "column": 21 + }, + "end": { + "line": 808, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "removeEventListener", + "start": 29758, + "end": 29777, + "loc": { + "start": { + "line": 808, + "column": 22 + }, + "end": { + "line": 808, "column": 41 } } @@ -239290,15 +239801,15 @@ "postfix": false, "binop": null }, - "start": 29727, - "end": 29728, + "start": 29777, + "end": 29778, "loc": { "start": { - "line": 807, + "line": 808, "column": 41 }, "end": { - "line": 807, + "line": 808, "column": 42 } } @@ -239317,15 +239828,15 @@ "updateContext": null }, "value": "click", - "start": 29728, - "end": 29735, + "start": 29778, + "end": 29785, "loc": { "start": { - "line": 807, + "line": 808, "column": 42 }, "end": { - "line": 807, + "line": 808, "column": 49 } } @@ -239343,15 +239854,15 @@ "binop": null, "updateContext": null }, - "start": 29735, - "end": 29736, + "start": 29785, + "end": 29786, "loc": { "start": { - "line": 807, + "line": 808, "column": 49 }, "end": { - "line": 807, + "line": 808, "column": 50 } } @@ -239371,15 +239882,15 @@ "updateContext": null }, "value": "this", - "start": 29737, - "end": 29741, + "start": 29787, + "end": 29791, "loc": { "start": { - "line": 807, + "line": 808, "column": 51 }, "end": { - "line": 807, + "line": 808, "column": 55 } } @@ -239397,15 +239908,15 @@ "binop": null, "updateContext": null }, - "start": 29741, - "end": 29742, + "start": 29791, + "end": 29792, "loc": { "start": { - "line": 807, + "line": 808, "column": 55 }, "end": { - "line": 807, + "line": 808, "column": 56 } } @@ -239423,15 +239934,15 @@ "binop": null }, "value": "switchExpandHandler", - "start": 29742, - "end": 29761, + "start": 29792, + "end": 29811, "loc": { "start": { - "line": 807, + "line": 808, "column": 56 }, "end": { - "line": 807, + "line": 808, "column": 75 } } @@ -239448,15 +239959,15 @@ "postfix": false, "binop": null }, - "start": 29761, - "end": 29762, + "start": 29811, + "end": 29812, "loc": { "start": { - "line": 807, + "line": 808, "column": 75 }, "end": { - "line": 807, + "line": 808, "column": 76 } } @@ -239474,15 +239985,15 @@ "binop": null, "updateContext": null }, - "start": 29762, - "end": 29763, + "start": 29812, + "end": 29813, "loc": { "start": { - "line": 807, + "line": 808, "column": 76 }, "end": { - "line": 807, + "line": 808, "column": 77 } } @@ -239500,15 +240011,15 @@ "binop": null }, "value": "switchElement", - "start": 29772, - "end": 29785, + "start": 29822, + "end": 29835, "loc": { "start": { - "line": 808, + "line": 809, "column": 8 }, "end": { - "line": 808, + "line": 809, "column": 21 } } @@ -239526,15 +240037,15 @@ "binop": null, "updateContext": null }, - "start": 29785, - "end": 29786, + "start": 29835, + "end": 29836, "loc": { "start": { - "line": 808, + "line": 809, "column": 21 }, "end": { - "line": 808, + "line": 809, "column": 22 } } @@ -239552,15 +240063,15 @@ "binop": null }, "value": "addEventListener", - "start": 29786, - "end": 29802, + "start": 29836, + "end": 29852, "loc": { "start": { - "line": 808, + "line": 809, "column": 22 }, "end": { - "line": 808, + "line": 809, "column": 38 } } @@ -239577,15 +240088,15 @@ "postfix": false, "binop": null }, - "start": 29802, - "end": 29803, + "start": 29852, + "end": 29853, "loc": { "start": { - "line": 808, + "line": 809, "column": 38 }, "end": { - "line": 808, + "line": 809, "column": 39 } } @@ -239604,15 +240115,15 @@ "updateContext": null }, "value": "click", - "start": 29803, - "end": 29810, + "start": 29853, + "end": 29860, "loc": { "start": { - "line": 808, + "line": 809, "column": 39 }, "end": { - "line": 808, + "line": 809, "column": 46 } } @@ -239630,15 +240141,15 @@ "binop": null, "updateContext": null }, - "start": 29810, - "end": 29811, + "start": 29860, + "end": 29861, "loc": { "start": { - "line": 808, + "line": 809, "column": 46 }, "end": { - "line": 808, + "line": 809, "column": 47 } } @@ -239658,15 +240169,15 @@ "updateContext": null }, "value": "this", - "start": 29812, - "end": 29816, + "start": 29862, + "end": 29866, "loc": { "start": { - "line": 808, + "line": 809, "column": 48 }, "end": { - "line": 808, + "line": 809, "column": 52 } } @@ -239684,15 +240195,15 @@ "binop": null, "updateContext": null }, - "start": 29816, - "end": 29817, + "start": 29866, + "end": 29867, "loc": { "start": { - "line": 808, + "line": 809, "column": 52 }, "end": { - "line": 808, + "line": 809, "column": 53 } } @@ -239710,15 +240221,15 @@ "binop": null }, "value": "switchCollapseHandler", - "start": 29817, - "end": 29838, + "start": 29867, + "end": 29888, "loc": { "start": { - "line": 808, + "line": 809, "column": 53 }, "end": { - "line": 808, + "line": 809, "column": 74 } } @@ -239735,15 +240246,15 @@ "postfix": false, "binop": null }, - "start": 29838, - "end": 29839, + "start": 29888, + "end": 29889, "loc": { "start": { - "line": 808, + "line": 809, "column": 74 }, "end": { - "line": 808, + "line": 809, "column": 75 } } @@ -239761,15 +240272,15 @@ "binop": null, "updateContext": null }, - "start": 29839, - "end": 29840, + "start": 29889, + "end": 29890, "loc": { "start": { - "line": 808, + "line": 809, "column": 75 }, "end": { - "line": 808, + "line": 809, "column": 76 } } @@ -239786,15 +240297,15 @@ "postfix": false, "binop": null }, - "start": 29845, - "end": 29846, + "start": 29895, + "end": 29896, "loc": { "start": { - "line": 809, + "line": 810, "column": 4 }, "end": { - "line": 809, + "line": 810, "column": 5 } } @@ -239812,15 +240323,15 @@ "binop": null }, "value": "_collapseNode", - "start": 29852, - "end": 29865, + "start": 29902, + "end": 29915, "loc": { "start": { - "line": 811, + "line": 812, "column": 4 }, "end": { - "line": 811, + "line": 812, "column": 17 } } @@ -239837,15 +240348,15 @@ "postfix": false, "binop": null }, - "start": 29865, - "end": 29866, + "start": 29915, + "end": 29916, "loc": { "start": { - "line": 811, + "line": 812, "column": 17 }, "end": { - "line": 811, + "line": 812, "column": 18 } } @@ -239863,15 +240374,15 @@ "binop": null }, "value": "objectId", - "start": 29866, - "end": 29874, + "start": 29916, + "end": 29924, "loc": { "start": { - "line": 811, + "line": 812, "column": 18 }, "end": { - "line": 811, + "line": 812, "column": 26 } } @@ -239888,15 +240399,15 @@ "postfix": false, "binop": null }, - "start": 29874, - "end": 29875, + "start": 29924, + "end": 29925, "loc": { "start": { - "line": 811, + "line": 812, "column": 26 }, "end": { - "line": 811, + "line": 812, "column": 27 } } @@ -239913,15 +240424,15 @@ "postfix": false, "binop": null }, - "start": 29876, - "end": 29877, + "start": 29926, + "end": 29927, "loc": { "start": { - "line": 811, + "line": 812, "column": 28 }, "end": { - "line": 811, + "line": 812, "column": 29 } } @@ -239941,15 +240452,15 @@ "updateContext": null }, "value": "const", - "start": 29886, - "end": 29891, + "start": 29936, + "end": 29941, "loc": { "start": { - "line": 812, + "line": 813, "column": 8 }, "end": { - "line": 812, + "line": 813, "column": 13 } } @@ -239967,15 +240478,15 @@ "binop": null }, "value": "nodeId", - "start": 29892, - "end": 29898, + "start": 29942, + "end": 29948, "loc": { "start": { - "line": 812, + "line": 813, "column": 14 }, "end": { - "line": 812, + "line": 813, "column": 20 } } @@ -239994,15 +240505,15 @@ "updateContext": null }, "value": "=", - "start": 29899, - "end": 29900, + "start": 29949, + "end": 29950, "loc": { "start": { - "line": 812, + "line": 813, "column": 21 }, "end": { - "line": 812, + "line": 813, "column": 22 } } @@ -240022,15 +240533,15 @@ "updateContext": null }, "value": "this", - "start": 29901, - "end": 29905, + "start": 29951, + "end": 29955, "loc": { "start": { - "line": 812, + "line": 813, "column": 23 }, "end": { - "line": 812, + "line": 813, "column": 27 } } @@ -240048,15 +240559,15 @@ "binop": null, "updateContext": null }, - "start": 29905, - "end": 29906, + "start": 29955, + "end": 29956, "loc": { "start": { - "line": 812, + "line": 813, "column": 27 }, "end": { - "line": 812, + "line": 813, "column": 28 } } @@ -240074,15 +240585,15 @@ "binop": null }, "value": "_objectToNodeID", - "start": 29906, - "end": 29921, + "start": 29956, + "end": 29971, "loc": { "start": { - "line": 812, + "line": 813, "column": 28 }, "end": { - "line": 812, + "line": 813, "column": 43 } } @@ -240099,15 +240610,15 @@ "postfix": false, "binop": null }, - "start": 29921, - "end": 29922, + "start": 29971, + "end": 29972, "loc": { "start": { - "line": 812, + "line": 813, "column": 43 }, "end": { - "line": 812, + "line": 813, "column": 44 } } @@ -240125,15 +240636,15 @@ "binop": null }, "value": "objectId", - "start": 29922, - "end": 29930, + "start": 29972, + "end": 29980, "loc": { "start": { - "line": 812, + "line": 813, "column": 44 }, "end": { - "line": 812, + "line": 813, "column": 52 } } @@ -240150,15 +240661,15 @@ "postfix": false, "binop": null }, - "start": 29930, - "end": 29931, + "start": 29980, + "end": 29981, "loc": { "start": { - "line": 812, + "line": 813, "column": 52 }, "end": { - "line": 812, + "line": 813, "column": 53 } } @@ -240176,15 +240687,15 @@ "binop": null, "updateContext": null }, - "start": 29931, - "end": 29932, + "start": 29981, + "end": 29982, "loc": { "start": { - "line": 812, + "line": 813, "column": 53 }, "end": { - "line": 812, + "line": 813, "column": 54 } } @@ -240204,15 +240715,15 @@ "updateContext": null }, "value": "const", - "start": 29941, - "end": 29946, + "start": 29991, + "end": 29996, "loc": { "start": { - "line": 813, + "line": 814, "column": 8 }, "end": { - "line": 813, + "line": 814, "column": 13 } } @@ -240230,15 +240741,15 @@ "binop": null }, "value": "switchElementId", - "start": 29947, - "end": 29962, + "start": 29997, + "end": 30012, "loc": { "start": { - "line": 813, + "line": 814, "column": 14 }, "end": { - "line": 813, + "line": 814, "column": 29 } } @@ -240257,15 +240768,15 @@ "updateContext": null }, "value": "=", - "start": 29963, - "end": 29964, + "start": 30013, + "end": 30014, "loc": { "start": { - "line": 813, + "line": 814, "column": 30 }, "end": { - "line": 813, + "line": 814, "column": 31 } } @@ -240284,15 +240795,15 @@ "updateContext": null }, "value": "switch-", - "start": 29965, - "end": 29974, + "start": 30015, + "end": 30024, "loc": { "start": { - "line": 813, + "line": 814, "column": 32 }, "end": { - "line": 813, + "line": 814, "column": 41 } } @@ -240311,15 +240822,15 @@ "updateContext": null }, "value": "+", - "start": 29975, - "end": 29976, + "start": 30025, + "end": 30026, "loc": { "start": { - "line": 813, + "line": 814, "column": 42 }, "end": { - "line": 813, + "line": 814, "column": 43 } } @@ -240337,15 +240848,15 @@ "binop": null }, "value": "nodeId", - "start": 29977, - "end": 29983, + "start": 30027, + "end": 30033, "loc": { "start": { - "line": 813, + "line": 814, "column": 44 }, "end": { - "line": 813, + "line": 814, "column": 50 } } @@ -240363,15 +240874,15 @@ "binop": null, "updateContext": null }, - "start": 29983, - "end": 29984, + "start": 30033, + "end": 30034, "loc": { "start": { - "line": 813, + "line": 814, "column": 50 }, "end": { - "line": 813, + "line": 814, "column": 51 } } @@ -240391,15 +240902,15 @@ "updateContext": null }, "value": "const", - "start": 29993, - "end": 29998, + "start": 30043, + "end": 30048, "loc": { "start": { - "line": 814, + "line": 815, "column": 8 }, "end": { - "line": 814, + "line": 815, "column": 13 } } @@ -240417,15 +240928,15 @@ "binop": null }, "value": "switchElement", - "start": 29999, - "end": 30012, + "start": 30049, + "end": 30062, "loc": { "start": { - "line": 814, + "line": 815, "column": 14 }, "end": { - "line": 814, + "line": 815, "column": 27 } } @@ -240444,15 +240955,15 @@ "updateContext": null }, "value": "=", - "start": 30013, - "end": 30014, + "start": 30063, + "end": 30064, "loc": { "start": { - "line": 814, + "line": 815, "column": 28 }, "end": { - "line": 814, + "line": 815, "column": 29 } } @@ -240470,15 +240981,15 @@ "binop": null }, "value": "document", - "start": 30015, - "end": 30023, + "start": 30065, + "end": 30073, "loc": { "start": { - "line": 814, + "line": 815, "column": 30 }, "end": { - "line": 814, + "line": 815, "column": 38 } } @@ -240496,15 +241007,15 @@ "binop": null, "updateContext": null }, - "start": 30023, - "end": 30024, + "start": 30073, + "end": 30074, "loc": { "start": { - "line": 814, + "line": 815, "column": 38 }, "end": { - "line": 814, + "line": 815, "column": 39 } } @@ -240522,15 +241033,15 @@ "binop": null }, "value": "getElementById", - "start": 30024, - "end": 30038, + "start": 30074, + "end": 30088, "loc": { "start": { - "line": 814, + "line": 815, "column": 39 }, "end": { - "line": 814, + "line": 815, "column": 53 } } @@ -240547,15 +241058,15 @@ "postfix": false, "binop": null }, - "start": 30038, - "end": 30039, + "start": 30088, + "end": 30089, "loc": { "start": { - "line": 814, + "line": 815, "column": 53 }, "end": { - "line": 814, + "line": 815, "column": 54 } } @@ -240573,15 +241084,15 @@ "binop": null }, "value": "switchElementId", - "start": 30039, - "end": 30054, + "start": 30089, + "end": 30104, "loc": { "start": { - "line": 814, + "line": 815, "column": 54 }, "end": { - "line": 814, + "line": 815, "column": 69 } } @@ -240598,15 +241109,15 @@ "postfix": false, "binop": null }, - "start": 30054, - "end": 30055, + "start": 30104, + "end": 30105, "loc": { "start": { - "line": 814, + "line": 815, "column": 69 }, "end": { - "line": 814, + "line": 815, "column": 70 } } @@ -240624,15 +241135,15 @@ "binop": null, "updateContext": null }, - "start": 30055, - "end": 30056, + "start": 30105, + "end": 30106, "loc": { "start": { - "line": 814, + "line": 815, "column": 70 }, "end": { - "line": 814, + "line": 815, "column": 71 } } @@ -240652,15 +241163,15 @@ "updateContext": null }, "value": "this", - "start": 30065, - "end": 30069, + "start": 30115, + "end": 30119, "loc": { "start": { - "line": 815, + "line": 816, "column": 8 }, "end": { - "line": 815, + "line": 816, "column": 12 } } @@ -240678,15 +241189,15 @@ "binop": null, "updateContext": null }, - "start": 30069, - "end": 30070, + "start": 30119, + "end": 30120, "loc": { "start": { - "line": 815, + "line": 816, "column": 12 }, "end": { - "line": 815, + "line": 816, "column": 13 } } @@ -240704,15 +241215,15 @@ "binop": null }, "value": "_collapseSwitchElement", - "start": 30070, - "end": 30092, + "start": 30120, + "end": 30142, "loc": { "start": { - "line": 815, + "line": 816, "column": 13 }, "end": { - "line": 815, + "line": 816, "column": 35 } } @@ -240729,15 +241240,15 @@ "postfix": false, "binop": null }, - "start": 30092, - "end": 30093, + "start": 30142, + "end": 30143, "loc": { "start": { - "line": 815, + "line": 816, "column": 35 }, "end": { - "line": 815, + "line": 816, "column": 36 } } @@ -240755,15 +241266,15 @@ "binop": null }, "value": "switchElement", - "start": 30093, - "end": 30106, + "start": 30143, + "end": 30156, "loc": { "start": { - "line": 815, + "line": 816, "column": 36 }, "end": { - "line": 815, + "line": 816, "column": 49 } } @@ -240780,15 +241291,15 @@ "postfix": false, "binop": null }, - "start": 30106, - "end": 30107, + "start": 30156, + "end": 30157, "loc": { "start": { - "line": 815, + "line": 816, "column": 49 }, "end": { - "line": 815, + "line": 816, "column": 50 } } @@ -240806,15 +241317,15 @@ "binop": null, "updateContext": null }, - "start": 30107, - "end": 30108, + "start": 30157, + "end": 30158, "loc": { "start": { - "line": 815, + "line": 816, "column": 50 }, "end": { - "line": 815, + "line": 816, "column": 51 } } @@ -240831,15 +241342,15 @@ "postfix": false, "binop": null }, - "start": 30113, - "end": 30114, + "start": 30163, + "end": 30164, "loc": { "start": { - "line": 816, + "line": 817, "column": 4 }, "end": { - "line": 816, + "line": 817, "column": 5 } } @@ -240857,15 +241368,15 @@ "binop": null }, "value": "_collapseSwitchElement", - "start": 30120, - "end": 30142, + "start": 30170, + "end": 30192, "loc": { "start": { - "line": 818, + "line": 819, "column": 4 }, "end": { - "line": 818, + "line": 819, "column": 26 } } @@ -240882,15 +241393,15 @@ "postfix": false, "binop": null }, - "start": 30142, - "end": 30143, + "start": 30192, + "end": 30193, "loc": { "start": { - "line": 818, + "line": 819, "column": 26 }, "end": { - "line": 818, + "line": 819, "column": 27 } } @@ -240908,15 +241419,15 @@ "binop": null }, "value": "switchElement", - "start": 30143, - "end": 30156, + "start": 30193, + "end": 30206, "loc": { "start": { - "line": 818, + "line": 819, "column": 27 }, "end": { - "line": 818, + "line": 819, "column": 40 } } @@ -240933,15 +241444,15 @@ "postfix": false, "binop": null }, - "start": 30156, - "end": 30157, + "start": 30206, + "end": 30207, "loc": { "start": { - "line": 818, + "line": 819, "column": 40 }, "end": { - "line": 818, + "line": 819, "column": 41 } } @@ -240958,15 +241469,15 @@ "postfix": false, "binop": null }, - "start": 30158, - "end": 30159, + "start": 30208, + "end": 30209, "loc": { "start": { - "line": 818, + "line": 819, "column": 42 }, "end": { - "line": 818, + "line": 819, "column": 43 } } @@ -240986,15 +241497,15 @@ "updateContext": null }, "value": "if", - "start": 30168, - "end": 30170, + "start": 30218, + "end": 30220, "loc": { "start": { - "line": 819, + "line": 820, "column": 8 }, "end": { - "line": 819, + "line": 820, "column": 10 } } @@ -241011,15 +241522,15 @@ "postfix": false, "binop": null }, - "start": 30171, - "end": 30172, + "start": 30221, + "end": 30222, "loc": { "start": { - "line": 819, + "line": 820, "column": 11 }, "end": { - "line": 819, + "line": 820, "column": 12 } } @@ -241038,15 +241549,15 @@ "updateContext": null }, "value": "!", - "start": 30172, - "end": 30173, + "start": 30222, + "end": 30223, "loc": { "start": { - "line": 819, + "line": 820, "column": 12 }, "end": { - "line": 819, + "line": 820, "column": 13 } } @@ -241064,15 +241575,15 @@ "binop": null }, "value": "switchElement", - "start": 30173, - "end": 30186, + "start": 30223, + "end": 30236, "loc": { "start": { - "line": 819, + "line": 820, "column": 13 }, "end": { - "line": 819, + "line": 820, "column": 26 } } @@ -241089,15 +241600,15 @@ "postfix": false, "binop": null }, - "start": 30186, - "end": 30187, + "start": 30236, + "end": 30237, "loc": { "start": { - "line": 819, + "line": 820, "column": 26 }, "end": { - "line": 819, + "line": 820, "column": 27 } } @@ -241114,15 +241625,15 @@ "postfix": false, "binop": null }, - "start": 30188, - "end": 30189, + "start": 30238, + "end": 30239, "loc": { "start": { - "line": 819, + "line": 820, "column": 28 }, "end": { - "line": 819, + "line": 820, "column": 29 } } @@ -241142,15 +241653,15 @@ "updateContext": null }, "value": "return", - "start": 30202, - "end": 30208, + "start": 30252, + "end": 30258, "loc": { "start": { - "line": 820, + "line": 821, "column": 12 }, "end": { - "line": 820, + "line": 821, "column": 18 } } @@ -241168,15 +241679,15 @@ "binop": null, "updateContext": null }, - "start": 30208, - "end": 30209, + "start": 30258, + "end": 30259, "loc": { "start": { - "line": 820, + "line": 821, "column": 18 }, "end": { - "line": 820, + "line": 821, "column": 19 } } @@ -241193,15 +241704,15 @@ "postfix": false, "binop": null }, - "start": 30218, - "end": 30219, + "start": 30268, + "end": 30269, "loc": { "start": { - "line": 821, + "line": 822, "column": 8 }, "end": { - "line": 821, + "line": 822, "column": 9 } } @@ -241221,15 +241732,15 @@ "updateContext": null }, "value": "const", - "start": 30228, - "end": 30233, + "start": 30278, + "end": 30283, "loc": { "start": { - "line": 822, + "line": 823, "column": 8 }, "end": { - "line": 822, + "line": 823, "column": 13 } } @@ -241247,15 +241758,15 @@ "binop": null }, "value": "parent", - "start": 30234, - "end": 30240, + "start": 30284, + "end": 30290, "loc": { "start": { - "line": 822, + "line": 823, "column": 14 }, "end": { - "line": 822, + "line": 823, "column": 20 } } @@ -241274,15 +241785,15 @@ "updateContext": null }, "value": "=", - "start": 30241, - "end": 30242, + "start": 30291, + "end": 30292, "loc": { "start": { - "line": 822, + "line": 823, "column": 21 }, "end": { - "line": 822, + "line": 823, "column": 22 } } @@ -241300,15 +241811,15 @@ "binop": null }, "value": "switchElement", - "start": 30243, - "end": 30256, + "start": 30293, + "end": 30306, "loc": { "start": { - "line": 822, + "line": 823, "column": 23 }, "end": { - "line": 822, + "line": 823, "column": 36 } } @@ -241326,15 +241837,15 @@ "binop": null, "updateContext": null }, - "start": 30256, - "end": 30257, + "start": 30306, + "end": 30307, "loc": { "start": { - "line": 822, + "line": 823, "column": 36 }, "end": { - "line": 822, + "line": 823, "column": 37 } } @@ -241352,15 +241863,15 @@ "binop": null }, "value": "parentElement", - "start": 30257, - "end": 30270, + "start": 30307, + "end": 30320, "loc": { "start": { - "line": 822, + "line": 823, "column": 37 }, "end": { - "line": 822, + "line": 823, "column": 50 } } @@ -241378,15 +241889,15 @@ "binop": null, "updateContext": null }, - "start": 30270, - "end": 30271, + "start": 30320, + "end": 30321, "loc": { "start": { - "line": 822, + "line": 823, "column": 50 }, "end": { - "line": 822, + "line": 823, "column": 51 } } @@ -241406,15 +241917,15 @@ "updateContext": null }, "value": "if", - "start": 30280, - "end": 30282, + "start": 30330, + "end": 30332, "loc": { "start": { - "line": 823, + "line": 824, "column": 8 }, "end": { - "line": 823, + "line": 824, "column": 10 } } @@ -241431,15 +241942,15 @@ "postfix": false, "binop": null }, - "start": 30283, - "end": 30284, + "start": 30333, + "end": 30334, "loc": { "start": { - "line": 823, + "line": 824, "column": 11 }, "end": { - "line": 823, + "line": 824, "column": 12 } } @@ -241458,15 +241969,15 @@ "updateContext": null }, "value": "!", - "start": 30284, - "end": 30285, + "start": 30334, + "end": 30335, "loc": { "start": { - "line": 823, + "line": 824, "column": 12 }, "end": { - "line": 823, + "line": 824, "column": 13 } } @@ -241484,15 +241995,15 @@ "binop": null }, "value": "parent", - "start": 30285, - "end": 30291, + "start": 30335, + "end": 30341, "loc": { "start": { - "line": 823, + "line": 824, "column": 13 }, "end": { - "line": 823, + "line": 824, "column": 19 } } @@ -241509,15 +242020,15 @@ "postfix": false, "binop": null }, - "start": 30291, - "end": 30292, + "start": 30341, + "end": 30342, "loc": { "start": { - "line": 823, + "line": 824, "column": 19 }, "end": { - "line": 823, + "line": 824, "column": 20 } } @@ -241534,15 +242045,15 @@ "postfix": false, "binop": null }, - "start": 30293, - "end": 30294, + "start": 30343, + "end": 30344, "loc": { "start": { - "line": 823, + "line": 824, "column": 21 }, "end": { - "line": 823, + "line": 824, "column": 22 } } @@ -241562,15 +242073,15 @@ "updateContext": null }, "value": "return", - "start": 30307, - "end": 30313, + "start": 30357, + "end": 30363, "loc": { "start": { - "line": 824, + "line": 825, "column": 12 }, "end": { - "line": 824, + "line": 825, "column": 18 } } @@ -241588,15 +242099,15 @@ "binop": null, "updateContext": null }, - "start": 30313, - "end": 30314, + "start": 30363, + "end": 30364, "loc": { "start": { - "line": 824, + "line": 825, "column": 18 }, "end": { - "line": 824, + "line": 825, "column": 19 } } @@ -241613,15 +242124,15 @@ "postfix": false, "binop": null }, - "start": 30323, - "end": 30324, + "start": 30373, + "end": 30374, "loc": { "start": { - "line": 825, + "line": 826, "column": 8 }, "end": { - "line": 825, + "line": 826, "column": 9 } } @@ -241641,15 +242152,15 @@ "updateContext": null }, "value": "const", - "start": 30333, - "end": 30338, + "start": 30383, + "end": 30388, "loc": { "start": { - "line": 826, + "line": 827, "column": 8 }, "end": { - "line": 826, + "line": 827, "column": 13 } } @@ -241667,15 +242178,15 @@ "binop": null }, "value": "ul", - "start": 30339, - "end": 30341, + "start": 30389, + "end": 30391, "loc": { "start": { - "line": 826, + "line": 827, "column": 14 }, "end": { - "line": 826, + "line": 827, "column": 16 } } @@ -241694,15 +242205,15 @@ "updateContext": null }, "value": "=", - "start": 30342, - "end": 30343, + "start": 30392, + "end": 30393, "loc": { "start": { - "line": 826, + "line": 827, "column": 17 }, "end": { - "line": 826, + "line": 827, "column": 18 } } @@ -241720,15 +242231,15 @@ "binop": null }, "value": "parent", - "start": 30344, - "end": 30350, + "start": 30394, + "end": 30400, "loc": { "start": { - "line": 826, + "line": 827, "column": 19 }, "end": { - "line": 826, + "line": 827, "column": 25 } } @@ -241746,15 +242257,15 @@ "binop": null, "updateContext": null }, - "start": 30350, - "end": 30351, + "start": 30400, + "end": 30401, "loc": { "start": { - "line": 826, + "line": 827, "column": 25 }, "end": { - "line": 826, + "line": 827, "column": 26 } } @@ -241772,15 +242283,15 @@ "binop": null }, "value": "querySelector", - "start": 30351, - "end": 30364, + "start": 30401, + "end": 30414, "loc": { "start": { - "line": 826, + "line": 827, "column": 26 }, "end": { - "line": 826, + "line": 827, "column": 39 } } @@ -241797,15 +242308,15 @@ "postfix": false, "binop": null }, - "start": 30364, - "end": 30365, + "start": 30414, + "end": 30415, "loc": { "start": { - "line": 826, + "line": 827, "column": 39 }, "end": { - "line": 826, + "line": 827, "column": 40 } } @@ -241824,15 +242335,15 @@ "updateContext": null }, "value": "ul", - "start": 30365, - "end": 30369, + "start": 30415, + "end": 30419, "loc": { "start": { - "line": 826, + "line": 827, "column": 40 }, "end": { - "line": 826, + "line": 827, "column": 44 } } @@ -241849,15 +242360,15 @@ "postfix": false, "binop": null }, - "start": 30369, - "end": 30370, + "start": 30419, + "end": 30420, "loc": { "start": { - "line": 826, + "line": 827, "column": 44 }, "end": { - "line": 826, + "line": 827, "column": 45 } } @@ -241875,15 +242386,15 @@ "binop": null, "updateContext": null }, - "start": 30370, - "end": 30371, + "start": 30420, + "end": 30421, "loc": { "start": { - "line": 826, + "line": 827, "column": 45 }, "end": { - "line": 826, + "line": 827, "column": 46 } } @@ -241903,15 +242414,15 @@ "updateContext": null }, "value": "if", - "start": 30380, - "end": 30382, + "start": 30430, + "end": 30432, "loc": { "start": { - "line": 827, + "line": 828, "column": 8 }, "end": { - "line": 827, + "line": 828, "column": 10 } } @@ -241928,15 +242439,15 @@ "postfix": false, "binop": null }, - "start": 30383, - "end": 30384, + "start": 30433, + "end": 30434, "loc": { "start": { - "line": 827, + "line": 828, "column": 11 }, "end": { - "line": 827, + "line": 828, "column": 12 } } @@ -241955,15 +242466,15 @@ "updateContext": null }, "value": "!", - "start": 30384, - "end": 30385, + "start": 30434, + "end": 30435, "loc": { "start": { - "line": 827, + "line": 828, "column": 12 }, "end": { - "line": 827, + "line": 828, "column": 13 } } @@ -241981,15 +242492,15 @@ "binop": null }, "value": "ul", - "start": 30385, - "end": 30387, + "start": 30435, + "end": 30437, "loc": { "start": { - "line": 827, + "line": 828, "column": 13 }, "end": { - "line": 827, + "line": 828, "column": 15 } } @@ -242006,15 +242517,15 @@ "postfix": false, "binop": null }, - "start": 30387, - "end": 30388, + "start": 30437, + "end": 30438, "loc": { "start": { - "line": 827, + "line": 828, "column": 15 }, "end": { - "line": 827, + "line": 828, "column": 16 } } @@ -242031,15 +242542,15 @@ "postfix": false, "binop": null }, - "start": 30389, - "end": 30390, + "start": 30439, + "end": 30440, "loc": { "start": { - "line": 827, + "line": 828, "column": 17 }, "end": { - "line": 827, + "line": 828, "column": 18 } } @@ -242059,15 +242570,15 @@ "updateContext": null }, "value": "return", - "start": 30403, - "end": 30409, + "start": 30453, + "end": 30459, "loc": { "start": { - "line": 828, + "line": 829, "column": 12 }, "end": { - "line": 828, + "line": 829, "column": 18 } } @@ -242085,15 +242596,15 @@ "binop": null, "updateContext": null }, - "start": 30409, - "end": 30410, + "start": 30459, + "end": 30460, "loc": { "start": { - "line": 828, + "line": 829, "column": 18 }, "end": { - "line": 828, + "line": 829, "column": 19 } } @@ -242110,15 +242621,15 @@ "postfix": false, "binop": null }, - "start": 30419, - "end": 30420, + "start": 30469, + "end": 30470, "loc": { "start": { - "line": 829, + "line": 830, "column": 8 }, "end": { - "line": 829, + "line": 830, "column": 9 } } @@ -242136,15 +242647,15 @@ "binop": null }, "value": "parent", - "start": 30429, - "end": 30435, + "start": 30479, + "end": 30485, "loc": { "start": { - "line": 830, + "line": 831, "column": 8 }, "end": { - "line": 830, + "line": 831, "column": 14 } } @@ -242162,15 +242673,15 @@ "binop": null, "updateContext": null }, - "start": 30435, - "end": 30436, + "start": 30485, + "end": 30486, "loc": { "start": { - "line": 830, + "line": 831, "column": 14 }, "end": { - "line": 830, + "line": 831, "column": 15 } } @@ -242188,15 +242699,15 @@ "binop": null }, "value": "removeChild", - "start": 30436, - "end": 30447, + "start": 30486, + "end": 30497, "loc": { "start": { - "line": 830, + "line": 831, "column": 15 }, "end": { - "line": 830, + "line": 831, "column": 26 } } @@ -242213,15 +242724,15 @@ "postfix": false, "binop": null }, - "start": 30447, - "end": 30448, + "start": 30497, + "end": 30498, "loc": { "start": { - "line": 830, + "line": 831, "column": 26 }, "end": { - "line": 830, + "line": 831, "column": 27 } } @@ -242239,15 +242750,15 @@ "binop": null }, "value": "ul", - "start": 30448, - "end": 30450, + "start": 30498, + "end": 30500, "loc": { "start": { - "line": 830, + "line": 831, "column": 27 }, "end": { - "line": 830, + "line": 831, "column": 29 } } @@ -242264,15 +242775,15 @@ "postfix": false, "binop": null }, - "start": 30450, - "end": 30451, + "start": 30500, + "end": 30501, "loc": { "start": { - "line": 830, + "line": 831, "column": 29 }, "end": { - "line": 830, + "line": 831, "column": 30 } } @@ -242290,15 +242801,15 @@ "binop": null, "updateContext": null }, - "start": 30451, - "end": 30452, + "start": 30501, + "end": 30502, "loc": { "start": { - "line": 830, + "line": 831, "column": 30 }, "end": { - "line": 830, + "line": 831, "column": 31 } } @@ -242316,15 +242827,15 @@ "binop": null }, "value": "switchElement", - "start": 30461, - "end": 30474, + "start": 30511, + "end": 30524, "loc": { "start": { - "line": 831, + "line": 832, "column": 8 }, "end": { - "line": 831, + "line": 832, "column": 21 } } @@ -242342,15 +242853,15 @@ "binop": null, "updateContext": null }, - "start": 30474, - "end": 30475, + "start": 30524, + "end": 30525, "loc": { "start": { - "line": 831, + "line": 832, "column": 21 }, "end": { - "line": 831, + "line": 832, "column": 22 } } @@ -242368,15 +242879,15 @@ "binop": null }, "value": "classList", - "start": 30475, - "end": 30484, + "start": 30525, + "end": 30534, "loc": { "start": { - "line": 831, + "line": 832, "column": 22 }, "end": { - "line": 831, + "line": 832, "column": 31 } } @@ -242394,15 +242905,15 @@ "binop": null, "updateContext": null }, - "start": 30484, - "end": 30485, + "start": 30534, + "end": 30535, "loc": { "start": { - "line": 831, + "line": 832, "column": 31 }, "end": { - "line": 831, + "line": 832, "column": 32 } } @@ -242420,15 +242931,15 @@ "binop": null }, "value": "remove", - "start": 30485, - "end": 30491, + "start": 30535, + "end": 30541, "loc": { "start": { - "line": 831, + "line": 832, "column": 32 }, "end": { - "line": 831, + "line": 832, "column": 38 } } @@ -242445,15 +242956,15 @@ "postfix": false, "binop": null }, - "start": 30491, - "end": 30492, + "start": 30541, + "end": 30542, "loc": { "start": { - "line": 831, + "line": 832, "column": 38 }, "end": { - "line": 831, + "line": 832, "column": 39 } } @@ -242472,15 +242983,15 @@ "updateContext": null }, "value": "minus", - "start": 30492, - "end": 30499, + "start": 30542, + "end": 30549, "loc": { "start": { - "line": 831, + "line": 832, "column": 39 }, "end": { - "line": 831, + "line": 832, "column": 46 } } @@ -242497,15 +243008,15 @@ "postfix": false, "binop": null }, - "start": 30499, - "end": 30500, + "start": 30549, + "end": 30550, "loc": { "start": { - "line": 831, + "line": 832, "column": 46 }, "end": { - "line": 831, + "line": 832, "column": 47 } } @@ -242523,15 +243034,15 @@ "binop": null, "updateContext": null }, - "start": 30500, - "end": 30501, + "start": 30550, + "end": 30551, "loc": { "start": { - "line": 831, + "line": 832, "column": 47 }, "end": { - "line": 831, + "line": 832, "column": 48 } } @@ -242549,15 +243060,15 @@ "binop": null }, "value": "switchElement", - "start": 30510, - "end": 30523, + "start": 30560, + "end": 30573, "loc": { "start": { - "line": 832, + "line": 833, "column": 8 }, "end": { - "line": 832, + "line": 833, "column": 21 } } @@ -242575,15 +243086,15 @@ "binop": null, "updateContext": null }, - "start": 30523, - "end": 30524, + "start": 30573, + "end": 30574, "loc": { "start": { - "line": 832, + "line": 833, "column": 21 }, "end": { - "line": 832, + "line": 833, "column": 22 } } @@ -242601,15 +243112,15 @@ "binop": null }, "value": "classList", - "start": 30524, - "end": 30533, + "start": 30574, + "end": 30583, "loc": { "start": { - "line": 832, + "line": 833, "column": 22 }, "end": { - "line": 832, + "line": 833, "column": 31 } } @@ -242627,15 +243138,15 @@ "binop": null, "updateContext": null }, - "start": 30533, - "end": 30534, + "start": 30583, + "end": 30584, "loc": { "start": { - "line": 832, + "line": 833, "column": 31 }, "end": { - "line": 832, + "line": 833, "column": 32 } } @@ -242653,15 +243164,15 @@ "binop": null }, "value": "add", - "start": 30534, - "end": 30537, + "start": 30584, + "end": 30587, "loc": { "start": { - "line": 832, + "line": 833, "column": 32 }, "end": { - "line": 832, + "line": 833, "column": 35 } } @@ -242678,15 +243189,15 @@ "postfix": false, "binop": null }, - "start": 30537, - "end": 30538, + "start": 30587, + "end": 30588, "loc": { "start": { - "line": 832, + "line": 833, "column": 35 }, "end": { - "line": 832, + "line": 833, "column": 36 } } @@ -242705,15 +243216,15 @@ "updateContext": null }, "value": "plus", - "start": 30538, - "end": 30544, + "start": 30588, + "end": 30594, "loc": { "start": { - "line": 832, + "line": 833, "column": 36 }, "end": { - "line": 832, + "line": 833, "column": 42 } } @@ -242730,174 +243241,16 @@ "postfix": false, "binop": null }, - "start": 30544, - "end": 30545, - "loc": { - "start": { - "line": 832, - "column": 42 - }, - "end": { - "line": 832, - "column": 43 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 30545, - "end": 30546, - "loc": { - "start": { - "line": 832, - "column": 43 - }, - "end": { - "line": 832, - "column": 44 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "switchElement", - "start": 30555, - "end": 30568, - "loc": { - "start": { - "line": 833, - "column": 8 - }, - "end": { - "line": 833, - "column": 21 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 30568, - "end": 30569, - "loc": { - "start": { - "line": 833, - "column": 21 - }, - "end": { - "line": 833, - "column": 22 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "textContent", - "start": 30569, - "end": 30580, - "loc": { - "start": { - "line": 833, - "column": 22 - }, - "end": { - "line": 833, - "column": 33 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 30581, - "end": 30582, + "start": 30594, + "end": 30595, "loc": { "start": { "line": 833, - "column": 34 - }, - "end": { - "line": 833, - "column": 35 - } - } - }, - { - "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "+", - "start": 30583, - "end": 30586, - "loc": { - "start": { - "line": 833, - "column": 36 + "column": 42 }, "end": { "line": 833, - "column": 39 + "column": 43 } } }, @@ -242914,16 +243267,16 @@ "binop": null, "updateContext": null }, - "start": 30586, - "end": 30587, + "start": 30595, + "end": 30596, "loc": { "start": { "line": 833, - "column": 39 + "column": 43 }, "end": { "line": 833, - "column": 40 + "column": 44 } } }, @@ -242940,8 +243293,8 @@ "binop": null }, "value": "switchElement", - "start": 30596, - "end": 30609, + "start": 30605, + "end": 30618, "loc": { "start": { "line": 834, @@ -242966,8 +243319,8 @@ "binop": null, "updateContext": null }, - "start": 30609, - "end": 30610, + "start": 30618, + "end": 30619, "loc": { "start": { "line": 834, @@ -242991,9 +243344,9 @@ "postfix": false, "binop": null }, - "value": "removeEventListener", - "start": 30610, - "end": 30629, + "value": "textContent", + "start": 30619, + "end": 30630, "loc": { "start": { "line": 834, @@ -243001,6 +243354,164 @@ }, "end": { "line": 834, + "column": 33 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 30631, + "end": 30632, + "loc": { + "start": { + "line": 834, + "column": 34 + }, + "end": { + "line": 834, + "column": 35 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "+", + "start": 30633, + "end": 30636, + "loc": { + "start": { + "line": 834, + "column": 36 + }, + "end": { + "line": 834, + "column": 39 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 30636, + "end": 30637, + "loc": { + "start": { + "line": 834, + "column": 39 + }, + "end": { + "line": 834, + "column": 40 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "switchElement", + "start": 30646, + "end": 30659, + "loc": { + "start": { + "line": 835, + "column": 8 + }, + "end": { + "line": 835, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 30659, + "end": 30660, + "loc": { + "start": { + "line": 835, + "column": 21 + }, + "end": { + "line": 835, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "removeEventListener", + "start": 30660, + "end": 30679, + "loc": { + "start": { + "line": 835, + "column": 22 + }, + "end": { + "line": 835, "column": 41 } } @@ -243017,15 +243528,15 @@ "postfix": false, "binop": null }, - "start": 30629, - "end": 30630, + "start": 30679, + "end": 30680, "loc": { "start": { - "line": 834, + "line": 835, "column": 41 }, "end": { - "line": 834, + "line": 835, "column": 42 } } @@ -243044,15 +243555,15 @@ "updateContext": null }, "value": "click", - "start": 30630, - "end": 30637, + "start": 30680, + "end": 30687, "loc": { "start": { - "line": 834, + "line": 835, "column": 42 }, "end": { - "line": 834, + "line": 835, "column": 49 } } @@ -243070,15 +243581,15 @@ "binop": null, "updateContext": null }, - "start": 30637, - "end": 30638, + "start": 30687, + "end": 30688, "loc": { "start": { - "line": 834, + "line": 835, "column": 49 }, "end": { - "line": 834, + "line": 835, "column": 50 } } @@ -243098,15 +243609,15 @@ "updateContext": null }, "value": "this", - "start": 30639, - "end": 30643, + "start": 30689, + "end": 30693, "loc": { "start": { - "line": 834, + "line": 835, "column": 51 }, "end": { - "line": 834, + "line": 835, "column": 55 } } @@ -243124,15 +243635,15 @@ "binop": null, "updateContext": null }, - "start": 30643, - "end": 30644, + "start": 30693, + "end": 30694, "loc": { "start": { - "line": 834, + "line": 835, "column": 55 }, "end": { - "line": 834, + "line": 835, "column": 56 } } @@ -243150,15 +243661,15 @@ "binop": null }, "value": "switchCollapseHandler", - "start": 30644, - "end": 30665, + "start": 30694, + "end": 30715, "loc": { "start": { - "line": 834, + "line": 835, "column": 56 }, "end": { - "line": 834, + "line": 835, "column": 77 } } @@ -243175,15 +243686,15 @@ "postfix": false, "binop": null }, - "start": 30665, - "end": 30666, + "start": 30715, + "end": 30716, "loc": { "start": { - "line": 834, + "line": 835, "column": 77 }, "end": { - "line": 834, + "line": 835, "column": 78 } } @@ -243201,15 +243712,15 @@ "binop": null, "updateContext": null }, - "start": 30666, - "end": 30667, + "start": 30716, + "end": 30717, "loc": { "start": { - "line": 834, + "line": 835, "column": 78 }, "end": { - "line": 834, + "line": 835, "column": 79 } } @@ -243227,15 +243738,15 @@ "binop": null }, "value": "switchElement", - "start": 30676, - "end": 30689, + "start": 30726, + "end": 30739, "loc": { "start": { - "line": 835, + "line": 836, "column": 8 }, "end": { - "line": 835, + "line": 836, "column": 21 } } @@ -243253,15 +243764,15 @@ "binop": null, "updateContext": null }, - "start": 30689, - "end": 30690, + "start": 30739, + "end": 30740, "loc": { "start": { - "line": 835, + "line": 836, "column": 21 }, "end": { - "line": 835, + "line": 836, "column": 22 } } @@ -243279,15 +243790,15 @@ "binop": null }, "value": "addEventListener", - "start": 30690, - "end": 30706, + "start": 30740, + "end": 30756, "loc": { "start": { - "line": 835, + "line": 836, "column": 22 }, "end": { - "line": 835, + "line": 836, "column": 38 } } @@ -243304,15 +243815,15 @@ "postfix": false, "binop": null }, - "start": 30706, - "end": 30707, + "start": 30756, + "end": 30757, "loc": { "start": { - "line": 835, + "line": 836, "column": 38 }, "end": { - "line": 835, + "line": 836, "column": 39 } } @@ -243331,15 +243842,15 @@ "updateContext": null }, "value": "click", - "start": 30707, - "end": 30714, + "start": 30757, + "end": 30764, "loc": { "start": { - "line": 835, + "line": 836, "column": 39 }, "end": { - "line": 835, + "line": 836, "column": 46 } } @@ -243357,15 +243868,15 @@ "binop": null, "updateContext": null }, - "start": 30714, - "end": 30715, + "start": 30764, + "end": 30765, "loc": { "start": { - "line": 835, + "line": 836, "column": 46 }, "end": { - "line": 835, + "line": 836, "column": 47 } } @@ -243385,15 +243896,15 @@ "updateContext": null }, "value": "this", - "start": 30716, - "end": 30720, + "start": 30766, + "end": 30770, "loc": { "start": { - "line": 835, + "line": 836, "column": 48 }, "end": { - "line": 835, + "line": 836, "column": 52 } } @@ -243411,15 +243922,15 @@ "binop": null, "updateContext": null }, - "start": 30720, - "end": 30721, + "start": 30770, + "end": 30771, "loc": { "start": { - "line": 835, + "line": 836, "column": 52 }, "end": { - "line": 835, + "line": 836, "column": 53 } } @@ -243437,15 +243948,15 @@ "binop": null }, "value": "switchExpandHandler", - "start": 30721, - "end": 30740, + "start": 30771, + "end": 30790, "loc": { "start": { - "line": 835, + "line": 836, "column": 53 }, "end": { - "line": 835, + "line": 836, "column": 72 } } @@ -243462,15 +243973,15 @@ "postfix": false, "binop": null }, - "start": 30740, - "end": 30741, + "start": 30790, + "end": 30791, "loc": { "start": { - "line": 835, + "line": 836, "column": 72 }, "end": { - "line": 835, + "line": 836, "column": 73 } } @@ -243488,15 +243999,15 @@ "binop": null, "updateContext": null }, - "start": 30741, - "end": 30742, + "start": 30791, + "end": 30792, "loc": { "start": { - "line": 835, + "line": 836, "column": 73 }, "end": { - "line": 835, + "line": 836, "column": 74 } } @@ -243513,15 +244024,15 @@ "postfix": false, "binop": null }, - "start": 30747, - "end": 30748, + "start": 30797, + "end": 30798, "loc": { "start": { - "line": 836, + "line": 837, "column": 4 }, "end": { - "line": 836, + "line": 837, "column": 5 } } @@ -243529,15 +244040,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this ModelTreeView.\n * @private\n ", - "start": 30754, - "end": 30817, + "start": 30804, + "end": 30867, "loc": { "start": { - "line": 838, + "line": 839, "column": 4 }, "end": { - "line": 841, + "line": 842, "column": 7 } } @@ -243555,15 +244066,15 @@ "binop": null }, "value": "destroy", - "start": 30822, - "end": 30829, + "start": 30872, + "end": 30879, "loc": { "start": { - "line": 842, + "line": 843, "column": 4 }, "end": { - "line": 842, + "line": 843, "column": 11 } } @@ -243580,15 +244091,15 @@ "postfix": false, "binop": null }, - "start": 30829, - "end": 30830, + "start": 30879, + "end": 30880, "loc": { "start": { - "line": 842, + "line": 843, "column": 11 }, "end": { - "line": 842, + "line": 843, "column": 12 } } @@ -243605,15 +244116,15 @@ "postfix": false, "binop": null }, - "start": 30830, - "end": 30831, + "start": 30880, + "end": 30881, "loc": { "start": { - "line": 842, + "line": 843, "column": 12 }, "end": { - "line": 842, + "line": 843, "column": 13 } } @@ -243630,15 +244141,15 @@ "postfix": false, "binop": null }, - "start": 30832, - "end": 30833, + "start": 30882, + "end": 30883, "loc": { "start": { - "line": 842, + "line": 843, "column": 14 }, "end": { - "line": 842, + "line": 843, "column": 15 } } @@ -243658,15 +244169,15 @@ "updateContext": null }, "value": "if", - "start": 30842, - "end": 30844, + "start": 30892, + "end": 30894, "loc": { "start": { - "line": 843, + "line": 844, "column": 8 }, "end": { - "line": 843, + "line": 844, "column": 10 } } @@ -243683,15 +244194,15 @@ "postfix": false, "binop": null }, - "start": 30845, - "end": 30846, + "start": 30895, + "end": 30896, "loc": { "start": { - "line": 843, + "line": 844, "column": 11 }, "end": { - "line": 843, + "line": 844, "column": 12 } } @@ -243711,15 +244222,15 @@ "updateContext": null }, "value": "this", - "start": 30846, - "end": 30850, + "start": 30896, + "end": 30900, "loc": { "start": { - "line": 843, + "line": 844, "column": 12 }, "end": { - "line": 843, + "line": 844, "column": 16 } } @@ -243737,15 +244248,15 @@ "binop": null, "updateContext": null }, - "start": 30850, - "end": 30851, + "start": 30900, + "end": 30901, "loc": { "start": { - "line": 843, + "line": 844, "column": 16 }, "end": { - "line": 843, + "line": 844, "column": 17 } } @@ -243763,15 +244274,15 @@ "binop": null }, "value": "_rootElement", - "start": 30851, - "end": 30863, + "start": 30901, + "end": 30913, "loc": { "start": { - "line": 843, + "line": 844, "column": 17 }, "end": { - "line": 843, + "line": 844, "column": 29 } } @@ -243790,15 +244301,15 @@ "updateContext": null }, "value": "&&", - "start": 30864, - "end": 30866, + "start": 30914, + "end": 30916, "loc": { "start": { - "line": 843, + "line": 844, "column": 30 }, "end": { - "line": 843, + "line": 844, "column": 32 } } @@ -243817,15 +244328,15 @@ "updateContext": null }, "value": "!", - "start": 30867, - "end": 30868, + "start": 30917, + "end": 30918, "loc": { "start": { - "line": 843, + "line": 844, "column": 33 }, "end": { - "line": 843, + "line": 844, "column": 34 } } @@ -243845,15 +244356,15 @@ "updateContext": null }, "value": "this", - "start": 30868, - "end": 30872, + "start": 30918, + "end": 30922, "loc": { "start": { - "line": 843, + "line": 844, "column": 34 }, "end": { - "line": 843, + "line": 844, "column": 38 } } @@ -243871,15 +244382,15 @@ "binop": null, "updateContext": null }, - "start": 30872, - "end": 30873, + "start": 30922, + "end": 30923, "loc": { "start": { - "line": 843, + "line": 844, "column": 38 }, "end": { - "line": 843, + "line": 844, "column": 39 } } @@ -243897,15 +244408,15 @@ "binop": null }, "value": "_destroyed", - "start": 30873, - "end": 30883, + "start": 30923, + "end": 30933, "loc": { "start": { - "line": 843, + "line": 844, "column": 39 }, "end": { - "line": 843, + "line": 844, "column": 49 } } @@ -243922,15 +244433,15 @@ "postfix": false, "binop": null }, - "start": 30883, - "end": 30884, + "start": 30933, + "end": 30934, "loc": { "start": { - "line": 843, + "line": 844, "column": 49 }, "end": { - "line": 843, + "line": 844, "column": 50 } } @@ -243947,15 +244458,15 @@ "postfix": false, "binop": null }, - "start": 30885, - "end": 30886, + "start": 30935, + "end": 30936, "loc": { "start": { - "line": 843, + "line": 844, "column": 51 }, "end": { - "line": 843, + "line": 844, "column": 52 } } @@ -243975,15 +244486,15 @@ "updateContext": null }, "value": "this", - "start": 30899, - "end": 30903, + "start": 30949, + "end": 30953, "loc": { "start": { - "line": 844, + "line": 845, "column": 12 }, "end": { - "line": 844, + "line": 845, "column": 16 } } @@ -244001,15 +244512,15 @@ "binop": null, "updateContext": null }, - "start": 30903, - "end": 30904, + "start": 30953, + "end": 30954, "loc": { "start": { - "line": 844, + "line": 845, "column": 16 }, "end": { - "line": 844, + "line": 845, "column": 17 } } @@ -244027,15 +244538,15 @@ "binop": null }, "value": "_rootElement", - "start": 30904, - "end": 30916, + "start": 30954, + "end": 30966, "loc": { "start": { - "line": 844, + "line": 845, "column": 17 }, "end": { - "line": 844, + "line": 845, "column": 29 } } @@ -244053,15 +244564,15 @@ "binop": null, "updateContext": null }, - "start": 30916, - "end": 30917, + "start": 30966, + "end": 30967, "loc": { "start": { - "line": 844, + "line": 845, "column": 29 }, "end": { - "line": 844, + "line": 845, "column": 30 } } @@ -244079,15 +244590,15 @@ "binop": null }, "value": "parentNode", - "start": 30917, - "end": 30927, + "start": 30967, + "end": 30977, "loc": { "start": { - "line": 844, + "line": 845, "column": 30 }, "end": { - "line": 844, + "line": 845, "column": 40 } } @@ -244105,15 +244616,15 @@ "binop": null, "updateContext": null }, - "start": 30927, - "end": 30928, + "start": 30977, + "end": 30978, "loc": { "start": { - "line": 844, + "line": 845, "column": 40 }, "end": { - "line": 844, + "line": 845, "column": 41 } } @@ -244131,15 +244642,15 @@ "binop": null }, "value": "removeChild", - "start": 30928, - "end": 30939, + "start": 30978, + "end": 30989, "loc": { "start": { - "line": 844, + "line": 845, "column": 41 }, "end": { - "line": 844, + "line": 845, "column": 52 } } @@ -244156,15 +244667,15 @@ "postfix": false, "binop": null }, - "start": 30939, - "end": 30940, + "start": 30989, + "end": 30990, "loc": { "start": { - "line": 844, + "line": 845, "column": 52 }, "end": { - "line": 844, + "line": 845, "column": 53 } } @@ -244184,15 +244695,15 @@ "updateContext": null }, "value": "this", - "start": 30940, - "end": 30944, + "start": 30990, + "end": 30994, "loc": { "start": { - "line": 844, + "line": 845, "column": 53 }, "end": { - "line": 844, + "line": 845, "column": 57 } } @@ -244210,15 +244721,15 @@ "binop": null, "updateContext": null }, - "start": 30944, - "end": 30945, + "start": 30994, + "end": 30995, "loc": { "start": { - "line": 844, + "line": 845, "column": 57 }, "end": { - "line": 844, + "line": 845, "column": 58 } } @@ -244236,15 +244747,15 @@ "binop": null }, "value": "_rootElement", - "start": 30945, - "end": 30957, + "start": 30995, + "end": 31007, "loc": { "start": { - "line": 844, + "line": 845, "column": 58 }, "end": { - "line": 844, + "line": 845, "column": 70 } } @@ -244261,15 +244772,15 @@ "postfix": false, "binop": null }, - "start": 30957, - "end": 30958, + "start": 31007, + "end": 31008, "loc": { "start": { - "line": 844, + "line": 845, "column": 70 }, "end": { - "line": 844, + "line": 845, "column": 71 } } @@ -244287,15 +244798,15 @@ "binop": null, "updateContext": null }, - "start": 30958, - "end": 30959, + "start": 31008, + "end": 31009, "loc": { "start": { - "line": 844, + "line": 845, "column": 71 }, "end": { - "line": 844, + "line": 845, "column": 72 } } @@ -244315,15 +244826,15 @@ "updateContext": null }, "value": "this", - "start": 30972, - "end": 30976, + "start": 31022, + "end": 31026, "loc": { "start": { - "line": 845, + "line": 846, "column": 12 }, "end": { - "line": 845, + "line": 846, "column": 16 } } @@ -244341,15 +244852,15 @@ "binop": null, "updateContext": null }, - "start": 30976, - "end": 30977, + "start": 31026, + "end": 31027, "loc": { "start": { - "line": 845, + "line": 846, "column": 16 }, "end": { - "line": 845, + "line": 846, "column": 17 } } @@ -244367,15 +244878,15 @@ "binop": null }, "value": "_viewer", - "start": 30977, - "end": 30984, + "start": 31027, + "end": 31034, "loc": { "start": { - "line": 845, + "line": 846, "column": 17 }, "end": { - "line": 845, + "line": 846, "column": 24 } } @@ -244393,15 +244904,15 @@ "binop": null, "updateContext": null }, - "start": 30984, - "end": 30985, + "start": 31034, + "end": 31035, "loc": { "start": { - "line": 845, + "line": 846, "column": 24 }, "end": { - "line": 845, + "line": 846, "column": 25 } } @@ -244419,15 +244930,15 @@ "binop": null }, "value": "scene", - "start": 30985, - "end": 30990, + "start": 31035, + "end": 31040, "loc": { "start": { - "line": 845, + "line": 846, "column": 25 }, "end": { - "line": 845, + "line": 846, "column": 30 } } @@ -244445,15 +244956,15 @@ "binop": null, "updateContext": null }, - "start": 30990, - "end": 30991, + "start": 31040, + "end": 31041, "loc": { "start": { - "line": 845, + "line": 846, "column": 30 }, "end": { - "line": 845, + "line": 846, "column": 31 } } @@ -244471,15 +244982,15 @@ "binop": null }, "value": "off", - "start": 30991, - "end": 30994, + "start": 31041, + "end": 31044, "loc": { "start": { - "line": 845, + "line": 846, "column": 31 }, "end": { - "line": 845, + "line": 846, "column": 34 } } @@ -244496,15 +245007,15 @@ "postfix": false, "binop": null }, - "start": 30994, - "end": 30995, + "start": 31044, + "end": 31045, "loc": { "start": { - "line": 845, + "line": 846, "column": 34 }, "end": { - "line": 845, + "line": 846, "column": 35 } } @@ -244524,15 +245035,15 @@ "updateContext": null }, "value": "this", - "start": 30995, - "end": 30999, + "start": 31045, + "end": 31049, "loc": { "start": { - "line": 845, + "line": 846, "column": 35 }, "end": { - "line": 845, + "line": 846, "column": 39 } } @@ -244550,15 +245061,15 @@ "binop": null, "updateContext": null }, - "start": 30999, - "end": 31000, + "start": 31049, + "end": 31050, "loc": { "start": { - "line": 845, + "line": 846, "column": 39 }, "end": { - "line": 845, + "line": 846, "column": 40 } } @@ -244576,15 +245087,15 @@ "binop": null }, "value": "_onObjectVisibility", - "start": 31000, - "end": 31019, + "start": 31050, + "end": 31069, "loc": { "start": { - "line": 845, + "line": 846, "column": 40 }, "end": { - "line": 845, + "line": 846, "column": 59 } } @@ -244601,15 +245112,15 @@ "postfix": false, "binop": null }, - "start": 31019, - "end": 31020, + "start": 31069, + "end": 31070, "loc": { "start": { - "line": 845, + "line": 846, "column": 59 }, "end": { - "line": 845, + "line": 846, "column": 60 } } @@ -244627,15 +245138,15 @@ "binop": null, "updateContext": null }, - "start": 31020, - "end": 31021, + "start": 31070, + "end": 31071, "loc": { "start": { - "line": 845, + "line": 846, "column": 60 }, "end": { - "line": 845, + "line": 846, "column": 61 } } @@ -244655,15 +245166,15 @@ "updateContext": null }, "value": "this", - "start": 31034, - "end": 31038, + "start": 31084, + "end": 31088, "loc": { "start": { - "line": 846, + "line": 847, "column": 12 }, "end": { - "line": 846, + "line": 847, "column": 16 } } @@ -244681,15 +245192,15 @@ "binop": null, "updateContext": null }, - "start": 31038, - "end": 31039, + "start": 31088, + "end": 31089, "loc": { "start": { - "line": 846, + "line": 847, "column": 16 }, "end": { - "line": 846, + "line": 847, "column": 17 } } @@ -244707,15 +245218,15 @@ "binop": null }, "value": "_destroyed", - "start": 31039, - "end": 31049, + "start": 31089, + "end": 31099, "loc": { "start": { - "line": 846, + "line": 847, "column": 17 }, "end": { - "line": 846, + "line": 847, "column": 27 } } @@ -244734,15 +245245,15 @@ "updateContext": null }, "value": "=", - "start": 31050, - "end": 31051, + "start": 31100, + "end": 31101, "loc": { "start": { - "line": 846, + "line": 847, "column": 28 }, "end": { - "line": 846, + "line": 847, "column": 29 } } @@ -244762,15 +245273,15 @@ "updateContext": null }, "value": "true", - "start": 31052, - "end": 31056, + "start": 31102, + "end": 31106, "loc": { "start": { - "line": 846, + "line": 847, "column": 30 }, "end": { - "line": 846, + "line": 847, "column": 34 } } @@ -244788,15 +245299,15 @@ "binop": null, "updateContext": null }, - "start": 31056, - "end": 31057, + "start": 31106, + "end": 31107, "loc": { "start": { - "line": 846, + "line": 847, "column": 34 }, "end": { - "line": 846, + "line": 847, "column": 35 } } @@ -244814,15 +245325,15 @@ "binop": null }, "value": "idMap", - "start": 31070, - "end": 31075, + "start": 31120, + "end": 31125, "loc": { "start": { - "line": 847, + "line": 848, "column": 12 }, "end": { - "line": 847, + "line": 848, "column": 17 } } @@ -244840,15 +245351,15 @@ "binop": null, "updateContext": null }, - "start": 31075, - "end": 31076, + "start": 31125, + "end": 31126, "loc": { "start": { - "line": 847, + "line": 848, "column": 17 }, "end": { - "line": 847, + "line": 848, "column": 18 } } @@ -244866,15 +245377,15 @@ "binop": null }, "value": "removeItem", - "start": 31076, - "end": 31086, + "start": 31126, + "end": 31136, "loc": { "start": { - "line": 847, + "line": 848, "column": 18 }, "end": { - "line": 847, + "line": 848, "column": 28 } } @@ -244891,15 +245402,15 @@ "postfix": false, "binop": null }, - "start": 31086, - "end": 31087, + "start": 31136, + "end": 31137, "loc": { "start": { - "line": 847, + "line": 848, "column": 28 }, "end": { - "line": 847, + "line": 848, "column": 29 } } @@ -244919,15 +245430,15 @@ "updateContext": null }, "value": "this", - "start": 31087, - "end": 31091, + "start": 31137, + "end": 31141, "loc": { "start": { - "line": 847, + "line": 848, "column": 29 }, "end": { - "line": 847, + "line": 848, "column": 33 } } @@ -244945,15 +245456,15 @@ "binop": null, "updateContext": null }, - "start": 31091, - "end": 31092, + "start": 31141, + "end": 31142, "loc": { "start": { - "line": 847, + "line": 848, "column": 33 }, "end": { - "line": 847, + "line": 848, "column": 34 } } @@ -244971,15 +245482,15 @@ "binop": null }, "value": "_id", - "start": 31092, - "end": 31095, + "start": 31142, + "end": 31145, "loc": { "start": { - "line": 847, + "line": 848, "column": 34 }, "end": { - "line": 847, + "line": 848, "column": 37 } } @@ -244996,15 +245507,15 @@ "postfix": false, "binop": null }, - "start": 31095, - "end": 31096, + "start": 31145, + "end": 31146, "loc": { "start": { - "line": 847, + "line": 848, "column": 37 }, "end": { - "line": 847, + "line": 848, "column": 38 } } @@ -245022,15 +245533,15 @@ "binop": null, "updateContext": null }, - "start": 31096, - "end": 31097, + "start": 31146, + "end": 31147, "loc": { "start": { - "line": 847, + "line": 848, "column": 38 }, "end": { - "line": 847, + "line": 848, "column": 39 } } @@ -245047,15 +245558,15 @@ "postfix": false, "binop": null }, - "start": 31106, - "end": 31107, + "start": 31156, + "end": 31157, "loc": { "start": { - "line": 848, + "line": 849, "column": 8 }, "end": { - "line": 848, + "line": 849, "column": 9 } } @@ -245072,15 +245583,15 @@ "postfix": false, "binop": null }, - "start": 31112, - "end": 31113, + "start": 31162, + "end": 31163, "loc": { "start": { - "line": 849, + "line": 850, "column": 4 }, "end": { - "line": 849, + "line": 850, "column": 5 } } @@ -245097,15 +245608,15 @@ "postfix": false, "binop": null }, - "start": 31114, - "end": 31115, + "start": 31164, + "end": 31165, "loc": { "start": { - "line": 850, + "line": 851, "column": 0 }, "end": { - "line": 850, + "line": 851, "column": 1 } } @@ -245125,15 +245636,15 @@ "updateContext": null }, "value": "export", - "start": 31117, - "end": 31123, + "start": 31167, + "end": 31173, "loc": { "start": { - "line": 852, + "line": 853, "column": 0 }, "end": { - "line": 852, + "line": 853, "column": 6 } } @@ -245150,15 +245661,15 @@ "postfix": false, "binop": null }, - "start": 31124, - "end": 31125, + "start": 31174, + "end": 31175, "loc": { "start": { - "line": 852, + "line": 853, "column": 7 }, "end": { - "line": 852, + "line": 853, "column": 8 } } @@ -245176,15 +245687,15 @@ "binop": null }, "value": "ModelTreeView", - "start": 31125, - "end": 31138, + "start": 31175, + "end": 31188, "loc": { "start": { - "line": 852, + "line": 853, "column": 8 }, "end": { - "line": 852, + "line": 853, "column": 21 } } @@ -245201,15 +245712,15 @@ "postfix": false, "binop": null }, - "start": 31138, - "end": 31139, + "start": 31188, + "end": 31189, "loc": { "start": { - "line": 852, + "line": 853, "column": 21 }, "end": { - "line": 852, + "line": 853, "column": 22 } } @@ -245227,15 +245738,15 @@ "binop": null, "updateContext": null }, - "start": 31139, - "end": 31140, + "start": 31189, + "end": 31190, "loc": { "start": { - "line": 852, + "line": 853, "column": 22 }, "end": { - "line": 852, + "line": 853, "column": 23 } } @@ -245253,15 +245764,15 @@ "binop": null, "updateContext": null }, - "start": 31140, - "end": 31140, + "start": 31190, + "end": 31190, "loc": { "start": { - "line": 852, + "line": 853, "column": 23 }, "end": { - "line": 852, + "line": 853, "column": 23 } } diff --git a/docs/ast/source/viewer/Viewer.js.json b/docs/ast/source/viewer/Viewer.js.json index a43f0edcb3..24fc3aa6db 100644 --- a/docs/ast/source/viewer/Viewer.js.json +++ b/docs/ast/source/viewer/Viewer.js.json @@ -1,7 +1,7 @@ { "type": "File", "start": 0, - "end": 13529, + "end": 13528, "loc": { "start": { "line": 1, @@ -15,7 +15,7 @@ "program": { "type": "Program", "start": 0, - "end": 13529, + "end": 13528, "loc": { "start": { "line": 1, @@ -479,7 +479,7 @@ { "type": "Identifier", "start": 725, - "end": 13511, + "end": 13510, "loc": { "start": { "line": 19, @@ -512,7 +512,7 @@ "body": { "type": "ClassBody", "start": 738, - "end": 13511, + "end": 13510, "loc": { "start": { "line": 19, @@ -12966,9 +12966,9 @@ "trailingComments": [ { "type": "CommentBlock", - "value": "*\n * Exists snapshot mode.\n *\n * Switches rendering back to the main canvas.\n *\n ", + "value": "*\n * Exits snapshot mode.\n *\n * Switches rendering back to the main canvas.\n *\n ", "start": 12858, - "end": 12963, + "end": 12962, "loc": { "start": { "line": 342, @@ -12984,8 +12984,8 @@ }, { "type": "ClassMethod", - "start": 12968, - "end": 13188, + "start": 12967, + "end": 13187, "loc": { "start": { "line": 348, @@ -13000,8 +13000,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 12968, - "end": 12979, + "start": 12967, + "end": 12978, "loc": { "start": { "line": 348, @@ -13024,8 +13024,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 12982, - "end": 13188, + "start": 12981, + "end": 13187, "loc": { "start": { "line": 348, @@ -13039,8 +13039,8 @@ "body": [ { "type": "IfStatement", - "start": 12992, - "end": 13049, + "start": 12991, + "end": 13048, "loc": { "start": { "line": 349, @@ -13053,8 +13053,8 @@ }, "test": { "type": "UnaryExpression", - "start": 12996, - "end": 13016, + "start": 12995, + "end": 13015, "loc": { "start": { "line": 349, @@ -13069,8 +13069,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 12997, - "end": 13016, + "start": 12996, + "end": 13015, "loc": { "start": { "line": 349, @@ -13083,8 +13083,8 @@ }, "object": { "type": "ThisExpression", - "start": 12997, - "end": 13001, + "start": 12996, + "end": 13000, "loc": { "start": { "line": 349, @@ -13098,8 +13098,8 @@ }, "property": { "type": "Identifier", - "start": 13002, - "end": 13016, + "start": 13001, + "end": 13015, "loc": { "start": { "line": 349, @@ -13121,8 +13121,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 13018, - "end": 13049, + "start": 13017, + "end": 13048, "loc": { "start": { "line": 349, @@ -13136,8 +13136,8 @@ "body": [ { "type": "ReturnStatement", - "start": 13032, - "end": 13039, + "start": 13031, + "end": 13038, "loc": { "start": { "line": 350, @@ -13157,8 +13157,8 @@ }, { "type": "ExpressionStatement", - "start": 13058, - "end": 13093, + "start": 13057, + "end": 13092, "loc": { "start": { "line": 352, @@ -13171,8 +13171,8 @@ }, "expression": { "type": "CallExpression", - "start": 13058, - "end": 13092, + "start": 13057, + "end": 13091, "loc": { "start": { "line": 352, @@ -13185,8 +13185,8 @@ }, "callee": { "type": "MemberExpression", - "start": 13058, - "end": 13090, + "start": 13057, + "end": 13089, "loc": { "start": { "line": 352, @@ -13199,8 +13199,8 @@ }, "object": { "type": "MemberExpression", - "start": 13058, - "end": 13078, + "start": 13057, + "end": 13077, "loc": { "start": { "line": 352, @@ -13213,8 +13213,8 @@ }, "object": { "type": "MemberExpression", - "start": 13058, - "end": 13068, + "start": 13057, + "end": 13067, "loc": { "start": { "line": 352, @@ -13227,8 +13227,8 @@ }, "object": { "type": "ThisExpression", - "start": 13058, - "end": 13062, + "start": 13057, + "end": 13061, "loc": { "start": { "line": 352, @@ -13242,8 +13242,8 @@ }, "property": { "type": "Identifier", - "start": 13063, - "end": 13068, + "start": 13062, + "end": 13067, "loc": { "start": { "line": 352, @@ -13261,8 +13261,8 @@ }, "property": { "type": "Identifier", - "start": 13069, - "end": 13078, + "start": 13068, + "end": 13077, "loc": { "start": { "line": 352, @@ -13280,8 +13280,8 @@ }, "property": { "type": "Identifier", - "start": 13079, - "end": 13090, + "start": 13078, + "end": 13089, "loc": { "start": { "line": 352, @@ -13302,8 +13302,8 @@ }, { "type": "ExpressionStatement", - "start": 13102, - "end": 13145, + "start": 13101, + "end": 13144, "loc": { "start": { "line": 353, @@ -13316,8 +13316,8 @@ }, "expression": { "type": "CallExpression", - "start": 13102, - "end": 13144, + "start": 13101, + "end": 13143, "loc": { "start": { "line": 353, @@ -13330,8 +13330,8 @@ }, "callee": { "type": "MemberExpression", - "start": 13102, - "end": 13129, + "start": 13101, + "end": 13128, "loc": { "start": { "line": 353, @@ -13344,8 +13344,8 @@ }, "object": { "type": "MemberExpression", - "start": 13102, - "end": 13122, + "start": 13101, + "end": 13121, "loc": { "start": { "line": 353, @@ -13358,8 +13358,8 @@ }, "object": { "type": "MemberExpression", - "start": 13102, - "end": 13112, + "start": 13101, + "end": 13111, "loc": { "start": { "line": 353, @@ -13372,8 +13372,8 @@ }, "object": { "type": "ThisExpression", - "start": 13102, - "end": 13106, + "start": 13101, + "end": 13105, "loc": { "start": { "line": 353, @@ -13387,8 +13387,8 @@ }, "property": { "type": "Identifier", - "start": 13107, - "end": 13112, + "start": 13106, + "end": 13111, "loc": { "start": { "line": 353, @@ -13406,8 +13406,8 @@ }, "property": { "type": "Identifier", - "start": 13113, - "end": 13122, + "start": 13112, + "end": 13121, "loc": { "start": { "line": 353, @@ -13425,8 +13425,8 @@ }, "property": { "type": "Identifier", - "start": 13123, - "end": 13129, + "start": 13122, + "end": 13128, "loc": { "start": { "line": 353, @@ -13445,8 +13445,8 @@ "arguments": [ { "type": "ObjectExpression", - "start": 13130, - "end": 13143, + "start": 13129, + "end": 13142, "loc": { "start": { "line": 353, @@ -13460,8 +13460,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 13131, - "end": 13142, + "start": 13130, + "end": 13141, "loc": { "start": { "line": 353, @@ -13477,8 +13477,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 13131, - "end": 13136, + "start": 13130, + "end": 13135, "loc": { "start": { "line": 353, @@ -13494,8 +13494,8 @@ }, "value": { "type": "BooleanLiteral", - "start": 13138, - "end": 13142, + "start": 13137, + "end": 13141, "loc": { "start": { "line": 353, @@ -13516,8 +13516,8 @@ }, { "type": "ExpressionStatement", - "start": 13154, - "end": 13182, + "start": 13153, + "end": 13181, "loc": { "start": { "line": 354, @@ -13530,8 +13530,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 13154, - "end": 13181, + "start": 13153, + "end": 13180, "loc": { "start": { "line": 354, @@ -13545,8 +13545,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 13154, - "end": 13173, + "start": 13153, + "end": 13172, "loc": { "start": { "line": 354, @@ -13559,8 +13559,8 @@ }, "object": { "type": "ThisExpression", - "start": 13154, - "end": 13158, + "start": 13153, + "end": 13157, "loc": { "start": { "line": 354, @@ -13574,8 +13574,8 @@ }, "property": { "type": "Identifier", - "start": 13159, - "end": 13173, + "start": 13158, + "end": 13172, "loc": { "start": { "line": 354, @@ -13593,8 +13593,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 13176, - "end": 13181, + "start": 13175, + "end": 13180, "loc": { "start": { "line": 354, @@ -13616,9 +13616,9 @@ "leadingComments": [ { "type": "CommentBlock", - "value": "*\n * Exists snapshot mode.\n *\n * Switches rendering back to the main canvas.\n *\n ", + "value": "*\n * Exits snapshot mode.\n *\n * Switches rendering back to the main canvas.\n *\n ", "start": 12858, - "end": 12963, + "end": 12962, "loc": { "start": { "line": 342, @@ -13635,8 +13635,8 @@ { "type": "CommentBlock", "value": "* Destroys this Viewer.\n ", - "start": 13194, - "end": 13227, + "start": 13193, + "end": 13226, "loc": { "start": { "line": 357, @@ -13652,8 +13652,8 @@ }, { "type": "ClassMethod", - "start": 13232, - "end": 13509, + "start": 13231, + "end": 13508, "loc": { "start": { "line": 359, @@ -13668,8 +13668,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 13232, - "end": 13239, + "start": 13231, + "end": 13238, "loc": { "start": { "line": 359, @@ -13692,8 +13692,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 13242, - "end": 13509, + "start": 13241, + "end": 13508, "loc": { "start": { "line": 359, @@ -13707,8 +13707,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 13252, - "end": 13290, + "start": 13251, + "end": 13289, "loc": { "start": { "line": 360, @@ -13722,8 +13722,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 13258, - "end": 13289, + "start": 13257, + "end": 13288, "loc": { "start": { "line": 360, @@ -13736,8 +13736,8 @@ }, "id": { "type": "Identifier", - "start": 13258, - "end": 13265, + "start": 13257, + "end": 13264, "loc": { "start": { "line": 360, @@ -13753,8 +13753,8 @@ }, "init": { "type": "CallExpression", - "start": 13268, - "end": 13289, + "start": 13267, + "end": 13288, "loc": { "start": { "line": 360, @@ -13767,8 +13767,8 @@ }, "callee": { "type": "MemberExpression", - "start": 13268, - "end": 13287, + "start": 13267, + "end": 13286, "loc": { "start": { "line": 360, @@ -13781,8 +13781,8 @@ }, "object": { "type": "MemberExpression", - "start": 13268, - "end": 13281, + "start": 13267, + "end": 13280, "loc": { "start": { "line": 360, @@ -13795,8 +13795,8 @@ }, "object": { "type": "ThisExpression", - "start": 13268, - "end": 13272, + "start": 13267, + "end": 13271, "loc": { "start": { "line": 360, @@ -13810,8 +13810,8 @@ }, "property": { "type": "Identifier", - "start": 13273, - "end": 13281, + "start": 13272, + "end": 13280, "loc": { "start": { "line": 360, @@ -13829,8 +13829,8 @@ }, "property": { "type": "Identifier", - "start": 13282, - "end": 13287, + "start": 13281, + "end": 13286, "loc": { "start": { "line": 360, @@ -13855,8 +13855,8 @@ { "type": "CommentLine", "value": " Array will modify as we delete plugins", - "start": 13291, - "end": 13332, + "start": 13290, + "end": 13331, "loc": { "start": { "line": 360, @@ -13872,8 +13872,8 @@ }, { "type": "ForStatement", - "start": 13341, - "end": 13473, + "start": 13340, + "end": 13472, "loc": { "start": { "line": 361, @@ -13886,8 +13886,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 13346, - "end": 13377, + "start": 13345, + "end": 13376, "loc": { "start": { "line": 361, @@ -13901,8 +13901,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 13350, - "end": 13355, + "start": 13349, + "end": 13354, "loc": { "start": { "line": 361, @@ -13915,8 +13915,8 @@ }, "id": { "type": "Identifier", - "start": 13350, - "end": 13351, + "start": 13349, + "end": 13350, "loc": { "start": { "line": 361, @@ -13933,8 +13933,8 @@ }, "init": { "type": "NumericLiteral", - "start": 13354, - "end": 13355, + "start": 13353, + "end": 13354, "loc": { "start": { "line": 361, @@ -13955,8 +13955,8 @@ }, { "type": "VariableDeclarator", - "start": 13357, - "end": 13377, + "start": 13356, + "end": 13376, "loc": { "start": { "line": 361, @@ -13969,8 +13969,8 @@ }, "id": { "type": "Identifier", - "start": 13357, - "end": 13360, + "start": 13356, + "end": 13359, "loc": { "start": { "line": 361, @@ -13986,8 +13986,8 @@ }, "init": { "type": "MemberExpression", - "start": 13363, - "end": 13377, + "start": 13362, + "end": 13376, "loc": { "start": { "line": 361, @@ -14000,8 +14000,8 @@ }, "object": { "type": "Identifier", - "start": 13363, - "end": 13370, + "start": 13362, + "end": 13369, "loc": { "start": { "line": 361, @@ -14017,8 +14017,8 @@ }, "property": { "type": "Identifier", - "start": 13371, - "end": 13377, + "start": 13370, + "end": 13376, "loc": { "start": { "line": 361, @@ -14041,8 +14041,8 @@ }, "test": { "type": "BinaryExpression", - "start": 13379, - "end": 13386, + "start": 13378, + "end": 13385, "loc": { "start": { "line": 361, @@ -14055,8 +14055,8 @@ }, "left": { "type": "Identifier", - "start": 13379, - "end": 13380, + "start": 13378, + "end": 13379, "loc": { "start": { "line": 361, @@ -14073,8 +14073,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 13383, - "end": 13386, + "start": 13382, + "end": 13385, "loc": { "start": { "line": 361, @@ -14091,8 +14091,8 @@ }, "update": { "type": "UpdateExpression", - "start": 13388, - "end": 13391, + "start": 13387, + "end": 13390, "loc": { "start": { "line": 361, @@ -14107,8 +14107,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 13388, - "end": 13389, + "start": 13387, + "end": 13388, "loc": { "start": { "line": 361, @@ -14125,8 +14125,8 @@ }, "body": { "type": "BlockStatement", - "start": 13393, - "end": 13473, + "start": 13392, + "end": 13472, "loc": { "start": { "line": 361, @@ -14140,8 +14140,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 13407, - "end": 13433, + "start": 13406, + "end": 13432, "loc": { "start": { "line": 362, @@ -14155,8 +14155,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 13413, - "end": 13432, + "start": 13412, + "end": 13431, "loc": { "start": { "line": 362, @@ -14169,8 +14169,8 @@ }, "id": { "type": "Identifier", - "start": 13413, - "end": 13419, + "start": 13412, + "end": 13418, "loc": { "start": { "line": 362, @@ -14186,8 +14186,8 @@ }, "init": { "type": "MemberExpression", - "start": 13422, - "end": 13432, + "start": 13421, + "end": 13431, "loc": { "start": { "line": 362, @@ -14200,8 +14200,8 @@ }, "object": { "type": "Identifier", - "start": 13422, - "end": 13429, + "start": 13421, + "end": 13428, "loc": { "start": { "line": 362, @@ -14217,8 +14217,8 @@ }, "property": { "type": "Identifier", - "start": 13430, - "end": 13431, + "start": 13429, + "end": 13430, "loc": { "start": { "line": 362, @@ -14240,8 +14240,8 @@ }, { "type": "ExpressionStatement", - "start": 13446, - "end": 13463, + "start": 13445, + "end": 13462, "loc": { "start": { "line": 363, @@ -14254,8 +14254,8 @@ }, "expression": { "type": "CallExpression", - "start": 13446, - "end": 13462, + "start": 13445, + "end": 13461, "loc": { "start": { "line": 363, @@ -14268,8 +14268,8 @@ }, "callee": { "type": "MemberExpression", - "start": 13446, - "end": 13460, + "start": 13445, + "end": 13459, "loc": { "start": { "line": 363, @@ -14282,8 +14282,8 @@ }, "object": { "type": "Identifier", - "start": 13446, - "end": 13452, + "start": 13445, + "end": 13451, "loc": { "start": { "line": 363, @@ -14299,8 +14299,8 @@ }, "property": { "type": "Identifier", - "start": 13453, - "end": 13460, + "start": 13452, + "end": 13459, "loc": { "start": { "line": 363, @@ -14326,8 +14326,8 @@ { "type": "CommentLine", "value": " Array will modify as we delete plugins", - "start": 13291, - "end": 13332, + "start": 13290, + "end": 13331, "loc": { "start": { "line": 360, @@ -14343,8 +14343,8 @@ }, { "type": "ExpressionStatement", - "start": 13482, - "end": 13503, + "start": 13481, + "end": 13502, "loc": { "start": { "line": 365, @@ -14357,8 +14357,8 @@ }, "expression": { "type": "CallExpression", - "start": 13482, - "end": 13502, + "start": 13481, + "end": 13501, "loc": { "start": { "line": 365, @@ -14371,8 +14371,8 @@ }, "callee": { "type": "MemberExpression", - "start": 13482, - "end": 13500, + "start": 13481, + "end": 13499, "loc": { "start": { "line": 365, @@ -14385,8 +14385,8 @@ }, "object": { "type": "MemberExpression", - "start": 13482, - "end": 13492, + "start": 13481, + "end": 13491, "loc": { "start": { "line": 365, @@ -14399,8 +14399,8 @@ }, "object": { "type": "ThisExpression", - "start": 13482, - "end": 13486, + "start": 13481, + "end": 13485, "loc": { "start": { "line": 365, @@ -14414,8 +14414,8 @@ }, "property": { "type": "Identifier", - "start": 13487, - "end": 13492, + "start": 13486, + "end": 13491, "loc": { "start": { "line": 365, @@ -14433,8 +14433,8 @@ }, "property": { "type": "Identifier", - "start": 13493, - "end": 13500, + "start": 13492, + "end": 13499, "loc": { "start": { "line": 365, @@ -14460,8 +14460,8 @@ { "type": "CommentBlock", "value": "* Destroys this Viewer.\n ", - "start": 13194, - "end": 13227, + "start": 13193, + "end": 13226, "loc": { "start": { "line": 357, @@ -14483,8 +14483,8 @@ }, { "type": "ExportNamedDeclaration", - "start": 13513, - "end": 13528, + "start": 13512, + "end": 13527, "loc": { "start": { "line": 369, @@ -14499,8 +14499,8 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 13521, - "end": 13527, + "start": 13520, + "end": 13526, "loc": { "start": { "line": 369, @@ -14513,8 +14513,8 @@ }, "local": { "type": "Identifier", - "start": 13521, - "end": 13527, + "start": 13520, + "end": 13526, "loc": { "start": { "line": 369, @@ -14530,8 +14530,8 @@ }, "exported": { "type": "Identifier", - "start": 13521, - "end": 13527, + "start": 13520, + "end": 13526, "loc": { "start": { "line": 369, @@ -14551,8 +14551,8 @@ }, { "type": "ExportNamedDeclaration", - "start": 13513, - "end": 13528, + "start": 13512, + "end": 13527, "loc": { "start": { "line": 369, @@ -14566,7 +14566,7 @@ "declaration": { "type": "ClassDeclaration", "start": 725, - "end": 13511, + "end": 13510, "loc": { "start": { "line": 19, @@ -14599,7 +14599,7 @@ "body": { "type": "ClassBody", "start": 738, - "end": 13511, + "end": 13510, "loc": { "start": { "line": 19, @@ -27053,9 +27053,9 @@ "trailingComments": [ { "type": "CommentBlock", - "value": "*\n * Exists snapshot mode.\n *\n * Switches rendering back to the main canvas.\n *\n ", + "value": "*\n * Exits snapshot mode.\n *\n * Switches rendering back to the main canvas.\n *\n ", "start": 12858, - "end": 12963, + "end": 12962, "loc": { "start": { "line": 342, @@ -27071,8 +27071,8 @@ }, { "type": "ClassMethod", - "start": 12968, - "end": 13188, + "start": 12967, + "end": 13187, "loc": { "start": { "line": 348, @@ -27087,8 +27087,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 12968, - "end": 12979, + "start": 12967, + "end": 12978, "loc": { "start": { "line": 348, @@ -27111,8 +27111,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 12982, - "end": 13188, + "start": 12981, + "end": 13187, "loc": { "start": { "line": 348, @@ -27126,8 +27126,8 @@ "body": [ { "type": "IfStatement", - "start": 12992, - "end": 13049, + "start": 12991, + "end": 13048, "loc": { "start": { "line": 349, @@ -27140,8 +27140,8 @@ }, "test": { "type": "UnaryExpression", - "start": 12996, - "end": 13016, + "start": 12995, + "end": 13015, "loc": { "start": { "line": 349, @@ -27156,8 +27156,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 12997, - "end": 13016, + "start": 12996, + "end": 13015, "loc": { "start": { "line": 349, @@ -27170,8 +27170,8 @@ }, "object": { "type": "ThisExpression", - "start": 12997, - "end": 13001, + "start": 12996, + "end": 13000, "loc": { "start": { "line": 349, @@ -27185,8 +27185,8 @@ }, "property": { "type": "Identifier", - "start": 13002, - "end": 13016, + "start": 13001, + "end": 13015, "loc": { "start": { "line": 349, @@ -27208,8 +27208,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 13018, - "end": 13049, + "start": 13017, + "end": 13048, "loc": { "start": { "line": 349, @@ -27223,8 +27223,8 @@ "body": [ { "type": "ReturnStatement", - "start": 13032, - "end": 13039, + "start": 13031, + "end": 13038, "loc": { "start": { "line": 350, @@ -27244,8 +27244,8 @@ }, { "type": "ExpressionStatement", - "start": 13058, - "end": 13093, + "start": 13057, + "end": 13092, "loc": { "start": { "line": 352, @@ -27258,8 +27258,8 @@ }, "expression": { "type": "CallExpression", - "start": 13058, - "end": 13092, + "start": 13057, + "end": 13091, "loc": { "start": { "line": 352, @@ -27272,8 +27272,8 @@ }, "callee": { "type": "MemberExpression", - "start": 13058, - "end": 13090, + "start": 13057, + "end": 13089, "loc": { "start": { "line": 352, @@ -27286,8 +27286,8 @@ }, "object": { "type": "MemberExpression", - "start": 13058, - "end": 13078, + "start": 13057, + "end": 13077, "loc": { "start": { "line": 352, @@ -27300,8 +27300,8 @@ }, "object": { "type": "MemberExpression", - "start": 13058, - "end": 13068, + "start": 13057, + "end": 13067, "loc": { "start": { "line": 352, @@ -27314,8 +27314,8 @@ }, "object": { "type": "ThisExpression", - "start": 13058, - "end": 13062, + "start": 13057, + "end": 13061, "loc": { "start": { "line": 352, @@ -27329,8 +27329,8 @@ }, "property": { "type": "Identifier", - "start": 13063, - "end": 13068, + "start": 13062, + "end": 13067, "loc": { "start": { "line": 352, @@ -27348,8 +27348,8 @@ }, "property": { "type": "Identifier", - "start": 13069, - "end": 13078, + "start": 13068, + "end": 13077, "loc": { "start": { "line": 352, @@ -27367,8 +27367,8 @@ }, "property": { "type": "Identifier", - "start": 13079, - "end": 13090, + "start": 13078, + "end": 13089, "loc": { "start": { "line": 352, @@ -27389,8 +27389,8 @@ }, { "type": "ExpressionStatement", - "start": 13102, - "end": 13145, + "start": 13101, + "end": 13144, "loc": { "start": { "line": 353, @@ -27403,8 +27403,8 @@ }, "expression": { "type": "CallExpression", - "start": 13102, - "end": 13144, + "start": 13101, + "end": 13143, "loc": { "start": { "line": 353, @@ -27417,8 +27417,8 @@ }, "callee": { "type": "MemberExpression", - "start": 13102, - "end": 13129, + "start": 13101, + "end": 13128, "loc": { "start": { "line": 353, @@ -27431,8 +27431,8 @@ }, "object": { "type": "MemberExpression", - "start": 13102, - "end": 13122, + "start": 13101, + "end": 13121, "loc": { "start": { "line": 353, @@ -27445,8 +27445,8 @@ }, "object": { "type": "MemberExpression", - "start": 13102, - "end": 13112, + "start": 13101, + "end": 13111, "loc": { "start": { "line": 353, @@ -27459,8 +27459,8 @@ }, "object": { "type": "ThisExpression", - "start": 13102, - "end": 13106, + "start": 13101, + "end": 13105, "loc": { "start": { "line": 353, @@ -27474,8 +27474,8 @@ }, "property": { "type": "Identifier", - "start": 13107, - "end": 13112, + "start": 13106, + "end": 13111, "loc": { "start": { "line": 353, @@ -27493,8 +27493,8 @@ }, "property": { "type": "Identifier", - "start": 13113, - "end": 13122, + "start": 13112, + "end": 13121, "loc": { "start": { "line": 353, @@ -27512,8 +27512,8 @@ }, "property": { "type": "Identifier", - "start": 13123, - "end": 13129, + "start": 13122, + "end": 13128, "loc": { "start": { "line": 353, @@ -27532,8 +27532,8 @@ "arguments": [ { "type": "ObjectExpression", - "start": 13130, - "end": 13143, + "start": 13129, + "end": 13142, "loc": { "start": { "line": 353, @@ -27547,8 +27547,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 13131, - "end": 13142, + "start": 13130, + "end": 13141, "loc": { "start": { "line": 353, @@ -27564,8 +27564,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 13131, - "end": 13136, + "start": 13130, + "end": 13135, "loc": { "start": { "line": 353, @@ -27581,8 +27581,8 @@ }, "value": { "type": "BooleanLiteral", - "start": 13138, - "end": 13142, + "start": 13137, + "end": 13141, "loc": { "start": { "line": 353, @@ -27603,8 +27603,8 @@ }, { "type": "ExpressionStatement", - "start": 13154, - "end": 13182, + "start": 13153, + "end": 13181, "loc": { "start": { "line": 354, @@ -27617,8 +27617,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 13154, - "end": 13181, + "start": 13153, + "end": 13180, "loc": { "start": { "line": 354, @@ -27632,8 +27632,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 13154, - "end": 13173, + "start": 13153, + "end": 13172, "loc": { "start": { "line": 354, @@ -27646,8 +27646,8 @@ }, "object": { "type": "ThisExpression", - "start": 13154, - "end": 13158, + "start": 13153, + "end": 13157, "loc": { "start": { "line": 354, @@ -27661,8 +27661,8 @@ }, "property": { "type": "Identifier", - "start": 13159, - "end": 13173, + "start": 13158, + "end": 13172, "loc": { "start": { "line": 354, @@ -27680,8 +27680,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 13176, - "end": 13181, + "start": 13175, + "end": 13180, "loc": { "start": { "line": 354, @@ -27703,9 +27703,9 @@ "leadingComments": [ { "type": "CommentBlock", - "value": "*\n * Exists snapshot mode.\n *\n * Switches rendering back to the main canvas.\n *\n ", + "value": "*\n * Exits snapshot mode.\n *\n * Switches rendering back to the main canvas.\n *\n ", "start": 12858, - "end": 12963, + "end": 12962, "loc": { "start": { "line": 342, @@ -27722,8 +27722,8 @@ { "type": "CommentBlock", "value": "* Destroys this Viewer.\n ", - "start": 13194, - "end": 13227, + "start": 13193, + "end": 13226, "loc": { "start": { "line": 357, @@ -27739,8 +27739,8 @@ }, { "type": "ClassMethod", - "start": 13232, - "end": 13509, + "start": 13231, + "end": 13508, "loc": { "start": { "line": 359, @@ -27755,8 +27755,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 13232, - "end": 13239, + "start": 13231, + "end": 13238, "loc": { "start": { "line": 359, @@ -27779,8 +27779,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 13242, - "end": 13509, + "start": 13241, + "end": 13508, "loc": { "start": { "line": 359, @@ -27794,8 +27794,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 13252, - "end": 13290, + "start": 13251, + "end": 13289, "loc": { "start": { "line": 360, @@ -27809,8 +27809,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 13258, - "end": 13289, + "start": 13257, + "end": 13288, "loc": { "start": { "line": 360, @@ -27823,8 +27823,8 @@ }, "id": { "type": "Identifier", - "start": 13258, - "end": 13265, + "start": 13257, + "end": 13264, "loc": { "start": { "line": 360, @@ -27840,8 +27840,8 @@ }, "init": { "type": "CallExpression", - "start": 13268, - "end": 13289, + "start": 13267, + "end": 13288, "loc": { "start": { "line": 360, @@ -27854,8 +27854,8 @@ }, "callee": { "type": "MemberExpression", - "start": 13268, - "end": 13287, + "start": 13267, + "end": 13286, "loc": { "start": { "line": 360, @@ -27868,8 +27868,8 @@ }, "object": { "type": "MemberExpression", - "start": 13268, - "end": 13281, + "start": 13267, + "end": 13280, "loc": { "start": { "line": 360, @@ -27882,8 +27882,8 @@ }, "object": { "type": "ThisExpression", - "start": 13268, - "end": 13272, + "start": 13267, + "end": 13271, "loc": { "start": { "line": 360, @@ -27897,8 +27897,8 @@ }, "property": { "type": "Identifier", - "start": 13273, - "end": 13281, + "start": 13272, + "end": 13280, "loc": { "start": { "line": 360, @@ -27916,8 +27916,8 @@ }, "property": { "type": "Identifier", - "start": 13282, - "end": 13287, + "start": 13281, + "end": 13286, "loc": { "start": { "line": 360, @@ -27942,8 +27942,8 @@ { "type": "CommentLine", "value": " Array will modify as we delete plugins", - "start": 13291, - "end": 13332, + "start": 13290, + "end": 13331, "loc": { "start": { "line": 360, @@ -27959,8 +27959,8 @@ }, { "type": "ForStatement", - "start": 13341, - "end": 13473, + "start": 13340, + "end": 13472, "loc": { "start": { "line": 361, @@ -27973,8 +27973,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 13346, - "end": 13377, + "start": 13345, + "end": 13376, "loc": { "start": { "line": 361, @@ -27988,8 +27988,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 13350, - "end": 13355, + "start": 13349, + "end": 13354, "loc": { "start": { "line": 361, @@ -28002,8 +28002,8 @@ }, "id": { "type": "Identifier", - "start": 13350, - "end": 13351, + "start": 13349, + "end": 13350, "loc": { "start": { "line": 361, @@ -28020,8 +28020,8 @@ }, "init": { "type": "NumericLiteral", - "start": 13354, - "end": 13355, + "start": 13353, + "end": 13354, "loc": { "start": { "line": 361, @@ -28042,8 +28042,8 @@ }, { "type": "VariableDeclarator", - "start": 13357, - "end": 13377, + "start": 13356, + "end": 13376, "loc": { "start": { "line": 361, @@ -28056,8 +28056,8 @@ }, "id": { "type": "Identifier", - "start": 13357, - "end": 13360, + "start": 13356, + "end": 13359, "loc": { "start": { "line": 361, @@ -28073,8 +28073,8 @@ }, "init": { "type": "MemberExpression", - "start": 13363, - "end": 13377, + "start": 13362, + "end": 13376, "loc": { "start": { "line": 361, @@ -28087,8 +28087,8 @@ }, "object": { "type": "Identifier", - "start": 13363, - "end": 13370, + "start": 13362, + "end": 13369, "loc": { "start": { "line": 361, @@ -28104,8 +28104,8 @@ }, "property": { "type": "Identifier", - "start": 13371, - "end": 13377, + "start": 13370, + "end": 13376, "loc": { "start": { "line": 361, @@ -28128,8 +28128,8 @@ }, "test": { "type": "BinaryExpression", - "start": 13379, - "end": 13386, + "start": 13378, + "end": 13385, "loc": { "start": { "line": 361, @@ -28142,8 +28142,8 @@ }, "left": { "type": "Identifier", - "start": 13379, - "end": 13380, + "start": 13378, + "end": 13379, "loc": { "start": { "line": 361, @@ -28160,8 +28160,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 13383, - "end": 13386, + "start": 13382, + "end": 13385, "loc": { "start": { "line": 361, @@ -28178,8 +28178,8 @@ }, "update": { "type": "UpdateExpression", - "start": 13388, - "end": 13391, + "start": 13387, + "end": 13390, "loc": { "start": { "line": 361, @@ -28194,8 +28194,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 13388, - "end": 13389, + "start": 13387, + "end": 13388, "loc": { "start": { "line": 361, @@ -28212,8 +28212,8 @@ }, "body": { "type": "BlockStatement", - "start": 13393, - "end": 13473, + "start": 13392, + "end": 13472, "loc": { "start": { "line": 361, @@ -28227,8 +28227,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 13407, - "end": 13433, + "start": 13406, + "end": 13432, "loc": { "start": { "line": 362, @@ -28242,8 +28242,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 13413, - "end": 13432, + "start": 13412, + "end": 13431, "loc": { "start": { "line": 362, @@ -28256,8 +28256,8 @@ }, "id": { "type": "Identifier", - "start": 13413, - "end": 13419, + "start": 13412, + "end": 13418, "loc": { "start": { "line": 362, @@ -28273,8 +28273,8 @@ }, "init": { "type": "MemberExpression", - "start": 13422, - "end": 13432, + "start": 13421, + "end": 13431, "loc": { "start": { "line": 362, @@ -28287,8 +28287,8 @@ }, "object": { "type": "Identifier", - "start": 13422, - "end": 13429, + "start": 13421, + "end": 13428, "loc": { "start": { "line": 362, @@ -28304,8 +28304,8 @@ }, "property": { "type": "Identifier", - "start": 13430, - "end": 13431, + "start": 13429, + "end": 13430, "loc": { "start": { "line": 362, @@ -28327,8 +28327,8 @@ }, { "type": "ExpressionStatement", - "start": 13446, - "end": 13463, + "start": 13445, + "end": 13462, "loc": { "start": { "line": 363, @@ -28341,8 +28341,8 @@ }, "expression": { "type": "CallExpression", - "start": 13446, - "end": 13462, + "start": 13445, + "end": 13461, "loc": { "start": { "line": 363, @@ -28355,8 +28355,8 @@ }, "callee": { "type": "MemberExpression", - "start": 13446, - "end": 13460, + "start": 13445, + "end": 13459, "loc": { "start": { "line": 363, @@ -28369,8 +28369,8 @@ }, "object": { "type": "Identifier", - "start": 13446, - "end": 13452, + "start": 13445, + "end": 13451, "loc": { "start": { "line": 363, @@ -28386,8 +28386,8 @@ }, "property": { "type": "Identifier", - "start": 13453, - "end": 13460, + "start": 13452, + "end": 13459, "loc": { "start": { "line": 363, @@ -28413,8 +28413,8 @@ { "type": "CommentLine", "value": " Array will modify as we delete plugins", - "start": 13291, - "end": 13332, + "start": 13290, + "end": 13331, "loc": { "start": { "line": 360, @@ -28430,8 +28430,8 @@ }, { "type": "ExpressionStatement", - "start": 13482, - "end": 13503, + "start": 13481, + "end": 13502, "loc": { "start": { "line": 365, @@ -28444,8 +28444,8 @@ }, "expression": { "type": "CallExpression", - "start": 13482, - "end": 13502, + "start": 13481, + "end": 13501, "loc": { "start": { "line": 365, @@ -28458,8 +28458,8 @@ }, "callee": { "type": "MemberExpression", - "start": 13482, - "end": 13500, + "start": 13481, + "end": 13499, "loc": { "start": { "line": 365, @@ -28472,8 +28472,8 @@ }, "object": { "type": "MemberExpression", - "start": 13482, - "end": 13492, + "start": 13481, + "end": 13491, "loc": { "start": { "line": 365, @@ -28486,8 +28486,8 @@ }, "object": { "type": "ThisExpression", - "start": 13482, - "end": 13486, + "start": 13481, + "end": 13485, "loc": { "start": { "line": 365, @@ -28501,8 +28501,8 @@ }, "property": { "type": "Identifier", - "start": 13487, - "end": 13492, + "start": 13486, + "end": 13491, "loc": { "start": { "line": 365, @@ -28520,8 +28520,8 @@ }, "property": { "type": "Identifier", - "start": 13493, - "end": 13500, + "start": 13492, + "end": 13499, "loc": { "start": { "line": 365, @@ -28547,8 +28547,8 @@ { "type": "CommentBlock", "value": "* Destroys this Viewer.\n ", - "start": 13194, - "end": 13227, + "start": 13193, + "end": 13226, "loc": { "start": { "line": 357, @@ -28995,9 +28995,9 @@ }, { "type": "CommentBlock", - "value": "*\n * Exists snapshot mode.\n *\n * Switches rendering back to the main canvas.\n *\n ", + "value": "*\n * Exits snapshot mode.\n *\n * Switches rendering back to the main canvas.\n *\n ", "start": 12858, - "end": 12963, + "end": 12962, "loc": { "start": { "line": 342, @@ -29012,8 +29012,8 @@ { "type": "CommentBlock", "value": "* Destroys this Viewer.\n ", - "start": 13194, - "end": 13227, + "start": 13193, + "end": 13226, "loc": { "start": { "line": 357, @@ -29028,8 +29028,8 @@ { "type": "CommentLine", "value": " Array will modify as we delete plugins", - "start": 13291, - "end": 13332, + "start": 13290, + "end": 13331, "loc": { "start": { "line": 360, @@ -53569,9 +53569,9 @@ }, { "type": "CommentBlock", - "value": "*\n * Exists snapshot mode.\n *\n * Switches rendering back to the main canvas.\n *\n ", + "value": "*\n * Exits snapshot mode.\n *\n * Switches rendering back to the main canvas.\n *\n ", "start": 12858, - "end": 12963, + "end": 12962, "loc": { "start": { "line": 342, @@ -53596,8 +53596,8 @@ "binop": null }, "value": "endSnapshot", - "start": 12968, - "end": 12979, + "start": 12967, + "end": 12978, "loc": { "start": { "line": 348, @@ -53621,8 +53621,8 @@ "postfix": false, "binop": null }, - "start": 12979, - "end": 12980, + "start": 12978, + "end": 12979, "loc": { "start": { "line": 348, @@ -53646,8 +53646,8 @@ "postfix": false, "binop": null }, - "start": 12980, - "end": 12981, + "start": 12979, + "end": 12980, "loc": { "start": { "line": 348, @@ -53671,8 +53671,8 @@ "postfix": false, "binop": null }, - "start": 12982, - "end": 12983, + "start": 12981, + "end": 12982, "loc": { "start": { "line": 348, @@ -53699,8 +53699,8 @@ "updateContext": null }, "value": "if", - "start": 12992, - "end": 12994, + "start": 12991, + "end": 12993, "loc": { "start": { "line": 349, @@ -53724,8 +53724,8 @@ "postfix": false, "binop": null }, - "start": 12995, - "end": 12996, + "start": 12994, + "end": 12995, "loc": { "start": { "line": 349, @@ -53751,8 +53751,8 @@ "updateContext": null }, "value": "!", - "start": 12996, - "end": 12997, + "start": 12995, + "end": 12996, "loc": { "start": { "line": 349, @@ -53779,8 +53779,8 @@ "updateContext": null }, "value": "this", - "start": 12997, - "end": 13001, + "start": 12996, + "end": 13000, "loc": { "start": { "line": 349, @@ -53805,8 +53805,8 @@ "binop": null, "updateContext": null }, - "start": 13001, - "end": 13002, + "start": 13000, + "end": 13001, "loc": { "start": { "line": 349, @@ -53831,8 +53831,8 @@ "binop": null }, "value": "_snapshotBegun", - "start": 13002, - "end": 13016, + "start": 13001, + "end": 13015, "loc": { "start": { "line": 349, @@ -53856,8 +53856,8 @@ "postfix": false, "binop": null }, - "start": 13016, - "end": 13017, + "start": 13015, + "end": 13016, "loc": { "start": { "line": 349, @@ -53881,8 +53881,8 @@ "postfix": false, "binop": null }, - "start": 13018, - "end": 13019, + "start": 13017, + "end": 13018, "loc": { "start": { "line": 349, @@ -53909,8 +53909,8 @@ "updateContext": null }, "value": "return", - "start": 13032, - "end": 13038, + "start": 13031, + "end": 13037, "loc": { "start": { "line": 350, @@ -53935,8 +53935,8 @@ "binop": null, "updateContext": null }, - "start": 13038, - "end": 13039, + "start": 13037, + "end": 13038, "loc": { "start": { "line": 350, @@ -53960,8 +53960,8 @@ "postfix": false, "binop": null }, - "start": 13048, - "end": 13049, + "start": 13047, + "end": 13048, "loc": { "start": { "line": 351, @@ -53988,8 +53988,8 @@ "updateContext": null }, "value": "this", - "start": 13058, - "end": 13062, + "start": 13057, + "end": 13061, "loc": { "start": { "line": 352, @@ -54014,8 +54014,8 @@ "binop": null, "updateContext": null }, - "start": 13062, - "end": 13063, + "start": 13061, + "end": 13062, "loc": { "start": { "line": 352, @@ -54040,8 +54040,8 @@ "binop": null }, "value": "scene", - "start": 13063, - "end": 13068, + "start": 13062, + "end": 13067, "loc": { "start": { "line": 352, @@ -54066,8 +54066,8 @@ "binop": null, "updateContext": null }, - "start": 13068, - "end": 13069, + "start": 13067, + "end": 13068, "loc": { "start": { "line": 352, @@ -54092,8 +54092,8 @@ "binop": null }, "value": "_renderer", - "start": 13069, - "end": 13078, + "start": 13068, + "end": 13077, "loc": { "start": { "line": 352, @@ -54118,8 +54118,8 @@ "binop": null, "updateContext": null }, - "start": 13078, - "end": 13079, + "start": 13077, + "end": 13078, "loc": { "start": { "line": 352, @@ -54144,8 +54144,8 @@ "binop": null }, "value": "endSnapshot", - "start": 13079, - "end": 13090, + "start": 13078, + "end": 13089, "loc": { "start": { "line": 352, @@ -54169,8 +54169,8 @@ "postfix": false, "binop": null }, - "start": 13090, - "end": 13091, + "start": 13089, + "end": 13090, "loc": { "start": { "line": 352, @@ -54194,8 +54194,8 @@ "postfix": false, "binop": null }, - "start": 13091, - "end": 13092, + "start": 13090, + "end": 13091, "loc": { "start": { "line": 352, @@ -54220,8 +54220,8 @@ "binop": null, "updateContext": null }, - "start": 13092, - "end": 13093, + "start": 13091, + "end": 13092, "loc": { "start": { "line": 352, @@ -54248,8 +54248,8 @@ "updateContext": null }, "value": "this", - "start": 13102, - "end": 13106, + "start": 13101, + "end": 13105, "loc": { "start": { "line": 353, @@ -54274,8 +54274,8 @@ "binop": null, "updateContext": null }, - "start": 13106, - "end": 13107, + "start": 13105, + "end": 13106, "loc": { "start": { "line": 353, @@ -54300,8 +54300,8 @@ "binop": null }, "value": "scene", - "start": 13107, - "end": 13112, + "start": 13106, + "end": 13111, "loc": { "start": { "line": 353, @@ -54326,8 +54326,8 @@ "binop": null, "updateContext": null }, - "start": 13112, - "end": 13113, + "start": 13111, + "end": 13112, "loc": { "start": { "line": 353, @@ -54352,8 +54352,8 @@ "binop": null }, "value": "_renderer", - "start": 13113, - "end": 13122, + "start": 13112, + "end": 13121, "loc": { "start": { "line": 353, @@ -54378,8 +54378,8 @@ "binop": null, "updateContext": null }, - "start": 13122, - "end": 13123, + "start": 13121, + "end": 13122, "loc": { "start": { "line": 353, @@ -54404,8 +54404,8 @@ "binop": null }, "value": "render", - "start": 13123, - "end": 13129, + "start": 13122, + "end": 13128, "loc": { "start": { "line": 353, @@ -54429,8 +54429,8 @@ "postfix": false, "binop": null }, - "start": 13129, - "end": 13130, + "start": 13128, + "end": 13129, "loc": { "start": { "line": 353, @@ -54454,8 +54454,8 @@ "postfix": false, "binop": null }, - "start": 13130, - "end": 13131, + "start": 13129, + "end": 13130, "loc": { "start": { "line": 353, @@ -54480,8 +54480,8 @@ "binop": null }, "value": "force", - "start": 13131, - "end": 13136, + "start": 13130, + "end": 13135, "loc": { "start": { "line": 353, @@ -54506,8 +54506,8 @@ "binop": null, "updateContext": null }, - "start": 13136, - "end": 13137, + "start": 13135, + "end": 13136, "loc": { "start": { "line": 353, @@ -54534,8 +54534,8 @@ "updateContext": null }, "value": "true", - "start": 13138, - "end": 13142, + "start": 13137, + "end": 13141, "loc": { "start": { "line": 353, @@ -54559,8 +54559,8 @@ "postfix": false, "binop": null }, - "start": 13142, - "end": 13143, + "start": 13141, + "end": 13142, "loc": { "start": { "line": 353, @@ -54584,8 +54584,8 @@ "postfix": false, "binop": null }, - "start": 13143, - "end": 13144, + "start": 13142, + "end": 13143, "loc": { "start": { "line": 353, @@ -54610,8 +54610,8 @@ "binop": null, "updateContext": null }, - "start": 13144, - "end": 13145, + "start": 13143, + "end": 13144, "loc": { "start": { "line": 353, @@ -54638,8 +54638,8 @@ "updateContext": null }, "value": "this", - "start": 13154, - "end": 13158, + "start": 13153, + "end": 13157, "loc": { "start": { "line": 354, @@ -54664,8 +54664,8 @@ "binop": null, "updateContext": null }, - "start": 13158, - "end": 13159, + "start": 13157, + "end": 13158, "loc": { "start": { "line": 354, @@ -54690,8 +54690,8 @@ "binop": null }, "value": "_snapshotBegun", - "start": 13159, - "end": 13173, + "start": 13158, + "end": 13172, "loc": { "start": { "line": 354, @@ -54717,8 +54717,8 @@ "updateContext": null }, "value": "=", - "start": 13174, - "end": 13175, + "start": 13173, + "end": 13174, "loc": { "start": { "line": 354, @@ -54745,8 +54745,8 @@ "updateContext": null }, "value": "false", - "start": 13176, - "end": 13181, + "start": 13175, + "end": 13180, "loc": { "start": { "line": 354, @@ -54771,8 +54771,8 @@ "binop": null, "updateContext": null }, - "start": 13181, - "end": 13182, + "start": 13180, + "end": 13181, "loc": { "start": { "line": 354, @@ -54796,8 +54796,8 @@ "postfix": false, "binop": null }, - "start": 13187, - "end": 13188, + "start": 13186, + "end": 13187, "loc": { "start": { "line": 355, @@ -54812,8 +54812,8 @@ { "type": "CommentBlock", "value": "* Destroys this Viewer.\n ", - "start": 13194, - "end": 13227, + "start": 13193, + "end": 13226, "loc": { "start": { "line": 357, @@ -54838,8 +54838,8 @@ "binop": null }, "value": "destroy", - "start": 13232, - "end": 13239, + "start": 13231, + "end": 13238, "loc": { "start": { "line": 359, @@ -54863,8 +54863,8 @@ "postfix": false, "binop": null }, - "start": 13239, - "end": 13240, + "start": 13238, + "end": 13239, "loc": { "start": { "line": 359, @@ -54888,8 +54888,8 @@ "postfix": false, "binop": null }, - "start": 13240, - "end": 13241, + "start": 13239, + "end": 13240, "loc": { "start": { "line": 359, @@ -54913,8 +54913,8 @@ "postfix": false, "binop": null }, - "start": 13242, - "end": 13243, + "start": 13241, + "end": 13242, "loc": { "start": { "line": 359, @@ -54941,8 +54941,8 @@ "updateContext": null }, "value": "const", - "start": 13252, - "end": 13257, + "start": 13251, + "end": 13256, "loc": { "start": { "line": 360, @@ -54967,8 +54967,8 @@ "binop": null }, "value": "plugins", - "start": 13258, - "end": 13265, + "start": 13257, + "end": 13264, "loc": { "start": { "line": 360, @@ -54994,8 +54994,8 @@ "updateContext": null }, "value": "=", - "start": 13266, - "end": 13267, + "start": 13265, + "end": 13266, "loc": { "start": { "line": 360, @@ -55022,8 +55022,8 @@ "updateContext": null }, "value": "this", - "start": 13268, - "end": 13272, + "start": 13267, + "end": 13271, "loc": { "start": { "line": 360, @@ -55048,8 +55048,8 @@ "binop": null, "updateContext": null }, - "start": 13272, - "end": 13273, + "start": 13271, + "end": 13272, "loc": { "start": { "line": 360, @@ -55074,8 +55074,8 @@ "binop": null }, "value": "_plugins", - "start": 13273, - "end": 13281, + "start": 13272, + "end": 13280, "loc": { "start": { "line": 360, @@ -55100,8 +55100,8 @@ "binop": null, "updateContext": null }, - "start": 13281, - "end": 13282, + "start": 13280, + "end": 13281, "loc": { "start": { "line": 360, @@ -55126,8 +55126,8 @@ "binop": null }, "value": "slice", - "start": 13282, - "end": 13287, + "start": 13281, + "end": 13286, "loc": { "start": { "line": 360, @@ -55151,8 +55151,8 @@ "postfix": false, "binop": null }, - "start": 13287, - "end": 13288, + "start": 13286, + "end": 13287, "loc": { "start": { "line": 360, @@ -55176,8 +55176,8 @@ "postfix": false, "binop": null }, - "start": 13288, - "end": 13289, + "start": 13287, + "end": 13288, "loc": { "start": { "line": 360, @@ -55202,8 +55202,8 @@ "binop": null, "updateContext": null }, - "start": 13289, - "end": 13290, + "start": 13288, + "end": 13289, "loc": { "start": { "line": 360, @@ -55218,8 +55218,8 @@ { "type": "CommentLine", "value": " Array will modify as we delete plugins", - "start": 13291, - "end": 13332, + "start": 13290, + "end": 13331, "loc": { "start": { "line": 360, @@ -55246,8 +55246,8 @@ "updateContext": null }, "value": "for", - "start": 13341, - "end": 13344, + "start": 13340, + "end": 13343, "loc": { "start": { "line": 361, @@ -55271,8 +55271,8 @@ "postfix": false, "binop": null }, - "start": 13345, - "end": 13346, + "start": 13344, + "end": 13345, "loc": { "start": { "line": 361, @@ -55299,8 +55299,8 @@ "updateContext": null }, "value": "let", - "start": 13346, - "end": 13349, + "start": 13345, + "end": 13348, "loc": { "start": { "line": 361, @@ -55325,8 +55325,8 @@ "binop": null }, "value": "i", - "start": 13350, - "end": 13351, + "start": 13349, + "end": 13350, "loc": { "start": { "line": 361, @@ -55352,8 +55352,8 @@ "updateContext": null }, "value": "=", - "start": 13352, - "end": 13353, + "start": 13351, + "end": 13352, "loc": { "start": { "line": 361, @@ -55379,8 +55379,8 @@ "updateContext": null }, "value": 0, - "start": 13354, - "end": 13355, + "start": 13353, + "end": 13354, "loc": { "start": { "line": 361, @@ -55405,8 +55405,8 @@ "binop": null, "updateContext": null }, - "start": 13355, - "end": 13356, + "start": 13354, + "end": 13355, "loc": { "start": { "line": 361, @@ -55431,8 +55431,8 @@ "binop": null }, "value": "len", - "start": 13357, - "end": 13360, + "start": 13356, + "end": 13359, "loc": { "start": { "line": 361, @@ -55458,8 +55458,8 @@ "updateContext": null }, "value": "=", - "start": 13361, - "end": 13362, + "start": 13360, + "end": 13361, "loc": { "start": { "line": 361, @@ -55484,8 +55484,8 @@ "binop": null }, "value": "plugins", - "start": 13363, - "end": 13370, + "start": 13362, + "end": 13369, "loc": { "start": { "line": 361, @@ -55510,8 +55510,8 @@ "binop": null, "updateContext": null }, - "start": 13370, - "end": 13371, + "start": 13369, + "end": 13370, "loc": { "start": { "line": 361, @@ -55536,8 +55536,8 @@ "binop": null }, "value": "length", - "start": 13371, - "end": 13377, + "start": 13370, + "end": 13376, "loc": { "start": { "line": 361, @@ -55562,8 +55562,8 @@ "binop": null, "updateContext": null }, - "start": 13377, - "end": 13378, + "start": 13376, + "end": 13377, "loc": { "start": { "line": 361, @@ -55588,8 +55588,8 @@ "binop": null }, "value": "i", - "start": 13379, - "end": 13380, + "start": 13378, + "end": 13379, "loc": { "start": { "line": 361, @@ -55615,8 +55615,8 @@ "updateContext": null }, "value": "<", - "start": 13381, - "end": 13382, + "start": 13380, + "end": 13381, "loc": { "start": { "line": 361, @@ -55641,8 +55641,8 @@ "binop": null }, "value": "len", - "start": 13383, - "end": 13386, + "start": 13382, + "end": 13385, "loc": { "start": { "line": 361, @@ -55667,8 +55667,8 @@ "binop": null, "updateContext": null }, - "start": 13386, - "end": 13387, + "start": 13385, + "end": 13386, "loc": { "start": { "line": 361, @@ -55693,8 +55693,8 @@ "binop": null }, "value": "i", - "start": 13388, - "end": 13389, + "start": 13387, + "end": 13388, "loc": { "start": { "line": 361, @@ -55719,8 +55719,8 @@ "binop": null }, "value": "++", - "start": 13389, - "end": 13391, + "start": 13388, + "end": 13390, "loc": { "start": { "line": 361, @@ -55744,8 +55744,8 @@ "postfix": false, "binop": null }, - "start": 13391, - "end": 13392, + "start": 13390, + "end": 13391, "loc": { "start": { "line": 361, @@ -55769,8 +55769,8 @@ "postfix": false, "binop": null }, - "start": 13393, - "end": 13394, + "start": 13392, + "end": 13393, "loc": { "start": { "line": 361, @@ -55797,8 +55797,8 @@ "updateContext": null }, "value": "const", - "start": 13407, - "end": 13412, + "start": 13406, + "end": 13411, "loc": { "start": { "line": 362, @@ -55823,8 +55823,8 @@ "binop": null }, "value": "plugin", - "start": 13413, - "end": 13419, + "start": 13412, + "end": 13418, "loc": { "start": { "line": 362, @@ -55850,8 +55850,8 @@ "updateContext": null }, "value": "=", - "start": 13420, - "end": 13421, + "start": 13419, + "end": 13420, "loc": { "start": { "line": 362, @@ -55876,8 +55876,8 @@ "binop": null }, "value": "plugins", - "start": 13422, - "end": 13429, + "start": 13421, + "end": 13428, "loc": { "start": { "line": 362, @@ -55902,8 +55902,8 @@ "binop": null, "updateContext": null }, - "start": 13429, - "end": 13430, + "start": 13428, + "end": 13429, "loc": { "start": { "line": 362, @@ -55928,8 +55928,8 @@ "binop": null }, "value": "i", - "start": 13430, - "end": 13431, + "start": 13429, + "end": 13430, "loc": { "start": { "line": 362, @@ -55954,8 +55954,8 @@ "binop": null, "updateContext": null }, - "start": 13431, - "end": 13432, + "start": 13430, + "end": 13431, "loc": { "start": { "line": 362, @@ -55980,8 +55980,8 @@ "binop": null, "updateContext": null }, - "start": 13432, - "end": 13433, + "start": 13431, + "end": 13432, "loc": { "start": { "line": 362, @@ -56006,8 +56006,8 @@ "binop": null }, "value": "plugin", - "start": 13446, - "end": 13452, + "start": 13445, + "end": 13451, "loc": { "start": { "line": 363, @@ -56032,8 +56032,8 @@ "binop": null, "updateContext": null }, - "start": 13452, - "end": 13453, + "start": 13451, + "end": 13452, "loc": { "start": { "line": 363, @@ -56058,8 +56058,8 @@ "binop": null }, "value": "destroy", - "start": 13453, - "end": 13460, + "start": 13452, + "end": 13459, "loc": { "start": { "line": 363, @@ -56083,8 +56083,8 @@ "postfix": false, "binop": null }, - "start": 13460, - "end": 13461, + "start": 13459, + "end": 13460, "loc": { "start": { "line": 363, @@ -56108,8 +56108,8 @@ "postfix": false, "binop": null }, - "start": 13461, - "end": 13462, + "start": 13460, + "end": 13461, "loc": { "start": { "line": 363, @@ -56134,8 +56134,8 @@ "binop": null, "updateContext": null }, - "start": 13462, - "end": 13463, + "start": 13461, + "end": 13462, "loc": { "start": { "line": 363, @@ -56159,8 +56159,8 @@ "postfix": false, "binop": null }, - "start": 13472, - "end": 13473, + "start": 13471, + "end": 13472, "loc": { "start": { "line": 364, @@ -56187,8 +56187,8 @@ "updateContext": null }, "value": "this", - "start": 13482, - "end": 13486, + "start": 13481, + "end": 13485, "loc": { "start": { "line": 365, @@ -56213,8 +56213,8 @@ "binop": null, "updateContext": null }, - "start": 13486, - "end": 13487, + "start": 13485, + "end": 13486, "loc": { "start": { "line": 365, @@ -56239,8 +56239,8 @@ "binop": null }, "value": "scene", - "start": 13487, - "end": 13492, + "start": 13486, + "end": 13491, "loc": { "start": { "line": 365, @@ -56265,8 +56265,8 @@ "binop": null, "updateContext": null }, - "start": 13492, - "end": 13493, + "start": 13491, + "end": 13492, "loc": { "start": { "line": 365, @@ -56291,8 +56291,8 @@ "binop": null }, "value": "destroy", - "start": 13493, - "end": 13500, + "start": 13492, + "end": 13499, "loc": { "start": { "line": 365, @@ -56316,8 +56316,8 @@ "postfix": false, "binop": null }, - "start": 13500, - "end": 13501, + "start": 13499, + "end": 13500, "loc": { "start": { "line": 365, @@ -56341,8 +56341,8 @@ "postfix": false, "binop": null }, - "start": 13501, - "end": 13502, + "start": 13500, + "end": 13501, "loc": { "start": { "line": 365, @@ -56367,8 +56367,8 @@ "binop": null, "updateContext": null }, - "start": 13502, - "end": 13503, + "start": 13501, + "end": 13502, "loc": { "start": { "line": 365, @@ -56392,8 +56392,8 @@ "postfix": false, "binop": null }, - "start": 13508, - "end": 13509, + "start": 13507, + "end": 13508, "loc": { "start": { "line": 366, @@ -56417,8 +56417,8 @@ "postfix": false, "binop": null }, - "start": 13510, - "end": 13511, + "start": 13509, + "end": 13510, "loc": { "start": { "line": 367, @@ -56445,8 +56445,8 @@ "updateContext": null }, "value": "export", - "start": 13513, - "end": 13519, + "start": 13512, + "end": 13518, "loc": { "start": { "line": 369, @@ -56470,8 +56470,8 @@ "postfix": false, "binop": null }, - "start": 13520, - "end": 13521, + "start": 13519, + "end": 13520, "loc": { "start": { "line": 369, @@ -56496,8 +56496,8 @@ "binop": null }, "value": "Viewer", - "start": 13521, - "end": 13527, + "start": 13520, + "end": 13526, "loc": { "start": { "line": 369, @@ -56521,8 +56521,8 @@ "postfix": false, "binop": null }, - "start": 13527, - "end": 13528, + "start": 13526, + "end": 13527, "loc": { "start": { "line": 369, @@ -56547,8 +56547,8 @@ "binop": null, "updateContext": null }, - "start": 13529, - "end": 13529, + "start": 13528, + "end": 13528, "loc": { "start": { "line": 370, diff --git a/docs/ast/source/viewer/scene/CameraControl/CameraControl.js.json b/docs/ast/source/viewer/scene/CameraControl/CameraControl.js.json index 44fe14ce72..10dcf59b5b 100644 --- a/docs/ast/source/viewer/scene/CameraControl/CameraControl.js.json +++ b/docs/ast/source/viewer/scene/CameraControl/CameraControl.js.json @@ -1,28 +1,28 @@ { "type": "File", "start": 0, - "end": 56452, + "end": 56392, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 1639, + "line": 1638, "column": 0 } }, "program": { "type": "Program", "start": 0, - "end": 56452, + "end": 56392, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 1639, + "line": 1638, "column": 0 } }, @@ -1339,14 +1339,14 @@ { "type": "Identifier", "start": 17797, - "end": 56420, + "end": 56360, "loc": { "start": { "line": 477, "column": 0 }, "end": { - "line": 1634, + "line": 1633, "column": 1 } }, @@ -1388,14 +1388,14 @@ "body": { "type": "ClassBody", "start": 17835, - "end": 56420, + "end": 56360, "loc": { "start": { "line": 477, "column": 38 }, "end": { - "line": 1634, + "line": 1633, "column": 1 } }, @@ -1403,14 +1403,14 @@ { "type": "ClassMethod", "start": 17894, - "end": 25411, + "end": 25351, "loc": { "start": { "line": 483, "column": 4 }, "end": { - "line": 754, + "line": 753, "column": 5 } }, @@ -1509,14 +1509,14 @@ "body": { "type": "BlockStatement", "start": 17923, - "end": 25411, + "end": 25351, "loc": { "start": { "line": 483, "column": 33 }, "end": { - "line": 754, + "line": 753, "column": 5 } }, @@ -6288,28 +6288,28 @@ { "type": "ExpressionStatement", "start": 21827, - "end": 22318, + "end": 22258, "loc": { "start": { "line": 668, "column": 8 }, "end": { - "line": 682, + "line": 681, "column": 10 } }, "expression": { "type": "AssignmentExpression", "start": 21827, - "end": 22317, + "end": 22257, "loc": { "start": { "line": 668, "column": 8 }, "end": { - "line": 682, + "line": 681, "column": 9 } }, @@ -6367,14 +6367,14 @@ "right": { "type": "ObjectExpression", "start": 21842, - "end": 22317, + "end": 22257, "loc": { "start": { "line": 668, "column": 23 }, "end": { - "line": 682, + "line": 681, "column": 9 } }, @@ -6534,7 +6534,7 @@ { "type": "ObjectProperty", "start": 21929, - "end": 21950, + "end": 21953, "loc": { "start": { "line": 671, @@ -6542,7 +6542,7 @@ }, "end": { "line": 671, - "column": 33 + "column": 36 } }, "method": false, @@ -6551,7 +6551,7 @@ "key": { "type": "Identifier", "start": 21929, - "end": 21943, + "end": 21947, "loc": { "start": { "line": 671, @@ -6559,33 +6559,33 @@ }, "end": { "line": 671, - "column": 26 + "column": 30 }, - "identifierName": "inputFromMouse" + "identifierName": "followPointerDirty" }, - "name": "inputFromMouse" + "name": "followPointerDirty" }, "value": { "type": "BooleanLiteral", - "start": 21945, - "end": 21950, + "start": 21949, + "end": 21953, "loc": { "start": { "line": 671, - "column": 28 + "column": 32 }, "end": { "line": 671, - "column": 33 + "column": 36 } }, - "value": false + "value": true } }, { "type": "ObjectProperty", - "start": 21989, - "end": 22013, + "start": 21967, + "end": 21986, "loc": { "start": { "line": 672, @@ -6593,7 +6593,7 @@ }, "end": { "line": 672, - "column": 36 + "column": 31 } }, "method": false, @@ -6601,8 +6601,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 21989, - "end": 22007, + "start": 21967, + "end": 21983, "loc": { "start": { "line": 672, @@ -6610,52 +6610,37 @@ }, "end": { "line": 672, - "column": 30 + "column": 28 }, - "identifierName": "followPointerDirty" + "identifierName": "mouseDownClientX" }, - "name": "followPointerDirty", - "leadingComments": null + "name": "mouseDownClientX" }, "value": { - "type": "BooleanLiteral", - "start": 22009, - "end": 22013, + "type": "NumericLiteral", + "start": 21985, + "end": 21986, "loc": { "start": { "line": 672, - "column": 32 + "column": 30 }, "end": { "line": 672, - "column": 36 + "column": 31 } }, - "value": true - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " TODO: Is this needed?", - "start": 21952, - "end": 21976, - "loc": { - "start": { - "line": 671, - "column": 35 - }, - "end": { - "line": 671, - "column": 59 - } - } - } - ] + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } }, { "type": "ObjectProperty", - "start": 22027, - "end": 22046, + "start": 22000, + "end": 22019, "loc": { "start": { "line": 673, @@ -6671,8 +6656,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 22027, - "end": 22043, + "start": 22000, + "end": 22016, "loc": { "start": { "line": 673, @@ -6682,14 +6667,14 @@ "line": 673, "column": 28 }, - "identifierName": "mouseDownClientX" + "identifierName": "mouseDownClientY" }, - "name": "mouseDownClientX" + "name": "mouseDownClientY" }, "value": { "type": "NumericLiteral", - "start": 22045, - "end": 22046, + "start": 22018, + "end": 22019, "loc": { "start": { "line": 673, @@ -6709,8 +6694,8 @@ }, { "type": "ObjectProperty", - "start": 22060, - "end": 22079, + "start": 22033, + "end": 22052, "loc": { "start": { "line": 674, @@ -6726,8 +6711,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 22060, - "end": 22076, + "start": 22033, + "end": 22049, "loc": { "start": { "line": 674, @@ -6737,14 +6722,14 @@ "line": 674, "column": 28 }, - "identifierName": "mouseDownClientY" + "identifierName": "mouseDownCursorX" }, - "name": "mouseDownClientY" + "name": "mouseDownCursorX" }, "value": { "type": "NumericLiteral", - "start": 22078, - "end": 22079, + "start": 22051, + "end": 22052, "loc": { "start": { "line": 674, @@ -6764,8 +6749,8 @@ }, { "type": "ObjectProperty", - "start": 22093, - "end": 22112, + "start": 22066, + "end": 22085, "loc": { "start": { "line": 675, @@ -6781,8 +6766,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 22093, - "end": 22109, + "start": 22066, + "end": 22082, "loc": { "start": { "line": 675, @@ -6792,14 +6777,14 @@ "line": 675, "column": 28 }, - "identifierName": "mouseDownCursorX" + "identifierName": "mouseDownCursorY" }, - "name": "mouseDownCursorX" + "name": "mouseDownCursorY" }, "value": { "type": "NumericLiteral", - "start": 22111, - "end": 22112, + "start": 22084, + "end": 22085, "loc": { "start": { "line": 675, @@ -6819,8 +6804,8 @@ }, { "type": "ObjectProperty", - "start": 22126, - "end": 22145, + "start": 22099, + "end": 22119, "loc": { "start": { "line": 676, @@ -6828,7 +6813,7 @@ }, "end": { "line": 676, - "column": 31 + "column": 32 } }, "method": false, @@ -6836,8 +6821,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 22126, - "end": 22142, + "start": 22099, + "end": 22113, "loc": { "start": { "line": 676, @@ -6845,61 +6830,6 @@ }, "end": { "line": 676, - "column": 28 - }, - "identifierName": "mouseDownCursorY" - }, - "name": "mouseDownCursorY" - }, - "value": { - "type": "NumericLiteral", - "start": 22144, - "end": 22145, - "loc": { - "start": { - "line": 676, - "column": 30 - }, - "end": { - "line": 676, - "column": 31 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - } - }, - { - "type": "ObjectProperty", - "start": 22159, - "end": 22179, - "loc": { - "start": { - "line": 677, - "column": 12 - }, - "end": { - "line": 677, - "column": 32 - } - }, - "method": false, - "shorthand": false, - "computed": false, - "key": { - "type": "Identifier", - "start": 22159, - "end": 22173, - "loc": { - "start": { - "line": 677, - "column": 12 - }, - "end": { - "line": 677, "column": 26 }, "identifierName": "touchStartTime" @@ -6908,15 +6838,15 @@ }, "value": { "type": "NullLiteral", - "start": 22175, - "end": 22179, + "start": 22115, + "end": 22119, "loc": { "start": { - "line": 677, + "line": 676, "column": 28 }, "end": { - "line": 677, + "line": 676, "column": 32 } } @@ -6924,15 +6854,15 @@ }, { "type": "ObjectProperty", - "start": 22193, - "end": 22210, + "start": 22133, + "end": 22150, "loc": { "start": { - "line": 678, + "line": 677, "column": 12 }, "end": { - "line": 678, + "line": 677, "column": 29 } }, @@ -6941,15 +6871,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22193, - "end": 22206, + "start": 22133, + "end": 22146, "loc": { "start": { - "line": 678, + "line": 677, "column": 12 }, "end": { - "line": 678, + "line": 677, "column": 25 }, "identifierName": "activeTouches" @@ -6958,15 +6888,15 @@ }, "value": { "type": "ArrayExpression", - "start": 22208, - "end": 22210, + "start": 22148, + "end": 22150, "loc": { "start": { - "line": 678, + "line": 677, "column": 27 }, "end": { - "line": 678, + "line": 677, "column": 29 } }, @@ -6975,15 +6905,15 @@ }, { "type": "ObjectProperty", - "start": 22224, - "end": 22248, + "start": 22164, + "end": 22188, "loc": { "start": { - "line": 679, + "line": 678, "column": 12 }, "end": { - "line": 679, + "line": 678, "column": 36 } }, @@ -6992,15 +6922,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22224, - "end": 22235, + "start": 22164, + "end": 22175, "loc": { "start": { - "line": 679, + "line": 678, "column": 12 }, "end": { - "line": 679, + "line": 678, "column": 23 }, "identifierName": "tapStartPos" @@ -7009,43 +6939,43 @@ }, "value": { "type": "CallExpression", - "start": 22237, - "end": 22248, + "start": 22177, + "end": 22188, "loc": { "start": { - "line": 679, + "line": 678, "column": 25 }, "end": { - "line": 679, + "line": 678, "column": 36 } }, "callee": { "type": "MemberExpression", - "start": 22237, - "end": 22246, + "start": 22177, + "end": 22186, "loc": { "start": { - "line": 679, + "line": 678, "column": 25 }, "end": { - "line": 679, + "line": 678, "column": 34 } }, "object": { "type": "Identifier", - "start": 22237, - "end": 22241, + "start": 22177, + "end": 22181, "loc": { "start": { - "line": 679, + "line": 678, "column": 25 }, "end": { - "line": 679, + "line": 678, "column": 29 }, "identifierName": "math" @@ -7054,15 +6984,15 @@ }, "property": { "type": "Identifier", - "start": 22242, - "end": 22246, + "start": 22182, + "end": 22186, "loc": { "start": { - "line": 679, + "line": 678, "column": 30 }, "end": { - "line": 679, + "line": 678, "column": 34 }, "identifierName": "vec2" @@ -7076,15 +7006,15 @@ }, { "type": "ObjectProperty", - "start": 22262, - "end": 22278, + "start": 22202, + "end": 22218, "loc": { "start": { - "line": 680, + "line": 679, "column": 12 }, "end": { - "line": 680, + "line": 679, "column": 28 } }, @@ -7093,15 +7023,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22262, - "end": 22274, + "start": 22202, + "end": 22214, "loc": { "start": { - "line": 680, + "line": 679, "column": 12 }, "end": { - "line": 680, + "line": 679, "column": 24 }, "identifierName": "tapStartTime" @@ -7110,15 +7040,15 @@ }, "value": { "type": "UnaryExpression", - "start": 22276, - "end": 22278, + "start": 22216, + "end": 22218, "loc": { "start": { - "line": 680, + "line": 679, "column": 26 }, "end": { - "line": 680, + "line": 679, "column": 28 } }, @@ -7126,15 +7056,15 @@ "prefix": true, "argument": { "type": "NumericLiteral", - "start": 22277, - "end": 22278, + "start": 22217, + "end": 22218, "loc": { "start": { - "line": 680, + "line": 679, "column": 27 }, "end": { - "line": 680, + "line": 679, "column": 28 } }, @@ -7151,15 +7081,15 @@ }, { "type": "ObjectProperty", - "start": 22292, - "end": 22307, + "start": 22232, + "end": 22247, "loc": { "start": { - "line": 681, + "line": 680, "column": 12 }, "end": { - "line": 681, + "line": 680, "column": 27 } }, @@ -7168,15 +7098,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22292, - "end": 22303, + "start": 22232, + "end": 22243, "loc": { "start": { - "line": 681, + "line": 680, "column": 12 }, "end": { - "line": 681, + "line": 680, "column": 23 }, "identifierName": "lastTapTime" @@ -7185,15 +7115,15 @@ }, "value": { "type": "UnaryExpression", - "start": 22305, - "end": 22307, + "start": 22245, + "end": 22247, "loc": { "start": { - "line": 681, + "line": 680, "column": 25 }, "end": { - "line": 681, + "line": 680, "column": 27 } }, @@ -7201,15 +7131,15 @@ "prefix": true, "argument": { "type": "NumericLiteral", - "start": 22306, - "end": 22307, + "start": 22246, + "end": 22247, "loc": { "start": { - "line": 681, + "line": 680, "column": 26 }, "end": { - "line": 681, + "line": 680, "column": 27 } }, @@ -7250,15 +7180,15 @@ { "type": "CommentLine", "value": " Updates for CameraUpdater to process on next Scene \"tick\" event", - "start": 22328, - "end": 22394, + "start": 22268, + "end": 22334, "loc": { "start": { - "line": 684, + "line": 683, "column": 8 }, "end": { - "line": 684, + "line": 683, "column": 74 } } @@ -7267,58 +7197,58 @@ }, { "type": "ExpressionStatement", - "start": 22404, - "end": 22594, + "start": 22344, + "end": 22534, "loc": { "start": { - "line": 686, + "line": 685, "column": 8 }, "end": { - "line": 693, + "line": 692, "column": 10 } }, "expression": { "type": "AssignmentExpression", - "start": 22404, - "end": 22593, + "start": 22344, + "end": 22533, "loc": { "start": { - "line": 686, + "line": 685, "column": 8 }, "end": { - "line": 693, + "line": 692, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 22404, - "end": 22417, + "start": 22344, + "end": 22357, "loc": { "start": { - "line": 686, + "line": 685, "column": 8 }, "end": { - "line": 686, + "line": 685, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 22404, - "end": 22408, + "start": 22344, + "end": 22348, "loc": { "start": { - "line": 686, + "line": 685, "column": 8 }, "end": { - "line": 686, + "line": 685, "column": 12 } }, @@ -7326,15 +7256,15 @@ }, "property": { "type": "Identifier", - "start": 22409, - "end": 22417, + "start": 22349, + "end": 22357, "loc": { "start": { - "line": 686, + "line": 685, "column": 13 }, "end": { - "line": 686, + "line": 685, "column": 21 }, "identifierName": "_updates" @@ -7346,30 +7276,30 @@ }, "right": { "type": "ObjectExpression", - "start": 22420, - "end": 22593, + "start": 22360, + "end": 22533, "loc": { "start": { - "line": 686, + "line": 685, "column": 24 }, "end": { - "line": 693, + "line": 692, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 22434, - "end": 22449, + "start": 22374, + "end": 22389, "loc": { "start": { - "line": 687, + "line": 686, "column": 12 }, "end": { - "line": 687, + "line": 686, "column": 27 } }, @@ -7378,15 +7308,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22434, - "end": 22446, + "start": 22374, + "end": 22386, "loc": { "start": { - "line": 687, + "line": 686, "column": 12 }, "end": { - "line": 687, + "line": 686, "column": 24 }, "identifierName": "rotateDeltaX" @@ -7395,15 +7325,15 @@ }, "value": { "type": "NumericLiteral", - "start": 22448, - "end": 22449, + "start": 22388, + "end": 22389, "loc": { "start": { - "line": 687, + "line": 686, "column": 26 }, "end": { - "line": 687, + "line": 686, "column": 27 } }, @@ -7416,15 +7346,15 @@ }, { "type": "ObjectProperty", - "start": 22463, - "end": 22478, + "start": 22403, + "end": 22418, "loc": { "start": { - "line": 688, + "line": 687, "column": 12 }, "end": { - "line": 688, + "line": 687, "column": 27 } }, @@ -7433,15 +7363,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22463, - "end": 22475, + "start": 22403, + "end": 22415, "loc": { "start": { - "line": 688, + "line": 687, "column": 12 }, "end": { - "line": 688, + "line": 687, "column": 24 }, "identifierName": "rotateDeltaY" @@ -7450,15 +7380,15 @@ }, "value": { "type": "NumericLiteral", - "start": 22477, - "end": 22478, + "start": 22417, + "end": 22418, "loc": { "start": { - "line": 688, + "line": 687, "column": 26 }, "end": { - "line": 688, + "line": 687, "column": 27 } }, @@ -7471,15 +7401,15 @@ }, { "type": "ObjectProperty", - "start": 22492, - "end": 22504, + "start": 22432, + "end": 22444, "loc": { "start": { - "line": 689, + "line": 688, "column": 12 }, "end": { - "line": 689, + "line": 688, "column": 24 } }, @@ -7488,15 +7418,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22492, - "end": 22501, + "start": 22432, + "end": 22441, "loc": { "start": { - "line": 689, + "line": 688, "column": 12 }, "end": { - "line": 689, + "line": 688, "column": 21 }, "identifierName": "panDeltaX" @@ -7505,15 +7435,15 @@ }, "value": { "type": "NumericLiteral", - "start": 22503, - "end": 22504, + "start": 22443, + "end": 22444, "loc": { "start": { - "line": 689, + "line": 688, "column": 23 }, "end": { - "line": 689, + "line": 688, "column": 24 } }, @@ -7526,15 +7456,15 @@ }, { "type": "ObjectProperty", - "start": 22518, - "end": 22530, + "start": 22458, + "end": 22470, "loc": { "start": { - "line": 690, + "line": 689, "column": 12 }, "end": { - "line": 690, + "line": 689, "column": 24 } }, @@ -7543,15 +7473,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22518, - "end": 22527, + "start": 22458, + "end": 22467, "loc": { "start": { - "line": 690, + "line": 689, "column": 12 }, "end": { - "line": 690, + "line": 689, "column": 21 }, "identifierName": "panDeltaY" @@ -7560,15 +7490,15 @@ }, "value": { "type": "NumericLiteral", - "start": 22529, - "end": 22530, + "start": 22469, + "end": 22470, "loc": { "start": { - "line": 690, + "line": 689, "column": 23 }, "end": { - "line": 690, + "line": 689, "column": 24 } }, @@ -7581,15 +7511,15 @@ }, { "type": "ObjectProperty", - "start": 22544, - "end": 22556, + "start": 22484, + "end": 22496, "loc": { "start": { - "line": 691, + "line": 690, "column": 12 }, "end": { - "line": 691, + "line": 690, "column": 24 } }, @@ -7598,15 +7528,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22544, - "end": 22553, + "start": 22484, + "end": 22493, "loc": { "start": { - "line": 691, + "line": 690, "column": 12 }, "end": { - "line": 691, + "line": 690, "column": 21 }, "identifierName": "panDeltaZ" @@ -7615,15 +7545,15 @@ }, "value": { "type": "NumericLiteral", - "start": 22555, - "end": 22556, + "start": 22495, + "end": 22496, "loc": { "start": { - "line": 691, + "line": 690, "column": 23 }, "end": { - "line": 691, + "line": 690, "column": 24 } }, @@ -7636,15 +7566,15 @@ }, { "type": "ObjectProperty", - "start": 22570, - "end": 22583, + "start": 22510, + "end": 22523, "loc": { "start": { - "line": 692, + "line": 691, "column": 12 }, "end": { - "line": 692, + "line": 691, "column": 25 } }, @@ -7653,15 +7583,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22570, - "end": 22580, + "start": 22510, + "end": 22520, "loc": { "start": { - "line": 692, + "line": 691, "column": 12 }, "end": { - "line": 692, + "line": 691, "column": 22 }, "identifierName": "dollyDelta" @@ -7670,15 +7600,15 @@ }, "value": { "type": "NumericLiteral", - "start": 22582, - "end": 22583, + "start": 22522, + "end": 22523, "loc": { "start": { - "line": 692, + "line": 691, "column": 24 }, "end": { - "line": 692, + "line": 691, "column": 25 } }, @@ -7697,15 +7627,15 @@ { "type": "CommentLine", "value": " Updates for CameraUpdater to process on next Scene \"tick\" event", - "start": 22328, - "end": 22394, + "start": 22268, + "end": 22334, "loc": { "start": { - "line": 684, + "line": 683, "column": 8 }, "end": { - "line": 684, + "line": 683, "column": 74 } } @@ -7715,15 +7645,15 @@ { "type": "CommentLine", "value": " Controllers to assist input event handlers with controlling the Camera", - "start": 22604, - "end": 22677, + "start": 22544, + "end": 22617, "loc": { "start": { - "line": 695, + "line": 694, "column": 8 }, "end": { - "line": 695, + "line": 694, "column": 81 } } @@ -7732,44 +7662,44 @@ }, { "type": "VariableDeclaration", - "start": 22687, - "end": 22712, + "start": 22627, + "end": 22652, "loc": { "start": { - "line": 697, + "line": 696, "column": 8 }, "end": { - "line": 697, + "line": 696, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 22693, - "end": 22711, + "start": 22633, + "end": 22651, "loc": { "start": { - "line": 697, + "line": 696, "column": 14 }, "end": { - "line": 697, + "line": 696, "column": 32 } }, "id": { "type": "Identifier", - "start": 22693, - "end": 22698, + "start": 22633, + "end": 22638, "loc": { "start": { - "line": 697, + "line": 696, "column": 14 }, "end": { - "line": 697, + "line": 696, "column": 19 }, "identifierName": "scene" @@ -7779,44 +7709,44 @@ }, "init": { "type": "MemberExpression", - "start": 22701, - "end": 22711, + "start": 22641, + "end": 22651, "loc": { "start": { - "line": 697, + "line": 696, "column": 22 }, "end": { - "line": 697, + "line": 696, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 22701, - "end": 22705, + "start": 22641, + "end": 22645, "loc": { "start": { - "line": 697, + "line": 696, "column": 22 }, "end": { - "line": 697, + "line": 696, "column": 26 } } }, "property": { "type": "Identifier", - "start": 22706, - "end": 22711, + "start": 22646, + "end": 22651, "loc": { "start": { - "line": 697, + "line": 696, "column": 27 }, "end": { - "line": 697, + "line": 696, "column": 32 }, "identifierName": "scene" @@ -7833,15 +7763,15 @@ { "type": "CommentLine", "value": " Controllers to assist input event handlers with controlling the Camera", - "start": 22604, - "end": 22677, + "start": 22544, + "end": 22617, "loc": { "start": { - "line": 695, + "line": 694, "column": 8 }, "end": { - "line": 695, + "line": 694, "column": 81 } } @@ -7850,73 +7780,73 @@ }, { "type": "ExpressionStatement", - "start": 22722, - "end": 23086, + "start": 22662, + "end": 23026, "loc": { "start": { - "line": 699, + "line": 698, "column": 8 }, "end": { - "line": 707, + "line": 706, "column": 10 } }, "expression": { "type": "AssignmentExpression", - "start": 22722, - "end": 23085, + "start": 22662, + "end": 23025, "loc": { "start": { - "line": 699, + "line": 698, "column": 8 }, "end": { - "line": 707, + "line": 706, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 22722, - "end": 22739, + "start": 22662, + "end": 22679, "loc": { "start": { - "line": 699, + "line": 698, "column": 8 }, "end": { - "line": 699, + "line": 698, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 22722, - "end": 22726, + "start": 22662, + "end": 22666, "loc": { "start": { - "line": 699, + "line": 698, "column": 8 }, "end": { - "line": 699, + "line": 698, "column": 12 } } }, "property": { "type": "Identifier", - "start": 22727, - "end": 22739, + "start": 22667, + "end": 22679, "loc": { "start": { - "line": 699, + "line": 698, "column": 13 }, "end": { - "line": 699, + "line": 698, "column": 25 }, "identifierName": "_controllers" @@ -7927,30 +7857,30 @@ }, "right": { "type": "ObjectExpression", - "start": 22742, - "end": 23085, + "start": 22682, + "end": 23025, "loc": { "start": { - "line": 699, + "line": 698, "column": 28 }, "end": { - "line": 707, + "line": 706, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 22756, - "end": 22775, + "start": 22696, + "end": 22715, "loc": { "start": { - "line": 700, + "line": 699, "column": 12 }, "end": { - "line": 700, + "line": 699, "column": 31 } }, @@ -7959,15 +7889,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22756, - "end": 22769, + "start": 22696, + "end": 22709, "loc": { "start": { - "line": 700, + "line": 699, "column": 12 }, "end": { - "line": 700, + "line": 699, "column": 25 }, "identifierName": "cameraControl" @@ -7976,15 +7906,15 @@ }, "value": { "type": "ThisExpression", - "start": 22771, - "end": 22775, + "start": 22711, + "end": 22715, "loc": { "start": { - "line": 700, + "line": 699, "column": 27 }, "end": { - "line": 700, + "line": 699, "column": 31 } } @@ -7992,15 +7922,15 @@ }, { "type": "ObjectProperty", - "start": 22789, - "end": 22844, + "start": 22729, + "end": 22784, "loc": { "start": { - "line": 701, + "line": 700, "column": 12 }, "end": { - "line": 701, + "line": 700, "column": 67 } }, @@ -8009,15 +7939,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22789, - "end": 22803, + "start": 22729, + "end": 22743, "loc": { "start": { - "line": 701, + "line": 700, "column": 12 }, "end": { - "line": 701, + "line": 700, "column": 26 }, "identifierName": "pickController" @@ -8026,29 +7956,29 @@ }, "value": { "type": "NewExpression", - "start": 22805, - "end": 22844, + "start": 22745, + "end": 22784, "loc": { "start": { - "line": 701, + "line": 700, "column": 28 }, "end": { - "line": 701, + "line": 700, "column": 67 } }, "callee": { "type": "Identifier", - "start": 22809, - "end": 22823, + "start": 22749, + "end": 22763, "loc": { "start": { - "line": 701, + "line": 700, "column": 32 }, "end": { - "line": 701, + "line": 700, "column": 46 }, "identifierName": "PickController" @@ -8058,59 +7988,59 @@ "arguments": [ { "type": "ThisExpression", - "start": 22824, - "end": 22828, + "start": 22764, + "end": 22768, "loc": { "start": { - "line": 701, + "line": 700, "column": 47 }, "end": { - "line": 701, + "line": 700, "column": 51 } } }, { "type": "MemberExpression", - "start": 22830, - "end": 22843, + "start": 22770, + "end": 22783, "loc": { "start": { - "line": 701, + "line": 700, "column": 53 }, "end": { - "line": 701, + "line": 700, "column": 66 } }, "object": { "type": "ThisExpression", - "start": 22830, - "end": 22834, + "start": 22770, + "end": 22774, "loc": { "start": { - "line": 701, + "line": 700, "column": 53 }, "end": { - "line": 701, + "line": 700, "column": 57 } } }, "property": { "type": "Identifier", - "start": 22835, - "end": 22843, + "start": 22775, + "end": 22783, "loc": { "start": { - "line": 701, + "line": 700, "column": 58 }, "end": { - "line": 701, + "line": 700, "column": 66 }, "identifierName": "_configs" @@ -8124,15 +8054,15 @@ }, { "type": "ObjectProperty", - "start": 22858, - "end": 22916, + "start": 22798, + "end": 22856, "loc": { "start": { - "line": 702, + "line": 701, "column": 12 }, "end": { - "line": 702, + "line": 701, "column": 70 } }, @@ -8141,15 +8071,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22858, - "end": 22873, + "start": 22798, + "end": 22813, "loc": { "start": { - "line": 702, + "line": 701, "column": 12 }, "end": { - "line": 702, + "line": 701, "column": 27 }, "identifierName": "pivotController" @@ -8158,29 +8088,29 @@ }, "value": { "type": "NewExpression", - "start": 22875, - "end": 22916, + "start": 22815, + "end": 22856, "loc": { "start": { - "line": 702, + "line": 701, "column": 29 }, "end": { - "line": 702, + "line": 701, "column": 70 } }, "callee": { "type": "Identifier", - "start": 22879, - "end": 22894, + "start": 22819, + "end": 22834, "loc": { "start": { - "line": 702, + "line": 701, "column": 33 }, "end": { - "line": 702, + "line": 701, "column": 48 }, "identifierName": "PivotController" @@ -8190,15 +8120,15 @@ "arguments": [ { "type": "Identifier", - "start": 22895, - "end": 22900, + "start": 22835, + "end": 22840, "loc": { "start": { - "line": 702, + "line": 701, "column": 49 }, "end": { - "line": 702, + "line": 701, "column": 54 }, "identifierName": "scene" @@ -8207,44 +8137,44 @@ }, { "type": "MemberExpression", - "start": 22902, - "end": 22915, + "start": 22842, + "end": 22855, "loc": { "start": { - "line": 702, + "line": 701, "column": 56 }, "end": { - "line": 702, + "line": 701, "column": 69 } }, "object": { "type": "ThisExpression", - "start": 22902, - "end": 22906, + "start": 22842, + "end": 22846, "loc": { "start": { - "line": 702, + "line": 701, "column": 56 }, "end": { - "line": 702, + "line": 701, "column": 60 } } }, "property": { "type": "Identifier", - "start": 22907, - "end": 22915, + "start": 22847, + "end": 22855, "loc": { "start": { - "line": 702, + "line": 701, "column": 61 }, "end": { - "line": 702, + "line": 701, "column": 69 }, "identifierName": "_configs" @@ -8258,15 +8188,15 @@ }, { "type": "ObjectProperty", - "start": 22930, - "end": 22969, + "start": 22870, + "end": 22909, "loc": { "start": { - "line": 703, + "line": 702, "column": 12 }, "end": { - "line": 703, + "line": 702, "column": 51 } }, @@ -8275,15 +8205,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22930, - "end": 22943, + "start": 22870, + "end": 22883, "loc": { "start": { - "line": 703, + "line": 702, "column": 12 }, "end": { - "line": 703, + "line": 702, "column": 25 }, "identifierName": "panController" @@ -8292,29 +8222,29 @@ }, "value": { "type": "NewExpression", - "start": 22945, - "end": 22969, + "start": 22885, + "end": 22909, "loc": { "start": { - "line": 703, + "line": 702, "column": 27 }, "end": { - "line": 703, + "line": 702, "column": 51 } }, "callee": { "type": "Identifier", - "start": 22949, - "end": 22962, + "start": 22889, + "end": 22902, "loc": { "start": { - "line": 703, + "line": 702, "column": 31 }, "end": { - "line": 703, + "line": 702, "column": 44 }, "identifierName": "PanController" @@ -8324,15 +8254,15 @@ "arguments": [ { "type": "Identifier", - "start": 22963, - "end": 22968, + "start": 22903, + "end": 22908, "loc": { "start": { - "line": 703, + "line": 702, "column": 45 }, "end": { - "line": 703, + "line": 702, "column": 50 }, "identifierName": "scene" @@ -8344,15 +8274,15 @@ }, { "type": "ObjectProperty", - "start": 22983, - "end": 23075, + "start": 22923, + "end": 23015, "loc": { "start": { - "line": 704, + "line": 703, "column": 12 }, "end": { - "line": 706, + "line": 705, "column": 14 } }, @@ -8361,15 +8291,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22983, - "end": 22995, + "start": 22923, + "end": 22935, "loc": { "start": { - "line": 704, + "line": 703, "column": 12 }, "end": { - "line": 704, + "line": 703, "column": 24 }, "identifierName": "cameraFlight" @@ -8378,29 +8308,29 @@ }, "value": { "type": "NewExpression", - "start": 22997, - "end": 23075, + "start": 22937, + "end": 23015, "loc": { "start": { - "line": 704, + "line": 703, "column": 26 }, "end": { - "line": 706, + "line": 705, "column": 14 } }, "callee": { "type": "Identifier", - "start": 23001, - "end": 23022, + "start": 22941, + "end": 22962, "loc": { "start": { - "line": 704, + "line": 703, "column": 30 }, "end": { - "line": 704, + "line": 703, "column": 51 }, "identifierName": "CameraFlightAnimation" @@ -8410,45 +8340,45 @@ "arguments": [ { "type": "ThisExpression", - "start": 23023, - "end": 23027, + "start": 22963, + "end": 22967, "loc": { "start": { - "line": 704, + "line": 703, "column": 52 }, "end": { - "line": 704, + "line": 703, "column": 56 } } }, { "type": "ObjectExpression", - "start": 23029, - "end": 23074, + "start": 22969, + "end": 23014, "loc": { "start": { - "line": 704, + "line": 703, "column": 58 }, "end": { - "line": 706, + "line": 705, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 23047, - "end": 23060, + "start": 22987, + "end": 23000, "loc": { "start": { - "line": 705, + "line": 704, "column": 16 }, "end": { - "line": 705, + "line": 704, "column": 29 } }, @@ -8457,15 +8387,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 23047, - "end": 23055, + "start": 22987, + "end": 22995, "loc": { "start": { - "line": 705, + "line": 704, "column": 16 }, "end": { - "line": 705, + "line": 704, "column": 24 }, "identifierName": "duration" @@ -8474,15 +8404,15 @@ }, "value": { "type": "NumericLiteral", - "start": 23057, - "end": 23060, + "start": 22997, + "end": 23000, "loc": { "start": { - "line": 705, + "line": 704, "column": 26 }, "end": { - "line": 705, + "line": 704, "column": 29 } }, @@ -8505,15 +8435,15 @@ { "type": "CommentLine", "value": " Input event handlers", - "start": 23096, - "end": 23119, + "start": 23036, + "end": 23059, "loc": { "start": { - "line": 709, + "line": 708, "column": 8 }, "end": { - "line": 709, + "line": 708, "column": 31 } } @@ -8522,58 +8452,58 @@ }, { "type": "ExpressionStatement", - "start": 23129, - "end": 23963, + "start": 23069, + "end": 23903, "loc": { "start": { - "line": 711, + "line": 710, "column": 8 }, "end": { - "line": 719, + "line": 718, "column": 10 } }, "expression": { "type": "AssignmentExpression", - "start": 23129, - "end": 23962, + "start": 23069, + "end": 23902, "loc": { "start": { - "line": 711, + "line": 710, "column": 8 }, "end": { - "line": 719, + "line": 718, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 23129, - "end": 23143, + "start": 23069, + "end": 23083, "loc": { "start": { - "line": 711, + "line": 710, "column": 8 }, "end": { - "line": 711, + "line": 710, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 23129, - "end": 23133, + "start": 23069, + "end": 23073, "loc": { "start": { - "line": 711, + "line": 710, "column": 8 }, "end": { - "line": 711, + "line": 710, "column": 12 } }, @@ -8581,15 +8511,15 @@ }, "property": { "type": "Identifier", - "start": 23134, - "end": 23143, + "start": 23074, + "end": 23083, "loc": { "start": { - "line": 711, + "line": 710, "column": 13 }, "end": { - "line": 711, + "line": 710, "column": 22 }, "identifierName": "_handlers" @@ -8601,44 +8531,44 @@ }, "right": { "type": "ArrayExpression", - "start": 23146, - "end": 23962, + "start": 23086, + "end": 23902, "loc": { "start": { - "line": 711, + "line": 710, "column": 25 }, "end": { - "line": 719, + "line": 718, "column": 9 } }, "elements": [ { "type": "NewExpression", - "start": 23160, - "end": 23255, + "start": 23100, + "end": 23195, "loc": { "start": { - "line": 712, + "line": 711, "column": 12 }, "end": { - "line": 712, + "line": 711, "column": 107 } }, "callee": { "type": "Identifier", - "start": 23164, - "end": 23180, + "start": 23104, + "end": 23120, "loc": { "start": { - "line": 712, + "line": 711, "column": 16 }, "end": { - "line": 712, + "line": 711, "column": 32 }, "identifierName": "MouseMiscHandler" @@ -8648,44 +8578,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 23181, - "end": 23191, + "start": 23121, + "end": 23131, "loc": { "start": { - "line": 712, + "line": 711, "column": 33 }, "end": { - "line": 712, + "line": 711, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 23181, - "end": 23185, + "start": 23121, + "end": 23125, "loc": { "start": { - "line": 712, + "line": 711, "column": 33 }, "end": { - "line": 712, + "line": 711, "column": 37 } } }, "property": { "type": "Identifier", - "start": 23186, - "end": 23191, + "start": 23126, + "end": 23131, "loc": { "start": { - "line": 712, + "line": 711, "column": 38 }, "end": { - "line": 712, + "line": 711, "column": 43 }, "identifierName": "scene" @@ -8696,44 +8626,44 @@ }, { "type": "MemberExpression", - "start": 23193, - "end": 23210, + "start": 23133, + "end": 23150, "loc": { "start": { - "line": 712, + "line": 711, "column": 45 }, "end": { - "line": 712, + "line": 711, "column": 62 } }, "object": { "type": "ThisExpression", - "start": 23193, - "end": 23197, + "start": 23133, + "end": 23137, "loc": { "start": { - "line": 712, + "line": 711, "column": 45 }, "end": { - "line": 712, + "line": 711, "column": 49 } } }, "property": { "type": "Identifier", - "start": 23198, - "end": 23210, + "start": 23138, + "end": 23150, "loc": { "start": { - "line": 712, + "line": 711, "column": 50 }, "end": { - "line": 712, + "line": 711, "column": 62 }, "identifierName": "_controllers" @@ -8744,44 +8674,44 @@ }, { "type": "MemberExpression", - "start": 23212, - "end": 23225, + "start": 23152, + "end": 23165, "loc": { "start": { - "line": 712, + "line": 711, "column": 64 }, "end": { - "line": 712, + "line": 711, "column": 77 } }, "object": { "type": "ThisExpression", - "start": 23212, - "end": 23216, + "start": 23152, + "end": 23156, "loc": { "start": { - "line": 712, + "line": 711, "column": 64 }, "end": { - "line": 712, + "line": 711, "column": 68 } } }, "property": { "type": "Identifier", - "start": 23217, - "end": 23225, + "start": 23157, + "end": 23165, "loc": { "start": { - "line": 712, + "line": 711, "column": 69 }, "end": { - "line": 712, + "line": 711, "column": 77 }, "identifierName": "_configs" @@ -8792,44 +8722,44 @@ }, { "type": "MemberExpression", - "start": 23227, - "end": 23239, + "start": 23167, + "end": 23179, "loc": { "start": { - "line": 712, + "line": 711, "column": 79 }, "end": { - "line": 712, + "line": 711, "column": 91 } }, "object": { "type": "ThisExpression", - "start": 23227, - "end": 23231, + "start": 23167, + "end": 23171, "loc": { "start": { - "line": 712, + "line": 711, "column": 79 }, "end": { - "line": 712, + "line": 711, "column": 83 } } }, "property": { "type": "Identifier", - "start": 23232, - "end": 23239, + "start": 23172, + "end": 23179, "loc": { "start": { - "line": 712, + "line": 711, "column": 84 }, "end": { - "line": 712, + "line": 711, "column": 91 }, "identifierName": "_states" @@ -8840,44 +8770,44 @@ }, { "type": "MemberExpression", - "start": 23241, - "end": 23254, + "start": 23181, + "end": 23194, "loc": { "start": { - "line": 712, + "line": 711, "column": 93 }, "end": { - "line": 712, + "line": 711, "column": 106 } }, "object": { "type": "ThisExpression", - "start": 23241, - "end": 23245, + "start": 23181, + "end": 23185, "loc": { "start": { - "line": 712, + "line": 711, "column": 93 }, "end": { - "line": 712, + "line": 711, "column": 97 } } }, "property": { "type": "Identifier", - "start": 23246, - "end": 23254, + "start": 23186, + "end": 23194, "loc": { "start": { - "line": 712, + "line": 711, "column": 98 }, "end": { - "line": 712, + "line": 711, "column": 106 }, "identifierName": "_updates" @@ -8890,29 +8820,29 @@ }, { "type": "NewExpression", - "start": 23269, - "end": 23377, + "start": 23209, + "end": 23317, "loc": { "start": { - "line": 713, + "line": 712, "column": 12 }, "end": { - "line": 713, + "line": 712, "column": 120 } }, "callee": { "type": "Identifier", - "start": 23273, - "end": 23302, + "start": 23213, + "end": 23242, "loc": { "start": { - "line": 713, + "line": 712, "column": 16 }, "end": { - "line": 713, + "line": 712, "column": 45 }, "identifierName": "TouchPanRotateAndDollyHandler" @@ -8922,44 +8852,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 23303, - "end": 23313, + "start": 23243, + "end": 23253, "loc": { "start": { - "line": 713, + "line": 712, "column": 46 }, "end": { - "line": 713, + "line": 712, "column": 56 } }, "object": { "type": "ThisExpression", - "start": 23303, - "end": 23307, + "start": 23243, + "end": 23247, "loc": { "start": { - "line": 713, + "line": 712, "column": 46 }, "end": { - "line": 713, + "line": 712, "column": 50 } } }, "property": { "type": "Identifier", - "start": 23308, - "end": 23313, + "start": 23248, + "end": 23253, "loc": { "start": { - "line": 713, + "line": 712, "column": 51 }, "end": { - "line": 713, + "line": 712, "column": 56 }, "identifierName": "scene" @@ -8970,44 +8900,44 @@ }, { "type": "MemberExpression", - "start": 23315, - "end": 23332, + "start": 23255, + "end": 23272, "loc": { "start": { - "line": 713, + "line": 712, "column": 58 }, "end": { - "line": 713, + "line": 712, "column": 75 } }, "object": { "type": "ThisExpression", - "start": 23315, - "end": 23319, + "start": 23255, + "end": 23259, "loc": { "start": { - "line": 713, + "line": 712, "column": 58 }, "end": { - "line": 713, + "line": 712, "column": 62 } } }, "property": { "type": "Identifier", - "start": 23320, - "end": 23332, + "start": 23260, + "end": 23272, "loc": { "start": { - "line": 713, + "line": 712, "column": 63 }, "end": { - "line": 713, + "line": 712, "column": 75 }, "identifierName": "_controllers" @@ -9018,44 +8948,44 @@ }, { "type": "MemberExpression", - "start": 23334, - "end": 23347, + "start": 23274, + "end": 23287, "loc": { "start": { - "line": 713, + "line": 712, "column": 77 }, "end": { - "line": 713, + "line": 712, "column": 90 } }, "object": { "type": "ThisExpression", - "start": 23334, - "end": 23338, + "start": 23274, + "end": 23278, "loc": { "start": { - "line": 713, + "line": 712, "column": 77 }, "end": { - "line": 713, + "line": 712, "column": 81 } } }, "property": { "type": "Identifier", - "start": 23339, - "end": 23347, + "start": 23279, + "end": 23287, "loc": { "start": { - "line": 713, + "line": 712, "column": 82 }, "end": { - "line": 713, + "line": 712, "column": 90 }, "identifierName": "_configs" @@ -9066,44 +8996,44 @@ }, { "type": "MemberExpression", - "start": 23349, - "end": 23361, + "start": 23289, + "end": 23301, "loc": { "start": { - "line": 713, + "line": 712, "column": 92 }, "end": { - "line": 713, + "line": 712, "column": 104 } }, "object": { "type": "ThisExpression", - "start": 23349, - "end": 23353, + "start": 23289, + "end": 23293, "loc": { "start": { - "line": 713, + "line": 712, "column": 92 }, "end": { - "line": 713, + "line": 712, "column": 96 } } }, "property": { "type": "Identifier", - "start": 23354, - "end": 23361, + "start": 23294, + "end": 23301, "loc": { "start": { - "line": 713, + "line": 712, "column": 97 }, "end": { - "line": 713, + "line": 712, "column": 104 }, "identifierName": "_states" @@ -9114,44 +9044,44 @@ }, { "type": "MemberExpression", - "start": 23363, - "end": 23376, + "start": 23303, + "end": 23316, "loc": { "start": { - "line": 713, + "line": 712, "column": 106 }, "end": { - "line": 713, + "line": 712, "column": 119 } }, "object": { "type": "ThisExpression", - "start": 23363, - "end": 23367, + "start": 23303, + "end": 23307, "loc": { "start": { - "line": 713, + "line": 712, "column": 106 }, "end": { - "line": 713, + "line": 712, "column": 110 } } }, "property": { "type": "Identifier", - "start": 23368, - "end": 23376, + "start": 23308, + "end": 23316, "loc": { "start": { - "line": 713, + "line": 712, "column": 111 }, "end": { - "line": 713, + "line": 712, "column": 119 }, "identifierName": "_updates" @@ -9164,29 +9094,29 @@ }, { "type": "NewExpression", - "start": 23391, - "end": 23496, + "start": 23331, + "end": 23436, "loc": { "start": { - "line": 714, + "line": 713, "column": 12 }, "end": { - "line": 714, + "line": 713, "column": 117 } }, "callee": { "type": "Identifier", - "start": 23395, - "end": 23421, + "start": 23335, + "end": 23361, "loc": { "start": { - "line": 714, + "line": 713, "column": 16 }, "end": { - "line": 714, + "line": 713, "column": 42 }, "identifierName": "MousePanRotateDollyHandler" @@ -9196,44 +9126,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 23422, - "end": 23432, + "start": 23362, + "end": 23372, "loc": { "start": { - "line": 714, + "line": 713, "column": 43 }, "end": { - "line": 714, + "line": 713, "column": 53 } }, "object": { "type": "ThisExpression", - "start": 23422, - "end": 23426, + "start": 23362, + "end": 23366, "loc": { "start": { - "line": 714, + "line": 713, "column": 43 }, "end": { - "line": 714, + "line": 713, "column": 47 } } }, "property": { "type": "Identifier", - "start": 23427, - "end": 23432, + "start": 23367, + "end": 23372, "loc": { "start": { - "line": 714, + "line": 713, "column": 48 }, "end": { - "line": 714, + "line": 713, "column": 53 }, "identifierName": "scene" @@ -9244,44 +9174,44 @@ }, { "type": "MemberExpression", - "start": 23434, - "end": 23451, + "start": 23374, + "end": 23391, "loc": { "start": { - "line": 714, + "line": 713, "column": 55 }, "end": { - "line": 714, + "line": 713, "column": 72 } }, "object": { "type": "ThisExpression", - "start": 23434, - "end": 23438, + "start": 23374, + "end": 23378, "loc": { "start": { - "line": 714, + "line": 713, "column": 55 }, "end": { - "line": 714, + "line": 713, "column": 59 } } }, "property": { "type": "Identifier", - "start": 23439, - "end": 23451, + "start": 23379, + "end": 23391, "loc": { "start": { - "line": 714, + "line": 713, "column": 60 }, "end": { - "line": 714, + "line": 713, "column": 72 }, "identifierName": "_controllers" @@ -9292,44 +9222,44 @@ }, { "type": "MemberExpression", - "start": 23453, - "end": 23466, + "start": 23393, + "end": 23406, "loc": { "start": { - "line": 714, + "line": 713, "column": 74 }, "end": { - "line": 714, + "line": 713, "column": 87 } }, "object": { "type": "ThisExpression", - "start": 23453, - "end": 23457, + "start": 23393, + "end": 23397, "loc": { "start": { - "line": 714, + "line": 713, "column": 74 }, "end": { - "line": 714, + "line": 713, "column": 78 } } }, "property": { "type": "Identifier", - "start": 23458, - "end": 23466, + "start": 23398, + "end": 23406, "loc": { "start": { - "line": 714, + "line": 713, "column": 79 }, "end": { - "line": 714, + "line": 713, "column": 87 }, "identifierName": "_configs" @@ -9340,44 +9270,44 @@ }, { "type": "MemberExpression", - "start": 23468, - "end": 23480, + "start": 23408, + "end": 23420, "loc": { "start": { - "line": 714, + "line": 713, "column": 89 }, "end": { - "line": 714, + "line": 713, "column": 101 } }, "object": { "type": "ThisExpression", - "start": 23468, - "end": 23472, + "start": 23408, + "end": 23412, "loc": { "start": { - "line": 714, + "line": 713, "column": 89 }, "end": { - "line": 714, + "line": 713, "column": 93 } } }, "property": { "type": "Identifier", - "start": 23473, - "end": 23480, + "start": 23413, + "end": 23420, "loc": { "start": { - "line": 714, + "line": 713, "column": 94 }, "end": { - "line": 714, + "line": 713, "column": 101 }, "identifierName": "_states" @@ -9388,44 +9318,44 @@ }, { "type": "MemberExpression", - "start": 23482, - "end": 23495, + "start": 23422, + "end": 23435, "loc": { "start": { - "line": 714, + "line": 713, "column": 103 }, "end": { - "line": 714, + "line": 713, "column": 116 } }, "object": { "type": "ThisExpression", - "start": 23482, - "end": 23486, + "start": 23422, + "end": 23426, "loc": { "start": { - "line": 714, + "line": 713, "column": 103 }, "end": { - "line": 714, + "line": 713, "column": 107 } } }, "property": { "type": "Identifier", - "start": 23487, - "end": 23495, + "start": 23427, + "end": 23435, "loc": { "start": { - "line": 714, + "line": 713, "column": 108 }, "end": { - "line": 714, + "line": 713, "column": 116 }, "identifierName": "_updates" @@ -9438,29 +9368,29 @@ }, { "type": "NewExpression", - "start": 23510, - "end": 23612, + "start": 23450, + "end": 23552, "loc": { "start": { - "line": 715, + "line": 714, "column": 12 }, "end": { - "line": 715, + "line": 714, "column": 114 } }, "callee": { "type": "Identifier", - "start": 23514, - "end": 23537, + "start": 23454, + "end": 23477, "loc": { "start": { - "line": 715, + "line": 714, "column": 16 }, "end": { - "line": 715, + "line": 714, "column": 39 }, "identifierName": "KeyboardAxisViewHandler" @@ -9470,44 +9400,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 23538, - "end": 23548, + "start": 23478, + "end": 23488, "loc": { "start": { - "line": 715, + "line": 714, "column": 40 }, "end": { - "line": 715, + "line": 714, "column": 50 } }, "object": { "type": "ThisExpression", - "start": 23538, - "end": 23542, + "start": 23478, + "end": 23482, "loc": { "start": { - "line": 715, + "line": 714, "column": 40 }, "end": { - "line": 715, + "line": 714, "column": 44 } } }, "property": { "type": "Identifier", - "start": 23543, - "end": 23548, + "start": 23483, + "end": 23488, "loc": { "start": { - "line": 715, + "line": 714, "column": 45 }, "end": { - "line": 715, + "line": 714, "column": 50 }, "identifierName": "scene" @@ -9518,44 +9448,44 @@ }, { "type": "MemberExpression", - "start": 23550, - "end": 23567, + "start": 23490, + "end": 23507, "loc": { "start": { - "line": 715, + "line": 714, "column": 52 }, "end": { - "line": 715, + "line": 714, "column": 69 } }, "object": { "type": "ThisExpression", - "start": 23550, - "end": 23554, + "start": 23490, + "end": 23494, "loc": { "start": { - "line": 715, + "line": 714, "column": 52 }, "end": { - "line": 715, + "line": 714, "column": 56 } } }, "property": { "type": "Identifier", - "start": 23555, - "end": 23567, + "start": 23495, + "end": 23507, "loc": { "start": { - "line": 715, + "line": 714, "column": 57 }, "end": { - "line": 715, + "line": 714, "column": 69 }, "identifierName": "_controllers" @@ -9566,44 +9496,44 @@ }, { "type": "MemberExpression", - "start": 23569, - "end": 23582, + "start": 23509, + "end": 23522, "loc": { "start": { - "line": 715, + "line": 714, "column": 71 }, "end": { - "line": 715, + "line": 714, "column": 84 } }, "object": { "type": "ThisExpression", - "start": 23569, - "end": 23573, + "start": 23509, + "end": 23513, "loc": { "start": { - "line": 715, + "line": 714, "column": 71 }, "end": { - "line": 715, + "line": 714, "column": 75 } } }, "property": { "type": "Identifier", - "start": 23574, - "end": 23582, + "start": 23514, + "end": 23522, "loc": { "start": { - "line": 715, + "line": 714, "column": 76 }, "end": { - "line": 715, + "line": 714, "column": 84 }, "identifierName": "_configs" @@ -9614,44 +9544,44 @@ }, { "type": "MemberExpression", - "start": 23584, - "end": 23596, + "start": 23524, + "end": 23536, "loc": { "start": { - "line": 715, + "line": 714, "column": 86 }, "end": { - "line": 715, + "line": 714, "column": 98 } }, "object": { "type": "ThisExpression", - "start": 23584, - "end": 23588, + "start": 23524, + "end": 23528, "loc": { "start": { - "line": 715, + "line": 714, "column": 86 }, "end": { - "line": 715, + "line": 714, "column": 90 } } }, "property": { "type": "Identifier", - "start": 23589, - "end": 23596, + "start": 23529, + "end": 23536, "loc": { "start": { - "line": 715, + "line": 714, "column": 91 }, "end": { - "line": 715, + "line": 714, "column": 98 }, "identifierName": "_states" @@ -9662,44 +9592,44 @@ }, { "type": "MemberExpression", - "start": 23598, - "end": 23611, + "start": 23538, + "end": 23551, "loc": { "start": { - "line": 715, + "line": 714, "column": 100 }, "end": { - "line": 715, + "line": 714, "column": 113 } }, "object": { "type": "ThisExpression", - "start": 23598, - "end": 23602, + "start": 23538, + "end": 23542, "loc": { "start": { - "line": 715, + "line": 714, "column": 100 }, "end": { - "line": 715, + "line": 714, "column": 104 } } }, "property": { "type": "Identifier", - "start": 23603, - "end": 23611, + "start": 23543, + "end": 23551, "loc": { "start": { - "line": 715, + "line": 714, "column": 105 }, "end": { - "line": 715, + "line": 714, "column": 113 }, "identifierName": "_updates" @@ -9712,29 +9642,29 @@ }, { "type": "NewExpression", - "start": 23626, - "end": 23721, + "start": 23566, + "end": 23661, "loc": { "start": { - "line": 716, + "line": 715, "column": 12 }, "end": { - "line": 716, + "line": 715, "column": 107 } }, "callee": { "type": "Identifier", - "start": 23630, - "end": 23646, + "start": 23570, + "end": 23586, "loc": { "start": { - "line": 716, + "line": 715, "column": 16 }, "end": { - "line": 716, + "line": 715, "column": 32 }, "identifierName": "MousePickHandler" @@ -9744,44 +9674,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 23647, - "end": 23657, + "start": 23587, + "end": 23597, "loc": { "start": { - "line": 716, + "line": 715, "column": 33 }, "end": { - "line": 716, + "line": 715, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 23647, - "end": 23651, + "start": 23587, + "end": 23591, "loc": { "start": { - "line": 716, + "line": 715, "column": 33 }, "end": { - "line": 716, + "line": 715, "column": 37 } } }, "property": { "type": "Identifier", - "start": 23652, - "end": 23657, + "start": 23592, + "end": 23597, "loc": { "start": { - "line": 716, + "line": 715, "column": 38 }, "end": { - "line": 716, + "line": 715, "column": 43 }, "identifierName": "scene" @@ -9792,44 +9722,44 @@ }, { "type": "MemberExpression", - "start": 23659, - "end": 23676, + "start": 23599, + "end": 23616, "loc": { "start": { - "line": 716, + "line": 715, "column": 45 }, "end": { - "line": 716, + "line": 715, "column": 62 } }, "object": { "type": "ThisExpression", - "start": 23659, - "end": 23663, + "start": 23599, + "end": 23603, "loc": { "start": { - "line": 716, + "line": 715, "column": 45 }, "end": { - "line": 716, + "line": 715, "column": 49 } } }, "property": { "type": "Identifier", - "start": 23664, - "end": 23676, + "start": 23604, + "end": 23616, "loc": { "start": { - "line": 716, + "line": 715, "column": 50 }, "end": { - "line": 716, + "line": 715, "column": 62 }, "identifierName": "_controllers" @@ -9840,44 +9770,44 @@ }, { "type": "MemberExpression", - "start": 23678, - "end": 23691, + "start": 23618, + "end": 23631, "loc": { "start": { - "line": 716, + "line": 715, "column": 64 }, "end": { - "line": 716, + "line": 715, "column": 77 } }, "object": { "type": "ThisExpression", - "start": 23678, - "end": 23682, + "start": 23618, + "end": 23622, "loc": { "start": { - "line": 716, + "line": 715, "column": 64 }, "end": { - "line": 716, + "line": 715, "column": 68 } } }, "property": { "type": "Identifier", - "start": 23683, - "end": 23691, + "start": 23623, + "end": 23631, "loc": { "start": { - "line": 716, + "line": 715, "column": 69 }, "end": { - "line": 716, + "line": 715, "column": 77 }, "identifierName": "_configs" @@ -9888,44 +9818,44 @@ }, { "type": "MemberExpression", - "start": 23693, - "end": 23705, + "start": 23633, + "end": 23645, "loc": { "start": { - "line": 716, + "line": 715, "column": 79 }, "end": { - "line": 716, + "line": 715, "column": 91 } }, "object": { "type": "ThisExpression", - "start": 23693, - "end": 23697, + "start": 23633, + "end": 23637, "loc": { "start": { - "line": 716, + "line": 715, "column": 79 }, "end": { - "line": 716, + "line": 715, "column": 83 } } }, "property": { "type": "Identifier", - "start": 23698, - "end": 23705, + "start": 23638, + "end": 23645, "loc": { "start": { - "line": 716, + "line": 715, "column": 84 }, "end": { - "line": 716, + "line": 715, "column": 91 }, "identifierName": "_states" @@ -9936,44 +9866,44 @@ }, { "type": "MemberExpression", - "start": 23707, - "end": 23720, + "start": 23647, + "end": 23660, "loc": { "start": { - "line": 716, + "line": 715, "column": 93 }, "end": { - "line": 716, + "line": 715, "column": 106 } }, "object": { "type": "ThisExpression", - "start": 23707, - "end": 23711, + "start": 23647, + "end": 23651, "loc": { "start": { - "line": 716, + "line": 715, "column": 93 }, "end": { - "line": 716, + "line": 715, "column": 97 } } }, "property": { "type": "Identifier", - "start": 23712, - "end": 23720, + "start": 23652, + "end": 23660, "loc": { "start": { - "line": 716, + "line": 715, "column": 98 }, "end": { - "line": 716, + "line": 715, "column": 106 }, "identifierName": "_updates" @@ -9986,29 +9916,29 @@ }, { "type": "NewExpression", - "start": 23735, - "end": 23830, + "start": 23675, + "end": 23770, "loc": { "start": { - "line": 717, + "line": 716, "column": 12 }, "end": { - "line": 717, + "line": 716, "column": 107 } }, "callee": { "type": "Identifier", - "start": 23739, - "end": 23755, + "start": 23679, + "end": 23695, "loc": { "start": { - "line": 717, + "line": 716, "column": 16 }, "end": { - "line": 717, + "line": 716, "column": 32 }, "identifierName": "TouchPickHandler" @@ -10018,44 +9948,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 23756, - "end": 23766, + "start": 23696, + "end": 23706, "loc": { "start": { - "line": 717, + "line": 716, "column": 33 }, "end": { - "line": 717, + "line": 716, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 23756, - "end": 23760, + "start": 23696, + "end": 23700, "loc": { "start": { - "line": 717, + "line": 716, "column": 33 }, "end": { - "line": 717, + "line": 716, "column": 37 } } }, "property": { "type": "Identifier", - "start": 23761, - "end": 23766, + "start": 23701, + "end": 23706, "loc": { "start": { - "line": 717, + "line": 716, "column": 38 }, "end": { - "line": 717, + "line": 716, "column": 43 }, "identifierName": "scene" @@ -10066,44 +9996,44 @@ }, { "type": "MemberExpression", - "start": 23768, - "end": 23785, + "start": 23708, + "end": 23725, "loc": { "start": { - "line": 717, + "line": 716, "column": 45 }, "end": { - "line": 717, + "line": 716, "column": 62 } }, "object": { "type": "ThisExpression", - "start": 23768, - "end": 23772, + "start": 23708, + "end": 23712, "loc": { "start": { - "line": 717, + "line": 716, "column": 45 }, "end": { - "line": 717, + "line": 716, "column": 49 } } }, "property": { "type": "Identifier", - "start": 23773, - "end": 23785, + "start": 23713, + "end": 23725, "loc": { "start": { - "line": 717, + "line": 716, "column": 50 }, "end": { - "line": 717, + "line": 716, "column": 62 }, "identifierName": "_controllers" @@ -10114,44 +10044,44 @@ }, { "type": "MemberExpression", - "start": 23787, - "end": 23800, + "start": 23727, + "end": 23740, "loc": { "start": { - "line": 717, + "line": 716, "column": 64 }, "end": { - "line": 717, + "line": 716, "column": 77 } }, "object": { "type": "ThisExpression", - "start": 23787, - "end": 23791, + "start": 23727, + "end": 23731, "loc": { "start": { - "line": 717, + "line": 716, "column": 64 }, "end": { - "line": 717, + "line": 716, "column": 68 } } }, "property": { "type": "Identifier", - "start": 23792, - "end": 23800, + "start": 23732, + "end": 23740, "loc": { "start": { - "line": 717, + "line": 716, "column": 69 }, "end": { - "line": 717, + "line": 716, "column": 77 }, "identifierName": "_configs" @@ -10162,44 +10092,44 @@ }, { "type": "MemberExpression", - "start": 23802, - "end": 23814, + "start": 23742, + "end": 23754, "loc": { "start": { - "line": 717, + "line": 716, "column": 79 }, "end": { - "line": 717, + "line": 716, "column": 91 } }, "object": { "type": "ThisExpression", - "start": 23802, - "end": 23806, + "start": 23742, + "end": 23746, "loc": { "start": { - "line": 717, + "line": 716, "column": 79 }, "end": { - "line": 717, + "line": 716, "column": 83 } } }, "property": { "type": "Identifier", - "start": 23807, - "end": 23814, + "start": 23747, + "end": 23754, "loc": { "start": { - "line": 717, + "line": 716, "column": 84 }, "end": { - "line": 717, + "line": 716, "column": 91 }, "identifierName": "_states" @@ -10210,44 +10140,44 @@ }, { "type": "MemberExpression", - "start": 23816, - "end": 23829, + "start": 23756, + "end": 23769, "loc": { "start": { - "line": 717, + "line": 716, "column": 93 }, "end": { - "line": 717, + "line": 716, "column": 106 } }, "object": { "type": "ThisExpression", - "start": 23816, - "end": 23820, + "start": 23756, + "end": 23760, "loc": { "start": { - "line": 717, + "line": 716, "column": 93 }, "end": { - "line": 717, + "line": 716, "column": 97 } } }, "property": { "type": "Identifier", - "start": 23821, - "end": 23829, + "start": 23761, + "end": 23769, "loc": { "start": { - "line": 717, + "line": 716, "column": 98 }, "end": { - "line": 717, + "line": 716, "column": 106 }, "identifierName": "_updates" @@ -10260,29 +10190,29 @@ }, { "type": "NewExpression", - "start": 23844, - "end": 23952, + "start": 23784, + "end": 23892, "loc": { "start": { - "line": 718, + "line": 717, "column": 12 }, "end": { - "line": 718, + "line": 717, "column": 120 } }, "callee": { "type": "Identifier", - "start": 23848, - "end": 23877, + "start": 23788, + "end": 23817, "loc": { "start": { - "line": 718, + "line": 717, "column": 16 }, "end": { - "line": 718, + "line": 717, "column": 45 }, "identifierName": "KeyboardPanRotateDollyHandler" @@ -10292,44 +10222,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 23878, - "end": 23888, + "start": 23818, + "end": 23828, "loc": { "start": { - "line": 718, + "line": 717, "column": 46 }, "end": { - "line": 718, + "line": 717, "column": 56 } }, "object": { "type": "ThisExpression", - "start": 23878, - "end": 23882, + "start": 23818, + "end": 23822, "loc": { "start": { - "line": 718, + "line": 717, "column": 46 }, "end": { - "line": 718, + "line": 717, "column": 50 } } }, "property": { "type": "Identifier", - "start": 23883, - "end": 23888, + "start": 23823, + "end": 23828, "loc": { "start": { - "line": 718, + "line": 717, "column": 51 }, "end": { - "line": 718, + "line": 717, "column": 56 }, "identifierName": "scene" @@ -10340,44 +10270,44 @@ }, { "type": "MemberExpression", - "start": 23890, - "end": 23907, + "start": 23830, + "end": 23847, "loc": { "start": { - "line": 718, + "line": 717, "column": 58 }, "end": { - "line": 718, + "line": 717, "column": 75 } }, "object": { "type": "ThisExpression", - "start": 23890, - "end": 23894, + "start": 23830, + "end": 23834, "loc": { "start": { - "line": 718, + "line": 717, "column": 58 }, "end": { - "line": 718, + "line": 717, "column": 62 } } }, "property": { "type": "Identifier", - "start": 23895, - "end": 23907, + "start": 23835, + "end": 23847, "loc": { "start": { - "line": 718, + "line": 717, "column": 63 }, "end": { - "line": 718, + "line": 717, "column": 75 }, "identifierName": "_controllers" @@ -10388,44 +10318,44 @@ }, { "type": "MemberExpression", - "start": 23909, - "end": 23922, + "start": 23849, + "end": 23862, "loc": { "start": { - "line": 718, + "line": 717, "column": 77 }, "end": { - "line": 718, + "line": 717, "column": 90 } }, "object": { "type": "ThisExpression", - "start": 23909, - "end": 23913, + "start": 23849, + "end": 23853, "loc": { "start": { - "line": 718, + "line": 717, "column": 77 }, "end": { - "line": 718, + "line": 717, "column": 81 } } }, "property": { "type": "Identifier", - "start": 23914, - "end": 23922, + "start": 23854, + "end": 23862, "loc": { "start": { - "line": 718, + "line": 717, "column": 82 }, "end": { - "line": 718, + "line": 717, "column": 90 }, "identifierName": "_configs" @@ -10436,44 +10366,44 @@ }, { "type": "MemberExpression", - "start": 23924, - "end": 23936, + "start": 23864, + "end": 23876, "loc": { "start": { - "line": 718, + "line": 717, "column": 92 }, "end": { - "line": 718, + "line": 717, "column": 104 } }, "object": { "type": "ThisExpression", - "start": 23924, - "end": 23928, + "start": 23864, + "end": 23868, "loc": { "start": { - "line": 718, + "line": 717, "column": 92 }, "end": { - "line": 718, + "line": 717, "column": 96 } } }, "property": { "type": "Identifier", - "start": 23929, - "end": 23936, + "start": 23869, + "end": 23876, "loc": { "start": { - "line": 718, + "line": 717, "column": 97 }, "end": { - "line": 718, + "line": 717, "column": 104 }, "identifierName": "_states" @@ -10484,44 +10414,44 @@ }, { "type": "MemberExpression", - "start": 23938, - "end": 23951, + "start": 23878, + "end": 23891, "loc": { "start": { - "line": 718, + "line": 717, "column": 106 }, "end": { - "line": 718, + "line": 717, "column": 119 } }, "object": { "type": "ThisExpression", - "start": 23938, - "end": 23942, + "start": 23878, + "end": 23882, "loc": { "start": { - "line": 718, + "line": 717, "column": 106 }, "end": { - "line": 718, + "line": 717, "column": 110 } } }, "property": { "type": "Identifier", - "start": 23943, - "end": 23951, + "start": 23883, + "end": 23891, "loc": { "start": { - "line": 718, + "line": 717, "column": 111 }, "end": { - "line": 718, + "line": 717, "column": 119 }, "identifierName": "_updates" @@ -10540,15 +10470,15 @@ { "type": "CommentLine", "value": " Input event handlers", - "start": 23096, - "end": 23119, + "start": 23036, + "end": 23059, "loc": { "start": { - "line": 709, + "line": 708, "column": 8 }, "end": { - "line": 709, + "line": 708, "column": 31 } } @@ -10558,15 +10488,15 @@ { "type": "CommentLine", "value": " Applies scheduled updates to the Camera on each Scene \"tick\" event", - "start": 23973, - "end": 24042, + "start": 23913, + "end": 23982, "loc": { "start": { - "line": 721, + "line": 720, "column": 8 }, "end": { - "line": 721, + "line": 720, "column": 77 } } @@ -10575,58 +10505,58 @@ }, { "type": "ExpressionStatement", - "start": 24052, - "end": 24167, + "start": 23992, + "end": 24107, "loc": { "start": { - "line": 723, + "line": 722, "column": 8 }, "end": { - "line": 723, + "line": 722, "column": 123 } }, "expression": { "type": "AssignmentExpression", - "start": 24052, - "end": 24166, + "start": 23992, + "end": 24106, "loc": { "start": { - "line": 723, + "line": 722, "column": 8 }, "end": { - "line": 723, + "line": 722, "column": 122 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24052, - "end": 24071, + "start": 23992, + "end": 24011, "loc": { "start": { - "line": 723, + "line": 722, "column": 8 }, "end": { - "line": 723, + "line": 722, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 24052, - "end": 24056, + "start": 23992, + "end": 23996, "loc": { "start": { - "line": 723, + "line": 722, "column": 8 }, "end": { - "line": 723, + "line": 722, "column": 12 } }, @@ -10634,15 +10564,15 @@ }, "property": { "type": "Identifier", - "start": 24057, - "end": 24071, + "start": 23997, + "end": 24011, "loc": { "start": { - "line": 723, + "line": 722, "column": 13 }, "end": { - "line": 723, + "line": 722, "column": 27 }, "identifierName": "_cameraUpdater" @@ -10654,29 +10584,29 @@ }, "right": { "type": "NewExpression", - "start": 24074, - "end": 24166, + "start": 24014, + "end": 24106, "loc": { "start": { - "line": 723, + "line": 722, "column": 30 }, "end": { - "line": 723, + "line": 722, "column": 122 } }, "callee": { "type": "Identifier", - "start": 24078, - "end": 24091, + "start": 24018, + "end": 24031, "loc": { "start": { - "line": 723, + "line": 722, "column": 34 }, "end": { - "line": 723, + "line": 722, "column": 47 }, "identifierName": "CameraUpdater" @@ -10686,44 +10616,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 24092, - "end": 24102, + "start": 24032, + "end": 24042, "loc": { "start": { - "line": 723, + "line": 722, "column": 48 }, "end": { - "line": 723, + "line": 722, "column": 58 } }, "object": { "type": "ThisExpression", - "start": 24092, - "end": 24096, + "start": 24032, + "end": 24036, "loc": { "start": { - "line": 723, + "line": 722, "column": 48 }, "end": { - "line": 723, + "line": 722, "column": 52 } } }, "property": { "type": "Identifier", - "start": 24097, - "end": 24102, + "start": 24037, + "end": 24042, "loc": { "start": { - "line": 723, + "line": 722, "column": 53 }, "end": { - "line": 723, + "line": 722, "column": 58 }, "identifierName": "scene" @@ -10734,44 +10664,44 @@ }, { "type": "MemberExpression", - "start": 24104, - "end": 24121, + "start": 24044, + "end": 24061, "loc": { "start": { - "line": 723, + "line": 722, "column": 60 }, "end": { - "line": 723, + "line": 722, "column": 77 } }, "object": { "type": "ThisExpression", - "start": 24104, - "end": 24108, + "start": 24044, + "end": 24048, "loc": { "start": { - "line": 723, + "line": 722, "column": 60 }, "end": { - "line": 723, + "line": 722, "column": 64 } } }, "property": { "type": "Identifier", - "start": 24109, - "end": 24121, + "start": 24049, + "end": 24061, "loc": { "start": { - "line": 723, + "line": 722, "column": 65 }, "end": { - "line": 723, + "line": 722, "column": 77 }, "identifierName": "_controllers" @@ -10782,44 +10712,44 @@ }, { "type": "MemberExpression", - "start": 24123, - "end": 24136, + "start": 24063, + "end": 24076, "loc": { "start": { - "line": 723, + "line": 722, "column": 79 }, "end": { - "line": 723, + "line": 722, "column": 92 } }, "object": { "type": "ThisExpression", - "start": 24123, - "end": 24127, + "start": 24063, + "end": 24067, "loc": { "start": { - "line": 723, + "line": 722, "column": 79 }, "end": { - "line": 723, + "line": 722, "column": 83 } } }, "property": { "type": "Identifier", - "start": 24128, - "end": 24136, + "start": 24068, + "end": 24076, "loc": { "start": { - "line": 723, + "line": 722, "column": 84 }, "end": { - "line": 723, + "line": 722, "column": 92 }, "identifierName": "_configs" @@ -10830,44 +10760,44 @@ }, { "type": "MemberExpression", - "start": 24138, - "end": 24150, + "start": 24078, + "end": 24090, "loc": { "start": { - "line": 723, + "line": 722, "column": 94 }, "end": { - "line": 723, + "line": 722, "column": 106 } }, "object": { "type": "ThisExpression", - "start": 24138, - "end": 24142, + "start": 24078, + "end": 24082, "loc": { "start": { - "line": 723, + "line": 722, "column": 94 }, "end": { - "line": 723, + "line": 722, "column": 98 } } }, "property": { "type": "Identifier", - "start": 24143, - "end": 24150, + "start": 24083, + "end": 24090, "loc": { "start": { - "line": 723, + "line": 722, "column": 99 }, "end": { - "line": 723, + "line": 722, "column": 106 }, "identifierName": "_states" @@ -10878,44 +10808,44 @@ }, { "type": "MemberExpression", - "start": 24152, - "end": 24165, + "start": 24092, + "end": 24105, "loc": { "start": { - "line": 723, + "line": 722, "column": 108 }, "end": { - "line": 723, + "line": 722, "column": 121 } }, "object": { "type": "ThisExpression", - "start": 24152, - "end": 24156, + "start": 24092, + "end": 24096, "loc": { "start": { - "line": 723, + "line": 722, "column": 108 }, "end": { - "line": 723, + "line": 722, "column": 112 } } }, "property": { "type": "Identifier", - "start": 24157, - "end": 24165, + "start": 24097, + "end": 24105, "loc": { "start": { - "line": 723, + "line": 722, "column": 113 }, "end": { - "line": 723, + "line": 722, "column": 121 }, "identifierName": "_updates" @@ -10932,15 +10862,15 @@ { "type": "CommentLine", "value": " Applies scheduled updates to the Camera on each Scene \"tick\" event", - "start": 23973, - "end": 24042, + "start": 23913, + "end": 23982, "loc": { "start": { - "line": 721, + "line": 720, "column": 8 }, "end": { - "line": 721, + "line": 720, "column": 77 } } @@ -10950,15 +10880,15 @@ { "type": "CommentLine", "value": " Set initial user configurations", - "start": 24177, - "end": 24211, + "start": 24117, + "end": 24151, "loc": { "start": { - "line": 725, + "line": 724, "column": 8 }, "end": { - "line": 725, + "line": 724, "column": 42 } } @@ -10967,58 +10897,58 @@ }, { "type": "ExpressionStatement", - "start": 24221, - "end": 24248, + "start": 24161, + "end": 24188, "loc": { "start": { - "line": 727, + "line": 726, "column": 8 }, "end": { - "line": 727, + "line": 726, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 24221, - "end": 24247, + "start": 24161, + "end": 24187, "loc": { "start": { - "line": 727, + "line": 726, "column": 8 }, "end": { - "line": 727, + "line": 726, "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24221, - "end": 24233, + "start": 24161, + "end": 24173, "loc": { "start": { - "line": 727, + "line": 726, "column": 8 }, "end": { - "line": 727, + "line": 726, "column": 20 } }, "object": { "type": "ThisExpression", - "start": 24221, - "end": 24225, + "start": 24161, + "end": 24165, "loc": { "start": { - "line": 727, + "line": 726, "column": 8 }, "end": { - "line": 727, + "line": 726, "column": 12 } }, @@ -11026,15 +10956,15 @@ }, "property": { "type": "Identifier", - "start": 24226, - "end": 24233, + "start": 24166, + "end": 24173, "loc": { "start": { - "line": 727, + "line": 726, "column": 13 }, "end": { - "line": 727, + "line": 726, "column": 20 }, "identifierName": "navMode" @@ -11046,29 +10976,29 @@ }, "right": { "type": "MemberExpression", - "start": 24236, - "end": 24247, + "start": 24176, + "end": 24187, "loc": { "start": { - "line": 727, + "line": 726, "column": 23 }, "end": { - "line": 727, + "line": 726, "column": 34 } }, "object": { "type": "Identifier", - "start": 24236, - "end": 24239, + "start": 24176, + "end": 24179, "loc": { "start": { - "line": 727, + "line": 726, "column": 23 }, "end": { - "line": 727, + "line": 726, "column": 26 }, "identifierName": "cfg" @@ -11077,15 +11007,15 @@ }, "property": { "type": "Identifier", - "start": 24240, - "end": 24247, + "start": 24180, + "end": 24187, "loc": { "start": { - "line": 727, + "line": 726, "column": 27 }, "end": { - "line": 727, + "line": 726, "column": 34 }, "identifierName": "navMode" @@ -11100,15 +11030,15 @@ { "type": "CommentLine", "value": " Set initial user configurations", - "start": 24177, - "end": 24211, + "start": 24117, + "end": 24151, "loc": { "start": { - "line": 725, + "line": 724, "column": 8 }, "end": { - "line": 725, + "line": 724, "column": 42 } } @@ -11117,43 +11047,43 @@ }, { "type": "IfStatement", - "start": 24257, - "end": 24328, + "start": 24197, + "end": 24268, "loc": { "start": { - "line": 728, + "line": 727, "column": 8 }, "end": { - "line": 730, + "line": 729, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 24261, - "end": 24273, + "start": 24201, + "end": 24213, "loc": { "start": { - "line": 728, + "line": 727, "column": 12 }, "end": { - "line": 728, + "line": 727, "column": 24 } }, "object": { "type": "Identifier", - "start": 24261, - "end": 24264, + "start": 24201, + "end": 24204, "loc": { "start": { - "line": 728, + "line": 727, "column": 12 }, "end": { - "line": 728, + "line": 727, "column": 15 }, "identifierName": "cfg" @@ -11162,15 +11092,15 @@ }, "property": { "type": "Identifier", - "start": 24265, - "end": 24273, + "start": 24205, + "end": 24213, "loc": { "start": { - "line": 728, + "line": 727, "column": 16 }, "end": { - "line": 728, + "line": 727, "column": 24 }, "identifierName": "planView" @@ -11181,88 +11111,88 @@ }, "consequent": { "type": "BlockStatement", - "start": 24275, - "end": 24328, + "start": 24215, + "end": 24268, "loc": { "start": { - "line": 728, + "line": 727, "column": 26 }, "end": { - "line": 730, + "line": 729, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 24289, - "end": 24318, + "start": 24229, + "end": 24258, "loc": { "start": { - "line": 729, + "line": 728, "column": 12 }, "end": { - "line": 729, + "line": 728, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 24289, - "end": 24317, + "start": 24229, + "end": 24257, "loc": { "start": { - "line": 729, + "line": 728, "column": 12 }, "end": { - "line": 729, + "line": 728, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24289, - "end": 24302, + "start": 24229, + "end": 24242, "loc": { "start": { - "line": 729, + "line": 728, "column": 12 }, "end": { - "line": 729, + "line": 728, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 24289, - "end": 24293, + "start": 24229, + "end": 24233, "loc": { "start": { - "line": 729, + "line": 728, "column": 12 }, "end": { - "line": 729, + "line": 728, "column": 16 } } }, "property": { "type": "Identifier", - "start": 24294, - "end": 24302, + "start": 24234, + "end": 24242, "loc": { "start": { - "line": 729, + "line": 728, "column": 17 }, "end": { - "line": 729, + "line": 728, "column": 25 }, "identifierName": "planView" @@ -11273,29 +11203,29 @@ }, "right": { "type": "MemberExpression", - "start": 24305, - "end": 24317, + "start": 24245, + "end": 24257, "loc": { "start": { - "line": 729, + "line": 728, "column": 28 }, "end": { - "line": 729, + "line": 728, "column": 40 } }, "object": { "type": "Identifier", - "start": 24305, - "end": 24308, + "start": 24245, + "end": 24248, "loc": { "start": { - "line": 729, + "line": 728, "column": 28 }, "end": { - "line": 729, + "line": 728, "column": 31 }, "identifierName": "cfg" @@ -11304,15 +11234,15 @@ }, "property": { "type": "Identifier", - "start": 24309, - "end": 24317, + "start": 24249, + "end": 24257, "loc": { "start": { - "line": 729, + "line": 728, "column": 32 }, "end": { - "line": 729, + "line": 728, "column": 40 }, "identifierName": "planView" @@ -11330,73 +11260,73 @@ }, { "type": "ExpressionStatement", - "start": 24337, - "end": 24384, + "start": 24277, + "end": 24324, "loc": { "start": { - "line": 731, + "line": 730, "column": 8 }, "end": { - "line": 731, + "line": 730, "column": 55 } }, "expression": { "type": "AssignmentExpression", - "start": 24337, - "end": 24383, + "start": 24277, + "end": 24323, "loc": { "start": { - "line": 731, + "line": 730, "column": 8 }, "end": { - "line": 731, + "line": 730, "column": 54 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24337, - "end": 24359, + "start": 24277, + "end": 24299, "loc": { "start": { - "line": 731, + "line": 730, "column": 8 }, "end": { - "line": 731, + "line": 730, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 24337, - "end": 24341, + "start": 24277, + "end": 24281, "loc": { "start": { - "line": 731, + "line": 730, "column": 8 }, "end": { - "line": 731, + "line": 730, "column": 12 } } }, "property": { "type": "Identifier", - "start": 24342, - "end": 24359, + "start": 24282, + "end": 24299, "loc": { "start": { - "line": 731, + "line": 730, "column": 13 }, "end": { - "line": 731, + "line": 730, "column": 30 }, "identifierName": "constrainVertical" @@ -11407,29 +11337,29 @@ }, "right": { "type": "MemberExpression", - "start": 24362, - "end": 24383, + "start": 24302, + "end": 24323, "loc": { "start": { - "line": 731, + "line": 730, "column": 33 }, "end": { - "line": 731, + "line": 730, "column": 54 } }, "object": { "type": "Identifier", - "start": 24362, - "end": 24365, + "start": 24302, + "end": 24305, "loc": { "start": { - "line": 731, + "line": 730, "column": 33 }, "end": { - "line": 731, + "line": 730, "column": 36 }, "identifierName": "cfg" @@ -11438,15 +11368,15 @@ }, "property": { "type": "Identifier", - "start": 24366, - "end": 24383, + "start": 24306, + "end": 24323, "loc": { "start": { - "line": 731, + "line": 730, "column": 37 }, "end": { - "line": 731, + "line": 730, "column": 54 }, "identifierName": "constrainVertical" @@ -11459,43 +11389,43 @@ }, { "type": "IfStatement", - "start": 24393, - "end": 24551, + "start": 24333, + "end": 24491, "loc": { "start": { - "line": 732, + "line": 731, "column": 8 }, "end": { - "line": 736, + "line": 735, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 24397, - "end": 24415, + "start": 24337, + "end": 24355, "loc": { "start": { - "line": 732, + "line": 731, "column": 12 }, "end": { - "line": 732, + "line": 731, "column": 30 } }, "object": { "type": "Identifier", - "start": 24397, - "end": 24400, + "start": 24337, + "end": 24340, "loc": { "start": { - "line": 732, + "line": 731, "column": 12 }, "end": { - "line": 732, + "line": 731, "column": 15 }, "identifierName": "cfg" @@ -11504,15 +11434,15 @@ }, "property": { "type": "Identifier", - "start": 24401, - "end": 24415, + "start": 24341, + "end": 24355, "loc": { "start": { - "line": 732, + "line": 731, "column": 16 }, "end": { - "line": 732, + "line": 731, "column": 30 }, "identifierName": "keyboardLayout" @@ -11523,88 +11453,88 @@ }, "consequent": { "type": "BlockStatement", - "start": 24417, - "end": 24496, + "start": 24357, + "end": 24436, "loc": { "start": { - "line": 732, + "line": 731, "column": 32 }, "end": { - "line": 734, + "line": 733, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 24431, - "end": 24472, + "start": 24371, + "end": 24412, "loc": { "start": { - "line": 733, + "line": 732, "column": 12 }, "end": { - "line": 733, + "line": 732, "column": 53 } }, "expression": { "type": "AssignmentExpression", - "start": 24431, - "end": 24471, + "start": 24371, + "end": 24411, "loc": { "start": { - "line": 733, + "line": 732, "column": 12 }, "end": { - "line": 733, + "line": 732, "column": 52 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24431, - "end": 24450, + "start": 24371, + "end": 24390, "loc": { "start": { - "line": 733, + "line": 732, "column": 12 }, "end": { - "line": 733, + "line": 732, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 24431, - "end": 24435, + "start": 24371, + "end": 24375, "loc": { "start": { - "line": 733, + "line": 732, "column": 12 }, "end": { - "line": 733, + "line": 732, "column": 16 } } }, "property": { "type": "Identifier", - "start": 24436, - "end": 24450, + "start": 24376, + "end": 24390, "loc": { "start": { - "line": 733, + "line": 732, "column": 17 }, "end": { - "line": 733, + "line": 732, "column": 31 }, "identifierName": "keyboardLayout" @@ -11615,29 +11545,29 @@ }, "right": { "type": "MemberExpression", - "start": 24453, - "end": 24471, + "start": 24393, + "end": 24411, "loc": { "start": { - "line": 733, + "line": 732, "column": 34 }, "end": { - "line": 733, + "line": 732, "column": 52 } }, "object": { "type": "Identifier", - "start": 24453, - "end": 24456, + "start": 24393, + "end": 24396, "loc": { "start": { - "line": 733, + "line": 732, "column": 34 }, "end": { - "line": 733, + "line": 732, "column": 37 }, "identifierName": "cfg" @@ -11646,15 +11576,15 @@ }, "property": { "type": "Identifier", - "start": 24457, - "end": 24471, + "start": 24397, + "end": 24411, "loc": { "start": { - "line": 733, + "line": 732, "column": 38 }, "end": { - "line": 733, + "line": 732, "column": 52 }, "identifierName": "keyboardLayout" @@ -11668,15 +11598,15 @@ { "type": "CommentLine", "value": " Deprecated", - "start": 24473, - "end": 24486, + "start": 24413, + "end": 24426, "loc": { "start": { - "line": 733, + "line": 732, "column": 54 }, "end": { - "line": 733, + "line": 732, "column": 67 } } @@ -11688,88 +11618,88 @@ }, "alternate": { "type": "BlockStatement", - "start": 24502, - "end": 24551, + "start": 24442, + "end": 24491, "loc": { "start": { - "line": 734, + "line": 733, "column": 15 }, "end": { - "line": 736, + "line": 735, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 24516, - "end": 24541, + "start": 24456, + "end": 24481, "loc": { "start": { - "line": 735, + "line": 734, "column": 12 }, "end": { - "line": 735, + "line": 734, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 24516, - "end": 24540, + "start": 24456, + "end": 24480, "loc": { "start": { - "line": 735, + "line": 734, "column": 12 }, "end": { - "line": 735, + "line": 734, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24516, - "end": 24527, + "start": 24456, + "end": 24467, "loc": { "start": { - "line": 735, + "line": 734, "column": 12 }, "end": { - "line": 735, + "line": 734, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 24516, - "end": 24520, + "start": 24456, + "end": 24460, "loc": { "start": { - "line": 735, + "line": 734, "column": 12 }, "end": { - "line": 735, + "line": 734, "column": 16 } } }, "property": { "type": "Identifier", - "start": 24521, - "end": 24527, + "start": 24461, + "end": 24467, "loc": { "start": { - "line": 735, + "line": 734, "column": 17 }, "end": { - "line": 735, + "line": 734, "column": 23 }, "identifierName": "keyMap" @@ -11780,29 +11710,29 @@ }, "right": { "type": "MemberExpression", - "start": 24530, - "end": 24540, + "start": 24470, + "end": 24480, "loc": { "start": { - "line": 735, + "line": 734, "column": 26 }, "end": { - "line": 735, + "line": 734, "column": 36 } }, "object": { "type": "Identifier", - "start": 24530, - "end": 24533, + "start": 24470, + "end": 24473, "loc": { "start": { - "line": 735, + "line": 734, "column": 26 }, "end": { - "line": 735, + "line": 734, "column": 29 }, "identifierName": "cfg" @@ -11811,15 +11741,15 @@ }, "property": { "type": "Identifier", - "start": 24534, - "end": 24540, + "start": 24474, + "end": 24480, "loc": { "start": { - "line": 735, + "line": 734, "column": 30 }, "end": { - "line": 735, + "line": 734, "column": 36 }, "identifierName": "keyMap" @@ -11836,8 +11766,137 @@ }, { "type": "ExpressionStatement", - "start": 24560, - "end": 24603, + "start": 24500, + "end": 24543, + "loc": { + "start": { + "line": 736, + "column": 8 + }, + "end": { + "line": 736, + "column": 51 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 24500, + "end": 24542, + "loc": { + "start": { + "line": 736, + "column": 8 + }, + "end": { + "line": 736, + "column": 50 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 24500, + "end": 24520, + "loc": { + "start": { + "line": 736, + "column": 8 + }, + "end": { + "line": 736, + "column": 28 + } + }, + "object": { + "type": "ThisExpression", + "start": 24500, + "end": 24504, + "loc": { + "start": { + "line": 736, + "column": 8 + }, + "end": { + "line": 736, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 24505, + "end": 24520, + "loc": { + "start": { + "line": 736, + "column": 13 + }, + "end": { + "line": 736, + "column": 28 + }, + "identifierName": "doublePickFlyTo" + }, + "name": "doublePickFlyTo" + }, + "computed": false + }, + "right": { + "type": "MemberExpression", + "start": 24523, + "end": 24542, + "loc": { + "start": { + "line": 736, + "column": 31 + }, + "end": { + "line": 736, + "column": 50 + } + }, + "object": { + "type": "Identifier", + "start": 24523, + "end": 24526, + "loc": { + "start": { + "line": 736, + "column": 31 + }, + "end": { + "line": 736, + "column": 34 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 24527, + "end": 24542, + "loc": { + "start": { + "line": 736, + "column": 35 + }, + "end": { + "line": 736, + "column": 50 + }, + "identifierName": "doublePickFlyTo" + }, + "name": "doublePickFlyTo" + }, + "computed": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 24552, + "end": 24591, "loc": { "start": { "line": 737, @@ -11845,13 +11904,13 @@ }, "end": { "line": 737, - "column": 51 + "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 24560, - "end": 24602, + "start": 24552, + "end": 24590, "loc": { "start": { "line": 737, @@ -11859,14 +11918,14 @@ }, "end": { "line": 737, - "column": 50 + "column": 46 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24560, - "end": 24580, + "start": 24552, + "end": 24570, "loc": { "start": { "line": 737, @@ -11874,13 +11933,13 @@ }, "end": { "line": 737, - "column": 28 + "column": 26 } }, "object": { "type": "ThisExpression", - "start": 24560, - "end": 24564, + "start": 24552, + "end": 24556, "loc": { "start": { "line": 737, @@ -11894,8 +11953,8 @@ }, "property": { "type": "Identifier", - "start": 24565, - "end": 24580, + "start": 24557, + "end": 24570, "loc": { "start": { "line": 737, @@ -11903,40 +11962,40 @@ }, "end": { "line": 737, - "column": 28 + "column": 26 }, - "identifierName": "doublePickFlyTo" + "identifierName": "panRightClick" }, - "name": "doublePickFlyTo" + "name": "panRightClick" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24583, - "end": 24602, + "start": 24573, + "end": 24590, "loc": { "start": { "line": 737, - "column": 31 + "column": 29 }, "end": { "line": 737, - "column": 50 + "column": 46 } }, "object": { "type": "Identifier", - "start": 24583, - "end": 24586, + "start": 24573, + "end": 24576, "loc": { "start": { "line": 737, - "column": 31 + "column": 29 }, "end": { "line": 737, - "column": 34 + "column": 32 }, "identifierName": "cfg" }, @@ -11944,20 +12003,20 @@ }, "property": { "type": "Identifier", - "start": 24587, - "end": 24602, + "start": 24577, + "end": 24590, "loc": { "start": { "line": 737, - "column": 35 + "column": 33 }, "end": { "line": 737, - "column": 50 + "column": 46 }, - "identifierName": "doublePickFlyTo" + "identifierName": "panRightClick" }, - "name": "doublePickFlyTo" + "name": "panRightClick" }, "computed": false } @@ -11965,8 +12024,8 @@ }, { "type": "ExpressionStatement", - "start": 24612, - "end": 24651, + "start": 24600, + "end": 24625, "loc": { "start": { "line": 738, @@ -11974,13 +12033,13 @@ }, "end": { "line": 738, - "column": 47 + "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 24612, - "end": 24650, + "start": 24600, + "end": 24624, "loc": { "start": { "line": 738, @@ -11988,14 +12047,14 @@ }, "end": { "line": 738, - "column": 46 + "column": 32 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24612, - "end": 24630, + "start": 24600, + "end": 24611, "loc": { "start": { "line": 738, @@ -12003,13 +12062,13 @@ }, "end": { "line": 738, - "column": 26 + "column": 19 } }, "object": { "type": "ThisExpression", - "start": 24612, - "end": 24616, + "start": 24600, + "end": 24604, "loc": { "start": { "line": 738, @@ -12023,8 +12082,8 @@ }, "property": { "type": "Identifier", - "start": 24617, - "end": 24630, + "start": 24605, + "end": 24611, "loc": { "start": { "line": 738, @@ -12032,40 +12091,40 @@ }, "end": { "line": 738, - "column": 26 + "column": 19 }, - "identifierName": "panRightClick" + "identifierName": "active" }, - "name": "panRightClick" + "name": "active" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24633, - "end": 24650, + "start": 24614, + "end": 24624, "loc": { "start": { "line": 738, - "column": 29 + "column": 22 }, "end": { "line": 738, - "column": 46 + "column": 32 } }, "object": { "type": "Identifier", - "start": 24633, - "end": 24636, + "start": 24614, + "end": 24617, "loc": { "start": { "line": 738, - "column": 29 + "column": 22 }, "end": { "line": 738, - "column": 32 + "column": 25 }, "identifierName": "cfg" }, @@ -12073,20 +12132,20 @@ }, "property": { "type": "Identifier", - "start": 24637, - "end": 24650, + "start": 24618, + "end": 24624, "loc": { "start": { "line": 738, - "column": 33 + "column": 26 }, "end": { "line": 738, - "column": 46 + "column": 32 }, - "identifierName": "panRightClick" + "identifierName": "active" }, - "name": "panRightClick" + "name": "active" }, "computed": false } @@ -12094,8 +12153,8 @@ }, { "type": "ExpressionStatement", - "start": 24660, - "end": 24685, + "start": 24634, + "end": 24673, "loc": { "start": { "line": 739, @@ -12103,13 +12162,13 @@ }, "end": { "line": 739, - "column": 33 + "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 24660, - "end": 24684, + "start": 24634, + "end": 24672, "loc": { "start": { "line": 739, @@ -12117,14 +12176,14 @@ }, "end": { "line": 739, - "column": 32 + "column": 46 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24660, - "end": 24671, + "start": 24634, + "end": 24652, "loc": { "start": { "line": 739, @@ -12132,13 +12191,13 @@ }, "end": { "line": 739, - "column": 19 + "column": 26 } }, "object": { "type": "ThisExpression", - "start": 24660, - "end": 24664, + "start": 24634, + "end": 24638, "loc": { "start": { "line": 739, @@ -12152,8 +12211,8 @@ }, "property": { "type": "Identifier", - "start": 24665, - "end": 24671, + "start": 24639, + "end": 24652, "loc": { "start": { "line": 739, @@ -12161,40 +12220,40 @@ }, "end": { "line": 739, - "column": 19 + "column": 26 }, - "identifierName": "active" + "identifierName": "followPointer" }, - "name": "active" + "name": "followPointer" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24674, - "end": 24684, + "start": 24655, + "end": 24672, "loc": { "start": { "line": 739, - "column": 22 + "column": 29 }, "end": { "line": 739, - "column": 32 + "column": 46 } }, "object": { "type": "Identifier", - "start": 24674, - "end": 24677, + "start": 24655, + "end": 24658, "loc": { "start": { "line": 739, - "column": 22 + "column": 29 }, "end": { "line": 739, - "column": 25 + "column": 32 }, "identifierName": "cfg" }, @@ -12202,20 +12261,20 @@ }, "property": { "type": "Identifier", - "start": 24678, - "end": 24684, + "start": 24659, + "end": 24672, "loc": { "start": { "line": 739, - "column": 26 + "column": 33 }, "end": { "line": 739, - "column": 32 + "column": 46 }, - "identifierName": "active" + "identifierName": "followPointer" }, - "name": "active" + "name": "followPointer" }, "computed": false } @@ -12223,8 +12282,8 @@ }, { "type": "ExpressionStatement", - "start": 24694, - "end": 24733, + "start": 24682, + "end": 24725, "loc": { "start": { "line": 740, @@ -12232,13 +12291,13 @@ }, "end": { "line": 740, - "column": 47 + "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 24694, - "end": 24732, + "start": 24682, + "end": 24724, "loc": { "start": { "line": 740, @@ -12246,14 +12305,14 @@ }, "end": { "line": 740, - "column": 46 + "column": 50 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24694, - "end": 24712, + "start": 24682, + "end": 24702, "loc": { "start": { "line": 740, @@ -12261,13 +12320,13 @@ }, "end": { "line": 740, - "column": 26 + "column": 28 } }, "object": { "type": "ThisExpression", - "start": 24694, - "end": 24698, + "start": 24682, + "end": 24686, "loc": { "start": { "line": 740, @@ -12281,8 +12340,8 @@ }, "property": { "type": "Identifier", - "start": 24699, - "end": 24712, + "start": 24687, + "end": 24702, "loc": { "start": { "line": 740, @@ -12290,40 +12349,40 @@ }, "end": { "line": 740, - "column": 26 + "column": 28 }, - "identifierName": "followPointer" + "identifierName": "rotationInertia" }, - "name": "followPointer" + "name": "rotationInertia" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24715, - "end": 24732, + "start": 24705, + "end": 24724, "loc": { "start": { "line": 740, - "column": 29 + "column": 31 }, "end": { "line": 740, - "column": 46 + "column": 50 } }, "object": { "type": "Identifier", - "start": 24715, - "end": 24718, + "start": 24705, + "end": 24708, "loc": { "start": { "line": 740, - "column": 29 + "column": 31 }, "end": { "line": 740, - "column": 32 + "column": 34 }, "identifierName": "cfg" }, @@ -12331,20 +12390,20 @@ }, "property": { "type": "Identifier", - "start": 24719, - "end": 24732, + "start": 24709, + "end": 24724, "loc": { "start": { "line": 740, - "column": 33 + "column": 35 }, "end": { "line": 740, - "column": 46 + "column": 50 }, - "identifierName": "followPointer" + "identifierName": "rotationInertia" }, - "name": "followPointer" + "name": "rotationInertia" }, "computed": false } @@ -12352,8 +12411,8 @@ }, { "type": "ExpressionStatement", - "start": 24742, - "end": 24785, + "start": 24734, + "end": 24777, "loc": { "start": { "line": 741, @@ -12366,8 +12425,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 24742, - "end": 24784, + "start": 24734, + "end": 24776, "loc": { "start": { "line": 741, @@ -12381,8 +12440,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 24742, - "end": 24762, + "start": 24734, + "end": 24754, "loc": { "start": { "line": 741, @@ -12395,8 +12454,8 @@ }, "object": { "type": "ThisExpression", - "start": 24742, - "end": 24746, + "start": 24734, + "end": 24738, "loc": { "start": { "line": 741, @@ -12410,8 +12469,8 @@ }, "property": { "type": "Identifier", - "start": 24747, - "end": 24762, + "start": 24739, + "end": 24754, "loc": { "start": { "line": 741, @@ -12421,16 +12480,16 @@ "line": 741, "column": 28 }, - "identifierName": "rotationInertia" + "identifierName": "keyboardPanRate" }, - "name": "rotationInertia" + "name": "keyboardPanRate" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24765, - "end": 24784, + "start": 24757, + "end": 24776, "loc": { "start": { "line": 741, @@ -12443,8 +12502,8 @@ }, "object": { "type": "Identifier", - "start": 24765, - "end": 24768, + "start": 24757, + "end": 24760, "loc": { "start": { "line": 741, @@ -12460,8 +12519,8 @@ }, "property": { "type": "Identifier", - "start": 24769, - "end": 24784, + "start": 24761, + "end": 24776, "loc": { "start": { "line": 741, @@ -12471,9 +12530,9 @@ "line": 741, "column": 50 }, - "identifierName": "rotationInertia" + "identifierName": "keyboardPanRate" }, - "name": "rotationInertia" + "name": "keyboardPanRate" }, "computed": false } @@ -12481,8 +12540,8 @@ }, { "type": "ExpressionStatement", - "start": 24794, - "end": 24837, + "start": 24786, + "end": 24823, "loc": { "start": { "line": 742, @@ -12490,13 +12549,13 @@ }, "end": { "line": 742, - "column": 51 + "column": 45 } }, "expression": { "type": "AssignmentExpression", - "start": 24794, - "end": 24836, + "start": 24786, + "end": 24822, "loc": { "start": { "line": 742, @@ -12504,14 +12563,14 @@ }, "end": { "line": 742, - "column": 50 + "column": 44 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24794, - "end": 24814, + "start": 24786, + "end": 24803, "loc": { "start": { "line": 742, @@ -12519,13 +12578,13 @@ }, "end": { "line": 742, - "column": 28 + "column": 25 } }, "object": { "type": "ThisExpression", - "start": 24794, - "end": 24798, + "start": 24786, + "end": 24790, "loc": { "start": { "line": 742, @@ -12539,8 +12598,8 @@ }, "property": { "type": "Identifier", - "start": 24799, - "end": 24814, + "start": 24791, + "end": 24803, "loc": { "start": { "line": 742, @@ -12548,40 +12607,40 @@ }, "end": { "line": 742, - "column": 28 + "column": 25 }, - "identifierName": "keyboardPanRate" + "identifierName": "touchPanRate" }, - "name": "keyboardPanRate" + "name": "touchPanRate" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24817, - "end": 24836, + "start": 24806, + "end": 24822, "loc": { "start": { "line": 742, - "column": 31 + "column": 28 }, "end": { "line": 742, - "column": 50 + "column": 44 } }, "object": { "type": "Identifier", - "start": 24817, - "end": 24820, + "start": 24806, + "end": 24809, "loc": { "start": { "line": 742, - "column": 31 + "column": 28 }, "end": { "line": 742, - "column": 34 + "column": 31 }, "identifierName": "cfg" }, @@ -12589,20 +12648,20 @@ }, "property": { "type": "Identifier", - "start": 24821, - "end": 24836, + "start": 24810, + "end": 24822, "loc": { "start": { "line": 742, - "column": 35 + "column": 32 }, "end": { "line": 742, - "column": 50 + "column": 44 }, - "identifierName": "keyboardPanRate" + "identifierName": "touchPanRate" }, - "name": "keyboardPanRate" + "name": "touchPanRate" }, "computed": false } @@ -12610,8 +12669,8 @@ }, { "type": "ExpressionStatement", - "start": 24846, - "end": 24883, + "start": 24832, + "end": 24885, "loc": { "start": { "line": 743, @@ -12619,13 +12678,13 @@ }, "end": { "line": 743, - "column": 45 + "column": 61 } }, "expression": { "type": "AssignmentExpression", - "start": 24846, - "end": 24882, + "start": 24832, + "end": 24884, "loc": { "start": { "line": 743, @@ -12633,14 +12692,14 @@ }, "end": { "line": 743, - "column": 44 + "column": 60 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24846, - "end": 24863, + "start": 24832, + "end": 24857, "loc": { "start": { "line": 743, @@ -12648,13 +12707,13 @@ }, "end": { "line": 743, - "column": 25 + "column": 33 } }, "object": { "type": "ThisExpression", - "start": 24846, - "end": 24850, + "start": 24832, + "end": 24836, "loc": { "start": { "line": 743, @@ -12668,8 +12727,8 @@ }, "property": { "type": "Identifier", - "start": 24851, - "end": 24863, + "start": 24837, + "end": 24857, "loc": { "start": { "line": 743, @@ -12677,40 +12736,40 @@ }, "end": { "line": 743, - "column": 25 + "column": 33 }, - "identifierName": "touchPanRate" + "identifierName": "keyboardRotationRate" }, - "name": "touchPanRate" + "name": "keyboardRotationRate" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24866, - "end": 24882, + "start": 24860, + "end": 24884, "loc": { "start": { "line": 743, - "column": 28 + "column": 36 }, "end": { "line": 743, - "column": 44 + "column": 60 } }, "object": { "type": "Identifier", - "start": 24866, - "end": 24869, + "start": 24860, + "end": 24863, "loc": { "start": { "line": 743, - "column": 28 + "column": 36 }, "end": { "line": 743, - "column": 31 + "column": 39 }, "identifierName": "cfg" }, @@ -12718,20 +12777,20 @@ }, "property": { "type": "Identifier", - "start": 24870, - "end": 24882, + "start": 24864, + "end": 24884, "loc": { "start": { "line": 743, - "column": 32 + "column": 40 }, "end": { "line": 743, - "column": 44 + "column": 60 }, - "identifierName": "touchPanRate" + "identifierName": "keyboardRotationRate" }, - "name": "touchPanRate" + "name": "keyboardRotationRate" }, "computed": false } @@ -12739,8 +12798,8 @@ }, { "type": "ExpressionStatement", - "start": 24892, - "end": 24945, + "start": 24894, + "end": 24939, "loc": { "start": { "line": 744, @@ -12748,13 +12807,13 @@ }, "end": { "line": 744, - "column": 61 + "column": 53 } }, "expression": { "type": "AssignmentExpression", - "start": 24892, - "end": 24944, + "start": 24894, + "end": 24938, "loc": { "start": { "line": 744, @@ -12762,14 +12821,14 @@ }, "end": { "line": 744, - "column": 60 + "column": 52 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24892, - "end": 24917, + "start": 24894, + "end": 24915, "loc": { "start": { "line": 744, @@ -12777,13 +12836,13 @@ }, "end": { "line": 744, - "column": 33 + "column": 29 } }, "object": { "type": "ThisExpression", - "start": 24892, - "end": 24896, + "start": 24894, + "end": 24898, "loc": { "start": { "line": 744, @@ -12797,8 +12856,8 @@ }, "property": { "type": "Identifier", - "start": 24897, - "end": 24917, + "start": 24899, + "end": 24915, "loc": { "start": { "line": 744, @@ -12806,40 +12865,40 @@ }, "end": { "line": 744, - "column": 33 + "column": 29 }, - "identifierName": "keyboardRotationRate" + "identifierName": "dragRotationRate" }, - "name": "keyboardRotationRate" + "name": "dragRotationRate" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24920, - "end": 24944, + "start": 24918, + "end": 24938, "loc": { "start": { "line": 744, - "column": 36 + "column": 32 }, "end": { "line": 744, - "column": 60 + "column": 52 } }, "object": { "type": "Identifier", - "start": 24920, - "end": 24923, + "start": 24918, + "end": 24921, "loc": { "start": { "line": 744, - "column": 36 + "column": 32 }, "end": { "line": 744, - "column": 39 + "column": 35 }, "identifierName": "cfg" }, @@ -12847,20 +12906,20 @@ }, "property": { "type": "Identifier", - "start": 24924, - "end": 24944, + "start": 24922, + "end": 24938, "loc": { "start": { "line": 744, - "column": 40 + "column": 36 }, "end": { "line": 744, - "column": 60 + "column": 52 }, - "identifierName": "keyboardRotationRate" + "identifierName": "dragRotationRate" }, - "name": "keyboardRotationRate" + "name": "dragRotationRate" }, "computed": false } @@ -12868,8 +12927,8 @@ }, { "type": "ExpressionStatement", - "start": 24954, - "end": 24999, + "start": 24948, + "end": 24989, "loc": { "start": { "line": 745, @@ -12877,13 +12936,13 @@ }, "end": { "line": 745, - "column": 53 + "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 24954, - "end": 24998, + "start": 24948, + "end": 24988, "loc": { "start": { "line": 745, @@ -12891,14 +12950,14 @@ }, "end": { "line": 745, - "column": 52 + "column": 48 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24954, - "end": 24975, + "start": 24948, + "end": 24967, "loc": { "start": { "line": 745, @@ -12906,13 +12965,13 @@ }, "end": { "line": 745, - "column": 29 + "column": 27 } }, "object": { "type": "ThisExpression", - "start": 24954, - "end": 24958, + "start": 24948, + "end": 24952, "loc": { "start": { "line": 745, @@ -12926,8 +12985,8 @@ }, "property": { "type": "Identifier", - "start": 24959, - "end": 24975, + "start": 24953, + "end": 24967, "loc": { "start": { "line": 745, @@ -12935,40 +12994,40 @@ }, "end": { "line": 745, - "column": 29 + "column": 27 }, - "identifierName": "dragRotationRate" + "identifierName": "touchDollyRate" }, - "name": "dragRotationRate" + "name": "touchDollyRate" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24978, - "end": 24998, + "start": 24970, + "end": 24988, "loc": { "start": { "line": 745, - "column": 32 + "column": 30 }, "end": { "line": 745, - "column": 52 + "column": 48 } }, "object": { "type": "Identifier", - "start": 24978, - "end": 24981, + "start": 24970, + "end": 24973, "loc": { "start": { "line": 745, - "column": 32 + "column": 30 }, "end": { "line": 745, - "column": 35 + "column": 33 }, "identifierName": "cfg" }, @@ -12976,20 +13035,20 @@ }, "property": { "type": "Identifier", - "start": 24982, - "end": 24998, + "start": 24974, + "end": 24988, "loc": { "start": { "line": 745, - "column": 36 + "column": 34 }, "end": { "line": 745, - "column": 52 + "column": 48 }, - "identifierName": "dragRotationRate" + "identifierName": "touchDollyRate" }, - "name": "dragRotationRate" + "name": "touchDollyRate" }, "computed": false } @@ -12997,8 +13056,8 @@ }, { "type": "ExpressionStatement", - "start": 25008, - "end": 25049, + "start": 24998, + "end": 25035, "loc": { "start": { "line": 746, @@ -13006,13 +13065,13 @@ }, "end": { "line": 746, - "column": 49 + "column": 45 } }, "expression": { "type": "AssignmentExpression", - "start": 25008, - "end": 25048, + "start": 24998, + "end": 25034, "loc": { "start": { "line": 746, @@ -13020,14 +13079,14 @@ }, "end": { "line": 746, - "column": 48 + "column": 44 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25008, - "end": 25027, + "start": 24998, + "end": 25015, "loc": { "start": { "line": 746, @@ -13035,13 +13094,13 @@ }, "end": { "line": 746, - "column": 27 + "column": 25 } }, "object": { "type": "ThisExpression", - "start": 25008, - "end": 25012, + "start": 24998, + "end": 25002, "loc": { "start": { "line": 746, @@ -13055,8 +13114,8 @@ }, "property": { "type": "Identifier", - "start": 25013, - "end": 25027, + "start": 25003, + "end": 25015, "loc": { "start": { "line": 746, @@ -13064,40 +13123,40 @@ }, "end": { "line": 746, - "column": 27 + "column": 25 }, - "identifierName": "touchDollyRate" + "identifierName": "dollyInertia" }, - "name": "touchDollyRate" + "name": "dollyInertia" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 25030, - "end": 25048, + "start": 25018, + "end": 25034, "loc": { "start": { "line": 746, - "column": 30 + "column": 28 }, "end": { "line": 746, - "column": 48 + "column": 44 } }, "object": { "type": "Identifier", - "start": 25030, - "end": 25033, + "start": 25018, + "end": 25021, "loc": { "start": { "line": 746, - "column": 30 + "column": 28 }, "end": { "line": 746, - "column": 33 + "column": 31 }, "identifierName": "cfg" }, @@ -13105,20 +13164,20 @@ }, "property": { "type": "Identifier", - "start": 25034, - "end": 25048, + "start": 25022, + "end": 25034, "loc": { "start": { "line": 746, - "column": 34 + "column": 32 }, "end": { "line": 746, - "column": 48 + "column": 44 }, - "identifierName": "touchDollyRate" + "identifierName": "dollyInertia" }, - "name": "touchDollyRate" + "name": "dollyInertia" }, "computed": false } @@ -13126,8 +13185,8 @@ }, { "type": "ExpressionStatement", - "start": 25058, - "end": 25095, + "start": 25044, + "end": 25103, "loc": { "start": { "line": 747, @@ -13135,13 +13194,13 @@ }, "end": { "line": 747, - "column": 45 + "column": 67 } }, "expression": { "type": "AssignmentExpression", - "start": 25058, - "end": 25094, + "start": 25044, + "end": 25102, "loc": { "start": { "line": 747, @@ -13149,14 +13208,14 @@ }, "end": { "line": 747, - "column": 44 + "column": 66 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25058, - "end": 25075, + "start": 25044, + "end": 25072, "loc": { "start": { "line": 747, @@ -13164,13 +13223,13 @@ }, "end": { "line": 747, - "column": 25 + "column": 36 } }, "object": { "type": "ThisExpression", - "start": 25058, - "end": 25062, + "start": 25044, + "end": 25048, "loc": { "start": { "line": 747, @@ -13184,8 +13243,8 @@ }, "property": { "type": "Identifier", - "start": 25063, - "end": 25075, + "start": 25049, + "end": 25072, "loc": { "start": { "line": 747, @@ -13193,40 +13252,40 @@ }, "end": { "line": 747, - "column": 25 + "column": 36 }, - "identifierName": "dollyInertia" + "identifierName": "dollyProximityThreshold" }, - "name": "dollyInertia" + "name": "dollyProximityThreshold" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 25078, - "end": 25094, + "start": 25075, + "end": 25102, "loc": { "start": { "line": 747, - "column": 28 + "column": 39 }, "end": { "line": 747, - "column": 44 + "column": 66 } }, "object": { "type": "Identifier", - "start": 25078, - "end": 25081, + "start": 25075, + "end": 25078, "loc": { "start": { "line": 747, - "column": 28 + "column": 39 }, "end": { "line": 747, - "column": 31 + "column": 42 }, "identifierName": "cfg" }, @@ -13234,20 +13293,20 @@ }, "property": { "type": "Identifier", - "start": 25082, - "end": 25094, + "start": 25079, + "end": 25102, "loc": { "start": { "line": 747, - "column": 32 + "column": 43 }, "end": { "line": 747, - "column": 44 + "column": 66 }, - "identifierName": "dollyInertia" + "identifierName": "dollyProximityThreshold" }, - "name": "dollyInertia" + "name": "dollyProximityThreshold" }, "computed": false } @@ -13255,8 +13314,8 @@ }, { "type": "ExpressionStatement", - "start": 25104, - "end": 25163, + "start": 25112, + "end": 25151, "loc": { "start": { "line": 748, @@ -13264,13 +13323,13 @@ }, "end": { "line": 748, - "column": 67 + "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 25104, - "end": 25162, + "start": 25112, + "end": 25150, "loc": { "start": { "line": 748, @@ -13278,14 +13337,14 @@ }, "end": { "line": 748, - "column": 66 + "column": 46 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25104, - "end": 25132, + "start": 25112, + "end": 25130, "loc": { "start": { "line": 748, @@ -13293,13 +13352,13 @@ }, "end": { "line": 748, - "column": 36 + "column": 26 } }, "object": { "type": "ThisExpression", - "start": 25104, - "end": 25108, + "start": 25112, + "end": 25116, "loc": { "start": { "line": 748, @@ -13313,8 +13372,8 @@ }, "property": { "type": "Identifier", - "start": 25109, - "end": 25132, + "start": 25117, + "end": 25130, "loc": { "start": { "line": 748, @@ -13322,40 +13381,40 @@ }, "end": { "line": 748, - "column": 36 + "column": 26 }, - "identifierName": "dollyProximityThreshold" + "identifierName": "dollyMinSpeed" }, - "name": "dollyProximityThreshold" + "name": "dollyMinSpeed" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 25135, - "end": 25162, + "start": 25133, + "end": 25150, "loc": { "start": { "line": 748, - "column": 39 + "column": 29 }, "end": { "line": 748, - "column": 66 + "column": 46 } }, "object": { "type": "Identifier", - "start": 25135, - "end": 25138, + "start": 25133, + "end": 25136, "loc": { "start": { "line": 748, - "column": 39 + "column": 29 }, "end": { "line": 748, - "column": 42 + "column": 32 }, "identifierName": "cfg" }, @@ -13363,20 +13422,20 @@ }, "property": { "type": "Identifier", - "start": 25139, - "end": 25162, + "start": 25137, + "end": 25150, "loc": { "start": { "line": 748, - "column": 43 + "column": 33 }, "end": { "line": 748, - "column": 66 + "column": 46 }, - "identifierName": "dollyProximityThreshold" + "identifierName": "dollyMinSpeed" }, - "name": "dollyProximityThreshold" + "name": "dollyMinSpeed" }, "computed": false } @@ -13384,8 +13443,8 @@ }, { "type": "ExpressionStatement", - "start": 25172, - "end": 25211, + "start": 25160, + "end": 25193, "loc": { "start": { "line": 749, @@ -13393,13 +13452,13 @@ }, "end": { "line": 749, - "column": 47 + "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 25172, - "end": 25210, + "start": 25160, + "end": 25192, "loc": { "start": { "line": 749, @@ -13407,14 +13466,14 @@ }, "end": { "line": 749, - "column": 46 + "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25172, - "end": 25190, + "start": 25160, + "end": 25175, "loc": { "start": { "line": 749, @@ -13422,13 +13481,13 @@ }, "end": { "line": 749, - "column": 26 + "column": 23 } }, "object": { "type": "ThisExpression", - "start": 25172, - "end": 25176, + "start": 25160, + "end": 25164, "loc": { "start": { "line": 749, @@ -13442,8 +13501,8 @@ }, "property": { "type": "Identifier", - "start": 25177, - "end": 25190, + "start": 25165, + "end": 25175, "loc": { "start": { "line": 749, @@ -13451,40 +13510,40 @@ }, "end": { "line": 749, - "column": 26 + "column": 23 }, - "identifierName": "dollyMinSpeed" + "identifierName": "panInertia" }, - "name": "dollyMinSpeed" + "name": "panInertia" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 25193, - "end": 25210, + "start": 25178, + "end": 25192, "loc": { "start": { "line": 749, - "column": 29 + "column": 26 }, "end": { "line": 749, - "column": 46 + "column": 40 } }, "object": { "type": "Identifier", - "start": 25193, - "end": 25196, + "start": 25178, + "end": 25181, "loc": { "start": { "line": 749, - "column": 29 + "column": 26 }, "end": { "line": 749, - "column": 32 + "column": 29 }, "identifierName": "cfg" }, @@ -13492,20 +13551,20 @@ }, "property": { "type": "Identifier", - "start": 25197, - "end": 25210, + "start": 25182, + "end": 25192, "loc": { "start": { "line": 749, - "column": 33 + "column": 30 }, "end": { "line": 749, - "column": 46 + "column": 40 }, - "identifierName": "dollyMinSpeed" + "identifierName": "panInertia" }, - "name": "dollyMinSpeed" + "name": "panInertia" }, "computed": false } @@ -13513,8 +13572,8 @@ }, { "type": "ExpressionStatement", - "start": 25220, - "end": 25253, + "start": 25202, + "end": 25229, "loc": { "start": { "line": 750, @@ -13522,13 +13581,13 @@ }, "end": { "line": 750, - "column": 41 + "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 25220, - "end": 25252, + "start": 25202, + "end": 25228, "loc": { "start": { "line": 750, @@ -13536,14 +13595,14 @@ }, "end": { "line": 750, - "column": 40 + "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25220, - "end": 25235, + "start": 25202, + "end": 25221, "loc": { "start": { "line": 750, @@ -13551,13 +13610,13 @@ }, "end": { "line": 750, - "column": 23 + "column": 27 } }, "object": { "type": "ThisExpression", - "start": 25220, - "end": 25224, + "start": 25202, + "end": 25206, "loc": { "start": { "line": 750, @@ -13571,8 +13630,8 @@ }, "property": { "type": "Identifier", - "start": 25225, - "end": 25235, + "start": 25207, + "end": 25221, "loc": { "start": { "line": 750, @@ -13580,70 +13639,36 @@ }, "end": { "line": 750, - "column": 23 + "column": 27 }, - "identifierName": "panInertia" + "identifierName": "pointerEnabled" }, - "name": "panInertia" + "name": "pointerEnabled" }, "computed": false }, "right": { - "type": "MemberExpression", - "start": 25238, - "end": 25252, + "type": "BooleanLiteral", + "start": 25224, + "end": 25228, "loc": { "start": { "line": 750, - "column": 26 + "column": 30 }, "end": { "line": 750, - "column": 40 + "column": 34 } }, - "object": { - "type": "Identifier", - "start": 25238, - "end": 25241, - "loc": { - "start": { - "line": 750, - "column": 26 - }, - "end": { - "line": 750, - "column": 29 - }, - "identifierName": "cfg" - }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 25242, - "end": 25252, - "loc": { - "start": { - "line": 750, - "column": 30 - }, - "end": { - "line": 750, - "column": 40 - }, - "identifierName": "panInertia" - }, - "name": "panInertia" - }, - "computed": false + "value": true } } }, { "type": "ExpressionStatement", - "start": 25262, - "end": 25289, + "start": 25238, + "end": 25285, "loc": { "start": { "line": 751, @@ -13651,13 +13676,13 @@ }, "end": { "line": 751, - "column": 35 + "column": 55 } }, "expression": { "type": "AssignmentExpression", - "start": 25262, - "end": 25288, + "start": 25238, + "end": 25284, "loc": { "start": { "line": 751, @@ -13665,14 +13690,14 @@ }, "end": { "line": 751, - "column": 34 + "column": 54 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25262, - "end": 25281, + "start": 25238, + "end": 25260, "loc": { "start": { "line": 751, @@ -13680,13 +13705,13 @@ }, "end": { "line": 751, - "column": 27 + "column": 30 } }, "object": { "type": "ThisExpression", - "start": 25262, - "end": 25266, + "start": 25238, + "end": 25242, "loc": { "start": { "line": 751, @@ -13700,8 +13725,8 @@ }, "property": { "type": "Identifier", - "start": 25267, - "end": 25281, + "start": 25243, + "end": 25260, "loc": { "start": { "line": 751, @@ -13709,101 +13734,6 @@ }, "end": { "line": 751, - "column": 27 - }, - "identifierName": "pointerEnabled" - }, - "name": "pointerEnabled" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 25284, - "end": 25288, - "loc": { - "start": { - "line": 751, - "column": 30 - }, - "end": { - "line": 751, - "column": 34 - } - }, - "value": true - } - } - }, - { - "type": "ExpressionStatement", - "start": 25298, - "end": 25345, - "loc": { - "start": { - "line": 752, - "column": 8 - }, - "end": { - "line": 752, - "column": 55 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 25298, - "end": 25344, - "loc": { - "start": { - "line": 752, - "column": 8 - }, - "end": { - "line": 752, - "column": 54 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 25298, - "end": 25320, - "loc": { - "start": { - "line": 752, - "column": 8 - }, - "end": { - "line": 752, - "column": 30 - } - }, - "object": { - "type": "ThisExpression", - "start": 25298, - "end": 25302, - "loc": { - "start": { - "line": 752, - "column": 8 - }, - "end": { - "line": 752, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 25303, - "end": 25320, - "loc": { - "start": { - "line": 752, - "column": 13 - }, - "end": { - "line": 752, "column": 30 }, "identifierName": "keyboardDollyRate" @@ -13814,29 +13744,29 @@ }, "right": { "type": "MemberExpression", - "start": 25323, - "end": 25344, + "start": 25263, + "end": 25284, "loc": { "start": { - "line": 752, + "line": 751, "column": 33 }, "end": { - "line": 752, + "line": 751, "column": 54 } }, "object": { "type": "Identifier", - "start": 25323, - "end": 25326, + "start": 25263, + "end": 25266, "loc": { "start": { - "line": 752, + "line": 751, "column": 33 }, "end": { - "line": 752, + "line": 751, "column": 36 }, "identifierName": "cfg" @@ -13845,15 +13775,15 @@ }, "property": { "type": "Identifier", - "start": 25327, - "end": 25344, + "start": 25267, + "end": 25284, "loc": { "start": { - "line": 752, + "line": 751, "column": 37 }, "end": { - "line": 752, + "line": 751, "column": 54 }, "identifierName": "keyboardDollyRate" @@ -13866,73 +13796,73 @@ }, { "type": "ExpressionStatement", - "start": 25354, - "end": 25405, + "start": 25294, + "end": 25345, "loc": { "start": { - "line": 753, + "line": 752, "column": 8 }, "end": { - "line": 753, + "line": 752, "column": 59 } }, "expression": { "type": "AssignmentExpression", - "start": 25354, - "end": 25404, + "start": 25294, + "end": 25344, "loc": { "start": { - "line": 753, + "line": 752, "column": 8 }, "end": { - "line": 753, + "line": 752, "column": 58 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25354, - "end": 25378, + "start": 25294, + "end": 25318, "loc": { "start": { - "line": 753, + "line": 752, "column": 8 }, "end": { - "line": 753, + "line": 752, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 25354, - "end": 25358, + "start": 25294, + "end": 25298, "loc": { "start": { - "line": 753, + "line": 752, "column": 8 }, "end": { - "line": 753, + "line": 752, "column": 12 } } }, "property": { "type": "Identifier", - "start": 25359, - "end": 25378, + "start": 25299, + "end": 25318, "loc": { "start": { - "line": 753, + "line": 752, "column": 13 }, "end": { - "line": 753, + "line": 752, "column": 32 }, "identifierName": "mouseWheelDollyRate" @@ -13943,29 +13873,29 @@ }, "right": { "type": "MemberExpression", - "start": 25381, - "end": 25404, + "start": 25321, + "end": 25344, "loc": { "start": { - "line": 753, + "line": 752, "column": 35 }, "end": { - "line": 753, + "line": 752, "column": 58 } }, "object": { "type": "Identifier", - "start": 25381, - "end": 25384, + "start": 25321, + "end": 25324, "loc": { "start": { - "line": 753, + "line": 752, "column": 35 }, "end": { - "line": 753, + "line": 752, "column": 38 }, "identifierName": "cfg" @@ -13974,15 +13904,15 @@ }, "property": { "type": "Identifier", - "start": 25385, - "end": 25404, + "start": 25325, + "end": 25344, "loc": { "start": { - "line": 753, + "line": 752, "column": 39 }, "end": { - "line": 753, + "line": 752, "column": 58 }, "identifierName": "mouseWheelDollyRate" @@ -14019,15 +13949,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 25417, - "end": 25756, + "start": 25357, + "end": 25696, "loc": { "start": { - "line": 756, + "line": 755, "column": 4 }, "end": { - "line": 763, + "line": 762, "column": 7 } } @@ -14036,15 +13966,15 @@ }, { "type": "ClassMethod", - "start": 25761, - "end": 28884, + "start": 25701, + "end": 28824, "loc": { "start": { - "line": 764, + "line": 763, "column": 4 }, "end": { - "line": 823, + "line": 822, "column": 5 } }, @@ -14052,15 +13982,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25765, - "end": 25771, + "start": 25705, + "end": 25711, "loc": { "start": { - "line": 764, + "line": 763, "column": 8 }, "end": { - "line": 764, + "line": 763, "column": 14 }, "identifierName": "keyMap" @@ -14075,15 +14005,15 @@ "params": [ { "type": "Identifier", - "start": 25772, - "end": 25777, + "start": 25712, + "end": 25717, "loc": { "start": { - "line": 764, + "line": 763, "column": 15 }, "end": { - "line": 764, + "line": 763, "column": 20 }, "identifierName": "value" @@ -14093,59 +14023,59 @@ ], "body": { "type": "BlockStatement", - "start": 25779, - "end": 28884, + "start": 25719, + "end": 28824, "loc": { "start": { - "line": 764, + "line": 763, "column": 22 }, "end": { - "line": 823, + "line": 822, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 25789, - "end": 25815, + "start": 25729, + "end": 25755, "loc": { "start": { - "line": 765, + "line": 764, "column": 8 }, "end": { - "line": 765, + "line": 764, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 25789, - "end": 25814, + "start": 25729, + "end": 25754, "loc": { "start": { - "line": 765, + "line": 764, "column": 8 }, "end": { - "line": 765, + "line": 764, "column": 33 } }, "operator": "=", "left": { "type": "Identifier", - "start": 25789, - "end": 25794, + "start": 25729, + "end": 25734, "loc": { "start": { - "line": 765, + "line": 764, "column": 8 }, "end": { - "line": 765, + "line": 764, "column": 13 }, "identifierName": "value" @@ -14154,29 +14084,29 @@ }, "right": { "type": "LogicalExpression", - "start": 25797, - "end": 25814, + "start": 25737, + "end": 25754, "loc": { "start": { - "line": 765, + "line": 764, "column": 16 }, "end": { - "line": 765, + "line": 764, "column": 33 } }, "left": { "type": "Identifier", - "start": 25797, - "end": 25802, + "start": 25737, + "end": 25742, "loc": { "start": { - "line": 765, + "line": 764, "column": 16 }, "end": { - "line": 765, + "line": 764, "column": 21 }, "identifierName": "value" @@ -14186,15 +14116,15 @@ "operator": "||", "right": { "type": "StringLiteral", - "start": 25806, - "end": 25814, + "start": 25746, + "end": 25754, "loc": { "start": { - "line": 765, + "line": 764, "column": 25 }, "end": { - "line": 765, + "line": 764, "column": 33 } }, @@ -14209,57 +14139,57 @@ }, { "type": "IfStatement", - "start": 25824, - "end": 28878, + "start": 25764, + "end": 28818, "loc": { "start": { - "line": 766, + "line": 765, "column": 8 }, "end": { - "line": 822, + "line": 821, "column": 9 } }, "test": { "type": "CallExpression", - "start": 25828, - "end": 25849, + "start": 25768, + "end": 25789, "loc": { "start": { - "line": 766, + "line": 765, "column": 12 }, "end": { - "line": 766, + "line": 765, "column": 33 } }, "callee": { "type": "MemberExpression", - "start": 25828, - "end": 25842, + "start": 25768, + "end": 25782, "loc": { "start": { - "line": 766, + "line": 765, "column": 12 }, "end": { - "line": 766, + "line": 765, "column": 26 } }, "object": { "type": "Identifier", - "start": 25828, - "end": 25833, + "start": 25768, + "end": 25773, "loc": { "start": { - "line": 766, + "line": 765, "column": 12 }, "end": { - "line": 766, + "line": 765, "column": 17 }, "identifierName": "utils" @@ -14268,15 +14198,15 @@ }, "property": { "type": "Identifier", - "start": 25834, - "end": 25842, + "start": 25774, + "end": 25782, "loc": { "start": { - "line": 766, + "line": 765, "column": 18 }, "end": { - "line": 766, + "line": 765, "column": 26 }, "identifierName": "isString" @@ -14288,15 +14218,15 @@ "arguments": [ { "type": "Identifier", - "start": 25843, - "end": 25848, + "start": 25783, + "end": 25788, "loc": { "start": { - "line": 766, + "line": 765, "column": 27 }, "end": { - "line": 766, + "line": 765, "column": 32 }, "identifierName": "value" @@ -14307,59 +14237,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 25851, - "end": 28792, + "start": 25791, + "end": 28732, "loc": { "start": { - "line": 766, + "line": 765, "column": 35 }, "end": { - "line": 819, + "line": 818, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 25865, - "end": 25896, + "start": 25805, + "end": 25836, "loc": { "start": { - "line": 767, + "line": 766, "column": 12 }, "end": { - "line": 767, + "line": 766, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 25871, - "end": 25895, + "start": 25811, + "end": 25835, "loc": { "start": { - "line": 767, + "line": 766, "column": 18 }, "end": { - "line": 767, + "line": 766, "column": 42 } }, "id": { "type": "Identifier", - "start": 25871, - "end": 25876, + "start": 25811, + "end": 25816, "loc": { "start": { - "line": 767, + "line": 766, "column": 18 }, "end": { - "line": 767, + "line": 766, "column": 23 }, "identifierName": "input" @@ -14368,58 +14298,58 @@ }, "init": { "type": "MemberExpression", - "start": 25879, - "end": 25895, + "start": 25819, + "end": 25835, "loc": { "start": { - "line": 767, + "line": 766, "column": 26 }, "end": { - "line": 767, + "line": 766, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 25879, - "end": 25889, + "start": 25819, + "end": 25829, "loc": { "start": { - "line": 767, + "line": 766, "column": 26 }, "end": { - "line": 767, + "line": 766, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 25879, - "end": 25883, + "start": 25819, + "end": 25823, "loc": { "start": { - "line": 767, + "line": 766, "column": 26 }, "end": { - "line": 767, + "line": 766, "column": 30 } } }, "property": { "type": "Identifier", - "start": 25884, - "end": 25889, + "start": 25824, + "end": 25829, "loc": { "start": { - "line": 767, + "line": 766, "column": 31 }, "end": { - "line": 767, + "line": 766, "column": 36 }, "identifierName": "scene" @@ -14430,15 +14360,15 @@ }, "property": { "type": "Identifier", - "start": 25890, - "end": 25895, + "start": 25830, + "end": 25835, "loc": { "start": { - "line": 767, + "line": 766, "column": 37 }, "end": { - "line": 767, + "line": 766, "column": 42 }, "identifierName": "input" @@ -14453,44 +14383,44 @@ }, { "type": "VariableDeclaration", - "start": 25909, - "end": 25927, + "start": 25849, + "end": 25867, "loc": { "start": { - "line": 768, + "line": 767, "column": 12 }, "end": { - "line": 768, + "line": 767, "column": 30 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 25915, - "end": 25926, + "start": 25855, + "end": 25866, "loc": { "start": { - "line": 768, + "line": 767, "column": 18 }, "end": { - "line": 768, + "line": 767, "column": 29 } }, "id": { "type": "Identifier", - "start": 25915, - "end": 25921, + "start": 25855, + "end": 25861, "loc": { "start": { - "line": 768, + "line": 767, "column": 18 }, "end": { - "line": 768, + "line": 767, "column": 24 }, "identifierName": "keyMap" @@ -14499,15 +14429,15 @@ }, "init": { "type": "ObjectExpression", - "start": 25924, - "end": 25926, + "start": 25864, + "end": 25866, "loc": { "start": { - "line": 768, + "line": 767, "column": 27 }, "end": { - "line": 768, + "line": 767, "column": 29 } }, @@ -14519,29 +14449,29 @@ }, { "type": "SwitchStatement", - "start": 25941, - "end": 28746, + "start": 25881, + "end": 28686, "loc": { "start": { - "line": 770, + "line": 769, "column": 12 }, "end": { - "line": 816, + "line": 815, "column": 13 } }, "discriminant": { "type": "Identifier", - "start": 25949, - "end": 25954, + "start": 25889, + "end": 25894, "loc": { "start": { - "line": 770, + "line": 769, "column": 20 }, "end": { - "line": 770, + "line": 769, "column": 25 }, "identifierName": "value" @@ -14551,87 +14481,87 @@ "cases": [ { "type": "SwitchCase", - "start": 25975, - "end": 26087, + "start": 25915, + "end": 26027, "loc": { "start": { - "line": 772, + "line": 771, "column": 16 }, "end": { - "line": 773, + "line": 772, "column": 103 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 26004, - "end": 26087, + "start": 25944, + "end": 26027, "loc": { "start": { - "line": 773, + "line": 772, "column": 20 }, "end": { - "line": 773, + "line": 772, "column": 103 } }, "expression": { "type": "CallExpression", - "start": 26004, - "end": 26086, + "start": 25944, + "end": 26026, "loc": { "start": { - "line": 773, + "line": 772, "column": 20 }, "end": { - "line": 773, + "line": 772, "column": 102 } }, "callee": { "type": "MemberExpression", - "start": 26004, - "end": 26014, + "start": 25944, + "end": 25954, "loc": { "start": { - "line": 773, + "line": 772, "column": 20 }, "end": { - "line": 773, + "line": 772, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 26004, - "end": 26008, + "start": 25944, + "end": 25948, "loc": { "start": { - "line": 773, + "line": 772, "column": 20 }, "end": { - "line": 773, + "line": 772, "column": 24 } } }, "property": { "type": "Identifier", - "start": 26009, - "end": 26014, + "start": 25949, + "end": 25954, "loc": { "start": { - "line": 773, + "line": 772, "column": 25 }, "end": { - "line": 773, + "line": 772, "column": 30 }, "identifierName": "error" @@ -14643,43 +14573,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 26015, - "end": 26085, + "start": 25955, + "end": 26025, "loc": { "start": { - "line": 773, + "line": 772, "column": 31 }, "end": { - "line": 773, + "line": 772, "column": 101 } }, "left": { "type": "BinaryExpression", - "start": 26015, - "end": 26057, + "start": 25955, + "end": 25997, "loc": { "start": { - "line": 773, + "line": 772, "column": 31 }, "end": { - "line": 773, + "line": 772, "column": 73 } }, "left": { "type": "StringLiteral", - "start": 26015, - "end": 26049, + "start": 25955, + "end": 25989, "loc": { "start": { - "line": 773, + "line": 772, "column": 31 }, "end": { - "line": 773, + "line": 772, "column": 65 } }, @@ -14692,15 +14622,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 26052, - "end": 26057, + "start": 25992, + "end": 25997, "loc": { "start": { - "line": 773, + "line": 772, "column": 68 }, "end": { - "line": 773, + "line": 772, "column": 73 }, "identifierName": "value" @@ -14711,15 +14641,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 26060, - "end": 26085, + "start": 26000, + "end": 26025, "loc": { "start": { - "line": 773, + "line": 772, "column": 76 }, "end": { - "line": 773, + "line": 772, "column": 101 } }, @@ -14740,15 +14670,15 @@ { "type": "CommentLine", "value": " Intentional fall-through to \"qwerty\"", - "start": 26104, - "end": 26143, + "start": 26044, + "end": 26083, "loc": { "start": { - "line": 774, + "line": 773, "column": 16 }, "end": { - "line": 774, + "line": 773, "column": 55 } } @@ -14757,22 +14687,201 @@ }, { "type": "SwitchCase", - "start": 26160, - "end": 27437, + "start": 26100, + "end": 27377, "loc": { "start": { - "line": 775, + "line": 774, "column": 16 }, "end": { - "line": 794, + "line": 793, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 26195, + "start": 26135, + "end": 26173, + "loc": { + "start": { + "line": 775, + "column": 20 + }, + "end": { + "line": 775, + "column": 58 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 26135, + "end": 26172, + "loc": { + "start": { + "line": 775, + "column": 20 + }, + "end": { + "line": 775, + "column": 57 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 26135, + "end": 26156, + "loc": { + "start": { + "line": 775, + "column": 20 + }, + "end": { + "line": 775, + "column": 41 + } + }, + "object": { + "type": "Identifier", + "start": 26135, + "end": 26141, + "loc": { + "start": { + "line": 775, + "column": 20 + }, + "end": { + "line": 775, + "column": 26 + }, + "identifierName": "keyMap" + }, + "name": "keyMap" + }, + "property": { + "type": "MemberExpression", + "start": 26142, + "end": 26155, + "loc": { + "start": { + "line": 775, + "column": 27 + }, + "end": { + "line": 775, + "column": 40 + } + }, + "object": { + "type": "ThisExpression", + "start": 26142, + "end": 26146, + "loc": { + "start": { + "line": 775, + "column": 27 + }, + "end": { + "line": 775, + "column": 31 + } + } + }, + "property": { + "type": "Identifier", + "start": 26147, + "end": 26155, + "loc": { + "start": { + "line": 775, + "column": 32 + }, + "end": { + "line": 775, + "column": 40 + }, + "identifierName": "PAN_LEFT" + }, + "name": "PAN_LEFT" + }, + "computed": false + }, + "computed": true + }, + "right": { + "type": "ArrayExpression", + "start": 26159, + "end": 26172, + "loc": { + "start": { + "line": 775, + "column": 44 + }, + "end": { + "line": 775, + "column": 57 + } + }, + "elements": [ + { + "type": "MemberExpression", + "start": 26160, + "end": 26171, + "loc": { + "start": { + "line": 775, + "column": 45 + }, + "end": { + "line": 775, + "column": 56 + } + }, + "object": { + "type": "Identifier", + "start": 26160, + "end": 26165, + "loc": { + "start": { + "line": 775, + "column": 45 + }, + "end": { + "line": 775, + "column": 50 + }, + "identifierName": "input" + }, + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 26166, + "end": 26171, + "loc": { + "start": { + "line": 775, + "column": 51 + }, + "end": { + "line": 775, + "column": 56 + }, + "identifierName": "KEY_A" + }, + "name": "KEY_A" + }, + "computed": false + } + ] + } + } + }, + { + "type": "ExpressionStatement", + "start": 26194, "end": 26233, "loc": { "start": { @@ -14781,12 +14890,12 @@ }, "end": { "line": 776, - "column": 58 + "column": 59 } }, "expression": { "type": "AssignmentExpression", - "start": 26195, + "start": 26194, "end": 26232, "loc": { "start": { @@ -14795,13 +14904,13 @@ }, "end": { "line": 776, - "column": 57 + "column": 58 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26195, + "start": 26194, "end": 26216, "loc": { "start": { @@ -14810,13 +14919,13 @@ }, "end": { "line": 776, - "column": 41 + "column": 42 } }, "object": { "type": "Identifier", - "start": 26195, - "end": 26201, + "start": 26194, + "end": 26200, "loc": { "start": { "line": 776, @@ -14832,7 +14941,7 @@ }, "property": { "type": "MemberExpression", - "start": 26202, + "start": 26201, "end": 26215, "loc": { "start": { @@ -14841,13 +14950,13 @@ }, "end": { "line": 776, - "column": 40 + "column": 41 } }, "object": { "type": "ThisExpression", - "start": 26202, - "end": 26206, + "start": 26201, + "end": 26205, "loc": { "start": { "line": 776, @@ -14861,7 +14970,7 @@ }, "property": { "type": "Identifier", - "start": 26207, + "start": 26206, "end": 26215, "loc": { "start": { @@ -14870,11 +14979,11 @@ }, "end": { "line": 776, - "column": 40 + "column": 41 }, - "identifierName": "PAN_LEFT" + "identifierName": "PAN_RIGHT" }, - "name": "PAN_LEFT" + "name": "PAN_RIGHT" }, "computed": false }, @@ -14887,11 +14996,11 @@ "loc": { "start": { "line": 776, - "column": 44 + "column": 45 }, "end": { "line": 776, - "column": 57 + "column": 58 } }, "elements": [ @@ -14902,11 +15011,11 @@ "loc": { "start": { "line": 776, - "column": 45 + "column": 46 }, "end": { "line": 776, - "column": 56 + "column": 57 } }, "object": { @@ -14916,11 +15025,11 @@ "loc": { "start": { "line": 776, - "column": 45 + "column": 46 }, "end": { "line": 776, - "column": 50 + "column": 51 }, "identifierName": "input" }, @@ -14933,15 +15042,15 @@ "loc": { "start": { "line": 776, - "column": 51 + "column": 52 }, "end": { "line": 776, - "column": 56 + "column": 57 }, - "identifierName": "KEY_A" + "identifierName": "KEY_D" }, - "name": "KEY_A" + "name": "KEY_D" }, "computed": false } @@ -14952,7 +15061,7 @@ { "type": "ExpressionStatement", "start": 26254, - "end": 26293, + "end": 26290, "loc": { "start": { "line": 777, @@ -14960,13 +15069,13 @@ }, "end": { "line": 777, - "column": 59 + "column": 56 } }, "expression": { "type": "AssignmentExpression", "start": 26254, - "end": 26292, + "end": 26289, "loc": { "start": { "line": 777, @@ -14974,14 +15083,14 @@ }, "end": { "line": 777, - "column": 58 + "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", "start": 26254, - "end": 26276, + "end": 26273, "loc": { "start": { "line": 777, @@ -14989,7 +15098,7 @@ }, "end": { "line": 777, - "column": 42 + "column": 39 } }, "object": { @@ -15012,7 +15121,7 @@ "property": { "type": "MemberExpression", "start": 26261, - "end": 26275, + "end": 26272, "loc": { "start": { "line": 777, @@ -15020,7 +15129,7 @@ }, "end": { "line": 777, - "column": 41 + "column": 38 } }, "object": { @@ -15041,7 +15150,7 @@ "property": { "type": "Identifier", "start": 26266, - "end": 26275, + "end": 26272, "loc": { "start": { "line": 777, @@ -15049,11 +15158,11 @@ }, "end": { "line": 777, - "column": 41 + "column": 38 }, - "identifierName": "PAN_RIGHT" + "identifierName": "PAN_UP" }, - "name": "PAN_RIGHT" + "name": "PAN_UP" }, "computed": false }, @@ -15061,45 +15170,45 @@ }, "right": { "type": "ArrayExpression", - "start": 26279, - "end": 26292, + "start": 26276, + "end": 26289, "loc": { "start": { "line": 777, - "column": 45 + "column": 42 }, "end": { "line": 777, - "column": 58 + "column": 55 } }, "elements": [ { "type": "MemberExpression", - "start": 26280, - "end": 26291, + "start": 26277, + "end": 26288, "loc": { "start": { "line": 777, - "column": 46 + "column": 43 }, "end": { "line": 777, - "column": 57 + "column": 54 } }, "object": { "type": "Identifier", - "start": 26280, - "end": 26285, + "start": 26277, + "end": 26282, "loc": { "start": { "line": 777, - "column": 46 + "column": 43 }, "end": { "line": 777, - "column": 51 + "column": 48 }, "identifierName": "input" }, @@ -15107,20 +15216,20 @@ }, "property": { "type": "Identifier", - "start": 26286, - "end": 26291, + "start": 26283, + "end": 26288, "loc": { "start": { "line": 777, - "column": 52 + "column": 49 }, "end": { "line": 777, - "column": 57 + "column": 54 }, - "identifierName": "KEY_D" + "identifierName": "KEY_Z" }, - "name": "KEY_D" + "name": "KEY_Z" }, "computed": false } @@ -15130,8 +15239,8 @@ }, { "type": "ExpressionStatement", - "start": 26314, - "end": 26350, + "start": 26311, + "end": 26349, "loc": { "start": { "line": 778, @@ -15139,13 +15248,13 @@ }, "end": { "line": 778, - "column": 56 + "column": 58 } }, "expression": { "type": "AssignmentExpression", - "start": 26314, - "end": 26349, + "start": 26311, + "end": 26348, "loc": { "start": { "line": 778, @@ -15153,14 +15262,14 @@ }, "end": { "line": 778, - "column": 55 + "column": 57 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26314, - "end": 26333, + "start": 26311, + "end": 26332, "loc": { "start": { "line": 778, @@ -15168,13 +15277,13 @@ }, "end": { "line": 778, - "column": 39 + "column": 41 } }, "object": { "type": "Identifier", - "start": 26314, - "end": 26320, + "start": 26311, + "end": 26317, "loc": { "start": { "line": 778, @@ -15190,8 +15299,8 @@ }, "property": { "type": "MemberExpression", - "start": 26321, - "end": 26332, + "start": 26318, + "end": 26331, "loc": { "start": { "line": 778, @@ -15199,13 +15308,13 @@ }, "end": { "line": 778, - "column": 38 + "column": 40 } }, "object": { "type": "ThisExpression", - "start": 26321, - "end": 26325, + "start": 26318, + "end": 26322, "loc": { "start": { "line": 778, @@ -15219,8 +15328,8 @@ }, "property": { "type": "Identifier", - "start": 26326, - "end": 26332, + "start": 26323, + "end": 26331, "loc": { "start": { "line": 778, @@ -15228,11 +15337,11 @@ }, "end": { "line": 778, - "column": 38 + "column": 40 }, - "identifierName": "PAN_UP" + "identifierName": "PAN_DOWN" }, - "name": "PAN_UP" + "name": "PAN_DOWN" }, "computed": false }, @@ -15240,45 +15349,45 @@ }, "right": { "type": "ArrayExpression", - "start": 26336, - "end": 26349, + "start": 26335, + "end": 26348, "loc": { "start": { "line": 778, - "column": 42 + "column": 44 }, "end": { "line": 778, - "column": 55 + "column": 57 } }, "elements": [ { "type": "MemberExpression", - "start": 26337, - "end": 26348, + "start": 26336, + "end": 26347, "loc": { "start": { "line": 778, - "column": 43 + "column": 45 }, "end": { "line": 778, - "column": 54 + "column": 56 } }, "object": { "type": "Identifier", - "start": 26337, - "end": 26342, + "start": 26336, + "end": 26341, "loc": { "start": { "line": 778, - "column": 43 + "column": 45 }, "end": { "line": 778, - "column": 48 + "column": 50 }, "identifierName": "input" }, @@ -15286,20 +15395,20 @@ }, "property": { "type": "Identifier", - "start": 26343, - "end": 26348, + "start": 26342, + "end": 26347, "loc": { "start": { "line": 778, - "column": 49 + "column": 51 }, "end": { "line": 778, - "column": 54 + "column": 56 }, - "identifierName": "KEY_Z" + "identifierName": "KEY_X" }, - "name": "KEY_Z" + "name": "KEY_X" }, "computed": false } @@ -15309,8 +15418,8 @@ }, { "type": "ExpressionStatement", - "start": 26371, - "end": 26409, + "start": 26370, + "end": 26402, "loc": { "start": { "line": 779, @@ -15318,13 +15427,13 @@ }, "end": { "line": 779, - "column": 58 + "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 26371, - "end": 26408, + "start": 26370, + "end": 26401, "loc": { "start": { "line": 779, @@ -15332,14 +15441,14 @@ }, "end": { "line": 779, - "column": 57 + "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26371, - "end": 26392, + "start": 26370, + "end": 26396, "loc": { "start": { "line": 779, @@ -15347,13 +15456,13 @@ }, "end": { "line": 779, - "column": 41 + "column": 46 } }, "object": { "type": "Identifier", - "start": 26371, - "end": 26377, + "start": 26370, + "end": 26376, "loc": { "start": { "line": 779, @@ -15369,8 +15478,8 @@ }, "property": { "type": "MemberExpression", - "start": 26378, - "end": 26391, + "start": 26377, + "end": 26395, "loc": { "start": { "line": 779, @@ -15378,13 +15487,13 @@ }, "end": { "line": 779, - "column": 40 + "column": 45 } }, "object": { "type": "ThisExpression", - "start": 26378, - "end": 26382, + "start": 26377, + "end": 26381, "loc": { "start": { "line": 779, @@ -15398,8 +15507,8 @@ }, "property": { "type": "Identifier", - "start": 26383, - "end": 26391, + "start": 26382, + "end": 26395, "loc": { "start": { "line": 779, @@ -15407,11 +15516,11 @@ }, "end": { "line": 779, - "column": 40 + "column": 45 }, - "identifierName": "PAN_DOWN" + "identifierName": "PAN_BACKWARDS" }, - "name": "PAN_DOWN" + "name": "PAN_BACKWARDS" }, "computed": false }, @@ -15419,77 +15528,26 @@ }, "right": { "type": "ArrayExpression", - "start": 26395, - "end": 26408, + "start": 26399, + "end": 26401, "loc": { "start": { "line": 779, - "column": 44 + "column": 49 }, "end": { "line": 779, - "column": 57 + "column": 51 } }, - "elements": [ - { - "type": "MemberExpression", - "start": 26396, - "end": 26407, - "loc": { - "start": { - "line": 779, - "column": 45 - }, - "end": { - "line": 779, - "column": 56 - } - }, - "object": { - "type": "Identifier", - "start": 26396, - "end": 26401, - "loc": { - "start": { - "line": 779, - "column": 45 - }, - "end": { - "line": 779, - "column": 50 - }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 26402, - "end": 26407, - "loc": { - "start": { - "line": 779, - "column": 51 - }, - "end": { - "line": 779, - "column": 56 - }, - "identifierName": "KEY_X" - }, - "name": "KEY_X" - }, - "computed": false - } - ] + "elements": [] } } }, { "type": "ExpressionStatement", - "start": 26430, - "end": 26462, + "start": 26423, + "end": 26454, "loc": { "start": { "line": 780, @@ -15497,13 +15555,13 @@ }, "end": { "line": 780, - "column": 52 + "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 26430, - "end": 26461, + "start": 26423, + "end": 26453, "loc": { "start": { "line": 780, @@ -15511,14 +15569,14 @@ }, "end": { "line": 780, - "column": 51 + "column": 50 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26430, - "end": 26456, + "start": 26423, + "end": 26448, "loc": { "start": { "line": 780, @@ -15526,13 +15584,13 @@ }, "end": { "line": 780, - "column": 46 + "column": 45 } }, "object": { "type": "Identifier", - "start": 26430, - "end": 26436, + "start": 26423, + "end": 26429, "loc": { "start": { "line": 780, @@ -15548,8 +15606,8 @@ }, "property": { "type": "MemberExpression", - "start": 26437, - "end": 26455, + "start": 26430, + "end": 26447, "loc": { "start": { "line": 780, @@ -15557,13 +15615,13 @@ }, "end": { "line": 780, - "column": 45 + "column": 44 } }, "object": { "type": "ThisExpression", - "start": 26437, - "end": 26441, + "start": 26430, + "end": 26434, "loc": { "start": { "line": 780, @@ -15577,8 +15635,8 @@ }, "property": { "type": "Identifier", - "start": 26442, - "end": 26455, + "start": 26435, + "end": 26447, "loc": { "start": { "line": 780, @@ -15586,11 +15644,11 @@ }, "end": { "line": 780, - "column": 45 + "column": 44 }, - "identifierName": "PAN_BACKWARDS" + "identifierName": "PAN_FORWARDS" }, - "name": "PAN_BACKWARDS" + "name": "PAN_FORWARDS" }, "computed": false }, @@ -15598,16 +15656,16 @@ }, "right": { "type": "ArrayExpression", - "start": 26459, - "end": 26461, + "start": 26451, + "end": 26453, "loc": { "start": { "line": 780, - "column": 49 + "column": 48 }, "end": { "line": 780, - "column": 51 + "column": 50 } }, "elements": [] @@ -15616,8 +15674,8 @@ }, { "type": "ExpressionStatement", - "start": 26483, - "end": 26514, + "start": 26475, + "end": 26534, "loc": { "start": { "line": 781, @@ -15625,13 +15683,13 @@ }, "end": { "line": 781, - "column": 51 + "column": 79 } }, "expression": { "type": "AssignmentExpression", - "start": 26483, - "end": 26513, + "start": 26475, + "end": 26533, "loc": { "start": { "line": 781, @@ -15639,14 +15697,14 @@ }, "end": { "line": 781, - "column": 50 + "column": 78 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26483, - "end": 26508, + "start": 26475, + "end": 26502, "loc": { "start": { "line": 781, @@ -15654,13 +15712,13 @@ }, "end": { "line": 781, - "column": 45 + "column": 47 } }, "object": { "type": "Identifier", - "start": 26483, - "end": 26489, + "start": 26475, + "end": 26481, "loc": { "start": { "line": 781, @@ -15676,8 +15734,8 @@ }, "property": { "type": "MemberExpression", - "start": 26490, - "end": 26507, + "start": 26482, + "end": 26501, "loc": { "start": { "line": 781, @@ -15685,13 +15743,13 @@ }, "end": { "line": 781, - "column": 44 + "column": 46 } }, "object": { "type": "ThisExpression", - "start": 26490, - "end": 26494, + "start": 26482, + "end": 26486, "loc": { "start": { "line": 781, @@ -15705,8 +15763,8 @@ }, "property": { "type": "Identifier", - "start": 26495, - "end": 26507, + "start": 26487, + "end": 26501, "loc": { "start": { "line": 781, @@ -15714,11 +15772,11 @@ }, "end": { "line": 781, - "column": 44 + "column": 46 }, - "identifierName": "PAN_FORWARDS" + "identifierName": "DOLLY_FORWARDS" }, - "name": "PAN_FORWARDS" + "name": "DOLLY_FORWARDS" }, "computed": false }, @@ -15726,26 +15784,127 @@ }, "right": { "type": "ArrayExpression", - "start": 26511, - "end": 26513, + "start": 26505, + "end": 26533, "loc": { "start": { "line": 781, - "column": 48 + "column": 50 }, "end": { "line": 781, - "column": 50 + "column": 78 } }, - "elements": [] + "elements": [ + { + "type": "MemberExpression", + "start": 26506, + "end": 26517, + "loc": { + "start": { + "line": 781, + "column": 51 + }, + "end": { + "line": 781, + "column": 62 + } + }, + "object": { + "type": "Identifier", + "start": 26506, + "end": 26511, + "loc": { + "start": { + "line": 781, + "column": 51 + }, + "end": { + "line": 781, + "column": 56 + }, + "identifierName": "input" + }, + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 26512, + "end": 26517, + "loc": { + "start": { + "line": 781, + "column": 57 + }, + "end": { + "line": 781, + "column": 62 + }, + "identifierName": "KEY_W" + }, + "name": "KEY_W" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 26519, + "end": 26532, + "loc": { + "start": { + "line": 781, + "column": 64 + }, + "end": { + "line": 781, + "column": 77 + } + }, + "object": { + "type": "Identifier", + "start": 26519, + "end": 26524, + "loc": { + "start": { + "line": 781, + "column": 64 + }, + "end": { + "line": 781, + "column": 69 + }, + "identifierName": "input" + }, + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 26525, + "end": 26532, + "loc": { + "start": { + "line": 781, + "column": 70 + }, + "end": { + "line": 781, + "column": 77 + }, + "identifierName": "KEY_ADD" + }, + "name": "KEY_ADD" + }, + "computed": false + } + ] } } }, { "type": "ExpressionStatement", - "start": 26535, - "end": 26594, + "start": 26555, + "end": 26620, "loc": { "start": { "line": 782, @@ -15753,13 +15912,13 @@ }, "end": { "line": 782, - "column": 79 + "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 26535, - "end": 26593, + "start": 26555, + "end": 26619, "loc": { "start": { "line": 782, @@ -15767,14 +15926,14 @@ }, "end": { "line": 782, - "column": 78 + "column": 84 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26535, - "end": 26562, + "start": 26555, + "end": 26583, "loc": { "start": { "line": 782, @@ -15782,13 +15941,13 @@ }, "end": { "line": 782, - "column": 47 + "column": 48 } }, "object": { "type": "Identifier", - "start": 26535, - "end": 26541, + "start": 26555, + "end": 26561, "loc": { "start": { "line": 782, @@ -15804,8 +15963,8 @@ }, "property": { "type": "MemberExpression", - "start": 26542, - "end": 26561, + "start": 26562, + "end": 26582, "loc": { "start": { "line": 782, @@ -15813,13 +15972,13 @@ }, "end": { "line": 782, - "column": 46 + "column": 47 } }, "object": { "type": "ThisExpression", - "start": 26542, - "end": 26546, + "start": 26562, + "end": 26566, "loc": { "start": { "line": 782, @@ -15833,8 +15992,8 @@ }, "property": { "type": "Identifier", - "start": 26547, - "end": 26561, + "start": 26567, + "end": 26582, "loc": { "start": { "line": 782, @@ -15842,11 +16001,11 @@ }, "end": { "line": 782, - "column": 46 + "column": 47 }, - "identifierName": "DOLLY_FORWARDS" + "identifierName": "DOLLY_BACKWARDS" }, - "name": "DOLLY_FORWARDS" + "name": "DOLLY_BACKWARDS" }, "computed": false }, @@ -15854,45 +16013,45 @@ }, "right": { "type": "ArrayExpression", - "start": 26565, - "end": 26593, + "start": 26586, + "end": 26619, "loc": { "start": { "line": 782, - "column": 50 + "column": 51 }, "end": { "line": 782, - "column": 78 + "column": 84 } }, "elements": [ { "type": "MemberExpression", - "start": 26566, - "end": 26577, + "start": 26587, + "end": 26598, "loc": { "start": { "line": 782, - "column": 51 + "column": 52 }, "end": { "line": 782, - "column": 62 + "column": 63 } }, "object": { "type": "Identifier", - "start": 26566, - "end": 26571, + "start": 26587, + "end": 26592, "loc": { "start": { "line": 782, - "column": 51 + "column": 52 }, "end": { "line": 782, - "column": 56 + "column": 57 }, "identifierName": "input" }, @@ -15900,49 +16059,49 @@ }, "property": { "type": "Identifier", - "start": 26572, - "end": 26577, + "start": 26593, + "end": 26598, "loc": { "start": { "line": 782, - "column": 57 + "column": 58 }, "end": { "line": 782, - "column": 62 + "column": 63 }, - "identifierName": "KEY_W" + "identifierName": "KEY_S" }, - "name": "KEY_W" + "name": "KEY_S" }, "computed": false }, { "type": "MemberExpression", - "start": 26579, - "end": 26592, + "start": 26600, + "end": 26618, "loc": { "start": { "line": 782, - "column": 64 + "column": 65 }, "end": { "line": 782, - "column": 77 + "column": 83 } }, "object": { "type": "Identifier", - "start": 26579, - "end": 26584, + "start": 26600, + "end": 26605, "loc": { "start": { "line": 782, - "column": 64 + "column": 65 }, "end": { "line": 782, - "column": 69 + "column": 70 }, "identifierName": "input" }, @@ -15950,20 +16109,20 @@ }, "property": { "type": "Identifier", - "start": 26585, - "end": 26592, + "start": 26606, + "end": 26618, "loc": { "start": { "line": 782, - "column": 70 + "column": 71 }, "end": { "line": 782, - "column": 77 + "column": 83 }, - "identifierName": "KEY_ADD" + "identifierName": "KEY_SUBTRACT" }, - "name": "KEY_ADD" + "name": "KEY_SUBTRACT" }, "computed": false } @@ -15973,8 +16132,8 @@ }, { "type": "ExpressionStatement", - "start": 26615, - "end": 26680, + "start": 26641, + "end": 26692, "loc": { "start": { "line": 783, @@ -15982,13 +16141,13 @@ }, "end": { "line": 783, - "column": 85 + "column": 71 } }, "expression": { "type": "AssignmentExpression", - "start": 26615, - "end": 26679, + "start": 26641, + "end": 26691, "loc": { "start": { "line": 783, @@ -15996,14 +16155,14 @@ }, "end": { "line": 783, - "column": 84 + "column": 70 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26615, - "end": 26643, + "start": 26641, + "end": 26666, "loc": { "start": { "line": 783, @@ -16011,13 +16170,13 @@ }, "end": { "line": 783, - "column": 48 + "column": 45 } }, "object": { "type": "Identifier", - "start": 26615, - "end": 26621, + "start": 26641, + "end": 26647, "loc": { "start": { "line": 783, @@ -16033,8 +16192,8 @@ }, "property": { "type": "MemberExpression", - "start": 26622, - "end": 26642, + "start": 26648, + "end": 26665, "loc": { "start": { "line": 783, @@ -16042,13 +16201,13 @@ }, "end": { "line": 783, - "column": 47 + "column": 44 } }, "object": { "type": "ThisExpression", - "start": 26622, - "end": 26626, + "start": 26648, + "end": 26652, "loc": { "start": { "line": 783, @@ -16062,8 +16221,8 @@ }, "property": { "type": "Identifier", - "start": 26627, - "end": 26642, + "start": 26653, + "end": 26665, "loc": { "start": { "line": 783, @@ -16071,11 +16230,11 @@ }, "end": { "line": 783, - "column": 47 + "column": 44 }, - "identifierName": "DOLLY_BACKWARDS" + "identifierName": "ROTATE_X_POS" }, - "name": "DOLLY_BACKWARDS" + "name": "ROTATE_X_POS" }, "computed": false }, @@ -16083,95 +16242,45 @@ }, "right": { "type": "ArrayExpression", - "start": 26646, - "end": 26679, + "start": 26669, + "end": 26691, "loc": { "start": { "line": 783, - "column": 51 + "column": 48 }, "end": { "line": 783, - "column": 84 + "column": 70 } }, "elements": [ { "type": "MemberExpression", - "start": 26647, - "end": 26658, - "loc": { - "start": { - "line": 783, - "column": 52 - }, - "end": { - "line": 783, - "column": 63 - } - }, - "object": { - "type": "Identifier", - "start": 26647, - "end": 26652, - "loc": { - "start": { - "line": 783, - "column": 52 - }, - "end": { - "line": 783, - "column": 57 - }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 26653, - "end": 26658, - "loc": { - "start": { - "line": 783, - "column": 58 - }, - "end": { - "line": 783, - "column": 63 - }, - "identifierName": "KEY_S" - }, - "name": "KEY_S" - }, - "computed": false - }, - { - "type": "MemberExpression", - "start": 26660, - "end": 26678, + "start": 26670, + "end": 26690, "loc": { "start": { "line": 783, - "column": 65 + "column": 49 }, "end": { "line": 783, - "column": 83 + "column": 69 } }, "object": { "type": "Identifier", - "start": 26660, - "end": 26665, + "start": 26670, + "end": 26675, "loc": { "start": { "line": 783, - "column": 65 + "column": 49 }, "end": { "line": 783, - "column": 70 + "column": 54 }, "identifierName": "input" }, @@ -16179,20 +16288,20 @@ }, "property": { "type": "Identifier", - "start": 26666, - "end": 26678, + "start": 26676, + "end": 26690, "loc": { "start": { "line": 783, - "column": 71 + "column": 55 }, "end": { "line": 783, - "column": 83 + "column": 69 }, - "identifierName": "KEY_SUBTRACT" + "identifierName": "KEY_DOWN_ARROW" }, - "name": "KEY_SUBTRACT" + "name": "KEY_DOWN_ARROW" }, "computed": false } @@ -16202,8 +16311,8 @@ }, { "type": "ExpressionStatement", - "start": 26701, - "end": 26752, + "start": 26713, + "end": 26762, "loc": { "start": { "line": 784, @@ -16211,13 +16320,13 @@ }, "end": { "line": 784, - "column": 71 + "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 26701, - "end": 26751, + "start": 26713, + "end": 26761, "loc": { "start": { "line": 784, @@ -16225,14 +16334,14 @@ }, "end": { "line": 784, - "column": 70 + "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26701, - "end": 26726, + "start": 26713, + "end": 26738, "loc": { "start": { "line": 784, @@ -16245,8 +16354,8 @@ }, "object": { "type": "Identifier", - "start": 26701, - "end": 26707, + "start": 26713, + "end": 26719, "loc": { "start": { "line": 784, @@ -16262,8 +16371,8 @@ }, "property": { "type": "MemberExpression", - "start": 26708, - "end": 26725, + "start": 26720, + "end": 26737, "loc": { "start": { "line": 784, @@ -16276,8 +16385,8 @@ }, "object": { "type": "ThisExpression", - "start": 26708, - "end": 26712, + "start": 26720, + "end": 26724, "loc": { "start": { "line": 784, @@ -16291,8 +16400,8 @@ }, "property": { "type": "Identifier", - "start": 26713, - "end": 26725, + "start": 26725, + "end": 26737, "loc": { "start": { "line": 784, @@ -16302,9 +16411,9 @@ "line": 784, "column": 44 }, - "identifierName": "ROTATE_X_POS" + "identifierName": "ROTATE_X_NEG" }, - "name": "ROTATE_X_POS" + "name": "ROTATE_X_NEG" }, "computed": false }, @@ -16312,8 +16421,8 @@ }, "right": { "type": "ArrayExpression", - "start": 26729, - "end": 26751, + "start": 26741, + "end": 26761, "loc": { "start": { "line": 784, @@ -16321,14 +16430,14 @@ }, "end": { "line": 784, - "column": 70 + "column": 68 } }, "elements": [ { "type": "MemberExpression", - "start": 26730, - "end": 26750, + "start": 26742, + "end": 26760, "loc": { "start": { "line": 784, @@ -16336,13 +16445,13 @@ }, "end": { "line": 784, - "column": 69 + "column": 67 } }, "object": { "type": "Identifier", - "start": 26730, - "end": 26735, + "start": 26742, + "end": 26747, "loc": { "start": { "line": 784, @@ -16358,8 +16467,8 @@ }, "property": { "type": "Identifier", - "start": 26736, - "end": 26750, + "start": 26748, + "end": 26760, "loc": { "start": { "line": 784, @@ -16367,11 +16476,11 @@ }, "end": { "line": 784, - "column": 69 + "column": 67 }, - "identifierName": "KEY_DOWN_ARROW" + "identifierName": "KEY_UP_ARROW" }, - "name": "KEY_DOWN_ARROW" + "name": "KEY_UP_ARROW" }, "computed": false } @@ -16381,8 +16490,8 @@ }, { "type": "ExpressionStatement", - "start": 26773, - "end": 26822, + "start": 26783, + "end": 26847, "loc": { "start": { "line": 785, @@ -16390,13 +16499,13 @@ }, "end": { "line": 785, - "column": 69 + "column": 84 } }, "expression": { "type": "AssignmentExpression", - "start": 26773, - "end": 26821, + "start": 26783, + "end": 26846, "loc": { "start": { "line": 785, @@ -16404,14 +16513,14 @@ }, "end": { "line": 785, - "column": 68 + "column": 83 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26773, - "end": 26798, + "start": 26783, + "end": 26808, "loc": { "start": { "line": 785, @@ -16424,8 +16533,8 @@ }, "object": { "type": "Identifier", - "start": 26773, - "end": 26779, + "start": 26783, + "end": 26789, "loc": { "start": { "line": 785, @@ -16441,8 +16550,8 @@ }, "property": { "type": "MemberExpression", - "start": 26780, - "end": 26797, + "start": 26790, + "end": 26807, "loc": { "start": { "line": 785, @@ -16455,8 +16564,8 @@ }, "object": { "type": "ThisExpression", - "start": 26780, - "end": 26784, + "start": 26790, + "end": 26794, "loc": { "start": { "line": 785, @@ -16470,8 +16579,8 @@ }, "property": { "type": "Identifier", - "start": 26785, - "end": 26797, + "start": 26795, + "end": 26807, "loc": { "start": { "line": 785, @@ -16481,9 +16590,9 @@ "line": 785, "column": 44 }, - "identifierName": "ROTATE_X_NEG" + "identifierName": "ROTATE_Y_POS" }, - "name": "ROTATE_X_NEG" + "name": "ROTATE_Y_POS" }, "computed": false }, @@ -16491,8 +16600,8 @@ }, "right": { "type": "ArrayExpression", - "start": 26801, - "end": 26821, + "start": 26811, + "end": 26846, "loc": { "start": { "line": 785, @@ -16500,14 +16609,14 @@ }, "end": { "line": 785, - "column": 68 + "column": 83 } }, "elements": [ { "type": "MemberExpression", - "start": 26802, - "end": 26820, + "start": 26812, + "end": 26823, "loc": { "start": { "line": 785, @@ -16515,13 +16624,13 @@ }, "end": { "line": 785, - "column": 67 + "column": 60 } }, "object": { "type": "Identifier", - "start": 26802, - "end": 26807, + "start": 26812, + "end": 26817, "loc": { "start": { "line": 785, @@ -16537,20 +16646,70 @@ }, "property": { "type": "Identifier", - "start": 26808, - "end": 26820, + "start": 26818, + "end": 26823, "loc": { "start": { "line": 785, "column": 55 }, + "end": { + "line": 785, + "column": 60 + }, + "identifierName": "KEY_Q" + }, + "name": "KEY_Q" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 26825, + "end": 26845, + "loc": { + "start": { + "line": 785, + "column": 62 + }, + "end": { + "line": 785, + "column": 82 + } + }, + "object": { + "type": "Identifier", + "start": 26825, + "end": 26830, + "loc": { + "start": { + "line": 785, + "column": 62 + }, "end": { "line": 785, "column": 67 }, - "identifierName": "KEY_UP_ARROW" + "identifierName": "input" }, - "name": "KEY_UP_ARROW" + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 26831, + "end": 26845, + "loc": { + "start": { + "line": 785, + "column": 68 + }, + "end": { + "line": 785, + "column": 82 + }, + "identifierName": "KEY_LEFT_ARROW" + }, + "name": "KEY_LEFT_ARROW" }, "computed": false } @@ -16560,8 +16719,8 @@ }, { "type": "ExpressionStatement", - "start": 26843, - "end": 26907, + "start": 26868, + "end": 26933, "loc": { "start": { "line": 786, @@ -16569,13 +16728,13 @@ }, "end": { "line": 786, - "column": 84 + "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 26843, - "end": 26906, + "start": 26868, + "end": 26932, "loc": { "start": { "line": 786, @@ -16583,14 +16742,14 @@ }, "end": { "line": 786, - "column": 83 + "column": 84 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26843, - "end": 26868, + "start": 26868, + "end": 26893, "loc": { "start": { "line": 786, @@ -16603,8 +16762,8 @@ }, "object": { "type": "Identifier", - "start": 26843, - "end": 26849, + "start": 26868, + "end": 26874, "loc": { "start": { "line": 786, @@ -16620,8 +16779,8 @@ }, "property": { "type": "MemberExpression", - "start": 26850, - "end": 26867, + "start": 26875, + "end": 26892, "loc": { "start": { "line": 786, @@ -16634,8 +16793,8 @@ }, "object": { "type": "ThisExpression", - "start": 26850, - "end": 26854, + "start": 26875, + "end": 26879, "loc": { "start": { "line": 786, @@ -16649,8 +16808,8 @@ }, "property": { "type": "Identifier", - "start": 26855, - "end": 26867, + "start": 26880, + "end": 26892, "loc": { "start": { "line": 786, @@ -16660,9 +16819,9 @@ "line": 786, "column": 44 }, - "identifierName": "ROTATE_Y_POS" + "identifierName": "ROTATE_Y_NEG" }, - "name": "ROTATE_Y_POS" + "name": "ROTATE_Y_NEG" }, "computed": false }, @@ -16670,8 +16829,8 @@ }, "right": { "type": "ArrayExpression", - "start": 26871, - "end": 26906, + "start": 26896, + "end": 26932, "loc": { "start": { "line": 786, @@ -16679,14 +16838,14 @@ }, "end": { "line": 786, - "column": 83 + "column": 84 } }, "elements": [ { "type": "MemberExpression", - "start": 26872, - "end": 26883, + "start": 26897, + "end": 26908, "loc": { "start": { "line": 786, @@ -16699,8 +16858,8 @@ }, "object": { "type": "Identifier", - "start": 26872, - "end": 26877, + "start": 26897, + "end": 26902, "loc": { "start": { "line": 786, @@ -16716,8 +16875,8 @@ }, "property": { "type": "Identifier", - "start": 26878, - "end": 26883, + "start": 26903, + "end": 26908, "loc": { "start": { "line": 786, @@ -16727,16 +16886,16 @@ "line": 786, "column": 60 }, - "identifierName": "KEY_Q" + "identifierName": "KEY_E" }, - "name": "KEY_Q" + "name": "KEY_E" }, "computed": false }, { "type": "MemberExpression", - "start": 26885, - "end": 26905, + "start": 26910, + "end": 26931, "loc": { "start": { "line": 786, @@ -16744,13 +16903,13 @@ }, "end": { "line": 786, - "column": 82 + "column": 83 } }, "object": { "type": "Identifier", - "start": 26885, - "end": 26890, + "start": 26910, + "end": 26915, "loc": { "start": { "line": 786, @@ -16766,8 +16925,8 @@ }, "property": { "type": "Identifier", - "start": 26891, - "end": 26905, + "start": 26916, + "end": 26931, "loc": { "start": { "line": 786, @@ -16775,11 +16934,11 @@ }, "end": { "line": 786, - "column": 82 + "column": 83 }, - "identifierName": "KEY_LEFT_ARROW" + "identifierName": "KEY_RIGHT_ARROW" }, - "name": "KEY_LEFT_ARROW" + "name": "KEY_RIGHT_ARROW" }, "computed": false } @@ -16789,8 +16948,8 @@ }, { "type": "ExpressionStatement", - "start": 26928, - "end": 26993, + "start": 26954, + "end": 27003, "loc": { "start": { "line": 787, @@ -16798,13 +16957,13 @@ }, "end": { "line": 787, - "column": 85 + "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 26928, - "end": 26992, + "start": 26954, + "end": 27002, "loc": { "start": { "line": 787, @@ -16812,14 +16971,14 @@ }, "end": { "line": 787, - "column": 84 + "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26928, - "end": 26953, + "start": 26954, + "end": 26982, "loc": { "start": { "line": 787, @@ -16827,13 +16986,13 @@ }, "end": { "line": 787, - "column": 45 + "column": 48 } }, "object": { "type": "Identifier", - "start": 26928, - "end": 26934, + "start": 26954, + "end": 26960, "loc": { "start": { "line": 787, @@ -16849,8 +17008,8 @@ }, "property": { "type": "MemberExpression", - "start": 26935, - "end": 26952, + "start": 26961, + "end": 26981, "loc": { "start": { "line": 787, @@ -16858,13 +17017,13 @@ }, "end": { "line": 787, - "column": 44 + "column": 47 } }, "object": { "type": "ThisExpression", - "start": 26935, - "end": 26939, + "start": 26961, + "end": 26965, "loc": { "start": { "line": 787, @@ -16878,8 +17037,8 @@ }, "property": { "type": "Identifier", - "start": 26940, - "end": 26952, + "start": 26966, + "end": 26981, "loc": { "start": { "line": 787, @@ -16887,11 +17046,11 @@ }, "end": { "line": 787, - "column": 44 + "column": 47 }, - "identifierName": "ROTATE_Y_NEG" + "identifierName": "AXIS_VIEW_RIGHT" }, - "name": "ROTATE_Y_NEG" + "name": "AXIS_VIEW_RIGHT" }, "computed": false }, @@ -16899,45 +17058,45 @@ }, "right": { "type": "ArrayExpression", - "start": 26956, - "end": 26992, + "start": 26985, + "end": 27002, "loc": { "start": { "line": 787, - "column": 48 + "column": 51 }, "end": { "line": 787, - "column": 84 + "column": 68 } }, "elements": [ { "type": "MemberExpression", - "start": 26957, - "end": 26968, + "start": 26986, + "end": 27001, "loc": { "start": { "line": 787, - "column": 49 + "column": 52 }, "end": { "line": 787, - "column": 60 + "column": 67 } }, "object": { "type": "Identifier", - "start": 26957, - "end": 26962, + "start": 26986, + "end": 26991, "loc": { "start": { "line": 787, - "column": 49 + "column": 52 }, "end": { "line": 787, - "column": 54 + "column": 57 }, "identifierName": "input" }, @@ -16945,70 +17104,20 @@ }, "property": { "type": "Identifier", - "start": 26963, - "end": 26968, + "start": 26992, + "end": 27001, "loc": { "start": { "line": 787, - "column": 55 - }, - "end": { - "line": 787, - "column": 60 - }, - "identifierName": "KEY_E" - }, - "name": "KEY_E" - }, - "computed": false - }, - { - "type": "MemberExpression", - "start": 26970, - "end": 26991, - "loc": { - "start": { - "line": 787, - "column": 62 - }, - "end": { - "line": 787, - "column": 83 - } - }, - "object": { - "type": "Identifier", - "start": 26970, - "end": 26975, - "loc": { - "start": { - "line": 787, - "column": 62 + "column": 58 }, "end": { "line": 787, "column": 67 }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 26976, - "end": 26991, - "loc": { - "start": { - "line": 787, - "column": 68 - }, - "end": { - "line": 787, - "column": 83 - }, - "identifierName": "KEY_RIGHT_ARROW" + "identifierName": "KEY_NUM_1" }, - "name": "KEY_RIGHT_ARROW" + "name": "KEY_NUM_1" }, "computed": false } @@ -17018,8 +17127,8 @@ }, { "type": "ExpressionStatement", - "start": 27014, - "end": 27063, + "start": 27024, + "end": 27072, "loc": { "start": { "line": 788, @@ -17027,13 +17136,13 @@ }, "end": { "line": 788, - "column": 69 + "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 27014, - "end": 27062, + "start": 27024, + "end": 27071, "loc": { "start": { "line": 788, @@ -17041,14 +17150,14 @@ }, "end": { "line": 788, - "column": 68 + "column": 67 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27014, - "end": 27042, + "start": 27024, + "end": 27051, "loc": { "start": { "line": 788, @@ -17056,13 +17165,13 @@ }, "end": { "line": 788, - "column": 48 + "column": 47 } }, "object": { "type": "Identifier", - "start": 27014, - "end": 27020, + "start": 27024, + "end": 27030, "loc": { "start": { "line": 788, @@ -17078,8 +17187,8 @@ }, "property": { "type": "MemberExpression", - "start": 27021, - "end": 27041, + "start": 27031, + "end": 27050, "loc": { "start": { "line": 788, @@ -17087,13 +17196,13 @@ }, "end": { "line": 788, - "column": 47 + "column": 46 } }, "object": { "type": "ThisExpression", - "start": 27021, - "end": 27025, + "start": 27031, + "end": 27035, "loc": { "start": { "line": 788, @@ -17107,8 +17216,8 @@ }, "property": { "type": "Identifier", - "start": 27026, - "end": 27041, + "start": 27036, + "end": 27050, "loc": { "start": { "line": 788, @@ -17116,11 +17225,11 @@ }, "end": { "line": 788, - "column": 47 + "column": 46 }, - "identifierName": "AXIS_VIEW_RIGHT" + "identifierName": "AXIS_VIEW_BACK" }, - "name": "AXIS_VIEW_RIGHT" + "name": "AXIS_VIEW_BACK" }, "computed": false }, @@ -17128,45 +17237,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27045, - "end": 27062, + "start": 27054, + "end": 27071, "loc": { "start": { "line": 788, - "column": 51 + "column": 50 }, "end": { "line": 788, - "column": 68 + "column": 67 } }, "elements": [ { "type": "MemberExpression", - "start": 27046, - "end": 27061, + "start": 27055, + "end": 27070, "loc": { "start": { "line": 788, - "column": 52 + "column": 51 }, "end": { "line": 788, - "column": 67 + "column": 66 } }, "object": { "type": "Identifier", - "start": 27046, - "end": 27051, + "start": 27055, + "end": 27060, "loc": { "start": { "line": 788, - "column": 52 + "column": 51 }, "end": { "line": 788, - "column": 57 + "column": 56 }, "identifierName": "input" }, @@ -17174,20 +17283,20 @@ }, "property": { "type": "Identifier", - "start": 27052, - "end": 27061, + "start": 27061, + "end": 27070, "loc": { "start": { "line": 788, - "column": 58 + "column": 57 }, "end": { "line": 788, - "column": 67 + "column": 66 }, - "identifierName": "KEY_NUM_1" + "identifierName": "KEY_NUM_2" }, - "name": "KEY_NUM_1" + "name": "KEY_NUM_2" }, "computed": false } @@ -17197,8 +17306,8 @@ }, { "type": "ExpressionStatement", - "start": 27084, - "end": 27132, + "start": 27093, + "end": 27141, "loc": { "start": { "line": 789, @@ -17211,8 +17320,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 27084, - "end": 27131, + "start": 27093, + "end": 27140, "loc": { "start": { "line": 789, @@ -17226,8 +17335,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 27084, - "end": 27111, + "start": 27093, + "end": 27120, "loc": { "start": { "line": 789, @@ -17240,8 +17349,8 @@ }, "object": { "type": "Identifier", - "start": 27084, - "end": 27090, + "start": 27093, + "end": 27099, "loc": { "start": { "line": 789, @@ -17257,8 +17366,8 @@ }, "property": { "type": "MemberExpression", - "start": 27091, - "end": 27110, + "start": 27100, + "end": 27119, "loc": { "start": { "line": 789, @@ -17271,8 +17380,8 @@ }, "object": { "type": "ThisExpression", - "start": 27091, - "end": 27095, + "start": 27100, + "end": 27104, "loc": { "start": { "line": 789, @@ -17286,8 +17395,8 @@ }, "property": { "type": "Identifier", - "start": 27096, - "end": 27110, + "start": 27105, + "end": 27119, "loc": { "start": { "line": 789, @@ -17297,9 +17406,9 @@ "line": 789, "column": 46 }, - "identifierName": "AXIS_VIEW_BACK" + "identifierName": "AXIS_VIEW_LEFT" }, - "name": "AXIS_VIEW_BACK" + "name": "AXIS_VIEW_LEFT" }, "computed": false }, @@ -17307,8 +17416,8 @@ }, "right": { "type": "ArrayExpression", - "start": 27114, - "end": 27131, + "start": 27123, + "end": 27140, "loc": { "start": { "line": 789, @@ -17322,8 +17431,8 @@ "elements": [ { "type": "MemberExpression", - "start": 27115, - "end": 27130, + "start": 27124, + "end": 27139, "loc": { "start": { "line": 789, @@ -17336,8 +17445,8 @@ }, "object": { "type": "Identifier", - "start": 27115, - "end": 27120, + "start": 27124, + "end": 27129, "loc": { "start": { "line": 789, @@ -17353,8 +17462,8 @@ }, "property": { "type": "Identifier", - "start": 27121, - "end": 27130, + "start": 27130, + "end": 27139, "loc": { "start": { "line": 789, @@ -17364,9 +17473,9 @@ "line": 789, "column": 66 }, - "identifierName": "KEY_NUM_2" + "identifierName": "KEY_NUM_3" }, - "name": "KEY_NUM_2" + "name": "KEY_NUM_3" }, "computed": false } @@ -17376,8 +17485,8 @@ }, { "type": "ExpressionStatement", - "start": 27153, - "end": 27201, + "start": 27162, + "end": 27211, "loc": { "start": { "line": 790, @@ -17385,13 +17494,13 @@ }, "end": { "line": 790, - "column": 68 + "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 27153, - "end": 27200, + "start": 27162, + "end": 27210, "loc": { "start": { "line": 790, @@ -17399,14 +17508,14 @@ }, "end": { "line": 790, - "column": 67 + "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27153, - "end": 27180, + "start": 27162, + "end": 27190, "loc": { "start": { "line": 790, @@ -17414,13 +17523,13 @@ }, "end": { "line": 790, - "column": 47 + "column": 48 } }, "object": { "type": "Identifier", - "start": 27153, - "end": 27159, + "start": 27162, + "end": 27168, "loc": { "start": { "line": 790, @@ -17436,8 +17545,8 @@ }, "property": { "type": "MemberExpression", - "start": 27160, - "end": 27179, + "start": 27169, + "end": 27189, "loc": { "start": { "line": 790, @@ -17445,13 +17554,13 @@ }, "end": { "line": 790, - "column": 46 + "column": 47 } }, "object": { "type": "ThisExpression", - "start": 27160, - "end": 27164, + "start": 27169, + "end": 27173, "loc": { "start": { "line": 790, @@ -17465,8 +17574,8 @@ }, "property": { "type": "Identifier", - "start": 27165, - "end": 27179, + "start": 27174, + "end": 27189, "loc": { "start": { "line": 790, @@ -17474,11 +17583,11 @@ }, "end": { "line": 790, - "column": 46 + "column": 47 }, - "identifierName": "AXIS_VIEW_LEFT" + "identifierName": "AXIS_VIEW_FRONT" }, - "name": "AXIS_VIEW_LEFT" + "name": "AXIS_VIEW_FRONT" }, "computed": false }, @@ -17486,45 +17595,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27183, - "end": 27200, + "start": 27193, + "end": 27210, "loc": { "start": { "line": 790, - "column": 50 + "column": 51 }, "end": { "line": 790, - "column": 67 + "column": 68 } }, "elements": [ { "type": "MemberExpression", - "start": 27184, - "end": 27199, + "start": 27194, + "end": 27209, "loc": { "start": { "line": 790, - "column": 51 + "column": 52 }, "end": { "line": 790, - "column": 66 + "column": 67 } }, "object": { "type": "Identifier", - "start": 27184, - "end": 27189, + "start": 27194, + "end": 27199, "loc": { "start": { "line": 790, - "column": 51 + "column": 52 }, "end": { "line": 790, - "column": 56 + "column": 57 }, "identifierName": "input" }, @@ -17532,20 +17641,20 @@ }, "property": { "type": "Identifier", - "start": 27190, - "end": 27199, + "start": 27200, + "end": 27209, "loc": { "start": { "line": 790, - "column": 57 + "column": 58 }, "end": { "line": 790, - "column": 66 + "column": 67 }, - "identifierName": "KEY_NUM_3" + "identifierName": "KEY_NUM_4" }, - "name": "KEY_NUM_3" + "name": "KEY_NUM_4" }, "computed": false } @@ -17555,8 +17664,8 @@ }, { "type": "ExpressionStatement", - "start": 27222, - "end": 27271, + "start": 27232, + "end": 27279, "loc": { "start": { "line": 791, @@ -17564,13 +17673,13 @@ }, "end": { "line": 791, - "column": 69 + "column": 67 } }, "expression": { "type": "AssignmentExpression", - "start": 27222, - "end": 27270, + "start": 27232, + "end": 27278, "loc": { "start": { "line": 791, @@ -17578,14 +17687,14 @@ }, "end": { "line": 791, - "column": 68 + "column": 66 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27222, - "end": 27250, + "start": 27232, + "end": 27258, "loc": { "start": { "line": 791, @@ -17593,13 +17702,13 @@ }, "end": { "line": 791, - "column": 48 + "column": 46 } }, "object": { "type": "Identifier", - "start": 27222, - "end": 27228, + "start": 27232, + "end": 27238, "loc": { "start": { "line": 791, @@ -17615,8 +17724,8 @@ }, "property": { "type": "MemberExpression", - "start": 27229, - "end": 27249, + "start": 27239, + "end": 27257, "loc": { "start": { "line": 791, @@ -17624,13 +17733,13 @@ }, "end": { "line": 791, - "column": 47 + "column": 45 } }, "object": { "type": "ThisExpression", - "start": 27229, - "end": 27233, + "start": 27239, + "end": 27243, "loc": { "start": { "line": 791, @@ -17644,8 +17753,8 @@ }, "property": { "type": "Identifier", - "start": 27234, - "end": 27249, + "start": 27244, + "end": 27257, "loc": { "start": { "line": 791, @@ -17653,11 +17762,11 @@ }, "end": { "line": 791, - "column": 47 + "column": 45 }, - "identifierName": "AXIS_VIEW_FRONT" + "identifierName": "AXIS_VIEW_TOP" }, - "name": "AXIS_VIEW_FRONT" + "name": "AXIS_VIEW_TOP" }, "computed": false }, @@ -17665,45 +17774,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27253, - "end": 27270, + "start": 27261, + "end": 27278, "loc": { "start": { "line": 791, - "column": 51 + "column": 49 }, "end": { "line": 791, - "column": 68 + "column": 66 } }, "elements": [ { "type": "MemberExpression", - "start": 27254, - "end": 27269, + "start": 27262, + "end": 27277, "loc": { "start": { "line": 791, - "column": 52 + "column": 50 }, "end": { "line": 791, - "column": 67 + "column": 65 } }, "object": { "type": "Identifier", - "start": 27254, - "end": 27259, + "start": 27262, + "end": 27267, "loc": { "start": { "line": 791, - "column": 52 + "column": 50 }, "end": { "line": 791, - "column": 57 + "column": 55 }, "identifierName": "input" }, @@ -17711,20 +17820,20 @@ }, "property": { "type": "Identifier", - "start": 27260, - "end": 27269, + "start": 27268, + "end": 27277, "loc": { "start": { "line": 791, - "column": 58 + "column": 56 }, "end": { "line": 791, - "column": 67 + "column": 65 }, - "identifierName": "KEY_NUM_4" + "identifierName": "KEY_NUM_5" }, - "name": "KEY_NUM_4" + "name": "KEY_NUM_5" }, "computed": false } @@ -17734,8 +17843,8 @@ }, { "type": "ExpressionStatement", - "start": 27292, - "end": 27339, + "start": 27300, + "end": 27350, "loc": { "start": { "line": 792, @@ -17743,13 +17852,13 @@ }, "end": { "line": 792, - "column": 67 + "column": 70 } }, "expression": { "type": "AssignmentExpression", - "start": 27292, - "end": 27338, + "start": 27300, + "end": 27349, "loc": { "start": { "line": 792, @@ -17757,14 +17866,14 @@ }, "end": { "line": 792, - "column": 66 + "column": 69 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27292, - "end": 27318, + "start": 27300, + "end": 27329, "loc": { "start": { "line": 792, @@ -17772,13 +17881,13 @@ }, "end": { "line": 792, - "column": 46 + "column": 49 } }, "object": { "type": "Identifier", - "start": 27292, - "end": 27298, + "start": 27300, + "end": 27306, "loc": { "start": { "line": 792, @@ -17794,8 +17903,8 @@ }, "property": { "type": "MemberExpression", - "start": 27299, - "end": 27317, + "start": 27307, + "end": 27328, "loc": { "start": { "line": 792, @@ -17803,13 +17912,13 @@ }, "end": { "line": 792, - "column": 45 + "column": 48 } }, "object": { "type": "ThisExpression", - "start": 27299, - "end": 27303, + "start": 27307, + "end": 27311, "loc": { "start": { "line": 792, @@ -17823,8 +17932,8 @@ }, "property": { "type": "Identifier", - "start": 27304, - "end": 27317, + "start": 27312, + "end": 27328, "loc": { "start": { "line": 792, @@ -17832,185 +17941,6 @@ }, "end": { "line": 792, - "column": 45 - }, - "identifierName": "AXIS_VIEW_TOP" - }, - "name": "AXIS_VIEW_TOP" - }, - "computed": false - }, - "computed": true - }, - "right": { - "type": "ArrayExpression", - "start": 27321, - "end": 27338, - "loc": { - "start": { - "line": 792, - "column": 49 - }, - "end": { - "line": 792, - "column": 66 - } - }, - "elements": [ - { - "type": "MemberExpression", - "start": 27322, - "end": 27337, - "loc": { - "start": { - "line": 792, - "column": 50 - }, - "end": { - "line": 792, - "column": 65 - } - }, - "object": { - "type": "Identifier", - "start": 27322, - "end": 27327, - "loc": { - "start": { - "line": 792, - "column": 50 - }, - "end": { - "line": 792, - "column": 55 - }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 27328, - "end": 27337, - "loc": { - "start": { - "line": 792, - "column": 56 - }, - "end": { - "line": 792, - "column": 65 - }, - "identifierName": "KEY_NUM_5" - }, - "name": "KEY_NUM_5" - }, - "computed": false - } - ] - } - } - }, - { - "type": "ExpressionStatement", - "start": 27360, - "end": 27410, - "loc": { - "start": { - "line": 793, - "column": 20 - }, - "end": { - "line": 793, - "column": 70 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 27360, - "end": 27409, - "loc": { - "start": { - "line": 793, - "column": 20 - }, - "end": { - "line": 793, - "column": 69 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 27360, - "end": 27389, - "loc": { - "start": { - "line": 793, - "column": 20 - }, - "end": { - "line": 793, - "column": 49 - } - }, - "object": { - "type": "Identifier", - "start": 27360, - "end": 27366, - "loc": { - "start": { - "line": 793, - "column": 20 - }, - "end": { - "line": 793, - "column": 26 - }, - "identifierName": "keyMap" - }, - "name": "keyMap" - }, - "property": { - "type": "MemberExpression", - "start": 27367, - "end": 27388, - "loc": { - "start": { - "line": 793, - "column": 27 - }, - "end": { - "line": 793, - "column": 48 - } - }, - "object": { - "type": "ThisExpression", - "start": 27367, - "end": 27371, - "loc": { - "start": { - "line": 793, - "column": 27 - }, - "end": { - "line": 793, - "column": 31 - } - } - }, - "property": { - "type": "Identifier", - "start": 27372, - "end": 27388, - "loc": { - "start": { - "line": 793, - "column": 32 - }, - "end": { - "line": 793, "column": 48 }, "identifierName": "AXIS_VIEW_BOTTOM" @@ -18023,44 +17953,44 @@ }, "right": { "type": "ArrayExpression", - "start": 27392, - "end": 27409, + "start": 27332, + "end": 27349, "loc": { "start": { - "line": 793, + "line": 792, "column": 52 }, "end": { - "line": 793, + "line": 792, "column": 69 } }, "elements": [ { "type": "MemberExpression", - "start": 27393, - "end": 27408, + "start": 27333, + "end": 27348, "loc": { "start": { - "line": 793, + "line": 792, "column": 53 }, "end": { - "line": 793, + "line": 792, "column": 68 } }, "object": { "type": "Identifier", - "start": 27393, - "end": 27398, + "start": 27333, + "end": 27338, "loc": { "start": { - "line": 793, + "line": 792, "column": 53 }, "end": { - "line": 793, + "line": 792, "column": 58 }, "identifierName": "input" @@ -18069,15 +17999,15 @@ }, "property": { "type": "Identifier", - "start": 27399, - "end": 27408, + "start": 27339, + "end": 27348, "loc": { "start": { - "line": 793, + "line": 792, "column": 59 }, "end": { - "line": 793, + "line": 792, "column": 68 }, "identifierName": "KEY_NUM_6" @@ -18092,15 +18022,15 @@ }, { "type": "BreakStatement", - "start": 27431, - "end": 27437, + "start": 27371, + "end": 27377, "loc": { "start": { - "line": 794, + "line": 793, "column": 20 }, "end": { - "line": 794, + "line": 793, "column": 26 } }, @@ -18109,15 +18039,15 @@ ], "test": { "type": "StringLiteral", - "start": 26165, - "end": 26173, + "start": 26105, + "end": 26113, "loc": { "start": { - "line": 775, + "line": 774, "column": 21 }, "end": { - "line": 775, + "line": 774, "column": 29 } }, @@ -18132,15 +18062,15 @@ { "type": "CommentLine", "value": " Intentional fall-through to \"qwerty\"", - "start": 26104, - "end": 26143, + "start": 26044, + "end": 26083, "loc": { "start": { - "line": 774, + "line": 773, "column": 16 }, "end": { - "line": 774, + "line": 773, "column": 55 } } @@ -18149,22 +18079,201 @@ }, { "type": "SwitchCase", - "start": 27455, - "end": 28732, + "start": 27395, + "end": 28672, "loc": { "start": { - "line": 796, + "line": 795, "column": 16 }, "end": { - "line": 815, + "line": 814, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 27490, + "start": 27430, + "end": 27468, + "loc": { + "start": { + "line": 796, + "column": 20 + }, + "end": { + "line": 796, + "column": 58 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 27430, + "end": 27467, + "loc": { + "start": { + "line": 796, + "column": 20 + }, + "end": { + "line": 796, + "column": 57 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 27430, + "end": 27451, + "loc": { + "start": { + "line": 796, + "column": 20 + }, + "end": { + "line": 796, + "column": 41 + } + }, + "object": { + "type": "Identifier", + "start": 27430, + "end": 27436, + "loc": { + "start": { + "line": 796, + "column": 20 + }, + "end": { + "line": 796, + "column": 26 + }, + "identifierName": "keyMap" + }, + "name": "keyMap" + }, + "property": { + "type": "MemberExpression", + "start": 27437, + "end": 27450, + "loc": { + "start": { + "line": 796, + "column": 27 + }, + "end": { + "line": 796, + "column": 40 + } + }, + "object": { + "type": "ThisExpression", + "start": 27437, + "end": 27441, + "loc": { + "start": { + "line": 796, + "column": 27 + }, + "end": { + "line": 796, + "column": 31 + } + } + }, + "property": { + "type": "Identifier", + "start": 27442, + "end": 27450, + "loc": { + "start": { + "line": 796, + "column": 32 + }, + "end": { + "line": 796, + "column": 40 + }, + "identifierName": "PAN_LEFT" + }, + "name": "PAN_LEFT" + }, + "computed": false + }, + "computed": true + }, + "right": { + "type": "ArrayExpression", + "start": 27454, + "end": 27467, + "loc": { + "start": { + "line": 796, + "column": 44 + }, + "end": { + "line": 796, + "column": 57 + } + }, + "elements": [ + { + "type": "MemberExpression", + "start": 27455, + "end": 27466, + "loc": { + "start": { + "line": 796, + "column": 45 + }, + "end": { + "line": 796, + "column": 56 + } + }, + "object": { + "type": "Identifier", + "start": 27455, + "end": 27460, + "loc": { + "start": { + "line": 796, + "column": 45 + }, + "end": { + "line": 796, + "column": 50 + }, + "identifierName": "input" + }, + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 27461, + "end": 27466, + "loc": { + "start": { + "line": 796, + "column": 51 + }, + "end": { + "line": 796, + "column": 56 + }, + "identifierName": "KEY_Q" + }, + "name": "KEY_Q" + }, + "computed": false + } + ] + } + } + }, + { + "type": "ExpressionStatement", + "start": 27489, "end": 27528, "loc": { "start": { @@ -18173,12 +18282,12 @@ }, "end": { "line": 797, - "column": 58 + "column": 59 } }, "expression": { "type": "AssignmentExpression", - "start": 27490, + "start": 27489, "end": 27527, "loc": { "start": { @@ -18187,13 +18296,13 @@ }, "end": { "line": 797, - "column": 57 + "column": 58 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27490, + "start": 27489, "end": 27511, "loc": { "start": { @@ -18202,13 +18311,13 @@ }, "end": { "line": 797, - "column": 41 + "column": 42 } }, "object": { "type": "Identifier", - "start": 27490, - "end": 27496, + "start": 27489, + "end": 27495, "loc": { "start": { "line": 797, @@ -18224,7 +18333,7 @@ }, "property": { "type": "MemberExpression", - "start": 27497, + "start": 27496, "end": 27510, "loc": { "start": { @@ -18233,13 +18342,13 @@ }, "end": { "line": 797, - "column": 40 + "column": 41 } }, "object": { "type": "ThisExpression", - "start": 27497, - "end": 27501, + "start": 27496, + "end": 27500, "loc": { "start": { "line": 797, @@ -18253,7 +18362,7 @@ }, "property": { "type": "Identifier", - "start": 27502, + "start": 27501, "end": 27510, "loc": { "start": { @@ -18262,11 +18371,11 @@ }, "end": { "line": 797, - "column": 40 + "column": 41 }, - "identifierName": "PAN_LEFT" + "identifierName": "PAN_RIGHT" }, - "name": "PAN_LEFT" + "name": "PAN_RIGHT" }, "computed": false }, @@ -18279,11 +18388,11 @@ "loc": { "start": { "line": 797, - "column": 44 + "column": 45 }, "end": { "line": 797, - "column": 57 + "column": 58 } }, "elements": [ @@ -18294,11 +18403,11 @@ "loc": { "start": { "line": 797, - "column": 45 + "column": 46 }, "end": { "line": 797, - "column": 56 + "column": 57 } }, "object": { @@ -18308,11 +18417,11 @@ "loc": { "start": { "line": 797, - "column": 45 + "column": 46 }, "end": { "line": 797, - "column": 50 + "column": 51 }, "identifierName": "input" }, @@ -18325,15 +18434,15 @@ "loc": { "start": { "line": 797, - "column": 51 + "column": 52 }, "end": { "line": 797, - "column": 56 + "column": 57 }, - "identifierName": "KEY_Q" + "identifierName": "KEY_D" }, - "name": "KEY_Q" + "name": "KEY_D" }, "computed": false } @@ -18344,7 +18453,7 @@ { "type": "ExpressionStatement", "start": 27549, - "end": 27588, + "end": 27585, "loc": { "start": { "line": 798, @@ -18352,13 +18461,13 @@ }, "end": { "line": 798, - "column": 59 + "column": 56 } }, "expression": { "type": "AssignmentExpression", "start": 27549, - "end": 27587, + "end": 27584, "loc": { "start": { "line": 798, @@ -18366,14 +18475,14 @@ }, "end": { "line": 798, - "column": 58 + "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", "start": 27549, - "end": 27571, + "end": 27568, "loc": { "start": { "line": 798, @@ -18381,7 +18490,7 @@ }, "end": { "line": 798, - "column": 42 + "column": 39 } }, "object": { @@ -18404,7 +18513,7 @@ "property": { "type": "MemberExpression", "start": 27556, - "end": 27570, + "end": 27567, "loc": { "start": { "line": 798, @@ -18412,7 +18521,7 @@ }, "end": { "line": 798, - "column": 41 + "column": 38 } }, "object": { @@ -18433,7 +18542,7 @@ "property": { "type": "Identifier", "start": 27561, - "end": 27570, + "end": 27567, "loc": { "start": { "line": 798, @@ -18441,11 +18550,11 @@ }, "end": { "line": 798, - "column": 41 + "column": 38 }, - "identifierName": "PAN_RIGHT" + "identifierName": "PAN_UP" }, - "name": "PAN_RIGHT" + "name": "PAN_UP" }, "computed": false }, @@ -18453,45 +18562,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27574, - "end": 27587, + "start": 27571, + "end": 27584, "loc": { "start": { "line": 798, - "column": 45 + "column": 42 }, "end": { "line": 798, - "column": 58 + "column": 55 } }, "elements": [ { "type": "MemberExpression", - "start": 27575, - "end": 27586, + "start": 27572, + "end": 27583, "loc": { "start": { "line": 798, - "column": 46 + "column": 43 }, "end": { "line": 798, - "column": 57 + "column": 54 } }, "object": { "type": "Identifier", - "start": 27575, - "end": 27580, + "start": 27572, + "end": 27577, "loc": { "start": { "line": 798, - "column": 46 + "column": 43 }, "end": { "line": 798, - "column": 51 + "column": 48 }, "identifierName": "input" }, @@ -18499,20 +18608,20 @@ }, "property": { "type": "Identifier", - "start": 27581, - "end": 27586, + "start": 27578, + "end": 27583, "loc": { "start": { "line": 798, - "column": 52 + "column": 49 }, "end": { "line": 798, - "column": 57 + "column": 54 }, - "identifierName": "KEY_D" + "identifierName": "KEY_W" }, - "name": "KEY_D" + "name": "KEY_W" }, "computed": false } @@ -18522,8 +18631,8 @@ }, { "type": "ExpressionStatement", - "start": 27609, - "end": 27645, + "start": 27606, + "end": 27644, "loc": { "start": { "line": 799, @@ -18531,13 +18640,13 @@ }, "end": { "line": 799, - "column": 56 + "column": 58 } }, "expression": { "type": "AssignmentExpression", - "start": 27609, - "end": 27644, + "start": 27606, + "end": 27643, "loc": { "start": { "line": 799, @@ -18545,14 +18654,14 @@ }, "end": { "line": 799, - "column": 55 + "column": 57 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27609, - "end": 27628, + "start": 27606, + "end": 27627, "loc": { "start": { "line": 799, @@ -18560,13 +18669,13 @@ }, "end": { "line": 799, - "column": 39 + "column": 41 } }, "object": { "type": "Identifier", - "start": 27609, - "end": 27615, + "start": 27606, + "end": 27612, "loc": { "start": { "line": 799, @@ -18582,8 +18691,8 @@ }, "property": { "type": "MemberExpression", - "start": 27616, - "end": 27627, + "start": 27613, + "end": 27626, "loc": { "start": { "line": 799, @@ -18591,13 +18700,13 @@ }, "end": { "line": 799, - "column": 38 + "column": 40 } }, "object": { "type": "ThisExpression", - "start": 27616, - "end": 27620, + "start": 27613, + "end": 27617, "loc": { "start": { "line": 799, @@ -18611,8 +18720,8 @@ }, "property": { "type": "Identifier", - "start": 27621, - "end": 27627, + "start": 27618, + "end": 27626, "loc": { "start": { "line": 799, @@ -18620,11 +18729,11 @@ }, "end": { "line": 799, - "column": 38 + "column": 40 }, - "identifierName": "PAN_UP" + "identifierName": "PAN_DOWN" }, - "name": "PAN_UP" + "name": "PAN_DOWN" }, "computed": false }, @@ -18632,45 +18741,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27631, - "end": 27644, + "start": 27630, + "end": 27643, "loc": { "start": { "line": 799, - "column": 42 + "column": 44 }, "end": { "line": 799, - "column": 55 + "column": 57 } }, "elements": [ { "type": "MemberExpression", - "start": 27632, - "end": 27643, + "start": 27631, + "end": 27642, "loc": { "start": { "line": 799, - "column": 43 + "column": 45 }, "end": { "line": 799, - "column": 54 + "column": 56 } }, "object": { "type": "Identifier", - "start": 27632, - "end": 27637, + "start": 27631, + "end": 27636, "loc": { "start": { "line": 799, - "column": 43 + "column": 45 }, "end": { "line": 799, - "column": 48 + "column": 50 }, "identifierName": "input" }, @@ -18678,20 +18787,20 @@ }, "property": { "type": "Identifier", - "start": 27638, - "end": 27643, + "start": 27637, + "end": 27642, "loc": { "start": { "line": 799, - "column": 49 + "column": 51 }, "end": { "line": 799, - "column": 54 + "column": 56 }, - "identifierName": "KEY_W" + "identifierName": "KEY_X" }, - "name": "KEY_W" + "name": "KEY_X" }, "computed": false } @@ -18701,8 +18810,8 @@ }, { "type": "ExpressionStatement", - "start": 27666, - "end": 27704, + "start": 27665, + "end": 27697, "loc": { "start": { "line": 800, @@ -18710,13 +18819,13 @@ }, "end": { "line": 800, - "column": 58 + "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 27666, - "end": 27703, + "start": 27665, + "end": 27696, "loc": { "start": { "line": 800, @@ -18724,14 +18833,14 @@ }, "end": { "line": 800, - "column": 57 + "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27666, - "end": 27687, + "start": 27665, + "end": 27691, "loc": { "start": { "line": 800, @@ -18739,13 +18848,13 @@ }, "end": { "line": 800, - "column": 41 + "column": 46 } }, "object": { "type": "Identifier", - "start": 27666, - "end": 27672, + "start": 27665, + "end": 27671, "loc": { "start": { "line": 800, @@ -18761,8 +18870,8 @@ }, "property": { "type": "MemberExpression", - "start": 27673, - "end": 27686, + "start": 27672, + "end": 27690, "loc": { "start": { "line": 800, @@ -18770,13 +18879,13 @@ }, "end": { "line": 800, - "column": 40 + "column": 45 } }, "object": { "type": "ThisExpression", - "start": 27673, - "end": 27677, + "start": 27672, + "end": 27676, "loc": { "start": { "line": 800, @@ -18790,8 +18899,8 @@ }, "property": { "type": "Identifier", - "start": 27678, - "end": 27686, + "start": 27677, + "end": 27690, "loc": { "start": { "line": 800, @@ -18799,11 +18908,11 @@ }, "end": { "line": 800, - "column": 40 + "column": 45 }, - "identifierName": "PAN_DOWN" + "identifierName": "PAN_BACKWARDS" }, - "name": "PAN_DOWN" + "name": "PAN_BACKWARDS" }, "computed": false }, @@ -18811,77 +18920,26 @@ }, "right": { "type": "ArrayExpression", - "start": 27690, - "end": 27703, + "start": 27694, + "end": 27696, "loc": { "start": { "line": 800, - "column": 44 + "column": 49 }, "end": { "line": 800, - "column": 57 + "column": 51 } }, - "elements": [ - { - "type": "MemberExpression", - "start": 27691, - "end": 27702, - "loc": { - "start": { - "line": 800, - "column": 45 - }, - "end": { - "line": 800, - "column": 56 - } - }, - "object": { - "type": "Identifier", - "start": 27691, - "end": 27696, - "loc": { - "start": { - "line": 800, - "column": 45 - }, - "end": { - "line": 800, - "column": 50 - }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 27697, - "end": 27702, - "loc": { - "start": { - "line": 800, - "column": 51 - }, - "end": { - "line": 800, - "column": 56 - }, - "identifierName": "KEY_X" - }, - "name": "KEY_X" - }, - "computed": false - } - ] + "elements": [] } } }, { "type": "ExpressionStatement", - "start": 27725, - "end": 27757, + "start": 27718, + "end": 27749, "loc": { "start": { "line": 801, @@ -18889,13 +18947,13 @@ }, "end": { "line": 801, - "column": 52 + "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 27725, - "end": 27756, + "start": 27718, + "end": 27748, "loc": { "start": { "line": 801, @@ -18903,14 +18961,14 @@ }, "end": { "line": 801, - "column": 51 + "column": 50 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27725, - "end": 27751, + "start": 27718, + "end": 27743, "loc": { "start": { "line": 801, @@ -18918,13 +18976,13 @@ }, "end": { "line": 801, - "column": 46 + "column": 45 } }, "object": { "type": "Identifier", - "start": 27725, - "end": 27731, + "start": 27718, + "end": 27724, "loc": { "start": { "line": 801, @@ -18940,8 +18998,8 @@ }, "property": { "type": "MemberExpression", - "start": 27732, - "end": 27750, + "start": 27725, + "end": 27742, "loc": { "start": { "line": 801, @@ -18949,13 +19007,13 @@ }, "end": { "line": 801, - "column": 45 + "column": 44 } }, "object": { "type": "ThisExpression", - "start": 27732, - "end": 27736, + "start": 27725, + "end": 27729, "loc": { "start": { "line": 801, @@ -18969,8 +19027,8 @@ }, "property": { "type": "Identifier", - "start": 27737, - "end": 27750, + "start": 27730, + "end": 27742, "loc": { "start": { "line": 801, @@ -18978,11 +19036,11 @@ }, "end": { "line": 801, - "column": 45 + "column": 44 }, - "identifierName": "PAN_BACKWARDS" + "identifierName": "PAN_FORWARDS" }, - "name": "PAN_BACKWARDS" + "name": "PAN_FORWARDS" }, "computed": false }, @@ -18990,16 +19048,16 @@ }, "right": { "type": "ArrayExpression", - "start": 27754, - "end": 27756, + "start": 27746, + "end": 27748, "loc": { "start": { "line": 801, - "column": 49 + "column": 48 }, "end": { "line": 801, - "column": 51 + "column": 50 } }, "elements": [] @@ -19008,8 +19066,8 @@ }, { "type": "ExpressionStatement", - "start": 27778, - "end": 27809, + "start": 27770, + "end": 27829, "loc": { "start": { "line": 802, @@ -19017,13 +19075,13 @@ }, "end": { "line": 802, - "column": 51 + "column": 79 } }, "expression": { "type": "AssignmentExpression", - "start": 27778, - "end": 27808, + "start": 27770, + "end": 27828, "loc": { "start": { "line": 802, @@ -19031,14 +19089,14 @@ }, "end": { "line": 802, - "column": 50 + "column": 78 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27778, - "end": 27803, + "start": 27770, + "end": 27797, "loc": { "start": { "line": 802, @@ -19046,13 +19104,13 @@ }, "end": { "line": 802, - "column": 45 + "column": 47 } }, "object": { "type": "Identifier", - "start": 27778, - "end": 27784, + "start": 27770, + "end": 27776, "loc": { "start": { "line": 802, @@ -19068,8 +19126,8 @@ }, "property": { "type": "MemberExpression", - "start": 27785, - "end": 27802, + "start": 27777, + "end": 27796, "loc": { "start": { "line": 802, @@ -19077,13 +19135,13 @@ }, "end": { "line": 802, - "column": 44 + "column": 46 } }, "object": { "type": "ThisExpression", - "start": 27785, - "end": 27789, + "start": 27777, + "end": 27781, "loc": { "start": { "line": 802, @@ -19097,8 +19155,8 @@ }, "property": { "type": "Identifier", - "start": 27790, - "end": 27802, + "start": 27782, + "end": 27796, "loc": { "start": { "line": 802, @@ -19106,11 +19164,11 @@ }, "end": { "line": 802, - "column": 44 + "column": 46 }, - "identifierName": "PAN_FORWARDS" + "identifierName": "DOLLY_FORWARDS" }, - "name": "PAN_FORWARDS" + "name": "DOLLY_FORWARDS" }, "computed": false }, @@ -19118,26 +19176,127 @@ }, "right": { "type": "ArrayExpression", - "start": 27806, - "end": 27808, + "start": 27800, + "end": 27828, "loc": { "start": { "line": 802, - "column": 48 + "column": 50 }, "end": { "line": 802, - "column": 50 + "column": 78 } }, - "elements": [] + "elements": [ + { + "type": "MemberExpression", + "start": 27801, + "end": 27812, + "loc": { + "start": { + "line": 802, + "column": 51 + }, + "end": { + "line": 802, + "column": 62 + } + }, + "object": { + "type": "Identifier", + "start": 27801, + "end": 27806, + "loc": { + "start": { + "line": 802, + "column": 51 + }, + "end": { + "line": 802, + "column": 56 + }, + "identifierName": "input" + }, + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 27807, + "end": 27812, + "loc": { + "start": { + "line": 802, + "column": 57 + }, + "end": { + "line": 802, + "column": 62 + }, + "identifierName": "KEY_Z" + }, + "name": "KEY_Z" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 27814, + "end": 27827, + "loc": { + "start": { + "line": 802, + "column": 64 + }, + "end": { + "line": 802, + "column": 77 + } + }, + "object": { + "type": "Identifier", + "start": 27814, + "end": 27819, + "loc": { + "start": { + "line": 802, + "column": 64 + }, + "end": { + "line": 802, + "column": 69 + }, + "identifierName": "input" + }, + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 27820, + "end": 27827, + "loc": { + "start": { + "line": 802, + "column": 70 + }, + "end": { + "line": 802, + "column": 77 + }, + "identifierName": "KEY_ADD" + }, + "name": "KEY_ADD" + }, + "computed": false + } + ] } } }, { "type": "ExpressionStatement", - "start": 27830, - "end": 27889, + "start": 27850, + "end": 27915, "loc": { "start": { "line": 803, @@ -19145,13 +19304,13 @@ }, "end": { "line": 803, - "column": 79 + "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 27830, - "end": 27888, + "start": 27850, + "end": 27914, "loc": { "start": { "line": 803, @@ -19159,14 +19318,14 @@ }, "end": { "line": 803, - "column": 78 + "column": 84 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27830, - "end": 27857, + "start": 27850, + "end": 27878, "loc": { "start": { "line": 803, @@ -19174,13 +19333,13 @@ }, "end": { "line": 803, - "column": 47 + "column": 48 } }, "object": { "type": "Identifier", - "start": 27830, - "end": 27836, + "start": 27850, + "end": 27856, "loc": { "start": { "line": 803, @@ -19196,8 +19355,8 @@ }, "property": { "type": "MemberExpression", - "start": 27837, - "end": 27856, + "start": 27857, + "end": 27877, "loc": { "start": { "line": 803, @@ -19205,13 +19364,13 @@ }, "end": { "line": 803, - "column": 46 + "column": 47 } }, "object": { "type": "ThisExpression", - "start": 27837, - "end": 27841, + "start": 27857, + "end": 27861, "loc": { "start": { "line": 803, @@ -19225,8 +19384,8 @@ }, "property": { "type": "Identifier", - "start": 27842, - "end": 27856, + "start": 27862, + "end": 27877, "loc": { "start": { "line": 803, @@ -19234,11 +19393,11 @@ }, "end": { "line": 803, - "column": 46 + "column": 47 }, - "identifierName": "DOLLY_FORWARDS" + "identifierName": "DOLLY_BACKWARDS" }, - "name": "DOLLY_FORWARDS" + "name": "DOLLY_BACKWARDS" }, "computed": false }, @@ -19246,45 +19405,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27860, - "end": 27888, + "start": 27881, + "end": 27914, "loc": { "start": { "line": 803, - "column": 50 + "column": 51 }, "end": { "line": 803, - "column": 78 + "column": 84 } }, "elements": [ { "type": "MemberExpression", - "start": 27861, - "end": 27872, + "start": 27882, + "end": 27893, "loc": { "start": { "line": 803, - "column": 51 + "column": 52 }, "end": { "line": 803, - "column": 62 + "column": 63 } }, "object": { "type": "Identifier", - "start": 27861, - "end": 27866, + "start": 27882, + "end": 27887, "loc": { "start": { "line": 803, - "column": 51 + "column": 52 }, "end": { "line": 803, - "column": 56 + "column": 57 }, "identifierName": "input" }, @@ -19292,49 +19451,49 @@ }, "property": { "type": "Identifier", - "start": 27867, - "end": 27872, + "start": 27888, + "end": 27893, "loc": { "start": { "line": 803, - "column": 57 + "column": 58 }, "end": { "line": 803, - "column": 62 + "column": 63 }, - "identifierName": "KEY_Z" + "identifierName": "KEY_S" }, - "name": "KEY_Z" + "name": "KEY_S" }, "computed": false }, { "type": "MemberExpression", - "start": 27874, - "end": 27887, + "start": 27895, + "end": 27913, "loc": { "start": { "line": 803, - "column": 64 + "column": 65 }, "end": { "line": 803, - "column": 77 + "column": 83 } }, "object": { "type": "Identifier", - "start": 27874, - "end": 27879, + "start": 27895, + "end": 27900, "loc": { "start": { "line": 803, - "column": 64 + "column": 65 }, "end": { "line": 803, - "column": 69 + "column": 70 }, "identifierName": "input" }, @@ -19342,20 +19501,20 @@ }, "property": { "type": "Identifier", - "start": 27880, - "end": 27887, + "start": 27901, + "end": 27913, "loc": { "start": { "line": 803, - "column": 70 + "column": 71 }, "end": { "line": 803, - "column": 77 + "column": 83 }, - "identifierName": "KEY_ADD" + "identifierName": "KEY_SUBTRACT" }, - "name": "KEY_ADD" + "name": "KEY_SUBTRACT" }, "computed": false } @@ -19365,8 +19524,8 @@ }, { "type": "ExpressionStatement", - "start": 27910, - "end": 27975, + "start": 27936, + "end": 27987, "loc": { "start": { "line": 804, @@ -19374,13 +19533,13 @@ }, "end": { "line": 804, - "column": 85 + "column": 71 } }, "expression": { "type": "AssignmentExpression", - "start": 27910, - "end": 27974, + "start": 27936, + "end": 27986, "loc": { "start": { "line": 804, @@ -19388,14 +19547,14 @@ }, "end": { "line": 804, - "column": 84 + "column": 70 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27910, - "end": 27938, + "start": 27936, + "end": 27961, "loc": { "start": { "line": 804, @@ -19403,13 +19562,13 @@ }, "end": { "line": 804, - "column": 48 + "column": 45 } }, "object": { "type": "Identifier", - "start": 27910, - "end": 27916, + "start": 27936, + "end": 27942, "loc": { "start": { "line": 804, @@ -19425,8 +19584,8 @@ }, "property": { "type": "MemberExpression", - "start": 27917, - "end": 27937, + "start": 27943, + "end": 27960, "loc": { "start": { "line": 804, @@ -19434,13 +19593,13 @@ }, "end": { "line": 804, - "column": 47 + "column": 44 } }, "object": { "type": "ThisExpression", - "start": 27917, - "end": 27921, + "start": 27943, + "end": 27947, "loc": { "start": { "line": 804, @@ -19454,8 +19613,8 @@ }, "property": { "type": "Identifier", - "start": 27922, - "end": 27937, + "start": 27948, + "end": 27960, "loc": { "start": { "line": 804, @@ -19463,11 +19622,11 @@ }, "end": { "line": 804, - "column": 47 + "column": 44 }, - "identifierName": "DOLLY_BACKWARDS" + "identifierName": "ROTATE_X_POS" }, - "name": "DOLLY_BACKWARDS" + "name": "ROTATE_X_POS" }, "computed": false }, @@ -19475,95 +19634,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27941, - "end": 27974, + "start": 27964, + "end": 27986, "loc": { "start": { "line": 804, - "column": 51 + "column": 48 }, "end": { "line": 804, - "column": 84 + "column": 70 } }, "elements": [ { "type": "MemberExpression", - "start": 27942, - "end": 27953, + "start": 27965, + "end": 27985, "loc": { "start": { "line": 804, - "column": 52 - }, - "end": { - "line": 804, - "column": 63 - } - }, - "object": { - "type": "Identifier", - "start": 27942, - "end": 27947, - "loc": { - "start": { - "line": 804, - "column": 52 - }, - "end": { - "line": 804, - "column": 57 - }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 27948, - "end": 27953, - "loc": { - "start": { - "line": 804, - "column": 58 - }, - "end": { - "line": 804, - "column": 63 - }, - "identifierName": "KEY_S" - }, - "name": "KEY_S" - }, - "computed": false - }, - { - "type": "MemberExpression", - "start": 27955, - "end": 27973, - "loc": { - "start": { - "line": 804, - "column": 65 + "column": 49 }, "end": { "line": 804, - "column": 83 + "column": 69 } }, "object": { "type": "Identifier", - "start": 27955, - "end": 27960, + "start": 27965, + "end": 27970, "loc": { "start": { "line": 804, - "column": 65 + "column": 49 }, "end": { "line": 804, - "column": 70 + "column": 54 }, "identifierName": "input" }, @@ -19571,20 +19680,20 @@ }, "property": { "type": "Identifier", - "start": 27961, - "end": 27973, + "start": 27971, + "end": 27985, "loc": { "start": { "line": 804, - "column": 71 + "column": 55 }, "end": { "line": 804, - "column": 83 + "column": 69 }, - "identifierName": "KEY_SUBTRACT" + "identifierName": "KEY_DOWN_ARROW" }, - "name": "KEY_SUBTRACT" + "name": "KEY_DOWN_ARROW" }, "computed": false } @@ -19594,8 +19703,8 @@ }, { "type": "ExpressionStatement", - "start": 27996, - "end": 28047, + "start": 28008, + "end": 28057, "loc": { "start": { "line": 805, @@ -19603,13 +19712,13 @@ }, "end": { "line": 805, - "column": 71 + "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 27996, - "end": 28046, + "start": 28008, + "end": 28056, "loc": { "start": { "line": 805, @@ -19617,14 +19726,14 @@ }, "end": { "line": 805, - "column": 70 + "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27996, - "end": 28021, + "start": 28008, + "end": 28033, "loc": { "start": { "line": 805, @@ -19637,8 +19746,8 @@ }, "object": { "type": "Identifier", - "start": 27996, - "end": 28002, + "start": 28008, + "end": 28014, "loc": { "start": { "line": 805, @@ -19654,8 +19763,8 @@ }, "property": { "type": "MemberExpression", - "start": 28003, - "end": 28020, + "start": 28015, + "end": 28032, "loc": { "start": { "line": 805, @@ -19668,8 +19777,8 @@ }, "object": { "type": "ThisExpression", - "start": 28003, - "end": 28007, + "start": 28015, + "end": 28019, "loc": { "start": { "line": 805, @@ -19683,8 +19792,8 @@ }, "property": { "type": "Identifier", - "start": 28008, - "end": 28020, + "start": 28020, + "end": 28032, "loc": { "start": { "line": 805, @@ -19694,9 +19803,9 @@ "line": 805, "column": 44 }, - "identifierName": "ROTATE_X_POS" + "identifierName": "ROTATE_X_NEG" }, - "name": "ROTATE_X_POS" + "name": "ROTATE_X_NEG" }, "computed": false }, @@ -19704,8 +19813,8 @@ }, "right": { "type": "ArrayExpression", - "start": 28024, - "end": 28046, + "start": 28036, + "end": 28056, "loc": { "start": { "line": 805, @@ -19713,14 +19822,14 @@ }, "end": { "line": 805, - "column": 70 + "column": 68 } }, "elements": [ { "type": "MemberExpression", - "start": 28025, - "end": 28045, + "start": 28037, + "end": 28055, "loc": { "start": { "line": 805, @@ -19728,13 +19837,13 @@ }, "end": { "line": 805, - "column": 69 + "column": 67 } }, "object": { "type": "Identifier", - "start": 28025, - "end": 28030, + "start": 28037, + "end": 28042, "loc": { "start": { "line": 805, @@ -19750,8 +19859,8 @@ }, "property": { "type": "Identifier", - "start": 28031, - "end": 28045, + "start": 28043, + "end": 28055, "loc": { "start": { "line": 805, @@ -19759,11 +19868,11 @@ }, "end": { "line": 805, - "column": 69 + "column": 67 }, - "identifierName": "KEY_DOWN_ARROW" + "identifierName": "KEY_UP_ARROW" }, - "name": "KEY_DOWN_ARROW" + "name": "KEY_UP_ARROW" }, "computed": false } @@ -19773,8 +19882,8 @@ }, { "type": "ExpressionStatement", - "start": 28068, - "end": 28117, + "start": 28078, + "end": 28142, "loc": { "start": { "line": 806, @@ -19782,13 +19891,13 @@ }, "end": { "line": 806, - "column": 69 + "column": 84 } }, "expression": { "type": "AssignmentExpression", - "start": 28068, - "end": 28116, + "start": 28078, + "end": 28141, "loc": { "start": { "line": 806, @@ -19796,14 +19905,14 @@ }, "end": { "line": 806, - "column": 68 + "column": 83 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28068, - "end": 28093, + "start": 28078, + "end": 28103, "loc": { "start": { "line": 806, @@ -19816,8 +19925,8 @@ }, "object": { "type": "Identifier", - "start": 28068, - "end": 28074, + "start": 28078, + "end": 28084, "loc": { "start": { "line": 806, @@ -19833,8 +19942,8 @@ }, "property": { "type": "MemberExpression", - "start": 28075, - "end": 28092, + "start": 28085, + "end": 28102, "loc": { "start": { "line": 806, @@ -19847,8 +19956,8 @@ }, "object": { "type": "ThisExpression", - "start": 28075, - "end": 28079, + "start": 28085, + "end": 28089, "loc": { "start": { "line": 806, @@ -19862,8 +19971,8 @@ }, "property": { "type": "Identifier", - "start": 28080, - "end": 28092, + "start": 28090, + "end": 28102, "loc": { "start": { "line": 806, @@ -19873,9 +19982,9 @@ "line": 806, "column": 44 }, - "identifierName": "ROTATE_X_NEG" + "identifierName": "ROTATE_Y_POS" }, - "name": "ROTATE_X_NEG" + "name": "ROTATE_Y_POS" }, "computed": false }, @@ -19883,8 +19992,8 @@ }, "right": { "type": "ArrayExpression", - "start": 28096, - "end": 28116, + "start": 28106, + "end": 28141, "loc": { "start": { "line": 806, @@ -19892,14 +20001,14 @@ }, "end": { "line": 806, - "column": 68 + "column": 83 } }, "elements": [ { "type": "MemberExpression", - "start": 28097, - "end": 28115, + "start": 28107, + "end": 28118, "loc": { "start": { "line": 806, @@ -19907,13 +20016,13 @@ }, "end": { "line": 806, - "column": 67 + "column": 60 } }, "object": { "type": "Identifier", - "start": 28097, - "end": 28102, + "start": 28107, + "end": 28112, "loc": { "start": { "line": 806, @@ -19929,20 +20038,70 @@ }, "property": { "type": "Identifier", - "start": 28103, - "end": 28115, + "start": 28113, + "end": 28118, "loc": { "start": { "line": 806, "column": 55 }, + "end": { + "line": 806, + "column": 60 + }, + "identifierName": "KEY_A" + }, + "name": "KEY_A" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 28120, + "end": 28140, + "loc": { + "start": { + "line": 806, + "column": 62 + }, + "end": { + "line": 806, + "column": 82 + } + }, + "object": { + "type": "Identifier", + "start": 28120, + "end": 28125, + "loc": { + "start": { + "line": 806, + "column": 62 + }, "end": { "line": 806, "column": 67 }, - "identifierName": "KEY_UP_ARROW" + "identifierName": "input" }, - "name": "KEY_UP_ARROW" + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 28126, + "end": 28140, + "loc": { + "start": { + "line": 806, + "column": 68 + }, + "end": { + "line": 806, + "column": 82 + }, + "identifierName": "KEY_LEFT_ARROW" + }, + "name": "KEY_LEFT_ARROW" }, "computed": false } @@ -19952,8 +20111,8 @@ }, { "type": "ExpressionStatement", - "start": 28138, - "end": 28202, + "start": 28163, + "end": 28228, "loc": { "start": { "line": 807, @@ -19961,13 +20120,13 @@ }, "end": { "line": 807, - "column": 84 + "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 28138, - "end": 28201, + "start": 28163, + "end": 28227, "loc": { "start": { "line": 807, @@ -19975,14 +20134,14 @@ }, "end": { "line": 807, - "column": 83 + "column": 84 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28138, - "end": 28163, + "start": 28163, + "end": 28188, "loc": { "start": { "line": 807, @@ -19995,8 +20154,8 @@ }, "object": { "type": "Identifier", - "start": 28138, - "end": 28144, + "start": 28163, + "end": 28169, "loc": { "start": { "line": 807, @@ -20012,8 +20171,8 @@ }, "property": { "type": "MemberExpression", - "start": 28145, - "end": 28162, + "start": 28170, + "end": 28187, "loc": { "start": { "line": 807, @@ -20026,8 +20185,8 @@ }, "object": { "type": "ThisExpression", - "start": 28145, - "end": 28149, + "start": 28170, + "end": 28174, "loc": { "start": { "line": 807, @@ -20041,8 +20200,8 @@ }, "property": { "type": "Identifier", - "start": 28150, - "end": 28162, + "start": 28175, + "end": 28187, "loc": { "start": { "line": 807, @@ -20052,9 +20211,9 @@ "line": 807, "column": 44 }, - "identifierName": "ROTATE_Y_POS" + "identifierName": "ROTATE_Y_NEG" }, - "name": "ROTATE_Y_POS" + "name": "ROTATE_Y_NEG" }, "computed": false }, @@ -20062,8 +20221,8 @@ }, "right": { "type": "ArrayExpression", - "start": 28166, - "end": 28201, + "start": 28191, + "end": 28227, "loc": { "start": { "line": 807, @@ -20071,14 +20230,14 @@ }, "end": { "line": 807, - "column": 83 + "column": 84 } }, "elements": [ { "type": "MemberExpression", - "start": 28167, - "end": 28178, + "start": 28192, + "end": 28203, "loc": { "start": { "line": 807, @@ -20091,8 +20250,8 @@ }, "object": { "type": "Identifier", - "start": 28167, - "end": 28172, + "start": 28192, + "end": 28197, "loc": { "start": { "line": 807, @@ -20108,8 +20267,8 @@ }, "property": { "type": "Identifier", - "start": 28173, - "end": 28178, + "start": 28198, + "end": 28203, "loc": { "start": { "line": 807, @@ -20119,16 +20278,16 @@ "line": 807, "column": 60 }, - "identifierName": "KEY_A" + "identifierName": "KEY_E" }, - "name": "KEY_A" + "name": "KEY_E" }, "computed": false }, { "type": "MemberExpression", - "start": 28180, - "end": 28200, + "start": 28205, + "end": 28226, "loc": { "start": { "line": 807, @@ -20136,13 +20295,13 @@ }, "end": { "line": 807, - "column": 82 + "column": 83 } }, "object": { "type": "Identifier", - "start": 28180, - "end": 28185, + "start": 28205, + "end": 28210, "loc": { "start": { "line": 807, @@ -20158,8 +20317,8 @@ }, "property": { "type": "Identifier", - "start": 28186, - "end": 28200, + "start": 28211, + "end": 28226, "loc": { "start": { "line": 807, @@ -20167,11 +20326,11 @@ }, "end": { "line": 807, - "column": 82 + "column": 83 }, - "identifierName": "KEY_LEFT_ARROW" + "identifierName": "KEY_RIGHT_ARROW" }, - "name": "KEY_LEFT_ARROW" + "name": "KEY_RIGHT_ARROW" }, "computed": false } @@ -20181,8 +20340,8 @@ }, { "type": "ExpressionStatement", - "start": 28223, - "end": 28288, + "start": 28249, + "end": 28298, "loc": { "start": { "line": 808, @@ -20190,13 +20349,13 @@ }, "end": { "line": 808, - "column": 85 + "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 28223, - "end": 28287, + "start": 28249, + "end": 28297, "loc": { "start": { "line": 808, @@ -20204,14 +20363,14 @@ }, "end": { "line": 808, - "column": 84 + "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28223, - "end": 28248, + "start": 28249, + "end": 28277, "loc": { "start": { "line": 808, @@ -20219,13 +20378,13 @@ }, "end": { "line": 808, - "column": 45 + "column": 48 } }, "object": { "type": "Identifier", - "start": 28223, - "end": 28229, + "start": 28249, + "end": 28255, "loc": { "start": { "line": 808, @@ -20241,8 +20400,8 @@ }, "property": { "type": "MemberExpression", - "start": 28230, - "end": 28247, + "start": 28256, + "end": 28276, "loc": { "start": { "line": 808, @@ -20250,13 +20409,13 @@ }, "end": { "line": 808, - "column": 44 + "column": 47 } }, "object": { "type": "ThisExpression", - "start": 28230, - "end": 28234, + "start": 28256, + "end": 28260, "loc": { "start": { "line": 808, @@ -20270,8 +20429,8 @@ }, "property": { "type": "Identifier", - "start": 28235, - "end": 28247, + "start": 28261, + "end": 28276, "loc": { "start": { "line": 808, @@ -20279,11 +20438,11 @@ }, "end": { "line": 808, - "column": 44 + "column": 47 }, - "identifierName": "ROTATE_Y_NEG" + "identifierName": "AXIS_VIEW_RIGHT" }, - "name": "ROTATE_Y_NEG" + "name": "AXIS_VIEW_RIGHT" }, "computed": false }, @@ -20291,45 +20450,45 @@ }, "right": { "type": "ArrayExpression", - "start": 28251, - "end": 28287, + "start": 28280, + "end": 28297, "loc": { "start": { "line": 808, - "column": 48 + "column": 51 }, "end": { "line": 808, - "column": 84 + "column": 68 } }, "elements": [ { "type": "MemberExpression", - "start": 28252, - "end": 28263, + "start": 28281, + "end": 28296, "loc": { "start": { "line": 808, - "column": 49 + "column": 52 }, "end": { "line": 808, - "column": 60 + "column": 67 } }, "object": { "type": "Identifier", - "start": 28252, - "end": 28257, + "start": 28281, + "end": 28286, "loc": { "start": { "line": 808, - "column": 49 + "column": 52 }, "end": { "line": 808, - "column": 54 + "column": 57 }, "identifierName": "input" }, @@ -20337,70 +20496,20 @@ }, "property": { "type": "Identifier", - "start": 28258, - "end": 28263, - "loc": { - "start": { - "line": 808, - "column": 55 - }, - "end": { - "line": 808, - "column": 60 - }, - "identifierName": "KEY_E" - }, - "name": "KEY_E" - }, - "computed": false - }, - { - "type": "MemberExpression", - "start": 28265, - "end": 28286, - "loc": { - "start": { - "line": 808, - "column": 62 - }, - "end": { - "line": 808, - "column": 83 - } - }, - "object": { - "type": "Identifier", - "start": 28265, - "end": 28270, + "start": 28287, + "end": 28296, "loc": { "start": { "line": 808, - "column": 62 + "column": 58 }, "end": { "line": 808, "column": 67 }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 28271, - "end": 28286, - "loc": { - "start": { - "line": 808, - "column": 68 - }, - "end": { - "line": 808, - "column": 83 - }, - "identifierName": "KEY_RIGHT_ARROW" + "identifierName": "KEY_NUM_1" }, - "name": "KEY_RIGHT_ARROW" + "name": "KEY_NUM_1" }, "computed": false } @@ -20410,8 +20519,8 @@ }, { "type": "ExpressionStatement", - "start": 28309, - "end": 28358, + "start": 28319, + "end": 28367, "loc": { "start": { "line": 809, @@ -20419,13 +20528,13 @@ }, "end": { "line": 809, - "column": 69 + "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 28309, - "end": 28357, + "start": 28319, + "end": 28366, "loc": { "start": { "line": 809, @@ -20433,14 +20542,14 @@ }, "end": { "line": 809, - "column": 68 + "column": 67 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28309, - "end": 28337, + "start": 28319, + "end": 28346, "loc": { "start": { "line": 809, @@ -20448,13 +20557,13 @@ }, "end": { "line": 809, - "column": 48 + "column": 47 } }, "object": { "type": "Identifier", - "start": 28309, - "end": 28315, + "start": 28319, + "end": 28325, "loc": { "start": { "line": 809, @@ -20470,8 +20579,8 @@ }, "property": { "type": "MemberExpression", - "start": 28316, - "end": 28336, + "start": 28326, + "end": 28345, "loc": { "start": { "line": 809, @@ -20479,13 +20588,13 @@ }, "end": { "line": 809, - "column": 47 + "column": 46 } }, "object": { "type": "ThisExpression", - "start": 28316, - "end": 28320, + "start": 28326, + "end": 28330, "loc": { "start": { "line": 809, @@ -20499,8 +20608,8 @@ }, "property": { "type": "Identifier", - "start": 28321, - "end": 28336, + "start": 28331, + "end": 28345, "loc": { "start": { "line": 809, @@ -20508,11 +20617,11 @@ }, "end": { "line": 809, - "column": 47 + "column": 46 }, - "identifierName": "AXIS_VIEW_RIGHT" + "identifierName": "AXIS_VIEW_BACK" }, - "name": "AXIS_VIEW_RIGHT" + "name": "AXIS_VIEW_BACK" }, "computed": false }, @@ -20520,45 +20629,45 @@ }, "right": { "type": "ArrayExpression", - "start": 28340, - "end": 28357, + "start": 28349, + "end": 28366, "loc": { "start": { "line": 809, - "column": 51 + "column": 50 }, "end": { "line": 809, - "column": 68 + "column": 67 } }, "elements": [ { "type": "MemberExpression", - "start": 28341, - "end": 28356, + "start": 28350, + "end": 28365, "loc": { "start": { "line": 809, - "column": 52 + "column": 51 }, "end": { "line": 809, - "column": 67 + "column": 66 } }, "object": { "type": "Identifier", - "start": 28341, - "end": 28346, + "start": 28350, + "end": 28355, "loc": { "start": { "line": 809, - "column": 52 + "column": 51 }, "end": { "line": 809, - "column": 57 + "column": 56 }, "identifierName": "input" }, @@ -20566,20 +20675,20 @@ }, "property": { "type": "Identifier", - "start": 28347, - "end": 28356, + "start": 28356, + "end": 28365, "loc": { "start": { "line": 809, - "column": 58 + "column": 57 }, "end": { "line": 809, - "column": 67 + "column": 66 }, - "identifierName": "KEY_NUM_1" + "identifierName": "KEY_NUM_2" }, - "name": "KEY_NUM_1" + "name": "KEY_NUM_2" }, "computed": false } @@ -20589,8 +20698,8 @@ }, { "type": "ExpressionStatement", - "start": 28379, - "end": 28427, + "start": 28388, + "end": 28436, "loc": { "start": { "line": 810, @@ -20603,8 +20712,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 28379, - "end": 28426, + "start": 28388, + "end": 28435, "loc": { "start": { "line": 810, @@ -20618,8 +20727,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 28379, - "end": 28406, + "start": 28388, + "end": 28415, "loc": { "start": { "line": 810, @@ -20632,8 +20741,8 @@ }, "object": { "type": "Identifier", - "start": 28379, - "end": 28385, + "start": 28388, + "end": 28394, "loc": { "start": { "line": 810, @@ -20649,8 +20758,8 @@ }, "property": { "type": "MemberExpression", - "start": 28386, - "end": 28405, + "start": 28395, + "end": 28414, "loc": { "start": { "line": 810, @@ -20663,8 +20772,8 @@ }, "object": { "type": "ThisExpression", - "start": 28386, - "end": 28390, + "start": 28395, + "end": 28399, "loc": { "start": { "line": 810, @@ -20678,8 +20787,8 @@ }, "property": { "type": "Identifier", - "start": 28391, - "end": 28405, + "start": 28400, + "end": 28414, "loc": { "start": { "line": 810, @@ -20689,9 +20798,9 @@ "line": 810, "column": 46 }, - "identifierName": "AXIS_VIEW_BACK" + "identifierName": "AXIS_VIEW_LEFT" }, - "name": "AXIS_VIEW_BACK" + "name": "AXIS_VIEW_LEFT" }, "computed": false }, @@ -20699,8 +20808,8 @@ }, "right": { "type": "ArrayExpression", - "start": 28409, - "end": 28426, + "start": 28418, + "end": 28435, "loc": { "start": { "line": 810, @@ -20714,8 +20823,8 @@ "elements": [ { "type": "MemberExpression", - "start": 28410, - "end": 28425, + "start": 28419, + "end": 28434, "loc": { "start": { "line": 810, @@ -20728,8 +20837,8 @@ }, "object": { "type": "Identifier", - "start": 28410, - "end": 28415, + "start": 28419, + "end": 28424, "loc": { "start": { "line": 810, @@ -20745,8 +20854,8 @@ }, "property": { "type": "Identifier", - "start": 28416, - "end": 28425, + "start": 28425, + "end": 28434, "loc": { "start": { "line": 810, @@ -20756,9 +20865,9 @@ "line": 810, "column": 66 }, - "identifierName": "KEY_NUM_2" + "identifierName": "KEY_NUM_3" }, - "name": "KEY_NUM_2" + "name": "KEY_NUM_3" }, "computed": false } @@ -20768,8 +20877,8 @@ }, { "type": "ExpressionStatement", - "start": 28448, - "end": 28496, + "start": 28457, + "end": 28506, "loc": { "start": { "line": 811, @@ -20777,13 +20886,13 @@ }, "end": { "line": 811, - "column": 68 + "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 28448, - "end": 28495, + "start": 28457, + "end": 28505, "loc": { "start": { "line": 811, @@ -20791,14 +20900,14 @@ }, "end": { "line": 811, - "column": 67 + "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28448, - "end": 28475, + "start": 28457, + "end": 28485, "loc": { "start": { "line": 811, @@ -20806,13 +20915,13 @@ }, "end": { "line": 811, - "column": 47 + "column": 48 } }, "object": { "type": "Identifier", - "start": 28448, - "end": 28454, + "start": 28457, + "end": 28463, "loc": { "start": { "line": 811, @@ -20828,8 +20937,8 @@ }, "property": { "type": "MemberExpression", - "start": 28455, - "end": 28474, + "start": 28464, + "end": 28484, "loc": { "start": { "line": 811, @@ -20837,13 +20946,13 @@ }, "end": { "line": 811, - "column": 46 + "column": 47 } }, "object": { "type": "ThisExpression", - "start": 28455, - "end": 28459, + "start": 28464, + "end": 28468, "loc": { "start": { "line": 811, @@ -20857,8 +20966,8 @@ }, "property": { "type": "Identifier", - "start": 28460, - "end": 28474, + "start": 28469, + "end": 28484, "loc": { "start": { "line": 811, @@ -20866,11 +20975,11 @@ }, "end": { "line": 811, - "column": 46 + "column": 47 }, - "identifierName": "AXIS_VIEW_LEFT" + "identifierName": "AXIS_VIEW_FRONT" }, - "name": "AXIS_VIEW_LEFT" + "name": "AXIS_VIEW_FRONT" }, "computed": false }, @@ -20878,45 +20987,45 @@ }, "right": { "type": "ArrayExpression", - "start": 28478, - "end": 28495, + "start": 28488, + "end": 28505, "loc": { "start": { "line": 811, - "column": 50 + "column": 51 }, "end": { "line": 811, - "column": 67 + "column": 68 } }, "elements": [ { "type": "MemberExpression", - "start": 28479, - "end": 28494, + "start": 28489, + "end": 28504, "loc": { "start": { "line": 811, - "column": 51 + "column": 52 }, "end": { "line": 811, - "column": 66 + "column": 67 } }, "object": { "type": "Identifier", - "start": 28479, - "end": 28484, + "start": 28489, + "end": 28494, "loc": { "start": { "line": 811, - "column": 51 + "column": 52 }, "end": { "line": 811, - "column": 56 + "column": 57 }, "identifierName": "input" }, @@ -20924,20 +21033,20 @@ }, "property": { "type": "Identifier", - "start": 28485, - "end": 28494, + "start": 28495, + "end": 28504, "loc": { "start": { "line": 811, - "column": 57 + "column": 58 }, "end": { "line": 811, - "column": 66 + "column": 67 }, - "identifierName": "KEY_NUM_3" + "identifierName": "KEY_NUM_4" }, - "name": "KEY_NUM_3" + "name": "KEY_NUM_4" }, "computed": false } @@ -20947,8 +21056,8 @@ }, { "type": "ExpressionStatement", - "start": 28517, - "end": 28566, + "start": 28527, + "end": 28574, "loc": { "start": { "line": 812, @@ -20956,13 +21065,13 @@ }, "end": { "line": 812, - "column": 69 + "column": 67 } }, "expression": { "type": "AssignmentExpression", - "start": 28517, - "end": 28565, + "start": 28527, + "end": 28573, "loc": { "start": { "line": 812, @@ -20970,14 +21079,14 @@ }, "end": { "line": 812, - "column": 68 + "column": 66 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28517, - "end": 28545, + "start": 28527, + "end": 28553, "loc": { "start": { "line": 812, @@ -20985,13 +21094,13 @@ }, "end": { "line": 812, - "column": 48 + "column": 46 } }, "object": { "type": "Identifier", - "start": 28517, - "end": 28523, + "start": 28527, + "end": 28533, "loc": { "start": { "line": 812, @@ -21007,8 +21116,8 @@ }, "property": { "type": "MemberExpression", - "start": 28524, - "end": 28544, + "start": 28534, + "end": 28552, "loc": { "start": { "line": 812, @@ -21016,13 +21125,13 @@ }, "end": { "line": 812, - "column": 47 + "column": 45 } }, "object": { "type": "ThisExpression", - "start": 28524, - "end": 28528, + "start": 28534, + "end": 28538, "loc": { "start": { "line": 812, @@ -21036,8 +21145,8 @@ }, "property": { "type": "Identifier", - "start": 28529, - "end": 28544, + "start": 28539, + "end": 28552, "loc": { "start": { "line": 812, @@ -21045,11 +21154,11 @@ }, "end": { "line": 812, - "column": 47 + "column": 45 }, - "identifierName": "AXIS_VIEW_FRONT" + "identifierName": "AXIS_VIEW_TOP" }, - "name": "AXIS_VIEW_FRONT" + "name": "AXIS_VIEW_TOP" }, "computed": false }, @@ -21057,45 +21166,45 @@ }, "right": { "type": "ArrayExpression", - "start": 28548, - "end": 28565, + "start": 28556, + "end": 28573, "loc": { "start": { "line": 812, - "column": 51 + "column": 49 }, "end": { "line": 812, - "column": 68 + "column": 66 } }, "elements": [ { "type": "MemberExpression", - "start": 28549, - "end": 28564, + "start": 28557, + "end": 28572, "loc": { "start": { "line": 812, - "column": 52 + "column": 50 }, "end": { "line": 812, - "column": 67 + "column": 65 } }, "object": { "type": "Identifier", - "start": 28549, - "end": 28554, + "start": 28557, + "end": 28562, "loc": { "start": { "line": 812, - "column": 52 + "column": 50 }, "end": { "line": 812, - "column": 57 + "column": 55 }, "identifierName": "input" }, @@ -21103,20 +21212,20 @@ }, "property": { "type": "Identifier", - "start": 28555, - "end": 28564, + "start": 28563, + "end": 28572, "loc": { "start": { "line": 812, - "column": 58 + "column": 56 }, "end": { "line": 812, - "column": 67 + "column": 65 }, - "identifierName": "KEY_NUM_4" + "identifierName": "KEY_NUM_5" }, - "name": "KEY_NUM_4" + "name": "KEY_NUM_5" }, "computed": false } @@ -21126,8 +21235,8 @@ }, { "type": "ExpressionStatement", - "start": 28587, - "end": 28634, + "start": 28595, + "end": 28645, "loc": { "start": { "line": 813, @@ -21135,13 +21244,13 @@ }, "end": { "line": 813, - "column": 67 + "column": 70 } }, "expression": { "type": "AssignmentExpression", - "start": 28587, - "end": 28633, + "start": 28595, + "end": 28644, "loc": { "start": { "line": 813, @@ -21149,14 +21258,14 @@ }, "end": { "line": 813, - "column": 66 + "column": 69 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28587, - "end": 28613, + "start": 28595, + "end": 28624, "loc": { "start": { "line": 813, @@ -21164,13 +21273,13 @@ }, "end": { "line": 813, - "column": 46 + "column": 49 } }, "object": { "type": "Identifier", - "start": 28587, - "end": 28593, + "start": 28595, + "end": 28601, "loc": { "start": { "line": 813, @@ -21186,8 +21295,8 @@ }, "property": { "type": "MemberExpression", - "start": 28594, - "end": 28612, + "start": 28602, + "end": 28623, "loc": { "start": { "line": 813, @@ -21195,13 +21304,13 @@ }, "end": { "line": 813, - "column": 45 + "column": 48 } }, "object": { "type": "ThisExpression", - "start": 28594, - "end": 28598, + "start": 28602, + "end": 28606, "loc": { "start": { "line": 813, @@ -21215,8 +21324,8 @@ }, "property": { "type": "Identifier", - "start": 28599, - "end": 28612, + "start": 28607, + "end": 28623, "loc": { "start": { "line": 813, @@ -21224,185 +21333,6 @@ }, "end": { "line": 813, - "column": 45 - }, - "identifierName": "AXIS_VIEW_TOP" - }, - "name": "AXIS_VIEW_TOP" - }, - "computed": false - }, - "computed": true - }, - "right": { - "type": "ArrayExpression", - "start": 28616, - "end": 28633, - "loc": { - "start": { - "line": 813, - "column": 49 - }, - "end": { - "line": 813, - "column": 66 - } - }, - "elements": [ - { - "type": "MemberExpression", - "start": 28617, - "end": 28632, - "loc": { - "start": { - "line": 813, - "column": 50 - }, - "end": { - "line": 813, - "column": 65 - } - }, - "object": { - "type": "Identifier", - "start": 28617, - "end": 28622, - "loc": { - "start": { - "line": 813, - "column": 50 - }, - "end": { - "line": 813, - "column": 55 - }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 28623, - "end": 28632, - "loc": { - "start": { - "line": 813, - "column": 56 - }, - "end": { - "line": 813, - "column": 65 - }, - "identifierName": "KEY_NUM_5" - }, - "name": "KEY_NUM_5" - }, - "computed": false - } - ] - } - } - }, - { - "type": "ExpressionStatement", - "start": 28655, - "end": 28705, - "loc": { - "start": { - "line": 814, - "column": 20 - }, - "end": { - "line": 814, - "column": 70 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 28655, - "end": 28704, - "loc": { - "start": { - "line": 814, - "column": 20 - }, - "end": { - "line": 814, - "column": 69 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 28655, - "end": 28684, - "loc": { - "start": { - "line": 814, - "column": 20 - }, - "end": { - "line": 814, - "column": 49 - } - }, - "object": { - "type": "Identifier", - "start": 28655, - "end": 28661, - "loc": { - "start": { - "line": 814, - "column": 20 - }, - "end": { - "line": 814, - "column": 26 - }, - "identifierName": "keyMap" - }, - "name": "keyMap" - }, - "property": { - "type": "MemberExpression", - "start": 28662, - "end": 28683, - "loc": { - "start": { - "line": 814, - "column": 27 - }, - "end": { - "line": 814, - "column": 48 - } - }, - "object": { - "type": "ThisExpression", - "start": 28662, - "end": 28666, - "loc": { - "start": { - "line": 814, - "column": 27 - }, - "end": { - "line": 814, - "column": 31 - } - } - }, - "property": { - "type": "Identifier", - "start": 28667, - "end": 28683, - "loc": { - "start": { - "line": 814, - "column": 32 - }, - "end": { - "line": 814, "column": 48 }, "identifierName": "AXIS_VIEW_BOTTOM" @@ -21415,44 +21345,44 @@ }, "right": { "type": "ArrayExpression", - "start": 28687, - "end": 28704, + "start": 28627, + "end": 28644, "loc": { "start": { - "line": 814, + "line": 813, "column": 52 }, "end": { - "line": 814, + "line": 813, "column": 69 } }, "elements": [ { "type": "MemberExpression", - "start": 28688, - "end": 28703, + "start": 28628, + "end": 28643, "loc": { "start": { - "line": 814, + "line": 813, "column": 53 }, "end": { - "line": 814, + "line": 813, "column": 68 } }, "object": { "type": "Identifier", - "start": 28688, - "end": 28693, + "start": 28628, + "end": 28633, "loc": { "start": { - "line": 814, + "line": 813, "column": 53 }, "end": { - "line": 814, + "line": 813, "column": 58 }, "identifierName": "input" @@ -21461,15 +21391,15 @@ }, "property": { "type": "Identifier", - "start": 28694, - "end": 28703, + "start": 28634, + "end": 28643, "loc": { "start": { - "line": 814, + "line": 813, "column": 59 }, "end": { - "line": 814, + "line": 813, "column": 68 }, "identifierName": "KEY_NUM_6" @@ -21484,15 +21414,15 @@ }, { "type": "BreakStatement", - "start": 28726, - "end": 28732, + "start": 28666, + "end": 28672, "loc": { "start": { - "line": 815, + "line": 814, "column": 20 }, "end": { - "line": 815, + "line": 814, "column": 26 } }, @@ -21501,15 +21431,15 @@ ], "test": { "type": "StringLiteral", - "start": 27460, - "end": 27468, + "start": 27400, + "end": 27408, "loc": { "start": { - "line": 796, + "line": 795, "column": 21 }, "end": { - "line": 796, + "line": 795, "column": 29 } }, @@ -21524,73 +21454,73 @@ }, { "type": "ExpressionStatement", - "start": 28760, - "end": 28782, + "start": 28700, + "end": 28722, "loc": { "start": { - "line": 818, + "line": 817, "column": 12 }, "end": { - "line": 818, + "line": 817, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 28760, - "end": 28781, + "start": 28700, + "end": 28721, "loc": { "start": { - "line": 818, + "line": 817, "column": 12 }, "end": { - "line": 818, + "line": 817, "column": 33 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28760, - "end": 28772, + "start": 28700, + "end": 28712, "loc": { "start": { - "line": 818, + "line": 817, "column": 12 }, "end": { - "line": 818, + "line": 817, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 28760, - "end": 28764, + "start": 28700, + "end": 28704, "loc": { "start": { - "line": 818, + "line": 817, "column": 12 }, "end": { - "line": 818, + "line": 817, "column": 16 } } }, "property": { "type": "Identifier", - "start": 28765, - "end": 28772, + "start": 28705, + "end": 28712, "loc": { "start": { - "line": 818, + "line": 817, "column": 17 }, "end": { - "line": 818, + "line": 817, "column": 24 }, "identifierName": "_keyMap" @@ -21601,15 +21531,15 @@ }, "right": { "type": "Identifier", - "start": 28775, - "end": 28781, + "start": 28715, + "end": 28721, "loc": { "start": { - "line": 818, + "line": 817, "column": 27 }, "end": { - "line": 818, + "line": 817, "column": 33 }, "identifierName": "keyMap" @@ -21623,59 +21553,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 28798, - "end": 28878, + "start": 28738, + "end": 28818, "loc": { "start": { - "line": 819, + "line": 818, "column": 15 }, "end": { - "line": 822, + "line": 821, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 28812, - "end": 28833, + "start": 28752, + "end": 28773, "loc": { "start": { - "line": 820, + "line": 819, "column": 12 }, "end": { - "line": 820, + "line": 819, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 28818, - "end": 28832, + "start": 28758, + "end": 28772, "loc": { "start": { - "line": 820, + "line": 819, "column": 18 }, "end": { - "line": 820, + "line": 819, "column": 32 } }, "id": { "type": "Identifier", - "start": 28818, - "end": 28824, + "start": 28758, + "end": 28764, "loc": { "start": { - "line": 820, + "line": 819, "column": 18 }, "end": { - "line": 820, + "line": 819, "column": 24 }, "identifierName": "keyMap" @@ -21684,15 +21614,15 @@ }, "init": { "type": "Identifier", - "start": 28827, - "end": 28832, + "start": 28767, + "end": 28772, "loc": { "start": { - "line": 820, + "line": 819, "column": 27 }, "end": { - "line": 820, + "line": 819, "column": 32 }, "identifierName": "value" @@ -21705,73 +21635,73 @@ }, { "type": "ExpressionStatement", - "start": 28846, - "end": 28868, + "start": 28786, + "end": 28808, "loc": { "start": { - "line": 821, + "line": 820, "column": 12 }, "end": { - "line": 821, + "line": 820, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 28846, - "end": 28867, + "start": 28786, + "end": 28807, "loc": { "start": { - "line": 821, + "line": 820, "column": 12 }, "end": { - "line": 821, + "line": 820, "column": 33 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28846, - "end": 28858, + "start": 28786, + "end": 28798, "loc": { "start": { - "line": 821, + "line": 820, "column": 12 }, "end": { - "line": 821, + "line": 820, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 28846, - "end": 28850, + "start": 28786, + "end": 28790, "loc": { "start": { - "line": 821, + "line": 820, "column": 12 }, "end": { - "line": 821, + "line": 820, "column": 16 } } }, "property": { "type": "Identifier", - "start": 28851, - "end": 28858, + "start": 28791, + "end": 28798, "loc": { "start": { - "line": 821, + "line": 820, "column": 17 }, "end": { - "line": 821, + "line": 820, "column": 24 }, "identifierName": "_keyMap" @@ -21782,15 +21712,15 @@ }, "right": { "type": "Identifier", - "start": 28861, - "end": 28867, + "start": 28801, + "end": 28807, "loc": { "start": { - "line": 821, + "line": 820, "column": 27 }, "end": { - "line": 821, + "line": 820, "column": 33 }, "identifierName": "keyMap" @@ -21811,15 +21741,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 25417, - "end": 25756, + "start": 25357, + "end": 25696, "loc": { "start": { - "line": 756, + "line": 755, "column": 4 }, "end": { - "line": 763, + "line": 762, "column": 7 } } @@ -21829,15 +21759,15 @@ { "type": "CommentBlock", "value": "*\n * Gets custom mappings of keys to {@link CameraControl} actions.\n *\n * @returns {{Number:Number}} Current key mappings.\n ", - "start": 28890, - "end": 29034, + "start": 28830, + "end": 28974, "loc": { "start": { - "line": 825, + "line": 824, "column": 4 }, "end": { - "line": 829, + "line": 828, "column": 7 } } @@ -21846,15 +21776,15 @@ }, { "type": "ClassMethod", - "start": 29039, - "end": 29088, + "start": 28979, + "end": 29028, "loc": { "start": { - "line": 830, + "line": 829, "column": 4 }, "end": { - "line": 832, + "line": 831, "column": 5 } }, @@ -21862,15 +21792,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 29043, - "end": 29049, + "start": 28983, + "end": 28989, "loc": { "start": { - "line": 830, + "line": 829, "column": 8 }, "end": { - "line": 830, + "line": 829, "column": 14 }, "identifierName": "keyMap" @@ -21885,73 +21815,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 29052, - "end": 29088, + "start": 28992, + "end": 29028, "loc": { "start": { - "line": 830, + "line": 829, "column": 17 }, "end": { - "line": 832, + "line": 831, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 29062, - "end": 29082, + "start": 29002, + "end": 29022, "loc": { "start": { - "line": 831, + "line": 830, "column": 8 }, "end": { - "line": 831, + "line": 830, "column": 28 } }, "argument": { "type": "MemberExpression", - "start": 29069, - "end": 29081, + "start": 29009, + "end": 29021, "loc": { "start": { - "line": 831, + "line": 830, "column": 15 }, "end": { - "line": 831, + "line": 830, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 29069, - "end": 29073, + "start": 29009, + "end": 29013, "loc": { "start": { - "line": 831, + "line": 830, "column": 15 }, "end": { - "line": 831, + "line": 830, "column": 19 } } }, "property": { "type": "Identifier", - "start": 29074, - "end": 29081, + "start": 29014, + "end": 29021, "loc": { "start": { - "line": 831, + "line": 830, "column": 20 }, "end": { - "line": 831, + "line": 830, "column": 27 }, "identifierName": "_keyMap" @@ -21969,15 +21899,15 @@ { "type": "CommentBlock", "value": "*\n * Gets custom mappings of keys to {@link CameraControl} actions.\n *\n * @returns {{Number:Number}} Current key mappings.\n ", - "start": 28890, - "end": 29034, + "start": 28830, + "end": 28974, "loc": { "start": { - "line": 825, + "line": 824, "column": 4 }, "end": { - "line": 829, + "line": 828, "column": 7 } } @@ -21987,15 +21917,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true if any keys configured for the given action are down.\n * @param action\n * @param keyDownMap\n * @private\n ", - "start": 29094, - "end": 29241, + "start": 29034, + "end": 29181, "loc": { "start": { - "line": 834, + "line": 833, "column": 4 }, "end": { - "line": 839, + "line": 838, "column": 7 } } @@ -22004,15 +21934,15 @@ }, { "type": "ClassMethod", - "start": 29246, - "end": 29683, + "start": 29186, + "end": 29623, "loc": { "start": { - "line": 840, + "line": 839, "column": 4 }, "end": { - "line": 855, + "line": 854, "column": 5 } }, @@ -22020,15 +21950,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 29246, - "end": 29265, + "start": 29186, + "end": 29205, "loc": { "start": { - "line": 840, + "line": 839, "column": 4 }, "end": { - "line": 840, + "line": 839, "column": 23 }, "identifierName": "_isKeyDownForAction" @@ -22044,15 +21974,15 @@ "params": [ { "type": "Identifier", - "start": 29266, - "end": 29272, + "start": 29206, + "end": 29212, "loc": { "start": { - "line": 840, + "line": 839, "column": 24 }, "end": { - "line": 840, + "line": 839, "column": 30 }, "identifierName": "action" @@ -22061,15 +21991,15 @@ }, { "type": "Identifier", - "start": 29274, - "end": 29284, + "start": 29214, + "end": 29224, "loc": { "start": { - "line": 840, + "line": 839, "column": 32 }, "end": { - "line": 840, + "line": 839, "column": 42 }, "identifierName": "keyDownMap" @@ -22079,59 +22009,59 @@ ], "body": { "type": "BlockStatement", - "start": 29286, - "end": 29683, + "start": 29226, + "end": 29623, "loc": { "start": { - "line": 840, + "line": 839, "column": 44 }, "end": { - "line": 855, + "line": 854, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 29296, - "end": 29330, + "start": 29236, + "end": 29270, "loc": { "start": { - "line": 841, + "line": 840, "column": 8 }, "end": { - "line": 841, + "line": 840, "column": 42 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29302, - "end": 29329, + "start": 29242, + "end": 29269, "loc": { "start": { - "line": 841, + "line": 840, "column": 14 }, "end": { - "line": 841, + "line": 840, "column": 41 } }, "id": { "type": "Identifier", - "start": 29302, - "end": 29306, + "start": 29242, + "end": 29246, "loc": { "start": { - "line": 841, + "line": 840, "column": 14 }, "end": { - "line": 841, + "line": 840, "column": 18 }, "identifierName": "keys" @@ -22140,58 +22070,58 @@ }, "init": { "type": "MemberExpression", - "start": 29309, - "end": 29329, + "start": 29249, + "end": 29269, "loc": { "start": { - "line": 841, + "line": 840, "column": 21 }, "end": { - "line": 841, + "line": 840, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 29309, - "end": 29321, + "start": 29249, + "end": 29261, "loc": { "start": { - "line": 841, + "line": 840, "column": 21 }, "end": { - "line": 841, + "line": 840, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 29309, - "end": 29313, + "start": 29249, + "end": 29253, "loc": { "start": { - "line": 841, + "line": 840, "column": 21 }, "end": { - "line": 841, + "line": 840, "column": 25 } } }, "property": { "type": "Identifier", - "start": 29314, - "end": 29321, + "start": 29254, + "end": 29261, "loc": { "start": { - "line": 841, + "line": 840, "column": 26 }, "end": { - "line": 841, + "line": 840, "column": 33 }, "identifierName": "_keyMap" @@ -22202,15 +22132,15 @@ }, "property": { "type": "Identifier", - "start": 29322, - "end": 29328, + "start": 29262, + "end": 29268, "loc": { "start": { - "line": 841, + "line": 840, "column": 34 }, "end": { - "line": 841, + "line": 840, "column": 40 }, "identifierName": "action" @@ -22225,29 +22155,29 @@ }, { "type": "IfStatement", - "start": 29339, - "end": 29387, + "start": 29279, + "end": 29327, "loc": { "start": { - "line": 842, + "line": 841, "column": 8 }, "end": { - "line": 844, + "line": 843, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 29343, - "end": 29348, + "start": 29283, + "end": 29288, "loc": { "start": { - "line": 842, + "line": 841, "column": 12 }, "end": { - "line": 842, + "line": 841, "column": 17 } }, @@ -22255,15 +22185,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 29344, - "end": 29348, + "start": 29284, + "end": 29288, "loc": { "start": { - "line": 842, + "line": 841, "column": 13 }, "end": { - "line": 842, + "line": 841, "column": 17 }, "identifierName": "keys" @@ -22276,44 +22206,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 29350, - "end": 29387, + "start": 29290, + "end": 29327, "loc": { "start": { - "line": 842, + "line": 841, "column": 19 }, "end": { - "line": 844, + "line": 843, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 29364, - "end": 29377, + "start": 29304, + "end": 29317, "loc": { "start": { - "line": 843, + "line": 842, "column": 12 }, "end": { - "line": 843, + "line": 842, "column": 25 } }, "argument": { "type": "BooleanLiteral", - "start": 29371, - "end": 29376, + "start": 29311, + "end": 29316, "loc": { "start": { - "line": 843, + "line": 842, "column": 19 }, "end": { - "line": 843, + "line": 842, "column": 24 } }, @@ -22327,29 +22257,29 @@ }, { "type": "IfStatement", - "start": 29396, - "end": 29475, + "start": 29336, + "end": 29415, "loc": { "start": { - "line": 845, + "line": 844, "column": 8 }, "end": { - "line": 847, + "line": 846, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 29400, - "end": 29411, + "start": 29340, + "end": 29351, "loc": { "start": { - "line": 845, + "line": 844, "column": 12 }, "end": { - "line": 845, + "line": 844, "column": 23 } }, @@ -22357,15 +22287,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 29401, - "end": 29411, + "start": 29341, + "end": 29351, "loc": { "start": { - "line": 845, + "line": 844, "column": 13 }, "end": { - "line": 845, + "line": 844, "column": 23 }, "identifierName": "keyDownMap" @@ -22378,59 +22308,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 29413, - "end": 29475, + "start": 29353, + "end": 29415, "loc": { "start": { - "line": 845, + "line": 844, "column": 25 }, "end": { - "line": 847, + "line": 846, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 29427, - "end": 29465, + "start": 29367, + "end": 29405, "loc": { "start": { - "line": 846, + "line": 845, "column": 12 }, "end": { - "line": 846, + "line": 845, "column": 50 } }, "expression": { "type": "AssignmentExpression", - "start": 29427, - "end": 29464, + "start": 29367, + "end": 29404, "loc": { "start": { - "line": 846, + "line": 845, "column": 12 }, "end": { - "line": 846, + "line": 845, "column": 49 } }, "operator": "=", "left": { "type": "Identifier", - "start": 29427, - "end": 29437, + "start": 29367, + "end": 29377, "loc": { "start": { - "line": 846, + "line": 845, "column": 12 }, "end": { - "line": 846, + "line": 845, "column": 22 }, "identifierName": "keyDownMap" @@ -22439,72 +22369,72 @@ }, "right": { "type": "MemberExpression", - "start": 29440, - "end": 29464, + "start": 29380, + "end": 29404, "loc": { "start": { - "line": 846, + "line": 845, "column": 25 }, "end": { - "line": 846, + "line": 845, "column": 49 } }, "object": { "type": "MemberExpression", - "start": 29440, - "end": 29456, + "start": 29380, + "end": 29396, "loc": { "start": { - "line": 846, + "line": 845, "column": 25 }, "end": { - "line": 846, + "line": 845, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 29440, - "end": 29450, + "start": 29380, + "end": 29390, "loc": { "start": { - "line": 846, + "line": 845, "column": 25 }, "end": { - "line": 846, + "line": 845, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 29440, - "end": 29444, + "start": 29380, + "end": 29384, "loc": { "start": { - "line": 846, + "line": 845, "column": 25 }, "end": { - "line": 846, + "line": 845, "column": 29 } } }, "property": { "type": "Identifier", - "start": 29445, - "end": 29450, + "start": 29385, + "end": 29390, "loc": { "start": { - "line": 846, + "line": 845, "column": 30 }, "end": { - "line": 846, + "line": 845, "column": 35 }, "identifierName": "scene" @@ -22515,15 +22445,15 @@ }, "property": { "type": "Identifier", - "start": 29451, - "end": 29456, + "start": 29391, + "end": 29396, "loc": { "start": { - "line": 846, + "line": 845, "column": 36 }, "end": { - "line": 846, + "line": 845, "column": 41 }, "identifierName": "input" @@ -22534,15 +22464,15 @@ }, "property": { "type": "Identifier", - "start": 29457, - "end": 29464, + "start": 29397, + "end": 29404, "loc": { "start": { - "line": 846, + "line": 845, "column": 42 }, "end": { - "line": 846, + "line": 845, "column": 49 }, "identifierName": "keyDown" @@ -22560,58 +22490,58 @@ }, { "type": "ForStatement", - "start": 29484, - "end": 29655, + "start": 29424, + "end": 29595, "loc": { "start": { - "line": 848, + "line": 847, "column": 8 }, "end": { - "line": 853, + "line": 852, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 29489, - "end": 29517, + "start": 29429, + "end": 29457, "loc": { "start": { - "line": 848, + "line": 847, "column": 13 }, "end": { - "line": 848, + "line": 847, "column": 41 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29493, - "end": 29498, + "start": 29433, + "end": 29438, "loc": { "start": { - "line": 848, + "line": 847, "column": 17 }, "end": { - "line": 848, + "line": 847, "column": 22 } }, "id": { "type": "Identifier", - "start": 29493, - "end": 29494, + "start": 29433, + "end": 29434, "loc": { "start": { - "line": 848, + "line": 847, "column": 17 }, "end": { - "line": 848, + "line": 847, "column": 18 }, "identifierName": "i" @@ -22620,15 +22550,15 @@ }, "init": { "type": "NumericLiteral", - "start": 29497, - "end": 29498, + "start": 29437, + "end": 29438, "loc": { "start": { - "line": 848, + "line": 847, "column": 21 }, "end": { - "line": 848, + "line": 847, "column": 22 } }, @@ -22641,29 +22571,29 @@ }, { "type": "VariableDeclarator", - "start": 29500, - "end": 29517, + "start": 29440, + "end": 29457, "loc": { "start": { - "line": 848, + "line": 847, "column": 24 }, "end": { - "line": 848, + "line": 847, "column": 41 } }, "id": { "type": "Identifier", - "start": 29500, - "end": 29503, + "start": 29440, + "end": 29443, "loc": { "start": { - "line": 848, + "line": 847, "column": 24 }, "end": { - "line": 848, + "line": 847, "column": 27 }, "identifierName": "len" @@ -22672,29 +22602,29 @@ }, "init": { "type": "MemberExpression", - "start": 29506, - "end": 29517, + "start": 29446, + "end": 29457, "loc": { "start": { - "line": 848, + "line": 847, "column": 30 }, "end": { - "line": 848, + "line": 847, "column": 41 } }, "object": { "type": "Identifier", - "start": 29506, - "end": 29510, + "start": 29446, + "end": 29450, "loc": { "start": { - "line": 848, + "line": 847, "column": 30 }, "end": { - "line": 848, + "line": 847, "column": 34 }, "identifierName": "keys" @@ -22703,15 +22633,15 @@ }, "property": { "type": "Identifier", - "start": 29511, - "end": 29517, + "start": 29451, + "end": 29457, "loc": { "start": { - "line": 848, + "line": 847, "column": 35 }, "end": { - "line": 848, + "line": 847, "column": 41 }, "identifierName": "length" @@ -22726,29 +22656,29 @@ }, "test": { "type": "BinaryExpression", - "start": 29519, - "end": 29526, + "start": 29459, + "end": 29466, "loc": { "start": { - "line": 848, + "line": 847, "column": 43 }, "end": { - "line": 848, + "line": 847, "column": 50 } }, "left": { "type": "Identifier", - "start": 29519, - "end": 29520, + "start": 29459, + "end": 29460, "loc": { "start": { - "line": 848, + "line": 847, "column": 43 }, "end": { - "line": 848, + "line": 847, "column": 44 }, "identifierName": "i" @@ -22758,15 +22688,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 29523, - "end": 29526, + "start": 29463, + "end": 29466, "loc": { "start": { - "line": 848, + "line": 847, "column": 47 }, "end": { - "line": 848, + "line": 847, "column": 50 }, "identifierName": "len" @@ -22776,15 +22706,15 @@ }, "update": { "type": "UpdateExpression", - "start": 29528, - "end": 29531, + "start": 29468, + "end": 29471, "loc": { "start": { - "line": 848, + "line": 847, "column": 52 }, "end": { - "line": 848, + "line": 847, "column": 55 } }, @@ -22792,15 +22722,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 29528, - "end": 29529, + "start": 29468, + "end": 29469, "loc": { "start": { - "line": 848, + "line": 847, "column": 52 }, "end": { - "line": 848, + "line": 847, "column": 53 }, "identifierName": "i" @@ -22810,59 +22740,59 @@ }, "body": { "type": "BlockStatement", - "start": 29533, - "end": 29655, + "start": 29473, + "end": 29595, "loc": { "start": { - "line": 848, + "line": 847, "column": 57 }, "end": { - "line": 853, + "line": 852, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 29547, - "end": 29567, + "start": 29487, + "end": 29507, "loc": { "start": { - "line": 849, + "line": 848, "column": 12 }, "end": { - "line": 849, + "line": 848, "column": 32 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29553, - "end": 29566, + "start": 29493, + "end": 29506, "loc": { "start": { - "line": 849, + "line": 848, "column": 18 }, "end": { - "line": 849, + "line": 848, "column": 31 } }, "id": { "type": "Identifier", - "start": 29553, - "end": 29556, + "start": 29493, + "end": 29496, "loc": { "start": { - "line": 849, + "line": 848, "column": 18 }, "end": { - "line": 849, + "line": 848, "column": 21 }, "identifierName": "key" @@ -22871,29 +22801,29 @@ }, "init": { "type": "MemberExpression", - "start": 29559, - "end": 29566, + "start": 29499, + "end": 29506, "loc": { "start": { - "line": 849, + "line": 848, "column": 24 }, "end": { - "line": 849, + "line": 848, "column": 31 } }, "object": { "type": "Identifier", - "start": 29559, - "end": 29563, + "start": 29499, + "end": 29503, "loc": { "start": { - "line": 849, + "line": 848, "column": 24 }, "end": { - "line": 849, + "line": 848, "column": 28 }, "identifierName": "keys" @@ -22902,15 +22832,15 @@ }, "property": { "type": "Identifier", - "start": 29564, - "end": 29565, + "start": 29504, + "end": 29505, "loc": { "start": { - "line": 849, + "line": 848, "column": 29 }, "end": { - "line": 849, + "line": 848, "column": 30 }, "identifierName": "i" @@ -22925,43 +22855,43 @@ }, { "type": "IfStatement", - "start": 29580, - "end": 29645, + "start": 29520, + "end": 29585, "loc": { "start": { - "line": 850, + "line": 849, "column": 12 }, "end": { - "line": 852, + "line": 851, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 29584, - "end": 29599, + "start": 29524, + "end": 29539, "loc": { "start": { - "line": 850, + "line": 849, "column": 16 }, "end": { - "line": 850, + "line": 849, "column": 31 } }, "object": { "type": "Identifier", - "start": 29584, - "end": 29594, + "start": 29524, + "end": 29534, "loc": { "start": { - "line": 850, + "line": 849, "column": 16 }, "end": { - "line": 850, + "line": 849, "column": 26 }, "identifierName": "keyDownMap" @@ -22970,15 +22900,15 @@ }, "property": { "type": "Identifier", - "start": 29595, - "end": 29598, + "start": 29535, + "end": 29538, "loc": { "start": { - "line": 850, + "line": 849, "column": 27 }, "end": { - "line": 850, + "line": 849, "column": 30 }, "identifierName": "key" @@ -22989,44 +22919,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 29601, - "end": 29645, + "start": 29541, + "end": 29585, "loc": { "start": { - "line": 850, + "line": 849, "column": 33 }, "end": { - "line": 852, + "line": 851, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 29619, - "end": 29631, + "start": 29559, + "end": 29571, "loc": { "start": { - "line": 851, + "line": 850, "column": 16 }, "end": { - "line": 851, + "line": 850, "column": 28 } }, "argument": { "type": "BooleanLiteral", - "start": 29626, - "end": 29630, + "start": 29566, + "end": 29570, "loc": { "start": { - "line": 851, + "line": 850, "column": 23 }, "end": { - "line": 851, + "line": 850, "column": 27 } }, @@ -23044,29 +22974,29 @@ }, { "type": "ReturnStatement", - "start": 29664, - "end": 29677, + "start": 29604, + "end": 29617, "loc": { "start": { - "line": 854, + "line": 853, "column": 8 }, "end": { - "line": 854, + "line": 853, "column": 21 } }, "argument": { "type": "BooleanLiteral", - "start": 29671, - "end": 29676, + "start": 29611, + "end": 29616, "loc": { "start": { - "line": 854, + "line": 853, "column": 15 }, "end": { - "line": 854, + "line": 853, "column": 20 } }, @@ -23081,15 +23011,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true if any keys configured for the given action are down.\n * @param action\n * @param keyDownMap\n * @private\n ", - "start": 29094, - "end": 29241, + "start": 29034, + "end": 29181, "loc": { "start": { - "line": 834, + "line": 833, "column": 4 }, "end": { - "line": 839, + "line": 838, "column": 7 } } @@ -23099,15 +23029,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 29689, - "end": 29943, + "start": 29629, + "end": 29883, "loc": { "start": { - "line": 857, + "line": 856, "column": 4 }, "end": { - "line": 863, + "line": 862, "column": 7 } } @@ -23116,15 +23046,15 @@ }, { "type": "ClassMethod", - "start": 29948, - "end": 30049, + "start": 29888, + "end": 29989, "loc": { "start": { - "line": 864, + "line": 863, "column": 4 }, "end": { - "line": 866, + "line": 865, "column": 5 } }, @@ -23132,15 +23062,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 29952, - "end": 29964, + "start": 29892, + "end": 29904, "loc": { "start": { - "line": 864, + "line": 863, "column": 8 }, "end": { - "line": 864, + "line": 863, "column": 20 }, "identifierName": "pivotElement" @@ -23155,15 +23085,15 @@ "params": [ { "type": "Identifier", - "start": 29965, - "end": 29972, + "start": 29905, + "end": 29912, "loc": { "start": { - "line": 864, + "line": 863, "column": 21 }, "end": { - "line": 864, + "line": 863, "column": 28 }, "identifierName": "element" @@ -23173,115 +23103,115 @@ ], "body": { "type": "BlockStatement", - "start": 29974, - "end": 30049, + "start": 29914, + "end": 29989, "loc": { "start": { - "line": 864, + "line": 863, "column": 30 }, "end": { - "line": 866, + "line": 865, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 29984, - "end": 30043, + "start": 29924, + "end": 29983, "loc": { "start": { - "line": 865, + "line": 864, "column": 8 }, "end": { - "line": 865, + "line": 864, "column": 67 } }, "expression": { "type": "CallExpression", - "start": 29984, - "end": 30042, + "start": 29924, + "end": 29982, "loc": { "start": { - "line": 865, + "line": 864, "column": 8 }, "end": { - "line": 865, + "line": 864, "column": 66 } }, "callee": { "type": "MemberExpression", - "start": 29984, - "end": 30033, + "start": 29924, + "end": 29973, "loc": { "start": { - "line": 865, + "line": 864, "column": 8 }, "end": { - "line": 865, + "line": 864, "column": 57 } }, "object": { "type": "MemberExpression", - "start": 29984, - "end": 30017, + "start": 29924, + "end": 29957, "loc": { "start": { - "line": 865, + "line": 864, "column": 8 }, "end": { - "line": 865, + "line": 864, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 29984, - "end": 30001, + "start": 29924, + "end": 29941, "loc": { "start": { - "line": 865, + "line": 864, "column": 8 }, "end": { - "line": 865, + "line": 864, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 29984, - "end": 29988, + "start": 29924, + "end": 29928, "loc": { "start": { - "line": 865, + "line": 864, "column": 8 }, "end": { - "line": 865, + "line": 864, "column": 12 } } }, "property": { "type": "Identifier", - "start": 29989, - "end": 30001, + "start": 29929, + "end": 29941, "loc": { "start": { - "line": 865, + "line": 864, "column": 13 }, "end": { - "line": 865, + "line": 864, "column": 25 }, "identifierName": "_controllers" @@ -23292,15 +23222,15 @@ }, "property": { "type": "Identifier", - "start": 30002, - "end": 30017, + "start": 29942, + "end": 29957, "loc": { "start": { - "line": 865, + "line": 864, "column": 26 }, "end": { - "line": 865, + "line": 864, "column": 41 }, "identifierName": "pivotController" @@ -23311,15 +23241,15 @@ }, "property": { "type": "Identifier", - "start": 30018, - "end": 30033, + "start": 29958, + "end": 29973, "loc": { "start": { - "line": 865, + "line": 864, "column": 42 }, "end": { - "line": 865, + "line": 864, "column": 57 }, "identifierName": "setPivotElement" @@ -23331,15 +23261,15 @@ "arguments": [ { "type": "Identifier", - "start": 30034, - "end": 30041, + "start": 29974, + "end": 29981, "loc": { "start": { - "line": 865, + "line": 864, "column": 58 }, "end": { - "line": 865, + "line": 864, "column": 65 }, "identifierName": "element" @@ -23357,15 +23287,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 29689, - "end": 29943, + "start": 29629, + "end": 29883, "loc": { "start": { - "line": 857, + "line": 856, "column": 4 }, "end": { - "line": 863, + "line": 862, "column": 7 } } @@ -23375,15 +23305,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30055, - "end": 30340, + "start": 29995, + "end": 30280, "loc": { "start": { - "line": 868, + "line": 867, "column": 4 }, "end": { - "line": 876, + "line": 875, "column": 7 } } @@ -23392,15 +23322,15 @@ }, { "type": "ClassMethod", - "start": 30345, - "end": 30418, + "start": 30285, + "end": 30358, "loc": { "start": { - "line": 877, + "line": 876, "column": 4 }, "end": { - "line": 879, + "line": 878, "column": 5 } }, @@ -23408,15 +23338,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 30349, - "end": 30355, + "start": 30289, + "end": 30295, "loc": { "start": { - "line": 877, + "line": 876, "column": 8 }, "end": { - "line": 877, + "line": 876, "column": 14 }, "identifierName": "active" @@ -23431,15 +23361,15 @@ "params": [ { "type": "Identifier", - "start": 30356, - "end": 30361, + "start": 30296, + "end": 30301, "loc": { "start": { - "line": 877, + "line": 876, "column": 15 }, "end": { - "line": 877, + "line": 876, "column": 20 }, "identifierName": "value" @@ -23449,102 +23379,102 @@ ], "body": { "type": "BlockStatement", - "start": 30363, - "end": 30418, + "start": 30303, + "end": 30358, "loc": { "start": { - "line": 877, + "line": 876, "column": 22 }, "end": { - "line": 879, + "line": 878, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 30373, - "end": 30412, + "start": 30313, + "end": 30352, "loc": { "start": { - "line": 878, + "line": 877, "column": 8 }, "end": { - "line": 878, + "line": 877, "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 30373, - "end": 30411, + "start": 30313, + "end": 30351, "loc": { "start": { - "line": 878, + "line": 877, "column": 8 }, "end": { - "line": 878, + "line": 877, "column": 46 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 30373, - "end": 30393, + "start": 30313, + "end": 30333, "loc": { "start": { - "line": 878, + "line": 877, "column": 8 }, "end": { - "line": 878, + "line": 877, "column": 28 } }, "object": { "type": "MemberExpression", - "start": 30373, - "end": 30386, + "start": 30313, + "end": 30326, "loc": { "start": { - "line": 878, + "line": 877, "column": 8 }, "end": { - "line": 878, + "line": 877, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 30373, - "end": 30377, + "start": 30313, + "end": 30317, "loc": { "start": { - "line": 878, + "line": 877, "column": 8 }, "end": { - "line": 878, + "line": 877, "column": 12 } } }, "property": { "type": "Identifier", - "start": 30378, - "end": 30386, + "start": 30318, + "end": 30326, "loc": { "start": { - "line": 878, + "line": 877, "column": 13 }, "end": { - "line": 878, + "line": 877, "column": 21 }, "identifierName": "_configs" @@ -23555,15 +23485,15 @@ }, "property": { "type": "Identifier", - "start": 30387, - "end": 30393, + "start": 30327, + "end": 30333, "loc": { "start": { - "line": 878, + "line": 877, "column": 22 }, "end": { - "line": 878, + "line": 877, "column": 28 }, "identifierName": "active" @@ -23574,29 +23504,29 @@ }, "right": { "type": "BinaryExpression", - "start": 30396, - "end": 30411, + "start": 30336, + "end": 30351, "loc": { "start": { - "line": 878, + "line": 877, "column": 31 }, "end": { - "line": 878, + "line": 877, "column": 46 } }, "left": { "type": "Identifier", - "start": 30396, - "end": 30401, + "start": 30336, + "end": 30341, "loc": { "start": { - "line": 878, + "line": 877, "column": 31 }, "end": { - "line": 878, + "line": 877, "column": 36 }, "identifierName": "value" @@ -23606,15 +23536,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 30406, - "end": 30411, + "start": 30346, + "end": 30351, "loc": { "start": { - "line": 878, + "line": 877, "column": 41 }, "end": { - "line": 878, + "line": 877, "column": 46 } }, @@ -23631,15 +23561,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30055, - "end": 30340, + "start": 29995, + "end": 30280, "loc": { "start": { - "line": 868, + "line": 867, "column": 4 }, "end": { - "line": 876, + "line": 875, "column": 7 } } @@ -23649,15 +23579,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30424, - "end": 30709, + "start": 30364, + "end": 30649, "loc": { "start": { - "line": 881, + "line": 880, "column": 4 }, "end": { - "line": 889, + "line": 888, "column": 7 } } @@ -23666,15 +23596,15 @@ }, { "type": "ClassMethod", - "start": 30714, - "end": 30771, + "start": 30654, + "end": 30711, "loc": { "start": { - "line": 890, + "line": 889, "column": 4 }, "end": { - "line": 892, + "line": 891, "column": 5 } }, @@ -23682,15 +23612,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 30718, - "end": 30724, + "start": 30658, + "end": 30664, "loc": { "start": { - "line": 890, + "line": 889, "column": 8 }, "end": { - "line": 890, + "line": 889, "column": 14 }, "identifierName": "active" @@ -23705,87 +23635,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 30727, - "end": 30771, + "start": 30667, + "end": 30711, "loc": { "start": { - "line": 890, + "line": 889, "column": 17 }, "end": { - "line": 892, + "line": 891, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 30737, - "end": 30765, + "start": 30677, + "end": 30705, "loc": { "start": { - "line": 891, + "line": 890, "column": 8 }, "end": { - "line": 891, + "line": 890, "column": 36 } }, "argument": { "type": "MemberExpression", - "start": 30744, - "end": 30764, + "start": 30684, + "end": 30704, "loc": { "start": { - "line": 891, + "line": 890, "column": 15 }, "end": { - "line": 891, + "line": 890, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 30744, - "end": 30757, + "start": 30684, + "end": 30697, "loc": { "start": { - "line": 891, + "line": 890, "column": 15 }, "end": { - "line": 891, + "line": 890, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 30744, - "end": 30748, + "start": 30684, + "end": 30688, "loc": { "start": { - "line": 891, + "line": 890, "column": 15 }, "end": { - "line": 891, + "line": 890, "column": 19 } } }, "property": { "type": "Identifier", - "start": 30749, - "end": 30757, + "start": 30689, + "end": 30697, "loc": { "start": { - "line": 891, + "line": 890, "column": 20 }, "end": { - "line": 891, + "line": 890, "column": 28 }, "identifierName": "_configs" @@ -23796,15 +23726,15 @@ }, "property": { "type": "Identifier", - "start": 30758, - "end": 30764, + "start": 30698, + "end": 30704, "loc": { "start": { - "line": 891, + "line": 890, "column": 29 }, "end": { - "line": 891, + "line": 890, "column": 35 }, "identifierName": "active" @@ -23822,15 +23752,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30424, - "end": 30709, + "start": 30364, + "end": 30649, "loc": { "start": { - "line": 881, + "line": 880, "column": 4 }, "end": { - "line": 889, + "line": 888, "column": 7 } } @@ -23840,15 +23770,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30777, - "end": 31205, + "start": 30717, + "end": 31145, "loc": { "start": { - "line": 894, + "line": 893, "column": 4 }, "end": { - "line": 906, + "line": 905, "column": 7 } } @@ -23857,15 +23787,15 @@ }, { "type": "ClassMethod", - "start": 31210, - "end": 31925, + "start": 31150, + "end": 31865, "loc": { "start": { - "line": 907, + "line": 906, "column": 4 }, "end": { - "line": 920, + "line": 919, "column": 5 } }, @@ -23873,15 +23803,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 31214, - "end": 31221, + "start": 31154, + "end": 31161, "loc": { "start": { - "line": 907, + "line": 906, "column": 8 }, "end": { - "line": 907, + "line": 906, "column": 15 }, "identifierName": "navMode" @@ -23896,15 +23826,15 @@ "params": [ { "type": "Identifier", - "start": 31222, - "end": 31229, + "start": 31162, + "end": 31169, "loc": { "start": { - "line": 907, + "line": 906, "column": 16 }, "end": { - "line": 907, + "line": 906, "column": 23 }, "identifierName": "navMode" @@ -23914,59 +23844,59 @@ ], "body": { "type": "BlockStatement", - "start": 31231, - "end": 31925, + "start": 31171, + "end": 31865, "loc": { "start": { - "line": 907, + "line": 906, "column": 25 }, "end": { - "line": 920, + "line": 919, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 31241, - "end": 31270, + "start": 31181, + "end": 31210, "loc": { "start": { - "line": 908, + "line": 907, "column": 8 }, "end": { - "line": 908, + "line": 907, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 31241, - "end": 31269, + "start": 31181, + "end": 31209, "loc": { "start": { - "line": 908, + "line": 907, "column": 8 }, "end": { - "line": 908, + "line": 907, "column": 36 } }, "operator": "=", "left": { "type": "Identifier", - "start": 31241, - "end": 31248, + "start": 31181, + "end": 31188, "loc": { "start": { - "line": 908, + "line": 907, "column": 8 }, "end": { - "line": 908, + "line": 907, "column": 15 }, "identifierName": "navMode" @@ -23975,29 +23905,29 @@ }, "right": { "type": "LogicalExpression", - "start": 31251, - "end": 31269, + "start": 31191, + "end": 31209, "loc": { "start": { - "line": 908, + "line": 907, "column": 18 }, "end": { - "line": 908, + "line": 907, "column": 36 } }, "left": { "type": "Identifier", - "start": 31251, - "end": 31258, + "start": 31191, + "end": 31198, "loc": { "start": { - "line": 908, + "line": 907, "column": 18 }, "end": { - "line": 908, + "line": 907, "column": 25 }, "identifierName": "navMode" @@ -24007,15 +23937,15 @@ "operator": "||", "right": { "type": "StringLiteral", - "start": 31262, - "end": 31269, + "start": 31202, + "end": 31209, "loc": { "start": { - "line": 908, + "line": 907, "column": 29 }, "end": { - "line": 908, + "line": 907, "column": 36 } }, @@ -24030,71 +23960,71 @@ }, { "type": "IfStatement", - "start": 31279, - "end": 31560, + "start": 31219, + "end": 31500, "loc": { "start": { - "line": 909, + "line": 908, "column": 8 }, "end": { - "line": 912, + "line": 911, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 31283, - "end": 31357, + "start": 31223, + "end": 31297, "loc": { "start": { - "line": 909, + "line": 908, "column": 12 }, "end": { - "line": 909, + "line": 908, "column": 86 } }, "left": { "type": "LogicalExpression", - "start": 31283, - "end": 31331, + "start": 31223, + "end": 31271, "loc": { "start": { - "line": 909, + "line": 908, "column": 12 }, "end": { - "line": 909, + "line": 908, "column": 60 } }, "left": { "type": "BinaryExpression", - "start": 31283, - "end": 31308, + "start": 31223, + "end": 31248, "loc": { "start": { - "line": 909, + "line": 908, "column": 12 }, "end": { - "line": 909, + "line": 908, "column": 37 } }, "left": { "type": "Identifier", - "start": 31283, - "end": 31290, + "start": 31223, + "end": 31230, "loc": { "start": { - "line": 909, + "line": 908, "column": 12 }, "end": { - "line": 909, + "line": 908, "column": 19 }, "identifierName": "navMode" @@ -24104,15 +24034,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 31295, - "end": 31308, + "start": 31235, + "end": 31248, "loc": { "start": { - "line": 909, + "line": 908, "column": 24 }, "end": { - "line": 909, + "line": 908, "column": 37 } }, @@ -24126,29 +24056,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 31312, - "end": 31331, + "start": 31252, + "end": 31271, "loc": { "start": { - "line": 909, + "line": 908, "column": 41 }, "end": { - "line": 909, + "line": 908, "column": 60 } }, "left": { "type": "Identifier", - "start": 31312, - "end": 31319, + "start": 31252, + "end": 31259, "loc": { "start": { - "line": 909, + "line": 908, "column": 41 }, "end": { - "line": 909, + "line": 908, "column": 48 }, "identifierName": "navMode" @@ -24158,15 +24088,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 31324, - "end": 31331, + "start": 31264, + "end": 31271, "loc": { "start": { - "line": 909, + "line": 908, "column": 53 }, "end": { - "line": 909, + "line": 908, "column": 60 } }, @@ -24181,29 +24111,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 31335, - "end": 31357, + "start": 31275, + "end": 31297, "loc": { "start": { - "line": 909, + "line": 908, "column": 64 }, "end": { - "line": 909, + "line": 908, "column": 86 } }, "left": { "type": "Identifier", - "start": 31335, - "end": 31342, + "start": 31275, + "end": 31282, "loc": { "start": { - "line": 909, + "line": 908, "column": 64 }, "end": { - "line": 909, + "line": 908, "column": 71 }, "identifierName": "navMode" @@ -24213,15 +24143,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 31347, - "end": 31357, + "start": 31287, + "end": 31297, "loc": { "start": { - "line": 909, + "line": 908, "column": 76 }, "end": { - "line": 909, + "line": 908, "column": 86 } }, @@ -24235,87 +24165,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 31359, - "end": 31560, + "start": 31299, + "end": 31500, "loc": { "start": { - "line": 909, + "line": 908, "column": 88 }, "end": { - "line": 912, + "line": 911, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 31373, - "end": 31519, + "start": 31313, + "end": 31459, "loc": { "start": { - "line": 910, + "line": 909, "column": 12 }, "end": { - "line": 910, + "line": 909, "column": 158 } }, "expression": { "type": "CallExpression", - "start": 31373, - "end": 31518, + "start": 31313, + "end": 31458, "loc": { "start": { - "line": 910, + "line": 909, "column": 12 }, "end": { - "line": 910, + "line": 909, "column": 157 } }, "callee": { "type": "MemberExpression", - "start": 31373, - "end": 31383, + "start": 31313, + "end": 31323, "loc": { "start": { - "line": 910, + "line": 909, "column": 12 }, "end": { - "line": 910, + "line": 909, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 31373, - "end": 31377, + "start": 31313, + "end": 31317, "loc": { "start": { - "line": 910, + "line": 909, "column": 12 }, "end": { - "line": 910, + "line": 909, "column": 16 } } }, "property": { "type": "Identifier", - "start": 31378, - "end": 31383, + "start": 31318, + "end": 31323, "loc": { "start": { - "line": 910, + "line": 909, "column": 17 }, "end": { - "line": 910, + "line": 909, "column": 22 }, "identifierName": "error" @@ -24327,43 +24257,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 31384, - "end": 31517, + "start": 31324, + "end": 31457, "loc": { "start": { - "line": 910, + "line": 909, "column": 23 }, "end": { - "line": 910, + "line": 909, "column": 156 } }, "left": { "type": "BinaryExpression", - "start": 31384, - "end": 31427, + "start": 31324, + "end": 31367, "loc": { "start": { - "line": 910, + "line": 909, "column": 23 }, "end": { - "line": 910, + "line": 909, "column": 66 } }, "left": { "type": "StringLiteral", - "start": 31384, - "end": 31417, + "start": 31324, + "end": 31357, "loc": { "start": { - "line": 910, + "line": 909, "column": 23 }, "end": { - "line": 910, + "line": 909, "column": 56 } }, @@ -24376,15 +24306,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 31420, - "end": 31427, + "start": 31360, + "end": 31367, "loc": { "start": { - "line": 910, + "line": 909, "column": 59 }, "end": { - "line": 910, + "line": 909, "column": 66 }, "identifierName": "navMode" @@ -24395,15 +24325,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 31430, - "end": 31517, + "start": 31370, + "end": 31457, "loc": { "start": { - "line": 910, + "line": 909, "column": 69 }, "end": { - "line": 910, + "line": 909, "column": 156 } }, @@ -24419,44 +24349,44 @@ }, { "type": "ExpressionStatement", - "start": 31532, - "end": 31550, + "start": 31472, + "end": 31490, "loc": { "start": { - "line": 911, + "line": 910, "column": 12 }, "end": { - "line": 911, + "line": 910, "column": 30 } }, "expression": { "type": "AssignmentExpression", - "start": 31532, - "end": 31549, + "start": 31472, + "end": 31489, "loc": { "start": { - "line": 911, + "line": 910, "column": 12 }, "end": { - "line": 911, + "line": 910, "column": 29 } }, "operator": "=", "left": { "type": "Identifier", - "start": 31532, - "end": 31539, + "start": 31472, + "end": 31479, "loc": { "start": { - "line": 911, + "line": 910, "column": 12 }, "end": { - "line": 911, + "line": 910, "column": 19 }, "identifierName": "navMode" @@ -24465,15 +24395,15 @@ }, "right": { "type": "StringLiteral", - "start": 31542, - "end": 31549, + "start": 31482, + "end": 31489, "loc": { "start": { - "line": 911, + "line": 910, "column": 22 }, "end": { - "line": 911, + "line": 910, "column": 29 } }, @@ -24492,8 +24422,177 @@ }, { "type": "ExpressionStatement", - "start": 31569, - "end": 31625, + "start": 31509, + "end": 31565, + "loc": { + "start": { + "line": 912, + "column": 8 + }, + "end": { + "line": 912, + "column": 64 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 31509, + "end": 31564, + "loc": { + "start": { + "line": 912, + "column": 8 + }, + "end": { + "line": 912, + "column": 63 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 31509, + "end": 31534, + "loc": { + "start": { + "line": 912, + "column": 8 + }, + "end": { + "line": 912, + "column": 33 + } + }, + "object": { + "type": "MemberExpression", + "start": 31509, + "end": 31522, + "loc": { + "start": { + "line": 912, + "column": 8 + }, + "end": { + "line": 912, + "column": 21 + } + }, + "object": { + "type": "ThisExpression", + "start": 31509, + "end": 31513, + "loc": { + "start": { + "line": 912, + "column": 8 + }, + "end": { + "line": 912, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 31514, + "end": 31522, + "loc": { + "start": { + "line": 912, + "column": 13 + }, + "end": { + "line": 912, + "column": 21 + }, + "identifierName": "_configs" + }, + "name": "_configs" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 31523, + "end": 31534, + "loc": { + "start": { + "line": 912, + "column": 22 + }, + "end": { + "line": 912, + "column": 33 + }, + "identifierName": "firstPerson" + }, + "name": "firstPerson" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 31538, + "end": 31563, + "loc": { + "start": { + "line": 912, + "column": 37 + }, + "end": { + "line": 912, + "column": 62 + } + }, + "left": { + "type": "Identifier", + "start": 31538, + "end": 31545, + "loc": { + "start": { + "line": 912, + "column": 37 + }, + "end": { + "line": 912, + "column": 44 + }, + "identifierName": "navMode" + }, + "name": "navMode" + }, + "operator": "===", + "right": { + "type": "StringLiteral", + "start": 31550, + "end": 31563, + "loc": { + "start": { + "line": 912, + "column": 49 + }, + "end": { + "line": 912, + "column": 62 + } + }, + "extra": { + "rawValue": "firstPerson", + "raw": "\"firstPerson\"" + }, + "value": "firstPerson" + }, + "extra": { + "parenthesized": true, + "parenStart": 31537 + } + } + } + }, + { + "type": "ExpressionStatement", + "start": 31574, + "end": 31624, "loc": { "start": { "line": 913, @@ -24501,13 +24600,13 @@ }, "end": { "line": 913, - "column": 64 + "column": 58 } }, "expression": { "type": "AssignmentExpression", - "start": 31569, - "end": 31624, + "start": 31574, + "end": 31623, "loc": { "start": { "line": 913, @@ -24515,14 +24614,14 @@ }, "end": { "line": 913, - "column": 63 + "column": 57 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 31569, - "end": 31594, + "start": 31574, + "end": 31596, "loc": { "start": { "line": 913, @@ -24530,13 +24629,13 @@ }, "end": { "line": 913, - "column": 33 + "column": 30 } }, "object": { "type": "MemberExpression", - "start": 31569, - "end": 31582, + "start": 31574, + "end": 31587, "loc": { "start": { "line": 913, @@ -24549,8 +24648,8 @@ }, "object": { "type": "ThisExpression", - "start": 31569, - "end": 31573, + "start": 31574, + "end": 31578, "loc": { "start": { "line": 913, @@ -24564,8 +24663,8 @@ }, "property": { "type": "Identifier", - "start": 31574, - "end": 31582, + "start": 31579, + "end": 31587, "loc": { "start": { "line": 913, @@ -24583,8 +24682,8 @@ }, "property": { "type": "Identifier", - "start": 31583, - "end": 31594, + "start": 31588, + "end": 31596, "loc": { "start": { "line": 913, @@ -24592,175 +24691,6 @@ }, "end": { "line": 913, - "column": 33 - }, - "identifierName": "firstPerson" - }, - "name": "firstPerson" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 31598, - "end": 31623, - "loc": { - "start": { - "line": 913, - "column": 37 - }, - "end": { - "line": 913, - "column": 62 - } - }, - "left": { - "type": "Identifier", - "start": 31598, - "end": 31605, - "loc": { - "start": { - "line": 913, - "column": 37 - }, - "end": { - "line": 913, - "column": 44 - }, - "identifierName": "navMode" - }, - "name": "navMode" - }, - "operator": "===", - "right": { - "type": "StringLiteral", - "start": 31610, - "end": 31623, - "loc": { - "start": { - "line": 913, - "column": 49 - }, - "end": { - "line": 913, - "column": 62 - } - }, - "extra": { - "rawValue": "firstPerson", - "raw": "\"firstPerson\"" - }, - "value": "firstPerson" - }, - "extra": { - "parenthesized": true, - "parenStart": 31597 - } - } - } - }, - { - "type": "ExpressionStatement", - "start": 31634, - "end": 31684, - "loc": { - "start": { - "line": 914, - "column": 8 - }, - "end": { - "line": 914, - "column": 58 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 31634, - "end": 31683, - "loc": { - "start": { - "line": 914, - "column": 8 - }, - "end": { - "line": 914, - "column": 57 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 31634, - "end": 31656, - "loc": { - "start": { - "line": 914, - "column": 8 - }, - "end": { - "line": 914, - "column": 30 - } - }, - "object": { - "type": "MemberExpression", - "start": 31634, - "end": 31647, - "loc": { - "start": { - "line": 914, - "column": 8 - }, - "end": { - "line": 914, - "column": 21 - } - }, - "object": { - "type": "ThisExpression", - "start": 31634, - "end": 31638, - "loc": { - "start": { - "line": 914, - "column": 8 - }, - "end": { - "line": 914, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 31639, - "end": 31647, - "loc": { - "start": { - "line": 914, - "column": 13 - }, - "end": { - "line": 914, - "column": 21 - }, - "identifierName": "_configs" - }, - "name": "_configs" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 31648, - "end": 31656, - "loc": { - "start": { - "line": 914, - "column": 22 - }, - "end": { - "line": 914, "column": 30 }, "identifierName": "planView" @@ -24771,29 +24701,29 @@ }, "right": { "type": "BinaryExpression", - "start": 31660, - "end": 31682, + "start": 31600, + "end": 31622, "loc": { "start": { - "line": 914, + "line": 913, "column": 34 }, "end": { - "line": 914, + "line": 913, "column": 56 } }, "left": { "type": "Identifier", - "start": 31660, - "end": 31667, + "start": 31600, + "end": 31607, "loc": { "start": { - "line": 914, + "line": 913, "column": 34 }, "end": { - "line": 914, + "line": 913, "column": 41 }, "identifierName": "navMode" @@ -24803,15 +24733,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 31672, - "end": 31682, + "start": 31612, + "end": 31622, "loc": { "start": { - "line": 914, + "line": 913, "column": 46 }, "end": { - "line": 914, + "line": 913, "column": 56 } }, @@ -24823,93 +24753,93 @@ }, "extra": { "parenthesized": true, - "parenStart": 31659 + "parenStart": 31599 } } } }, { "type": "IfStatement", - "start": 31693, - "end": 31878, + "start": 31633, + "end": 31818, "loc": { "start": { - "line": 915, + "line": 914, "column": 8 }, "end": { - "line": 918, + "line": 917, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 31697, - "end": 31748, + "start": 31637, + "end": 31688, "loc": { "start": { - "line": 915, + "line": 914, "column": 12 }, "end": { - "line": 915, + "line": 914, "column": 63 } }, "left": { "type": "MemberExpression", - "start": 31697, - "end": 31722, + "start": 31637, + "end": 31662, "loc": { "start": { - "line": 915, + "line": 914, "column": 12 }, "end": { - "line": 915, + "line": 914, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 31697, - "end": 31710, + "start": 31637, + "end": 31650, "loc": { "start": { - "line": 915, + "line": 914, "column": 12 }, "end": { - "line": 915, + "line": 914, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 31697, - "end": 31701, + "start": 31637, + "end": 31641, "loc": { "start": { - "line": 915, + "line": 914, "column": 12 }, "end": { - "line": 915, + "line": 914, "column": 16 } } }, "property": { "type": "Identifier", - "start": 31702, - "end": 31710, + "start": 31642, + "end": 31650, "loc": { "start": { - "line": 915, + "line": 914, "column": 17 }, "end": { - "line": 915, + "line": 914, "column": 25 }, "identifierName": "_configs" @@ -24920,15 +24850,15 @@ }, "property": { "type": "Identifier", - "start": 31711, - "end": 31722, + "start": 31651, + "end": 31662, "loc": { "start": { - "line": 915, + "line": 914, "column": 26 }, "end": { - "line": 915, + "line": 914, "column": 37 }, "identifierName": "firstPerson" @@ -24940,58 +24870,58 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 31726, - "end": 31748, + "start": 31666, + "end": 31688, "loc": { "start": { - "line": 915, + "line": 914, "column": 41 }, "end": { - "line": 915, + "line": 914, "column": 63 } }, "object": { "type": "MemberExpression", - "start": 31726, - "end": 31739, + "start": 31666, + "end": 31679, "loc": { "start": { - "line": 915, + "line": 914, "column": 41 }, "end": { - "line": 915, + "line": 914, "column": 54 } }, "object": { "type": "ThisExpression", - "start": 31726, - "end": 31730, + "start": 31666, + "end": 31670, "loc": { "start": { - "line": 915, + "line": 914, "column": 41 }, "end": { - "line": 915, + "line": 914, "column": 45 } } }, "property": { "type": "Identifier", - "start": 31731, - "end": 31739, + "start": 31671, + "end": 31679, "loc": { "start": { - "line": 915, + "line": 914, "column": 46 }, "end": { - "line": 915, + "line": 914, "column": 54 }, "identifierName": "_configs" @@ -25002,15 +24932,15 @@ }, "property": { "type": "Identifier", - "start": 31740, - "end": 31748, + "start": 31680, + "end": 31688, "loc": { "start": { - "line": 915, + "line": 914, "column": 55 }, "end": { - "line": 915, + "line": 914, "column": 63 }, "identifierName": "planView" @@ -25022,115 +24952,115 @@ }, "consequent": { "type": "BlockStatement", - "start": 31750, - "end": 31878, + "start": 31690, + "end": 31818, "loc": { "start": { - "line": 915, + "line": 914, "column": 65 }, "end": { - "line": 918, + "line": 917, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 31764, - "end": 31810, + "start": 31704, + "end": 31750, "loc": { "start": { - "line": 916, + "line": 915, "column": 12 }, "end": { - "line": 916, + "line": 915, "column": 58 } }, "expression": { "type": "CallExpression", - "start": 31764, - "end": 31809, + "start": 31704, + "end": 31749, "loc": { "start": { - "line": 916, + "line": 915, "column": 12 }, "end": { - "line": 916, + "line": 915, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 31764, - "end": 31807, + "start": 31704, + "end": 31747, "loc": { "start": { - "line": 916, + "line": 915, "column": 12 }, "end": { - "line": 916, + "line": 915, "column": 55 } }, "object": { "type": "MemberExpression", - "start": 31764, - "end": 31797, + "start": 31704, + "end": 31737, "loc": { "start": { - "line": 916, + "line": 915, "column": 12 }, "end": { - "line": 916, + "line": 915, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 31764, - "end": 31781, + "start": 31704, + "end": 31721, "loc": { "start": { - "line": 916, + "line": 915, "column": 12 }, "end": { - "line": 916, + "line": 915, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 31764, - "end": 31768, + "start": 31704, + "end": 31708, "loc": { "start": { - "line": 916, + "line": 915, "column": 12 }, "end": { - "line": 916, + "line": 915, "column": 16 } } }, "property": { "type": "Identifier", - "start": 31769, - "end": 31781, + "start": 31709, + "end": 31721, "loc": { "start": { - "line": 916, + "line": 915, "column": 17 }, "end": { - "line": 916, + "line": 915, "column": 29 }, "identifierName": "_controllers" @@ -25141,15 +25071,15 @@ }, "property": { "type": "Identifier", - "start": 31782, - "end": 31797, + "start": 31722, + "end": 31737, "loc": { "start": { - "line": 916, + "line": 915, "column": 30 }, "end": { - "line": 916, + "line": 915, "column": 45 }, "identifierName": "pivotController" @@ -25160,15 +25090,15 @@ }, "property": { "type": "Identifier", - "start": 31798, - "end": 31807, + "start": 31738, + "end": 31747, "loc": { "start": { - "line": 916, + "line": 915, "column": 46 }, "end": { - "line": 916, + "line": 915, "column": 55 }, "identifierName": "hidePivot" @@ -25182,100 +25112,100 @@ }, { "type": "ExpressionStatement", - "start": 31823, - "end": 31868, + "start": 31763, + "end": 31808, "loc": { "start": { - "line": 917, + "line": 916, "column": 12 }, "end": { - "line": 917, + "line": 916, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 31823, - "end": 31867, + "start": 31763, + "end": 31807, "loc": { "start": { - "line": 917, + "line": 916, "column": 12 }, "end": { - "line": 917, + "line": 916, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 31823, - "end": 31865, + "start": 31763, + "end": 31805, "loc": { "start": { - "line": 917, + "line": 916, "column": 12 }, "end": { - "line": 917, + "line": 916, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 31823, - "end": 31856, + "start": 31763, + "end": 31796, "loc": { "start": { - "line": 917, + "line": 916, "column": 12 }, "end": { - "line": 917, + "line": 916, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 31823, - "end": 31840, + "start": 31763, + "end": 31780, "loc": { "start": { - "line": 917, + "line": 916, "column": 12 }, "end": { - "line": 917, + "line": 916, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 31823, - "end": 31827, + "start": 31763, + "end": 31767, "loc": { "start": { - "line": 917, + "line": 916, "column": 12 }, "end": { - "line": 917, + "line": 916, "column": 16 } } }, "property": { "type": "Identifier", - "start": 31828, - "end": 31840, + "start": 31768, + "end": 31780, "loc": { "start": { - "line": 917, + "line": 916, "column": 17 }, "end": { - "line": 917, + "line": 916, "column": 29 }, "identifierName": "_controllers" @@ -25286,15 +25216,15 @@ }, "property": { "type": "Identifier", - "start": 31841, - "end": 31856, + "start": 31781, + "end": 31796, "loc": { "start": { - "line": 917, + "line": 916, "column": 30 }, "end": { - "line": 917, + "line": 916, "column": 45 }, "identifierName": "pivotController" @@ -25305,15 +25235,15 @@ }, "property": { "type": "Identifier", - "start": 31857, - "end": 31865, + "start": 31797, + "end": 31805, "loc": { "start": { - "line": 917, + "line": 916, "column": 46 }, "end": { - "line": 917, + "line": 916, "column": 54 }, "identifierName": "endPivot" @@ -25332,87 +25262,87 @@ }, { "type": "ExpressionStatement", - "start": 31887, - "end": 31919, + "start": 31827, + "end": 31859, "loc": { "start": { - "line": 919, + "line": 918, "column": 8 }, "end": { - "line": 919, + "line": 918, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 31887, - "end": 31918, + "start": 31827, + "end": 31858, "loc": { "start": { - "line": 919, + "line": 918, "column": 8 }, "end": { - "line": 919, + "line": 918, "column": 39 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 31887, - "end": 31908, + "start": 31827, + "end": 31848, "loc": { "start": { - "line": 919, + "line": 918, "column": 8 }, "end": { - "line": 919, + "line": 918, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 31887, - "end": 31900, + "start": 31827, + "end": 31840, "loc": { "start": { - "line": 919, + "line": 918, "column": 8 }, "end": { - "line": 919, + "line": 918, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 31887, - "end": 31891, + "start": 31827, + "end": 31831, "loc": { "start": { - "line": 919, + "line": 918, "column": 8 }, "end": { - "line": 919, + "line": 918, "column": 12 } } }, "property": { "type": "Identifier", - "start": 31892, - "end": 31900, + "start": 31832, + "end": 31840, "loc": { "start": { - "line": 919, + "line": 918, "column": 13 }, "end": { - "line": 919, + "line": 918, "column": 21 }, "identifierName": "_configs" @@ -25423,15 +25353,15 @@ }, "property": { "type": "Identifier", - "start": 31901, - "end": 31908, + "start": 31841, + "end": 31848, "loc": { "start": { - "line": 919, + "line": 918, "column": 22 }, "end": { - "line": 919, + "line": 918, "column": 29 }, "identifierName": "navMode" @@ -25442,15 +25372,15 @@ }, "right": { "type": "Identifier", - "start": 31911, - "end": 31918, + "start": 31851, + "end": 31858, "loc": { "start": { - "line": 919, + "line": 918, "column": 32 }, "end": { - "line": 919, + "line": 918, "column": 39 }, "identifierName": "navMode" @@ -25467,15 +25397,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30777, - "end": 31205, + "start": 30717, + "end": 31145, "loc": { "start": { - "line": 894, + "line": 893, "column": 4 }, "end": { - "line": 906, + "line": 905, "column": 7 } } @@ -25485,15 +25415,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the current navigation mode.\n *\n * @returns {String} The navigation mode: \"orbit\", \"firstPerson\" or \"planView\".\n ", - "start": 31931, - "end": 32074, + "start": 31871, + "end": 32014, "loc": { "start": { - "line": 922, + "line": 921, "column": 4 }, "end": { - "line": 926, + "line": 925, "column": 7 } } @@ -25502,15 +25432,15 @@ }, { "type": "ClassMethod", - "start": 32079, - "end": 32138, + "start": 32019, + "end": 32078, "loc": { "start": { - "line": 927, + "line": 926, "column": 4 }, "end": { - "line": 929, + "line": 928, "column": 5 } }, @@ -25518,15 +25448,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 32083, - "end": 32090, + "start": 32023, + "end": 32030, "loc": { "start": { - "line": 927, + "line": 926, "column": 8 }, "end": { - "line": 927, + "line": 926, "column": 15 }, "identifierName": "navMode" @@ -25541,87 +25471,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 32093, - "end": 32138, + "start": 32033, + "end": 32078, "loc": { "start": { - "line": 927, + "line": 926, "column": 18 }, "end": { - "line": 929, + "line": 928, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 32103, - "end": 32132, + "start": 32043, + "end": 32072, "loc": { "start": { - "line": 928, + "line": 927, "column": 8 }, "end": { - "line": 928, + "line": 927, "column": 37 } }, "argument": { "type": "MemberExpression", - "start": 32110, - "end": 32131, + "start": 32050, + "end": 32071, "loc": { "start": { - "line": 928, + "line": 927, "column": 15 }, "end": { - "line": 928, + "line": 927, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 32110, - "end": 32123, + "start": 32050, + "end": 32063, "loc": { "start": { - "line": 928, + "line": 927, "column": 15 }, "end": { - "line": 928, + "line": 927, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 32110, - "end": 32114, + "start": 32050, + "end": 32054, "loc": { "start": { - "line": 928, + "line": 927, "column": 15 }, "end": { - "line": 928, + "line": 927, "column": 19 } } }, "property": { "type": "Identifier", - "start": 32115, - "end": 32123, + "start": 32055, + "end": 32063, "loc": { "start": { - "line": 928, + "line": 927, "column": 20 }, "end": { - "line": 928, + "line": 927, "column": 28 }, "identifierName": "_configs" @@ -25632,15 +25562,15 @@ }, "property": { "type": "Identifier", - "start": 32124, - "end": 32131, + "start": 32064, + "end": 32071, "loc": { "start": { - "line": 928, + "line": 927, "column": 29 }, "end": { - "line": 928, + "line": 927, "column": 36 }, "identifierName": "navMode" @@ -25658,15 +25588,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the current navigation mode.\n *\n * @returns {String} The navigation mode: \"orbit\", \"firstPerson\" or \"planView\".\n ", - "start": 31931, - "end": 32074, + "start": 31871, + "end": 32014, "loc": { "start": { - "line": 922, + "line": 921, "column": 4 }, "end": { - "line": 926, + "line": 925, "column": 7 } } @@ -25676,15 +25606,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 32144, - "end": 32555, + "start": 32084, + "end": 32495, "loc": { "start": { - "line": 931, + "line": 930, "column": 4 }, "end": { - "line": 940, + "line": 939, "column": 7 } } @@ -25693,15 +25623,15 @@ }, { "type": "ClassMethod", - "start": 32560, - "end": 32664, + "start": 32500, + "end": 32604, "loc": { "start": { - "line": 941, + "line": 940, "column": 4 }, "end": { - "line": 944, + "line": 943, "column": 5 } }, @@ -25709,15 +25639,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 32564, - "end": 32578, + "start": 32504, + "end": 32518, "loc": { "start": { - "line": 941, + "line": 940, "column": 8 }, "end": { - "line": 941, + "line": 940, "column": 22 }, "identifierName": "pointerEnabled" @@ -25732,15 +25662,15 @@ "params": [ { "type": "Identifier", - "start": 32579, - "end": 32584, + "start": 32519, + "end": 32524, "loc": { "start": { - "line": 941, + "line": 940, "column": 23 }, "end": { - "line": 941, + "line": 940, "column": 28 }, "identifierName": "value" @@ -25750,87 +25680,87 @@ ], "body": { "type": "BlockStatement", - "start": 32586, - "end": 32664, + "start": 32526, + "end": 32604, "loc": { "start": { - "line": 941, + "line": 940, "column": 30 }, "end": { - "line": 944, + "line": 943, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 32596, - "end": 32610, + "start": 32536, + "end": 32550, "loc": { "start": { - "line": 942, + "line": 941, "column": 8 }, "end": { - "line": 942, + "line": 941, "column": 22 } }, "expression": { "type": "CallExpression", - "start": 32596, - "end": 32609, + "start": 32536, + "end": 32549, "loc": { "start": { - "line": 942, + "line": 941, "column": 8 }, "end": { - "line": 942, + "line": 941, "column": 21 } }, "callee": { "type": "MemberExpression", - "start": 32596, - "end": 32607, + "start": 32536, + "end": 32547, "loc": { "start": { - "line": 942, + "line": 941, "column": 8 }, "end": { - "line": 942, + "line": 941, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 32596, - "end": 32600, + "start": 32536, + "end": 32540, "loc": { "start": { - "line": 942, + "line": 941, "column": 8 }, "end": { - "line": 942, + "line": 941, "column": 12 } } }, "property": { "type": "Identifier", - "start": 32601, - "end": 32607, + "start": 32541, + "end": 32547, "loc": { "start": { - "line": 942, + "line": 941, "column": 13 }, "end": { - "line": 942, + "line": 941, "column": 19 }, "identifierName": "_reset" @@ -25844,87 +25774,87 @@ }, { "type": "ExpressionStatement", - "start": 32619, - "end": 32658, + "start": 32559, + "end": 32598, "loc": { "start": { - "line": 943, + "line": 942, "column": 8 }, "end": { - "line": 943, + "line": 942, "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 32619, - "end": 32657, + "start": 32559, + "end": 32597, "loc": { "start": { - "line": 943, + "line": 942, "column": 8 }, "end": { - "line": 943, + "line": 942, "column": 46 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 32619, - "end": 32647, + "start": 32559, + "end": 32587, "loc": { "start": { - "line": 943, + "line": 942, "column": 8 }, "end": { - "line": 943, + "line": 942, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 32619, - "end": 32632, + "start": 32559, + "end": 32572, "loc": { "start": { - "line": 943, + "line": 942, "column": 8 }, "end": { - "line": 943, + "line": 942, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 32619, - "end": 32623, + "start": 32559, + "end": 32563, "loc": { "start": { - "line": 943, + "line": 942, "column": 8 }, "end": { - "line": 943, + "line": 942, "column": 12 } } }, "property": { "type": "Identifier", - "start": 32624, - "end": 32632, + "start": 32564, + "end": 32572, "loc": { "start": { - "line": 943, + "line": 942, "column": 13 }, "end": { - "line": 943, + "line": 942, "column": 21 }, "identifierName": "_configs" @@ -25935,15 +25865,15 @@ }, "property": { "type": "Identifier", - "start": 32633, - "end": 32647, + "start": 32573, + "end": 32587, "loc": { "start": { - "line": 943, + "line": 942, "column": 22 }, "end": { - "line": 943, + "line": 942, "column": 36 }, "identifierName": "pointerEnabled" @@ -25954,15 +25884,15 @@ }, "right": { "type": "UnaryExpression", - "start": 32650, - "end": 32657, + "start": 32590, + "end": 32597, "loc": { "start": { - "line": 943, + "line": 942, "column": 39 }, "end": { - "line": 943, + "line": 942, "column": 46 } }, @@ -25970,15 +25900,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 32651, - "end": 32657, + "start": 32591, + "end": 32597, "loc": { "start": { - "line": 943, + "line": 942, "column": 40 }, "end": { - "line": 943, + "line": 942, "column": 46 } }, @@ -25986,15 +25916,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 32652, - "end": 32657, + "start": 32592, + "end": 32597, "loc": { "start": { - "line": 943, + "line": 942, "column": 41 }, "end": { - "line": 943, + "line": 942, "column": 46 }, "identifierName": "value" @@ -26018,15 +25948,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 32144, - "end": 32555, + "start": 32084, + "end": 32495, "loc": { "start": { - "line": 931, + "line": 930, "column": 4 }, "end": { - "line": 940, + "line": 939, "column": 7 } } @@ -26035,15 +25965,15 @@ }, { "type": "ClassMethod", - "start": 32670, - "end": 33084, + "start": 32610, + "end": 33024, "loc": { "start": { - "line": 946, + "line": 945, "column": 4 }, "end": { - "line": 959, + "line": 958, "column": 5 } }, @@ -26051,15 +25981,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 32670, - "end": 32676, + "start": 32610, + "end": 32616, "loc": { "start": { - "line": 946, + "line": 945, "column": 4 }, "end": { - "line": 946, + "line": 945, "column": 10 }, "identifierName": "_reset" @@ -26074,73 +26004,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 32679, - "end": 33084, + "start": 32619, + "end": 33024, "loc": { "start": { - "line": 946, + "line": 945, "column": 13 }, "end": { - "line": 959, + "line": 958, "column": 5 } }, "body": [ { "type": "ForStatement", - "start": 32689, - "end": 32886, + "start": 32629, + "end": 32826, "loc": { "start": { - "line": 947, + "line": 946, "column": 8 }, "end": { - "line": 952, + "line": 951, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 32694, - "end": 32732, + "start": 32634, + "end": 32672, "loc": { "start": { - "line": 947, + "line": 946, "column": 13 }, "end": { - "line": 947, + "line": 946, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 32698, - "end": 32703, + "start": 32638, + "end": 32643, "loc": { "start": { - "line": 947, + "line": 946, "column": 17 }, "end": { - "line": 947, + "line": 946, "column": 22 } }, "id": { "type": "Identifier", - "start": 32698, - "end": 32699, + "start": 32638, + "end": 32639, "loc": { "start": { - "line": 947, + "line": 946, "column": 17 }, "end": { - "line": 947, + "line": 946, "column": 18 }, "identifierName": "i" @@ -26149,15 +26079,15 @@ }, "init": { "type": "NumericLiteral", - "start": 32702, - "end": 32703, + "start": 32642, + "end": 32643, "loc": { "start": { - "line": 947, + "line": 946, "column": 21 }, "end": { - "line": 947, + "line": 946, "column": 22 } }, @@ -26170,29 +26100,29 @@ }, { "type": "VariableDeclarator", - "start": 32705, - "end": 32732, + "start": 32645, + "end": 32672, "loc": { "start": { - "line": 947, + "line": 946, "column": 24 }, "end": { - "line": 947, + "line": 946, "column": 51 } }, "id": { "type": "Identifier", - "start": 32705, - "end": 32708, + "start": 32645, + "end": 32648, "loc": { "start": { - "line": 947, + "line": 946, "column": 24 }, "end": { - "line": 947, + "line": 946, "column": 27 }, "identifierName": "len" @@ -26201,58 +26131,58 @@ }, "init": { "type": "MemberExpression", - "start": 32711, - "end": 32732, + "start": 32651, + "end": 32672, "loc": { "start": { - "line": 947, + "line": 946, "column": 30 }, "end": { - "line": 947, + "line": 946, "column": 51 } }, "object": { "type": "MemberExpression", - "start": 32711, - "end": 32725, + "start": 32651, + "end": 32665, "loc": { "start": { - "line": 947, + "line": 946, "column": 30 }, "end": { - "line": 947, + "line": 946, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 32711, - "end": 32715, + "start": 32651, + "end": 32655, "loc": { "start": { - "line": 947, + "line": 946, "column": 30 }, "end": { - "line": 947, + "line": 946, "column": 34 } } }, "property": { "type": "Identifier", - "start": 32716, - "end": 32725, + "start": 32656, + "end": 32665, "loc": { "start": { - "line": 947, + "line": 946, "column": 35 }, "end": { - "line": 947, + "line": 946, "column": 44 }, "identifierName": "_handlers" @@ -26263,15 +26193,15 @@ }, "property": { "type": "Identifier", - "start": 32726, - "end": 32732, + "start": 32666, + "end": 32672, "loc": { "start": { - "line": 947, + "line": 946, "column": 45 }, "end": { - "line": 947, + "line": 946, "column": 51 }, "identifierName": "length" @@ -26286,29 +26216,29 @@ }, "test": { "type": "BinaryExpression", - "start": 32734, - "end": 32741, + "start": 32674, + "end": 32681, "loc": { "start": { - "line": 947, + "line": 946, "column": 53 }, "end": { - "line": 947, + "line": 946, "column": 60 } }, "left": { "type": "Identifier", - "start": 32734, - "end": 32735, + "start": 32674, + "end": 32675, "loc": { "start": { - "line": 947, + "line": 946, "column": 53 }, "end": { - "line": 947, + "line": 946, "column": 54 }, "identifierName": "i" @@ -26318,15 +26248,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 32738, - "end": 32741, + "start": 32678, + "end": 32681, "loc": { "start": { - "line": 947, + "line": 946, "column": 57 }, "end": { - "line": 947, + "line": 946, "column": 60 }, "identifierName": "len" @@ -26336,15 +26266,15 @@ }, "update": { "type": "UpdateExpression", - "start": 32743, - "end": 32746, + "start": 32683, + "end": 32686, "loc": { "start": { - "line": 947, + "line": 946, "column": 62 }, "end": { - "line": 947, + "line": 946, "column": 65 } }, @@ -26352,15 +26282,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 32743, - "end": 32744, + "start": 32683, + "end": 32684, "loc": { "start": { - "line": 947, + "line": 946, "column": 62 }, "end": { - "line": 947, + "line": 946, "column": 63 }, "identifierName": "i" @@ -26370,59 +26300,59 @@ }, "body": { "type": "BlockStatement", - "start": 32748, - "end": 32886, + "start": 32688, + "end": 32826, "loc": { "start": { - "line": 947, + "line": 946, "column": 67 }, "end": { - "line": 952, + "line": 951, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 32762, - "end": 32796, + "start": 32702, + "end": 32736, "loc": { "start": { - "line": 948, + "line": 947, "column": 12 }, "end": { - "line": 948, + "line": 947, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 32768, - "end": 32795, + "start": 32708, + "end": 32735, "loc": { "start": { - "line": 948, + "line": 947, "column": 18 }, "end": { - "line": 948, + "line": 947, "column": 45 } }, "id": { "type": "Identifier", - "start": 32768, - "end": 32775, + "start": 32708, + "end": 32715, "loc": { "start": { - "line": 948, + "line": 947, "column": 18 }, "end": { - "line": 948, + "line": 947, "column": 25 }, "identifierName": "handler" @@ -26431,58 +26361,58 @@ }, "init": { "type": "MemberExpression", - "start": 32778, - "end": 32795, + "start": 32718, + "end": 32735, "loc": { "start": { - "line": 948, + "line": 947, "column": 28 }, "end": { - "line": 948, + "line": 947, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 32778, - "end": 32792, + "start": 32718, + "end": 32732, "loc": { "start": { - "line": 948, + "line": 947, "column": 28 }, "end": { - "line": 948, + "line": 947, "column": 42 } }, "object": { "type": "ThisExpression", - "start": 32778, - "end": 32782, + "start": 32718, + "end": 32722, "loc": { "start": { - "line": 948, + "line": 947, "column": 28 }, "end": { - "line": 948, + "line": 947, "column": 32 } } }, "property": { "type": "Identifier", - "start": 32783, - "end": 32792, + "start": 32723, + "end": 32732, "loc": { "start": { - "line": 948, + "line": 947, "column": 33 }, "end": { - "line": 948, + "line": 947, "column": 42 }, "identifierName": "_handlers" @@ -26493,15 +26423,15 @@ }, "property": { "type": "Identifier", - "start": 32793, - "end": 32794, + "start": 32733, + "end": 32734, "loc": { "start": { - "line": 948, + "line": 947, "column": 43 }, "end": { - "line": 948, + "line": 947, "column": 44 }, "identifierName": "i" @@ -26516,43 +26446,43 @@ }, { "type": "IfStatement", - "start": 32809, - "end": 32876, + "start": 32749, + "end": 32816, "loc": { "start": { - "line": 949, + "line": 948, "column": 12 }, "end": { - "line": 951, + "line": 950, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 32813, - "end": 32826, + "start": 32753, + "end": 32766, "loc": { "start": { - "line": 949, + "line": 948, "column": 16 }, "end": { - "line": 949, + "line": 948, "column": 29 } }, "object": { "type": "Identifier", - "start": 32813, - "end": 32820, + "start": 32753, + "end": 32760, "loc": { "start": { - "line": 949, + "line": 948, "column": 16 }, "end": { - "line": 949, + "line": 948, "column": 23 }, "identifierName": "handler" @@ -26561,15 +26491,15 @@ }, "property": { "type": "Identifier", - "start": 32821, - "end": 32826, + "start": 32761, + "end": 32766, "loc": { "start": { - "line": 949, + "line": 948, "column": 24 }, "end": { - "line": 949, + "line": 948, "column": 29 }, "identifierName": "reset" @@ -26580,72 +26510,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 32828, - "end": 32876, + "start": 32768, + "end": 32816, "loc": { "start": { - "line": 949, + "line": 948, "column": 31 }, "end": { - "line": 951, + "line": 950, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 32846, - "end": 32862, + "start": 32786, + "end": 32802, "loc": { "start": { - "line": 950, + "line": 949, "column": 16 }, "end": { - "line": 950, + "line": 949, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 32846, - "end": 32861, + "start": 32786, + "end": 32801, "loc": { "start": { - "line": 950, + "line": 949, "column": 16 }, "end": { - "line": 950, + "line": 949, "column": 31 } }, "callee": { "type": "MemberExpression", - "start": 32846, - "end": 32859, + "start": 32786, + "end": 32799, "loc": { "start": { - "line": 950, + "line": 949, "column": 16 }, "end": { - "line": 950, + "line": 949, "column": 29 } }, "object": { "type": "Identifier", - "start": 32846, - "end": 32853, + "start": 32786, + "end": 32793, "loc": { "start": { - "line": 950, + "line": 949, "column": 16 }, "end": { - "line": 950, + "line": 949, "column": 23 }, "identifierName": "handler" @@ -26654,15 +26584,15 @@ }, "property": { "type": "Identifier", - "start": 32854, - "end": 32859, + "start": 32794, + "end": 32799, "loc": { "start": { - "line": 950, + "line": 949, "column": 24 }, "end": { - "line": 950, + "line": 949, "column": 29 }, "identifierName": "reset" @@ -26685,87 +26615,87 @@ }, { "type": "ExpressionStatement", - "start": 32896, - "end": 32924, + "start": 32836, + "end": 32864, "loc": { "start": { - "line": 954, + "line": 953, "column": 8 }, "end": { - "line": 954, + "line": 953, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 32896, - "end": 32923, + "start": 32836, + "end": 32863, "loc": { "start": { - "line": 954, + "line": 953, "column": 8 }, "end": { - "line": 954, + "line": 953, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 32896, - "end": 32919, + "start": 32836, + "end": 32859, "loc": { "start": { - "line": 954, + "line": 953, "column": 8 }, "end": { - "line": 954, + "line": 953, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 32896, - "end": 32909, + "start": 32836, + "end": 32849, "loc": { "start": { - "line": 954, + "line": 953, "column": 8 }, "end": { - "line": 954, + "line": 953, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 32896, - "end": 32900, + "start": 32836, + "end": 32840, "loc": { "start": { - "line": 954, + "line": 953, "column": 8 }, "end": { - "line": 954, + "line": 953, "column": 12 } } }, "property": { "type": "Identifier", - "start": 32901, - "end": 32909, + "start": 32841, + "end": 32849, "loc": { "start": { - "line": 954, + "line": 953, "column": 13 }, "end": { - "line": 954, + "line": 953, "column": 21 }, "identifierName": "_updates" @@ -26776,15 +26706,15 @@ }, "property": { "type": "Identifier", - "start": 32910, - "end": 32919, + "start": 32850, + "end": 32859, "loc": { "start": { - "line": 954, + "line": 953, "column": 22 }, "end": { - "line": 954, + "line": 953, "column": 31 }, "identifierName": "panDeltaX" @@ -26795,15 +26725,15 @@ }, "right": { "type": "NumericLiteral", - "start": 32922, - "end": 32923, + "start": 32862, + "end": 32863, "loc": { "start": { - "line": 954, + "line": 953, "column": 34 }, "end": { - "line": 954, + "line": 953, "column": 35 } }, @@ -26817,87 +26747,87 @@ }, { "type": "ExpressionStatement", - "start": 32933, - "end": 32961, + "start": 32873, + "end": 32901, "loc": { "start": { - "line": 955, + "line": 954, "column": 8 }, "end": { - "line": 955, + "line": 954, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 32933, - "end": 32960, + "start": 32873, + "end": 32900, "loc": { "start": { - "line": 955, + "line": 954, "column": 8 }, "end": { - "line": 955, + "line": 954, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 32933, - "end": 32956, + "start": 32873, + "end": 32896, "loc": { "start": { - "line": 955, + "line": 954, "column": 8 }, "end": { - "line": 955, + "line": 954, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 32933, - "end": 32946, + "start": 32873, + "end": 32886, "loc": { "start": { - "line": 955, + "line": 954, "column": 8 }, "end": { - "line": 955, + "line": 954, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 32933, - "end": 32937, + "start": 32873, + "end": 32877, "loc": { "start": { - "line": 955, + "line": 954, "column": 8 }, "end": { - "line": 955, + "line": 954, "column": 12 } } }, "property": { "type": "Identifier", - "start": 32938, - "end": 32946, + "start": 32878, + "end": 32886, "loc": { "start": { - "line": 955, + "line": 954, "column": 13 }, "end": { - "line": 955, + "line": 954, "column": 21 }, "identifierName": "_updates" @@ -26908,15 +26838,15 @@ }, "property": { "type": "Identifier", - "start": 32947, - "end": 32956, + "start": 32887, + "end": 32896, "loc": { "start": { - "line": 955, + "line": 954, "column": 22 }, "end": { - "line": 955, + "line": 954, "column": 31 }, "identifierName": "panDeltaY" @@ -26927,15 +26857,15 @@ }, "right": { "type": "NumericLiteral", - "start": 32959, - "end": 32960, + "start": 32899, + "end": 32900, "loc": { "start": { - "line": 955, + "line": 954, "column": 34 }, "end": { - "line": 955, + "line": 954, "column": 35 } }, @@ -26949,87 +26879,87 @@ }, { "type": "ExpressionStatement", - "start": 32970, - "end": 33001, + "start": 32910, + "end": 32941, "loc": { "start": { - "line": 956, + "line": 955, "column": 8 }, "end": { - "line": 956, + "line": 955, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 32970, - "end": 33000, + "start": 32910, + "end": 32940, "loc": { "start": { - "line": 956, + "line": 955, "column": 8 }, "end": { - "line": 956, + "line": 955, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 32970, - "end": 32996, + "start": 32910, + "end": 32936, "loc": { "start": { - "line": 956, + "line": 955, "column": 8 }, "end": { - "line": 956, + "line": 955, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 32970, - "end": 32983, + "start": 32910, + "end": 32923, "loc": { "start": { - "line": 956, + "line": 955, "column": 8 }, "end": { - "line": 956, + "line": 955, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 32970, - "end": 32974, + "start": 32910, + "end": 32914, "loc": { "start": { - "line": 956, + "line": 955, "column": 8 }, "end": { - "line": 956, + "line": 955, "column": 12 } } }, "property": { "type": "Identifier", - "start": 32975, - "end": 32983, + "start": 32915, + "end": 32923, "loc": { "start": { - "line": 956, + "line": 955, "column": 13 }, "end": { - "line": 956, + "line": 955, "column": 21 }, "identifierName": "_updates" @@ -27040,15 +26970,15 @@ }, "property": { "type": "Identifier", - "start": 32984, - "end": 32996, + "start": 32924, + "end": 32936, "loc": { "start": { - "line": 956, + "line": 955, "column": 22 }, "end": { - "line": 956, + "line": 955, "column": 34 }, "identifierName": "rotateDeltaX" @@ -27059,15 +26989,15 @@ }, "right": { "type": "NumericLiteral", - "start": 32999, - "end": 33000, + "start": 32939, + "end": 32940, "loc": { "start": { - "line": 956, + "line": 955, "column": 37 }, "end": { - "line": 956, + "line": 955, "column": 38 } }, @@ -27081,87 +27011,87 @@ }, { "type": "ExpressionStatement", - "start": 33010, - "end": 33041, + "start": 32950, + "end": 32981, "loc": { "start": { - "line": 957, + "line": 956, "column": 8 }, "end": { - "line": 957, + "line": 956, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 33010, - "end": 33040, + "start": 32950, + "end": 32980, "loc": { "start": { - "line": 957, + "line": 956, "column": 8 }, "end": { - "line": 957, + "line": 956, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 33010, - "end": 33036, + "start": 32950, + "end": 32976, "loc": { "start": { - "line": 957, + "line": 956, "column": 8 }, "end": { - "line": 957, + "line": 956, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 33010, - "end": 33023, + "start": 32950, + "end": 32963, "loc": { "start": { - "line": 957, + "line": 956, "column": 8 }, "end": { - "line": 957, + "line": 956, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 33010, - "end": 33014, + "start": 32950, + "end": 32954, "loc": { "start": { - "line": 957, + "line": 956, "column": 8 }, "end": { - "line": 957, + "line": 956, "column": 12 } } }, "property": { "type": "Identifier", - "start": 33015, - "end": 33023, + "start": 32955, + "end": 32963, "loc": { "start": { - "line": 957, + "line": 956, "column": 13 }, "end": { - "line": 957, + "line": 956, "column": 21 }, "identifierName": "_updates" @@ -27172,15 +27102,15 @@ }, "property": { "type": "Identifier", - "start": 33024, - "end": 33036, + "start": 32964, + "end": 32976, "loc": { "start": { - "line": 957, + "line": 956, "column": 22 }, "end": { - "line": 957, + "line": 956, "column": 34 }, "identifierName": "rotateDeltaY" @@ -27191,15 +27121,15 @@ }, "right": { "type": "NumericLiteral", - "start": 33039, - "end": 33040, + "start": 32979, + "end": 32980, "loc": { "start": { - "line": 957, + "line": 956, "column": 37 }, "end": { - "line": 957, + "line": 956, "column": 38 } }, @@ -27213,87 +27143,87 @@ }, { "type": "ExpressionStatement", - "start": 33050, - "end": 33078, + "start": 32990, + "end": 33018, "loc": { "start": { - "line": 958, + "line": 957, "column": 8 }, "end": { - "line": 958, + "line": 957, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 33050, - "end": 33077, + "start": 32990, + "end": 33017, "loc": { "start": { - "line": 958, + "line": 957, "column": 8 }, "end": { - "line": 958, + "line": 957, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 33050, - "end": 33073, + "start": 32990, + "end": 33013, "loc": { "start": { - "line": 958, + "line": 957, "column": 8 }, "end": { - "line": 958, + "line": 957, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 33050, - "end": 33063, + "start": 32990, + "end": 33003, "loc": { "start": { - "line": 958, + "line": 957, "column": 8 }, "end": { - "line": 958, + "line": 957, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 33050, - "end": 33054, + "start": 32990, + "end": 32994, "loc": { "start": { - "line": 958, + "line": 957, "column": 8 }, "end": { - "line": 958, + "line": 957, "column": 12 } } }, "property": { "type": "Identifier", - "start": 33055, - "end": 33063, + "start": 32995, + "end": 33003, "loc": { "start": { - "line": 958, + "line": 957, "column": 13 }, "end": { - "line": 958, + "line": 957, "column": 21 }, "identifierName": "_updates" @@ -27304,15 +27234,15 @@ }, "property": { "type": "Identifier", - "start": 33064, - "end": 33073, + "start": 33004, + "end": 33013, "loc": { "start": { - "line": 958, + "line": 957, "column": 22 }, "end": { - "line": 958, + "line": 957, "column": 31 }, "identifierName": "dolyDelta" @@ -27323,15 +27253,15 @@ }, "right": { "type": "NumericLiteral", - "start": 33076, - "end": 33077, + "start": 33016, + "end": 33017, "loc": { "start": { - "line": 958, + "line": 957, "column": 34 }, "end": { - "line": 958, + "line": 957, "column": 35 } }, @@ -27351,15 +27281,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 33090, - "end": 33514, + "start": 33030, + "end": 33454, "loc": { "start": { - "line": 961, + "line": 960, "column": 4 }, "end": { - "line": 970, + "line": 969, "column": 7 } } @@ -27368,15 +27298,15 @@ }, { "type": "ClassMethod", - "start": 33519, - "end": 33592, + "start": 33459, + "end": 33532, "loc": { "start": { - "line": 971, + "line": 970, "column": 4 }, "end": { - "line": 973, + "line": 972, "column": 5 } }, @@ -27384,15 +27314,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 33523, - "end": 33537, + "start": 33463, + "end": 33477, "loc": { "start": { - "line": 971, + "line": 970, "column": 8 }, "end": { - "line": 971, + "line": 970, "column": 22 }, "identifierName": "pointerEnabled" @@ -27407,87 +27337,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 33540, - "end": 33592, + "start": 33480, + "end": 33532, "loc": { "start": { - "line": 971, + "line": 970, "column": 25 }, "end": { - "line": 973, + "line": 972, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 33550, - "end": 33586, + "start": 33490, + "end": 33526, "loc": { "start": { - "line": 972, + "line": 971, "column": 8 }, "end": { - "line": 972, + "line": 971, "column": 44 } }, "argument": { "type": "MemberExpression", - "start": 33557, - "end": 33585, + "start": 33497, + "end": 33525, "loc": { "start": { - "line": 972, + "line": 971, "column": 15 }, "end": { - "line": 972, + "line": 971, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 33557, - "end": 33570, + "start": 33497, + "end": 33510, "loc": { "start": { - "line": 972, + "line": 971, "column": 15 }, "end": { - "line": 972, + "line": 971, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 33557, - "end": 33561, + "start": 33497, + "end": 33501, "loc": { "start": { - "line": 972, + "line": 971, "column": 15 }, "end": { - "line": 972, + "line": 971, "column": 19 } } }, "property": { "type": "Identifier", - "start": 33562, - "end": 33570, + "start": 33502, + "end": 33510, "loc": { "start": { - "line": 972, + "line": 971, "column": 20 }, "end": { - "line": 972, + "line": 971, "column": 28 }, "identifierName": "_configs" @@ -27498,15 +27428,15 @@ }, "property": { "type": "Identifier", - "start": 33571, - "end": 33585, + "start": 33511, + "end": 33525, "loc": { "start": { - "line": 972, + "line": 971, "column": 29 }, "end": { - "line": 972, + "line": 971, "column": 43 }, "identifierName": "pointerEnabled" @@ -27524,15 +27454,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 33090, - "end": 33514, + "start": 33030, + "end": 33454, "loc": { "start": { - "line": 961, + "line": 960, "column": 4 }, "end": { - "line": 970, + "line": 969, "column": 7 } } @@ -27542,15 +27472,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 33598, - "end": 34236, + "start": 33538, + "end": 34176, "loc": { "start": { - "line": 975, + "line": 974, "column": 4 }, "end": { - "line": 989, + "line": 988, "column": 7 } } @@ -27559,15 +27489,15 @@ }, { "type": "ClassMethod", - "start": 34241, - "end": 34330, + "start": 34181, + "end": 34270, "loc": { "start": { - "line": 990, + "line": 989, "column": 4 }, "end": { - "line": 992, + "line": 991, "column": 5 } }, @@ -27575,15 +27505,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 34245, - "end": 34258, + "start": 34185, + "end": 34198, "loc": { "start": { - "line": 990, + "line": 989, "column": 8 }, "end": { - "line": 990, + "line": 989, "column": 21 }, "identifierName": "followPointer" @@ -27598,15 +27528,15 @@ "params": [ { "type": "Identifier", - "start": 34259, - "end": 34264, + "start": 34199, + "end": 34204, "loc": { "start": { - "line": 990, + "line": 989, "column": 22 }, "end": { - "line": 990, + "line": 989, "column": 27 }, "identifierName": "value" @@ -27616,102 +27546,102 @@ ], "body": { "type": "BlockStatement", - "start": 34266, - "end": 34330, + "start": 34206, + "end": 34270, "loc": { "start": { - "line": 990, + "line": 989, "column": 29 }, "end": { - "line": 992, + "line": 991, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 34276, - "end": 34324, + "start": 34216, + "end": 34264, "loc": { "start": { - "line": 991, + "line": 990, "column": 8 }, "end": { - "line": 991, + "line": 990, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 34276, - "end": 34323, + "start": 34216, + "end": 34263, "loc": { "start": { - "line": 991, + "line": 990, "column": 8 }, "end": { - "line": 991, + "line": 990, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 34276, - "end": 34303, + "start": 34216, + "end": 34243, "loc": { "start": { - "line": 991, + "line": 990, "column": 8 }, "end": { - "line": 991, + "line": 990, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 34276, - "end": 34289, + "start": 34216, + "end": 34229, "loc": { "start": { - "line": 991, + "line": 990, "column": 8 }, "end": { - "line": 991, + "line": 990, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 34276, - "end": 34280, + "start": 34216, + "end": 34220, "loc": { "start": { - "line": 991, + "line": 990, "column": 8 }, "end": { - "line": 991, + "line": 990, "column": 12 } } }, "property": { "type": "Identifier", - "start": 34281, - "end": 34289, + "start": 34221, + "end": 34229, "loc": { "start": { - "line": 991, + "line": 990, "column": 13 }, "end": { - "line": 991, + "line": 990, "column": 21 }, "identifierName": "_configs" @@ -27722,15 +27652,15 @@ }, "property": { "type": "Identifier", - "start": 34290, - "end": 34303, + "start": 34230, + "end": 34243, "loc": { "start": { - "line": 991, + "line": 990, "column": 22 }, "end": { - "line": 991, + "line": 990, "column": 35 }, "identifierName": "followPointer" @@ -27741,29 +27671,29 @@ }, "right": { "type": "BinaryExpression", - "start": 34307, - "end": 34322, + "start": 34247, + "end": 34262, "loc": { "start": { - "line": 991, + "line": 990, "column": 39 }, "end": { - "line": 991, + "line": 990, "column": 54 } }, "left": { "type": "Identifier", - "start": 34307, - "end": 34312, + "start": 34247, + "end": 34252, "loc": { "start": { - "line": 991, + "line": 990, "column": 39 }, "end": { - "line": 991, + "line": 990, "column": 44 }, "identifierName": "value" @@ -27773,15 +27703,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 34317, - "end": 34322, + "start": 34257, + "end": 34262, "loc": { "start": { - "line": 991, + "line": 990, "column": 49 }, "end": { - "line": 991, + "line": 990, "column": 54 } }, @@ -27789,7 +27719,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 34306 + "parenStart": 34246 } } } @@ -27802,15 +27732,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 33598, - "end": 34236, + "start": 33538, + "end": 34176, "loc": { "start": { - "line": 975, + "line": 974, "column": 4 }, "end": { - "line": 989, + "line": 988, "column": 7 } } @@ -27820,15 +27750,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 34336, - "end": 34965, + "start": 34276, + "end": 34905, "loc": { "start": { - "line": 994, + "line": 993, "column": 4 }, "end": { - "line": 1008, + "line": 1007, "column": 7 } } @@ -27837,15 +27767,15 @@ }, { "type": "ClassMethod", - "start": 34970, - "end": 35041, + "start": 34910, + "end": 34981, "loc": { "start": { - "line": 1009, + "line": 1008, "column": 4 }, "end": { - "line": 1011, + "line": 1010, "column": 5 } }, @@ -27853,15 +27783,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 34974, - "end": 34987, + "start": 34914, + "end": 34927, "loc": { "start": { - "line": 1009, + "line": 1008, "column": 8 }, "end": { - "line": 1009, + "line": 1008, "column": 21 }, "identifierName": "followPointer" @@ -27876,87 +27806,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 34990, - "end": 35041, + "start": 34930, + "end": 34981, "loc": { "start": { - "line": 1009, + "line": 1008, "column": 24 }, "end": { - "line": 1011, + "line": 1010, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 35000, - "end": 35035, + "start": 34940, + "end": 34975, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 8 }, "end": { - "line": 1010, + "line": 1009, "column": 43 } }, "argument": { "type": "MemberExpression", - "start": 35007, - "end": 35034, + "start": 34947, + "end": 34974, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 15 }, "end": { - "line": 1010, + "line": 1009, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 35007, - "end": 35020, + "start": 34947, + "end": 34960, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 15 }, "end": { - "line": 1010, + "line": 1009, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 35007, - "end": 35011, + "start": 34947, + "end": 34951, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 15 }, "end": { - "line": 1010, + "line": 1009, "column": 19 } } }, "property": { "type": "Identifier", - "start": 35012, - "end": 35020, + "start": 34952, + "end": 34960, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 20 }, "end": { - "line": 1010, + "line": 1009, "column": 28 }, "identifierName": "_configs" @@ -27967,15 +27897,15 @@ }, "property": { "type": "Identifier", - "start": 35021, - "end": 35034, + "start": 34961, + "end": 34974, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 29 }, "end": { - "line": 1010, + "line": 1009, "column": 42 }, "identifierName": "followPointer" @@ -27993,15 +27923,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 34336, - "end": 34965, + "start": 34276, + "end": 34905, "loc": { "start": { - "line": 994, + "line": 993, "column": 4 }, "end": { - "line": 1008, + "line": 1007, "column": 7 } } @@ -28011,15 +27941,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 35047, - "end": 35280, + "start": 34987, + "end": 35220, "loc": { "start": { - "line": 1013, + "line": 1012, "column": 4 }, "end": { - "line": 1019, + "line": 1018, "column": 7 } } @@ -28028,15 +27958,15 @@ }, { "type": "ClassMethod", - "start": 35285, - "end": 35380, + "start": 35225, + "end": 35320, "loc": { "start": { - "line": 1020, + "line": 1019, "column": 4 }, "end": { - "line": 1022, + "line": 1021, "column": 5 } }, @@ -28044,15 +27974,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 35289, - "end": 35297, + "start": 35229, + "end": 35237, "loc": { "start": { - "line": 1020, + "line": 1019, "column": 8 }, "end": { - "line": 1020, + "line": 1019, "column": 16 }, "identifierName": "pivotPos" @@ -28067,15 +27997,15 @@ "params": [ { "type": "Identifier", - "start": 35298, - "end": 35306, + "start": 35238, + "end": 35246, "loc": { "start": { - "line": 1020, + "line": 1019, "column": 17 }, "end": { - "line": 1020, + "line": 1019, "column": 25 }, "identifierName": "worldPos" @@ -28085,115 +28015,115 @@ ], "body": { "type": "BlockStatement", - "start": 35308, - "end": 35380, + "start": 35248, + "end": 35320, "loc": { "start": { - "line": 1020, + "line": 1019, "column": 27 }, "end": { - "line": 1022, + "line": 1021, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 35318, - "end": 35374, + "start": 35258, + "end": 35314, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 8 }, "end": { - "line": 1021, + "line": 1020, "column": 64 } }, "expression": { "type": "CallExpression", - "start": 35318, - "end": 35373, + "start": 35258, + "end": 35313, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 8 }, "end": { - "line": 1021, + "line": 1020, "column": 63 } }, "callee": { "type": "MemberExpression", - "start": 35318, - "end": 35363, + "start": 35258, + "end": 35303, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 8 }, "end": { - "line": 1021, + "line": 1020, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 35318, - "end": 35351, + "start": 35258, + "end": 35291, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 8 }, "end": { - "line": 1021, + "line": 1020, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 35318, - "end": 35335, + "start": 35258, + "end": 35275, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 8 }, "end": { - "line": 1021, + "line": 1020, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 35318, - "end": 35322, + "start": 35258, + "end": 35262, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 8 }, "end": { - "line": 1021, + "line": 1020, "column": 12 } } }, "property": { "type": "Identifier", - "start": 35323, - "end": 35335, + "start": 35263, + "end": 35275, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 13 }, "end": { - "line": 1021, + "line": 1020, "column": 25 }, "identifierName": "_controllers" @@ -28204,15 +28134,15 @@ }, "property": { "type": "Identifier", - "start": 35336, - "end": 35351, + "start": 35276, + "end": 35291, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 26 }, "end": { - "line": 1021, + "line": 1020, "column": 41 }, "identifierName": "pivotController" @@ -28223,15 +28153,15 @@ }, "property": { "type": "Identifier", - "start": 35352, - "end": 35363, + "start": 35292, + "end": 35303, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 42 }, "end": { - "line": 1021, + "line": 1020, "column": 53 }, "identifierName": "setPivotPos" @@ -28243,15 +28173,15 @@ "arguments": [ { "type": "Identifier", - "start": 35364, - "end": 35372, + "start": 35304, + "end": 35312, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 54 }, "end": { - "line": 1021, + "line": 1020, "column": 62 }, "identifierName": "worldPos" @@ -28269,15 +28199,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 35047, - "end": 35280, + "start": 34987, + "end": 35220, "loc": { "start": { - "line": 1013, + "line": 1012, "column": 4 }, "end": { - "line": 1019, + "line": 1018, "column": 7 } } @@ -28287,15 +28217,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 35386, - "end": 35622, + "start": 35326, + "end": 35562, "loc": { "start": { - "line": 1024, + "line": 1023, "column": 4 }, "end": { - "line": 1030, + "line": 1029, "column": 7 } } @@ -28304,15 +28234,15 @@ }, { "type": "ClassMethod", - "start": 35627, - "end": 35713, + "start": 35567, + "end": 35653, "loc": { "start": { - "line": 1031, + "line": 1030, "column": 4 }, "end": { - "line": 1033, + "line": 1032, "column": 5 } }, @@ -28320,15 +28250,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 35631, - "end": 35639, + "start": 35571, + "end": 35579, "loc": { "start": { - "line": 1031, + "line": 1030, "column": 8 }, "end": { - "line": 1031, + "line": 1030, "column": 16 }, "identifierName": "pivotPos" @@ -28343,115 +28273,115 @@ "params": [], "body": { "type": "BlockStatement", - "start": 35642, - "end": 35713, + "start": 35582, + "end": 35653, "loc": { "start": { - "line": 1031, + "line": 1030, "column": 19 }, "end": { - "line": 1033, + "line": 1032, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 35652, - "end": 35707, + "start": 35592, + "end": 35647, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 8 }, "end": { - "line": 1032, + "line": 1031, "column": 63 } }, "argument": { "type": "CallExpression", - "start": 35659, - "end": 35706, + "start": 35599, + "end": 35646, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 15 }, "end": { - "line": 1032, + "line": 1031, "column": 62 } }, "callee": { "type": "MemberExpression", - "start": 35659, - "end": 35704, + "start": 35599, + "end": 35644, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 15 }, "end": { - "line": 1032, + "line": 1031, "column": 60 } }, "object": { "type": "MemberExpression", - "start": 35659, - "end": 35692, + "start": 35599, + "end": 35632, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 15 }, "end": { - "line": 1032, + "line": 1031, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 35659, - "end": 35676, + "start": 35599, + "end": 35616, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 15 }, "end": { - "line": 1032, + "line": 1031, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 35659, - "end": 35663, + "start": 35599, + "end": 35603, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 15 }, "end": { - "line": 1032, + "line": 1031, "column": 19 } } }, "property": { "type": "Identifier", - "start": 35664, - "end": 35676, + "start": 35604, + "end": 35616, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 20 }, "end": { - "line": 1032, + "line": 1031, "column": 32 }, "identifierName": "_controllers" @@ -28462,15 +28392,15 @@ }, "property": { "type": "Identifier", - "start": 35677, - "end": 35692, + "start": 35617, + "end": 35632, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 33 }, "end": { - "line": 1032, + "line": 1031, "column": 48 }, "identifierName": "pivotController" @@ -28481,15 +28411,15 @@ }, "property": { "type": "Identifier", - "start": 35693, - "end": 35704, + "start": 35633, + "end": 35644, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 49 }, "end": { - "line": 1032, + "line": 1031, "column": 60 }, "identifierName": "getPivotPos" @@ -28509,15 +28439,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 35386, - "end": 35622, + "start": 35326, + "end": 35562, "loc": { "start": { - "line": 1024, + "line": 1023, "column": 4 }, "end": { - "line": 1030, + "line": 1029, "column": 7 } } @@ -28527,15 +28457,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n ", - "start": 35719, - "end": 35834, + "start": 35659, + "end": 35774, "loc": { "start": { - "line": 1035, + "line": 1034, "column": 4 }, "end": { - "line": 1038, + "line": 1037, "column": 7 } } @@ -28544,15 +28474,15 @@ }, { "type": "ClassMethod", - "start": 35839, - "end": 35998, + "start": 35779, + "end": 35938, "loc": { "start": { - "line": 1039, + "line": 1038, "column": 4 }, "end": { - "line": 1042, + "line": 1041, "column": 5 } }, @@ -28560,15 +28490,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 35843, - "end": 35857, + "start": 35783, + "end": 35797, "loc": { "start": { - "line": 1039, + "line": 1038, "column": 8 }, "end": { - "line": 1039, + "line": 1038, "column": 22 }, "identifierName": "dollyToPointer" @@ -28583,15 +28513,15 @@ "params": [ { "type": "Identifier", - "start": 35858, - "end": 35863, + "start": 35798, + "end": 35803, "loc": { "start": { - "line": 1039, + "line": 1038, "column": 23 }, "end": { - "line": 1039, + "line": 1038, "column": 28 }, "identifierName": "value" @@ -28601,87 +28531,87 @@ ], "body": { "type": "BlockStatement", - "start": 35865, - "end": 35998, + "start": 35805, + "end": 35938, "loc": { "start": { - "line": 1039, + "line": 1038, "column": 30 }, "end": { - "line": 1042, + "line": 1041, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 35875, - "end": 35956, + "start": 35815, + "end": 35896, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 8 }, "end": { - "line": 1040, + "line": 1039, "column": 89 } }, "expression": { "type": "CallExpression", - "start": 35875, - "end": 35955, + "start": 35815, + "end": 35895, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 8 }, "end": { - "line": 1040, + "line": 1039, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 35875, - "end": 35884, + "start": 35815, + "end": 35824, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 8 }, "end": { - "line": 1040, + "line": 1039, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 35875, - "end": 35879, + "start": 35815, + "end": 35819, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 8 }, "end": { - "line": 1040, + "line": 1039, "column": 12 } } }, "property": { "type": "Identifier", - "start": 35880, - "end": 35884, + "start": 35820, + "end": 35824, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 13 }, "end": { - "line": 1040, + "line": 1039, "column": 17 }, "identifierName": "warn" @@ -28693,15 +28623,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 35885, - "end": 35954, + "start": 35825, + "end": 35894, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 18 }, "end": { - "line": 1040, + "line": 1039, "column": 87 } }, @@ -28716,73 +28646,73 @@ }, { "type": "ExpressionStatement", - "start": 35965, - "end": 35992, + "start": 35905, + "end": 35932, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 8 }, "end": { - "line": 1041, + "line": 1040, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 35965, - "end": 35991, + "start": 35905, + "end": 35931, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 8 }, "end": { - "line": 1041, + "line": 1040, "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 35965, - "end": 35983, + "start": 35905, + "end": 35923, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 8 }, "end": { - "line": 1041, + "line": 1040, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 35965, - "end": 35969, + "start": 35905, + "end": 35909, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 8 }, "end": { - "line": 1041, + "line": 1040, "column": 12 } } }, "property": { "type": "Identifier", - "start": 35970, - "end": 35983, + "start": 35910, + "end": 35923, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 13 }, "end": { - "line": 1041, + "line": 1040, "column": 26 }, "identifierName": "followPointer" @@ -28793,15 +28723,15 @@ }, "right": { "type": "Identifier", - "start": 35986, - "end": 35991, + "start": 35926, + "end": 35931, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 29 }, "end": { - "line": 1041, + "line": 1040, "column": 34 }, "identifierName": "value" @@ -28818,15 +28748,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n ", - "start": 35719, - "end": 35834, + "start": 35659, + "end": 35774, "loc": { "start": { - "line": 1035, + "line": 1034, "column": 4 }, "end": { - "line": 1038, + "line": 1037, "column": 7 } } @@ -28836,15 +28766,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n ", - "start": 36004, - "end": 36123, + "start": 35944, + "end": 36063, "loc": { "start": { - "line": 1044, + "line": 1043, "column": 4 }, "end": { - "line": 1047, + "line": 1046, "column": 7 } } @@ -28853,15 +28783,15 @@ }, { "type": "ClassMethod", - "start": 36128, - "end": 36281, + "start": 36068, + "end": 36221, "loc": { "start": { - "line": 1048, + "line": 1047, "column": 4 }, "end": { - "line": 1051, + "line": 1050, "column": 5 } }, @@ -28869,15 +28799,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 36132, - "end": 36146, + "start": 36072, + "end": 36086, "loc": { "start": { - "line": 1048, + "line": 1047, "column": 8 }, "end": { - "line": 1048, + "line": 1047, "column": 22 }, "identifierName": "dollyToPointer" @@ -28892,87 +28822,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 36149, - "end": 36281, + "start": 36089, + "end": 36221, "loc": { "start": { - "line": 1048, + "line": 1047, "column": 25 }, "end": { - "line": 1051, + "line": 1050, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 36159, - "end": 36240, + "start": 36099, + "end": 36180, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 8 }, "end": { - "line": 1049, + "line": 1048, "column": 89 } }, "expression": { "type": "CallExpression", - "start": 36159, - "end": 36239, + "start": 36099, + "end": 36179, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 8 }, "end": { - "line": 1049, + "line": 1048, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 36159, - "end": 36168, + "start": 36099, + "end": 36108, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 8 }, "end": { - "line": 1049, + "line": 1048, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 36159, - "end": 36163, + "start": 36099, + "end": 36103, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 8 }, "end": { - "line": 1049, + "line": 1048, "column": 12 } } }, "property": { "type": "Identifier", - "start": 36164, - "end": 36168, + "start": 36104, + "end": 36108, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 13 }, "end": { - "line": 1049, + "line": 1048, "column": 17 }, "identifierName": "warn" @@ -28984,15 +28914,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 36169, - "end": 36238, + "start": 36109, + "end": 36178, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 18 }, "end": { - "line": 1049, + "line": 1048, "column": 87 } }, @@ -29007,58 +28937,58 @@ }, { "type": "ReturnStatement", - "start": 36249, - "end": 36275, + "start": 36189, + "end": 36215, "loc": { "start": { - "line": 1050, + "line": 1049, "column": 8 }, "end": { - "line": 1050, + "line": 1049, "column": 34 } }, "argument": { "type": "MemberExpression", - "start": 36256, - "end": 36274, + "start": 36196, + "end": 36214, "loc": { "start": { - "line": 1050, + "line": 1049, "column": 15 }, "end": { - "line": 1050, + "line": 1049, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 36256, - "end": 36260, + "start": 36196, + "end": 36200, "loc": { "start": { - "line": 1050, + "line": 1049, "column": 15 }, "end": { - "line": 1050, + "line": 1049, "column": 19 } } }, "property": { "type": "Identifier", - "start": 36261, - "end": 36274, + "start": 36201, + "end": 36214, "loc": { "start": { - "line": 1050, + "line": 1049, "column": 20 }, "end": { - "line": 1050, + "line": 1049, "column": 33 }, "identifierName": "followPointer" @@ -29076,15 +29006,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n ", - "start": 36004, - "end": 36123, + "start": 35944, + "end": 36063, "loc": { "start": { - "line": 1044, + "line": 1043, "column": 4 }, "end": { - "line": 1047, + "line": 1046, "column": 7 } } @@ -29094,15 +29024,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n ", - "start": 36287, - "end": 36402, + "start": 36227, + "end": 36342, "loc": { "start": { - "line": 1053, + "line": 1052, "column": 4 }, "end": { - "line": 1056, + "line": 1055, "column": 7 } } @@ -29111,15 +29041,15 @@ }, { "type": "ClassMethod", - "start": 36407, - "end": 36526, + "start": 36347, + "end": 36466, "loc": { "start": { - "line": 1057, + "line": 1056, "column": 4 }, "end": { - "line": 1059, + "line": 1058, "column": 5 } }, @@ -29127,15 +29057,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 36411, - "end": 36423, + "start": 36351, + "end": 36363, "loc": { "start": { - "line": 1057, + "line": 1056, "column": 8 }, "end": { - "line": 1057, + "line": 1056, "column": 20 }, "identifierName": "panToPointer" @@ -29150,15 +29080,15 @@ "params": [ { "type": "Identifier", - "start": 36424, - "end": 36429, + "start": 36364, + "end": 36369, "loc": { "start": { - "line": 1057, + "line": 1056, "column": 21 }, "end": { - "line": 1057, + "line": 1056, "column": 26 }, "identifierName": "value" @@ -29168,87 +29098,87 @@ ], "body": { "type": "BlockStatement", - "start": 36431, - "end": 36526, + "start": 36371, + "end": 36466, "loc": { "start": { - "line": 1057, + "line": 1056, "column": 28 }, "end": { - "line": 1059, + "line": 1058, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 36441, - "end": 36520, + "start": 36381, + "end": 36460, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 8 }, "end": { - "line": 1058, + "line": 1057, "column": 87 } }, "expression": { "type": "CallExpression", - "start": 36441, - "end": 36519, + "start": 36381, + "end": 36459, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 8 }, "end": { - "line": 1058, + "line": 1057, "column": 86 } }, "callee": { "type": "MemberExpression", - "start": 36441, - "end": 36450, + "start": 36381, + "end": 36390, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 8 }, "end": { - "line": 1058, + "line": 1057, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 36441, - "end": 36445, + "start": 36381, + "end": 36385, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 8 }, "end": { - "line": 1058, + "line": 1057, "column": 12 } } }, "property": { "type": "Identifier", - "start": 36446, - "end": 36450, + "start": 36386, + "end": 36390, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 13 }, "end": { - "line": 1058, + "line": 1057, "column": 17 }, "identifierName": "warn" @@ -29260,15 +29190,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 36451, - "end": 36518, + "start": 36391, + "end": 36458, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 18 }, "end": { - "line": 1058, + "line": 1057, "column": 85 } }, @@ -29289,15 +29219,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n ", - "start": 36287, - "end": 36402, + "start": 36227, + "end": 36342, "loc": { "start": { - "line": 1053, + "line": 1052, "column": 4 }, "end": { - "line": 1056, + "line": 1055, "column": 7 } } @@ -29307,15 +29237,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n ", - "start": 36532, - "end": 36651, + "start": 36472, + "end": 36591, "loc": { "start": { - "line": 1061, + "line": 1060, "column": 4 }, "end": { - "line": 1064, + "line": 1063, "column": 7 } } @@ -29324,15 +29254,15 @@ }, { "type": "ClassMethod", - "start": 36656, - "end": 36792, + "start": 36596, + "end": 36732, "loc": { "start": { - "line": 1065, + "line": 1064, "column": 4 }, "end": { - "line": 1068, + "line": 1067, "column": 5 } }, @@ -29340,15 +29270,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 36660, - "end": 36672, + "start": 36600, + "end": 36612, "loc": { "start": { - "line": 1065, + "line": 1064, "column": 8 }, "end": { - "line": 1065, + "line": 1064, "column": 20 }, "identifierName": "panToPointer" @@ -29363,87 +29293,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 36675, - "end": 36792, + "start": 36615, + "end": 36732, "loc": { "start": { - "line": 1065, + "line": 1064, "column": 23 }, "end": { - "line": 1068, + "line": 1067, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 36685, - "end": 36764, + "start": 36625, + "end": 36704, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 8 }, "end": { - "line": 1066, + "line": 1065, "column": 87 } }, "expression": { "type": "CallExpression", - "start": 36685, - "end": 36763, + "start": 36625, + "end": 36703, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 8 }, "end": { - "line": 1066, + "line": 1065, "column": 86 } }, "callee": { "type": "MemberExpression", - "start": 36685, - "end": 36694, + "start": 36625, + "end": 36634, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 8 }, "end": { - "line": 1066, + "line": 1065, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 36685, - "end": 36689, + "start": 36625, + "end": 36629, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 8 }, "end": { - "line": 1066, + "line": 1065, "column": 12 } } }, "property": { "type": "Identifier", - "start": 36690, - "end": 36694, + "start": 36630, + "end": 36634, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 13 }, "end": { - "line": 1066, + "line": 1065, "column": 17 }, "identifierName": "warn" @@ -29455,15 +29385,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 36695, - "end": 36762, + "start": 36635, + "end": 36702, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 18 }, "end": { - "line": 1066, + "line": 1065, "column": 85 } }, @@ -29478,29 +29408,29 @@ }, { "type": "ReturnStatement", - "start": 36773, - "end": 36786, + "start": 36713, + "end": 36726, "loc": { "start": { - "line": 1067, + "line": 1066, "column": 8 }, "end": { - "line": 1067, + "line": 1066, "column": 21 } }, "argument": { "type": "BooleanLiteral", - "start": 36780, - "end": 36785, + "start": 36720, + "end": 36725, "loc": { "start": { - "line": 1067, + "line": 1066, "column": 15 }, "end": { - "line": 1067, + "line": 1066, "column": 20 } }, @@ -29515,15 +29445,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n ", - "start": 36532, - "end": 36651, + "start": 36472, + "end": 36591, "loc": { "start": { - "line": 1061, + "line": 1060, "column": 4 }, "end": { - "line": 1064, + "line": 1063, "column": 7 } } @@ -29533,15 +29463,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 36798, - "end": 37147, + "start": 36738, + "end": 37087, "loc": { "start": { - "line": 1070, + "line": 1069, "column": 4 }, "end": { - "line": 1081, + "line": 1080, "column": 7 } } @@ -29550,15 +29480,15 @@ }, { "type": "ClassMethod", - "start": 37152, - "end": 37507, + "start": 37092, + "end": 37447, "loc": { "start": { - "line": 1082, + "line": 1081, "column": 4 }, "end": { - "line": 1090, + "line": 1089, "column": 5 } }, @@ -29566,15 +29496,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 37156, - "end": 37164, + "start": 37096, + "end": 37104, "loc": { "start": { - "line": 1082, + "line": 1081, "column": 8 }, "end": { - "line": 1082, + "line": 1081, "column": 16 }, "identifierName": "planView" @@ -29589,15 +29519,15 @@ "params": [ { "type": "Identifier", - "start": 37165, - "end": 37170, + "start": 37105, + "end": 37110, "loc": { "start": { - "line": 1082, + "line": 1081, "column": 17 }, "end": { - "line": 1082, + "line": 1081, "column": 22 }, "identifierName": "value" @@ -29607,102 +29537,102 @@ ], "body": { "type": "BlockStatement", - "start": 37172, - "end": 37507, + "start": 37112, + "end": 37447, "loc": { "start": { - "line": 1082, + "line": 1081, "column": 24 }, "end": { - "line": 1090, + "line": 1089, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 37182, - "end": 37215, + "start": 37122, + "end": 37155, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 8 }, "end": { - "line": 1083, + "line": 1082, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 37182, - "end": 37214, + "start": 37122, + "end": 37154, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 8 }, "end": { - "line": 1083, + "line": 1082, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 37182, - "end": 37204, + "start": 37122, + "end": 37144, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 8 }, "end": { - "line": 1083, + "line": 1082, "column": 30 } }, "object": { "type": "MemberExpression", - "start": 37182, - "end": 37195, + "start": 37122, + "end": 37135, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 8 }, "end": { - "line": 1083, + "line": 1082, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 37182, - "end": 37186, + "start": 37122, + "end": 37126, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 8 }, "end": { - "line": 1083, + "line": 1082, "column": 12 } } }, "property": { "type": "Identifier", - "start": 37187, - "end": 37195, + "start": 37127, + "end": 37135, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 13 }, "end": { - "line": 1083, + "line": 1082, "column": 21 }, "identifierName": "_configs" @@ -29713,15 +29643,15 @@ }, "property": { "type": "Identifier", - "start": 37196, - "end": 37204, + "start": 37136, + "end": 37144, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 22 }, "end": { - "line": 1083, + "line": 1082, "column": 30 }, "identifierName": "planView" @@ -29732,15 +29662,15 @@ }, "right": { "type": "UnaryExpression", - "start": 37207, - "end": 37214, + "start": 37147, + "end": 37154, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 33 }, "end": { - "line": 1083, + "line": 1082, "column": 40 } }, @@ -29748,15 +29678,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 37208, - "end": 37214, + "start": 37148, + "end": 37154, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 34 }, "end": { - "line": 1083, + "line": 1082, "column": 40 } }, @@ -29764,15 +29694,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 37209, - "end": 37214, + "start": 37149, + "end": 37154, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 35 }, "end": { - "line": 1083, + "line": 1082, "column": 40 }, "identifierName": "value" @@ -29791,87 +29721,87 @@ }, { "type": "ExpressionStatement", - "start": 37224, - "end": 37258, + "start": 37164, + "end": 37198, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 8 }, "end": { - "line": 1084, + "line": 1083, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 37224, - "end": 37257, + "start": 37164, + "end": 37197, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 8 }, "end": { - "line": 1084, + "line": 1083, "column": 41 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 37224, - "end": 37249, + "start": 37164, + "end": 37189, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 8 }, "end": { - "line": 1084, + "line": 1083, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 37224, - "end": 37237, + "start": 37164, + "end": 37177, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 8 }, "end": { - "line": 1084, + "line": 1083, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 37224, - "end": 37228, + "start": 37164, + "end": 37168, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 8 }, "end": { - "line": 1084, + "line": 1083, "column": 12 } } }, "property": { "type": "Identifier", - "start": 37229, - "end": 37237, + "start": 37169, + "end": 37177, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 13 }, "end": { - "line": 1084, + "line": 1083, "column": 21 }, "identifierName": "_configs" @@ -29882,15 +29812,15 @@ }, "property": { "type": "Identifier", - "start": 37238, - "end": 37249, + "start": 37178, + "end": 37189, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 22 }, "end": { - "line": 1084, + "line": 1083, "column": 33 }, "identifierName": "firstPerson" @@ -29901,15 +29831,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 37252, - "end": 37257, + "start": 37192, + "end": 37197, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 36 }, "end": { - "line": 1084, + "line": 1083, "column": 41 } }, @@ -29919,72 +29849,72 @@ }, { "type": "IfStatement", - "start": 37267, - "end": 37423, + "start": 37207, + "end": 37363, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 8 }, "end": { - "line": 1088, + "line": 1087, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 37271, - "end": 37293, + "start": 37211, + "end": 37233, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 12 }, "end": { - "line": 1085, + "line": 1084, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 37271, - "end": 37284, + "start": 37211, + "end": 37224, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 12 }, "end": { - "line": 1085, + "line": 1084, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 37271, - "end": 37275, + "start": 37211, + "end": 37215, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 12 }, "end": { - "line": 1085, + "line": 1084, "column": 16 } } }, "property": { "type": "Identifier", - "start": 37276, - "end": 37284, + "start": 37216, + "end": 37224, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 17 }, "end": { - "line": 1085, + "line": 1084, "column": 25 }, "identifierName": "_configs" @@ -29995,15 +29925,15 @@ }, "property": { "type": "Identifier", - "start": 37285, - "end": 37293, + "start": 37225, + "end": 37233, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 26 }, "end": { - "line": 1085, + "line": 1084, "column": 34 }, "identifierName": "planView" @@ -30014,115 +29944,115 @@ }, "consequent": { "type": "BlockStatement", - "start": 37295, - "end": 37423, + "start": 37235, + "end": 37363, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 36 }, "end": { - "line": 1088, + "line": 1087, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 37309, - "end": 37355, + "start": 37249, + "end": 37295, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 12 }, "end": { - "line": 1086, + "line": 1085, "column": 58 } }, "expression": { "type": "CallExpression", - "start": 37309, - "end": 37354, + "start": 37249, + "end": 37294, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 12 }, "end": { - "line": 1086, + "line": 1085, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 37309, - "end": 37352, + "start": 37249, + "end": 37292, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 12 }, "end": { - "line": 1086, + "line": 1085, "column": 55 } }, "object": { "type": "MemberExpression", - "start": 37309, - "end": 37342, + "start": 37249, + "end": 37282, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 12 }, "end": { - "line": 1086, + "line": 1085, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 37309, - "end": 37326, + "start": 37249, + "end": 37266, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 12 }, "end": { - "line": 1086, + "line": 1085, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 37309, - "end": 37313, + "start": 37249, + "end": 37253, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 12 }, "end": { - "line": 1086, + "line": 1085, "column": 16 } } }, "property": { "type": "Identifier", - "start": 37314, - "end": 37326, + "start": 37254, + "end": 37266, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 17 }, "end": { - "line": 1086, + "line": 1085, "column": 29 }, "identifierName": "_controllers" @@ -30133,15 +30063,15 @@ }, "property": { "type": "Identifier", - "start": 37327, - "end": 37342, + "start": 37267, + "end": 37282, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 30 }, "end": { - "line": 1086, + "line": 1085, "column": 45 }, "identifierName": "pivotController" @@ -30152,15 +30082,15 @@ }, "property": { "type": "Identifier", - "start": 37343, - "end": 37352, + "start": 37283, + "end": 37292, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 46 }, "end": { - "line": 1086, + "line": 1085, "column": 55 }, "identifierName": "hidePivot" @@ -30174,100 +30104,100 @@ }, { "type": "ExpressionStatement", - "start": 37368, - "end": 37413, + "start": 37308, + "end": 37353, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 12 }, "end": { - "line": 1087, + "line": 1086, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 37368, - "end": 37412, + "start": 37308, + "end": 37352, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 12 }, "end": { - "line": 1087, + "line": 1086, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 37368, - "end": 37410, + "start": 37308, + "end": 37350, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 12 }, "end": { - "line": 1087, + "line": 1086, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 37368, - "end": 37401, + "start": 37308, + "end": 37341, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 12 }, "end": { - "line": 1087, + "line": 1086, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 37368, - "end": 37385, + "start": 37308, + "end": 37325, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 12 }, "end": { - "line": 1087, + "line": 1086, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 37368, - "end": 37372, + "start": 37308, + "end": 37312, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 12 }, "end": { - "line": 1087, + "line": 1086, "column": 16 } } }, "property": { "type": "Identifier", - "start": 37373, - "end": 37385, + "start": 37313, + "end": 37325, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 17 }, "end": { - "line": 1087, + "line": 1086, "column": 29 }, "identifierName": "_controllers" @@ -30278,15 +30208,15 @@ }, "property": { "type": "Identifier", - "start": 37386, - "end": 37401, + "start": 37326, + "end": 37341, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 30 }, "end": { - "line": 1087, + "line": 1086, "column": 45 }, "identifierName": "pivotController" @@ -30297,15 +30227,15 @@ }, "property": { "type": "Identifier", - "start": 37402, - "end": 37410, + "start": 37342, + "end": 37350, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 46 }, "end": { - "line": 1087, + "line": 1086, "column": 54 }, "identifierName": "endPivot" @@ -30324,72 +30254,72 @@ }, { "type": "ExpressionStatement", - "start": 37432, - "end": 37501, + "start": 37372, + "end": 37441, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 8 }, "end": { - "line": 1089, + "line": 1088, "column": 77 } }, "expression": { "type": "CallExpression", - "start": 37432, - "end": 37500, + "start": 37372, + "end": 37440, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 8 }, "end": { - "line": 1089, + "line": 1088, "column": 76 } }, "callee": { "type": "MemberExpression", - "start": 37432, - "end": 37441, + "start": 37372, + "end": 37381, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 8 }, "end": { - "line": 1089, + "line": 1088, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 37432, - "end": 37436, + "start": 37372, + "end": 37376, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 8 }, "end": { - "line": 1089, + "line": 1088, "column": 12 } } }, "property": { "type": "Identifier", - "start": 37437, - "end": 37441, + "start": 37377, + "end": 37381, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 13 }, "end": { - "line": 1089, + "line": 1088, "column": 17 }, "identifierName": "warn" @@ -30401,15 +30331,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 37442, - "end": 37499, + "start": 37382, + "end": 37439, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 18 }, "end": { - "line": 1089, + "line": 1088, "column": 75 } }, @@ -30430,15 +30360,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 36798, - "end": 37147, + "start": 36738, + "end": 37087, "loc": { "start": { - "line": 1070, + "line": 1069, "column": 4 }, "end": { - "line": 1081, + "line": 1080, "column": 7 } } @@ -30448,15 +30378,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 37513, - "end": 37866, + "start": 37453, + "end": 37806, "loc": { "start": { - "line": 1092, + "line": 1091, "column": 4 }, "end": { - "line": 1103, + "line": 1102, "column": 7 } } @@ -30465,15 +30395,15 @@ }, { "type": "ClassMethod", - "start": 37871, - "end": 38010, + "start": 37811, + "end": 37950, "loc": { "start": { - "line": 1104, + "line": 1103, "column": 4 }, "end": { - "line": 1107, + "line": 1106, "column": 5 } }, @@ -30481,15 +30411,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 37875, - "end": 37883, + "start": 37815, + "end": 37823, "loc": { "start": { - "line": 1104, + "line": 1103, "column": 8 }, "end": { - "line": 1104, + "line": 1103, "column": 16 }, "identifierName": "planView" @@ -30504,87 +30434,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 37886, - "end": 38010, + "start": 37826, + "end": 37950, "loc": { "start": { - "line": 1104, + "line": 1103, "column": 19 }, "end": { - "line": 1107, + "line": 1106, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 37896, - "end": 37965, + "start": 37836, + "end": 37905, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 8 }, "end": { - "line": 1105, + "line": 1104, "column": 77 } }, "expression": { "type": "CallExpression", - "start": 37896, - "end": 37964, + "start": 37836, + "end": 37904, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 8 }, "end": { - "line": 1105, + "line": 1104, "column": 76 } }, "callee": { "type": "MemberExpression", - "start": 37896, - "end": 37905, + "start": 37836, + "end": 37845, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 8 }, "end": { - "line": 1105, + "line": 1104, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 37896, - "end": 37900, + "start": 37836, + "end": 37840, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 8 }, "end": { - "line": 1105, + "line": 1104, "column": 12 } } }, "property": { "type": "Identifier", - "start": 37901, - "end": 37905, + "start": 37841, + "end": 37845, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 13 }, "end": { - "line": 1105, + "line": 1104, "column": 17 }, "identifierName": "warn" @@ -30596,15 +30526,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 37906, - "end": 37963, + "start": 37846, + "end": 37903, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 18 }, "end": { - "line": 1105, + "line": 1104, "column": 75 } }, @@ -30619,72 +30549,72 @@ }, { "type": "ReturnStatement", - "start": 37974, - "end": 38004, + "start": 37914, + "end": 37944, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 8 }, "end": { - "line": 1106, + "line": 1105, "column": 38 } }, "argument": { "type": "MemberExpression", - "start": 37981, - "end": 38003, + "start": 37921, + "end": 37943, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 15 }, "end": { - "line": 1106, + "line": 1105, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 37981, - "end": 37994, + "start": 37921, + "end": 37934, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 15 }, "end": { - "line": 1106, + "line": 1105, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 37981, - "end": 37985, + "start": 37921, + "end": 37925, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 15 }, "end": { - "line": 1106, + "line": 1105, "column": 19 } } }, "property": { "type": "Identifier", - "start": 37986, - "end": 37994, + "start": 37926, + "end": 37934, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 20 }, "end": { - "line": 1106, + "line": 1105, "column": 28 }, "identifierName": "_configs" @@ -30695,15 +30625,15 @@ }, "property": { "type": "Identifier", - "start": 37995, - "end": 38003, + "start": 37935, + "end": 37943, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 29 }, "end": { - "line": 1106, + "line": 1105, "column": 37 }, "identifierName": "planView" @@ -30721,15 +30651,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 37513, - "end": 37866, + "start": 37453, + "end": 37806, "loc": { "start": { - "line": 1092, + "line": 1091, "column": 4 }, "end": { - "line": 1103, + "line": 1102, "column": 7 } } @@ -30739,15 +30669,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 38016, - "end": 38486, + "start": 37956, + "end": 38426, "loc": { "start": { - "line": 1109, + "line": 1108, "column": 4 }, "end": { - "line": 1120, + "line": 1119, "column": 7 } } @@ -30756,15 +30686,15 @@ }, { "type": "ClassMethod", - "start": 38491, - "end": 38855, + "start": 38431, + "end": 38795, "loc": { "start": { - "line": 1121, + "line": 1120, "column": 4 }, "end": { - "line": 1129, + "line": 1128, "column": 5 } }, @@ -30772,15 +30702,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 38495, - "end": 38506, + "start": 38435, + "end": 38446, "loc": { "start": { - "line": 1121, + "line": 1120, "column": 8 }, "end": { - "line": 1121, + "line": 1120, "column": 19 }, "identifierName": "firstPerson" @@ -30795,15 +30725,15 @@ "params": [ { "type": "Identifier", - "start": 38507, - "end": 38512, + "start": 38447, + "end": 38452, "loc": { "start": { - "line": 1121, + "line": 1120, "column": 20 }, "end": { - "line": 1121, + "line": 1120, "column": 25 }, "identifierName": "value" @@ -30813,87 +30743,87 @@ ], "body": { "type": "BlockStatement", - "start": 38514, - "end": 38855, + "start": 38454, + "end": 38795, "loc": { "start": { - "line": 1121, + "line": 1120, "column": 27 }, "end": { - "line": 1129, + "line": 1128, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 38524, - "end": 38596, + "start": 38464, + "end": 38536, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 8 }, "end": { - "line": 1122, + "line": 1121, "column": 80 } }, "expression": { "type": "CallExpression", - "start": 38524, - "end": 38595, + "start": 38464, + "end": 38535, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 8 }, "end": { - "line": 1122, + "line": 1121, "column": 79 } }, "callee": { "type": "MemberExpression", - "start": 38524, - "end": 38533, + "start": 38464, + "end": 38473, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 8 }, "end": { - "line": 1122, + "line": 1121, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 38524, - "end": 38528, + "start": 38464, + "end": 38468, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 8 }, "end": { - "line": 1122, + "line": 1121, "column": 12 } } }, "property": { "type": "Identifier", - "start": 38529, - "end": 38533, + "start": 38469, + "end": 38473, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 13 }, "end": { - "line": 1122, + "line": 1121, "column": 17 }, "identifierName": "warn" @@ -30905,15 +30835,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 38534, - "end": 38594, + "start": 38474, + "end": 38534, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 18 }, "end": { - "line": 1122, + "line": 1121, "column": 78 } }, @@ -30928,87 +30858,87 @@ }, { "type": "ExpressionStatement", - "start": 38605, - "end": 38641, + "start": 38545, + "end": 38581, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 8 }, "end": { - "line": 1123, + "line": 1122, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 38605, - "end": 38640, + "start": 38545, + "end": 38580, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 8 }, "end": { - "line": 1123, + "line": 1122, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 38605, - "end": 38630, + "start": 38545, + "end": 38570, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 8 }, "end": { - "line": 1123, + "line": 1122, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 38605, - "end": 38618, + "start": 38545, + "end": 38558, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 8 }, "end": { - "line": 1123, + "line": 1122, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 38605, - "end": 38609, + "start": 38545, + "end": 38549, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 8 }, "end": { - "line": 1123, + "line": 1122, "column": 12 } } }, "property": { "type": "Identifier", - "start": 38610, - "end": 38618, + "start": 38550, + "end": 38558, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 13 }, "end": { - "line": 1123, + "line": 1122, "column": 21 }, "identifierName": "_configs" @@ -31019,15 +30949,15 @@ }, "property": { "type": "Identifier", - "start": 38619, - "end": 38630, + "start": 38559, + "end": 38570, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 22 }, "end": { - "line": 1123, + "line": 1122, "column": 33 }, "identifierName": "firstPerson" @@ -31038,15 +30968,15 @@ }, "right": { "type": "UnaryExpression", - "start": 38633, - "end": 38640, + "start": 38573, + "end": 38580, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 36 }, "end": { - "line": 1123, + "line": 1122, "column": 43 } }, @@ -31054,15 +30984,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 38634, - "end": 38640, + "start": 38574, + "end": 38580, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 37 }, "end": { - "line": 1123, + "line": 1122, "column": 43 } }, @@ -31070,15 +31000,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 38635, - "end": 38640, + "start": 38575, + "end": 38580, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 38 }, "end": { - "line": 1123, + "line": 1122, "column": 43 }, "identifierName": "value" @@ -31097,87 +31027,87 @@ }, { "type": "ExpressionStatement", - "start": 38650, - "end": 38681, + "start": 38590, + "end": 38621, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 8 }, "end": { - "line": 1124, + "line": 1123, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 38650, - "end": 38680, + "start": 38590, + "end": 38620, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 8 }, "end": { - "line": 1124, + "line": 1123, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 38650, - "end": 38672, + "start": 38590, + "end": 38612, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 8 }, "end": { - "line": 1124, + "line": 1123, "column": 30 } }, "object": { "type": "MemberExpression", - "start": 38650, - "end": 38663, + "start": 38590, + "end": 38603, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 8 }, "end": { - "line": 1124, + "line": 1123, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 38650, - "end": 38654, + "start": 38590, + "end": 38594, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 8 }, "end": { - "line": 1124, + "line": 1123, "column": 12 } } }, "property": { "type": "Identifier", - "start": 38655, - "end": 38663, + "start": 38595, + "end": 38603, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 13 }, "end": { - "line": 1124, + "line": 1123, "column": 21 }, "identifierName": "_configs" @@ -31188,15 +31118,15 @@ }, "property": { "type": "Identifier", - "start": 38664, - "end": 38672, + "start": 38604, + "end": 38612, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 22 }, "end": { - "line": 1124, + "line": 1123, "column": 30 }, "identifierName": "planView" @@ -31207,15 +31137,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 38675, - "end": 38680, + "start": 38615, + "end": 38620, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 33 }, "end": { - "line": 1124, + "line": 1123, "column": 38 } }, @@ -31225,72 +31155,72 @@ }, { "type": "IfStatement", - "start": 38690, - "end": 38849, + "start": 38630, + "end": 38789, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 8 }, "end": { - "line": 1128, + "line": 1127, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 38694, - "end": 38719, + "start": 38634, + "end": 38659, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 12 }, "end": { - "line": 1125, + "line": 1124, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 38694, - "end": 38707, + "start": 38634, + "end": 38647, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 12 }, "end": { - "line": 1125, + "line": 1124, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 38694, - "end": 38698, + "start": 38634, + "end": 38638, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 12 }, "end": { - "line": 1125, + "line": 1124, "column": 16 } } }, "property": { "type": "Identifier", - "start": 38699, - "end": 38707, + "start": 38639, + "end": 38647, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 17 }, "end": { - "line": 1125, + "line": 1124, "column": 25 }, "identifierName": "_configs" @@ -31301,15 +31231,15 @@ }, "property": { "type": "Identifier", - "start": 38708, - "end": 38719, + "start": 38648, + "end": 38659, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 26 }, "end": { - "line": 1125, + "line": 1124, "column": 37 }, "identifierName": "firstPerson" @@ -31320,115 +31250,115 @@ }, "consequent": { "type": "BlockStatement", - "start": 38721, - "end": 38849, + "start": 38661, + "end": 38789, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 39 }, "end": { - "line": 1128, + "line": 1127, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 38735, - "end": 38781, + "start": 38675, + "end": 38721, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 12 }, "end": { - "line": 1126, + "line": 1125, "column": 58 } }, "expression": { "type": "CallExpression", - "start": 38735, - "end": 38780, + "start": 38675, + "end": 38720, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 12 }, "end": { - "line": 1126, + "line": 1125, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 38735, - "end": 38778, + "start": 38675, + "end": 38718, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 12 }, "end": { - "line": 1126, + "line": 1125, "column": 55 } }, "object": { "type": "MemberExpression", - "start": 38735, - "end": 38768, + "start": 38675, + "end": 38708, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 12 }, "end": { - "line": 1126, + "line": 1125, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 38735, - "end": 38752, + "start": 38675, + "end": 38692, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 12 }, "end": { - "line": 1126, + "line": 1125, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 38735, - "end": 38739, + "start": 38675, + "end": 38679, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 12 }, "end": { - "line": 1126, + "line": 1125, "column": 16 } } }, "property": { "type": "Identifier", - "start": 38740, - "end": 38752, + "start": 38680, + "end": 38692, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 17 }, "end": { - "line": 1126, + "line": 1125, "column": 29 }, "identifierName": "_controllers" @@ -31439,15 +31369,15 @@ }, "property": { "type": "Identifier", - "start": 38753, - "end": 38768, + "start": 38693, + "end": 38708, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 30 }, "end": { - "line": 1126, + "line": 1125, "column": 45 }, "identifierName": "pivotController" @@ -31458,15 +31388,15 @@ }, "property": { "type": "Identifier", - "start": 38769, - "end": 38778, + "start": 38709, + "end": 38718, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 46 }, "end": { - "line": 1126, + "line": 1125, "column": 55 }, "identifierName": "hidePivot" @@ -31480,100 +31410,100 @@ }, { "type": "ExpressionStatement", - "start": 38794, - "end": 38839, + "start": 38734, + "end": 38779, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 12 }, "end": { - "line": 1127, + "line": 1126, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 38794, - "end": 38838, + "start": 38734, + "end": 38778, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 12 }, "end": { - "line": 1127, + "line": 1126, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 38794, - "end": 38836, + "start": 38734, + "end": 38776, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 12 }, "end": { - "line": 1127, + "line": 1126, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 38794, - "end": 38827, + "start": 38734, + "end": 38767, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 12 }, "end": { - "line": 1127, + "line": 1126, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 38794, - "end": 38811, + "start": 38734, + "end": 38751, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 12 }, "end": { - "line": 1127, + "line": 1126, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 38794, - "end": 38798, + "start": 38734, + "end": 38738, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 12 }, "end": { - "line": 1127, + "line": 1126, "column": 16 } } }, "property": { "type": "Identifier", - "start": 38799, - "end": 38811, + "start": 38739, + "end": 38751, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 17 }, "end": { - "line": 1127, + "line": 1126, "column": 29 }, "identifierName": "_controllers" @@ -31584,15 +31514,15 @@ }, "property": { "type": "Identifier", - "start": 38812, - "end": 38827, + "start": 38752, + "end": 38767, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 30 }, "end": { - "line": 1127, + "line": 1126, "column": 45 }, "identifierName": "pivotController" @@ -31603,15 +31533,15 @@ }, "property": { "type": "Identifier", - "start": 38828, - "end": 38836, + "start": 38768, + "end": 38776, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 46 }, "end": { - "line": 1127, + "line": 1126, "column": 54 }, "identifierName": "endPivot" @@ -31636,15 +31566,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 38016, - "end": 38486, + "start": 37956, + "end": 38426, "loc": { "start": { - "line": 1109, + "line": 1108, "column": 4 }, "end": { - "line": 1120, + "line": 1119, "column": 7 } } @@ -31654,15 +31584,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 38861, - "end": 39335, + "start": 38801, + "end": 39275, "loc": { "start": { - "line": 1131, + "line": 1130, "column": 4 }, "end": { - "line": 1142, + "line": 1141, "column": 7 } } @@ -31671,15 +31601,15 @@ }, { "type": "ClassMethod", - "start": 39340, - "end": 39488, + "start": 39280, + "end": 39428, "loc": { "start": { - "line": 1143, + "line": 1142, "column": 4 }, "end": { - "line": 1146, + "line": 1145, "column": 5 } }, @@ -31687,15 +31617,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 39344, - "end": 39355, + "start": 39284, + "end": 39295, "loc": { "start": { - "line": 1143, + "line": 1142, "column": 8 }, "end": { - "line": 1143, + "line": 1142, "column": 19 }, "identifierName": "firstPerson" @@ -31710,87 +31640,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 39358, - "end": 39488, + "start": 39298, + "end": 39428, "loc": { "start": { - "line": 1143, + "line": 1142, "column": 22 }, "end": { - "line": 1146, + "line": 1145, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 39368, - "end": 39440, + "start": 39308, + "end": 39380, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 8 }, "end": { - "line": 1144, + "line": 1143, "column": 80 } }, "expression": { "type": "CallExpression", - "start": 39368, - "end": 39439, + "start": 39308, + "end": 39379, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 8 }, "end": { - "line": 1144, + "line": 1143, "column": 79 } }, "callee": { "type": "MemberExpression", - "start": 39368, - "end": 39377, + "start": 39308, + "end": 39317, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 8 }, "end": { - "line": 1144, + "line": 1143, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 39368, - "end": 39372, + "start": 39308, + "end": 39312, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 8 }, "end": { - "line": 1144, + "line": 1143, "column": 12 } } }, "property": { "type": "Identifier", - "start": 39373, - "end": 39377, + "start": 39313, + "end": 39317, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 13 }, "end": { - "line": 1144, + "line": 1143, "column": 17 }, "identifierName": "warn" @@ -31802,15 +31732,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 39378, - "end": 39438, + "start": 39318, + "end": 39378, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 18 }, "end": { - "line": 1144, + "line": 1143, "column": 78 } }, @@ -31825,72 +31755,72 @@ }, { "type": "ReturnStatement", - "start": 39449, - "end": 39482, + "start": 39389, + "end": 39422, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 8 }, "end": { - "line": 1145, + "line": 1144, "column": 41 } }, "argument": { "type": "MemberExpression", - "start": 39456, - "end": 39481, + "start": 39396, + "end": 39421, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 15 }, "end": { - "line": 1145, + "line": 1144, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 39456, - "end": 39469, + "start": 39396, + "end": 39409, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 15 }, "end": { - "line": 1145, + "line": 1144, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 39456, - "end": 39460, + "start": 39396, + "end": 39400, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 15 }, "end": { - "line": 1145, + "line": 1144, "column": 19 } } }, "property": { "type": "Identifier", - "start": 39461, - "end": 39469, + "start": 39401, + "end": 39409, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 20 }, "end": { - "line": 1145, + "line": 1144, "column": 28 }, "identifierName": "_configs" @@ -31901,15 +31831,15 @@ }, "property": { "type": "Identifier", - "start": 39470, - "end": 39481, + "start": 39410, + "end": 39421, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 29 }, "end": { - "line": 1145, + "line": 1144, "column": 40 }, "identifierName": "firstPerson" @@ -31927,15 +31857,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 38861, - "end": 39335, + "start": 38801, + "end": 39275, "loc": { "start": { - "line": 1131, + "line": 1130, "column": 4 }, "end": { - "line": 1142, + "line": 1141, "column": 7 } } @@ -31945,15 +31875,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 39494, - "end": 39930, + "start": 39434, + "end": 39870, "loc": { "start": { - "line": 1148, + "line": 1147, "column": 4 }, "end": { - "line": 1158, + "line": 1157, "column": 7 } } @@ -31962,15 +31892,15 @@ }, { "type": "ClassMethod", - "start": 39935, - "end": 40022, + "start": 39875, + "end": 39962, "loc": { "start": { - "line": 1159, + "line": 1158, "column": 4 }, "end": { - "line": 1161, + "line": 1160, "column": 5 } }, @@ -31978,15 +31908,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 39939, - "end": 39956, + "start": 39879, + "end": 39896, "loc": { "start": { - "line": 1159, + "line": 1158, "column": 8 }, "end": { - "line": 1159, + "line": 1158, "column": 25 }, "identifierName": "constrainVertical" @@ -32001,15 +31931,15 @@ "params": [ { "type": "Identifier", - "start": 39957, - "end": 39962, + "start": 39897, + "end": 39902, "loc": { "start": { - "line": 1159, + "line": 1158, "column": 26 }, "end": { - "line": 1159, + "line": 1158, "column": 31 }, "identifierName": "value" @@ -32019,102 +31949,102 @@ ], "body": { "type": "BlockStatement", - "start": 39964, - "end": 40022, + "start": 39904, + "end": 39962, "loc": { "start": { - "line": 1159, + "line": 1158, "column": 33 }, "end": { - "line": 1161, + "line": 1160, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 39974, - "end": 40016, + "start": 39914, + "end": 39956, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 8 }, "end": { - "line": 1160, + "line": 1159, "column": 50 } }, "expression": { "type": "AssignmentExpression", - "start": 39974, - "end": 40015, + "start": 39914, + "end": 39955, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 8 }, "end": { - "line": 1160, + "line": 1159, "column": 49 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 39974, - "end": 40005, + "start": 39914, + "end": 39945, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 8 }, "end": { - "line": 1160, + "line": 1159, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 39974, - "end": 39987, + "start": 39914, + "end": 39927, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 8 }, "end": { - "line": 1160, + "line": 1159, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 39974, - "end": 39978, + "start": 39914, + "end": 39918, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 8 }, "end": { - "line": 1160, + "line": 1159, "column": 12 } } }, "property": { "type": "Identifier", - "start": 39979, - "end": 39987, + "start": 39919, + "end": 39927, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 13 }, "end": { - "line": 1160, + "line": 1159, "column": 21 }, "identifierName": "_configs" @@ -32125,15 +32055,15 @@ }, "property": { "type": "Identifier", - "start": 39988, - "end": 40005, + "start": 39928, + "end": 39945, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 22 }, "end": { - "line": 1160, + "line": 1159, "column": 39 }, "identifierName": "constrainVertical" @@ -32144,15 +32074,15 @@ }, "right": { "type": "UnaryExpression", - "start": 40008, - "end": 40015, + "start": 39948, + "end": 39955, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 42 }, "end": { - "line": 1160, + "line": 1159, "column": 49 } }, @@ -32160,15 +32090,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 40009, - "end": 40015, + "start": 39949, + "end": 39955, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 43 }, "end": { - "line": 1160, + "line": 1159, "column": 49 } }, @@ -32176,15 +32106,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 40010, - "end": 40015, + "start": 39950, + "end": 39955, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 44 }, "end": { - "line": 1160, + "line": 1159, "column": 49 }, "identifierName": "value" @@ -32209,15 +32139,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 39494, - "end": 39930, + "start": 39434, + "end": 39870, "loc": { "start": { - "line": 1148, + "line": 1147, "column": 4 }, "end": { - "line": 1158, + "line": 1157, "column": 7 } } @@ -32227,15 +32157,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40028, - "end": 40459, + "start": 39968, + "end": 40399, "loc": { "start": { - "line": 1163, + "line": 1162, "column": 4 }, "end": { - "line": 1173, + "line": 1172, "column": 7 } } @@ -32244,15 +32174,15 @@ }, { "type": "ClassMethod", - "start": 40464, - "end": 40543, + "start": 40404, + "end": 40483, "loc": { "start": { - "line": 1174, + "line": 1173, "column": 4 }, "end": { - "line": 1176, + "line": 1175, "column": 5 } }, @@ -32260,15 +32190,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 40468, - "end": 40485, + "start": 40408, + "end": 40425, "loc": { "start": { - "line": 1174, + "line": 1173, "column": 8 }, "end": { - "line": 1174, + "line": 1173, "column": 25 }, "identifierName": "constrainVertical" @@ -32283,87 +32213,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 40488, - "end": 40543, + "start": 40428, + "end": 40483, "loc": { "start": { - "line": 1174, + "line": 1173, "column": 28 }, "end": { - "line": 1176, + "line": 1175, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 40498, - "end": 40537, + "start": 40438, + "end": 40477, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 8 }, "end": { - "line": 1175, + "line": 1174, "column": 47 } }, "argument": { "type": "MemberExpression", - "start": 40505, - "end": 40536, + "start": 40445, + "end": 40476, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 15 }, "end": { - "line": 1175, + "line": 1174, "column": 46 } }, "object": { "type": "MemberExpression", - "start": 40505, - "end": 40518, + "start": 40445, + "end": 40458, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 15 }, "end": { - "line": 1175, + "line": 1174, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 40505, - "end": 40509, + "start": 40445, + "end": 40449, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 15 }, "end": { - "line": 1175, + "line": 1174, "column": 19 } } }, "property": { "type": "Identifier", - "start": 40510, - "end": 40518, + "start": 40450, + "end": 40458, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 20 }, "end": { - "line": 1175, + "line": 1174, "column": 28 }, "identifierName": "_configs" @@ -32374,15 +32304,15 @@ }, "property": { "type": "Identifier", - "start": 40519, - "end": 40536, + "start": 40459, + "end": 40476, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 29 }, "end": { - "line": 1175, + "line": 1174, "column": 46 }, "identifierName": "constrainVertical" @@ -32400,15 +32330,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40028, - "end": 40459, + "start": 39968, + "end": 40399, "loc": { "start": { - "line": 1163, + "line": 1162, "column": 4 }, "end": { - "line": 1173, + "line": 1172, "column": 7 } } @@ -32418,15 +32348,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40549, - "end": 40792, + "start": 40489, + "end": 40732, "loc": { "start": { - "line": 1178, + "line": 1177, "column": 4 }, "end": { - "line": 1184, + "line": 1183, "column": 7 } } @@ -32435,15 +32365,15 @@ }, { "type": "ClassMethod", - "start": 40797, - "end": 40888, + "start": 40737, + "end": 40828, "loc": { "start": { - "line": 1185, + "line": 1184, "column": 4 }, "end": { - "line": 1187, + "line": 1186, "column": 5 } }, @@ -32451,15 +32381,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 40801, - "end": 40816, + "start": 40741, + "end": 40756, "loc": { "start": { - "line": 1185, + "line": 1184, "column": 8 }, "end": { - "line": 1185, + "line": 1184, "column": 23 }, "identifierName": "doublePickFlyTo" @@ -32474,15 +32404,15 @@ "params": [ { "type": "Identifier", - "start": 40817, - "end": 40822, + "start": 40757, + "end": 40762, "loc": { "start": { - "line": 1185, + "line": 1184, "column": 24 }, "end": { - "line": 1185, + "line": 1184, "column": 29 }, "identifierName": "value" @@ -32492,102 +32422,102 @@ ], "body": { "type": "BlockStatement", - "start": 40824, - "end": 40888, + "start": 40764, + "end": 40828, "loc": { "start": { - "line": 1185, + "line": 1184, "column": 31 }, "end": { - "line": 1187, + "line": 1186, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 40834, - "end": 40882, + "start": 40774, + "end": 40822, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 8 }, "end": { - "line": 1186, + "line": 1185, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 40834, - "end": 40881, + "start": 40774, + "end": 40821, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 8 }, "end": { - "line": 1186, + "line": 1185, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 40834, - "end": 40863, + "start": 40774, + "end": 40803, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 8 }, "end": { - "line": 1186, + "line": 1185, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 40834, - "end": 40847, + "start": 40774, + "end": 40787, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 8 }, "end": { - "line": 1186, + "line": 1185, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 40834, - "end": 40838, + "start": 40774, + "end": 40778, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 8 }, "end": { - "line": 1186, + "line": 1185, "column": 12 } } }, "property": { "type": "Identifier", - "start": 40839, - "end": 40847, + "start": 40779, + "end": 40787, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 13 }, "end": { - "line": 1186, + "line": 1185, "column": 21 }, "identifierName": "_configs" @@ -32598,15 +32528,15 @@ }, "property": { "type": "Identifier", - "start": 40848, - "end": 40863, + "start": 40788, + "end": 40803, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 22 }, "end": { - "line": 1186, + "line": 1185, "column": 37 }, "identifierName": "doublePickFlyTo" @@ -32617,29 +32547,29 @@ }, "right": { "type": "BinaryExpression", - "start": 40866, - "end": 40881, + "start": 40806, + "end": 40821, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 40 }, "end": { - "line": 1186, + "line": 1185, "column": 55 } }, "left": { "type": "Identifier", - "start": 40866, - "end": 40871, + "start": 40806, + "end": 40811, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 40 }, "end": { - "line": 1186, + "line": 1185, "column": 45 }, "identifierName": "value" @@ -32649,15 +32579,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 40876, - "end": 40881, + "start": 40816, + "end": 40821, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 50 }, "end": { - "line": 1186, + "line": 1185, "column": 55 } }, @@ -32674,15 +32604,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40549, - "end": 40792, + "start": 40489, + "end": 40732, "loc": { "start": { - "line": 1178, + "line": 1177, "column": 4 }, "end": { - "line": 1184, + "line": 1183, "column": 7 } } @@ -32692,15 +32622,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40894, - "end": 41143, + "start": 40834, + "end": 41083, "loc": { "start": { - "line": 1189, + "line": 1188, "column": 4 }, "end": { - "line": 1195, + "line": 1194, "column": 7 } } @@ -32709,15 +32639,15 @@ }, { "type": "ClassMethod", - "start": 41148, - "end": 41223, + "start": 41088, + "end": 41163, "loc": { "start": { - "line": 1196, + "line": 1195, "column": 4 }, "end": { - "line": 1198, + "line": 1197, "column": 5 } }, @@ -32725,15 +32655,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 41152, - "end": 41167, + "start": 41092, + "end": 41107, "loc": { "start": { - "line": 1196, + "line": 1195, "column": 8 }, "end": { - "line": 1196, + "line": 1195, "column": 23 }, "identifierName": "doublePickFlyTo" @@ -32748,87 +32678,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 41170, - "end": 41223, + "start": 41110, + "end": 41163, "loc": { "start": { - "line": 1196, + "line": 1195, "column": 26 }, "end": { - "line": 1198, + "line": 1197, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 41180, - "end": 41217, + "start": 41120, + "end": 41157, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 8 }, "end": { - "line": 1197, + "line": 1196, "column": 45 } }, "argument": { "type": "MemberExpression", - "start": 41187, - "end": 41216, + "start": 41127, + "end": 41156, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 15 }, "end": { - "line": 1197, + "line": 1196, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 41187, - "end": 41200, + "start": 41127, + "end": 41140, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 15 }, "end": { - "line": 1197, + "line": 1196, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 41187, - "end": 41191, + "start": 41127, + "end": 41131, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 15 }, "end": { - "line": 1197, + "line": 1196, "column": 19 } } }, "property": { "type": "Identifier", - "start": 41192, - "end": 41200, + "start": 41132, + "end": 41140, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 20 }, "end": { - "line": 1197, + "line": 1196, "column": 28 }, "identifierName": "_configs" @@ -32839,15 +32769,15 @@ }, "property": { "type": "Identifier", - "start": 41201, - "end": 41216, + "start": 41141, + "end": 41156, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 29 }, "end": { - "line": 1197, + "line": 1196, "column": 44 }, "identifierName": "doublePickFlyTo" @@ -32865,15 +32795,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40894, - "end": 41143, + "start": 40834, + "end": 41083, "loc": { "start": { - "line": 1189, + "line": 1188, "column": 4 }, "end": { - "line": 1195, + "line": 1194, "column": 7 } } @@ -32883,15 +32813,289 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 41229, - "end": 41466, + "start": 41169, + "end": 41406, "loc": { "start": { - "line": 1200, + "line": 1199, "column": 4 }, + "end": { + "line": 1205, + "column": 7 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 41411, + "end": 41498, + "loc": { + "start": { + "line": 1206, + "column": 4 + }, + "end": { + "line": 1208, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 41415, + "end": 41428, + "loc": { + "start": { + "line": 1206, + "column": 8 + }, + "end": { + "line": 1206, + "column": 21 + }, + "identifierName": "panRightClick" + }, + "name": "panRightClick" + }, + "kind": "set", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 41429, + "end": 41434, + "loc": { + "start": { + "line": 1206, + "column": 22 + }, "end": { "line": 1206, + "column": 27 + }, + "identifierName": "value" + }, + "name": "value" + } + ], + "body": { + "type": "BlockStatement", + "start": 41436, + "end": 41498, + "loc": { + "start": { + "line": 1206, + "column": 29 + }, + "end": { + "line": 1208, + "column": 5 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 41446, + "end": 41492, + "loc": { + "start": { + "line": 1207, + "column": 8 + }, + "end": { + "line": 1207, + "column": 54 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 41446, + "end": 41491, + "loc": { + "start": { + "line": 1207, + "column": 8 + }, + "end": { + "line": 1207, + "column": 53 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 41446, + "end": 41473, + "loc": { + "start": { + "line": 1207, + "column": 8 + }, + "end": { + "line": 1207, + "column": 35 + } + }, + "object": { + "type": "MemberExpression", + "start": 41446, + "end": 41459, + "loc": { + "start": { + "line": 1207, + "column": 8 + }, + "end": { + "line": 1207, + "column": 21 + } + }, + "object": { + "type": "ThisExpression", + "start": 41446, + "end": 41450, + "loc": { + "start": { + "line": 1207, + "column": 8 + }, + "end": { + "line": 1207, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 41451, + "end": 41459, + "loc": { + "start": { + "line": 1207, + "column": 13 + }, + "end": { + "line": 1207, + "column": 21 + }, + "identifierName": "_configs" + }, + "name": "_configs" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 41460, + "end": 41473, + "loc": { + "start": { + "line": 1207, + "column": 22 + }, + "end": { + "line": 1207, + "column": 35 + }, + "identifierName": "panRightClick" + }, + "name": "panRightClick" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 41476, + "end": 41491, + "loc": { + "start": { + "line": 1207, + "column": 38 + }, + "end": { + "line": 1207, + "column": 53 + } + }, + "left": { + "type": "Identifier", + "start": 41476, + "end": 41481, + "loc": { + "start": { + "line": 1207, + "column": 38 + }, + "end": { + "line": 1207, + "column": 43 + }, + "identifierName": "value" + }, + "name": "value" + }, + "operator": "!==", + "right": { + "type": "BooleanLiteral", + "start": 41486, + "end": 41491, + "loc": { + "start": { + "line": 1207, + "column": 48 + }, + "end": { + "line": 1207, + "column": 53 + } + }, + "value": false + } + } + } + } + ], + "directives": [], + "trailingComments": null + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\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 ", + "start": 41169, + "end": 41406, + "loc": { + "start": { + "line": 1199, + "column": 4 + }, + "end": { + "line": 1205, + "column": 7 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\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 ", + "start": 41504, + "end": 41706, + "loc": { + "start": { + "line": 1210, + "column": 4 + }, + "end": { + "line": 1216, "column": 7 } } @@ -32900,15 +33104,15 @@ }, { "type": "ClassMethod", - "start": 41471, - "end": 41558, + "start": 41711, + "end": 41782, "loc": { "start": { - "line": 1207, + "line": 1217, "column": 4 }, "end": { - "line": 1209, + "line": 1219, "column": 5 } }, @@ -32916,289 +33120,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 41475, - "end": 41488, + "start": 41715, + "end": 41728, "loc": { "start": { - "line": 1207, + "line": 1217, "column": 8 }, "end": { - "line": 1207, - "column": 21 - }, - "identifierName": "panRightClick" - }, - "name": "panRightClick" - }, - "kind": "set", - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [ - { - "type": "Identifier", - "start": 41489, - "end": 41494, - "loc": { - "start": { - "line": 1207, - "column": 22 - }, - "end": { - "line": 1207, - "column": 27 - }, - "identifierName": "value" - }, - "name": "value" - } - ], - "body": { - "type": "BlockStatement", - "start": 41496, - "end": 41558, - "loc": { - "start": { - "line": 1207, - "column": 29 - }, - "end": { - "line": 1209, - "column": 5 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 41506, - "end": 41552, - "loc": { - "start": { - "line": 1208, - "column": 8 - }, - "end": { - "line": 1208, - "column": 54 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 41506, - "end": 41551, - "loc": { - "start": { - "line": 1208, - "column": 8 - }, - "end": { - "line": 1208, - "column": 53 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 41506, - "end": 41533, - "loc": { - "start": { - "line": 1208, - "column": 8 - }, - "end": { - "line": 1208, - "column": 35 - } - }, - "object": { - "type": "MemberExpression", - "start": 41506, - "end": 41519, - "loc": { - "start": { - "line": 1208, - "column": 8 - }, - "end": { - "line": 1208, - "column": 21 - } - }, - "object": { - "type": "ThisExpression", - "start": 41506, - "end": 41510, - "loc": { - "start": { - "line": 1208, - "column": 8 - }, - "end": { - "line": 1208, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 41511, - "end": 41519, - "loc": { - "start": { - "line": 1208, - "column": 13 - }, - "end": { - "line": 1208, - "column": 21 - }, - "identifierName": "_configs" - }, - "name": "_configs" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 41520, - "end": 41533, - "loc": { - "start": { - "line": 1208, - "column": 22 - }, - "end": { - "line": 1208, - "column": 35 - }, - "identifierName": "panRightClick" - }, - "name": "panRightClick" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 41536, - "end": 41551, - "loc": { - "start": { - "line": 1208, - "column": 38 - }, - "end": { - "line": 1208, - "column": 53 - } - }, - "left": { - "type": "Identifier", - "start": 41536, - "end": 41541, - "loc": { - "start": { - "line": 1208, - "column": 38 - }, - "end": { - "line": 1208, - "column": 43 - }, - "identifierName": "value" - }, - "name": "value" - }, - "operator": "!==", - "right": { - "type": "BooleanLiteral", - "start": 41546, - "end": 41551, - "loc": { - "start": { - "line": 1208, - "column": 48 - }, - "end": { - "line": 1208, - "column": 53 - } - }, - "value": false - } - } - } - } - ], - "directives": [], - "trailingComments": null - }, - "leadingComments": [ - { - "type": "CommentBlock", - "value": "*\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 ", - "start": 41229, - "end": 41466, - "loc": { - "start": { - "line": 1200, - "column": 4 - }, - "end": { - "line": 1206, - "column": 7 - } - } - } - ], - "trailingComments": [ - { - "type": "CommentBlock", - "value": "*\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 ", - "start": 41564, - "end": 41766, - "loc": { - "start": { - "line": 1211, - "column": 4 - }, - "end": { - "line": 1217, - "column": 7 - } - } - } - ] - }, - { - "type": "ClassMethod", - "start": 41771, - "end": 41842, - "loc": { - "start": { - "line": 1218, - "column": 4 - }, - "end": { - "line": 1220, - "column": 5 - } - }, - "static": false, - "computed": false, - "key": { - "type": "Identifier", - "start": 41775, - "end": 41788, - "loc": { - "start": { - "line": 1218, - "column": 8 - }, - "end": { - "line": 1218, + "line": 1217, "column": 21 }, "identifierName": "panRightClick" @@ -33213,87 +33143,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 41791, - "end": 41842, + "start": 41731, + "end": 41782, "loc": { "start": { - "line": 1218, + "line": 1217, "column": 24 }, "end": { - "line": 1220, + "line": 1219, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 41801, - "end": 41836, + "start": 41741, + "end": 41776, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 8 }, "end": { - "line": 1219, + "line": 1218, "column": 43 } }, "argument": { "type": "MemberExpression", - "start": 41808, - "end": 41835, + "start": 41748, + "end": 41775, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 15 }, "end": { - "line": 1219, + "line": 1218, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 41808, - "end": 41821, + "start": 41748, + "end": 41761, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 15 }, "end": { - "line": 1219, + "line": 1218, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 41808, - "end": 41812, + "start": 41748, + "end": 41752, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 15 }, "end": { - "line": 1219, + "line": 1218, "column": 19 } } }, "property": { "type": "Identifier", - "start": 41813, - "end": 41821, + "start": 41753, + "end": 41761, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 20 }, "end": { - "line": 1219, + "line": 1218, "column": 28 }, "identifierName": "_configs" @@ -33304,15 +33234,15 @@ }, "property": { "type": "Identifier", - "start": 41822, - "end": 41835, + "start": 41762, + "end": 41775, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 29 }, "end": { - "line": 1219, + "line": 1218, "column": 42 }, "identifierName": "panRightClick" @@ -33330,15 +33260,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 41564, - "end": 41766, + "start": 41504, + "end": 41706, "loc": { "start": { - "line": 1211, + "line": 1210, "column": 4 }, "end": { - "line": 1217, + "line": 1216, "column": 7 } } @@ -33348,15 +33278,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 41848, - "end": 42678, + "start": 41788, + "end": 42618, "loc": { "start": { - "line": 1222, + "line": 1221, "column": 4 }, "end": { - "line": 1237, + "line": 1236, "column": 7 } } @@ -33365,15 +33295,15 @@ }, { "type": "ClassMethod", - "start": 42683, - "end": 42852, + "start": 42623, + "end": 42792, "loc": { "start": { - "line": 1238, + "line": 1237, "column": 4 }, "end": { - "line": 1240, + "line": 1239, "column": 5 } }, @@ -33381,15 +33311,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 42687, - "end": 42702, + "start": 42627, + "end": 42642, "loc": { "start": { - "line": 1238, + "line": 1237, "column": 8 }, "end": { - "line": 1238, + "line": 1237, "column": 23 }, "identifierName": "rotationInertia" @@ -33404,15 +33334,15 @@ "params": [ { "type": "Identifier", - "start": 42703, - "end": 42718, + "start": 42643, + "end": 42658, "loc": { "start": { - "line": 1238, + "line": 1237, "column": 24 }, "end": { - "line": 1238, + "line": 1237, "column": 39 }, "identifierName": "rotationInertia" @@ -33422,102 +33352,102 @@ ], "body": { "type": "BlockStatement", - "start": 42720, - "end": 42852, + "start": 42660, + "end": 42792, "loc": { "start": { - "line": 1238, + "line": 1237, "column": 41 }, "end": { - "line": 1240, + "line": 1239, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 42730, - "end": 42846, + "start": 42670, + "end": 42786, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 8 }, "end": { - "line": 1239, + "line": 1238, "column": 124 } }, "expression": { "type": "AssignmentExpression", - "start": 42730, - "end": 42845, + "start": 42670, + "end": 42785, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 8 }, "end": { - "line": 1239, + "line": 1238, "column": 123 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 42730, - "end": 42759, + "start": 42670, + "end": 42699, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 8 }, "end": { - "line": 1239, + "line": 1238, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 42730, - "end": 42743, + "start": 42670, + "end": 42683, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 8 }, "end": { - "line": 1239, + "line": 1238, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 42730, - "end": 42734, + "start": 42670, + "end": 42674, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 8 }, "end": { - "line": 1239, + "line": 1238, "column": 12 } } }, "property": { "type": "Identifier", - "start": 42735, - "end": 42743, + "start": 42675, + "end": 42683, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 13 }, "end": { - "line": 1239, + "line": 1238, "column": 21 }, "identifierName": "_configs" @@ -33528,15 +33458,15 @@ }, "property": { "type": "Identifier", - "start": 42744, - "end": 42759, + "start": 42684, + "end": 42699, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 22 }, "end": { - "line": 1239, + "line": 1238, "column": 37 }, "identifierName": "rotationInertia" @@ -33547,57 +33477,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 42762, - "end": 42845, + "start": 42702, + "end": 42785, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 40 }, "end": { - "line": 1239, + "line": 1238, "column": 123 } }, "test": { "type": "LogicalExpression", - "start": 42763, - "end": 42820, + "start": 42703, + "end": 42760, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 41 }, "end": { - "line": 1239, + "line": 1238, "column": 98 } }, "left": { "type": "BinaryExpression", - "start": 42763, - "end": 42792, + "start": 42703, + "end": 42732, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 41 }, "end": { - "line": 1239, + "line": 1238, "column": 70 } }, "left": { "type": "Identifier", - "start": 42763, - "end": 42778, + "start": 42703, + "end": 42718, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 41 }, "end": { - "line": 1239, + "line": 1238, "column": 56 }, "identifierName": "rotationInertia" @@ -33607,15 +33537,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 42783, - "end": 42792, + "start": 42723, + "end": 42732, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 61 }, "end": { - "line": 1239, + "line": 1238, "column": 70 }, "identifierName": "undefined" @@ -33626,29 +33556,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 42796, - "end": 42820, + "start": 42736, + "end": 42760, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 74 }, "end": { - "line": 1239, + "line": 1238, "column": 98 } }, "left": { "type": "Identifier", - "start": 42796, - "end": 42811, + "start": 42736, + "end": 42751, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 74 }, "end": { - "line": 1239, + "line": 1238, "column": 89 }, "identifierName": "rotationInertia" @@ -33658,15 +33588,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 42816, - "end": 42820, + "start": 42756, + "end": 42760, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 94 }, "end": { - "line": 1239, + "line": 1238, "column": 98 } } @@ -33674,20 +33604,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 42762 + "parenStart": 42702 } }, "consequent": { "type": "Identifier", - "start": 42824, - "end": 42839, + "start": 42764, + "end": 42779, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 102 }, "end": { - "line": 1239, + "line": 1238, "column": 117 }, "identifierName": "rotationInertia" @@ -33696,15 +33626,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 42842, - "end": 42845, + "start": 42782, + "end": 42785, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 120 }, "end": { - "line": 1239, + "line": 1238, "column": 123 } }, @@ -33725,15 +33655,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 41848, - "end": 42678, + "start": 41788, + "end": 42618, "loc": { "start": { - "line": 1222, + "line": 1221, "column": 4 }, "end": { - "line": 1237, + "line": 1236, "column": 7 } } @@ -33743,15 +33673,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 42858, - "end": 43113, + "start": 42798, + "end": 43053, "loc": { "start": { - "line": 1242, + "line": 1241, "column": 4 }, "end": { - "line": 1250, + "line": 1249, "column": 7 } } @@ -33760,15 +33690,15 @@ }, { "type": "ClassMethod", - "start": 43118, - "end": 43193, + "start": 43058, + "end": 43133, "loc": { "start": { - "line": 1251, + "line": 1250, "column": 4 }, "end": { - "line": 1253, + "line": 1252, "column": 5 } }, @@ -33776,15 +33706,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 43122, - "end": 43137, + "start": 43062, + "end": 43077, "loc": { "start": { - "line": 1251, + "line": 1250, "column": 8 }, "end": { - "line": 1251, + "line": 1250, "column": 23 }, "identifierName": "rotationInertia" @@ -33799,87 +33729,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 43140, - "end": 43193, + "start": 43080, + "end": 43133, "loc": { "start": { - "line": 1251, + "line": 1250, "column": 26 }, "end": { - "line": 1253, + "line": 1252, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 43150, - "end": 43187, + "start": 43090, + "end": 43127, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 8 }, "end": { - "line": 1252, + "line": 1251, "column": 45 } }, "argument": { "type": "MemberExpression", - "start": 43157, - "end": 43186, + "start": 43097, + "end": 43126, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 15 }, "end": { - "line": 1252, + "line": 1251, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 43157, - "end": 43170, + "start": 43097, + "end": 43110, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 15 }, "end": { - "line": 1252, + "line": 1251, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 43157, - "end": 43161, + "start": 43097, + "end": 43101, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 15 }, "end": { - "line": 1252, + "line": 1251, "column": 19 } } }, "property": { "type": "Identifier", - "start": 43162, - "end": 43170, + "start": 43102, + "end": 43110, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 20 }, "end": { - "line": 1252, + "line": 1251, "column": 28 }, "identifierName": "_configs" @@ -33890,15 +33820,15 @@ }, "property": { "type": "Identifier", - "start": 43171, - "end": 43186, + "start": 43111, + "end": 43126, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 29 }, "end": { - "line": 1252, + "line": 1251, "column": 44 }, "identifierName": "rotationInertia" @@ -33916,15 +33846,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 42858, - "end": 43113, + "start": 42798, + "end": 43053, "loc": { "start": { - "line": 1242, + "line": 1241, "column": 4 }, "end": { - "line": 1250, + "line": 1249, "column": 7 } } @@ -33934,15 +33864,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 43199, - "end": 43987, + "start": 43139, + "end": 43927, "loc": { "start": { - "line": 1255, + "line": 1254, "column": 4 }, "end": { - "line": 1269, + "line": 1268, "column": 7 } } @@ -33951,15 +33881,15 @@ }, { "type": "ClassMethod", - "start": 43992, - "end": 44161, + "start": 43932, + "end": 44101, "loc": { "start": { - "line": 1270, + "line": 1269, "column": 4 }, "end": { - "line": 1272, + "line": 1271, "column": 5 } }, @@ -33967,15 +33897,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 43996, - "end": 44011, + "start": 43936, + "end": 43951, "loc": { "start": { - "line": 1270, + "line": 1269, "column": 8 }, "end": { - "line": 1270, + "line": 1269, "column": 23 }, "identifierName": "keyboardPanRate" @@ -33990,15 +33920,15 @@ "params": [ { "type": "Identifier", - "start": 44012, - "end": 44027, + "start": 43952, + "end": 43967, "loc": { "start": { - "line": 1270, + "line": 1269, "column": 24 }, "end": { - "line": 1270, + "line": 1269, "column": 39 }, "identifierName": "keyboardPanRate" @@ -34008,102 +33938,102 @@ ], "body": { "type": "BlockStatement", - "start": 44029, - "end": 44161, + "start": 43969, + "end": 44101, "loc": { "start": { - "line": 1270, + "line": 1269, "column": 41 }, "end": { - "line": 1272, + "line": 1271, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 44039, - "end": 44155, + "start": 43979, + "end": 44095, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 8 }, "end": { - "line": 1271, + "line": 1270, "column": 124 } }, "expression": { "type": "AssignmentExpression", - "start": 44039, - "end": 44154, + "start": 43979, + "end": 44094, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 8 }, "end": { - "line": 1271, + "line": 1270, "column": 123 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44039, - "end": 44068, + "start": 43979, + "end": 44008, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 8 }, "end": { - "line": 1271, + "line": 1270, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 44039, - "end": 44052, + "start": 43979, + "end": 43992, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 8 }, "end": { - "line": 1271, + "line": 1270, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 44039, - "end": 44043, + "start": 43979, + "end": 43983, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 8 }, "end": { - "line": 1271, + "line": 1270, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44044, - "end": 44052, + "start": 43984, + "end": 43992, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 13 }, "end": { - "line": 1271, + "line": 1270, "column": 21 }, "identifierName": "_configs" @@ -34114,15 +34044,15 @@ }, "property": { "type": "Identifier", - "start": 44053, - "end": 44068, + "start": 43993, + "end": 44008, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 22 }, "end": { - "line": 1271, + "line": 1270, "column": 37 }, "identifierName": "keyboardPanRate" @@ -34133,57 +34063,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 44071, - "end": 44154, + "start": 44011, + "end": 44094, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 40 }, "end": { - "line": 1271, + "line": 1270, "column": 123 } }, "test": { "type": "LogicalExpression", - "start": 44072, - "end": 44129, + "start": 44012, + "end": 44069, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 41 }, "end": { - "line": 1271, + "line": 1270, "column": 98 } }, "left": { "type": "BinaryExpression", - "start": 44072, - "end": 44096, + "start": 44012, + "end": 44036, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 41 }, "end": { - "line": 1271, + "line": 1270, "column": 65 } }, "left": { "type": "Identifier", - "start": 44072, - "end": 44087, + "start": 44012, + "end": 44027, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 41 }, "end": { - "line": 1271, + "line": 1270, "column": 56 }, "identifierName": "keyboardPanRate" @@ -34193,15 +34123,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 44092, - "end": 44096, + "start": 44032, + "end": 44036, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 61 }, "end": { - "line": 1271, + "line": 1270, "column": 65 } } @@ -34210,29 +34140,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 44100, - "end": 44129, + "start": 44040, + "end": 44069, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 69 }, "end": { - "line": 1271, + "line": 1270, "column": 98 } }, "left": { "type": "Identifier", - "start": 44100, - "end": 44115, + "start": 44040, + "end": 44055, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 69 }, "end": { - "line": 1271, + "line": 1270, "column": 84 }, "identifierName": "keyboardPanRate" @@ -34242,15 +34172,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 44120, - "end": 44129, + "start": 44060, + "end": 44069, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 89 }, "end": { - "line": 1271, + "line": 1270, "column": 98 }, "identifierName": "undefined" @@ -34260,20 +34190,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 44071 + "parenStart": 44011 } }, "consequent": { "type": "Identifier", - "start": 44133, - "end": 44148, + "start": 44073, + "end": 44088, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 102 }, "end": { - "line": 1271, + "line": 1270, "column": 117 }, "identifierName": "keyboardPanRate" @@ -34282,15 +34212,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 44151, - "end": 44154, + "start": 44091, + "end": 44094, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 120 }, "end": { - "line": 1271, + "line": 1270, "column": 123 } }, @@ -34311,15 +34241,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 43199, - "end": 43987, + "start": 43139, + "end": 43927, "loc": { "start": { - "line": 1255, + "line": 1254, "column": 4 }, "end": { - "line": 1269, + "line": 1268, "column": 7 } } @@ -34329,15 +34259,15 @@ { "type": "CommentBlock", "value": "*\n * Sets how fast the camera pans on touch panning\n *\n * @param {Number} touchPanRate The new touch pan rate.\n ", - "start": 44168, - "end": 44300, + "start": 44108, + "end": 44240, "loc": { "start": { - "line": 1275, + "line": 1274, "column": 4 }, "end": { - "line": 1279, + "line": 1278, "column": 7 } } @@ -34346,15 +34276,15 @@ }, { "type": "ClassMethod", - "start": 44305, - "end": 44456, + "start": 44245, + "end": 44396, "loc": { "start": { - "line": 1280, + "line": 1279, "column": 4 }, "end": { - "line": 1282, + "line": 1281, "column": 5 } }, @@ -34362,15 +34292,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 44309, - "end": 44321, + "start": 44249, + "end": 44261, "loc": { "start": { - "line": 1280, + "line": 1279, "column": 8 }, "end": { - "line": 1280, + "line": 1279, "column": 20 }, "identifierName": "touchPanRate" @@ -34385,15 +34315,15 @@ "params": [ { "type": "Identifier", - "start": 44322, - "end": 44334, + "start": 44262, + "end": 44274, "loc": { "start": { - "line": 1280, + "line": 1279, "column": 21 }, "end": { - "line": 1280, + "line": 1279, "column": 33 }, "identifierName": "touchPanRate" @@ -34403,102 +34333,102 @@ ], "body": { "type": "BlockStatement", - "start": 44336, - "end": 44456, + "start": 44276, + "end": 44396, "loc": { "start": { - "line": 1280, + "line": 1279, "column": 35 }, "end": { - "line": 1282, + "line": 1281, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 44346, - "end": 44450, + "start": 44286, + "end": 44390, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 8 }, "end": { - "line": 1281, + "line": 1280, "column": 112 } }, "expression": { "type": "AssignmentExpression", - "start": 44346, - "end": 44449, + "start": 44286, + "end": 44389, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 8 }, "end": { - "line": 1281, + "line": 1280, "column": 111 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44346, - "end": 44372, + "start": 44286, + "end": 44312, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 8 }, "end": { - "line": 1281, + "line": 1280, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 44346, - "end": 44359, + "start": 44286, + "end": 44299, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 8 }, "end": { - "line": 1281, + "line": 1280, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 44346, - "end": 44350, + "start": 44286, + "end": 44290, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 8 }, "end": { - "line": 1281, + "line": 1280, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44351, - "end": 44359, + "start": 44291, + "end": 44299, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 13 }, "end": { - "line": 1281, + "line": 1280, "column": 21 }, "identifierName": "_configs" @@ -34509,15 +34439,15 @@ }, "property": { "type": "Identifier", - "start": 44360, - "end": 44372, + "start": 44300, + "end": 44312, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 22 }, "end": { - "line": 1281, + "line": 1280, "column": 34 }, "identifierName": "touchPanRate" @@ -34528,57 +34458,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 44375, - "end": 44449, + "start": 44315, + "end": 44389, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 37 }, "end": { - "line": 1281, + "line": 1280, "column": 111 } }, "test": { "type": "LogicalExpression", - "start": 44376, - "end": 44427, + "start": 44316, + "end": 44367, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 38 }, "end": { - "line": 1281, + "line": 1280, "column": 89 } }, "left": { "type": "BinaryExpression", - "start": 44376, - "end": 44397, + "start": 44316, + "end": 44337, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 38 }, "end": { - "line": 1281, + "line": 1280, "column": 59 } }, "left": { "type": "Identifier", - "start": 44376, - "end": 44388, + "start": 44316, + "end": 44328, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 38 }, "end": { - "line": 1281, + "line": 1280, "column": 50 }, "identifierName": "touchPanRate" @@ -34588,15 +34518,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 44393, - "end": 44397, + "start": 44333, + "end": 44337, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 55 }, "end": { - "line": 1281, + "line": 1280, "column": 59 } } @@ -34605,29 +34535,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 44401, - "end": 44427, + "start": 44341, + "end": 44367, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 63 }, "end": { - "line": 1281, + "line": 1280, "column": 89 } }, "left": { "type": "Identifier", - "start": 44401, - "end": 44413, + "start": 44341, + "end": 44353, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 63 }, "end": { - "line": 1281, + "line": 1280, "column": 75 }, "identifierName": "touchPanRate" @@ -34637,15 +34567,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 44418, - "end": 44427, + "start": 44358, + "end": 44367, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 80 }, "end": { - "line": 1281, + "line": 1280, "column": 89 }, "identifierName": "undefined" @@ -34655,20 +34585,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 44375 + "parenStart": 44315 } }, "consequent": { "type": "Identifier", - "start": 44431, - "end": 44443, + "start": 44371, + "end": 44383, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 93 }, "end": { - "line": 1281, + "line": 1280, "column": 105 }, "identifierName": "touchPanRate" @@ -34677,15 +34607,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 44446, - "end": 44449, + "start": 44386, + "end": 44389, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 108 }, "end": { - "line": 1281, + "line": 1280, "column": 111 } }, @@ -34706,15 +34636,15 @@ { "type": "CommentBlock", "value": "*\n * Sets how fast the camera pans on touch panning\n *\n * @param {Number} touchPanRate The new touch pan rate.\n ", - "start": 44168, - "end": 44300, + "start": 44108, + "end": 44240, "loc": { "start": { - "line": 1275, + "line": 1274, "column": 4 }, "end": { - "line": 1279, + "line": 1278, "column": 7 } } @@ -34724,15 +34654,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44462, - "end": 44633, + "start": 44402, + "end": 44573, "loc": { "start": { - "line": 1284, + "line": 1283, "column": 4 }, "end": { - "line": 1290, + "line": 1289, "column": 7 } } @@ -34741,15 +34671,15 @@ }, { "type": "ClassMethod", - "start": 44638, - "end": 44707, + "start": 44578, + "end": 44647, "loc": { "start": { - "line": 1291, + "line": 1290, "column": 4 }, "end": { - "line": 1293, + "line": 1292, "column": 5 } }, @@ -34757,15 +34687,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 44642, - "end": 44654, + "start": 44582, + "end": 44594, "loc": { "start": { - "line": 1291, + "line": 1290, "column": 8 }, "end": { - "line": 1291, + "line": 1290, "column": 20 }, "identifierName": "touchPanRate" @@ -34780,87 +34710,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 44657, - "end": 44707, + "start": 44597, + "end": 44647, "loc": { "start": { - "line": 1291, + "line": 1290, "column": 23 }, "end": { - "line": 1293, + "line": 1292, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 44667, - "end": 44701, + "start": 44607, + "end": 44641, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 8 }, "end": { - "line": 1292, + "line": 1291, "column": 42 } }, "argument": { "type": "MemberExpression", - "start": 44674, - "end": 44700, + "start": 44614, + "end": 44640, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 15 }, "end": { - "line": 1292, + "line": 1291, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 44674, - "end": 44687, + "start": 44614, + "end": 44627, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 15 }, "end": { - "line": 1292, + "line": 1291, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 44674, - "end": 44678, + "start": 44614, + "end": 44618, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 15 }, "end": { - "line": 1292, + "line": 1291, "column": 19 } } }, "property": { "type": "Identifier", - "start": 44679, - "end": 44687, + "start": 44619, + "end": 44627, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 20 }, "end": { - "line": 1292, + "line": 1291, "column": 28 }, "identifierName": "_configs" @@ -34871,15 +34801,15 @@ }, "property": { "type": "Identifier", - "start": 44688, - "end": 44700, + "start": 44628, + "end": 44640, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 29 }, "end": { - "line": 1292, + "line": 1291, "column": 41 }, "identifierName": "touchPanRate" @@ -34897,15 +34827,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44462, - "end": 44633, + "start": 44402, + "end": 44573, "loc": { "start": { - "line": 1284, + "line": 1283, "column": 4 }, "end": { - "line": 1290, + "line": 1289, "column": 7 } } @@ -34915,15 +34845,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44713, - "end": 44903, + "start": 44653, + "end": 44843, "loc": { "start": { - "line": 1295, + "line": 1294, "column": 4 }, "end": { - "line": 1301, + "line": 1300, "column": 7 } } @@ -34932,15 +34862,15 @@ }, { "type": "ClassMethod", - "start": 44908, - "end": 44983, + "start": 44848, + "end": 44923, "loc": { "start": { - "line": 1302, + "line": 1301, "column": 4 }, "end": { - "line": 1304, + "line": 1303, "column": 5 } }, @@ -34948,15 +34878,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 44912, - "end": 44927, + "start": 44852, + "end": 44867, "loc": { "start": { - "line": 1302, + "line": 1301, "column": 8 }, "end": { - "line": 1302, + "line": 1301, "column": 23 }, "identifierName": "keyboardPanRate" @@ -34971,87 +34901,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 44930, - "end": 44983, + "start": 44870, + "end": 44923, "loc": { "start": { - "line": 1302, + "line": 1301, "column": 26 }, "end": { - "line": 1304, + "line": 1303, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 44940, - "end": 44977, + "start": 44880, + "end": 44917, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 8 }, "end": { - "line": 1303, + "line": 1302, "column": 45 } }, "argument": { "type": "MemberExpression", - "start": 44947, - "end": 44976, + "start": 44887, + "end": 44916, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 15 }, "end": { - "line": 1303, + "line": 1302, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 44947, - "end": 44960, + "start": 44887, + "end": 44900, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 15 }, "end": { - "line": 1303, + "line": 1302, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 44947, - "end": 44951, + "start": 44887, + "end": 44891, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 15 }, "end": { - "line": 1303, + "line": 1302, "column": 19 } } }, "property": { "type": "Identifier", - "start": 44952, - "end": 44960, + "start": 44892, + "end": 44900, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 20 }, "end": { - "line": 1303, + "line": 1302, "column": 28 }, "identifierName": "_configs" @@ -35062,15 +34992,15 @@ }, "property": { "type": "Identifier", - "start": 44961, - "end": 44976, + "start": 44901, + "end": 44916, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 29 }, "end": { - "line": 1303, + "line": 1302, "column": 44 }, "identifierName": "keyboardPanRate" @@ -35088,15 +35018,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44713, - "end": 44903, + "start": 44653, + "end": 44843, "loc": { "start": { - "line": 1295, + "line": 1294, "column": 4 }, "end": { - "line": 1301, + "line": 1300, "column": 7 } } @@ -35106,15 +35036,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44989, - "end": 45415, + "start": 44929, + "end": 45355, "loc": { "start": { - "line": 1306, + "line": 1305, "column": 4 }, "end": { - "line": 1314, + "line": 1313, "column": 7 } } @@ -35123,15 +35053,15 @@ }, { "type": "ClassMethod", - "start": 45420, - "end": 45620, + "start": 45360, + "end": 45560, "loc": { "start": { - "line": 1315, + "line": 1314, "column": 4 }, "end": { - "line": 1317, + "line": 1316, "column": 5 } }, @@ -35139,15 +35069,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 45424, - "end": 45444, + "start": 45364, + "end": 45384, "loc": { "start": { - "line": 1315, + "line": 1314, "column": 8 }, "end": { - "line": 1315, + "line": 1314, "column": 28 }, "identifierName": "keyboardRotationRate" @@ -35162,15 +35092,15 @@ "params": [ { "type": "Identifier", - "start": 45445, - "end": 45465, + "start": 45385, + "end": 45405, "loc": { "start": { - "line": 1315, + "line": 1314, "column": 29 }, "end": { - "line": 1315, + "line": 1314, "column": 49 }, "identifierName": "keyboardRotationRate" @@ -35180,102 +35110,102 @@ ], "body": { "type": "BlockStatement", - "start": 45467, - "end": 45620, + "start": 45407, + "end": 45560, "loc": { "start": { - "line": 1315, + "line": 1314, "column": 51 }, "end": { - "line": 1317, + "line": 1316, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 45477, - "end": 45614, + "start": 45417, + "end": 45554, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 8 }, "end": { - "line": 1316, + "line": 1315, "column": 145 } }, "expression": { "type": "AssignmentExpression", - "start": 45477, - "end": 45613, + "start": 45417, + "end": 45553, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 8 }, "end": { - "line": 1316, + "line": 1315, "column": 144 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45477, - "end": 45511, + "start": 45417, + "end": 45451, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 8 }, "end": { - "line": 1316, + "line": 1315, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 45477, - "end": 45490, + "start": 45417, + "end": 45430, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 8 }, "end": { - "line": 1316, + "line": 1315, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 45477, - "end": 45481, + "start": 45417, + "end": 45421, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 8 }, "end": { - "line": 1316, + "line": 1315, "column": 12 } } }, "property": { "type": "Identifier", - "start": 45482, - "end": 45490, + "start": 45422, + "end": 45430, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 13 }, "end": { - "line": 1316, + "line": 1315, "column": 21 }, "identifierName": "_configs" @@ -35286,15 +35216,15 @@ }, "property": { "type": "Identifier", - "start": 45491, - "end": 45511, + "start": 45431, + "end": 45451, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 22 }, "end": { - "line": 1316, + "line": 1315, "column": 42 }, "identifierName": "keyboardRotationRate" @@ -35305,57 +35235,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 45514, - "end": 45613, + "start": 45454, + "end": 45553, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 45 }, "end": { - "line": 1316, + "line": 1315, "column": 144 } }, "test": { "type": "LogicalExpression", - "start": 45515, - "end": 45582, + "start": 45455, + "end": 45522, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 46 }, "end": { - "line": 1316, + "line": 1315, "column": 113 } }, "left": { "type": "BinaryExpression", - "start": 45515, - "end": 45544, + "start": 45455, + "end": 45484, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 46 }, "end": { - "line": 1316, + "line": 1315, "column": 75 } }, "left": { "type": "Identifier", - "start": 45515, - "end": 45535, + "start": 45455, + "end": 45475, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 46 }, "end": { - "line": 1316, + "line": 1315, "column": 66 }, "identifierName": "keyboardRotationRate" @@ -35365,15 +35295,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 45540, - "end": 45544, + "start": 45480, + "end": 45484, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 71 }, "end": { - "line": 1316, + "line": 1315, "column": 75 } } @@ -35382,29 +35312,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 45548, - "end": 45582, + "start": 45488, + "end": 45522, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 79 }, "end": { - "line": 1316, + "line": 1315, "column": 113 } }, "left": { "type": "Identifier", - "start": 45548, - "end": 45568, + "start": 45488, + "end": 45508, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 79 }, "end": { - "line": 1316, + "line": 1315, "column": 99 }, "identifierName": "keyboardRotationRate" @@ -35414,15 +35344,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 45573, - "end": 45582, + "start": 45513, + "end": 45522, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 104 }, "end": { - "line": 1316, + "line": 1315, "column": 113 }, "identifierName": "undefined" @@ -35432,20 +35362,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 45514 + "parenStart": 45454 } }, "consequent": { "type": "Identifier", - "start": 45586, - "end": 45606, + "start": 45526, + "end": 45546, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 117 }, "end": { - "line": 1316, + "line": 1315, "column": 137 }, "identifierName": "keyboardRotationRate" @@ -35454,15 +35384,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 45609, - "end": 45613, + "start": 45549, + "end": 45553, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 140 }, "end": { - "line": 1316, + "line": 1315, "column": 144 } }, @@ -35483,15 +35413,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44989, - "end": 45415, + "start": 44929, + "end": 45355, "loc": { "start": { - "line": 1306, + "line": 1305, "column": 4 }, "end": { - "line": 1314, + "line": 1313, "column": 7 } } @@ -35501,15 +35431,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 45626, - "end": 45839, + "start": 45566, + "end": 45779, "loc": { "start": { - "line": 1319, + "line": 1318, "column": 4 }, "end": { - "line": 1325, + "line": 1324, "column": 7 } } @@ -35518,15 +35448,15 @@ }, { "type": "ClassMethod", - "start": 45844, - "end": 45929, + "start": 45784, + "end": 45869, "loc": { "start": { - "line": 1326, + "line": 1325, "column": 4 }, "end": { - "line": 1328, + "line": 1327, "column": 5 } }, @@ -35534,15 +35464,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 45848, - "end": 45868, + "start": 45788, + "end": 45808, "loc": { "start": { - "line": 1326, + "line": 1325, "column": 8 }, "end": { - "line": 1326, + "line": 1325, "column": 28 }, "identifierName": "keyboardRotationRate" @@ -35557,87 +35487,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 45871, - "end": 45929, + "start": 45811, + "end": 45869, "loc": { "start": { - "line": 1326, + "line": 1325, "column": 31 }, "end": { - "line": 1328, + "line": 1327, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 45881, - "end": 45923, + "start": 45821, + "end": 45863, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 8 }, "end": { - "line": 1327, + "line": 1326, "column": 50 } }, "argument": { "type": "MemberExpression", - "start": 45888, - "end": 45922, + "start": 45828, + "end": 45862, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 15 }, "end": { - "line": 1327, + "line": 1326, "column": 49 } }, "object": { "type": "MemberExpression", - "start": 45888, - "end": 45901, + "start": 45828, + "end": 45841, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 15 }, "end": { - "line": 1327, + "line": 1326, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 45888, - "end": 45892, + "start": 45828, + "end": 45832, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 15 }, "end": { - "line": 1327, + "line": 1326, "column": 19 } } }, "property": { "type": "Identifier", - "start": 45893, - "end": 45901, + "start": 45833, + "end": 45841, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 20 }, "end": { - "line": 1327, + "line": 1326, "column": 28 }, "identifierName": "_configs" @@ -35648,15 +35578,15 @@ }, "property": { "type": "Identifier", - "start": 45902, - "end": 45922, + "start": 45842, + "end": 45862, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 29 }, "end": { - "line": 1327, + "line": 1326, "column": 49 }, "identifierName": "keyboardRotationRate" @@ -35674,15 +35604,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 45626, - "end": 45839, + "start": 45566, + "end": 45779, "loc": { "start": { - "line": 1319, + "line": 1318, "column": 4 }, "end": { - "line": 1325, + "line": 1324, "column": 7 } } @@ -35692,15 +35622,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 45935, - "end": 46751, + "start": 45875, + "end": 46691, "loc": { "start": { - "line": 1330, + "line": 1329, "column": 4 }, "end": { - "line": 1345, + "line": 1344, "column": 7 } } @@ -35709,15 +35639,15 @@ }, { "type": "ClassMethod", - "start": 46756, - "end": 46933, + "start": 46696, + "end": 46873, "loc": { "start": { - "line": 1346, + "line": 1345, "column": 4 }, "end": { - "line": 1348, + "line": 1347, "column": 5 } }, @@ -35725,15 +35655,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 46760, - "end": 46776, + "start": 46700, + "end": 46716, "loc": { "start": { - "line": 1346, + "line": 1345, "column": 8 }, "end": { - "line": 1346, + "line": 1345, "column": 24 }, "identifierName": "dragRotationRate" @@ -35748,15 +35678,15 @@ "params": [ { "type": "Identifier", - "start": 46777, - "end": 46793, + "start": 46717, + "end": 46733, "loc": { "start": { - "line": 1346, + "line": 1345, "column": 25 }, "end": { - "line": 1346, + "line": 1345, "column": 41 }, "identifierName": "dragRotationRate" @@ -35766,102 +35696,102 @@ ], "body": { "type": "BlockStatement", - "start": 46795, - "end": 46933, + "start": 46735, + "end": 46873, "loc": { "start": { - "line": 1346, + "line": 1345, "column": 43 }, "end": { - "line": 1348, + "line": 1347, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 46805, - "end": 46927, + "start": 46745, + "end": 46867, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 8 }, "end": { - "line": 1347, + "line": 1346, "column": 130 } }, "expression": { "type": "AssignmentExpression", - "start": 46805, - "end": 46926, + "start": 46745, + "end": 46866, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 8 }, "end": { - "line": 1347, + "line": 1346, "column": 129 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46805, - "end": 46835, + "start": 46745, + "end": 46775, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 8 }, "end": { - "line": 1347, + "line": 1346, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 46805, - "end": 46818, + "start": 46745, + "end": 46758, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 8 }, "end": { - "line": 1347, + "line": 1346, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 46805, - "end": 46809, + "start": 46745, + "end": 46749, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 8 }, "end": { - "line": 1347, + "line": 1346, "column": 12 } } }, "property": { "type": "Identifier", - "start": 46810, - "end": 46818, + "start": 46750, + "end": 46758, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 13 }, "end": { - "line": 1347, + "line": 1346, "column": 21 }, "identifierName": "_configs" @@ -35872,15 +35802,15 @@ }, "property": { "type": "Identifier", - "start": 46819, - "end": 46835, + "start": 46759, + "end": 46775, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 22 }, "end": { - "line": 1347, + "line": 1346, "column": 38 }, "identifierName": "dragRotationRate" @@ -35891,57 +35821,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 46838, - "end": 46926, + "start": 46778, + "end": 46866, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 41 }, "end": { - "line": 1347, + "line": 1346, "column": 129 } }, "test": { "type": "LogicalExpression", - "start": 46839, - "end": 46898, + "start": 46779, + "end": 46838, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 42 }, "end": { - "line": 1347, + "line": 1346, "column": 101 } }, "left": { "type": "BinaryExpression", - "start": 46839, - "end": 46864, + "start": 46779, + "end": 46804, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 42 }, "end": { - "line": 1347, + "line": 1346, "column": 67 } }, "left": { "type": "Identifier", - "start": 46839, - "end": 46855, + "start": 46779, + "end": 46795, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 42 }, "end": { - "line": 1347, + "line": 1346, "column": 58 }, "identifierName": "dragRotationRate" @@ -35951,15 +35881,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 46860, - "end": 46864, + "start": 46800, + "end": 46804, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 63 }, "end": { - "line": 1347, + "line": 1346, "column": 67 } } @@ -35968,29 +35898,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 46868, - "end": 46898, + "start": 46808, + "end": 46838, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 71 }, "end": { - "line": 1347, + "line": 1346, "column": 101 } }, "left": { "type": "Identifier", - "start": 46868, - "end": 46884, + "start": 46808, + "end": 46824, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 71 }, "end": { - "line": 1347, + "line": 1346, "column": 87 }, "identifierName": "dragRotationRate" @@ -36000,15 +35930,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 46889, - "end": 46898, + "start": 46829, + "end": 46838, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 92 }, "end": { - "line": 1347, + "line": 1346, "column": 101 }, "identifierName": "undefined" @@ -36018,20 +35948,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 46838 + "parenStart": 46778 } }, "consequent": { "type": "Identifier", - "start": 46902, - "end": 46918, + "start": 46842, + "end": 46858, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 105 }, "end": { - "line": 1347, + "line": 1346, "column": 121 }, "identifierName": "dragRotationRate" @@ -36040,15 +35970,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 46921, - "end": 46926, + "start": 46861, + "end": 46866, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 124 }, "end": { - "line": 1347, + "line": 1346, "column": 129 } }, @@ -36069,15 +35999,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 45935, - "end": 46751, + "start": 45875, + "end": 46691, "loc": { "start": { - "line": 1330, + "line": 1329, "column": 4 }, "end": { - "line": 1345, + "line": 1344, "column": 7 } } @@ -36087,15 +36017,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the current drag rotation rate.\n *\n * Default is ````360.0````.\n *\n * @returns {Number} The current drag rotation rate.\n ", - "start": 46939, - "end": 47098, + "start": 46879, + "end": 47038, "loc": { "start": { - "line": 1350, + "line": 1349, "column": 4 }, "end": { - "line": 1356, + "line": 1355, "column": 7 } } @@ -36104,15 +36034,15 @@ }, { "type": "ClassMethod", - "start": 47103, - "end": 47180, + "start": 47043, + "end": 47120, "loc": { "start": { - "line": 1357, + "line": 1356, "column": 4 }, "end": { - "line": 1359, + "line": 1358, "column": 5 } }, @@ -36120,15 +36050,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 47107, - "end": 47123, + "start": 47047, + "end": 47063, "loc": { "start": { - "line": 1357, + "line": 1356, "column": 8 }, "end": { - "line": 1357, + "line": 1356, "column": 24 }, "identifierName": "dragRotationRate" @@ -36143,87 +36073,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 47126, - "end": 47180, + "start": 47066, + "end": 47120, "loc": { "start": { - "line": 1357, + "line": 1356, "column": 27 }, "end": { - "line": 1359, + "line": 1358, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 47136, - "end": 47174, + "start": 47076, + "end": 47114, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 8 }, "end": { - "line": 1358, + "line": 1357, "column": 46 } }, "argument": { "type": "MemberExpression", - "start": 47143, - "end": 47173, + "start": 47083, + "end": 47113, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 15 }, "end": { - "line": 1358, + "line": 1357, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 47143, - "end": 47156, + "start": 47083, + "end": 47096, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 15 }, "end": { - "line": 1358, + "line": 1357, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 47143, - "end": 47147, + "start": 47083, + "end": 47087, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 15 }, "end": { - "line": 1358, + "line": 1357, "column": 19 } } }, "property": { "type": "Identifier", - "start": 47148, - "end": 47156, + "start": 47088, + "end": 47096, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 20 }, "end": { - "line": 1358, + "line": 1357, "column": 28 }, "identifierName": "_configs" @@ -36234,15 +36164,15 @@ }, "property": { "type": "Identifier", - "start": 47157, - "end": 47173, + "start": 47097, + "end": 47113, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 29 }, "end": { - "line": 1358, + "line": 1357, "column": 45 }, "identifierName": "dragRotationRate" @@ -36260,15 +36190,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the current drag rotation rate.\n *\n * Default is ````360.0````.\n *\n * @returns {Number} The current drag rotation rate.\n ", - "start": 46939, - "end": 47098, + "start": 46879, + "end": 47038, "loc": { "start": { - "line": 1350, + "line": 1349, "column": 4 }, "end": { - "line": 1356, + "line": 1355, "column": 7 } } @@ -36278,15 +36208,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 47186, - "end": 47523, + "start": 47126, + "end": 47463, "loc": { "start": { - "line": 1361, + "line": 1360, "column": 4 }, "end": { - "line": 1368, + "line": 1367, "column": 7 } } @@ -36295,15 +36225,15 @@ }, { "type": "ClassMethod", - "start": 47528, - "end": 47710, + "start": 47468, + "end": 47650, "loc": { "start": { - "line": 1369, + "line": 1368, "column": 4 }, "end": { - "line": 1371, + "line": 1370, "column": 5 } }, @@ -36311,15 +36241,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 47532, - "end": 47549, + "start": 47472, + "end": 47489, "loc": { "start": { - "line": 1369, + "line": 1368, "column": 8 }, "end": { - "line": 1369, + "line": 1368, "column": 25 }, "identifierName": "keyboardDollyRate" @@ -36334,15 +36264,15 @@ "params": [ { "type": "Identifier", - "start": 47550, - "end": 47567, + "start": 47490, + "end": 47507, "loc": { "start": { - "line": 1369, + "line": 1368, "column": 26 }, "end": { - "line": 1369, + "line": 1368, "column": 43 }, "identifierName": "keyboardDollyRate" @@ -36352,102 +36282,102 @@ ], "body": { "type": "BlockStatement", - "start": 47569, - "end": 47710, + "start": 47509, + "end": 47650, "loc": { "start": { - "line": 1369, + "line": 1368, "column": 45 }, "end": { - "line": 1371, + "line": 1370, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 47579, - "end": 47704, + "start": 47519, + "end": 47644, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 8 }, "end": { - "line": 1370, + "line": 1369, "column": 133 } }, "expression": { "type": "AssignmentExpression", - "start": 47579, - "end": 47703, + "start": 47519, + "end": 47643, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 8 }, "end": { - "line": 1370, + "line": 1369, "column": 132 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47579, - "end": 47610, + "start": 47519, + "end": 47550, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 8 }, "end": { - "line": 1370, + "line": 1369, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 47579, - "end": 47592, + "start": 47519, + "end": 47532, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 8 }, "end": { - "line": 1370, + "line": 1369, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 47579, - "end": 47583, + "start": 47519, + "end": 47523, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 8 }, "end": { - "line": 1370, + "line": 1369, "column": 12 } } }, "property": { "type": "Identifier", - "start": 47584, - "end": 47592, + "start": 47524, + "end": 47532, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 13 }, "end": { - "line": 1370, + "line": 1369, "column": 21 }, "identifierName": "_configs" @@ -36458,15 +36388,15 @@ }, "property": { "type": "Identifier", - "start": 47593, - "end": 47610, + "start": 47533, + "end": 47550, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 22 }, "end": { - "line": 1370, + "line": 1369, "column": 39 }, "identifierName": "keyboardDollyRate" @@ -36477,57 +36407,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 47613, - "end": 47703, + "start": 47553, + "end": 47643, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 42 }, "end": { - "line": 1370, + "line": 1369, "column": 132 } }, "test": { "type": "LogicalExpression", - "start": 47614, - "end": 47675, + "start": 47554, + "end": 47615, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 43 }, "end": { - "line": 1370, + "line": 1369, "column": 104 } }, "left": { "type": "BinaryExpression", - "start": 47614, - "end": 47640, + "start": 47554, + "end": 47580, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 43 }, "end": { - "line": 1370, + "line": 1369, "column": 69 } }, "left": { "type": "Identifier", - "start": 47614, - "end": 47631, + "start": 47554, + "end": 47571, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 43 }, "end": { - "line": 1370, + "line": 1369, "column": 60 }, "identifierName": "keyboardDollyRate" @@ -36537,15 +36467,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 47636, - "end": 47640, + "start": 47576, + "end": 47580, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 65 }, "end": { - "line": 1370, + "line": 1369, "column": 69 } } @@ -36554,29 +36484,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 47644, - "end": 47675, + "start": 47584, + "end": 47615, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 73 }, "end": { - "line": 1370, + "line": 1369, "column": 104 } }, "left": { "type": "Identifier", - "start": 47644, - "end": 47661, + "start": 47584, + "end": 47601, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 73 }, "end": { - "line": 1370, + "line": 1369, "column": 90 }, "identifierName": "keyboardDollyRate" @@ -36586,15 +36516,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 47666, - "end": 47675, + "start": 47606, + "end": 47615, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 95 }, "end": { - "line": 1370, + "line": 1369, "column": 104 }, "identifierName": "undefined" @@ -36604,20 +36534,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 47613 + "parenStart": 47553 } }, "consequent": { "type": "Identifier", - "start": 47679, - "end": 47696, + "start": 47619, + "end": 47636, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 108 }, "end": { - "line": 1370, + "line": 1369, "column": 125 }, "identifierName": "keyboardDollyRate" @@ -36626,15 +36556,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 47699, - "end": 47703, + "start": 47639, + "end": 47643, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 128 }, "end": { - "line": 1370, + "line": 1369, "column": 132 } }, @@ -36655,15 +36585,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 47186, - "end": 47523, + "start": 47126, + "end": 47463, "loc": { "start": { - "line": 1361, + "line": 1360, "column": 4 }, "end": { - "line": 1368, + "line": 1367, "column": 7 } } @@ -36673,15 +36603,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 47716, - "end": 47911, + "start": 47656, + "end": 47851, "loc": { "start": { - "line": 1373, + "line": 1372, "column": 4 }, "end": { - "line": 1379, + "line": 1378, "column": 7 } } @@ -36690,15 +36620,15 @@ }, { "type": "ClassMethod", - "start": 47916, - "end": 47995, + "start": 47856, + "end": 47935, "loc": { "start": { - "line": 1380, + "line": 1379, "column": 4 }, "end": { - "line": 1382, + "line": 1381, "column": 5 } }, @@ -36706,15 +36636,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 47920, - "end": 47937, + "start": 47860, + "end": 47877, "loc": { "start": { - "line": 1380, + "line": 1379, "column": 8 }, "end": { - "line": 1380, + "line": 1379, "column": 25 }, "identifierName": "keyboardDollyRate" @@ -36729,87 +36659,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 47940, - "end": 47995, + "start": 47880, + "end": 47935, "loc": { "start": { - "line": 1380, + "line": 1379, "column": 28 }, "end": { - "line": 1382, + "line": 1381, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 47950, - "end": 47989, + "start": 47890, + "end": 47929, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 8 }, "end": { - "line": 1381, + "line": 1380, "column": 47 } }, "argument": { "type": "MemberExpression", - "start": 47957, - "end": 47988, + "start": 47897, + "end": 47928, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 15 }, "end": { - "line": 1381, + "line": 1380, "column": 46 } }, "object": { "type": "MemberExpression", - "start": 47957, - "end": 47970, + "start": 47897, + "end": 47910, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 15 }, "end": { - "line": 1381, + "line": 1380, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 47957, - "end": 47961, + "start": 47897, + "end": 47901, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 15 }, "end": { - "line": 1381, + "line": 1380, "column": 19 } } }, "property": { "type": "Identifier", - "start": 47962, - "end": 47970, + "start": 47902, + "end": 47910, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 20 }, "end": { - "line": 1381, + "line": 1380, "column": 28 }, "identifierName": "_configs" @@ -36820,15 +36750,15 @@ }, "property": { "type": "Identifier", - "start": 47971, - "end": 47988, + "start": 47911, + "end": 47928, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 29 }, "end": { - "line": 1381, + "line": 1380, "column": 46 }, "identifierName": "keyboardDollyRate" @@ -36846,15 +36776,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 47716, - "end": 47911, + "start": 47656, + "end": 47851, "loc": { "start": { - "line": 1373, + "line": 1372, "column": 4 }, "end": { - "line": 1379, + "line": 1378, "column": 7 } } @@ -36864,15 +36794,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48001, - "end": 48185, + "start": 47941, + "end": 48125, "loc": { "start": { - "line": 1384, + "line": 1383, "column": 4 }, "end": { - "line": 1390, + "line": 1389, "column": 7 } } @@ -36881,15 +36811,15 @@ }, { "type": "ClassMethod", - "start": 48190, - "end": 48353, + "start": 48130, + "end": 48293, "loc": { "start": { - "line": 1391, + "line": 1390, "column": 4 }, "end": { - "line": 1393, + "line": 1392, "column": 5 } }, @@ -36897,15 +36827,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 48194, - "end": 48208, + "start": 48134, + "end": 48148, "loc": { "start": { - "line": 1391, + "line": 1390, "column": 8 }, "end": { - "line": 1391, + "line": 1390, "column": 22 }, "identifierName": "touchDollyRate" @@ -36920,15 +36850,15 @@ "params": [ { "type": "Identifier", - "start": 48209, - "end": 48223, + "start": 48149, + "end": 48163, "loc": { "start": { - "line": 1391, + "line": 1390, "column": 23 }, "end": { - "line": 1391, + "line": 1390, "column": 37 }, "identifierName": "touchDollyRate" @@ -36938,102 +36868,102 @@ ], "body": { "type": "BlockStatement", - "start": 48225, - "end": 48353, + "start": 48165, + "end": 48293, "loc": { "start": { - "line": 1391, + "line": 1390, "column": 39 }, "end": { - "line": 1393, + "line": 1392, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 48235, - "end": 48347, + "start": 48175, + "end": 48287, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 8 }, "end": { - "line": 1392, + "line": 1391, "column": 120 } }, "expression": { "type": "AssignmentExpression", - "start": 48235, - "end": 48346, + "start": 48175, + "end": 48286, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 8 }, "end": { - "line": 1392, + "line": 1391, "column": 119 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 48235, - "end": 48263, + "start": 48175, + "end": 48203, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 8 }, "end": { - "line": 1392, + "line": 1391, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 48235, - "end": 48248, + "start": 48175, + "end": 48188, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 8 }, "end": { - "line": 1392, + "line": 1391, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 48235, - "end": 48239, + "start": 48175, + "end": 48179, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 8 }, "end": { - "line": 1392, + "line": 1391, "column": 12 } } }, "property": { "type": "Identifier", - "start": 48240, - "end": 48248, + "start": 48180, + "end": 48188, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 13 }, "end": { - "line": 1392, + "line": 1391, "column": 21 }, "identifierName": "_configs" @@ -37044,15 +36974,15 @@ }, "property": { "type": "Identifier", - "start": 48249, - "end": 48263, + "start": 48189, + "end": 48203, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 22 }, "end": { - "line": 1392, + "line": 1391, "column": 36 }, "identifierName": "touchDollyRate" @@ -37063,57 +36993,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 48266, - "end": 48346, + "start": 48206, + "end": 48286, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 39 }, "end": { - "line": 1392, + "line": 1391, "column": 119 } }, "test": { "type": "LogicalExpression", - "start": 48267, - "end": 48322, + "start": 48207, + "end": 48262, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 40 }, "end": { - "line": 1392, + "line": 1391, "column": 95 } }, "left": { "type": "BinaryExpression", - "start": 48267, - "end": 48290, + "start": 48207, + "end": 48230, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 40 }, "end": { - "line": 1392, + "line": 1391, "column": 63 } }, "left": { "type": "Identifier", - "start": 48267, - "end": 48281, + "start": 48207, + "end": 48221, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 40 }, "end": { - "line": 1392, + "line": 1391, "column": 54 }, "identifierName": "touchDollyRate" @@ -37123,15 +37053,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 48286, - "end": 48290, + "start": 48226, + "end": 48230, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 59 }, "end": { - "line": 1392, + "line": 1391, "column": 63 } } @@ -37140,29 +37070,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 48294, - "end": 48322, + "start": 48234, + "end": 48262, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 67 }, "end": { - "line": 1392, + "line": 1391, "column": 95 } }, "left": { "type": "Identifier", - "start": 48294, - "end": 48308, + "start": 48234, + "end": 48248, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 67 }, "end": { - "line": 1392, + "line": 1391, "column": 81 }, "identifierName": "touchDollyRate" @@ -37172,15 +37102,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 48313, - "end": 48322, + "start": 48253, + "end": 48262, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 86 }, "end": { - "line": 1392, + "line": 1391, "column": 95 }, "identifierName": "undefined" @@ -37190,20 +37120,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 48266 + "parenStart": 48206 } }, "consequent": { "type": "Identifier", - "start": 48326, - "end": 48340, + "start": 48266, + "end": 48280, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 99 }, "end": { - "line": 1392, + "line": 1391, "column": 113 }, "identifierName": "touchDollyRate" @@ -37212,15 +37142,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 48343, - "end": 48346, + "start": 48283, + "end": 48286, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 116 }, "end": { - "line": 1392, + "line": 1391, "column": 119 } }, @@ -37241,15 +37171,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48001, - "end": 48185, + "start": 47941, + "end": 48125, "loc": { "start": { - "line": 1384, + "line": 1383, "column": 4 }, "end": { - "line": 1390, + "line": 1389, "column": 7 } } @@ -37259,15 +37189,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48359, - "end": 48547, + "start": 48299, + "end": 48487, "loc": { "start": { - "line": 1395, + "line": 1394, "column": 4 }, "end": { - "line": 1401, + "line": 1400, "column": 7 } } @@ -37276,15 +37206,15 @@ }, { "type": "ClassMethod", - "start": 48552, - "end": 48625, + "start": 48492, + "end": 48565, "loc": { "start": { - "line": 1402, + "line": 1401, "column": 4 }, "end": { - "line": 1404, + "line": 1403, "column": 5 } }, @@ -37292,15 +37222,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 48556, - "end": 48570, + "start": 48496, + "end": 48510, "loc": { "start": { - "line": 1402, + "line": 1401, "column": 8 }, "end": { - "line": 1402, + "line": 1401, "column": 22 }, "identifierName": "touchDollyRate" @@ -37315,87 +37245,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 48573, - "end": 48625, + "start": 48513, + "end": 48565, "loc": { "start": { - "line": 1402, + "line": 1401, "column": 25 }, "end": { - "line": 1404, + "line": 1403, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 48583, - "end": 48619, + "start": 48523, + "end": 48559, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 8 }, "end": { - "line": 1403, + "line": 1402, "column": 44 } }, "argument": { "type": "MemberExpression", - "start": 48590, - "end": 48618, + "start": 48530, + "end": 48558, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 15 }, "end": { - "line": 1403, + "line": 1402, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 48590, - "end": 48603, + "start": 48530, + "end": 48543, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 15 }, "end": { - "line": 1403, + "line": 1402, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 48590, - "end": 48594, + "start": 48530, + "end": 48534, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 15 }, "end": { - "line": 1403, + "line": 1402, "column": 19 } } }, "property": { "type": "Identifier", - "start": 48595, - "end": 48603, + "start": 48535, + "end": 48543, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 20 }, "end": { - "line": 1403, + "line": 1402, "column": 28 }, "identifierName": "_configs" @@ -37406,15 +37336,15 @@ }, "property": { "type": "Identifier", - "start": 48604, - "end": 48618, + "start": 48544, + "end": 48558, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 29 }, "end": { - "line": 1403, + "line": 1402, "column": 43 }, "identifierName": "touchDollyRate" @@ -37432,15 +37362,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48359, - "end": 48547, + "start": 48299, + "end": 48487, "loc": { "start": { - "line": 1395, + "line": 1394, "column": 4 }, "end": { - "line": 1401, + "line": 1400, "column": 7 } } @@ -37450,15 +37380,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48631, - "end": 48963, + "start": 48571, + "end": 48903, "loc": { "start": { - "line": 1406, + "line": 1405, "column": 4 }, "end": { - "line": 1413, + "line": 1412, "column": 7 } } @@ -37467,15 +37397,15 @@ }, { "type": "ClassMethod", - "start": 48968, - "end": 49163, + "start": 48908, + "end": 49103, "loc": { "start": { - "line": 1414, + "line": 1413, "column": 4 }, "end": { - "line": 1416, + "line": 1415, "column": 5 } }, @@ -37483,15 +37413,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 48972, - "end": 48991, + "start": 48912, + "end": 48931, "loc": { "start": { - "line": 1414, + "line": 1413, "column": 8 }, "end": { - "line": 1414, + "line": 1413, "column": 27 }, "identifierName": "mouseWheelDollyRate" @@ -37506,15 +37436,15 @@ "params": [ { "type": "Identifier", - "start": 48992, - "end": 49011, + "start": 48932, + "end": 48951, "loc": { "start": { - "line": 1414, + "line": 1413, "column": 28 }, "end": { - "line": 1414, + "line": 1413, "column": 47 }, "identifierName": "mouseWheelDollyRate" @@ -37524,102 +37454,102 @@ ], "body": { "type": "BlockStatement", - "start": 49013, - "end": 49163, + "start": 48953, + "end": 49103, "loc": { "start": { - "line": 1414, + "line": 1413, "column": 49 }, "end": { - "line": 1416, + "line": 1415, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 49023, - "end": 49157, + "start": 48963, + "end": 49097, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 8 }, "end": { - "line": 1415, + "line": 1414, "column": 142 } }, "expression": { "type": "AssignmentExpression", - "start": 49023, - "end": 49156, + "start": 48963, + "end": 49096, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 8 }, "end": { - "line": 1415, + "line": 1414, "column": 141 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 49023, - "end": 49056, + "start": 48963, + "end": 48996, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 8 }, "end": { - "line": 1415, + "line": 1414, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 49023, - "end": 49036, + "start": 48963, + "end": 48976, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 8 }, "end": { - "line": 1415, + "line": 1414, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 49023, - "end": 49027, + "start": 48963, + "end": 48967, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 8 }, "end": { - "line": 1415, + "line": 1414, "column": 12 } } }, "property": { "type": "Identifier", - "start": 49028, - "end": 49036, + "start": 48968, + "end": 48976, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 13 }, "end": { - "line": 1415, + "line": 1414, "column": 21 }, "identifierName": "_configs" @@ -37630,15 +37560,15 @@ }, "property": { "type": "Identifier", - "start": 49037, - "end": 49056, + "start": 48977, + "end": 48996, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 22 }, "end": { - "line": 1415, + "line": 1414, "column": 41 }, "identifierName": "mouseWheelDollyRate" @@ -37649,57 +37579,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 49059, - "end": 49156, + "start": 48999, + "end": 49096, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 44 }, "end": { - "line": 1415, + "line": 1414, "column": 141 } }, "test": { "type": "LogicalExpression", - "start": 49060, - "end": 49125, + "start": 49000, + "end": 49065, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 45 }, "end": { - "line": 1415, + "line": 1414, "column": 110 } }, "left": { "type": "BinaryExpression", - "start": 49060, - "end": 49088, + "start": 49000, + "end": 49028, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 45 }, "end": { - "line": 1415, + "line": 1414, "column": 73 } }, "left": { "type": "Identifier", - "start": 49060, - "end": 49079, + "start": 49000, + "end": 49019, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 45 }, "end": { - "line": 1415, + "line": 1414, "column": 64 }, "identifierName": "mouseWheelDollyRate" @@ -37709,15 +37639,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 49084, - "end": 49088, + "start": 49024, + "end": 49028, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 69 }, "end": { - "line": 1415, + "line": 1414, "column": 73 } } @@ -37726,29 +37656,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 49092, - "end": 49125, + "start": 49032, + "end": 49065, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 77 }, "end": { - "line": 1415, + "line": 1414, "column": 110 } }, "left": { "type": "Identifier", - "start": 49092, - "end": 49111, + "start": 49032, + "end": 49051, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 77 }, "end": { - "line": 1415, + "line": 1414, "column": 96 }, "identifierName": "mouseWheelDollyRate" @@ -37758,15 +37688,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 49116, - "end": 49125, + "start": 49056, + "end": 49065, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 101 }, "end": { - "line": 1415, + "line": 1414, "column": 110 }, "identifierName": "undefined" @@ -37776,20 +37706,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 49059 + "parenStart": 48999 } }, "consequent": { "type": "Identifier", - "start": 49129, - "end": 49148, + "start": 49069, + "end": 49088, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 114 }, "end": { - "line": 1415, + "line": 1414, "column": 133 }, "identifierName": "mouseWheelDollyRate" @@ -37798,15 +37728,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 49151, - "end": 49156, + "start": 49091, + "end": 49096, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 136 }, "end": { - "line": 1415, + "line": 1414, "column": 141 } }, @@ -37827,15 +37757,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48631, - "end": 48963, + "start": 48571, + "end": 48903, "loc": { "start": { - "line": 1406, + "line": 1405, "column": 4 }, "end": { - "line": 1413, + "line": 1412, "column": 7 } } @@ -37845,15 +37775,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 49169, - "end": 49381, + "start": 49109, + "end": 49321, "loc": { "start": { - "line": 1418, + "line": 1417, "column": 4 }, "end": { - "line": 1424, + "line": 1423, "column": 7 } } @@ -37862,15 +37792,15 @@ }, { "type": "ClassMethod", - "start": 49386, - "end": 49469, + "start": 49326, + "end": 49409, "loc": { "start": { - "line": 1425, + "line": 1424, "column": 4 }, "end": { - "line": 1427, + "line": 1426, "column": 5 } }, @@ -37878,15 +37808,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 49390, - "end": 49409, + "start": 49330, + "end": 49349, "loc": { "start": { - "line": 1425, + "line": 1424, "column": 8 }, "end": { - "line": 1425, + "line": 1424, "column": 27 }, "identifierName": "mouseWheelDollyRate" @@ -37901,87 +37831,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 49412, - "end": 49469, + "start": 49352, + "end": 49409, "loc": { "start": { - "line": 1425, + "line": 1424, "column": 30 }, "end": { - "line": 1427, + "line": 1426, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 49422, - "end": 49463, + "start": 49362, + "end": 49403, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 8 }, "end": { - "line": 1426, + "line": 1425, "column": 49 } }, "argument": { "type": "MemberExpression", - "start": 49429, - "end": 49462, + "start": 49369, + "end": 49402, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 15 }, "end": { - "line": 1426, + "line": 1425, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 49429, - "end": 49442, + "start": 49369, + "end": 49382, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 15 }, "end": { - "line": 1426, + "line": 1425, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 49429, - "end": 49433, + "start": 49369, + "end": 49373, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 15 }, "end": { - "line": 1426, + "line": 1425, "column": 19 } } }, "property": { "type": "Identifier", - "start": 49434, - "end": 49442, + "start": 49374, + "end": 49382, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 20 }, "end": { - "line": 1426, + "line": 1425, "column": 28 }, "identifierName": "_configs" @@ -37992,15 +37922,15 @@ }, "property": { "type": "Identifier", - "start": 49443, - "end": 49462, + "start": 49383, + "end": 49402, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 29 }, "end": { - "line": 1426, + "line": 1425, "column": 48 }, "identifierName": "mouseWheelDollyRate" @@ -38018,15 +37948,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 49169, - "end": 49381, + "start": 49109, + "end": 49321, "loc": { "start": { - "line": 1418, + "line": 1417, "column": 4 }, "end": { - "line": 1424, + "line": 1423, "column": 7 } } @@ -38036,15 +37966,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 49475, - "end": 50326, + "start": 49415, + "end": 50266, "loc": { "start": { - "line": 1429, + "line": 1428, "column": 4 }, "end": { - "line": 1445, + "line": 1444, "column": 7 } } @@ -38053,15 +37983,15 @@ }, { "type": "ClassMethod", - "start": 50331, - "end": 50480, + "start": 50271, + "end": 50420, "loc": { "start": { - "line": 1446, + "line": 1445, "column": 4 }, "end": { - "line": 1448, + "line": 1447, "column": 5 } }, @@ -38069,15 +37999,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50335, - "end": 50347, + "start": 50275, + "end": 50287, "loc": { "start": { - "line": 1446, + "line": 1445, "column": 8 }, "end": { - "line": 1446, + "line": 1445, "column": 20 }, "identifierName": "dollyInertia" @@ -38092,15 +38022,15 @@ "params": [ { "type": "Identifier", - "start": 50348, - "end": 50360, + "start": 50288, + "end": 50300, "loc": { "start": { - "line": 1446, + "line": 1445, "column": 21 }, "end": { - "line": 1446, + "line": 1445, "column": 33 }, "identifierName": "dollyInertia" @@ -38110,102 +38040,102 @@ ], "body": { "type": "BlockStatement", - "start": 50362, - "end": 50480, + "start": 50302, + "end": 50420, "loc": { "start": { - "line": 1446, + "line": 1445, "column": 35 }, "end": { - "line": 1448, + "line": 1447, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 50372, - "end": 50474, + "start": 50312, + "end": 50414, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 8 }, "end": { - "line": 1447, + "line": 1446, "column": 110 } }, "expression": { "type": "AssignmentExpression", - "start": 50372, - "end": 50473, + "start": 50312, + "end": 50413, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 8 }, "end": { - "line": 1447, + "line": 1446, "column": 109 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 50372, - "end": 50398, + "start": 50312, + "end": 50338, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 8 }, "end": { - "line": 1447, + "line": 1446, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 50372, - "end": 50385, + "start": 50312, + "end": 50325, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 8 }, "end": { - "line": 1447, + "line": 1446, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 50372, - "end": 50376, + "start": 50312, + "end": 50316, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 8 }, "end": { - "line": 1447, + "line": 1446, "column": 12 } } }, "property": { "type": "Identifier", - "start": 50377, - "end": 50385, + "start": 50317, + "end": 50325, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 13 }, "end": { - "line": 1447, + "line": 1446, "column": 21 }, "identifierName": "_configs" @@ -38216,15 +38146,15 @@ }, "property": { "type": "Identifier", - "start": 50386, - "end": 50398, + "start": 50326, + "end": 50338, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 22 }, "end": { - "line": 1447, + "line": 1446, "column": 34 }, "identifierName": "dollyInertia" @@ -38235,57 +38165,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 50401, - "end": 50473, + "start": 50341, + "end": 50413, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 37 }, "end": { - "line": 1447, + "line": 1446, "column": 109 } }, "test": { "type": "LogicalExpression", - "start": 50402, - "end": 50453, + "start": 50342, + "end": 50393, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 38 }, "end": { - "line": 1447, + "line": 1446, "column": 89 } }, "left": { "type": "BinaryExpression", - "start": 50402, - "end": 50428, + "start": 50342, + "end": 50368, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 38 }, "end": { - "line": 1447, + "line": 1446, "column": 64 } }, "left": { "type": "Identifier", - "start": 50402, - "end": 50414, + "start": 50342, + "end": 50354, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 38 }, "end": { - "line": 1447, + "line": 1446, "column": 50 }, "identifierName": "dollyInertia" @@ -38295,15 +38225,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 50419, - "end": 50428, + "start": 50359, + "end": 50368, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 55 }, "end": { - "line": 1447, + "line": 1446, "column": 64 }, "identifierName": "undefined" @@ -38314,29 +38244,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 50432, - "end": 50453, + "start": 50372, + "end": 50393, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 68 }, "end": { - "line": 1447, + "line": 1446, "column": 89 } }, "left": { "type": "Identifier", - "start": 50432, - "end": 50444, + "start": 50372, + "end": 50384, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 68 }, "end": { - "line": 1447, + "line": 1446, "column": 80 }, "identifierName": "dollyInertia" @@ -38346,15 +38276,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 50449, - "end": 50453, + "start": 50389, + "end": 50393, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 85 }, "end": { - "line": 1447, + "line": 1446, "column": 89 } } @@ -38362,20 +38292,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 50401 + "parenStart": 50341 } }, "consequent": { "type": "Identifier", - "start": 50457, - "end": 50469, + "start": 50397, + "end": 50409, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 93 }, "end": { - "line": 1447, + "line": 1446, "column": 105 }, "identifierName": "dollyInertia" @@ -38384,15 +38314,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 50472, - "end": 50473, + "start": 50412, + "end": 50413, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 108 }, "end": { - "line": 1447, + "line": 1446, "column": 109 } }, @@ -38413,15 +38343,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 49475, - "end": 50326, + "start": 49415, + "end": 50266, "loc": { "start": { - "line": 1429, + "line": 1428, "column": 4 }, "end": { - "line": 1445, + "line": 1444, "column": 7 } } @@ -38431,15 +38361,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the dolly inertia factor.\n *\n * Default is ````0````.\n *\n * @returns {Number} The current dolly inertia factor.\n ", - "start": 50486, - "end": 50637, + "start": 50426, + "end": 50577, "loc": { "start": { - "line": 1450, + "line": 1449, "column": 4 }, "end": { - "line": 1456, + "line": 1455, "column": 7 } } @@ -38448,15 +38378,15 @@ }, { "type": "ClassMethod", - "start": 50642, - "end": 50711, + "start": 50582, + "end": 50651, "loc": { "start": { - "line": 1457, + "line": 1456, "column": 4 }, "end": { - "line": 1459, + "line": 1458, "column": 5 } }, @@ -38464,15 +38394,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50646, - "end": 50658, + "start": 50586, + "end": 50598, "loc": { "start": { - "line": 1457, + "line": 1456, "column": 8 }, "end": { - "line": 1457, + "line": 1456, "column": 20 }, "identifierName": "dollyInertia" @@ -38487,87 +38417,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 50661, - "end": 50711, + "start": 50601, + "end": 50651, "loc": { "start": { - "line": 1457, + "line": 1456, "column": 23 }, "end": { - "line": 1459, + "line": 1458, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 50671, - "end": 50705, + "start": 50611, + "end": 50645, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 8 }, "end": { - "line": 1458, + "line": 1457, "column": 42 } }, "argument": { "type": "MemberExpression", - "start": 50678, - "end": 50704, + "start": 50618, + "end": 50644, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 15 }, "end": { - "line": 1458, + "line": 1457, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 50678, - "end": 50691, + "start": 50618, + "end": 50631, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 15 }, "end": { - "line": 1458, + "line": 1457, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 50678, - "end": 50682, + "start": 50618, + "end": 50622, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 15 }, "end": { - "line": 1458, + "line": 1457, "column": 19 } } }, "property": { "type": "Identifier", - "start": 50683, - "end": 50691, + "start": 50623, + "end": 50631, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 20 }, "end": { - "line": 1458, + "line": 1457, "column": 28 }, "identifierName": "_configs" @@ -38578,15 +38508,15 @@ }, "property": { "type": "Identifier", - "start": 50692, - "end": 50704, + "start": 50632, + "end": 50644, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 29 }, "end": { - "line": 1458, + "line": 1457, "column": 41 }, "identifierName": "dollyInertia" @@ -38604,15 +38534,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the dolly inertia factor.\n *\n * Default is ````0````.\n *\n * @returns {Number} The current dolly inertia factor.\n ", - "start": 50486, - "end": 50637, + "start": 50426, + "end": 50577, "loc": { "start": { - "line": 1450, + "line": 1449, "column": 4 }, "end": { - "line": 1456, + "line": 1455, "column": 7 } } @@ -38622,15 +38552,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 50717, - "end": 50974, + "start": 50657, + "end": 50914, "loc": { "start": { - "line": 1461, + "line": 1460, "column": 4 }, "end": { - "line": 1467, + "line": 1466, "column": 7 } } @@ -38639,15 +38569,15 @@ }, { "type": "ClassMethod", - "start": 50979, - "end": 51197, + "start": 50919, + "end": 51137, "loc": { "start": { - "line": 1468, + "line": 1467, "column": 4 }, "end": { - "line": 1470, + "line": 1469, "column": 5 } }, @@ -38655,15 +38585,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50983, - "end": 51006, + "start": 50923, + "end": 50946, "loc": { "start": { - "line": 1468, + "line": 1467, "column": 8 }, "end": { - "line": 1468, + "line": 1467, "column": 31 }, "identifierName": "dollyProximityThreshold" @@ -38678,15 +38608,15 @@ "params": [ { "type": "Identifier", - "start": 51007, - "end": 51030, + "start": 50947, + "end": 50970, "loc": { "start": { - "line": 1468, + "line": 1467, "column": 32 }, "end": { - "line": 1468, + "line": 1467, "column": 55 }, "identifierName": "dollyProximityThreshold" @@ -38696,102 +38626,102 @@ ], "body": { "type": "BlockStatement", - "start": 51032, - "end": 51197, + "start": 50972, + "end": 51137, "loc": { "start": { - "line": 1468, + "line": 1467, "column": 57 }, "end": { - "line": 1470, + "line": 1469, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 51042, - "end": 51191, + "start": 50982, + "end": 51131, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 8 }, "end": { - "line": 1469, + "line": 1468, "column": 157 } }, "expression": { "type": "AssignmentExpression", - "start": 51042, - "end": 51190, + "start": 50982, + "end": 51130, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 8 }, "end": { - "line": 1469, + "line": 1468, "column": 156 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 51042, - "end": 51079, + "start": 50982, + "end": 51019, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 8 }, "end": { - "line": 1469, + "line": 1468, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 51042, - "end": 51055, + "start": 50982, + "end": 50995, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 8 }, "end": { - "line": 1469, + "line": 1468, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 51042, - "end": 51046, + "start": 50982, + "end": 50986, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 8 }, "end": { - "line": 1469, + "line": 1468, "column": 12 } } }, "property": { "type": "Identifier", - "start": 51047, - "end": 51055, + "start": 50987, + "end": 50995, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 13 }, "end": { - "line": 1469, + "line": 1468, "column": 21 }, "identifierName": "_configs" @@ -38802,15 +38732,15 @@ }, "property": { "type": "Identifier", - "start": 51056, - "end": 51079, + "start": 50996, + "end": 51019, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 22 }, "end": { - "line": 1469, + "line": 1468, "column": 45 }, "identifierName": "dollyProximityThreshold" @@ -38821,57 +38751,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 51082, - "end": 51190, + "start": 51022, + "end": 51130, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 48 }, "end": { - "line": 1469, + "line": 1468, "column": 156 } }, "test": { "type": "LogicalExpression", - "start": 51083, - "end": 51156, + "start": 51023, + "end": 51096, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 49 }, "end": { - "line": 1469, + "line": 1468, "column": 122 } }, "left": { "type": "BinaryExpression", - "start": 51083, - "end": 51120, + "start": 51023, + "end": 51060, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 49 }, "end": { - "line": 1469, + "line": 1468, "column": 86 } }, "left": { "type": "Identifier", - "start": 51083, - "end": 51106, + "start": 51023, + "end": 51046, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 49 }, "end": { - "line": 1469, + "line": 1468, "column": 72 }, "identifierName": "dollyProximityThreshold" @@ -38881,15 +38811,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 51111, - "end": 51120, + "start": 51051, + "end": 51060, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 77 }, "end": { - "line": 1469, + "line": 1468, "column": 86 }, "identifierName": "undefined" @@ -38900,29 +38830,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 51124, - "end": 51156, + "start": 51064, + "end": 51096, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 90 }, "end": { - "line": 1469, + "line": 1468, "column": 122 } }, "left": { "type": "Identifier", - "start": 51124, - "end": 51147, + "start": 51064, + "end": 51087, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 90 }, "end": { - "line": 1469, + "line": 1468, "column": 113 }, "identifierName": "dollyProximityThreshold" @@ -38932,15 +38862,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 51152, - "end": 51156, + "start": 51092, + "end": 51096, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 118 }, "end": { - "line": 1469, + "line": 1468, "column": 122 } } @@ -38948,20 +38878,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 51082 + "parenStart": 51022 } }, "consequent": { "type": "Identifier", - "start": 51160, - "end": 51183, + "start": 51100, + "end": 51123, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 126 }, "end": { - "line": 1469, + "line": 1468, "column": 149 }, "identifierName": "dollyProximityThreshold" @@ -38970,15 +38900,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 51186, - "end": 51190, + "start": 51126, + "end": 51130, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 152 }, "end": { - "line": 1469, + "line": 1468, "column": 156 } }, @@ -38999,15 +38929,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 50717, - "end": 50974, + "start": 50657, + "end": 50914, "loc": { "start": { - "line": 1461, + "line": 1460, "column": 4 }, "end": { - "line": 1467, + "line": 1466, "column": 7 } } @@ -39017,15 +38947,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 51203, - "end": 51446, + "start": 51143, + "end": 51386, "loc": { "start": { - "line": 1472, + "line": 1471, "column": 4 }, "end": { - "line": 1478, + "line": 1477, "column": 7 } } @@ -39034,15 +38964,15 @@ }, { "type": "ClassMethod", - "start": 51451, - "end": 51542, + "start": 51391, + "end": 51482, "loc": { "start": { - "line": 1479, + "line": 1478, "column": 4 }, "end": { - "line": 1481, + "line": 1480, "column": 5 } }, @@ -39050,15 +38980,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 51455, - "end": 51478, + "start": 51395, + "end": 51418, "loc": { "start": { - "line": 1479, + "line": 1478, "column": 8 }, "end": { - "line": 1479, + "line": 1478, "column": 31 }, "identifierName": "dollyProximityThreshold" @@ -39073,87 +39003,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 51481, - "end": 51542, + "start": 51421, + "end": 51482, "loc": { "start": { - "line": 1479, + "line": 1478, "column": 34 }, "end": { - "line": 1481, + "line": 1480, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 51491, - "end": 51536, + "start": 51431, + "end": 51476, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 8 }, "end": { - "line": 1480, + "line": 1479, "column": 53 } }, "argument": { "type": "MemberExpression", - "start": 51498, - "end": 51535, + "start": 51438, + "end": 51475, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 15 }, "end": { - "line": 1480, + "line": 1479, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 51498, - "end": 51511, + "start": 51438, + "end": 51451, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 15 }, "end": { - "line": 1480, + "line": 1479, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 51498, - "end": 51502, + "start": 51438, + "end": 51442, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 15 }, "end": { - "line": 1480, + "line": 1479, "column": 19 } } }, "property": { "type": "Identifier", - "start": 51503, - "end": 51511, + "start": 51443, + "end": 51451, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 20 }, "end": { - "line": 1480, + "line": 1479, "column": 28 }, "identifierName": "_configs" @@ -39164,15 +39094,15 @@ }, "property": { "type": "Identifier", - "start": 51512, - "end": 51535, + "start": 51452, + "end": 51475, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 29 }, "end": { - "line": 1480, + "line": 1479, "column": 52 }, "identifierName": "dollyProximityThreshold" @@ -39190,15 +39120,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 51203, - "end": 51446, + "start": 51143, + "end": 51386, "loc": { "start": { - "line": 1472, + "line": 1471, "column": 4 }, "end": { - "line": 1478, + "line": 1477, "column": 7 } } @@ -39208,15 +39138,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @param {Number} dollyMinSpeed New dolly minimum speed.\n ", - "start": 51548, - "end": 51704, + "start": 51488, + "end": 51644, "loc": { "start": { - "line": 1483, + "line": 1482, "column": 4 }, "end": { - "line": 1489, + "line": 1488, "column": 7 } } @@ -39225,15 +39155,15 @@ }, { "type": "ClassMethod", - "start": 51709, - "end": 51867, + "start": 51649, + "end": 51807, "loc": { "start": { - "line": 1490, + "line": 1489, "column": 4 }, "end": { - "line": 1492, + "line": 1491, "column": 5 } }, @@ -39241,15 +39171,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 51713, - "end": 51726, + "start": 51653, + "end": 51666, "loc": { "start": { - "line": 1490, + "line": 1489, "column": 8 }, "end": { - "line": 1490, + "line": 1489, "column": 21 }, "identifierName": "dollyMinSpeed" @@ -39264,15 +39194,15 @@ "params": [ { "type": "Identifier", - "start": 51727, - "end": 51740, + "start": 51667, + "end": 51680, "loc": { "start": { - "line": 1490, + "line": 1489, "column": 22 }, "end": { - "line": 1490, + "line": 1489, "column": 35 }, "identifierName": "dollyMinSpeed" @@ -39282,102 +39212,102 @@ ], "body": { "type": "BlockStatement", - "start": 51742, - "end": 51867, + "start": 51682, + "end": 51807, "loc": { "start": { - "line": 1490, + "line": 1489, "column": 37 }, "end": { - "line": 1492, + "line": 1491, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 51752, - "end": 51861, + "start": 51692, + "end": 51801, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 8 }, "end": { - "line": 1491, + "line": 1490, "column": 117 } }, "expression": { "type": "AssignmentExpression", - "start": 51752, - "end": 51860, + "start": 51692, + "end": 51800, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 8 }, "end": { - "line": 1491, + "line": 1490, "column": 116 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 51752, - "end": 51779, + "start": 51692, + "end": 51719, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 8 }, "end": { - "line": 1491, + "line": 1490, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 51752, - "end": 51765, + "start": 51692, + "end": 51705, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 8 }, "end": { - "line": 1491, + "line": 1490, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 51752, - "end": 51756, + "start": 51692, + "end": 51696, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 8 }, "end": { - "line": 1491, + "line": 1490, "column": 12 } } }, "property": { "type": "Identifier", - "start": 51757, - "end": 51765, + "start": 51697, + "end": 51705, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 13 }, "end": { - "line": 1491, + "line": 1490, "column": 21 }, "identifierName": "_configs" @@ -39388,15 +39318,15 @@ }, "property": { "type": "Identifier", - "start": 51766, - "end": 51779, + "start": 51706, + "end": 51719, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 22 }, "end": { - "line": 1491, + "line": 1490, "column": 35 }, "identifierName": "dollyMinSpeed" @@ -39407,57 +39337,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 51782, - "end": 51860, + "start": 51722, + "end": 51800, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 38 }, "end": { - "line": 1491, + "line": 1490, "column": 116 } }, "test": { "type": "LogicalExpression", - "start": 51783, - "end": 51836, + "start": 51723, + "end": 51776, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 39 }, "end": { - "line": 1491, + "line": 1490, "column": 92 } }, "left": { "type": "BinaryExpression", - "start": 51783, - "end": 51810, + "start": 51723, + "end": 51750, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 39 }, "end": { - "line": 1491, + "line": 1490, "column": 66 } }, "left": { "type": "Identifier", - "start": 51783, - "end": 51796, + "start": 51723, + "end": 51736, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 39 }, "end": { - "line": 1491, + "line": 1490, "column": 52 }, "identifierName": "dollyMinSpeed" @@ -39467,15 +39397,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 51801, - "end": 51810, + "start": 51741, + "end": 51750, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 57 }, "end": { - "line": 1491, + "line": 1490, "column": 66 }, "identifierName": "undefined" @@ -39486,29 +39416,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 51814, - "end": 51836, + "start": 51754, + "end": 51776, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 70 }, "end": { - "line": 1491, + "line": 1490, "column": 92 } }, "left": { "type": "Identifier", - "start": 51814, - "end": 51827, + "start": 51754, + "end": 51767, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 70 }, "end": { - "line": 1491, + "line": 1490, "column": 83 }, "identifierName": "dollyMinSpeed" @@ -39518,15 +39448,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 51832, - "end": 51836, + "start": 51772, + "end": 51776, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 88 }, "end": { - "line": 1491, + "line": 1490, "column": 92 } } @@ -39534,20 +39464,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 51782 + "parenStart": 51722 } }, "consequent": { "type": "Identifier", - "start": 51840, - "end": 51853, + "start": 51780, + "end": 51793, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 96 }, "end": { - "line": 1491, + "line": 1490, "column": 109 }, "identifierName": "dollyMinSpeed" @@ -39556,15 +39486,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 51856, - "end": 51860, + "start": 51796, + "end": 51800, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 112 }, "end": { - "line": 1491, + "line": 1490, "column": 116 } }, @@ -39585,15 +39515,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @param {Number} dollyMinSpeed New dolly minimum speed.\n ", - "start": 51548, - "end": 51704, + "start": 51488, + "end": 51644, "loc": { "start": { - "line": 1483, + "line": 1482, "column": 4 }, "end": { - "line": 1489, + "line": 1488, "column": 7 } } @@ -39603,15 +39533,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @returns {Number} The current minimum dolly speed.\n ", - "start": 51873, - "end": 52025, + "start": 51813, + "end": 51965, "loc": { "start": { - "line": 1494, + "line": 1493, "column": 4 }, "end": { - "line": 1500, + "line": 1499, "column": 7 } } @@ -39620,15 +39550,15 @@ }, { "type": "ClassMethod", - "start": 52030, - "end": 52101, + "start": 51970, + "end": 52041, "loc": { "start": { - "line": 1501, + "line": 1500, "column": 4 }, "end": { - "line": 1503, + "line": 1502, "column": 5 } }, @@ -39636,15 +39566,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 52034, - "end": 52047, + "start": 51974, + "end": 51987, "loc": { "start": { - "line": 1501, + "line": 1500, "column": 8 }, "end": { - "line": 1501, + "line": 1500, "column": 21 }, "identifierName": "dollyMinSpeed" @@ -39659,87 +39589,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 52050, - "end": 52101, + "start": 51990, + "end": 52041, "loc": { "start": { - "line": 1501, + "line": 1500, "column": 24 }, "end": { - "line": 1503, + "line": 1502, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 52060, - "end": 52095, + "start": 52000, + "end": 52035, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 8 }, "end": { - "line": 1502, + "line": 1501, "column": 43 } }, "argument": { "type": "MemberExpression", - "start": 52067, - "end": 52094, + "start": 52007, + "end": 52034, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 15 }, "end": { - "line": 1502, + "line": 1501, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 52067, - "end": 52080, + "start": 52007, + "end": 52020, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 15 }, "end": { - "line": 1502, + "line": 1501, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 52067, - "end": 52071, + "start": 52007, + "end": 52011, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 15 }, "end": { - "line": 1502, + "line": 1501, "column": 19 } } }, "property": { "type": "Identifier", - "start": 52072, - "end": 52080, + "start": 52012, + "end": 52020, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 20 }, "end": { - "line": 1502, + "line": 1501, "column": 28 }, "identifierName": "_configs" @@ -39750,15 +39680,15 @@ }, "property": { "type": "Identifier", - "start": 52081, - "end": 52094, + "start": 52021, + "end": 52034, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 29 }, "end": { - "line": 1502, + "line": 1501, "column": 42 }, "identifierName": "dollyMinSpeed" @@ -39776,15 +39706,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @returns {Number} The current minimum dolly speed.\n ", - "start": 51873, - "end": 52025, + "start": 51813, + "end": 51965, "loc": { "start": { - "line": 1494, + "line": 1493, "column": 4 }, "end": { - "line": 1500, + "line": 1499, "column": 7 } } @@ -39794,15 +39724,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 52107, - "end": 52946, + "start": 52047, + "end": 52886, "loc": { "start": { - "line": 1505, + "line": 1504, "column": 4 }, "end": { - "line": 1521, + "line": 1520, "column": 7 } } @@ -39811,15 +39741,15 @@ }, { "type": "ClassMethod", - "start": 52951, - "end": 53090, + "start": 52891, + "end": 53030, "loc": { "start": { - "line": 1522, + "line": 1521, "column": 4 }, "end": { - "line": 1524, + "line": 1523, "column": 5 } }, @@ -39827,15 +39757,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 52955, - "end": 52965, + "start": 52895, + "end": 52905, "loc": { "start": { - "line": 1522, + "line": 1521, "column": 8 }, "end": { - "line": 1522, + "line": 1521, "column": 18 }, "identifierName": "panInertia" @@ -39850,15 +39780,15 @@ "params": [ { "type": "Identifier", - "start": 52966, - "end": 52976, + "start": 52906, + "end": 52916, "loc": { "start": { - "line": 1522, + "line": 1521, "column": 19 }, "end": { - "line": 1522, + "line": 1521, "column": 29 }, "identifierName": "panInertia" @@ -39868,102 +39798,102 @@ ], "body": { "type": "BlockStatement", - "start": 52978, - "end": 53090, + "start": 52918, + "end": 53030, "loc": { "start": { - "line": 1522, + "line": 1521, "column": 31 }, "end": { - "line": 1524, + "line": 1523, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 52988, - "end": 53084, + "start": 52928, + "end": 53024, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 8 }, "end": { - "line": 1523, + "line": 1522, "column": 104 } }, "expression": { "type": "AssignmentExpression", - "start": 52988, - "end": 53083, + "start": 52928, + "end": 53023, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 8 }, "end": { - "line": 1523, + "line": 1522, "column": 103 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 52988, - "end": 53012, + "start": 52928, + "end": 52952, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 8 }, "end": { - "line": 1523, + "line": 1522, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 52988, - "end": 53001, + "start": 52928, + "end": 52941, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 8 }, "end": { - "line": 1523, + "line": 1522, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 52988, - "end": 52992, + "start": 52928, + "end": 52932, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 8 }, "end": { - "line": 1523, + "line": 1522, "column": 12 } } }, "property": { "type": "Identifier", - "start": 52993, - "end": 53001, + "start": 52933, + "end": 52941, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 13 }, "end": { - "line": 1523, + "line": 1522, "column": 21 }, "identifierName": "_configs" @@ -39974,15 +39904,15 @@ }, "property": { "type": "Identifier", - "start": 53002, - "end": 53012, + "start": 52942, + "end": 52952, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 22 }, "end": { - "line": 1523, + "line": 1522, "column": 32 }, "identifierName": "panInertia" @@ -39993,57 +39923,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 53015, - "end": 53083, + "start": 52955, + "end": 53023, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 35 }, "end": { - "line": 1523, + "line": 1522, "column": 103 } }, "test": { "type": "LogicalExpression", - "start": 53016, - "end": 53063, + "start": 52956, + "end": 53003, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 36 }, "end": { - "line": 1523, + "line": 1522, "column": 83 } }, "left": { "type": "BinaryExpression", - "start": 53016, - "end": 53040, + "start": 52956, + "end": 52980, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 36 }, "end": { - "line": 1523, + "line": 1522, "column": 60 } }, "left": { "type": "Identifier", - "start": 53016, - "end": 53026, + "start": 52956, + "end": 52966, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 36 }, "end": { - "line": 1523, + "line": 1522, "column": 46 }, "identifierName": "panInertia" @@ -40053,15 +39983,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 53031, - "end": 53040, + "start": 52971, + "end": 52980, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 51 }, "end": { - "line": 1523, + "line": 1522, "column": 60 }, "identifierName": "undefined" @@ -40072,29 +40002,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 53044, - "end": 53063, + "start": 52984, + "end": 53003, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 64 }, "end": { - "line": 1523, + "line": 1522, "column": 83 } }, "left": { "type": "Identifier", - "start": 53044, - "end": 53054, + "start": 52984, + "end": 52994, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 64 }, "end": { - "line": 1523, + "line": 1522, "column": 74 }, "identifierName": "panInertia" @@ -40104,15 +40034,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 53059, - "end": 53063, + "start": 52999, + "end": 53003, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 79 }, "end": { - "line": 1523, + "line": 1522, "column": 83 } } @@ -40120,20 +40050,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 53015 + "parenStart": 52955 } }, "consequent": { "type": "Identifier", - "start": 53067, - "end": 53077, + "start": 53007, + "end": 53017, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 87 }, "end": { - "line": 1523, + "line": 1522, "column": 97 }, "identifierName": "panInertia" @@ -40142,15 +40072,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 53080, - "end": 53083, + "start": 53020, + "end": 53023, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 100 }, "end": { - "line": 1523, + "line": 1522, "column": 103 } }, @@ -40171,15 +40101,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 52107, - "end": 52946, + "start": 52047, + "end": 52886, "loc": { "start": { - "line": 1505, + "line": 1504, "column": 4 }, "end": { - "line": 1521, + "line": 1520, "column": 7 } } @@ -40189,15 +40119,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the pan inertia factor.\n *\n * Default is ````0.5````.\n *\n * @returns {Number} The current pan inertia factor.\n ", - "start": 53096, - "end": 53245, + "start": 53036, + "end": 53185, "loc": { "start": { - "line": 1526, + "line": 1525, "column": 4 }, "end": { - "line": 1532, + "line": 1531, "column": 7 } } @@ -40206,15 +40136,15 @@ }, { "type": "ClassMethod", - "start": 53250, - "end": 53315, + "start": 53190, + "end": 53255, "loc": { "start": { - "line": 1533, + "line": 1532, "column": 4 }, "end": { - "line": 1535, + "line": 1534, "column": 5 } }, @@ -40222,15 +40152,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 53254, - "end": 53264, + "start": 53194, + "end": 53204, "loc": { "start": { - "line": 1533, + "line": 1532, "column": 8 }, "end": { - "line": 1533, + "line": 1532, "column": 18 }, "identifierName": "panInertia" @@ -40245,87 +40175,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 53267, - "end": 53315, + "start": 53207, + "end": 53255, "loc": { "start": { - "line": 1533, + "line": 1532, "column": 21 }, "end": { - "line": 1535, + "line": 1534, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 53277, - "end": 53309, + "start": 53217, + "end": 53249, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 8 }, "end": { - "line": 1534, + "line": 1533, "column": 40 } }, "argument": { "type": "MemberExpression", - "start": 53284, - "end": 53308, + "start": 53224, + "end": 53248, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 15 }, "end": { - "line": 1534, + "line": 1533, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 53284, - "end": 53297, + "start": 53224, + "end": 53237, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 15 }, "end": { - "line": 1534, + "line": 1533, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 53284, - "end": 53288, + "start": 53224, + "end": 53228, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 15 }, "end": { - "line": 1534, + "line": 1533, "column": 19 } } }, "property": { "type": "Identifier", - "start": 53289, - "end": 53297, + "start": 53229, + "end": 53237, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 20 }, "end": { - "line": 1534, + "line": 1533, "column": 28 }, "identifierName": "_configs" @@ -40336,15 +40266,15 @@ }, "property": { "type": "Identifier", - "start": 53298, - "end": 53308, + "start": 53238, + "end": 53248, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 29 }, "end": { - "line": 1534, + "line": 1533, "column": 39 }, "identifierName": "panInertia" @@ -40362,15 +40292,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the pan inertia factor.\n *\n * Default is ````0.5````.\n *\n * @returns {Number} The current pan inertia factor.\n ", - "start": 53096, - "end": 53245, + "start": 53036, + "end": 53185, "loc": { "start": { - "line": 1526, + "line": 1525, "column": 4 }, "end": { - "line": 1532, + "line": 1531, "column": 7 } } @@ -40380,15 +40310,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 53321, - "end": 53555, + "start": 53261, + "end": 53495, "loc": { "start": { - "line": 1537, + "line": 1536, "column": 4 }, "end": { - "line": 1547, + "line": 1546, "column": 7 } } @@ -40397,15 +40327,15 @@ }, { "type": "ClassMethod", - "start": 53560, - "end": 54004, + "start": 53500, + "end": 53944, "loc": { "start": { - "line": 1548, + "line": 1547, "column": 4 }, "end": { - "line": 1557, + "line": 1556, "column": 5 } }, @@ -40413,15 +40343,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 53564, - "end": 53578, + "start": 53504, + "end": 53518, "loc": { "start": { - "line": 1548, + "line": 1547, "column": 8 }, "end": { - "line": 1548, + "line": 1547, "column": 22 }, "identifierName": "keyboardLayout" @@ -40436,15 +40366,15 @@ "params": [ { "type": "Identifier", - "start": 53579, - "end": 53584, + "start": 53519, + "end": 53524, "loc": { "start": { - "line": 1548, + "line": 1547, "column": 23 }, "end": { - "line": 1548, + "line": 1547, "column": 28 }, "identifierName": "value" @@ -40454,59 +40384,59 @@ ], "body": { "type": "BlockStatement", - "start": 53586, - "end": 54004, + "start": 53526, + "end": 53944, "loc": { "start": { - "line": 1548, + "line": 1547, "column": 30 }, "end": { - "line": 1557, + "line": 1556, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 53689, - "end": 53715, + "start": 53629, + "end": 53655, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 8 }, "end": { - "line": 1550, + "line": 1549, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 53689, - "end": 53714, + "start": 53629, + "end": 53654, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 8 }, "end": { - "line": 1550, + "line": 1549, "column": 33 } }, "operator": "=", "left": { "type": "Identifier", - "start": 53689, - "end": 53694, + "start": 53629, + "end": 53634, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 8 }, "end": { - "line": 1550, + "line": 1549, "column": 13 }, "identifierName": "value" @@ -40516,29 +40446,29 @@ }, "right": { "type": "LogicalExpression", - "start": 53697, - "end": 53714, + "start": 53637, + "end": 53654, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 16 }, "end": { - "line": 1550, + "line": 1549, "column": 33 } }, "left": { "type": "Identifier", - "start": 53697, - "end": 53702, + "start": 53637, + "end": 53642, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 16 }, "end": { - "line": 1550, + "line": 1549, "column": 21 }, "identifierName": "value" @@ -40548,15 +40478,15 @@ "operator": "||", "right": { "type": "StringLiteral", - "start": 53706, - "end": 53714, + "start": 53646, + "end": 53654, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 25 }, "end": { - "line": 1550, + "line": 1549, "column": 33 } }, @@ -40573,15 +40503,15 @@ { "type": "CommentLine", "value": " this.warn(\"keyboardLayout property is deprecated - use keyMap property instead\");", - "start": 53596, - "end": 53680, + "start": 53536, + "end": 53620, "loc": { "start": { - "line": 1549, + "line": 1548, "column": 8 }, "end": { - "line": 1549, + "line": 1548, "column": 92 } } @@ -40590,57 +40520,57 @@ }, { "type": "IfStatement", - "start": 53724, - "end": 53900, + "start": 53664, + "end": 53840, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 8 }, "end": { - "line": 1554, + "line": 1553, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 53728, - "end": 53768, + "start": 53668, + "end": 53708, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 12 }, "end": { - "line": 1551, + "line": 1550, "column": 52 } }, "left": { "type": "BinaryExpression", - "start": 53728, - "end": 53746, + "start": 53668, + "end": 53686, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 12 }, "end": { - "line": 1551, + "line": 1550, "column": 30 } }, "left": { "type": "Identifier", - "start": 53728, - "end": 53733, + "start": 53668, + "end": 53673, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 12 }, "end": { - "line": 1551, + "line": 1550, "column": 17 }, "identifierName": "value" @@ -40650,15 +40580,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 53738, - "end": 53746, + "start": 53678, + "end": 53686, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 22 }, "end": { - "line": 1551, + "line": 1550, "column": 30 } }, @@ -40672,29 +40602,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 53750, - "end": 53768, + "start": 53690, + "end": 53708, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 34 }, "end": { - "line": 1551, + "line": 1550, "column": 52 } }, "left": { "type": "Identifier", - "start": 53750, - "end": 53755, + "start": 53690, + "end": 53695, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 34 }, "end": { - "line": 1551, + "line": 1550, "column": 39 }, "identifierName": "value" @@ -40704,15 +40634,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 53760, - "end": 53768, + "start": 53700, + "end": 53708, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 44 }, "end": { - "line": 1551, + "line": 1550, "column": 52 } }, @@ -40726,87 +40656,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 53770, - "end": 53900, + "start": 53710, + "end": 53840, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 54 }, "end": { - "line": 1554, + "line": 1553, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 53784, - "end": 53860, + "start": 53724, + "end": 53800, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 12 }, "end": { - "line": 1552, + "line": 1551, "column": 88 } }, "expression": { "type": "CallExpression", - "start": 53784, - "end": 53859, + "start": 53724, + "end": 53799, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 12 }, "end": { - "line": 1552, + "line": 1551, "column": 87 } }, "callee": { "type": "MemberExpression", - "start": 53784, - "end": 53794, + "start": 53724, + "end": 53734, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 12 }, "end": { - "line": 1552, + "line": 1551, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 53784, - "end": 53788, + "start": 53724, + "end": 53728, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 12 }, "end": { - "line": 1552, + "line": 1551, "column": 16 } } }, "property": { "type": "Identifier", - "start": 53789, - "end": 53794, + "start": 53729, + "end": 53734, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 17 }, "end": { - "line": 1552, + "line": 1551, "column": 22 }, "identifierName": "error" @@ -40818,15 +40748,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 53795, - "end": 53858, + "start": 53735, + "end": 53798, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 23 }, "end": { - "line": 1552, + "line": 1551, "column": 86 } }, @@ -40841,44 +40771,44 @@ }, { "type": "ExpressionStatement", - "start": 53873, - "end": 53890, + "start": 53813, + "end": 53830, "loc": { "start": { - "line": 1553, + "line": 1552, "column": 12 }, "end": { - "line": 1553, + "line": 1552, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 53873, - "end": 53889, + "start": 53813, + "end": 53829, "loc": { "start": { - "line": 1553, + "line": 1552, "column": 12 }, "end": { - "line": 1553, + "line": 1552, "column": 28 } }, "operator": "=", "left": { "type": "Identifier", - "start": 53873, - "end": 53878, + "start": 53813, + "end": 53818, "loc": { "start": { - "line": 1553, + "line": 1552, "column": 12 }, "end": { - "line": 1553, + "line": 1552, "column": 17 }, "identifierName": "value" @@ -40887,15 +40817,15 @@ }, "right": { "type": "StringLiteral", - "start": 53881, - "end": 53889, + "start": 53821, + "end": 53829, "loc": { "start": { - "line": 1553, + "line": 1552, "column": 20 }, "end": { - "line": 1553, + "line": 1552, "column": 28 } }, @@ -40914,87 +40844,87 @@ }, { "type": "ExpressionStatement", - "start": 53909, - "end": 53946, + "start": 53849, + "end": 53886, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 8 }, "end": { - "line": 1555, + "line": 1554, "column": 45 } }, "expression": { "type": "AssignmentExpression", - "start": 53909, - "end": 53945, + "start": 53849, + "end": 53885, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 8 }, "end": { - "line": 1555, + "line": 1554, "column": 44 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 53909, - "end": 53937, + "start": 53849, + "end": 53877, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 8 }, "end": { - "line": 1555, + "line": 1554, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 53909, - "end": 53922, + "start": 53849, + "end": 53862, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 8 }, "end": { - "line": 1555, + "line": 1554, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 53909, - "end": 53913, + "start": 53849, + "end": 53853, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 8 }, "end": { - "line": 1555, + "line": 1554, "column": 12 } } }, "property": { "type": "Identifier", - "start": 53914, - "end": 53922, + "start": 53854, + "end": 53862, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 13 }, "end": { - "line": 1555, + "line": 1554, "column": 21 }, "identifierName": "_configs" @@ -41005,15 +40935,15 @@ }, "property": { "type": "Identifier", - "start": 53923, - "end": 53937, + "start": 53863, + "end": 53877, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 22 }, "end": { - "line": 1555, + "line": 1554, "column": 36 }, "identifierName": "keyboardLayout" @@ -41024,15 +40954,15 @@ }, "right": { "type": "Identifier", - "start": 53940, - "end": 53945, + "start": 53880, + "end": 53885, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 39 }, "end": { - "line": 1555, + "line": 1554, "column": 44 }, "identifierName": "value" @@ -41043,73 +40973,73 @@ }, { "type": "ExpressionStatement", - "start": 53955, - "end": 53998, + "start": 53895, + "end": 53938, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 8 }, "end": { - "line": 1556, + "line": 1555, "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 53955, - "end": 53997, + "start": 53895, + "end": 53937, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 8 }, "end": { - "line": 1556, + "line": 1555, "column": 50 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 53955, - "end": 53966, + "start": 53895, + "end": 53906, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 8 }, "end": { - "line": 1556, + "line": 1555, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 53955, - "end": 53959, + "start": 53895, + "end": 53899, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 8 }, "end": { - "line": 1556, + "line": 1555, "column": 12 } } }, "property": { "type": "Identifier", - "start": 53960, - "end": 53966, + "start": 53900, + "end": 53906, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 13 }, "end": { - "line": 1556, + "line": 1555, "column": 19 }, "identifierName": "keyMap" @@ -41120,58 +41050,58 @@ }, "right": { "type": "MemberExpression", - "start": 53969, - "end": 53997, + "start": 53909, + "end": 53937, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 22 }, "end": { - "line": 1556, + "line": 1555, "column": 50 } }, "object": { "type": "MemberExpression", - "start": 53969, - "end": 53982, + "start": 53909, + "end": 53922, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 22 }, "end": { - "line": 1556, + "line": 1555, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 53969, - "end": 53973, + "start": 53909, + "end": 53913, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 22 }, "end": { - "line": 1556, + "line": 1555, "column": 26 } } }, "property": { "type": "Identifier", - "start": 53974, - "end": 53982, + "start": 53914, + "end": 53922, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 27 }, "end": { - "line": 1556, + "line": 1555, "column": 35 }, "identifierName": "_configs" @@ -41182,15 +41112,15 @@ }, "property": { "type": "Identifier", - "start": 53983, - "end": 53997, + "start": 53923, + "end": 53937, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 36 }, "end": { - "line": 1556, + "line": 1555, "column": 50 }, "identifierName": "keyboardLayout" @@ -41209,15 +41139,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 53321, - "end": 53555, + "start": 53261, + "end": 53495, "loc": { "start": { - "line": 1537, + "line": 1536, "column": 4 }, "end": { - "line": 1547, + "line": 1546, "column": 7 } } @@ -41227,15 +41157,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 54010, - "end": 54240, + "start": 53950, + "end": 54180, "loc": { "start": { - "line": 1559, + "line": 1558, "column": 4 }, "end": { - "line": 1569, + "line": 1568, "column": 7 } } @@ -41244,15 +41174,15 @@ }, { "type": "ClassMethod", - "start": 54245, - "end": 54318, + "start": 54185, + "end": 54258, "loc": { "start": { - "line": 1570, + "line": 1569, "column": 4 }, "end": { - "line": 1572, + "line": 1571, "column": 5 } }, @@ -41260,15 +41190,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 54249, - "end": 54263, + "start": 54189, + "end": 54203, "loc": { "start": { - "line": 1570, + "line": 1569, "column": 8 }, "end": { - "line": 1570, + "line": 1569, "column": 22 }, "identifierName": "keyboardLayout" @@ -41283,87 +41213,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 54266, - "end": 54318, + "start": 54206, + "end": 54258, "loc": { "start": { - "line": 1570, + "line": 1569, "column": 25 }, "end": { - "line": 1572, + "line": 1571, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 54276, - "end": 54312, + "start": 54216, + "end": 54252, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 8 }, "end": { - "line": 1571, + "line": 1570, "column": 44 } }, "argument": { "type": "MemberExpression", - "start": 54283, - "end": 54311, + "start": 54223, + "end": 54251, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 15 }, "end": { - "line": 1571, + "line": 1570, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 54283, - "end": 54296, + "start": 54223, + "end": 54236, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 15 }, "end": { - "line": 1571, + "line": 1570, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 54283, - "end": 54287, + "start": 54223, + "end": 54227, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 15 }, "end": { - "line": 1571, + "line": 1570, "column": 19 } } }, "property": { "type": "Identifier", - "start": 54288, - "end": 54296, + "start": 54228, + "end": 54236, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 20 }, "end": { - "line": 1571, + "line": 1570, "column": 28 }, "identifierName": "_configs" @@ -41374,15 +41304,15 @@ }, "property": { "type": "Identifier", - "start": 54297, - "end": 54311, + "start": 54237, + "end": 54251, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 29 }, "end": { - "line": 1571, + "line": 1570, "column": 43 }, "identifierName": "keyboardLayout" @@ -41400,15 +41330,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 54010, - "end": 54240, + "start": 53950, + "end": 54180, "loc": { "start": { - "line": 1559, + "line": 1558, "column": 4 }, "end": { - "line": 1569, + "line": 1568, "column": 7 } } @@ -41418,15 +41348,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 54324, - "end": 54916, + "start": 54264, + "end": 54856, "loc": { "start": { - "line": 1574, + "line": 1573, "column": 4 }, "end": { - "line": 1585, + "line": 1584, "column": 7 } } @@ -41435,15 +41365,15 @@ }, { "type": "ClassMethod", - "start": 54921, - "end": 55008, + "start": 54861, + "end": 54948, "loc": { "start": { - "line": 1586, + "line": 1585, "column": 4 }, "end": { - "line": 1588, + "line": 1587, "column": 5 } }, @@ -41451,15 +41381,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 54925, - "end": 54935, + "start": 54865, + "end": 54875, "loc": { "start": { - "line": 1586, + "line": 1585, "column": 8 }, "end": { - "line": 1586, + "line": 1585, "column": 18 }, "identifierName": "smartPivot" @@ -41474,15 +41404,15 @@ "params": [ { "type": "Identifier", - "start": 54936, - "end": 54943, + "start": 54876, + "end": 54883, "loc": { "start": { - "line": 1586, + "line": 1585, "column": 19 }, "end": { - "line": 1586, + "line": 1585, "column": 26 }, "identifierName": "enabled" @@ -41492,102 +41422,102 @@ ], "body": { "type": "BlockStatement", - "start": 54945, - "end": 55008, + "start": 54885, + "end": 54948, "loc": { "start": { - "line": 1586, + "line": 1585, "column": 28 }, "end": { - "line": 1588, + "line": 1587, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 54955, - "end": 55002, + "start": 54895, + "end": 54942, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 8 }, "end": { - "line": 1587, + "line": 1586, "column": 55 } }, "expression": { "type": "AssignmentExpression", - "start": 54955, - "end": 55001, + "start": 54895, + "end": 54941, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 8 }, "end": { - "line": 1587, + "line": 1586, "column": 54 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 54955, - "end": 54979, + "start": 54895, + "end": 54919, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 8 }, "end": { - "line": 1587, + "line": 1586, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 54955, - "end": 54968, + "start": 54895, + "end": 54908, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 8 }, "end": { - "line": 1587, + "line": 1586, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 54955, - "end": 54959, + "start": 54895, + "end": 54899, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 8 }, "end": { - "line": 1587, + "line": 1586, "column": 12 } } }, "property": { "type": "Identifier", - "start": 54960, - "end": 54968, + "start": 54900, + "end": 54908, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 13 }, "end": { - "line": 1587, + "line": 1586, "column": 21 }, "identifierName": "_configs" @@ -41598,15 +41528,15 @@ }, "property": { "type": "Identifier", - "start": 54969, - "end": 54979, + "start": 54909, + "end": 54919, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 22 }, "end": { - "line": 1587, + "line": 1586, "column": 32 }, "identifierName": "smartPivot" @@ -41617,29 +41547,29 @@ }, "right": { "type": "BinaryExpression", - "start": 54983, - "end": 55000, + "start": 54923, + "end": 54940, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 36 }, "end": { - "line": 1587, + "line": 1586, "column": 53 } }, "left": { "type": "Identifier", - "start": 54983, - "end": 54990, + "start": 54923, + "end": 54930, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 36 }, "end": { - "line": 1587, + "line": 1586, "column": 43 }, "identifierName": "enabled" @@ -41649,15 +41579,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 54995, - "end": 55000, + "start": 54935, + "end": 54940, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 48 }, "end": { - "line": 1587, + "line": 1586, "column": 53 } }, @@ -41665,7 +41595,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 54982 + "parenStart": 54922 } } } @@ -41678,15 +41608,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 54324, - "end": 54916, + "start": 54264, + "end": 54856, "loc": { "start": { - "line": 1574, + "line": 1573, "column": 4 }, "end": { - "line": 1585, + "line": 1584, "column": 7 } } @@ -41696,15 +41626,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 55014, - "end": 55614, + "start": 54954, + "end": 55554, "loc": { "start": { - "line": 1590, + "line": 1589, "column": 4 }, "end": { - "line": 1601, + "line": 1600, "column": 7 } } @@ -41713,15 +41643,15 @@ }, { "type": "ClassMethod", - "start": 55619, - "end": 55684, + "start": 55559, + "end": 55624, "loc": { "start": { - "line": 1602, + "line": 1601, "column": 4 }, "end": { - "line": 1604, + "line": 1603, "column": 5 } }, @@ -41729,15 +41659,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 55623, - "end": 55633, + "start": 55563, + "end": 55573, "loc": { "start": { - "line": 1602, + "line": 1601, "column": 8 }, "end": { - "line": 1602, + "line": 1601, "column": 18 }, "identifierName": "smartPivot" @@ -41752,87 +41682,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 55636, - "end": 55684, + "start": 55576, + "end": 55624, "loc": { "start": { - "line": 1602, + "line": 1601, "column": 21 }, "end": { - "line": 1604, + "line": 1603, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 55646, - "end": 55678, + "start": 55586, + "end": 55618, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 8 }, "end": { - "line": 1603, + "line": 1602, "column": 40 } }, "argument": { "type": "MemberExpression", - "start": 55653, - "end": 55677, + "start": 55593, + "end": 55617, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 15 }, "end": { - "line": 1603, + "line": 1602, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 55653, - "end": 55666, + "start": 55593, + "end": 55606, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 15 }, "end": { - "line": 1603, + "line": 1602, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 55653, - "end": 55657, + "start": 55593, + "end": 55597, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 15 }, "end": { - "line": 1603, + "line": 1602, "column": 19 } } }, "property": { "type": "Identifier", - "start": 55658, - "end": 55666, + "start": 55598, + "end": 55606, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 20 }, "end": { - "line": 1603, + "line": 1602, "column": 28 }, "identifierName": "_configs" @@ -41843,15 +41773,15 @@ }, "property": { "type": "Identifier", - "start": 55667, - "end": 55677, + "start": 55607, + "end": 55617, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 29 }, "end": { - "line": 1603, + "line": 1602, "column": 39 }, "identifierName": "smartPivot" @@ -41869,15 +41799,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 55014, - "end": 55614, + "start": 54954, + "end": 55554, "loc": { "start": { - "line": 1590, + "line": 1589, "column": 4 }, "end": { - "line": 1601, + "line": 1600, "column": 7 } } @@ -41887,15 +41817,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this ````CameraControl````.\n * @private\n ", - "start": 55690, - "end": 55761, + "start": 55630, + "end": 55701, "loc": { "start": { - "line": 1606, + "line": 1605, "column": 4 }, "end": { - "line": 1609, + "line": 1608, "column": 7 } } @@ -41904,15 +41834,15 @@ }, { "type": "ClassMethod", - "start": 55766, - "end": 55916, + "start": 55706, + "end": 55856, "loc": { "start": { - "line": 1610, + "line": 1609, "column": 4 }, "end": { - "line": 1615, + "line": 1614, "column": 5 } }, @@ -41920,15 +41850,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 55766, - "end": 55773, + "start": 55706, + "end": 55713, "loc": { "start": { - "line": 1610, + "line": 1609, "column": 4 }, "end": { - "line": 1610, + "line": 1609, "column": 11 }, "identifierName": "destroy" @@ -41944,23 +41874,102 @@ "params": [], "body": { "type": "BlockStatement", - "start": 55776, - "end": 55916, + "start": 55716, + "end": 55856, "loc": { "start": { - "line": 1610, + "line": 1609, "column": 14 }, "end": { - "line": 1615, + "line": 1614, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 55786, - "end": 55810, + "start": 55726, + "end": 55750, + "loc": { + "start": { + "line": 1610, + "column": 8 + }, + "end": { + "line": 1610, + "column": 32 + } + }, + "expression": { + "type": "CallExpression", + "start": 55726, + "end": 55749, + "loc": { + "start": { + "line": 1610, + "column": 8 + }, + "end": { + "line": 1610, + "column": 31 + } + }, + "callee": { + "type": "MemberExpression", + "start": 55726, + "end": 55747, + "loc": { + "start": { + "line": 1610, + "column": 8 + }, + "end": { + "line": 1610, + "column": 29 + } + }, + "object": { + "type": "ThisExpression", + "start": 55726, + "end": 55730, + "loc": { + "start": { + "line": 1610, + "column": 8 + }, + "end": { + "line": 1610, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 55731, + "end": 55747, + "loc": { + "start": { + "line": 1610, + "column": 13 + }, + "end": { + "line": 1610, + "column": 29 + }, + "identifierName": "_destroyHandlers" + }, + "name": "_destroyHandlers" + }, + "computed": false + }, + "arguments": [] + } + }, + { + "type": "ExpressionStatement", + "start": 55759, + "end": 55786, "loc": { "start": { "line": 1611, @@ -41968,13 +41977,13 @@ }, "end": { "line": 1611, - "column": 32 + "column": 35 } }, "expression": { "type": "CallExpression", - "start": 55786, - "end": 55809, + "start": 55759, + "end": 55785, "loc": { "start": { "line": 1611, @@ -41982,13 +41991,13 @@ }, "end": { "line": 1611, - "column": 31 + "column": 34 } }, "callee": { "type": "MemberExpression", - "start": 55786, - "end": 55807, + "start": 55759, + "end": 55783, "loc": { "start": { "line": 1611, @@ -41996,13 +42005,13 @@ }, "end": { "line": 1611, - "column": 29 + "column": 32 } }, "object": { "type": "ThisExpression", - "start": 55786, - "end": 55790, + "start": 55759, + "end": 55763, "loc": { "start": { "line": 1611, @@ -42016,8 +42025,8 @@ }, "property": { "type": "Identifier", - "start": 55791, - "end": 55807, + "start": 55764, + "end": 55783, "loc": { "start": { "line": 1611, @@ -42025,11 +42034,11 @@ }, "end": { "line": 1611, - "column": 29 + "column": 32 }, - "identifierName": "_destroyHandlers" + "identifierName": "_destroyControllers" }, - "name": "_destroyHandlers" + "name": "_destroyControllers" }, "computed": false }, @@ -42038,8 +42047,8 @@ }, { "type": "ExpressionStatement", - "start": 55819, - "end": 55846, + "start": 55795, + "end": 55825, "loc": { "start": { "line": 1612, @@ -42047,13 +42056,13 @@ }, "end": { "line": 1612, - "column": 35 + "column": 38 } }, "expression": { "type": "CallExpression", - "start": 55819, - "end": 55845, + "start": 55795, + "end": 55824, "loc": { "start": { "line": 1612, @@ -42061,13 +42070,13 @@ }, "end": { "line": 1612, - "column": 34 + "column": 37 } }, "callee": { "type": "MemberExpression", - "start": 55819, - "end": 55843, + "start": 55795, + "end": 55822, "loc": { "start": { "line": 1612, @@ -42075,128 +42084,49 @@ }, "end": { "line": 1612, - "column": 32 - } - }, - "object": { - "type": "ThisExpression", - "start": 55819, - "end": 55823, - "loc": { - "start": { - "line": 1612, - "column": 8 - }, - "end": { - "line": 1612, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 55824, - "end": 55843, - "loc": { - "start": { - "line": 1612, - "column": 13 - }, - "end": { - "line": 1612, - "column": 32 - }, - "identifierName": "_destroyControllers" - }, - "name": "_destroyControllers" - }, - "computed": false - }, - "arguments": [] - } - }, - { - "type": "ExpressionStatement", - "start": 55855, - "end": 55885, - "loc": { - "start": { - "line": 1613, - "column": 8 - }, - "end": { - "line": 1613, - "column": 38 - } - }, - "expression": { - "type": "CallExpression", - "start": 55855, - "end": 55884, - "loc": { - "start": { - "line": 1613, - "column": 8 - }, - "end": { - "line": 1613, - "column": 37 - } - }, - "callee": { - "type": "MemberExpression", - "start": 55855, - "end": 55882, - "loc": { - "start": { - "line": 1613, - "column": 8 - }, - "end": { - "line": 1613, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 55855, - "end": 55874, + "start": 55795, + "end": 55814, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 8 }, "end": { - "line": 1613, + "line": 1612, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 55855, - "end": 55859, + "start": 55795, + "end": 55799, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 8 }, "end": { - "line": 1613, + "line": 1612, "column": 12 } } }, "property": { "type": "Identifier", - "start": 55860, - "end": 55874, + "start": 55800, + "end": 55814, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 13 }, "end": { - "line": 1613, + "line": 1612, "column": 27 }, "identifierName": "_cameraUpdater" @@ -42207,15 +42137,15 @@ }, "property": { "type": "Identifier", - "start": 55875, - "end": 55882, + "start": 55815, + "end": 55822, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 28 }, "end": { - "line": 1613, + "line": 1612, "column": 35 }, "identifierName": "destroy" @@ -42229,72 +42159,72 @@ }, { "type": "ExpressionStatement", - "start": 55894, - "end": 55910, + "start": 55834, + "end": 55850, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 8 }, "end": { - "line": 1614, + "line": 1613, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 55894, - "end": 55909, + "start": 55834, + "end": 55849, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 8 }, "end": { - "line": 1614, + "line": 1613, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 55894, - "end": 55907, + "start": 55834, + "end": 55847, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 8 }, "end": { - "line": 1614, + "line": 1613, "column": 21 } }, "object": { "type": "Super", - "start": 55894, - "end": 55899, + "start": 55834, + "end": 55839, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 8 }, "end": { - "line": 1614, + "line": 1613, "column": 13 } } }, "property": { "type": "Identifier", - "start": 55900, - "end": 55907, + "start": 55840, + "end": 55847, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 14 }, "end": { - "line": 1614, + "line": 1613, "column": 21 }, "identifierName": "destroy" @@ -42313,15 +42243,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this ````CameraControl````.\n * @private\n ", - "start": 55690, - "end": 55761, + "start": 55630, + "end": 55701, "loc": { "start": { - "line": 1606, + "line": 1605, "column": 4 }, "end": { - "line": 1609, + "line": 1608, "column": 7 } } @@ -42330,15 +42260,15 @@ }, { "type": "ClassMethod", - "start": 55922, - "end": 56158, + "start": 55862, + "end": 56098, "loc": { "start": { - "line": 1617, + "line": 1616, "column": 4 }, "end": { - "line": 1624, + "line": 1623, "column": 5 } }, @@ -42346,15 +42276,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 55922, - "end": 55938, + "start": 55862, + "end": 55878, "loc": { "start": { - "line": 1617, + "line": 1616, "column": 4 }, "end": { - "line": 1617, + "line": 1616, "column": 20 }, "identifierName": "_destroyHandlers" @@ -42369,73 +42299,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 55941, - "end": 56158, + "start": 55881, + "end": 56098, "loc": { "start": { - "line": 1617, + "line": 1616, "column": 23 }, "end": { - "line": 1624, + "line": 1623, "column": 5 } }, "body": [ { "type": "ForStatement", - "start": 55951, - "end": 56152, + "start": 55891, + "end": 56092, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 8 }, "end": { - "line": 1623, + "line": 1622, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 55956, - "end": 55994, + "start": 55896, + "end": 55934, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 13 }, "end": { - "line": 1618, + "line": 1617, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 55960, - "end": 55965, + "start": 55900, + "end": 55905, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 17 }, "end": { - "line": 1618, + "line": 1617, "column": 22 } }, "id": { "type": "Identifier", - "start": 55960, - "end": 55961, + "start": 55900, + "end": 55901, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 17 }, "end": { - "line": 1618, + "line": 1617, "column": 18 }, "identifierName": "i" @@ -42444,15 +42374,15 @@ }, "init": { "type": "NumericLiteral", - "start": 55964, - "end": 55965, + "start": 55904, + "end": 55905, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 21 }, "end": { - "line": 1618, + "line": 1617, "column": 22 } }, @@ -42465,29 +42395,29 @@ }, { "type": "VariableDeclarator", - "start": 55967, - "end": 55994, + "start": 55907, + "end": 55934, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 24 }, "end": { - "line": 1618, + "line": 1617, "column": 51 } }, "id": { "type": "Identifier", - "start": 55967, - "end": 55970, + "start": 55907, + "end": 55910, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 24 }, "end": { - "line": 1618, + "line": 1617, "column": 27 }, "identifierName": "len" @@ -42496,58 +42426,58 @@ }, "init": { "type": "MemberExpression", - "start": 55973, - "end": 55994, + "start": 55913, + "end": 55934, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 30 }, "end": { - "line": 1618, + "line": 1617, "column": 51 } }, "object": { "type": "MemberExpression", - "start": 55973, - "end": 55987, + "start": 55913, + "end": 55927, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 30 }, "end": { - "line": 1618, + "line": 1617, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 55973, - "end": 55977, + "start": 55913, + "end": 55917, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 30 }, "end": { - "line": 1618, + "line": 1617, "column": 34 } } }, "property": { "type": "Identifier", - "start": 55978, - "end": 55987, + "start": 55918, + "end": 55927, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 35 }, "end": { - "line": 1618, + "line": 1617, "column": 44 }, "identifierName": "_handlers" @@ -42558,15 +42488,15 @@ }, "property": { "type": "Identifier", - "start": 55988, - "end": 55994, + "start": 55928, + "end": 55934, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 45 }, "end": { - "line": 1618, + "line": 1617, "column": 51 }, "identifierName": "length" @@ -42581,29 +42511,29 @@ }, "test": { "type": "BinaryExpression", - "start": 55996, - "end": 56003, + "start": 55936, + "end": 55943, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 53 }, "end": { - "line": 1618, + "line": 1617, "column": 60 } }, "left": { "type": "Identifier", - "start": 55996, - "end": 55997, + "start": 55936, + "end": 55937, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 53 }, "end": { - "line": 1618, + "line": 1617, "column": 54 }, "identifierName": "i" @@ -42613,15 +42543,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 56000, - "end": 56003, + "start": 55940, + "end": 55943, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 57 }, "end": { - "line": 1618, + "line": 1617, "column": 60 }, "identifierName": "len" @@ -42631,15 +42561,15 @@ }, "update": { "type": "UpdateExpression", - "start": 56005, - "end": 56008, + "start": 55945, + "end": 55948, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 62 }, "end": { - "line": 1618, + "line": 1617, "column": 65 } }, @@ -42647,15 +42577,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 56005, - "end": 56006, + "start": 55945, + "end": 55946, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 62 }, "end": { - "line": 1618, + "line": 1617, "column": 63 }, "identifierName": "i" @@ -42665,59 +42595,59 @@ }, "body": { "type": "BlockStatement", - "start": 56010, - "end": 56152, + "start": 55950, + "end": 56092, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 67 }, "end": { - "line": 1623, + "line": 1622, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 56024, - "end": 56058, + "start": 55964, + "end": 55998, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 12 }, "end": { - "line": 1619, + "line": 1618, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 56030, - "end": 56057, + "start": 55970, + "end": 55997, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 18 }, "end": { - "line": 1619, + "line": 1618, "column": 45 } }, "id": { "type": "Identifier", - "start": 56030, - "end": 56037, + "start": 55970, + "end": 55977, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 18 }, "end": { - "line": 1619, + "line": 1618, "column": 25 }, "identifierName": "handler" @@ -42726,58 +42656,58 @@ }, "init": { "type": "MemberExpression", - "start": 56040, - "end": 56057, + "start": 55980, + "end": 55997, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 28 }, "end": { - "line": 1619, + "line": 1618, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 56040, - "end": 56054, + "start": 55980, + "end": 55994, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 28 }, "end": { - "line": 1619, + "line": 1618, "column": 42 } }, "object": { "type": "ThisExpression", - "start": 56040, - "end": 56044, + "start": 55980, + "end": 55984, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 28 }, "end": { - "line": 1619, + "line": 1618, "column": 32 } } }, "property": { "type": "Identifier", - "start": 56045, - "end": 56054, + "start": 55985, + "end": 55994, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 33 }, "end": { - "line": 1619, + "line": 1618, "column": 42 }, "identifierName": "_handlers" @@ -42788,15 +42718,15 @@ }, "property": { "type": "Identifier", - "start": 56055, - "end": 56056, + "start": 55995, + "end": 55996, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 43 }, "end": { - "line": 1619, + "line": 1618, "column": 44 }, "identifierName": "i" @@ -42811,43 +42741,43 @@ }, { "type": "IfStatement", - "start": 56071, - "end": 56142, + "start": 56011, + "end": 56082, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 12 }, "end": { - "line": 1622, + "line": 1621, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 56075, - "end": 56090, + "start": 56015, + "end": 56030, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 16 }, "end": { - "line": 1620, + "line": 1619, "column": 31 } }, "object": { "type": "Identifier", - "start": 56075, - "end": 56082, + "start": 56015, + "end": 56022, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 16 }, "end": { - "line": 1620, + "line": 1619, "column": 23 }, "identifierName": "handler" @@ -42856,15 +42786,15 @@ }, "property": { "type": "Identifier", - "start": 56083, - "end": 56090, + "start": 56023, + "end": 56030, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 24 }, "end": { - "line": 1620, + "line": 1619, "column": 31 }, "identifierName": "destroy" @@ -42875,72 +42805,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 56092, - "end": 56142, + "start": 56032, + "end": 56082, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 33 }, "end": { - "line": 1622, + "line": 1621, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 56110, - "end": 56128, + "start": 56050, + "end": 56068, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 16 }, "end": { - "line": 1621, + "line": 1620, "column": 34 } }, "expression": { "type": "CallExpression", - "start": 56110, - "end": 56127, + "start": 56050, + "end": 56067, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 16 }, "end": { - "line": 1621, + "line": 1620, "column": 33 } }, "callee": { "type": "MemberExpression", - "start": 56110, - "end": 56125, + "start": 56050, + "end": 56065, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 16 }, "end": { - "line": 1621, + "line": 1620, "column": 31 } }, "object": { "type": "Identifier", - "start": 56110, - "end": 56117, + "start": 56050, + "end": 56057, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 16 }, "end": { - "line": 1621, + "line": 1620, "column": 23 }, "identifierName": "handler" @@ -42949,15 +42879,15 @@ }, "property": { "type": "Identifier", - "start": 56118, - "end": 56125, + "start": 56058, + "end": 56065, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 24 }, "end": { - "line": 1621, + "line": 1620, "column": 31 }, "identifierName": "destroy" @@ -42984,15 +42914,15 @@ }, { "type": "ClassMethod", - "start": 56164, - "end": 56418, + "start": 56104, + "end": 56358, "loc": { "start": { - "line": 1626, + "line": 1625, "column": 4 }, "end": { - "line": 1633, + "line": 1632, "column": 5 } }, @@ -43000,15 +42930,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 56164, - "end": 56183, + "start": 56104, + "end": 56123, "loc": { "start": { - "line": 1626, + "line": 1625, "column": 4 }, "end": { - "line": 1626, + "line": 1625, "column": 23 }, "identifierName": "_destroyControllers" @@ -43023,73 +42953,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 56186, - "end": 56418, + "start": 56126, + "end": 56358, "loc": { "start": { - "line": 1626, + "line": 1625, "column": 26 }, "end": { - "line": 1633, + "line": 1632, "column": 5 } }, "body": [ { "type": "ForStatement", - "start": 56196, - "end": 56412, + "start": 56136, + "end": 56352, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 8 }, "end": { - "line": 1632, + "line": 1631, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 56201, - "end": 56242, + "start": 56141, + "end": 56182, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 13 }, "end": { - "line": 1627, + "line": 1626, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 56205, - "end": 56210, + "start": 56145, + "end": 56150, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 17 }, "end": { - "line": 1627, + "line": 1626, "column": 22 } }, "id": { "type": "Identifier", - "start": 56205, - "end": 56206, + "start": 56145, + "end": 56146, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 17 }, "end": { - "line": 1627, + "line": 1626, "column": 18 }, "identifierName": "i" @@ -43098,15 +43028,15 @@ }, "init": { "type": "NumericLiteral", - "start": 56209, - "end": 56210, + "start": 56149, + "end": 56150, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 21 }, "end": { - "line": 1627, + "line": 1626, "column": 22 } }, @@ -43119,29 +43049,29 @@ }, { "type": "VariableDeclarator", - "start": 56212, - "end": 56242, + "start": 56152, + "end": 56182, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 24 }, "end": { - "line": 1627, + "line": 1626, "column": 54 } }, "id": { "type": "Identifier", - "start": 56212, - "end": 56215, + "start": 56152, + "end": 56155, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 24 }, "end": { - "line": 1627, + "line": 1626, "column": 27 }, "identifierName": "len" @@ -43150,58 +43080,58 @@ }, "init": { "type": "MemberExpression", - "start": 56218, - "end": 56242, + "start": 56158, + "end": 56182, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 30 }, "end": { - "line": 1627, + "line": 1626, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 56218, - "end": 56235, + "start": 56158, + "end": 56175, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 30 }, "end": { - "line": 1627, + "line": 1626, "column": 47 } }, "object": { "type": "ThisExpression", - "start": 56218, - "end": 56222, + "start": 56158, + "end": 56162, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 30 }, "end": { - "line": 1627, + "line": 1626, "column": 34 } } }, "property": { "type": "Identifier", - "start": 56223, - "end": 56235, + "start": 56163, + "end": 56175, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 35 }, "end": { - "line": 1627, + "line": 1626, "column": 47 }, "identifierName": "_controllers" @@ -43212,15 +43142,15 @@ }, "property": { "type": "Identifier", - "start": 56236, - "end": 56242, + "start": 56176, + "end": 56182, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 48 }, "end": { - "line": 1627, + "line": 1626, "column": 54 }, "identifierName": "length" @@ -43235,29 +43165,29 @@ }, "test": { "type": "BinaryExpression", - "start": 56244, - "end": 56251, + "start": 56184, + "end": 56191, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 56 }, "end": { - "line": 1627, + "line": 1626, "column": 63 } }, "left": { "type": "Identifier", - "start": 56244, - "end": 56245, + "start": 56184, + "end": 56185, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 56 }, "end": { - "line": 1627, + "line": 1626, "column": 57 }, "identifierName": "i" @@ -43267,15 +43197,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 56248, - "end": 56251, + "start": 56188, + "end": 56191, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 60 }, "end": { - "line": 1627, + "line": 1626, "column": 63 }, "identifierName": "len" @@ -43285,15 +43215,15 @@ }, "update": { "type": "UpdateExpression", - "start": 56253, - "end": 56256, + "start": 56193, + "end": 56196, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 65 }, "end": { - "line": 1627, + "line": 1626, "column": 68 } }, @@ -43301,15 +43231,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 56253, - "end": 56254, + "start": 56193, + "end": 56194, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 65 }, "end": { - "line": 1627, + "line": 1626, "column": 66 }, "identifierName": "i" @@ -43319,59 +43249,59 @@ }, "body": { "type": "BlockStatement", - "start": 56258, - "end": 56412, + "start": 56198, + "end": 56352, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 70 }, "end": { - "line": 1632, + "line": 1631, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 56272, - "end": 56312, + "start": 56212, + "end": 56252, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 12 }, "end": { - "line": 1628, + "line": 1627, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 56278, - "end": 56311, + "start": 56218, + "end": 56251, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 18 }, "end": { - "line": 1628, + "line": 1627, "column": 51 } }, "id": { "type": "Identifier", - "start": 56278, - "end": 56288, + "start": 56218, + "end": 56228, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 18 }, "end": { - "line": 1628, + "line": 1627, "column": 28 }, "identifierName": "controller" @@ -43380,58 +43310,58 @@ }, "init": { "type": "MemberExpression", - "start": 56291, - "end": 56311, + "start": 56231, + "end": 56251, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 31 }, "end": { - "line": 1628, + "line": 1627, "column": 51 } }, "object": { "type": "MemberExpression", - "start": 56291, - "end": 56308, + "start": 56231, + "end": 56248, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 31 }, "end": { - "line": 1628, + "line": 1627, "column": 48 } }, "object": { "type": "ThisExpression", - "start": 56291, - "end": 56295, + "start": 56231, + "end": 56235, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 31 }, "end": { - "line": 1628, + "line": 1627, "column": 35 } } }, "property": { "type": "Identifier", - "start": 56296, - "end": 56308, + "start": 56236, + "end": 56248, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 36 }, "end": { - "line": 1628, + "line": 1627, "column": 48 }, "identifierName": "_controllers" @@ -43442,15 +43372,15 @@ }, "property": { "type": "Identifier", - "start": 56309, - "end": 56310, + "start": 56249, + "end": 56250, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 49 }, "end": { - "line": 1628, + "line": 1627, "column": 50 }, "identifierName": "i" @@ -43465,43 +43395,43 @@ }, { "type": "IfStatement", - "start": 56325, - "end": 56402, + "start": 56265, + "end": 56342, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 12 }, "end": { - "line": 1631, + "line": 1630, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 56329, - "end": 56347, + "start": 56269, + "end": 56287, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 16 }, "end": { - "line": 1629, + "line": 1628, "column": 34 } }, "object": { "type": "Identifier", - "start": 56329, - "end": 56339, + "start": 56269, + "end": 56279, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 16 }, "end": { - "line": 1629, + "line": 1628, "column": 26 }, "identifierName": "controller" @@ -43510,15 +43440,15 @@ }, "property": { "type": "Identifier", - "start": 56340, - "end": 56347, + "start": 56280, + "end": 56287, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 27 }, "end": { - "line": 1629, + "line": 1628, "column": 34 }, "identifierName": "destroy" @@ -43529,72 +43459,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 56349, - "end": 56402, + "start": 56289, + "end": 56342, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 36 }, "end": { - "line": 1631, + "line": 1630, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 56367, - "end": 56388, + "start": 56307, + "end": 56328, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 16 }, "end": { - "line": 1630, + "line": 1629, "column": 37 } }, "expression": { "type": "CallExpression", - "start": 56367, - "end": 56387, + "start": 56307, + "end": 56327, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 16 }, "end": { - "line": 1630, + "line": 1629, "column": 36 } }, "callee": { "type": "MemberExpression", - "start": 56367, - "end": 56385, + "start": 56307, + "end": 56325, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 16 }, "end": { - "line": 1630, + "line": 1629, "column": 34 } }, "object": { "type": "Identifier", - "start": 56367, - "end": 56377, + "start": 56307, + "end": 56317, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 16 }, "end": { - "line": 1630, + "line": 1629, "column": 26 }, "identifierName": "controller" @@ -43603,15 +43533,15 @@ }, "property": { "type": "Identifier", - "start": 56378, - "end": 56385, + "start": 56318, + "end": 56325, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 27 }, "end": { - "line": 1630, + "line": 1629, "column": 34 }, "identifierName": "destroy" @@ -43644,15 +43574,15 @@ }, { "type": "ExportNamedDeclaration", - "start": 56422, - "end": 56451, + "start": 56362, + "end": 56391, "loc": { "start": { - "line": 1636, + "line": 1635, "column": 0 }, "end": { - "line": 1638, + "line": 1637, "column": 2 } }, @@ -43660,29 +43590,29 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 56435, - "end": 56448, + "start": 56375, + "end": 56388, "loc": { "start": { - "line": 1637, + "line": 1636, "column": 4 }, "end": { - "line": 1637, + "line": 1636, "column": 17 } }, "local": { "type": "Identifier", - "start": 56435, - "end": 56448, + "start": 56375, + "end": 56388, "loc": { "start": { - "line": 1637, + "line": 1636, "column": 4 }, "end": { - "line": 1637, + "line": 1636, "column": 17 }, "identifierName": "CameraControl" @@ -43691,15 +43621,15 @@ }, "exported": { "type": "Identifier", - "start": 56435, - "end": 56448, + "start": 56375, + "end": 56388, "loc": { "start": { - "line": 1637, + "line": 1636, "column": 4 }, "end": { - "line": 1637, + "line": 1636, "column": 17 }, "identifierName": "CameraControl" @@ -43712,29 +43642,29 @@ }, { "type": "ExportNamedDeclaration", - "start": 56422, - "end": 56451, + "start": 56362, + "end": 56391, "loc": { "start": { - "line": 1636, + "line": 1635, "column": 0 }, "end": { - "line": 1638, + "line": 1637, "column": 2 } }, "declaration": { "type": "ClassDeclaration", "start": 17797, - "end": 56420, + "end": 56360, "loc": { "start": { "line": 477, "column": 0 }, "end": { - "line": 1634, + "line": 1633, "column": 1 } }, @@ -43776,14 +43706,14 @@ "body": { "type": "ClassBody", "start": 17835, - "end": 56420, + "end": 56360, "loc": { "start": { "line": 477, "column": 38 }, "end": { - "line": 1634, + "line": 1633, "column": 1 } }, @@ -43791,14 +43721,14 @@ { "type": "ClassMethod", "start": 17894, - "end": 25411, + "end": 25351, "loc": { "start": { "line": 483, "column": 4 }, "end": { - "line": 754, + "line": 753, "column": 5 } }, @@ -43897,14 +43827,14 @@ "body": { "type": "BlockStatement", "start": 17923, - "end": 25411, + "end": 25351, "loc": { "start": { "line": 483, "column": 33 }, "end": { - "line": 754, + "line": 753, "column": 5 } }, @@ -48676,28 +48606,28 @@ { "type": "ExpressionStatement", "start": 21827, - "end": 22318, + "end": 22258, "loc": { "start": { "line": 668, "column": 8 }, "end": { - "line": 682, + "line": 681, "column": 10 } }, "expression": { "type": "AssignmentExpression", "start": 21827, - "end": 22317, + "end": 22257, "loc": { "start": { "line": 668, "column": 8 }, "end": { - "line": 682, + "line": 681, "column": 9 } }, @@ -48755,14 +48685,14 @@ "right": { "type": "ObjectExpression", "start": 21842, - "end": 22317, + "end": 22257, "loc": { "start": { "line": 668, "column": 23 }, "end": { - "line": 682, + "line": 681, "column": 9 } }, @@ -48922,7 +48852,7 @@ { "type": "ObjectProperty", "start": 21929, - "end": 21950, + "end": 21953, "loc": { "start": { "line": 671, @@ -48930,7 +48860,7 @@ }, "end": { "line": 671, - "column": 33 + "column": 36 } }, "method": false, @@ -48939,7 +48869,7 @@ "key": { "type": "Identifier", "start": 21929, - "end": 21943, + "end": 21947, "loc": { "start": { "line": 671, @@ -48947,33 +48877,33 @@ }, "end": { "line": 671, - "column": 26 + "column": 30 }, - "identifierName": "inputFromMouse" + "identifierName": "followPointerDirty" }, - "name": "inputFromMouse" + "name": "followPointerDirty" }, "value": { "type": "BooleanLiteral", - "start": 21945, - "end": 21950, + "start": 21949, + "end": 21953, "loc": { "start": { "line": 671, - "column": 28 + "column": 32 }, "end": { "line": 671, - "column": 33 + "column": 36 } }, - "value": false + "value": true } }, { "type": "ObjectProperty", - "start": 21989, - "end": 22013, + "start": 21967, + "end": 21986, "loc": { "start": { "line": 672, @@ -48981,7 +48911,7 @@ }, "end": { "line": 672, - "column": 36 + "column": 31 } }, "method": false, @@ -48989,8 +48919,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 21989, - "end": 22007, + "start": 21967, + "end": 21983, "loc": { "start": { "line": 672, @@ -48998,52 +48928,37 @@ }, "end": { "line": 672, - "column": 30 + "column": 28 }, - "identifierName": "followPointerDirty" + "identifierName": "mouseDownClientX" }, - "name": "followPointerDirty", - "leadingComments": null + "name": "mouseDownClientX" }, "value": { - "type": "BooleanLiteral", - "start": 22009, - "end": 22013, + "type": "NumericLiteral", + "start": 21985, + "end": 21986, "loc": { "start": { "line": 672, - "column": 32 + "column": 30 }, "end": { "line": 672, - "column": 36 + "column": 31 } }, - "value": true - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " TODO: Is this needed?", - "start": 21952, - "end": 21976, - "loc": { - "start": { - "line": 671, - "column": 35 - }, - "end": { - "line": 671, - "column": 59 - } - } - } - ] + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } }, { "type": "ObjectProperty", - "start": 22027, - "end": 22046, + "start": 22000, + "end": 22019, "loc": { "start": { "line": 673, @@ -49059,8 +48974,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 22027, - "end": 22043, + "start": 22000, + "end": 22016, "loc": { "start": { "line": 673, @@ -49070,14 +48985,14 @@ "line": 673, "column": 28 }, - "identifierName": "mouseDownClientX" + "identifierName": "mouseDownClientY" }, - "name": "mouseDownClientX" + "name": "mouseDownClientY" }, "value": { "type": "NumericLiteral", - "start": 22045, - "end": 22046, + "start": 22018, + "end": 22019, "loc": { "start": { "line": 673, @@ -49097,8 +49012,8 @@ }, { "type": "ObjectProperty", - "start": 22060, - "end": 22079, + "start": 22033, + "end": 22052, "loc": { "start": { "line": 674, @@ -49114,8 +49029,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 22060, - "end": 22076, + "start": 22033, + "end": 22049, "loc": { "start": { "line": 674, @@ -49125,14 +49040,14 @@ "line": 674, "column": 28 }, - "identifierName": "mouseDownClientY" + "identifierName": "mouseDownCursorX" }, - "name": "mouseDownClientY" + "name": "mouseDownCursorX" }, "value": { "type": "NumericLiteral", - "start": 22078, - "end": 22079, + "start": 22051, + "end": 22052, "loc": { "start": { "line": 674, @@ -49152,8 +49067,8 @@ }, { "type": "ObjectProperty", - "start": 22093, - "end": 22112, + "start": 22066, + "end": 22085, "loc": { "start": { "line": 675, @@ -49169,8 +49084,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 22093, - "end": 22109, + "start": 22066, + "end": 22082, "loc": { "start": { "line": 675, @@ -49180,14 +49095,14 @@ "line": 675, "column": 28 }, - "identifierName": "mouseDownCursorX" + "identifierName": "mouseDownCursorY" }, - "name": "mouseDownCursorX" + "name": "mouseDownCursorY" }, "value": { "type": "NumericLiteral", - "start": 22111, - "end": 22112, + "start": 22084, + "end": 22085, "loc": { "start": { "line": 675, @@ -49207,8 +49122,8 @@ }, { "type": "ObjectProperty", - "start": 22126, - "end": 22145, + "start": 22099, + "end": 22119, "loc": { "start": { "line": 676, @@ -49216,7 +49131,7 @@ }, "end": { "line": 676, - "column": 31 + "column": 32 } }, "method": false, @@ -49224,8 +49139,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 22126, - "end": 22142, + "start": 22099, + "end": 22113, "loc": { "start": { "line": 676, @@ -49233,61 +49148,6 @@ }, "end": { "line": 676, - "column": 28 - }, - "identifierName": "mouseDownCursorY" - }, - "name": "mouseDownCursorY" - }, - "value": { - "type": "NumericLiteral", - "start": 22144, - "end": 22145, - "loc": { - "start": { - "line": 676, - "column": 30 - }, - "end": { - "line": 676, - "column": 31 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - } - }, - { - "type": "ObjectProperty", - "start": 22159, - "end": 22179, - "loc": { - "start": { - "line": 677, - "column": 12 - }, - "end": { - "line": 677, - "column": 32 - } - }, - "method": false, - "shorthand": false, - "computed": false, - "key": { - "type": "Identifier", - "start": 22159, - "end": 22173, - "loc": { - "start": { - "line": 677, - "column": 12 - }, - "end": { - "line": 677, "column": 26 }, "identifierName": "touchStartTime" @@ -49296,15 +49156,15 @@ }, "value": { "type": "NullLiteral", - "start": 22175, - "end": 22179, + "start": 22115, + "end": 22119, "loc": { "start": { - "line": 677, + "line": 676, "column": 28 }, "end": { - "line": 677, + "line": 676, "column": 32 } } @@ -49312,15 +49172,15 @@ }, { "type": "ObjectProperty", - "start": 22193, - "end": 22210, + "start": 22133, + "end": 22150, "loc": { "start": { - "line": 678, + "line": 677, "column": 12 }, "end": { - "line": 678, + "line": 677, "column": 29 } }, @@ -49329,15 +49189,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22193, - "end": 22206, + "start": 22133, + "end": 22146, "loc": { "start": { - "line": 678, + "line": 677, "column": 12 }, "end": { - "line": 678, + "line": 677, "column": 25 }, "identifierName": "activeTouches" @@ -49346,15 +49206,15 @@ }, "value": { "type": "ArrayExpression", - "start": 22208, - "end": 22210, + "start": 22148, + "end": 22150, "loc": { "start": { - "line": 678, + "line": 677, "column": 27 }, "end": { - "line": 678, + "line": 677, "column": 29 } }, @@ -49363,15 +49223,15 @@ }, { "type": "ObjectProperty", - "start": 22224, - "end": 22248, + "start": 22164, + "end": 22188, "loc": { "start": { - "line": 679, + "line": 678, "column": 12 }, "end": { - "line": 679, + "line": 678, "column": 36 } }, @@ -49380,15 +49240,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22224, - "end": 22235, + "start": 22164, + "end": 22175, "loc": { "start": { - "line": 679, + "line": 678, "column": 12 }, "end": { - "line": 679, + "line": 678, "column": 23 }, "identifierName": "tapStartPos" @@ -49397,43 +49257,43 @@ }, "value": { "type": "CallExpression", - "start": 22237, - "end": 22248, + "start": 22177, + "end": 22188, "loc": { "start": { - "line": 679, + "line": 678, "column": 25 }, "end": { - "line": 679, + "line": 678, "column": 36 } }, "callee": { "type": "MemberExpression", - "start": 22237, - "end": 22246, + "start": 22177, + "end": 22186, "loc": { "start": { - "line": 679, + "line": 678, "column": 25 }, "end": { - "line": 679, + "line": 678, "column": 34 } }, "object": { "type": "Identifier", - "start": 22237, - "end": 22241, + "start": 22177, + "end": 22181, "loc": { "start": { - "line": 679, + "line": 678, "column": 25 }, "end": { - "line": 679, + "line": 678, "column": 29 }, "identifierName": "math" @@ -49442,15 +49302,15 @@ }, "property": { "type": "Identifier", - "start": 22242, - "end": 22246, + "start": 22182, + "end": 22186, "loc": { "start": { - "line": 679, + "line": 678, "column": 30 }, "end": { - "line": 679, + "line": 678, "column": 34 }, "identifierName": "vec2" @@ -49464,15 +49324,15 @@ }, { "type": "ObjectProperty", - "start": 22262, - "end": 22278, + "start": 22202, + "end": 22218, "loc": { "start": { - "line": 680, + "line": 679, "column": 12 }, "end": { - "line": 680, + "line": 679, "column": 28 } }, @@ -49481,15 +49341,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22262, - "end": 22274, + "start": 22202, + "end": 22214, "loc": { "start": { - "line": 680, + "line": 679, "column": 12 }, "end": { - "line": 680, + "line": 679, "column": 24 }, "identifierName": "tapStartTime" @@ -49498,15 +49358,15 @@ }, "value": { "type": "UnaryExpression", - "start": 22276, - "end": 22278, + "start": 22216, + "end": 22218, "loc": { "start": { - "line": 680, + "line": 679, "column": 26 }, "end": { - "line": 680, + "line": 679, "column": 28 } }, @@ -49514,15 +49374,15 @@ "prefix": true, "argument": { "type": "NumericLiteral", - "start": 22277, - "end": 22278, + "start": 22217, + "end": 22218, "loc": { "start": { - "line": 680, + "line": 679, "column": 27 }, "end": { - "line": 680, + "line": 679, "column": 28 } }, @@ -49539,15 +49399,15 @@ }, { "type": "ObjectProperty", - "start": 22292, - "end": 22307, + "start": 22232, + "end": 22247, "loc": { "start": { - "line": 681, + "line": 680, "column": 12 }, "end": { - "line": 681, + "line": 680, "column": 27 } }, @@ -49556,15 +49416,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22292, - "end": 22303, + "start": 22232, + "end": 22243, "loc": { "start": { - "line": 681, + "line": 680, "column": 12 }, "end": { - "line": 681, + "line": 680, "column": 23 }, "identifierName": "lastTapTime" @@ -49573,15 +49433,15 @@ }, "value": { "type": "UnaryExpression", - "start": 22305, - "end": 22307, + "start": 22245, + "end": 22247, "loc": { "start": { - "line": 681, + "line": 680, "column": 25 }, "end": { - "line": 681, + "line": 680, "column": 27 } }, @@ -49589,15 +49449,15 @@ "prefix": true, "argument": { "type": "NumericLiteral", - "start": 22306, - "end": 22307, + "start": 22246, + "end": 22247, "loc": { "start": { - "line": 681, + "line": 680, "column": 26 }, "end": { - "line": 681, + "line": 680, "column": 27 } }, @@ -49638,15 +49498,15 @@ { "type": "CommentLine", "value": " Updates for CameraUpdater to process on next Scene \"tick\" event", - "start": 22328, - "end": 22394, + "start": 22268, + "end": 22334, "loc": { "start": { - "line": 684, + "line": 683, "column": 8 }, "end": { - "line": 684, + "line": 683, "column": 74 } } @@ -49655,58 +49515,58 @@ }, { "type": "ExpressionStatement", - "start": 22404, - "end": 22594, + "start": 22344, + "end": 22534, "loc": { "start": { - "line": 686, + "line": 685, "column": 8 }, "end": { - "line": 693, + "line": 692, "column": 10 } }, "expression": { "type": "AssignmentExpression", - "start": 22404, - "end": 22593, + "start": 22344, + "end": 22533, "loc": { "start": { - "line": 686, + "line": 685, "column": 8 }, "end": { - "line": 693, + "line": 692, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 22404, - "end": 22417, + "start": 22344, + "end": 22357, "loc": { "start": { - "line": 686, + "line": 685, "column": 8 }, "end": { - "line": 686, + "line": 685, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 22404, - "end": 22408, + "start": 22344, + "end": 22348, "loc": { "start": { - "line": 686, + "line": 685, "column": 8 }, "end": { - "line": 686, + "line": 685, "column": 12 } }, @@ -49714,15 +49574,15 @@ }, "property": { "type": "Identifier", - "start": 22409, - "end": 22417, + "start": 22349, + "end": 22357, "loc": { "start": { - "line": 686, + "line": 685, "column": 13 }, "end": { - "line": 686, + "line": 685, "column": 21 }, "identifierName": "_updates" @@ -49734,30 +49594,30 @@ }, "right": { "type": "ObjectExpression", - "start": 22420, - "end": 22593, + "start": 22360, + "end": 22533, "loc": { "start": { - "line": 686, + "line": 685, "column": 24 }, "end": { - "line": 693, + "line": 692, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 22434, - "end": 22449, + "start": 22374, + "end": 22389, "loc": { "start": { - "line": 687, + "line": 686, "column": 12 }, "end": { - "line": 687, + "line": 686, "column": 27 } }, @@ -49766,15 +49626,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22434, - "end": 22446, + "start": 22374, + "end": 22386, "loc": { "start": { - "line": 687, + "line": 686, "column": 12 }, "end": { - "line": 687, + "line": 686, "column": 24 }, "identifierName": "rotateDeltaX" @@ -49783,15 +49643,15 @@ }, "value": { "type": "NumericLiteral", - "start": 22448, - "end": 22449, + "start": 22388, + "end": 22389, "loc": { "start": { - "line": 687, + "line": 686, "column": 26 }, "end": { - "line": 687, + "line": 686, "column": 27 } }, @@ -49804,15 +49664,15 @@ }, { "type": "ObjectProperty", - "start": 22463, - "end": 22478, + "start": 22403, + "end": 22418, "loc": { "start": { - "line": 688, + "line": 687, "column": 12 }, "end": { - "line": 688, + "line": 687, "column": 27 } }, @@ -49821,15 +49681,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22463, - "end": 22475, + "start": 22403, + "end": 22415, "loc": { "start": { - "line": 688, + "line": 687, "column": 12 }, "end": { - "line": 688, + "line": 687, "column": 24 }, "identifierName": "rotateDeltaY" @@ -49838,15 +49698,15 @@ }, "value": { "type": "NumericLiteral", - "start": 22477, - "end": 22478, + "start": 22417, + "end": 22418, "loc": { "start": { - "line": 688, + "line": 687, "column": 26 }, "end": { - "line": 688, + "line": 687, "column": 27 } }, @@ -49859,15 +49719,15 @@ }, { "type": "ObjectProperty", - "start": 22492, - "end": 22504, + "start": 22432, + "end": 22444, "loc": { "start": { - "line": 689, + "line": 688, "column": 12 }, "end": { - "line": 689, + "line": 688, "column": 24 } }, @@ -49876,15 +49736,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22492, - "end": 22501, + "start": 22432, + "end": 22441, "loc": { "start": { - "line": 689, + "line": 688, "column": 12 }, "end": { - "line": 689, + "line": 688, "column": 21 }, "identifierName": "panDeltaX" @@ -49893,15 +49753,15 @@ }, "value": { "type": "NumericLiteral", - "start": 22503, - "end": 22504, + "start": 22443, + "end": 22444, "loc": { "start": { - "line": 689, + "line": 688, "column": 23 }, "end": { - "line": 689, + "line": 688, "column": 24 } }, @@ -49914,15 +49774,15 @@ }, { "type": "ObjectProperty", - "start": 22518, - "end": 22530, + "start": 22458, + "end": 22470, "loc": { "start": { - "line": 690, + "line": 689, "column": 12 }, "end": { - "line": 690, + "line": 689, "column": 24 } }, @@ -49931,15 +49791,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22518, - "end": 22527, + "start": 22458, + "end": 22467, "loc": { "start": { - "line": 690, + "line": 689, "column": 12 }, "end": { - "line": 690, + "line": 689, "column": 21 }, "identifierName": "panDeltaY" @@ -49948,15 +49808,15 @@ }, "value": { "type": "NumericLiteral", - "start": 22529, - "end": 22530, + "start": 22469, + "end": 22470, "loc": { "start": { - "line": 690, + "line": 689, "column": 23 }, "end": { - "line": 690, + "line": 689, "column": 24 } }, @@ -49969,15 +49829,15 @@ }, { "type": "ObjectProperty", - "start": 22544, - "end": 22556, + "start": 22484, + "end": 22496, "loc": { "start": { - "line": 691, + "line": 690, "column": 12 }, "end": { - "line": 691, + "line": 690, "column": 24 } }, @@ -49986,15 +49846,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22544, - "end": 22553, + "start": 22484, + "end": 22493, "loc": { "start": { - "line": 691, + "line": 690, "column": 12 }, "end": { - "line": 691, + "line": 690, "column": 21 }, "identifierName": "panDeltaZ" @@ -50003,15 +49863,15 @@ }, "value": { "type": "NumericLiteral", - "start": 22555, - "end": 22556, + "start": 22495, + "end": 22496, "loc": { "start": { - "line": 691, + "line": 690, "column": 23 }, "end": { - "line": 691, + "line": 690, "column": 24 } }, @@ -50024,15 +49884,15 @@ }, { "type": "ObjectProperty", - "start": 22570, - "end": 22583, + "start": 22510, + "end": 22523, "loc": { "start": { - "line": 692, + "line": 691, "column": 12 }, "end": { - "line": 692, + "line": 691, "column": 25 } }, @@ -50041,15 +49901,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22570, - "end": 22580, + "start": 22510, + "end": 22520, "loc": { "start": { - "line": 692, + "line": 691, "column": 12 }, "end": { - "line": 692, + "line": 691, "column": 22 }, "identifierName": "dollyDelta" @@ -50058,15 +49918,15 @@ }, "value": { "type": "NumericLiteral", - "start": 22582, - "end": 22583, + "start": 22522, + "end": 22523, "loc": { "start": { - "line": 692, + "line": 691, "column": 24 }, "end": { - "line": 692, + "line": 691, "column": 25 } }, @@ -50085,15 +49945,15 @@ { "type": "CommentLine", "value": " Updates for CameraUpdater to process on next Scene \"tick\" event", - "start": 22328, - "end": 22394, + "start": 22268, + "end": 22334, "loc": { "start": { - "line": 684, + "line": 683, "column": 8 }, "end": { - "line": 684, + "line": 683, "column": 74 } } @@ -50103,15 +49963,15 @@ { "type": "CommentLine", "value": " Controllers to assist input event handlers with controlling the Camera", - "start": 22604, - "end": 22677, + "start": 22544, + "end": 22617, "loc": { "start": { - "line": 695, + "line": 694, "column": 8 }, "end": { - "line": 695, + "line": 694, "column": 81 } } @@ -50120,44 +49980,44 @@ }, { "type": "VariableDeclaration", - "start": 22687, - "end": 22712, + "start": 22627, + "end": 22652, "loc": { "start": { - "line": 697, + "line": 696, "column": 8 }, "end": { - "line": 697, + "line": 696, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 22693, - "end": 22711, + "start": 22633, + "end": 22651, "loc": { "start": { - "line": 697, + "line": 696, "column": 14 }, "end": { - "line": 697, + "line": 696, "column": 32 } }, "id": { "type": "Identifier", - "start": 22693, - "end": 22698, + "start": 22633, + "end": 22638, "loc": { "start": { - "line": 697, + "line": 696, "column": 14 }, "end": { - "line": 697, + "line": 696, "column": 19 }, "identifierName": "scene" @@ -50167,44 +50027,44 @@ }, "init": { "type": "MemberExpression", - "start": 22701, - "end": 22711, + "start": 22641, + "end": 22651, "loc": { "start": { - "line": 697, + "line": 696, "column": 22 }, "end": { - "line": 697, + "line": 696, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 22701, - "end": 22705, + "start": 22641, + "end": 22645, "loc": { "start": { - "line": 697, + "line": 696, "column": 22 }, "end": { - "line": 697, + "line": 696, "column": 26 } } }, "property": { "type": "Identifier", - "start": 22706, - "end": 22711, + "start": 22646, + "end": 22651, "loc": { "start": { - "line": 697, + "line": 696, "column": 27 }, "end": { - "line": 697, + "line": 696, "column": 32 }, "identifierName": "scene" @@ -50221,15 +50081,15 @@ { "type": "CommentLine", "value": " Controllers to assist input event handlers with controlling the Camera", - "start": 22604, - "end": 22677, + "start": 22544, + "end": 22617, "loc": { "start": { - "line": 695, + "line": 694, "column": 8 }, "end": { - "line": 695, + "line": 694, "column": 81 } } @@ -50238,73 +50098,73 @@ }, { "type": "ExpressionStatement", - "start": 22722, - "end": 23086, + "start": 22662, + "end": 23026, "loc": { "start": { - "line": 699, + "line": 698, "column": 8 }, "end": { - "line": 707, + "line": 706, "column": 10 } }, "expression": { "type": "AssignmentExpression", - "start": 22722, - "end": 23085, + "start": 22662, + "end": 23025, "loc": { "start": { - "line": 699, + "line": 698, "column": 8 }, "end": { - "line": 707, + "line": 706, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 22722, - "end": 22739, + "start": 22662, + "end": 22679, "loc": { "start": { - "line": 699, + "line": 698, "column": 8 }, "end": { - "line": 699, + "line": 698, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 22722, - "end": 22726, + "start": 22662, + "end": 22666, "loc": { "start": { - "line": 699, + "line": 698, "column": 8 }, "end": { - "line": 699, + "line": 698, "column": 12 } } }, "property": { "type": "Identifier", - "start": 22727, - "end": 22739, + "start": 22667, + "end": 22679, "loc": { "start": { - "line": 699, + "line": 698, "column": 13 }, "end": { - "line": 699, + "line": 698, "column": 25 }, "identifierName": "_controllers" @@ -50315,30 +50175,30 @@ }, "right": { "type": "ObjectExpression", - "start": 22742, - "end": 23085, + "start": 22682, + "end": 23025, "loc": { "start": { - "line": 699, + "line": 698, "column": 28 }, "end": { - "line": 707, + "line": 706, "column": 9 } }, "properties": [ { "type": "ObjectProperty", - "start": 22756, - "end": 22775, + "start": 22696, + "end": 22715, "loc": { "start": { - "line": 700, + "line": 699, "column": 12 }, "end": { - "line": 700, + "line": 699, "column": 31 } }, @@ -50347,15 +50207,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22756, - "end": 22769, + "start": 22696, + "end": 22709, "loc": { "start": { - "line": 700, + "line": 699, "column": 12 }, "end": { - "line": 700, + "line": 699, "column": 25 }, "identifierName": "cameraControl" @@ -50364,15 +50224,15 @@ }, "value": { "type": "ThisExpression", - "start": 22771, - "end": 22775, + "start": 22711, + "end": 22715, "loc": { "start": { - "line": 700, + "line": 699, "column": 27 }, "end": { - "line": 700, + "line": 699, "column": 31 } } @@ -50380,15 +50240,15 @@ }, { "type": "ObjectProperty", - "start": 22789, - "end": 22844, + "start": 22729, + "end": 22784, "loc": { "start": { - "line": 701, + "line": 700, "column": 12 }, "end": { - "line": 701, + "line": 700, "column": 67 } }, @@ -50397,15 +50257,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22789, - "end": 22803, + "start": 22729, + "end": 22743, "loc": { "start": { - "line": 701, + "line": 700, "column": 12 }, "end": { - "line": 701, + "line": 700, "column": 26 }, "identifierName": "pickController" @@ -50414,29 +50274,29 @@ }, "value": { "type": "NewExpression", - "start": 22805, - "end": 22844, + "start": 22745, + "end": 22784, "loc": { "start": { - "line": 701, + "line": 700, "column": 28 }, "end": { - "line": 701, + "line": 700, "column": 67 } }, "callee": { "type": "Identifier", - "start": 22809, - "end": 22823, + "start": 22749, + "end": 22763, "loc": { "start": { - "line": 701, + "line": 700, "column": 32 }, "end": { - "line": 701, + "line": 700, "column": 46 }, "identifierName": "PickController" @@ -50446,59 +50306,59 @@ "arguments": [ { "type": "ThisExpression", - "start": 22824, - "end": 22828, + "start": 22764, + "end": 22768, "loc": { "start": { - "line": 701, + "line": 700, "column": 47 }, "end": { - "line": 701, + "line": 700, "column": 51 } } }, { "type": "MemberExpression", - "start": 22830, - "end": 22843, + "start": 22770, + "end": 22783, "loc": { "start": { - "line": 701, + "line": 700, "column": 53 }, "end": { - "line": 701, + "line": 700, "column": 66 } }, "object": { "type": "ThisExpression", - "start": 22830, - "end": 22834, + "start": 22770, + "end": 22774, "loc": { "start": { - "line": 701, + "line": 700, "column": 53 }, "end": { - "line": 701, + "line": 700, "column": 57 } } }, "property": { "type": "Identifier", - "start": 22835, - "end": 22843, + "start": 22775, + "end": 22783, "loc": { "start": { - "line": 701, + "line": 700, "column": 58 }, "end": { - "line": 701, + "line": 700, "column": 66 }, "identifierName": "_configs" @@ -50512,15 +50372,15 @@ }, { "type": "ObjectProperty", - "start": 22858, - "end": 22916, + "start": 22798, + "end": 22856, "loc": { "start": { - "line": 702, + "line": 701, "column": 12 }, "end": { - "line": 702, + "line": 701, "column": 70 } }, @@ -50529,15 +50389,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22858, - "end": 22873, + "start": 22798, + "end": 22813, "loc": { "start": { - "line": 702, + "line": 701, "column": 12 }, "end": { - "line": 702, + "line": 701, "column": 27 }, "identifierName": "pivotController" @@ -50546,29 +50406,29 @@ }, "value": { "type": "NewExpression", - "start": 22875, - "end": 22916, + "start": 22815, + "end": 22856, "loc": { "start": { - "line": 702, + "line": 701, "column": 29 }, "end": { - "line": 702, + "line": 701, "column": 70 } }, "callee": { "type": "Identifier", - "start": 22879, - "end": 22894, + "start": 22819, + "end": 22834, "loc": { "start": { - "line": 702, + "line": 701, "column": 33 }, "end": { - "line": 702, + "line": 701, "column": 48 }, "identifierName": "PivotController" @@ -50578,15 +50438,15 @@ "arguments": [ { "type": "Identifier", - "start": 22895, - "end": 22900, + "start": 22835, + "end": 22840, "loc": { "start": { - "line": 702, + "line": 701, "column": 49 }, "end": { - "line": 702, + "line": 701, "column": 54 }, "identifierName": "scene" @@ -50595,44 +50455,44 @@ }, { "type": "MemberExpression", - "start": 22902, - "end": 22915, + "start": 22842, + "end": 22855, "loc": { "start": { - "line": 702, + "line": 701, "column": 56 }, "end": { - "line": 702, + "line": 701, "column": 69 } }, "object": { "type": "ThisExpression", - "start": 22902, - "end": 22906, + "start": 22842, + "end": 22846, "loc": { "start": { - "line": 702, + "line": 701, "column": 56 }, "end": { - "line": 702, + "line": 701, "column": 60 } } }, "property": { "type": "Identifier", - "start": 22907, - "end": 22915, + "start": 22847, + "end": 22855, "loc": { "start": { - "line": 702, + "line": 701, "column": 61 }, "end": { - "line": 702, + "line": 701, "column": 69 }, "identifierName": "_configs" @@ -50646,15 +50506,15 @@ }, { "type": "ObjectProperty", - "start": 22930, - "end": 22969, + "start": 22870, + "end": 22909, "loc": { "start": { - "line": 703, + "line": 702, "column": 12 }, "end": { - "line": 703, + "line": 702, "column": 51 } }, @@ -50663,15 +50523,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22930, - "end": 22943, + "start": 22870, + "end": 22883, "loc": { "start": { - "line": 703, + "line": 702, "column": 12 }, "end": { - "line": 703, + "line": 702, "column": 25 }, "identifierName": "panController" @@ -50680,29 +50540,29 @@ }, "value": { "type": "NewExpression", - "start": 22945, - "end": 22969, + "start": 22885, + "end": 22909, "loc": { "start": { - "line": 703, + "line": 702, "column": 27 }, "end": { - "line": 703, + "line": 702, "column": 51 } }, "callee": { "type": "Identifier", - "start": 22949, - "end": 22962, + "start": 22889, + "end": 22902, "loc": { "start": { - "line": 703, + "line": 702, "column": 31 }, "end": { - "line": 703, + "line": 702, "column": 44 }, "identifierName": "PanController" @@ -50712,15 +50572,15 @@ "arguments": [ { "type": "Identifier", - "start": 22963, - "end": 22968, + "start": 22903, + "end": 22908, "loc": { "start": { - "line": 703, + "line": 702, "column": 45 }, "end": { - "line": 703, + "line": 702, "column": 50 }, "identifierName": "scene" @@ -50732,15 +50592,15 @@ }, { "type": "ObjectProperty", - "start": 22983, - "end": 23075, + "start": 22923, + "end": 23015, "loc": { "start": { - "line": 704, + "line": 703, "column": 12 }, "end": { - "line": 706, + "line": 705, "column": 14 } }, @@ -50749,15 +50609,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 22983, - "end": 22995, + "start": 22923, + "end": 22935, "loc": { "start": { - "line": 704, + "line": 703, "column": 12 }, "end": { - "line": 704, + "line": 703, "column": 24 }, "identifierName": "cameraFlight" @@ -50766,29 +50626,29 @@ }, "value": { "type": "NewExpression", - "start": 22997, - "end": 23075, + "start": 22937, + "end": 23015, "loc": { "start": { - "line": 704, + "line": 703, "column": 26 }, "end": { - "line": 706, + "line": 705, "column": 14 } }, "callee": { "type": "Identifier", - "start": 23001, - "end": 23022, + "start": 22941, + "end": 22962, "loc": { "start": { - "line": 704, + "line": 703, "column": 30 }, "end": { - "line": 704, + "line": 703, "column": 51 }, "identifierName": "CameraFlightAnimation" @@ -50798,45 +50658,45 @@ "arguments": [ { "type": "ThisExpression", - "start": 23023, - "end": 23027, + "start": 22963, + "end": 22967, "loc": { "start": { - "line": 704, + "line": 703, "column": 52 }, "end": { - "line": 704, + "line": 703, "column": 56 } } }, { "type": "ObjectExpression", - "start": 23029, - "end": 23074, + "start": 22969, + "end": 23014, "loc": { "start": { - "line": 704, + "line": 703, "column": 58 }, "end": { - "line": 706, + "line": 705, "column": 13 } }, "properties": [ { "type": "ObjectProperty", - "start": 23047, - "end": 23060, + "start": 22987, + "end": 23000, "loc": { "start": { - "line": 705, + "line": 704, "column": 16 }, "end": { - "line": 705, + "line": 704, "column": 29 } }, @@ -50845,15 +50705,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 23047, - "end": 23055, + "start": 22987, + "end": 22995, "loc": { "start": { - "line": 705, + "line": 704, "column": 16 }, "end": { - "line": 705, + "line": 704, "column": 24 }, "identifierName": "duration" @@ -50862,15 +50722,15 @@ }, "value": { "type": "NumericLiteral", - "start": 23057, - "end": 23060, + "start": 22997, + "end": 23000, "loc": { "start": { - "line": 705, + "line": 704, "column": 26 }, "end": { - "line": 705, + "line": 704, "column": 29 } }, @@ -50893,15 +50753,15 @@ { "type": "CommentLine", "value": " Input event handlers", - "start": 23096, - "end": 23119, + "start": 23036, + "end": 23059, "loc": { "start": { - "line": 709, + "line": 708, "column": 8 }, "end": { - "line": 709, + "line": 708, "column": 31 } } @@ -50910,58 +50770,58 @@ }, { "type": "ExpressionStatement", - "start": 23129, - "end": 23963, + "start": 23069, + "end": 23903, "loc": { "start": { - "line": 711, + "line": 710, "column": 8 }, "end": { - "line": 719, + "line": 718, "column": 10 } }, "expression": { "type": "AssignmentExpression", - "start": 23129, - "end": 23962, + "start": 23069, + "end": 23902, "loc": { "start": { - "line": 711, + "line": 710, "column": 8 }, "end": { - "line": 719, + "line": 718, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 23129, - "end": 23143, + "start": 23069, + "end": 23083, "loc": { "start": { - "line": 711, + "line": 710, "column": 8 }, "end": { - "line": 711, + "line": 710, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 23129, - "end": 23133, + "start": 23069, + "end": 23073, "loc": { "start": { - "line": 711, + "line": 710, "column": 8 }, "end": { - "line": 711, + "line": 710, "column": 12 } }, @@ -50969,15 +50829,15 @@ }, "property": { "type": "Identifier", - "start": 23134, - "end": 23143, + "start": 23074, + "end": 23083, "loc": { "start": { - "line": 711, + "line": 710, "column": 13 }, "end": { - "line": 711, + "line": 710, "column": 22 }, "identifierName": "_handlers" @@ -50989,44 +50849,44 @@ }, "right": { "type": "ArrayExpression", - "start": 23146, - "end": 23962, + "start": 23086, + "end": 23902, "loc": { "start": { - "line": 711, + "line": 710, "column": 25 }, "end": { - "line": 719, + "line": 718, "column": 9 } }, "elements": [ { "type": "NewExpression", - "start": 23160, - "end": 23255, + "start": 23100, + "end": 23195, "loc": { "start": { - "line": 712, + "line": 711, "column": 12 }, "end": { - "line": 712, + "line": 711, "column": 107 } }, "callee": { "type": "Identifier", - "start": 23164, - "end": 23180, + "start": 23104, + "end": 23120, "loc": { "start": { - "line": 712, + "line": 711, "column": 16 }, "end": { - "line": 712, + "line": 711, "column": 32 }, "identifierName": "MouseMiscHandler" @@ -51036,44 +50896,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 23181, - "end": 23191, + "start": 23121, + "end": 23131, "loc": { "start": { - "line": 712, + "line": 711, "column": 33 }, "end": { - "line": 712, + "line": 711, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 23181, - "end": 23185, + "start": 23121, + "end": 23125, "loc": { "start": { - "line": 712, + "line": 711, "column": 33 }, "end": { - "line": 712, + "line": 711, "column": 37 } } }, "property": { "type": "Identifier", - "start": 23186, - "end": 23191, + "start": 23126, + "end": 23131, "loc": { "start": { - "line": 712, + "line": 711, "column": 38 }, "end": { - "line": 712, + "line": 711, "column": 43 }, "identifierName": "scene" @@ -51084,44 +50944,44 @@ }, { "type": "MemberExpression", - "start": 23193, - "end": 23210, + "start": 23133, + "end": 23150, "loc": { "start": { - "line": 712, + "line": 711, "column": 45 }, "end": { - "line": 712, + "line": 711, "column": 62 } }, "object": { "type": "ThisExpression", - "start": 23193, - "end": 23197, + "start": 23133, + "end": 23137, "loc": { "start": { - "line": 712, + "line": 711, "column": 45 }, "end": { - "line": 712, + "line": 711, "column": 49 } } }, "property": { "type": "Identifier", - "start": 23198, - "end": 23210, + "start": 23138, + "end": 23150, "loc": { "start": { - "line": 712, + "line": 711, "column": 50 }, "end": { - "line": 712, + "line": 711, "column": 62 }, "identifierName": "_controllers" @@ -51132,44 +50992,44 @@ }, { "type": "MemberExpression", - "start": 23212, - "end": 23225, + "start": 23152, + "end": 23165, "loc": { "start": { - "line": 712, + "line": 711, "column": 64 }, "end": { - "line": 712, + "line": 711, "column": 77 } }, "object": { "type": "ThisExpression", - "start": 23212, - "end": 23216, + "start": 23152, + "end": 23156, "loc": { "start": { - "line": 712, + "line": 711, "column": 64 }, "end": { - "line": 712, + "line": 711, "column": 68 } } }, "property": { "type": "Identifier", - "start": 23217, - "end": 23225, + "start": 23157, + "end": 23165, "loc": { "start": { - "line": 712, + "line": 711, "column": 69 }, "end": { - "line": 712, + "line": 711, "column": 77 }, "identifierName": "_configs" @@ -51180,44 +51040,44 @@ }, { "type": "MemberExpression", - "start": 23227, - "end": 23239, + "start": 23167, + "end": 23179, "loc": { "start": { - "line": 712, + "line": 711, "column": 79 }, "end": { - "line": 712, + "line": 711, "column": 91 } }, "object": { "type": "ThisExpression", - "start": 23227, - "end": 23231, + "start": 23167, + "end": 23171, "loc": { "start": { - "line": 712, + "line": 711, "column": 79 }, "end": { - "line": 712, + "line": 711, "column": 83 } } }, "property": { "type": "Identifier", - "start": 23232, - "end": 23239, + "start": 23172, + "end": 23179, "loc": { "start": { - "line": 712, + "line": 711, "column": 84 }, "end": { - "line": 712, + "line": 711, "column": 91 }, "identifierName": "_states" @@ -51228,44 +51088,44 @@ }, { "type": "MemberExpression", - "start": 23241, - "end": 23254, + "start": 23181, + "end": 23194, "loc": { "start": { - "line": 712, + "line": 711, "column": 93 }, "end": { - "line": 712, + "line": 711, "column": 106 } }, "object": { "type": "ThisExpression", - "start": 23241, - "end": 23245, + "start": 23181, + "end": 23185, "loc": { "start": { - "line": 712, + "line": 711, "column": 93 }, "end": { - "line": 712, + "line": 711, "column": 97 } } }, "property": { "type": "Identifier", - "start": 23246, - "end": 23254, + "start": 23186, + "end": 23194, "loc": { "start": { - "line": 712, + "line": 711, "column": 98 }, "end": { - "line": 712, + "line": 711, "column": 106 }, "identifierName": "_updates" @@ -51278,29 +51138,29 @@ }, { "type": "NewExpression", - "start": 23269, - "end": 23377, + "start": 23209, + "end": 23317, "loc": { "start": { - "line": 713, + "line": 712, "column": 12 }, "end": { - "line": 713, + "line": 712, "column": 120 } }, "callee": { "type": "Identifier", - "start": 23273, - "end": 23302, + "start": 23213, + "end": 23242, "loc": { "start": { - "line": 713, + "line": 712, "column": 16 }, "end": { - "line": 713, + "line": 712, "column": 45 }, "identifierName": "TouchPanRotateAndDollyHandler" @@ -51310,44 +51170,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 23303, - "end": 23313, + "start": 23243, + "end": 23253, "loc": { "start": { - "line": 713, + "line": 712, "column": 46 }, "end": { - "line": 713, + "line": 712, "column": 56 } }, "object": { "type": "ThisExpression", - "start": 23303, - "end": 23307, + "start": 23243, + "end": 23247, "loc": { "start": { - "line": 713, + "line": 712, "column": 46 }, "end": { - "line": 713, + "line": 712, "column": 50 } } }, "property": { "type": "Identifier", - "start": 23308, - "end": 23313, + "start": 23248, + "end": 23253, "loc": { "start": { - "line": 713, + "line": 712, "column": 51 }, "end": { - "line": 713, + "line": 712, "column": 56 }, "identifierName": "scene" @@ -51358,44 +51218,44 @@ }, { "type": "MemberExpression", - "start": 23315, - "end": 23332, + "start": 23255, + "end": 23272, "loc": { "start": { - "line": 713, + "line": 712, "column": 58 }, "end": { - "line": 713, + "line": 712, "column": 75 } }, "object": { "type": "ThisExpression", - "start": 23315, - "end": 23319, + "start": 23255, + "end": 23259, "loc": { "start": { - "line": 713, + "line": 712, "column": 58 }, "end": { - "line": 713, + "line": 712, "column": 62 } } }, "property": { "type": "Identifier", - "start": 23320, - "end": 23332, + "start": 23260, + "end": 23272, "loc": { "start": { - "line": 713, + "line": 712, "column": 63 }, "end": { - "line": 713, + "line": 712, "column": 75 }, "identifierName": "_controllers" @@ -51406,44 +51266,44 @@ }, { "type": "MemberExpression", - "start": 23334, - "end": 23347, + "start": 23274, + "end": 23287, "loc": { "start": { - "line": 713, + "line": 712, "column": 77 }, "end": { - "line": 713, + "line": 712, "column": 90 } }, "object": { "type": "ThisExpression", - "start": 23334, - "end": 23338, + "start": 23274, + "end": 23278, "loc": { "start": { - "line": 713, + "line": 712, "column": 77 }, "end": { - "line": 713, + "line": 712, "column": 81 } } }, "property": { "type": "Identifier", - "start": 23339, - "end": 23347, + "start": 23279, + "end": 23287, "loc": { "start": { - "line": 713, + "line": 712, "column": 82 }, "end": { - "line": 713, + "line": 712, "column": 90 }, "identifierName": "_configs" @@ -51454,44 +51314,44 @@ }, { "type": "MemberExpression", - "start": 23349, - "end": 23361, + "start": 23289, + "end": 23301, "loc": { "start": { - "line": 713, + "line": 712, "column": 92 }, "end": { - "line": 713, + "line": 712, "column": 104 } }, "object": { "type": "ThisExpression", - "start": 23349, - "end": 23353, + "start": 23289, + "end": 23293, "loc": { "start": { - "line": 713, + "line": 712, "column": 92 }, "end": { - "line": 713, + "line": 712, "column": 96 } } }, "property": { "type": "Identifier", - "start": 23354, - "end": 23361, + "start": 23294, + "end": 23301, "loc": { "start": { - "line": 713, + "line": 712, "column": 97 }, "end": { - "line": 713, + "line": 712, "column": 104 }, "identifierName": "_states" @@ -51502,44 +51362,44 @@ }, { "type": "MemberExpression", - "start": 23363, - "end": 23376, + "start": 23303, + "end": 23316, "loc": { "start": { - "line": 713, + "line": 712, "column": 106 }, "end": { - "line": 713, + "line": 712, "column": 119 } }, "object": { "type": "ThisExpression", - "start": 23363, - "end": 23367, + "start": 23303, + "end": 23307, "loc": { "start": { - "line": 713, + "line": 712, "column": 106 }, "end": { - "line": 713, + "line": 712, "column": 110 } } }, "property": { "type": "Identifier", - "start": 23368, - "end": 23376, + "start": 23308, + "end": 23316, "loc": { "start": { - "line": 713, + "line": 712, "column": 111 }, "end": { - "line": 713, + "line": 712, "column": 119 }, "identifierName": "_updates" @@ -51552,29 +51412,29 @@ }, { "type": "NewExpression", - "start": 23391, - "end": 23496, + "start": 23331, + "end": 23436, "loc": { "start": { - "line": 714, + "line": 713, "column": 12 }, "end": { - "line": 714, + "line": 713, "column": 117 } }, "callee": { "type": "Identifier", - "start": 23395, - "end": 23421, + "start": 23335, + "end": 23361, "loc": { "start": { - "line": 714, + "line": 713, "column": 16 }, "end": { - "line": 714, + "line": 713, "column": 42 }, "identifierName": "MousePanRotateDollyHandler" @@ -51584,44 +51444,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 23422, - "end": 23432, + "start": 23362, + "end": 23372, "loc": { "start": { - "line": 714, + "line": 713, "column": 43 }, "end": { - "line": 714, + "line": 713, "column": 53 } }, "object": { "type": "ThisExpression", - "start": 23422, - "end": 23426, + "start": 23362, + "end": 23366, "loc": { "start": { - "line": 714, + "line": 713, "column": 43 }, "end": { - "line": 714, + "line": 713, "column": 47 } } }, "property": { "type": "Identifier", - "start": 23427, - "end": 23432, + "start": 23367, + "end": 23372, "loc": { "start": { - "line": 714, + "line": 713, "column": 48 }, "end": { - "line": 714, + "line": 713, "column": 53 }, "identifierName": "scene" @@ -51632,44 +51492,44 @@ }, { "type": "MemberExpression", - "start": 23434, - "end": 23451, + "start": 23374, + "end": 23391, "loc": { "start": { - "line": 714, + "line": 713, "column": 55 }, "end": { - "line": 714, + "line": 713, "column": 72 } }, "object": { "type": "ThisExpression", - "start": 23434, - "end": 23438, + "start": 23374, + "end": 23378, "loc": { "start": { - "line": 714, + "line": 713, "column": 55 }, "end": { - "line": 714, + "line": 713, "column": 59 } } }, "property": { "type": "Identifier", - "start": 23439, - "end": 23451, + "start": 23379, + "end": 23391, "loc": { "start": { - "line": 714, + "line": 713, "column": 60 }, "end": { - "line": 714, + "line": 713, "column": 72 }, "identifierName": "_controllers" @@ -51680,44 +51540,44 @@ }, { "type": "MemberExpression", - "start": 23453, - "end": 23466, + "start": 23393, + "end": 23406, "loc": { "start": { - "line": 714, + "line": 713, "column": 74 }, "end": { - "line": 714, + "line": 713, "column": 87 } }, "object": { "type": "ThisExpression", - "start": 23453, - "end": 23457, + "start": 23393, + "end": 23397, "loc": { "start": { - "line": 714, + "line": 713, "column": 74 }, "end": { - "line": 714, + "line": 713, "column": 78 } } }, "property": { "type": "Identifier", - "start": 23458, - "end": 23466, + "start": 23398, + "end": 23406, "loc": { "start": { - "line": 714, + "line": 713, "column": 79 }, "end": { - "line": 714, + "line": 713, "column": 87 }, "identifierName": "_configs" @@ -51728,44 +51588,44 @@ }, { "type": "MemberExpression", - "start": 23468, - "end": 23480, + "start": 23408, + "end": 23420, "loc": { "start": { - "line": 714, + "line": 713, "column": 89 }, "end": { - "line": 714, + "line": 713, "column": 101 } }, "object": { "type": "ThisExpression", - "start": 23468, - "end": 23472, + "start": 23408, + "end": 23412, "loc": { "start": { - "line": 714, + "line": 713, "column": 89 }, "end": { - "line": 714, + "line": 713, "column": 93 } } }, "property": { "type": "Identifier", - "start": 23473, - "end": 23480, + "start": 23413, + "end": 23420, "loc": { "start": { - "line": 714, + "line": 713, "column": 94 }, "end": { - "line": 714, + "line": 713, "column": 101 }, "identifierName": "_states" @@ -51776,44 +51636,44 @@ }, { "type": "MemberExpression", - "start": 23482, - "end": 23495, + "start": 23422, + "end": 23435, "loc": { "start": { - "line": 714, + "line": 713, "column": 103 }, "end": { - "line": 714, + "line": 713, "column": 116 } }, "object": { "type": "ThisExpression", - "start": 23482, - "end": 23486, + "start": 23422, + "end": 23426, "loc": { "start": { - "line": 714, + "line": 713, "column": 103 }, "end": { - "line": 714, + "line": 713, "column": 107 } } }, "property": { "type": "Identifier", - "start": 23487, - "end": 23495, + "start": 23427, + "end": 23435, "loc": { "start": { - "line": 714, + "line": 713, "column": 108 }, "end": { - "line": 714, + "line": 713, "column": 116 }, "identifierName": "_updates" @@ -51826,29 +51686,29 @@ }, { "type": "NewExpression", - "start": 23510, - "end": 23612, + "start": 23450, + "end": 23552, "loc": { "start": { - "line": 715, + "line": 714, "column": 12 }, "end": { - "line": 715, + "line": 714, "column": 114 } }, "callee": { "type": "Identifier", - "start": 23514, - "end": 23537, + "start": 23454, + "end": 23477, "loc": { "start": { - "line": 715, + "line": 714, "column": 16 }, "end": { - "line": 715, + "line": 714, "column": 39 }, "identifierName": "KeyboardAxisViewHandler" @@ -51858,44 +51718,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 23538, - "end": 23548, + "start": 23478, + "end": 23488, "loc": { "start": { - "line": 715, + "line": 714, "column": 40 }, "end": { - "line": 715, + "line": 714, "column": 50 } }, "object": { "type": "ThisExpression", - "start": 23538, - "end": 23542, + "start": 23478, + "end": 23482, "loc": { "start": { - "line": 715, + "line": 714, "column": 40 }, "end": { - "line": 715, + "line": 714, "column": 44 } } }, "property": { "type": "Identifier", - "start": 23543, - "end": 23548, + "start": 23483, + "end": 23488, "loc": { "start": { - "line": 715, + "line": 714, "column": 45 }, "end": { - "line": 715, + "line": 714, "column": 50 }, "identifierName": "scene" @@ -51906,44 +51766,44 @@ }, { "type": "MemberExpression", - "start": 23550, - "end": 23567, + "start": 23490, + "end": 23507, "loc": { "start": { - "line": 715, + "line": 714, "column": 52 }, "end": { - "line": 715, + "line": 714, "column": 69 } }, "object": { "type": "ThisExpression", - "start": 23550, - "end": 23554, + "start": 23490, + "end": 23494, "loc": { "start": { - "line": 715, + "line": 714, "column": 52 }, "end": { - "line": 715, + "line": 714, "column": 56 } } }, "property": { "type": "Identifier", - "start": 23555, - "end": 23567, + "start": 23495, + "end": 23507, "loc": { "start": { - "line": 715, + "line": 714, "column": 57 }, "end": { - "line": 715, + "line": 714, "column": 69 }, "identifierName": "_controllers" @@ -51954,44 +51814,44 @@ }, { "type": "MemberExpression", - "start": 23569, - "end": 23582, + "start": 23509, + "end": 23522, "loc": { "start": { - "line": 715, + "line": 714, "column": 71 }, "end": { - "line": 715, + "line": 714, "column": 84 } }, "object": { "type": "ThisExpression", - "start": 23569, - "end": 23573, + "start": 23509, + "end": 23513, "loc": { "start": { - "line": 715, + "line": 714, "column": 71 }, "end": { - "line": 715, + "line": 714, "column": 75 } } }, "property": { "type": "Identifier", - "start": 23574, - "end": 23582, + "start": 23514, + "end": 23522, "loc": { "start": { - "line": 715, + "line": 714, "column": 76 }, "end": { - "line": 715, + "line": 714, "column": 84 }, "identifierName": "_configs" @@ -52002,44 +51862,44 @@ }, { "type": "MemberExpression", - "start": 23584, - "end": 23596, + "start": 23524, + "end": 23536, "loc": { "start": { - "line": 715, + "line": 714, "column": 86 }, "end": { - "line": 715, + "line": 714, "column": 98 } }, "object": { "type": "ThisExpression", - "start": 23584, - "end": 23588, + "start": 23524, + "end": 23528, "loc": { "start": { - "line": 715, + "line": 714, "column": 86 }, "end": { - "line": 715, + "line": 714, "column": 90 } } }, "property": { "type": "Identifier", - "start": 23589, - "end": 23596, + "start": 23529, + "end": 23536, "loc": { "start": { - "line": 715, + "line": 714, "column": 91 }, "end": { - "line": 715, + "line": 714, "column": 98 }, "identifierName": "_states" @@ -52050,44 +51910,44 @@ }, { "type": "MemberExpression", - "start": 23598, - "end": 23611, + "start": 23538, + "end": 23551, "loc": { "start": { - "line": 715, + "line": 714, "column": 100 }, "end": { - "line": 715, + "line": 714, "column": 113 } }, "object": { "type": "ThisExpression", - "start": 23598, - "end": 23602, + "start": 23538, + "end": 23542, "loc": { "start": { - "line": 715, + "line": 714, "column": 100 }, "end": { - "line": 715, + "line": 714, "column": 104 } } }, "property": { "type": "Identifier", - "start": 23603, - "end": 23611, + "start": 23543, + "end": 23551, "loc": { "start": { - "line": 715, + "line": 714, "column": 105 }, "end": { - "line": 715, + "line": 714, "column": 113 }, "identifierName": "_updates" @@ -52100,29 +51960,29 @@ }, { "type": "NewExpression", - "start": 23626, - "end": 23721, + "start": 23566, + "end": 23661, "loc": { "start": { - "line": 716, + "line": 715, "column": 12 }, "end": { - "line": 716, + "line": 715, "column": 107 } }, "callee": { "type": "Identifier", - "start": 23630, - "end": 23646, + "start": 23570, + "end": 23586, "loc": { "start": { - "line": 716, + "line": 715, "column": 16 }, "end": { - "line": 716, + "line": 715, "column": 32 }, "identifierName": "MousePickHandler" @@ -52132,44 +51992,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 23647, - "end": 23657, + "start": 23587, + "end": 23597, "loc": { "start": { - "line": 716, + "line": 715, "column": 33 }, "end": { - "line": 716, + "line": 715, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 23647, - "end": 23651, + "start": 23587, + "end": 23591, "loc": { "start": { - "line": 716, + "line": 715, "column": 33 }, "end": { - "line": 716, + "line": 715, "column": 37 } } }, "property": { "type": "Identifier", - "start": 23652, - "end": 23657, + "start": 23592, + "end": 23597, "loc": { "start": { - "line": 716, + "line": 715, "column": 38 }, "end": { - "line": 716, + "line": 715, "column": 43 }, "identifierName": "scene" @@ -52180,44 +52040,44 @@ }, { "type": "MemberExpression", - "start": 23659, - "end": 23676, + "start": 23599, + "end": 23616, "loc": { "start": { - "line": 716, + "line": 715, "column": 45 }, "end": { - "line": 716, + "line": 715, "column": 62 } }, "object": { "type": "ThisExpression", - "start": 23659, - "end": 23663, + "start": 23599, + "end": 23603, "loc": { "start": { - "line": 716, + "line": 715, "column": 45 }, "end": { - "line": 716, + "line": 715, "column": 49 } } }, "property": { "type": "Identifier", - "start": 23664, - "end": 23676, + "start": 23604, + "end": 23616, "loc": { "start": { - "line": 716, + "line": 715, "column": 50 }, "end": { - "line": 716, + "line": 715, "column": 62 }, "identifierName": "_controllers" @@ -52228,44 +52088,44 @@ }, { "type": "MemberExpression", - "start": 23678, - "end": 23691, + "start": 23618, + "end": 23631, "loc": { "start": { - "line": 716, + "line": 715, "column": 64 }, "end": { - "line": 716, + "line": 715, "column": 77 } }, "object": { "type": "ThisExpression", - "start": 23678, - "end": 23682, + "start": 23618, + "end": 23622, "loc": { "start": { - "line": 716, + "line": 715, "column": 64 }, "end": { - "line": 716, + "line": 715, "column": 68 } } }, "property": { "type": "Identifier", - "start": 23683, - "end": 23691, + "start": 23623, + "end": 23631, "loc": { "start": { - "line": 716, + "line": 715, "column": 69 }, "end": { - "line": 716, + "line": 715, "column": 77 }, "identifierName": "_configs" @@ -52276,44 +52136,44 @@ }, { "type": "MemberExpression", - "start": 23693, - "end": 23705, + "start": 23633, + "end": 23645, "loc": { "start": { - "line": 716, + "line": 715, "column": 79 }, "end": { - "line": 716, + "line": 715, "column": 91 } }, "object": { "type": "ThisExpression", - "start": 23693, - "end": 23697, + "start": 23633, + "end": 23637, "loc": { "start": { - "line": 716, + "line": 715, "column": 79 }, "end": { - "line": 716, + "line": 715, "column": 83 } } }, "property": { "type": "Identifier", - "start": 23698, - "end": 23705, + "start": 23638, + "end": 23645, "loc": { "start": { - "line": 716, + "line": 715, "column": 84 }, "end": { - "line": 716, + "line": 715, "column": 91 }, "identifierName": "_states" @@ -52324,44 +52184,44 @@ }, { "type": "MemberExpression", - "start": 23707, - "end": 23720, + "start": 23647, + "end": 23660, "loc": { "start": { - "line": 716, + "line": 715, "column": 93 }, "end": { - "line": 716, + "line": 715, "column": 106 } }, "object": { "type": "ThisExpression", - "start": 23707, - "end": 23711, + "start": 23647, + "end": 23651, "loc": { "start": { - "line": 716, + "line": 715, "column": 93 }, "end": { - "line": 716, + "line": 715, "column": 97 } } }, "property": { "type": "Identifier", - "start": 23712, - "end": 23720, + "start": 23652, + "end": 23660, "loc": { "start": { - "line": 716, + "line": 715, "column": 98 }, "end": { - "line": 716, + "line": 715, "column": 106 }, "identifierName": "_updates" @@ -52374,29 +52234,29 @@ }, { "type": "NewExpression", - "start": 23735, - "end": 23830, + "start": 23675, + "end": 23770, "loc": { "start": { - "line": 717, + "line": 716, "column": 12 }, "end": { - "line": 717, + "line": 716, "column": 107 } }, "callee": { "type": "Identifier", - "start": 23739, - "end": 23755, + "start": 23679, + "end": 23695, "loc": { "start": { - "line": 717, + "line": 716, "column": 16 }, "end": { - "line": 717, + "line": 716, "column": 32 }, "identifierName": "TouchPickHandler" @@ -52406,44 +52266,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 23756, - "end": 23766, + "start": 23696, + "end": 23706, "loc": { "start": { - "line": 717, + "line": 716, "column": 33 }, "end": { - "line": 717, + "line": 716, "column": 43 } }, "object": { "type": "ThisExpression", - "start": 23756, - "end": 23760, + "start": 23696, + "end": 23700, "loc": { "start": { - "line": 717, + "line": 716, "column": 33 }, "end": { - "line": 717, + "line": 716, "column": 37 } } }, "property": { "type": "Identifier", - "start": 23761, - "end": 23766, + "start": 23701, + "end": 23706, "loc": { "start": { - "line": 717, + "line": 716, "column": 38 }, "end": { - "line": 717, + "line": 716, "column": 43 }, "identifierName": "scene" @@ -52454,44 +52314,44 @@ }, { "type": "MemberExpression", - "start": 23768, - "end": 23785, + "start": 23708, + "end": 23725, "loc": { "start": { - "line": 717, + "line": 716, "column": 45 }, "end": { - "line": 717, + "line": 716, "column": 62 } }, "object": { "type": "ThisExpression", - "start": 23768, - "end": 23772, + "start": 23708, + "end": 23712, "loc": { "start": { - "line": 717, + "line": 716, "column": 45 }, "end": { - "line": 717, + "line": 716, "column": 49 } } }, "property": { "type": "Identifier", - "start": 23773, - "end": 23785, + "start": 23713, + "end": 23725, "loc": { "start": { - "line": 717, + "line": 716, "column": 50 }, "end": { - "line": 717, + "line": 716, "column": 62 }, "identifierName": "_controllers" @@ -52502,44 +52362,44 @@ }, { "type": "MemberExpression", - "start": 23787, - "end": 23800, + "start": 23727, + "end": 23740, "loc": { "start": { - "line": 717, + "line": 716, "column": 64 }, "end": { - "line": 717, + "line": 716, "column": 77 } }, "object": { "type": "ThisExpression", - "start": 23787, - "end": 23791, + "start": 23727, + "end": 23731, "loc": { "start": { - "line": 717, + "line": 716, "column": 64 }, "end": { - "line": 717, + "line": 716, "column": 68 } } }, "property": { "type": "Identifier", - "start": 23792, - "end": 23800, + "start": 23732, + "end": 23740, "loc": { "start": { - "line": 717, + "line": 716, "column": 69 }, "end": { - "line": 717, + "line": 716, "column": 77 }, "identifierName": "_configs" @@ -52550,44 +52410,44 @@ }, { "type": "MemberExpression", - "start": 23802, - "end": 23814, + "start": 23742, + "end": 23754, "loc": { "start": { - "line": 717, + "line": 716, "column": 79 }, "end": { - "line": 717, + "line": 716, "column": 91 } }, "object": { "type": "ThisExpression", - "start": 23802, - "end": 23806, + "start": 23742, + "end": 23746, "loc": { "start": { - "line": 717, + "line": 716, "column": 79 }, "end": { - "line": 717, + "line": 716, "column": 83 } } }, "property": { "type": "Identifier", - "start": 23807, - "end": 23814, + "start": 23747, + "end": 23754, "loc": { "start": { - "line": 717, + "line": 716, "column": 84 }, "end": { - "line": 717, + "line": 716, "column": 91 }, "identifierName": "_states" @@ -52598,44 +52458,44 @@ }, { "type": "MemberExpression", - "start": 23816, - "end": 23829, + "start": 23756, + "end": 23769, "loc": { "start": { - "line": 717, + "line": 716, "column": 93 }, "end": { - "line": 717, + "line": 716, "column": 106 } }, "object": { "type": "ThisExpression", - "start": 23816, - "end": 23820, + "start": 23756, + "end": 23760, "loc": { "start": { - "line": 717, + "line": 716, "column": 93 }, "end": { - "line": 717, + "line": 716, "column": 97 } } }, "property": { "type": "Identifier", - "start": 23821, - "end": 23829, + "start": 23761, + "end": 23769, "loc": { "start": { - "line": 717, + "line": 716, "column": 98 }, "end": { - "line": 717, + "line": 716, "column": 106 }, "identifierName": "_updates" @@ -52648,29 +52508,29 @@ }, { "type": "NewExpression", - "start": 23844, - "end": 23952, + "start": 23784, + "end": 23892, "loc": { "start": { - "line": 718, + "line": 717, "column": 12 }, "end": { - "line": 718, + "line": 717, "column": 120 } }, "callee": { "type": "Identifier", - "start": 23848, - "end": 23877, + "start": 23788, + "end": 23817, "loc": { "start": { - "line": 718, + "line": 717, "column": 16 }, "end": { - "line": 718, + "line": 717, "column": 45 }, "identifierName": "KeyboardPanRotateDollyHandler" @@ -52680,44 +52540,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 23878, - "end": 23888, + "start": 23818, + "end": 23828, "loc": { "start": { - "line": 718, + "line": 717, "column": 46 }, "end": { - "line": 718, + "line": 717, "column": 56 } }, "object": { "type": "ThisExpression", - "start": 23878, - "end": 23882, + "start": 23818, + "end": 23822, "loc": { "start": { - "line": 718, + "line": 717, "column": 46 }, "end": { - "line": 718, + "line": 717, "column": 50 } } }, "property": { "type": "Identifier", - "start": 23883, - "end": 23888, + "start": 23823, + "end": 23828, "loc": { "start": { - "line": 718, + "line": 717, "column": 51 }, "end": { - "line": 718, + "line": 717, "column": 56 }, "identifierName": "scene" @@ -52728,44 +52588,44 @@ }, { "type": "MemberExpression", - "start": 23890, - "end": 23907, + "start": 23830, + "end": 23847, "loc": { "start": { - "line": 718, + "line": 717, "column": 58 }, "end": { - "line": 718, + "line": 717, "column": 75 } }, "object": { "type": "ThisExpression", - "start": 23890, - "end": 23894, + "start": 23830, + "end": 23834, "loc": { "start": { - "line": 718, + "line": 717, "column": 58 }, "end": { - "line": 718, + "line": 717, "column": 62 } } }, "property": { "type": "Identifier", - "start": 23895, - "end": 23907, + "start": 23835, + "end": 23847, "loc": { "start": { - "line": 718, + "line": 717, "column": 63 }, "end": { - "line": 718, + "line": 717, "column": 75 }, "identifierName": "_controllers" @@ -52776,44 +52636,44 @@ }, { "type": "MemberExpression", - "start": 23909, - "end": 23922, + "start": 23849, + "end": 23862, "loc": { "start": { - "line": 718, + "line": 717, "column": 77 }, "end": { - "line": 718, + "line": 717, "column": 90 } }, "object": { "type": "ThisExpression", - "start": 23909, - "end": 23913, + "start": 23849, + "end": 23853, "loc": { "start": { - "line": 718, + "line": 717, "column": 77 }, "end": { - "line": 718, + "line": 717, "column": 81 } } }, "property": { "type": "Identifier", - "start": 23914, - "end": 23922, + "start": 23854, + "end": 23862, "loc": { "start": { - "line": 718, + "line": 717, "column": 82 }, "end": { - "line": 718, + "line": 717, "column": 90 }, "identifierName": "_configs" @@ -52824,44 +52684,44 @@ }, { "type": "MemberExpression", - "start": 23924, - "end": 23936, + "start": 23864, + "end": 23876, "loc": { "start": { - "line": 718, + "line": 717, "column": 92 }, "end": { - "line": 718, + "line": 717, "column": 104 } }, "object": { "type": "ThisExpression", - "start": 23924, - "end": 23928, + "start": 23864, + "end": 23868, "loc": { "start": { - "line": 718, + "line": 717, "column": 92 }, "end": { - "line": 718, + "line": 717, "column": 96 } } }, "property": { "type": "Identifier", - "start": 23929, - "end": 23936, + "start": 23869, + "end": 23876, "loc": { "start": { - "line": 718, + "line": 717, "column": 97 }, "end": { - "line": 718, + "line": 717, "column": 104 }, "identifierName": "_states" @@ -52872,44 +52732,44 @@ }, { "type": "MemberExpression", - "start": 23938, - "end": 23951, + "start": 23878, + "end": 23891, "loc": { "start": { - "line": 718, + "line": 717, "column": 106 }, "end": { - "line": 718, + "line": 717, "column": 119 } }, "object": { "type": "ThisExpression", - "start": 23938, - "end": 23942, + "start": 23878, + "end": 23882, "loc": { "start": { - "line": 718, + "line": 717, "column": 106 }, "end": { - "line": 718, + "line": 717, "column": 110 } } }, "property": { "type": "Identifier", - "start": 23943, - "end": 23951, + "start": 23883, + "end": 23891, "loc": { "start": { - "line": 718, + "line": 717, "column": 111 }, "end": { - "line": 718, + "line": 717, "column": 119 }, "identifierName": "_updates" @@ -52928,15 +52788,15 @@ { "type": "CommentLine", "value": " Input event handlers", - "start": 23096, - "end": 23119, + "start": 23036, + "end": 23059, "loc": { "start": { - "line": 709, + "line": 708, "column": 8 }, "end": { - "line": 709, + "line": 708, "column": 31 } } @@ -52946,15 +52806,15 @@ { "type": "CommentLine", "value": " Applies scheduled updates to the Camera on each Scene \"tick\" event", - "start": 23973, - "end": 24042, + "start": 23913, + "end": 23982, "loc": { "start": { - "line": 721, + "line": 720, "column": 8 }, "end": { - "line": 721, + "line": 720, "column": 77 } } @@ -52963,58 +52823,58 @@ }, { "type": "ExpressionStatement", - "start": 24052, - "end": 24167, + "start": 23992, + "end": 24107, "loc": { "start": { - "line": 723, + "line": 722, "column": 8 }, "end": { - "line": 723, + "line": 722, "column": 123 } }, "expression": { "type": "AssignmentExpression", - "start": 24052, - "end": 24166, + "start": 23992, + "end": 24106, "loc": { "start": { - "line": 723, + "line": 722, "column": 8 }, "end": { - "line": 723, + "line": 722, "column": 122 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24052, - "end": 24071, + "start": 23992, + "end": 24011, "loc": { "start": { - "line": 723, + "line": 722, "column": 8 }, "end": { - "line": 723, + "line": 722, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 24052, - "end": 24056, + "start": 23992, + "end": 23996, "loc": { "start": { - "line": 723, + "line": 722, "column": 8 }, "end": { - "line": 723, + "line": 722, "column": 12 } }, @@ -53022,15 +52882,15 @@ }, "property": { "type": "Identifier", - "start": 24057, - "end": 24071, + "start": 23997, + "end": 24011, "loc": { "start": { - "line": 723, + "line": 722, "column": 13 }, "end": { - "line": 723, + "line": 722, "column": 27 }, "identifierName": "_cameraUpdater" @@ -53042,29 +52902,29 @@ }, "right": { "type": "NewExpression", - "start": 24074, - "end": 24166, + "start": 24014, + "end": 24106, "loc": { "start": { - "line": 723, + "line": 722, "column": 30 }, "end": { - "line": 723, + "line": 722, "column": 122 } }, "callee": { "type": "Identifier", - "start": 24078, - "end": 24091, + "start": 24018, + "end": 24031, "loc": { "start": { - "line": 723, + "line": 722, "column": 34 }, "end": { - "line": 723, + "line": 722, "column": 47 }, "identifierName": "CameraUpdater" @@ -53074,44 +52934,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 24092, - "end": 24102, + "start": 24032, + "end": 24042, "loc": { "start": { - "line": 723, + "line": 722, "column": 48 }, "end": { - "line": 723, + "line": 722, "column": 58 } }, "object": { "type": "ThisExpression", - "start": 24092, - "end": 24096, + "start": 24032, + "end": 24036, "loc": { "start": { - "line": 723, + "line": 722, "column": 48 }, "end": { - "line": 723, + "line": 722, "column": 52 } } }, "property": { "type": "Identifier", - "start": 24097, - "end": 24102, + "start": 24037, + "end": 24042, "loc": { "start": { - "line": 723, + "line": 722, "column": 53 }, "end": { - "line": 723, + "line": 722, "column": 58 }, "identifierName": "scene" @@ -53122,44 +52982,44 @@ }, { "type": "MemberExpression", - "start": 24104, - "end": 24121, + "start": 24044, + "end": 24061, "loc": { "start": { - "line": 723, + "line": 722, "column": 60 }, "end": { - "line": 723, + "line": 722, "column": 77 } }, "object": { "type": "ThisExpression", - "start": 24104, - "end": 24108, + "start": 24044, + "end": 24048, "loc": { "start": { - "line": 723, + "line": 722, "column": 60 }, "end": { - "line": 723, + "line": 722, "column": 64 } } }, "property": { "type": "Identifier", - "start": 24109, - "end": 24121, + "start": 24049, + "end": 24061, "loc": { "start": { - "line": 723, + "line": 722, "column": 65 }, "end": { - "line": 723, + "line": 722, "column": 77 }, "identifierName": "_controllers" @@ -53170,44 +53030,44 @@ }, { "type": "MemberExpression", - "start": 24123, - "end": 24136, + "start": 24063, + "end": 24076, "loc": { "start": { - "line": 723, + "line": 722, "column": 79 }, "end": { - "line": 723, + "line": 722, "column": 92 } }, "object": { "type": "ThisExpression", - "start": 24123, - "end": 24127, + "start": 24063, + "end": 24067, "loc": { "start": { - "line": 723, + "line": 722, "column": 79 }, "end": { - "line": 723, + "line": 722, "column": 83 } } }, "property": { "type": "Identifier", - "start": 24128, - "end": 24136, + "start": 24068, + "end": 24076, "loc": { "start": { - "line": 723, + "line": 722, "column": 84 }, "end": { - "line": 723, + "line": 722, "column": 92 }, "identifierName": "_configs" @@ -53218,44 +53078,44 @@ }, { "type": "MemberExpression", - "start": 24138, - "end": 24150, + "start": 24078, + "end": 24090, "loc": { "start": { - "line": 723, + "line": 722, "column": 94 }, "end": { - "line": 723, + "line": 722, "column": 106 } }, "object": { "type": "ThisExpression", - "start": 24138, - "end": 24142, + "start": 24078, + "end": 24082, "loc": { "start": { - "line": 723, + "line": 722, "column": 94 }, "end": { - "line": 723, + "line": 722, "column": 98 } } }, "property": { "type": "Identifier", - "start": 24143, - "end": 24150, + "start": 24083, + "end": 24090, "loc": { "start": { - "line": 723, + "line": 722, "column": 99 }, "end": { - "line": 723, + "line": 722, "column": 106 }, "identifierName": "_states" @@ -53266,44 +53126,44 @@ }, { "type": "MemberExpression", - "start": 24152, - "end": 24165, + "start": 24092, + "end": 24105, "loc": { "start": { - "line": 723, + "line": 722, "column": 108 }, "end": { - "line": 723, + "line": 722, "column": 121 } }, "object": { "type": "ThisExpression", - "start": 24152, - "end": 24156, + "start": 24092, + "end": 24096, "loc": { "start": { - "line": 723, + "line": 722, "column": 108 }, "end": { - "line": 723, + "line": 722, "column": 112 } } }, "property": { "type": "Identifier", - "start": 24157, - "end": 24165, + "start": 24097, + "end": 24105, "loc": { "start": { - "line": 723, + "line": 722, "column": 113 }, "end": { - "line": 723, + "line": 722, "column": 121 }, "identifierName": "_updates" @@ -53320,15 +53180,15 @@ { "type": "CommentLine", "value": " Applies scheduled updates to the Camera on each Scene \"tick\" event", - "start": 23973, - "end": 24042, + "start": 23913, + "end": 23982, "loc": { "start": { - "line": 721, + "line": 720, "column": 8 }, "end": { - "line": 721, + "line": 720, "column": 77 } } @@ -53338,15 +53198,15 @@ { "type": "CommentLine", "value": " Set initial user configurations", - "start": 24177, - "end": 24211, + "start": 24117, + "end": 24151, "loc": { "start": { - "line": 725, + "line": 724, "column": 8 }, "end": { - "line": 725, + "line": 724, "column": 42 } } @@ -53355,58 +53215,58 @@ }, { "type": "ExpressionStatement", - "start": 24221, - "end": 24248, + "start": 24161, + "end": 24188, "loc": { "start": { - "line": 727, + "line": 726, "column": 8 }, "end": { - "line": 727, + "line": 726, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 24221, - "end": 24247, + "start": 24161, + "end": 24187, "loc": { "start": { - "line": 727, + "line": 726, "column": 8 }, "end": { - "line": 727, + "line": 726, "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24221, - "end": 24233, + "start": 24161, + "end": 24173, "loc": { "start": { - "line": 727, + "line": 726, "column": 8 }, "end": { - "line": 727, + "line": 726, "column": 20 } }, "object": { "type": "ThisExpression", - "start": 24221, - "end": 24225, + "start": 24161, + "end": 24165, "loc": { "start": { - "line": 727, + "line": 726, "column": 8 }, "end": { - "line": 727, + "line": 726, "column": 12 } }, @@ -53414,15 +53274,15 @@ }, "property": { "type": "Identifier", - "start": 24226, - "end": 24233, + "start": 24166, + "end": 24173, "loc": { "start": { - "line": 727, + "line": 726, "column": 13 }, "end": { - "line": 727, + "line": 726, "column": 20 }, "identifierName": "navMode" @@ -53434,29 +53294,29 @@ }, "right": { "type": "MemberExpression", - "start": 24236, - "end": 24247, + "start": 24176, + "end": 24187, "loc": { "start": { - "line": 727, + "line": 726, "column": 23 }, "end": { - "line": 727, + "line": 726, "column": 34 } }, "object": { "type": "Identifier", - "start": 24236, - "end": 24239, + "start": 24176, + "end": 24179, "loc": { "start": { - "line": 727, + "line": 726, "column": 23 }, "end": { - "line": 727, + "line": 726, "column": 26 }, "identifierName": "cfg" @@ -53465,15 +53325,15 @@ }, "property": { "type": "Identifier", - "start": 24240, - "end": 24247, + "start": 24180, + "end": 24187, "loc": { "start": { - "line": 727, + "line": 726, "column": 27 }, "end": { - "line": 727, + "line": 726, "column": 34 }, "identifierName": "navMode" @@ -53488,15 +53348,15 @@ { "type": "CommentLine", "value": " Set initial user configurations", - "start": 24177, - "end": 24211, + "start": 24117, + "end": 24151, "loc": { "start": { - "line": 725, + "line": 724, "column": 8 }, "end": { - "line": 725, + "line": 724, "column": 42 } } @@ -53505,43 +53365,43 @@ }, { "type": "IfStatement", - "start": 24257, - "end": 24328, + "start": 24197, + "end": 24268, "loc": { "start": { - "line": 728, + "line": 727, "column": 8 }, "end": { - "line": 730, + "line": 729, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 24261, - "end": 24273, + "start": 24201, + "end": 24213, "loc": { "start": { - "line": 728, + "line": 727, "column": 12 }, "end": { - "line": 728, + "line": 727, "column": 24 } }, "object": { "type": "Identifier", - "start": 24261, - "end": 24264, + "start": 24201, + "end": 24204, "loc": { "start": { - "line": 728, + "line": 727, "column": 12 }, "end": { - "line": 728, + "line": 727, "column": 15 }, "identifierName": "cfg" @@ -53550,15 +53410,15 @@ }, "property": { "type": "Identifier", - "start": 24265, - "end": 24273, + "start": 24205, + "end": 24213, "loc": { "start": { - "line": 728, + "line": 727, "column": 16 }, "end": { - "line": 728, + "line": 727, "column": 24 }, "identifierName": "planView" @@ -53569,88 +53429,88 @@ }, "consequent": { "type": "BlockStatement", - "start": 24275, - "end": 24328, + "start": 24215, + "end": 24268, "loc": { "start": { - "line": 728, + "line": 727, "column": 26 }, "end": { - "line": 730, + "line": 729, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 24289, - "end": 24318, + "start": 24229, + "end": 24258, "loc": { "start": { - "line": 729, + "line": 728, "column": 12 }, "end": { - "line": 729, + "line": 728, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 24289, - "end": 24317, + "start": 24229, + "end": 24257, "loc": { "start": { - "line": 729, + "line": 728, "column": 12 }, "end": { - "line": 729, + "line": 728, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24289, - "end": 24302, + "start": 24229, + "end": 24242, "loc": { "start": { - "line": 729, + "line": 728, "column": 12 }, "end": { - "line": 729, + "line": 728, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 24289, - "end": 24293, + "start": 24229, + "end": 24233, "loc": { "start": { - "line": 729, + "line": 728, "column": 12 }, "end": { - "line": 729, + "line": 728, "column": 16 } } }, "property": { "type": "Identifier", - "start": 24294, - "end": 24302, + "start": 24234, + "end": 24242, "loc": { "start": { - "line": 729, + "line": 728, "column": 17 }, "end": { - "line": 729, + "line": 728, "column": 25 }, "identifierName": "planView" @@ -53661,29 +53521,29 @@ }, "right": { "type": "MemberExpression", - "start": 24305, - "end": 24317, + "start": 24245, + "end": 24257, "loc": { "start": { - "line": 729, + "line": 728, "column": 28 }, "end": { - "line": 729, + "line": 728, "column": 40 } }, "object": { "type": "Identifier", - "start": 24305, - "end": 24308, + "start": 24245, + "end": 24248, "loc": { "start": { - "line": 729, + "line": 728, "column": 28 }, "end": { - "line": 729, + "line": 728, "column": 31 }, "identifierName": "cfg" @@ -53692,15 +53552,15 @@ }, "property": { "type": "Identifier", - "start": 24309, - "end": 24317, + "start": 24249, + "end": 24257, "loc": { "start": { - "line": 729, + "line": 728, "column": 32 }, "end": { - "line": 729, + "line": 728, "column": 40 }, "identifierName": "planView" @@ -53718,73 +53578,73 @@ }, { "type": "ExpressionStatement", - "start": 24337, - "end": 24384, + "start": 24277, + "end": 24324, "loc": { "start": { - "line": 731, + "line": 730, "column": 8 }, "end": { - "line": 731, + "line": 730, "column": 55 } }, "expression": { "type": "AssignmentExpression", - "start": 24337, - "end": 24383, + "start": 24277, + "end": 24323, "loc": { "start": { - "line": 731, + "line": 730, "column": 8 }, "end": { - "line": 731, + "line": 730, "column": 54 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24337, - "end": 24359, + "start": 24277, + "end": 24299, "loc": { "start": { - "line": 731, + "line": 730, "column": 8 }, "end": { - "line": 731, + "line": 730, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 24337, - "end": 24341, + "start": 24277, + "end": 24281, "loc": { "start": { - "line": 731, + "line": 730, "column": 8 }, "end": { - "line": 731, + "line": 730, "column": 12 } } }, "property": { "type": "Identifier", - "start": 24342, - "end": 24359, + "start": 24282, + "end": 24299, "loc": { "start": { - "line": 731, + "line": 730, "column": 13 }, "end": { - "line": 731, + "line": 730, "column": 30 }, "identifierName": "constrainVertical" @@ -53795,29 +53655,29 @@ }, "right": { "type": "MemberExpression", - "start": 24362, - "end": 24383, + "start": 24302, + "end": 24323, "loc": { "start": { - "line": 731, + "line": 730, "column": 33 }, "end": { - "line": 731, + "line": 730, "column": 54 } }, "object": { "type": "Identifier", - "start": 24362, - "end": 24365, + "start": 24302, + "end": 24305, "loc": { "start": { - "line": 731, + "line": 730, "column": 33 }, "end": { - "line": 731, + "line": 730, "column": 36 }, "identifierName": "cfg" @@ -53826,15 +53686,15 @@ }, "property": { "type": "Identifier", - "start": 24366, - "end": 24383, + "start": 24306, + "end": 24323, "loc": { "start": { - "line": 731, + "line": 730, "column": 37 }, "end": { - "line": 731, + "line": 730, "column": 54 }, "identifierName": "constrainVertical" @@ -53847,43 +53707,43 @@ }, { "type": "IfStatement", - "start": 24393, - "end": 24551, + "start": 24333, + "end": 24491, "loc": { "start": { - "line": 732, + "line": 731, "column": 8 }, "end": { - "line": 736, + "line": 735, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 24397, - "end": 24415, + "start": 24337, + "end": 24355, "loc": { "start": { - "line": 732, + "line": 731, "column": 12 }, "end": { - "line": 732, + "line": 731, "column": 30 } }, "object": { "type": "Identifier", - "start": 24397, - "end": 24400, + "start": 24337, + "end": 24340, "loc": { "start": { - "line": 732, + "line": 731, "column": 12 }, "end": { - "line": 732, + "line": 731, "column": 15 }, "identifierName": "cfg" @@ -53892,15 +53752,15 @@ }, "property": { "type": "Identifier", - "start": 24401, - "end": 24415, + "start": 24341, + "end": 24355, "loc": { "start": { - "line": 732, + "line": 731, "column": 16 }, "end": { - "line": 732, + "line": 731, "column": 30 }, "identifierName": "keyboardLayout" @@ -53911,88 +53771,88 @@ }, "consequent": { "type": "BlockStatement", - "start": 24417, - "end": 24496, + "start": 24357, + "end": 24436, "loc": { "start": { - "line": 732, + "line": 731, "column": 32 }, "end": { - "line": 734, + "line": 733, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 24431, - "end": 24472, + "start": 24371, + "end": 24412, "loc": { "start": { - "line": 733, + "line": 732, "column": 12 }, "end": { - "line": 733, + "line": 732, "column": 53 } }, "expression": { "type": "AssignmentExpression", - "start": 24431, - "end": 24471, + "start": 24371, + "end": 24411, "loc": { "start": { - "line": 733, + "line": 732, "column": 12 }, "end": { - "line": 733, + "line": 732, "column": 52 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24431, - "end": 24450, + "start": 24371, + "end": 24390, "loc": { "start": { - "line": 733, + "line": 732, "column": 12 }, "end": { - "line": 733, + "line": 732, "column": 31 } }, "object": { "type": "ThisExpression", - "start": 24431, - "end": 24435, + "start": 24371, + "end": 24375, "loc": { "start": { - "line": 733, + "line": 732, "column": 12 }, "end": { - "line": 733, + "line": 732, "column": 16 } } }, "property": { "type": "Identifier", - "start": 24436, - "end": 24450, + "start": 24376, + "end": 24390, "loc": { "start": { - "line": 733, + "line": 732, "column": 17 }, "end": { - "line": 733, + "line": 732, "column": 31 }, "identifierName": "keyboardLayout" @@ -54003,29 +53863,29 @@ }, "right": { "type": "MemberExpression", - "start": 24453, - "end": 24471, + "start": 24393, + "end": 24411, "loc": { "start": { - "line": 733, + "line": 732, "column": 34 }, "end": { - "line": 733, + "line": 732, "column": 52 } }, "object": { "type": "Identifier", - "start": 24453, - "end": 24456, + "start": 24393, + "end": 24396, "loc": { "start": { - "line": 733, + "line": 732, "column": 34 }, "end": { - "line": 733, + "line": 732, "column": 37 }, "identifierName": "cfg" @@ -54034,15 +53894,15 @@ }, "property": { "type": "Identifier", - "start": 24457, - "end": 24471, + "start": 24397, + "end": 24411, "loc": { "start": { - "line": 733, + "line": 732, "column": 38 }, "end": { - "line": 733, + "line": 732, "column": 52 }, "identifierName": "keyboardLayout" @@ -54056,15 +53916,15 @@ { "type": "CommentLine", "value": " Deprecated", - "start": 24473, - "end": 24486, + "start": 24413, + "end": 24426, "loc": { "start": { - "line": 733, + "line": 732, "column": 54 }, "end": { - "line": 733, + "line": 732, "column": 67 } } @@ -54076,88 +53936,88 @@ }, "alternate": { "type": "BlockStatement", - "start": 24502, - "end": 24551, + "start": 24442, + "end": 24491, "loc": { "start": { - "line": 734, + "line": 733, "column": 15 }, "end": { - "line": 736, + "line": 735, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 24516, - "end": 24541, + "start": 24456, + "end": 24481, "loc": { "start": { - "line": 735, + "line": 734, "column": 12 }, "end": { - "line": 735, + "line": 734, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 24516, - "end": 24540, + "start": 24456, + "end": 24480, "loc": { "start": { - "line": 735, + "line": 734, "column": 12 }, "end": { - "line": 735, + "line": 734, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24516, - "end": 24527, + "start": 24456, + "end": 24467, "loc": { "start": { - "line": 735, + "line": 734, "column": 12 }, "end": { - "line": 735, + "line": 734, "column": 23 } }, "object": { "type": "ThisExpression", - "start": 24516, - "end": 24520, + "start": 24456, + "end": 24460, "loc": { "start": { - "line": 735, + "line": 734, "column": 12 }, "end": { - "line": 735, + "line": 734, "column": 16 } } }, "property": { "type": "Identifier", - "start": 24521, - "end": 24527, + "start": 24461, + "end": 24467, "loc": { "start": { - "line": 735, + "line": 734, "column": 17 }, "end": { - "line": 735, + "line": 734, "column": 23 }, "identifierName": "keyMap" @@ -54168,29 +54028,29 @@ }, "right": { "type": "MemberExpression", - "start": 24530, - "end": 24540, + "start": 24470, + "end": 24480, "loc": { "start": { - "line": 735, + "line": 734, "column": 26 }, "end": { - "line": 735, + "line": 734, "column": 36 } }, "object": { "type": "Identifier", - "start": 24530, - "end": 24533, + "start": 24470, + "end": 24473, "loc": { "start": { - "line": 735, + "line": 734, "column": 26 }, "end": { - "line": 735, + "line": 734, "column": 29 }, "identifierName": "cfg" @@ -54199,15 +54059,15 @@ }, "property": { "type": "Identifier", - "start": 24534, - "end": 24540, + "start": 24474, + "end": 24480, "loc": { "start": { - "line": 735, + "line": 734, "column": 30 }, "end": { - "line": 735, + "line": 734, "column": 36 }, "identifierName": "keyMap" @@ -54224,8 +54084,137 @@ }, { "type": "ExpressionStatement", - "start": 24560, - "end": 24603, + "start": 24500, + "end": 24543, + "loc": { + "start": { + "line": 736, + "column": 8 + }, + "end": { + "line": 736, + "column": 51 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 24500, + "end": 24542, + "loc": { + "start": { + "line": 736, + "column": 8 + }, + "end": { + "line": 736, + "column": 50 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 24500, + "end": 24520, + "loc": { + "start": { + "line": 736, + "column": 8 + }, + "end": { + "line": 736, + "column": 28 + } + }, + "object": { + "type": "ThisExpression", + "start": 24500, + "end": 24504, + "loc": { + "start": { + "line": 736, + "column": 8 + }, + "end": { + "line": 736, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 24505, + "end": 24520, + "loc": { + "start": { + "line": 736, + "column": 13 + }, + "end": { + "line": 736, + "column": 28 + }, + "identifierName": "doublePickFlyTo" + }, + "name": "doublePickFlyTo" + }, + "computed": false + }, + "right": { + "type": "MemberExpression", + "start": 24523, + "end": 24542, + "loc": { + "start": { + "line": 736, + "column": 31 + }, + "end": { + "line": 736, + "column": 50 + } + }, + "object": { + "type": "Identifier", + "start": 24523, + "end": 24526, + "loc": { + "start": { + "line": 736, + "column": 31 + }, + "end": { + "line": 736, + "column": 34 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 24527, + "end": 24542, + "loc": { + "start": { + "line": 736, + "column": 35 + }, + "end": { + "line": 736, + "column": 50 + }, + "identifierName": "doublePickFlyTo" + }, + "name": "doublePickFlyTo" + }, + "computed": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 24552, + "end": 24591, "loc": { "start": { "line": 737, @@ -54233,13 +54222,13 @@ }, "end": { "line": 737, - "column": 51 + "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 24560, - "end": 24602, + "start": 24552, + "end": 24590, "loc": { "start": { "line": 737, @@ -54247,14 +54236,14 @@ }, "end": { "line": 737, - "column": 50 + "column": 46 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24560, - "end": 24580, + "start": 24552, + "end": 24570, "loc": { "start": { "line": 737, @@ -54262,13 +54251,13 @@ }, "end": { "line": 737, - "column": 28 + "column": 26 } }, "object": { "type": "ThisExpression", - "start": 24560, - "end": 24564, + "start": 24552, + "end": 24556, "loc": { "start": { "line": 737, @@ -54282,8 +54271,8 @@ }, "property": { "type": "Identifier", - "start": 24565, - "end": 24580, + "start": 24557, + "end": 24570, "loc": { "start": { "line": 737, @@ -54291,40 +54280,40 @@ }, "end": { "line": 737, - "column": 28 + "column": 26 }, - "identifierName": "doublePickFlyTo" + "identifierName": "panRightClick" }, - "name": "doublePickFlyTo" + "name": "panRightClick" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24583, - "end": 24602, + "start": 24573, + "end": 24590, "loc": { "start": { "line": 737, - "column": 31 + "column": 29 }, "end": { "line": 737, - "column": 50 + "column": 46 } }, "object": { "type": "Identifier", - "start": 24583, - "end": 24586, + "start": 24573, + "end": 24576, "loc": { "start": { "line": 737, - "column": 31 + "column": 29 }, "end": { "line": 737, - "column": 34 + "column": 32 }, "identifierName": "cfg" }, @@ -54332,20 +54321,20 @@ }, "property": { "type": "Identifier", - "start": 24587, - "end": 24602, + "start": 24577, + "end": 24590, "loc": { "start": { "line": 737, - "column": 35 + "column": 33 }, "end": { "line": 737, - "column": 50 + "column": 46 }, - "identifierName": "doublePickFlyTo" + "identifierName": "panRightClick" }, - "name": "doublePickFlyTo" + "name": "panRightClick" }, "computed": false } @@ -54353,8 +54342,8 @@ }, { "type": "ExpressionStatement", - "start": 24612, - "end": 24651, + "start": 24600, + "end": 24625, "loc": { "start": { "line": 738, @@ -54362,13 +54351,13 @@ }, "end": { "line": 738, - "column": 47 + "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 24612, - "end": 24650, + "start": 24600, + "end": 24624, "loc": { "start": { "line": 738, @@ -54376,14 +54365,14 @@ }, "end": { "line": 738, - "column": 46 + "column": 32 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24612, - "end": 24630, + "start": 24600, + "end": 24611, "loc": { "start": { "line": 738, @@ -54391,13 +54380,13 @@ }, "end": { "line": 738, - "column": 26 + "column": 19 } }, "object": { "type": "ThisExpression", - "start": 24612, - "end": 24616, + "start": 24600, + "end": 24604, "loc": { "start": { "line": 738, @@ -54411,8 +54400,8 @@ }, "property": { "type": "Identifier", - "start": 24617, - "end": 24630, + "start": 24605, + "end": 24611, "loc": { "start": { "line": 738, @@ -54420,40 +54409,40 @@ }, "end": { "line": 738, - "column": 26 + "column": 19 }, - "identifierName": "panRightClick" + "identifierName": "active" }, - "name": "panRightClick" + "name": "active" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24633, - "end": 24650, + "start": 24614, + "end": 24624, "loc": { "start": { "line": 738, - "column": 29 + "column": 22 }, "end": { "line": 738, - "column": 46 + "column": 32 } }, "object": { "type": "Identifier", - "start": 24633, - "end": 24636, + "start": 24614, + "end": 24617, "loc": { "start": { "line": 738, - "column": 29 + "column": 22 }, "end": { "line": 738, - "column": 32 + "column": 25 }, "identifierName": "cfg" }, @@ -54461,20 +54450,20 @@ }, "property": { "type": "Identifier", - "start": 24637, - "end": 24650, + "start": 24618, + "end": 24624, "loc": { "start": { "line": 738, - "column": 33 + "column": 26 }, "end": { "line": 738, - "column": 46 + "column": 32 }, - "identifierName": "panRightClick" + "identifierName": "active" }, - "name": "panRightClick" + "name": "active" }, "computed": false } @@ -54482,8 +54471,8 @@ }, { "type": "ExpressionStatement", - "start": 24660, - "end": 24685, + "start": 24634, + "end": 24673, "loc": { "start": { "line": 739, @@ -54491,13 +54480,13 @@ }, "end": { "line": 739, - "column": 33 + "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 24660, - "end": 24684, + "start": 24634, + "end": 24672, "loc": { "start": { "line": 739, @@ -54505,14 +54494,14 @@ }, "end": { "line": 739, - "column": 32 + "column": 46 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24660, - "end": 24671, + "start": 24634, + "end": 24652, "loc": { "start": { "line": 739, @@ -54520,13 +54509,13 @@ }, "end": { "line": 739, - "column": 19 + "column": 26 } }, "object": { "type": "ThisExpression", - "start": 24660, - "end": 24664, + "start": 24634, + "end": 24638, "loc": { "start": { "line": 739, @@ -54540,8 +54529,8 @@ }, "property": { "type": "Identifier", - "start": 24665, - "end": 24671, + "start": 24639, + "end": 24652, "loc": { "start": { "line": 739, @@ -54549,40 +54538,40 @@ }, "end": { "line": 739, - "column": 19 + "column": 26 }, - "identifierName": "active" + "identifierName": "followPointer" }, - "name": "active" + "name": "followPointer" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24674, - "end": 24684, + "start": 24655, + "end": 24672, "loc": { "start": { "line": 739, - "column": 22 + "column": 29 }, "end": { "line": 739, - "column": 32 + "column": 46 } }, "object": { "type": "Identifier", - "start": 24674, - "end": 24677, + "start": 24655, + "end": 24658, "loc": { "start": { "line": 739, - "column": 22 + "column": 29 }, "end": { "line": 739, - "column": 25 + "column": 32 }, "identifierName": "cfg" }, @@ -54590,20 +54579,20 @@ }, "property": { "type": "Identifier", - "start": 24678, - "end": 24684, + "start": 24659, + "end": 24672, "loc": { "start": { "line": 739, - "column": 26 + "column": 33 }, "end": { "line": 739, - "column": 32 + "column": 46 }, - "identifierName": "active" + "identifierName": "followPointer" }, - "name": "active" + "name": "followPointer" }, "computed": false } @@ -54611,8 +54600,8 @@ }, { "type": "ExpressionStatement", - "start": 24694, - "end": 24733, + "start": 24682, + "end": 24725, "loc": { "start": { "line": 740, @@ -54620,13 +54609,13 @@ }, "end": { "line": 740, - "column": 47 + "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 24694, - "end": 24732, + "start": 24682, + "end": 24724, "loc": { "start": { "line": 740, @@ -54634,14 +54623,14 @@ }, "end": { "line": 740, - "column": 46 + "column": 50 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24694, - "end": 24712, + "start": 24682, + "end": 24702, "loc": { "start": { "line": 740, @@ -54649,13 +54638,13 @@ }, "end": { "line": 740, - "column": 26 + "column": 28 } }, "object": { "type": "ThisExpression", - "start": 24694, - "end": 24698, + "start": 24682, + "end": 24686, "loc": { "start": { "line": 740, @@ -54669,8 +54658,8 @@ }, "property": { "type": "Identifier", - "start": 24699, - "end": 24712, + "start": 24687, + "end": 24702, "loc": { "start": { "line": 740, @@ -54678,40 +54667,40 @@ }, "end": { "line": 740, - "column": 26 + "column": 28 }, - "identifierName": "followPointer" + "identifierName": "rotationInertia" }, - "name": "followPointer" + "name": "rotationInertia" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24715, - "end": 24732, + "start": 24705, + "end": 24724, "loc": { "start": { "line": 740, - "column": 29 + "column": 31 }, "end": { "line": 740, - "column": 46 + "column": 50 } }, "object": { "type": "Identifier", - "start": 24715, - "end": 24718, + "start": 24705, + "end": 24708, "loc": { "start": { "line": 740, - "column": 29 + "column": 31 }, "end": { "line": 740, - "column": 32 + "column": 34 }, "identifierName": "cfg" }, @@ -54719,20 +54708,20 @@ }, "property": { "type": "Identifier", - "start": 24719, - "end": 24732, + "start": 24709, + "end": 24724, "loc": { "start": { "line": 740, - "column": 33 + "column": 35 }, "end": { "line": 740, - "column": 46 + "column": 50 }, - "identifierName": "followPointer" + "identifierName": "rotationInertia" }, - "name": "followPointer" + "name": "rotationInertia" }, "computed": false } @@ -54740,8 +54729,8 @@ }, { "type": "ExpressionStatement", - "start": 24742, - "end": 24785, + "start": 24734, + "end": 24777, "loc": { "start": { "line": 741, @@ -54754,8 +54743,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 24742, - "end": 24784, + "start": 24734, + "end": 24776, "loc": { "start": { "line": 741, @@ -54769,8 +54758,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 24742, - "end": 24762, + "start": 24734, + "end": 24754, "loc": { "start": { "line": 741, @@ -54783,8 +54772,8 @@ }, "object": { "type": "ThisExpression", - "start": 24742, - "end": 24746, + "start": 24734, + "end": 24738, "loc": { "start": { "line": 741, @@ -54798,8 +54787,8 @@ }, "property": { "type": "Identifier", - "start": 24747, - "end": 24762, + "start": 24739, + "end": 24754, "loc": { "start": { "line": 741, @@ -54809,16 +54798,16 @@ "line": 741, "column": 28 }, - "identifierName": "rotationInertia" + "identifierName": "keyboardPanRate" }, - "name": "rotationInertia" + "name": "keyboardPanRate" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24765, - "end": 24784, + "start": 24757, + "end": 24776, "loc": { "start": { "line": 741, @@ -54831,8 +54820,8 @@ }, "object": { "type": "Identifier", - "start": 24765, - "end": 24768, + "start": 24757, + "end": 24760, "loc": { "start": { "line": 741, @@ -54848,8 +54837,8 @@ }, "property": { "type": "Identifier", - "start": 24769, - "end": 24784, + "start": 24761, + "end": 24776, "loc": { "start": { "line": 741, @@ -54859,9 +54848,9 @@ "line": 741, "column": 50 }, - "identifierName": "rotationInertia" + "identifierName": "keyboardPanRate" }, - "name": "rotationInertia" + "name": "keyboardPanRate" }, "computed": false } @@ -54869,8 +54858,8 @@ }, { "type": "ExpressionStatement", - "start": 24794, - "end": 24837, + "start": 24786, + "end": 24823, "loc": { "start": { "line": 742, @@ -54878,13 +54867,13 @@ }, "end": { "line": 742, - "column": 51 + "column": 45 } }, "expression": { "type": "AssignmentExpression", - "start": 24794, - "end": 24836, + "start": 24786, + "end": 24822, "loc": { "start": { "line": 742, @@ -54892,14 +54881,14 @@ }, "end": { "line": 742, - "column": 50 + "column": 44 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24794, - "end": 24814, + "start": 24786, + "end": 24803, "loc": { "start": { "line": 742, @@ -54907,13 +54896,13 @@ }, "end": { "line": 742, - "column": 28 + "column": 25 } }, "object": { "type": "ThisExpression", - "start": 24794, - "end": 24798, + "start": 24786, + "end": 24790, "loc": { "start": { "line": 742, @@ -54927,8 +54916,8 @@ }, "property": { "type": "Identifier", - "start": 24799, - "end": 24814, + "start": 24791, + "end": 24803, "loc": { "start": { "line": 742, @@ -54936,40 +54925,40 @@ }, "end": { "line": 742, - "column": 28 + "column": 25 }, - "identifierName": "keyboardPanRate" + "identifierName": "touchPanRate" }, - "name": "keyboardPanRate" + "name": "touchPanRate" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24817, - "end": 24836, + "start": 24806, + "end": 24822, "loc": { "start": { "line": 742, - "column": 31 + "column": 28 }, "end": { "line": 742, - "column": 50 + "column": 44 } }, "object": { "type": "Identifier", - "start": 24817, - "end": 24820, + "start": 24806, + "end": 24809, "loc": { "start": { "line": 742, - "column": 31 + "column": 28 }, "end": { "line": 742, - "column": 34 + "column": 31 }, "identifierName": "cfg" }, @@ -54977,20 +54966,20 @@ }, "property": { "type": "Identifier", - "start": 24821, - "end": 24836, + "start": 24810, + "end": 24822, "loc": { "start": { "line": 742, - "column": 35 + "column": 32 }, "end": { "line": 742, - "column": 50 + "column": 44 }, - "identifierName": "keyboardPanRate" + "identifierName": "touchPanRate" }, - "name": "keyboardPanRate" + "name": "touchPanRate" }, "computed": false } @@ -54998,8 +54987,8 @@ }, { "type": "ExpressionStatement", - "start": 24846, - "end": 24883, + "start": 24832, + "end": 24885, "loc": { "start": { "line": 743, @@ -55007,13 +54996,13 @@ }, "end": { "line": 743, - "column": 45 + "column": 61 } }, "expression": { "type": "AssignmentExpression", - "start": 24846, - "end": 24882, + "start": 24832, + "end": 24884, "loc": { "start": { "line": 743, @@ -55021,14 +55010,14 @@ }, "end": { "line": 743, - "column": 44 + "column": 60 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24846, - "end": 24863, + "start": 24832, + "end": 24857, "loc": { "start": { "line": 743, @@ -55036,13 +55025,13 @@ }, "end": { "line": 743, - "column": 25 + "column": 33 } }, "object": { "type": "ThisExpression", - "start": 24846, - "end": 24850, + "start": 24832, + "end": 24836, "loc": { "start": { "line": 743, @@ -55056,8 +55045,8 @@ }, "property": { "type": "Identifier", - "start": 24851, - "end": 24863, + "start": 24837, + "end": 24857, "loc": { "start": { "line": 743, @@ -55065,40 +55054,40 @@ }, "end": { "line": 743, - "column": 25 + "column": 33 }, - "identifierName": "touchPanRate" + "identifierName": "keyboardRotationRate" }, - "name": "touchPanRate" + "name": "keyboardRotationRate" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24866, - "end": 24882, + "start": 24860, + "end": 24884, "loc": { "start": { "line": 743, - "column": 28 + "column": 36 }, "end": { "line": 743, - "column": 44 + "column": 60 } }, "object": { "type": "Identifier", - "start": 24866, - "end": 24869, + "start": 24860, + "end": 24863, "loc": { "start": { "line": 743, - "column": 28 + "column": 36 }, "end": { "line": 743, - "column": 31 + "column": 39 }, "identifierName": "cfg" }, @@ -55106,20 +55095,20 @@ }, "property": { "type": "Identifier", - "start": 24870, - "end": 24882, + "start": 24864, + "end": 24884, "loc": { "start": { "line": 743, - "column": 32 + "column": 40 }, "end": { "line": 743, - "column": 44 + "column": 60 }, - "identifierName": "touchPanRate" + "identifierName": "keyboardRotationRate" }, - "name": "touchPanRate" + "name": "keyboardRotationRate" }, "computed": false } @@ -55127,8 +55116,8 @@ }, { "type": "ExpressionStatement", - "start": 24892, - "end": 24945, + "start": 24894, + "end": 24939, "loc": { "start": { "line": 744, @@ -55136,13 +55125,13 @@ }, "end": { "line": 744, - "column": 61 + "column": 53 } }, "expression": { "type": "AssignmentExpression", - "start": 24892, - "end": 24944, + "start": 24894, + "end": 24938, "loc": { "start": { "line": 744, @@ -55150,14 +55139,14 @@ }, "end": { "line": 744, - "column": 60 + "column": 52 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24892, - "end": 24917, + "start": 24894, + "end": 24915, "loc": { "start": { "line": 744, @@ -55165,13 +55154,13 @@ }, "end": { "line": 744, - "column": 33 + "column": 29 } }, "object": { "type": "ThisExpression", - "start": 24892, - "end": 24896, + "start": 24894, + "end": 24898, "loc": { "start": { "line": 744, @@ -55185,8 +55174,8 @@ }, "property": { "type": "Identifier", - "start": 24897, - "end": 24917, + "start": 24899, + "end": 24915, "loc": { "start": { "line": 744, @@ -55194,40 +55183,40 @@ }, "end": { "line": 744, - "column": 33 + "column": 29 }, - "identifierName": "keyboardRotationRate" + "identifierName": "dragRotationRate" }, - "name": "keyboardRotationRate" + "name": "dragRotationRate" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24920, - "end": 24944, + "start": 24918, + "end": 24938, "loc": { "start": { "line": 744, - "column": 36 + "column": 32 }, "end": { "line": 744, - "column": 60 + "column": 52 } }, "object": { "type": "Identifier", - "start": 24920, - "end": 24923, + "start": 24918, + "end": 24921, "loc": { "start": { "line": 744, - "column": 36 + "column": 32 }, "end": { "line": 744, - "column": 39 + "column": 35 }, "identifierName": "cfg" }, @@ -55235,20 +55224,20 @@ }, "property": { "type": "Identifier", - "start": 24924, - "end": 24944, + "start": 24922, + "end": 24938, "loc": { "start": { "line": 744, - "column": 40 + "column": 36 }, "end": { "line": 744, - "column": 60 + "column": 52 }, - "identifierName": "keyboardRotationRate" + "identifierName": "dragRotationRate" }, - "name": "keyboardRotationRate" + "name": "dragRotationRate" }, "computed": false } @@ -55256,8 +55245,8 @@ }, { "type": "ExpressionStatement", - "start": 24954, - "end": 24999, + "start": 24948, + "end": 24989, "loc": { "start": { "line": 745, @@ -55265,13 +55254,13 @@ }, "end": { "line": 745, - "column": 53 + "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 24954, - "end": 24998, + "start": 24948, + "end": 24988, "loc": { "start": { "line": 745, @@ -55279,14 +55268,14 @@ }, "end": { "line": 745, - "column": 52 + "column": 48 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24954, - "end": 24975, + "start": 24948, + "end": 24967, "loc": { "start": { "line": 745, @@ -55294,13 +55283,13 @@ }, "end": { "line": 745, - "column": 29 + "column": 27 } }, "object": { "type": "ThisExpression", - "start": 24954, - "end": 24958, + "start": 24948, + "end": 24952, "loc": { "start": { "line": 745, @@ -55314,8 +55303,8 @@ }, "property": { "type": "Identifier", - "start": 24959, - "end": 24975, + "start": 24953, + "end": 24967, "loc": { "start": { "line": 745, @@ -55323,40 +55312,40 @@ }, "end": { "line": 745, - "column": 29 + "column": 27 }, - "identifierName": "dragRotationRate" + "identifierName": "touchDollyRate" }, - "name": "dragRotationRate" + "name": "touchDollyRate" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 24978, - "end": 24998, + "start": 24970, + "end": 24988, "loc": { "start": { "line": 745, - "column": 32 + "column": 30 }, "end": { "line": 745, - "column": 52 + "column": 48 } }, "object": { "type": "Identifier", - "start": 24978, - "end": 24981, + "start": 24970, + "end": 24973, "loc": { "start": { "line": 745, - "column": 32 + "column": 30 }, "end": { "line": 745, - "column": 35 + "column": 33 }, "identifierName": "cfg" }, @@ -55364,20 +55353,20 @@ }, "property": { "type": "Identifier", - "start": 24982, - "end": 24998, + "start": 24974, + "end": 24988, "loc": { "start": { "line": 745, - "column": 36 + "column": 34 }, "end": { "line": 745, - "column": 52 + "column": 48 }, - "identifierName": "dragRotationRate" + "identifierName": "touchDollyRate" }, - "name": "dragRotationRate" + "name": "touchDollyRate" }, "computed": false } @@ -55385,8 +55374,8 @@ }, { "type": "ExpressionStatement", - "start": 25008, - "end": 25049, + "start": 24998, + "end": 25035, "loc": { "start": { "line": 746, @@ -55394,13 +55383,13 @@ }, "end": { "line": 746, - "column": 49 + "column": 45 } }, "expression": { "type": "AssignmentExpression", - "start": 25008, - "end": 25048, + "start": 24998, + "end": 25034, "loc": { "start": { "line": 746, @@ -55408,14 +55397,14 @@ }, "end": { "line": 746, - "column": 48 + "column": 44 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25008, - "end": 25027, + "start": 24998, + "end": 25015, "loc": { "start": { "line": 746, @@ -55423,13 +55412,13 @@ }, "end": { "line": 746, - "column": 27 + "column": 25 } }, "object": { "type": "ThisExpression", - "start": 25008, - "end": 25012, + "start": 24998, + "end": 25002, "loc": { "start": { "line": 746, @@ -55443,8 +55432,8 @@ }, "property": { "type": "Identifier", - "start": 25013, - "end": 25027, + "start": 25003, + "end": 25015, "loc": { "start": { "line": 746, @@ -55452,40 +55441,40 @@ }, "end": { "line": 746, - "column": 27 + "column": 25 }, - "identifierName": "touchDollyRate" + "identifierName": "dollyInertia" }, - "name": "touchDollyRate" + "name": "dollyInertia" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 25030, - "end": 25048, + "start": 25018, + "end": 25034, "loc": { "start": { "line": 746, - "column": 30 + "column": 28 }, "end": { "line": 746, - "column": 48 + "column": 44 } }, "object": { "type": "Identifier", - "start": 25030, - "end": 25033, + "start": 25018, + "end": 25021, "loc": { "start": { "line": 746, - "column": 30 + "column": 28 }, "end": { "line": 746, - "column": 33 + "column": 31 }, "identifierName": "cfg" }, @@ -55493,20 +55482,20 @@ }, "property": { "type": "Identifier", - "start": 25034, - "end": 25048, + "start": 25022, + "end": 25034, "loc": { "start": { "line": 746, - "column": 34 + "column": 32 }, "end": { "line": 746, - "column": 48 + "column": 44 }, - "identifierName": "touchDollyRate" + "identifierName": "dollyInertia" }, - "name": "touchDollyRate" + "name": "dollyInertia" }, "computed": false } @@ -55514,8 +55503,8 @@ }, { "type": "ExpressionStatement", - "start": 25058, - "end": 25095, + "start": 25044, + "end": 25103, "loc": { "start": { "line": 747, @@ -55523,13 +55512,13 @@ }, "end": { "line": 747, - "column": 45 + "column": 67 } }, "expression": { "type": "AssignmentExpression", - "start": 25058, - "end": 25094, + "start": 25044, + "end": 25102, "loc": { "start": { "line": 747, @@ -55537,14 +55526,14 @@ }, "end": { "line": 747, - "column": 44 + "column": 66 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25058, - "end": 25075, + "start": 25044, + "end": 25072, "loc": { "start": { "line": 747, @@ -55552,13 +55541,13 @@ }, "end": { "line": 747, - "column": 25 + "column": 36 } }, "object": { "type": "ThisExpression", - "start": 25058, - "end": 25062, + "start": 25044, + "end": 25048, "loc": { "start": { "line": 747, @@ -55572,8 +55561,8 @@ }, "property": { "type": "Identifier", - "start": 25063, - "end": 25075, + "start": 25049, + "end": 25072, "loc": { "start": { "line": 747, @@ -55581,40 +55570,40 @@ }, "end": { "line": 747, - "column": 25 + "column": 36 }, - "identifierName": "dollyInertia" + "identifierName": "dollyProximityThreshold" }, - "name": "dollyInertia" + "name": "dollyProximityThreshold" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 25078, - "end": 25094, + "start": 25075, + "end": 25102, "loc": { "start": { "line": 747, - "column": 28 + "column": 39 }, "end": { "line": 747, - "column": 44 + "column": 66 } }, "object": { "type": "Identifier", - "start": 25078, - "end": 25081, + "start": 25075, + "end": 25078, "loc": { "start": { "line": 747, - "column": 28 + "column": 39 }, "end": { "line": 747, - "column": 31 + "column": 42 }, "identifierName": "cfg" }, @@ -55622,20 +55611,20 @@ }, "property": { "type": "Identifier", - "start": 25082, - "end": 25094, + "start": 25079, + "end": 25102, "loc": { "start": { "line": 747, - "column": 32 + "column": 43 }, "end": { "line": 747, - "column": 44 + "column": 66 }, - "identifierName": "dollyInertia" + "identifierName": "dollyProximityThreshold" }, - "name": "dollyInertia" + "name": "dollyProximityThreshold" }, "computed": false } @@ -55643,8 +55632,8 @@ }, { "type": "ExpressionStatement", - "start": 25104, - "end": 25163, + "start": 25112, + "end": 25151, "loc": { "start": { "line": 748, @@ -55652,13 +55641,13 @@ }, "end": { "line": 748, - "column": 67 + "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 25104, - "end": 25162, + "start": 25112, + "end": 25150, "loc": { "start": { "line": 748, @@ -55666,14 +55655,14 @@ }, "end": { "line": 748, - "column": 66 + "column": 46 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25104, - "end": 25132, + "start": 25112, + "end": 25130, "loc": { "start": { "line": 748, @@ -55681,13 +55670,13 @@ }, "end": { "line": 748, - "column": 36 + "column": 26 } }, "object": { "type": "ThisExpression", - "start": 25104, - "end": 25108, + "start": 25112, + "end": 25116, "loc": { "start": { "line": 748, @@ -55701,8 +55690,8 @@ }, "property": { "type": "Identifier", - "start": 25109, - "end": 25132, + "start": 25117, + "end": 25130, "loc": { "start": { "line": 748, @@ -55710,40 +55699,40 @@ }, "end": { "line": 748, - "column": 36 + "column": 26 }, - "identifierName": "dollyProximityThreshold" + "identifierName": "dollyMinSpeed" }, - "name": "dollyProximityThreshold" + "name": "dollyMinSpeed" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 25135, - "end": 25162, + "start": 25133, + "end": 25150, "loc": { "start": { "line": 748, - "column": 39 + "column": 29 }, "end": { "line": 748, - "column": 66 + "column": 46 } }, "object": { "type": "Identifier", - "start": 25135, - "end": 25138, + "start": 25133, + "end": 25136, "loc": { "start": { "line": 748, - "column": 39 + "column": 29 }, "end": { "line": 748, - "column": 42 + "column": 32 }, "identifierName": "cfg" }, @@ -55751,20 +55740,20 @@ }, "property": { "type": "Identifier", - "start": 25139, - "end": 25162, + "start": 25137, + "end": 25150, "loc": { "start": { "line": 748, - "column": 43 + "column": 33 }, "end": { "line": 748, - "column": 66 + "column": 46 }, - "identifierName": "dollyProximityThreshold" + "identifierName": "dollyMinSpeed" }, - "name": "dollyProximityThreshold" + "name": "dollyMinSpeed" }, "computed": false } @@ -55772,8 +55761,8 @@ }, { "type": "ExpressionStatement", - "start": 25172, - "end": 25211, + "start": 25160, + "end": 25193, "loc": { "start": { "line": 749, @@ -55781,13 +55770,13 @@ }, "end": { "line": 749, - "column": 47 + "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 25172, - "end": 25210, + "start": 25160, + "end": 25192, "loc": { "start": { "line": 749, @@ -55795,14 +55784,14 @@ }, "end": { "line": 749, - "column": 46 + "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25172, - "end": 25190, + "start": 25160, + "end": 25175, "loc": { "start": { "line": 749, @@ -55810,13 +55799,13 @@ }, "end": { "line": 749, - "column": 26 + "column": 23 } }, "object": { "type": "ThisExpression", - "start": 25172, - "end": 25176, + "start": 25160, + "end": 25164, "loc": { "start": { "line": 749, @@ -55830,8 +55819,8 @@ }, "property": { "type": "Identifier", - "start": 25177, - "end": 25190, + "start": 25165, + "end": 25175, "loc": { "start": { "line": 749, @@ -55839,40 +55828,40 @@ }, "end": { "line": 749, - "column": 26 + "column": 23 }, - "identifierName": "dollyMinSpeed" + "identifierName": "panInertia" }, - "name": "dollyMinSpeed" + "name": "panInertia" }, "computed": false }, "right": { "type": "MemberExpression", - "start": 25193, - "end": 25210, + "start": 25178, + "end": 25192, "loc": { "start": { "line": 749, - "column": 29 + "column": 26 }, "end": { "line": 749, - "column": 46 + "column": 40 } }, "object": { "type": "Identifier", - "start": 25193, - "end": 25196, + "start": 25178, + "end": 25181, "loc": { "start": { "line": 749, - "column": 29 + "column": 26 }, "end": { "line": 749, - "column": 32 + "column": 29 }, "identifierName": "cfg" }, @@ -55880,20 +55869,20 @@ }, "property": { "type": "Identifier", - "start": 25197, - "end": 25210, + "start": 25182, + "end": 25192, "loc": { "start": { "line": 749, - "column": 33 + "column": 30 }, "end": { "line": 749, - "column": 46 + "column": 40 }, - "identifierName": "dollyMinSpeed" + "identifierName": "panInertia" }, - "name": "dollyMinSpeed" + "name": "panInertia" }, "computed": false } @@ -55901,8 +55890,8 @@ }, { "type": "ExpressionStatement", - "start": 25220, - "end": 25253, + "start": 25202, + "end": 25229, "loc": { "start": { "line": 750, @@ -55910,13 +55899,13 @@ }, "end": { "line": 750, - "column": 41 + "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 25220, - "end": 25252, + "start": 25202, + "end": 25228, "loc": { "start": { "line": 750, @@ -55924,14 +55913,14 @@ }, "end": { "line": 750, - "column": 40 + "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25220, - "end": 25235, + "start": 25202, + "end": 25221, "loc": { "start": { "line": 750, @@ -55939,13 +55928,13 @@ }, "end": { "line": 750, - "column": 23 + "column": 27 } }, "object": { "type": "ThisExpression", - "start": 25220, - "end": 25224, + "start": 25202, + "end": 25206, "loc": { "start": { "line": 750, @@ -55959,8 +55948,8 @@ }, "property": { "type": "Identifier", - "start": 25225, - "end": 25235, + "start": 25207, + "end": 25221, "loc": { "start": { "line": 750, @@ -55968,70 +55957,36 @@ }, "end": { "line": 750, - "column": 23 + "column": 27 }, - "identifierName": "panInertia" + "identifierName": "pointerEnabled" }, - "name": "panInertia" + "name": "pointerEnabled" }, "computed": false }, "right": { - "type": "MemberExpression", - "start": 25238, - "end": 25252, + "type": "BooleanLiteral", + "start": 25224, + "end": 25228, "loc": { "start": { "line": 750, - "column": 26 + "column": 30 }, "end": { "line": 750, - "column": 40 + "column": 34 } }, - "object": { - "type": "Identifier", - "start": 25238, - "end": 25241, - "loc": { - "start": { - "line": 750, - "column": 26 - }, - "end": { - "line": 750, - "column": 29 - }, - "identifierName": "cfg" - }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 25242, - "end": 25252, - "loc": { - "start": { - "line": 750, - "column": 30 - }, - "end": { - "line": 750, - "column": 40 - }, - "identifierName": "panInertia" - }, - "name": "panInertia" - }, - "computed": false + "value": true } } }, { "type": "ExpressionStatement", - "start": 25262, - "end": 25289, + "start": 25238, + "end": 25285, "loc": { "start": { "line": 751, @@ -56039,13 +55994,13 @@ }, "end": { "line": 751, - "column": 35 + "column": 55 } }, "expression": { "type": "AssignmentExpression", - "start": 25262, - "end": 25288, + "start": 25238, + "end": 25284, "loc": { "start": { "line": 751, @@ -56053,14 +56008,14 @@ }, "end": { "line": 751, - "column": 34 + "column": 54 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25262, - "end": 25281, + "start": 25238, + "end": 25260, "loc": { "start": { "line": 751, @@ -56068,13 +56023,13 @@ }, "end": { "line": 751, - "column": 27 + "column": 30 } }, "object": { "type": "ThisExpression", - "start": 25262, - "end": 25266, + "start": 25238, + "end": 25242, "loc": { "start": { "line": 751, @@ -56088,8 +56043,8 @@ }, "property": { "type": "Identifier", - "start": 25267, - "end": 25281, + "start": 25243, + "end": 25260, "loc": { "start": { "line": 751, @@ -56097,35 +56052,69 @@ }, "end": { "line": 751, - "column": 27 + "column": 30 }, - "identifierName": "pointerEnabled" + "identifierName": "keyboardDollyRate" }, - "name": "pointerEnabled" + "name": "keyboardDollyRate" }, "computed": false }, "right": { - "type": "BooleanLiteral", - "start": 25284, - "end": 25288, + "type": "MemberExpression", + "start": 25263, + "end": 25284, "loc": { "start": { "line": 751, - "column": 30 + "column": 33 }, "end": { "line": 751, - "column": 34 + "column": 54 } }, - "value": true + "object": { + "type": "Identifier", + "start": 25263, + "end": 25266, + "loc": { + "start": { + "line": 751, + "column": 33 + }, + "end": { + "line": 751, + "column": 36 + }, + "identifierName": "cfg" + }, + "name": "cfg" + }, + "property": { + "type": "Identifier", + "start": 25267, + "end": 25284, + "loc": { + "start": { + "line": 751, + "column": 37 + }, + "end": { + "line": 751, + "column": 54 + }, + "identifierName": "keyboardDollyRate" + }, + "name": "keyboardDollyRate" + }, + "computed": false } } }, { "type": "ExpressionStatement", - "start": 25298, + "start": 25294, "end": 25345, "loc": { "start": { @@ -56134,12 +56123,12 @@ }, "end": { "line": 752, - "column": 55 + "column": 59 } }, "expression": { "type": "AssignmentExpression", - "start": 25298, + "start": 25294, "end": 25344, "loc": { "start": { @@ -56148,14 +56137,14 @@ }, "end": { "line": 752, - "column": 54 + "column": 58 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 25298, - "end": 25320, + "start": 25294, + "end": 25318, "loc": { "start": { "line": 752, @@ -56163,13 +56152,13 @@ }, "end": { "line": 752, - "column": 30 + "column": 32 } }, "object": { "type": "ThisExpression", - "start": 25298, - "end": 25302, + "start": 25294, + "end": 25298, "loc": { "start": { "line": 752, @@ -56183,8 +56172,8 @@ }, "property": { "type": "Identifier", - "start": 25303, - "end": 25320, + "start": 25299, + "end": 25318, "loc": { "start": { "line": 752, @@ -56192,135 +56181,6 @@ }, "end": { "line": 752, - "column": 30 - }, - "identifierName": "keyboardDollyRate" - }, - "name": "keyboardDollyRate" - }, - "computed": false - }, - "right": { - "type": "MemberExpression", - "start": 25323, - "end": 25344, - "loc": { - "start": { - "line": 752, - "column": 33 - }, - "end": { - "line": 752, - "column": 54 - } - }, - "object": { - "type": "Identifier", - "start": 25323, - "end": 25326, - "loc": { - "start": { - "line": 752, - "column": 33 - }, - "end": { - "line": 752, - "column": 36 - }, - "identifierName": "cfg" - }, - "name": "cfg" - }, - "property": { - "type": "Identifier", - "start": 25327, - "end": 25344, - "loc": { - "start": { - "line": 752, - "column": 37 - }, - "end": { - "line": 752, - "column": 54 - }, - "identifierName": "keyboardDollyRate" - }, - "name": "keyboardDollyRate" - }, - "computed": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 25354, - "end": 25405, - "loc": { - "start": { - "line": 753, - "column": 8 - }, - "end": { - "line": 753, - "column": 59 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 25354, - "end": 25404, - "loc": { - "start": { - "line": 753, - "column": 8 - }, - "end": { - "line": 753, - "column": 58 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 25354, - "end": 25378, - "loc": { - "start": { - "line": 753, - "column": 8 - }, - "end": { - "line": 753, - "column": 32 - } - }, - "object": { - "type": "ThisExpression", - "start": 25354, - "end": 25358, - "loc": { - "start": { - "line": 753, - "column": 8 - }, - "end": { - "line": 753, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 25359, - "end": 25378, - "loc": { - "start": { - "line": 753, - "column": 13 - }, - "end": { - "line": 753, "column": 32 }, "identifierName": "mouseWheelDollyRate" @@ -56331,29 +56191,29 @@ }, "right": { "type": "MemberExpression", - "start": 25381, - "end": 25404, + "start": 25321, + "end": 25344, "loc": { "start": { - "line": 753, + "line": 752, "column": 35 }, "end": { - "line": 753, + "line": 752, "column": 58 } }, "object": { "type": "Identifier", - "start": 25381, - "end": 25384, + "start": 25321, + "end": 25324, "loc": { "start": { - "line": 753, + "line": 752, "column": 35 }, "end": { - "line": 753, + "line": 752, "column": 38 }, "identifierName": "cfg" @@ -56362,15 +56222,15 @@ }, "property": { "type": "Identifier", - "start": 25385, - "end": 25404, + "start": 25325, + "end": 25344, "loc": { "start": { - "line": 753, + "line": 752, "column": 39 }, "end": { - "line": 753, + "line": 752, "column": 58 }, "identifierName": "mouseWheelDollyRate" @@ -56407,15 +56267,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 25417, - "end": 25756, + "start": 25357, + "end": 25696, "loc": { "start": { - "line": 756, + "line": 755, "column": 4 }, "end": { - "line": 763, + "line": 762, "column": 7 } } @@ -56424,15 +56284,15 @@ }, { "type": "ClassMethod", - "start": 25761, - "end": 28884, + "start": 25701, + "end": 28824, "loc": { "start": { - "line": 764, + "line": 763, "column": 4 }, "end": { - "line": 823, + "line": 822, "column": 5 } }, @@ -56440,15 +56300,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 25765, - "end": 25771, + "start": 25705, + "end": 25711, "loc": { "start": { - "line": 764, + "line": 763, "column": 8 }, "end": { - "line": 764, + "line": 763, "column": 14 }, "identifierName": "keyMap" @@ -56463,15 +56323,15 @@ "params": [ { "type": "Identifier", - "start": 25772, - "end": 25777, + "start": 25712, + "end": 25717, "loc": { "start": { - "line": 764, + "line": 763, "column": 15 }, "end": { - "line": 764, + "line": 763, "column": 20 }, "identifierName": "value" @@ -56481,59 +56341,59 @@ ], "body": { "type": "BlockStatement", - "start": 25779, - "end": 28884, + "start": 25719, + "end": 28824, "loc": { "start": { - "line": 764, + "line": 763, "column": 22 }, "end": { - "line": 823, + "line": 822, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 25789, - "end": 25815, + "start": 25729, + "end": 25755, "loc": { "start": { - "line": 765, + "line": 764, "column": 8 }, "end": { - "line": 765, + "line": 764, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 25789, - "end": 25814, + "start": 25729, + "end": 25754, "loc": { "start": { - "line": 765, + "line": 764, "column": 8 }, "end": { - "line": 765, + "line": 764, "column": 33 } }, "operator": "=", "left": { "type": "Identifier", - "start": 25789, - "end": 25794, + "start": 25729, + "end": 25734, "loc": { "start": { - "line": 765, + "line": 764, "column": 8 }, "end": { - "line": 765, + "line": 764, "column": 13 }, "identifierName": "value" @@ -56542,29 +56402,29 @@ }, "right": { "type": "LogicalExpression", - "start": 25797, - "end": 25814, + "start": 25737, + "end": 25754, "loc": { "start": { - "line": 765, + "line": 764, "column": 16 }, "end": { - "line": 765, + "line": 764, "column": 33 } }, "left": { "type": "Identifier", - "start": 25797, - "end": 25802, + "start": 25737, + "end": 25742, "loc": { "start": { - "line": 765, + "line": 764, "column": 16 }, "end": { - "line": 765, + "line": 764, "column": 21 }, "identifierName": "value" @@ -56574,15 +56434,15 @@ "operator": "||", "right": { "type": "StringLiteral", - "start": 25806, - "end": 25814, + "start": 25746, + "end": 25754, "loc": { "start": { - "line": 765, + "line": 764, "column": 25 }, "end": { - "line": 765, + "line": 764, "column": 33 } }, @@ -56597,57 +56457,57 @@ }, { "type": "IfStatement", - "start": 25824, - "end": 28878, + "start": 25764, + "end": 28818, "loc": { "start": { - "line": 766, + "line": 765, "column": 8 }, "end": { - "line": 822, + "line": 821, "column": 9 } }, "test": { "type": "CallExpression", - "start": 25828, - "end": 25849, + "start": 25768, + "end": 25789, "loc": { "start": { - "line": 766, + "line": 765, "column": 12 }, "end": { - "line": 766, + "line": 765, "column": 33 } }, "callee": { "type": "MemberExpression", - "start": 25828, - "end": 25842, + "start": 25768, + "end": 25782, "loc": { "start": { - "line": 766, + "line": 765, "column": 12 }, "end": { - "line": 766, + "line": 765, "column": 26 } }, "object": { "type": "Identifier", - "start": 25828, - "end": 25833, + "start": 25768, + "end": 25773, "loc": { "start": { - "line": 766, + "line": 765, "column": 12 }, "end": { - "line": 766, + "line": 765, "column": 17 }, "identifierName": "utils" @@ -56656,15 +56516,15 @@ }, "property": { "type": "Identifier", - "start": 25834, - "end": 25842, + "start": 25774, + "end": 25782, "loc": { "start": { - "line": 766, + "line": 765, "column": 18 }, "end": { - "line": 766, + "line": 765, "column": 26 }, "identifierName": "isString" @@ -56676,15 +56536,15 @@ "arguments": [ { "type": "Identifier", - "start": 25843, - "end": 25848, + "start": 25783, + "end": 25788, "loc": { "start": { - "line": 766, + "line": 765, "column": 27 }, "end": { - "line": 766, + "line": 765, "column": 32 }, "identifierName": "value" @@ -56695,59 +56555,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 25851, - "end": 28792, + "start": 25791, + "end": 28732, "loc": { "start": { - "line": 766, + "line": 765, "column": 35 }, "end": { - "line": 819, + "line": 818, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 25865, - "end": 25896, + "start": 25805, + "end": 25836, "loc": { "start": { - "line": 767, + "line": 766, "column": 12 }, "end": { - "line": 767, + "line": 766, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 25871, - "end": 25895, + "start": 25811, + "end": 25835, "loc": { "start": { - "line": 767, + "line": 766, "column": 18 }, "end": { - "line": 767, + "line": 766, "column": 42 } }, "id": { "type": "Identifier", - "start": 25871, - "end": 25876, + "start": 25811, + "end": 25816, "loc": { "start": { - "line": 767, + "line": 766, "column": 18 }, "end": { - "line": 767, + "line": 766, "column": 23 }, "identifierName": "input" @@ -56756,58 +56616,58 @@ }, "init": { "type": "MemberExpression", - "start": 25879, - "end": 25895, + "start": 25819, + "end": 25835, "loc": { "start": { - "line": 767, + "line": 766, "column": 26 }, "end": { - "line": 767, + "line": 766, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 25879, - "end": 25889, + "start": 25819, + "end": 25829, "loc": { "start": { - "line": 767, + "line": 766, "column": 26 }, "end": { - "line": 767, + "line": 766, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 25879, - "end": 25883, + "start": 25819, + "end": 25823, "loc": { "start": { - "line": 767, + "line": 766, "column": 26 }, "end": { - "line": 767, + "line": 766, "column": 30 } } }, "property": { "type": "Identifier", - "start": 25884, - "end": 25889, + "start": 25824, + "end": 25829, "loc": { "start": { - "line": 767, + "line": 766, "column": 31 }, "end": { - "line": 767, + "line": 766, "column": 36 }, "identifierName": "scene" @@ -56818,15 +56678,15 @@ }, "property": { "type": "Identifier", - "start": 25890, - "end": 25895, + "start": 25830, + "end": 25835, "loc": { "start": { - "line": 767, + "line": 766, "column": 37 }, "end": { - "line": 767, + "line": 766, "column": 42 }, "identifierName": "input" @@ -56841,44 +56701,44 @@ }, { "type": "VariableDeclaration", - "start": 25909, - "end": 25927, + "start": 25849, + "end": 25867, "loc": { "start": { - "line": 768, + "line": 767, "column": 12 }, "end": { - "line": 768, + "line": 767, "column": 30 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 25915, - "end": 25926, + "start": 25855, + "end": 25866, "loc": { "start": { - "line": 768, + "line": 767, "column": 18 }, "end": { - "line": 768, + "line": 767, "column": 29 } }, "id": { "type": "Identifier", - "start": 25915, - "end": 25921, + "start": 25855, + "end": 25861, "loc": { "start": { - "line": 768, + "line": 767, "column": 18 }, "end": { - "line": 768, + "line": 767, "column": 24 }, "identifierName": "keyMap" @@ -56887,15 +56747,15 @@ }, "init": { "type": "ObjectExpression", - "start": 25924, - "end": 25926, + "start": 25864, + "end": 25866, "loc": { "start": { - "line": 768, + "line": 767, "column": 27 }, "end": { - "line": 768, + "line": 767, "column": 29 } }, @@ -56907,29 +56767,29 @@ }, { "type": "SwitchStatement", - "start": 25941, - "end": 28746, + "start": 25881, + "end": 28686, "loc": { "start": { - "line": 770, + "line": 769, "column": 12 }, "end": { - "line": 816, + "line": 815, "column": 13 } }, "discriminant": { "type": "Identifier", - "start": 25949, - "end": 25954, + "start": 25889, + "end": 25894, "loc": { "start": { - "line": 770, + "line": 769, "column": 20 }, "end": { - "line": 770, + "line": 769, "column": 25 }, "identifierName": "value" @@ -56939,87 +56799,87 @@ "cases": [ { "type": "SwitchCase", - "start": 25975, - "end": 26087, + "start": 25915, + "end": 26027, "loc": { "start": { - "line": 772, + "line": 771, "column": 16 }, "end": { - "line": 773, + "line": 772, "column": 103 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 26004, - "end": 26087, + "start": 25944, + "end": 26027, "loc": { "start": { - "line": 773, + "line": 772, "column": 20 }, "end": { - "line": 773, + "line": 772, "column": 103 } }, "expression": { "type": "CallExpression", - "start": 26004, - "end": 26086, + "start": 25944, + "end": 26026, "loc": { "start": { - "line": 773, + "line": 772, "column": 20 }, "end": { - "line": 773, + "line": 772, "column": 102 } }, "callee": { "type": "MemberExpression", - "start": 26004, - "end": 26014, + "start": 25944, + "end": 25954, "loc": { "start": { - "line": 773, + "line": 772, "column": 20 }, "end": { - "line": 773, + "line": 772, "column": 30 } }, "object": { "type": "ThisExpression", - "start": 26004, - "end": 26008, + "start": 25944, + "end": 25948, "loc": { "start": { - "line": 773, + "line": 772, "column": 20 }, "end": { - "line": 773, + "line": 772, "column": 24 } } }, "property": { "type": "Identifier", - "start": 26009, - "end": 26014, + "start": 25949, + "end": 25954, "loc": { "start": { - "line": 773, + "line": 772, "column": 25 }, "end": { - "line": 773, + "line": 772, "column": 30 }, "identifierName": "error" @@ -57031,43 +56891,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 26015, - "end": 26085, + "start": 25955, + "end": 26025, "loc": { "start": { - "line": 773, + "line": 772, "column": 31 }, "end": { - "line": 773, + "line": 772, "column": 101 } }, "left": { "type": "BinaryExpression", - "start": 26015, - "end": 26057, + "start": 25955, + "end": 25997, "loc": { "start": { - "line": 773, + "line": 772, "column": 31 }, "end": { - "line": 773, + "line": 772, "column": 73 } }, "left": { "type": "StringLiteral", - "start": 26015, - "end": 26049, + "start": 25955, + "end": 25989, "loc": { "start": { - "line": 773, + "line": 772, "column": 31 }, "end": { - "line": 773, + "line": 772, "column": 65 } }, @@ -57080,15 +56940,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 26052, - "end": 26057, + "start": 25992, + "end": 25997, "loc": { "start": { - "line": 773, + "line": 772, "column": 68 }, "end": { - "line": 773, + "line": 772, "column": 73 }, "identifierName": "value" @@ -57099,15 +56959,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 26060, - "end": 26085, + "start": 26000, + "end": 26025, "loc": { "start": { - "line": 773, + "line": 772, "column": 76 }, "end": { - "line": 773, + "line": 772, "column": 101 } }, @@ -57128,15 +56988,15 @@ { "type": "CommentLine", "value": " Intentional fall-through to \"qwerty\"", - "start": 26104, - "end": 26143, + "start": 26044, + "end": 26083, "loc": { "start": { - "line": 774, + "line": 773, "column": 16 }, "end": { - "line": 774, + "line": 773, "column": 55 } } @@ -57145,22 +57005,201 @@ }, { "type": "SwitchCase", - "start": 26160, - "end": 27437, + "start": 26100, + "end": 27377, "loc": { "start": { - "line": 775, + "line": 774, "column": 16 }, "end": { - "line": 794, + "line": 793, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 26195, + "start": 26135, + "end": 26173, + "loc": { + "start": { + "line": 775, + "column": 20 + }, + "end": { + "line": 775, + "column": 58 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 26135, + "end": 26172, + "loc": { + "start": { + "line": 775, + "column": 20 + }, + "end": { + "line": 775, + "column": 57 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 26135, + "end": 26156, + "loc": { + "start": { + "line": 775, + "column": 20 + }, + "end": { + "line": 775, + "column": 41 + } + }, + "object": { + "type": "Identifier", + "start": 26135, + "end": 26141, + "loc": { + "start": { + "line": 775, + "column": 20 + }, + "end": { + "line": 775, + "column": 26 + }, + "identifierName": "keyMap" + }, + "name": "keyMap" + }, + "property": { + "type": "MemberExpression", + "start": 26142, + "end": 26155, + "loc": { + "start": { + "line": 775, + "column": 27 + }, + "end": { + "line": 775, + "column": 40 + } + }, + "object": { + "type": "ThisExpression", + "start": 26142, + "end": 26146, + "loc": { + "start": { + "line": 775, + "column": 27 + }, + "end": { + "line": 775, + "column": 31 + } + } + }, + "property": { + "type": "Identifier", + "start": 26147, + "end": 26155, + "loc": { + "start": { + "line": 775, + "column": 32 + }, + "end": { + "line": 775, + "column": 40 + }, + "identifierName": "PAN_LEFT" + }, + "name": "PAN_LEFT" + }, + "computed": false + }, + "computed": true + }, + "right": { + "type": "ArrayExpression", + "start": 26159, + "end": 26172, + "loc": { + "start": { + "line": 775, + "column": 44 + }, + "end": { + "line": 775, + "column": 57 + } + }, + "elements": [ + { + "type": "MemberExpression", + "start": 26160, + "end": 26171, + "loc": { + "start": { + "line": 775, + "column": 45 + }, + "end": { + "line": 775, + "column": 56 + } + }, + "object": { + "type": "Identifier", + "start": 26160, + "end": 26165, + "loc": { + "start": { + "line": 775, + "column": 45 + }, + "end": { + "line": 775, + "column": 50 + }, + "identifierName": "input" + }, + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 26166, + "end": 26171, + "loc": { + "start": { + "line": 775, + "column": 51 + }, + "end": { + "line": 775, + "column": 56 + }, + "identifierName": "KEY_A" + }, + "name": "KEY_A" + }, + "computed": false + } + ] + } + } + }, + { + "type": "ExpressionStatement", + "start": 26194, "end": 26233, "loc": { "start": { @@ -57169,12 +57208,12 @@ }, "end": { "line": 776, - "column": 58 + "column": 59 } }, "expression": { "type": "AssignmentExpression", - "start": 26195, + "start": 26194, "end": 26232, "loc": { "start": { @@ -57183,13 +57222,13 @@ }, "end": { "line": 776, - "column": 57 + "column": 58 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26195, + "start": 26194, "end": 26216, "loc": { "start": { @@ -57198,13 +57237,13 @@ }, "end": { "line": 776, - "column": 41 + "column": 42 } }, "object": { "type": "Identifier", - "start": 26195, - "end": 26201, + "start": 26194, + "end": 26200, "loc": { "start": { "line": 776, @@ -57220,7 +57259,7 @@ }, "property": { "type": "MemberExpression", - "start": 26202, + "start": 26201, "end": 26215, "loc": { "start": { @@ -57229,13 +57268,13 @@ }, "end": { "line": 776, - "column": 40 + "column": 41 } }, "object": { "type": "ThisExpression", - "start": 26202, - "end": 26206, + "start": 26201, + "end": 26205, "loc": { "start": { "line": 776, @@ -57249,7 +57288,7 @@ }, "property": { "type": "Identifier", - "start": 26207, + "start": 26206, "end": 26215, "loc": { "start": { @@ -57258,11 +57297,11 @@ }, "end": { "line": 776, - "column": 40 + "column": 41 }, - "identifierName": "PAN_LEFT" + "identifierName": "PAN_RIGHT" }, - "name": "PAN_LEFT" + "name": "PAN_RIGHT" }, "computed": false }, @@ -57275,11 +57314,11 @@ "loc": { "start": { "line": 776, - "column": 44 + "column": 45 }, "end": { "line": 776, - "column": 57 + "column": 58 } }, "elements": [ @@ -57290,11 +57329,11 @@ "loc": { "start": { "line": 776, - "column": 45 + "column": 46 }, "end": { "line": 776, - "column": 56 + "column": 57 } }, "object": { @@ -57304,11 +57343,11 @@ "loc": { "start": { "line": 776, - "column": 45 + "column": 46 }, "end": { "line": 776, - "column": 50 + "column": 51 }, "identifierName": "input" }, @@ -57321,15 +57360,15 @@ "loc": { "start": { "line": 776, - "column": 51 + "column": 52 }, "end": { "line": 776, - "column": 56 + "column": 57 }, - "identifierName": "KEY_A" + "identifierName": "KEY_D" }, - "name": "KEY_A" + "name": "KEY_D" }, "computed": false } @@ -57340,7 +57379,7 @@ { "type": "ExpressionStatement", "start": 26254, - "end": 26293, + "end": 26290, "loc": { "start": { "line": 777, @@ -57348,13 +57387,13 @@ }, "end": { "line": 777, - "column": 59 + "column": 56 } }, "expression": { "type": "AssignmentExpression", "start": 26254, - "end": 26292, + "end": 26289, "loc": { "start": { "line": 777, @@ -57362,14 +57401,14 @@ }, "end": { "line": 777, - "column": 58 + "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", "start": 26254, - "end": 26276, + "end": 26273, "loc": { "start": { "line": 777, @@ -57377,7 +57416,7 @@ }, "end": { "line": 777, - "column": 42 + "column": 39 } }, "object": { @@ -57400,7 +57439,7 @@ "property": { "type": "MemberExpression", "start": 26261, - "end": 26275, + "end": 26272, "loc": { "start": { "line": 777, @@ -57408,7 +57447,7 @@ }, "end": { "line": 777, - "column": 41 + "column": 38 } }, "object": { @@ -57429,7 +57468,7 @@ "property": { "type": "Identifier", "start": 26266, - "end": 26275, + "end": 26272, "loc": { "start": { "line": 777, @@ -57437,11 +57476,11 @@ }, "end": { "line": 777, - "column": 41 + "column": 38 }, - "identifierName": "PAN_RIGHT" + "identifierName": "PAN_UP" }, - "name": "PAN_RIGHT" + "name": "PAN_UP" }, "computed": false }, @@ -57449,45 +57488,45 @@ }, "right": { "type": "ArrayExpression", - "start": 26279, - "end": 26292, + "start": 26276, + "end": 26289, "loc": { "start": { "line": 777, - "column": 45 + "column": 42 }, "end": { "line": 777, - "column": 58 + "column": 55 } }, "elements": [ { "type": "MemberExpression", - "start": 26280, - "end": 26291, + "start": 26277, + "end": 26288, "loc": { "start": { "line": 777, - "column": 46 + "column": 43 }, "end": { "line": 777, - "column": 57 + "column": 54 } }, "object": { "type": "Identifier", - "start": 26280, - "end": 26285, + "start": 26277, + "end": 26282, "loc": { "start": { "line": 777, - "column": 46 + "column": 43 }, "end": { "line": 777, - "column": 51 + "column": 48 }, "identifierName": "input" }, @@ -57495,20 +57534,20 @@ }, "property": { "type": "Identifier", - "start": 26286, - "end": 26291, + "start": 26283, + "end": 26288, "loc": { "start": { "line": 777, - "column": 52 + "column": 49 }, "end": { "line": 777, - "column": 57 + "column": 54 }, - "identifierName": "KEY_D" + "identifierName": "KEY_Z" }, - "name": "KEY_D" + "name": "KEY_Z" }, "computed": false } @@ -57518,8 +57557,8 @@ }, { "type": "ExpressionStatement", - "start": 26314, - "end": 26350, + "start": 26311, + "end": 26349, "loc": { "start": { "line": 778, @@ -57527,13 +57566,13 @@ }, "end": { "line": 778, - "column": 56 + "column": 58 } }, "expression": { "type": "AssignmentExpression", - "start": 26314, - "end": 26349, + "start": 26311, + "end": 26348, "loc": { "start": { "line": 778, @@ -57541,14 +57580,14 @@ }, "end": { "line": 778, - "column": 55 + "column": 57 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26314, - "end": 26333, + "start": 26311, + "end": 26332, "loc": { "start": { "line": 778, @@ -57556,13 +57595,13 @@ }, "end": { "line": 778, - "column": 39 + "column": 41 } }, "object": { "type": "Identifier", - "start": 26314, - "end": 26320, + "start": 26311, + "end": 26317, "loc": { "start": { "line": 778, @@ -57578,8 +57617,8 @@ }, "property": { "type": "MemberExpression", - "start": 26321, - "end": 26332, + "start": 26318, + "end": 26331, "loc": { "start": { "line": 778, @@ -57587,13 +57626,13 @@ }, "end": { "line": 778, - "column": 38 + "column": 40 } }, "object": { "type": "ThisExpression", - "start": 26321, - "end": 26325, + "start": 26318, + "end": 26322, "loc": { "start": { "line": 778, @@ -57607,8 +57646,8 @@ }, "property": { "type": "Identifier", - "start": 26326, - "end": 26332, + "start": 26323, + "end": 26331, "loc": { "start": { "line": 778, @@ -57616,11 +57655,11 @@ }, "end": { "line": 778, - "column": 38 + "column": 40 }, - "identifierName": "PAN_UP" + "identifierName": "PAN_DOWN" }, - "name": "PAN_UP" + "name": "PAN_DOWN" }, "computed": false }, @@ -57628,45 +57667,45 @@ }, "right": { "type": "ArrayExpression", - "start": 26336, - "end": 26349, + "start": 26335, + "end": 26348, "loc": { "start": { "line": 778, - "column": 42 + "column": 44 }, "end": { "line": 778, - "column": 55 + "column": 57 } }, "elements": [ { "type": "MemberExpression", - "start": 26337, - "end": 26348, + "start": 26336, + "end": 26347, "loc": { "start": { "line": 778, - "column": 43 + "column": 45 }, "end": { "line": 778, - "column": 54 + "column": 56 } }, "object": { "type": "Identifier", - "start": 26337, - "end": 26342, + "start": 26336, + "end": 26341, "loc": { "start": { "line": 778, - "column": 43 + "column": 45 }, "end": { "line": 778, - "column": 48 + "column": 50 }, "identifierName": "input" }, @@ -57674,20 +57713,20 @@ }, "property": { "type": "Identifier", - "start": 26343, - "end": 26348, + "start": 26342, + "end": 26347, "loc": { "start": { "line": 778, - "column": 49 + "column": 51 }, "end": { "line": 778, - "column": 54 + "column": 56 }, - "identifierName": "KEY_Z" + "identifierName": "KEY_X" }, - "name": "KEY_Z" + "name": "KEY_X" }, "computed": false } @@ -57697,8 +57736,8 @@ }, { "type": "ExpressionStatement", - "start": 26371, - "end": 26409, + "start": 26370, + "end": 26402, "loc": { "start": { "line": 779, @@ -57706,13 +57745,13 @@ }, "end": { "line": 779, - "column": 58 + "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 26371, - "end": 26408, + "start": 26370, + "end": 26401, "loc": { "start": { "line": 779, @@ -57720,14 +57759,14 @@ }, "end": { "line": 779, - "column": 57 + "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26371, - "end": 26392, + "start": 26370, + "end": 26396, "loc": { "start": { "line": 779, @@ -57735,13 +57774,13 @@ }, "end": { "line": 779, - "column": 41 + "column": 46 } }, "object": { "type": "Identifier", - "start": 26371, - "end": 26377, + "start": 26370, + "end": 26376, "loc": { "start": { "line": 779, @@ -57757,8 +57796,8 @@ }, "property": { "type": "MemberExpression", - "start": 26378, - "end": 26391, + "start": 26377, + "end": 26395, "loc": { "start": { "line": 779, @@ -57766,13 +57805,13 @@ }, "end": { "line": 779, - "column": 40 + "column": 45 } }, "object": { "type": "ThisExpression", - "start": 26378, - "end": 26382, + "start": 26377, + "end": 26381, "loc": { "start": { "line": 779, @@ -57786,8 +57825,8 @@ }, "property": { "type": "Identifier", - "start": 26383, - "end": 26391, + "start": 26382, + "end": 26395, "loc": { "start": { "line": 779, @@ -57795,11 +57834,11 @@ }, "end": { "line": 779, - "column": 40 + "column": 45 }, - "identifierName": "PAN_DOWN" + "identifierName": "PAN_BACKWARDS" }, - "name": "PAN_DOWN" + "name": "PAN_BACKWARDS" }, "computed": false }, @@ -57807,77 +57846,26 @@ }, "right": { "type": "ArrayExpression", - "start": 26395, - "end": 26408, + "start": 26399, + "end": 26401, "loc": { "start": { "line": 779, - "column": 44 + "column": 49 }, "end": { "line": 779, - "column": 57 + "column": 51 } }, - "elements": [ - { - "type": "MemberExpression", - "start": 26396, - "end": 26407, - "loc": { - "start": { - "line": 779, - "column": 45 - }, - "end": { - "line": 779, - "column": 56 - } - }, - "object": { - "type": "Identifier", - "start": 26396, - "end": 26401, - "loc": { - "start": { - "line": 779, - "column": 45 - }, - "end": { - "line": 779, - "column": 50 - }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 26402, - "end": 26407, - "loc": { - "start": { - "line": 779, - "column": 51 - }, - "end": { - "line": 779, - "column": 56 - }, - "identifierName": "KEY_X" - }, - "name": "KEY_X" - }, - "computed": false - } - ] + "elements": [] } } }, { "type": "ExpressionStatement", - "start": 26430, - "end": 26462, + "start": 26423, + "end": 26454, "loc": { "start": { "line": 780, @@ -57885,13 +57873,13 @@ }, "end": { "line": 780, - "column": 52 + "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 26430, - "end": 26461, + "start": 26423, + "end": 26453, "loc": { "start": { "line": 780, @@ -57899,14 +57887,14 @@ }, "end": { "line": 780, - "column": 51 + "column": 50 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26430, - "end": 26456, + "start": 26423, + "end": 26448, "loc": { "start": { "line": 780, @@ -57914,13 +57902,13 @@ }, "end": { "line": 780, - "column": 46 + "column": 45 } }, "object": { "type": "Identifier", - "start": 26430, - "end": 26436, + "start": 26423, + "end": 26429, "loc": { "start": { "line": 780, @@ -57936,8 +57924,8 @@ }, "property": { "type": "MemberExpression", - "start": 26437, - "end": 26455, + "start": 26430, + "end": 26447, "loc": { "start": { "line": 780, @@ -57945,13 +57933,13 @@ }, "end": { "line": 780, - "column": 45 + "column": 44 } }, "object": { "type": "ThisExpression", - "start": 26437, - "end": 26441, + "start": 26430, + "end": 26434, "loc": { "start": { "line": 780, @@ -57965,8 +57953,8 @@ }, "property": { "type": "Identifier", - "start": 26442, - "end": 26455, + "start": 26435, + "end": 26447, "loc": { "start": { "line": 780, @@ -57974,11 +57962,11 @@ }, "end": { "line": 780, - "column": 45 + "column": 44 }, - "identifierName": "PAN_BACKWARDS" + "identifierName": "PAN_FORWARDS" }, - "name": "PAN_BACKWARDS" + "name": "PAN_FORWARDS" }, "computed": false }, @@ -57986,16 +57974,16 @@ }, "right": { "type": "ArrayExpression", - "start": 26459, - "end": 26461, + "start": 26451, + "end": 26453, "loc": { "start": { "line": 780, - "column": 49 + "column": 48 }, "end": { "line": 780, - "column": 51 + "column": 50 } }, "elements": [] @@ -58004,8 +57992,8 @@ }, { "type": "ExpressionStatement", - "start": 26483, - "end": 26514, + "start": 26475, + "end": 26534, "loc": { "start": { "line": 781, @@ -58013,13 +58001,13 @@ }, "end": { "line": 781, - "column": 51 + "column": 79 } }, "expression": { "type": "AssignmentExpression", - "start": 26483, - "end": 26513, + "start": 26475, + "end": 26533, "loc": { "start": { "line": 781, @@ -58027,14 +58015,14 @@ }, "end": { "line": 781, - "column": 50 + "column": 78 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26483, - "end": 26508, + "start": 26475, + "end": 26502, "loc": { "start": { "line": 781, @@ -58042,13 +58030,13 @@ }, "end": { "line": 781, - "column": 45 + "column": 47 } }, "object": { "type": "Identifier", - "start": 26483, - "end": 26489, + "start": 26475, + "end": 26481, "loc": { "start": { "line": 781, @@ -58064,8 +58052,8 @@ }, "property": { "type": "MemberExpression", - "start": 26490, - "end": 26507, + "start": 26482, + "end": 26501, "loc": { "start": { "line": 781, @@ -58073,13 +58061,13 @@ }, "end": { "line": 781, - "column": 44 + "column": 46 } }, "object": { "type": "ThisExpression", - "start": 26490, - "end": 26494, + "start": 26482, + "end": 26486, "loc": { "start": { "line": 781, @@ -58093,8 +58081,8 @@ }, "property": { "type": "Identifier", - "start": 26495, - "end": 26507, + "start": 26487, + "end": 26501, "loc": { "start": { "line": 781, @@ -58102,11 +58090,11 @@ }, "end": { "line": 781, - "column": 44 + "column": 46 }, - "identifierName": "PAN_FORWARDS" + "identifierName": "DOLLY_FORWARDS" }, - "name": "PAN_FORWARDS" + "name": "DOLLY_FORWARDS" }, "computed": false }, @@ -58114,26 +58102,127 @@ }, "right": { "type": "ArrayExpression", - "start": 26511, - "end": 26513, + "start": 26505, + "end": 26533, "loc": { "start": { "line": 781, - "column": 48 + "column": 50 }, "end": { "line": 781, - "column": 50 + "column": 78 } }, - "elements": [] + "elements": [ + { + "type": "MemberExpression", + "start": 26506, + "end": 26517, + "loc": { + "start": { + "line": 781, + "column": 51 + }, + "end": { + "line": 781, + "column": 62 + } + }, + "object": { + "type": "Identifier", + "start": 26506, + "end": 26511, + "loc": { + "start": { + "line": 781, + "column": 51 + }, + "end": { + "line": 781, + "column": 56 + }, + "identifierName": "input" + }, + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 26512, + "end": 26517, + "loc": { + "start": { + "line": 781, + "column": 57 + }, + "end": { + "line": 781, + "column": 62 + }, + "identifierName": "KEY_W" + }, + "name": "KEY_W" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 26519, + "end": 26532, + "loc": { + "start": { + "line": 781, + "column": 64 + }, + "end": { + "line": 781, + "column": 77 + } + }, + "object": { + "type": "Identifier", + "start": 26519, + "end": 26524, + "loc": { + "start": { + "line": 781, + "column": 64 + }, + "end": { + "line": 781, + "column": 69 + }, + "identifierName": "input" + }, + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 26525, + "end": 26532, + "loc": { + "start": { + "line": 781, + "column": 70 + }, + "end": { + "line": 781, + "column": 77 + }, + "identifierName": "KEY_ADD" + }, + "name": "KEY_ADD" + }, + "computed": false + } + ] } } }, { "type": "ExpressionStatement", - "start": 26535, - "end": 26594, + "start": 26555, + "end": 26620, "loc": { "start": { "line": 782, @@ -58141,13 +58230,13 @@ }, "end": { "line": 782, - "column": 79 + "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 26535, - "end": 26593, + "start": 26555, + "end": 26619, "loc": { "start": { "line": 782, @@ -58155,14 +58244,14 @@ }, "end": { "line": 782, - "column": 78 + "column": 84 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26535, - "end": 26562, + "start": 26555, + "end": 26583, "loc": { "start": { "line": 782, @@ -58170,13 +58259,13 @@ }, "end": { "line": 782, - "column": 47 + "column": 48 } }, "object": { "type": "Identifier", - "start": 26535, - "end": 26541, + "start": 26555, + "end": 26561, "loc": { "start": { "line": 782, @@ -58192,8 +58281,8 @@ }, "property": { "type": "MemberExpression", - "start": 26542, - "end": 26561, + "start": 26562, + "end": 26582, "loc": { "start": { "line": 782, @@ -58201,13 +58290,13 @@ }, "end": { "line": 782, - "column": 46 + "column": 47 } }, "object": { "type": "ThisExpression", - "start": 26542, - "end": 26546, + "start": 26562, + "end": 26566, "loc": { "start": { "line": 782, @@ -58221,8 +58310,8 @@ }, "property": { "type": "Identifier", - "start": 26547, - "end": 26561, + "start": 26567, + "end": 26582, "loc": { "start": { "line": 782, @@ -58230,11 +58319,11 @@ }, "end": { "line": 782, - "column": 46 + "column": 47 }, - "identifierName": "DOLLY_FORWARDS" + "identifierName": "DOLLY_BACKWARDS" }, - "name": "DOLLY_FORWARDS" + "name": "DOLLY_BACKWARDS" }, "computed": false }, @@ -58242,45 +58331,45 @@ }, "right": { "type": "ArrayExpression", - "start": 26565, - "end": 26593, + "start": 26586, + "end": 26619, "loc": { "start": { "line": 782, - "column": 50 + "column": 51 }, "end": { "line": 782, - "column": 78 + "column": 84 } }, "elements": [ { "type": "MemberExpression", - "start": 26566, - "end": 26577, + "start": 26587, + "end": 26598, "loc": { "start": { "line": 782, - "column": 51 + "column": 52 }, "end": { "line": 782, - "column": 62 + "column": 63 } }, "object": { "type": "Identifier", - "start": 26566, - "end": 26571, + "start": 26587, + "end": 26592, "loc": { "start": { "line": 782, - "column": 51 + "column": 52 }, "end": { "line": 782, - "column": 56 + "column": 57 }, "identifierName": "input" }, @@ -58288,49 +58377,49 @@ }, "property": { "type": "Identifier", - "start": 26572, - "end": 26577, + "start": 26593, + "end": 26598, "loc": { "start": { "line": 782, - "column": 57 + "column": 58 }, "end": { "line": 782, - "column": 62 + "column": 63 }, - "identifierName": "KEY_W" + "identifierName": "KEY_S" }, - "name": "KEY_W" + "name": "KEY_S" }, "computed": false }, { "type": "MemberExpression", - "start": 26579, - "end": 26592, + "start": 26600, + "end": 26618, "loc": { "start": { "line": 782, - "column": 64 + "column": 65 }, "end": { "line": 782, - "column": 77 + "column": 83 } }, "object": { "type": "Identifier", - "start": 26579, - "end": 26584, + "start": 26600, + "end": 26605, "loc": { "start": { "line": 782, - "column": 64 + "column": 65 }, "end": { "line": 782, - "column": 69 + "column": 70 }, "identifierName": "input" }, @@ -58338,20 +58427,20 @@ }, "property": { "type": "Identifier", - "start": 26585, - "end": 26592, + "start": 26606, + "end": 26618, "loc": { "start": { "line": 782, - "column": 70 + "column": 71 }, "end": { "line": 782, - "column": 77 + "column": 83 }, - "identifierName": "KEY_ADD" + "identifierName": "KEY_SUBTRACT" }, - "name": "KEY_ADD" + "name": "KEY_SUBTRACT" }, "computed": false } @@ -58361,8 +58450,8 @@ }, { "type": "ExpressionStatement", - "start": 26615, - "end": 26680, + "start": 26641, + "end": 26692, "loc": { "start": { "line": 783, @@ -58370,13 +58459,13 @@ }, "end": { "line": 783, - "column": 85 + "column": 71 } }, "expression": { "type": "AssignmentExpression", - "start": 26615, - "end": 26679, + "start": 26641, + "end": 26691, "loc": { "start": { "line": 783, @@ -58384,14 +58473,14 @@ }, "end": { "line": 783, - "column": 84 + "column": 70 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26615, - "end": 26643, + "start": 26641, + "end": 26666, "loc": { "start": { "line": 783, @@ -58399,13 +58488,13 @@ }, "end": { "line": 783, - "column": 48 + "column": 45 } }, "object": { "type": "Identifier", - "start": 26615, - "end": 26621, + "start": 26641, + "end": 26647, "loc": { "start": { "line": 783, @@ -58421,8 +58510,8 @@ }, "property": { "type": "MemberExpression", - "start": 26622, - "end": 26642, + "start": 26648, + "end": 26665, "loc": { "start": { "line": 783, @@ -58430,13 +58519,13 @@ }, "end": { "line": 783, - "column": 47 + "column": 44 } }, "object": { "type": "ThisExpression", - "start": 26622, - "end": 26626, + "start": 26648, + "end": 26652, "loc": { "start": { "line": 783, @@ -58450,8 +58539,8 @@ }, "property": { "type": "Identifier", - "start": 26627, - "end": 26642, + "start": 26653, + "end": 26665, "loc": { "start": { "line": 783, @@ -58459,11 +58548,11 @@ }, "end": { "line": 783, - "column": 47 + "column": 44 }, - "identifierName": "DOLLY_BACKWARDS" + "identifierName": "ROTATE_X_POS" }, - "name": "DOLLY_BACKWARDS" + "name": "ROTATE_X_POS" }, "computed": false }, @@ -58471,95 +58560,45 @@ }, "right": { "type": "ArrayExpression", - "start": 26646, - "end": 26679, + "start": 26669, + "end": 26691, "loc": { "start": { "line": 783, - "column": 51 + "column": 48 }, "end": { "line": 783, - "column": 84 + "column": 70 } }, "elements": [ { "type": "MemberExpression", - "start": 26647, - "end": 26658, + "start": 26670, + "end": 26690, "loc": { "start": { "line": 783, - "column": 52 - }, - "end": { - "line": 783, - "column": 63 - } - }, - "object": { - "type": "Identifier", - "start": 26647, - "end": 26652, - "loc": { - "start": { - "line": 783, - "column": 52 - }, - "end": { - "line": 783, - "column": 57 - }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 26653, - "end": 26658, - "loc": { - "start": { - "line": 783, - "column": 58 - }, - "end": { - "line": 783, - "column": 63 - }, - "identifierName": "KEY_S" - }, - "name": "KEY_S" - }, - "computed": false - }, - { - "type": "MemberExpression", - "start": 26660, - "end": 26678, - "loc": { - "start": { - "line": 783, - "column": 65 + "column": 49 }, "end": { "line": 783, - "column": 83 + "column": 69 } }, "object": { "type": "Identifier", - "start": 26660, - "end": 26665, + "start": 26670, + "end": 26675, "loc": { "start": { "line": 783, - "column": 65 + "column": 49 }, "end": { "line": 783, - "column": 70 + "column": 54 }, "identifierName": "input" }, @@ -58567,20 +58606,20 @@ }, "property": { "type": "Identifier", - "start": 26666, - "end": 26678, + "start": 26676, + "end": 26690, "loc": { "start": { "line": 783, - "column": 71 + "column": 55 }, "end": { "line": 783, - "column": 83 + "column": 69 }, - "identifierName": "KEY_SUBTRACT" + "identifierName": "KEY_DOWN_ARROW" }, - "name": "KEY_SUBTRACT" + "name": "KEY_DOWN_ARROW" }, "computed": false } @@ -58590,8 +58629,8 @@ }, { "type": "ExpressionStatement", - "start": 26701, - "end": 26752, + "start": 26713, + "end": 26762, "loc": { "start": { "line": 784, @@ -58599,13 +58638,13 @@ }, "end": { "line": 784, - "column": 71 + "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 26701, - "end": 26751, + "start": 26713, + "end": 26761, "loc": { "start": { "line": 784, @@ -58613,14 +58652,14 @@ }, "end": { "line": 784, - "column": 70 + "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26701, - "end": 26726, + "start": 26713, + "end": 26738, "loc": { "start": { "line": 784, @@ -58633,8 +58672,8 @@ }, "object": { "type": "Identifier", - "start": 26701, - "end": 26707, + "start": 26713, + "end": 26719, "loc": { "start": { "line": 784, @@ -58650,8 +58689,8 @@ }, "property": { "type": "MemberExpression", - "start": 26708, - "end": 26725, + "start": 26720, + "end": 26737, "loc": { "start": { "line": 784, @@ -58664,8 +58703,8 @@ }, "object": { "type": "ThisExpression", - "start": 26708, - "end": 26712, + "start": 26720, + "end": 26724, "loc": { "start": { "line": 784, @@ -58679,8 +58718,8 @@ }, "property": { "type": "Identifier", - "start": 26713, - "end": 26725, + "start": 26725, + "end": 26737, "loc": { "start": { "line": 784, @@ -58690,9 +58729,9 @@ "line": 784, "column": 44 }, - "identifierName": "ROTATE_X_POS" + "identifierName": "ROTATE_X_NEG" }, - "name": "ROTATE_X_POS" + "name": "ROTATE_X_NEG" }, "computed": false }, @@ -58700,8 +58739,8 @@ }, "right": { "type": "ArrayExpression", - "start": 26729, - "end": 26751, + "start": 26741, + "end": 26761, "loc": { "start": { "line": 784, @@ -58709,14 +58748,14 @@ }, "end": { "line": 784, - "column": 70 + "column": 68 } }, "elements": [ { "type": "MemberExpression", - "start": 26730, - "end": 26750, + "start": 26742, + "end": 26760, "loc": { "start": { "line": 784, @@ -58724,13 +58763,13 @@ }, "end": { "line": 784, - "column": 69 + "column": 67 } }, "object": { "type": "Identifier", - "start": 26730, - "end": 26735, + "start": 26742, + "end": 26747, "loc": { "start": { "line": 784, @@ -58746,8 +58785,8 @@ }, "property": { "type": "Identifier", - "start": 26736, - "end": 26750, + "start": 26748, + "end": 26760, "loc": { "start": { "line": 784, @@ -58755,11 +58794,11 @@ }, "end": { "line": 784, - "column": 69 + "column": 67 }, - "identifierName": "KEY_DOWN_ARROW" + "identifierName": "KEY_UP_ARROW" }, - "name": "KEY_DOWN_ARROW" + "name": "KEY_UP_ARROW" }, "computed": false } @@ -58769,8 +58808,8 @@ }, { "type": "ExpressionStatement", - "start": 26773, - "end": 26822, + "start": 26783, + "end": 26847, "loc": { "start": { "line": 785, @@ -58778,13 +58817,13 @@ }, "end": { "line": 785, - "column": 69 + "column": 84 } }, "expression": { "type": "AssignmentExpression", - "start": 26773, - "end": 26821, + "start": 26783, + "end": 26846, "loc": { "start": { "line": 785, @@ -58792,14 +58831,14 @@ }, "end": { "line": 785, - "column": 68 + "column": 83 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26773, - "end": 26798, + "start": 26783, + "end": 26808, "loc": { "start": { "line": 785, @@ -58812,8 +58851,8 @@ }, "object": { "type": "Identifier", - "start": 26773, - "end": 26779, + "start": 26783, + "end": 26789, "loc": { "start": { "line": 785, @@ -58829,8 +58868,8 @@ }, "property": { "type": "MemberExpression", - "start": 26780, - "end": 26797, + "start": 26790, + "end": 26807, "loc": { "start": { "line": 785, @@ -58843,8 +58882,8 @@ }, "object": { "type": "ThisExpression", - "start": 26780, - "end": 26784, + "start": 26790, + "end": 26794, "loc": { "start": { "line": 785, @@ -58858,8 +58897,8 @@ }, "property": { "type": "Identifier", - "start": 26785, - "end": 26797, + "start": 26795, + "end": 26807, "loc": { "start": { "line": 785, @@ -58869,9 +58908,9 @@ "line": 785, "column": 44 }, - "identifierName": "ROTATE_X_NEG" + "identifierName": "ROTATE_Y_POS" }, - "name": "ROTATE_X_NEG" + "name": "ROTATE_Y_POS" }, "computed": false }, @@ -58879,8 +58918,8 @@ }, "right": { "type": "ArrayExpression", - "start": 26801, - "end": 26821, + "start": 26811, + "end": 26846, "loc": { "start": { "line": 785, @@ -58888,14 +58927,14 @@ }, "end": { "line": 785, - "column": 68 + "column": 83 } }, "elements": [ { "type": "MemberExpression", - "start": 26802, - "end": 26820, + "start": 26812, + "end": 26823, "loc": { "start": { "line": 785, @@ -58903,13 +58942,13 @@ }, "end": { "line": 785, - "column": 67 + "column": 60 } }, "object": { "type": "Identifier", - "start": 26802, - "end": 26807, + "start": 26812, + "end": 26817, "loc": { "start": { "line": 785, @@ -58925,20 +58964,70 @@ }, "property": { "type": "Identifier", - "start": 26808, - "end": 26820, + "start": 26818, + "end": 26823, "loc": { "start": { "line": 785, "column": 55 }, + "end": { + "line": 785, + "column": 60 + }, + "identifierName": "KEY_Q" + }, + "name": "KEY_Q" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 26825, + "end": 26845, + "loc": { + "start": { + "line": 785, + "column": 62 + }, + "end": { + "line": 785, + "column": 82 + } + }, + "object": { + "type": "Identifier", + "start": 26825, + "end": 26830, + "loc": { + "start": { + "line": 785, + "column": 62 + }, "end": { "line": 785, "column": 67 }, - "identifierName": "KEY_UP_ARROW" + "identifierName": "input" }, - "name": "KEY_UP_ARROW" + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 26831, + "end": 26845, + "loc": { + "start": { + "line": 785, + "column": 68 + }, + "end": { + "line": 785, + "column": 82 + }, + "identifierName": "KEY_LEFT_ARROW" + }, + "name": "KEY_LEFT_ARROW" }, "computed": false } @@ -58948,8 +59037,8 @@ }, { "type": "ExpressionStatement", - "start": 26843, - "end": 26907, + "start": 26868, + "end": 26933, "loc": { "start": { "line": 786, @@ -58957,13 +59046,13 @@ }, "end": { "line": 786, - "column": 84 + "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 26843, - "end": 26906, + "start": 26868, + "end": 26932, "loc": { "start": { "line": 786, @@ -58971,14 +59060,14 @@ }, "end": { "line": 786, - "column": 83 + "column": 84 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26843, - "end": 26868, + "start": 26868, + "end": 26893, "loc": { "start": { "line": 786, @@ -58991,8 +59080,8 @@ }, "object": { "type": "Identifier", - "start": 26843, - "end": 26849, + "start": 26868, + "end": 26874, "loc": { "start": { "line": 786, @@ -59008,8 +59097,8 @@ }, "property": { "type": "MemberExpression", - "start": 26850, - "end": 26867, + "start": 26875, + "end": 26892, "loc": { "start": { "line": 786, @@ -59022,8 +59111,8 @@ }, "object": { "type": "ThisExpression", - "start": 26850, - "end": 26854, + "start": 26875, + "end": 26879, "loc": { "start": { "line": 786, @@ -59037,8 +59126,8 @@ }, "property": { "type": "Identifier", - "start": 26855, - "end": 26867, + "start": 26880, + "end": 26892, "loc": { "start": { "line": 786, @@ -59048,9 +59137,9 @@ "line": 786, "column": 44 }, - "identifierName": "ROTATE_Y_POS" + "identifierName": "ROTATE_Y_NEG" }, - "name": "ROTATE_Y_POS" + "name": "ROTATE_Y_NEG" }, "computed": false }, @@ -59058,8 +59147,8 @@ }, "right": { "type": "ArrayExpression", - "start": 26871, - "end": 26906, + "start": 26896, + "end": 26932, "loc": { "start": { "line": 786, @@ -59067,14 +59156,14 @@ }, "end": { "line": 786, - "column": 83 + "column": 84 } }, "elements": [ { "type": "MemberExpression", - "start": 26872, - "end": 26883, + "start": 26897, + "end": 26908, "loc": { "start": { "line": 786, @@ -59087,8 +59176,8 @@ }, "object": { "type": "Identifier", - "start": 26872, - "end": 26877, + "start": 26897, + "end": 26902, "loc": { "start": { "line": 786, @@ -59104,8 +59193,8 @@ }, "property": { "type": "Identifier", - "start": 26878, - "end": 26883, + "start": 26903, + "end": 26908, "loc": { "start": { "line": 786, @@ -59115,16 +59204,16 @@ "line": 786, "column": 60 }, - "identifierName": "KEY_Q" + "identifierName": "KEY_E" }, - "name": "KEY_Q" + "name": "KEY_E" }, "computed": false }, { "type": "MemberExpression", - "start": 26885, - "end": 26905, + "start": 26910, + "end": 26931, "loc": { "start": { "line": 786, @@ -59132,13 +59221,13 @@ }, "end": { "line": 786, - "column": 82 + "column": 83 } }, "object": { "type": "Identifier", - "start": 26885, - "end": 26890, + "start": 26910, + "end": 26915, "loc": { "start": { "line": 786, @@ -59154,8 +59243,8 @@ }, "property": { "type": "Identifier", - "start": 26891, - "end": 26905, + "start": 26916, + "end": 26931, "loc": { "start": { "line": 786, @@ -59163,11 +59252,11 @@ }, "end": { "line": 786, - "column": 82 + "column": 83 }, - "identifierName": "KEY_LEFT_ARROW" + "identifierName": "KEY_RIGHT_ARROW" }, - "name": "KEY_LEFT_ARROW" + "name": "KEY_RIGHT_ARROW" }, "computed": false } @@ -59177,8 +59266,8 @@ }, { "type": "ExpressionStatement", - "start": 26928, - "end": 26993, + "start": 26954, + "end": 27003, "loc": { "start": { "line": 787, @@ -59186,13 +59275,13 @@ }, "end": { "line": 787, - "column": 85 + "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 26928, - "end": 26992, + "start": 26954, + "end": 27002, "loc": { "start": { "line": 787, @@ -59200,14 +59289,14 @@ }, "end": { "line": 787, - "column": 84 + "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 26928, - "end": 26953, + "start": 26954, + "end": 26982, "loc": { "start": { "line": 787, @@ -59215,13 +59304,13 @@ }, "end": { "line": 787, - "column": 45 + "column": 48 } }, "object": { "type": "Identifier", - "start": 26928, - "end": 26934, + "start": 26954, + "end": 26960, "loc": { "start": { "line": 787, @@ -59237,8 +59326,8 @@ }, "property": { "type": "MemberExpression", - "start": 26935, - "end": 26952, + "start": 26961, + "end": 26981, "loc": { "start": { "line": 787, @@ -59246,13 +59335,13 @@ }, "end": { "line": 787, - "column": 44 + "column": 47 } }, "object": { "type": "ThisExpression", - "start": 26935, - "end": 26939, + "start": 26961, + "end": 26965, "loc": { "start": { "line": 787, @@ -59266,8 +59355,8 @@ }, "property": { "type": "Identifier", - "start": 26940, - "end": 26952, + "start": 26966, + "end": 26981, "loc": { "start": { "line": 787, @@ -59275,11 +59364,11 @@ }, "end": { "line": 787, - "column": 44 + "column": 47 }, - "identifierName": "ROTATE_Y_NEG" + "identifierName": "AXIS_VIEW_RIGHT" }, - "name": "ROTATE_Y_NEG" + "name": "AXIS_VIEW_RIGHT" }, "computed": false }, @@ -59287,45 +59376,45 @@ }, "right": { "type": "ArrayExpression", - "start": 26956, - "end": 26992, + "start": 26985, + "end": 27002, "loc": { "start": { "line": 787, - "column": 48 + "column": 51 }, "end": { "line": 787, - "column": 84 + "column": 68 } }, "elements": [ { "type": "MemberExpression", - "start": 26957, - "end": 26968, + "start": 26986, + "end": 27001, "loc": { "start": { "line": 787, - "column": 49 + "column": 52 }, "end": { "line": 787, - "column": 60 + "column": 67 } }, "object": { "type": "Identifier", - "start": 26957, - "end": 26962, + "start": 26986, + "end": 26991, "loc": { "start": { "line": 787, - "column": 49 + "column": 52 }, "end": { "line": 787, - "column": 54 + "column": 57 }, "identifierName": "input" }, @@ -59333,70 +59422,20 @@ }, "property": { "type": "Identifier", - "start": 26963, - "end": 26968, - "loc": { - "start": { - "line": 787, - "column": 55 - }, - "end": { - "line": 787, - "column": 60 - }, - "identifierName": "KEY_E" - }, - "name": "KEY_E" - }, - "computed": false - }, - { - "type": "MemberExpression", - "start": 26970, - "end": 26991, - "loc": { - "start": { - "line": 787, - "column": 62 - }, - "end": { - "line": 787, - "column": 83 - } - }, - "object": { - "type": "Identifier", - "start": 26970, - "end": 26975, + "start": 26992, + "end": 27001, "loc": { "start": { "line": 787, - "column": 62 + "column": 58 }, "end": { "line": 787, "column": 67 }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 26976, - "end": 26991, - "loc": { - "start": { - "line": 787, - "column": 68 - }, - "end": { - "line": 787, - "column": 83 - }, - "identifierName": "KEY_RIGHT_ARROW" + "identifierName": "KEY_NUM_1" }, - "name": "KEY_RIGHT_ARROW" + "name": "KEY_NUM_1" }, "computed": false } @@ -59406,8 +59445,8 @@ }, { "type": "ExpressionStatement", - "start": 27014, - "end": 27063, + "start": 27024, + "end": 27072, "loc": { "start": { "line": 788, @@ -59415,13 +59454,13 @@ }, "end": { "line": 788, - "column": 69 + "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 27014, - "end": 27062, + "start": 27024, + "end": 27071, "loc": { "start": { "line": 788, @@ -59429,14 +59468,14 @@ }, "end": { "line": 788, - "column": 68 + "column": 67 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27014, - "end": 27042, + "start": 27024, + "end": 27051, "loc": { "start": { "line": 788, @@ -59444,13 +59483,13 @@ }, "end": { "line": 788, - "column": 48 + "column": 47 } }, "object": { "type": "Identifier", - "start": 27014, - "end": 27020, + "start": 27024, + "end": 27030, "loc": { "start": { "line": 788, @@ -59466,8 +59505,8 @@ }, "property": { "type": "MemberExpression", - "start": 27021, - "end": 27041, + "start": 27031, + "end": 27050, "loc": { "start": { "line": 788, @@ -59475,13 +59514,13 @@ }, "end": { "line": 788, - "column": 47 + "column": 46 } }, "object": { "type": "ThisExpression", - "start": 27021, - "end": 27025, + "start": 27031, + "end": 27035, "loc": { "start": { "line": 788, @@ -59495,8 +59534,8 @@ }, "property": { "type": "Identifier", - "start": 27026, - "end": 27041, + "start": 27036, + "end": 27050, "loc": { "start": { "line": 788, @@ -59504,11 +59543,11 @@ }, "end": { "line": 788, - "column": 47 + "column": 46 }, - "identifierName": "AXIS_VIEW_RIGHT" + "identifierName": "AXIS_VIEW_BACK" }, - "name": "AXIS_VIEW_RIGHT" + "name": "AXIS_VIEW_BACK" }, "computed": false }, @@ -59516,45 +59555,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27045, - "end": 27062, + "start": 27054, + "end": 27071, "loc": { "start": { "line": 788, - "column": 51 + "column": 50 }, "end": { "line": 788, - "column": 68 + "column": 67 } }, "elements": [ { "type": "MemberExpression", - "start": 27046, - "end": 27061, + "start": 27055, + "end": 27070, "loc": { "start": { "line": 788, - "column": 52 + "column": 51 }, "end": { "line": 788, - "column": 67 + "column": 66 } }, "object": { "type": "Identifier", - "start": 27046, - "end": 27051, + "start": 27055, + "end": 27060, "loc": { "start": { "line": 788, - "column": 52 + "column": 51 }, "end": { "line": 788, - "column": 57 + "column": 56 }, "identifierName": "input" }, @@ -59562,20 +59601,20 @@ }, "property": { "type": "Identifier", - "start": 27052, - "end": 27061, + "start": 27061, + "end": 27070, "loc": { "start": { "line": 788, - "column": 58 + "column": 57 }, "end": { "line": 788, - "column": 67 + "column": 66 }, - "identifierName": "KEY_NUM_1" + "identifierName": "KEY_NUM_2" }, - "name": "KEY_NUM_1" + "name": "KEY_NUM_2" }, "computed": false } @@ -59585,8 +59624,8 @@ }, { "type": "ExpressionStatement", - "start": 27084, - "end": 27132, + "start": 27093, + "end": 27141, "loc": { "start": { "line": 789, @@ -59599,8 +59638,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 27084, - "end": 27131, + "start": 27093, + "end": 27140, "loc": { "start": { "line": 789, @@ -59614,8 +59653,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 27084, - "end": 27111, + "start": 27093, + "end": 27120, "loc": { "start": { "line": 789, @@ -59628,8 +59667,8 @@ }, "object": { "type": "Identifier", - "start": 27084, - "end": 27090, + "start": 27093, + "end": 27099, "loc": { "start": { "line": 789, @@ -59645,8 +59684,8 @@ }, "property": { "type": "MemberExpression", - "start": 27091, - "end": 27110, + "start": 27100, + "end": 27119, "loc": { "start": { "line": 789, @@ -59659,8 +59698,8 @@ }, "object": { "type": "ThisExpression", - "start": 27091, - "end": 27095, + "start": 27100, + "end": 27104, "loc": { "start": { "line": 789, @@ -59674,8 +59713,8 @@ }, "property": { "type": "Identifier", - "start": 27096, - "end": 27110, + "start": 27105, + "end": 27119, "loc": { "start": { "line": 789, @@ -59685,9 +59724,9 @@ "line": 789, "column": 46 }, - "identifierName": "AXIS_VIEW_BACK" + "identifierName": "AXIS_VIEW_LEFT" }, - "name": "AXIS_VIEW_BACK" + "name": "AXIS_VIEW_LEFT" }, "computed": false }, @@ -59695,8 +59734,8 @@ }, "right": { "type": "ArrayExpression", - "start": 27114, - "end": 27131, + "start": 27123, + "end": 27140, "loc": { "start": { "line": 789, @@ -59710,8 +59749,8 @@ "elements": [ { "type": "MemberExpression", - "start": 27115, - "end": 27130, + "start": 27124, + "end": 27139, "loc": { "start": { "line": 789, @@ -59724,8 +59763,8 @@ }, "object": { "type": "Identifier", - "start": 27115, - "end": 27120, + "start": 27124, + "end": 27129, "loc": { "start": { "line": 789, @@ -59741,8 +59780,8 @@ }, "property": { "type": "Identifier", - "start": 27121, - "end": 27130, + "start": 27130, + "end": 27139, "loc": { "start": { "line": 789, @@ -59752,9 +59791,9 @@ "line": 789, "column": 66 }, - "identifierName": "KEY_NUM_2" + "identifierName": "KEY_NUM_3" }, - "name": "KEY_NUM_2" + "name": "KEY_NUM_3" }, "computed": false } @@ -59764,8 +59803,8 @@ }, { "type": "ExpressionStatement", - "start": 27153, - "end": 27201, + "start": 27162, + "end": 27211, "loc": { "start": { "line": 790, @@ -59773,13 +59812,13 @@ }, "end": { "line": 790, - "column": 68 + "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 27153, - "end": 27200, + "start": 27162, + "end": 27210, "loc": { "start": { "line": 790, @@ -59787,14 +59826,14 @@ }, "end": { "line": 790, - "column": 67 + "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27153, - "end": 27180, + "start": 27162, + "end": 27190, "loc": { "start": { "line": 790, @@ -59802,13 +59841,13 @@ }, "end": { "line": 790, - "column": 47 + "column": 48 } }, "object": { "type": "Identifier", - "start": 27153, - "end": 27159, + "start": 27162, + "end": 27168, "loc": { "start": { "line": 790, @@ -59824,8 +59863,8 @@ }, "property": { "type": "MemberExpression", - "start": 27160, - "end": 27179, + "start": 27169, + "end": 27189, "loc": { "start": { "line": 790, @@ -59833,13 +59872,13 @@ }, "end": { "line": 790, - "column": 46 + "column": 47 } }, "object": { "type": "ThisExpression", - "start": 27160, - "end": 27164, + "start": 27169, + "end": 27173, "loc": { "start": { "line": 790, @@ -59853,8 +59892,8 @@ }, "property": { "type": "Identifier", - "start": 27165, - "end": 27179, + "start": 27174, + "end": 27189, "loc": { "start": { "line": 790, @@ -59862,11 +59901,11 @@ }, "end": { "line": 790, - "column": 46 + "column": 47 }, - "identifierName": "AXIS_VIEW_LEFT" + "identifierName": "AXIS_VIEW_FRONT" }, - "name": "AXIS_VIEW_LEFT" + "name": "AXIS_VIEW_FRONT" }, "computed": false }, @@ -59874,45 +59913,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27183, - "end": 27200, + "start": 27193, + "end": 27210, "loc": { "start": { "line": 790, - "column": 50 + "column": 51 }, "end": { "line": 790, - "column": 67 + "column": 68 } }, "elements": [ { "type": "MemberExpression", - "start": 27184, - "end": 27199, + "start": 27194, + "end": 27209, "loc": { "start": { "line": 790, - "column": 51 + "column": 52 }, "end": { "line": 790, - "column": 66 + "column": 67 } }, "object": { "type": "Identifier", - "start": 27184, - "end": 27189, + "start": 27194, + "end": 27199, "loc": { "start": { "line": 790, - "column": 51 + "column": 52 }, "end": { "line": 790, - "column": 56 + "column": 57 }, "identifierName": "input" }, @@ -59920,20 +59959,20 @@ }, "property": { "type": "Identifier", - "start": 27190, - "end": 27199, + "start": 27200, + "end": 27209, "loc": { "start": { "line": 790, - "column": 57 + "column": 58 }, "end": { "line": 790, - "column": 66 + "column": 67 }, - "identifierName": "KEY_NUM_3" + "identifierName": "KEY_NUM_4" }, - "name": "KEY_NUM_3" + "name": "KEY_NUM_4" }, "computed": false } @@ -59943,8 +59982,8 @@ }, { "type": "ExpressionStatement", - "start": 27222, - "end": 27271, + "start": 27232, + "end": 27279, "loc": { "start": { "line": 791, @@ -59952,13 +59991,13 @@ }, "end": { "line": 791, - "column": 69 + "column": 67 } }, "expression": { "type": "AssignmentExpression", - "start": 27222, - "end": 27270, + "start": 27232, + "end": 27278, "loc": { "start": { "line": 791, @@ -59966,14 +60005,14 @@ }, "end": { "line": 791, - "column": 68 + "column": 66 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27222, - "end": 27250, + "start": 27232, + "end": 27258, "loc": { "start": { "line": 791, @@ -59981,13 +60020,13 @@ }, "end": { "line": 791, - "column": 48 + "column": 46 } }, "object": { "type": "Identifier", - "start": 27222, - "end": 27228, + "start": 27232, + "end": 27238, "loc": { "start": { "line": 791, @@ -60003,8 +60042,8 @@ }, "property": { "type": "MemberExpression", - "start": 27229, - "end": 27249, + "start": 27239, + "end": 27257, "loc": { "start": { "line": 791, @@ -60012,13 +60051,13 @@ }, "end": { "line": 791, - "column": 47 + "column": 45 } }, "object": { "type": "ThisExpression", - "start": 27229, - "end": 27233, + "start": 27239, + "end": 27243, "loc": { "start": { "line": 791, @@ -60032,8 +60071,8 @@ }, "property": { "type": "Identifier", - "start": 27234, - "end": 27249, + "start": 27244, + "end": 27257, "loc": { "start": { "line": 791, @@ -60041,11 +60080,11 @@ }, "end": { "line": 791, - "column": 47 + "column": 45 }, - "identifierName": "AXIS_VIEW_FRONT" + "identifierName": "AXIS_VIEW_TOP" }, - "name": "AXIS_VIEW_FRONT" + "name": "AXIS_VIEW_TOP" }, "computed": false }, @@ -60053,45 +60092,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27253, - "end": 27270, + "start": 27261, + "end": 27278, "loc": { "start": { "line": 791, - "column": 51 + "column": 49 }, "end": { "line": 791, - "column": 68 + "column": 66 } }, "elements": [ { "type": "MemberExpression", - "start": 27254, - "end": 27269, + "start": 27262, + "end": 27277, "loc": { "start": { "line": 791, - "column": 52 + "column": 50 }, "end": { "line": 791, - "column": 67 + "column": 65 } }, "object": { "type": "Identifier", - "start": 27254, - "end": 27259, + "start": 27262, + "end": 27267, "loc": { "start": { "line": 791, - "column": 52 + "column": 50 }, "end": { "line": 791, - "column": 57 + "column": 55 }, "identifierName": "input" }, @@ -60099,20 +60138,20 @@ }, "property": { "type": "Identifier", - "start": 27260, - "end": 27269, + "start": 27268, + "end": 27277, "loc": { "start": { "line": 791, - "column": 58 + "column": 56 }, "end": { "line": 791, - "column": 67 + "column": 65 }, - "identifierName": "KEY_NUM_4" + "identifierName": "KEY_NUM_5" }, - "name": "KEY_NUM_4" + "name": "KEY_NUM_5" }, "computed": false } @@ -60122,8 +60161,8 @@ }, { "type": "ExpressionStatement", - "start": 27292, - "end": 27339, + "start": 27300, + "end": 27350, "loc": { "start": { "line": 792, @@ -60131,13 +60170,13 @@ }, "end": { "line": 792, - "column": 67 + "column": 70 } }, "expression": { "type": "AssignmentExpression", - "start": 27292, - "end": 27338, + "start": 27300, + "end": 27349, "loc": { "start": { "line": 792, @@ -60145,14 +60184,14 @@ }, "end": { "line": 792, - "column": 66 + "column": 69 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27292, - "end": 27318, + "start": 27300, + "end": 27329, "loc": { "start": { "line": 792, @@ -60160,13 +60199,13 @@ }, "end": { "line": 792, - "column": 46 + "column": 49 } }, "object": { "type": "Identifier", - "start": 27292, - "end": 27298, + "start": 27300, + "end": 27306, "loc": { "start": { "line": 792, @@ -60182,8 +60221,8 @@ }, "property": { "type": "MemberExpression", - "start": 27299, - "end": 27317, + "start": 27307, + "end": 27328, "loc": { "start": { "line": 792, @@ -60191,13 +60230,13 @@ }, "end": { "line": 792, - "column": 45 + "column": 48 } }, "object": { "type": "ThisExpression", - "start": 27299, - "end": 27303, + "start": 27307, + "end": 27311, "loc": { "start": { "line": 792, @@ -60211,8 +60250,8 @@ }, "property": { "type": "Identifier", - "start": 27304, - "end": 27317, + "start": 27312, + "end": 27328, "loc": { "start": { "line": 792, @@ -60220,11 +60259,11 @@ }, "end": { "line": 792, - "column": 45 + "column": 48 }, - "identifierName": "AXIS_VIEW_TOP" + "identifierName": "AXIS_VIEW_BOTTOM" }, - "name": "AXIS_VIEW_TOP" + "name": "AXIS_VIEW_BOTTOM" }, "computed": false }, @@ -60232,45 +60271,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27321, - "end": 27338, + "start": 27332, + "end": 27349, "loc": { "start": { "line": 792, - "column": 49 + "column": 52 }, "end": { "line": 792, - "column": 66 + "column": 69 } }, "elements": [ { "type": "MemberExpression", - "start": 27322, - "end": 27337, + "start": 27333, + "end": 27348, "loc": { "start": { "line": 792, - "column": 50 + "column": 53 }, "end": { "line": 792, - "column": 65 + "column": 68 } }, "object": { "type": "Identifier", - "start": 27322, - "end": 27327, + "start": 27333, + "end": 27338, "loc": { "start": { "line": 792, - "column": 50 + "column": 53 }, "end": { "line": 792, - "column": 55 + "column": 58 }, "identifierName": "input" }, @@ -60278,20 +60317,20 @@ }, "property": { "type": "Identifier", - "start": 27328, - "end": 27337, + "start": 27339, + "end": 27348, "loc": { "start": { "line": 792, - "column": 56 + "column": 59 }, "end": { "line": 792, - "column": 65 + "column": 68 }, - "identifierName": "KEY_NUM_5" + "identifierName": "KEY_NUM_6" }, - "name": "KEY_NUM_5" + "name": "KEY_NUM_6" }, "computed": false } @@ -60300,9 +60339,9 @@ } }, { - "type": "ExpressionStatement", - "start": 27360, - "end": 27410, + "type": "BreakStatement", + "start": 27371, + "end": 27377, "loc": { "start": { "line": 793, @@ -60310,49 +60349,121 @@ }, "end": { "line": 793, - "column": 70 + "column": 26 + } + }, + "label": null + } + ], + "test": { + "type": "StringLiteral", + "start": 26105, + "end": 26113, + "loc": { + "start": { + "line": 774, + "column": 21 + }, + "end": { + "line": 774, + "column": 29 + } + }, + "extra": { + "rawValue": "qwerty", + "raw": "\"qwerty\"" + }, + "value": "qwerty", + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Intentional fall-through to \"qwerty\"", + "start": 26044, + "end": 26083, + "loc": { + "start": { + "line": 773, + "column": 16 + }, + "end": { + "line": 773, + "column": 55 + } + } + } + ] + }, + { + "type": "SwitchCase", + "start": 27395, + "end": 28672, + "loc": { + "start": { + "line": 795, + "column": 16 + }, + "end": { + "line": 814, + "column": 26 + } + }, + "consequent": [ + { + "type": "ExpressionStatement", + "start": 27430, + "end": 27468, + "loc": { + "start": { + "line": 796, + "column": 20 + }, + "end": { + "line": 796, + "column": 58 } }, "expression": { "type": "AssignmentExpression", - "start": 27360, - "end": 27409, + "start": 27430, + "end": 27467, "loc": { "start": { - "line": 793, + "line": 796, "column": 20 }, "end": { - "line": 793, - "column": 69 + "line": 796, + "column": 57 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27360, - "end": 27389, + "start": 27430, + "end": 27451, "loc": { "start": { - "line": 793, + "line": 796, "column": 20 }, "end": { - "line": 793, - "column": 49 + "line": 796, + "column": 41 } }, "object": { "type": "Identifier", - "start": 27360, - "end": 27366, + "start": 27430, + "end": 27436, "loc": { "start": { - "line": 793, + "line": 796, "column": 20 }, "end": { - "line": 793, + "line": 796, "column": 26 }, "identifierName": "keyMap" @@ -60361,49 +60472,49 @@ }, "property": { "type": "MemberExpression", - "start": 27367, - "end": 27388, + "start": 27437, + "end": 27450, "loc": { "start": { - "line": 793, + "line": 796, "column": 27 }, "end": { - "line": 793, - "column": 48 + "line": 796, + "column": 40 } }, "object": { "type": "ThisExpression", - "start": 27367, - "end": 27371, + "start": 27437, + "end": 27441, "loc": { "start": { - "line": 793, + "line": 796, "column": 27 }, "end": { - "line": 793, + "line": 796, "column": 31 } } }, "property": { "type": "Identifier", - "start": 27372, - "end": 27388, + "start": 27442, + "end": 27450, "loc": { "start": { - "line": 793, + "line": 796, "column": 32 }, "end": { - "line": 793, - "column": 48 + "line": 796, + "column": 40 }, - "identifierName": "AXIS_VIEW_BOTTOM" + "identifierName": "PAN_LEFT" }, - "name": "AXIS_VIEW_BOTTOM" + "name": "PAN_LEFT" }, "computed": false }, @@ -60411,45 +60522,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27392, - "end": 27409, + "start": 27454, + "end": 27467, "loc": { "start": { - "line": 793, - "column": 52 + "line": 796, + "column": 44 }, "end": { - "line": 793, - "column": 69 + "line": 796, + "column": 57 } }, "elements": [ { "type": "MemberExpression", - "start": 27393, - "end": 27408, + "start": 27455, + "end": 27466, "loc": { "start": { - "line": 793, - "column": 53 + "line": 796, + "column": 45 }, "end": { - "line": 793, - "column": 68 + "line": 796, + "column": 56 } }, "object": { "type": "Identifier", - "start": 27393, - "end": 27398, + "start": 27455, + "end": 27460, "loc": { "start": { - "line": 793, - "column": 53 + "line": 796, + "column": 45 }, "end": { - "line": 793, - "column": 58 + "line": 796, + "column": 50 }, "identifierName": "input" }, @@ -60457,20 +60568,20 @@ }, "property": { "type": "Identifier", - "start": 27399, - "end": 27408, + "start": 27461, + "end": 27466, "loc": { "start": { - "line": 793, - "column": 59 + "line": 796, + "column": 51 }, "end": { - "line": 793, - "column": 68 + "line": 796, + "column": 56 }, - "identifierName": "KEY_NUM_6" + "identifierName": "KEY_Q" }, - "name": "KEY_NUM_6" + "name": "KEY_Q" }, "computed": false } @@ -60478,81 +60589,9 @@ } } }, - { - "type": "BreakStatement", - "start": 27431, - "end": 27437, - "loc": { - "start": { - "line": 794, - "column": 20 - }, - "end": { - "line": 794, - "column": 26 - } - }, - "label": null - } - ], - "test": { - "type": "StringLiteral", - "start": 26165, - "end": 26173, - "loc": { - "start": { - "line": 775, - "column": 21 - }, - "end": { - "line": 775, - "column": 29 - } - }, - "extra": { - "rawValue": "qwerty", - "raw": "\"qwerty\"" - }, - "value": "qwerty", - "leadingComments": null - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " Intentional fall-through to \"qwerty\"", - "start": 26104, - "end": 26143, - "loc": { - "start": { - "line": 774, - "column": 16 - }, - "end": { - "line": 774, - "column": 55 - } - } - } - ] - }, - { - "type": "SwitchCase", - "start": 27455, - "end": 28732, - "loc": { - "start": { - "line": 796, - "column": 16 - }, - "end": { - "line": 815, - "column": 26 - } - }, - "consequent": [ { "type": "ExpressionStatement", - "start": 27490, + "start": 27489, "end": 27528, "loc": { "start": { @@ -60561,12 +60600,12 @@ }, "end": { "line": 797, - "column": 58 + "column": 59 } }, "expression": { "type": "AssignmentExpression", - "start": 27490, + "start": 27489, "end": 27527, "loc": { "start": { @@ -60575,13 +60614,13 @@ }, "end": { "line": 797, - "column": 57 + "column": 58 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27490, + "start": 27489, "end": 27511, "loc": { "start": { @@ -60590,13 +60629,13 @@ }, "end": { "line": 797, - "column": 41 + "column": 42 } }, "object": { "type": "Identifier", - "start": 27490, - "end": 27496, + "start": 27489, + "end": 27495, "loc": { "start": { "line": 797, @@ -60612,7 +60651,7 @@ }, "property": { "type": "MemberExpression", - "start": 27497, + "start": 27496, "end": 27510, "loc": { "start": { @@ -60621,13 +60660,13 @@ }, "end": { "line": 797, - "column": 40 + "column": 41 } }, "object": { "type": "ThisExpression", - "start": 27497, - "end": 27501, + "start": 27496, + "end": 27500, "loc": { "start": { "line": 797, @@ -60641,7 +60680,7 @@ }, "property": { "type": "Identifier", - "start": 27502, + "start": 27501, "end": 27510, "loc": { "start": { @@ -60650,11 +60689,11 @@ }, "end": { "line": 797, - "column": 40 + "column": 41 }, - "identifierName": "PAN_LEFT" + "identifierName": "PAN_RIGHT" }, - "name": "PAN_LEFT" + "name": "PAN_RIGHT" }, "computed": false }, @@ -60667,11 +60706,11 @@ "loc": { "start": { "line": 797, - "column": 44 + "column": 45 }, "end": { "line": 797, - "column": 57 + "column": 58 } }, "elements": [ @@ -60682,11 +60721,11 @@ "loc": { "start": { "line": 797, - "column": 45 + "column": 46 }, "end": { "line": 797, - "column": 56 + "column": 57 } }, "object": { @@ -60696,11 +60735,11 @@ "loc": { "start": { "line": 797, - "column": 45 + "column": 46 }, "end": { "line": 797, - "column": 50 + "column": 51 }, "identifierName": "input" }, @@ -60713,15 +60752,15 @@ "loc": { "start": { "line": 797, - "column": 51 + "column": 52 }, "end": { "line": 797, - "column": 56 + "column": 57 }, - "identifierName": "KEY_Q" + "identifierName": "KEY_D" }, - "name": "KEY_Q" + "name": "KEY_D" }, "computed": false } @@ -60732,7 +60771,7 @@ { "type": "ExpressionStatement", "start": 27549, - "end": 27588, + "end": 27585, "loc": { "start": { "line": 798, @@ -60740,13 +60779,13 @@ }, "end": { "line": 798, - "column": 59 + "column": 56 } }, "expression": { "type": "AssignmentExpression", "start": 27549, - "end": 27587, + "end": 27584, "loc": { "start": { "line": 798, @@ -60754,14 +60793,14 @@ }, "end": { "line": 798, - "column": 58 + "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", "start": 27549, - "end": 27571, + "end": 27568, "loc": { "start": { "line": 798, @@ -60769,7 +60808,7 @@ }, "end": { "line": 798, - "column": 42 + "column": 39 } }, "object": { @@ -60792,7 +60831,7 @@ "property": { "type": "MemberExpression", "start": 27556, - "end": 27570, + "end": 27567, "loc": { "start": { "line": 798, @@ -60800,7 +60839,7 @@ }, "end": { "line": 798, - "column": 41 + "column": 38 } }, "object": { @@ -60821,7 +60860,7 @@ "property": { "type": "Identifier", "start": 27561, - "end": 27570, + "end": 27567, "loc": { "start": { "line": 798, @@ -60829,11 +60868,11 @@ }, "end": { "line": 798, - "column": 41 + "column": 38 }, - "identifierName": "PAN_RIGHT" + "identifierName": "PAN_UP" }, - "name": "PAN_RIGHT" + "name": "PAN_UP" }, "computed": false }, @@ -60841,45 +60880,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27574, - "end": 27587, + "start": 27571, + "end": 27584, "loc": { "start": { "line": 798, - "column": 45 + "column": 42 }, "end": { "line": 798, - "column": 58 + "column": 55 } }, "elements": [ { "type": "MemberExpression", - "start": 27575, - "end": 27586, + "start": 27572, + "end": 27583, "loc": { "start": { "line": 798, - "column": 46 + "column": 43 }, "end": { "line": 798, - "column": 57 + "column": 54 } }, "object": { "type": "Identifier", - "start": 27575, - "end": 27580, + "start": 27572, + "end": 27577, "loc": { "start": { "line": 798, - "column": 46 + "column": 43 }, "end": { "line": 798, - "column": 51 + "column": 48 }, "identifierName": "input" }, @@ -60887,20 +60926,20 @@ }, "property": { "type": "Identifier", - "start": 27581, - "end": 27586, + "start": 27578, + "end": 27583, "loc": { "start": { "line": 798, - "column": 52 + "column": 49 }, "end": { "line": 798, - "column": 57 + "column": 54 }, - "identifierName": "KEY_D" + "identifierName": "KEY_W" }, - "name": "KEY_D" + "name": "KEY_W" }, "computed": false } @@ -60910,8 +60949,8 @@ }, { "type": "ExpressionStatement", - "start": 27609, - "end": 27645, + "start": 27606, + "end": 27644, "loc": { "start": { "line": 799, @@ -60919,13 +60958,13 @@ }, "end": { "line": 799, - "column": 56 + "column": 58 } }, "expression": { "type": "AssignmentExpression", - "start": 27609, - "end": 27644, + "start": 27606, + "end": 27643, "loc": { "start": { "line": 799, @@ -60933,14 +60972,14 @@ }, "end": { "line": 799, - "column": 55 + "column": 57 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27609, - "end": 27628, + "start": 27606, + "end": 27627, "loc": { "start": { "line": 799, @@ -60948,13 +60987,13 @@ }, "end": { "line": 799, - "column": 39 + "column": 41 } }, "object": { "type": "Identifier", - "start": 27609, - "end": 27615, + "start": 27606, + "end": 27612, "loc": { "start": { "line": 799, @@ -60970,8 +61009,8 @@ }, "property": { "type": "MemberExpression", - "start": 27616, - "end": 27627, + "start": 27613, + "end": 27626, "loc": { "start": { "line": 799, @@ -60979,13 +61018,13 @@ }, "end": { "line": 799, - "column": 38 + "column": 40 } }, "object": { "type": "ThisExpression", - "start": 27616, - "end": 27620, + "start": 27613, + "end": 27617, "loc": { "start": { "line": 799, @@ -60999,8 +61038,8 @@ }, "property": { "type": "Identifier", - "start": 27621, - "end": 27627, + "start": 27618, + "end": 27626, "loc": { "start": { "line": 799, @@ -61008,11 +61047,11 @@ }, "end": { "line": 799, - "column": 38 + "column": 40 }, - "identifierName": "PAN_UP" + "identifierName": "PAN_DOWN" }, - "name": "PAN_UP" + "name": "PAN_DOWN" }, "computed": false }, @@ -61020,45 +61059,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27631, - "end": 27644, + "start": 27630, + "end": 27643, "loc": { "start": { "line": 799, - "column": 42 + "column": 44 }, "end": { "line": 799, - "column": 55 + "column": 57 } }, "elements": [ { "type": "MemberExpression", - "start": 27632, - "end": 27643, + "start": 27631, + "end": 27642, "loc": { "start": { "line": 799, - "column": 43 + "column": 45 }, "end": { "line": 799, - "column": 54 + "column": 56 } }, "object": { "type": "Identifier", - "start": 27632, - "end": 27637, + "start": 27631, + "end": 27636, "loc": { "start": { "line": 799, - "column": 43 + "column": 45 }, "end": { "line": 799, - "column": 48 + "column": 50 }, "identifierName": "input" }, @@ -61066,20 +61105,20 @@ }, "property": { "type": "Identifier", - "start": 27638, - "end": 27643, + "start": 27637, + "end": 27642, "loc": { "start": { "line": 799, - "column": 49 + "column": 51 }, "end": { "line": 799, - "column": 54 + "column": 56 }, - "identifierName": "KEY_W" + "identifierName": "KEY_X" }, - "name": "KEY_W" + "name": "KEY_X" }, "computed": false } @@ -61089,8 +61128,8 @@ }, { "type": "ExpressionStatement", - "start": 27666, - "end": 27704, + "start": 27665, + "end": 27697, "loc": { "start": { "line": 800, @@ -61098,13 +61137,13 @@ }, "end": { "line": 800, - "column": 58 + "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 27666, - "end": 27703, + "start": 27665, + "end": 27696, "loc": { "start": { "line": 800, @@ -61112,14 +61151,14 @@ }, "end": { "line": 800, - "column": 57 + "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27666, - "end": 27687, + "start": 27665, + "end": 27691, "loc": { "start": { "line": 800, @@ -61127,13 +61166,13 @@ }, "end": { "line": 800, - "column": 41 + "column": 46 } }, "object": { "type": "Identifier", - "start": 27666, - "end": 27672, + "start": 27665, + "end": 27671, "loc": { "start": { "line": 800, @@ -61149,8 +61188,8 @@ }, "property": { "type": "MemberExpression", - "start": 27673, - "end": 27686, + "start": 27672, + "end": 27690, "loc": { "start": { "line": 800, @@ -61158,13 +61197,13 @@ }, "end": { "line": 800, - "column": 40 + "column": 45 } }, "object": { "type": "ThisExpression", - "start": 27673, - "end": 27677, + "start": 27672, + "end": 27676, "loc": { "start": { "line": 800, @@ -61178,8 +61217,8 @@ }, "property": { "type": "Identifier", - "start": 27678, - "end": 27686, + "start": 27677, + "end": 27690, "loc": { "start": { "line": 800, @@ -61187,11 +61226,11 @@ }, "end": { "line": 800, - "column": 40 + "column": 45 }, - "identifierName": "PAN_DOWN" + "identifierName": "PAN_BACKWARDS" }, - "name": "PAN_DOWN" + "name": "PAN_BACKWARDS" }, "computed": false }, @@ -61199,77 +61238,26 @@ }, "right": { "type": "ArrayExpression", - "start": 27690, - "end": 27703, + "start": 27694, + "end": 27696, "loc": { "start": { "line": 800, - "column": 44 + "column": 49 }, "end": { "line": 800, - "column": 57 + "column": 51 } }, - "elements": [ - { - "type": "MemberExpression", - "start": 27691, - "end": 27702, - "loc": { - "start": { - "line": 800, - "column": 45 - }, - "end": { - "line": 800, - "column": 56 - } - }, - "object": { - "type": "Identifier", - "start": 27691, - "end": 27696, - "loc": { - "start": { - "line": 800, - "column": 45 - }, - "end": { - "line": 800, - "column": 50 - }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 27697, - "end": 27702, - "loc": { - "start": { - "line": 800, - "column": 51 - }, - "end": { - "line": 800, - "column": 56 - }, - "identifierName": "KEY_X" - }, - "name": "KEY_X" - }, - "computed": false - } - ] + "elements": [] } } }, { "type": "ExpressionStatement", - "start": 27725, - "end": 27757, + "start": 27718, + "end": 27749, "loc": { "start": { "line": 801, @@ -61277,13 +61265,13 @@ }, "end": { "line": 801, - "column": 52 + "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 27725, - "end": 27756, + "start": 27718, + "end": 27748, "loc": { "start": { "line": 801, @@ -61291,14 +61279,14 @@ }, "end": { "line": 801, - "column": 51 + "column": 50 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27725, - "end": 27751, + "start": 27718, + "end": 27743, "loc": { "start": { "line": 801, @@ -61306,13 +61294,13 @@ }, "end": { "line": 801, - "column": 46 + "column": 45 } }, "object": { "type": "Identifier", - "start": 27725, - "end": 27731, + "start": 27718, + "end": 27724, "loc": { "start": { "line": 801, @@ -61328,8 +61316,8 @@ }, "property": { "type": "MemberExpression", - "start": 27732, - "end": 27750, + "start": 27725, + "end": 27742, "loc": { "start": { "line": 801, @@ -61337,13 +61325,13 @@ }, "end": { "line": 801, - "column": 45 + "column": 44 } }, "object": { "type": "ThisExpression", - "start": 27732, - "end": 27736, + "start": 27725, + "end": 27729, "loc": { "start": { "line": 801, @@ -61357,8 +61345,8 @@ }, "property": { "type": "Identifier", - "start": 27737, - "end": 27750, + "start": 27730, + "end": 27742, "loc": { "start": { "line": 801, @@ -61366,11 +61354,11 @@ }, "end": { "line": 801, - "column": 45 + "column": 44 }, - "identifierName": "PAN_BACKWARDS" + "identifierName": "PAN_FORWARDS" }, - "name": "PAN_BACKWARDS" + "name": "PAN_FORWARDS" }, "computed": false }, @@ -61378,16 +61366,16 @@ }, "right": { "type": "ArrayExpression", - "start": 27754, - "end": 27756, + "start": 27746, + "end": 27748, "loc": { "start": { "line": 801, - "column": 49 + "column": 48 }, "end": { "line": 801, - "column": 51 + "column": 50 } }, "elements": [] @@ -61396,8 +61384,8 @@ }, { "type": "ExpressionStatement", - "start": 27778, - "end": 27809, + "start": 27770, + "end": 27829, "loc": { "start": { "line": 802, @@ -61405,13 +61393,13 @@ }, "end": { "line": 802, - "column": 51 + "column": 79 } }, "expression": { "type": "AssignmentExpression", - "start": 27778, - "end": 27808, + "start": 27770, + "end": 27828, "loc": { "start": { "line": 802, @@ -61419,14 +61407,14 @@ }, "end": { "line": 802, - "column": 50 + "column": 78 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27778, - "end": 27803, + "start": 27770, + "end": 27797, "loc": { "start": { "line": 802, @@ -61434,13 +61422,13 @@ }, "end": { "line": 802, - "column": 45 + "column": 47 } }, "object": { "type": "Identifier", - "start": 27778, - "end": 27784, + "start": 27770, + "end": 27776, "loc": { "start": { "line": 802, @@ -61456,8 +61444,8 @@ }, "property": { "type": "MemberExpression", - "start": 27785, - "end": 27802, + "start": 27777, + "end": 27796, "loc": { "start": { "line": 802, @@ -61465,13 +61453,13 @@ }, "end": { "line": 802, - "column": 44 + "column": 46 } }, "object": { "type": "ThisExpression", - "start": 27785, - "end": 27789, + "start": 27777, + "end": 27781, "loc": { "start": { "line": 802, @@ -61485,8 +61473,8 @@ }, "property": { "type": "Identifier", - "start": 27790, - "end": 27802, + "start": 27782, + "end": 27796, "loc": { "start": { "line": 802, @@ -61494,11 +61482,11 @@ }, "end": { "line": 802, - "column": 44 + "column": 46 }, - "identifierName": "PAN_FORWARDS" + "identifierName": "DOLLY_FORWARDS" }, - "name": "PAN_FORWARDS" + "name": "DOLLY_FORWARDS" }, "computed": false }, @@ -61506,26 +61494,127 @@ }, "right": { "type": "ArrayExpression", - "start": 27806, - "end": 27808, + "start": 27800, + "end": 27828, "loc": { "start": { "line": 802, - "column": 48 + "column": 50 }, "end": { "line": 802, - "column": 50 + "column": 78 } }, - "elements": [] + "elements": [ + { + "type": "MemberExpression", + "start": 27801, + "end": 27812, + "loc": { + "start": { + "line": 802, + "column": 51 + }, + "end": { + "line": 802, + "column": 62 + } + }, + "object": { + "type": "Identifier", + "start": 27801, + "end": 27806, + "loc": { + "start": { + "line": 802, + "column": 51 + }, + "end": { + "line": 802, + "column": 56 + }, + "identifierName": "input" + }, + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 27807, + "end": 27812, + "loc": { + "start": { + "line": 802, + "column": 57 + }, + "end": { + "line": 802, + "column": 62 + }, + "identifierName": "KEY_Z" + }, + "name": "KEY_Z" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 27814, + "end": 27827, + "loc": { + "start": { + "line": 802, + "column": 64 + }, + "end": { + "line": 802, + "column": 77 + } + }, + "object": { + "type": "Identifier", + "start": 27814, + "end": 27819, + "loc": { + "start": { + "line": 802, + "column": 64 + }, + "end": { + "line": 802, + "column": 69 + }, + "identifierName": "input" + }, + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 27820, + "end": 27827, + "loc": { + "start": { + "line": 802, + "column": 70 + }, + "end": { + "line": 802, + "column": 77 + }, + "identifierName": "KEY_ADD" + }, + "name": "KEY_ADD" + }, + "computed": false + } + ] } } }, { "type": "ExpressionStatement", - "start": 27830, - "end": 27889, + "start": 27850, + "end": 27915, "loc": { "start": { "line": 803, @@ -61533,13 +61622,13 @@ }, "end": { "line": 803, - "column": 79 + "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 27830, - "end": 27888, + "start": 27850, + "end": 27914, "loc": { "start": { "line": 803, @@ -61547,14 +61636,14 @@ }, "end": { "line": 803, - "column": 78 + "column": 84 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27830, - "end": 27857, + "start": 27850, + "end": 27878, "loc": { "start": { "line": 803, @@ -61562,13 +61651,13 @@ }, "end": { "line": 803, - "column": 47 + "column": 48 } }, "object": { "type": "Identifier", - "start": 27830, - "end": 27836, + "start": 27850, + "end": 27856, "loc": { "start": { "line": 803, @@ -61584,8 +61673,8 @@ }, "property": { "type": "MemberExpression", - "start": 27837, - "end": 27856, + "start": 27857, + "end": 27877, "loc": { "start": { "line": 803, @@ -61593,13 +61682,13 @@ }, "end": { "line": 803, - "column": 46 + "column": 47 } }, "object": { "type": "ThisExpression", - "start": 27837, - "end": 27841, + "start": 27857, + "end": 27861, "loc": { "start": { "line": 803, @@ -61613,8 +61702,8 @@ }, "property": { "type": "Identifier", - "start": 27842, - "end": 27856, + "start": 27862, + "end": 27877, "loc": { "start": { "line": 803, @@ -61622,11 +61711,11 @@ }, "end": { "line": 803, - "column": 46 + "column": 47 }, - "identifierName": "DOLLY_FORWARDS" + "identifierName": "DOLLY_BACKWARDS" }, - "name": "DOLLY_FORWARDS" + "name": "DOLLY_BACKWARDS" }, "computed": false }, @@ -61634,45 +61723,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27860, - "end": 27888, + "start": 27881, + "end": 27914, "loc": { "start": { "line": 803, - "column": 50 + "column": 51 }, "end": { "line": 803, - "column": 78 + "column": 84 } }, "elements": [ { "type": "MemberExpression", - "start": 27861, - "end": 27872, + "start": 27882, + "end": 27893, "loc": { "start": { "line": 803, - "column": 51 + "column": 52 }, "end": { "line": 803, - "column": 62 + "column": 63 } }, "object": { "type": "Identifier", - "start": 27861, - "end": 27866, + "start": 27882, + "end": 27887, "loc": { "start": { "line": 803, - "column": 51 + "column": 52 }, "end": { "line": 803, - "column": 56 + "column": 57 }, "identifierName": "input" }, @@ -61680,49 +61769,49 @@ }, "property": { "type": "Identifier", - "start": 27867, - "end": 27872, + "start": 27888, + "end": 27893, "loc": { "start": { "line": 803, - "column": 57 + "column": 58 }, "end": { "line": 803, - "column": 62 + "column": 63 }, - "identifierName": "KEY_Z" + "identifierName": "KEY_S" }, - "name": "KEY_Z" + "name": "KEY_S" }, "computed": false }, { "type": "MemberExpression", - "start": 27874, - "end": 27887, + "start": 27895, + "end": 27913, "loc": { "start": { "line": 803, - "column": 64 + "column": 65 }, "end": { "line": 803, - "column": 77 + "column": 83 } }, "object": { "type": "Identifier", - "start": 27874, - "end": 27879, + "start": 27895, + "end": 27900, "loc": { "start": { "line": 803, - "column": 64 + "column": 65 }, "end": { "line": 803, - "column": 69 + "column": 70 }, "identifierName": "input" }, @@ -61730,20 +61819,20 @@ }, "property": { "type": "Identifier", - "start": 27880, - "end": 27887, + "start": 27901, + "end": 27913, "loc": { "start": { "line": 803, - "column": 70 + "column": 71 }, "end": { "line": 803, - "column": 77 + "column": 83 }, - "identifierName": "KEY_ADD" + "identifierName": "KEY_SUBTRACT" }, - "name": "KEY_ADD" + "name": "KEY_SUBTRACT" }, "computed": false } @@ -61753,8 +61842,8 @@ }, { "type": "ExpressionStatement", - "start": 27910, - "end": 27975, + "start": 27936, + "end": 27987, "loc": { "start": { "line": 804, @@ -61762,13 +61851,13 @@ }, "end": { "line": 804, - "column": 85 + "column": 71 } }, "expression": { "type": "AssignmentExpression", - "start": 27910, - "end": 27974, + "start": 27936, + "end": 27986, "loc": { "start": { "line": 804, @@ -61776,14 +61865,14 @@ }, "end": { "line": 804, - "column": 84 + "column": 70 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27910, - "end": 27938, + "start": 27936, + "end": 27961, "loc": { "start": { "line": 804, @@ -61791,13 +61880,13 @@ }, "end": { "line": 804, - "column": 48 + "column": 45 } }, "object": { "type": "Identifier", - "start": 27910, - "end": 27916, + "start": 27936, + "end": 27942, "loc": { "start": { "line": 804, @@ -61813,8 +61902,8 @@ }, "property": { "type": "MemberExpression", - "start": 27917, - "end": 27937, + "start": 27943, + "end": 27960, "loc": { "start": { "line": 804, @@ -61822,13 +61911,13 @@ }, "end": { "line": 804, - "column": 47 + "column": 44 } }, "object": { "type": "ThisExpression", - "start": 27917, - "end": 27921, + "start": 27943, + "end": 27947, "loc": { "start": { "line": 804, @@ -61842,8 +61931,8 @@ }, "property": { "type": "Identifier", - "start": 27922, - "end": 27937, + "start": 27948, + "end": 27960, "loc": { "start": { "line": 804, @@ -61851,11 +61940,11 @@ }, "end": { "line": 804, - "column": 47 + "column": 44 }, - "identifierName": "DOLLY_BACKWARDS" + "identifierName": "ROTATE_X_POS" }, - "name": "DOLLY_BACKWARDS" + "name": "ROTATE_X_POS" }, "computed": false }, @@ -61863,95 +61952,45 @@ }, "right": { "type": "ArrayExpression", - "start": 27941, - "end": 27974, + "start": 27964, + "end": 27986, "loc": { "start": { "line": 804, - "column": 51 + "column": 48 }, "end": { "line": 804, - "column": 84 + "column": 70 } }, "elements": [ { "type": "MemberExpression", - "start": 27942, - "end": 27953, + "start": 27965, + "end": 27985, "loc": { "start": { "line": 804, - "column": 52 - }, - "end": { - "line": 804, - "column": 63 - } - }, - "object": { - "type": "Identifier", - "start": 27942, - "end": 27947, - "loc": { - "start": { - "line": 804, - "column": 52 - }, - "end": { - "line": 804, - "column": 57 - }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 27948, - "end": 27953, - "loc": { - "start": { - "line": 804, - "column": 58 - }, - "end": { - "line": 804, - "column": 63 - }, - "identifierName": "KEY_S" - }, - "name": "KEY_S" - }, - "computed": false - }, - { - "type": "MemberExpression", - "start": 27955, - "end": 27973, - "loc": { - "start": { - "line": 804, - "column": 65 + "column": 49 }, "end": { "line": 804, - "column": 83 + "column": 69 } }, "object": { "type": "Identifier", - "start": 27955, - "end": 27960, + "start": 27965, + "end": 27970, "loc": { "start": { "line": 804, - "column": 65 + "column": 49 }, "end": { "line": 804, - "column": 70 + "column": 54 }, "identifierName": "input" }, @@ -61959,20 +61998,20 @@ }, "property": { "type": "Identifier", - "start": 27961, - "end": 27973, + "start": 27971, + "end": 27985, "loc": { "start": { "line": 804, - "column": 71 + "column": 55 }, "end": { "line": 804, - "column": 83 + "column": 69 }, - "identifierName": "KEY_SUBTRACT" + "identifierName": "KEY_DOWN_ARROW" }, - "name": "KEY_SUBTRACT" + "name": "KEY_DOWN_ARROW" }, "computed": false } @@ -61982,8 +62021,8 @@ }, { "type": "ExpressionStatement", - "start": 27996, - "end": 28047, + "start": 28008, + "end": 28057, "loc": { "start": { "line": 805, @@ -61991,13 +62030,13 @@ }, "end": { "line": 805, - "column": 71 + "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 27996, - "end": 28046, + "start": 28008, + "end": 28056, "loc": { "start": { "line": 805, @@ -62005,14 +62044,14 @@ }, "end": { "line": 805, - "column": 70 + "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 27996, - "end": 28021, + "start": 28008, + "end": 28033, "loc": { "start": { "line": 805, @@ -62025,8 +62064,8 @@ }, "object": { "type": "Identifier", - "start": 27996, - "end": 28002, + "start": 28008, + "end": 28014, "loc": { "start": { "line": 805, @@ -62042,8 +62081,8 @@ }, "property": { "type": "MemberExpression", - "start": 28003, - "end": 28020, + "start": 28015, + "end": 28032, "loc": { "start": { "line": 805, @@ -62056,8 +62095,8 @@ }, "object": { "type": "ThisExpression", - "start": 28003, - "end": 28007, + "start": 28015, + "end": 28019, "loc": { "start": { "line": 805, @@ -62071,8 +62110,8 @@ }, "property": { "type": "Identifier", - "start": 28008, - "end": 28020, + "start": 28020, + "end": 28032, "loc": { "start": { "line": 805, @@ -62082,9 +62121,9 @@ "line": 805, "column": 44 }, - "identifierName": "ROTATE_X_POS" + "identifierName": "ROTATE_X_NEG" }, - "name": "ROTATE_X_POS" + "name": "ROTATE_X_NEG" }, "computed": false }, @@ -62092,8 +62131,8 @@ }, "right": { "type": "ArrayExpression", - "start": 28024, - "end": 28046, + "start": 28036, + "end": 28056, "loc": { "start": { "line": 805, @@ -62101,14 +62140,14 @@ }, "end": { "line": 805, - "column": 70 + "column": 68 } }, "elements": [ { "type": "MemberExpression", - "start": 28025, - "end": 28045, + "start": 28037, + "end": 28055, "loc": { "start": { "line": 805, @@ -62116,13 +62155,13 @@ }, "end": { "line": 805, - "column": 69 + "column": 67 } }, "object": { "type": "Identifier", - "start": 28025, - "end": 28030, + "start": 28037, + "end": 28042, "loc": { "start": { "line": 805, @@ -62138,8 +62177,8 @@ }, "property": { "type": "Identifier", - "start": 28031, - "end": 28045, + "start": 28043, + "end": 28055, "loc": { "start": { "line": 805, @@ -62147,11 +62186,11 @@ }, "end": { "line": 805, - "column": 69 + "column": 67 }, - "identifierName": "KEY_DOWN_ARROW" + "identifierName": "KEY_UP_ARROW" }, - "name": "KEY_DOWN_ARROW" + "name": "KEY_UP_ARROW" }, "computed": false } @@ -62161,8 +62200,8 @@ }, { "type": "ExpressionStatement", - "start": 28068, - "end": 28117, + "start": 28078, + "end": 28142, "loc": { "start": { "line": 806, @@ -62170,13 +62209,13 @@ }, "end": { "line": 806, - "column": 69 + "column": 84 } }, "expression": { "type": "AssignmentExpression", - "start": 28068, - "end": 28116, + "start": 28078, + "end": 28141, "loc": { "start": { "line": 806, @@ -62184,14 +62223,14 @@ }, "end": { "line": 806, - "column": 68 + "column": 83 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28068, - "end": 28093, + "start": 28078, + "end": 28103, "loc": { "start": { "line": 806, @@ -62204,8 +62243,8 @@ }, "object": { "type": "Identifier", - "start": 28068, - "end": 28074, + "start": 28078, + "end": 28084, "loc": { "start": { "line": 806, @@ -62221,8 +62260,8 @@ }, "property": { "type": "MemberExpression", - "start": 28075, - "end": 28092, + "start": 28085, + "end": 28102, "loc": { "start": { "line": 806, @@ -62235,8 +62274,8 @@ }, "object": { "type": "ThisExpression", - "start": 28075, - "end": 28079, + "start": 28085, + "end": 28089, "loc": { "start": { "line": 806, @@ -62250,8 +62289,8 @@ }, "property": { "type": "Identifier", - "start": 28080, - "end": 28092, + "start": 28090, + "end": 28102, "loc": { "start": { "line": 806, @@ -62261,9 +62300,9 @@ "line": 806, "column": 44 }, - "identifierName": "ROTATE_X_NEG" + "identifierName": "ROTATE_Y_POS" }, - "name": "ROTATE_X_NEG" + "name": "ROTATE_Y_POS" }, "computed": false }, @@ -62271,8 +62310,8 @@ }, "right": { "type": "ArrayExpression", - "start": 28096, - "end": 28116, + "start": 28106, + "end": 28141, "loc": { "start": { "line": 806, @@ -62280,14 +62319,14 @@ }, "end": { "line": 806, - "column": 68 + "column": 83 } }, "elements": [ { "type": "MemberExpression", - "start": 28097, - "end": 28115, + "start": 28107, + "end": 28118, "loc": { "start": { "line": 806, @@ -62295,13 +62334,13 @@ }, "end": { "line": 806, - "column": 67 + "column": 60 } }, "object": { "type": "Identifier", - "start": 28097, - "end": 28102, + "start": 28107, + "end": 28112, "loc": { "start": { "line": 806, @@ -62317,20 +62356,70 @@ }, "property": { "type": "Identifier", - "start": 28103, - "end": 28115, + "start": 28113, + "end": 28118, "loc": { "start": { "line": 806, "column": 55 }, + "end": { + "line": 806, + "column": 60 + }, + "identifierName": "KEY_A" + }, + "name": "KEY_A" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 28120, + "end": 28140, + "loc": { + "start": { + "line": 806, + "column": 62 + }, + "end": { + "line": 806, + "column": 82 + } + }, + "object": { + "type": "Identifier", + "start": 28120, + "end": 28125, + "loc": { + "start": { + "line": 806, + "column": 62 + }, "end": { "line": 806, "column": 67 }, - "identifierName": "KEY_UP_ARROW" + "identifierName": "input" }, - "name": "KEY_UP_ARROW" + "name": "input" + }, + "property": { + "type": "Identifier", + "start": 28126, + "end": 28140, + "loc": { + "start": { + "line": 806, + "column": 68 + }, + "end": { + "line": 806, + "column": 82 + }, + "identifierName": "KEY_LEFT_ARROW" + }, + "name": "KEY_LEFT_ARROW" }, "computed": false } @@ -62340,8 +62429,8 @@ }, { "type": "ExpressionStatement", - "start": 28138, - "end": 28202, + "start": 28163, + "end": 28228, "loc": { "start": { "line": 807, @@ -62349,13 +62438,13 @@ }, "end": { "line": 807, - "column": 84 + "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 28138, - "end": 28201, + "start": 28163, + "end": 28227, "loc": { "start": { "line": 807, @@ -62363,14 +62452,14 @@ }, "end": { "line": 807, - "column": 83 + "column": 84 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28138, - "end": 28163, + "start": 28163, + "end": 28188, "loc": { "start": { "line": 807, @@ -62383,8 +62472,8 @@ }, "object": { "type": "Identifier", - "start": 28138, - "end": 28144, + "start": 28163, + "end": 28169, "loc": { "start": { "line": 807, @@ -62400,8 +62489,8 @@ }, "property": { "type": "MemberExpression", - "start": 28145, - "end": 28162, + "start": 28170, + "end": 28187, "loc": { "start": { "line": 807, @@ -62414,8 +62503,8 @@ }, "object": { "type": "ThisExpression", - "start": 28145, - "end": 28149, + "start": 28170, + "end": 28174, "loc": { "start": { "line": 807, @@ -62429,8 +62518,8 @@ }, "property": { "type": "Identifier", - "start": 28150, - "end": 28162, + "start": 28175, + "end": 28187, "loc": { "start": { "line": 807, @@ -62440,9 +62529,9 @@ "line": 807, "column": 44 }, - "identifierName": "ROTATE_Y_POS" + "identifierName": "ROTATE_Y_NEG" }, - "name": "ROTATE_Y_POS" + "name": "ROTATE_Y_NEG" }, "computed": false }, @@ -62450,8 +62539,8 @@ }, "right": { "type": "ArrayExpression", - "start": 28166, - "end": 28201, + "start": 28191, + "end": 28227, "loc": { "start": { "line": 807, @@ -62459,14 +62548,14 @@ }, "end": { "line": 807, - "column": 83 + "column": 84 } }, "elements": [ { "type": "MemberExpression", - "start": 28167, - "end": 28178, + "start": 28192, + "end": 28203, "loc": { "start": { "line": 807, @@ -62479,8 +62568,8 @@ }, "object": { "type": "Identifier", - "start": 28167, - "end": 28172, + "start": 28192, + "end": 28197, "loc": { "start": { "line": 807, @@ -62496,8 +62585,8 @@ }, "property": { "type": "Identifier", - "start": 28173, - "end": 28178, + "start": 28198, + "end": 28203, "loc": { "start": { "line": 807, @@ -62507,16 +62596,16 @@ "line": 807, "column": 60 }, - "identifierName": "KEY_A" + "identifierName": "KEY_E" }, - "name": "KEY_A" + "name": "KEY_E" }, "computed": false }, { "type": "MemberExpression", - "start": 28180, - "end": 28200, + "start": 28205, + "end": 28226, "loc": { "start": { "line": 807, @@ -62524,13 +62613,13 @@ }, "end": { "line": 807, - "column": 82 + "column": 83 } }, "object": { "type": "Identifier", - "start": 28180, - "end": 28185, + "start": 28205, + "end": 28210, "loc": { "start": { "line": 807, @@ -62546,8 +62635,8 @@ }, "property": { "type": "Identifier", - "start": 28186, - "end": 28200, + "start": 28211, + "end": 28226, "loc": { "start": { "line": 807, @@ -62555,11 +62644,11 @@ }, "end": { "line": 807, - "column": 82 + "column": 83 }, - "identifierName": "KEY_LEFT_ARROW" + "identifierName": "KEY_RIGHT_ARROW" }, - "name": "KEY_LEFT_ARROW" + "name": "KEY_RIGHT_ARROW" }, "computed": false } @@ -62569,8 +62658,8 @@ }, { "type": "ExpressionStatement", - "start": 28223, - "end": 28288, + "start": 28249, + "end": 28298, "loc": { "start": { "line": 808, @@ -62578,13 +62667,13 @@ }, "end": { "line": 808, - "column": 85 + "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 28223, - "end": 28287, + "start": 28249, + "end": 28297, "loc": { "start": { "line": 808, @@ -62592,14 +62681,14 @@ }, "end": { "line": 808, - "column": 84 + "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28223, - "end": 28248, + "start": 28249, + "end": 28277, "loc": { "start": { "line": 808, @@ -62607,13 +62696,13 @@ }, "end": { "line": 808, - "column": 45 + "column": 48 } }, "object": { "type": "Identifier", - "start": 28223, - "end": 28229, + "start": 28249, + "end": 28255, "loc": { "start": { "line": 808, @@ -62629,8 +62718,8 @@ }, "property": { "type": "MemberExpression", - "start": 28230, - "end": 28247, + "start": 28256, + "end": 28276, "loc": { "start": { "line": 808, @@ -62638,13 +62727,13 @@ }, "end": { "line": 808, - "column": 44 + "column": 47 } }, "object": { "type": "ThisExpression", - "start": 28230, - "end": 28234, + "start": 28256, + "end": 28260, "loc": { "start": { "line": 808, @@ -62658,8 +62747,8 @@ }, "property": { "type": "Identifier", - "start": 28235, - "end": 28247, + "start": 28261, + "end": 28276, "loc": { "start": { "line": 808, @@ -62667,11 +62756,11 @@ }, "end": { "line": 808, - "column": 44 + "column": 47 }, - "identifierName": "ROTATE_Y_NEG" + "identifierName": "AXIS_VIEW_RIGHT" }, - "name": "ROTATE_Y_NEG" + "name": "AXIS_VIEW_RIGHT" }, "computed": false }, @@ -62679,45 +62768,45 @@ }, "right": { "type": "ArrayExpression", - "start": 28251, - "end": 28287, + "start": 28280, + "end": 28297, "loc": { "start": { "line": 808, - "column": 48 + "column": 51 }, "end": { "line": 808, - "column": 84 + "column": 68 } }, "elements": [ { "type": "MemberExpression", - "start": 28252, - "end": 28263, + "start": 28281, + "end": 28296, "loc": { "start": { "line": 808, - "column": 49 + "column": 52 }, "end": { "line": 808, - "column": 60 + "column": 67 } }, "object": { "type": "Identifier", - "start": 28252, - "end": 28257, + "start": 28281, + "end": 28286, "loc": { "start": { "line": 808, - "column": 49 + "column": 52 }, "end": { "line": 808, - "column": 54 + "column": 57 }, "identifierName": "input" }, @@ -62725,70 +62814,20 @@ }, "property": { "type": "Identifier", - "start": 28258, - "end": 28263, - "loc": { - "start": { - "line": 808, - "column": 55 - }, - "end": { - "line": 808, - "column": 60 - }, - "identifierName": "KEY_E" - }, - "name": "KEY_E" - }, - "computed": false - }, - { - "type": "MemberExpression", - "start": 28265, - "end": 28286, - "loc": { - "start": { - "line": 808, - "column": 62 - }, - "end": { - "line": 808, - "column": 83 - } - }, - "object": { - "type": "Identifier", - "start": 28265, - "end": 28270, + "start": 28287, + "end": 28296, "loc": { "start": { "line": 808, - "column": 62 + "column": 58 }, "end": { "line": 808, "column": 67 }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 28271, - "end": 28286, - "loc": { - "start": { - "line": 808, - "column": 68 - }, - "end": { - "line": 808, - "column": 83 - }, - "identifierName": "KEY_RIGHT_ARROW" + "identifierName": "KEY_NUM_1" }, - "name": "KEY_RIGHT_ARROW" + "name": "KEY_NUM_1" }, "computed": false } @@ -62798,8 +62837,8 @@ }, { "type": "ExpressionStatement", - "start": 28309, - "end": 28358, + "start": 28319, + "end": 28367, "loc": { "start": { "line": 809, @@ -62807,13 +62846,13 @@ }, "end": { "line": 809, - "column": 69 + "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 28309, - "end": 28357, + "start": 28319, + "end": 28366, "loc": { "start": { "line": 809, @@ -62821,14 +62860,14 @@ }, "end": { "line": 809, - "column": 68 + "column": 67 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28309, - "end": 28337, + "start": 28319, + "end": 28346, "loc": { "start": { "line": 809, @@ -62836,13 +62875,13 @@ }, "end": { "line": 809, - "column": 48 + "column": 47 } }, "object": { "type": "Identifier", - "start": 28309, - "end": 28315, + "start": 28319, + "end": 28325, "loc": { "start": { "line": 809, @@ -62858,8 +62897,8 @@ }, "property": { "type": "MemberExpression", - "start": 28316, - "end": 28336, + "start": 28326, + "end": 28345, "loc": { "start": { "line": 809, @@ -62867,13 +62906,13 @@ }, "end": { "line": 809, - "column": 47 + "column": 46 } }, "object": { "type": "ThisExpression", - "start": 28316, - "end": 28320, + "start": 28326, + "end": 28330, "loc": { "start": { "line": 809, @@ -62887,8 +62926,8 @@ }, "property": { "type": "Identifier", - "start": 28321, - "end": 28336, + "start": 28331, + "end": 28345, "loc": { "start": { "line": 809, @@ -62896,11 +62935,11 @@ }, "end": { "line": 809, - "column": 47 + "column": 46 }, - "identifierName": "AXIS_VIEW_RIGHT" + "identifierName": "AXIS_VIEW_BACK" }, - "name": "AXIS_VIEW_RIGHT" + "name": "AXIS_VIEW_BACK" }, "computed": false }, @@ -62908,45 +62947,45 @@ }, "right": { "type": "ArrayExpression", - "start": 28340, - "end": 28357, + "start": 28349, + "end": 28366, "loc": { "start": { "line": 809, - "column": 51 + "column": 50 }, "end": { "line": 809, - "column": 68 + "column": 67 } }, "elements": [ { "type": "MemberExpression", - "start": 28341, - "end": 28356, + "start": 28350, + "end": 28365, "loc": { "start": { "line": 809, - "column": 52 + "column": 51 }, "end": { "line": 809, - "column": 67 + "column": 66 } }, "object": { "type": "Identifier", - "start": 28341, - "end": 28346, + "start": 28350, + "end": 28355, "loc": { "start": { "line": 809, - "column": 52 + "column": 51 }, "end": { "line": 809, - "column": 57 + "column": 56 }, "identifierName": "input" }, @@ -62954,20 +62993,20 @@ }, "property": { "type": "Identifier", - "start": 28347, - "end": 28356, + "start": 28356, + "end": 28365, "loc": { "start": { "line": 809, - "column": 58 + "column": 57 }, "end": { "line": 809, - "column": 67 + "column": 66 }, - "identifierName": "KEY_NUM_1" + "identifierName": "KEY_NUM_2" }, - "name": "KEY_NUM_1" + "name": "KEY_NUM_2" }, "computed": false } @@ -62977,8 +63016,8 @@ }, { "type": "ExpressionStatement", - "start": 28379, - "end": 28427, + "start": 28388, + "end": 28436, "loc": { "start": { "line": 810, @@ -62991,8 +63030,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 28379, - "end": 28426, + "start": 28388, + "end": 28435, "loc": { "start": { "line": 810, @@ -63006,8 +63045,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 28379, - "end": 28406, + "start": 28388, + "end": 28415, "loc": { "start": { "line": 810, @@ -63020,8 +63059,8 @@ }, "object": { "type": "Identifier", - "start": 28379, - "end": 28385, + "start": 28388, + "end": 28394, "loc": { "start": { "line": 810, @@ -63037,8 +63076,8 @@ }, "property": { "type": "MemberExpression", - "start": 28386, - "end": 28405, + "start": 28395, + "end": 28414, "loc": { "start": { "line": 810, @@ -63051,8 +63090,8 @@ }, "object": { "type": "ThisExpression", - "start": 28386, - "end": 28390, + "start": 28395, + "end": 28399, "loc": { "start": { "line": 810, @@ -63066,8 +63105,8 @@ }, "property": { "type": "Identifier", - "start": 28391, - "end": 28405, + "start": 28400, + "end": 28414, "loc": { "start": { "line": 810, @@ -63077,9 +63116,9 @@ "line": 810, "column": 46 }, - "identifierName": "AXIS_VIEW_BACK" + "identifierName": "AXIS_VIEW_LEFT" }, - "name": "AXIS_VIEW_BACK" + "name": "AXIS_VIEW_LEFT" }, "computed": false }, @@ -63087,8 +63126,8 @@ }, "right": { "type": "ArrayExpression", - "start": 28409, - "end": 28426, + "start": 28418, + "end": 28435, "loc": { "start": { "line": 810, @@ -63102,8 +63141,8 @@ "elements": [ { "type": "MemberExpression", - "start": 28410, - "end": 28425, + "start": 28419, + "end": 28434, "loc": { "start": { "line": 810, @@ -63116,8 +63155,8 @@ }, "object": { "type": "Identifier", - "start": 28410, - "end": 28415, + "start": 28419, + "end": 28424, "loc": { "start": { "line": 810, @@ -63133,8 +63172,8 @@ }, "property": { "type": "Identifier", - "start": 28416, - "end": 28425, + "start": 28425, + "end": 28434, "loc": { "start": { "line": 810, @@ -63144,9 +63183,9 @@ "line": 810, "column": 66 }, - "identifierName": "KEY_NUM_2" + "identifierName": "KEY_NUM_3" }, - "name": "KEY_NUM_2" + "name": "KEY_NUM_3" }, "computed": false } @@ -63156,8 +63195,8 @@ }, { "type": "ExpressionStatement", - "start": 28448, - "end": 28496, + "start": 28457, + "end": 28506, "loc": { "start": { "line": 811, @@ -63165,13 +63204,13 @@ }, "end": { "line": 811, - "column": 68 + "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 28448, - "end": 28495, + "start": 28457, + "end": 28505, "loc": { "start": { "line": 811, @@ -63179,14 +63218,14 @@ }, "end": { "line": 811, - "column": 67 + "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28448, - "end": 28475, + "start": 28457, + "end": 28485, "loc": { "start": { "line": 811, @@ -63194,13 +63233,13 @@ }, "end": { "line": 811, - "column": 47 + "column": 48 } }, "object": { "type": "Identifier", - "start": 28448, - "end": 28454, + "start": 28457, + "end": 28463, "loc": { "start": { "line": 811, @@ -63216,8 +63255,8 @@ }, "property": { "type": "MemberExpression", - "start": 28455, - "end": 28474, + "start": 28464, + "end": 28484, "loc": { "start": { "line": 811, @@ -63225,13 +63264,13 @@ }, "end": { "line": 811, - "column": 46 + "column": 47 } }, "object": { "type": "ThisExpression", - "start": 28455, - "end": 28459, + "start": 28464, + "end": 28468, "loc": { "start": { "line": 811, @@ -63245,8 +63284,8 @@ }, "property": { "type": "Identifier", - "start": 28460, - "end": 28474, + "start": 28469, + "end": 28484, "loc": { "start": { "line": 811, @@ -63254,11 +63293,11 @@ }, "end": { "line": 811, - "column": 46 + "column": 47 }, - "identifierName": "AXIS_VIEW_LEFT" + "identifierName": "AXIS_VIEW_FRONT" }, - "name": "AXIS_VIEW_LEFT" + "name": "AXIS_VIEW_FRONT" }, "computed": false }, @@ -63266,45 +63305,45 @@ }, "right": { "type": "ArrayExpression", - "start": 28478, - "end": 28495, + "start": 28488, + "end": 28505, "loc": { "start": { "line": 811, - "column": 50 + "column": 51 }, "end": { "line": 811, - "column": 67 + "column": 68 } }, "elements": [ { "type": "MemberExpression", - "start": 28479, - "end": 28494, + "start": 28489, + "end": 28504, "loc": { "start": { "line": 811, - "column": 51 + "column": 52 }, "end": { "line": 811, - "column": 66 + "column": 67 } }, "object": { "type": "Identifier", - "start": 28479, - "end": 28484, + "start": 28489, + "end": 28494, "loc": { "start": { "line": 811, - "column": 51 + "column": 52 }, "end": { "line": 811, - "column": 56 + "column": 57 }, "identifierName": "input" }, @@ -63312,20 +63351,20 @@ }, "property": { "type": "Identifier", - "start": 28485, - "end": 28494, + "start": 28495, + "end": 28504, "loc": { "start": { "line": 811, - "column": 57 + "column": 58 }, "end": { "line": 811, - "column": 66 + "column": 67 }, - "identifierName": "KEY_NUM_3" + "identifierName": "KEY_NUM_4" }, - "name": "KEY_NUM_3" + "name": "KEY_NUM_4" }, "computed": false } @@ -63335,8 +63374,8 @@ }, { "type": "ExpressionStatement", - "start": 28517, - "end": 28566, + "start": 28527, + "end": 28574, "loc": { "start": { "line": 812, @@ -63344,13 +63383,13 @@ }, "end": { "line": 812, - "column": 69 + "column": 67 } }, "expression": { "type": "AssignmentExpression", - "start": 28517, - "end": 28565, + "start": 28527, + "end": 28573, "loc": { "start": { "line": 812, @@ -63358,14 +63397,14 @@ }, "end": { "line": 812, - "column": 68 + "column": 66 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28517, - "end": 28545, + "start": 28527, + "end": 28553, "loc": { "start": { "line": 812, @@ -63373,13 +63412,13 @@ }, "end": { "line": 812, - "column": 48 + "column": 46 } }, "object": { "type": "Identifier", - "start": 28517, - "end": 28523, + "start": 28527, + "end": 28533, "loc": { "start": { "line": 812, @@ -63395,8 +63434,8 @@ }, "property": { "type": "MemberExpression", - "start": 28524, - "end": 28544, + "start": 28534, + "end": 28552, "loc": { "start": { "line": 812, @@ -63404,13 +63443,13 @@ }, "end": { "line": 812, - "column": 47 + "column": 45 } }, "object": { "type": "ThisExpression", - "start": 28524, - "end": 28528, + "start": 28534, + "end": 28538, "loc": { "start": { "line": 812, @@ -63424,8 +63463,8 @@ }, "property": { "type": "Identifier", - "start": 28529, - "end": 28544, + "start": 28539, + "end": 28552, "loc": { "start": { "line": 812, @@ -63433,11 +63472,11 @@ }, "end": { "line": 812, - "column": 47 + "column": 45 }, - "identifierName": "AXIS_VIEW_FRONT" + "identifierName": "AXIS_VIEW_TOP" }, - "name": "AXIS_VIEW_FRONT" + "name": "AXIS_VIEW_TOP" }, "computed": false }, @@ -63445,45 +63484,45 @@ }, "right": { "type": "ArrayExpression", - "start": 28548, - "end": 28565, + "start": 28556, + "end": 28573, "loc": { "start": { "line": 812, - "column": 51 + "column": 49 }, "end": { "line": 812, - "column": 68 + "column": 66 } }, "elements": [ { "type": "MemberExpression", - "start": 28549, - "end": 28564, + "start": 28557, + "end": 28572, "loc": { "start": { "line": 812, - "column": 52 + "column": 50 }, "end": { "line": 812, - "column": 67 + "column": 65 } }, "object": { "type": "Identifier", - "start": 28549, - "end": 28554, + "start": 28557, + "end": 28562, "loc": { "start": { "line": 812, - "column": 52 + "column": 50 }, "end": { "line": 812, - "column": 57 + "column": 55 }, "identifierName": "input" }, @@ -63491,20 +63530,20 @@ }, "property": { "type": "Identifier", - "start": 28555, - "end": 28564, + "start": 28563, + "end": 28572, "loc": { "start": { "line": 812, - "column": 58 + "column": 56 }, "end": { "line": 812, - "column": 67 + "column": 65 }, - "identifierName": "KEY_NUM_4" + "identifierName": "KEY_NUM_5" }, - "name": "KEY_NUM_4" + "name": "KEY_NUM_5" }, "computed": false } @@ -63514,8 +63553,8 @@ }, { "type": "ExpressionStatement", - "start": 28587, - "end": 28634, + "start": 28595, + "end": 28645, "loc": { "start": { "line": 813, @@ -63523,13 +63562,13 @@ }, "end": { "line": 813, - "column": 67 + "column": 70 } }, "expression": { "type": "AssignmentExpression", - "start": 28587, - "end": 28633, + "start": 28595, + "end": 28644, "loc": { "start": { "line": 813, @@ -63537,14 +63576,14 @@ }, "end": { "line": 813, - "column": 66 + "column": 69 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28587, - "end": 28613, + "start": 28595, + "end": 28624, "loc": { "start": { "line": 813, @@ -63552,13 +63591,13 @@ }, "end": { "line": 813, - "column": 46 + "column": 49 } }, "object": { "type": "Identifier", - "start": 28587, - "end": 28593, + "start": 28595, + "end": 28601, "loc": { "start": { "line": 813, @@ -63574,8 +63613,8 @@ }, "property": { "type": "MemberExpression", - "start": 28594, - "end": 28612, + "start": 28602, + "end": 28623, "loc": { "start": { "line": 813, @@ -63583,13 +63622,13 @@ }, "end": { "line": 813, - "column": 45 + "column": 48 } }, "object": { "type": "ThisExpression", - "start": 28594, - "end": 28598, + "start": 28602, + "end": 28606, "loc": { "start": { "line": 813, @@ -63603,8 +63642,8 @@ }, "property": { "type": "Identifier", - "start": 28599, - "end": 28612, + "start": 28607, + "end": 28623, "loc": { "start": { "line": 813, @@ -63612,185 +63651,6 @@ }, "end": { "line": 813, - "column": 45 - }, - "identifierName": "AXIS_VIEW_TOP" - }, - "name": "AXIS_VIEW_TOP" - }, - "computed": false - }, - "computed": true - }, - "right": { - "type": "ArrayExpression", - "start": 28616, - "end": 28633, - "loc": { - "start": { - "line": 813, - "column": 49 - }, - "end": { - "line": 813, - "column": 66 - } - }, - "elements": [ - { - "type": "MemberExpression", - "start": 28617, - "end": 28632, - "loc": { - "start": { - "line": 813, - "column": 50 - }, - "end": { - "line": 813, - "column": 65 - } - }, - "object": { - "type": "Identifier", - "start": 28617, - "end": 28622, - "loc": { - "start": { - "line": 813, - "column": 50 - }, - "end": { - "line": 813, - "column": 55 - }, - "identifierName": "input" - }, - "name": "input" - }, - "property": { - "type": "Identifier", - "start": 28623, - "end": 28632, - "loc": { - "start": { - "line": 813, - "column": 56 - }, - "end": { - "line": 813, - "column": 65 - }, - "identifierName": "KEY_NUM_5" - }, - "name": "KEY_NUM_5" - }, - "computed": false - } - ] - } - } - }, - { - "type": "ExpressionStatement", - "start": 28655, - "end": 28705, - "loc": { - "start": { - "line": 814, - "column": 20 - }, - "end": { - "line": 814, - "column": 70 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 28655, - "end": 28704, - "loc": { - "start": { - "line": 814, - "column": 20 - }, - "end": { - "line": 814, - "column": 69 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 28655, - "end": 28684, - "loc": { - "start": { - "line": 814, - "column": 20 - }, - "end": { - "line": 814, - "column": 49 - } - }, - "object": { - "type": "Identifier", - "start": 28655, - "end": 28661, - "loc": { - "start": { - "line": 814, - "column": 20 - }, - "end": { - "line": 814, - "column": 26 - }, - "identifierName": "keyMap" - }, - "name": "keyMap" - }, - "property": { - "type": "MemberExpression", - "start": 28662, - "end": 28683, - "loc": { - "start": { - "line": 814, - "column": 27 - }, - "end": { - "line": 814, - "column": 48 - } - }, - "object": { - "type": "ThisExpression", - "start": 28662, - "end": 28666, - "loc": { - "start": { - "line": 814, - "column": 27 - }, - "end": { - "line": 814, - "column": 31 - } - } - }, - "property": { - "type": "Identifier", - "start": 28667, - "end": 28683, - "loc": { - "start": { - "line": 814, - "column": 32 - }, - "end": { - "line": 814, "column": 48 }, "identifierName": "AXIS_VIEW_BOTTOM" @@ -63803,44 +63663,44 @@ }, "right": { "type": "ArrayExpression", - "start": 28687, - "end": 28704, + "start": 28627, + "end": 28644, "loc": { "start": { - "line": 814, + "line": 813, "column": 52 }, "end": { - "line": 814, + "line": 813, "column": 69 } }, "elements": [ { "type": "MemberExpression", - "start": 28688, - "end": 28703, + "start": 28628, + "end": 28643, "loc": { "start": { - "line": 814, + "line": 813, "column": 53 }, "end": { - "line": 814, + "line": 813, "column": 68 } }, "object": { "type": "Identifier", - "start": 28688, - "end": 28693, + "start": 28628, + "end": 28633, "loc": { "start": { - "line": 814, + "line": 813, "column": 53 }, "end": { - "line": 814, + "line": 813, "column": 58 }, "identifierName": "input" @@ -63849,15 +63709,15 @@ }, "property": { "type": "Identifier", - "start": 28694, - "end": 28703, + "start": 28634, + "end": 28643, "loc": { "start": { - "line": 814, + "line": 813, "column": 59 }, "end": { - "line": 814, + "line": 813, "column": 68 }, "identifierName": "KEY_NUM_6" @@ -63872,15 +63732,15 @@ }, { "type": "BreakStatement", - "start": 28726, - "end": 28732, + "start": 28666, + "end": 28672, "loc": { "start": { - "line": 815, + "line": 814, "column": 20 }, "end": { - "line": 815, + "line": 814, "column": 26 } }, @@ -63889,15 +63749,15 @@ ], "test": { "type": "StringLiteral", - "start": 27460, - "end": 27468, + "start": 27400, + "end": 27408, "loc": { "start": { - "line": 796, + "line": 795, "column": 21 }, "end": { - "line": 796, + "line": 795, "column": 29 } }, @@ -63912,73 +63772,73 @@ }, { "type": "ExpressionStatement", - "start": 28760, - "end": 28782, + "start": 28700, + "end": 28722, "loc": { "start": { - "line": 818, + "line": 817, "column": 12 }, "end": { - "line": 818, + "line": 817, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 28760, - "end": 28781, + "start": 28700, + "end": 28721, "loc": { "start": { - "line": 818, + "line": 817, "column": 12 }, "end": { - "line": 818, + "line": 817, "column": 33 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28760, - "end": 28772, + "start": 28700, + "end": 28712, "loc": { "start": { - "line": 818, + "line": 817, "column": 12 }, "end": { - "line": 818, + "line": 817, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 28760, - "end": 28764, + "start": 28700, + "end": 28704, "loc": { "start": { - "line": 818, + "line": 817, "column": 12 }, "end": { - "line": 818, + "line": 817, "column": 16 } } }, "property": { "type": "Identifier", - "start": 28765, - "end": 28772, + "start": 28705, + "end": 28712, "loc": { "start": { - "line": 818, + "line": 817, "column": 17 }, "end": { - "line": 818, + "line": 817, "column": 24 }, "identifierName": "_keyMap" @@ -63989,15 +63849,15 @@ }, "right": { "type": "Identifier", - "start": 28775, - "end": 28781, + "start": 28715, + "end": 28721, "loc": { "start": { - "line": 818, + "line": 817, "column": 27 }, "end": { - "line": 818, + "line": 817, "column": 33 }, "identifierName": "keyMap" @@ -64011,59 +63871,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 28798, - "end": 28878, + "start": 28738, + "end": 28818, "loc": { "start": { - "line": 819, + "line": 818, "column": 15 }, "end": { - "line": 822, + "line": 821, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 28812, - "end": 28833, + "start": 28752, + "end": 28773, "loc": { "start": { - "line": 820, + "line": 819, "column": 12 }, "end": { - "line": 820, + "line": 819, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 28818, - "end": 28832, + "start": 28758, + "end": 28772, "loc": { "start": { - "line": 820, + "line": 819, "column": 18 }, "end": { - "line": 820, + "line": 819, "column": 32 } }, "id": { "type": "Identifier", - "start": 28818, - "end": 28824, + "start": 28758, + "end": 28764, "loc": { "start": { - "line": 820, + "line": 819, "column": 18 }, "end": { - "line": 820, + "line": 819, "column": 24 }, "identifierName": "keyMap" @@ -64072,15 +63932,15 @@ }, "init": { "type": "Identifier", - "start": 28827, - "end": 28832, + "start": 28767, + "end": 28772, "loc": { "start": { - "line": 820, + "line": 819, "column": 27 }, "end": { - "line": 820, + "line": 819, "column": 32 }, "identifierName": "value" @@ -64093,73 +63953,73 @@ }, { "type": "ExpressionStatement", - "start": 28846, - "end": 28868, + "start": 28786, + "end": 28808, "loc": { "start": { - "line": 821, + "line": 820, "column": 12 }, "end": { - "line": 821, + "line": 820, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 28846, - "end": 28867, + "start": 28786, + "end": 28807, "loc": { "start": { - "line": 821, + "line": 820, "column": 12 }, "end": { - "line": 821, + "line": 820, "column": 33 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 28846, - "end": 28858, + "start": 28786, + "end": 28798, "loc": { "start": { - "line": 821, + "line": 820, "column": 12 }, "end": { - "line": 821, + "line": 820, "column": 24 } }, "object": { "type": "ThisExpression", - "start": 28846, - "end": 28850, + "start": 28786, + "end": 28790, "loc": { "start": { - "line": 821, + "line": 820, "column": 12 }, "end": { - "line": 821, + "line": 820, "column": 16 } } }, "property": { "type": "Identifier", - "start": 28851, - "end": 28858, + "start": 28791, + "end": 28798, "loc": { "start": { - "line": 821, + "line": 820, "column": 17 }, "end": { - "line": 821, + "line": 820, "column": 24 }, "identifierName": "_keyMap" @@ -64170,15 +64030,15 @@ }, "right": { "type": "Identifier", - "start": 28861, - "end": 28867, + "start": 28801, + "end": 28807, "loc": { "start": { - "line": 821, + "line": 820, "column": 27 }, "end": { - "line": 821, + "line": 820, "column": 33 }, "identifierName": "keyMap" @@ -64199,15 +64059,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 25417, - "end": 25756, + "start": 25357, + "end": 25696, "loc": { "start": { - "line": 756, + "line": 755, "column": 4 }, "end": { - "line": 763, + "line": 762, "column": 7 } } @@ -64217,15 +64077,15 @@ { "type": "CommentBlock", "value": "*\n * Gets custom mappings of keys to {@link CameraControl} actions.\n *\n * @returns {{Number:Number}} Current key mappings.\n ", - "start": 28890, - "end": 29034, + "start": 28830, + "end": 28974, "loc": { "start": { - "line": 825, + "line": 824, "column": 4 }, "end": { - "line": 829, + "line": 828, "column": 7 } } @@ -64234,15 +64094,15 @@ }, { "type": "ClassMethod", - "start": 29039, - "end": 29088, + "start": 28979, + "end": 29028, "loc": { "start": { - "line": 830, + "line": 829, "column": 4 }, "end": { - "line": 832, + "line": 831, "column": 5 } }, @@ -64250,15 +64110,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 29043, - "end": 29049, + "start": 28983, + "end": 28989, "loc": { "start": { - "line": 830, + "line": 829, "column": 8 }, "end": { - "line": 830, + "line": 829, "column": 14 }, "identifierName": "keyMap" @@ -64273,73 +64133,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 29052, - "end": 29088, + "start": 28992, + "end": 29028, "loc": { "start": { - "line": 830, + "line": 829, "column": 17 }, "end": { - "line": 832, + "line": 831, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 29062, - "end": 29082, + "start": 29002, + "end": 29022, "loc": { "start": { - "line": 831, + "line": 830, "column": 8 }, "end": { - "line": 831, + "line": 830, "column": 28 } }, "argument": { "type": "MemberExpression", - "start": 29069, - "end": 29081, + "start": 29009, + "end": 29021, "loc": { "start": { - "line": 831, + "line": 830, "column": 15 }, "end": { - "line": 831, + "line": 830, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 29069, - "end": 29073, + "start": 29009, + "end": 29013, "loc": { "start": { - "line": 831, + "line": 830, "column": 15 }, "end": { - "line": 831, + "line": 830, "column": 19 } } }, "property": { "type": "Identifier", - "start": 29074, - "end": 29081, + "start": 29014, + "end": 29021, "loc": { "start": { - "line": 831, + "line": 830, "column": 20 }, "end": { - "line": 831, + "line": 830, "column": 27 }, "identifierName": "_keyMap" @@ -64357,15 +64217,15 @@ { "type": "CommentBlock", "value": "*\n * Gets custom mappings of keys to {@link CameraControl} actions.\n *\n * @returns {{Number:Number}} Current key mappings.\n ", - "start": 28890, - "end": 29034, + "start": 28830, + "end": 28974, "loc": { "start": { - "line": 825, + "line": 824, "column": 4 }, "end": { - "line": 829, + "line": 828, "column": 7 } } @@ -64375,15 +64235,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true if any keys configured for the given action are down.\n * @param action\n * @param keyDownMap\n * @private\n ", - "start": 29094, - "end": 29241, + "start": 29034, + "end": 29181, "loc": { "start": { - "line": 834, + "line": 833, "column": 4 }, "end": { - "line": 839, + "line": 838, "column": 7 } } @@ -64392,15 +64252,15 @@ }, { "type": "ClassMethod", - "start": 29246, - "end": 29683, + "start": 29186, + "end": 29623, "loc": { "start": { - "line": 840, + "line": 839, "column": 4 }, "end": { - "line": 855, + "line": 854, "column": 5 } }, @@ -64408,15 +64268,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 29246, - "end": 29265, + "start": 29186, + "end": 29205, "loc": { "start": { - "line": 840, + "line": 839, "column": 4 }, "end": { - "line": 840, + "line": 839, "column": 23 }, "identifierName": "_isKeyDownForAction" @@ -64432,15 +64292,15 @@ "params": [ { "type": "Identifier", - "start": 29266, - "end": 29272, + "start": 29206, + "end": 29212, "loc": { "start": { - "line": 840, + "line": 839, "column": 24 }, "end": { - "line": 840, + "line": 839, "column": 30 }, "identifierName": "action" @@ -64449,15 +64309,15 @@ }, { "type": "Identifier", - "start": 29274, - "end": 29284, + "start": 29214, + "end": 29224, "loc": { "start": { - "line": 840, + "line": 839, "column": 32 }, "end": { - "line": 840, + "line": 839, "column": 42 }, "identifierName": "keyDownMap" @@ -64467,59 +64327,59 @@ ], "body": { "type": "BlockStatement", - "start": 29286, - "end": 29683, + "start": 29226, + "end": 29623, "loc": { "start": { - "line": 840, + "line": 839, "column": 44 }, "end": { - "line": 855, + "line": 854, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 29296, - "end": 29330, + "start": 29236, + "end": 29270, "loc": { "start": { - "line": 841, + "line": 840, "column": 8 }, "end": { - "line": 841, + "line": 840, "column": 42 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29302, - "end": 29329, + "start": 29242, + "end": 29269, "loc": { "start": { - "line": 841, + "line": 840, "column": 14 }, "end": { - "line": 841, + "line": 840, "column": 41 } }, "id": { "type": "Identifier", - "start": 29302, - "end": 29306, + "start": 29242, + "end": 29246, "loc": { "start": { - "line": 841, + "line": 840, "column": 14 }, "end": { - "line": 841, + "line": 840, "column": 18 }, "identifierName": "keys" @@ -64528,58 +64388,58 @@ }, "init": { "type": "MemberExpression", - "start": 29309, - "end": 29329, + "start": 29249, + "end": 29269, "loc": { "start": { - "line": 841, + "line": 840, "column": 21 }, "end": { - "line": 841, + "line": 840, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 29309, - "end": 29321, + "start": 29249, + "end": 29261, "loc": { "start": { - "line": 841, + "line": 840, "column": 21 }, "end": { - "line": 841, + "line": 840, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 29309, - "end": 29313, + "start": 29249, + "end": 29253, "loc": { "start": { - "line": 841, + "line": 840, "column": 21 }, "end": { - "line": 841, + "line": 840, "column": 25 } } }, "property": { "type": "Identifier", - "start": 29314, - "end": 29321, + "start": 29254, + "end": 29261, "loc": { "start": { - "line": 841, + "line": 840, "column": 26 }, "end": { - "line": 841, + "line": 840, "column": 33 }, "identifierName": "_keyMap" @@ -64590,15 +64450,15 @@ }, "property": { "type": "Identifier", - "start": 29322, - "end": 29328, + "start": 29262, + "end": 29268, "loc": { "start": { - "line": 841, + "line": 840, "column": 34 }, "end": { - "line": 841, + "line": 840, "column": 40 }, "identifierName": "action" @@ -64613,29 +64473,29 @@ }, { "type": "IfStatement", - "start": 29339, - "end": 29387, + "start": 29279, + "end": 29327, "loc": { "start": { - "line": 842, + "line": 841, "column": 8 }, "end": { - "line": 844, + "line": 843, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 29343, - "end": 29348, + "start": 29283, + "end": 29288, "loc": { "start": { - "line": 842, + "line": 841, "column": 12 }, "end": { - "line": 842, + "line": 841, "column": 17 } }, @@ -64643,15 +64503,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 29344, - "end": 29348, + "start": 29284, + "end": 29288, "loc": { "start": { - "line": 842, + "line": 841, "column": 13 }, "end": { - "line": 842, + "line": 841, "column": 17 }, "identifierName": "keys" @@ -64664,44 +64524,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 29350, - "end": 29387, + "start": 29290, + "end": 29327, "loc": { "start": { - "line": 842, + "line": 841, "column": 19 }, "end": { - "line": 844, + "line": 843, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 29364, - "end": 29377, + "start": 29304, + "end": 29317, "loc": { "start": { - "line": 843, + "line": 842, "column": 12 }, "end": { - "line": 843, + "line": 842, "column": 25 } }, "argument": { "type": "BooleanLiteral", - "start": 29371, - "end": 29376, + "start": 29311, + "end": 29316, "loc": { "start": { - "line": 843, + "line": 842, "column": 19 }, "end": { - "line": 843, + "line": 842, "column": 24 } }, @@ -64715,29 +64575,29 @@ }, { "type": "IfStatement", - "start": 29396, - "end": 29475, + "start": 29336, + "end": 29415, "loc": { "start": { - "line": 845, + "line": 844, "column": 8 }, "end": { - "line": 847, + "line": 846, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 29400, - "end": 29411, + "start": 29340, + "end": 29351, "loc": { "start": { - "line": 845, + "line": 844, "column": 12 }, "end": { - "line": 845, + "line": 844, "column": 23 } }, @@ -64745,15 +64605,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 29401, - "end": 29411, + "start": 29341, + "end": 29351, "loc": { "start": { - "line": 845, + "line": 844, "column": 13 }, "end": { - "line": 845, + "line": 844, "column": 23 }, "identifierName": "keyDownMap" @@ -64766,59 +64626,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 29413, - "end": 29475, + "start": 29353, + "end": 29415, "loc": { "start": { - "line": 845, + "line": 844, "column": 25 }, "end": { - "line": 847, + "line": 846, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 29427, - "end": 29465, + "start": 29367, + "end": 29405, "loc": { "start": { - "line": 846, + "line": 845, "column": 12 }, "end": { - "line": 846, + "line": 845, "column": 50 } }, "expression": { "type": "AssignmentExpression", - "start": 29427, - "end": 29464, + "start": 29367, + "end": 29404, "loc": { "start": { - "line": 846, + "line": 845, "column": 12 }, "end": { - "line": 846, + "line": 845, "column": 49 } }, "operator": "=", "left": { "type": "Identifier", - "start": 29427, - "end": 29437, + "start": 29367, + "end": 29377, "loc": { "start": { - "line": 846, + "line": 845, "column": 12 }, "end": { - "line": 846, + "line": 845, "column": 22 }, "identifierName": "keyDownMap" @@ -64827,72 +64687,72 @@ }, "right": { "type": "MemberExpression", - "start": 29440, - "end": 29464, + "start": 29380, + "end": 29404, "loc": { "start": { - "line": 846, + "line": 845, "column": 25 }, "end": { - "line": 846, + "line": 845, "column": 49 } }, "object": { "type": "MemberExpression", - "start": 29440, - "end": 29456, + "start": 29380, + "end": 29396, "loc": { "start": { - "line": 846, + "line": 845, "column": 25 }, "end": { - "line": 846, + "line": 845, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 29440, - "end": 29450, + "start": 29380, + "end": 29390, "loc": { "start": { - "line": 846, + "line": 845, "column": 25 }, "end": { - "line": 846, + "line": 845, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 29440, - "end": 29444, + "start": 29380, + "end": 29384, "loc": { "start": { - "line": 846, + "line": 845, "column": 25 }, "end": { - "line": 846, + "line": 845, "column": 29 } } }, "property": { "type": "Identifier", - "start": 29445, - "end": 29450, + "start": 29385, + "end": 29390, "loc": { "start": { - "line": 846, + "line": 845, "column": 30 }, "end": { - "line": 846, + "line": 845, "column": 35 }, "identifierName": "scene" @@ -64903,15 +64763,15 @@ }, "property": { "type": "Identifier", - "start": 29451, - "end": 29456, + "start": 29391, + "end": 29396, "loc": { "start": { - "line": 846, + "line": 845, "column": 36 }, "end": { - "line": 846, + "line": 845, "column": 41 }, "identifierName": "input" @@ -64922,15 +64782,15 @@ }, "property": { "type": "Identifier", - "start": 29457, - "end": 29464, + "start": 29397, + "end": 29404, "loc": { "start": { - "line": 846, + "line": 845, "column": 42 }, "end": { - "line": 846, + "line": 845, "column": 49 }, "identifierName": "keyDown" @@ -64948,58 +64808,58 @@ }, { "type": "ForStatement", - "start": 29484, - "end": 29655, + "start": 29424, + "end": 29595, "loc": { "start": { - "line": 848, + "line": 847, "column": 8 }, "end": { - "line": 853, + "line": 852, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 29489, - "end": 29517, + "start": 29429, + "end": 29457, "loc": { "start": { - "line": 848, + "line": 847, "column": 13 }, "end": { - "line": 848, + "line": 847, "column": 41 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29493, - "end": 29498, + "start": 29433, + "end": 29438, "loc": { "start": { - "line": 848, + "line": 847, "column": 17 }, "end": { - "line": 848, + "line": 847, "column": 22 } }, "id": { "type": "Identifier", - "start": 29493, - "end": 29494, + "start": 29433, + "end": 29434, "loc": { "start": { - "line": 848, + "line": 847, "column": 17 }, "end": { - "line": 848, + "line": 847, "column": 18 }, "identifierName": "i" @@ -65008,15 +64868,15 @@ }, "init": { "type": "NumericLiteral", - "start": 29497, - "end": 29498, + "start": 29437, + "end": 29438, "loc": { "start": { - "line": 848, + "line": 847, "column": 21 }, "end": { - "line": 848, + "line": 847, "column": 22 } }, @@ -65029,29 +64889,29 @@ }, { "type": "VariableDeclarator", - "start": 29500, - "end": 29517, + "start": 29440, + "end": 29457, "loc": { "start": { - "line": 848, + "line": 847, "column": 24 }, "end": { - "line": 848, + "line": 847, "column": 41 } }, "id": { "type": "Identifier", - "start": 29500, - "end": 29503, + "start": 29440, + "end": 29443, "loc": { "start": { - "line": 848, + "line": 847, "column": 24 }, "end": { - "line": 848, + "line": 847, "column": 27 }, "identifierName": "len" @@ -65060,29 +64920,29 @@ }, "init": { "type": "MemberExpression", - "start": 29506, - "end": 29517, + "start": 29446, + "end": 29457, "loc": { "start": { - "line": 848, + "line": 847, "column": 30 }, "end": { - "line": 848, + "line": 847, "column": 41 } }, "object": { "type": "Identifier", - "start": 29506, - "end": 29510, + "start": 29446, + "end": 29450, "loc": { "start": { - "line": 848, + "line": 847, "column": 30 }, "end": { - "line": 848, + "line": 847, "column": 34 }, "identifierName": "keys" @@ -65091,15 +64951,15 @@ }, "property": { "type": "Identifier", - "start": 29511, - "end": 29517, + "start": 29451, + "end": 29457, "loc": { "start": { - "line": 848, + "line": 847, "column": 35 }, "end": { - "line": 848, + "line": 847, "column": 41 }, "identifierName": "length" @@ -65114,29 +64974,29 @@ }, "test": { "type": "BinaryExpression", - "start": 29519, - "end": 29526, + "start": 29459, + "end": 29466, "loc": { "start": { - "line": 848, + "line": 847, "column": 43 }, "end": { - "line": 848, + "line": 847, "column": 50 } }, "left": { "type": "Identifier", - "start": 29519, - "end": 29520, + "start": 29459, + "end": 29460, "loc": { "start": { - "line": 848, + "line": 847, "column": 43 }, "end": { - "line": 848, + "line": 847, "column": 44 }, "identifierName": "i" @@ -65146,15 +65006,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 29523, - "end": 29526, + "start": 29463, + "end": 29466, "loc": { "start": { - "line": 848, + "line": 847, "column": 47 }, "end": { - "line": 848, + "line": 847, "column": 50 }, "identifierName": "len" @@ -65164,15 +65024,15 @@ }, "update": { "type": "UpdateExpression", - "start": 29528, - "end": 29531, + "start": 29468, + "end": 29471, "loc": { "start": { - "line": 848, + "line": 847, "column": 52 }, "end": { - "line": 848, + "line": 847, "column": 55 } }, @@ -65180,15 +65040,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 29528, - "end": 29529, + "start": 29468, + "end": 29469, "loc": { "start": { - "line": 848, + "line": 847, "column": 52 }, "end": { - "line": 848, + "line": 847, "column": 53 }, "identifierName": "i" @@ -65198,59 +65058,59 @@ }, "body": { "type": "BlockStatement", - "start": 29533, - "end": 29655, + "start": 29473, + "end": 29595, "loc": { "start": { - "line": 848, + "line": 847, "column": 57 }, "end": { - "line": 853, + "line": 852, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 29547, - "end": 29567, + "start": 29487, + "end": 29507, "loc": { "start": { - "line": 849, + "line": 848, "column": 12 }, "end": { - "line": 849, + "line": 848, "column": 32 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 29553, - "end": 29566, + "start": 29493, + "end": 29506, "loc": { "start": { - "line": 849, + "line": 848, "column": 18 }, "end": { - "line": 849, + "line": 848, "column": 31 } }, "id": { "type": "Identifier", - "start": 29553, - "end": 29556, + "start": 29493, + "end": 29496, "loc": { "start": { - "line": 849, + "line": 848, "column": 18 }, "end": { - "line": 849, + "line": 848, "column": 21 }, "identifierName": "key" @@ -65259,29 +65119,29 @@ }, "init": { "type": "MemberExpression", - "start": 29559, - "end": 29566, + "start": 29499, + "end": 29506, "loc": { "start": { - "line": 849, + "line": 848, "column": 24 }, "end": { - "line": 849, + "line": 848, "column": 31 } }, "object": { "type": "Identifier", - "start": 29559, - "end": 29563, + "start": 29499, + "end": 29503, "loc": { "start": { - "line": 849, + "line": 848, "column": 24 }, "end": { - "line": 849, + "line": 848, "column": 28 }, "identifierName": "keys" @@ -65290,15 +65150,15 @@ }, "property": { "type": "Identifier", - "start": 29564, - "end": 29565, + "start": 29504, + "end": 29505, "loc": { "start": { - "line": 849, + "line": 848, "column": 29 }, "end": { - "line": 849, + "line": 848, "column": 30 }, "identifierName": "i" @@ -65313,43 +65173,43 @@ }, { "type": "IfStatement", - "start": 29580, - "end": 29645, + "start": 29520, + "end": 29585, "loc": { "start": { - "line": 850, + "line": 849, "column": 12 }, "end": { - "line": 852, + "line": 851, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 29584, - "end": 29599, + "start": 29524, + "end": 29539, "loc": { "start": { - "line": 850, + "line": 849, "column": 16 }, "end": { - "line": 850, + "line": 849, "column": 31 } }, "object": { "type": "Identifier", - "start": 29584, - "end": 29594, + "start": 29524, + "end": 29534, "loc": { "start": { - "line": 850, + "line": 849, "column": 16 }, "end": { - "line": 850, + "line": 849, "column": 26 }, "identifierName": "keyDownMap" @@ -65358,15 +65218,15 @@ }, "property": { "type": "Identifier", - "start": 29595, - "end": 29598, + "start": 29535, + "end": 29538, "loc": { "start": { - "line": 850, + "line": 849, "column": 27 }, "end": { - "line": 850, + "line": 849, "column": 30 }, "identifierName": "key" @@ -65377,44 +65237,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 29601, - "end": 29645, + "start": 29541, + "end": 29585, "loc": { "start": { - "line": 850, + "line": 849, "column": 33 }, "end": { - "line": 852, + "line": 851, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 29619, - "end": 29631, + "start": 29559, + "end": 29571, "loc": { "start": { - "line": 851, + "line": 850, "column": 16 }, "end": { - "line": 851, + "line": 850, "column": 28 } }, "argument": { "type": "BooleanLiteral", - "start": 29626, - "end": 29630, + "start": 29566, + "end": 29570, "loc": { "start": { - "line": 851, + "line": 850, "column": 23 }, "end": { - "line": 851, + "line": 850, "column": 27 } }, @@ -65432,29 +65292,29 @@ }, { "type": "ReturnStatement", - "start": 29664, - "end": 29677, + "start": 29604, + "end": 29617, "loc": { "start": { - "line": 854, + "line": 853, "column": 8 }, "end": { - "line": 854, + "line": 853, "column": 21 } }, "argument": { "type": "BooleanLiteral", - "start": 29671, - "end": 29676, + "start": 29611, + "end": 29616, "loc": { "start": { - "line": 854, + "line": 853, "column": 15 }, "end": { - "line": 854, + "line": 853, "column": 20 } }, @@ -65469,15 +65329,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true if any keys configured for the given action are down.\n * @param action\n * @param keyDownMap\n * @private\n ", - "start": 29094, - "end": 29241, + "start": 29034, + "end": 29181, "loc": { "start": { - "line": 834, + "line": 833, "column": 4 }, "end": { - "line": 839, + "line": 838, "column": 7 } } @@ -65487,15 +65347,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 29689, - "end": 29943, + "start": 29629, + "end": 29883, "loc": { "start": { - "line": 857, + "line": 856, "column": 4 }, "end": { - "line": 863, + "line": 862, "column": 7 } } @@ -65504,15 +65364,15 @@ }, { "type": "ClassMethod", - "start": 29948, - "end": 30049, + "start": 29888, + "end": 29989, "loc": { "start": { - "line": 864, + "line": 863, "column": 4 }, "end": { - "line": 866, + "line": 865, "column": 5 } }, @@ -65520,15 +65380,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 29952, - "end": 29964, + "start": 29892, + "end": 29904, "loc": { "start": { - "line": 864, + "line": 863, "column": 8 }, "end": { - "line": 864, + "line": 863, "column": 20 }, "identifierName": "pivotElement" @@ -65543,15 +65403,15 @@ "params": [ { "type": "Identifier", - "start": 29965, - "end": 29972, + "start": 29905, + "end": 29912, "loc": { "start": { - "line": 864, + "line": 863, "column": 21 }, "end": { - "line": 864, + "line": 863, "column": 28 }, "identifierName": "element" @@ -65561,115 +65421,115 @@ ], "body": { "type": "BlockStatement", - "start": 29974, - "end": 30049, + "start": 29914, + "end": 29989, "loc": { "start": { - "line": 864, + "line": 863, "column": 30 }, "end": { - "line": 866, + "line": 865, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 29984, - "end": 30043, + "start": 29924, + "end": 29983, "loc": { "start": { - "line": 865, + "line": 864, "column": 8 }, "end": { - "line": 865, + "line": 864, "column": 67 } }, "expression": { "type": "CallExpression", - "start": 29984, - "end": 30042, + "start": 29924, + "end": 29982, "loc": { "start": { - "line": 865, + "line": 864, "column": 8 }, "end": { - "line": 865, + "line": 864, "column": 66 } }, "callee": { "type": "MemberExpression", - "start": 29984, - "end": 30033, + "start": 29924, + "end": 29973, "loc": { "start": { - "line": 865, + "line": 864, "column": 8 }, "end": { - "line": 865, + "line": 864, "column": 57 } }, "object": { "type": "MemberExpression", - "start": 29984, - "end": 30017, + "start": 29924, + "end": 29957, "loc": { "start": { - "line": 865, + "line": 864, "column": 8 }, "end": { - "line": 865, + "line": 864, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 29984, - "end": 30001, + "start": 29924, + "end": 29941, "loc": { "start": { - "line": 865, + "line": 864, "column": 8 }, "end": { - "line": 865, + "line": 864, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 29984, - "end": 29988, + "start": 29924, + "end": 29928, "loc": { "start": { - "line": 865, + "line": 864, "column": 8 }, "end": { - "line": 865, + "line": 864, "column": 12 } } }, "property": { "type": "Identifier", - "start": 29989, - "end": 30001, + "start": 29929, + "end": 29941, "loc": { "start": { - "line": 865, + "line": 864, "column": 13 }, "end": { - "line": 865, + "line": 864, "column": 25 }, "identifierName": "_controllers" @@ -65680,15 +65540,15 @@ }, "property": { "type": "Identifier", - "start": 30002, - "end": 30017, + "start": 29942, + "end": 29957, "loc": { "start": { - "line": 865, + "line": 864, "column": 26 }, "end": { - "line": 865, + "line": 864, "column": 41 }, "identifierName": "pivotController" @@ -65699,15 +65559,15 @@ }, "property": { "type": "Identifier", - "start": 30018, - "end": 30033, + "start": 29958, + "end": 29973, "loc": { "start": { - "line": 865, + "line": 864, "column": 42 }, "end": { - "line": 865, + "line": 864, "column": 57 }, "identifierName": "setPivotElement" @@ -65719,15 +65579,15 @@ "arguments": [ { "type": "Identifier", - "start": 30034, - "end": 30041, + "start": 29974, + "end": 29981, "loc": { "start": { - "line": 865, + "line": 864, "column": 58 }, "end": { - "line": 865, + "line": 864, "column": 65 }, "identifierName": "element" @@ -65745,15 +65605,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 29689, - "end": 29943, + "start": 29629, + "end": 29883, "loc": { "start": { - "line": 857, + "line": 856, "column": 4 }, "end": { - "line": 863, + "line": 862, "column": 7 } } @@ -65763,15 +65623,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30055, - "end": 30340, + "start": 29995, + "end": 30280, "loc": { "start": { - "line": 868, + "line": 867, "column": 4 }, "end": { - "line": 876, + "line": 875, "column": 7 } } @@ -65780,15 +65640,15 @@ }, { "type": "ClassMethod", - "start": 30345, - "end": 30418, + "start": 30285, + "end": 30358, "loc": { "start": { - "line": 877, + "line": 876, "column": 4 }, "end": { - "line": 879, + "line": 878, "column": 5 } }, @@ -65796,15 +65656,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 30349, - "end": 30355, + "start": 30289, + "end": 30295, "loc": { "start": { - "line": 877, + "line": 876, "column": 8 }, "end": { - "line": 877, + "line": 876, "column": 14 }, "identifierName": "active" @@ -65819,15 +65679,15 @@ "params": [ { "type": "Identifier", - "start": 30356, - "end": 30361, + "start": 30296, + "end": 30301, "loc": { "start": { - "line": 877, + "line": 876, "column": 15 }, "end": { - "line": 877, + "line": 876, "column": 20 }, "identifierName": "value" @@ -65837,102 +65697,102 @@ ], "body": { "type": "BlockStatement", - "start": 30363, - "end": 30418, + "start": 30303, + "end": 30358, "loc": { "start": { - "line": 877, + "line": 876, "column": 22 }, "end": { - "line": 879, + "line": 878, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 30373, - "end": 30412, + "start": 30313, + "end": 30352, "loc": { "start": { - "line": 878, + "line": 877, "column": 8 }, "end": { - "line": 878, + "line": 877, "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 30373, - "end": 30411, + "start": 30313, + "end": 30351, "loc": { "start": { - "line": 878, + "line": 877, "column": 8 }, "end": { - "line": 878, + "line": 877, "column": 46 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 30373, - "end": 30393, + "start": 30313, + "end": 30333, "loc": { "start": { - "line": 878, + "line": 877, "column": 8 }, "end": { - "line": 878, + "line": 877, "column": 28 } }, "object": { "type": "MemberExpression", - "start": 30373, - "end": 30386, + "start": 30313, + "end": 30326, "loc": { "start": { - "line": 878, + "line": 877, "column": 8 }, "end": { - "line": 878, + "line": 877, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 30373, - "end": 30377, + "start": 30313, + "end": 30317, "loc": { "start": { - "line": 878, + "line": 877, "column": 8 }, "end": { - "line": 878, + "line": 877, "column": 12 } } }, "property": { "type": "Identifier", - "start": 30378, - "end": 30386, + "start": 30318, + "end": 30326, "loc": { "start": { - "line": 878, + "line": 877, "column": 13 }, "end": { - "line": 878, + "line": 877, "column": 21 }, "identifierName": "_configs" @@ -65943,15 +65803,15 @@ }, "property": { "type": "Identifier", - "start": 30387, - "end": 30393, + "start": 30327, + "end": 30333, "loc": { "start": { - "line": 878, + "line": 877, "column": 22 }, "end": { - "line": 878, + "line": 877, "column": 28 }, "identifierName": "active" @@ -65962,29 +65822,29 @@ }, "right": { "type": "BinaryExpression", - "start": 30396, - "end": 30411, + "start": 30336, + "end": 30351, "loc": { "start": { - "line": 878, + "line": 877, "column": 31 }, "end": { - "line": 878, + "line": 877, "column": 46 } }, "left": { "type": "Identifier", - "start": 30396, - "end": 30401, + "start": 30336, + "end": 30341, "loc": { "start": { - "line": 878, + "line": 877, "column": 31 }, "end": { - "line": 878, + "line": 877, "column": 36 }, "identifierName": "value" @@ -65994,15 +65854,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 30406, - "end": 30411, + "start": 30346, + "end": 30351, "loc": { "start": { - "line": 878, + "line": 877, "column": 41 }, "end": { - "line": 878, + "line": 877, "column": 46 } }, @@ -66019,15 +65879,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30055, - "end": 30340, + "start": 29995, + "end": 30280, "loc": { "start": { - "line": 868, + "line": 867, "column": 4 }, "end": { - "line": 876, + "line": 875, "column": 7 } } @@ -66037,15 +65897,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30424, - "end": 30709, + "start": 30364, + "end": 30649, "loc": { "start": { - "line": 881, + "line": 880, "column": 4 }, "end": { - "line": 889, + "line": 888, "column": 7 } } @@ -66054,15 +65914,15 @@ }, { "type": "ClassMethod", - "start": 30714, - "end": 30771, + "start": 30654, + "end": 30711, "loc": { "start": { - "line": 890, + "line": 889, "column": 4 }, "end": { - "line": 892, + "line": 891, "column": 5 } }, @@ -66070,15 +65930,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 30718, - "end": 30724, + "start": 30658, + "end": 30664, "loc": { "start": { - "line": 890, + "line": 889, "column": 8 }, "end": { - "line": 890, + "line": 889, "column": 14 }, "identifierName": "active" @@ -66093,87 +65953,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 30727, - "end": 30771, + "start": 30667, + "end": 30711, "loc": { "start": { - "line": 890, + "line": 889, "column": 17 }, "end": { - "line": 892, + "line": 891, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 30737, - "end": 30765, + "start": 30677, + "end": 30705, "loc": { "start": { - "line": 891, + "line": 890, "column": 8 }, "end": { - "line": 891, + "line": 890, "column": 36 } }, "argument": { "type": "MemberExpression", - "start": 30744, - "end": 30764, + "start": 30684, + "end": 30704, "loc": { "start": { - "line": 891, + "line": 890, "column": 15 }, "end": { - "line": 891, + "line": 890, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 30744, - "end": 30757, + "start": 30684, + "end": 30697, "loc": { "start": { - "line": 891, + "line": 890, "column": 15 }, "end": { - "line": 891, + "line": 890, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 30744, - "end": 30748, + "start": 30684, + "end": 30688, "loc": { "start": { - "line": 891, + "line": 890, "column": 15 }, "end": { - "line": 891, + "line": 890, "column": 19 } } }, "property": { "type": "Identifier", - "start": 30749, - "end": 30757, + "start": 30689, + "end": 30697, "loc": { "start": { - "line": 891, + "line": 890, "column": 20 }, "end": { - "line": 891, + "line": 890, "column": 28 }, "identifierName": "_configs" @@ -66184,15 +66044,15 @@ }, "property": { "type": "Identifier", - "start": 30758, - "end": 30764, + "start": 30698, + "end": 30704, "loc": { "start": { - "line": 891, + "line": 890, "column": 29 }, "end": { - "line": 891, + "line": 890, "column": 35 }, "identifierName": "active" @@ -66210,15 +66070,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30424, - "end": 30709, + "start": 30364, + "end": 30649, "loc": { "start": { - "line": 881, + "line": 880, "column": 4 }, "end": { - "line": 889, + "line": 888, "column": 7 } } @@ -66228,15 +66088,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30777, - "end": 31205, + "start": 30717, + "end": 31145, "loc": { "start": { - "line": 894, + "line": 893, "column": 4 }, "end": { - "line": 906, + "line": 905, "column": 7 } } @@ -66245,15 +66105,15 @@ }, { "type": "ClassMethod", - "start": 31210, - "end": 31925, + "start": 31150, + "end": 31865, "loc": { "start": { - "line": 907, + "line": 906, "column": 4 }, "end": { - "line": 920, + "line": 919, "column": 5 } }, @@ -66261,15 +66121,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 31214, - "end": 31221, + "start": 31154, + "end": 31161, "loc": { "start": { - "line": 907, + "line": 906, "column": 8 }, "end": { - "line": 907, + "line": 906, "column": 15 }, "identifierName": "navMode" @@ -66284,15 +66144,15 @@ "params": [ { "type": "Identifier", - "start": 31222, - "end": 31229, + "start": 31162, + "end": 31169, "loc": { "start": { - "line": 907, + "line": 906, "column": 16 }, "end": { - "line": 907, + "line": 906, "column": 23 }, "identifierName": "navMode" @@ -66302,59 +66162,59 @@ ], "body": { "type": "BlockStatement", - "start": 31231, - "end": 31925, + "start": 31171, + "end": 31865, "loc": { "start": { - "line": 907, + "line": 906, "column": 25 }, "end": { - "line": 920, + "line": 919, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 31241, - "end": 31270, + "start": 31181, + "end": 31210, "loc": { "start": { - "line": 908, + "line": 907, "column": 8 }, "end": { - "line": 908, + "line": 907, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 31241, - "end": 31269, + "start": 31181, + "end": 31209, "loc": { "start": { - "line": 908, + "line": 907, "column": 8 }, "end": { - "line": 908, + "line": 907, "column": 36 } }, "operator": "=", "left": { "type": "Identifier", - "start": 31241, - "end": 31248, + "start": 31181, + "end": 31188, "loc": { "start": { - "line": 908, + "line": 907, "column": 8 }, "end": { - "line": 908, + "line": 907, "column": 15 }, "identifierName": "navMode" @@ -66363,29 +66223,29 @@ }, "right": { "type": "LogicalExpression", - "start": 31251, - "end": 31269, + "start": 31191, + "end": 31209, "loc": { "start": { - "line": 908, + "line": 907, "column": 18 }, "end": { - "line": 908, + "line": 907, "column": 36 } }, "left": { "type": "Identifier", - "start": 31251, - "end": 31258, + "start": 31191, + "end": 31198, "loc": { "start": { - "line": 908, + "line": 907, "column": 18 }, "end": { - "line": 908, + "line": 907, "column": 25 }, "identifierName": "navMode" @@ -66395,15 +66255,15 @@ "operator": "||", "right": { "type": "StringLiteral", - "start": 31262, - "end": 31269, + "start": 31202, + "end": 31209, "loc": { "start": { - "line": 908, + "line": 907, "column": 29 }, "end": { - "line": 908, + "line": 907, "column": 36 } }, @@ -66418,71 +66278,71 @@ }, { "type": "IfStatement", - "start": 31279, - "end": 31560, + "start": 31219, + "end": 31500, "loc": { "start": { - "line": 909, + "line": 908, "column": 8 }, "end": { - "line": 912, + "line": 911, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 31283, - "end": 31357, + "start": 31223, + "end": 31297, "loc": { "start": { - "line": 909, + "line": 908, "column": 12 }, "end": { - "line": 909, + "line": 908, "column": 86 } }, "left": { "type": "LogicalExpression", - "start": 31283, - "end": 31331, + "start": 31223, + "end": 31271, "loc": { "start": { - "line": 909, + "line": 908, "column": 12 }, "end": { - "line": 909, + "line": 908, "column": 60 } }, "left": { "type": "BinaryExpression", - "start": 31283, - "end": 31308, + "start": 31223, + "end": 31248, "loc": { "start": { - "line": 909, + "line": 908, "column": 12 }, "end": { - "line": 909, + "line": 908, "column": 37 } }, "left": { "type": "Identifier", - "start": 31283, - "end": 31290, + "start": 31223, + "end": 31230, "loc": { "start": { - "line": 909, + "line": 908, "column": 12 }, "end": { - "line": 909, + "line": 908, "column": 19 }, "identifierName": "navMode" @@ -66492,15 +66352,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 31295, - "end": 31308, + "start": 31235, + "end": 31248, "loc": { "start": { - "line": 909, + "line": 908, "column": 24 }, "end": { - "line": 909, + "line": 908, "column": 37 } }, @@ -66514,29 +66374,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 31312, - "end": 31331, + "start": 31252, + "end": 31271, "loc": { "start": { - "line": 909, + "line": 908, "column": 41 }, "end": { - "line": 909, + "line": 908, "column": 60 } }, "left": { "type": "Identifier", - "start": 31312, - "end": 31319, + "start": 31252, + "end": 31259, "loc": { "start": { - "line": 909, + "line": 908, "column": 41 }, "end": { - "line": 909, + "line": 908, "column": 48 }, "identifierName": "navMode" @@ -66546,15 +66406,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 31324, - "end": 31331, + "start": 31264, + "end": 31271, "loc": { "start": { - "line": 909, + "line": 908, "column": 53 }, "end": { - "line": 909, + "line": 908, "column": 60 } }, @@ -66569,29 +66429,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 31335, - "end": 31357, + "start": 31275, + "end": 31297, "loc": { "start": { - "line": 909, + "line": 908, "column": 64 }, "end": { - "line": 909, + "line": 908, "column": 86 } }, "left": { "type": "Identifier", - "start": 31335, - "end": 31342, + "start": 31275, + "end": 31282, "loc": { "start": { - "line": 909, + "line": 908, "column": 64 }, "end": { - "line": 909, + "line": 908, "column": 71 }, "identifierName": "navMode" @@ -66601,15 +66461,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 31347, - "end": 31357, + "start": 31287, + "end": 31297, "loc": { "start": { - "line": 909, + "line": 908, "column": 76 }, "end": { - "line": 909, + "line": 908, "column": 86 } }, @@ -66623,87 +66483,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 31359, - "end": 31560, + "start": 31299, + "end": 31500, "loc": { "start": { - "line": 909, + "line": 908, "column": 88 }, "end": { - "line": 912, + "line": 911, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 31373, - "end": 31519, + "start": 31313, + "end": 31459, "loc": { "start": { - "line": 910, + "line": 909, "column": 12 }, "end": { - "line": 910, + "line": 909, "column": 158 } }, "expression": { "type": "CallExpression", - "start": 31373, - "end": 31518, + "start": 31313, + "end": 31458, "loc": { "start": { - "line": 910, + "line": 909, "column": 12 }, "end": { - "line": 910, + "line": 909, "column": 157 } }, "callee": { "type": "MemberExpression", - "start": 31373, - "end": 31383, + "start": 31313, + "end": 31323, "loc": { "start": { - "line": 910, + "line": 909, "column": 12 }, "end": { - "line": 910, + "line": 909, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 31373, - "end": 31377, + "start": 31313, + "end": 31317, "loc": { "start": { - "line": 910, + "line": 909, "column": 12 }, "end": { - "line": 910, + "line": 909, "column": 16 } } }, "property": { "type": "Identifier", - "start": 31378, - "end": 31383, + "start": 31318, + "end": 31323, "loc": { "start": { - "line": 910, + "line": 909, "column": 17 }, "end": { - "line": 910, + "line": 909, "column": 22 }, "identifierName": "error" @@ -66715,43 +66575,43 @@ "arguments": [ { "type": "BinaryExpression", - "start": 31384, - "end": 31517, + "start": 31324, + "end": 31457, "loc": { "start": { - "line": 910, + "line": 909, "column": 23 }, "end": { - "line": 910, + "line": 909, "column": 156 } }, "left": { "type": "BinaryExpression", - "start": 31384, - "end": 31427, + "start": 31324, + "end": 31367, "loc": { "start": { - "line": 910, + "line": 909, "column": 23 }, "end": { - "line": 910, + "line": 909, "column": 66 } }, "left": { "type": "StringLiteral", - "start": 31384, - "end": 31417, + "start": 31324, + "end": 31357, "loc": { "start": { - "line": 910, + "line": 909, "column": 23 }, "end": { - "line": 910, + "line": 909, "column": 56 } }, @@ -66764,15 +66624,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 31420, - "end": 31427, + "start": 31360, + "end": 31367, "loc": { "start": { - "line": 910, + "line": 909, "column": 59 }, "end": { - "line": 910, + "line": 909, "column": 66 }, "identifierName": "navMode" @@ -66783,15 +66643,15 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 31430, - "end": 31517, + "start": 31370, + "end": 31457, "loc": { "start": { - "line": 910, + "line": 909, "column": 69 }, "end": { - "line": 910, + "line": 909, "column": 156 } }, @@ -66807,44 +66667,44 @@ }, { "type": "ExpressionStatement", - "start": 31532, - "end": 31550, + "start": 31472, + "end": 31490, "loc": { "start": { - "line": 911, + "line": 910, "column": 12 }, "end": { - "line": 911, + "line": 910, "column": 30 } }, "expression": { "type": "AssignmentExpression", - "start": 31532, - "end": 31549, + "start": 31472, + "end": 31489, "loc": { "start": { - "line": 911, + "line": 910, "column": 12 }, "end": { - "line": 911, + "line": 910, "column": 29 } }, "operator": "=", "left": { "type": "Identifier", - "start": 31532, - "end": 31539, + "start": 31472, + "end": 31479, "loc": { "start": { - "line": 911, + "line": 910, "column": 12 }, "end": { - "line": 911, + "line": 910, "column": 19 }, "identifierName": "navMode" @@ -66853,15 +66713,15 @@ }, "right": { "type": "StringLiteral", - "start": 31542, - "end": 31549, + "start": 31482, + "end": 31489, "loc": { "start": { - "line": 911, + "line": 910, "column": 22 }, "end": { - "line": 911, + "line": 910, "column": 29 } }, @@ -66880,8 +66740,177 @@ }, { "type": "ExpressionStatement", - "start": 31569, - "end": 31625, + "start": 31509, + "end": 31565, + "loc": { + "start": { + "line": 912, + "column": 8 + }, + "end": { + "line": 912, + "column": 64 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 31509, + "end": 31564, + "loc": { + "start": { + "line": 912, + "column": 8 + }, + "end": { + "line": 912, + "column": 63 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 31509, + "end": 31534, + "loc": { + "start": { + "line": 912, + "column": 8 + }, + "end": { + "line": 912, + "column": 33 + } + }, + "object": { + "type": "MemberExpression", + "start": 31509, + "end": 31522, + "loc": { + "start": { + "line": 912, + "column": 8 + }, + "end": { + "line": 912, + "column": 21 + } + }, + "object": { + "type": "ThisExpression", + "start": 31509, + "end": 31513, + "loc": { + "start": { + "line": 912, + "column": 8 + }, + "end": { + "line": 912, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 31514, + "end": 31522, + "loc": { + "start": { + "line": 912, + "column": 13 + }, + "end": { + "line": 912, + "column": 21 + }, + "identifierName": "_configs" + }, + "name": "_configs" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 31523, + "end": 31534, + "loc": { + "start": { + "line": 912, + "column": 22 + }, + "end": { + "line": 912, + "column": 33 + }, + "identifierName": "firstPerson" + }, + "name": "firstPerson" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 31538, + "end": 31563, + "loc": { + "start": { + "line": 912, + "column": 37 + }, + "end": { + "line": 912, + "column": 62 + } + }, + "left": { + "type": "Identifier", + "start": 31538, + "end": 31545, + "loc": { + "start": { + "line": 912, + "column": 37 + }, + "end": { + "line": 912, + "column": 44 + }, + "identifierName": "navMode" + }, + "name": "navMode" + }, + "operator": "===", + "right": { + "type": "StringLiteral", + "start": 31550, + "end": 31563, + "loc": { + "start": { + "line": 912, + "column": 49 + }, + "end": { + "line": 912, + "column": 62 + } + }, + "extra": { + "rawValue": "firstPerson", + "raw": "\"firstPerson\"" + }, + "value": "firstPerson" + }, + "extra": { + "parenthesized": true, + "parenStart": 31537 + } + } + } + }, + { + "type": "ExpressionStatement", + "start": 31574, + "end": 31624, "loc": { "start": { "line": 913, @@ -66889,13 +66918,13 @@ }, "end": { "line": 913, - "column": 64 + "column": 58 } }, "expression": { "type": "AssignmentExpression", - "start": 31569, - "end": 31624, + "start": 31574, + "end": 31623, "loc": { "start": { "line": 913, @@ -66903,14 +66932,14 @@ }, "end": { "line": 913, - "column": 63 + "column": 57 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 31569, - "end": 31594, + "start": 31574, + "end": 31596, "loc": { "start": { "line": 913, @@ -66918,13 +66947,13 @@ }, "end": { "line": 913, - "column": 33 + "column": 30 } }, "object": { "type": "MemberExpression", - "start": 31569, - "end": 31582, + "start": 31574, + "end": 31587, "loc": { "start": { "line": 913, @@ -66937,8 +66966,8 @@ }, "object": { "type": "ThisExpression", - "start": 31569, - "end": 31573, + "start": 31574, + "end": 31578, "loc": { "start": { "line": 913, @@ -66952,8 +66981,8 @@ }, "property": { "type": "Identifier", - "start": 31574, - "end": 31582, + "start": 31579, + "end": 31587, "loc": { "start": { "line": 913, @@ -66971,8 +67000,8 @@ }, "property": { "type": "Identifier", - "start": 31583, - "end": 31594, + "start": 31588, + "end": 31596, "loc": { "start": { "line": 913, @@ -66980,175 +67009,6 @@ }, "end": { "line": 913, - "column": 33 - }, - "identifierName": "firstPerson" - }, - "name": "firstPerson" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 31598, - "end": 31623, - "loc": { - "start": { - "line": 913, - "column": 37 - }, - "end": { - "line": 913, - "column": 62 - } - }, - "left": { - "type": "Identifier", - "start": 31598, - "end": 31605, - "loc": { - "start": { - "line": 913, - "column": 37 - }, - "end": { - "line": 913, - "column": 44 - }, - "identifierName": "navMode" - }, - "name": "navMode" - }, - "operator": "===", - "right": { - "type": "StringLiteral", - "start": 31610, - "end": 31623, - "loc": { - "start": { - "line": 913, - "column": 49 - }, - "end": { - "line": 913, - "column": 62 - } - }, - "extra": { - "rawValue": "firstPerson", - "raw": "\"firstPerson\"" - }, - "value": "firstPerson" - }, - "extra": { - "parenthesized": true, - "parenStart": 31597 - } - } - } - }, - { - "type": "ExpressionStatement", - "start": 31634, - "end": 31684, - "loc": { - "start": { - "line": 914, - "column": 8 - }, - "end": { - "line": 914, - "column": 58 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 31634, - "end": 31683, - "loc": { - "start": { - "line": 914, - "column": 8 - }, - "end": { - "line": 914, - "column": 57 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 31634, - "end": 31656, - "loc": { - "start": { - "line": 914, - "column": 8 - }, - "end": { - "line": 914, - "column": 30 - } - }, - "object": { - "type": "MemberExpression", - "start": 31634, - "end": 31647, - "loc": { - "start": { - "line": 914, - "column": 8 - }, - "end": { - "line": 914, - "column": 21 - } - }, - "object": { - "type": "ThisExpression", - "start": 31634, - "end": 31638, - "loc": { - "start": { - "line": 914, - "column": 8 - }, - "end": { - "line": 914, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 31639, - "end": 31647, - "loc": { - "start": { - "line": 914, - "column": 13 - }, - "end": { - "line": 914, - "column": 21 - }, - "identifierName": "_configs" - }, - "name": "_configs" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 31648, - "end": 31656, - "loc": { - "start": { - "line": 914, - "column": 22 - }, - "end": { - "line": 914, "column": 30 }, "identifierName": "planView" @@ -67159,29 +67019,29 @@ }, "right": { "type": "BinaryExpression", - "start": 31660, - "end": 31682, + "start": 31600, + "end": 31622, "loc": { "start": { - "line": 914, + "line": 913, "column": 34 }, "end": { - "line": 914, + "line": 913, "column": 56 } }, "left": { "type": "Identifier", - "start": 31660, - "end": 31667, + "start": 31600, + "end": 31607, "loc": { "start": { - "line": 914, + "line": 913, "column": 34 }, "end": { - "line": 914, + "line": 913, "column": 41 }, "identifierName": "navMode" @@ -67191,15 +67051,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 31672, - "end": 31682, + "start": 31612, + "end": 31622, "loc": { "start": { - "line": 914, + "line": 913, "column": 46 }, "end": { - "line": 914, + "line": 913, "column": 56 } }, @@ -67211,93 +67071,93 @@ }, "extra": { "parenthesized": true, - "parenStart": 31659 + "parenStart": 31599 } } } }, { "type": "IfStatement", - "start": 31693, - "end": 31878, + "start": 31633, + "end": 31818, "loc": { "start": { - "line": 915, + "line": 914, "column": 8 }, "end": { - "line": 918, + "line": 917, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 31697, - "end": 31748, + "start": 31637, + "end": 31688, "loc": { "start": { - "line": 915, + "line": 914, "column": 12 }, "end": { - "line": 915, + "line": 914, "column": 63 } }, "left": { "type": "MemberExpression", - "start": 31697, - "end": 31722, + "start": 31637, + "end": 31662, "loc": { "start": { - "line": 915, + "line": 914, "column": 12 }, "end": { - "line": 915, + "line": 914, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 31697, - "end": 31710, + "start": 31637, + "end": 31650, "loc": { "start": { - "line": 915, + "line": 914, "column": 12 }, "end": { - "line": 915, + "line": 914, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 31697, - "end": 31701, + "start": 31637, + "end": 31641, "loc": { "start": { - "line": 915, + "line": 914, "column": 12 }, "end": { - "line": 915, + "line": 914, "column": 16 } } }, "property": { "type": "Identifier", - "start": 31702, - "end": 31710, + "start": 31642, + "end": 31650, "loc": { "start": { - "line": 915, + "line": 914, "column": 17 }, "end": { - "line": 915, + "line": 914, "column": 25 }, "identifierName": "_configs" @@ -67308,15 +67168,15 @@ }, "property": { "type": "Identifier", - "start": 31711, - "end": 31722, + "start": 31651, + "end": 31662, "loc": { "start": { - "line": 915, + "line": 914, "column": 26 }, "end": { - "line": 915, + "line": 914, "column": 37 }, "identifierName": "firstPerson" @@ -67328,58 +67188,58 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 31726, - "end": 31748, + "start": 31666, + "end": 31688, "loc": { "start": { - "line": 915, + "line": 914, "column": 41 }, "end": { - "line": 915, + "line": 914, "column": 63 } }, "object": { "type": "MemberExpression", - "start": 31726, - "end": 31739, + "start": 31666, + "end": 31679, "loc": { "start": { - "line": 915, + "line": 914, "column": 41 }, "end": { - "line": 915, + "line": 914, "column": 54 } }, "object": { "type": "ThisExpression", - "start": 31726, - "end": 31730, + "start": 31666, + "end": 31670, "loc": { "start": { - "line": 915, + "line": 914, "column": 41 }, "end": { - "line": 915, + "line": 914, "column": 45 } } }, "property": { "type": "Identifier", - "start": 31731, - "end": 31739, + "start": 31671, + "end": 31679, "loc": { "start": { - "line": 915, + "line": 914, "column": 46 }, "end": { - "line": 915, + "line": 914, "column": 54 }, "identifierName": "_configs" @@ -67390,15 +67250,15 @@ }, "property": { "type": "Identifier", - "start": 31740, - "end": 31748, + "start": 31680, + "end": 31688, "loc": { "start": { - "line": 915, + "line": 914, "column": 55 }, "end": { - "line": 915, + "line": 914, "column": 63 }, "identifierName": "planView" @@ -67410,115 +67270,115 @@ }, "consequent": { "type": "BlockStatement", - "start": 31750, - "end": 31878, + "start": 31690, + "end": 31818, "loc": { "start": { - "line": 915, + "line": 914, "column": 65 }, "end": { - "line": 918, + "line": 917, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 31764, - "end": 31810, + "start": 31704, + "end": 31750, "loc": { "start": { - "line": 916, + "line": 915, "column": 12 }, "end": { - "line": 916, + "line": 915, "column": 58 } }, "expression": { "type": "CallExpression", - "start": 31764, - "end": 31809, + "start": 31704, + "end": 31749, "loc": { "start": { - "line": 916, + "line": 915, "column": 12 }, "end": { - "line": 916, + "line": 915, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 31764, - "end": 31807, + "start": 31704, + "end": 31747, "loc": { "start": { - "line": 916, + "line": 915, "column": 12 }, "end": { - "line": 916, + "line": 915, "column": 55 } }, "object": { "type": "MemberExpression", - "start": 31764, - "end": 31797, + "start": 31704, + "end": 31737, "loc": { "start": { - "line": 916, + "line": 915, "column": 12 }, "end": { - "line": 916, + "line": 915, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 31764, - "end": 31781, + "start": 31704, + "end": 31721, "loc": { "start": { - "line": 916, + "line": 915, "column": 12 }, "end": { - "line": 916, + "line": 915, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 31764, - "end": 31768, + "start": 31704, + "end": 31708, "loc": { "start": { - "line": 916, + "line": 915, "column": 12 }, "end": { - "line": 916, + "line": 915, "column": 16 } } }, "property": { "type": "Identifier", - "start": 31769, - "end": 31781, + "start": 31709, + "end": 31721, "loc": { "start": { - "line": 916, + "line": 915, "column": 17 }, "end": { - "line": 916, + "line": 915, "column": 29 }, "identifierName": "_controllers" @@ -67529,15 +67389,15 @@ }, "property": { "type": "Identifier", - "start": 31782, - "end": 31797, + "start": 31722, + "end": 31737, "loc": { "start": { - "line": 916, + "line": 915, "column": 30 }, "end": { - "line": 916, + "line": 915, "column": 45 }, "identifierName": "pivotController" @@ -67548,15 +67408,15 @@ }, "property": { "type": "Identifier", - "start": 31798, - "end": 31807, + "start": 31738, + "end": 31747, "loc": { "start": { - "line": 916, + "line": 915, "column": 46 }, "end": { - "line": 916, + "line": 915, "column": 55 }, "identifierName": "hidePivot" @@ -67570,100 +67430,100 @@ }, { "type": "ExpressionStatement", - "start": 31823, - "end": 31868, + "start": 31763, + "end": 31808, "loc": { "start": { - "line": 917, + "line": 916, "column": 12 }, "end": { - "line": 917, + "line": 916, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 31823, - "end": 31867, + "start": 31763, + "end": 31807, "loc": { "start": { - "line": 917, + "line": 916, "column": 12 }, "end": { - "line": 917, + "line": 916, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 31823, - "end": 31865, + "start": 31763, + "end": 31805, "loc": { "start": { - "line": 917, + "line": 916, "column": 12 }, "end": { - "line": 917, + "line": 916, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 31823, - "end": 31856, + "start": 31763, + "end": 31796, "loc": { "start": { - "line": 917, + "line": 916, "column": 12 }, "end": { - "line": 917, + "line": 916, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 31823, - "end": 31840, + "start": 31763, + "end": 31780, "loc": { "start": { - "line": 917, + "line": 916, "column": 12 }, "end": { - "line": 917, + "line": 916, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 31823, - "end": 31827, + "start": 31763, + "end": 31767, "loc": { "start": { - "line": 917, + "line": 916, "column": 12 }, "end": { - "line": 917, + "line": 916, "column": 16 } } }, "property": { "type": "Identifier", - "start": 31828, - "end": 31840, + "start": 31768, + "end": 31780, "loc": { "start": { - "line": 917, + "line": 916, "column": 17 }, "end": { - "line": 917, + "line": 916, "column": 29 }, "identifierName": "_controllers" @@ -67674,15 +67534,15 @@ }, "property": { "type": "Identifier", - "start": 31841, - "end": 31856, + "start": 31781, + "end": 31796, "loc": { "start": { - "line": 917, + "line": 916, "column": 30 }, "end": { - "line": 917, + "line": 916, "column": 45 }, "identifierName": "pivotController" @@ -67693,15 +67553,15 @@ }, "property": { "type": "Identifier", - "start": 31857, - "end": 31865, + "start": 31797, + "end": 31805, "loc": { "start": { - "line": 917, + "line": 916, "column": 46 }, "end": { - "line": 917, + "line": 916, "column": 54 }, "identifierName": "endPivot" @@ -67720,87 +67580,87 @@ }, { "type": "ExpressionStatement", - "start": 31887, - "end": 31919, + "start": 31827, + "end": 31859, "loc": { "start": { - "line": 919, + "line": 918, "column": 8 }, "end": { - "line": 919, + "line": 918, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 31887, - "end": 31918, + "start": 31827, + "end": 31858, "loc": { "start": { - "line": 919, + "line": 918, "column": 8 }, "end": { - "line": 919, + "line": 918, "column": 39 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 31887, - "end": 31908, + "start": 31827, + "end": 31848, "loc": { "start": { - "line": 919, + "line": 918, "column": 8 }, "end": { - "line": 919, + "line": 918, "column": 29 } }, "object": { "type": "MemberExpression", - "start": 31887, - "end": 31900, + "start": 31827, + "end": 31840, "loc": { "start": { - "line": 919, + "line": 918, "column": 8 }, "end": { - "line": 919, + "line": 918, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 31887, - "end": 31891, + "start": 31827, + "end": 31831, "loc": { "start": { - "line": 919, + "line": 918, "column": 8 }, "end": { - "line": 919, + "line": 918, "column": 12 } } }, "property": { "type": "Identifier", - "start": 31892, - "end": 31900, + "start": 31832, + "end": 31840, "loc": { "start": { - "line": 919, + "line": 918, "column": 13 }, "end": { - "line": 919, + "line": 918, "column": 21 }, "identifierName": "_configs" @@ -67811,15 +67671,15 @@ }, "property": { "type": "Identifier", - "start": 31901, - "end": 31908, + "start": 31841, + "end": 31848, "loc": { "start": { - "line": 919, + "line": 918, "column": 22 }, "end": { - "line": 919, + "line": 918, "column": 29 }, "identifierName": "navMode" @@ -67830,15 +67690,15 @@ }, "right": { "type": "Identifier", - "start": 31911, - "end": 31918, + "start": 31851, + "end": 31858, "loc": { "start": { - "line": 919, + "line": 918, "column": 32 }, "end": { - "line": 919, + "line": 918, "column": 39 }, "identifierName": "navMode" @@ -67855,15 +67715,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30777, - "end": 31205, + "start": 30717, + "end": 31145, "loc": { "start": { - "line": 894, + "line": 893, "column": 4 }, "end": { - "line": 906, + "line": 905, "column": 7 } } @@ -67873,15 +67733,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the current navigation mode.\n *\n * @returns {String} The navigation mode: \"orbit\", \"firstPerson\" or \"planView\".\n ", - "start": 31931, - "end": 32074, + "start": 31871, + "end": 32014, "loc": { "start": { - "line": 922, + "line": 921, "column": 4 }, "end": { - "line": 926, + "line": 925, "column": 7 } } @@ -67890,15 +67750,15 @@ }, { "type": "ClassMethod", - "start": 32079, - "end": 32138, + "start": 32019, + "end": 32078, "loc": { "start": { - "line": 927, + "line": 926, "column": 4 }, "end": { - "line": 929, + "line": 928, "column": 5 } }, @@ -67906,15 +67766,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 32083, - "end": 32090, + "start": 32023, + "end": 32030, "loc": { "start": { - "line": 927, + "line": 926, "column": 8 }, "end": { - "line": 927, + "line": 926, "column": 15 }, "identifierName": "navMode" @@ -67929,87 +67789,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 32093, - "end": 32138, + "start": 32033, + "end": 32078, "loc": { "start": { - "line": 927, + "line": 926, "column": 18 }, "end": { - "line": 929, + "line": 928, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 32103, - "end": 32132, + "start": 32043, + "end": 32072, "loc": { "start": { - "line": 928, + "line": 927, "column": 8 }, "end": { - "line": 928, + "line": 927, "column": 37 } }, "argument": { "type": "MemberExpression", - "start": 32110, - "end": 32131, + "start": 32050, + "end": 32071, "loc": { "start": { - "line": 928, + "line": 927, "column": 15 }, "end": { - "line": 928, + "line": 927, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 32110, - "end": 32123, + "start": 32050, + "end": 32063, "loc": { "start": { - "line": 928, + "line": 927, "column": 15 }, "end": { - "line": 928, + "line": 927, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 32110, - "end": 32114, + "start": 32050, + "end": 32054, "loc": { "start": { - "line": 928, + "line": 927, "column": 15 }, "end": { - "line": 928, + "line": 927, "column": 19 } } }, "property": { "type": "Identifier", - "start": 32115, - "end": 32123, + "start": 32055, + "end": 32063, "loc": { "start": { - "line": 928, + "line": 927, "column": 20 }, "end": { - "line": 928, + "line": 927, "column": 28 }, "identifierName": "_configs" @@ -68020,15 +67880,15 @@ }, "property": { "type": "Identifier", - "start": 32124, - "end": 32131, + "start": 32064, + "end": 32071, "loc": { "start": { - "line": 928, + "line": 927, "column": 29 }, "end": { - "line": 928, + "line": 927, "column": 36 }, "identifierName": "navMode" @@ -68046,15 +67906,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the current navigation mode.\n *\n * @returns {String} The navigation mode: \"orbit\", \"firstPerson\" or \"planView\".\n ", - "start": 31931, - "end": 32074, + "start": 31871, + "end": 32014, "loc": { "start": { - "line": 922, + "line": 921, "column": 4 }, "end": { - "line": 926, + "line": 925, "column": 7 } } @@ -68064,15 +67924,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 32144, - "end": 32555, + "start": 32084, + "end": 32495, "loc": { "start": { - "line": 931, + "line": 930, "column": 4 }, "end": { - "line": 940, + "line": 939, "column": 7 } } @@ -68081,15 +67941,15 @@ }, { "type": "ClassMethod", - "start": 32560, - "end": 32664, + "start": 32500, + "end": 32604, "loc": { "start": { - "line": 941, + "line": 940, "column": 4 }, "end": { - "line": 944, + "line": 943, "column": 5 } }, @@ -68097,15 +67957,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 32564, - "end": 32578, + "start": 32504, + "end": 32518, "loc": { "start": { - "line": 941, + "line": 940, "column": 8 }, "end": { - "line": 941, + "line": 940, "column": 22 }, "identifierName": "pointerEnabled" @@ -68120,15 +67980,15 @@ "params": [ { "type": "Identifier", - "start": 32579, - "end": 32584, + "start": 32519, + "end": 32524, "loc": { "start": { - "line": 941, + "line": 940, "column": 23 }, "end": { - "line": 941, + "line": 940, "column": 28 }, "identifierName": "value" @@ -68138,87 +67998,87 @@ ], "body": { "type": "BlockStatement", - "start": 32586, - "end": 32664, + "start": 32526, + "end": 32604, "loc": { "start": { - "line": 941, + "line": 940, "column": 30 }, "end": { - "line": 944, + "line": 943, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 32596, - "end": 32610, + "start": 32536, + "end": 32550, "loc": { "start": { - "line": 942, + "line": 941, "column": 8 }, "end": { - "line": 942, + "line": 941, "column": 22 } }, "expression": { "type": "CallExpression", - "start": 32596, - "end": 32609, + "start": 32536, + "end": 32549, "loc": { "start": { - "line": 942, + "line": 941, "column": 8 }, "end": { - "line": 942, + "line": 941, "column": 21 } }, "callee": { "type": "MemberExpression", - "start": 32596, - "end": 32607, + "start": 32536, + "end": 32547, "loc": { "start": { - "line": 942, + "line": 941, "column": 8 }, "end": { - "line": 942, + "line": 941, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 32596, - "end": 32600, + "start": 32536, + "end": 32540, "loc": { "start": { - "line": 942, + "line": 941, "column": 8 }, "end": { - "line": 942, + "line": 941, "column": 12 } } }, "property": { "type": "Identifier", - "start": 32601, - "end": 32607, + "start": 32541, + "end": 32547, "loc": { "start": { - "line": 942, + "line": 941, "column": 13 }, "end": { - "line": 942, + "line": 941, "column": 19 }, "identifierName": "_reset" @@ -68232,87 +68092,87 @@ }, { "type": "ExpressionStatement", - "start": 32619, - "end": 32658, + "start": 32559, + "end": 32598, "loc": { "start": { - "line": 943, + "line": 942, "column": 8 }, "end": { - "line": 943, + "line": 942, "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 32619, - "end": 32657, + "start": 32559, + "end": 32597, "loc": { "start": { - "line": 943, + "line": 942, "column": 8 }, "end": { - "line": 943, + "line": 942, "column": 46 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 32619, - "end": 32647, + "start": 32559, + "end": 32587, "loc": { "start": { - "line": 943, + "line": 942, "column": 8 }, "end": { - "line": 943, + "line": 942, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 32619, - "end": 32632, + "start": 32559, + "end": 32572, "loc": { "start": { - "line": 943, + "line": 942, "column": 8 }, "end": { - "line": 943, + "line": 942, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 32619, - "end": 32623, + "start": 32559, + "end": 32563, "loc": { "start": { - "line": 943, + "line": 942, "column": 8 }, "end": { - "line": 943, + "line": 942, "column": 12 } } }, "property": { "type": "Identifier", - "start": 32624, - "end": 32632, + "start": 32564, + "end": 32572, "loc": { "start": { - "line": 943, + "line": 942, "column": 13 }, "end": { - "line": 943, + "line": 942, "column": 21 }, "identifierName": "_configs" @@ -68323,15 +68183,15 @@ }, "property": { "type": "Identifier", - "start": 32633, - "end": 32647, + "start": 32573, + "end": 32587, "loc": { "start": { - "line": 943, + "line": 942, "column": 22 }, "end": { - "line": 943, + "line": 942, "column": 36 }, "identifierName": "pointerEnabled" @@ -68342,15 +68202,15 @@ }, "right": { "type": "UnaryExpression", - "start": 32650, - "end": 32657, + "start": 32590, + "end": 32597, "loc": { "start": { - "line": 943, + "line": 942, "column": 39 }, "end": { - "line": 943, + "line": 942, "column": 46 } }, @@ -68358,15 +68218,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 32651, - "end": 32657, + "start": 32591, + "end": 32597, "loc": { "start": { - "line": 943, + "line": 942, "column": 40 }, "end": { - "line": 943, + "line": 942, "column": 46 } }, @@ -68374,15 +68234,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 32652, - "end": 32657, + "start": 32592, + "end": 32597, "loc": { "start": { - "line": 943, + "line": 942, "column": 41 }, "end": { - "line": 943, + "line": 942, "column": 46 }, "identifierName": "value" @@ -68406,15 +68266,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 32144, - "end": 32555, + "start": 32084, + "end": 32495, "loc": { "start": { - "line": 931, + "line": 930, "column": 4 }, "end": { - "line": 940, + "line": 939, "column": 7 } } @@ -68423,15 +68283,15 @@ }, { "type": "ClassMethod", - "start": 32670, - "end": 33084, + "start": 32610, + "end": 33024, "loc": { "start": { - "line": 946, + "line": 945, "column": 4 }, "end": { - "line": 959, + "line": 958, "column": 5 } }, @@ -68439,15 +68299,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 32670, - "end": 32676, + "start": 32610, + "end": 32616, "loc": { "start": { - "line": 946, + "line": 945, "column": 4 }, "end": { - "line": 946, + "line": 945, "column": 10 }, "identifierName": "_reset" @@ -68462,73 +68322,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 32679, - "end": 33084, + "start": 32619, + "end": 33024, "loc": { "start": { - "line": 946, + "line": 945, "column": 13 }, "end": { - "line": 959, + "line": 958, "column": 5 } }, "body": [ { "type": "ForStatement", - "start": 32689, - "end": 32886, + "start": 32629, + "end": 32826, "loc": { "start": { - "line": 947, + "line": 946, "column": 8 }, "end": { - "line": 952, + "line": 951, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 32694, - "end": 32732, + "start": 32634, + "end": 32672, "loc": { "start": { - "line": 947, + "line": 946, "column": 13 }, "end": { - "line": 947, + "line": 946, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 32698, - "end": 32703, + "start": 32638, + "end": 32643, "loc": { "start": { - "line": 947, + "line": 946, "column": 17 }, "end": { - "line": 947, + "line": 946, "column": 22 } }, "id": { "type": "Identifier", - "start": 32698, - "end": 32699, + "start": 32638, + "end": 32639, "loc": { "start": { - "line": 947, + "line": 946, "column": 17 }, "end": { - "line": 947, + "line": 946, "column": 18 }, "identifierName": "i" @@ -68537,15 +68397,15 @@ }, "init": { "type": "NumericLiteral", - "start": 32702, - "end": 32703, + "start": 32642, + "end": 32643, "loc": { "start": { - "line": 947, + "line": 946, "column": 21 }, "end": { - "line": 947, + "line": 946, "column": 22 } }, @@ -68558,29 +68418,29 @@ }, { "type": "VariableDeclarator", - "start": 32705, - "end": 32732, + "start": 32645, + "end": 32672, "loc": { "start": { - "line": 947, + "line": 946, "column": 24 }, "end": { - "line": 947, + "line": 946, "column": 51 } }, "id": { "type": "Identifier", - "start": 32705, - "end": 32708, + "start": 32645, + "end": 32648, "loc": { "start": { - "line": 947, + "line": 946, "column": 24 }, "end": { - "line": 947, + "line": 946, "column": 27 }, "identifierName": "len" @@ -68589,58 +68449,58 @@ }, "init": { "type": "MemberExpression", - "start": 32711, - "end": 32732, + "start": 32651, + "end": 32672, "loc": { "start": { - "line": 947, + "line": 946, "column": 30 }, "end": { - "line": 947, + "line": 946, "column": 51 } }, "object": { "type": "MemberExpression", - "start": 32711, - "end": 32725, + "start": 32651, + "end": 32665, "loc": { "start": { - "line": 947, + "line": 946, "column": 30 }, "end": { - "line": 947, + "line": 946, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 32711, - "end": 32715, + "start": 32651, + "end": 32655, "loc": { "start": { - "line": 947, + "line": 946, "column": 30 }, "end": { - "line": 947, + "line": 946, "column": 34 } } }, "property": { "type": "Identifier", - "start": 32716, - "end": 32725, + "start": 32656, + "end": 32665, "loc": { "start": { - "line": 947, + "line": 946, "column": 35 }, "end": { - "line": 947, + "line": 946, "column": 44 }, "identifierName": "_handlers" @@ -68651,15 +68511,15 @@ }, "property": { "type": "Identifier", - "start": 32726, - "end": 32732, + "start": 32666, + "end": 32672, "loc": { "start": { - "line": 947, + "line": 946, "column": 45 }, "end": { - "line": 947, + "line": 946, "column": 51 }, "identifierName": "length" @@ -68674,29 +68534,29 @@ }, "test": { "type": "BinaryExpression", - "start": 32734, - "end": 32741, + "start": 32674, + "end": 32681, "loc": { "start": { - "line": 947, + "line": 946, "column": 53 }, "end": { - "line": 947, + "line": 946, "column": 60 } }, "left": { "type": "Identifier", - "start": 32734, - "end": 32735, + "start": 32674, + "end": 32675, "loc": { "start": { - "line": 947, + "line": 946, "column": 53 }, "end": { - "line": 947, + "line": 946, "column": 54 }, "identifierName": "i" @@ -68706,15 +68566,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 32738, - "end": 32741, + "start": 32678, + "end": 32681, "loc": { "start": { - "line": 947, + "line": 946, "column": 57 }, "end": { - "line": 947, + "line": 946, "column": 60 }, "identifierName": "len" @@ -68724,15 +68584,15 @@ }, "update": { "type": "UpdateExpression", - "start": 32743, - "end": 32746, + "start": 32683, + "end": 32686, "loc": { "start": { - "line": 947, + "line": 946, "column": 62 }, "end": { - "line": 947, + "line": 946, "column": 65 } }, @@ -68740,15 +68600,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 32743, - "end": 32744, + "start": 32683, + "end": 32684, "loc": { "start": { - "line": 947, + "line": 946, "column": 62 }, "end": { - "line": 947, + "line": 946, "column": 63 }, "identifierName": "i" @@ -68758,59 +68618,59 @@ }, "body": { "type": "BlockStatement", - "start": 32748, - "end": 32886, + "start": 32688, + "end": 32826, "loc": { "start": { - "line": 947, + "line": 946, "column": 67 }, "end": { - "line": 952, + "line": 951, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 32762, - "end": 32796, + "start": 32702, + "end": 32736, "loc": { "start": { - "line": 948, + "line": 947, "column": 12 }, "end": { - "line": 948, + "line": 947, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 32768, - "end": 32795, + "start": 32708, + "end": 32735, "loc": { "start": { - "line": 948, + "line": 947, "column": 18 }, "end": { - "line": 948, + "line": 947, "column": 45 } }, "id": { "type": "Identifier", - "start": 32768, - "end": 32775, + "start": 32708, + "end": 32715, "loc": { "start": { - "line": 948, + "line": 947, "column": 18 }, "end": { - "line": 948, + "line": 947, "column": 25 }, "identifierName": "handler" @@ -68819,58 +68679,58 @@ }, "init": { "type": "MemberExpression", - "start": 32778, - "end": 32795, + "start": 32718, + "end": 32735, "loc": { "start": { - "line": 948, + "line": 947, "column": 28 }, "end": { - "line": 948, + "line": 947, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 32778, - "end": 32792, + "start": 32718, + "end": 32732, "loc": { "start": { - "line": 948, + "line": 947, "column": 28 }, "end": { - "line": 948, + "line": 947, "column": 42 } }, "object": { "type": "ThisExpression", - "start": 32778, - "end": 32782, + "start": 32718, + "end": 32722, "loc": { "start": { - "line": 948, + "line": 947, "column": 28 }, "end": { - "line": 948, + "line": 947, "column": 32 } } }, "property": { "type": "Identifier", - "start": 32783, - "end": 32792, + "start": 32723, + "end": 32732, "loc": { "start": { - "line": 948, + "line": 947, "column": 33 }, "end": { - "line": 948, + "line": 947, "column": 42 }, "identifierName": "_handlers" @@ -68881,15 +68741,15 @@ }, "property": { "type": "Identifier", - "start": 32793, - "end": 32794, + "start": 32733, + "end": 32734, "loc": { "start": { - "line": 948, + "line": 947, "column": 43 }, "end": { - "line": 948, + "line": 947, "column": 44 }, "identifierName": "i" @@ -68904,43 +68764,43 @@ }, { "type": "IfStatement", - "start": 32809, - "end": 32876, + "start": 32749, + "end": 32816, "loc": { "start": { - "line": 949, + "line": 948, "column": 12 }, "end": { - "line": 951, + "line": 950, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 32813, - "end": 32826, + "start": 32753, + "end": 32766, "loc": { "start": { - "line": 949, + "line": 948, "column": 16 }, "end": { - "line": 949, + "line": 948, "column": 29 } }, "object": { "type": "Identifier", - "start": 32813, - "end": 32820, + "start": 32753, + "end": 32760, "loc": { "start": { - "line": 949, + "line": 948, "column": 16 }, "end": { - "line": 949, + "line": 948, "column": 23 }, "identifierName": "handler" @@ -68949,15 +68809,15 @@ }, "property": { "type": "Identifier", - "start": 32821, - "end": 32826, + "start": 32761, + "end": 32766, "loc": { "start": { - "line": 949, + "line": 948, "column": 24 }, "end": { - "line": 949, + "line": 948, "column": 29 }, "identifierName": "reset" @@ -68968,72 +68828,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 32828, - "end": 32876, + "start": 32768, + "end": 32816, "loc": { "start": { - "line": 949, + "line": 948, "column": 31 }, "end": { - "line": 951, + "line": 950, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 32846, - "end": 32862, + "start": 32786, + "end": 32802, "loc": { "start": { - "line": 950, + "line": 949, "column": 16 }, "end": { - "line": 950, + "line": 949, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 32846, - "end": 32861, + "start": 32786, + "end": 32801, "loc": { "start": { - "line": 950, + "line": 949, "column": 16 }, "end": { - "line": 950, + "line": 949, "column": 31 } }, "callee": { "type": "MemberExpression", - "start": 32846, - "end": 32859, + "start": 32786, + "end": 32799, "loc": { "start": { - "line": 950, + "line": 949, "column": 16 }, "end": { - "line": 950, + "line": 949, "column": 29 } }, "object": { "type": "Identifier", - "start": 32846, - "end": 32853, + "start": 32786, + "end": 32793, "loc": { "start": { - "line": 950, + "line": 949, "column": 16 }, "end": { - "line": 950, + "line": 949, "column": 23 }, "identifierName": "handler" @@ -69042,15 +68902,15 @@ }, "property": { "type": "Identifier", - "start": 32854, - "end": 32859, + "start": 32794, + "end": 32799, "loc": { "start": { - "line": 950, + "line": 949, "column": 24 }, "end": { - "line": 950, + "line": 949, "column": 29 }, "identifierName": "reset" @@ -69073,87 +68933,87 @@ }, { "type": "ExpressionStatement", - "start": 32896, - "end": 32924, + "start": 32836, + "end": 32864, "loc": { "start": { - "line": 954, + "line": 953, "column": 8 }, "end": { - "line": 954, + "line": 953, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 32896, - "end": 32923, + "start": 32836, + "end": 32863, "loc": { "start": { - "line": 954, + "line": 953, "column": 8 }, "end": { - "line": 954, + "line": 953, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 32896, - "end": 32919, + "start": 32836, + "end": 32859, "loc": { "start": { - "line": 954, + "line": 953, "column": 8 }, "end": { - "line": 954, + "line": 953, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 32896, - "end": 32909, + "start": 32836, + "end": 32849, "loc": { "start": { - "line": 954, + "line": 953, "column": 8 }, "end": { - "line": 954, + "line": 953, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 32896, - "end": 32900, + "start": 32836, + "end": 32840, "loc": { "start": { - "line": 954, + "line": 953, "column": 8 }, "end": { - "line": 954, + "line": 953, "column": 12 } } }, "property": { "type": "Identifier", - "start": 32901, - "end": 32909, + "start": 32841, + "end": 32849, "loc": { "start": { - "line": 954, + "line": 953, "column": 13 }, "end": { - "line": 954, + "line": 953, "column": 21 }, "identifierName": "_updates" @@ -69164,15 +69024,15 @@ }, "property": { "type": "Identifier", - "start": 32910, - "end": 32919, + "start": 32850, + "end": 32859, "loc": { "start": { - "line": 954, + "line": 953, "column": 22 }, "end": { - "line": 954, + "line": 953, "column": 31 }, "identifierName": "panDeltaX" @@ -69183,15 +69043,15 @@ }, "right": { "type": "NumericLiteral", - "start": 32922, - "end": 32923, + "start": 32862, + "end": 32863, "loc": { "start": { - "line": 954, + "line": 953, "column": 34 }, "end": { - "line": 954, + "line": 953, "column": 35 } }, @@ -69205,87 +69065,87 @@ }, { "type": "ExpressionStatement", - "start": 32933, - "end": 32961, + "start": 32873, + "end": 32901, "loc": { "start": { - "line": 955, + "line": 954, "column": 8 }, "end": { - "line": 955, + "line": 954, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 32933, - "end": 32960, + "start": 32873, + "end": 32900, "loc": { "start": { - "line": 955, + "line": 954, "column": 8 }, "end": { - "line": 955, + "line": 954, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 32933, - "end": 32956, + "start": 32873, + "end": 32896, "loc": { "start": { - "line": 955, + "line": 954, "column": 8 }, "end": { - "line": 955, + "line": 954, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 32933, - "end": 32946, + "start": 32873, + "end": 32886, "loc": { "start": { - "line": 955, + "line": 954, "column": 8 }, "end": { - "line": 955, + "line": 954, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 32933, - "end": 32937, + "start": 32873, + "end": 32877, "loc": { "start": { - "line": 955, + "line": 954, "column": 8 }, "end": { - "line": 955, + "line": 954, "column": 12 } } }, "property": { "type": "Identifier", - "start": 32938, - "end": 32946, + "start": 32878, + "end": 32886, "loc": { "start": { - "line": 955, + "line": 954, "column": 13 }, "end": { - "line": 955, + "line": 954, "column": 21 }, "identifierName": "_updates" @@ -69296,15 +69156,15 @@ }, "property": { "type": "Identifier", - "start": 32947, - "end": 32956, + "start": 32887, + "end": 32896, "loc": { "start": { - "line": 955, + "line": 954, "column": 22 }, "end": { - "line": 955, + "line": 954, "column": 31 }, "identifierName": "panDeltaY" @@ -69315,15 +69175,15 @@ }, "right": { "type": "NumericLiteral", - "start": 32959, - "end": 32960, + "start": 32899, + "end": 32900, "loc": { "start": { - "line": 955, + "line": 954, "column": 34 }, "end": { - "line": 955, + "line": 954, "column": 35 } }, @@ -69337,87 +69197,87 @@ }, { "type": "ExpressionStatement", - "start": 32970, - "end": 33001, + "start": 32910, + "end": 32941, "loc": { "start": { - "line": 956, + "line": 955, "column": 8 }, "end": { - "line": 956, + "line": 955, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 32970, - "end": 33000, + "start": 32910, + "end": 32940, "loc": { "start": { - "line": 956, + "line": 955, "column": 8 }, "end": { - "line": 956, + "line": 955, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 32970, - "end": 32996, + "start": 32910, + "end": 32936, "loc": { "start": { - "line": 956, + "line": 955, "column": 8 }, "end": { - "line": 956, + "line": 955, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 32970, - "end": 32983, + "start": 32910, + "end": 32923, "loc": { "start": { - "line": 956, + "line": 955, "column": 8 }, "end": { - "line": 956, + "line": 955, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 32970, - "end": 32974, + "start": 32910, + "end": 32914, "loc": { "start": { - "line": 956, + "line": 955, "column": 8 }, "end": { - "line": 956, + "line": 955, "column": 12 } } }, "property": { "type": "Identifier", - "start": 32975, - "end": 32983, + "start": 32915, + "end": 32923, "loc": { "start": { - "line": 956, + "line": 955, "column": 13 }, "end": { - "line": 956, + "line": 955, "column": 21 }, "identifierName": "_updates" @@ -69428,15 +69288,15 @@ }, "property": { "type": "Identifier", - "start": 32984, - "end": 32996, + "start": 32924, + "end": 32936, "loc": { "start": { - "line": 956, + "line": 955, "column": 22 }, "end": { - "line": 956, + "line": 955, "column": 34 }, "identifierName": "rotateDeltaX" @@ -69447,15 +69307,15 @@ }, "right": { "type": "NumericLiteral", - "start": 32999, - "end": 33000, + "start": 32939, + "end": 32940, "loc": { "start": { - "line": 956, + "line": 955, "column": 37 }, "end": { - "line": 956, + "line": 955, "column": 38 } }, @@ -69469,87 +69329,87 @@ }, { "type": "ExpressionStatement", - "start": 33010, - "end": 33041, + "start": 32950, + "end": 32981, "loc": { "start": { - "line": 957, + "line": 956, "column": 8 }, "end": { - "line": 957, + "line": 956, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 33010, - "end": 33040, + "start": 32950, + "end": 32980, "loc": { "start": { - "line": 957, + "line": 956, "column": 8 }, "end": { - "line": 957, + "line": 956, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 33010, - "end": 33036, + "start": 32950, + "end": 32976, "loc": { "start": { - "line": 957, + "line": 956, "column": 8 }, "end": { - "line": 957, + "line": 956, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 33010, - "end": 33023, + "start": 32950, + "end": 32963, "loc": { "start": { - "line": 957, + "line": 956, "column": 8 }, "end": { - "line": 957, + "line": 956, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 33010, - "end": 33014, + "start": 32950, + "end": 32954, "loc": { "start": { - "line": 957, + "line": 956, "column": 8 }, "end": { - "line": 957, + "line": 956, "column": 12 } } }, "property": { "type": "Identifier", - "start": 33015, - "end": 33023, + "start": 32955, + "end": 32963, "loc": { "start": { - "line": 957, + "line": 956, "column": 13 }, "end": { - "line": 957, + "line": 956, "column": 21 }, "identifierName": "_updates" @@ -69560,15 +69420,15 @@ }, "property": { "type": "Identifier", - "start": 33024, - "end": 33036, + "start": 32964, + "end": 32976, "loc": { "start": { - "line": 957, + "line": 956, "column": 22 }, "end": { - "line": 957, + "line": 956, "column": 34 }, "identifierName": "rotateDeltaY" @@ -69579,15 +69439,15 @@ }, "right": { "type": "NumericLiteral", - "start": 33039, - "end": 33040, + "start": 32979, + "end": 32980, "loc": { "start": { - "line": 957, + "line": 956, "column": 37 }, "end": { - "line": 957, + "line": 956, "column": 38 } }, @@ -69601,87 +69461,87 @@ }, { "type": "ExpressionStatement", - "start": 33050, - "end": 33078, + "start": 32990, + "end": 33018, "loc": { "start": { - "line": 958, + "line": 957, "column": 8 }, "end": { - "line": 958, + "line": 957, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 33050, - "end": 33077, + "start": 32990, + "end": 33017, "loc": { "start": { - "line": 958, + "line": 957, "column": 8 }, "end": { - "line": 958, + "line": 957, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 33050, - "end": 33073, + "start": 32990, + "end": 33013, "loc": { "start": { - "line": 958, + "line": 957, "column": 8 }, "end": { - "line": 958, + "line": 957, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 33050, - "end": 33063, + "start": 32990, + "end": 33003, "loc": { "start": { - "line": 958, + "line": 957, "column": 8 }, "end": { - "line": 958, + "line": 957, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 33050, - "end": 33054, + "start": 32990, + "end": 32994, "loc": { "start": { - "line": 958, + "line": 957, "column": 8 }, "end": { - "line": 958, + "line": 957, "column": 12 } } }, "property": { "type": "Identifier", - "start": 33055, - "end": 33063, + "start": 32995, + "end": 33003, "loc": { "start": { - "line": 958, + "line": 957, "column": 13 }, "end": { - "line": 958, + "line": 957, "column": 21 }, "identifierName": "_updates" @@ -69692,15 +69552,15 @@ }, "property": { "type": "Identifier", - "start": 33064, - "end": 33073, + "start": 33004, + "end": 33013, "loc": { "start": { - "line": 958, + "line": 957, "column": 22 }, "end": { - "line": 958, + "line": 957, "column": 31 }, "identifierName": "dolyDelta" @@ -69711,15 +69571,15 @@ }, "right": { "type": "NumericLiteral", - "start": 33076, - "end": 33077, + "start": 33016, + "end": 33017, "loc": { "start": { - "line": 958, + "line": 957, "column": 34 }, "end": { - "line": 958, + "line": 957, "column": 35 } }, @@ -69739,15 +69599,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 33090, - "end": 33514, + "start": 33030, + "end": 33454, "loc": { "start": { - "line": 961, + "line": 960, "column": 4 }, "end": { - "line": 970, + "line": 969, "column": 7 } } @@ -69756,15 +69616,15 @@ }, { "type": "ClassMethod", - "start": 33519, - "end": 33592, + "start": 33459, + "end": 33532, "loc": { "start": { - "line": 971, + "line": 970, "column": 4 }, "end": { - "line": 973, + "line": 972, "column": 5 } }, @@ -69772,15 +69632,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 33523, - "end": 33537, + "start": 33463, + "end": 33477, "loc": { "start": { - "line": 971, + "line": 970, "column": 8 }, "end": { - "line": 971, + "line": 970, "column": 22 }, "identifierName": "pointerEnabled" @@ -69795,87 +69655,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 33540, - "end": 33592, + "start": 33480, + "end": 33532, "loc": { "start": { - "line": 971, + "line": 970, "column": 25 }, "end": { - "line": 973, + "line": 972, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 33550, - "end": 33586, + "start": 33490, + "end": 33526, "loc": { "start": { - "line": 972, + "line": 971, "column": 8 }, "end": { - "line": 972, + "line": 971, "column": 44 } }, "argument": { "type": "MemberExpression", - "start": 33557, - "end": 33585, + "start": 33497, + "end": 33525, "loc": { "start": { - "line": 972, + "line": 971, "column": 15 }, "end": { - "line": 972, + "line": 971, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 33557, - "end": 33570, + "start": 33497, + "end": 33510, "loc": { "start": { - "line": 972, + "line": 971, "column": 15 }, "end": { - "line": 972, + "line": 971, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 33557, - "end": 33561, + "start": 33497, + "end": 33501, "loc": { "start": { - "line": 972, + "line": 971, "column": 15 }, "end": { - "line": 972, + "line": 971, "column": 19 } } }, "property": { "type": "Identifier", - "start": 33562, - "end": 33570, + "start": 33502, + "end": 33510, "loc": { "start": { - "line": 972, + "line": 971, "column": 20 }, "end": { - "line": 972, + "line": 971, "column": 28 }, "identifierName": "_configs" @@ -69886,15 +69746,15 @@ }, "property": { "type": "Identifier", - "start": 33571, - "end": 33585, + "start": 33511, + "end": 33525, "loc": { "start": { - "line": 972, + "line": 971, "column": 29 }, "end": { - "line": 972, + "line": 971, "column": 43 }, "identifierName": "pointerEnabled" @@ -69912,15 +69772,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 33090, - "end": 33514, + "start": 33030, + "end": 33454, "loc": { "start": { - "line": 961, + "line": 960, "column": 4 }, "end": { - "line": 970, + "line": 969, "column": 7 } } @@ -69930,15 +69790,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 33598, - "end": 34236, + "start": 33538, + "end": 34176, "loc": { "start": { - "line": 975, + "line": 974, "column": 4 }, "end": { - "line": 989, + "line": 988, "column": 7 } } @@ -69947,15 +69807,15 @@ }, { "type": "ClassMethod", - "start": 34241, - "end": 34330, + "start": 34181, + "end": 34270, "loc": { "start": { - "line": 990, + "line": 989, "column": 4 }, "end": { - "line": 992, + "line": 991, "column": 5 } }, @@ -69963,15 +69823,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 34245, - "end": 34258, + "start": 34185, + "end": 34198, "loc": { "start": { - "line": 990, + "line": 989, "column": 8 }, "end": { - "line": 990, + "line": 989, "column": 21 }, "identifierName": "followPointer" @@ -69986,15 +69846,15 @@ "params": [ { "type": "Identifier", - "start": 34259, - "end": 34264, + "start": 34199, + "end": 34204, "loc": { "start": { - "line": 990, + "line": 989, "column": 22 }, "end": { - "line": 990, + "line": 989, "column": 27 }, "identifierName": "value" @@ -70004,102 +69864,102 @@ ], "body": { "type": "BlockStatement", - "start": 34266, - "end": 34330, + "start": 34206, + "end": 34270, "loc": { "start": { - "line": 990, + "line": 989, "column": 29 }, "end": { - "line": 992, + "line": 991, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 34276, - "end": 34324, + "start": 34216, + "end": 34264, "loc": { "start": { - "line": 991, + "line": 990, "column": 8 }, "end": { - "line": 991, + "line": 990, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 34276, - "end": 34323, + "start": 34216, + "end": 34263, "loc": { "start": { - "line": 991, + "line": 990, "column": 8 }, "end": { - "line": 991, + "line": 990, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 34276, - "end": 34303, + "start": 34216, + "end": 34243, "loc": { "start": { - "line": 991, + "line": 990, "column": 8 }, "end": { - "line": 991, + "line": 990, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 34276, - "end": 34289, + "start": 34216, + "end": 34229, "loc": { "start": { - "line": 991, + "line": 990, "column": 8 }, "end": { - "line": 991, + "line": 990, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 34276, - "end": 34280, + "start": 34216, + "end": 34220, "loc": { "start": { - "line": 991, + "line": 990, "column": 8 }, "end": { - "line": 991, + "line": 990, "column": 12 } } }, "property": { "type": "Identifier", - "start": 34281, - "end": 34289, + "start": 34221, + "end": 34229, "loc": { "start": { - "line": 991, + "line": 990, "column": 13 }, "end": { - "line": 991, + "line": 990, "column": 21 }, "identifierName": "_configs" @@ -70110,15 +69970,15 @@ }, "property": { "type": "Identifier", - "start": 34290, - "end": 34303, + "start": 34230, + "end": 34243, "loc": { "start": { - "line": 991, + "line": 990, "column": 22 }, "end": { - "line": 991, + "line": 990, "column": 35 }, "identifierName": "followPointer" @@ -70129,29 +69989,29 @@ }, "right": { "type": "BinaryExpression", - "start": 34307, - "end": 34322, + "start": 34247, + "end": 34262, "loc": { "start": { - "line": 991, + "line": 990, "column": 39 }, "end": { - "line": 991, + "line": 990, "column": 54 } }, "left": { "type": "Identifier", - "start": 34307, - "end": 34312, + "start": 34247, + "end": 34252, "loc": { "start": { - "line": 991, + "line": 990, "column": 39 }, "end": { - "line": 991, + "line": 990, "column": 44 }, "identifierName": "value" @@ -70161,15 +70021,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 34317, - "end": 34322, + "start": 34257, + "end": 34262, "loc": { "start": { - "line": 991, + "line": 990, "column": 49 }, "end": { - "line": 991, + "line": 990, "column": 54 } }, @@ -70177,7 +70037,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 34306 + "parenStart": 34246 } } } @@ -70190,15 +70050,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 33598, - "end": 34236, + "start": 33538, + "end": 34176, "loc": { "start": { - "line": 975, + "line": 974, "column": 4 }, "end": { - "line": 989, + "line": 988, "column": 7 } } @@ -70208,15 +70068,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 34336, - "end": 34965, + "start": 34276, + "end": 34905, "loc": { "start": { - "line": 994, + "line": 993, "column": 4 }, "end": { - "line": 1008, + "line": 1007, "column": 7 } } @@ -70225,15 +70085,15 @@ }, { "type": "ClassMethod", - "start": 34970, - "end": 35041, + "start": 34910, + "end": 34981, "loc": { "start": { - "line": 1009, + "line": 1008, "column": 4 }, "end": { - "line": 1011, + "line": 1010, "column": 5 } }, @@ -70241,15 +70101,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 34974, - "end": 34987, + "start": 34914, + "end": 34927, "loc": { "start": { - "line": 1009, + "line": 1008, "column": 8 }, "end": { - "line": 1009, + "line": 1008, "column": 21 }, "identifierName": "followPointer" @@ -70264,87 +70124,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 34990, - "end": 35041, + "start": 34930, + "end": 34981, "loc": { "start": { - "line": 1009, + "line": 1008, "column": 24 }, "end": { - "line": 1011, + "line": 1010, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 35000, - "end": 35035, + "start": 34940, + "end": 34975, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 8 }, "end": { - "line": 1010, + "line": 1009, "column": 43 } }, "argument": { "type": "MemberExpression", - "start": 35007, - "end": 35034, + "start": 34947, + "end": 34974, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 15 }, "end": { - "line": 1010, + "line": 1009, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 35007, - "end": 35020, + "start": 34947, + "end": 34960, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 15 }, "end": { - "line": 1010, + "line": 1009, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 35007, - "end": 35011, + "start": 34947, + "end": 34951, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 15 }, "end": { - "line": 1010, + "line": 1009, "column": 19 } } }, "property": { "type": "Identifier", - "start": 35012, - "end": 35020, + "start": 34952, + "end": 34960, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 20 }, "end": { - "line": 1010, + "line": 1009, "column": 28 }, "identifierName": "_configs" @@ -70355,15 +70215,15 @@ }, "property": { "type": "Identifier", - "start": 35021, - "end": 35034, + "start": 34961, + "end": 34974, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 29 }, "end": { - "line": 1010, + "line": 1009, "column": 42 }, "identifierName": "followPointer" @@ -70381,15 +70241,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 34336, - "end": 34965, + "start": 34276, + "end": 34905, "loc": { "start": { - "line": 994, + "line": 993, "column": 4 }, "end": { - "line": 1008, + "line": 1007, "column": 7 } } @@ -70399,15 +70259,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 35047, - "end": 35280, + "start": 34987, + "end": 35220, "loc": { "start": { - "line": 1013, + "line": 1012, "column": 4 }, "end": { - "line": 1019, + "line": 1018, "column": 7 } } @@ -70416,15 +70276,15 @@ }, { "type": "ClassMethod", - "start": 35285, - "end": 35380, + "start": 35225, + "end": 35320, "loc": { "start": { - "line": 1020, + "line": 1019, "column": 4 }, "end": { - "line": 1022, + "line": 1021, "column": 5 } }, @@ -70432,15 +70292,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 35289, - "end": 35297, + "start": 35229, + "end": 35237, "loc": { "start": { - "line": 1020, + "line": 1019, "column": 8 }, "end": { - "line": 1020, + "line": 1019, "column": 16 }, "identifierName": "pivotPos" @@ -70455,15 +70315,15 @@ "params": [ { "type": "Identifier", - "start": 35298, - "end": 35306, + "start": 35238, + "end": 35246, "loc": { "start": { - "line": 1020, + "line": 1019, "column": 17 }, "end": { - "line": 1020, + "line": 1019, "column": 25 }, "identifierName": "worldPos" @@ -70473,115 +70333,115 @@ ], "body": { "type": "BlockStatement", - "start": 35308, - "end": 35380, + "start": 35248, + "end": 35320, "loc": { "start": { - "line": 1020, + "line": 1019, "column": 27 }, "end": { - "line": 1022, + "line": 1021, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 35318, - "end": 35374, + "start": 35258, + "end": 35314, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 8 }, "end": { - "line": 1021, + "line": 1020, "column": 64 } }, "expression": { "type": "CallExpression", - "start": 35318, - "end": 35373, + "start": 35258, + "end": 35313, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 8 }, "end": { - "line": 1021, + "line": 1020, "column": 63 } }, "callee": { "type": "MemberExpression", - "start": 35318, - "end": 35363, + "start": 35258, + "end": 35303, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 8 }, "end": { - "line": 1021, + "line": 1020, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 35318, - "end": 35351, + "start": 35258, + "end": 35291, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 8 }, "end": { - "line": 1021, + "line": 1020, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 35318, - "end": 35335, + "start": 35258, + "end": 35275, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 8 }, "end": { - "line": 1021, + "line": 1020, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 35318, - "end": 35322, + "start": 35258, + "end": 35262, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 8 }, "end": { - "line": 1021, + "line": 1020, "column": 12 } } }, "property": { "type": "Identifier", - "start": 35323, - "end": 35335, + "start": 35263, + "end": 35275, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 13 }, "end": { - "line": 1021, + "line": 1020, "column": 25 }, "identifierName": "_controllers" @@ -70592,15 +70452,15 @@ }, "property": { "type": "Identifier", - "start": 35336, - "end": 35351, + "start": 35276, + "end": 35291, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 26 }, "end": { - "line": 1021, + "line": 1020, "column": 41 }, "identifierName": "pivotController" @@ -70611,15 +70471,15 @@ }, "property": { "type": "Identifier", - "start": 35352, - "end": 35363, + "start": 35292, + "end": 35303, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 42 }, "end": { - "line": 1021, + "line": 1020, "column": 53 }, "identifierName": "setPivotPos" @@ -70631,15 +70491,15 @@ "arguments": [ { "type": "Identifier", - "start": 35364, - "end": 35372, + "start": 35304, + "end": 35312, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 54 }, "end": { - "line": 1021, + "line": 1020, "column": 62 }, "identifierName": "worldPos" @@ -70657,15 +70517,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 35047, - "end": 35280, + "start": 34987, + "end": 35220, "loc": { "start": { - "line": 1013, + "line": 1012, "column": 4 }, "end": { - "line": 1019, + "line": 1018, "column": 7 } } @@ -70675,15 +70535,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 35386, - "end": 35622, + "start": 35326, + "end": 35562, "loc": { "start": { - "line": 1024, + "line": 1023, "column": 4 }, "end": { - "line": 1030, + "line": 1029, "column": 7 } } @@ -70692,15 +70552,15 @@ }, { "type": "ClassMethod", - "start": 35627, - "end": 35713, + "start": 35567, + "end": 35653, "loc": { "start": { - "line": 1031, + "line": 1030, "column": 4 }, "end": { - "line": 1033, + "line": 1032, "column": 5 } }, @@ -70708,15 +70568,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 35631, - "end": 35639, + "start": 35571, + "end": 35579, "loc": { "start": { - "line": 1031, + "line": 1030, "column": 8 }, "end": { - "line": 1031, + "line": 1030, "column": 16 }, "identifierName": "pivotPos" @@ -70731,115 +70591,115 @@ "params": [], "body": { "type": "BlockStatement", - "start": 35642, - "end": 35713, + "start": 35582, + "end": 35653, "loc": { "start": { - "line": 1031, + "line": 1030, "column": 19 }, "end": { - "line": 1033, + "line": 1032, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 35652, - "end": 35707, + "start": 35592, + "end": 35647, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 8 }, "end": { - "line": 1032, + "line": 1031, "column": 63 } }, "argument": { "type": "CallExpression", - "start": 35659, - "end": 35706, + "start": 35599, + "end": 35646, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 15 }, "end": { - "line": 1032, + "line": 1031, "column": 62 } }, "callee": { "type": "MemberExpression", - "start": 35659, - "end": 35704, + "start": 35599, + "end": 35644, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 15 }, "end": { - "line": 1032, + "line": 1031, "column": 60 } }, "object": { "type": "MemberExpression", - "start": 35659, - "end": 35692, + "start": 35599, + "end": 35632, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 15 }, "end": { - "line": 1032, + "line": 1031, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 35659, - "end": 35676, + "start": 35599, + "end": 35616, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 15 }, "end": { - "line": 1032, + "line": 1031, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 35659, - "end": 35663, + "start": 35599, + "end": 35603, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 15 }, "end": { - "line": 1032, + "line": 1031, "column": 19 } } }, "property": { "type": "Identifier", - "start": 35664, - "end": 35676, + "start": 35604, + "end": 35616, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 20 }, "end": { - "line": 1032, + "line": 1031, "column": 32 }, "identifierName": "_controllers" @@ -70850,15 +70710,15 @@ }, "property": { "type": "Identifier", - "start": 35677, - "end": 35692, + "start": 35617, + "end": 35632, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 33 }, "end": { - "line": 1032, + "line": 1031, "column": 48 }, "identifierName": "pivotController" @@ -70869,15 +70729,15 @@ }, "property": { "type": "Identifier", - "start": 35693, - "end": 35704, + "start": 35633, + "end": 35644, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 49 }, "end": { - "line": 1032, + "line": 1031, "column": 60 }, "identifierName": "getPivotPos" @@ -70897,15 +70757,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 35386, - "end": 35622, + "start": 35326, + "end": 35562, "loc": { "start": { - "line": 1024, + "line": 1023, "column": 4 }, "end": { - "line": 1030, + "line": 1029, "column": 7 } } @@ -70915,15 +70775,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n ", - "start": 35719, - "end": 35834, + "start": 35659, + "end": 35774, "loc": { "start": { - "line": 1035, + "line": 1034, "column": 4 }, "end": { - "line": 1038, + "line": 1037, "column": 7 } } @@ -70932,15 +70792,15 @@ }, { "type": "ClassMethod", - "start": 35839, - "end": 35998, + "start": 35779, + "end": 35938, "loc": { "start": { - "line": 1039, + "line": 1038, "column": 4 }, "end": { - "line": 1042, + "line": 1041, "column": 5 } }, @@ -70948,15 +70808,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 35843, - "end": 35857, + "start": 35783, + "end": 35797, "loc": { "start": { - "line": 1039, + "line": 1038, "column": 8 }, "end": { - "line": 1039, + "line": 1038, "column": 22 }, "identifierName": "dollyToPointer" @@ -70971,15 +70831,15 @@ "params": [ { "type": "Identifier", - "start": 35858, - "end": 35863, + "start": 35798, + "end": 35803, "loc": { "start": { - "line": 1039, + "line": 1038, "column": 23 }, "end": { - "line": 1039, + "line": 1038, "column": 28 }, "identifierName": "value" @@ -70989,87 +70849,87 @@ ], "body": { "type": "BlockStatement", - "start": 35865, - "end": 35998, + "start": 35805, + "end": 35938, "loc": { "start": { - "line": 1039, + "line": 1038, "column": 30 }, "end": { - "line": 1042, + "line": 1041, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 35875, - "end": 35956, + "start": 35815, + "end": 35896, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 8 }, "end": { - "line": 1040, + "line": 1039, "column": 89 } }, "expression": { "type": "CallExpression", - "start": 35875, - "end": 35955, + "start": 35815, + "end": 35895, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 8 }, "end": { - "line": 1040, + "line": 1039, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 35875, - "end": 35884, + "start": 35815, + "end": 35824, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 8 }, "end": { - "line": 1040, + "line": 1039, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 35875, - "end": 35879, + "start": 35815, + "end": 35819, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 8 }, "end": { - "line": 1040, + "line": 1039, "column": 12 } } }, "property": { "type": "Identifier", - "start": 35880, - "end": 35884, + "start": 35820, + "end": 35824, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 13 }, "end": { - "line": 1040, + "line": 1039, "column": 17 }, "identifierName": "warn" @@ -71081,15 +70941,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 35885, - "end": 35954, + "start": 35825, + "end": 35894, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 18 }, "end": { - "line": 1040, + "line": 1039, "column": 87 } }, @@ -71104,73 +70964,73 @@ }, { "type": "ExpressionStatement", - "start": 35965, - "end": 35992, + "start": 35905, + "end": 35932, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 8 }, "end": { - "line": 1041, + "line": 1040, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 35965, - "end": 35991, + "start": 35905, + "end": 35931, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 8 }, "end": { - "line": 1041, + "line": 1040, "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 35965, - "end": 35983, + "start": 35905, + "end": 35923, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 8 }, "end": { - "line": 1041, + "line": 1040, "column": 26 } }, "object": { "type": "ThisExpression", - "start": 35965, - "end": 35969, + "start": 35905, + "end": 35909, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 8 }, "end": { - "line": 1041, + "line": 1040, "column": 12 } } }, "property": { "type": "Identifier", - "start": 35970, - "end": 35983, + "start": 35910, + "end": 35923, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 13 }, "end": { - "line": 1041, + "line": 1040, "column": 26 }, "identifierName": "followPointer" @@ -71181,15 +71041,15 @@ }, "right": { "type": "Identifier", - "start": 35986, - "end": 35991, + "start": 35926, + "end": 35931, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 29 }, "end": { - "line": 1041, + "line": 1040, "column": 34 }, "identifierName": "value" @@ -71206,15 +71066,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n ", - "start": 35719, - "end": 35834, + "start": 35659, + "end": 35774, "loc": { "start": { - "line": 1035, + "line": 1034, "column": 4 }, "end": { - "line": 1038, + "line": 1037, "column": 7 } } @@ -71224,15 +71084,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n ", - "start": 36004, - "end": 36123, + "start": 35944, + "end": 36063, "loc": { "start": { - "line": 1044, + "line": 1043, "column": 4 }, "end": { - "line": 1047, + "line": 1046, "column": 7 } } @@ -71241,15 +71101,15 @@ }, { "type": "ClassMethod", - "start": 36128, - "end": 36281, + "start": 36068, + "end": 36221, "loc": { "start": { - "line": 1048, + "line": 1047, "column": 4 }, "end": { - "line": 1051, + "line": 1050, "column": 5 } }, @@ -71257,15 +71117,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 36132, - "end": 36146, + "start": 36072, + "end": 36086, "loc": { "start": { - "line": 1048, + "line": 1047, "column": 8 }, "end": { - "line": 1048, + "line": 1047, "column": 22 }, "identifierName": "dollyToPointer" @@ -71280,87 +71140,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 36149, - "end": 36281, + "start": 36089, + "end": 36221, "loc": { "start": { - "line": 1048, + "line": 1047, "column": 25 }, "end": { - "line": 1051, + "line": 1050, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 36159, - "end": 36240, + "start": 36099, + "end": 36180, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 8 }, "end": { - "line": 1049, + "line": 1048, "column": 89 } }, "expression": { "type": "CallExpression", - "start": 36159, - "end": 36239, + "start": 36099, + "end": 36179, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 8 }, "end": { - "line": 1049, + "line": 1048, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 36159, - "end": 36168, + "start": 36099, + "end": 36108, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 8 }, "end": { - "line": 1049, + "line": 1048, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 36159, - "end": 36163, + "start": 36099, + "end": 36103, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 8 }, "end": { - "line": 1049, + "line": 1048, "column": 12 } } }, "property": { "type": "Identifier", - "start": 36164, - "end": 36168, + "start": 36104, + "end": 36108, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 13 }, "end": { - "line": 1049, + "line": 1048, "column": 17 }, "identifierName": "warn" @@ -71372,15 +71232,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 36169, - "end": 36238, + "start": 36109, + "end": 36178, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 18 }, "end": { - "line": 1049, + "line": 1048, "column": 87 } }, @@ -71395,58 +71255,58 @@ }, { "type": "ReturnStatement", - "start": 36249, - "end": 36275, + "start": 36189, + "end": 36215, "loc": { "start": { - "line": 1050, + "line": 1049, "column": 8 }, "end": { - "line": 1050, + "line": 1049, "column": 34 } }, "argument": { "type": "MemberExpression", - "start": 36256, - "end": 36274, + "start": 36196, + "end": 36214, "loc": { "start": { - "line": 1050, + "line": 1049, "column": 15 }, "end": { - "line": 1050, + "line": 1049, "column": 33 } }, "object": { "type": "ThisExpression", - "start": 36256, - "end": 36260, + "start": 36196, + "end": 36200, "loc": { "start": { - "line": 1050, + "line": 1049, "column": 15 }, "end": { - "line": 1050, + "line": 1049, "column": 19 } } }, "property": { "type": "Identifier", - "start": 36261, - "end": 36274, + "start": 36201, + "end": 36214, "loc": { "start": { - "line": 1050, + "line": 1049, "column": 20 }, "end": { - "line": 1050, + "line": 1049, "column": 33 }, "identifierName": "followPointer" @@ -71464,15 +71324,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n ", - "start": 36004, - "end": 36123, + "start": 35944, + "end": 36063, "loc": { "start": { - "line": 1044, + "line": 1043, "column": 4 }, "end": { - "line": 1047, + "line": 1046, "column": 7 } } @@ -71482,15 +71342,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n ", - "start": 36287, - "end": 36402, + "start": 36227, + "end": 36342, "loc": { "start": { - "line": 1053, + "line": 1052, "column": 4 }, "end": { - "line": 1056, + "line": 1055, "column": 7 } } @@ -71499,15 +71359,15 @@ }, { "type": "ClassMethod", - "start": 36407, - "end": 36526, + "start": 36347, + "end": 36466, "loc": { "start": { - "line": 1057, + "line": 1056, "column": 4 }, "end": { - "line": 1059, + "line": 1058, "column": 5 } }, @@ -71515,15 +71375,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 36411, - "end": 36423, + "start": 36351, + "end": 36363, "loc": { "start": { - "line": 1057, + "line": 1056, "column": 8 }, "end": { - "line": 1057, + "line": 1056, "column": 20 }, "identifierName": "panToPointer" @@ -71538,15 +71398,15 @@ "params": [ { "type": "Identifier", - "start": 36424, - "end": 36429, + "start": 36364, + "end": 36369, "loc": { "start": { - "line": 1057, + "line": 1056, "column": 21 }, "end": { - "line": 1057, + "line": 1056, "column": 26 }, "identifierName": "value" @@ -71556,87 +71416,87 @@ ], "body": { "type": "BlockStatement", - "start": 36431, - "end": 36526, + "start": 36371, + "end": 36466, "loc": { "start": { - "line": 1057, + "line": 1056, "column": 28 }, "end": { - "line": 1059, + "line": 1058, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 36441, - "end": 36520, + "start": 36381, + "end": 36460, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 8 }, "end": { - "line": 1058, + "line": 1057, "column": 87 } }, "expression": { "type": "CallExpression", - "start": 36441, - "end": 36519, + "start": 36381, + "end": 36459, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 8 }, "end": { - "line": 1058, + "line": 1057, "column": 86 } }, "callee": { "type": "MemberExpression", - "start": 36441, - "end": 36450, + "start": 36381, + "end": 36390, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 8 }, "end": { - "line": 1058, + "line": 1057, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 36441, - "end": 36445, + "start": 36381, + "end": 36385, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 8 }, "end": { - "line": 1058, + "line": 1057, "column": 12 } } }, "property": { "type": "Identifier", - "start": 36446, - "end": 36450, + "start": 36386, + "end": 36390, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 13 }, "end": { - "line": 1058, + "line": 1057, "column": 17 }, "identifierName": "warn" @@ -71648,15 +71508,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 36451, - "end": 36518, + "start": 36391, + "end": 36458, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 18 }, "end": { - "line": 1058, + "line": 1057, "column": 85 } }, @@ -71677,15 +71537,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n ", - "start": 36287, - "end": 36402, + "start": 36227, + "end": 36342, "loc": { "start": { - "line": 1053, + "line": 1052, "column": 4 }, "end": { - "line": 1056, + "line": 1055, "column": 7 } } @@ -71695,15 +71555,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n ", - "start": 36532, - "end": 36651, + "start": 36472, + "end": 36591, "loc": { "start": { - "line": 1061, + "line": 1060, "column": 4 }, "end": { - "line": 1064, + "line": 1063, "column": 7 } } @@ -71712,15 +71572,15 @@ }, { "type": "ClassMethod", - "start": 36656, - "end": 36792, + "start": 36596, + "end": 36732, "loc": { "start": { - "line": 1065, + "line": 1064, "column": 4 }, "end": { - "line": 1068, + "line": 1067, "column": 5 } }, @@ -71728,15 +71588,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 36660, - "end": 36672, + "start": 36600, + "end": 36612, "loc": { "start": { - "line": 1065, + "line": 1064, "column": 8 }, "end": { - "line": 1065, + "line": 1064, "column": 20 }, "identifierName": "panToPointer" @@ -71751,87 +71611,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 36675, - "end": 36792, + "start": 36615, + "end": 36732, "loc": { "start": { - "line": 1065, + "line": 1064, "column": 23 }, "end": { - "line": 1068, + "line": 1067, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 36685, - "end": 36764, + "start": 36625, + "end": 36704, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 8 }, "end": { - "line": 1066, + "line": 1065, "column": 87 } }, "expression": { "type": "CallExpression", - "start": 36685, - "end": 36763, + "start": 36625, + "end": 36703, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 8 }, "end": { - "line": 1066, + "line": 1065, "column": 86 } }, "callee": { "type": "MemberExpression", - "start": 36685, - "end": 36694, + "start": 36625, + "end": 36634, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 8 }, "end": { - "line": 1066, + "line": 1065, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 36685, - "end": 36689, + "start": 36625, + "end": 36629, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 8 }, "end": { - "line": 1066, + "line": 1065, "column": 12 } } }, "property": { "type": "Identifier", - "start": 36690, - "end": 36694, + "start": 36630, + "end": 36634, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 13 }, "end": { - "line": 1066, + "line": 1065, "column": 17 }, "identifierName": "warn" @@ -71843,15 +71703,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 36695, - "end": 36762, + "start": 36635, + "end": 36702, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 18 }, "end": { - "line": 1066, + "line": 1065, "column": 85 } }, @@ -71866,29 +71726,29 @@ }, { "type": "ReturnStatement", - "start": 36773, - "end": 36786, + "start": 36713, + "end": 36726, "loc": { "start": { - "line": 1067, + "line": 1066, "column": 8 }, "end": { - "line": 1067, + "line": 1066, "column": 21 } }, "argument": { "type": "BooleanLiteral", - "start": 36780, - "end": 36785, + "start": 36720, + "end": 36725, "loc": { "start": { - "line": 1067, + "line": 1066, "column": 15 }, "end": { - "line": 1067, + "line": 1066, "column": 20 } }, @@ -71903,15 +71763,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n ", - "start": 36532, - "end": 36651, + "start": 36472, + "end": 36591, "loc": { "start": { - "line": 1061, + "line": 1060, "column": 4 }, "end": { - "line": 1064, + "line": 1063, "column": 7 } } @@ -71921,15 +71781,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 36798, - "end": 37147, + "start": 36738, + "end": 37087, "loc": { "start": { - "line": 1070, + "line": 1069, "column": 4 }, "end": { - "line": 1081, + "line": 1080, "column": 7 } } @@ -71938,15 +71798,15 @@ }, { "type": "ClassMethod", - "start": 37152, - "end": 37507, + "start": 37092, + "end": 37447, "loc": { "start": { - "line": 1082, + "line": 1081, "column": 4 }, "end": { - "line": 1090, + "line": 1089, "column": 5 } }, @@ -71954,15 +71814,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 37156, - "end": 37164, + "start": 37096, + "end": 37104, "loc": { "start": { - "line": 1082, + "line": 1081, "column": 8 }, "end": { - "line": 1082, + "line": 1081, "column": 16 }, "identifierName": "planView" @@ -71977,15 +71837,15 @@ "params": [ { "type": "Identifier", - "start": 37165, - "end": 37170, + "start": 37105, + "end": 37110, "loc": { "start": { - "line": 1082, + "line": 1081, "column": 17 }, "end": { - "line": 1082, + "line": 1081, "column": 22 }, "identifierName": "value" @@ -71995,102 +71855,102 @@ ], "body": { "type": "BlockStatement", - "start": 37172, - "end": 37507, + "start": 37112, + "end": 37447, "loc": { "start": { - "line": 1082, + "line": 1081, "column": 24 }, "end": { - "line": 1090, + "line": 1089, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 37182, - "end": 37215, + "start": 37122, + "end": 37155, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 8 }, "end": { - "line": 1083, + "line": 1082, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 37182, - "end": 37214, + "start": 37122, + "end": 37154, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 8 }, "end": { - "line": 1083, + "line": 1082, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 37182, - "end": 37204, + "start": 37122, + "end": 37144, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 8 }, "end": { - "line": 1083, + "line": 1082, "column": 30 } }, "object": { "type": "MemberExpression", - "start": 37182, - "end": 37195, + "start": 37122, + "end": 37135, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 8 }, "end": { - "line": 1083, + "line": 1082, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 37182, - "end": 37186, + "start": 37122, + "end": 37126, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 8 }, "end": { - "line": 1083, + "line": 1082, "column": 12 } } }, "property": { "type": "Identifier", - "start": 37187, - "end": 37195, + "start": 37127, + "end": 37135, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 13 }, "end": { - "line": 1083, + "line": 1082, "column": 21 }, "identifierName": "_configs" @@ -72101,15 +71961,15 @@ }, "property": { "type": "Identifier", - "start": 37196, - "end": 37204, + "start": 37136, + "end": 37144, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 22 }, "end": { - "line": 1083, + "line": 1082, "column": 30 }, "identifierName": "planView" @@ -72120,15 +71980,15 @@ }, "right": { "type": "UnaryExpression", - "start": 37207, - "end": 37214, + "start": 37147, + "end": 37154, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 33 }, "end": { - "line": 1083, + "line": 1082, "column": 40 } }, @@ -72136,15 +71996,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 37208, - "end": 37214, + "start": 37148, + "end": 37154, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 34 }, "end": { - "line": 1083, + "line": 1082, "column": 40 } }, @@ -72152,15 +72012,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 37209, - "end": 37214, + "start": 37149, + "end": 37154, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 35 }, "end": { - "line": 1083, + "line": 1082, "column": 40 }, "identifierName": "value" @@ -72179,87 +72039,87 @@ }, { "type": "ExpressionStatement", - "start": 37224, - "end": 37258, + "start": 37164, + "end": 37198, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 8 }, "end": { - "line": 1084, + "line": 1083, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 37224, - "end": 37257, + "start": 37164, + "end": 37197, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 8 }, "end": { - "line": 1084, + "line": 1083, "column": 41 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 37224, - "end": 37249, + "start": 37164, + "end": 37189, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 8 }, "end": { - "line": 1084, + "line": 1083, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 37224, - "end": 37237, + "start": 37164, + "end": 37177, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 8 }, "end": { - "line": 1084, + "line": 1083, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 37224, - "end": 37228, + "start": 37164, + "end": 37168, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 8 }, "end": { - "line": 1084, + "line": 1083, "column": 12 } } }, "property": { "type": "Identifier", - "start": 37229, - "end": 37237, + "start": 37169, + "end": 37177, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 13 }, "end": { - "line": 1084, + "line": 1083, "column": 21 }, "identifierName": "_configs" @@ -72270,15 +72130,15 @@ }, "property": { "type": "Identifier", - "start": 37238, - "end": 37249, + "start": 37178, + "end": 37189, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 22 }, "end": { - "line": 1084, + "line": 1083, "column": 33 }, "identifierName": "firstPerson" @@ -72289,15 +72149,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 37252, - "end": 37257, + "start": 37192, + "end": 37197, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 36 }, "end": { - "line": 1084, + "line": 1083, "column": 41 } }, @@ -72307,72 +72167,72 @@ }, { "type": "IfStatement", - "start": 37267, - "end": 37423, + "start": 37207, + "end": 37363, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 8 }, "end": { - "line": 1088, + "line": 1087, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 37271, - "end": 37293, + "start": 37211, + "end": 37233, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 12 }, "end": { - "line": 1085, + "line": 1084, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 37271, - "end": 37284, + "start": 37211, + "end": 37224, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 12 }, "end": { - "line": 1085, + "line": 1084, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 37271, - "end": 37275, + "start": 37211, + "end": 37215, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 12 }, "end": { - "line": 1085, + "line": 1084, "column": 16 } } }, "property": { "type": "Identifier", - "start": 37276, - "end": 37284, + "start": 37216, + "end": 37224, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 17 }, "end": { - "line": 1085, + "line": 1084, "column": 25 }, "identifierName": "_configs" @@ -72383,15 +72243,15 @@ }, "property": { "type": "Identifier", - "start": 37285, - "end": 37293, + "start": 37225, + "end": 37233, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 26 }, "end": { - "line": 1085, + "line": 1084, "column": 34 }, "identifierName": "planView" @@ -72402,115 +72262,115 @@ }, "consequent": { "type": "BlockStatement", - "start": 37295, - "end": 37423, + "start": 37235, + "end": 37363, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 36 }, "end": { - "line": 1088, + "line": 1087, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 37309, - "end": 37355, + "start": 37249, + "end": 37295, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 12 }, "end": { - "line": 1086, + "line": 1085, "column": 58 } }, "expression": { "type": "CallExpression", - "start": 37309, - "end": 37354, + "start": 37249, + "end": 37294, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 12 }, "end": { - "line": 1086, + "line": 1085, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 37309, - "end": 37352, + "start": 37249, + "end": 37292, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 12 }, "end": { - "line": 1086, + "line": 1085, "column": 55 } }, "object": { "type": "MemberExpression", - "start": 37309, - "end": 37342, + "start": 37249, + "end": 37282, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 12 }, "end": { - "line": 1086, + "line": 1085, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 37309, - "end": 37326, + "start": 37249, + "end": 37266, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 12 }, "end": { - "line": 1086, + "line": 1085, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 37309, - "end": 37313, + "start": 37249, + "end": 37253, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 12 }, "end": { - "line": 1086, + "line": 1085, "column": 16 } } }, "property": { "type": "Identifier", - "start": 37314, - "end": 37326, + "start": 37254, + "end": 37266, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 17 }, "end": { - "line": 1086, + "line": 1085, "column": 29 }, "identifierName": "_controllers" @@ -72521,15 +72381,15 @@ }, "property": { "type": "Identifier", - "start": 37327, - "end": 37342, + "start": 37267, + "end": 37282, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 30 }, "end": { - "line": 1086, + "line": 1085, "column": 45 }, "identifierName": "pivotController" @@ -72540,15 +72400,15 @@ }, "property": { "type": "Identifier", - "start": 37343, - "end": 37352, + "start": 37283, + "end": 37292, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 46 }, "end": { - "line": 1086, + "line": 1085, "column": 55 }, "identifierName": "hidePivot" @@ -72562,100 +72422,100 @@ }, { "type": "ExpressionStatement", - "start": 37368, - "end": 37413, + "start": 37308, + "end": 37353, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 12 }, "end": { - "line": 1087, + "line": 1086, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 37368, - "end": 37412, + "start": 37308, + "end": 37352, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 12 }, "end": { - "line": 1087, + "line": 1086, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 37368, - "end": 37410, + "start": 37308, + "end": 37350, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 12 }, "end": { - "line": 1087, + "line": 1086, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 37368, - "end": 37401, + "start": 37308, + "end": 37341, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 12 }, "end": { - "line": 1087, + "line": 1086, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 37368, - "end": 37385, + "start": 37308, + "end": 37325, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 12 }, "end": { - "line": 1087, + "line": 1086, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 37368, - "end": 37372, + "start": 37308, + "end": 37312, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 12 }, "end": { - "line": 1087, + "line": 1086, "column": 16 } } }, "property": { "type": "Identifier", - "start": 37373, - "end": 37385, + "start": 37313, + "end": 37325, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 17 }, "end": { - "line": 1087, + "line": 1086, "column": 29 }, "identifierName": "_controllers" @@ -72666,15 +72526,15 @@ }, "property": { "type": "Identifier", - "start": 37386, - "end": 37401, + "start": 37326, + "end": 37341, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 30 }, "end": { - "line": 1087, + "line": 1086, "column": 45 }, "identifierName": "pivotController" @@ -72685,15 +72545,15 @@ }, "property": { "type": "Identifier", - "start": 37402, - "end": 37410, + "start": 37342, + "end": 37350, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 46 }, "end": { - "line": 1087, + "line": 1086, "column": 54 }, "identifierName": "endPivot" @@ -72712,72 +72572,72 @@ }, { "type": "ExpressionStatement", - "start": 37432, - "end": 37501, + "start": 37372, + "end": 37441, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 8 }, "end": { - "line": 1089, + "line": 1088, "column": 77 } }, "expression": { "type": "CallExpression", - "start": 37432, - "end": 37500, + "start": 37372, + "end": 37440, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 8 }, "end": { - "line": 1089, + "line": 1088, "column": 76 } }, "callee": { "type": "MemberExpression", - "start": 37432, - "end": 37441, + "start": 37372, + "end": 37381, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 8 }, "end": { - "line": 1089, + "line": 1088, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 37432, - "end": 37436, + "start": 37372, + "end": 37376, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 8 }, "end": { - "line": 1089, + "line": 1088, "column": 12 } } }, "property": { "type": "Identifier", - "start": 37437, - "end": 37441, + "start": 37377, + "end": 37381, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 13 }, "end": { - "line": 1089, + "line": 1088, "column": 17 }, "identifierName": "warn" @@ -72789,15 +72649,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 37442, - "end": 37499, + "start": 37382, + "end": 37439, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 18 }, "end": { - "line": 1089, + "line": 1088, "column": 75 } }, @@ -72818,15 +72678,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 36798, - "end": 37147, + "start": 36738, + "end": 37087, "loc": { "start": { - "line": 1070, + "line": 1069, "column": 4 }, "end": { - "line": 1081, + "line": 1080, "column": 7 } } @@ -72836,15 +72696,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 37513, - "end": 37866, + "start": 37453, + "end": 37806, "loc": { "start": { - "line": 1092, + "line": 1091, "column": 4 }, "end": { - "line": 1103, + "line": 1102, "column": 7 } } @@ -72853,15 +72713,15 @@ }, { "type": "ClassMethod", - "start": 37871, - "end": 38010, + "start": 37811, + "end": 37950, "loc": { "start": { - "line": 1104, + "line": 1103, "column": 4 }, "end": { - "line": 1107, + "line": 1106, "column": 5 } }, @@ -72869,15 +72729,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 37875, - "end": 37883, + "start": 37815, + "end": 37823, "loc": { "start": { - "line": 1104, + "line": 1103, "column": 8 }, "end": { - "line": 1104, + "line": 1103, "column": 16 }, "identifierName": "planView" @@ -72892,87 +72752,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 37886, - "end": 38010, + "start": 37826, + "end": 37950, "loc": { "start": { - "line": 1104, + "line": 1103, "column": 19 }, "end": { - "line": 1107, + "line": 1106, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 37896, - "end": 37965, + "start": 37836, + "end": 37905, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 8 }, "end": { - "line": 1105, + "line": 1104, "column": 77 } }, "expression": { "type": "CallExpression", - "start": 37896, - "end": 37964, + "start": 37836, + "end": 37904, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 8 }, "end": { - "line": 1105, + "line": 1104, "column": 76 } }, "callee": { "type": "MemberExpression", - "start": 37896, - "end": 37905, + "start": 37836, + "end": 37845, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 8 }, "end": { - "line": 1105, + "line": 1104, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 37896, - "end": 37900, + "start": 37836, + "end": 37840, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 8 }, "end": { - "line": 1105, + "line": 1104, "column": 12 } } }, "property": { "type": "Identifier", - "start": 37901, - "end": 37905, + "start": 37841, + "end": 37845, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 13 }, "end": { - "line": 1105, + "line": 1104, "column": 17 }, "identifierName": "warn" @@ -72984,15 +72844,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 37906, - "end": 37963, + "start": 37846, + "end": 37903, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 18 }, "end": { - "line": 1105, + "line": 1104, "column": 75 } }, @@ -73007,72 +72867,72 @@ }, { "type": "ReturnStatement", - "start": 37974, - "end": 38004, + "start": 37914, + "end": 37944, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 8 }, "end": { - "line": 1106, + "line": 1105, "column": 38 } }, "argument": { "type": "MemberExpression", - "start": 37981, - "end": 38003, + "start": 37921, + "end": 37943, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 15 }, "end": { - "line": 1106, + "line": 1105, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 37981, - "end": 37994, + "start": 37921, + "end": 37934, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 15 }, "end": { - "line": 1106, + "line": 1105, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 37981, - "end": 37985, + "start": 37921, + "end": 37925, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 15 }, "end": { - "line": 1106, + "line": 1105, "column": 19 } } }, "property": { "type": "Identifier", - "start": 37986, - "end": 37994, + "start": 37926, + "end": 37934, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 20 }, "end": { - "line": 1106, + "line": 1105, "column": 28 }, "identifierName": "_configs" @@ -73083,15 +72943,15 @@ }, "property": { "type": "Identifier", - "start": 37995, - "end": 38003, + "start": 37935, + "end": 37943, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 29 }, "end": { - "line": 1106, + "line": 1105, "column": 37 }, "identifierName": "planView" @@ -73109,15 +72969,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 37513, - "end": 37866, + "start": 37453, + "end": 37806, "loc": { "start": { - "line": 1092, + "line": 1091, "column": 4 }, "end": { - "line": 1103, + "line": 1102, "column": 7 } } @@ -73127,15 +72987,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 38016, - "end": 38486, + "start": 37956, + "end": 38426, "loc": { "start": { - "line": 1109, + "line": 1108, "column": 4 }, "end": { - "line": 1120, + "line": 1119, "column": 7 } } @@ -73144,15 +73004,15 @@ }, { "type": "ClassMethod", - "start": 38491, - "end": 38855, + "start": 38431, + "end": 38795, "loc": { "start": { - "line": 1121, + "line": 1120, "column": 4 }, "end": { - "line": 1129, + "line": 1128, "column": 5 } }, @@ -73160,15 +73020,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 38495, - "end": 38506, + "start": 38435, + "end": 38446, "loc": { "start": { - "line": 1121, + "line": 1120, "column": 8 }, "end": { - "line": 1121, + "line": 1120, "column": 19 }, "identifierName": "firstPerson" @@ -73183,15 +73043,15 @@ "params": [ { "type": "Identifier", - "start": 38507, - "end": 38512, + "start": 38447, + "end": 38452, "loc": { "start": { - "line": 1121, + "line": 1120, "column": 20 }, "end": { - "line": 1121, + "line": 1120, "column": 25 }, "identifierName": "value" @@ -73201,87 +73061,87 @@ ], "body": { "type": "BlockStatement", - "start": 38514, - "end": 38855, + "start": 38454, + "end": 38795, "loc": { "start": { - "line": 1121, + "line": 1120, "column": 27 }, "end": { - "line": 1129, + "line": 1128, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 38524, - "end": 38596, + "start": 38464, + "end": 38536, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 8 }, "end": { - "line": 1122, + "line": 1121, "column": 80 } }, "expression": { "type": "CallExpression", - "start": 38524, - "end": 38595, + "start": 38464, + "end": 38535, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 8 }, "end": { - "line": 1122, + "line": 1121, "column": 79 } }, "callee": { "type": "MemberExpression", - "start": 38524, - "end": 38533, + "start": 38464, + "end": 38473, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 8 }, "end": { - "line": 1122, + "line": 1121, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 38524, - "end": 38528, + "start": 38464, + "end": 38468, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 8 }, "end": { - "line": 1122, + "line": 1121, "column": 12 } } }, "property": { "type": "Identifier", - "start": 38529, - "end": 38533, + "start": 38469, + "end": 38473, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 13 }, "end": { - "line": 1122, + "line": 1121, "column": 17 }, "identifierName": "warn" @@ -73293,15 +73153,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 38534, - "end": 38594, + "start": 38474, + "end": 38534, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 18 }, "end": { - "line": 1122, + "line": 1121, "column": 78 } }, @@ -73316,87 +73176,87 @@ }, { "type": "ExpressionStatement", - "start": 38605, - "end": 38641, + "start": 38545, + "end": 38581, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 8 }, "end": { - "line": 1123, + "line": 1122, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 38605, - "end": 38640, + "start": 38545, + "end": 38580, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 8 }, "end": { - "line": 1123, + "line": 1122, "column": 43 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 38605, - "end": 38630, + "start": 38545, + "end": 38570, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 8 }, "end": { - "line": 1123, + "line": 1122, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 38605, - "end": 38618, + "start": 38545, + "end": 38558, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 8 }, "end": { - "line": 1123, + "line": 1122, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 38605, - "end": 38609, + "start": 38545, + "end": 38549, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 8 }, "end": { - "line": 1123, + "line": 1122, "column": 12 } } }, "property": { "type": "Identifier", - "start": 38610, - "end": 38618, + "start": 38550, + "end": 38558, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 13 }, "end": { - "line": 1123, + "line": 1122, "column": 21 }, "identifierName": "_configs" @@ -73407,15 +73267,15 @@ }, "property": { "type": "Identifier", - "start": 38619, - "end": 38630, + "start": 38559, + "end": 38570, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 22 }, "end": { - "line": 1123, + "line": 1122, "column": 33 }, "identifierName": "firstPerson" @@ -73426,15 +73286,15 @@ }, "right": { "type": "UnaryExpression", - "start": 38633, - "end": 38640, + "start": 38573, + "end": 38580, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 36 }, "end": { - "line": 1123, + "line": 1122, "column": 43 } }, @@ -73442,15 +73302,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 38634, - "end": 38640, + "start": 38574, + "end": 38580, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 37 }, "end": { - "line": 1123, + "line": 1122, "column": 43 } }, @@ -73458,15 +73318,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 38635, - "end": 38640, + "start": 38575, + "end": 38580, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 38 }, "end": { - "line": 1123, + "line": 1122, "column": 43 }, "identifierName": "value" @@ -73485,87 +73345,87 @@ }, { "type": "ExpressionStatement", - "start": 38650, - "end": 38681, + "start": 38590, + "end": 38621, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 8 }, "end": { - "line": 1124, + "line": 1123, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 38650, - "end": 38680, + "start": 38590, + "end": 38620, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 8 }, "end": { - "line": 1124, + "line": 1123, "column": 38 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 38650, - "end": 38672, + "start": 38590, + "end": 38612, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 8 }, "end": { - "line": 1124, + "line": 1123, "column": 30 } }, "object": { "type": "MemberExpression", - "start": 38650, - "end": 38663, + "start": 38590, + "end": 38603, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 8 }, "end": { - "line": 1124, + "line": 1123, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 38650, - "end": 38654, + "start": 38590, + "end": 38594, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 8 }, "end": { - "line": 1124, + "line": 1123, "column": 12 } } }, "property": { "type": "Identifier", - "start": 38655, - "end": 38663, + "start": 38595, + "end": 38603, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 13 }, "end": { - "line": 1124, + "line": 1123, "column": 21 }, "identifierName": "_configs" @@ -73576,15 +73436,15 @@ }, "property": { "type": "Identifier", - "start": 38664, - "end": 38672, + "start": 38604, + "end": 38612, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 22 }, "end": { - "line": 1124, + "line": 1123, "column": 30 }, "identifierName": "planView" @@ -73595,15 +73455,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 38675, - "end": 38680, + "start": 38615, + "end": 38620, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 33 }, "end": { - "line": 1124, + "line": 1123, "column": 38 } }, @@ -73613,72 +73473,72 @@ }, { "type": "IfStatement", - "start": 38690, - "end": 38849, + "start": 38630, + "end": 38789, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 8 }, "end": { - "line": 1128, + "line": 1127, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 38694, - "end": 38719, + "start": 38634, + "end": 38659, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 12 }, "end": { - "line": 1125, + "line": 1124, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 38694, - "end": 38707, + "start": 38634, + "end": 38647, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 12 }, "end": { - "line": 1125, + "line": 1124, "column": 25 } }, "object": { "type": "ThisExpression", - "start": 38694, - "end": 38698, + "start": 38634, + "end": 38638, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 12 }, "end": { - "line": 1125, + "line": 1124, "column": 16 } } }, "property": { "type": "Identifier", - "start": 38699, - "end": 38707, + "start": 38639, + "end": 38647, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 17 }, "end": { - "line": 1125, + "line": 1124, "column": 25 }, "identifierName": "_configs" @@ -73689,15 +73549,15 @@ }, "property": { "type": "Identifier", - "start": 38708, - "end": 38719, + "start": 38648, + "end": 38659, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 26 }, "end": { - "line": 1125, + "line": 1124, "column": 37 }, "identifierName": "firstPerson" @@ -73708,115 +73568,115 @@ }, "consequent": { "type": "BlockStatement", - "start": 38721, - "end": 38849, + "start": 38661, + "end": 38789, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 39 }, "end": { - "line": 1128, + "line": 1127, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 38735, - "end": 38781, + "start": 38675, + "end": 38721, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 12 }, "end": { - "line": 1126, + "line": 1125, "column": 58 } }, "expression": { "type": "CallExpression", - "start": 38735, - "end": 38780, + "start": 38675, + "end": 38720, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 12 }, "end": { - "line": 1126, + "line": 1125, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 38735, - "end": 38778, + "start": 38675, + "end": 38718, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 12 }, "end": { - "line": 1126, + "line": 1125, "column": 55 } }, "object": { "type": "MemberExpression", - "start": 38735, - "end": 38768, + "start": 38675, + "end": 38708, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 12 }, "end": { - "line": 1126, + "line": 1125, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 38735, - "end": 38752, + "start": 38675, + "end": 38692, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 12 }, "end": { - "line": 1126, + "line": 1125, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 38735, - "end": 38739, + "start": 38675, + "end": 38679, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 12 }, "end": { - "line": 1126, + "line": 1125, "column": 16 } } }, "property": { "type": "Identifier", - "start": 38740, - "end": 38752, + "start": 38680, + "end": 38692, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 17 }, "end": { - "line": 1126, + "line": 1125, "column": 29 }, "identifierName": "_controllers" @@ -73827,15 +73687,15 @@ }, "property": { "type": "Identifier", - "start": 38753, - "end": 38768, + "start": 38693, + "end": 38708, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 30 }, "end": { - "line": 1126, + "line": 1125, "column": 45 }, "identifierName": "pivotController" @@ -73846,15 +73706,15 @@ }, "property": { "type": "Identifier", - "start": 38769, - "end": 38778, + "start": 38709, + "end": 38718, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 46 }, "end": { - "line": 1126, + "line": 1125, "column": 55 }, "identifierName": "hidePivot" @@ -73868,100 +73728,100 @@ }, { "type": "ExpressionStatement", - "start": 38794, - "end": 38839, + "start": 38734, + "end": 38779, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 12 }, "end": { - "line": 1127, + "line": 1126, "column": 57 } }, "expression": { "type": "CallExpression", - "start": 38794, - "end": 38838, + "start": 38734, + "end": 38778, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 12 }, "end": { - "line": 1127, + "line": 1126, "column": 56 } }, "callee": { "type": "MemberExpression", - "start": 38794, - "end": 38836, + "start": 38734, + "end": 38776, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 12 }, "end": { - "line": 1127, + "line": 1126, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 38794, - "end": 38827, + "start": 38734, + "end": 38767, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 12 }, "end": { - "line": 1127, + "line": 1126, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 38794, - "end": 38811, + "start": 38734, + "end": 38751, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 12 }, "end": { - "line": 1127, + "line": 1126, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 38794, - "end": 38798, + "start": 38734, + "end": 38738, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 12 }, "end": { - "line": 1127, + "line": 1126, "column": 16 } } }, "property": { "type": "Identifier", - "start": 38799, - "end": 38811, + "start": 38739, + "end": 38751, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 17 }, "end": { - "line": 1127, + "line": 1126, "column": 29 }, "identifierName": "_controllers" @@ -73972,15 +73832,15 @@ }, "property": { "type": "Identifier", - "start": 38812, - "end": 38827, + "start": 38752, + "end": 38767, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 30 }, "end": { - "line": 1127, + "line": 1126, "column": 45 }, "identifierName": "pivotController" @@ -73991,15 +73851,15 @@ }, "property": { "type": "Identifier", - "start": 38828, - "end": 38836, + "start": 38768, + "end": 38776, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 46 }, "end": { - "line": 1127, + "line": 1126, "column": 54 }, "identifierName": "endPivot" @@ -74024,15 +73884,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 38016, - "end": 38486, + "start": 37956, + "end": 38426, "loc": { "start": { - "line": 1109, + "line": 1108, "column": 4 }, "end": { - "line": 1120, + "line": 1119, "column": 7 } } @@ -74042,15 +73902,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 38861, - "end": 39335, + "start": 38801, + "end": 39275, "loc": { "start": { - "line": 1131, + "line": 1130, "column": 4 }, "end": { - "line": 1142, + "line": 1141, "column": 7 } } @@ -74059,15 +73919,15 @@ }, { "type": "ClassMethod", - "start": 39340, - "end": 39488, + "start": 39280, + "end": 39428, "loc": { "start": { - "line": 1143, + "line": 1142, "column": 4 }, "end": { - "line": 1146, + "line": 1145, "column": 5 } }, @@ -74075,15 +73935,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 39344, - "end": 39355, + "start": 39284, + "end": 39295, "loc": { "start": { - "line": 1143, + "line": 1142, "column": 8 }, "end": { - "line": 1143, + "line": 1142, "column": 19 }, "identifierName": "firstPerson" @@ -74098,87 +73958,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 39358, - "end": 39488, + "start": 39298, + "end": 39428, "loc": { "start": { - "line": 1143, + "line": 1142, "column": 22 }, "end": { - "line": 1146, + "line": 1145, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 39368, - "end": 39440, + "start": 39308, + "end": 39380, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 8 }, "end": { - "line": 1144, + "line": 1143, "column": 80 } }, "expression": { "type": "CallExpression", - "start": 39368, - "end": 39439, + "start": 39308, + "end": 39379, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 8 }, "end": { - "line": 1144, + "line": 1143, "column": 79 } }, "callee": { "type": "MemberExpression", - "start": 39368, - "end": 39377, + "start": 39308, + "end": 39317, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 8 }, "end": { - "line": 1144, + "line": 1143, "column": 17 } }, "object": { "type": "ThisExpression", - "start": 39368, - "end": 39372, + "start": 39308, + "end": 39312, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 8 }, "end": { - "line": 1144, + "line": 1143, "column": 12 } } }, "property": { "type": "Identifier", - "start": 39373, - "end": 39377, + "start": 39313, + "end": 39317, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 13 }, "end": { - "line": 1144, + "line": 1143, "column": 17 }, "identifierName": "warn" @@ -74190,15 +74050,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 39378, - "end": 39438, + "start": 39318, + "end": 39378, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 18 }, "end": { - "line": 1144, + "line": 1143, "column": 78 } }, @@ -74213,72 +74073,72 @@ }, { "type": "ReturnStatement", - "start": 39449, - "end": 39482, + "start": 39389, + "end": 39422, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 8 }, "end": { - "line": 1145, + "line": 1144, "column": 41 } }, "argument": { "type": "MemberExpression", - "start": 39456, - "end": 39481, + "start": 39396, + "end": 39421, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 15 }, "end": { - "line": 1145, + "line": 1144, "column": 40 } }, "object": { "type": "MemberExpression", - "start": 39456, - "end": 39469, + "start": 39396, + "end": 39409, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 15 }, "end": { - "line": 1145, + "line": 1144, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 39456, - "end": 39460, + "start": 39396, + "end": 39400, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 15 }, "end": { - "line": 1145, + "line": 1144, "column": 19 } } }, "property": { "type": "Identifier", - "start": 39461, - "end": 39469, + "start": 39401, + "end": 39409, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 20 }, "end": { - "line": 1145, + "line": 1144, "column": 28 }, "identifierName": "_configs" @@ -74289,15 +74149,15 @@ }, "property": { "type": "Identifier", - "start": 39470, - "end": 39481, + "start": 39410, + "end": 39421, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 29 }, "end": { - "line": 1145, + "line": 1144, "column": 40 }, "identifierName": "firstPerson" @@ -74315,15 +74175,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 38861, - "end": 39335, + "start": 38801, + "end": 39275, "loc": { "start": { - "line": 1131, + "line": 1130, "column": 4 }, "end": { - "line": 1142, + "line": 1141, "column": 7 } } @@ -74333,15 +74193,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 39494, - "end": 39930, + "start": 39434, + "end": 39870, "loc": { "start": { - "line": 1148, + "line": 1147, "column": 4 }, "end": { - "line": 1158, + "line": 1157, "column": 7 } } @@ -74350,15 +74210,15 @@ }, { "type": "ClassMethod", - "start": 39935, - "end": 40022, + "start": 39875, + "end": 39962, "loc": { "start": { - "line": 1159, + "line": 1158, "column": 4 }, "end": { - "line": 1161, + "line": 1160, "column": 5 } }, @@ -74366,15 +74226,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 39939, - "end": 39956, + "start": 39879, + "end": 39896, "loc": { "start": { - "line": 1159, + "line": 1158, "column": 8 }, "end": { - "line": 1159, + "line": 1158, "column": 25 }, "identifierName": "constrainVertical" @@ -74389,15 +74249,15 @@ "params": [ { "type": "Identifier", - "start": 39957, - "end": 39962, + "start": 39897, + "end": 39902, "loc": { "start": { - "line": 1159, + "line": 1158, "column": 26 }, "end": { - "line": 1159, + "line": 1158, "column": 31 }, "identifierName": "value" @@ -74407,102 +74267,102 @@ ], "body": { "type": "BlockStatement", - "start": 39964, - "end": 40022, + "start": 39904, + "end": 39962, "loc": { "start": { - "line": 1159, + "line": 1158, "column": 33 }, "end": { - "line": 1161, + "line": 1160, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 39974, - "end": 40016, + "start": 39914, + "end": 39956, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 8 }, "end": { - "line": 1160, + "line": 1159, "column": 50 } }, "expression": { "type": "AssignmentExpression", - "start": 39974, - "end": 40015, + "start": 39914, + "end": 39955, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 8 }, "end": { - "line": 1160, + "line": 1159, "column": 49 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 39974, - "end": 40005, + "start": 39914, + "end": 39945, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 8 }, "end": { - "line": 1160, + "line": 1159, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 39974, - "end": 39987, + "start": 39914, + "end": 39927, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 8 }, "end": { - "line": 1160, + "line": 1159, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 39974, - "end": 39978, + "start": 39914, + "end": 39918, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 8 }, "end": { - "line": 1160, + "line": 1159, "column": 12 } } }, "property": { "type": "Identifier", - "start": 39979, - "end": 39987, + "start": 39919, + "end": 39927, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 13 }, "end": { - "line": 1160, + "line": 1159, "column": 21 }, "identifierName": "_configs" @@ -74513,15 +74373,15 @@ }, "property": { "type": "Identifier", - "start": 39988, - "end": 40005, + "start": 39928, + "end": 39945, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 22 }, "end": { - "line": 1160, + "line": 1159, "column": 39 }, "identifierName": "constrainVertical" @@ -74532,15 +74392,15 @@ }, "right": { "type": "UnaryExpression", - "start": 40008, - "end": 40015, + "start": 39948, + "end": 39955, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 42 }, "end": { - "line": 1160, + "line": 1159, "column": 49 } }, @@ -74548,15 +74408,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 40009, - "end": 40015, + "start": 39949, + "end": 39955, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 43 }, "end": { - "line": 1160, + "line": 1159, "column": 49 } }, @@ -74564,15 +74424,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 40010, - "end": 40015, + "start": 39950, + "end": 39955, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 44 }, "end": { - "line": 1160, + "line": 1159, "column": 49 }, "identifierName": "value" @@ -74597,15 +74457,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 39494, - "end": 39930, + "start": 39434, + "end": 39870, "loc": { "start": { - "line": 1148, + "line": 1147, "column": 4 }, "end": { - "line": 1158, + "line": 1157, "column": 7 } } @@ -74615,15 +74475,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40028, - "end": 40459, + "start": 39968, + "end": 40399, "loc": { "start": { - "line": 1163, + "line": 1162, "column": 4 }, "end": { - "line": 1173, + "line": 1172, "column": 7 } } @@ -74632,15 +74492,15 @@ }, { "type": "ClassMethod", - "start": 40464, - "end": 40543, + "start": 40404, + "end": 40483, "loc": { "start": { - "line": 1174, + "line": 1173, "column": 4 }, "end": { - "line": 1176, + "line": 1175, "column": 5 } }, @@ -74648,15 +74508,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 40468, - "end": 40485, + "start": 40408, + "end": 40425, "loc": { "start": { - "line": 1174, + "line": 1173, "column": 8 }, "end": { - "line": 1174, + "line": 1173, "column": 25 }, "identifierName": "constrainVertical" @@ -74671,87 +74531,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 40488, - "end": 40543, + "start": 40428, + "end": 40483, "loc": { "start": { - "line": 1174, + "line": 1173, "column": 28 }, "end": { - "line": 1176, + "line": 1175, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 40498, - "end": 40537, + "start": 40438, + "end": 40477, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 8 }, "end": { - "line": 1175, + "line": 1174, "column": 47 } }, "argument": { "type": "MemberExpression", - "start": 40505, - "end": 40536, + "start": 40445, + "end": 40476, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 15 }, "end": { - "line": 1175, + "line": 1174, "column": 46 } }, "object": { "type": "MemberExpression", - "start": 40505, - "end": 40518, + "start": 40445, + "end": 40458, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 15 }, "end": { - "line": 1175, + "line": 1174, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 40505, - "end": 40509, + "start": 40445, + "end": 40449, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 15 }, "end": { - "line": 1175, + "line": 1174, "column": 19 } } }, "property": { "type": "Identifier", - "start": 40510, - "end": 40518, + "start": 40450, + "end": 40458, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 20 }, "end": { - "line": 1175, + "line": 1174, "column": 28 }, "identifierName": "_configs" @@ -74762,15 +74622,15 @@ }, "property": { "type": "Identifier", - "start": 40519, - "end": 40536, + "start": 40459, + "end": 40476, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 29 }, "end": { - "line": 1175, + "line": 1174, "column": 46 }, "identifierName": "constrainVertical" @@ -74788,15 +74648,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40028, - "end": 40459, + "start": 39968, + "end": 40399, "loc": { "start": { - "line": 1163, + "line": 1162, "column": 4 }, "end": { - "line": 1173, + "line": 1172, "column": 7 } } @@ -74806,15 +74666,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40549, - "end": 40792, + "start": 40489, + "end": 40732, "loc": { "start": { - "line": 1178, + "line": 1177, "column": 4 }, "end": { - "line": 1184, + "line": 1183, "column": 7 } } @@ -74823,15 +74683,15 @@ }, { "type": "ClassMethod", - "start": 40797, - "end": 40888, + "start": 40737, + "end": 40828, "loc": { "start": { - "line": 1185, + "line": 1184, "column": 4 }, "end": { - "line": 1187, + "line": 1186, "column": 5 } }, @@ -74839,15 +74699,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 40801, - "end": 40816, + "start": 40741, + "end": 40756, "loc": { "start": { - "line": 1185, + "line": 1184, "column": 8 }, "end": { - "line": 1185, + "line": 1184, "column": 23 }, "identifierName": "doublePickFlyTo" @@ -74862,15 +74722,15 @@ "params": [ { "type": "Identifier", - "start": 40817, - "end": 40822, + "start": 40757, + "end": 40762, "loc": { "start": { - "line": 1185, + "line": 1184, "column": 24 }, "end": { - "line": 1185, + "line": 1184, "column": 29 }, "identifierName": "value" @@ -74880,102 +74740,102 @@ ], "body": { "type": "BlockStatement", - "start": 40824, - "end": 40888, + "start": 40764, + "end": 40828, "loc": { "start": { - "line": 1185, + "line": 1184, "column": 31 }, "end": { - "line": 1187, + "line": 1186, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 40834, - "end": 40882, + "start": 40774, + "end": 40822, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 8 }, "end": { - "line": 1186, + "line": 1185, "column": 56 } }, "expression": { "type": "AssignmentExpression", - "start": 40834, - "end": 40881, + "start": 40774, + "end": 40821, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 8 }, "end": { - "line": 1186, + "line": 1185, "column": 55 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 40834, - "end": 40863, + "start": 40774, + "end": 40803, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 8 }, "end": { - "line": 1186, + "line": 1185, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 40834, - "end": 40847, + "start": 40774, + "end": 40787, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 8 }, "end": { - "line": 1186, + "line": 1185, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 40834, - "end": 40838, + "start": 40774, + "end": 40778, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 8 }, "end": { - "line": 1186, + "line": 1185, "column": 12 } } }, "property": { "type": "Identifier", - "start": 40839, - "end": 40847, + "start": 40779, + "end": 40787, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 13 }, "end": { - "line": 1186, + "line": 1185, "column": 21 }, "identifierName": "_configs" @@ -74986,15 +74846,15 @@ }, "property": { "type": "Identifier", - "start": 40848, - "end": 40863, + "start": 40788, + "end": 40803, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 22 }, "end": { - "line": 1186, + "line": 1185, "column": 37 }, "identifierName": "doublePickFlyTo" @@ -75005,29 +74865,29 @@ }, "right": { "type": "BinaryExpression", - "start": 40866, - "end": 40881, + "start": 40806, + "end": 40821, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 40 }, "end": { - "line": 1186, + "line": 1185, "column": 55 } }, "left": { "type": "Identifier", - "start": 40866, - "end": 40871, + "start": 40806, + "end": 40811, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 40 }, "end": { - "line": 1186, + "line": 1185, "column": 45 }, "identifierName": "value" @@ -75037,15 +74897,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 40876, - "end": 40881, + "start": 40816, + "end": 40821, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 50 }, "end": { - "line": 1186, + "line": 1185, "column": 55 } }, @@ -75062,15 +74922,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40549, - "end": 40792, + "start": 40489, + "end": 40732, "loc": { "start": { - "line": 1178, + "line": 1177, "column": 4 }, "end": { - "line": 1184, + "line": 1183, "column": 7 } } @@ -75080,15 +74940,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40894, - "end": 41143, + "start": 40834, + "end": 41083, "loc": { "start": { - "line": 1189, + "line": 1188, "column": 4 }, "end": { - "line": 1195, + "line": 1194, "column": 7 } } @@ -75097,15 +74957,15 @@ }, { "type": "ClassMethod", - "start": 41148, - "end": 41223, + "start": 41088, + "end": 41163, "loc": { "start": { - "line": 1196, + "line": 1195, "column": 4 }, "end": { - "line": 1198, + "line": 1197, "column": 5 } }, @@ -75113,15 +74973,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 41152, - "end": 41167, + "start": 41092, + "end": 41107, "loc": { "start": { - "line": 1196, + "line": 1195, "column": 8 }, "end": { - "line": 1196, + "line": 1195, "column": 23 }, "identifierName": "doublePickFlyTo" @@ -75136,87 +74996,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 41170, - "end": 41223, + "start": 41110, + "end": 41163, "loc": { "start": { - "line": 1196, + "line": 1195, "column": 26 }, "end": { - "line": 1198, + "line": 1197, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 41180, - "end": 41217, + "start": 41120, + "end": 41157, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 8 }, "end": { - "line": 1197, + "line": 1196, "column": 45 } }, "argument": { "type": "MemberExpression", - "start": 41187, - "end": 41216, + "start": 41127, + "end": 41156, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 15 }, "end": { - "line": 1197, + "line": 1196, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 41187, - "end": 41200, + "start": 41127, + "end": 41140, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 15 }, "end": { - "line": 1197, + "line": 1196, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 41187, - "end": 41191, + "start": 41127, + "end": 41131, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 15 }, "end": { - "line": 1197, + "line": 1196, "column": 19 } } }, "property": { "type": "Identifier", - "start": 41192, - "end": 41200, + "start": 41132, + "end": 41140, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 20 }, "end": { - "line": 1197, + "line": 1196, "column": 28 }, "identifierName": "_configs" @@ -75227,15 +75087,15 @@ }, "property": { "type": "Identifier", - "start": 41201, - "end": 41216, + "start": 41141, + "end": 41156, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 29 }, "end": { - "line": 1197, + "line": 1196, "column": 44 }, "identifierName": "doublePickFlyTo" @@ -75253,15 +75113,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40894, - "end": 41143, + "start": 40834, + "end": 41083, "loc": { "start": { - "line": 1189, + "line": 1188, "column": 4 }, "end": { - "line": 1195, + "line": 1194, "column": 7 } } @@ -75271,289 +75131,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 41229, - "end": 41466, - "loc": { - "start": { - "line": 1200, - "column": 4 - }, - "end": { - "line": 1206, - "column": 7 - } - } - } - ] - }, - { - "type": "ClassMethod", - "start": 41471, - "end": 41558, - "loc": { - "start": { - "line": 1207, - "column": 4 - }, - "end": { - "line": 1209, - "column": 5 - } - }, - "static": false, - "computed": false, - "key": { - "type": "Identifier", - "start": 41475, - "end": 41488, - "loc": { - "start": { - "line": 1207, - "column": 8 - }, - "end": { - "line": 1207, - "column": 21 - }, - "identifierName": "panRightClick" - }, - "name": "panRightClick" - }, - "kind": "set", - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [ - { - "type": "Identifier", - "start": 41489, - "end": 41494, - "loc": { - "start": { - "line": 1207, - "column": 22 - }, - "end": { - "line": 1207, - "column": 27 - }, - "identifierName": "value" - }, - "name": "value" - } - ], - "body": { - "type": "BlockStatement", - "start": 41496, - "end": 41558, - "loc": { - "start": { - "line": 1207, - "column": 29 - }, - "end": { - "line": 1209, - "column": 5 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 41506, - "end": 41552, - "loc": { - "start": { - "line": 1208, - "column": 8 - }, - "end": { - "line": 1208, - "column": 54 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 41506, - "end": 41551, - "loc": { - "start": { - "line": 1208, - "column": 8 - }, - "end": { - "line": 1208, - "column": 53 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 41506, - "end": 41533, - "loc": { - "start": { - "line": 1208, - "column": 8 - }, - "end": { - "line": 1208, - "column": 35 - } - }, - "object": { - "type": "MemberExpression", - "start": 41506, - "end": 41519, - "loc": { - "start": { - "line": 1208, - "column": 8 - }, - "end": { - "line": 1208, - "column": 21 - } - }, - "object": { - "type": "ThisExpression", - "start": 41506, - "end": 41510, - "loc": { - "start": { - "line": 1208, - "column": 8 - }, - "end": { - "line": 1208, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 41511, - "end": 41519, - "loc": { - "start": { - "line": 1208, - "column": 13 - }, - "end": { - "line": 1208, - "column": 21 - }, - "identifierName": "_configs" - }, - "name": "_configs" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 41520, - "end": 41533, - "loc": { - "start": { - "line": 1208, - "column": 22 - }, - "end": { - "line": 1208, - "column": 35 - }, - "identifierName": "panRightClick" - }, - "name": "panRightClick" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 41536, - "end": 41551, - "loc": { - "start": { - "line": 1208, - "column": 38 - }, - "end": { - "line": 1208, - "column": 53 - } - }, - "left": { - "type": "Identifier", - "start": 41536, - "end": 41541, - "loc": { - "start": { - "line": 1208, - "column": 38 - }, - "end": { - "line": 1208, - "column": 43 - }, - "identifierName": "value" - }, - "name": "value" - }, - "operator": "!==", - "right": { - "type": "BooleanLiteral", - "start": 41546, - "end": 41551, - "loc": { - "start": { - "line": 1208, - "column": 48 - }, - "end": { - "line": 1208, - "column": 53 - } - }, - "value": false - } - } - } - } - ], - "directives": [], - "trailingComments": null - }, - "leadingComments": [ - { - "type": "CommentBlock", - "value": "*\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 ", - "start": 41229, - "end": 41466, - "loc": { - "start": { - "line": 1200, - "column": 4 - }, - "end": { - "line": 1206, - "column": 7 - } - } - } - ], - "trailingComments": [ - { - "type": "CommentBlock", - "value": "*\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 ", - "start": 41564, - "end": 41766, + "start": 41169, + "end": 41406, "loc": { "start": { - "line": 1211, + "line": 1199, "column": 4 }, "end": { - "line": 1217, + "line": 1205, "column": 7 } } @@ -75562,15 +75148,15 @@ }, { "type": "ClassMethod", - "start": 41771, - "end": 41842, + "start": 41411, + "end": 41498, "loc": { "start": { - "line": 1218, + "line": 1206, "column": 4 }, "end": { - "line": 1220, + "line": 1208, "column": 5 } }, @@ -75578,15 +75164,289 @@ "computed": false, "key": { "type": "Identifier", - "start": 41775, - "end": 41788, + "start": 41415, + "end": 41428, "loc": { "start": { - "line": 1218, + "line": 1206, + "column": 8 + }, + "end": { + "line": 1206, + "column": 21 + }, + "identifierName": "panRightClick" + }, + "name": "panRightClick" + }, + "kind": "set", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 41429, + "end": 41434, + "loc": { + "start": { + "line": 1206, + "column": 22 + }, + "end": { + "line": 1206, + "column": 27 + }, + "identifierName": "value" + }, + "name": "value" + } + ], + "body": { + "type": "BlockStatement", + "start": 41436, + "end": 41498, + "loc": { + "start": { + "line": 1206, + "column": 29 + }, + "end": { + "line": 1208, + "column": 5 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 41446, + "end": 41492, + "loc": { + "start": { + "line": 1207, + "column": 8 + }, + "end": { + "line": 1207, + "column": 54 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 41446, + "end": 41491, + "loc": { + "start": { + "line": 1207, + "column": 8 + }, + "end": { + "line": 1207, + "column": 53 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 41446, + "end": 41473, + "loc": { + "start": { + "line": 1207, + "column": 8 + }, + "end": { + "line": 1207, + "column": 35 + } + }, + "object": { + "type": "MemberExpression", + "start": 41446, + "end": 41459, + "loc": { + "start": { + "line": 1207, + "column": 8 + }, + "end": { + "line": 1207, + "column": 21 + } + }, + "object": { + "type": "ThisExpression", + "start": 41446, + "end": 41450, + "loc": { + "start": { + "line": 1207, + "column": 8 + }, + "end": { + "line": 1207, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "start": 41451, + "end": 41459, + "loc": { + "start": { + "line": 1207, + "column": 13 + }, + "end": { + "line": 1207, + "column": 21 + }, + "identifierName": "_configs" + }, + "name": "_configs" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 41460, + "end": 41473, + "loc": { + "start": { + "line": 1207, + "column": 22 + }, + "end": { + "line": 1207, + "column": 35 + }, + "identifierName": "panRightClick" + }, + "name": "panRightClick" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 41476, + "end": 41491, + "loc": { + "start": { + "line": 1207, + "column": 38 + }, + "end": { + "line": 1207, + "column": 53 + } + }, + "left": { + "type": "Identifier", + "start": 41476, + "end": 41481, + "loc": { + "start": { + "line": 1207, + "column": 38 + }, + "end": { + "line": 1207, + "column": 43 + }, + "identifierName": "value" + }, + "name": "value" + }, + "operator": "!==", + "right": { + "type": "BooleanLiteral", + "start": 41486, + "end": 41491, + "loc": { + "start": { + "line": 1207, + "column": 48 + }, + "end": { + "line": 1207, + "column": 53 + } + }, + "value": false + } + } + } + } + ], + "directives": [], + "trailingComments": null + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\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 ", + "start": 41169, + "end": 41406, + "loc": { + "start": { + "line": 1199, + "column": 4 + }, + "end": { + "line": 1205, + "column": 7 + } + } + } + ], + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\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 ", + "start": 41504, + "end": 41706, + "loc": { + "start": { + "line": 1210, + "column": 4 + }, + "end": { + "line": 1216, + "column": 7 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 41711, + "end": 41782, + "loc": { + "start": { + "line": 1217, + "column": 4 + }, + "end": { + "line": 1219, + "column": 5 + } + }, + "static": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 41715, + "end": 41728, + "loc": { + "start": { + "line": 1217, "column": 8 }, "end": { - "line": 1218, + "line": 1217, "column": 21 }, "identifierName": "panRightClick" @@ -75601,87 +75461,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 41791, - "end": 41842, + "start": 41731, + "end": 41782, "loc": { "start": { - "line": 1218, + "line": 1217, "column": 24 }, "end": { - "line": 1220, + "line": 1219, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 41801, - "end": 41836, + "start": 41741, + "end": 41776, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 8 }, "end": { - "line": 1219, + "line": 1218, "column": 43 } }, "argument": { "type": "MemberExpression", - "start": 41808, - "end": 41835, + "start": 41748, + "end": 41775, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 15 }, "end": { - "line": 1219, + "line": 1218, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 41808, - "end": 41821, + "start": 41748, + "end": 41761, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 15 }, "end": { - "line": 1219, + "line": 1218, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 41808, - "end": 41812, + "start": 41748, + "end": 41752, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 15 }, "end": { - "line": 1219, + "line": 1218, "column": 19 } } }, "property": { "type": "Identifier", - "start": 41813, - "end": 41821, + "start": 41753, + "end": 41761, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 20 }, "end": { - "line": 1219, + "line": 1218, "column": 28 }, "identifierName": "_configs" @@ -75692,15 +75552,15 @@ }, "property": { "type": "Identifier", - "start": 41822, - "end": 41835, + "start": 41762, + "end": 41775, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 29 }, "end": { - "line": 1219, + "line": 1218, "column": 42 }, "identifierName": "panRightClick" @@ -75718,15 +75578,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 41564, - "end": 41766, + "start": 41504, + "end": 41706, "loc": { "start": { - "line": 1211, + "line": 1210, "column": 4 }, "end": { - "line": 1217, + "line": 1216, "column": 7 } } @@ -75736,15 +75596,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 41848, - "end": 42678, + "start": 41788, + "end": 42618, "loc": { "start": { - "line": 1222, + "line": 1221, "column": 4 }, "end": { - "line": 1237, + "line": 1236, "column": 7 } } @@ -75753,15 +75613,15 @@ }, { "type": "ClassMethod", - "start": 42683, - "end": 42852, + "start": 42623, + "end": 42792, "loc": { "start": { - "line": 1238, + "line": 1237, "column": 4 }, "end": { - "line": 1240, + "line": 1239, "column": 5 } }, @@ -75769,15 +75629,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 42687, - "end": 42702, + "start": 42627, + "end": 42642, "loc": { "start": { - "line": 1238, + "line": 1237, "column": 8 }, "end": { - "line": 1238, + "line": 1237, "column": 23 }, "identifierName": "rotationInertia" @@ -75792,15 +75652,15 @@ "params": [ { "type": "Identifier", - "start": 42703, - "end": 42718, + "start": 42643, + "end": 42658, "loc": { "start": { - "line": 1238, + "line": 1237, "column": 24 }, "end": { - "line": 1238, + "line": 1237, "column": 39 }, "identifierName": "rotationInertia" @@ -75810,102 +75670,102 @@ ], "body": { "type": "BlockStatement", - "start": 42720, - "end": 42852, + "start": 42660, + "end": 42792, "loc": { "start": { - "line": 1238, + "line": 1237, "column": 41 }, "end": { - "line": 1240, + "line": 1239, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 42730, - "end": 42846, + "start": 42670, + "end": 42786, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 8 }, "end": { - "line": 1239, + "line": 1238, "column": 124 } }, "expression": { "type": "AssignmentExpression", - "start": 42730, - "end": 42845, + "start": 42670, + "end": 42785, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 8 }, "end": { - "line": 1239, + "line": 1238, "column": 123 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 42730, - "end": 42759, + "start": 42670, + "end": 42699, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 8 }, "end": { - "line": 1239, + "line": 1238, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 42730, - "end": 42743, + "start": 42670, + "end": 42683, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 8 }, "end": { - "line": 1239, + "line": 1238, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 42730, - "end": 42734, + "start": 42670, + "end": 42674, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 8 }, "end": { - "line": 1239, + "line": 1238, "column": 12 } } }, "property": { "type": "Identifier", - "start": 42735, - "end": 42743, + "start": 42675, + "end": 42683, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 13 }, "end": { - "line": 1239, + "line": 1238, "column": 21 }, "identifierName": "_configs" @@ -75916,15 +75776,15 @@ }, "property": { "type": "Identifier", - "start": 42744, - "end": 42759, + "start": 42684, + "end": 42699, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 22 }, "end": { - "line": 1239, + "line": 1238, "column": 37 }, "identifierName": "rotationInertia" @@ -75935,57 +75795,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 42762, - "end": 42845, + "start": 42702, + "end": 42785, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 40 }, "end": { - "line": 1239, + "line": 1238, "column": 123 } }, "test": { "type": "LogicalExpression", - "start": 42763, - "end": 42820, + "start": 42703, + "end": 42760, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 41 }, "end": { - "line": 1239, + "line": 1238, "column": 98 } }, "left": { "type": "BinaryExpression", - "start": 42763, - "end": 42792, + "start": 42703, + "end": 42732, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 41 }, "end": { - "line": 1239, + "line": 1238, "column": 70 } }, "left": { "type": "Identifier", - "start": 42763, - "end": 42778, + "start": 42703, + "end": 42718, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 41 }, "end": { - "line": 1239, + "line": 1238, "column": 56 }, "identifierName": "rotationInertia" @@ -75995,15 +75855,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 42783, - "end": 42792, + "start": 42723, + "end": 42732, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 61 }, "end": { - "line": 1239, + "line": 1238, "column": 70 }, "identifierName": "undefined" @@ -76014,29 +75874,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 42796, - "end": 42820, + "start": 42736, + "end": 42760, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 74 }, "end": { - "line": 1239, + "line": 1238, "column": 98 } }, "left": { "type": "Identifier", - "start": 42796, - "end": 42811, + "start": 42736, + "end": 42751, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 74 }, "end": { - "line": 1239, + "line": 1238, "column": 89 }, "identifierName": "rotationInertia" @@ -76046,15 +75906,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 42816, - "end": 42820, + "start": 42756, + "end": 42760, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 94 }, "end": { - "line": 1239, + "line": 1238, "column": 98 } } @@ -76062,20 +75922,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 42762 + "parenStart": 42702 } }, "consequent": { "type": "Identifier", - "start": 42824, - "end": 42839, + "start": 42764, + "end": 42779, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 102 }, "end": { - "line": 1239, + "line": 1238, "column": 117 }, "identifierName": "rotationInertia" @@ -76084,15 +75944,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 42842, - "end": 42845, + "start": 42782, + "end": 42785, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 120 }, "end": { - "line": 1239, + "line": 1238, "column": 123 } }, @@ -76113,15 +75973,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 41848, - "end": 42678, + "start": 41788, + "end": 42618, "loc": { "start": { - "line": 1222, + "line": 1221, "column": 4 }, "end": { - "line": 1237, + "line": 1236, "column": 7 } } @@ -76131,15 +75991,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 42858, - "end": 43113, + "start": 42798, + "end": 43053, "loc": { "start": { - "line": 1242, + "line": 1241, "column": 4 }, "end": { - "line": 1250, + "line": 1249, "column": 7 } } @@ -76148,15 +76008,15 @@ }, { "type": "ClassMethod", - "start": 43118, - "end": 43193, + "start": 43058, + "end": 43133, "loc": { "start": { - "line": 1251, + "line": 1250, "column": 4 }, "end": { - "line": 1253, + "line": 1252, "column": 5 } }, @@ -76164,15 +76024,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 43122, - "end": 43137, + "start": 43062, + "end": 43077, "loc": { "start": { - "line": 1251, + "line": 1250, "column": 8 }, "end": { - "line": 1251, + "line": 1250, "column": 23 }, "identifierName": "rotationInertia" @@ -76187,87 +76047,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 43140, - "end": 43193, + "start": 43080, + "end": 43133, "loc": { "start": { - "line": 1251, + "line": 1250, "column": 26 }, "end": { - "line": 1253, + "line": 1252, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 43150, - "end": 43187, + "start": 43090, + "end": 43127, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 8 }, "end": { - "line": 1252, + "line": 1251, "column": 45 } }, "argument": { "type": "MemberExpression", - "start": 43157, - "end": 43186, + "start": 43097, + "end": 43126, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 15 }, "end": { - "line": 1252, + "line": 1251, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 43157, - "end": 43170, + "start": 43097, + "end": 43110, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 15 }, "end": { - "line": 1252, + "line": 1251, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 43157, - "end": 43161, + "start": 43097, + "end": 43101, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 15 }, "end": { - "line": 1252, + "line": 1251, "column": 19 } } }, "property": { "type": "Identifier", - "start": 43162, - "end": 43170, + "start": 43102, + "end": 43110, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 20 }, "end": { - "line": 1252, + "line": 1251, "column": 28 }, "identifierName": "_configs" @@ -76278,15 +76138,15 @@ }, "property": { "type": "Identifier", - "start": 43171, - "end": 43186, + "start": 43111, + "end": 43126, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 29 }, "end": { - "line": 1252, + "line": 1251, "column": 44 }, "identifierName": "rotationInertia" @@ -76304,15 +76164,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 42858, - "end": 43113, + "start": 42798, + "end": 43053, "loc": { "start": { - "line": 1242, + "line": 1241, "column": 4 }, "end": { - "line": 1250, + "line": 1249, "column": 7 } } @@ -76322,15 +76182,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 43199, - "end": 43987, + "start": 43139, + "end": 43927, "loc": { "start": { - "line": 1255, + "line": 1254, "column": 4 }, "end": { - "line": 1269, + "line": 1268, "column": 7 } } @@ -76339,15 +76199,15 @@ }, { "type": "ClassMethod", - "start": 43992, - "end": 44161, + "start": 43932, + "end": 44101, "loc": { "start": { - "line": 1270, + "line": 1269, "column": 4 }, "end": { - "line": 1272, + "line": 1271, "column": 5 } }, @@ -76355,15 +76215,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 43996, - "end": 44011, + "start": 43936, + "end": 43951, "loc": { "start": { - "line": 1270, + "line": 1269, "column": 8 }, "end": { - "line": 1270, + "line": 1269, "column": 23 }, "identifierName": "keyboardPanRate" @@ -76378,15 +76238,15 @@ "params": [ { "type": "Identifier", - "start": 44012, - "end": 44027, + "start": 43952, + "end": 43967, "loc": { "start": { - "line": 1270, + "line": 1269, "column": 24 }, "end": { - "line": 1270, + "line": 1269, "column": 39 }, "identifierName": "keyboardPanRate" @@ -76396,102 +76256,102 @@ ], "body": { "type": "BlockStatement", - "start": 44029, - "end": 44161, + "start": 43969, + "end": 44101, "loc": { "start": { - "line": 1270, + "line": 1269, "column": 41 }, "end": { - "line": 1272, + "line": 1271, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 44039, - "end": 44155, + "start": 43979, + "end": 44095, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 8 }, "end": { - "line": 1271, + "line": 1270, "column": 124 } }, "expression": { "type": "AssignmentExpression", - "start": 44039, - "end": 44154, + "start": 43979, + "end": 44094, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 8 }, "end": { - "line": 1271, + "line": 1270, "column": 123 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44039, - "end": 44068, + "start": 43979, + "end": 44008, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 8 }, "end": { - "line": 1271, + "line": 1270, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 44039, - "end": 44052, + "start": 43979, + "end": 43992, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 8 }, "end": { - "line": 1271, + "line": 1270, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 44039, - "end": 44043, + "start": 43979, + "end": 43983, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 8 }, "end": { - "line": 1271, + "line": 1270, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44044, - "end": 44052, + "start": 43984, + "end": 43992, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 13 }, "end": { - "line": 1271, + "line": 1270, "column": 21 }, "identifierName": "_configs" @@ -76502,15 +76362,15 @@ }, "property": { "type": "Identifier", - "start": 44053, - "end": 44068, + "start": 43993, + "end": 44008, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 22 }, "end": { - "line": 1271, + "line": 1270, "column": 37 }, "identifierName": "keyboardPanRate" @@ -76521,57 +76381,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 44071, - "end": 44154, + "start": 44011, + "end": 44094, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 40 }, "end": { - "line": 1271, + "line": 1270, "column": 123 } }, "test": { "type": "LogicalExpression", - "start": 44072, - "end": 44129, + "start": 44012, + "end": 44069, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 41 }, "end": { - "line": 1271, + "line": 1270, "column": 98 } }, "left": { "type": "BinaryExpression", - "start": 44072, - "end": 44096, + "start": 44012, + "end": 44036, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 41 }, "end": { - "line": 1271, + "line": 1270, "column": 65 } }, "left": { "type": "Identifier", - "start": 44072, - "end": 44087, + "start": 44012, + "end": 44027, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 41 }, "end": { - "line": 1271, + "line": 1270, "column": 56 }, "identifierName": "keyboardPanRate" @@ -76581,15 +76441,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 44092, - "end": 44096, + "start": 44032, + "end": 44036, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 61 }, "end": { - "line": 1271, + "line": 1270, "column": 65 } } @@ -76598,29 +76458,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 44100, - "end": 44129, + "start": 44040, + "end": 44069, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 69 }, "end": { - "line": 1271, + "line": 1270, "column": 98 } }, "left": { "type": "Identifier", - "start": 44100, - "end": 44115, + "start": 44040, + "end": 44055, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 69 }, "end": { - "line": 1271, + "line": 1270, "column": 84 }, "identifierName": "keyboardPanRate" @@ -76630,15 +76490,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 44120, - "end": 44129, + "start": 44060, + "end": 44069, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 89 }, "end": { - "line": 1271, + "line": 1270, "column": 98 }, "identifierName": "undefined" @@ -76648,20 +76508,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 44071 + "parenStart": 44011 } }, "consequent": { "type": "Identifier", - "start": 44133, - "end": 44148, + "start": 44073, + "end": 44088, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 102 }, "end": { - "line": 1271, + "line": 1270, "column": 117 }, "identifierName": "keyboardPanRate" @@ -76670,15 +76530,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 44151, - "end": 44154, + "start": 44091, + "end": 44094, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 120 }, "end": { - "line": 1271, + "line": 1270, "column": 123 } }, @@ -76699,15 +76559,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 43199, - "end": 43987, + "start": 43139, + "end": 43927, "loc": { "start": { - "line": 1255, + "line": 1254, "column": 4 }, "end": { - "line": 1269, + "line": 1268, "column": 7 } } @@ -76717,15 +76577,15 @@ { "type": "CommentBlock", "value": "*\n * Sets how fast the camera pans on touch panning\n *\n * @param {Number} touchPanRate The new touch pan rate.\n ", - "start": 44168, - "end": 44300, + "start": 44108, + "end": 44240, "loc": { "start": { - "line": 1275, + "line": 1274, "column": 4 }, "end": { - "line": 1279, + "line": 1278, "column": 7 } } @@ -76734,15 +76594,15 @@ }, { "type": "ClassMethod", - "start": 44305, - "end": 44456, + "start": 44245, + "end": 44396, "loc": { "start": { - "line": 1280, + "line": 1279, "column": 4 }, "end": { - "line": 1282, + "line": 1281, "column": 5 } }, @@ -76750,15 +76610,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 44309, - "end": 44321, + "start": 44249, + "end": 44261, "loc": { "start": { - "line": 1280, + "line": 1279, "column": 8 }, "end": { - "line": 1280, + "line": 1279, "column": 20 }, "identifierName": "touchPanRate" @@ -76773,15 +76633,15 @@ "params": [ { "type": "Identifier", - "start": 44322, - "end": 44334, + "start": 44262, + "end": 44274, "loc": { "start": { - "line": 1280, + "line": 1279, "column": 21 }, "end": { - "line": 1280, + "line": 1279, "column": 33 }, "identifierName": "touchPanRate" @@ -76791,102 +76651,102 @@ ], "body": { "type": "BlockStatement", - "start": 44336, - "end": 44456, + "start": 44276, + "end": 44396, "loc": { "start": { - "line": 1280, + "line": 1279, "column": 35 }, "end": { - "line": 1282, + "line": 1281, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 44346, - "end": 44450, + "start": 44286, + "end": 44390, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 8 }, "end": { - "line": 1281, + "line": 1280, "column": 112 } }, "expression": { "type": "AssignmentExpression", - "start": 44346, - "end": 44449, + "start": 44286, + "end": 44389, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 8 }, "end": { - "line": 1281, + "line": 1280, "column": 111 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 44346, - "end": 44372, + "start": 44286, + "end": 44312, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 8 }, "end": { - "line": 1281, + "line": 1280, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 44346, - "end": 44359, + "start": 44286, + "end": 44299, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 8 }, "end": { - "line": 1281, + "line": 1280, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 44346, - "end": 44350, + "start": 44286, + "end": 44290, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 8 }, "end": { - "line": 1281, + "line": 1280, "column": 12 } } }, "property": { "type": "Identifier", - "start": 44351, - "end": 44359, + "start": 44291, + "end": 44299, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 13 }, "end": { - "line": 1281, + "line": 1280, "column": 21 }, "identifierName": "_configs" @@ -76897,15 +76757,15 @@ }, "property": { "type": "Identifier", - "start": 44360, - "end": 44372, + "start": 44300, + "end": 44312, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 22 }, "end": { - "line": 1281, + "line": 1280, "column": 34 }, "identifierName": "touchPanRate" @@ -76916,57 +76776,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 44375, - "end": 44449, + "start": 44315, + "end": 44389, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 37 }, "end": { - "line": 1281, + "line": 1280, "column": 111 } }, "test": { "type": "LogicalExpression", - "start": 44376, - "end": 44427, + "start": 44316, + "end": 44367, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 38 }, "end": { - "line": 1281, + "line": 1280, "column": 89 } }, "left": { "type": "BinaryExpression", - "start": 44376, - "end": 44397, + "start": 44316, + "end": 44337, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 38 }, "end": { - "line": 1281, + "line": 1280, "column": 59 } }, "left": { "type": "Identifier", - "start": 44376, - "end": 44388, + "start": 44316, + "end": 44328, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 38 }, "end": { - "line": 1281, + "line": 1280, "column": 50 }, "identifierName": "touchPanRate" @@ -76976,15 +76836,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 44393, - "end": 44397, + "start": 44333, + "end": 44337, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 55 }, "end": { - "line": 1281, + "line": 1280, "column": 59 } } @@ -76993,29 +76853,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 44401, - "end": 44427, + "start": 44341, + "end": 44367, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 63 }, "end": { - "line": 1281, + "line": 1280, "column": 89 } }, "left": { "type": "Identifier", - "start": 44401, - "end": 44413, + "start": 44341, + "end": 44353, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 63 }, "end": { - "line": 1281, + "line": 1280, "column": 75 }, "identifierName": "touchPanRate" @@ -77025,15 +76885,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 44418, - "end": 44427, + "start": 44358, + "end": 44367, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 80 }, "end": { - "line": 1281, + "line": 1280, "column": 89 }, "identifierName": "undefined" @@ -77043,20 +76903,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 44375 + "parenStart": 44315 } }, "consequent": { "type": "Identifier", - "start": 44431, - "end": 44443, + "start": 44371, + "end": 44383, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 93 }, "end": { - "line": 1281, + "line": 1280, "column": 105 }, "identifierName": "touchPanRate" @@ -77065,15 +76925,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 44446, - "end": 44449, + "start": 44386, + "end": 44389, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 108 }, "end": { - "line": 1281, + "line": 1280, "column": 111 } }, @@ -77094,15 +76954,15 @@ { "type": "CommentBlock", "value": "*\n * Sets how fast the camera pans on touch panning\n *\n * @param {Number} touchPanRate The new touch pan rate.\n ", - "start": 44168, - "end": 44300, + "start": 44108, + "end": 44240, "loc": { "start": { - "line": 1275, + "line": 1274, "column": 4 }, "end": { - "line": 1279, + "line": 1278, "column": 7 } } @@ -77112,15 +76972,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44462, - "end": 44633, + "start": 44402, + "end": 44573, "loc": { "start": { - "line": 1284, + "line": 1283, "column": 4 }, "end": { - "line": 1290, + "line": 1289, "column": 7 } } @@ -77129,15 +76989,15 @@ }, { "type": "ClassMethod", - "start": 44638, - "end": 44707, + "start": 44578, + "end": 44647, "loc": { "start": { - "line": 1291, + "line": 1290, "column": 4 }, "end": { - "line": 1293, + "line": 1292, "column": 5 } }, @@ -77145,15 +77005,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 44642, - "end": 44654, + "start": 44582, + "end": 44594, "loc": { "start": { - "line": 1291, + "line": 1290, "column": 8 }, "end": { - "line": 1291, + "line": 1290, "column": 20 }, "identifierName": "touchPanRate" @@ -77168,87 +77028,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 44657, - "end": 44707, + "start": 44597, + "end": 44647, "loc": { "start": { - "line": 1291, + "line": 1290, "column": 23 }, "end": { - "line": 1293, + "line": 1292, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 44667, - "end": 44701, + "start": 44607, + "end": 44641, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 8 }, "end": { - "line": 1292, + "line": 1291, "column": 42 } }, "argument": { "type": "MemberExpression", - "start": 44674, - "end": 44700, + "start": 44614, + "end": 44640, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 15 }, "end": { - "line": 1292, + "line": 1291, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 44674, - "end": 44687, + "start": 44614, + "end": 44627, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 15 }, "end": { - "line": 1292, + "line": 1291, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 44674, - "end": 44678, + "start": 44614, + "end": 44618, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 15 }, "end": { - "line": 1292, + "line": 1291, "column": 19 } } }, "property": { "type": "Identifier", - "start": 44679, - "end": 44687, + "start": 44619, + "end": 44627, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 20 }, "end": { - "line": 1292, + "line": 1291, "column": 28 }, "identifierName": "_configs" @@ -77259,15 +77119,15 @@ }, "property": { "type": "Identifier", - "start": 44688, - "end": 44700, + "start": 44628, + "end": 44640, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 29 }, "end": { - "line": 1292, + "line": 1291, "column": 41 }, "identifierName": "touchPanRate" @@ -77285,15 +77145,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44462, - "end": 44633, + "start": 44402, + "end": 44573, "loc": { "start": { - "line": 1284, + "line": 1283, "column": 4 }, "end": { - "line": 1290, + "line": 1289, "column": 7 } } @@ -77303,15 +77163,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44713, - "end": 44903, + "start": 44653, + "end": 44843, "loc": { "start": { - "line": 1295, + "line": 1294, "column": 4 }, "end": { - "line": 1301, + "line": 1300, "column": 7 } } @@ -77320,15 +77180,15 @@ }, { "type": "ClassMethod", - "start": 44908, - "end": 44983, + "start": 44848, + "end": 44923, "loc": { "start": { - "line": 1302, + "line": 1301, "column": 4 }, "end": { - "line": 1304, + "line": 1303, "column": 5 } }, @@ -77336,15 +77196,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 44912, - "end": 44927, + "start": 44852, + "end": 44867, "loc": { "start": { - "line": 1302, + "line": 1301, "column": 8 }, "end": { - "line": 1302, + "line": 1301, "column": 23 }, "identifierName": "keyboardPanRate" @@ -77359,87 +77219,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 44930, - "end": 44983, + "start": 44870, + "end": 44923, "loc": { "start": { - "line": 1302, + "line": 1301, "column": 26 }, "end": { - "line": 1304, + "line": 1303, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 44940, - "end": 44977, + "start": 44880, + "end": 44917, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 8 }, "end": { - "line": 1303, + "line": 1302, "column": 45 } }, "argument": { "type": "MemberExpression", - "start": 44947, - "end": 44976, + "start": 44887, + "end": 44916, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 15 }, "end": { - "line": 1303, + "line": 1302, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 44947, - "end": 44960, + "start": 44887, + "end": 44900, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 15 }, "end": { - "line": 1303, + "line": 1302, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 44947, - "end": 44951, + "start": 44887, + "end": 44891, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 15 }, "end": { - "line": 1303, + "line": 1302, "column": 19 } } }, "property": { "type": "Identifier", - "start": 44952, - "end": 44960, + "start": 44892, + "end": 44900, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 20 }, "end": { - "line": 1303, + "line": 1302, "column": 28 }, "identifierName": "_configs" @@ -77450,15 +77310,15 @@ }, "property": { "type": "Identifier", - "start": 44961, - "end": 44976, + "start": 44901, + "end": 44916, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 29 }, "end": { - "line": 1303, + "line": 1302, "column": 44 }, "identifierName": "keyboardPanRate" @@ -77476,15 +77336,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44713, - "end": 44903, + "start": 44653, + "end": 44843, "loc": { "start": { - "line": 1295, + "line": 1294, "column": 4 }, "end": { - "line": 1301, + "line": 1300, "column": 7 } } @@ -77494,15 +77354,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44989, - "end": 45415, + "start": 44929, + "end": 45355, "loc": { "start": { - "line": 1306, + "line": 1305, "column": 4 }, "end": { - "line": 1314, + "line": 1313, "column": 7 } } @@ -77511,15 +77371,15 @@ }, { "type": "ClassMethod", - "start": 45420, - "end": 45620, + "start": 45360, + "end": 45560, "loc": { "start": { - "line": 1315, + "line": 1314, "column": 4 }, "end": { - "line": 1317, + "line": 1316, "column": 5 } }, @@ -77527,15 +77387,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 45424, - "end": 45444, + "start": 45364, + "end": 45384, "loc": { "start": { - "line": 1315, + "line": 1314, "column": 8 }, "end": { - "line": 1315, + "line": 1314, "column": 28 }, "identifierName": "keyboardRotationRate" @@ -77550,15 +77410,15 @@ "params": [ { "type": "Identifier", - "start": 45445, - "end": 45465, + "start": 45385, + "end": 45405, "loc": { "start": { - "line": 1315, + "line": 1314, "column": 29 }, "end": { - "line": 1315, + "line": 1314, "column": 49 }, "identifierName": "keyboardRotationRate" @@ -77568,102 +77428,102 @@ ], "body": { "type": "BlockStatement", - "start": 45467, - "end": 45620, + "start": 45407, + "end": 45560, "loc": { "start": { - "line": 1315, + "line": 1314, "column": 51 }, "end": { - "line": 1317, + "line": 1316, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 45477, - "end": 45614, + "start": 45417, + "end": 45554, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 8 }, "end": { - "line": 1316, + "line": 1315, "column": 145 } }, "expression": { "type": "AssignmentExpression", - "start": 45477, - "end": 45613, + "start": 45417, + "end": 45553, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 8 }, "end": { - "line": 1316, + "line": 1315, "column": 144 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 45477, - "end": 45511, + "start": 45417, + "end": 45451, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 8 }, "end": { - "line": 1316, + "line": 1315, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 45477, - "end": 45490, + "start": 45417, + "end": 45430, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 8 }, "end": { - "line": 1316, + "line": 1315, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 45477, - "end": 45481, + "start": 45417, + "end": 45421, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 8 }, "end": { - "line": 1316, + "line": 1315, "column": 12 } } }, "property": { "type": "Identifier", - "start": 45482, - "end": 45490, + "start": 45422, + "end": 45430, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 13 }, "end": { - "line": 1316, + "line": 1315, "column": 21 }, "identifierName": "_configs" @@ -77674,15 +77534,15 @@ }, "property": { "type": "Identifier", - "start": 45491, - "end": 45511, + "start": 45431, + "end": 45451, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 22 }, "end": { - "line": 1316, + "line": 1315, "column": 42 }, "identifierName": "keyboardRotationRate" @@ -77693,57 +77553,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 45514, - "end": 45613, + "start": 45454, + "end": 45553, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 45 }, "end": { - "line": 1316, + "line": 1315, "column": 144 } }, "test": { "type": "LogicalExpression", - "start": 45515, - "end": 45582, + "start": 45455, + "end": 45522, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 46 }, "end": { - "line": 1316, + "line": 1315, "column": 113 } }, "left": { "type": "BinaryExpression", - "start": 45515, - "end": 45544, + "start": 45455, + "end": 45484, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 46 }, "end": { - "line": 1316, + "line": 1315, "column": 75 } }, "left": { "type": "Identifier", - "start": 45515, - "end": 45535, + "start": 45455, + "end": 45475, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 46 }, "end": { - "line": 1316, + "line": 1315, "column": 66 }, "identifierName": "keyboardRotationRate" @@ -77753,15 +77613,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 45540, - "end": 45544, + "start": 45480, + "end": 45484, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 71 }, "end": { - "line": 1316, + "line": 1315, "column": 75 } } @@ -77770,29 +77630,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 45548, - "end": 45582, + "start": 45488, + "end": 45522, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 79 }, "end": { - "line": 1316, + "line": 1315, "column": 113 } }, "left": { "type": "Identifier", - "start": 45548, - "end": 45568, + "start": 45488, + "end": 45508, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 79 }, "end": { - "line": 1316, + "line": 1315, "column": 99 }, "identifierName": "keyboardRotationRate" @@ -77802,15 +77662,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 45573, - "end": 45582, + "start": 45513, + "end": 45522, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 104 }, "end": { - "line": 1316, + "line": 1315, "column": 113 }, "identifierName": "undefined" @@ -77820,20 +77680,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 45514 + "parenStart": 45454 } }, "consequent": { "type": "Identifier", - "start": 45586, - "end": 45606, + "start": 45526, + "end": 45546, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 117 }, "end": { - "line": 1316, + "line": 1315, "column": 137 }, "identifierName": "keyboardRotationRate" @@ -77842,15 +77702,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 45609, - "end": 45613, + "start": 45549, + "end": 45553, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 140 }, "end": { - "line": 1316, + "line": 1315, "column": 144 } }, @@ -77871,15 +77731,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44989, - "end": 45415, + "start": 44929, + "end": 45355, "loc": { "start": { - "line": 1306, + "line": 1305, "column": 4 }, "end": { - "line": 1314, + "line": 1313, "column": 7 } } @@ -77889,15 +77749,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 45626, - "end": 45839, + "start": 45566, + "end": 45779, "loc": { "start": { - "line": 1319, + "line": 1318, "column": 4 }, "end": { - "line": 1325, + "line": 1324, "column": 7 } } @@ -77906,15 +77766,15 @@ }, { "type": "ClassMethod", - "start": 45844, - "end": 45929, + "start": 45784, + "end": 45869, "loc": { "start": { - "line": 1326, + "line": 1325, "column": 4 }, "end": { - "line": 1328, + "line": 1327, "column": 5 } }, @@ -77922,15 +77782,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 45848, - "end": 45868, + "start": 45788, + "end": 45808, "loc": { "start": { - "line": 1326, + "line": 1325, "column": 8 }, "end": { - "line": 1326, + "line": 1325, "column": 28 }, "identifierName": "keyboardRotationRate" @@ -77945,87 +77805,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 45871, - "end": 45929, + "start": 45811, + "end": 45869, "loc": { "start": { - "line": 1326, + "line": 1325, "column": 31 }, "end": { - "line": 1328, + "line": 1327, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 45881, - "end": 45923, + "start": 45821, + "end": 45863, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 8 }, "end": { - "line": 1327, + "line": 1326, "column": 50 } }, "argument": { "type": "MemberExpression", - "start": 45888, - "end": 45922, + "start": 45828, + "end": 45862, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 15 }, "end": { - "line": 1327, + "line": 1326, "column": 49 } }, "object": { "type": "MemberExpression", - "start": 45888, - "end": 45901, + "start": 45828, + "end": 45841, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 15 }, "end": { - "line": 1327, + "line": 1326, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 45888, - "end": 45892, + "start": 45828, + "end": 45832, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 15 }, "end": { - "line": 1327, + "line": 1326, "column": 19 } } }, "property": { "type": "Identifier", - "start": 45893, - "end": 45901, + "start": 45833, + "end": 45841, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 20 }, "end": { - "line": 1327, + "line": 1326, "column": 28 }, "identifierName": "_configs" @@ -78036,15 +77896,15 @@ }, "property": { "type": "Identifier", - "start": 45902, - "end": 45922, + "start": 45842, + "end": 45862, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 29 }, "end": { - "line": 1327, + "line": 1326, "column": 49 }, "identifierName": "keyboardRotationRate" @@ -78062,15 +77922,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 45626, - "end": 45839, + "start": 45566, + "end": 45779, "loc": { "start": { - "line": 1319, + "line": 1318, "column": 4 }, "end": { - "line": 1325, + "line": 1324, "column": 7 } } @@ -78080,15 +77940,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 45935, - "end": 46751, + "start": 45875, + "end": 46691, "loc": { "start": { - "line": 1330, + "line": 1329, "column": 4 }, "end": { - "line": 1345, + "line": 1344, "column": 7 } } @@ -78097,15 +77957,15 @@ }, { "type": "ClassMethod", - "start": 46756, - "end": 46933, + "start": 46696, + "end": 46873, "loc": { "start": { - "line": 1346, + "line": 1345, "column": 4 }, "end": { - "line": 1348, + "line": 1347, "column": 5 } }, @@ -78113,15 +77973,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 46760, - "end": 46776, + "start": 46700, + "end": 46716, "loc": { "start": { - "line": 1346, + "line": 1345, "column": 8 }, "end": { - "line": 1346, + "line": 1345, "column": 24 }, "identifierName": "dragRotationRate" @@ -78136,15 +77996,15 @@ "params": [ { "type": "Identifier", - "start": 46777, - "end": 46793, + "start": 46717, + "end": 46733, "loc": { "start": { - "line": 1346, + "line": 1345, "column": 25 }, "end": { - "line": 1346, + "line": 1345, "column": 41 }, "identifierName": "dragRotationRate" @@ -78154,102 +78014,102 @@ ], "body": { "type": "BlockStatement", - "start": 46795, - "end": 46933, + "start": 46735, + "end": 46873, "loc": { "start": { - "line": 1346, + "line": 1345, "column": 43 }, "end": { - "line": 1348, + "line": 1347, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 46805, - "end": 46927, + "start": 46745, + "end": 46867, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 8 }, "end": { - "line": 1347, + "line": 1346, "column": 130 } }, "expression": { "type": "AssignmentExpression", - "start": 46805, - "end": 46926, + "start": 46745, + "end": 46866, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 8 }, "end": { - "line": 1347, + "line": 1346, "column": 129 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 46805, - "end": 46835, + "start": 46745, + "end": 46775, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 8 }, "end": { - "line": 1347, + "line": 1346, "column": 38 } }, "object": { "type": "MemberExpression", - "start": 46805, - "end": 46818, + "start": 46745, + "end": 46758, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 8 }, "end": { - "line": 1347, + "line": 1346, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 46805, - "end": 46809, + "start": 46745, + "end": 46749, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 8 }, "end": { - "line": 1347, + "line": 1346, "column": 12 } } }, "property": { "type": "Identifier", - "start": 46810, - "end": 46818, + "start": 46750, + "end": 46758, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 13 }, "end": { - "line": 1347, + "line": 1346, "column": 21 }, "identifierName": "_configs" @@ -78260,15 +78120,15 @@ }, "property": { "type": "Identifier", - "start": 46819, - "end": 46835, + "start": 46759, + "end": 46775, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 22 }, "end": { - "line": 1347, + "line": 1346, "column": 38 }, "identifierName": "dragRotationRate" @@ -78279,57 +78139,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 46838, - "end": 46926, + "start": 46778, + "end": 46866, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 41 }, "end": { - "line": 1347, + "line": 1346, "column": 129 } }, "test": { "type": "LogicalExpression", - "start": 46839, - "end": 46898, + "start": 46779, + "end": 46838, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 42 }, "end": { - "line": 1347, + "line": 1346, "column": 101 } }, "left": { "type": "BinaryExpression", - "start": 46839, - "end": 46864, + "start": 46779, + "end": 46804, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 42 }, "end": { - "line": 1347, + "line": 1346, "column": 67 } }, "left": { "type": "Identifier", - "start": 46839, - "end": 46855, + "start": 46779, + "end": 46795, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 42 }, "end": { - "line": 1347, + "line": 1346, "column": 58 }, "identifierName": "dragRotationRate" @@ -78339,15 +78199,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 46860, - "end": 46864, + "start": 46800, + "end": 46804, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 63 }, "end": { - "line": 1347, + "line": 1346, "column": 67 } } @@ -78356,29 +78216,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 46868, - "end": 46898, + "start": 46808, + "end": 46838, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 71 }, "end": { - "line": 1347, + "line": 1346, "column": 101 } }, "left": { "type": "Identifier", - "start": 46868, - "end": 46884, + "start": 46808, + "end": 46824, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 71 }, "end": { - "line": 1347, + "line": 1346, "column": 87 }, "identifierName": "dragRotationRate" @@ -78388,15 +78248,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 46889, - "end": 46898, + "start": 46829, + "end": 46838, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 92 }, "end": { - "line": 1347, + "line": 1346, "column": 101 }, "identifierName": "undefined" @@ -78406,20 +78266,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 46838 + "parenStart": 46778 } }, "consequent": { "type": "Identifier", - "start": 46902, - "end": 46918, + "start": 46842, + "end": 46858, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 105 }, "end": { - "line": 1347, + "line": 1346, "column": 121 }, "identifierName": "dragRotationRate" @@ -78428,15 +78288,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 46921, - "end": 46926, + "start": 46861, + "end": 46866, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 124 }, "end": { - "line": 1347, + "line": 1346, "column": 129 } }, @@ -78457,15 +78317,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 45935, - "end": 46751, + "start": 45875, + "end": 46691, "loc": { "start": { - "line": 1330, + "line": 1329, "column": 4 }, "end": { - "line": 1345, + "line": 1344, "column": 7 } } @@ -78475,15 +78335,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the current drag rotation rate.\n *\n * Default is ````360.0````.\n *\n * @returns {Number} The current drag rotation rate.\n ", - "start": 46939, - "end": 47098, + "start": 46879, + "end": 47038, "loc": { "start": { - "line": 1350, + "line": 1349, "column": 4 }, "end": { - "line": 1356, + "line": 1355, "column": 7 } } @@ -78492,15 +78352,15 @@ }, { "type": "ClassMethod", - "start": 47103, - "end": 47180, + "start": 47043, + "end": 47120, "loc": { "start": { - "line": 1357, + "line": 1356, "column": 4 }, "end": { - "line": 1359, + "line": 1358, "column": 5 } }, @@ -78508,15 +78368,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 47107, - "end": 47123, + "start": 47047, + "end": 47063, "loc": { "start": { - "line": 1357, + "line": 1356, "column": 8 }, "end": { - "line": 1357, + "line": 1356, "column": 24 }, "identifierName": "dragRotationRate" @@ -78531,87 +78391,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 47126, - "end": 47180, + "start": 47066, + "end": 47120, "loc": { "start": { - "line": 1357, + "line": 1356, "column": 27 }, "end": { - "line": 1359, + "line": 1358, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 47136, - "end": 47174, + "start": 47076, + "end": 47114, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 8 }, "end": { - "line": 1358, + "line": 1357, "column": 46 } }, "argument": { "type": "MemberExpression", - "start": 47143, - "end": 47173, + "start": 47083, + "end": 47113, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 15 }, "end": { - "line": 1358, + "line": 1357, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 47143, - "end": 47156, + "start": 47083, + "end": 47096, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 15 }, "end": { - "line": 1358, + "line": 1357, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 47143, - "end": 47147, + "start": 47083, + "end": 47087, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 15 }, "end": { - "line": 1358, + "line": 1357, "column": 19 } } }, "property": { "type": "Identifier", - "start": 47148, - "end": 47156, + "start": 47088, + "end": 47096, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 20 }, "end": { - "line": 1358, + "line": 1357, "column": 28 }, "identifierName": "_configs" @@ -78622,15 +78482,15 @@ }, "property": { "type": "Identifier", - "start": 47157, - "end": 47173, + "start": 47097, + "end": 47113, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 29 }, "end": { - "line": 1358, + "line": 1357, "column": 45 }, "identifierName": "dragRotationRate" @@ -78648,15 +78508,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the current drag rotation rate.\n *\n * Default is ````360.0````.\n *\n * @returns {Number} The current drag rotation rate.\n ", - "start": 46939, - "end": 47098, + "start": 46879, + "end": 47038, "loc": { "start": { - "line": 1350, + "line": 1349, "column": 4 }, "end": { - "line": 1356, + "line": 1355, "column": 7 } } @@ -78666,15 +78526,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 47186, - "end": 47523, + "start": 47126, + "end": 47463, "loc": { "start": { - "line": 1361, + "line": 1360, "column": 4 }, "end": { - "line": 1368, + "line": 1367, "column": 7 } } @@ -78683,15 +78543,15 @@ }, { "type": "ClassMethod", - "start": 47528, - "end": 47710, + "start": 47468, + "end": 47650, "loc": { "start": { - "line": 1369, + "line": 1368, "column": 4 }, "end": { - "line": 1371, + "line": 1370, "column": 5 } }, @@ -78699,15 +78559,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 47532, - "end": 47549, + "start": 47472, + "end": 47489, "loc": { "start": { - "line": 1369, + "line": 1368, "column": 8 }, "end": { - "line": 1369, + "line": 1368, "column": 25 }, "identifierName": "keyboardDollyRate" @@ -78722,15 +78582,15 @@ "params": [ { "type": "Identifier", - "start": 47550, - "end": 47567, + "start": 47490, + "end": 47507, "loc": { "start": { - "line": 1369, + "line": 1368, "column": 26 }, "end": { - "line": 1369, + "line": 1368, "column": 43 }, "identifierName": "keyboardDollyRate" @@ -78740,102 +78600,102 @@ ], "body": { "type": "BlockStatement", - "start": 47569, - "end": 47710, + "start": 47509, + "end": 47650, "loc": { "start": { - "line": 1369, + "line": 1368, "column": 45 }, "end": { - "line": 1371, + "line": 1370, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 47579, - "end": 47704, + "start": 47519, + "end": 47644, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 8 }, "end": { - "line": 1370, + "line": 1369, "column": 133 } }, "expression": { "type": "AssignmentExpression", - "start": 47579, - "end": 47703, + "start": 47519, + "end": 47643, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 8 }, "end": { - "line": 1370, + "line": 1369, "column": 132 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 47579, - "end": 47610, + "start": 47519, + "end": 47550, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 8 }, "end": { - "line": 1370, + "line": 1369, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 47579, - "end": 47592, + "start": 47519, + "end": 47532, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 8 }, "end": { - "line": 1370, + "line": 1369, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 47579, - "end": 47583, + "start": 47519, + "end": 47523, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 8 }, "end": { - "line": 1370, + "line": 1369, "column": 12 } } }, "property": { "type": "Identifier", - "start": 47584, - "end": 47592, + "start": 47524, + "end": 47532, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 13 }, "end": { - "line": 1370, + "line": 1369, "column": 21 }, "identifierName": "_configs" @@ -78846,15 +78706,15 @@ }, "property": { "type": "Identifier", - "start": 47593, - "end": 47610, + "start": 47533, + "end": 47550, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 22 }, "end": { - "line": 1370, + "line": 1369, "column": 39 }, "identifierName": "keyboardDollyRate" @@ -78865,57 +78725,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 47613, - "end": 47703, + "start": 47553, + "end": 47643, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 42 }, "end": { - "line": 1370, + "line": 1369, "column": 132 } }, "test": { "type": "LogicalExpression", - "start": 47614, - "end": 47675, + "start": 47554, + "end": 47615, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 43 }, "end": { - "line": 1370, + "line": 1369, "column": 104 } }, "left": { "type": "BinaryExpression", - "start": 47614, - "end": 47640, + "start": 47554, + "end": 47580, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 43 }, "end": { - "line": 1370, + "line": 1369, "column": 69 } }, "left": { "type": "Identifier", - "start": 47614, - "end": 47631, + "start": 47554, + "end": 47571, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 43 }, "end": { - "line": 1370, + "line": 1369, "column": 60 }, "identifierName": "keyboardDollyRate" @@ -78925,15 +78785,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 47636, - "end": 47640, + "start": 47576, + "end": 47580, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 65 }, "end": { - "line": 1370, + "line": 1369, "column": 69 } } @@ -78942,29 +78802,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 47644, - "end": 47675, + "start": 47584, + "end": 47615, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 73 }, "end": { - "line": 1370, + "line": 1369, "column": 104 } }, "left": { "type": "Identifier", - "start": 47644, - "end": 47661, + "start": 47584, + "end": 47601, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 73 }, "end": { - "line": 1370, + "line": 1369, "column": 90 }, "identifierName": "keyboardDollyRate" @@ -78974,15 +78834,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 47666, - "end": 47675, + "start": 47606, + "end": 47615, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 95 }, "end": { - "line": 1370, + "line": 1369, "column": 104 }, "identifierName": "undefined" @@ -78992,20 +78852,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 47613 + "parenStart": 47553 } }, "consequent": { "type": "Identifier", - "start": 47679, - "end": 47696, + "start": 47619, + "end": 47636, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 108 }, "end": { - "line": 1370, + "line": 1369, "column": 125 }, "identifierName": "keyboardDollyRate" @@ -79014,15 +78874,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 47699, - "end": 47703, + "start": 47639, + "end": 47643, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 128 }, "end": { - "line": 1370, + "line": 1369, "column": 132 } }, @@ -79043,15 +78903,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 47186, - "end": 47523, + "start": 47126, + "end": 47463, "loc": { "start": { - "line": 1361, + "line": 1360, "column": 4 }, "end": { - "line": 1368, + "line": 1367, "column": 7 } } @@ -79061,15 +78921,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 47716, - "end": 47911, + "start": 47656, + "end": 47851, "loc": { "start": { - "line": 1373, + "line": 1372, "column": 4 }, "end": { - "line": 1379, + "line": 1378, "column": 7 } } @@ -79078,15 +78938,15 @@ }, { "type": "ClassMethod", - "start": 47916, - "end": 47995, + "start": 47856, + "end": 47935, "loc": { "start": { - "line": 1380, + "line": 1379, "column": 4 }, "end": { - "line": 1382, + "line": 1381, "column": 5 } }, @@ -79094,15 +78954,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 47920, - "end": 47937, + "start": 47860, + "end": 47877, "loc": { "start": { - "line": 1380, + "line": 1379, "column": 8 }, "end": { - "line": 1380, + "line": 1379, "column": 25 }, "identifierName": "keyboardDollyRate" @@ -79117,87 +78977,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 47940, - "end": 47995, + "start": 47880, + "end": 47935, "loc": { "start": { - "line": 1380, + "line": 1379, "column": 28 }, "end": { - "line": 1382, + "line": 1381, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 47950, - "end": 47989, + "start": 47890, + "end": 47929, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 8 }, "end": { - "line": 1381, + "line": 1380, "column": 47 } }, "argument": { "type": "MemberExpression", - "start": 47957, - "end": 47988, + "start": 47897, + "end": 47928, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 15 }, "end": { - "line": 1381, + "line": 1380, "column": 46 } }, "object": { "type": "MemberExpression", - "start": 47957, - "end": 47970, + "start": 47897, + "end": 47910, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 15 }, "end": { - "line": 1381, + "line": 1380, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 47957, - "end": 47961, + "start": 47897, + "end": 47901, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 15 }, "end": { - "line": 1381, + "line": 1380, "column": 19 } } }, "property": { "type": "Identifier", - "start": 47962, - "end": 47970, + "start": 47902, + "end": 47910, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 20 }, "end": { - "line": 1381, + "line": 1380, "column": 28 }, "identifierName": "_configs" @@ -79208,15 +79068,15 @@ }, "property": { "type": "Identifier", - "start": 47971, - "end": 47988, + "start": 47911, + "end": 47928, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 29 }, "end": { - "line": 1381, + "line": 1380, "column": 46 }, "identifierName": "keyboardDollyRate" @@ -79234,15 +79094,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 47716, - "end": 47911, + "start": 47656, + "end": 47851, "loc": { "start": { - "line": 1373, + "line": 1372, "column": 4 }, "end": { - "line": 1379, + "line": 1378, "column": 7 } } @@ -79252,15 +79112,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48001, - "end": 48185, + "start": 47941, + "end": 48125, "loc": { "start": { - "line": 1384, + "line": 1383, "column": 4 }, "end": { - "line": 1390, + "line": 1389, "column": 7 } } @@ -79269,15 +79129,15 @@ }, { "type": "ClassMethod", - "start": 48190, - "end": 48353, + "start": 48130, + "end": 48293, "loc": { "start": { - "line": 1391, + "line": 1390, "column": 4 }, "end": { - "line": 1393, + "line": 1392, "column": 5 } }, @@ -79285,15 +79145,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 48194, - "end": 48208, + "start": 48134, + "end": 48148, "loc": { "start": { - "line": 1391, + "line": 1390, "column": 8 }, "end": { - "line": 1391, + "line": 1390, "column": 22 }, "identifierName": "touchDollyRate" @@ -79308,15 +79168,15 @@ "params": [ { "type": "Identifier", - "start": 48209, - "end": 48223, + "start": 48149, + "end": 48163, "loc": { "start": { - "line": 1391, + "line": 1390, "column": 23 }, "end": { - "line": 1391, + "line": 1390, "column": 37 }, "identifierName": "touchDollyRate" @@ -79326,102 +79186,102 @@ ], "body": { "type": "BlockStatement", - "start": 48225, - "end": 48353, + "start": 48165, + "end": 48293, "loc": { "start": { - "line": 1391, + "line": 1390, "column": 39 }, "end": { - "line": 1393, + "line": 1392, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 48235, - "end": 48347, + "start": 48175, + "end": 48287, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 8 }, "end": { - "line": 1392, + "line": 1391, "column": 120 } }, "expression": { "type": "AssignmentExpression", - "start": 48235, - "end": 48346, + "start": 48175, + "end": 48286, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 8 }, "end": { - "line": 1392, + "line": 1391, "column": 119 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 48235, - "end": 48263, + "start": 48175, + "end": 48203, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 8 }, "end": { - "line": 1392, + "line": 1391, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 48235, - "end": 48248, + "start": 48175, + "end": 48188, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 8 }, "end": { - "line": 1392, + "line": 1391, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 48235, - "end": 48239, + "start": 48175, + "end": 48179, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 8 }, "end": { - "line": 1392, + "line": 1391, "column": 12 } } }, "property": { "type": "Identifier", - "start": 48240, - "end": 48248, + "start": 48180, + "end": 48188, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 13 }, "end": { - "line": 1392, + "line": 1391, "column": 21 }, "identifierName": "_configs" @@ -79432,15 +79292,15 @@ }, "property": { "type": "Identifier", - "start": 48249, - "end": 48263, + "start": 48189, + "end": 48203, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 22 }, "end": { - "line": 1392, + "line": 1391, "column": 36 }, "identifierName": "touchDollyRate" @@ -79451,57 +79311,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 48266, - "end": 48346, + "start": 48206, + "end": 48286, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 39 }, "end": { - "line": 1392, + "line": 1391, "column": 119 } }, "test": { "type": "LogicalExpression", - "start": 48267, - "end": 48322, + "start": 48207, + "end": 48262, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 40 }, "end": { - "line": 1392, + "line": 1391, "column": 95 } }, "left": { "type": "BinaryExpression", - "start": 48267, - "end": 48290, + "start": 48207, + "end": 48230, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 40 }, "end": { - "line": 1392, + "line": 1391, "column": 63 } }, "left": { "type": "Identifier", - "start": 48267, - "end": 48281, + "start": 48207, + "end": 48221, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 40 }, "end": { - "line": 1392, + "line": 1391, "column": 54 }, "identifierName": "touchDollyRate" @@ -79511,15 +79371,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 48286, - "end": 48290, + "start": 48226, + "end": 48230, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 59 }, "end": { - "line": 1392, + "line": 1391, "column": 63 } } @@ -79528,29 +79388,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 48294, - "end": 48322, + "start": 48234, + "end": 48262, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 67 }, "end": { - "line": 1392, + "line": 1391, "column": 95 } }, "left": { "type": "Identifier", - "start": 48294, - "end": 48308, + "start": 48234, + "end": 48248, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 67 }, "end": { - "line": 1392, + "line": 1391, "column": 81 }, "identifierName": "touchDollyRate" @@ -79560,15 +79420,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 48313, - "end": 48322, + "start": 48253, + "end": 48262, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 86 }, "end": { - "line": 1392, + "line": 1391, "column": 95 }, "identifierName": "undefined" @@ -79578,20 +79438,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 48266 + "parenStart": 48206 } }, "consequent": { "type": "Identifier", - "start": 48326, - "end": 48340, + "start": 48266, + "end": 48280, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 99 }, "end": { - "line": 1392, + "line": 1391, "column": 113 }, "identifierName": "touchDollyRate" @@ -79600,15 +79460,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 48343, - "end": 48346, + "start": 48283, + "end": 48286, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 116 }, "end": { - "line": 1392, + "line": 1391, "column": 119 } }, @@ -79629,15 +79489,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48001, - "end": 48185, + "start": 47941, + "end": 48125, "loc": { "start": { - "line": 1384, + "line": 1383, "column": 4 }, "end": { - "line": 1390, + "line": 1389, "column": 7 } } @@ -79647,15 +79507,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48359, - "end": 48547, + "start": 48299, + "end": 48487, "loc": { "start": { - "line": 1395, + "line": 1394, "column": 4 }, "end": { - "line": 1401, + "line": 1400, "column": 7 } } @@ -79664,15 +79524,15 @@ }, { "type": "ClassMethod", - "start": 48552, - "end": 48625, + "start": 48492, + "end": 48565, "loc": { "start": { - "line": 1402, + "line": 1401, "column": 4 }, "end": { - "line": 1404, + "line": 1403, "column": 5 } }, @@ -79680,15 +79540,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 48556, - "end": 48570, + "start": 48496, + "end": 48510, "loc": { "start": { - "line": 1402, + "line": 1401, "column": 8 }, "end": { - "line": 1402, + "line": 1401, "column": 22 }, "identifierName": "touchDollyRate" @@ -79703,87 +79563,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 48573, - "end": 48625, + "start": 48513, + "end": 48565, "loc": { "start": { - "line": 1402, + "line": 1401, "column": 25 }, "end": { - "line": 1404, + "line": 1403, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 48583, - "end": 48619, + "start": 48523, + "end": 48559, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 8 }, "end": { - "line": 1403, + "line": 1402, "column": 44 } }, "argument": { "type": "MemberExpression", - "start": 48590, - "end": 48618, + "start": 48530, + "end": 48558, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 15 }, "end": { - "line": 1403, + "line": 1402, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 48590, - "end": 48603, + "start": 48530, + "end": 48543, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 15 }, "end": { - "line": 1403, + "line": 1402, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 48590, - "end": 48594, + "start": 48530, + "end": 48534, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 15 }, "end": { - "line": 1403, + "line": 1402, "column": 19 } } }, "property": { "type": "Identifier", - "start": 48595, - "end": 48603, + "start": 48535, + "end": 48543, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 20 }, "end": { - "line": 1403, + "line": 1402, "column": 28 }, "identifierName": "_configs" @@ -79794,15 +79654,15 @@ }, "property": { "type": "Identifier", - "start": 48604, - "end": 48618, + "start": 48544, + "end": 48558, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 29 }, "end": { - "line": 1403, + "line": 1402, "column": 43 }, "identifierName": "touchDollyRate" @@ -79820,15 +79680,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48359, - "end": 48547, + "start": 48299, + "end": 48487, "loc": { "start": { - "line": 1395, + "line": 1394, "column": 4 }, "end": { - "line": 1401, + "line": 1400, "column": 7 } } @@ -79838,15 +79698,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48631, - "end": 48963, + "start": 48571, + "end": 48903, "loc": { "start": { - "line": 1406, + "line": 1405, "column": 4 }, "end": { - "line": 1413, + "line": 1412, "column": 7 } } @@ -79855,15 +79715,15 @@ }, { "type": "ClassMethod", - "start": 48968, - "end": 49163, + "start": 48908, + "end": 49103, "loc": { "start": { - "line": 1414, + "line": 1413, "column": 4 }, "end": { - "line": 1416, + "line": 1415, "column": 5 } }, @@ -79871,15 +79731,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 48972, - "end": 48991, + "start": 48912, + "end": 48931, "loc": { "start": { - "line": 1414, + "line": 1413, "column": 8 }, "end": { - "line": 1414, + "line": 1413, "column": 27 }, "identifierName": "mouseWheelDollyRate" @@ -79894,15 +79754,15 @@ "params": [ { "type": "Identifier", - "start": 48992, - "end": 49011, + "start": 48932, + "end": 48951, "loc": { "start": { - "line": 1414, + "line": 1413, "column": 28 }, "end": { - "line": 1414, + "line": 1413, "column": 47 }, "identifierName": "mouseWheelDollyRate" @@ -79912,102 +79772,102 @@ ], "body": { "type": "BlockStatement", - "start": 49013, - "end": 49163, + "start": 48953, + "end": 49103, "loc": { "start": { - "line": 1414, + "line": 1413, "column": 49 }, "end": { - "line": 1416, + "line": 1415, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 49023, - "end": 49157, + "start": 48963, + "end": 49097, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 8 }, "end": { - "line": 1415, + "line": 1414, "column": 142 } }, "expression": { "type": "AssignmentExpression", - "start": 49023, - "end": 49156, + "start": 48963, + "end": 49096, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 8 }, "end": { - "line": 1415, + "line": 1414, "column": 141 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 49023, - "end": 49056, + "start": 48963, + "end": 48996, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 8 }, "end": { - "line": 1415, + "line": 1414, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 49023, - "end": 49036, + "start": 48963, + "end": 48976, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 8 }, "end": { - "line": 1415, + "line": 1414, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 49023, - "end": 49027, + "start": 48963, + "end": 48967, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 8 }, "end": { - "line": 1415, + "line": 1414, "column": 12 } } }, "property": { "type": "Identifier", - "start": 49028, - "end": 49036, + "start": 48968, + "end": 48976, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 13 }, "end": { - "line": 1415, + "line": 1414, "column": 21 }, "identifierName": "_configs" @@ -80018,15 +79878,15 @@ }, "property": { "type": "Identifier", - "start": 49037, - "end": 49056, + "start": 48977, + "end": 48996, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 22 }, "end": { - "line": 1415, + "line": 1414, "column": 41 }, "identifierName": "mouseWheelDollyRate" @@ -80037,57 +79897,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 49059, - "end": 49156, + "start": 48999, + "end": 49096, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 44 }, "end": { - "line": 1415, + "line": 1414, "column": 141 } }, "test": { "type": "LogicalExpression", - "start": 49060, - "end": 49125, + "start": 49000, + "end": 49065, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 45 }, "end": { - "line": 1415, + "line": 1414, "column": 110 } }, "left": { "type": "BinaryExpression", - "start": 49060, - "end": 49088, + "start": 49000, + "end": 49028, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 45 }, "end": { - "line": 1415, + "line": 1414, "column": 73 } }, "left": { "type": "Identifier", - "start": 49060, - "end": 49079, + "start": 49000, + "end": 49019, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 45 }, "end": { - "line": 1415, + "line": 1414, "column": 64 }, "identifierName": "mouseWheelDollyRate" @@ -80097,15 +79957,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 49084, - "end": 49088, + "start": 49024, + "end": 49028, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 69 }, "end": { - "line": 1415, + "line": 1414, "column": 73 } } @@ -80114,29 +79974,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 49092, - "end": 49125, + "start": 49032, + "end": 49065, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 77 }, "end": { - "line": 1415, + "line": 1414, "column": 110 } }, "left": { "type": "Identifier", - "start": 49092, - "end": 49111, + "start": 49032, + "end": 49051, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 77 }, "end": { - "line": 1415, + "line": 1414, "column": 96 }, "identifierName": "mouseWheelDollyRate" @@ -80146,15 +80006,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 49116, - "end": 49125, + "start": 49056, + "end": 49065, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 101 }, "end": { - "line": 1415, + "line": 1414, "column": 110 }, "identifierName": "undefined" @@ -80164,20 +80024,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 49059 + "parenStart": 48999 } }, "consequent": { "type": "Identifier", - "start": 49129, - "end": 49148, + "start": 49069, + "end": 49088, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 114 }, "end": { - "line": 1415, + "line": 1414, "column": 133 }, "identifierName": "mouseWheelDollyRate" @@ -80186,15 +80046,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 49151, - "end": 49156, + "start": 49091, + "end": 49096, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 136 }, "end": { - "line": 1415, + "line": 1414, "column": 141 } }, @@ -80215,15 +80075,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48631, - "end": 48963, + "start": 48571, + "end": 48903, "loc": { "start": { - "line": 1406, + "line": 1405, "column": 4 }, "end": { - "line": 1413, + "line": 1412, "column": 7 } } @@ -80233,15 +80093,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 49169, - "end": 49381, + "start": 49109, + "end": 49321, "loc": { "start": { - "line": 1418, + "line": 1417, "column": 4 }, "end": { - "line": 1424, + "line": 1423, "column": 7 } } @@ -80250,15 +80110,15 @@ }, { "type": "ClassMethod", - "start": 49386, - "end": 49469, + "start": 49326, + "end": 49409, "loc": { "start": { - "line": 1425, + "line": 1424, "column": 4 }, "end": { - "line": 1427, + "line": 1426, "column": 5 } }, @@ -80266,15 +80126,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 49390, - "end": 49409, + "start": 49330, + "end": 49349, "loc": { "start": { - "line": 1425, + "line": 1424, "column": 8 }, "end": { - "line": 1425, + "line": 1424, "column": 27 }, "identifierName": "mouseWheelDollyRate" @@ -80289,87 +80149,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 49412, - "end": 49469, + "start": 49352, + "end": 49409, "loc": { "start": { - "line": 1425, + "line": 1424, "column": 30 }, "end": { - "line": 1427, + "line": 1426, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 49422, - "end": 49463, + "start": 49362, + "end": 49403, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 8 }, "end": { - "line": 1426, + "line": 1425, "column": 49 } }, "argument": { "type": "MemberExpression", - "start": 49429, - "end": 49462, + "start": 49369, + "end": 49402, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 15 }, "end": { - "line": 1426, + "line": 1425, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 49429, - "end": 49442, + "start": 49369, + "end": 49382, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 15 }, "end": { - "line": 1426, + "line": 1425, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 49429, - "end": 49433, + "start": 49369, + "end": 49373, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 15 }, "end": { - "line": 1426, + "line": 1425, "column": 19 } } }, "property": { "type": "Identifier", - "start": 49434, - "end": 49442, + "start": 49374, + "end": 49382, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 20 }, "end": { - "line": 1426, + "line": 1425, "column": 28 }, "identifierName": "_configs" @@ -80380,15 +80240,15 @@ }, "property": { "type": "Identifier", - "start": 49443, - "end": 49462, + "start": 49383, + "end": 49402, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 29 }, "end": { - "line": 1426, + "line": 1425, "column": 48 }, "identifierName": "mouseWheelDollyRate" @@ -80406,15 +80266,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 49169, - "end": 49381, + "start": 49109, + "end": 49321, "loc": { "start": { - "line": 1418, + "line": 1417, "column": 4 }, "end": { - "line": 1424, + "line": 1423, "column": 7 } } @@ -80424,15 +80284,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 49475, - "end": 50326, + "start": 49415, + "end": 50266, "loc": { "start": { - "line": 1429, + "line": 1428, "column": 4 }, "end": { - "line": 1445, + "line": 1444, "column": 7 } } @@ -80441,15 +80301,15 @@ }, { "type": "ClassMethod", - "start": 50331, - "end": 50480, + "start": 50271, + "end": 50420, "loc": { "start": { - "line": 1446, + "line": 1445, "column": 4 }, "end": { - "line": 1448, + "line": 1447, "column": 5 } }, @@ -80457,15 +80317,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50335, - "end": 50347, + "start": 50275, + "end": 50287, "loc": { "start": { - "line": 1446, + "line": 1445, "column": 8 }, "end": { - "line": 1446, + "line": 1445, "column": 20 }, "identifierName": "dollyInertia" @@ -80480,15 +80340,15 @@ "params": [ { "type": "Identifier", - "start": 50348, - "end": 50360, + "start": 50288, + "end": 50300, "loc": { "start": { - "line": 1446, + "line": 1445, "column": 21 }, "end": { - "line": 1446, + "line": 1445, "column": 33 }, "identifierName": "dollyInertia" @@ -80498,102 +80358,102 @@ ], "body": { "type": "BlockStatement", - "start": 50362, - "end": 50480, + "start": 50302, + "end": 50420, "loc": { "start": { - "line": 1446, + "line": 1445, "column": 35 }, "end": { - "line": 1448, + "line": 1447, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 50372, - "end": 50474, + "start": 50312, + "end": 50414, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 8 }, "end": { - "line": 1447, + "line": 1446, "column": 110 } }, "expression": { "type": "AssignmentExpression", - "start": 50372, - "end": 50473, + "start": 50312, + "end": 50413, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 8 }, "end": { - "line": 1447, + "line": 1446, "column": 109 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 50372, - "end": 50398, + "start": 50312, + "end": 50338, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 8 }, "end": { - "line": 1447, + "line": 1446, "column": 34 } }, "object": { "type": "MemberExpression", - "start": 50372, - "end": 50385, + "start": 50312, + "end": 50325, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 8 }, "end": { - "line": 1447, + "line": 1446, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 50372, - "end": 50376, + "start": 50312, + "end": 50316, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 8 }, "end": { - "line": 1447, + "line": 1446, "column": 12 } } }, "property": { "type": "Identifier", - "start": 50377, - "end": 50385, + "start": 50317, + "end": 50325, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 13 }, "end": { - "line": 1447, + "line": 1446, "column": 21 }, "identifierName": "_configs" @@ -80604,15 +80464,15 @@ }, "property": { "type": "Identifier", - "start": 50386, - "end": 50398, + "start": 50326, + "end": 50338, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 22 }, "end": { - "line": 1447, + "line": 1446, "column": 34 }, "identifierName": "dollyInertia" @@ -80623,57 +80483,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 50401, - "end": 50473, + "start": 50341, + "end": 50413, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 37 }, "end": { - "line": 1447, + "line": 1446, "column": 109 } }, "test": { "type": "LogicalExpression", - "start": 50402, - "end": 50453, + "start": 50342, + "end": 50393, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 38 }, "end": { - "line": 1447, + "line": 1446, "column": 89 } }, "left": { "type": "BinaryExpression", - "start": 50402, - "end": 50428, + "start": 50342, + "end": 50368, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 38 }, "end": { - "line": 1447, + "line": 1446, "column": 64 } }, "left": { "type": "Identifier", - "start": 50402, - "end": 50414, + "start": 50342, + "end": 50354, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 38 }, "end": { - "line": 1447, + "line": 1446, "column": 50 }, "identifierName": "dollyInertia" @@ -80683,15 +80543,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 50419, - "end": 50428, + "start": 50359, + "end": 50368, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 55 }, "end": { - "line": 1447, + "line": 1446, "column": 64 }, "identifierName": "undefined" @@ -80702,29 +80562,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 50432, - "end": 50453, + "start": 50372, + "end": 50393, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 68 }, "end": { - "line": 1447, + "line": 1446, "column": 89 } }, "left": { "type": "Identifier", - "start": 50432, - "end": 50444, + "start": 50372, + "end": 50384, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 68 }, "end": { - "line": 1447, + "line": 1446, "column": 80 }, "identifierName": "dollyInertia" @@ -80734,15 +80594,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 50449, - "end": 50453, + "start": 50389, + "end": 50393, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 85 }, "end": { - "line": 1447, + "line": 1446, "column": 89 } } @@ -80750,20 +80610,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 50401 + "parenStart": 50341 } }, "consequent": { "type": "Identifier", - "start": 50457, - "end": 50469, + "start": 50397, + "end": 50409, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 93 }, "end": { - "line": 1447, + "line": 1446, "column": 105 }, "identifierName": "dollyInertia" @@ -80772,15 +80632,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 50472, - "end": 50473, + "start": 50412, + "end": 50413, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 108 }, "end": { - "line": 1447, + "line": 1446, "column": 109 } }, @@ -80801,15 +80661,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 49475, - "end": 50326, + "start": 49415, + "end": 50266, "loc": { "start": { - "line": 1429, + "line": 1428, "column": 4 }, "end": { - "line": 1445, + "line": 1444, "column": 7 } } @@ -80819,15 +80679,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the dolly inertia factor.\n *\n * Default is ````0````.\n *\n * @returns {Number} The current dolly inertia factor.\n ", - "start": 50486, - "end": 50637, + "start": 50426, + "end": 50577, "loc": { "start": { - "line": 1450, + "line": 1449, "column": 4 }, "end": { - "line": 1456, + "line": 1455, "column": 7 } } @@ -80836,15 +80696,15 @@ }, { "type": "ClassMethod", - "start": 50642, - "end": 50711, + "start": 50582, + "end": 50651, "loc": { "start": { - "line": 1457, + "line": 1456, "column": 4 }, "end": { - "line": 1459, + "line": 1458, "column": 5 } }, @@ -80852,15 +80712,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50646, - "end": 50658, + "start": 50586, + "end": 50598, "loc": { "start": { - "line": 1457, + "line": 1456, "column": 8 }, "end": { - "line": 1457, + "line": 1456, "column": 20 }, "identifierName": "dollyInertia" @@ -80875,87 +80735,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 50661, - "end": 50711, + "start": 50601, + "end": 50651, "loc": { "start": { - "line": 1457, + "line": 1456, "column": 23 }, "end": { - "line": 1459, + "line": 1458, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 50671, - "end": 50705, + "start": 50611, + "end": 50645, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 8 }, "end": { - "line": 1458, + "line": 1457, "column": 42 } }, "argument": { "type": "MemberExpression", - "start": 50678, - "end": 50704, + "start": 50618, + "end": 50644, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 15 }, "end": { - "line": 1458, + "line": 1457, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 50678, - "end": 50691, + "start": 50618, + "end": 50631, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 15 }, "end": { - "line": 1458, + "line": 1457, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 50678, - "end": 50682, + "start": 50618, + "end": 50622, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 15 }, "end": { - "line": 1458, + "line": 1457, "column": 19 } } }, "property": { "type": "Identifier", - "start": 50683, - "end": 50691, + "start": 50623, + "end": 50631, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 20 }, "end": { - "line": 1458, + "line": 1457, "column": 28 }, "identifierName": "_configs" @@ -80966,15 +80826,15 @@ }, "property": { "type": "Identifier", - "start": 50692, - "end": 50704, + "start": 50632, + "end": 50644, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 29 }, "end": { - "line": 1458, + "line": 1457, "column": 41 }, "identifierName": "dollyInertia" @@ -80992,15 +80852,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the dolly inertia factor.\n *\n * Default is ````0````.\n *\n * @returns {Number} The current dolly inertia factor.\n ", - "start": 50486, - "end": 50637, + "start": 50426, + "end": 50577, "loc": { "start": { - "line": 1450, + "line": 1449, "column": 4 }, "end": { - "line": 1456, + "line": 1455, "column": 7 } } @@ -81010,15 +80870,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 50717, - "end": 50974, + "start": 50657, + "end": 50914, "loc": { "start": { - "line": 1461, + "line": 1460, "column": 4 }, "end": { - "line": 1467, + "line": 1466, "column": 7 } } @@ -81027,15 +80887,15 @@ }, { "type": "ClassMethod", - "start": 50979, - "end": 51197, + "start": 50919, + "end": 51137, "loc": { "start": { - "line": 1468, + "line": 1467, "column": 4 }, "end": { - "line": 1470, + "line": 1469, "column": 5 } }, @@ -81043,15 +80903,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 50983, - "end": 51006, + "start": 50923, + "end": 50946, "loc": { "start": { - "line": 1468, + "line": 1467, "column": 8 }, "end": { - "line": 1468, + "line": 1467, "column": 31 }, "identifierName": "dollyProximityThreshold" @@ -81066,15 +80926,15 @@ "params": [ { "type": "Identifier", - "start": 51007, - "end": 51030, + "start": 50947, + "end": 50970, "loc": { "start": { - "line": 1468, + "line": 1467, "column": 32 }, "end": { - "line": 1468, + "line": 1467, "column": 55 }, "identifierName": "dollyProximityThreshold" @@ -81084,102 +80944,102 @@ ], "body": { "type": "BlockStatement", - "start": 51032, - "end": 51197, + "start": 50972, + "end": 51137, "loc": { "start": { - "line": 1468, + "line": 1467, "column": 57 }, "end": { - "line": 1470, + "line": 1469, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 51042, - "end": 51191, + "start": 50982, + "end": 51131, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 8 }, "end": { - "line": 1469, + "line": 1468, "column": 157 } }, "expression": { "type": "AssignmentExpression", - "start": 51042, - "end": 51190, + "start": 50982, + "end": 51130, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 8 }, "end": { - "line": 1469, + "line": 1468, "column": 156 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 51042, - "end": 51079, + "start": 50982, + "end": 51019, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 8 }, "end": { - "line": 1469, + "line": 1468, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 51042, - "end": 51055, + "start": 50982, + "end": 50995, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 8 }, "end": { - "line": 1469, + "line": 1468, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 51042, - "end": 51046, + "start": 50982, + "end": 50986, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 8 }, "end": { - "line": 1469, + "line": 1468, "column": 12 } } }, "property": { "type": "Identifier", - "start": 51047, - "end": 51055, + "start": 50987, + "end": 50995, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 13 }, "end": { - "line": 1469, + "line": 1468, "column": 21 }, "identifierName": "_configs" @@ -81190,15 +81050,15 @@ }, "property": { "type": "Identifier", - "start": 51056, - "end": 51079, + "start": 50996, + "end": 51019, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 22 }, "end": { - "line": 1469, + "line": 1468, "column": 45 }, "identifierName": "dollyProximityThreshold" @@ -81209,57 +81069,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 51082, - "end": 51190, + "start": 51022, + "end": 51130, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 48 }, "end": { - "line": 1469, + "line": 1468, "column": 156 } }, "test": { "type": "LogicalExpression", - "start": 51083, - "end": 51156, + "start": 51023, + "end": 51096, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 49 }, "end": { - "line": 1469, + "line": 1468, "column": 122 } }, "left": { "type": "BinaryExpression", - "start": 51083, - "end": 51120, + "start": 51023, + "end": 51060, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 49 }, "end": { - "line": 1469, + "line": 1468, "column": 86 } }, "left": { "type": "Identifier", - "start": 51083, - "end": 51106, + "start": 51023, + "end": 51046, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 49 }, "end": { - "line": 1469, + "line": 1468, "column": 72 }, "identifierName": "dollyProximityThreshold" @@ -81269,15 +81129,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 51111, - "end": 51120, + "start": 51051, + "end": 51060, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 77 }, "end": { - "line": 1469, + "line": 1468, "column": 86 }, "identifierName": "undefined" @@ -81288,29 +81148,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 51124, - "end": 51156, + "start": 51064, + "end": 51096, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 90 }, "end": { - "line": 1469, + "line": 1468, "column": 122 } }, "left": { "type": "Identifier", - "start": 51124, - "end": 51147, + "start": 51064, + "end": 51087, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 90 }, "end": { - "line": 1469, + "line": 1468, "column": 113 }, "identifierName": "dollyProximityThreshold" @@ -81320,15 +81180,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 51152, - "end": 51156, + "start": 51092, + "end": 51096, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 118 }, "end": { - "line": 1469, + "line": 1468, "column": 122 } } @@ -81336,20 +81196,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 51082 + "parenStart": 51022 } }, "consequent": { "type": "Identifier", - "start": 51160, - "end": 51183, + "start": 51100, + "end": 51123, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 126 }, "end": { - "line": 1469, + "line": 1468, "column": 149 }, "identifierName": "dollyProximityThreshold" @@ -81358,15 +81218,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 51186, - "end": 51190, + "start": 51126, + "end": 51130, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 152 }, "end": { - "line": 1469, + "line": 1468, "column": 156 } }, @@ -81387,15 +81247,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 50717, - "end": 50974, + "start": 50657, + "end": 50914, "loc": { "start": { - "line": 1461, + "line": 1460, "column": 4 }, "end": { - "line": 1467, + "line": 1466, "column": 7 } } @@ -81405,15 +81265,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 51203, - "end": 51446, + "start": 51143, + "end": 51386, "loc": { "start": { - "line": 1472, + "line": 1471, "column": 4 }, "end": { - "line": 1478, + "line": 1477, "column": 7 } } @@ -81422,15 +81282,15 @@ }, { "type": "ClassMethod", - "start": 51451, - "end": 51542, + "start": 51391, + "end": 51482, "loc": { "start": { - "line": 1479, + "line": 1478, "column": 4 }, "end": { - "line": 1481, + "line": 1480, "column": 5 } }, @@ -81438,15 +81298,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 51455, - "end": 51478, + "start": 51395, + "end": 51418, "loc": { "start": { - "line": 1479, + "line": 1478, "column": 8 }, "end": { - "line": 1479, + "line": 1478, "column": 31 }, "identifierName": "dollyProximityThreshold" @@ -81461,87 +81321,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 51481, - "end": 51542, + "start": 51421, + "end": 51482, "loc": { "start": { - "line": 1479, + "line": 1478, "column": 34 }, "end": { - "line": 1481, + "line": 1480, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 51491, - "end": 51536, + "start": 51431, + "end": 51476, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 8 }, "end": { - "line": 1480, + "line": 1479, "column": 53 } }, "argument": { "type": "MemberExpression", - "start": 51498, - "end": 51535, + "start": 51438, + "end": 51475, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 15 }, "end": { - "line": 1480, + "line": 1479, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 51498, - "end": 51511, + "start": 51438, + "end": 51451, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 15 }, "end": { - "line": 1480, + "line": 1479, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 51498, - "end": 51502, + "start": 51438, + "end": 51442, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 15 }, "end": { - "line": 1480, + "line": 1479, "column": 19 } } }, "property": { "type": "Identifier", - "start": 51503, - "end": 51511, + "start": 51443, + "end": 51451, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 20 }, "end": { - "line": 1480, + "line": 1479, "column": 28 }, "identifierName": "_configs" @@ -81552,15 +81412,15 @@ }, "property": { "type": "Identifier", - "start": 51512, - "end": 51535, + "start": 51452, + "end": 51475, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 29 }, "end": { - "line": 1480, + "line": 1479, "column": 52 }, "identifierName": "dollyProximityThreshold" @@ -81578,15 +81438,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 51203, - "end": 51446, + "start": 51143, + "end": 51386, "loc": { "start": { - "line": 1472, + "line": 1471, "column": 4 }, "end": { - "line": 1478, + "line": 1477, "column": 7 } } @@ -81596,15 +81456,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @param {Number} dollyMinSpeed New dolly minimum speed.\n ", - "start": 51548, - "end": 51704, + "start": 51488, + "end": 51644, "loc": { "start": { - "line": 1483, + "line": 1482, "column": 4 }, "end": { - "line": 1489, + "line": 1488, "column": 7 } } @@ -81613,15 +81473,15 @@ }, { "type": "ClassMethod", - "start": 51709, - "end": 51867, + "start": 51649, + "end": 51807, "loc": { "start": { - "line": 1490, + "line": 1489, "column": 4 }, "end": { - "line": 1492, + "line": 1491, "column": 5 } }, @@ -81629,15 +81489,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 51713, - "end": 51726, + "start": 51653, + "end": 51666, "loc": { "start": { - "line": 1490, + "line": 1489, "column": 8 }, "end": { - "line": 1490, + "line": 1489, "column": 21 }, "identifierName": "dollyMinSpeed" @@ -81652,15 +81512,15 @@ "params": [ { "type": "Identifier", - "start": 51727, - "end": 51740, + "start": 51667, + "end": 51680, "loc": { "start": { - "line": 1490, + "line": 1489, "column": 22 }, "end": { - "line": 1490, + "line": 1489, "column": 35 }, "identifierName": "dollyMinSpeed" @@ -81670,102 +81530,102 @@ ], "body": { "type": "BlockStatement", - "start": 51742, - "end": 51867, + "start": 51682, + "end": 51807, "loc": { "start": { - "line": 1490, + "line": 1489, "column": 37 }, "end": { - "line": 1492, + "line": 1491, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 51752, - "end": 51861, + "start": 51692, + "end": 51801, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 8 }, "end": { - "line": 1491, + "line": 1490, "column": 117 } }, "expression": { "type": "AssignmentExpression", - "start": 51752, - "end": 51860, + "start": 51692, + "end": 51800, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 8 }, "end": { - "line": 1491, + "line": 1490, "column": 116 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 51752, - "end": 51779, + "start": 51692, + "end": 51719, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 8 }, "end": { - "line": 1491, + "line": 1490, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 51752, - "end": 51765, + "start": 51692, + "end": 51705, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 8 }, "end": { - "line": 1491, + "line": 1490, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 51752, - "end": 51756, + "start": 51692, + "end": 51696, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 8 }, "end": { - "line": 1491, + "line": 1490, "column": 12 } } }, "property": { "type": "Identifier", - "start": 51757, - "end": 51765, + "start": 51697, + "end": 51705, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 13 }, "end": { - "line": 1491, + "line": 1490, "column": 21 }, "identifierName": "_configs" @@ -81776,15 +81636,15 @@ }, "property": { "type": "Identifier", - "start": 51766, - "end": 51779, + "start": 51706, + "end": 51719, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 22 }, "end": { - "line": 1491, + "line": 1490, "column": 35 }, "identifierName": "dollyMinSpeed" @@ -81795,57 +81655,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 51782, - "end": 51860, + "start": 51722, + "end": 51800, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 38 }, "end": { - "line": 1491, + "line": 1490, "column": 116 } }, "test": { "type": "LogicalExpression", - "start": 51783, - "end": 51836, + "start": 51723, + "end": 51776, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 39 }, "end": { - "line": 1491, + "line": 1490, "column": 92 } }, "left": { "type": "BinaryExpression", - "start": 51783, - "end": 51810, + "start": 51723, + "end": 51750, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 39 }, "end": { - "line": 1491, + "line": 1490, "column": 66 } }, "left": { "type": "Identifier", - "start": 51783, - "end": 51796, + "start": 51723, + "end": 51736, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 39 }, "end": { - "line": 1491, + "line": 1490, "column": 52 }, "identifierName": "dollyMinSpeed" @@ -81855,15 +81715,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 51801, - "end": 51810, + "start": 51741, + "end": 51750, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 57 }, "end": { - "line": 1491, + "line": 1490, "column": 66 }, "identifierName": "undefined" @@ -81874,29 +81734,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 51814, - "end": 51836, + "start": 51754, + "end": 51776, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 70 }, "end": { - "line": 1491, + "line": 1490, "column": 92 } }, "left": { "type": "Identifier", - "start": 51814, - "end": 51827, + "start": 51754, + "end": 51767, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 70 }, "end": { - "line": 1491, + "line": 1490, "column": 83 }, "identifierName": "dollyMinSpeed" @@ -81906,15 +81766,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 51832, - "end": 51836, + "start": 51772, + "end": 51776, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 88 }, "end": { - "line": 1491, + "line": 1490, "column": 92 } } @@ -81922,20 +81782,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 51782 + "parenStart": 51722 } }, "consequent": { "type": "Identifier", - "start": 51840, - "end": 51853, + "start": 51780, + "end": 51793, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 96 }, "end": { - "line": 1491, + "line": 1490, "column": 109 }, "identifierName": "dollyMinSpeed" @@ -81944,15 +81804,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 51856, - "end": 51860, + "start": 51796, + "end": 51800, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 112 }, "end": { - "line": 1491, + "line": 1490, "column": 116 } }, @@ -81973,15 +81833,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @param {Number} dollyMinSpeed New dolly minimum speed.\n ", - "start": 51548, - "end": 51704, + "start": 51488, + "end": 51644, "loc": { "start": { - "line": 1483, + "line": 1482, "column": 4 }, "end": { - "line": 1489, + "line": 1488, "column": 7 } } @@ -81991,15 +81851,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @returns {Number} The current minimum dolly speed.\n ", - "start": 51873, - "end": 52025, + "start": 51813, + "end": 51965, "loc": { "start": { - "line": 1494, + "line": 1493, "column": 4 }, "end": { - "line": 1500, + "line": 1499, "column": 7 } } @@ -82008,15 +81868,15 @@ }, { "type": "ClassMethod", - "start": 52030, - "end": 52101, + "start": 51970, + "end": 52041, "loc": { "start": { - "line": 1501, + "line": 1500, "column": 4 }, "end": { - "line": 1503, + "line": 1502, "column": 5 } }, @@ -82024,15 +81884,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 52034, - "end": 52047, + "start": 51974, + "end": 51987, "loc": { "start": { - "line": 1501, + "line": 1500, "column": 8 }, "end": { - "line": 1501, + "line": 1500, "column": 21 }, "identifierName": "dollyMinSpeed" @@ -82047,87 +81907,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 52050, - "end": 52101, + "start": 51990, + "end": 52041, "loc": { "start": { - "line": 1501, + "line": 1500, "column": 24 }, "end": { - "line": 1503, + "line": 1502, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 52060, - "end": 52095, + "start": 52000, + "end": 52035, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 8 }, "end": { - "line": 1502, + "line": 1501, "column": 43 } }, "argument": { "type": "MemberExpression", - "start": 52067, - "end": 52094, + "start": 52007, + "end": 52034, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 15 }, "end": { - "line": 1502, + "line": 1501, "column": 42 } }, "object": { "type": "MemberExpression", - "start": 52067, - "end": 52080, + "start": 52007, + "end": 52020, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 15 }, "end": { - "line": 1502, + "line": 1501, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 52067, - "end": 52071, + "start": 52007, + "end": 52011, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 15 }, "end": { - "line": 1502, + "line": 1501, "column": 19 } } }, "property": { "type": "Identifier", - "start": 52072, - "end": 52080, + "start": 52012, + "end": 52020, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 20 }, "end": { - "line": 1502, + "line": 1501, "column": 28 }, "identifierName": "_configs" @@ -82138,15 +81998,15 @@ }, "property": { "type": "Identifier", - "start": 52081, - "end": 52094, + "start": 52021, + "end": 52034, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 29 }, "end": { - "line": 1502, + "line": 1501, "column": 42 }, "identifierName": "dollyMinSpeed" @@ -82164,15 +82024,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @returns {Number} The current minimum dolly speed.\n ", - "start": 51873, - "end": 52025, + "start": 51813, + "end": 51965, "loc": { "start": { - "line": 1494, + "line": 1493, "column": 4 }, "end": { - "line": 1500, + "line": 1499, "column": 7 } } @@ -82182,15 +82042,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 52107, - "end": 52946, + "start": 52047, + "end": 52886, "loc": { "start": { - "line": 1505, + "line": 1504, "column": 4 }, "end": { - "line": 1521, + "line": 1520, "column": 7 } } @@ -82199,15 +82059,15 @@ }, { "type": "ClassMethod", - "start": 52951, - "end": 53090, + "start": 52891, + "end": 53030, "loc": { "start": { - "line": 1522, + "line": 1521, "column": 4 }, "end": { - "line": 1524, + "line": 1523, "column": 5 } }, @@ -82215,15 +82075,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 52955, - "end": 52965, + "start": 52895, + "end": 52905, "loc": { "start": { - "line": 1522, + "line": 1521, "column": 8 }, "end": { - "line": 1522, + "line": 1521, "column": 18 }, "identifierName": "panInertia" @@ -82238,15 +82098,15 @@ "params": [ { "type": "Identifier", - "start": 52966, - "end": 52976, + "start": 52906, + "end": 52916, "loc": { "start": { - "line": 1522, + "line": 1521, "column": 19 }, "end": { - "line": 1522, + "line": 1521, "column": 29 }, "identifierName": "panInertia" @@ -82256,102 +82116,102 @@ ], "body": { "type": "BlockStatement", - "start": 52978, - "end": 53090, + "start": 52918, + "end": 53030, "loc": { "start": { - "line": 1522, + "line": 1521, "column": 31 }, "end": { - "line": 1524, + "line": 1523, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 52988, - "end": 53084, + "start": 52928, + "end": 53024, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 8 }, "end": { - "line": 1523, + "line": 1522, "column": 104 } }, "expression": { "type": "AssignmentExpression", - "start": 52988, - "end": 53083, + "start": 52928, + "end": 53023, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 8 }, "end": { - "line": 1523, + "line": 1522, "column": 103 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 52988, - "end": 53012, + "start": 52928, + "end": 52952, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 8 }, "end": { - "line": 1523, + "line": 1522, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 52988, - "end": 53001, + "start": 52928, + "end": 52941, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 8 }, "end": { - "line": 1523, + "line": 1522, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 52988, - "end": 52992, + "start": 52928, + "end": 52932, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 8 }, "end": { - "line": 1523, + "line": 1522, "column": 12 } } }, "property": { "type": "Identifier", - "start": 52993, - "end": 53001, + "start": 52933, + "end": 52941, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 13 }, "end": { - "line": 1523, + "line": 1522, "column": 21 }, "identifierName": "_configs" @@ -82362,15 +82222,15 @@ }, "property": { "type": "Identifier", - "start": 53002, - "end": 53012, + "start": 52942, + "end": 52952, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 22 }, "end": { - "line": 1523, + "line": 1522, "column": 32 }, "identifierName": "panInertia" @@ -82381,57 +82241,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 53015, - "end": 53083, + "start": 52955, + "end": 53023, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 35 }, "end": { - "line": 1523, + "line": 1522, "column": 103 } }, "test": { "type": "LogicalExpression", - "start": 53016, - "end": 53063, + "start": 52956, + "end": 53003, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 36 }, "end": { - "line": 1523, + "line": 1522, "column": 83 } }, "left": { "type": "BinaryExpression", - "start": 53016, - "end": 53040, + "start": 52956, + "end": 52980, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 36 }, "end": { - "line": 1523, + "line": 1522, "column": 60 } }, "left": { "type": "Identifier", - "start": 53016, - "end": 53026, + "start": 52956, + "end": 52966, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 36 }, "end": { - "line": 1523, + "line": 1522, "column": 46 }, "identifierName": "panInertia" @@ -82441,15 +82301,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 53031, - "end": 53040, + "start": 52971, + "end": 52980, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 51 }, "end": { - "line": 1523, + "line": 1522, "column": 60 }, "identifierName": "undefined" @@ -82460,29 +82320,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 53044, - "end": 53063, + "start": 52984, + "end": 53003, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 64 }, "end": { - "line": 1523, + "line": 1522, "column": 83 } }, "left": { "type": "Identifier", - "start": 53044, - "end": 53054, + "start": 52984, + "end": 52994, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 64 }, "end": { - "line": 1523, + "line": 1522, "column": 74 }, "identifierName": "panInertia" @@ -82492,15 +82352,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 53059, - "end": 53063, + "start": 52999, + "end": 53003, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 79 }, "end": { - "line": 1523, + "line": 1522, "column": 83 } } @@ -82508,20 +82368,20 @@ }, "extra": { "parenthesized": true, - "parenStart": 53015 + "parenStart": 52955 } }, "consequent": { "type": "Identifier", - "start": 53067, - "end": 53077, + "start": 53007, + "end": 53017, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 87 }, "end": { - "line": 1523, + "line": 1522, "column": 97 }, "identifierName": "panInertia" @@ -82530,15 +82390,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 53080, - "end": 53083, + "start": 53020, + "end": 53023, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 100 }, "end": { - "line": 1523, + "line": 1522, "column": 103 } }, @@ -82559,15 +82419,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 52107, - "end": 52946, + "start": 52047, + "end": 52886, "loc": { "start": { - "line": 1505, + "line": 1504, "column": 4 }, "end": { - "line": 1521, + "line": 1520, "column": 7 } } @@ -82577,15 +82437,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the pan inertia factor.\n *\n * Default is ````0.5````.\n *\n * @returns {Number} The current pan inertia factor.\n ", - "start": 53096, - "end": 53245, + "start": 53036, + "end": 53185, "loc": { "start": { - "line": 1526, + "line": 1525, "column": 4 }, "end": { - "line": 1532, + "line": 1531, "column": 7 } } @@ -82594,15 +82454,15 @@ }, { "type": "ClassMethod", - "start": 53250, - "end": 53315, + "start": 53190, + "end": 53255, "loc": { "start": { - "line": 1533, + "line": 1532, "column": 4 }, "end": { - "line": 1535, + "line": 1534, "column": 5 } }, @@ -82610,15 +82470,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 53254, - "end": 53264, + "start": 53194, + "end": 53204, "loc": { "start": { - "line": 1533, + "line": 1532, "column": 8 }, "end": { - "line": 1533, + "line": 1532, "column": 18 }, "identifierName": "panInertia" @@ -82633,87 +82493,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 53267, - "end": 53315, + "start": 53207, + "end": 53255, "loc": { "start": { - "line": 1533, + "line": 1532, "column": 21 }, "end": { - "line": 1535, + "line": 1534, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 53277, - "end": 53309, + "start": 53217, + "end": 53249, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 8 }, "end": { - "line": 1534, + "line": 1533, "column": 40 } }, "argument": { "type": "MemberExpression", - "start": 53284, - "end": 53308, + "start": 53224, + "end": 53248, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 15 }, "end": { - "line": 1534, + "line": 1533, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 53284, - "end": 53297, + "start": 53224, + "end": 53237, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 15 }, "end": { - "line": 1534, + "line": 1533, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 53284, - "end": 53288, + "start": 53224, + "end": 53228, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 15 }, "end": { - "line": 1534, + "line": 1533, "column": 19 } } }, "property": { "type": "Identifier", - "start": 53289, - "end": 53297, + "start": 53229, + "end": 53237, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 20 }, "end": { - "line": 1534, + "line": 1533, "column": 28 }, "identifierName": "_configs" @@ -82724,15 +82584,15 @@ }, "property": { "type": "Identifier", - "start": 53298, - "end": 53308, + "start": 53238, + "end": 53248, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 29 }, "end": { - "line": 1534, + "line": 1533, "column": 39 }, "identifierName": "panInertia" @@ -82750,15 +82610,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the pan inertia factor.\n *\n * Default is ````0.5````.\n *\n * @returns {Number} The current pan inertia factor.\n ", - "start": 53096, - "end": 53245, + "start": 53036, + "end": 53185, "loc": { "start": { - "line": 1526, + "line": 1525, "column": 4 }, "end": { - "line": 1532, + "line": 1531, "column": 7 } } @@ -82768,15 +82628,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 53321, - "end": 53555, + "start": 53261, + "end": 53495, "loc": { "start": { - "line": 1537, + "line": 1536, "column": 4 }, "end": { - "line": 1547, + "line": 1546, "column": 7 } } @@ -82785,15 +82645,15 @@ }, { "type": "ClassMethod", - "start": 53560, - "end": 54004, + "start": 53500, + "end": 53944, "loc": { "start": { - "line": 1548, + "line": 1547, "column": 4 }, "end": { - "line": 1557, + "line": 1556, "column": 5 } }, @@ -82801,15 +82661,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 53564, - "end": 53578, + "start": 53504, + "end": 53518, "loc": { "start": { - "line": 1548, + "line": 1547, "column": 8 }, "end": { - "line": 1548, + "line": 1547, "column": 22 }, "identifierName": "keyboardLayout" @@ -82824,15 +82684,15 @@ "params": [ { "type": "Identifier", - "start": 53579, - "end": 53584, + "start": 53519, + "end": 53524, "loc": { "start": { - "line": 1548, + "line": 1547, "column": 23 }, "end": { - "line": 1548, + "line": 1547, "column": 28 }, "identifierName": "value" @@ -82842,59 +82702,59 @@ ], "body": { "type": "BlockStatement", - "start": 53586, - "end": 54004, + "start": 53526, + "end": 53944, "loc": { "start": { - "line": 1548, + "line": 1547, "column": 30 }, "end": { - "line": 1557, + "line": 1556, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 53689, - "end": 53715, + "start": 53629, + "end": 53655, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 8 }, "end": { - "line": 1550, + "line": 1549, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 53689, - "end": 53714, + "start": 53629, + "end": 53654, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 8 }, "end": { - "line": 1550, + "line": 1549, "column": 33 } }, "operator": "=", "left": { "type": "Identifier", - "start": 53689, - "end": 53694, + "start": 53629, + "end": 53634, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 8 }, "end": { - "line": 1550, + "line": 1549, "column": 13 }, "identifierName": "value" @@ -82904,29 +82764,29 @@ }, "right": { "type": "LogicalExpression", - "start": 53697, - "end": 53714, + "start": 53637, + "end": 53654, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 16 }, "end": { - "line": 1550, + "line": 1549, "column": 33 } }, "left": { "type": "Identifier", - "start": 53697, - "end": 53702, + "start": 53637, + "end": 53642, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 16 }, "end": { - "line": 1550, + "line": 1549, "column": 21 }, "identifierName": "value" @@ -82936,15 +82796,15 @@ "operator": "||", "right": { "type": "StringLiteral", - "start": 53706, - "end": 53714, + "start": 53646, + "end": 53654, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 25 }, "end": { - "line": 1550, + "line": 1549, "column": 33 } }, @@ -82961,15 +82821,15 @@ { "type": "CommentLine", "value": " this.warn(\"keyboardLayout property is deprecated - use keyMap property instead\");", - "start": 53596, - "end": 53680, + "start": 53536, + "end": 53620, "loc": { "start": { - "line": 1549, + "line": 1548, "column": 8 }, "end": { - "line": 1549, + "line": 1548, "column": 92 } } @@ -82978,57 +82838,57 @@ }, { "type": "IfStatement", - "start": 53724, - "end": 53900, + "start": 53664, + "end": 53840, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 8 }, "end": { - "line": 1554, + "line": 1553, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 53728, - "end": 53768, + "start": 53668, + "end": 53708, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 12 }, "end": { - "line": 1551, + "line": 1550, "column": 52 } }, "left": { "type": "BinaryExpression", - "start": 53728, - "end": 53746, + "start": 53668, + "end": 53686, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 12 }, "end": { - "line": 1551, + "line": 1550, "column": 30 } }, "left": { "type": "Identifier", - "start": 53728, - "end": 53733, + "start": 53668, + "end": 53673, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 12 }, "end": { - "line": 1551, + "line": 1550, "column": 17 }, "identifierName": "value" @@ -83038,15 +82898,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 53738, - "end": 53746, + "start": 53678, + "end": 53686, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 22 }, "end": { - "line": 1551, + "line": 1550, "column": 30 } }, @@ -83060,29 +82920,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 53750, - "end": 53768, + "start": 53690, + "end": 53708, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 34 }, "end": { - "line": 1551, + "line": 1550, "column": 52 } }, "left": { "type": "Identifier", - "start": 53750, - "end": 53755, + "start": 53690, + "end": 53695, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 34 }, "end": { - "line": 1551, + "line": 1550, "column": 39 }, "identifierName": "value" @@ -83092,15 +82952,15 @@ "operator": "!==", "right": { "type": "StringLiteral", - "start": 53760, - "end": 53768, + "start": 53700, + "end": 53708, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 44 }, "end": { - "line": 1551, + "line": 1550, "column": 52 } }, @@ -83114,87 +82974,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 53770, - "end": 53900, + "start": 53710, + "end": 53840, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 54 }, "end": { - "line": 1554, + "line": 1553, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 53784, - "end": 53860, + "start": 53724, + "end": 53800, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 12 }, "end": { - "line": 1552, + "line": 1551, "column": 88 } }, "expression": { "type": "CallExpression", - "start": 53784, - "end": 53859, + "start": 53724, + "end": 53799, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 12 }, "end": { - "line": 1552, + "line": 1551, "column": 87 } }, "callee": { "type": "MemberExpression", - "start": 53784, - "end": 53794, + "start": 53724, + "end": 53734, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 12 }, "end": { - "line": 1552, + "line": 1551, "column": 22 } }, "object": { "type": "ThisExpression", - "start": 53784, - "end": 53788, + "start": 53724, + "end": 53728, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 12 }, "end": { - "line": 1552, + "line": 1551, "column": 16 } } }, "property": { "type": "Identifier", - "start": 53789, - "end": 53794, + "start": 53729, + "end": 53734, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 17 }, "end": { - "line": 1552, + "line": 1551, "column": 22 }, "identifierName": "error" @@ -83206,15 +83066,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 53795, - "end": 53858, + "start": 53735, + "end": 53798, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 23 }, "end": { - "line": 1552, + "line": 1551, "column": 86 } }, @@ -83229,44 +83089,44 @@ }, { "type": "ExpressionStatement", - "start": 53873, - "end": 53890, + "start": 53813, + "end": 53830, "loc": { "start": { - "line": 1553, + "line": 1552, "column": 12 }, "end": { - "line": 1553, + "line": 1552, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 53873, - "end": 53889, + "start": 53813, + "end": 53829, "loc": { "start": { - "line": 1553, + "line": 1552, "column": 12 }, "end": { - "line": 1553, + "line": 1552, "column": 28 } }, "operator": "=", "left": { "type": "Identifier", - "start": 53873, - "end": 53878, + "start": 53813, + "end": 53818, "loc": { "start": { - "line": 1553, + "line": 1552, "column": 12 }, "end": { - "line": 1553, + "line": 1552, "column": 17 }, "identifierName": "value" @@ -83275,15 +83135,15 @@ }, "right": { "type": "StringLiteral", - "start": 53881, - "end": 53889, + "start": 53821, + "end": 53829, "loc": { "start": { - "line": 1553, + "line": 1552, "column": 20 }, "end": { - "line": 1553, + "line": 1552, "column": 28 } }, @@ -83302,87 +83162,87 @@ }, { "type": "ExpressionStatement", - "start": 53909, - "end": 53946, + "start": 53849, + "end": 53886, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 8 }, "end": { - "line": 1555, + "line": 1554, "column": 45 } }, "expression": { "type": "AssignmentExpression", - "start": 53909, - "end": 53945, + "start": 53849, + "end": 53885, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 8 }, "end": { - "line": 1555, + "line": 1554, "column": 44 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 53909, - "end": 53937, + "start": 53849, + "end": 53877, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 8 }, "end": { - "line": 1555, + "line": 1554, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 53909, - "end": 53922, + "start": 53849, + "end": 53862, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 8 }, "end": { - "line": 1555, + "line": 1554, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 53909, - "end": 53913, + "start": 53849, + "end": 53853, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 8 }, "end": { - "line": 1555, + "line": 1554, "column": 12 } } }, "property": { "type": "Identifier", - "start": 53914, - "end": 53922, + "start": 53854, + "end": 53862, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 13 }, "end": { - "line": 1555, + "line": 1554, "column": 21 }, "identifierName": "_configs" @@ -83393,15 +83253,15 @@ }, "property": { "type": "Identifier", - "start": 53923, - "end": 53937, + "start": 53863, + "end": 53877, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 22 }, "end": { - "line": 1555, + "line": 1554, "column": 36 }, "identifierName": "keyboardLayout" @@ -83412,15 +83272,15 @@ }, "right": { "type": "Identifier", - "start": 53940, - "end": 53945, + "start": 53880, + "end": 53885, "loc": { "start": { - "line": 1555, + "line": 1554, "column": 39 }, "end": { - "line": 1555, + "line": 1554, "column": 44 }, "identifierName": "value" @@ -83431,73 +83291,73 @@ }, { "type": "ExpressionStatement", - "start": 53955, - "end": 53998, + "start": 53895, + "end": 53938, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 8 }, "end": { - "line": 1556, + "line": 1555, "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 53955, - "end": 53997, + "start": 53895, + "end": 53937, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 8 }, "end": { - "line": 1556, + "line": 1555, "column": 50 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 53955, - "end": 53966, + "start": 53895, + "end": 53906, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 8 }, "end": { - "line": 1556, + "line": 1555, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 53955, - "end": 53959, + "start": 53895, + "end": 53899, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 8 }, "end": { - "line": 1556, + "line": 1555, "column": 12 } } }, "property": { "type": "Identifier", - "start": 53960, - "end": 53966, + "start": 53900, + "end": 53906, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 13 }, "end": { - "line": 1556, + "line": 1555, "column": 19 }, "identifierName": "keyMap" @@ -83508,58 +83368,58 @@ }, "right": { "type": "MemberExpression", - "start": 53969, - "end": 53997, + "start": 53909, + "end": 53937, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 22 }, "end": { - "line": 1556, + "line": 1555, "column": 50 } }, "object": { "type": "MemberExpression", - "start": 53969, - "end": 53982, + "start": 53909, + "end": 53922, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 22 }, "end": { - "line": 1556, + "line": 1555, "column": 35 } }, "object": { "type": "ThisExpression", - "start": 53969, - "end": 53973, + "start": 53909, + "end": 53913, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 22 }, "end": { - "line": 1556, + "line": 1555, "column": 26 } } }, "property": { "type": "Identifier", - "start": 53974, - "end": 53982, + "start": 53914, + "end": 53922, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 27 }, "end": { - "line": 1556, + "line": 1555, "column": 35 }, "identifierName": "_configs" @@ -83570,15 +83430,15 @@ }, "property": { "type": "Identifier", - "start": 53983, - "end": 53997, + "start": 53923, + "end": 53937, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 36 }, "end": { - "line": 1556, + "line": 1555, "column": 50 }, "identifierName": "keyboardLayout" @@ -83597,15 +83457,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 53321, - "end": 53555, + "start": 53261, + "end": 53495, "loc": { "start": { - "line": 1537, + "line": 1536, "column": 4 }, "end": { - "line": 1547, + "line": 1546, "column": 7 } } @@ -83615,15 +83475,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 54010, - "end": 54240, + "start": 53950, + "end": 54180, "loc": { "start": { - "line": 1559, + "line": 1558, "column": 4 }, "end": { - "line": 1569, + "line": 1568, "column": 7 } } @@ -83632,15 +83492,15 @@ }, { "type": "ClassMethod", - "start": 54245, - "end": 54318, + "start": 54185, + "end": 54258, "loc": { "start": { - "line": 1570, + "line": 1569, "column": 4 }, "end": { - "line": 1572, + "line": 1571, "column": 5 } }, @@ -83648,15 +83508,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 54249, - "end": 54263, + "start": 54189, + "end": 54203, "loc": { "start": { - "line": 1570, + "line": 1569, "column": 8 }, "end": { - "line": 1570, + "line": 1569, "column": 22 }, "identifierName": "keyboardLayout" @@ -83671,87 +83531,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 54266, - "end": 54318, + "start": 54206, + "end": 54258, "loc": { "start": { - "line": 1570, + "line": 1569, "column": 25 }, "end": { - "line": 1572, + "line": 1571, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 54276, - "end": 54312, + "start": 54216, + "end": 54252, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 8 }, "end": { - "line": 1571, + "line": 1570, "column": 44 } }, "argument": { "type": "MemberExpression", - "start": 54283, - "end": 54311, + "start": 54223, + "end": 54251, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 15 }, "end": { - "line": 1571, + "line": 1570, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 54283, - "end": 54296, + "start": 54223, + "end": 54236, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 15 }, "end": { - "line": 1571, + "line": 1570, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 54283, - "end": 54287, + "start": 54223, + "end": 54227, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 15 }, "end": { - "line": 1571, + "line": 1570, "column": 19 } } }, "property": { "type": "Identifier", - "start": 54288, - "end": 54296, + "start": 54228, + "end": 54236, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 20 }, "end": { - "line": 1571, + "line": 1570, "column": 28 }, "identifierName": "_configs" @@ -83762,15 +83622,15 @@ }, "property": { "type": "Identifier", - "start": 54297, - "end": 54311, + "start": 54237, + "end": 54251, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 29 }, "end": { - "line": 1571, + "line": 1570, "column": 43 }, "identifierName": "keyboardLayout" @@ -83788,15 +83648,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 54010, - "end": 54240, + "start": 53950, + "end": 54180, "loc": { "start": { - "line": 1559, + "line": 1558, "column": 4 }, "end": { - "line": 1569, + "line": 1568, "column": 7 } } @@ -83806,15 +83666,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 54324, - "end": 54916, + "start": 54264, + "end": 54856, "loc": { "start": { - "line": 1574, + "line": 1573, "column": 4 }, "end": { - "line": 1585, + "line": 1584, "column": 7 } } @@ -83823,15 +83683,15 @@ }, { "type": "ClassMethod", - "start": 54921, - "end": 55008, + "start": 54861, + "end": 54948, "loc": { "start": { - "line": 1586, + "line": 1585, "column": 4 }, "end": { - "line": 1588, + "line": 1587, "column": 5 } }, @@ -83839,15 +83699,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 54925, - "end": 54935, + "start": 54865, + "end": 54875, "loc": { "start": { - "line": 1586, + "line": 1585, "column": 8 }, "end": { - "line": 1586, + "line": 1585, "column": 18 }, "identifierName": "smartPivot" @@ -83862,15 +83722,15 @@ "params": [ { "type": "Identifier", - "start": 54936, - "end": 54943, + "start": 54876, + "end": 54883, "loc": { "start": { - "line": 1586, + "line": 1585, "column": 19 }, "end": { - "line": 1586, + "line": 1585, "column": 26 }, "identifierName": "enabled" @@ -83880,102 +83740,102 @@ ], "body": { "type": "BlockStatement", - "start": 54945, - "end": 55008, + "start": 54885, + "end": 54948, "loc": { "start": { - "line": 1586, + "line": 1585, "column": 28 }, "end": { - "line": 1588, + "line": 1587, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 54955, - "end": 55002, + "start": 54895, + "end": 54942, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 8 }, "end": { - "line": 1587, + "line": 1586, "column": 55 } }, "expression": { "type": "AssignmentExpression", - "start": 54955, - "end": 55001, + "start": 54895, + "end": 54941, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 8 }, "end": { - "line": 1587, + "line": 1586, "column": 54 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 54955, - "end": 54979, + "start": 54895, + "end": 54919, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 8 }, "end": { - "line": 1587, + "line": 1586, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 54955, - "end": 54968, + "start": 54895, + "end": 54908, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 8 }, "end": { - "line": 1587, + "line": 1586, "column": 21 } }, "object": { "type": "ThisExpression", - "start": 54955, - "end": 54959, + "start": 54895, + "end": 54899, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 8 }, "end": { - "line": 1587, + "line": 1586, "column": 12 } } }, "property": { "type": "Identifier", - "start": 54960, - "end": 54968, + "start": 54900, + "end": 54908, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 13 }, "end": { - "line": 1587, + "line": 1586, "column": 21 }, "identifierName": "_configs" @@ -83986,15 +83846,15 @@ }, "property": { "type": "Identifier", - "start": 54969, - "end": 54979, + "start": 54909, + "end": 54919, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 22 }, "end": { - "line": 1587, + "line": 1586, "column": 32 }, "identifierName": "smartPivot" @@ -84005,29 +83865,29 @@ }, "right": { "type": "BinaryExpression", - "start": 54983, - "end": 55000, + "start": 54923, + "end": 54940, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 36 }, "end": { - "line": 1587, + "line": 1586, "column": 53 } }, "left": { "type": "Identifier", - "start": 54983, - "end": 54990, + "start": 54923, + "end": 54930, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 36 }, "end": { - "line": 1587, + "line": 1586, "column": 43 }, "identifierName": "enabled" @@ -84037,15 +83897,15 @@ "operator": "!==", "right": { "type": "BooleanLiteral", - "start": 54995, - "end": 55000, + "start": 54935, + "end": 54940, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 48 }, "end": { - "line": 1587, + "line": 1586, "column": 53 } }, @@ -84053,7 +83913,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 54982 + "parenStart": 54922 } } } @@ -84066,15 +83926,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 54324, - "end": 54916, + "start": 54264, + "end": 54856, "loc": { "start": { - "line": 1574, + "line": 1573, "column": 4 }, "end": { - "line": 1585, + "line": 1584, "column": 7 } } @@ -84084,15 +83944,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 55014, - "end": 55614, + "start": 54954, + "end": 55554, "loc": { "start": { - "line": 1590, + "line": 1589, "column": 4 }, "end": { - "line": 1601, + "line": 1600, "column": 7 } } @@ -84101,15 +83961,15 @@ }, { "type": "ClassMethod", - "start": 55619, - "end": 55684, + "start": 55559, + "end": 55624, "loc": { "start": { - "line": 1602, + "line": 1601, "column": 4 }, "end": { - "line": 1604, + "line": 1603, "column": 5 } }, @@ -84117,15 +83977,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 55623, - "end": 55633, + "start": 55563, + "end": 55573, "loc": { "start": { - "line": 1602, + "line": 1601, "column": 8 }, "end": { - "line": 1602, + "line": 1601, "column": 18 }, "identifierName": "smartPivot" @@ -84140,87 +84000,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 55636, - "end": 55684, + "start": 55576, + "end": 55624, "loc": { "start": { - "line": 1602, + "line": 1601, "column": 21 }, "end": { - "line": 1604, + "line": 1603, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 55646, - "end": 55678, + "start": 55586, + "end": 55618, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 8 }, "end": { - "line": 1603, + "line": 1602, "column": 40 } }, "argument": { "type": "MemberExpression", - "start": 55653, - "end": 55677, + "start": 55593, + "end": 55617, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 15 }, "end": { - "line": 1603, + "line": 1602, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 55653, - "end": 55666, + "start": 55593, + "end": 55606, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 15 }, "end": { - "line": 1603, + "line": 1602, "column": 28 } }, "object": { "type": "ThisExpression", - "start": 55653, - "end": 55657, + "start": 55593, + "end": 55597, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 15 }, "end": { - "line": 1603, + "line": 1602, "column": 19 } } }, "property": { "type": "Identifier", - "start": 55658, - "end": 55666, + "start": 55598, + "end": 55606, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 20 }, "end": { - "line": 1603, + "line": 1602, "column": 28 }, "identifierName": "_configs" @@ -84231,15 +84091,15 @@ }, "property": { "type": "Identifier", - "start": 55667, - "end": 55677, + "start": 55607, + "end": 55617, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 29 }, "end": { - "line": 1603, + "line": 1602, "column": 39 }, "identifierName": "smartPivot" @@ -84257,15 +84117,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 55014, - "end": 55614, + "start": 54954, + "end": 55554, "loc": { "start": { - "line": 1590, + "line": 1589, "column": 4 }, "end": { - "line": 1601, + "line": 1600, "column": 7 } } @@ -84275,15 +84135,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this ````CameraControl````.\n * @private\n ", - "start": 55690, - "end": 55761, + "start": 55630, + "end": 55701, "loc": { "start": { - "line": 1606, + "line": 1605, "column": 4 }, "end": { - "line": 1609, + "line": 1608, "column": 7 } } @@ -84292,15 +84152,15 @@ }, { "type": "ClassMethod", - "start": 55766, - "end": 55916, + "start": 55706, + "end": 55856, "loc": { "start": { - "line": 1610, + "line": 1609, "column": 4 }, "end": { - "line": 1615, + "line": 1614, "column": 5 } }, @@ -84308,15 +84168,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 55766, - "end": 55773, + "start": 55706, + "end": 55713, "loc": { "start": { - "line": 1610, + "line": 1609, "column": 4 }, "end": { - "line": 1610, + "line": 1609, "column": 11 }, "identifierName": "destroy" @@ -84332,87 +84192,87 @@ "params": [], "body": { "type": "BlockStatement", - "start": 55776, - "end": 55916, + "start": 55716, + "end": 55856, "loc": { "start": { - "line": 1610, + "line": 1609, "column": 14 }, "end": { - "line": 1615, + "line": 1614, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 55786, - "end": 55810, + "start": 55726, + "end": 55750, "loc": { "start": { - "line": 1611, + "line": 1610, "column": 8 }, "end": { - "line": 1611, + "line": 1610, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 55786, - "end": 55809, + "start": 55726, + "end": 55749, "loc": { "start": { - "line": 1611, + "line": 1610, "column": 8 }, "end": { - "line": 1611, + "line": 1610, "column": 31 } }, "callee": { "type": "MemberExpression", - "start": 55786, - "end": 55807, + "start": 55726, + "end": 55747, "loc": { "start": { - "line": 1611, + "line": 1610, "column": 8 }, "end": { - "line": 1611, + "line": 1610, "column": 29 } }, "object": { "type": "ThisExpression", - "start": 55786, - "end": 55790, + "start": 55726, + "end": 55730, "loc": { "start": { - "line": 1611, + "line": 1610, "column": 8 }, "end": { - "line": 1611, + "line": 1610, "column": 12 } } }, "property": { "type": "Identifier", - "start": 55791, - "end": 55807, + "start": 55731, + "end": 55747, "loc": { "start": { - "line": 1611, + "line": 1610, "column": 13 }, "end": { - "line": 1611, + "line": 1610, "column": 29 }, "identifierName": "_destroyHandlers" @@ -84426,72 +84286,72 @@ }, { "type": "ExpressionStatement", - "start": 55819, - "end": 55846, + "start": 55759, + "end": 55786, "loc": { "start": { - "line": 1612, + "line": 1611, "column": 8 }, "end": { - "line": 1612, + "line": 1611, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 55819, - "end": 55845, + "start": 55759, + "end": 55785, "loc": { "start": { - "line": 1612, + "line": 1611, "column": 8 }, "end": { - "line": 1612, + "line": 1611, "column": 34 } }, "callee": { "type": "MemberExpression", - "start": 55819, - "end": 55843, + "start": 55759, + "end": 55783, "loc": { "start": { - "line": 1612, + "line": 1611, "column": 8 }, "end": { - "line": 1612, + "line": 1611, "column": 32 } }, "object": { "type": "ThisExpression", - "start": 55819, - "end": 55823, + "start": 55759, + "end": 55763, "loc": { "start": { - "line": 1612, + "line": 1611, "column": 8 }, "end": { - "line": 1612, + "line": 1611, "column": 12 } } }, "property": { "type": "Identifier", - "start": 55824, - "end": 55843, + "start": 55764, + "end": 55783, "loc": { "start": { - "line": 1612, + "line": 1611, "column": 13 }, "end": { - "line": 1612, + "line": 1611, "column": 32 }, "identifierName": "_destroyControllers" @@ -84505,86 +84365,86 @@ }, { "type": "ExpressionStatement", - "start": 55855, - "end": 55885, + "start": 55795, + "end": 55825, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 8 }, "end": { - "line": 1613, + "line": 1612, "column": 38 } }, "expression": { "type": "CallExpression", - "start": 55855, - "end": 55884, + "start": 55795, + "end": 55824, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 8 }, "end": { - "line": 1613, + "line": 1612, "column": 37 } }, "callee": { "type": "MemberExpression", - "start": 55855, - "end": 55882, + "start": 55795, + "end": 55822, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 8 }, "end": { - "line": 1613, + "line": 1612, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 55855, - "end": 55874, + "start": 55795, + "end": 55814, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 8 }, "end": { - "line": 1613, + "line": 1612, "column": 27 } }, "object": { "type": "ThisExpression", - "start": 55855, - "end": 55859, + "start": 55795, + "end": 55799, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 8 }, "end": { - "line": 1613, + "line": 1612, "column": 12 } } }, "property": { "type": "Identifier", - "start": 55860, - "end": 55874, + "start": 55800, + "end": 55814, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 13 }, "end": { - "line": 1613, + "line": 1612, "column": 27 }, "identifierName": "_cameraUpdater" @@ -84595,15 +84455,15 @@ }, "property": { "type": "Identifier", - "start": 55875, - "end": 55882, + "start": 55815, + "end": 55822, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 28 }, "end": { - "line": 1613, + "line": 1612, "column": 35 }, "identifierName": "destroy" @@ -84617,72 +84477,72 @@ }, { "type": "ExpressionStatement", - "start": 55894, - "end": 55910, + "start": 55834, + "end": 55850, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 8 }, "end": { - "line": 1614, + "line": 1613, "column": 24 } }, "expression": { "type": "CallExpression", - "start": 55894, - "end": 55909, + "start": 55834, + "end": 55849, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 8 }, "end": { - "line": 1614, + "line": 1613, "column": 23 } }, "callee": { "type": "MemberExpression", - "start": 55894, - "end": 55907, + "start": 55834, + "end": 55847, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 8 }, "end": { - "line": 1614, + "line": 1613, "column": 21 } }, "object": { "type": "Super", - "start": 55894, - "end": 55899, + "start": 55834, + "end": 55839, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 8 }, "end": { - "line": 1614, + "line": 1613, "column": 13 } } }, "property": { "type": "Identifier", - "start": 55900, - "end": 55907, + "start": 55840, + "end": 55847, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 14 }, "end": { - "line": 1614, + "line": 1613, "column": 21 }, "identifierName": "destroy" @@ -84701,15 +84561,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this ````CameraControl````.\n * @private\n ", - "start": 55690, - "end": 55761, + "start": 55630, + "end": 55701, "loc": { "start": { - "line": 1606, + "line": 1605, "column": 4 }, "end": { - "line": 1609, + "line": 1608, "column": 7 } } @@ -84718,15 +84578,15 @@ }, { "type": "ClassMethod", - "start": 55922, - "end": 56158, + "start": 55862, + "end": 56098, "loc": { "start": { - "line": 1617, + "line": 1616, "column": 4 }, "end": { - "line": 1624, + "line": 1623, "column": 5 } }, @@ -84734,15 +84594,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 55922, - "end": 55938, + "start": 55862, + "end": 55878, "loc": { "start": { - "line": 1617, + "line": 1616, "column": 4 }, "end": { - "line": 1617, + "line": 1616, "column": 20 }, "identifierName": "_destroyHandlers" @@ -84757,73 +84617,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 55941, - "end": 56158, + "start": 55881, + "end": 56098, "loc": { "start": { - "line": 1617, + "line": 1616, "column": 23 }, "end": { - "line": 1624, + "line": 1623, "column": 5 } }, "body": [ { "type": "ForStatement", - "start": 55951, - "end": 56152, + "start": 55891, + "end": 56092, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 8 }, "end": { - "line": 1623, + "line": 1622, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 55956, - "end": 55994, + "start": 55896, + "end": 55934, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 13 }, "end": { - "line": 1618, + "line": 1617, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 55960, - "end": 55965, + "start": 55900, + "end": 55905, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 17 }, "end": { - "line": 1618, + "line": 1617, "column": 22 } }, "id": { "type": "Identifier", - "start": 55960, - "end": 55961, + "start": 55900, + "end": 55901, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 17 }, "end": { - "line": 1618, + "line": 1617, "column": 18 }, "identifierName": "i" @@ -84832,15 +84692,15 @@ }, "init": { "type": "NumericLiteral", - "start": 55964, - "end": 55965, + "start": 55904, + "end": 55905, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 21 }, "end": { - "line": 1618, + "line": 1617, "column": 22 } }, @@ -84853,29 +84713,29 @@ }, { "type": "VariableDeclarator", - "start": 55967, - "end": 55994, + "start": 55907, + "end": 55934, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 24 }, "end": { - "line": 1618, + "line": 1617, "column": 51 } }, "id": { "type": "Identifier", - "start": 55967, - "end": 55970, + "start": 55907, + "end": 55910, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 24 }, "end": { - "line": 1618, + "line": 1617, "column": 27 }, "identifierName": "len" @@ -84884,58 +84744,58 @@ }, "init": { "type": "MemberExpression", - "start": 55973, - "end": 55994, + "start": 55913, + "end": 55934, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 30 }, "end": { - "line": 1618, + "line": 1617, "column": 51 } }, "object": { "type": "MemberExpression", - "start": 55973, - "end": 55987, + "start": 55913, + "end": 55927, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 30 }, "end": { - "line": 1618, + "line": 1617, "column": 44 } }, "object": { "type": "ThisExpression", - "start": 55973, - "end": 55977, + "start": 55913, + "end": 55917, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 30 }, "end": { - "line": 1618, + "line": 1617, "column": 34 } } }, "property": { "type": "Identifier", - "start": 55978, - "end": 55987, + "start": 55918, + "end": 55927, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 35 }, "end": { - "line": 1618, + "line": 1617, "column": 44 }, "identifierName": "_handlers" @@ -84946,15 +84806,15 @@ }, "property": { "type": "Identifier", - "start": 55988, - "end": 55994, + "start": 55928, + "end": 55934, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 45 }, "end": { - "line": 1618, + "line": 1617, "column": 51 }, "identifierName": "length" @@ -84969,29 +84829,29 @@ }, "test": { "type": "BinaryExpression", - "start": 55996, - "end": 56003, + "start": 55936, + "end": 55943, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 53 }, "end": { - "line": 1618, + "line": 1617, "column": 60 } }, "left": { "type": "Identifier", - "start": 55996, - "end": 55997, + "start": 55936, + "end": 55937, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 53 }, "end": { - "line": 1618, + "line": 1617, "column": 54 }, "identifierName": "i" @@ -85001,15 +84861,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 56000, - "end": 56003, + "start": 55940, + "end": 55943, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 57 }, "end": { - "line": 1618, + "line": 1617, "column": 60 }, "identifierName": "len" @@ -85019,15 +84879,15 @@ }, "update": { "type": "UpdateExpression", - "start": 56005, - "end": 56008, + "start": 55945, + "end": 55948, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 62 }, "end": { - "line": 1618, + "line": 1617, "column": 65 } }, @@ -85035,15 +84895,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 56005, - "end": 56006, + "start": 55945, + "end": 55946, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 62 }, "end": { - "line": 1618, + "line": 1617, "column": 63 }, "identifierName": "i" @@ -85053,59 +84913,59 @@ }, "body": { "type": "BlockStatement", - "start": 56010, - "end": 56152, + "start": 55950, + "end": 56092, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 67 }, "end": { - "line": 1623, + "line": 1622, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 56024, - "end": 56058, + "start": 55964, + "end": 55998, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 12 }, "end": { - "line": 1619, + "line": 1618, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 56030, - "end": 56057, + "start": 55970, + "end": 55997, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 18 }, "end": { - "line": 1619, + "line": 1618, "column": 45 } }, "id": { "type": "Identifier", - "start": 56030, - "end": 56037, + "start": 55970, + "end": 55977, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 18 }, "end": { - "line": 1619, + "line": 1618, "column": 25 }, "identifierName": "handler" @@ -85114,58 +84974,58 @@ }, "init": { "type": "MemberExpression", - "start": 56040, - "end": 56057, + "start": 55980, + "end": 55997, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 28 }, "end": { - "line": 1619, + "line": 1618, "column": 45 } }, "object": { "type": "MemberExpression", - "start": 56040, - "end": 56054, + "start": 55980, + "end": 55994, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 28 }, "end": { - "line": 1619, + "line": 1618, "column": 42 } }, "object": { "type": "ThisExpression", - "start": 56040, - "end": 56044, + "start": 55980, + "end": 55984, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 28 }, "end": { - "line": 1619, + "line": 1618, "column": 32 } } }, "property": { "type": "Identifier", - "start": 56045, - "end": 56054, + "start": 55985, + "end": 55994, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 33 }, "end": { - "line": 1619, + "line": 1618, "column": 42 }, "identifierName": "_handlers" @@ -85176,15 +85036,15 @@ }, "property": { "type": "Identifier", - "start": 56055, - "end": 56056, + "start": 55995, + "end": 55996, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 43 }, "end": { - "line": 1619, + "line": 1618, "column": 44 }, "identifierName": "i" @@ -85199,43 +85059,43 @@ }, { "type": "IfStatement", - "start": 56071, - "end": 56142, + "start": 56011, + "end": 56082, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 12 }, "end": { - "line": 1622, + "line": 1621, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 56075, - "end": 56090, + "start": 56015, + "end": 56030, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 16 }, "end": { - "line": 1620, + "line": 1619, "column": 31 } }, "object": { "type": "Identifier", - "start": 56075, - "end": 56082, + "start": 56015, + "end": 56022, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 16 }, "end": { - "line": 1620, + "line": 1619, "column": 23 }, "identifierName": "handler" @@ -85244,15 +85104,15 @@ }, "property": { "type": "Identifier", - "start": 56083, - "end": 56090, + "start": 56023, + "end": 56030, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 24 }, "end": { - "line": 1620, + "line": 1619, "column": 31 }, "identifierName": "destroy" @@ -85263,72 +85123,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 56092, - "end": 56142, + "start": 56032, + "end": 56082, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 33 }, "end": { - "line": 1622, + "line": 1621, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 56110, - "end": 56128, + "start": 56050, + "end": 56068, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 16 }, "end": { - "line": 1621, + "line": 1620, "column": 34 } }, "expression": { "type": "CallExpression", - "start": 56110, - "end": 56127, + "start": 56050, + "end": 56067, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 16 }, "end": { - "line": 1621, + "line": 1620, "column": 33 } }, "callee": { "type": "MemberExpression", - "start": 56110, - "end": 56125, + "start": 56050, + "end": 56065, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 16 }, "end": { - "line": 1621, + "line": 1620, "column": 31 } }, "object": { "type": "Identifier", - "start": 56110, - "end": 56117, + "start": 56050, + "end": 56057, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 16 }, "end": { - "line": 1621, + "line": 1620, "column": 23 }, "identifierName": "handler" @@ -85337,15 +85197,15 @@ }, "property": { "type": "Identifier", - "start": 56118, - "end": 56125, + "start": 56058, + "end": 56065, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 24 }, "end": { - "line": 1621, + "line": 1620, "column": 31 }, "identifierName": "destroy" @@ -85372,15 +85232,15 @@ }, { "type": "ClassMethod", - "start": 56164, - "end": 56418, + "start": 56104, + "end": 56358, "loc": { "start": { - "line": 1626, + "line": 1625, "column": 4 }, "end": { - "line": 1633, + "line": 1632, "column": 5 } }, @@ -85388,15 +85248,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 56164, - "end": 56183, + "start": 56104, + "end": 56123, "loc": { "start": { - "line": 1626, + "line": 1625, "column": 4 }, "end": { - "line": 1626, + "line": 1625, "column": 23 }, "identifierName": "_destroyControllers" @@ -85411,73 +85271,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 56186, - "end": 56418, + "start": 56126, + "end": 56358, "loc": { "start": { - "line": 1626, + "line": 1625, "column": 26 }, "end": { - "line": 1633, + "line": 1632, "column": 5 } }, "body": [ { "type": "ForStatement", - "start": 56196, - "end": 56412, + "start": 56136, + "end": 56352, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 8 }, "end": { - "line": 1632, + "line": 1631, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 56201, - "end": 56242, + "start": 56141, + "end": 56182, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 13 }, "end": { - "line": 1627, + "line": 1626, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 56205, - "end": 56210, + "start": 56145, + "end": 56150, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 17 }, "end": { - "line": 1627, + "line": 1626, "column": 22 } }, "id": { "type": "Identifier", - "start": 56205, - "end": 56206, + "start": 56145, + "end": 56146, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 17 }, "end": { - "line": 1627, + "line": 1626, "column": 18 }, "identifierName": "i" @@ -85486,15 +85346,15 @@ }, "init": { "type": "NumericLiteral", - "start": 56209, - "end": 56210, + "start": 56149, + "end": 56150, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 21 }, "end": { - "line": 1627, + "line": 1626, "column": 22 } }, @@ -85507,29 +85367,29 @@ }, { "type": "VariableDeclarator", - "start": 56212, - "end": 56242, + "start": 56152, + "end": 56182, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 24 }, "end": { - "line": 1627, + "line": 1626, "column": 54 } }, "id": { "type": "Identifier", - "start": 56212, - "end": 56215, + "start": 56152, + "end": 56155, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 24 }, "end": { - "line": 1627, + "line": 1626, "column": 27 }, "identifierName": "len" @@ -85538,58 +85398,58 @@ }, "init": { "type": "MemberExpression", - "start": 56218, - "end": 56242, + "start": 56158, + "end": 56182, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 30 }, "end": { - "line": 1627, + "line": 1626, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 56218, - "end": 56235, + "start": 56158, + "end": 56175, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 30 }, "end": { - "line": 1627, + "line": 1626, "column": 47 } }, "object": { "type": "ThisExpression", - "start": 56218, - "end": 56222, + "start": 56158, + "end": 56162, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 30 }, "end": { - "line": 1627, + "line": 1626, "column": 34 } } }, "property": { "type": "Identifier", - "start": 56223, - "end": 56235, + "start": 56163, + "end": 56175, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 35 }, "end": { - "line": 1627, + "line": 1626, "column": 47 }, "identifierName": "_controllers" @@ -85600,15 +85460,15 @@ }, "property": { "type": "Identifier", - "start": 56236, - "end": 56242, + "start": 56176, + "end": 56182, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 48 }, "end": { - "line": 1627, + "line": 1626, "column": 54 }, "identifierName": "length" @@ -85623,29 +85483,29 @@ }, "test": { "type": "BinaryExpression", - "start": 56244, - "end": 56251, + "start": 56184, + "end": 56191, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 56 }, "end": { - "line": 1627, + "line": 1626, "column": 63 } }, "left": { "type": "Identifier", - "start": 56244, - "end": 56245, + "start": 56184, + "end": 56185, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 56 }, "end": { - "line": 1627, + "line": 1626, "column": 57 }, "identifierName": "i" @@ -85655,15 +85515,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 56248, - "end": 56251, + "start": 56188, + "end": 56191, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 60 }, "end": { - "line": 1627, + "line": 1626, "column": 63 }, "identifierName": "len" @@ -85673,15 +85533,15 @@ }, "update": { "type": "UpdateExpression", - "start": 56253, - "end": 56256, + "start": 56193, + "end": 56196, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 65 }, "end": { - "line": 1627, + "line": 1626, "column": 68 } }, @@ -85689,15 +85549,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 56253, - "end": 56254, + "start": 56193, + "end": 56194, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 65 }, "end": { - "line": 1627, + "line": 1626, "column": 66 }, "identifierName": "i" @@ -85707,59 +85567,59 @@ }, "body": { "type": "BlockStatement", - "start": 56258, - "end": 56412, + "start": 56198, + "end": 56352, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 70 }, "end": { - "line": 1632, + "line": 1631, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 56272, - "end": 56312, + "start": 56212, + "end": 56252, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 12 }, "end": { - "line": 1628, + "line": 1627, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 56278, - "end": 56311, + "start": 56218, + "end": 56251, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 18 }, "end": { - "line": 1628, + "line": 1627, "column": 51 } }, "id": { "type": "Identifier", - "start": 56278, - "end": 56288, + "start": 56218, + "end": 56228, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 18 }, "end": { - "line": 1628, + "line": 1627, "column": 28 }, "identifierName": "controller" @@ -85768,58 +85628,58 @@ }, "init": { "type": "MemberExpression", - "start": 56291, - "end": 56311, + "start": 56231, + "end": 56251, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 31 }, "end": { - "line": 1628, + "line": 1627, "column": 51 } }, "object": { "type": "MemberExpression", - "start": 56291, - "end": 56308, + "start": 56231, + "end": 56248, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 31 }, "end": { - "line": 1628, + "line": 1627, "column": 48 } }, "object": { "type": "ThisExpression", - "start": 56291, - "end": 56295, + "start": 56231, + "end": 56235, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 31 }, "end": { - "line": 1628, + "line": 1627, "column": 35 } } }, "property": { "type": "Identifier", - "start": 56296, - "end": 56308, + "start": 56236, + "end": 56248, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 36 }, "end": { - "line": 1628, + "line": 1627, "column": 48 }, "identifierName": "_controllers" @@ -85830,15 +85690,15 @@ }, "property": { "type": "Identifier", - "start": 56309, - "end": 56310, + "start": 56249, + "end": 56250, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 49 }, "end": { - "line": 1628, + "line": 1627, "column": 50 }, "identifierName": "i" @@ -85853,43 +85713,43 @@ }, { "type": "IfStatement", - "start": 56325, - "end": 56402, + "start": 56265, + "end": 56342, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 12 }, "end": { - "line": 1631, + "line": 1630, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 56329, - "end": 56347, + "start": 56269, + "end": 56287, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 16 }, "end": { - "line": 1629, + "line": 1628, "column": 34 } }, "object": { "type": "Identifier", - "start": 56329, - "end": 56339, + "start": 56269, + "end": 56279, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 16 }, "end": { - "line": 1629, + "line": 1628, "column": 26 }, "identifierName": "controller" @@ -85898,15 +85758,15 @@ }, "property": { "type": "Identifier", - "start": 56340, - "end": 56347, + "start": 56280, + "end": 56287, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 27 }, "end": { - "line": 1629, + "line": 1628, "column": 34 }, "identifierName": "destroy" @@ -85917,72 +85777,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 56349, - "end": 56402, + "start": 56289, + "end": 56342, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 36 }, "end": { - "line": 1631, + "line": 1630, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 56367, - "end": 56388, + "start": 56307, + "end": 56328, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 16 }, "end": { - "line": 1630, + "line": 1629, "column": 37 } }, "expression": { "type": "CallExpression", - "start": 56367, - "end": 56387, + "start": 56307, + "end": 56327, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 16 }, "end": { - "line": 1630, + "line": 1629, "column": 36 } }, "callee": { "type": "MemberExpression", - "start": 56367, - "end": 56385, + "start": 56307, + "end": 56325, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 16 }, "end": { - "line": 1630, + "line": 1629, "column": 34 } }, "object": { "type": "Identifier", - "start": 56367, - "end": 56377, + "start": 56307, + "end": 56317, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 16 }, "end": { - "line": 1630, + "line": 1629, "column": 26 }, "identifierName": "controller" @@ -85991,15 +85851,15 @@ }, "property": { "type": "Identifier", - "start": 56378, - "end": 56385, + "start": 56318, + "end": 56325, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 27 }, "end": { - "line": 1630, + "line": 1629, "column": 34 }, "identifierName": "destroy" @@ -86551,34 +86411,18 @@ } } }, - { - "type": "CommentLine", - "value": " TODO: Is this needed?", - "start": 21952, - "end": 21976, - "loc": { - "start": { - "line": 671, - "column": 35 - }, - "end": { - "line": 671, - "column": 59 - } - } - }, { "type": "CommentLine", "value": " Updates for CameraUpdater to process on next Scene \"tick\" event", - "start": 22328, - "end": 22394, + "start": 22268, + "end": 22334, "loc": { "start": { - "line": 684, + "line": 683, "column": 8 }, "end": { - "line": 684, + "line": 683, "column": 74 } } @@ -86586,15 +86430,15 @@ { "type": "CommentLine", "value": " Controllers to assist input event handlers with controlling the Camera", - "start": 22604, - "end": 22677, + "start": 22544, + "end": 22617, "loc": { "start": { - "line": 695, + "line": 694, "column": 8 }, "end": { - "line": 695, + "line": 694, "column": 81 } } @@ -86602,15 +86446,15 @@ { "type": "CommentLine", "value": " Input event handlers", - "start": 23096, - "end": 23119, + "start": 23036, + "end": 23059, "loc": { "start": { - "line": 709, + "line": 708, "column": 8 }, "end": { - "line": 709, + "line": 708, "column": 31 } } @@ -86618,15 +86462,15 @@ { "type": "CommentLine", "value": " Applies scheduled updates to the Camera on each Scene \"tick\" event", - "start": 23973, - "end": 24042, + "start": 23913, + "end": 23982, "loc": { "start": { - "line": 721, + "line": 720, "column": 8 }, "end": { - "line": 721, + "line": 720, "column": 77 } } @@ -86634,15 +86478,15 @@ { "type": "CommentLine", "value": " Set initial user configurations", - "start": 24177, - "end": 24211, + "start": 24117, + "end": 24151, "loc": { "start": { - "line": 725, + "line": 724, "column": 8 }, "end": { - "line": 725, + "line": 724, "column": 42 } } @@ -86650,15 +86494,15 @@ { "type": "CommentLine", "value": " Deprecated", - "start": 24473, - "end": 24486, + "start": 24413, + "end": 24426, "loc": { "start": { - "line": 733, + "line": 732, "column": 54 }, "end": { - "line": 733, + "line": 732, "column": 67 } } @@ -86666,15 +86510,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 25417, - "end": 25756, + "start": 25357, + "end": 25696, "loc": { "start": { - "line": 756, + "line": 755, "column": 4 }, "end": { - "line": 763, + "line": 762, "column": 7 } } @@ -86682,15 +86526,15 @@ { "type": "CommentLine", "value": " Intentional fall-through to \"qwerty\"", - "start": 26104, - "end": 26143, + "start": 26044, + "end": 26083, "loc": { "start": { - "line": 774, + "line": 773, "column": 16 }, "end": { - "line": 774, + "line": 773, "column": 55 } } @@ -86698,15 +86542,15 @@ { "type": "CommentBlock", "value": "*\n * Gets custom mappings of keys to {@link CameraControl} actions.\n *\n * @returns {{Number:Number}} Current key mappings.\n ", - "start": 28890, - "end": 29034, + "start": 28830, + "end": 28974, "loc": { "start": { - "line": 825, + "line": 824, "column": 4 }, "end": { - "line": 829, + "line": 828, "column": 7 } } @@ -86714,15 +86558,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true if any keys configured for the given action are down.\n * @param action\n * @param keyDownMap\n * @private\n ", - "start": 29094, - "end": 29241, + "start": 29034, + "end": 29181, "loc": { "start": { - "line": 834, + "line": 833, "column": 4 }, "end": { - "line": 839, + "line": 838, "column": 7 } } @@ -86730,15 +86574,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 29689, - "end": 29943, + "start": 29629, + "end": 29883, "loc": { "start": { - "line": 857, + "line": 856, "column": 4 }, "end": { - "line": 863, + "line": 862, "column": 7 } } @@ -86746,15 +86590,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30055, - "end": 30340, + "start": 29995, + "end": 30280, "loc": { "start": { - "line": 868, + "line": 867, "column": 4 }, "end": { - "line": 876, + "line": 875, "column": 7 } } @@ -86762,15 +86606,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30424, - "end": 30709, + "start": 30364, + "end": 30649, "loc": { "start": { - "line": 881, + "line": 880, "column": 4 }, "end": { - "line": 889, + "line": 888, "column": 7 } } @@ -86778,15 +86622,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30777, - "end": 31205, + "start": 30717, + "end": 31145, "loc": { "start": { - "line": 894, + "line": 893, "column": 4 }, "end": { - "line": 906, + "line": 905, "column": 7 } } @@ -86794,15 +86638,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the current navigation mode.\n *\n * @returns {String} The navigation mode: \"orbit\", \"firstPerson\" or \"planView\".\n ", - "start": 31931, - "end": 32074, + "start": 31871, + "end": 32014, "loc": { "start": { - "line": 922, + "line": 921, "column": 4 }, "end": { - "line": 926, + "line": 925, "column": 7 } } @@ -86810,15 +86654,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 32144, - "end": 32555, + "start": 32084, + "end": 32495, "loc": { "start": { - "line": 931, + "line": 930, "column": 4 }, "end": { - "line": 940, + "line": 939, "column": 7 } } @@ -86826,15 +86670,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 33090, - "end": 33514, + "start": 33030, + "end": 33454, "loc": { "start": { - "line": 961, + "line": 960, "column": 4 }, "end": { - "line": 970, + "line": 969, "column": 7 } } @@ -86842,15 +86686,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 33598, - "end": 34236, + "start": 33538, + "end": 34176, "loc": { "start": { - "line": 975, + "line": 974, "column": 4 }, "end": { - "line": 989, + "line": 988, "column": 7 } } @@ -86858,15 +86702,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 34336, - "end": 34965, + "start": 34276, + "end": 34905, "loc": { "start": { - "line": 994, + "line": 993, "column": 4 }, "end": { - "line": 1008, + "line": 1007, "column": 7 } } @@ -86874,15 +86718,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 35047, - "end": 35280, + "start": 34987, + "end": 35220, "loc": { "start": { - "line": 1013, + "line": 1012, "column": 4 }, "end": { - "line": 1019, + "line": 1018, "column": 7 } } @@ -86890,15 +86734,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 35386, - "end": 35622, + "start": 35326, + "end": 35562, "loc": { "start": { - "line": 1024, + "line": 1023, "column": 4 }, "end": { - "line": 1030, + "line": 1029, "column": 7 } } @@ -86906,15 +86750,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n ", - "start": 35719, - "end": 35834, + "start": 35659, + "end": 35774, "loc": { "start": { - "line": 1035, + "line": 1034, "column": 4 }, "end": { - "line": 1038, + "line": 1037, "column": 7 } } @@ -86922,15 +86766,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n ", - "start": 36004, - "end": 36123, + "start": 35944, + "end": 36063, "loc": { "start": { - "line": 1044, + "line": 1043, "column": 4 }, "end": { - "line": 1047, + "line": 1046, "column": 7 } } @@ -86938,15 +86782,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n ", - "start": 36287, - "end": 36402, + "start": 36227, + "end": 36342, "loc": { "start": { - "line": 1053, + "line": 1052, "column": 4 }, "end": { - "line": 1056, + "line": 1055, "column": 7 } } @@ -86954,15 +86798,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n ", - "start": 36532, - "end": 36651, + "start": 36472, + "end": 36591, "loc": { "start": { - "line": 1061, + "line": 1060, "column": 4 }, "end": { - "line": 1064, + "line": 1063, "column": 7 } } @@ -86970,15 +86814,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 36798, - "end": 37147, + "start": 36738, + "end": 37087, "loc": { "start": { - "line": 1070, + "line": 1069, "column": 4 }, "end": { - "line": 1081, + "line": 1080, "column": 7 } } @@ -86986,15 +86830,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 37513, - "end": 37866, + "start": 37453, + "end": 37806, "loc": { "start": { - "line": 1092, + "line": 1091, "column": 4 }, "end": { - "line": 1103, + "line": 1102, "column": 7 } } @@ -87002,15 +86846,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 38016, - "end": 38486, + "start": 37956, + "end": 38426, "loc": { "start": { - "line": 1109, + "line": 1108, "column": 4 }, "end": { - "line": 1120, + "line": 1119, "column": 7 } } @@ -87018,15 +86862,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 38861, - "end": 39335, + "start": 38801, + "end": 39275, "loc": { "start": { - "line": 1131, + "line": 1130, "column": 4 }, "end": { - "line": 1142, + "line": 1141, "column": 7 } } @@ -87034,15 +86878,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 39494, - "end": 39930, + "start": 39434, + "end": 39870, "loc": { "start": { - "line": 1148, + "line": 1147, "column": 4 }, "end": { - "line": 1158, + "line": 1157, "column": 7 } } @@ -87050,15 +86894,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40028, - "end": 40459, + "start": 39968, + "end": 40399, "loc": { "start": { - "line": 1163, + "line": 1162, "column": 4 }, "end": { - "line": 1173, + "line": 1172, "column": 7 } } @@ -87066,15 +86910,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40549, - "end": 40792, + "start": 40489, + "end": 40732, "loc": { "start": { - "line": 1178, + "line": 1177, "column": 4 }, "end": { - "line": 1184, + "line": 1183, "column": 7 } } @@ -87082,15 +86926,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40894, - "end": 41143, + "start": 40834, + "end": 41083, "loc": { "start": { - "line": 1189, + "line": 1188, "column": 4 }, "end": { - "line": 1195, + "line": 1194, "column": 7 } } @@ -87098,15 +86942,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 41229, - "end": 41466, + "start": 41169, + "end": 41406, "loc": { "start": { - "line": 1200, + "line": 1199, "column": 4 }, "end": { - "line": 1206, + "line": 1205, "column": 7 } } @@ -87114,15 +86958,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 41564, - "end": 41766, + "start": 41504, + "end": 41706, "loc": { "start": { - "line": 1211, + "line": 1210, "column": 4 }, "end": { - "line": 1217, + "line": 1216, "column": 7 } } @@ -87130,15 +86974,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 41848, - "end": 42678, + "start": 41788, + "end": 42618, "loc": { "start": { - "line": 1222, + "line": 1221, "column": 4 }, "end": { - "line": 1237, + "line": 1236, "column": 7 } } @@ -87146,15 +86990,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 42858, - "end": 43113, + "start": 42798, + "end": 43053, "loc": { "start": { - "line": 1242, + "line": 1241, "column": 4 }, "end": { - "line": 1250, + "line": 1249, "column": 7 } } @@ -87162,15 +87006,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 43199, - "end": 43987, + "start": 43139, + "end": 43927, "loc": { "start": { - "line": 1255, + "line": 1254, "column": 4 }, "end": { - "line": 1269, + "line": 1268, "column": 7 } } @@ -87178,15 +87022,15 @@ { "type": "CommentBlock", "value": "*\n * Sets how fast the camera pans on touch panning\n *\n * @param {Number} touchPanRate The new touch pan rate.\n ", - "start": 44168, - "end": 44300, + "start": 44108, + "end": 44240, "loc": { "start": { - "line": 1275, + "line": 1274, "column": 4 }, "end": { - "line": 1279, + "line": 1278, "column": 7 } } @@ -87194,15 +87038,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44462, - "end": 44633, + "start": 44402, + "end": 44573, "loc": { "start": { - "line": 1284, + "line": 1283, "column": 4 }, "end": { - "line": 1290, + "line": 1289, "column": 7 } } @@ -87210,15 +87054,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44713, - "end": 44903, + "start": 44653, + "end": 44843, "loc": { "start": { - "line": 1295, + "line": 1294, "column": 4 }, "end": { - "line": 1301, + "line": 1300, "column": 7 } } @@ -87226,15 +87070,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44989, - "end": 45415, + "start": 44929, + "end": 45355, "loc": { "start": { - "line": 1306, + "line": 1305, "column": 4 }, "end": { - "line": 1314, + "line": 1313, "column": 7 } } @@ -87242,15 +87086,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 45626, - "end": 45839, + "start": 45566, + "end": 45779, "loc": { "start": { - "line": 1319, + "line": 1318, "column": 4 }, "end": { - "line": 1325, + "line": 1324, "column": 7 } } @@ -87258,15 +87102,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 45935, - "end": 46751, + "start": 45875, + "end": 46691, "loc": { "start": { - "line": 1330, + "line": 1329, "column": 4 }, "end": { - "line": 1345, + "line": 1344, "column": 7 } } @@ -87274,15 +87118,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the current drag rotation rate.\n *\n * Default is ````360.0````.\n *\n * @returns {Number} The current drag rotation rate.\n ", - "start": 46939, - "end": 47098, + "start": 46879, + "end": 47038, "loc": { "start": { - "line": 1350, + "line": 1349, "column": 4 }, "end": { - "line": 1356, + "line": 1355, "column": 7 } } @@ -87290,15 +87134,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 47186, - "end": 47523, + "start": 47126, + "end": 47463, "loc": { "start": { - "line": 1361, + "line": 1360, "column": 4 }, "end": { - "line": 1368, + "line": 1367, "column": 7 } } @@ -87306,15 +87150,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 47716, - "end": 47911, + "start": 47656, + "end": 47851, "loc": { "start": { - "line": 1373, + "line": 1372, "column": 4 }, "end": { - "line": 1379, + "line": 1378, "column": 7 } } @@ -87322,15 +87166,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48001, - "end": 48185, + "start": 47941, + "end": 48125, "loc": { "start": { - "line": 1384, + "line": 1383, "column": 4 }, "end": { - "line": 1390, + "line": 1389, "column": 7 } } @@ -87338,15 +87182,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48359, - "end": 48547, + "start": 48299, + "end": 48487, "loc": { "start": { - "line": 1395, + "line": 1394, "column": 4 }, "end": { - "line": 1401, + "line": 1400, "column": 7 } } @@ -87354,15 +87198,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48631, - "end": 48963, + "start": 48571, + "end": 48903, "loc": { "start": { - "line": 1406, + "line": 1405, "column": 4 }, "end": { - "line": 1413, + "line": 1412, "column": 7 } } @@ -87370,15 +87214,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 49169, - "end": 49381, + "start": 49109, + "end": 49321, "loc": { "start": { - "line": 1418, + "line": 1417, "column": 4 }, "end": { - "line": 1424, + "line": 1423, "column": 7 } } @@ -87386,15 +87230,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 49475, - "end": 50326, + "start": 49415, + "end": 50266, "loc": { "start": { - "line": 1429, + "line": 1428, "column": 4 }, "end": { - "line": 1445, + "line": 1444, "column": 7 } } @@ -87402,15 +87246,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the dolly inertia factor.\n *\n * Default is ````0````.\n *\n * @returns {Number} The current dolly inertia factor.\n ", - "start": 50486, - "end": 50637, + "start": 50426, + "end": 50577, "loc": { "start": { - "line": 1450, + "line": 1449, "column": 4 }, "end": { - "line": 1456, + "line": 1455, "column": 7 } } @@ -87418,15 +87262,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 50717, - "end": 50974, + "start": 50657, + "end": 50914, "loc": { "start": { - "line": 1461, + "line": 1460, "column": 4 }, "end": { - "line": 1467, + "line": 1466, "column": 7 } } @@ -87434,15 +87278,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 51203, - "end": 51446, + "start": 51143, + "end": 51386, "loc": { "start": { - "line": 1472, + "line": 1471, "column": 4 }, "end": { - "line": 1478, + "line": 1477, "column": 7 } } @@ -87450,15 +87294,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @param {Number} dollyMinSpeed New dolly minimum speed.\n ", - "start": 51548, - "end": 51704, + "start": 51488, + "end": 51644, "loc": { "start": { - "line": 1483, + "line": 1482, "column": 4 }, "end": { - "line": 1489, + "line": 1488, "column": 7 } } @@ -87466,15 +87310,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @returns {Number} The current minimum dolly speed.\n ", - "start": 51873, - "end": 52025, + "start": 51813, + "end": 51965, "loc": { "start": { - "line": 1494, + "line": 1493, "column": 4 }, "end": { - "line": 1500, + "line": 1499, "column": 7 } } @@ -87482,15 +87326,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 52107, - "end": 52946, + "start": 52047, + "end": 52886, "loc": { "start": { - "line": 1505, + "line": 1504, "column": 4 }, "end": { - "line": 1521, + "line": 1520, "column": 7 } } @@ -87498,15 +87342,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the pan inertia factor.\n *\n * Default is ````0.5````.\n *\n * @returns {Number} The current pan inertia factor.\n ", - "start": 53096, - "end": 53245, + "start": 53036, + "end": 53185, "loc": { "start": { - "line": 1526, + "line": 1525, "column": 4 }, "end": { - "line": 1532, + "line": 1531, "column": 7 } } @@ -87514,15 +87358,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 53321, - "end": 53555, + "start": 53261, + "end": 53495, "loc": { "start": { - "line": 1537, + "line": 1536, "column": 4 }, "end": { - "line": 1547, + "line": 1546, "column": 7 } } @@ -87530,15 +87374,15 @@ { "type": "CommentLine", "value": " this.warn(\"keyboardLayout property is deprecated - use keyMap property instead\");", - "start": 53596, - "end": 53680, + "start": 53536, + "end": 53620, "loc": { "start": { - "line": 1549, + "line": 1548, "column": 8 }, "end": { - "line": 1549, + "line": 1548, "column": 92 } } @@ -87546,15 +87390,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 54010, - "end": 54240, + "start": 53950, + "end": 54180, "loc": { "start": { - "line": 1559, + "line": 1558, "column": 4 }, "end": { - "line": 1569, + "line": 1568, "column": 7 } } @@ -87562,15 +87406,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 54324, - "end": 54916, + "start": 54264, + "end": 54856, "loc": { "start": { - "line": 1574, + "line": 1573, "column": 4 }, "end": { - "line": 1585, + "line": 1584, "column": 7 } } @@ -87578,15 +87422,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 55014, - "end": 55614, + "start": 54954, + "end": 55554, "loc": { "start": { - "line": 1590, + "line": 1589, "column": 4 }, "end": { - "line": 1601, + "line": 1600, "column": 7 } } @@ -87594,15 +87438,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this ````CameraControl````.\n * @private\n ", - "start": 55690, - "end": 55761, + "start": 55630, + "end": 55701, "loc": { "start": { - "line": 1606, + "line": 1605, "column": 4 }, "end": { - "line": 1609, + "line": 1608, "column": 7 } } @@ -98537,9 +98381,9 @@ "postfix": false, "binop": null }, - "value": "inputFromMouse", + "value": "followPointerDirty", "start": 21929, - "end": 21943, + "end": 21947, "loc": { "start": { "line": 671, @@ -98547,7 +98391,7 @@ }, "end": { "line": 671, - "column": 26 + "column": 30 } } }, @@ -98564,23 +98408,23 @@ "binop": null, "updateContext": null }, - "start": 21943, - "end": 21944, + "start": 21947, + "end": 21948, "loc": { "start": { "line": 671, - "column": 26 + "column": 30 }, "end": { "line": 671, - "column": 27 + "column": 31 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -98591,17 +98435,17 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 21945, - "end": 21950, + "value": "true", + "start": 21949, + "end": 21953, "loc": { "start": { "line": 671, - "column": 28 + "column": 32 }, "end": { "line": 671, - "column": 33 + "column": 36 } } }, @@ -98618,32 +98462,16 @@ "binop": null, "updateContext": null }, - "start": 21950, - "end": 21951, + "start": 21953, + "end": 21954, "loc": { "start": { "line": 671, - "column": 33 - }, - "end": { - "line": 671, - "column": 34 - } - } - }, - { - "type": "CommentLine", - "value": " TODO: Is this needed?", - "start": 21952, - "end": 21976, - "loc": { - "start": { - "line": 671, - "column": 35 + "column": 36 }, "end": { "line": 671, - "column": 59 + "column": 37 } } }, @@ -98659,9 +98487,9 @@ "postfix": false, "binop": null }, - "value": "followPointerDirty", - "start": 21989, - "end": 22007, + "value": "mouseDownClientX", + "start": 21967, + "end": 21983, "loc": { "start": { "line": 672, @@ -98669,7 +98497,7 @@ }, "end": { "line": 672, - "column": 30 + "column": 28 } } }, @@ -98686,23 +98514,22 @@ "binop": null, "updateContext": null }, - "start": 22007, - "end": 22008, + "start": 21983, + "end": 21984, "loc": { "start": { "line": 672, - "column": 30 + "column": 28 }, "end": { "line": 672, - "column": 31 + "column": 29 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -98713,17 +98540,17 @@ "binop": null, "updateContext": null }, - "value": "true", - "start": 22009, - "end": 22013, + "value": 0, + "start": 21985, + "end": 21986, "loc": { "start": { "line": 672, - "column": 32 + "column": 30 }, "end": { "line": 672, - "column": 36 + "column": 31 } } }, @@ -98740,16 +98567,16 @@ "binop": null, "updateContext": null }, - "start": 22013, - "end": 22014, + "start": 21986, + "end": 21987, "loc": { "start": { "line": 672, - "column": 36 + "column": 31 }, "end": { "line": 672, - "column": 37 + "column": 32 } } }, @@ -98765,9 +98592,9 @@ "postfix": false, "binop": null }, - "value": "mouseDownClientX", - "start": 22027, - "end": 22043, + "value": "mouseDownClientY", + "start": 22000, + "end": 22016, "loc": { "start": { "line": 673, @@ -98792,8 +98619,8 @@ "binop": null, "updateContext": null }, - "start": 22043, - "end": 22044, + "start": 22016, + "end": 22017, "loc": { "start": { "line": 673, @@ -98819,8 +98646,8 @@ "updateContext": null }, "value": 0, - "start": 22045, - "end": 22046, + "start": 22018, + "end": 22019, "loc": { "start": { "line": 673, @@ -98845,8 +98672,8 @@ "binop": null, "updateContext": null }, - "start": 22046, - "end": 22047, + "start": 22019, + "end": 22020, "loc": { "start": { "line": 673, @@ -98870,9 +98697,9 @@ "postfix": false, "binop": null }, - "value": "mouseDownClientY", - "start": 22060, - "end": 22076, + "value": "mouseDownCursorX", + "start": 22033, + "end": 22049, "loc": { "start": { "line": 674, @@ -98897,8 +98724,8 @@ "binop": null, "updateContext": null }, - "start": 22076, - "end": 22077, + "start": 22049, + "end": 22050, "loc": { "start": { "line": 674, @@ -98924,8 +98751,8 @@ "updateContext": null }, "value": 0, - "start": 22078, - "end": 22079, + "start": 22051, + "end": 22052, "loc": { "start": { "line": 674, @@ -98950,8 +98777,8 @@ "binop": null, "updateContext": null }, - "start": 22079, - "end": 22080, + "start": 22052, + "end": 22053, "loc": { "start": { "line": 674, @@ -98975,9 +98802,9 @@ "postfix": false, "binop": null }, - "value": "mouseDownCursorX", - "start": 22093, - "end": 22109, + "value": "mouseDownCursorY", + "start": 22066, + "end": 22082, "loc": { "start": { "line": 675, @@ -99002,8 +98829,8 @@ "binop": null, "updateContext": null }, - "start": 22109, - "end": 22110, + "start": 22082, + "end": 22083, "loc": { "start": { "line": 675, @@ -99029,8 +98856,8 @@ "updateContext": null }, "value": 0, - "start": 22111, - "end": 22112, + "start": 22084, + "end": 22085, "loc": { "start": { "line": 675, @@ -99055,8 +98882,8 @@ "binop": null, "updateContext": null }, - "start": 22112, - "end": 22113, + "start": 22085, + "end": 22086, "loc": { "start": { "line": 675, @@ -99080,9 +98907,9 @@ "postfix": false, "binop": null }, - "value": "mouseDownCursorY", - "start": 22126, - "end": 22142, + "value": "touchStartTime", + "start": 22099, + "end": 22113, "loc": { "start": { "line": 676, @@ -99090,111 +98917,6 @@ }, "end": { "line": 676, - "column": 28 - } - } - }, - { - "type": { - "label": ":", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 22142, - "end": 22143, - "loc": { - "start": { - "line": 676, - "column": 28 - }, - "end": { - "line": 676, - "column": 29 - } - } - }, - { - "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": 0, - "start": 22144, - "end": 22145, - "loc": { - "start": { - "line": 676, - "column": 30 - }, - "end": { - "line": 676, - "column": 31 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 22145, - "end": 22146, - "loc": { - "start": { - "line": 676, - "column": 31 - }, - "end": { - "line": 676, - "column": 32 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "touchStartTime", - "start": 22159, - "end": 22173, - "loc": { - "start": { - "line": 677, - "column": 12 - }, - "end": { - "line": 677, "column": 26 } } @@ -99212,15 +98934,15 @@ "binop": null, "updateContext": null }, - "start": 22173, - "end": 22174, + "start": 22113, + "end": 22114, "loc": { "start": { - "line": 677, + "line": 676, "column": 26 }, "end": { - "line": 677, + "line": 676, "column": 27 } } @@ -99240,15 +98962,15 @@ "updateContext": null }, "value": "null", - "start": 22175, - "end": 22179, + "start": 22115, + "end": 22119, "loc": { "start": { - "line": 677, + "line": 676, "column": 28 }, "end": { - "line": 677, + "line": 676, "column": 32 } } @@ -99266,15 +98988,15 @@ "binop": null, "updateContext": null }, - "start": 22179, - "end": 22180, + "start": 22119, + "end": 22120, "loc": { "start": { - "line": 677, + "line": 676, "column": 32 }, "end": { - "line": 677, + "line": 676, "column": 33 } } @@ -99292,15 +99014,15 @@ "binop": null }, "value": "activeTouches", - "start": 22193, - "end": 22206, + "start": 22133, + "end": 22146, "loc": { "start": { - "line": 678, + "line": 677, "column": 12 }, "end": { - "line": 678, + "line": 677, "column": 25 } } @@ -99318,15 +99040,15 @@ "binop": null, "updateContext": null }, - "start": 22206, - "end": 22207, + "start": 22146, + "end": 22147, "loc": { "start": { - "line": 678, + "line": 677, "column": 25 }, "end": { - "line": 678, + "line": 677, "column": 26 } } @@ -99344,15 +99066,15 @@ "binop": null, "updateContext": null }, - "start": 22208, - "end": 22209, + "start": 22148, + "end": 22149, "loc": { "start": { - "line": 678, + "line": 677, "column": 27 }, "end": { - "line": 678, + "line": 677, "column": 28 } } @@ -99370,15 +99092,15 @@ "binop": null, "updateContext": null }, - "start": 22209, - "end": 22210, + "start": 22149, + "end": 22150, "loc": { "start": { - "line": 678, + "line": 677, "column": 28 }, "end": { - "line": 678, + "line": 677, "column": 29 } } @@ -99396,15 +99118,15 @@ "binop": null, "updateContext": null }, - "start": 22210, - "end": 22211, + "start": 22150, + "end": 22151, "loc": { "start": { - "line": 678, + "line": 677, "column": 29 }, "end": { - "line": 678, + "line": 677, "column": 30 } } @@ -99422,15 +99144,15 @@ "binop": null }, "value": "tapStartPos", - "start": 22224, - "end": 22235, + "start": 22164, + "end": 22175, "loc": { "start": { - "line": 679, + "line": 678, "column": 12 }, "end": { - "line": 679, + "line": 678, "column": 23 } } @@ -99448,15 +99170,15 @@ "binop": null, "updateContext": null }, - "start": 22235, - "end": 22236, + "start": 22175, + "end": 22176, "loc": { "start": { - "line": 679, + "line": 678, "column": 23 }, "end": { - "line": 679, + "line": 678, "column": 24 } } @@ -99474,15 +99196,15 @@ "binop": null }, "value": "math", - "start": 22237, - "end": 22241, + "start": 22177, + "end": 22181, "loc": { "start": { - "line": 679, + "line": 678, "column": 25 }, "end": { - "line": 679, + "line": 678, "column": 29 } } @@ -99500,15 +99222,15 @@ "binop": null, "updateContext": null }, - "start": 22241, - "end": 22242, + "start": 22181, + "end": 22182, "loc": { "start": { - "line": 679, + "line": 678, "column": 29 }, "end": { - "line": 679, + "line": 678, "column": 30 } } @@ -99526,15 +99248,15 @@ "binop": null }, "value": "vec2", - "start": 22242, - "end": 22246, + "start": 22182, + "end": 22186, "loc": { "start": { - "line": 679, + "line": 678, "column": 30 }, "end": { - "line": 679, + "line": 678, "column": 34 } } @@ -99551,15 +99273,15 @@ "postfix": false, "binop": null }, - "start": 22246, - "end": 22247, + "start": 22186, + "end": 22187, "loc": { "start": { - "line": 679, + "line": 678, "column": 34 }, "end": { - "line": 679, + "line": 678, "column": 35 } } @@ -99576,15 +99298,15 @@ "postfix": false, "binop": null }, - "start": 22247, - "end": 22248, + "start": 22187, + "end": 22188, "loc": { "start": { - "line": 679, + "line": 678, "column": 35 }, "end": { - "line": 679, + "line": 678, "column": 36 } } @@ -99602,15 +99324,15 @@ "binop": null, "updateContext": null }, - "start": 22248, - "end": 22249, + "start": 22188, + "end": 22189, "loc": { "start": { - "line": 679, + "line": 678, "column": 36 }, "end": { - "line": 679, + "line": 678, "column": 37 } } @@ -99628,15 +99350,15 @@ "binop": null }, "value": "tapStartTime", - "start": 22262, - "end": 22274, + "start": 22202, + "end": 22214, "loc": { "start": { - "line": 680, + "line": 679, "column": 12 }, "end": { - "line": 680, + "line": 679, "column": 24 } } @@ -99654,15 +99376,15 @@ "binop": null, "updateContext": null }, - "start": 22274, - "end": 22275, + "start": 22214, + "end": 22215, "loc": { "start": { - "line": 680, + "line": 679, "column": 24 }, "end": { - "line": 680, + "line": 679, "column": 25 } } @@ -99681,15 +99403,15 @@ "updateContext": null }, "value": "-", - "start": 22276, - "end": 22277, + "start": 22216, + "end": 22217, "loc": { "start": { - "line": 680, + "line": 679, "column": 26 }, "end": { - "line": 680, + "line": 679, "column": 27 } } @@ -99708,15 +99430,15 @@ "updateContext": null }, "value": 1, - "start": 22277, - "end": 22278, + "start": 22217, + "end": 22218, "loc": { "start": { - "line": 680, + "line": 679, "column": 27 }, "end": { - "line": 680, + "line": 679, "column": 28 } } @@ -99734,15 +99456,15 @@ "binop": null, "updateContext": null }, - "start": 22278, - "end": 22279, + "start": 22218, + "end": 22219, "loc": { "start": { - "line": 680, + "line": 679, "column": 28 }, "end": { - "line": 680, + "line": 679, "column": 29 } } @@ -99760,15 +99482,15 @@ "binop": null }, "value": "lastTapTime", - "start": 22292, - "end": 22303, + "start": 22232, + "end": 22243, "loc": { "start": { - "line": 681, + "line": 680, "column": 12 }, "end": { - "line": 681, + "line": 680, "column": 23 } } @@ -99786,15 +99508,15 @@ "binop": null, "updateContext": null }, - "start": 22303, - "end": 22304, + "start": 22243, + "end": 22244, "loc": { "start": { - "line": 681, + "line": 680, "column": 23 }, "end": { - "line": 681, + "line": 680, "column": 24 } } @@ -99813,15 +99535,15 @@ "updateContext": null }, "value": "-", - "start": 22305, - "end": 22306, + "start": 22245, + "end": 22246, "loc": { "start": { - "line": 681, + "line": 680, "column": 25 }, "end": { - "line": 681, + "line": 680, "column": 26 } } @@ -99840,15 +99562,15 @@ "updateContext": null }, "value": 1, - "start": 22306, - "end": 22307, + "start": 22246, + "end": 22247, "loc": { "start": { - "line": 681, + "line": 680, "column": 26 }, "end": { - "line": 681, + "line": 680, "column": 27 } } @@ -99865,15 +99587,15 @@ "postfix": false, "binop": null }, - "start": 22316, - "end": 22317, + "start": 22256, + "end": 22257, "loc": { "start": { - "line": 682, + "line": 681, "column": 8 }, "end": { - "line": 682, + "line": 681, "column": 9 } } @@ -99891,15 +99613,15 @@ "binop": null, "updateContext": null }, - "start": 22317, - "end": 22318, + "start": 22257, + "end": 22258, "loc": { "start": { - "line": 682, + "line": 681, "column": 9 }, "end": { - "line": 682, + "line": 681, "column": 10 } } @@ -99907,15 +99629,15 @@ { "type": "CommentLine", "value": " Updates for CameraUpdater to process on next Scene \"tick\" event", - "start": 22328, - "end": 22394, + "start": 22268, + "end": 22334, "loc": { "start": { - "line": 684, + "line": 683, "column": 8 }, "end": { - "line": 684, + "line": 683, "column": 74 } } @@ -99935,15 +99657,15 @@ "updateContext": null }, "value": "this", - "start": 22404, - "end": 22408, + "start": 22344, + "end": 22348, "loc": { "start": { - "line": 686, + "line": 685, "column": 8 }, "end": { - "line": 686, + "line": 685, "column": 12 } } @@ -99961,15 +99683,15 @@ "binop": null, "updateContext": null }, - "start": 22408, - "end": 22409, + "start": 22348, + "end": 22349, "loc": { "start": { - "line": 686, + "line": 685, "column": 12 }, "end": { - "line": 686, + "line": 685, "column": 13 } } @@ -99987,15 +99709,15 @@ "binop": null }, "value": "_updates", - "start": 22409, - "end": 22417, + "start": 22349, + "end": 22357, "loc": { "start": { - "line": 686, + "line": 685, "column": 13 }, "end": { - "line": 686, + "line": 685, "column": 21 } } @@ -100014,15 +99736,15 @@ "updateContext": null }, "value": "=", - "start": 22418, - "end": 22419, + "start": 22358, + "end": 22359, "loc": { "start": { - "line": 686, + "line": 685, "column": 22 }, "end": { - "line": 686, + "line": 685, "column": 23 } } @@ -100039,15 +99761,15 @@ "postfix": false, "binop": null }, - "start": 22420, - "end": 22421, + "start": 22360, + "end": 22361, "loc": { "start": { - "line": 686, + "line": 685, "column": 24 }, "end": { - "line": 686, + "line": 685, "column": 25 } } @@ -100065,15 +99787,15 @@ "binop": null }, "value": "rotateDeltaX", - "start": 22434, - "end": 22446, + "start": 22374, + "end": 22386, "loc": { "start": { - "line": 687, + "line": 686, "column": 12 }, "end": { - "line": 687, + "line": 686, "column": 24 } } @@ -100091,15 +99813,15 @@ "binop": null, "updateContext": null }, - "start": 22446, - "end": 22447, + "start": 22386, + "end": 22387, "loc": { "start": { - "line": 687, + "line": 686, "column": 24 }, "end": { - "line": 687, + "line": 686, "column": 25 } } @@ -100118,15 +99840,15 @@ "updateContext": null }, "value": 0, - "start": 22448, - "end": 22449, + "start": 22388, + "end": 22389, "loc": { "start": { - "line": 687, + "line": 686, "column": 26 }, "end": { - "line": 687, + "line": 686, "column": 27 } } @@ -100144,15 +99866,15 @@ "binop": null, "updateContext": null }, - "start": 22449, - "end": 22450, + "start": 22389, + "end": 22390, "loc": { "start": { - "line": 687, + "line": 686, "column": 27 }, "end": { - "line": 687, + "line": 686, "column": 28 } } @@ -100170,15 +99892,15 @@ "binop": null }, "value": "rotateDeltaY", - "start": 22463, - "end": 22475, + "start": 22403, + "end": 22415, "loc": { "start": { - "line": 688, + "line": 687, "column": 12 }, "end": { - "line": 688, + "line": 687, "column": 24 } } @@ -100196,15 +99918,15 @@ "binop": null, "updateContext": null }, - "start": 22475, - "end": 22476, + "start": 22415, + "end": 22416, "loc": { "start": { - "line": 688, + "line": 687, "column": 24 }, "end": { - "line": 688, + "line": 687, "column": 25 } } @@ -100223,15 +99945,15 @@ "updateContext": null }, "value": 0, - "start": 22477, - "end": 22478, + "start": 22417, + "end": 22418, "loc": { "start": { - "line": 688, + "line": 687, "column": 26 }, "end": { - "line": 688, + "line": 687, "column": 27 } } @@ -100249,15 +99971,15 @@ "binop": null, "updateContext": null }, - "start": 22478, - "end": 22479, + "start": 22418, + "end": 22419, "loc": { "start": { - "line": 688, + "line": 687, "column": 27 }, "end": { - "line": 688, + "line": 687, "column": 28 } } @@ -100275,15 +99997,15 @@ "binop": null }, "value": "panDeltaX", - "start": 22492, - "end": 22501, + "start": 22432, + "end": 22441, "loc": { "start": { - "line": 689, + "line": 688, "column": 12 }, "end": { - "line": 689, + "line": 688, "column": 21 } } @@ -100301,15 +100023,15 @@ "binop": null, "updateContext": null }, - "start": 22501, - "end": 22502, + "start": 22441, + "end": 22442, "loc": { "start": { - "line": 689, + "line": 688, "column": 21 }, "end": { - "line": 689, + "line": 688, "column": 22 } } @@ -100328,15 +100050,15 @@ "updateContext": null }, "value": 0, - "start": 22503, - "end": 22504, + "start": 22443, + "end": 22444, "loc": { "start": { - "line": 689, + "line": 688, "column": 23 }, "end": { - "line": 689, + "line": 688, "column": 24 } } @@ -100354,15 +100076,15 @@ "binop": null, "updateContext": null }, - "start": 22504, - "end": 22505, + "start": 22444, + "end": 22445, "loc": { "start": { - "line": 689, + "line": 688, "column": 24 }, "end": { - "line": 689, + "line": 688, "column": 25 } } @@ -100380,15 +100102,15 @@ "binop": null }, "value": "panDeltaY", - "start": 22518, - "end": 22527, + "start": 22458, + "end": 22467, "loc": { "start": { - "line": 690, + "line": 689, "column": 12 }, "end": { - "line": 690, + "line": 689, "column": 21 } } @@ -100406,15 +100128,15 @@ "binop": null, "updateContext": null }, - "start": 22527, - "end": 22528, + "start": 22467, + "end": 22468, "loc": { "start": { - "line": 690, + "line": 689, "column": 21 }, "end": { - "line": 690, + "line": 689, "column": 22 } } @@ -100433,15 +100155,15 @@ "updateContext": null }, "value": 0, - "start": 22529, - "end": 22530, + "start": 22469, + "end": 22470, "loc": { "start": { - "line": 690, + "line": 689, "column": 23 }, "end": { - "line": 690, + "line": 689, "column": 24 } } @@ -100459,15 +100181,15 @@ "binop": null, "updateContext": null }, - "start": 22530, - "end": 22531, + "start": 22470, + "end": 22471, "loc": { "start": { - "line": 690, + "line": 689, "column": 24 }, "end": { - "line": 690, + "line": 689, "column": 25 } } @@ -100485,15 +100207,15 @@ "binop": null }, "value": "panDeltaZ", - "start": 22544, - "end": 22553, + "start": 22484, + "end": 22493, "loc": { "start": { - "line": 691, + "line": 690, "column": 12 }, "end": { - "line": 691, + "line": 690, "column": 21 } } @@ -100511,15 +100233,15 @@ "binop": null, "updateContext": null }, - "start": 22553, - "end": 22554, + "start": 22493, + "end": 22494, "loc": { "start": { - "line": 691, + "line": 690, "column": 21 }, "end": { - "line": 691, + "line": 690, "column": 22 } } @@ -100538,15 +100260,15 @@ "updateContext": null }, "value": 0, - "start": 22555, - "end": 22556, + "start": 22495, + "end": 22496, "loc": { "start": { - "line": 691, + "line": 690, "column": 23 }, "end": { - "line": 691, + "line": 690, "column": 24 } } @@ -100564,15 +100286,15 @@ "binop": null, "updateContext": null }, - "start": 22556, - "end": 22557, + "start": 22496, + "end": 22497, "loc": { "start": { - "line": 691, + "line": 690, "column": 24 }, "end": { - "line": 691, + "line": 690, "column": 25 } } @@ -100590,15 +100312,15 @@ "binop": null }, "value": "dollyDelta", - "start": 22570, - "end": 22580, + "start": 22510, + "end": 22520, "loc": { "start": { - "line": 692, + "line": 691, "column": 12 }, "end": { - "line": 692, + "line": 691, "column": 22 } } @@ -100616,15 +100338,15 @@ "binop": null, "updateContext": null }, - "start": 22580, - "end": 22581, + "start": 22520, + "end": 22521, "loc": { "start": { - "line": 692, + "line": 691, "column": 22 }, "end": { - "line": 692, + "line": 691, "column": 23 } } @@ -100643,15 +100365,15 @@ "updateContext": null }, "value": 0, - "start": 22582, - "end": 22583, + "start": 22522, + "end": 22523, "loc": { "start": { - "line": 692, + "line": 691, "column": 24 }, "end": { - "line": 692, + "line": 691, "column": 25 } } @@ -100668,15 +100390,15 @@ "postfix": false, "binop": null }, - "start": 22592, - "end": 22593, + "start": 22532, + "end": 22533, "loc": { "start": { - "line": 693, + "line": 692, "column": 8 }, "end": { - "line": 693, + "line": 692, "column": 9 } } @@ -100694,15 +100416,15 @@ "binop": null, "updateContext": null }, - "start": 22593, - "end": 22594, + "start": 22533, + "end": 22534, "loc": { "start": { - "line": 693, + "line": 692, "column": 9 }, "end": { - "line": 693, + "line": 692, "column": 10 } } @@ -100710,15 +100432,15 @@ { "type": "CommentLine", "value": " Controllers to assist input event handlers with controlling the Camera", - "start": 22604, - "end": 22677, + "start": 22544, + "end": 22617, "loc": { "start": { - "line": 695, + "line": 694, "column": 8 }, "end": { - "line": 695, + "line": 694, "column": 81 } } @@ -100738,15 +100460,15 @@ "updateContext": null }, "value": "const", - "start": 22687, - "end": 22692, + "start": 22627, + "end": 22632, "loc": { "start": { - "line": 697, + "line": 696, "column": 8 }, "end": { - "line": 697, + "line": 696, "column": 13 } } @@ -100764,15 +100486,15 @@ "binop": null }, "value": "scene", - "start": 22693, - "end": 22698, + "start": 22633, + "end": 22638, "loc": { "start": { - "line": 697, + "line": 696, "column": 14 }, "end": { - "line": 697, + "line": 696, "column": 19 } } @@ -100791,15 +100513,15 @@ "updateContext": null }, "value": "=", - "start": 22699, - "end": 22700, + "start": 22639, + "end": 22640, "loc": { "start": { - "line": 697, + "line": 696, "column": 20 }, "end": { - "line": 697, + "line": 696, "column": 21 } } @@ -100819,15 +100541,15 @@ "updateContext": null }, "value": "this", - "start": 22701, - "end": 22705, + "start": 22641, + "end": 22645, "loc": { "start": { - "line": 697, + "line": 696, "column": 22 }, "end": { - "line": 697, + "line": 696, "column": 26 } } @@ -100845,15 +100567,15 @@ "binop": null, "updateContext": null }, - "start": 22705, - "end": 22706, + "start": 22645, + "end": 22646, "loc": { "start": { - "line": 697, + "line": 696, "column": 26 }, "end": { - "line": 697, + "line": 696, "column": 27 } } @@ -100871,15 +100593,15 @@ "binop": null }, "value": "scene", - "start": 22706, - "end": 22711, + "start": 22646, + "end": 22651, "loc": { "start": { - "line": 697, + "line": 696, "column": 27 }, "end": { - "line": 697, + "line": 696, "column": 32 } } @@ -100897,15 +100619,15 @@ "binop": null, "updateContext": null }, - "start": 22711, - "end": 22712, + "start": 22651, + "end": 22652, "loc": { "start": { - "line": 697, + "line": 696, "column": 32 }, "end": { - "line": 697, + "line": 696, "column": 33 } } @@ -100925,15 +100647,15 @@ "updateContext": null }, "value": "this", - "start": 22722, - "end": 22726, + "start": 22662, + "end": 22666, "loc": { "start": { - "line": 699, + "line": 698, "column": 8 }, "end": { - "line": 699, + "line": 698, "column": 12 } } @@ -100951,15 +100673,15 @@ "binop": null, "updateContext": null }, - "start": 22726, - "end": 22727, + "start": 22666, + "end": 22667, "loc": { "start": { - "line": 699, + "line": 698, "column": 12 }, "end": { - "line": 699, + "line": 698, "column": 13 } } @@ -100977,15 +100699,15 @@ "binop": null }, "value": "_controllers", - "start": 22727, - "end": 22739, + "start": 22667, + "end": 22679, "loc": { "start": { - "line": 699, + "line": 698, "column": 13 }, "end": { - "line": 699, + "line": 698, "column": 25 } } @@ -101004,15 +100726,15 @@ "updateContext": null }, "value": "=", - "start": 22740, - "end": 22741, + "start": 22680, + "end": 22681, "loc": { "start": { - "line": 699, + "line": 698, "column": 26 }, "end": { - "line": 699, + "line": 698, "column": 27 } } @@ -101029,15 +100751,15 @@ "postfix": false, "binop": null }, - "start": 22742, - "end": 22743, + "start": 22682, + "end": 22683, "loc": { "start": { - "line": 699, + "line": 698, "column": 28 }, "end": { - "line": 699, + "line": 698, "column": 29 } } @@ -101055,15 +100777,15 @@ "binop": null }, "value": "cameraControl", - "start": 22756, - "end": 22769, + "start": 22696, + "end": 22709, "loc": { "start": { - "line": 700, + "line": 699, "column": 12 }, "end": { - "line": 700, + "line": 699, "column": 25 } } @@ -101081,15 +100803,15 @@ "binop": null, "updateContext": null }, - "start": 22769, - "end": 22770, + "start": 22709, + "end": 22710, "loc": { "start": { - "line": 700, + "line": 699, "column": 25 }, "end": { - "line": 700, + "line": 699, "column": 26 } } @@ -101109,15 +100831,15 @@ "updateContext": null }, "value": "this", - "start": 22771, - "end": 22775, + "start": 22711, + "end": 22715, "loc": { "start": { - "line": 700, + "line": 699, "column": 27 }, "end": { - "line": 700, + "line": 699, "column": 31 } } @@ -101135,15 +100857,15 @@ "binop": null, "updateContext": null }, - "start": 22775, - "end": 22776, + "start": 22715, + "end": 22716, "loc": { "start": { - "line": 700, + "line": 699, "column": 31 }, "end": { - "line": 700, + "line": 699, "column": 32 } } @@ -101161,15 +100883,15 @@ "binop": null }, "value": "pickController", - "start": 22789, - "end": 22803, + "start": 22729, + "end": 22743, "loc": { "start": { - "line": 701, + "line": 700, "column": 12 }, "end": { - "line": 701, + "line": 700, "column": 26 } } @@ -101187,15 +100909,15 @@ "binop": null, "updateContext": null }, - "start": 22803, - "end": 22804, + "start": 22743, + "end": 22744, "loc": { "start": { - "line": 701, + "line": 700, "column": 26 }, "end": { - "line": 701, + "line": 700, "column": 27 } } @@ -101215,15 +100937,15 @@ "updateContext": null }, "value": "new", - "start": 22805, - "end": 22808, + "start": 22745, + "end": 22748, "loc": { "start": { - "line": 701, + "line": 700, "column": 28 }, "end": { - "line": 701, + "line": 700, "column": 31 } } @@ -101241,15 +100963,15 @@ "binop": null }, "value": "PickController", - "start": 22809, - "end": 22823, + "start": 22749, + "end": 22763, "loc": { "start": { - "line": 701, + "line": 700, "column": 32 }, "end": { - "line": 701, + "line": 700, "column": 46 } } @@ -101266,15 +100988,15 @@ "postfix": false, "binop": null }, - "start": 22823, - "end": 22824, + "start": 22763, + "end": 22764, "loc": { "start": { - "line": 701, + "line": 700, "column": 46 }, "end": { - "line": 701, + "line": 700, "column": 47 } } @@ -101294,15 +101016,15 @@ "updateContext": null }, "value": "this", - "start": 22824, - "end": 22828, + "start": 22764, + "end": 22768, "loc": { "start": { - "line": 701, + "line": 700, "column": 47 }, "end": { - "line": 701, + "line": 700, "column": 51 } } @@ -101320,15 +101042,15 @@ "binop": null, "updateContext": null }, - "start": 22828, - "end": 22829, + "start": 22768, + "end": 22769, "loc": { "start": { - "line": 701, + "line": 700, "column": 51 }, "end": { - "line": 701, + "line": 700, "column": 52 } } @@ -101348,15 +101070,15 @@ "updateContext": null }, "value": "this", - "start": 22830, - "end": 22834, + "start": 22770, + "end": 22774, "loc": { "start": { - "line": 701, + "line": 700, "column": 53 }, "end": { - "line": 701, + "line": 700, "column": 57 } } @@ -101374,15 +101096,15 @@ "binop": null, "updateContext": null }, - "start": 22834, - "end": 22835, + "start": 22774, + "end": 22775, "loc": { "start": { - "line": 701, + "line": 700, "column": 57 }, "end": { - "line": 701, + "line": 700, "column": 58 } } @@ -101400,15 +101122,15 @@ "binop": null }, "value": "_configs", - "start": 22835, - "end": 22843, + "start": 22775, + "end": 22783, "loc": { "start": { - "line": 701, + "line": 700, "column": 58 }, "end": { - "line": 701, + "line": 700, "column": 66 } } @@ -101425,15 +101147,15 @@ "postfix": false, "binop": null }, - "start": 22843, - "end": 22844, + "start": 22783, + "end": 22784, "loc": { "start": { - "line": 701, + "line": 700, "column": 66 }, "end": { - "line": 701, + "line": 700, "column": 67 } } @@ -101451,15 +101173,15 @@ "binop": null, "updateContext": null }, - "start": 22844, - "end": 22845, + "start": 22784, + "end": 22785, "loc": { "start": { - "line": 701, + "line": 700, "column": 67 }, "end": { - "line": 701, + "line": 700, "column": 68 } } @@ -101477,15 +101199,15 @@ "binop": null }, "value": "pivotController", - "start": 22858, - "end": 22873, + "start": 22798, + "end": 22813, "loc": { "start": { - "line": 702, + "line": 701, "column": 12 }, "end": { - "line": 702, + "line": 701, "column": 27 } } @@ -101503,15 +101225,15 @@ "binop": null, "updateContext": null }, - "start": 22873, - "end": 22874, + "start": 22813, + "end": 22814, "loc": { "start": { - "line": 702, + "line": 701, "column": 27 }, "end": { - "line": 702, + "line": 701, "column": 28 } } @@ -101531,15 +101253,15 @@ "updateContext": null }, "value": "new", - "start": 22875, - "end": 22878, + "start": 22815, + "end": 22818, "loc": { "start": { - "line": 702, + "line": 701, "column": 29 }, "end": { - "line": 702, + "line": 701, "column": 32 } } @@ -101557,15 +101279,15 @@ "binop": null }, "value": "PivotController", - "start": 22879, - "end": 22894, + "start": 22819, + "end": 22834, "loc": { "start": { - "line": 702, + "line": 701, "column": 33 }, "end": { - "line": 702, + "line": 701, "column": 48 } } @@ -101582,15 +101304,15 @@ "postfix": false, "binop": null }, - "start": 22894, - "end": 22895, + "start": 22834, + "end": 22835, "loc": { "start": { - "line": 702, + "line": 701, "column": 48 }, "end": { - "line": 702, + "line": 701, "column": 49 } } @@ -101608,15 +101330,15 @@ "binop": null }, "value": "scene", - "start": 22895, - "end": 22900, + "start": 22835, + "end": 22840, "loc": { "start": { - "line": 702, + "line": 701, "column": 49 }, "end": { - "line": 702, + "line": 701, "column": 54 } } @@ -101634,15 +101356,15 @@ "binop": null, "updateContext": null }, - "start": 22900, - "end": 22901, + "start": 22840, + "end": 22841, "loc": { "start": { - "line": 702, + "line": 701, "column": 54 }, "end": { - "line": 702, + "line": 701, "column": 55 } } @@ -101662,15 +101384,15 @@ "updateContext": null }, "value": "this", - "start": 22902, - "end": 22906, + "start": 22842, + "end": 22846, "loc": { "start": { - "line": 702, + "line": 701, "column": 56 }, "end": { - "line": 702, + "line": 701, "column": 60 } } @@ -101688,15 +101410,15 @@ "binop": null, "updateContext": null }, - "start": 22906, - "end": 22907, + "start": 22846, + "end": 22847, "loc": { "start": { - "line": 702, + "line": 701, "column": 60 }, "end": { - "line": 702, + "line": 701, "column": 61 } } @@ -101714,15 +101436,15 @@ "binop": null }, "value": "_configs", - "start": 22907, - "end": 22915, + "start": 22847, + "end": 22855, "loc": { "start": { - "line": 702, + "line": 701, "column": 61 }, "end": { - "line": 702, + "line": 701, "column": 69 } } @@ -101739,15 +101461,15 @@ "postfix": false, "binop": null }, - "start": 22915, - "end": 22916, + "start": 22855, + "end": 22856, "loc": { "start": { - "line": 702, + "line": 701, "column": 69 }, "end": { - "line": 702, + "line": 701, "column": 70 } } @@ -101765,15 +101487,15 @@ "binop": null, "updateContext": null }, - "start": 22916, - "end": 22917, + "start": 22856, + "end": 22857, "loc": { "start": { - "line": 702, + "line": 701, "column": 70 }, "end": { - "line": 702, + "line": 701, "column": 71 } } @@ -101791,15 +101513,15 @@ "binop": null }, "value": "panController", - "start": 22930, - "end": 22943, + "start": 22870, + "end": 22883, "loc": { "start": { - "line": 703, + "line": 702, "column": 12 }, "end": { - "line": 703, + "line": 702, "column": 25 } } @@ -101817,15 +101539,15 @@ "binop": null, "updateContext": null }, - "start": 22943, - "end": 22944, + "start": 22883, + "end": 22884, "loc": { "start": { - "line": 703, + "line": 702, "column": 25 }, "end": { - "line": 703, + "line": 702, "column": 26 } } @@ -101845,15 +101567,15 @@ "updateContext": null }, "value": "new", - "start": 22945, - "end": 22948, + "start": 22885, + "end": 22888, "loc": { "start": { - "line": 703, + "line": 702, "column": 27 }, "end": { - "line": 703, + "line": 702, "column": 30 } } @@ -101871,15 +101593,15 @@ "binop": null }, "value": "PanController", - "start": 22949, - "end": 22962, + "start": 22889, + "end": 22902, "loc": { "start": { - "line": 703, + "line": 702, "column": 31 }, "end": { - "line": 703, + "line": 702, "column": 44 } } @@ -101896,15 +101618,15 @@ "postfix": false, "binop": null }, - "start": 22962, - "end": 22963, + "start": 22902, + "end": 22903, "loc": { "start": { - "line": 703, + "line": 702, "column": 44 }, "end": { - "line": 703, + "line": 702, "column": 45 } } @@ -101922,15 +101644,15 @@ "binop": null }, "value": "scene", - "start": 22963, - "end": 22968, + "start": 22903, + "end": 22908, "loc": { "start": { - "line": 703, + "line": 702, "column": 45 }, "end": { - "line": 703, + "line": 702, "column": 50 } } @@ -101947,15 +101669,15 @@ "postfix": false, "binop": null }, - "start": 22968, - "end": 22969, + "start": 22908, + "end": 22909, "loc": { "start": { - "line": 703, + "line": 702, "column": 50 }, "end": { - "line": 703, + "line": 702, "column": 51 } } @@ -101973,15 +101695,15 @@ "binop": null, "updateContext": null }, - "start": 22969, - "end": 22970, + "start": 22909, + "end": 22910, "loc": { "start": { - "line": 703, + "line": 702, "column": 51 }, "end": { - "line": 703, + "line": 702, "column": 52 } } @@ -101999,15 +101721,15 @@ "binop": null }, "value": "cameraFlight", - "start": 22983, - "end": 22995, + "start": 22923, + "end": 22935, "loc": { "start": { - "line": 704, + "line": 703, "column": 12 }, "end": { - "line": 704, + "line": 703, "column": 24 } } @@ -102025,15 +101747,15 @@ "binop": null, "updateContext": null }, - "start": 22995, - "end": 22996, + "start": 22935, + "end": 22936, "loc": { "start": { - "line": 704, + "line": 703, "column": 24 }, "end": { - "line": 704, + "line": 703, "column": 25 } } @@ -102053,15 +101775,15 @@ "updateContext": null }, "value": "new", - "start": 22997, - "end": 23000, + "start": 22937, + "end": 22940, "loc": { "start": { - "line": 704, + "line": 703, "column": 26 }, "end": { - "line": 704, + "line": 703, "column": 29 } } @@ -102079,15 +101801,15 @@ "binop": null }, "value": "CameraFlightAnimation", - "start": 23001, - "end": 23022, + "start": 22941, + "end": 22962, "loc": { "start": { - "line": 704, + "line": 703, "column": 30 }, "end": { - "line": 704, + "line": 703, "column": 51 } } @@ -102104,15 +101826,15 @@ "postfix": false, "binop": null }, - "start": 23022, - "end": 23023, + "start": 22962, + "end": 22963, "loc": { "start": { - "line": 704, + "line": 703, "column": 51 }, "end": { - "line": 704, + "line": 703, "column": 52 } } @@ -102132,15 +101854,15 @@ "updateContext": null }, "value": "this", - "start": 23023, - "end": 23027, + "start": 22963, + "end": 22967, "loc": { "start": { - "line": 704, + "line": 703, "column": 52 }, "end": { - "line": 704, + "line": 703, "column": 56 } } @@ -102158,15 +101880,15 @@ "binop": null, "updateContext": null }, - "start": 23027, - "end": 23028, + "start": 22967, + "end": 22968, "loc": { "start": { - "line": 704, + "line": 703, "column": 56 }, "end": { - "line": 704, + "line": 703, "column": 57 } } @@ -102183,15 +101905,15 @@ "postfix": false, "binop": null }, - "start": 23029, - "end": 23030, + "start": 22969, + "end": 22970, "loc": { "start": { - "line": 704, + "line": 703, "column": 58 }, "end": { - "line": 704, + "line": 703, "column": 59 } } @@ -102209,15 +101931,15 @@ "binop": null }, "value": "duration", - "start": 23047, - "end": 23055, + "start": 22987, + "end": 22995, "loc": { "start": { - "line": 705, + "line": 704, "column": 16 }, "end": { - "line": 705, + "line": 704, "column": 24 } } @@ -102235,15 +101957,15 @@ "binop": null, "updateContext": null }, - "start": 23055, - "end": 23056, + "start": 22995, + "end": 22996, "loc": { "start": { - "line": 705, + "line": 704, "column": 24 }, "end": { - "line": 705, + "line": 704, "column": 25 } } @@ -102262,15 +101984,15 @@ "updateContext": null }, "value": 0.5, - "start": 23057, - "end": 23060, + "start": 22997, + "end": 23000, "loc": { "start": { - "line": 705, + "line": 704, "column": 26 }, "end": { - "line": 705, + "line": 704, "column": 29 } } @@ -102287,15 +102009,15 @@ "postfix": false, "binop": null }, - "start": 23073, - "end": 23074, + "start": 23013, + "end": 23014, "loc": { "start": { - "line": 706, + "line": 705, "column": 12 }, "end": { - "line": 706, + "line": 705, "column": 13 } } @@ -102312,15 +102034,15 @@ "postfix": false, "binop": null }, - "start": 23074, - "end": 23075, + "start": 23014, + "end": 23015, "loc": { "start": { - "line": 706, + "line": 705, "column": 13 }, "end": { - "line": 706, + "line": 705, "column": 14 } } @@ -102337,15 +102059,15 @@ "postfix": false, "binop": null }, - "start": 23084, - "end": 23085, + "start": 23024, + "end": 23025, "loc": { "start": { - "line": 707, + "line": 706, "column": 8 }, "end": { - "line": 707, + "line": 706, "column": 9 } } @@ -102363,15 +102085,15 @@ "binop": null, "updateContext": null }, - "start": 23085, - "end": 23086, + "start": 23025, + "end": 23026, "loc": { "start": { - "line": 707, + "line": 706, "column": 9 }, "end": { - "line": 707, + "line": 706, "column": 10 } } @@ -102379,15 +102101,15 @@ { "type": "CommentLine", "value": " Input event handlers", - "start": 23096, - "end": 23119, + "start": 23036, + "end": 23059, "loc": { "start": { - "line": 709, + "line": 708, "column": 8 }, "end": { - "line": 709, + "line": 708, "column": 31 } } @@ -102407,15 +102129,15 @@ "updateContext": null }, "value": "this", - "start": 23129, - "end": 23133, + "start": 23069, + "end": 23073, "loc": { "start": { - "line": 711, + "line": 710, "column": 8 }, "end": { - "line": 711, + "line": 710, "column": 12 } } @@ -102433,15 +102155,15 @@ "binop": null, "updateContext": null }, - "start": 23133, - "end": 23134, + "start": 23073, + "end": 23074, "loc": { "start": { - "line": 711, + "line": 710, "column": 12 }, "end": { - "line": 711, + "line": 710, "column": 13 } } @@ -102459,15 +102181,15 @@ "binop": null }, "value": "_handlers", - "start": 23134, - "end": 23143, + "start": 23074, + "end": 23083, "loc": { "start": { - "line": 711, + "line": 710, "column": 13 }, "end": { - "line": 711, + "line": 710, "column": 22 } } @@ -102486,15 +102208,15 @@ "updateContext": null }, "value": "=", - "start": 23144, - "end": 23145, + "start": 23084, + "end": 23085, "loc": { "start": { - "line": 711, + "line": 710, "column": 23 }, "end": { - "line": 711, + "line": 710, "column": 24 } } @@ -102512,15 +102234,15 @@ "binop": null, "updateContext": null }, - "start": 23146, - "end": 23147, + "start": 23086, + "end": 23087, "loc": { "start": { - "line": 711, + "line": 710, "column": 25 }, "end": { - "line": 711, + "line": 710, "column": 26 } } @@ -102540,15 +102262,15 @@ "updateContext": null }, "value": "new", - "start": 23160, - "end": 23163, + "start": 23100, + "end": 23103, "loc": { "start": { - "line": 712, + "line": 711, "column": 12 }, "end": { - "line": 712, + "line": 711, "column": 15 } } @@ -102566,15 +102288,15 @@ "binop": null }, "value": "MouseMiscHandler", - "start": 23164, - "end": 23180, + "start": 23104, + "end": 23120, "loc": { "start": { - "line": 712, + "line": 711, "column": 16 }, "end": { - "line": 712, + "line": 711, "column": 32 } } @@ -102591,15 +102313,15 @@ "postfix": false, "binop": null }, - "start": 23180, - "end": 23181, + "start": 23120, + "end": 23121, "loc": { "start": { - "line": 712, + "line": 711, "column": 32 }, "end": { - "line": 712, + "line": 711, "column": 33 } } @@ -102619,15 +102341,15 @@ "updateContext": null }, "value": "this", - "start": 23181, - "end": 23185, + "start": 23121, + "end": 23125, "loc": { "start": { - "line": 712, + "line": 711, "column": 33 }, "end": { - "line": 712, + "line": 711, "column": 37 } } @@ -102645,15 +102367,15 @@ "binop": null, "updateContext": null }, - "start": 23185, - "end": 23186, + "start": 23125, + "end": 23126, "loc": { "start": { - "line": 712, + "line": 711, "column": 37 }, "end": { - "line": 712, + "line": 711, "column": 38 } } @@ -102671,15 +102393,15 @@ "binop": null }, "value": "scene", - "start": 23186, - "end": 23191, + "start": 23126, + "end": 23131, "loc": { "start": { - "line": 712, + "line": 711, "column": 38 }, "end": { - "line": 712, + "line": 711, "column": 43 } } @@ -102697,15 +102419,15 @@ "binop": null, "updateContext": null }, - "start": 23191, - "end": 23192, + "start": 23131, + "end": 23132, "loc": { "start": { - "line": 712, + "line": 711, "column": 43 }, "end": { - "line": 712, + "line": 711, "column": 44 } } @@ -102725,15 +102447,15 @@ "updateContext": null }, "value": "this", - "start": 23193, - "end": 23197, + "start": 23133, + "end": 23137, "loc": { "start": { - "line": 712, + "line": 711, "column": 45 }, "end": { - "line": 712, + "line": 711, "column": 49 } } @@ -102751,15 +102473,15 @@ "binop": null, "updateContext": null }, - "start": 23197, - "end": 23198, + "start": 23137, + "end": 23138, "loc": { "start": { - "line": 712, + "line": 711, "column": 49 }, "end": { - "line": 712, + "line": 711, "column": 50 } } @@ -102777,15 +102499,15 @@ "binop": null }, "value": "_controllers", - "start": 23198, - "end": 23210, + "start": 23138, + "end": 23150, "loc": { "start": { - "line": 712, + "line": 711, "column": 50 }, "end": { - "line": 712, + "line": 711, "column": 62 } } @@ -102803,15 +102525,15 @@ "binop": null, "updateContext": null }, - "start": 23210, - "end": 23211, + "start": 23150, + "end": 23151, "loc": { "start": { - "line": 712, + "line": 711, "column": 62 }, "end": { - "line": 712, + "line": 711, "column": 63 } } @@ -102831,15 +102553,15 @@ "updateContext": null }, "value": "this", - "start": 23212, - "end": 23216, + "start": 23152, + "end": 23156, "loc": { "start": { - "line": 712, + "line": 711, "column": 64 }, "end": { - "line": 712, + "line": 711, "column": 68 } } @@ -102857,15 +102579,15 @@ "binop": null, "updateContext": null }, - "start": 23216, - "end": 23217, + "start": 23156, + "end": 23157, "loc": { "start": { - "line": 712, + "line": 711, "column": 68 }, "end": { - "line": 712, + "line": 711, "column": 69 } } @@ -102883,15 +102605,15 @@ "binop": null }, "value": "_configs", - "start": 23217, - "end": 23225, + "start": 23157, + "end": 23165, "loc": { "start": { - "line": 712, + "line": 711, "column": 69 }, "end": { - "line": 712, + "line": 711, "column": 77 } } @@ -102909,15 +102631,15 @@ "binop": null, "updateContext": null }, - "start": 23225, - "end": 23226, + "start": 23165, + "end": 23166, "loc": { "start": { - "line": 712, + "line": 711, "column": 77 }, "end": { - "line": 712, + "line": 711, "column": 78 } } @@ -102937,15 +102659,15 @@ "updateContext": null }, "value": "this", - "start": 23227, - "end": 23231, + "start": 23167, + "end": 23171, "loc": { "start": { - "line": 712, + "line": 711, "column": 79 }, "end": { - "line": 712, + "line": 711, "column": 83 } } @@ -102963,15 +102685,15 @@ "binop": null, "updateContext": null }, - "start": 23231, - "end": 23232, + "start": 23171, + "end": 23172, "loc": { "start": { - "line": 712, + "line": 711, "column": 83 }, "end": { - "line": 712, + "line": 711, "column": 84 } } @@ -102989,15 +102711,15 @@ "binop": null }, "value": "_states", - "start": 23232, - "end": 23239, + "start": 23172, + "end": 23179, "loc": { "start": { - "line": 712, + "line": 711, "column": 84 }, "end": { - "line": 712, + "line": 711, "column": 91 } } @@ -103015,15 +102737,15 @@ "binop": null, "updateContext": null }, - "start": 23239, - "end": 23240, + "start": 23179, + "end": 23180, "loc": { "start": { - "line": 712, + "line": 711, "column": 91 }, "end": { - "line": 712, + "line": 711, "column": 92 } } @@ -103043,15 +102765,15 @@ "updateContext": null }, "value": "this", - "start": 23241, - "end": 23245, + "start": 23181, + "end": 23185, "loc": { "start": { - "line": 712, + "line": 711, "column": 93 }, "end": { - "line": 712, + "line": 711, "column": 97 } } @@ -103069,15 +102791,15 @@ "binop": null, "updateContext": null }, - "start": 23245, - "end": 23246, + "start": 23185, + "end": 23186, "loc": { "start": { - "line": 712, + "line": 711, "column": 97 }, "end": { - "line": 712, + "line": 711, "column": 98 } } @@ -103095,15 +102817,15 @@ "binop": null }, "value": "_updates", - "start": 23246, - "end": 23254, + "start": 23186, + "end": 23194, "loc": { "start": { - "line": 712, + "line": 711, "column": 98 }, "end": { - "line": 712, + "line": 711, "column": 106 } } @@ -103120,15 +102842,15 @@ "postfix": false, "binop": null }, - "start": 23254, - "end": 23255, + "start": 23194, + "end": 23195, "loc": { "start": { - "line": 712, + "line": 711, "column": 106 }, "end": { - "line": 712, + "line": 711, "column": 107 } } @@ -103146,15 +102868,15 @@ "binop": null, "updateContext": null }, - "start": 23255, - "end": 23256, + "start": 23195, + "end": 23196, "loc": { "start": { - "line": 712, + "line": 711, "column": 107 }, "end": { - "line": 712, + "line": 711, "column": 108 } } @@ -103174,15 +102896,15 @@ "updateContext": null }, "value": "new", - "start": 23269, - "end": 23272, + "start": 23209, + "end": 23212, "loc": { "start": { - "line": 713, + "line": 712, "column": 12 }, "end": { - "line": 713, + "line": 712, "column": 15 } } @@ -103200,15 +102922,15 @@ "binop": null }, "value": "TouchPanRotateAndDollyHandler", - "start": 23273, - "end": 23302, + "start": 23213, + "end": 23242, "loc": { "start": { - "line": 713, + "line": 712, "column": 16 }, "end": { - "line": 713, + "line": 712, "column": 45 } } @@ -103225,15 +102947,15 @@ "postfix": false, "binop": null }, - "start": 23302, - "end": 23303, + "start": 23242, + "end": 23243, "loc": { "start": { - "line": 713, + "line": 712, "column": 45 }, "end": { - "line": 713, + "line": 712, "column": 46 } } @@ -103253,15 +102975,15 @@ "updateContext": null }, "value": "this", - "start": 23303, - "end": 23307, + "start": 23243, + "end": 23247, "loc": { "start": { - "line": 713, + "line": 712, "column": 46 }, "end": { - "line": 713, + "line": 712, "column": 50 } } @@ -103279,15 +103001,15 @@ "binop": null, "updateContext": null }, - "start": 23307, - "end": 23308, + "start": 23247, + "end": 23248, "loc": { "start": { - "line": 713, + "line": 712, "column": 50 }, "end": { - "line": 713, + "line": 712, "column": 51 } } @@ -103305,15 +103027,15 @@ "binop": null }, "value": "scene", - "start": 23308, - "end": 23313, + "start": 23248, + "end": 23253, "loc": { "start": { - "line": 713, + "line": 712, "column": 51 }, "end": { - "line": 713, + "line": 712, "column": 56 } } @@ -103331,15 +103053,15 @@ "binop": null, "updateContext": null }, - "start": 23313, - "end": 23314, + "start": 23253, + "end": 23254, "loc": { "start": { - "line": 713, + "line": 712, "column": 56 }, "end": { - "line": 713, + "line": 712, "column": 57 } } @@ -103359,15 +103081,15 @@ "updateContext": null }, "value": "this", - "start": 23315, - "end": 23319, + "start": 23255, + "end": 23259, "loc": { "start": { - "line": 713, + "line": 712, "column": 58 }, "end": { - "line": 713, + "line": 712, "column": 62 } } @@ -103385,15 +103107,15 @@ "binop": null, "updateContext": null }, - "start": 23319, - "end": 23320, + "start": 23259, + "end": 23260, "loc": { "start": { - "line": 713, + "line": 712, "column": 62 }, "end": { - "line": 713, + "line": 712, "column": 63 } } @@ -103411,15 +103133,15 @@ "binop": null }, "value": "_controllers", - "start": 23320, - "end": 23332, + "start": 23260, + "end": 23272, "loc": { "start": { - "line": 713, + "line": 712, "column": 63 }, "end": { - "line": 713, + "line": 712, "column": 75 } } @@ -103437,15 +103159,15 @@ "binop": null, "updateContext": null }, - "start": 23332, - "end": 23333, + "start": 23272, + "end": 23273, "loc": { "start": { - "line": 713, + "line": 712, "column": 75 }, "end": { - "line": 713, + "line": 712, "column": 76 } } @@ -103465,15 +103187,15 @@ "updateContext": null }, "value": "this", - "start": 23334, - "end": 23338, + "start": 23274, + "end": 23278, "loc": { "start": { - "line": 713, + "line": 712, "column": 77 }, "end": { - "line": 713, + "line": 712, "column": 81 } } @@ -103491,15 +103213,15 @@ "binop": null, "updateContext": null }, - "start": 23338, - "end": 23339, + "start": 23278, + "end": 23279, "loc": { "start": { - "line": 713, + "line": 712, "column": 81 }, "end": { - "line": 713, + "line": 712, "column": 82 } } @@ -103517,15 +103239,15 @@ "binop": null }, "value": "_configs", - "start": 23339, - "end": 23347, + "start": 23279, + "end": 23287, "loc": { "start": { - "line": 713, + "line": 712, "column": 82 }, "end": { - "line": 713, + "line": 712, "column": 90 } } @@ -103543,15 +103265,15 @@ "binop": null, "updateContext": null }, - "start": 23347, - "end": 23348, + "start": 23287, + "end": 23288, "loc": { "start": { - "line": 713, + "line": 712, "column": 90 }, "end": { - "line": 713, + "line": 712, "column": 91 } } @@ -103571,15 +103293,15 @@ "updateContext": null }, "value": "this", - "start": 23349, - "end": 23353, + "start": 23289, + "end": 23293, "loc": { "start": { - "line": 713, + "line": 712, "column": 92 }, "end": { - "line": 713, + "line": 712, "column": 96 } } @@ -103597,15 +103319,15 @@ "binop": null, "updateContext": null }, - "start": 23353, - "end": 23354, + "start": 23293, + "end": 23294, "loc": { "start": { - "line": 713, + "line": 712, "column": 96 }, "end": { - "line": 713, + "line": 712, "column": 97 } } @@ -103623,15 +103345,15 @@ "binop": null }, "value": "_states", - "start": 23354, - "end": 23361, + "start": 23294, + "end": 23301, "loc": { "start": { - "line": 713, + "line": 712, "column": 97 }, "end": { - "line": 713, + "line": 712, "column": 104 } } @@ -103649,15 +103371,15 @@ "binop": null, "updateContext": null }, - "start": 23361, - "end": 23362, + "start": 23301, + "end": 23302, "loc": { "start": { - "line": 713, + "line": 712, "column": 104 }, "end": { - "line": 713, + "line": 712, "column": 105 } } @@ -103677,15 +103399,15 @@ "updateContext": null }, "value": "this", - "start": 23363, - "end": 23367, + "start": 23303, + "end": 23307, "loc": { "start": { - "line": 713, + "line": 712, "column": 106 }, "end": { - "line": 713, + "line": 712, "column": 110 } } @@ -103703,15 +103425,15 @@ "binop": null, "updateContext": null }, - "start": 23367, - "end": 23368, + "start": 23307, + "end": 23308, "loc": { "start": { - "line": 713, + "line": 712, "column": 110 }, "end": { - "line": 713, + "line": 712, "column": 111 } } @@ -103729,15 +103451,15 @@ "binop": null }, "value": "_updates", - "start": 23368, - "end": 23376, + "start": 23308, + "end": 23316, "loc": { "start": { - "line": 713, + "line": 712, "column": 111 }, "end": { - "line": 713, + "line": 712, "column": 119 } } @@ -103754,15 +103476,15 @@ "postfix": false, "binop": null }, - "start": 23376, - "end": 23377, + "start": 23316, + "end": 23317, "loc": { "start": { - "line": 713, + "line": 712, "column": 119 }, "end": { - "line": 713, + "line": 712, "column": 120 } } @@ -103780,15 +103502,15 @@ "binop": null, "updateContext": null }, - "start": 23377, - "end": 23378, + "start": 23317, + "end": 23318, "loc": { "start": { - "line": 713, + "line": 712, "column": 120 }, "end": { - "line": 713, + "line": 712, "column": 121 } } @@ -103808,15 +103530,15 @@ "updateContext": null }, "value": "new", - "start": 23391, - "end": 23394, + "start": 23331, + "end": 23334, "loc": { "start": { - "line": 714, + "line": 713, "column": 12 }, "end": { - "line": 714, + "line": 713, "column": 15 } } @@ -103834,15 +103556,15 @@ "binop": null }, "value": "MousePanRotateDollyHandler", - "start": 23395, - "end": 23421, + "start": 23335, + "end": 23361, "loc": { "start": { - "line": 714, + "line": 713, "column": 16 }, "end": { - "line": 714, + "line": 713, "column": 42 } } @@ -103859,15 +103581,15 @@ "postfix": false, "binop": null }, - "start": 23421, - "end": 23422, + "start": 23361, + "end": 23362, "loc": { "start": { - "line": 714, + "line": 713, "column": 42 }, "end": { - "line": 714, + "line": 713, "column": 43 } } @@ -103887,15 +103609,15 @@ "updateContext": null }, "value": "this", - "start": 23422, - "end": 23426, + "start": 23362, + "end": 23366, "loc": { "start": { - "line": 714, + "line": 713, "column": 43 }, "end": { - "line": 714, + "line": 713, "column": 47 } } @@ -103913,15 +103635,15 @@ "binop": null, "updateContext": null }, - "start": 23426, - "end": 23427, + "start": 23366, + "end": 23367, "loc": { "start": { - "line": 714, + "line": 713, "column": 47 }, "end": { - "line": 714, + "line": 713, "column": 48 } } @@ -103939,15 +103661,15 @@ "binop": null }, "value": "scene", - "start": 23427, - "end": 23432, + "start": 23367, + "end": 23372, "loc": { "start": { - "line": 714, + "line": 713, "column": 48 }, "end": { - "line": 714, + "line": 713, "column": 53 } } @@ -103965,15 +103687,15 @@ "binop": null, "updateContext": null }, - "start": 23432, - "end": 23433, + "start": 23372, + "end": 23373, "loc": { "start": { - "line": 714, + "line": 713, "column": 53 }, "end": { - "line": 714, + "line": 713, "column": 54 } } @@ -103993,15 +103715,15 @@ "updateContext": null }, "value": "this", - "start": 23434, - "end": 23438, + "start": 23374, + "end": 23378, "loc": { "start": { - "line": 714, + "line": 713, "column": 55 }, "end": { - "line": 714, + "line": 713, "column": 59 } } @@ -104019,15 +103741,15 @@ "binop": null, "updateContext": null }, - "start": 23438, - "end": 23439, + "start": 23378, + "end": 23379, "loc": { "start": { - "line": 714, + "line": 713, "column": 59 }, "end": { - "line": 714, + "line": 713, "column": 60 } } @@ -104045,15 +103767,15 @@ "binop": null }, "value": "_controllers", - "start": 23439, - "end": 23451, + "start": 23379, + "end": 23391, "loc": { "start": { - "line": 714, + "line": 713, "column": 60 }, "end": { - "line": 714, + "line": 713, "column": 72 } } @@ -104071,15 +103793,15 @@ "binop": null, "updateContext": null }, - "start": 23451, - "end": 23452, + "start": 23391, + "end": 23392, "loc": { "start": { - "line": 714, + "line": 713, "column": 72 }, "end": { - "line": 714, + "line": 713, "column": 73 } } @@ -104099,15 +103821,15 @@ "updateContext": null }, "value": "this", - "start": 23453, - "end": 23457, + "start": 23393, + "end": 23397, "loc": { "start": { - "line": 714, + "line": 713, "column": 74 }, "end": { - "line": 714, + "line": 713, "column": 78 } } @@ -104125,15 +103847,15 @@ "binop": null, "updateContext": null }, - "start": 23457, - "end": 23458, + "start": 23397, + "end": 23398, "loc": { "start": { - "line": 714, + "line": 713, "column": 78 }, "end": { - "line": 714, + "line": 713, "column": 79 } } @@ -104151,15 +103873,15 @@ "binop": null }, "value": "_configs", - "start": 23458, - "end": 23466, + "start": 23398, + "end": 23406, "loc": { "start": { - "line": 714, + "line": 713, "column": 79 }, "end": { - "line": 714, + "line": 713, "column": 87 } } @@ -104177,15 +103899,15 @@ "binop": null, "updateContext": null }, - "start": 23466, - "end": 23467, + "start": 23406, + "end": 23407, "loc": { "start": { - "line": 714, + "line": 713, "column": 87 }, "end": { - "line": 714, + "line": 713, "column": 88 } } @@ -104205,15 +103927,15 @@ "updateContext": null }, "value": "this", - "start": 23468, - "end": 23472, + "start": 23408, + "end": 23412, "loc": { "start": { - "line": 714, + "line": 713, "column": 89 }, "end": { - "line": 714, + "line": 713, "column": 93 } } @@ -104231,15 +103953,15 @@ "binop": null, "updateContext": null }, - "start": 23472, - "end": 23473, + "start": 23412, + "end": 23413, "loc": { "start": { - "line": 714, + "line": 713, "column": 93 }, "end": { - "line": 714, + "line": 713, "column": 94 } } @@ -104257,15 +103979,15 @@ "binop": null }, "value": "_states", - "start": 23473, - "end": 23480, + "start": 23413, + "end": 23420, "loc": { "start": { - "line": 714, + "line": 713, "column": 94 }, "end": { - "line": 714, + "line": 713, "column": 101 } } @@ -104283,15 +104005,15 @@ "binop": null, "updateContext": null }, - "start": 23480, - "end": 23481, + "start": 23420, + "end": 23421, "loc": { "start": { - "line": 714, + "line": 713, "column": 101 }, "end": { - "line": 714, + "line": 713, "column": 102 } } @@ -104311,15 +104033,15 @@ "updateContext": null }, "value": "this", - "start": 23482, - "end": 23486, + "start": 23422, + "end": 23426, "loc": { "start": { - "line": 714, + "line": 713, "column": 103 }, "end": { - "line": 714, + "line": 713, "column": 107 } } @@ -104337,15 +104059,15 @@ "binop": null, "updateContext": null }, - "start": 23486, - "end": 23487, + "start": 23426, + "end": 23427, "loc": { "start": { - "line": 714, + "line": 713, "column": 107 }, "end": { - "line": 714, + "line": 713, "column": 108 } } @@ -104363,15 +104085,15 @@ "binop": null }, "value": "_updates", - "start": 23487, - "end": 23495, + "start": 23427, + "end": 23435, "loc": { "start": { - "line": 714, + "line": 713, "column": 108 }, "end": { - "line": 714, + "line": 713, "column": 116 } } @@ -104388,15 +104110,15 @@ "postfix": false, "binop": null }, - "start": 23495, - "end": 23496, + "start": 23435, + "end": 23436, "loc": { "start": { - "line": 714, + "line": 713, "column": 116 }, "end": { - "line": 714, + "line": 713, "column": 117 } } @@ -104414,15 +104136,15 @@ "binop": null, "updateContext": null }, - "start": 23496, - "end": 23497, + "start": 23436, + "end": 23437, "loc": { "start": { - "line": 714, + "line": 713, "column": 117 }, "end": { - "line": 714, + "line": 713, "column": 118 } } @@ -104442,15 +104164,15 @@ "updateContext": null }, "value": "new", - "start": 23510, - "end": 23513, + "start": 23450, + "end": 23453, "loc": { "start": { - "line": 715, + "line": 714, "column": 12 }, "end": { - "line": 715, + "line": 714, "column": 15 } } @@ -104468,15 +104190,15 @@ "binop": null }, "value": "KeyboardAxisViewHandler", - "start": 23514, - "end": 23537, + "start": 23454, + "end": 23477, "loc": { "start": { - "line": 715, + "line": 714, "column": 16 }, "end": { - "line": 715, + "line": 714, "column": 39 } } @@ -104493,15 +104215,15 @@ "postfix": false, "binop": null }, - "start": 23537, - "end": 23538, + "start": 23477, + "end": 23478, "loc": { "start": { - "line": 715, + "line": 714, "column": 39 }, "end": { - "line": 715, + "line": 714, "column": 40 } } @@ -104521,15 +104243,15 @@ "updateContext": null }, "value": "this", - "start": 23538, - "end": 23542, + "start": 23478, + "end": 23482, "loc": { "start": { - "line": 715, + "line": 714, "column": 40 }, "end": { - "line": 715, + "line": 714, "column": 44 } } @@ -104547,15 +104269,15 @@ "binop": null, "updateContext": null }, - "start": 23542, - "end": 23543, + "start": 23482, + "end": 23483, "loc": { "start": { - "line": 715, + "line": 714, "column": 44 }, "end": { - "line": 715, + "line": 714, "column": 45 } } @@ -104573,15 +104295,15 @@ "binop": null }, "value": "scene", - "start": 23543, - "end": 23548, + "start": 23483, + "end": 23488, "loc": { "start": { - "line": 715, + "line": 714, "column": 45 }, "end": { - "line": 715, + "line": 714, "column": 50 } } @@ -104599,15 +104321,15 @@ "binop": null, "updateContext": null }, - "start": 23548, - "end": 23549, + "start": 23488, + "end": 23489, "loc": { "start": { - "line": 715, + "line": 714, "column": 50 }, "end": { - "line": 715, + "line": 714, "column": 51 } } @@ -104627,15 +104349,15 @@ "updateContext": null }, "value": "this", - "start": 23550, - "end": 23554, + "start": 23490, + "end": 23494, "loc": { "start": { - "line": 715, + "line": 714, "column": 52 }, "end": { - "line": 715, + "line": 714, "column": 56 } } @@ -104653,15 +104375,15 @@ "binop": null, "updateContext": null }, - "start": 23554, - "end": 23555, + "start": 23494, + "end": 23495, "loc": { "start": { - "line": 715, + "line": 714, "column": 56 }, "end": { - "line": 715, + "line": 714, "column": 57 } } @@ -104679,15 +104401,15 @@ "binop": null }, "value": "_controllers", - "start": 23555, - "end": 23567, + "start": 23495, + "end": 23507, "loc": { "start": { - "line": 715, + "line": 714, "column": 57 }, "end": { - "line": 715, + "line": 714, "column": 69 } } @@ -104705,15 +104427,15 @@ "binop": null, "updateContext": null }, - "start": 23567, - "end": 23568, + "start": 23507, + "end": 23508, "loc": { "start": { - "line": 715, + "line": 714, "column": 69 }, "end": { - "line": 715, + "line": 714, "column": 70 } } @@ -104733,15 +104455,15 @@ "updateContext": null }, "value": "this", - "start": 23569, - "end": 23573, + "start": 23509, + "end": 23513, "loc": { "start": { - "line": 715, + "line": 714, "column": 71 }, "end": { - "line": 715, + "line": 714, "column": 75 } } @@ -104759,15 +104481,15 @@ "binop": null, "updateContext": null }, - "start": 23573, - "end": 23574, + "start": 23513, + "end": 23514, "loc": { "start": { - "line": 715, + "line": 714, "column": 75 }, "end": { - "line": 715, + "line": 714, "column": 76 } } @@ -104785,15 +104507,15 @@ "binop": null }, "value": "_configs", - "start": 23574, - "end": 23582, + "start": 23514, + "end": 23522, "loc": { "start": { - "line": 715, + "line": 714, "column": 76 }, "end": { - "line": 715, + "line": 714, "column": 84 } } @@ -104811,15 +104533,15 @@ "binop": null, "updateContext": null }, - "start": 23582, - "end": 23583, + "start": 23522, + "end": 23523, "loc": { "start": { - "line": 715, + "line": 714, "column": 84 }, "end": { - "line": 715, + "line": 714, "column": 85 } } @@ -104839,15 +104561,15 @@ "updateContext": null }, "value": "this", - "start": 23584, - "end": 23588, + "start": 23524, + "end": 23528, "loc": { "start": { - "line": 715, + "line": 714, "column": 86 }, "end": { - "line": 715, + "line": 714, "column": 90 } } @@ -104865,15 +104587,15 @@ "binop": null, "updateContext": null }, - "start": 23588, - "end": 23589, + "start": 23528, + "end": 23529, "loc": { "start": { - "line": 715, + "line": 714, "column": 90 }, "end": { - "line": 715, + "line": 714, "column": 91 } } @@ -104891,15 +104613,15 @@ "binop": null }, "value": "_states", - "start": 23589, - "end": 23596, + "start": 23529, + "end": 23536, "loc": { "start": { - "line": 715, + "line": 714, "column": 91 }, "end": { - "line": 715, + "line": 714, "column": 98 } } @@ -104917,15 +104639,15 @@ "binop": null, "updateContext": null }, - "start": 23596, - "end": 23597, + "start": 23536, + "end": 23537, "loc": { "start": { - "line": 715, + "line": 714, "column": 98 }, "end": { - "line": 715, + "line": 714, "column": 99 } } @@ -104945,15 +104667,15 @@ "updateContext": null }, "value": "this", - "start": 23598, - "end": 23602, + "start": 23538, + "end": 23542, "loc": { "start": { - "line": 715, + "line": 714, "column": 100 }, "end": { - "line": 715, + "line": 714, "column": 104 } } @@ -104971,15 +104693,15 @@ "binop": null, "updateContext": null }, - "start": 23602, - "end": 23603, + "start": 23542, + "end": 23543, "loc": { "start": { - "line": 715, + "line": 714, "column": 104 }, "end": { - "line": 715, + "line": 714, "column": 105 } } @@ -104997,15 +104719,15 @@ "binop": null }, "value": "_updates", - "start": 23603, - "end": 23611, + "start": 23543, + "end": 23551, "loc": { "start": { - "line": 715, + "line": 714, "column": 105 }, "end": { - "line": 715, + "line": 714, "column": 113 } } @@ -105022,15 +104744,15 @@ "postfix": false, "binop": null }, - "start": 23611, - "end": 23612, + "start": 23551, + "end": 23552, "loc": { "start": { - "line": 715, + "line": 714, "column": 113 }, "end": { - "line": 715, + "line": 714, "column": 114 } } @@ -105048,15 +104770,15 @@ "binop": null, "updateContext": null }, - "start": 23612, - "end": 23613, + "start": 23552, + "end": 23553, "loc": { "start": { - "line": 715, + "line": 714, "column": 114 }, "end": { - "line": 715, + "line": 714, "column": 115 } } @@ -105076,15 +104798,15 @@ "updateContext": null }, "value": "new", - "start": 23626, - "end": 23629, + "start": 23566, + "end": 23569, "loc": { "start": { - "line": 716, + "line": 715, "column": 12 }, "end": { - "line": 716, + "line": 715, "column": 15 } } @@ -105102,15 +104824,15 @@ "binop": null }, "value": "MousePickHandler", - "start": 23630, - "end": 23646, + "start": 23570, + "end": 23586, "loc": { "start": { - "line": 716, + "line": 715, "column": 16 }, "end": { - "line": 716, + "line": 715, "column": 32 } } @@ -105127,15 +104849,15 @@ "postfix": false, "binop": null }, - "start": 23646, - "end": 23647, + "start": 23586, + "end": 23587, "loc": { "start": { - "line": 716, + "line": 715, "column": 32 }, "end": { - "line": 716, + "line": 715, "column": 33 } } @@ -105155,15 +104877,15 @@ "updateContext": null }, "value": "this", - "start": 23647, - "end": 23651, + "start": 23587, + "end": 23591, "loc": { "start": { - "line": 716, + "line": 715, "column": 33 }, "end": { - "line": 716, + "line": 715, "column": 37 } } @@ -105181,15 +104903,15 @@ "binop": null, "updateContext": null }, - "start": 23651, - "end": 23652, + "start": 23591, + "end": 23592, "loc": { "start": { - "line": 716, + "line": 715, "column": 37 }, "end": { - "line": 716, + "line": 715, "column": 38 } } @@ -105207,15 +104929,15 @@ "binop": null }, "value": "scene", - "start": 23652, - "end": 23657, + "start": 23592, + "end": 23597, "loc": { "start": { - "line": 716, + "line": 715, "column": 38 }, "end": { - "line": 716, + "line": 715, "column": 43 } } @@ -105233,15 +104955,15 @@ "binop": null, "updateContext": null }, - "start": 23657, - "end": 23658, + "start": 23597, + "end": 23598, "loc": { "start": { - "line": 716, + "line": 715, "column": 43 }, "end": { - "line": 716, + "line": 715, "column": 44 } } @@ -105261,15 +104983,15 @@ "updateContext": null }, "value": "this", - "start": 23659, - "end": 23663, + "start": 23599, + "end": 23603, "loc": { "start": { - "line": 716, + "line": 715, "column": 45 }, "end": { - "line": 716, + "line": 715, "column": 49 } } @@ -105287,15 +105009,15 @@ "binop": null, "updateContext": null }, - "start": 23663, - "end": 23664, + "start": 23603, + "end": 23604, "loc": { "start": { - "line": 716, + "line": 715, "column": 49 }, "end": { - "line": 716, + "line": 715, "column": 50 } } @@ -105313,15 +105035,15 @@ "binop": null }, "value": "_controllers", - "start": 23664, - "end": 23676, + "start": 23604, + "end": 23616, "loc": { "start": { - "line": 716, + "line": 715, "column": 50 }, "end": { - "line": 716, + "line": 715, "column": 62 } } @@ -105339,15 +105061,15 @@ "binop": null, "updateContext": null }, - "start": 23676, - "end": 23677, + "start": 23616, + "end": 23617, "loc": { "start": { - "line": 716, + "line": 715, "column": 62 }, "end": { - "line": 716, + "line": 715, "column": 63 } } @@ -105367,15 +105089,15 @@ "updateContext": null }, "value": "this", - "start": 23678, - "end": 23682, + "start": 23618, + "end": 23622, "loc": { "start": { - "line": 716, + "line": 715, "column": 64 }, "end": { - "line": 716, + "line": 715, "column": 68 } } @@ -105393,15 +105115,15 @@ "binop": null, "updateContext": null }, - "start": 23682, - "end": 23683, + "start": 23622, + "end": 23623, "loc": { "start": { - "line": 716, + "line": 715, "column": 68 }, "end": { - "line": 716, + "line": 715, "column": 69 } } @@ -105419,15 +105141,15 @@ "binop": null }, "value": "_configs", - "start": 23683, - "end": 23691, + "start": 23623, + "end": 23631, "loc": { "start": { - "line": 716, + "line": 715, "column": 69 }, "end": { - "line": 716, + "line": 715, "column": 77 } } @@ -105445,15 +105167,15 @@ "binop": null, "updateContext": null }, - "start": 23691, - "end": 23692, + "start": 23631, + "end": 23632, "loc": { "start": { - "line": 716, + "line": 715, "column": 77 }, "end": { - "line": 716, + "line": 715, "column": 78 } } @@ -105473,15 +105195,15 @@ "updateContext": null }, "value": "this", - "start": 23693, - "end": 23697, + "start": 23633, + "end": 23637, "loc": { "start": { - "line": 716, + "line": 715, "column": 79 }, "end": { - "line": 716, + "line": 715, "column": 83 } } @@ -105499,15 +105221,15 @@ "binop": null, "updateContext": null }, - "start": 23697, - "end": 23698, + "start": 23637, + "end": 23638, "loc": { "start": { - "line": 716, + "line": 715, "column": 83 }, "end": { - "line": 716, + "line": 715, "column": 84 } } @@ -105525,15 +105247,15 @@ "binop": null }, "value": "_states", - "start": 23698, - "end": 23705, + "start": 23638, + "end": 23645, "loc": { "start": { - "line": 716, + "line": 715, "column": 84 }, "end": { - "line": 716, + "line": 715, "column": 91 } } @@ -105551,15 +105273,15 @@ "binop": null, "updateContext": null }, - "start": 23705, - "end": 23706, + "start": 23645, + "end": 23646, "loc": { "start": { - "line": 716, + "line": 715, "column": 91 }, "end": { - "line": 716, + "line": 715, "column": 92 } } @@ -105579,15 +105301,15 @@ "updateContext": null }, "value": "this", - "start": 23707, - "end": 23711, + "start": 23647, + "end": 23651, "loc": { "start": { - "line": 716, + "line": 715, "column": 93 }, "end": { - "line": 716, + "line": 715, "column": 97 } } @@ -105605,15 +105327,15 @@ "binop": null, "updateContext": null }, - "start": 23711, - "end": 23712, + "start": 23651, + "end": 23652, "loc": { "start": { - "line": 716, + "line": 715, "column": 97 }, "end": { - "line": 716, + "line": 715, "column": 98 } } @@ -105631,15 +105353,15 @@ "binop": null }, "value": "_updates", - "start": 23712, - "end": 23720, + "start": 23652, + "end": 23660, "loc": { "start": { - "line": 716, + "line": 715, "column": 98 }, "end": { - "line": 716, + "line": 715, "column": 106 } } @@ -105656,15 +105378,15 @@ "postfix": false, "binop": null }, - "start": 23720, - "end": 23721, + "start": 23660, + "end": 23661, "loc": { "start": { - "line": 716, + "line": 715, "column": 106 }, "end": { - "line": 716, + "line": 715, "column": 107 } } @@ -105682,15 +105404,15 @@ "binop": null, "updateContext": null }, - "start": 23721, - "end": 23722, + "start": 23661, + "end": 23662, "loc": { "start": { - "line": 716, + "line": 715, "column": 107 }, "end": { - "line": 716, + "line": 715, "column": 108 } } @@ -105710,15 +105432,15 @@ "updateContext": null }, "value": "new", - "start": 23735, - "end": 23738, + "start": 23675, + "end": 23678, "loc": { "start": { - "line": 717, + "line": 716, "column": 12 }, "end": { - "line": 717, + "line": 716, "column": 15 } } @@ -105736,15 +105458,15 @@ "binop": null }, "value": "TouchPickHandler", - "start": 23739, - "end": 23755, + "start": 23679, + "end": 23695, "loc": { "start": { - "line": 717, + "line": 716, "column": 16 }, "end": { - "line": 717, + "line": 716, "column": 32 } } @@ -105761,15 +105483,15 @@ "postfix": false, "binop": null }, - "start": 23755, - "end": 23756, + "start": 23695, + "end": 23696, "loc": { "start": { - "line": 717, + "line": 716, "column": 32 }, "end": { - "line": 717, + "line": 716, "column": 33 } } @@ -105789,15 +105511,15 @@ "updateContext": null }, "value": "this", - "start": 23756, - "end": 23760, + "start": 23696, + "end": 23700, "loc": { "start": { - "line": 717, + "line": 716, "column": 33 }, "end": { - "line": 717, + "line": 716, "column": 37 } } @@ -105815,15 +105537,15 @@ "binop": null, "updateContext": null }, - "start": 23760, - "end": 23761, + "start": 23700, + "end": 23701, "loc": { "start": { - "line": 717, + "line": 716, "column": 37 }, "end": { - "line": 717, + "line": 716, "column": 38 } } @@ -105841,15 +105563,15 @@ "binop": null }, "value": "scene", - "start": 23761, - "end": 23766, + "start": 23701, + "end": 23706, "loc": { "start": { - "line": 717, + "line": 716, "column": 38 }, "end": { - "line": 717, + "line": 716, "column": 43 } } @@ -105867,15 +105589,15 @@ "binop": null, "updateContext": null }, - "start": 23766, - "end": 23767, + "start": 23706, + "end": 23707, "loc": { "start": { - "line": 717, + "line": 716, "column": 43 }, "end": { - "line": 717, + "line": 716, "column": 44 } } @@ -105895,15 +105617,15 @@ "updateContext": null }, "value": "this", - "start": 23768, - "end": 23772, + "start": 23708, + "end": 23712, "loc": { "start": { - "line": 717, + "line": 716, "column": 45 }, "end": { - "line": 717, + "line": 716, "column": 49 } } @@ -105921,15 +105643,15 @@ "binop": null, "updateContext": null }, - "start": 23772, - "end": 23773, + "start": 23712, + "end": 23713, "loc": { "start": { - "line": 717, + "line": 716, "column": 49 }, "end": { - "line": 717, + "line": 716, "column": 50 } } @@ -105947,15 +105669,15 @@ "binop": null }, "value": "_controllers", - "start": 23773, - "end": 23785, + "start": 23713, + "end": 23725, "loc": { "start": { - "line": 717, + "line": 716, "column": 50 }, "end": { - "line": 717, + "line": 716, "column": 62 } } @@ -105973,15 +105695,15 @@ "binop": null, "updateContext": null }, - "start": 23785, - "end": 23786, + "start": 23725, + "end": 23726, "loc": { "start": { - "line": 717, + "line": 716, "column": 62 }, "end": { - "line": 717, + "line": 716, "column": 63 } } @@ -106001,15 +105723,15 @@ "updateContext": null }, "value": "this", - "start": 23787, - "end": 23791, + "start": 23727, + "end": 23731, "loc": { "start": { - "line": 717, + "line": 716, "column": 64 }, "end": { - "line": 717, + "line": 716, "column": 68 } } @@ -106027,15 +105749,15 @@ "binop": null, "updateContext": null }, - "start": 23791, - "end": 23792, + "start": 23731, + "end": 23732, "loc": { "start": { - "line": 717, + "line": 716, "column": 68 }, "end": { - "line": 717, + "line": 716, "column": 69 } } @@ -106053,15 +105775,15 @@ "binop": null }, "value": "_configs", - "start": 23792, - "end": 23800, + "start": 23732, + "end": 23740, "loc": { "start": { - "line": 717, + "line": 716, "column": 69 }, "end": { - "line": 717, + "line": 716, "column": 77 } } @@ -106079,15 +105801,15 @@ "binop": null, "updateContext": null }, - "start": 23800, - "end": 23801, + "start": 23740, + "end": 23741, "loc": { "start": { - "line": 717, + "line": 716, "column": 77 }, "end": { - "line": 717, + "line": 716, "column": 78 } } @@ -106107,15 +105829,15 @@ "updateContext": null }, "value": "this", - "start": 23802, - "end": 23806, + "start": 23742, + "end": 23746, "loc": { "start": { - "line": 717, + "line": 716, "column": 79 }, "end": { - "line": 717, + "line": 716, "column": 83 } } @@ -106133,15 +105855,15 @@ "binop": null, "updateContext": null }, - "start": 23806, - "end": 23807, + "start": 23746, + "end": 23747, "loc": { "start": { - "line": 717, + "line": 716, "column": 83 }, "end": { - "line": 717, + "line": 716, "column": 84 } } @@ -106159,15 +105881,15 @@ "binop": null }, "value": "_states", - "start": 23807, - "end": 23814, + "start": 23747, + "end": 23754, "loc": { "start": { - "line": 717, + "line": 716, "column": 84 }, "end": { - "line": 717, + "line": 716, "column": 91 } } @@ -106185,15 +105907,15 @@ "binop": null, "updateContext": null }, - "start": 23814, - "end": 23815, + "start": 23754, + "end": 23755, "loc": { "start": { - "line": 717, + "line": 716, "column": 91 }, "end": { - "line": 717, + "line": 716, "column": 92 } } @@ -106213,15 +105935,15 @@ "updateContext": null }, "value": "this", - "start": 23816, - "end": 23820, + "start": 23756, + "end": 23760, "loc": { "start": { - "line": 717, + "line": 716, "column": 93 }, "end": { - "line": 717, + "line": 716, "column": 97 } } @@ -106239,15 +105961,15 @@ "binop": null, "updateContext": null }, - "start": 23820, - "end": 23821, + "start": 23760, + "end": 23761, "loc": { "start": { - "line": 717, + "line": 716, "column": 97 }, "end": { - "line": 717, + "line": 716, "column": 98 } } @@ -106265,15 +105987,15 @@ "binop": null }, "value": "_updates", - "start": 23821, - "end": 23829, + "start": 23761, + "end": 23769, "loc": { "start": { - "line": 717, + "line": 716, "column": 98 }, "end": { - "line": 717, + "line": 716, "column": 106 } } @@ -106290,15 +106012,15 @@ "postfix": false, "binop": null }, - "start": 23829, - "end": 23830, + "start": 23769, + "end": 23770, "loc": { "start": { - "line": 717, + "line": 716, "column": 106 }, "end": { - "line": 717, + "line": 716, "column": 107 } } @@ -106316,15 +106038,15 @@ "binop": null, "updateContext": null }, - "start": 23830, - "end": 23831, + "start": 23770, + "end": 23771, "loc": { "start": { - "line": 717, + "line": 716, "column": 107 }, "end": { - "line": 717, + "line": 716, "column": 108 } } @@ -106344,15 +106066,15 @@ "updateContext": null }, "value": "new", - "start": 23844, - "end": 23847, + "start": 23784, + "end": 23787, "loc": { "start": { - "line": 718, + "line": 717, "column": 12 }, "end": { - "line": 718, + "line": 717, "column": 15 } } @@ -106370,15 +106092,15 @@ "binop": null }, "value": "KeyboardPanRotateDollyHandler", - "start": 23848, - "end": 23877, + "start": 23788, + "end": 23817, "loc": { "start": { - "line": 718, + "line": 717, "column": 16 }, "end": { - "line": 718, + "line": 717, "column": 45 } } @@ -106395,15 +106117,15 @@ "postfix": false, "binop": null }, - "start": 23877, - "end": 23878, + "start": 23817, + "end": 23818, "loc": { "start": { - "line": 718, + "line": 717, "column": 45 }, "end": { - "line": 718, + "line": 717, "column": 46 } } @@ -106423,15 +106145,15 @@ "updateContext": null }, "value": "this", - "start": 23878, - "end": 23882, + "start": 23818, + "end": 23822, "loc": { "start": { - "line": 718, + "line": 717, "column": 46 }, "end": { - "line": 718, + "line": 717, "column": 50 } } @@ -106449,15 +106171,15 @@ "binop": null, "updateContext": null }, - "start": 23882, - "end": 23883, + "start": 23822, + "end": 23823, "loc": { "start": { - "line": 718, + "line": 717, "column": 50 }, "end": { - "line": 718, + "line": 717, "column": 51 } } @@ -106475,15 +106197,15 @@ "binop": null }, "value": "scene", - "start": 23883, - "end": 23888, + "start": 23823, + "end": 23828, "loc": { "start": { - "line": 718, + "line": 717, "column": 51 }, "end": { - "line": 718, + "line": 717, "column": 56 } } @@ -106501,15 +106223,15 @@ "binop": null, "updateContext": null }, - "start": 23888, - "end": 23889, + "start": 23828, + "end": 23829, "loc": { "start": { - "line": 718, + "line": 717, "column": 56 }, "end": { - "line": 718, + "line": 717, "column": 57 } } @@ -106529,15 +106251,15 @@ "updateContext": null }, "value": "this", - "start": 23890, - "end": 23894, + "start": 23830, + "end": 23834, "loc": { "start": { - "line": 718, + "line": 717, "column": 58 }, "end": { - "line": 718, + "line": 717, "column": 62 } } @@ -106555,15 +106277,15 @@ "binop": null, "updateContext": null }, - "start": 23894, - "end": 23895, + "start": 23834, + "end": 23835, "loc": { "start": { - "line": 718, + "line": 717, "column": 62 }, "end": { - "line": 718, + "line": 717, "column": 63 } } @@ -106581,15 +106303,15 @@ "binop": null }, "value": "_controllers", - "start": 23895, - "end": 23907, + "start": 23835, + "end": 23847, "loc": { "start": { - "line": 718, + "line": 717, "column": 63 }, "end": { - "line": 718, + "line": 717, "column": 75 } } @@ -106607,15 +106329,15 @@ "binop": null, "updateContext": null }, - "start": 23907, - "end": 23908, + "start": 23847, + "end": 23848, "loc": { "start": { - "line": 718, + "line": 717, "column": 75 }, "end": { - "line": 718, + "line": 717, "column": 76 } } @@ -106635,15 +106357,15 @@ "updateContext": null }, "value": "this", - "start": 23909, - "end": 23913, + "start": 23849, + "end": 23853, "loc": { "start": { - "line": 718, + "line": 717, "column": 77 }, "end": { - "line": 718, + "line": 717, "column": 81 } } @@ -106661,15 +106383,15 @@ "binop": null, "updateContext": null }, - "start": 23913, - "end": 23914, + "start": 23853, + "end": 23854, "loc": { "start": { - "line": 718, + "line": 717, "column": 81 }, "end": { - "line": 718, + "line": 717, "column": 82 } } @@ -106687,15 +106409,15 @@ "binop": null }, "value": "_configs", - "start": 23914, - "end": 23922, + "start": 23854, + "end": 23862, "loc": { "start": { - "line": 718, + "line": 717, "column": 82 }, "end": { - "line": 718, + "line": 717, "column": 90 } } @@ -106713,15 +106435,15 @@ "binop": null, "updateContext": null }, - "start": 23922, - "end": 23923, + "start": 23862, + "end": 23863, "loc": { "start": { - "line": 718, + "line": 717, "column": 90 }, "end": { - "line": 718, + "line": 717, "column": 91 } } @@ -106741,15 +106463,15 @@ "updateContext": null }, "value": "this", - "start": 23924, - "end": 23928, + "start": 23864, + "end": 23868, "loc": { "start": { - "line": 718, + "line": 717, "column": 92 }, "end": { - "line": 718, + "line": 717, "column": 96 } } @@ -106767,15 +106489,15 @@ "binop": null, "updateContext": null }, - "start": 23928, - "end": 23929, + "start": 23868, + "end": 23869, "loc": { "start": { - "line": 718, + "line": 717, "column": 96 }, "end": { - "line": 718, + "line": 717, "column": 97 } } @@ -106793,15 +106515,15 @@ "binop": null }, "value": "_states", - "start": 23929, - "end": 23936, + "start": 23869, + "end": 23876, "loc": { "start": { - "line": 718, + "line": 717, "column": 97 }, "end": { - "line": 718, + "line": 717, "column": 104 } } @@ -106819,15 +106541,15 @@ "binop": null, "updateContext": null }, - "start": 23936, - "end": 23937, + "start": 23876, + "end": 23877, "loc": { "start": { - "line": 718, + "line": 717, "column": 104 }, "end": { - "line": 718, + "line": 717, "column": 105 } } @@ -106847,15 +106569,15 @@ "updateContext": null }, "value": "this", - "start": 23938, - "end": 23942, + "start": 23878, + "end": 23882, "loc": { "start": { - "line": 718, + "line": 717, "column": 106 }, "end": { - "line": 718, + "line": 717, "column": 110 } } @@ -106873,15 +106595,15 @@ "binop": null, "updateContext": null }, - "start": 23942, - "end": 23943, + "start": 23882, + "end": 23883, "loc": { "start": { - "line": 718, + "line": 717, "column": 110 }, "end": { - "line": 718, + "line": 717, "column": 111 } } @@ -106899,15 +106621,15 @@ "binop": null }, "value": "_updates", - "start": 23943, - "end": 23951, + "start": 23883, + "end": 23891, "loc": { "start": { - "line": 718, + "line": 717, "column": 111 }, "end": { - "line": 718, + "line": 717, "column": 119 } } @@ -106924,15 +106646,15 @@ "postfix": false, "binop": null }, - "start": 23951, - "end": 23952, + "start": 23891, + "end": 23892, "loc": { "start": { - "line": 718, + "line": 717, "column": 119 }, "end": { - "line": 718, + "line": 717, "column": 120 } } @@ -106950,15 +106672,15 @@ "binop": null, "updateContext": null }, - "start": 23961, - "end": 23962, + "start": 23901, + "end": 23902, "loc": { "start": { - "line": 719, + "line": 718, "column": 8 }, "end": { - "line": 719, + "line": 718, "column": 9 } } @@ -106976,15 +106698,15 @@ "binop": null, "updateContext": null }, - "start": 23962, - "end": 23963, + "start": 23902, + "end": 23903, "loc": { "start": { - "line": 719, + "line": 718, "column": 9 }, "end": { - "line": 719, + "line": 718, "column": 10 } } @@ -106992,15 +106714,15 @@ { "type": "CommentLine", "value": " Applies scheduled updates to the Camera on each Scene \"tick\" event", - "start": 23973, - "end": 24042, + "start": 23913, + "end": 23982, "loc": { "start": { - "line": 721, + "line": 720, "column": 8 }, "end": { - "line": 721, + "line": 720, "column": 77 } } @@ -107020,15 +106742,15 @@ "updateContext": null }, "value": "this", - "start": 24052, - "end": 24056, + "start": 23992, + "end": 23996, "loc": { "start": { - "line": 723, + "line": 722, "column": 8 }, "end": { - "line": 723, + "line": 722, "column": 12 } } @@ -107046,15 +106768,15 @@ "binop": null, "updateContext": null }, - "start": 24056, - "end": 24057, + "start": 23996, + "end": 23997, "loc": { "start": { - "line": 723, + "line": 722, "column": 12 }, "end": { - "line": 723, + "line": 722, "column": 13 } } @@ -107072,15 +106794,15 @@ "binop": null }, "value": "_cameraUpdater", - "start": 24057, - "end": 24071, + "start": 23997, + "end": 24011, "loc": { "start": { - "line": 723, + "line": 722, "column": 13 }, "end": { - "line": 723, + "line": 722, "column": 27 } } @@ -107099,15 +106821,15 @@ "updateContext": null }, "value": "=", - "start": 24072, - "end": 24073, + "start": 24012, + "end": 24013, "loc": { "start": { - "line": 723, + "line": 722, "column": 28 }, "end": { - "line": 723, + "line": 722, "column": 29 } } @@ -107127,15 +106849,15 @@ "updateContext": null }, "value": "new", - "start": 24074, - "end": 24077, + "start": 24014, + "end": 24017, "loc": { "start": { - "line": 723, + "line": 722, "column": 30 }, "end": { - "line": 723, + "line": 722, "column": 33 } } @@ -107153,15 +106875,15 @@ "binop": null }, "value": "CameraUpdater", - "start": 24078, - "end": 24091, + "start": 24018, + "end": 24031, "loc": { "start": { - "line": 723, + "line": 722, "column": 34 }, "end": { - "line": 723, + "line": 722, "column": 47 } } @@ -107178,15 +106900,15 @@ "postfix": false, "binop": null }, - "start": 24091, - "end": 24092, + "start": 24031, + "end": 24032, "loc": { "start": { - "line": 723, + "line": 722, "column": 47 }, "end": { - "line": 723, + "line": 722, "column": 48 } } @@ -107206,15 +106928,15 @@ "updateContext": null }, "value": "this", - "start": 24092, - "end": 24096, + "start": 24032, + "end": 24036, "loc": { "start": { - "line": 723, + "line": 722, "column": 48 }, "end": { - "line": 723, + "line": 722, "column": 52 } } @@ -107232,15 +106954,15 @@ "binop": null, "updateContext": null }, - "start": 24096, - "end": 24097, + "start": 24036, + "end": 24037, "loc": { "start": { - "line": 723, + "line": 722, "column": 52 }, "end": { - "line": 723, + "line": 722, "column": 53 } } @@ -107258,15 +106980,15 @@ "binop": null }, "value": "scene", - "start": 24097, - "end": 24102, + "start": 24037, + "end": 24042, "loc": { "start": { - "line": 723, + "line": 722, "column": 53 }, "end": { - "line": 723, + "line": 722, "column": 58 } } @@ -107284,15 +107006,15 @@ "binop": null, "updateContext": null }, - "start": 24102, - "end": 24103, + "start": 24042, + "end": 24043, "loc": { "start": { - "line": 723, + "line": 722, "column": 58 }, "end": { - "line": 723, + "line": 722, "column": 59 } } @@ -107312,15 +107034,15 @@ "updateContext": null }, "value": "this", - "start": 24104, - "end": 24108, + "start": 24044, + "end": 24048, "loc": { "start": { - "line": 723, + "line": 722, "column": 60 }, "end": { - "line": 723, + "line": 722, "column": 64 } } @@ -107338,15 +107060,15 @@ "binop": null, "updateContext": null }, - "start": 24108, - "end": 24109, + "start": 24048, + "end": 24049, "loc": { "start": { - "line": 723, + "line": 722, "column": 64 }, "end": { - "line": 723, + "line": 722, "column": 65 } } @@ -107364,15 +107086,15 @@ "binop": null }, "value": "_controllers", - "start": 24109, - "end": 24121, + "start": 24049, + "end": 24061, "loc": { "start": { - "line": 723, + "line": 722, "column": 65 }, "end": { - "line": 723, + "line": 722, "column": 77 } } @@ -107390,15 +107112,15 @@ "binop": null, "updateContext": null }, - "start": 24121, - "end": 24122, + "start": 24061, + "end": 24062, "loc": { "start": { - "line": 723, + "line": 722, "column": 77 }, "end": { - "line": 723, + "line": 722, "column": 78 } } @@ -107418,15 +107140,15 @@ "updateContext": null }, "value": "this", - "start": 24123, - "end": 24127, + "start": 24063, + "end": 24067, "loc": { "start": { - "line": 723, + "line": 722, "column": 79 }, "end": { - "line": 723, + "line": 722, "column": 83 } } @@ -107444,15 +107166,15 @@ "binop": null, "updateContext": null }, - "start": 24127, - "end": 24128, + "start": 24067, + "end": 24068, "loc": { "start": { - "line": 723, + "line": 722, "column": 83 }, "end": { - "line": 723, + "line": 722, "column": 84 } } @@ -107470,15 +107192,15 @@ "binop": null }, "value": "_configs", - "start": 24128, - "end": 24136, + "start": 24068, + "end": 24076, "loc": { "start": { - "line": 723, + "line": 722, "column": 84 }, "end": { - "line": 723, + "line": 722, "column": 92 } } @@ -107496,15 +107218,15 @@ "binop": null, "updateContext": null }, - "start": 24136, - "end": 24137, + "start": 24076, + "end": 24077, "loc": { "start": { - "line": 723, + "line": 722, "column": 92 }, "end": { - "line": 723, + "line": 722, "column": 93 } } @@ -107524,15 +107246,15 @@ "updateContext": null }, "value": "this", - "start": 24138, - "end": 24142, + "start": 24078, + "end": 24082, "loc": { "start": { - "line": 723, + "line": 722, "column": 94 }, "end": { - "line": 723, + "line": 722, "column": 98 } } @@ -107550,15 +107272,15 @@ "binop": null, "updateContext": null }, - "start": 24142, - "end": 24143, + "start": 24082, + "end": 24083, "loc": { "start": { - "line": 723, + "line": 722, "column": 98 }, "end": { - "line": 723, + "line": 722, "column": 99 } } @@ -107576,15 +107298,15 @@ "binop": null }, "value": "_states", - "start": 24143, - "end": 24150, + "start": 24083, + "end": 24090, "loc": { "start": { - "line": 723, + "line": 722, "column": 99 }, "end": { - "line": 723, + "line": 722, "column": 106 } } @@ -107602,15 +107324,15 @@ "binop": null, "updateContext": null }, - "start": 24150, - "end": 24151, + "start": 24090, + "end": 24091, "loc": { "start": { - "line": 723, + "line": 722, "column": 106 }, "end": { - "line": 723, + "line": 722, "column": 107 } } @@ -107630,15 +107352,15 @@ "updateContext": null }, "value": "this", - "start": 24152, - "end": 24156, + "start": 24092, + "end": 24096, "loc": { "start": { - "line": 723, + "line": 722, "column": 108 }, "end": { - "line": 723, + "line": 722, "column": 112 } } @@ -107656,15 +107378,15 @@ "binop": null, "updateContext": null }, - "start": 24156, - "end": 24157, + "start": 24096, + "end": 24097, "loc": { "start": { - "line": 723, + "line": 722, "column": 112 }, "end": { - "line": 723, + "line": 722, "column": 113 } } @@ -107682,15 +107404,15 @@ "binop": null }, "value": "_updates", - "start": 24157, - "end": 24165, + "start": 24097, + "end": 24105, "loc": { "start": { - "line": 723, + "line": 722, "column": 113 }, "end": { - "line": 723, + "line": 722, "column": 121 } } @@ -107707,15 +107429,15 @@ "postfix": false, "binop": null }, - "start": 24165, - "end": 24166, + "start": 24105, + "end": 24106, "loc": { "start": { - "line": 723, + "line": 722, "column": 121 }, "end": { - "line": 723, + "line": 722, "column": 122 } } @@ -107733,15 +107455,15 @@ "binop": null, "updateContext": null }, - "start": 24166, - "end": 24167, + "start": 24106, + "end": 24107, "loc": { "start": { - "line": 723, + "line": 722, "column": 122 }, "end": { - "line": 723, + "line": 722, "column": 123 } } @@ -107749,15 +107471,15 @@ { "type": "CommentLine", "value": " Set initial user configurations", - "start": 24177, - "end": 24211, + "start": 24117, + "end": 24151, "loc": { "start": { - "line": 725, + "line": 724, "column": 8 }, "end": { - "line": 725, + "line": 724, "column": 42 } } @@ -107777,15 +107499,15 @@ "updateContext": null }, "value": "this", - "start": 24221, - "end": 24225, + "start": 24161, + "end": 24165, "loc": { "start": { - "line": 727, + "line": 726, "column": 8 }, "end": { - "line": 727, + "line": 726, "column": 12 } } @@ -107803,15 +107525,15 @@ "binop": null, "updateContext": null }, - "start": 24225, - "end": 24226, + "start": 24165, + "end": 24166, "loc": { "start": { - "line": 727, + "line": 726, "column": 12 }, "end": { - "line": 727, + "line": 726, "column": 13 } } @@ -107829,15 +107551,15 @@ "binop": null }, "value": "navMode", - "start": 24226, - "end": 24233, + "start": 24166, + "end": 24173, "loc": { "start": { - "line": 727, + "line": 726, "column": 13 }, "end": { - "line": 727, + "line": 726, "column": 20 } } @@ -107856,15 +107578,15 @@ "updateContext": null }, "value": "=", - "start": 24234, - "end": 24235, + "start": 24174, + "end": 24175, "loc": { "start": { - "line": 727, + "line": 726, "column": 21 }, "end": { - "line": 727, + "line": 726, "column": 22 } } @@ -107882,15 +107604,15 @@ "binop": null }, "value": "cfg", - "start": 24236, - "end": 24239, + "start": 24176, + "end": 24179, "loc": { "start": { - "line": 727, + "line": 726, "column": 23 }, "end": { - "line": 727, + "line": 726, "column": 26 } } @@ -107908,15 +107630,15 @@ "binop": null, "updateContext": null }, - "start": 24239, - "end": 24240, + "start": 24179, + "end": 24180, "loc": { "start": { - "line": 727, + "line": 726, "column": 26 }, "end": { - "line": 727, + "line": 726, "column": 27 } } @@ -107934,15 +107656,15 @@ "binop": null }, "value": "navMode", - "start": 24240, - "end": 24247, + "start": 24180, + "end": 24187, "loc": { "start": { - "line": 727, + "line": 726, "column": 27 }, "end": { - "line": 727, + "line": 726, "column": 34 } } @@ -107960,15 +107682,15 @@ "binop": null, "updateContext": null }, - "start": 24247, - "end": 24248, + "start": 24187, + "end": 24188, "loc": { "start": { - "line": 727, + "line": 726, "column": 34 }, "end": { - "line": 727, + "line": 726, "column": 35 } } @@ -107988,15 +107710,15 @@ "updateContext": null }, "value": "if", - "start": 24257, - "end": 24259, + "start": 24197, + "end": 24199, "loc": { "start": { - "line": 728, + "line": 727, "column": 8 }, "end": { - "line": 728, + "line": 727, "column": 10 } } @@ -108013,15 +107735,15 @@ "postfix": false, "binop": null }, - "start": 24260, - "end": 24261, + "start": 24200, + "end": 24201, "loc": { "start": { - "line": 728, + "line": 727, "column": 11 }, "end": { - "line": 728, + "line": 727, "column": 12 } } @@ -108039,15 +107761,15 @@ "binop": null }, "value": "cfg", - "start": 24261, - "end": 24264, + "start": 24201, + "end": 24204, "loc": { "start": { - "line": 728, + "line": 727, "column": 12 }, "end": { - "line": 728, + "line": 727, "column": 15 } } @@ -108065,15 +107787,15 @@ "binop": null, "updateContext": null }, - "start": 24264, - "end": 24265, + "start": 24204, + "end": 24205, "loc": { "start": { - "line": 728, + "line": 727, "column": 15 }, "end": { - "line": 728, + "line": 727, "column": 16 } } @@ -108091,15 +107813,15 @@ "binop": null }, "value": "planView", - "start": 24265, - "end": 24273, + "start": 24205, + "end": 24213, "loc": { "start": { - "line": 728, + "line": 727, "column": 16 }, "end": { - "line": 728, + "line": 727, "column": 24 } } @@ -108116,15 +107838,15 @@ "postfix": false, "binop": null }, - "start": 24273, - "end": 24274, + "start": 24213, + "end": 24214, "loc": { "start": { - "line": 728, + "line": 727, "column": 24 }, "end": { - "line": 728, + "line": 727, "column": 25 } } @@ -108141,15 +107863,15 @@ "postfix": false, "binop": null }, - "start": 24275, - "end": 24276, + "start": 24215, + "end": 24216, "loc": { "start": { - "line": 728, + "line": 727, "column": 26 }, "end": { - "line": 728, + "line": 727, "column": 27 } } @@ -108169,15 +107891,15 @@ "updateContext": null }, "value": "this", - "start": 24289, - "end": 24293, + "start": 24229, + "end": 24233, "loc": { "start": { - "line": 729, + "line": 728, "column": 12 }, "end": { - "line": 729, + "line": 728, "column": 16 } } @@ -108195,15 +107917,15 @@ "binop": null, "updateContext": null }, - "start": 24293, - "end": 24294, + "start": 24233, + "end": 24234, "loc": { "start": { - "line": 729, + "line": 728, "column": 16 }, "end": { - "line": 729, + "line": 728, "column": 17 } } @@ -108221,15 +107943,15 @@ "binop": null }, "value": "planView", - "start": 24294, - "end": 24302, + "start": 24234, + "end": 24242, "loc": { "start": { - "line": 729, + "line": 728, "column": 17 }, "end": { - "line": 729, + "line": 728, "column": 25 } } @@ -108248,15 +107970,15 @@ "updateContext": null }, "value": "=", - "start": 24303, - "end": 24304, + "start": 24243, + "end": 24244, "loc": { "start": { - "line": 729, + "line": 728, "column": 26 }, "end": { - "line": 729, + "line": 728, "column": 27 } } @@ -108274,15 +107996,15 @@ "binop": null }, "value": "cfg", - "start": 24305, - "end": 24308, + "start": 24245, + "end": 24248, "loc": { "start": { - "line": 729, + "line": 728, "column": 28 }, "end": { - "line": 729, + "line": 728, "column": 31 } } @@ -108300,15 +108022,15 @@ "binop": null, "updateContext": null }, - "start": 24308, - "end": 24309, + "start": 24248, + "end": 24249, "loc": { "start": { - "line": 729, + "line": 728, "column": 31 }, "end": { - "line": 729, + "line": 728, "column": 32 } } @@ -108326,15 +108048,15 @@ "binop": null }, "value": "planView", - "start": 24309, - "end": 24317, + "start": 24249, + "end": 24257, "loc": { "start": { - "line": 729, + "line": 728, "column": 32 }, "end": { - "line": 729, + "line": 728, "column": 40 } } @@ -108352,15 +108074,15 @@ "binop": null, "updateContext": null }, - "start": 24317, - "end": 24318, + "start": 24257, + "end": 24258, "loc": { "start": { - "line": 729, + "line": 728, "column": 40 }, "end": { - "line": 729, + "line": 728, "column": 41 } } @@ -108377,15 +108099,15 @@ "postfix": false, "binop": null }, - "start": 24327, - "end": 24328, + "start": 24267, + "end": 24268, "loc": { "start": { - "line": 730, + "line": 729, "column": 8 }, "end": { - "line": 730, + "line": 729, "column": 9 } } @@ -108405,15 +108127,15 @@ "updateContext": null }, "value": "this", - "start": 24337, - "end": 24341, + "start": 24277, + "end": 24281, "loc": { "start": { - "line": 731, + "line": 730, "column": 8 }, "end": { - "line": 731, + "line": 730, "column": 12 } } @@ -108431,15 +108153,15 @@ "binop": null, "updateContext": null }, - "start": 24341, - "end": 24342, + "start": 24281, + "end": 24282, "loc": { "start": { - "line": 731, + "line": 730, "column": 12 }, "end": { - "line": 731, + "line": 730, "column": 13 } } @@ -108457,15 +108179,15 @@ "binop": null }, "value": "constrainVertical", - "start": 24342, - "end": 24359, + "start": 24282, + "end": 24299, "loc": { "start": { - "line": 731, + "line": 730, "column": 13 }, "end": { - "line": 731, + "line": 730, "column": 30 } } @@ -108484,15 +108206,15 @@ "updateContext": null }, "value": "=", - "start": 24360, - "end": 24361, + "start": 24300, + "end": 24301, "loc": { "start": { - "line": 731, + "line": 730, "column": 31 }, "end": { - "line": 731, + "line": 730, "column": 32 } } @@ -108510,15 +108232,15 @@ "binop": null }, "value": "cfg", - "start": 24362, - "end": 24365, + "start": 24302, + "end": 24305, "loc": { "start": { - "line": 731, + "line": 730, "column": 33 }, "end": { - "line": 731, + "line": 730, "column": 36 } } @@ -108536,15 +108258,15 @@ "binop": null, "updateContext": null }, - "start": 24365, - "end": 24366, + "start": 24305, + "end": 24306, "loc": { "start": { - "line": 731, + "line": 730, "column": 36 }, "end": { - "line": 731, + "line": 730, "column": 37 } } @@ -108562,15 +108284,15 @@ "binop": null }, "value": "constrainVertical", - "start": 24366, - "end": 24383, + "start": 24306, + "end": 24323, "loc": { "start": { - "line": 731, + "line": 730, "column": 37 }, "end": { - "line": 731, + "line": 730, "column": 54 } } @@ -108588,15 +108310,15 @@ "binop": null, "updateContext": null }, - "start": 24383, - "end": 24384, + "start": 24323, + "end": 24324, "loc": { "start": { - "line": 731, + "line": 730, "column": 54 }, "end": { - "line": 731, + "line": 730, "column": 55 } } @@ -108616,15 +108338,15 @@ "updateContext": null }, "value": "if", - "start": 24393, - "end": 24395, + "start": 24333, + "end": 24335, "loc": { "start": { - "line": 732, + "line": 731, "column": 8 }, "end": { - "line": 732, + "line": 731, "column": 10 } } @@ -108641,15 +108363,15 @@ "postfix": false, "binop": null }, - "start": 24396, - "end": 24397, + "start": 24336, + "end": 24337, "loc": { "start": { - "line": 732, + "line": 731, "column": 11 }, "end": { - "line": 732, + "line": 731, "column": 12 } } @@ -108667,15 +108389,15 @@ "binop": null }, "value": "cfg", - "start": 24397, - "end": 24400, + "start": 24337, + "end": 24340, "loc": { "start": { - "line": 732, + "line": 731, "column": 12 }, "end": { - "line": 732, + "line": 731, "column": 15 } } @@ -108693,15 +108415,15 @@ "binop": null, "updateContext": null }, - "start": 24400, - "end": 24401, + "start": 24340, + "end": 24341, "loc": { "start": { - "line": 732, + "line": 731, "column": 15 }, "end": { - "line": 732, + "line": 731, "column": 16 } } @@ -108719,15 +108441,15 @@ "binop": null }, "value": "keyboardLayout", - "start": 24401, - "end": 24415, + "start": 24341, + "end": 24355, "loc": { "start": { - "line": 732, + "line": 731, "column": 16 }, "end": { - "line": 732, + "line": 731, "column": 30 } } @@ -108744,15 +108466,15 @@ "postfix": false, "binop": null }, - "start": 24415, - "end": 24416, + "start": 24355, + "end": 24356, "loc": { "start": { - "line": 732, + "line": 731, "column": 30 }, "end": { - "line": 732, + "line": 731, "column": 31 } } @@ -108769,15 +108491,15 @@ "postfix": false, "binop": null }, - "start": 24417, - "end": 24418, + "start": 24357, + "end": 24358, "loc": { "start": { - "line": 732, + "line": 731, "column": 32 }, "end": { - "line": 732, + "line": 731, "column": 33 } } @@ -108797,15 +108519,15 @@ "updateContext": null }, "value": "this", - "start": 24431, - "end": 24435, + "start": 24371, + "end": 24375, "loc": { "start": { - "line": 733, + "line": 732, "column": 12 }, "end": { - "line": 733, + "line": 732, "column": 16 } } @@ -108823,15 +108545,15 @@ "binop": null, "updateContext": null }, - "start": 24435, - "end": 24436, + "start": 24375, + "end": 24376, "loc": { "start": { - "line": 733, + "line": 732, "column": 16 }, "end": { - "line": 733, + "line": 732, "column": 17 } } @@ -108849,15 +108571,15 @@ "binop": null }, "value": "keyboardLayout", - "start": 24436, - "end": 24450, + "start": 24376, + "end": 24390, "loc": { "start": { - "line": 733, + "line": 732, "column": 17 }, "end": { - "line": 733, + "line": 732, "column": 31 } } @@ -108876,15 +108598,15 @@ "updateContext": null }, "value": "=", - "start": 24451, - "end": 24452, + "start": 24391, + "end": 24392, "loc": { "start": { - "line": 733, + "line": 732, "column": 32 }, "end": { - "line": 733, + "line": 732, "column": 33 } } @@ -108902,15 +108624,15 @@ "binop": null }, "value": "cfg", - "start": 24453, - "end": 24456, + "start": 24393, + "end": 24396, "loc": { "start": { - "line": 733, + "line": 732, "column": 34 }, "end": { - "line": 733, + "line": 732, "column": 37 } } @@ -108928,15 +108650,15 @@ "binop": null, "updateContext": null }, - "start": 24456, - "end": 24457, + "start": 24396, + "end": 24397, "loc": { "start": { - "line": 733, + "line": 732, "column": 37 }, "end": { - "line": 733, + "line": 732, "column": 38 } } @@ -108954,15 +108676,15 @@ "binop": null }, "value": "keyboardLayout", - "start": 24457, - "end": 24471, + "start": 24397, + "end": 24411, "loc": { "start": { - "line": 733, + "line": 732, "column": 38 }, "end": { - "line": 733, + "line": 732, "column": 52 } } @@ -108980,15 +108702,15 @@ "binop": null, "updateContext": null }, - "start": 24471, - "end": 24472, + "start": 24411, + "end": 24412, "loc": { "start": { - "line": 733, + "line": 732, "column": 52 }, "end": { - "line": 733, + "line": 732, "column": 53 } } @@ -108996,15 +108718,15 @@ { "type": "CommentLine", "value": " Deprecated", - "start": 24473, - "end": 24486, + "start": 24413, + "end": 24426, "loc": { "start": { - "line": 733, + "line": 732, "column": 54 }, "end": { - "line": 733, + "line": 732, "column": 67 } } @@ -109021,15 +108743,15 @@ "postfix": false, "binop": null }, - "start": 24495, - "end": 24496, + "start": 24435, + "end": 24436, "loc": { "start": { - "line": 734, + "line": 733, "column": 8 }, "end": { - "line": 734, + "line": 733, "column": 9 } } @@ -109049,15 +108771,15 @@ "updateContext": null }, "value": "else", - "start": 24497, - "end": 24501, + "start": 24437, + "end": 24441, "loc": { "start": { - "line": 734, + "line": 733, "column": 10 }, "end": { - "line": 734, + "line": 733, "column": 14 } } @@ -109074,15 +108796,15 @@ "postfix": false, "binop": null }, - "start": 24502, - "end": 24503, + "start": 24442, + "end": 24443, "loc": { "start": { - "line": 734, + "line": 733, "column": 15 }, "end": { - "line": 734, + "line": 733, "column": 16 } } @@ -109102,15 +108824,15 @@ "updateContext": null }, "value": "this", - "start": 24516, - "end": 24520, + "start": 24456, + "end": 24460, "loc": { "start": { - "line": 735, + "line": 734, "column": 12 }, "end": { - "line": 735, + "line": 734, "column": 16 } } @@ -109128,15 +108850,15 @@ "binop": null, "updateContext": null }, - "start": 24520, - "end": 24521, + "start": 24460, + "end": 24461, "loc": { "start": { - "line": 735, + "line": 734, "column": 16 }, "end": { - "line": 735, + "line": 734, "column": 17 } } @@ -109154,15 +108876,15 @@ "binop": null }, "value": "keyMap", - "start": 24521, - "end": 24527, + "start": 24461, + "end": 24467, "loc": { "start": { - "line": 735, + "line": 734, "column": 17 }, "end": { - "line": 735, + "line": 734, "column": 23 } } @@ -109181,15 +108903,15 @@ "updateContext": null }, "value": "=", - "start": 24528, - "end": 24529, + "start": 24468, + "end": 24469, "loc": { "start": { - "line": 735, + "line": 734, "column": 24 }, "end": { - "line": 735, + "line": 734, "column": 25 } } @@ -109207,15 +108929,15 @@ "binop": null }, "value": "cfg", - "start": 24530, - "end": 24533, + "start": 24470, + "end": 24473, "loc": { "start": { - "line": 735, + "line": 734, "column": 26 }, "end": { - "line": 735, + "line": 734, "column": 29 } } @@ -109233,15 +108955,15 @@ "binop": null, "updateContext": null }, - "start": 24533, - "end": 24534, + "start": 24473, + "end": 24474, "loc": { "start": { - "line": 735, + "line": 734, "column": 29 }, "end": { - "line": 735, + "line": 734, "column": 30 } } @@ -109259,15 +108981,15 @@ "binop": null }, "value": "keyMap", - "start": 24534, - "end": 24540, + "start": 24474, + "end": 24480, "loc": { "start": { - "line": 735, + "line": 734, "column": 30 }, "end": { - "line": 735, + "line": 734, "column": 36 } } @@ -109285,15 +109007,15 @@ "binop": null, "updateContext": null }, - "start": 24540, - "end": 24541, + "start": 24480, + "end": 24481, "loc": { "start": { - "line": 735, + "line": 734, "column": 36 }, "end": { - "line": 735, + "line": 734, "column": 37 } } @@ -109310,15 +109032,15 @@ "postfix": false, "binop": null }, - "start": 24550, - "end": 24551, + "start": 24490, + "end": 24491, "loc": { "start": { - "line": 736, + "line": 735, "column": 8 }, "end": { - "line": 736, + "line": 735, "column": 9 } } @@ -109338,15 +109060,15 @@ "updateContext": null }, "value": "this", - "start": 24560, - "end": 24564, + "start": 24500, + "end": 24504, "loc": { "start": { - "line": 737, + "line": 736, "column": 8 }, "end": { - "line": 737, + "line": 736, "column": 12 } } @@ -109364,15 +109086,15 @@ "binop": null, "updateContext": null }, - "start": 24564, - "end": 24565, + "start": 24504, + "end": 24505, "loc": { "start": { - "line": 737, + "line": 736, "column": 12 }, "end": { - "line": 737, + "line": 736, "column": 13 } } @@ -109390,15 +109112,15 @@ "binop": null }, "value": "doublePickFlyTo", - "start": 24565, - "end": 24580, + "start": 24505, + "end": 24520, "loc": { "start": { - "line": 737, + "line": 736, "column": 13 }, "end": { - "line": 737, + "line": 736, "column": 28 } } @@ -109417,15 +109139,15 @@ "updateContext": null }, "value": "=", - "start": 24581, - "end": 24582, + "start": 24521, + "end": 24522, "loc": { "start": { - "line": 737, + "line": 736, "column": 29 }, "end": { - "line": 737, + "line": 736, "column": 30 } } @@ -109443,15 +109165,15 @@ "binop": null }, "value": "cfg", - "start": 24583, - "end": 24586, + "start": 24523, + "end": 24526, "loc": { "start": { - "line": 737, + "line": 736, "column": 31 }, "end": { - "line": 737, + "line": 736, "column": 34 } } @@ -109469,15 +109191,15 @@ "binop": null, "updateContext": null }, - "start": 24586, - "end": 24587, + "start": 24526, + "end": 24527, "loc": { "start": { - "line": 737, + "line": 736, "column": 34 }, "end": { - "line": 737, + "line": 736, "column": 35 } } @@ -109495,15 +109217,15 @@ "binop": null }, "value": "doublePickFlyTo", - "start": 24587, - "end": 24602, + "start": 24527, + "end": 24542, "loc": { "start": { - "line": 737, + "line": 736, "column": 35 }, "end": { - "line": 737, + "line": 736, "column": 50 } } @@ -109521,15 +109243,15 @@ "binop": null, "updateContext": null }, - "start": 24602, - "end": 24603, + "start": 24542, + "end": 24543, "loc": { "start": { - "line": 737, + "line": 736, "column": 50 }, "end": { - "line": 737, + "line": 736, "column": 51 } } @@ -109549,15 +109271,15 @@ "updateContext": null }, "value": "this", - "start": 24612, - "end": 24616, + "start": 24552, + "end": 24556, "loc": { "start": { - "line": 738, + "line": 737, "column": 8 }, "end": { - "line": 738, + "line": 737, "column": 12 } } @@ -109575,15 +109297,15 @@ "binop": null, "updateContext": null }, - "start": 24616, - "end": 24617, + "start": 24556, + "end": 24557, "loc": { "start": { - "line": 738, + "line": 737, "column": 12 }, "end": { - "line": 738, + "line": 737, "column": 13 } } @@ -109601,15 +109323,15 @@ "binop": null }, "value": "panRightClick", - "start": 24617, - "end": 24630, + "start": 24557, + "end": 24570, "loc": { "start": { - "line": 738, + "line": 737, "column": 13 }, "end": { - "line": 738, + "line": 737, "column": 26 } } @@ -109628,15 +109350,15 @@ "updateContext": null }, "value": "=", - "start": 24631, - "end": 24632, + "start": 24571, + "end": 24572, "loc": { "start": { - "line": 738, + "line": 737, "column": 27 }, "end": { - "line": 738, + "line": 737, "column": 28 } } @@ -109654,15 +109376,15 @@ "binop": null }, "value": "cfg", - "start": 24633, - "end": 24636, + "start": 24573, + "end": 24576, "loc": { "start": { - "line": 738, + "line": 737, "column": 29 }, "end": { - "line": 738, + "line": 737, "column": 32 } } @@ -109680,15 +109402,15 @@ "binop": null, "updateContext": null }, - "start": 24636, - "end": 24637, + "start": 24576, + "end": 24577, "loc": { "start": { - "line": 738, + "line": 737, "column": 32 }, "end": { - "line": 738, + "line": 737, "column": 33 } } @@ -109706,15 +109428,15 @@ "binop": null }, "value": "panRightClick", - "start": 24637, - "end": 24650, + "start": 24577, + "end": 24590, "loc": { "start": { - "line": 738, + "line": 737, "column": 33 }, "end": { - "line": 738, + "line": 737, "column": 46 } } @@ -109732,15 +109454,15 @@ "binop": null, "updateContext": null }, - "start": 24650, - "end": 24651, + "start": 24590, + "end": 24591, "loc": { "start": { - "line": 738, + "line": 737, "column": 46 }, "end": { - "line": 738, + "line": 737, "column": 47 } } @@ -109760,15 +109482,15 @@ "updateContext": null }, "value": "this", - "start": 24660, - "end": 24664, + "start": 24600, + "end": 24604, "loc": { "start": { - "line": 739, + "line": 738, "column": 8 }, "end": { - "line": 739, + "line": 738, "column": 12 } } @@ -109786,15 +109508,15 @@ "binop": null, "updateContext": null }, - "start": 24664, - "end": 24665, + "start": 24604, + "end": 24605, "loc": { "start": { - "line": 739, + "line": 738, "column": 12 }, "end": { - "line": 739, + "line": 738, "column": 13 } } @@ -109812,15 +109534,15 @@ "binop": null }, "value": "active", - "start": 24665, - "end": 24671, + "start": 24605, + "end": 24611, "loc": { "start": { - "line": 739, + "line": 738, "column": 13 }, "end": { - "line": 739, + "line": 738, "column": 19 } } @@ -109839,15 +109561,15 @@ "updateContext": null }, "value": "=", - "start": 24672, - "end": 24673, + "start": 24612, + "end": 24613, "loc": { "start": { - "line": 739, + "line": 738, "column": 20 }, "end": { - "line": 739, + "line": 738, "column": 21 } } @@ -109865,15 +109587,15 @@ "binop": null }, "value": "cfg", - "start": 24674, - "end": 24677, + "start": 24614, + "end": 24617, "loc": { "start": { - "line": 739, + "line": 738, "column": 22 }, "end": { - "line": 739, + "line": 738, "column": 25 } } @@ -109891,15 +109613,15 @@ "binop": null, "updateContext": null }, - "start": 24677, - "end": 24678, + "start": 24617, + "end": 24618, "loc": { "start": { - "line": 739, + "line": 738, "column": 25 }, "end": { - "line": 739, + "line": 738, "column": 26 } } @@ -109917,15 +109639,15 @@ "binop": null }, "value": "active", - "start": 24678, - "end": 24684, + "start": 24618, + "end": 24624, "loc": { "start": { - "line": 739, + "line": 738, "column": 26 }, "end": { - "line": 739, + "line": 738, "column": 32 } } @@ -109943,15 +109665,15 @@ "binop": null, "updateContext": null }, - "start": 24684, - "end": 24685, + "start": 24624, + "end": 24625, "loc": { "start": { - "line": 739, + "line": 738, "column": 32 }, "end": { - "line": 739, + "line": 738, "column": 33 } } @@ -109971,15 +109693,15 @@ "updateContext": null }, "value": "this", - "start": 24694, - "end": 24698, + "start": 24634, + "end": 24638, "loc": { "start": { - "line": 740, + "line": 739, "column": 8 }, "end": { - "line": 740, + "line": 739, "column": 12 } } @@ -109997,15 +109719,15 @@ "binop": null, "updateContext": null }, - "start": 24698, - "end": 24699, + "start": 24638, + "end": 24639, "loc": { "start": { - "line": 740, + "line": 739, "column": 12 }, "end": { - "line": 740, + "line": 739, "column": 13 } } @@ -110023,15 +109745,15 @@ "binop": null }, "value": "followPointer", - "start": 24699, - "end": 24712, + "start": 24639, + "end": 24652, "loc": { "start": { - "line": 740, + "line": 739, "column": 13 }, "end": { - "line": 740, + "line": 739, "column": 26 } } @@ -110050,15 +109772,15 @@ "updateContext": null }, "value": "=", - "start": 24713, - "end": 24714, + "start": 24653, + "end": 24654, "loc": { "start": { - "line": 740, + "line": 739, "column": 27 }, "end": { - "line": 740, + "line": 739, "column": 28 } } @@ -110076,15 +109798,15 @@ "binop": null }, "value": "cfg", - "start": 24715, - "end": 24718, + "start": 24655, + "end": 24658, "loc": { "start": { - "line": 740, + "line": 739, "column": 29 }, "end": { - "line": 740, + "line": 739, "column": 32 } } @@ -110102,15 +109824,15 @@ "binop": null, "updateContext": null }, - "start": 24718, - "end": 24719, + "start": 24658, + "end": 24659, "loc": { "start": { - "line": 740, + "line": 739, "column": 32 }, "end": { - "line": 740, + "line": 739, "column": 33 } } @@ -110128,15 +109850,15 @@ "binop": null }, "value": "followPointer", - "start": 24719, - "end": 24732, + "start": 24659, + "end": 24672, "loc": { "start": { - "line": 740, + "line": 739, "column": 33 }, "end": { - "line": 740, + "line": 739, "column": 46 } } @@ -110154,15 +109876,15 @@ "binop": null, "updateContext": null }, - "start": 24732, - "end": 24733, + "start": 24672, + "end": 24673, "loc": { "start": { - "line": 740, + "line": 739, "column": 46 }, "end": { - "line": 740, + "line": 739, "column": 47 } } @@ -110182,15 +109904,15 @@ "updateContext": null }, "value": "this", - "start": 24742, - "end": 24746, + "start": 24682, + "end": 24686, "loc": { "start": { - "line": 741, + "line": 740, "column": 8 }, "end": { - "line": 741, + "line": 740, "column": 12 } } @@ -110208,15 +109930,15 @@ "binop": null, "updateContext": null }, - "start": 24746, - "end": 24747, + "start": 24686, + "end": 24687, "loc": { "start": { - "line": 741, + "line": 740, "column": 12 }, "end": { - "line": 741, + "line": 740, "column": 13 } } @@ -110234,15 +109956,15 @@ "binop": null }, "value": "rotationInertia", - "start": 24747, - "end": 24762, + "start": 24687, + "end": 24702, "loc": { "start": { - "line": 741, + "line": 740, "column": 13 }, "end": { - "line": 741, + "line": 740, "column": 28 } } @@ -110261,15 +109983,15 @@ "updateContext": null }, "value": "=", - "start": 24763, - "end": 24764, + "start": 24703, + "end": 24704, "loc": { "start": { - "line": 741, + "line": 740, "column": 29 }, "end": { - "line": 741, + "line": 740, "column": 30 } } @@ -110287,15 +110009,15 @@ "binop": null }, "value": "cfg", - "start": 24765, - "end": 24768, + "start": 24705, + "end": 24708, "loc": { "start": { - "line": 741, + "line": 740, "column": 31 }, "end": { - "line": 741, + "line": 740, "column": 34 } } @@ -110313,15 +110035,15 @@ "binop": null, "updateContext": null }, - "start": 24768, - "end": 24769, + "start": 24708, + "end": 24709, "loc": { "start": { - "line": 741, + "line": 740, "column": 34 }, "end": { - "line": 741, + "line": 740, "column": 35 } } @@ -110339,15 +110061,15 @@ "binop": null }, "value": "rotationInertia", - "start": 24769, - "end": 24784, + "start": 24709, + "end": 24724, "loc": { "start": { - "line": 741, + "line": 740, "column": 35 }, "end": { - "line": 741, + "line": 740, "column": 50 } } @@ -110365,15 +110087,15 @@ "binop": null, "updateContext": null }, - "start": 24784, - "end": 24785, + "start": 24724, + "end": 24725, "loc": { "start": { - "line": 741, + "line": 740, "column": 50 }, "end": { - "line": 741, + "line": 740, "column": 51 } } @@ -110393,15 +110115,15 @@ "updateContext": null }, "value": "this", - "start": 24794, - "end": 24798, + "start": 24734, + "end": 24738, "loc": { "start": { - "line": 742, + "line": 741, "column": 8 }, "end": { - "line": 742, + "line": 741, "column": 12 } } @@ -110419,15 +110141,15 @@ "binop": null, "updateContext": null }, - "start": 24798, - "end": 24799, + "start": 24738, + "end": 24739, "loc": { "start": { - "line": 742, + "line": 741, "column": 12 }, "end": { - "line": 742, + "line": 741, "column": 13 } } @@ -110445,15 +110167,15 @@ "binop": null }, "value": "keyboardPanRate", - "start": 24799, - "end": 24814, + "start": 24739, + "end": 24754, "loc": { "start": { - "line": 742, + "line": 741, "column": 13 }, "end": { - "line": 742, + "line": 741, "column": 28 } } @@ -110472,15 +110194,15 @@ "updateContext": null }, "value": "=", - "start": 24815, - "end": 24816, + "start": 24755, + "end": 24756, "loc": { "start": { - "line": 742, + "line": 741, "column": 29 }, "end": { - "line": 742, + "line": 741, "column": 30 } } @@ -110498,15 +110220,15 @@ "binop": null }, "value": "cfg", - "start": 24817, - "end": 24820, + "start": 24757, + "end": 24760, "loc": { "start": { - "line": 742, + "line": 741, "column": 31 }, "end": { - "line": 742, + "line": 741, "column": 34 } } @@ -110524,15 +110246,15 @@ "binop": null, "updateContext": null }, - "start": 24820, - "end": 24821, + "start": 24760, + "end": 24761, "loc": { "start": { - "line": 742, + "line": 741, "column": 34 }, "end": { - "line": 742, + "line": 741, "column": 35 } } @@ -110550,15 +110272,15 @@ "binop": null }, "value": "keyboardPanRate", - "start": 24821, - "end": 24836, + "start": 24761, + "end": 24776, "loc": { "start": { - "line": 742, + "line": 741, "column": 35 }, "end": { - "line": 742, + "line": 741, "column": 50 } } @@ -110576,15 +110298,15 @@ "binop": null, "updateContext": null }, - "start": 24836, - "end": 24837, + "start": 24776, + "end": 24777, "loc": { "start": { - "line": 742, + "line": 741, "column": 50 }, "end": { - "line": 742, + "line": 741, "column": 51 } } @@ -110604,8 +110326,219 @@ "updateContext": null }, "value": "this", - "start": 24846, - "end": 24850, + "start": 24786, + "end": 24790, + "loc": { + "start": { + "line": 742, + "column": 8 + }, + "end": { + "line": 742, + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 24790, + "end": 24791, + "loc": { + "start": { + "line": 742, + "column": 12 + }, + "end": { + "line": 742, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "touchPanRate", + "start": 24791, + "end": 24803, + "loc": { + "start": { + "line": 742, + "column": 13 + }, + "end": { + "line": 742, + "column": 25 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 24804, + "end": 24805, + "loc": { + "start": { + "line": 742, + "column": 26 + }, + "end": { + "line": 742, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "cfg", + "start": 24806, + "end": 24809, + "loc": { + "start": { + "line": 742, + "column": 28 + }, + "end": { + "line": 742, + "column": 31 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 24809, + "end": 24810, + "loc": { + "start": { + "line": 742, + "column": 31 + }, + "end": { + "line": 742, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "touchPanRate", + "start": 24810, + "end": 24822, + "loc": { + "start": { + "line": 742, + "column": 32 + }, + "end": { + "line": 742, + "column": 44 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 24822, + "end": 24823, + "loc": { + "start": { + "line": 742, + "column": 44 + }, + "end": { + "line": 742, + "column": 45 + } + } + }, + { + "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": 24832, + "end": 24836, "loc": { "start": { "line": 743, @@ -110630,8 +110563,8 @@ "binop": null, "updateContext": null }, - "start": 24850, - "end": 24851, + "start": 24836, + "end": 24837, "loc": { "start": { "line": 743, @@ -110655,9 +110588,9 @@ "postfix": false, "binop": null }, - "value": "touchPanRate", - "start": 24851, - "end": 24863, + "value": "keyboardRotationRate", + "start": 24837, + "end": 24857, "loc": { "start": { "line": 743, @@ -110665,7 +110598,7 @@ }, "end": { "line": 743, - "column": 25 + "column": 33 } } }, @@ -110683,16 +110616,16 @@ "updateContext": null }, "value": "=", - "start": 24864, - "end": 24865, + "start": 24858, + "end": 24859, "loc": { "start": { "line": 743, - "column": 26 + "column": 34 }, "end": { "line": 743, - "column": 27 + "column": 35 } } }, @@ -110709,16 +110642,16 @@ "binop": null }, "value": "cfg", - "start": 24866, - "end": 24869, + "start": 24860, + "end": 24863, "loc": { "start": { "line": 743, - "column": 28 + "column": 36 }, "end": { "line": 743, - "column": 31 + "column": 39 } } }, @@ -110735,16 +110668,16 @@ "binop": null, "updateContext": null }, - "start": 24869, - "end": 24870, + "start": 24863, + "end": 24864, "loc": { "start": { "line": 743, - "column": 31 + "column": 39 }, "end": { "line": 743, - "column": 32 + "column": 40 } } }, @@ -110760,17 +110693,17 @@ "postfix": false, "binop": null }, - "value": "touchPanRate", - "start": 24870, - "end": 24882, + "value": "keyboardRotationRate", + "start": 24864, + "end": 24884, "loc": { "start": { "line": 743, - "column": 32 + "column": 40 }, "end": { "line": 743, - "column": 44 + "column": 60 } } }, @@ -110787,16 +110720,16 @@ "binop": null, "updateContext": null }, - "start": 24882, - "end": 24883, + "start": 24884, + "end": 24885, "loc": { "start": { "line": 743, - "column": 44 + "column": 60 }, "end": { "line": 743, - "column": 45 + "column": 61 } } }, @@ -110815,8 +110748,8 @@ "updateContext": null }, "value": "this", - "start": 24892, - "end": 24896, + "start": 24894, + "end": 24898, "loc": { "start": { "line": 744, @@ -110841,8 +110774,8 @@ "binop": null, "updateContext": null }, - "start": 24896, - "end": 24897, + "start": 24898, + "end": 24899, "loc": { "start": { "line": 744, @@ -110866,9 +110799,9 @@ "postfix": false, "binop": null }, - "value": "keyboardRotationRate", - "start": 24897, - "end": 24917, + "value": "dragRotationRate", + "start": 24899, + "end": 24915, "loc": { "start": { "line": 744, @@ -110876,7 +110809,7 @@ }, "end": { "line": 744, - "column": 33 + "column": 29 } } }, @@ -110894,16 +110827,16 @@ "updateContext": null }, "value": "=", - "start": 24918, - "end": 24919, + "start": 24916, + "end": 24917, "loc": { "start": { "line": 744, - "column": 34 + "column": 30 }, "end": { "line": 744, - "column": 35 + "column": 31 } } }, @@ -110920,16 +110853,16 @@ "binop": null }, "value": "cfg", - "start": 24920, - "end": 24923, + "start": 24918, + "end": 24921, "loc": { "start": { "line": 744, - "column": 36 + "column": 32 }, "end": { "line": 744, - "column": 39 + "column": 35 } } }, @@ -110946,16 +110879,16 @@ "binop": null, "updateContext": null }, - "start": 24923, - "end": 24924, + "start": 24921, + "end": 24922, "loc": { "start": { "line": 744, - "column": 39 + "column": 35 }, "end": { "line": 744, - "column": 40 + "column": 36 } } }, @@ -110971,17 +110904,17 @@ "postfix": false, "binop": null }, - "value": "keyboardRotationRate", - "start": 24924, - "end": 24944, + "value": "dragRotationRate", + "start": 24922, + "end": 24938, "loc": { "start": { "line": 744, - "column": 40 + "column": 36 }, "end": { "line": 744, - "column": 60 + "column": 52 } } }, @@ -110998,16 +110931,16 @@ "binop": null, "updateContext": null }, - "start": 24944, - "end": 24945, + "start": 24938, + "end": 24939, "loc": { "start": { "line": 744, - "column": 60 + "column": 52 }, "end": { "line": 744, - "column": 61 + "column": 53 } } }, @@ -111026,8 +110959,8 @@ "updateContext": null }, "value": "this", - "start": 24954, - "end": 24958, + "start": 24948, + "end": 24952, "loc": { "start": { "line": 745, @@ -111052,8 +110985,8 @@ "binop": null, "updateContext": null }, - "start": 24958, - "end": 24959, + "start": 24952, + "end": 24953, "loc": { "start": { "line": 745, @@ -111077,9 +111010,9 @@ "postfix": false, "binop": null }, - "value": "dragRotationRate", - "start": 24959, - "end": 24975, + "value": "touchDollyRate", + "start": 24953, + "end": 24967, "loc": { "start": { "line": 745, @@ -111087,7 +111020,7 @@ }, "end": { "line": 745, - "column": 29 + "column": 27 } } }, @@ -111105,16 +111038,16 @@ "updateContext": null }, "value": "=", - "start": 24976, - "end": 24977, + "start": 24968, + "end": 24969, "loc": { "start": { "line": 745, - "column": 30 + "column": 28 }, "end": { "line": 745, - "column": 31 + "column": 29 } } }, @@ -111131,16 +111064,16 @@ "binop": null }, "value": "cfg", - "start": 24978, - "end": 24981, + "start": 24970, + "end": 24973, "loc": { "start": { "line": 745, - "column": 32 + "column": 30 }, "end": { "line": 745, - "column": 35 + "column": 33 } } }, @@ -111157,16 +111090,16 @@ "binop": null, "updateContext": null }, - "start": 24981, - "end": 24982, + "start": 24973, + "end": 24974, "loc": { "start": { "line": 745, - "column": 35 + "column": 33 }, "end": { "line": 745, - "column": 36 + "column": 34 } } }, @@ -111182,17 +111115,17 @@ "postfix": false, "binop": null }, - "value": "dragRotationRate", - "start": 24982, - "end": 24998, + "value": "touchDollyRate", + "start": 24974, + "end": 24988, "loc": { "start": { "line": 745, - "column": 36 + "column": 34 }, "end": { "line": 745, - "column": 52 + "column": 48 } } }, @@ -111209,16 +111142,16 @@ "binop": null, "updateContext": null }, - "start": 24998, - "end": 24999, + "start": 24988, + "end": 24989, "loc": { "start": { "line": 745, - "column": 52 + "column": 48 }, "end": { "line": 745, - "column": 53 + "column": 49 } } }, @@ -111237,8 +111170,8 @@ "updateContext": null }, "value": "this", - "start": 25008, - "end": 25012, + "start": 24998, + "end": 25002, "loc": { "start": { "line": 746, @@ -111263,8 +111196,8 @@ "binop": null, "updateContext": null }, - "start": 25012, - "end": 25013, + "start": 25002, + "end": 25003, "loc": { "start": { "line": 746, @@ -111288,9 +111221,9 @@ "postfix": false, "binop": null }, - "value": "touchDollyRate", - "start": 25013, - "end": 25027, + "value": "dollyInertia", + "start": 25003, + "end": 25015, "loc": { "start": { "line": 746, @@ -111298,7 +111231,7 @@ }, "end": { "line": 746, - "column": 27 + "column": 25 } } }, @@ -111316,16 +111249,16 @@ "updateContext": null }, "value": "=", - "start": 25028, - "end": 25029, + "start": 25016, + "end": 25017, "loc": { "start": { "line": 746, - "column": 28 + "column": 26 }, "end": { "line": 746, - "column": 29 + "column": 27 } } }, @@ -111342,16 +111275,16 @@ "binop": null }, "value": "cfg", - "start": 25030, - "end": 25033, + "start": 25018, + "end": 25021, "loc": { "start": { "line": 746, - "column": 30 + "column": 28 }, "end": { "line": 746, - "column": 33 + "column": 31 } } }, @@ -111368,16 +111301,16 @@ "binop": null, "updateContext": null }, - "start": 25033, - "end": 25034, + "start": 25021, + "end": 25022, "loc": { "start": { "line": 746, - "column": 33 + "column": 31 }, "end": { "line": 746, - "column": 34 + "column": 32 } } }, @@ -111393,17 +111326,17 @@ "postfix": false, "binop": null }, - "value": "touchDollyRate", - "start": 25034, - "end": 25048, + "value": "dollyInertia", + "start": 25022, + "end": 25034, "loc": { "start": { "line": 746, - "column": 34 + "column": 32 }, "end": { "line": 746, - "column": 48 + "column": 44 } } }, @@ -111420,16 +111353,16 @@ "binop": null, "updateContext": null }, - "start": 25048, - "end": 25049, + "start": 25034, + "end": 25035, "loc": { "start": { "line": 746, - "column": 48 + "column": 44 }, "end": { "line": 746, - "column": 49 + "column": 45 } } }, @@ -111448,8 +111381,8 @@ "updateContext": null }, "value": "this", - "start": 25058, - "end": 25062, + "start": 25044, + "end": 25048, "loc": { "start": { "line": 747, @@ -111474,8 +111407,8 @@ "binop": null, "updateContext": null }, - "start": 25062, - "end": 25063, + "start": 25048, + "end": 25049, "loc": { "start": { "line": 747, @@ -111499,9 +111432,9 @@ "postfix": false, "binop": null }, - "value": "dollyInertia", - "start": 25063, - "end": 25075, + "value": "dollyProximityThreshold", + "start": 25049, + "end": 25072, "loc": { "start": { "line": 747, @@ -111509,7 +111442,7 @@ }, "end": { "line": 747, - "column": 25 + "column": 36 } } }, @@ -111527,16 +111460,16 @@ "updateContext": null }, "value": "=", - "start": 25076, - "end": 25077, + "start": 25073, + "end": 25074, "loc": { "start": { "line": 747, - "column": 26 + "column": 37 }, "end": { "line": 747, - "column": 27 + "column": 38 } } }, @@ -111553,16 +111486,16 @@ "binop": null }, "value": "cfg", - "start": 25078, - "end": 25081, + "start": 25075, + "end": 25078, "loc": { "start": { "line": 747, - "column": 28 + "column": 39 }, "end": { "line": 747, - "column": 31 + "column": 42 } } }, @@ -111579,16 +111512,16 @@ "binop": null, "updateContext": null }, - "start": 25081, - "end": 25082, + "start": 25078, + "end": 25079, "loc": { "start": { "line": 747, - "column": 31 + "column": 42 }, "end": { "line": 747, - "column": 32 + "column": 43 } } }, @@ -111604,17 +111537,17 @@ "postfix": false, "binop": null }, - "value": "dollyInertia", - "start": 25082, - "end": 25094, + "value": "dollyProximityThreshold", + "start": 25079, + "end": 25102, "loc": { "start": { "line": 747, - "column": 32 + "column": 43 }, "end": { "line": 747, - "column": 44 + "column": 66 } } }, @@ -111631,16 +111564,16 @@ "binop": null, "updateContext": null }, - "start": 25094, - "end": 25095, + "start": 25102, + "end": 25103, "loc": { "start": { "line": 747, - "column": 44 + "column": 66 }, "end": { "line": 747, - "column": 45 + "column": 67 } } }, @@ -111659,8 +111592,8 @@ "updateContext": null }, "value": "this", - "start": 25104, - "end": 25108, + "start": 25112, + "end": 25116, "loc": { "start": { "line": 748, @@ -111685,8 +111618,8 @@ "binop": null, "updateContext": null }, - "start": 25108, - "end": 25109, + "start": 25116, + "end": 25117, "loc": { "start": { "line": 748, @@ -111710,9 +111643,9 @@ "postfix": false, "binop": null }, - "value": "dollyProximityThreshold", - "start": 25109, - "end": 25132, + "value": "dollyMinSpeed", + "start": 25117, + "end": 25130, "loc": { "start": { "line": 748, @@ -111720,7 +111653,7 @@ }, "end": { "line": 748, - "column": 36 + "column": 26 } } }, @@ -111738,16 +111671,16 @@ "updateContext": null }, "value": "=", - "start": 25133, - "end": 25134, + "start": 25131, + "end": 25132, "loc": { "start": { "line": 748, - "column": 37 + "column": 27 }, "end": { "line": 748, - "column": 38 + "column": 28 } } }, @@ -111764,16 +111697,16 @@ "binop": null }, "value": "cfg", - "start": 25135, - "end": 25138, + "start": 25133, + "end": 25136, "loc": { "start": { "line": 748, - "column": 39 + "column": 29 }, "end": { "line": 748, - "column": 42 + "column": 32 } } }, @@ -111790,16 +111723,16 @@ "binop": null, "updateContext": null }, - "start": 25138, - "end": 25139, + "start": 25136, + "end": 25137, "loc": { "start": { "line": 748, - "column": 42 + "column": 32 }, "end": { "line": 748, - "column": 43 + "column": 33 } } }, @@ -111815,17 +111748,17 @@ "postfix": false, "binop": null }, - "value": "dollyProximityThreshold", - "start": 25139, - "end": 25162, + "value": "dollyMinSpeed", + "start": 25137, + "end": 25150, "loc": { "start": { "line": 748, - "column": 43 + "column": 33 }, "end": { "line": 748, - "column": 66 + "column": 46 } } }, @@ -111842,16 +111775,16 @@ "binop": null, "updateContext": null }, - "start": 25162, - "end": 25163, + "start": 25150, + "end": 25151, "loc": { "start": { "line": 748, - "column": 66 + "column": 46 }, "end": { "line": 748, - "column": 67 + "column": 47 } } }, @@ -111870,8 +111803,8 @@ "updateContext": null }, "value": "this", - "start": 25172, - "end": 25176, + "start": 25160, + "end": 25164, "loc": { "start": { "line": 749, @@ -111896,8 +111829,8 @@ "binop": null, "updateContext": null }, - "start": 25176, - "end": 25177, + "start": 25164, + "end": 25165, "loc": { "start": { "line": 749, @@ -111921,9 +111854,9 @@ "postfix": false, "binop": null }, - "value": "dollyMinSpeed", - "start": 25177, - "end": 25190, + "value": "panInertia", + "start": 25165, + "end": 25175, "loc": { "start": { "line": 749, @@ -111931,7 +111864,7 @@ }, "end": { "line": 749, - "column": 26 + "column": 23 } } }, @@ -111949,16 +111882,16 @@ "updateContext": null }, "value": "=", - "start": 25191, - "end": 25192, + "start": 25176, + "end": 25177, "loc": { "start": { "line": 749, - "column": 27 + "column": 24 }, "end": { "line": 749, - "column": 28 + "column": 25 } } }, @@ -111975,16 +111908,16 @@ "binop": null }, "value": "cfg", - "start": 25193, - "end": 25196, + "start": 25178, + "end": 25181, "loc": { "start": { "line": 749, - "column": 29 + "column": 26 }, "end": { "line": 749, - "column": 32 + "column": 29 } } }, @@ -112001,16 +111934,16 @@ "binop": null, "updateContext": null }, - "start": 25196, - "end": 25197, + "start": 25181, + "end": 25182, "loc": { "start": { "line": 749, - "column": 32 + "column": 29 }, "end": { "line": 749, - "column": 33 + "column": 30 } } }, @@ -112026,17 +111959,17 @@ "postfix": false, "binop": null }, - "value": "dollyMinSpeed", - "start": 25197, - "end": 25210, + "value": "panInertia", + "start": 25182, + "end": 25192, "loc": { "start": { "line": 749, - "column": 33 + "column": 30 }, "end": { "line": 749, - "column": 46 + "column": 40 } } }, @@ -112053,16 +111986,16 @@ "binop": null, "updateContext": null }, - "start": 25210, - "end": 25211, + "start": 25192, + "end": 25193, "loc": { "start": { "line": 749, - "column": 46 + "column": 40 }, "end": { "line": 749, - "column": 47 + "column": 41 } } }, @@ -112081,8 +112014,8 @@ "updateContext": null }, "value": "this", - "start": 25220, - "end": 25224, + "start": 25202, + "end": 25206, "loc": { "start": { "line": 750, @@ -112107,8 +112040,8 @@ "binop": null, "updateContext": null }, - "start": 25224, - "end": 25225, + "start": 25206, + "end": 25207, "loc": { "start": { "line": 750, @@ -112132,9 +112065,9 @@ "postfix": false, "binop": null }, - "value": "panInertia", - "start": 25225, - "end": 25235, + "value": "pointerEnabled", + "start": 25207, + "end": 25221, "loc": { "start": { "line": 750, @@ -112142,7 +112075,7 @@ }, "end": { "line": 750, - "column": 23 + "column": 27 } } }, @@ -112160,22 +112093,23 @@ "updateContext": null }, "value": "=", - "start": 25236, - "end": 25237, + "start": 25222, + "end": 25223, "loc": { "start": { "line": 750, - "column": 24 + "column": 28 }, "end": { "line": 750, - "column": 25 + "column": 29 } } }, { "type": { - "label": "name", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -112183,26 +112117,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "cfg", - "start": 25238, - "end": 25241, + "value": "true", + "start": 25224, + "end": 25228, "loc": { "start": { "line": 750, - "column": 26 + "column": 30 }, "end": { "line": 750, - "column": 29 + "column": 34 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -112212,22 +112147,23 @@ "binop": null, "updateContext": null }, - "start": 25241, - "end": 25242, + "start": 25228, + "end": 25229, "loc": { "start": { "line": 750, - "column": 29 + "column": 34 }, "end": { "line": 750, - "column": 30 + "column": 35 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -112235,26 +112171,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "panInertia", - "start": 25242, - "end": 25252, + "value": "this", + "start": 25238, + "end": 25242, "loc": { "start": { - "line": 750, - "column": 30 + "line": 751, + "column": 8 }, "end": { - "line": 750, - "column": 40 + "line": 751, + "column": 12 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -112264,23 +112201,22 @@ "binop": null, "updateContext": null }, - "start": 25252, - "end": 25253, + "start": 25242, + "end": 25243, "loc": { "start": { - "line": 750, - "column": 40 + "line": 751, + "column": 12 }, "end": { - "line": 750, - "column": 41 + "line": 751, + "column": 13 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -112288,46 +112224,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 25262, - "end": 25266, + "value": "keyboardDollyRate", + "start": 25243, + "end": 25260, "loc": { "start": { "line": 751, - "column": 8 + "column": 13 }, "end": { "line": 751, - "column": 12 + "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": 25266, - "end": 25267, + "value": "=", + "start": 25261, + "end": 25262, "loc": { "start": { "line": 751, - "column": 12 + "column": 31 }, "end": { "line": 751, - "column": 13 + "column": 32 } } }, @@ -112343,51 +112279,49 @@ "postfix": false, "binop": null }, - "value": "pointerEnabled", - "start": 25267, - "end": 25281, + "value": "cfg", + "start": 25263, + "end": 25266, "loc": { "start": { "line": 751, - "column": 13 + "column": 33 }, "end": { "line": 751, - "column": 27 + "column": 36 } } }, { "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": 25282, - "end": 25283, + "start": 25266, + "end": 25267, "loc": { "start": { "line": 751, - "column": 28 + "column": 36 }, "end": { "line": 751, - "column": 29 + "column": 37 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -112395,20 +112329,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 25284, - "end": 25288, + "value": "keyboardDollyRate", + "start": 25267, + "end": 25284, "loc": { "start": { "line": 751, - "column": 30 + "column": 37 }, "end": { "line": 751, - "column": 34 + "column": 54 } } }, @@ -112425,16 +112358,16 @@ "binop": null, "updateContext": null }, - "start": 25288, - "end": 25289, + "start": 25284, + "end": 25285, "loc": { "start": { "line": 751, - "column": 34 + "column": 54 }, "end": { "line": 751, - "column": 35 + "column": 55 } } }, @@ -112453,8 +112386,8 @@ "updateContext": null }, "value": "this", - "start": 25298, - "end": 25302, + "start": 25294, + "end": 25298, "loc": { "start": { "line": 752, @@ -112479,8 +112412,8 @@ "binop": null, "updateContext": null }, - "start": 25302, - "end": 25303, + "start": 25298, + "end": 25299, "loc": { "start": { "line": 752, @@ -112504,9 +112437,9 @@ "postfix": false, "binop": null }, - "value": "keyboardDollyRate", - "start": 25303, - "end": 25320, + "value": "mouseWheelDollyRate", + "start": 25299, + "end": 25318, "loc": { "start": { "line": 752, @@ -112514,7 +112447,7 @@ }, "end": { "line": 752, - "column": 30 + "column": 32 } } }, @@ -112532,16 +112465,16 @@ "updateContext": null }, "value": "=", - "start": 25321, - "end": 25322, + "start": 25319, + "end": 25320, "loc": { "start": { "line": 752, - "column": 31 + "column": 33 }, "end": { "line": 752, - "column": 32 + "column": 34 } } }, @@ -112558,16 +112491,16 @@ "binop": null }, "value": "cfg", - "start": 25323, - "end": 25326, + "start": 25321, + "end": 25324, "loc": { "start": { "line": 752, - "column": 33 + "column": 35 }, "end": { "line": 752, - "column": 36 + "column": 38 } } }, @@ -112584,16 +112517,16 @@ "binop": null, "updateContext": null }, - "start": 25326, - "end": 25327, + "start": 25324, + "end": 25325, "loc": { "start": { "line": 752, - "column": 36 + "column": 38 }, "end": { "line": 752, - "column": 37 + "column": 39 } } }, @@ -112609,17 +112542,17 @@ "postfix": false, "binop": null }, - "value": "keyboardDollyRate", - "start": 25327, + "value": "mouseWheelDollyRate", + "start": 25325, "end": 25344, "loc": { "start": { "line": 752, - "column": 37 + "column": 39 }, "end": { "line": 752, - "column": 54 + "column": 58 } } }, @@ -112641,221 +112574,10 @@ "loc": { "start": { "line": 752, - "column": 54 - }, - "end": { - "line": 752, - "column": 55 - } - } - }, - { - "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": 25354, - "end": 25358, - "loc": { - "start": { - "line": 753, - "column": 8 - }, - "end": { - "line": 753, - "column": 12 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 25358, - "end": 25359, - "loc": { - "start": { - "line": 753, - "column": 12 - }, - "end": { - "line": 753, - "column": 13 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "mouseWheelDollyRate", - "start": 25359, - "end": 25378, - "loc": { - "start": { - "line": 753, - "column": 13 - }, - "end": { - "line": 753, - "column": 32 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 25379, - "end": 25380, - "loc": { - "start": { - "line": 753, - "column": 33 - }, - "end": { - "line": 753, - "column": 34 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "cfg", - "start": 25381, - "end": 25384, - "loc": { - "start": { - "line": 753, - "column": 35 - }, - "end": { - "line": 753, - "column": 38 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 25384, - "end": 25385, - "loc": { - "start": { - "line": 753, - "column": 38 - }, - "end": { - "line": 753, - "column": 39 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "mouseWheelDollyRate", - "start": 25385, - "end": 25404, - "loc": { - "start": { - "line": 753, - "column": 39 - }, - "end": { - "line": 753, - "column": 58 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 25404, - "end": 25405, - "loc": { - "start": { - "line": 753, "column": 58 }, "end": { - "line": 753, + "line": 752, "column": 59 } } @@ -112872,15 +112594,15 @@ "postfix": false, "binop": null }, - "start": 25410, - "end": 25411, + "start": 25350, + "end": 25351, "loc": { "start": { - "line": 754, + "line": 753, "column": 4 }, "end": { - "line": 754, + "line": 753, "column": 5 } } @@ -112888,15 +112610,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 25417, - "end": 25756, + "start": 25357, + "end": 25696, "loc": { "start": { - "line": 756, + "line": 755, "column": 4 }, "end": { - "line": 763, + "line": 762, "column": 7 } } @@ -112914,15 +112636,15 @@ "binop": null }, "value": "set", - "start": 25761, - "end": 25764, + "start": 25701, + "end": 25704, "loc": { "start": { - "line": 764, + "line": 763, "column": 4 }, "end": { - "line": 764, + "line": 763, "column": 7 } } @@ -112940,15 +112662,15 @@ "binop": null }, "value": "keyMap", - "start": 25765, - "end": 25771, + "start": 25705, + "end": 25711, "loc": { "start": { - "line": 764, + "line": 763, "column": 8 }, "end": { - "line": 764, + "line": 763, "column": 14 } } @@ -112965,15 +112687,15 @@ "postfix": false, "binop": null }, - "start": 25771, - "end": 25772, + "start": 25711, + "end": 25712, "loc": { "start": { - "line": 764, + "line": 763, "column": 14 }, "end": { - "line": 764, + "line": 763, "column": 15 } } @@ -112991,15 +112713,15 @@ "binop": null }, "value": "value", - "start": 25772, - "end": 25777, + "start": 25712, + "end": 25717, "loc": { "start": { - "line": 764, + "line": 763, "column": 15 }, "end": { - "line": 764, + "line": 763, "column": 20 } } @@ -113016,15 +112738,15 @@ "postfix": false, "binop": null }, - "start": 25777, - "end": 25778, + "start": 25717, + "end": 25718, "loc": { "start": { - "line": 764, + "line": 763, "column": 20 }, "end": { - "line": 764, + "line": 763, "column": 21 } } @@ -113041,15 +112763,15 @@ "postfix": false, "binop": null }, - "start": 25779, - "end": 25780, + "start": 25719, + "end": 25720, "loc": { "start": { - "line": 764, + "line": 763, "column": 22 }, "end": { - "line": 764, + "line": 763, "column": 23 } } @@ -113067,15 +112789,15 @@ "binop": null }, "value": "value", - "start": 25789, - "end": 25794, + "start": 25729, + "end": 25734, "loc": { "start": { - "line": 765, + "line": 764, "column": 8 }, "end": { - "line": 765, + "line": 764, "column": 13 } } @@ -113094,15 +112816,15 @@ "updateContext": null }, "value": "=", - "start": 25795, - "end": 25796, + "start": 25735, + "end": 25736, "loc": { "start": { - "line": 765, + "line": 764, "column": 14 }, "end": { - "line": 765, + "line": 764, "column": 15 } } @@ -113120,15 +112842,15 @@ "binop": null }, "value": "value", - "start": 25797, - "end": 25802, + "start": 25737, + "end": 25742, "loc": { "start": { - "line": 765, + "line": 764, "column": 16 }, "end": { - "line": 765, + "line": 764, "column": 21 } } @@ -113147,15 +112869,15 @@ "updateContext": null }, "value": "||", - "start": 25803, - "end": 25805, + "start": 25743, + "end": 25745, "loc": { "start": { - "line": 765, + "line": 764, "column": 22 }, "end": { - "line": 765, + "line": 764, "column": 24 } } @@ -113174,15 +112896,15 @@ "updateContext": null }, "value": "qwerty", - "start": 25806, - "end": 25814, + "start": 25746, + "end": 25754, "loc": { "start": { - "line": 765, + "line": 764, "column": 25 }, "end": { - "line": 765, + "line": 764, "column": 33 } } @@ -113200,15 +112922,15 @@ "binop": null, "updateContext": null }, - "start": 25814, - "end": 25815, + "start": 25754, + "end": 25755, "loc": { "start": { - "line": 765, + "line": 764, "column": 33 }, "end": { - "line": 765, + "line": 764, "column": 34 } } @@ -113228,15 +112950,15 @@ "updateContext": null }, "value": "if", - "start": 25824, - "end": 25826, + "start": 25764, + "end": 25766, "loc": { "start": { - "line": 766, + "line": 765, "column": 8 }, "end": { - "line": 766, + "line": 765, "column": 10 } } @@ -113253,15 +112975,15 @@ "postfix": false, "binop": null }, - "start": 25827, - "end": 25828, + "start": 25767, + "end": 25768, "loc": { "start": { - "line": 766, + "line": 765, "column": 11 }, "end": { - "line": 766, + "line": 765, "column": 12 } } @@ -113279,15 +113001,15 @@ "binop": null }, "value": "utils", - "start": 25828, - "end": 25833, + "start": 25768, + "end": 25773, "loc": { "start": { - "line": 766, + "line": 765, "column": 12 }, "end": { - "line": 766, + "line": 765, "column": 17 } } @@ -113305,15 +113027,15 @@ "binop": null, "updateContext": null }, - "start": 25833, - "end": 25834, + "start": 25773, + "end": 25774, "loc": { "start": { - "line": 766, + "line": 765, "column": 17 }, "end": { - "line": 766, + "line": 765, "column": 18 } } @@ -113331,15 +113053,15 @@ "binop": null }, "value": "isString", - "start": 25834, - "end": 25842, + "start": 25774, + "end": 25782, "loc": { "start": { - "line": 766, + "line": 765, "column": 18 }, "end": { - "line": 766, + "line": 765, "column": 26 } } @@ -113356,15 +113078,15 @@ "postfix": false, "binop": null }, - "start": 25842, - "end": 25843, + "start": 25782, + "end": 25783, "loc": { "start": { - "line": 766, + "line": 765, "column": 26 }, "end": { - "line": 766, + "line": 765, "column": 27 } } @@ -113382,15 +113104,15 @@ "binop": null }, "value": "value", - "start": 25843, - "end": 25848, + "start": 25783, + "end": 25788, "loc": { "start": { - "line": 766, + "line": 765, "column": 27 }, "end": { - "line": 766, + "line": 765, "column": 32 } } @@ -113407,15 +113129,15 @@ "postfix": false, "binop": null }, - "start": 25848, - "end": 25849, + "start": 25788, + "end": 25789, "loc": { "start": { - "line": 766, + "line": 765, "column": 32 }, "end": { - "line": 766, + "line": 765, "column": 33 } } @@ -113432,15 +113154,15 @@ "postfix": false, "binop": null }, - "start": 25849, - "end": 25850, + "start": 25789, + "end": 25790, "loc": { "start": { - "line": 766, + "line": 765, "column": 33 }, "end": { - "line": 766, + "line": 765, "column": 34 } } @@ -113457,15 +113179,15 @@ "postfix": false, "binop": null }, - "start": 25851, - "end": 25852, + "start": 25791, + "end": 25792, "loc": { "start": { - "line": 766, + "line": 765, "column": 35 }, "end": { - "line": 766, + "line": 765, "column": 36 } } @@ -113485,15 +113207,15 @@ "updateContext": null }, "value": "const", - "start": 25865, - "end": 25870, + "start": 25805, + "end": 25810, "loc": { "start": { - "line": 767, + "line": 766, "column": 12 }, "end": { - "line": 767, + "line": 766, "column": 17 } } @@ -113511,15 +113233,15 @@ "binop": null }, "value": "input", - "start": 25871, - "end": 25876, + "start": 25811, + "end": 25816, "loc": { "start": { - "line": 767, + "line": 766, "column": 18 }, "end": { - "line": 767, + "line": 766, "column": 23 } } @@ -113538,15 +113260,15 @@ "updateContext": null }, "value": "=", - "start": 25877, - "end": 25878, + "start": 25817, + "end": 25818, "loc": { "start": { - "line": 767, + "line": 766, "column": 24 }, "end": { - "line": 767, + "line": 766, "column": 25 } } @@ -113566,15 +113288,15 @@ "updateContext": null }, "value": "this", - "start": 25879, - "end": 25883, + "start": 25819, + "end": 25823, "loc": { "start": { - "line": 767, + "line": 766, "column": 26 }, "end": { - "line": 767, + "line": 766, "column": 30 } } @@ -113592,15 +113314,15 @@ "binop": null, "updateContext": null }, - "start": 25883, - "end": 25884, + "start": 25823, + "end": 25824, "loc": { "start": { - "line": 767, + "line": 766, "column": 30 }, "end": { - "line": 767, + "line": 766, "column": 31 } } @@ -113618,15 +113340,15 @@ "binop": null }, "value": "scene", - "start": 25884, - "end": 25889, + "start": 25824, + "end": 25829, "loc": { "start": { - "line": 767, + "line": 766, "column": 31 }, "end": { - "line": 767, + "line": 766, "column": 36 } } @@ -113644,15 +113366,15 @@ "binop": null, "updateContext": null }, - "start": 25889, - "end": 25890, + "start": 25829, + "end": 25830, "loc": { "start": { - "line": 767, + "line": 766, "column": 36 }, "end": { - "line": 767, + "line": 766, "column": 37 } } @@ -113670,15 +113392,15 @@ "binop": null }, "value": "input", - "start": 25890, - "end": 25895, + "start": 25830, + "end": 25835, "loc": { "start": { - "line": 767, + "line": 766, "column": 37 }, "end": { - "line": 767, + "line": 766, "column": 42 } } @@ -113696,15 +113418,15 @@ "binop": null, "updateContext": null }, - "start": 25895, - "end": 25896, + "start": 25835, + "end": 25836, "loc": { "start": { - "line": 767, + "line": 766, "column": 42 }, "end": { - "line": 767, + "line": 766, "column": 43 } } @@ -113724,15 +113446,15 @@ "updateContext": null }, "value": "const", - "start": 25909, - "end": 25914, + "start": 25849, + "end": 25854, "loc": { "start": { - "line": 768, + "line": 767, "column": 12 }, "end": { - "line": 768, + "line": 767, "column": 17 } } @@ -113750,15 +113472,15 @@ "binop": null }, "value": "keyMap", - "start": 25915, - "end": 25921, + "start": 25855, + "end": 25861, "loc": { "start": { - "line": 768, + "line": 767, "column": 18 }, "end": { - "line": 768, + "line": 767, "column": 24 } } @@ -113777,15 +113499,15 @@ "updateContext": null }, "value": "=", - "start": 25922, - "end": 25923, + "start": 25862, + "end": 25863, "loc": { "start": { - "line": 768, + "line": 767, "column": 25 }, "end": { - "line": 768, + "line": 767, "column": 26 } } @@ -113802,15 +113524,15 @@ "postfix": false, "binop": null }, - "start": 25924, - "end": 25925, + "start": 25864, + "end": 25865, "loc": { "start": { - "line": 768, + "line": 767, "column": 27 }, "end": { - "line": 768, + "line": 767, "column": 28 } } @@ -113827,15 +113549,15 @@ "postfix": false, "binop": null }, - "start": 25925, - "end": 25926, + "start": 25865, + "end": 25866, "loc": { "start": { - "line": 768, + "line": 767, "column": 28 }, "end": { - "line": 768, + "line": 767, "column": 29 } } @@ -113853,15 +113575,15 @@ "binop": null, "updateContext": null }, - "start": 25926, - "end": 25927, + "start": 25866, + "end": 25867, "loc": { "start": { - "line": 768, + "line": 767, "column": 29 }, "end": { - "line": 768, + "line": 767, "column": 30 } } @@ -113881,15 +113603,15 @@ "updateContext": null }, "value": "switch", - "start": 25941, - "end": 25947, + "start": 25881, + "end": 25887, "loc": { "start": { - "line": 770, + "line": 769, "column": 12 }, "end": { - "line": 770, + "line": 769, "column": 18 } } @@ -113906,15 +113628,15 @@ "postfix": false, "binop": null }, - "start": 25948, - "end": 25949, + "start": 25888, + "end": 25889, "loc": { "start": { - "line": 770, + "line": 769, "column": 19 }, "end": { - "line": 770, + "line": 769, "column": 20 } } @@ -113932,15 +113654,15 @@ "binop": null }, "value": "value", - "start": 25949, - "end": 25954, + "start": 25889, + "end": 25894, "loc": { "start": { - "line": 770, + "line": 769, "column": 20 }, "end": { - "line": 770, + "line": 769, "column": 25 } } @@ -113957,15 +113679,15 @@ "postfix": false, "binop": null }, - "start": 25954, - "end": 25955, + "start": 25894, + "end": 25895, "loc": { "start": { - "line": 770, + "line": 769, "column": 25 }, "end": { - "line": 770, + "line": 769, "column": 26 } } @@ -113982,15 +113704,15 @@ "postfix": false, "binop": null }, - "start": 25956, - "end": 25957, + "start": 25896, + "end": 25897, "loc": { "start": { - "line": 770, + "line": 769, "column": 27 }, "end": { - "line": 770, + "line": 769, "column": 28 } } @@ -114010,15 +113732,15 @@ "updateContext": null }, "value": "default", - "start": 25975, - "end": 25982, + "start": 25915, + "end": 25922, "loc": { "start": { - "line": 772, + "line": 771, "column": 16 }, "end": { - "line": 772, + "line": 771, "column": 23 } } @@ -114036,15 +113758,15 @@ "binop": null, "updateContext": null }, - "start": 25982, - "end": 25983, + "start": 25922, + "end": 25923, "loc": { "start": { - "line": 772, + "line": 771, "column": 23 }, "end": { - "line": 772, + "line": 771, "column": 24 } } @@ -114064,15 +113786,15 @@ "updateContext": null }, "value": "this", - "start": 26004, - "end": 26008, + "start": 25944, + "end": 25948, "loc": { "start": { - "line": 773, + "line": 772, "column": 20 }, "end": { - "line": 773, + "line": 772, "column": 24 } } @@ -114090,15 +113812,15 @@ "binop": null, "updateContext": null }, - "start": 26008, - "end": 26009, + "start": 25948, + "end": 25949, "loc": { "start": { - "line": 773, + "line": 772, "column": 24 }, "end": { - "line": 773, + "line": 772, "column": 25 } } @@ -114116,15 +113838,15 @@ "binop": null }, "value": "error", - "start": 26009, - "end": 26014, + "start": 25949, + "end": 25954, "loc": { "start": { - "line": 773, + "line": 772, "column": 25 }, "end": { - "line": 773, + "line": 772, "column": 30 } } @@ -114141,15 +113863,15 @@ "postfix": false, "binop": null }, - "start": 26014, - "end": 26015, + "start": 25954, + "end": 25955, "loc": { "start": { - "line": 773, + "line": 772, "column": 30 }, "end": { - "line": 773, + "line": 772, "column": 31 } } @@ -114168,15 +113890,15 @@ "updateContext": null }, "value": "Unsupported value for 'keyMap': ", - "start": 26015, - "end": 26049, + "start": 25955, + "end": 25989, "loc": { "start": { - "line": 773, + "line": 772, "column": 31 }, "end": { - "line": 773, + "line": 772, "column": 65 } } @@ -114195,15 +113917,15 @@ "updateContext": null }, "value": "+", - "start": 26050, - "end": 26051, + "start": 25990, + "end": 25991, "loc": { "start": { - "line": 773, + "line": 772, "column": 66 }, "end": { - "line": 773, + "line": 772, "column": 67 } } @@ -114221,15 +113943,15 @@ "binop": null }, "value": "value", - "start": 26052, - "end": 26057, + "start": 25992, + "end": 25997, "loc": { "start": { - "line": 773, + "line": 772, "column": 68 }, "end": { - "line": 773, + "line": 772, "column": 73 } } @@ -114248,15 +113970,15 @@ "updateContext": null }, "value": "+", - "start": 26058, - "end": 26059, + "start": 25998, + "end": 25999, "loc": { "start": { - "line": 773, + "line": 772, "column": 74 }, "end": { - "line": 773, + "line": 772, "column": 75 } } @@ -114275,15 +113997,15 @@ "updateContext": null }, "value": " defaulting to 'qwerty'", - "start": 26060, - "end": 26085, + "start": 26000, + "end": 26025, "loc": { "start": { - "line": 773, + "line": 772, "column": 76 }, "end": { - "line": 773, + "line": 772, "column": 101 } } @@ -114300,15 +114022,15 @@ "postfix": false, "binop": null }, - "start": 26085, - "end": 26086, + "start": 26025, + "end": 26026, "loc": { "start": { - "line": 773, + "line": 772, "column": 101 }, "end": { - "line": 773, + "line": 772, "column": 102 } } @@ -114326,15 +114048,15 @@ "binop": null, "updateContext": null }, - "start": 26086, - "end": 26087, + "start": 26026, + "end": 26027, "loc": { "start": { - "line": 773, + "line": 772, "column": 102 }, "end": { - "line": 773, + "line": 772, "column": 103 } } @@ -114342,15 +114064,15 @@ { "type": "CommentLine", "value": " Intentional fall-through to \"qwerty\"", - "start": 26104, - "end": 26143, + "start": 26044, + "end": 26083, "loc": { "start": { - "line": 774, + "line": 773, "column": 16 }, "end": { - "line": 774, + "line": 773, "column": 55 } } @@ -114370,15 +114092,15 @@ "updateContext": null }, "value": "case", - "start": 26160, - "end": 26164, + "start": 26100, + "end": 26104, "loc": { "start": { - "line": 775, + "line": 774, "column": 16 }, "end": { - "line": 775, + "line": 774, "column": 20 } } @@ -114397,15 +114119,15 @@ "updateContext": null }, "value": "qwerty", - "start": 26165, - "end": 26173, + "start": 26105, + "end": 26113, "loc": { "start": { - "line": 775, + "line": 774, "column": 21 }, "end": { - "line": 775, + "line": 774, "column": 29 } } @@ -114423,15 +114145,15 @@ "binop": null, "updateContext": null }, - "start": 26173, - "end": 26174, + "start": 26113, + "end": 26114, "loc": { "start": { - "line": 775, + "line": 774, "column": 29 }, "end": { - "line": 775, + "line": 774, "column": 30 } } @@ -114449,8 +114171,349 @@ "binop": null }, "value": "keyMap", - "start": 26195, - "end": 26201, + "start": 26135, + "end": 26141, + "loc": { + "start": { + "line": 775, + "column": 20 + }, + "end": { + "line": 775, + "column": 26 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 26141, + "end": 26142, + "loc": { + "start": { + "line": 775, + "column": 26 + }, + "end": { + "line": 775, + "column": 27 + } + } + }, + { + "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": 26142, + "end": 26146, + "loc": { + "start": { + "line": 775, + "column": 27 + }, + "end": { + "line": 775, + "column": 31 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 26146, + "end": 26147, + "loc": { + "start": { + "line": 775, + "column": 31 + }, + "end": { + "line": 775, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "PAN_LEFT", + "start": 26147, + "end": 26155, + "loc": { + "start": { + "line": 775, + "column": 32 + }, + "end": { + "line": 775, + "column": 40 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 26155, + "end": 26156, + "loc": { + "start": { + "line": 775, + "column": 40 + }, + "end": { + "line": 775, + "column": 41 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 26157, + "end": 26158, + "loc": { + "start": { + "line": 775, + "column": 42 + }, + "end": { + "line": 775, + "column": 43 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 26159, + "end": 26160, + "loc": { + "start": { + "line": 775, + "column": 44 + }, + "end": { + "line": 775, + "column": 45 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "input", + "start": 26160, + "end": 26165, + "loc": { + "start": { + "line": 775, + "column": 45 + }, + "end": { + "line": 775, + "column": 50 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 26165, + "end": 26166, + "loc": { + "start": { + "line": 775, + "column": 50 + }, + "end": { + "line": 775, + "column": 51 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "KEY_A", + "start": 26166, + "end": 26171, + "loc": { + "start": { + "line": 775, + "column": 51 + }, + "end": { + "line": 775, + "column": 56 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 26171, + "end": 26172, + "loc": { + "start": { + "line": 775, + "column": 56 + }, + "end": { + "line": 775, + "column": 57 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 26172, + "end": 26173, + "loc": { + "start": { + "line": 775, + "column": 57 + }, + "end": { + "line": 775, + "column": 58 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "keyMap", + "start": 26194, + "end": 26200, "loc": { "start": { "line": 776, @@ -114475,8 +114538,8 @@ "binop": null, "updateContext": null }, - "start": 26201, - "end": 26202, + "start": 26200, + "end": 26201, "loc": { "start": { "line": 776, @@ -114503,8 +114566,8 @@ "updateContext": null }, "value": "this", - "start": 26202, - "end": 26206, + "start": 26201, + "end": 26205, "loc": { "start": { "line": 776, @@ -114529,8 +114592,8 @@ "binop": null, "updateContext": null }, - "start": 26206, - "end": 26207, + "start": 26205, + "end": 26206, "loc": { "start": { "line": 776, @@ -114554,8 +114617,8 @@ "postfix": false, "binop": null }, - "value": "PAN_LEFT", - "start": 26207, + "value": "PAN_RIGHT", + "start": 26206, "end": 26215, "loc": { "start": { @@ -114564,7 +114627,7 @@ }, "end": { "line": 776, - "column": 40 + "column": 41 } } }, @@ -114586,11 +114649,11 @@ "loc": { "start": { "line": 776, - "column": 40 + "column": 41 }, "end": { "line": 776, - "column": 41 + "column": 42 } } }, @@ -114613,11 +114676,11 @@ "loc": { "start": { "line": 776, - "column": 42 + "column": 43 }, "end": { "line": 776, - "column": 43 + "column": 44 } } }, @@ -114639,11 +114702,11 @@ "loc": { "start": { "line": 776, - "column": 44 + "column": 45 }, "end": { "line": 776, - "column": 45 + "column": 46 } } }, @@ -114665,11 +114728,11 @@ "loc": { "start": { "line": 776, - "column": 45 + "column": 46 }, "end": { "line": 776, - "column": 50 + "column": 51 } } }, @@ -114691,11 +114754,11 @@ "loc": { "start": { "line": 776, - "column": 50 + "column": 51 }, "end": { "line": 776, - "column": 51 + "column": 52 } } }, @@ -114711,17 +114774,17 @@ "postfix": false, "binop": null }, - "value": "KEY_A", + "value": "KEY_D", "start": 26226, "end": 26231, "loc": { "start": { "line": 776, - "column": 51 + "column": 52 }, "end": { "line": 776, - "column": 56 + "column": 57 } } }, @@ -114743,11 +114806,11 @@ "loc": { "start": { "line": 776, - "column": 56 + "column": 57 }, "end": { "line": 776, - "column": 57 + "column": 58 } } }, @@ -114769,11 +114832,11 @@ "loc": { "start": { "line": 776, - "column": 57 + "column": 58 }, "end": { "line": 776, - "column": 58 + "column": 59 } } }, @@ -114895,9 +114958,9 @@ "postfix": false, "binop": null }, - "value": "PAN_RIGHT", + "value": "PAN_UP", "start": 26266, - "end": 26275, + "end": 26272, "loc": { "start": { "line": 777, @@ -114905,7 +114968,7 @@ }, "end": { "line": 777, - "column": 41 + "column": 38 } } }, @@ -114922,16 +114985,16 @@ "binop": null, "updateContext": null }, - "start": 26275, - "end": 26276, + "start": 26272, + "end": 26273, "loc": { "start": { "line": 777, - "column": 41 + "column": 38 }, "end": { "line": 777, - "column": 42 + "column": 39 } } }, @@ -114949,16 +115012,16 @@ "updateContext": null }, "value": "=", - "start": 26277, - "end": 26278, + "start": 26274, + "end": 26275, "loc": { "start": { "line": 777, - "column": 43 + "column": 40 }, "end": { "line": 777, - "column": 44 + "column": 41 } } }, @@ -114975,16 +115038,16 @@ "binop": null, "updateContext": null }, - "start": 26279, - "end": 26280, + "start": 26276, + "end": 26277, "loc": { "start": { "line": 777, - "column": 45 + "column": 42 }, "end": { "line": 777, - "column": 46 + "column": 43 } } }, @@ -115001,16 +115064,16 @@ "binop": null }, "value": "input", - "start": 26280, - "end": 26285, + "start": 26277, + "end": 26282, "loc": { "start": { "line": 777, - "column": 46 + "column": 43 }, "end": { "line": 777, - "column": 51 + "column": 48 } } }, @@ -115027,16 +115090,16 @@ "binop": null, "updateContext": null }, - "start": 26285, - "end": 26286, + "start": 26282, + "end": 26283, "loc": { "start": { "line": 777, - "column": 51 + "column": 48 }, "end": { "line": 777, - "column": 52 + "column": 49 } } }, @@ -115052,17 +115115,17 @@ "postfix": false, "binop": null }, - "value": "KEY_D", - "start": 26286, - "end": 26291, + "value": "KEY_Z", + "start": 26283, + "end": 26288, "loc": { "start": { "line": 777, - "column": 52 + "column": 49 }, "end": { "line": 777, - "column": 57 + "column": 54 } } }, @@ -115079,16 +115142,16 @@ "binop": null, "updateContext": null }, - "start": 26291, - "end": 26292, + "start": 26288, + "end": 26289, "loc": { "start": { "line": 777, - "column": 57 + "column": 54 }, "end": { "line": 777, - "column": 58 + "column": 55 } } }, @@ -115105,16 +115168,16 @@ "binop": null, "updateContext": null }, - "start": 26292, - "end": 26293, + "start": 26289, + "end": 26290, "loc": { "start": { "line": 777, - "column": 58 + "column": 55 }, "end": { "line": 777, - "column": 59 + "column": 56 } } }, @@ -115131,8 +115194,8 @@ "binop": null }, "value": "keyMap", - "start": 26314, - "end": 26320, + "start": 26311, + "end": 26317, "loc": { "start": { "line": 778, @@ -115157,8 +115220,8 @@ "binop": null, "updateContext": null }, - "start": 26320, - "end": 26321, + "start": 26317, + "end": 26318, "loc": { "start": { "line": 778, @@ -115185,8 +115248,8 @@ "updateContext": null }, "value": "this", - "start": 26321, - "end": 26325, + "start": 26318, + "end": 26322, "loc": { "start": { "line": 778, @@ -115211,8 +115274,8 @@ "binop": null, "updateContext": null }, - "start": 26325, - "end": 26326, + "start": 26322, + "end": 26323, "loc": { "start": { "line": 778, @@ -115236,9 +115299,9 @@ "postfix": false, "binop": null }, - "value": "PAN_UP", - "start": 26326, - "end": 26332, + "value": "PAN_DOWN", + "start": 26323, + "end": 26331, "loc": { "start": { "line": 778, @@ -115246,7 +115309,7 @@ }, "end": { "line": 778, - "column": 38 + "column": 40 } } }, @@ -115263,16 +115326,16 @@ "binop": null, "updateContext": null }, - "start": 26332, - "end": 26333, + "start": 26331, + "end": 26332, "loc": { "start": { "line": 778, - "column": 38 + "column": 40 }, "end": { "line": 778, - "column": 39 + "column": 41 } } }, @@ -115290,16 +115353,16 @@ "updateContext": null }, "value": "=", - "start": 26334, - "end": 26335, + "start": 26333, + "end": 26334, "loc": { "start": { "line": 778, - "column": 40 + "column": 42 }, "end": { "line": 778, - "column": 41 + "column": 43 } } }, @@ -115316,16 +115379,16 @@ "binop": null, "updateContext": null }, - "start": 26336, - "end": 26337, + "start": 26335, + "end": 26336, "loc": { "start": { "line": 778, - "column": 42 + "column": 44 }, "end": { "line": 778, - "column": 43 + "column": 45 } } }, @@ -115342,16 +115405,16 @@ "binop": null }, "value": "input", - "start": 26337, - "end": 26342, + "start": 26336, + "end": 26341, "loc": { "start": { "line": 778, - "column": 43 + "column": 45 }, "end": { "line": 778, - "column": 48 + "column": 50 } } }, @@ -115368,16 +115431,16 @@ "binop": null, "updateContext": null }, - "start": 26342, - "end": 26343, + "start": 26341, + "end": 26342, "loc": { "start": { "line": 778, - "column": 48 + "column": 50 }, "end": { "line": 778, - "column": 49 + "column": 51 } } }, @@ -115393,17 +115456,17 @@ "postfix": false, "binop": null }, - "value": "KEY_Z", - "start": 26343, - "end": 26348, + "value": "KEY_X", + "start": 26342, + "end": 26347, "loc": { "start": { "line": 778, - "column": 49 + "column": 51 }, "end": { "line": 778, - "column": 54 + "column": 56 } } }, @@ -115420,16 +115483,16 @@ "binop": null, "updateContext": null }, - "start": 26348, - "end": 26349, + "start": 26347, + "end": 26348, "loc": { "start": { "line": 778, - "column": 54 + "column": 56 }, "end": { "line": 778, - "column": 55 + "column": 57 } } }, @@ -115446,16 +115509,16 @@ "binop": null, "updateContext": null }, - "start": 26349, - "end": 26350, + "start": 26348, + "end": 26349, "loc": { "start": { "line": 778, - "column": 55 + "column": 57 }, "end": { "line": 778, - "column": 56 + "column": 58 } } }, @@ -115472,8 +115535,8 @@ "binop": null }, "value": "keyMap", - "start": 26371, - "end": 26377, + "start": 26370, + "end": 26376, "loc": { "start": { "line": 779, @@ -115498,8 +115561,8 @@ "binop": null, "updateContext": null }, - "start": 26377, - "end": 26378, + "start": 26376, + "end": 26377, "loc": { "start": { "line": 779, @@ -115526,8 +115589,8 @@ "updateContext": null }, "value": "this", - "start": 26378, - "end": 26382, + "start": 26377, + "end": 26381, "loc": { "start": { "line": 779, @@ -115552,8 +115615,8 @@ "binop": null, "updateContext": null }, - "start": 26382, - "end": 26383, + "start": 26381, + "end": 26382, "loc": { "start": { "line": 779, @@ -115577,9 +115640,9 @@ "postfix": false, "binop": null }, - "value": "PAN_DOWN", - "start": 26383, - "end": 26391, + "value": "PAN_BACKWARDS", + "start": 26382, + "end": 26395, "loc": { "start": { "line": 779, @@ -115587,7 +115650,7 @@ }, "end": { "line": 779, - "column": 40 + "column": 45 } } }, @@ -115604,16 +115667,16 @@ "binop": null, "updateContext": null }, - "start": 26391, - "end": 26392, + "start": 26395, + "end": 26396, "loc": { "start": { "line": 779, - "column": 40 + "column": 45 }, "end": { "line": 779, - "column": 41 + "column": 46 } } }, @@ -115631,16 +115694,16 @@ "updateContext": null }, "value": "=", - "start": 26393, - "end": 26394, + "start": 26397, + "end": 26398, "loc": { "start": { "line": 779, - "column": 42 + "column": 47 }, "end": { "line": 779, - "column": 43 + "column": 48 } } }, @@ -115657,38 +115720,12 @@ "binop": null, "updateContext": null }, - "start": 26395, - "end": 26396, - "loc": { - "start": { - "line": 779, - "column": 44 - }, - "end": { - "line": 779, - "column": 45 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "input", - "start": 26396, - "end": 26401, + "start": 26399, + "end": 26400, "loc": { "start": { "line": 779, - "column": 45 + "column": 49 }, "end": { "line": 779, @@ -115698,7 +115735,7 @@ }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -115709,8 +115746,8 @@ "binop": null, "updateContext": null }, - "start": 26401, - "end": 26402, + "start": 26400, + "end": 26401, "loc": { "start": { "line": 779, @@ -115722,58 +115759,6 @@ } } }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "KEY_X", - "start": 26402, - "end": 26407, - "loc": { - "start": { - "line": 779, - "column": 51 - }, - "end": { - "line": 779, - "column": 56 - } - } - }, - { - "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 26407, - "end": 26408, - "loc": { - "start": { - "line": 779, - "column": 56 - }, - "end": { - "line": 779, - "column": 57 - } - } - }, { "type": { "label": ";", @@ -115787,16 +115772,16 @@ "binop": null, "updateContext": null }, - "start": 26408, - "end": 26409, + "start": 26401, + "end": 26402, "loc": { "start": { "line": 779, - "column": 57 + "column": 51 }, "end": { "line": 779, - "column": 58 + "column": 52 } } }, @@ -115813,8 +115798,8 @@ "binop": null }, "value": "keyMap", - "start": 26430, - "end": 26436, + "start": 26423, + "end": 26429, "loc": { "start": { "line": 780, @@ -115839,8 +115824,8 @@ "binop": null, "updateContext": null }, - "start": 26436, - "end": 26437, + "start": 26429, + "end": 26430, "loc": { "start": { "line": 780, @@ -115867,8 +115852,8 @@ "updateContext": null }, "value": "this", - "start": 26437, - "end": 26441, + "start": 26430, + "end": 26434, "loc": { "start": { "line": 780, @@ -115893,8 +115878,8 @@ "binop": null, "updateContext": null }, - "start": 26441, - "end": 26442, + "start": 26434, + "end": 26435, "loc": { "start": { "line": 780, @@ -115918,9 +115903,9 @@ "postfix": false, "binop": null }, - "value": "PAN_BACKWARDS", - "start": 26442, - "end": 26455, + "value": "PAN_FORWARDS", + "start": 26435, + "end": 26447, "loc": { "start": { "line": 780, @@ -115928,7 +115913,7 @@ }, "end": { "line": 780, - "column": 45 + "column": 44 } } }, @@ -115945,16 +115930,16 @@ "binop": null, "updateContext": null }, - "start": 26455, - "end": 26456, + "start": 26447, + "end": 26448, "loc": { "start": { "line": 780, - "column": 45 + "column": 44 }, "end": { "line": 780, - "column": 46 + "column": 45 } } }, @@ -115972,16 +115957,16 @@ "updateContext": null }, "value": "=", - "start": 26457, - "end": 26458, + "start": 26449, + "end": 26450, "loc": { "start": { "line": 780, - "column": 47 + "column": 46 }, "end": { "line": 780, - "column": 48 + "column": 47 } } }, @@ -115998,16 +115983,16 @@ "binop": null, "updateContext": null }, - "start": 26459, - "end": 26460, + "start": 26451, + "end": 26452, "loc": { "start": { "line": 780, - "column": 49 + "column": 48 }, "end": { "line": 780, - "column": 50 + "column": 49 } } }, @@ -116024,16 +116009,16 @@ "binop": null, "updateContext": null }, - "start": 26460, - "end": 26461, + "start": 26452, + "end": 26453, "loc": { "start": { "line": 780, - "column": 50 + "column": 49 }, "end": { "line": 780, - "column": 51 + "column": 50 } } }, @@ -116050,16 +116035,16 @@ "binop": null, "updateContext": null }, - "start": 26461, - "end": 26462, + "start": 26453, + "end": 26454, "loc": { "start": { "line": 780, - "column": 51 + "column": 50 }, "end": { "line": 780, - "column": 52 + "column": 51 } } }, @@ -116076,8 +116061,8 @@ "binop": null }, "value": "keyMap", - "start": 26483, - "end": 26489, + "start": 26475, + "end": 26481, "loc": { "start": { "line": 781, @@ -116102,8 +116087,8 @@ "binop": null, "updateContext": null }, - "start": 26489, - "end": 26490, + "start": 26481, + "end": 26482, "loc": { "start": { "line": 781, @@ -116130,8 +116115,8 @@ "updateContext": null }, "value": "this", - "start": 26490, - "end": 26494, + "start": 26482, + "end": 26486, "loc": { "start": { "line": 781, @@ -116156,8 +116141,8 @@ "binop": null, "updateContext": null }, - "start": 26494, - "end": 26495, + "start": 26486, + "end": 26487, "loc": { "start": { "line": 781, @@ -116181,9 +116166,9 @@ "postfix": false, "binop": null }, - "value": "PAN_FORWARDS", - "start": 26495, - "end": 26507, + "value": "DOLLY_FORWARDS", + "start": 26487, + "end": 26501, "loc": { "start": { "line": 781, @@ -116191,7 +116176,7 @@ }, "end": { "line": 781, - "column": 44 + "column": 46 } } }, @@ -116208,16 +116193,16 @@ "binop": null, "updateContext": null }, - "start": 26507, - "end": 26508, + "start": 26501, + "end": 26502, "loc": { "start": { "line": 781, - "column": 44 + "column": 46 }, "end": { "line": 781, - "column": 45 + "column": 47 } } }, @@ -116235,16 +116220,16 @@ "updateContext": null }, "value": "=", - "start": 26509, - "end": 26510, + "start": 26503, + "end": 26504, "loc": { "start": { "line": 781, - "column": 46 + "column": 48 }, "end": { "line": 781, - "column": 47 + "column": 49 } } }, @@ -116261,16 +116246,198 @@ "binop": null, "updateContext": null }, + "start": 26505, + "end": 26506, + "loc": { + "start": { + "line": 781, + "column": 50 + }, + "end": { + "line": 781, + "column": 51 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "input", + "start": 26506, + "end": 26511, + "loc": { + "start": { + "line": 781, + "column": 51 + }, + "end": { + "line": 781, + "column": 56 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, "start": 26511, "end": 26512, "loc": { "start": { "line": 781, - "column": 48 + "column": 56 }, "end": { "line": 781, - "column": 49 + "column": 57 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "KEY_W", + "start": 26512, + "end": 26517, + "loc": { + "start": { + "line": 781, + "column": 57 + }, + "end": { + "line": 781, + "column": 62 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 26517, + "end": 26518, + "loc": { + "start": { + "line": 781, + "column": 62 + }, + "end": { + "line": 781, + "column": 63 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "input", + "start": 26519, + "end": 26524, + "loc": { + "start": { + "line": 781, + "column": 64 + }, + "end": { + "line": 781, + "column": 69 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 26524, + "end": 26525, + "loc": { + "start": { + "line": 781, + "column": 69 + }, + "end": { + "line": 781, + "column": 70 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "KEY_ADD", + "start": 26525, + "end": 26532, + "loc": { + "start": { + "line": 781, + "column": 70 + }, + "end": { + "line": 781, + "column": 77 } } }, @@ -116287,16 +116454,16 @@ "binop": null, "updateContext": null }, - "start": 26512, - "end": 26513, + "start": 26532, + "end": 26533, "loc": { "start": { "line": 781, - "column": 49 + "column": 77 }, "end": { "line": 781, - "column": 50 + "column": 78 } } }, @@ -116313,16 +116480,16 @@ "binop": null, "updateContext": null }, - "start": 26513, - "end": 26514, + "start": 26533, + "end": 26534, "loc": { "start": { "line": 781, - "column": 50 + "column": 78 }, "end": { "line": 781, - "column": 51 + "column": 79 } } }, @@ -116339,8 +116506,8 @@ "binop": null }, "value": "keyMap", - "start": 26535, - "end": 26541, + "start": 26555, + "end": 26561, "loc": { "start": { "line": 782, @@ -116365,8 +116532,8 @@ "binop": null, "updateContext": null }, - "start": 26541, - "end": 26542, + "start": 26561, + "end": 26562, "loc": { "start": { "line": 782, @@ -116393,8 +116560,8 @@ "updateContext": null }, "value": "this", - "start": 26542, - "end": 26546, + "start": 26562, + "end": 26566, "loc": { "start": { "line": 782, @@ -116419,8 +116586,8 @@ "binop": null, "updateContext": null }, - "start": 26546, - "end": 26547, + "start": 26566, + "end": 26567, "loc": { "start": { "line": 782, @@ -116444,9 +116611,9 @@ "postfix": false, "binop": null }, - "value": "DOLLY_FORWARDS", - "start": 26547, - "end": 26561, + "value": "DOLLY_BACKWARDS", + "start": 26567, + "end": 26582, "loc": { "start": { "line": 782, @@ -116454,7 +116621,7 @@ }, "end": { "line": 782, - "column": 46 + "column": 47 } } }, @@ -116471,16 +116638,16 @@ "binop": null, "updateContext": null }, - "start": 26561, - "end": 26562, + "start": 26582, + "end": 26583, "loc": { "start": { "line": 782, - "column": 46 + "column": 47 }, "end": { "line": 782, - "column": 47 + "column": 48 } } }, @@ -116498,16 +116665,16 @@ "updateContext": null }, "value": "=", - "start": 26563, - "end": 26564, + "start": 26584, + "end": 26585, "loc": { "start": { "line": 782, - "column": 48 + "column": 49 }, "end": { "line": 782, - "column": 49 + "column": 50 } } }, @@ -116524,16 +116691,16 @@ "binop": null, "updateContext": null }, - "start": 26565, - "end": 26566, + "start": 26586, + "end": 26587, "loc": { "start": { "line": 782, - "column": 50 + "column": 51 }, "end": { "line": 782, - "column": 51 + "column": 52 } } }, @@ -116550,16 +116717,16 @@ "binop": null }, "value": "input", - "start": 26566, - "end": 26571, + "start": 26587, + "end": 26592, "loc": { "start": { "line": 782, - "column": 51 + "column": 52 }, "end": { "line": 782, - "column": 56 + "column": 57 } } }, @@ -116576,16 +116743,16 @@ "binop": null, "updateContext": null }, - "start": 26571, - "end": 26572, + "start": 26592, + "end": 26593, "loc": { "start": { "line": 782, - "column": 56 + "column": 57 }, "end": { "line": 782, - "column": 57 + "column": 58 } } }, @@ -116601,17 +116768,17 @@ "postfix": false, "binop": null }, - "value": "KEY_W", - "start": 26572, - "end": 26577, + "value": "KEY_S", + "start": 26593, + "end": 26598, "loc": { "start": { "line": 782, - "column": 57 + "column": 58 }, "end": { "line": 782, - "column": 62 + "column": 63 } } }, @@ -116628,16 +116795,16 @@ "binop": null, "updateContext": null }, - "start": 26577, - "end": 26578, + "start": 26598, + "end": 26599, "loc": { "start": { "line": 782, - "column": 62 + "column": 63 }, "end": { "line": 782, - "column": 63 + "column": 64 } } }, @@ -116654,16 +116821,16 @@ "binop": null }, "value": "input", - "start": 26579, - "end": 26584, + "start": 26600, + "end": 26605, "loc": { "start": { "line": 782, - "column": 64 + "column": 65 }, "end": { "line": 782, - "column": 69 + "column": 70 } } }, @@ -116680,16 +116847,16 @@ "binop": null, "updateContext": null }, - "start": 26584, - "end": 26585, + "start": 26605, + "end": 26606, "loc": { "start": { "line": 782, - "column": 69 + "column": 70 }, "end": { "line": 782, - "column": 70 + "column": 71 } } }, @@ -116705,17 +116872,17 @@ "postfix": false, "binop": null }, - "value": "KEY_ADD", - "start": 26585, - "end": 26592, + "value": "KEY_SUBTRACT", + "start": 26606, + "end": 26618, "loc": { "start": { "line": 782, - "column": 70 + "column": 71 }, "end": { "line": 782, - "column": 77 + "column": 83 } } }, @@ -116732,16 +116899,16 @@ "binop": null, "updateContext": null }, - "start": 26592, - "end": 26593, + "start": 26618, + "end": 26619, "loc": { "start": { "line": 782, - "column": 77 + "column": 83 }, "end": { "line": 782, - "column": 78 + "column": 84 } } }, @@ -116758,16 +116925,16 @@ "binop": null, "updateContext": null }, - "start": 26593, - "end": 26594, + "start": 26619, + "end": 26620, "loc": { "start": { "line": 782, - "column": 78 + "column": 84 }, "end": { "line": 782, - "column": 79 + "column": 85 } } }, @@ -116784,8 +116951,8 @@ "binop": null }, "value": "keyMap", - "start": 26615, - "end": 26621, + "start": 26641, + "end": 26647, "loc": { "start": { "line": 783, @@ -116810,8 +116977,8 @@ "binop": null, "updateContext": null }, - "start": 26621, - "end": 26622, + "start": 26647, + "end": 26648, "loc": { "start": { "line": 783, @@ -116838,8 +117005,8 @@ "updateContext": null }, "value": "this", - "start": 26622, - "end": 26626, + "start": 26648, + "end": 26652, "loc": { "start": { "line": 783, @@ -116864,8 +117031,8 @@ "binop": null, "updateContext": null }, - "start": 26626, - "end": 26627, + "start": 26652, + "end": 26653, "loc": { "start": { "line": 783, @@ -116889,9 +117056,9 @@ "postfix": false, "binop": null }, - "value": "DOLLY_BACKWARDS", - "start": 26627, - "end": 26642, + "value": "ROTATE_X_POS", + "start": 26653, + "end": 26665, "loc": { "start": { "line": 783, @@ -116899,7 +117066,7 @@ }, "end": { "line": 783, - "column": 47 + "column": 44 } } }, @@ -116916,16 +117083,16 @@ "binop": null, "updateContext": null }, - "start": 26642, - "end": 26643, + "start": 26665, + "end": 26666, "loc": { "start": { "line": 783, - "column": 47 + "column": 44 }, "end": { "line": 783, - "column": 48 + "column": 45 } } }, @@ -116943,16 +117110,16 @@ "updateContext": null }, "value": "=", - "start": 26644, - "end": 26645, + "start": 26667, + "end": 26668, "loc": { "start": { "line": 783, - "column": 49 + "column": 46 }, "end": { "line": 783, - "column": 50 + "column": 47 } } }, @@ -116969,120 +117136,16 @@ "binop": null, "updateContext": null }, - "start": 26646, - "end": 26647, - "loc": { - "start": { - "line": 783, - "column": 51 - }, - "end": { - "line": 783, - "column": 52 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "input", - "start": 26647, - "end": 26652, - "loc": { - "start": { - "line": 783, - "column": 52 - }, - "end": { - "line": 783, - "column": 57 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 26652, - "end": 26653, - "loc": { - "start": { - "line": 783, - "column": 57 - }, - "end": { - "line": 783, - "column": 58 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "KEY_S", - "start": 26653, - "end": 26658, - "loc": { - "start": { - "line": 783, - "column": 58 - }, - "end": { - "line": 783, - "column": 63 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 26658, - "end": 26659, + "start": 26669, + "end": 26670, "loc": { "start": { "line": 783, - "column": 63 + "column": 48 }, "end": { "line": 783, - "column": 64 + "column": 49 } } }, @@ -117099,16 +117162,16 @@ "binop": null }, "value": "input", - "start": 26660, - "end": 26665, + "start": 26670, + "end": 26675, "loc": { "start": { "line": 783, - "column": 65 + "column": 49 }, "end": { "line": 783, - "column": 70 + "column": 54 } } }, @@ -117125,16 +117188,16 @@ "binop": null, "updateContext": null }, - "start": 26665, - "end": 26666, + "start": 26675, + "end": 26676, "loc": { "start": { "line": 783, - "column": 70 + "column": 54 }, "end": { "line": 783, - "column": 71 + "column": 55 } } }, @@ -117150,17 +117213,17 @@ "postfix": false, "binop": null }, - "value": "KEY_SUBTRACT", - "start": 26666, - "end": 26678, + "value": "KEY_DOWN_ARROW", + "start": 26676, + "end": 26690, "loc": { "start": { "line": 783, - "column": 71 + "column": 55 }, "end": { "line": 783, - "column": 83 + "column": 69 } } }, @@ -117177,16 +117240,16 @@ "binop": null, "updateContext": null }, - "start": 26678, - "end": 26679, + "start": 26690, + "end": 26691, "loc": { "start": { "line": 783, - "column": 83 + "column": 69 }, "end": { "line": 783, - "column": 84 + "column": 70 } } }, @@ -117203,16 +117266,16 @@ "binop": null, "updateContext": null }, - "start": 26679, - "end": 26680, + "start": 26691, + "end": 26692, "loc": { "start": { "line": 783, - "column": 84 + "column": 70 }, "end": { "line": 783, - "column": 85 + "column": 71 } } }, @@ -117229,8 +117292,8 @@ "binop": null }, "value": "keyMap", - "start": 26701, - "end": 26707, + "start": 26713, + "end": 26719, "loc": { "start": { "line": 784, @@ -117255,8 +117318,8 @@ "binop": null, "updateContext": null }, - "start": 26707, - "end": 26708, + "start": 26719, + "end": 26720, "loc": { "start": { "line": 784, @@ -117283,8 +117346,8 @@ "updateContext": null }, "value": "this", - "start": 26708, - "end": 26712, + "start": 26720, + "end": 26724, "loc": { "start": { "line": 784, @@ -117309,8 +117372,8 @@ "binop": null, "updateContext": null }, - "start": 26712, - "end": 26713, + "start": 26724, + "end": 26725, "loc": { "start": { "line": 784, @@ -117334,9 +117397,9 @@ "postfix": false, "binop": null }, - "value": "ROTATE_X_POS", - "start": 26713, - "end": 26725, + "value": "ROTATE_X_NEG", + "start": 26725, + "end": 26737, "loc": { "start": { "line": 784, @@ -117361,8 +117424,8 @@ "binop": null, "updateContext": null }, - "start": 26725, - "end": 26726, + "start": 26737, + "end": 26738, "loc": { "start": { "line": 784, @@ -117388,8 +117451,8 @@ "updateContext": null }, "value": "=", - "start": 26727, - "end": 26728, + "start": 26739, + "end": 26740, "loc": { "start": { "line": 784, @@ -117414,8 +117477,8 @@ "binop": null, "updateContext": null }, - "start": 26729, - "end": 26730, + "start": 26741, + "end": 26742, "loc": { "start": { "line": 784, @@ -117440,8 +117503,8 @@ "binop": null }, "value": "input", - "start": 26730, - "end": 26735, + "start": 26742, + "end": 26747, "loc": { "start": { "line": 784, @@ -117466,8 +117529,8 @@ "binop": null, "updateContext": null }, - "start": 26735, - "end": 26736, + "start": 26747, + "end": 26748, "loc": { "start": { "line": 784, @@ -117491,9 +117554,9 @@ "postfix": false, "binop": null }, - "value": "KEY_DOWN_ARROW", - "start": 26736, - "end": 26750, + "value": "KEY_UP_ARROW", + "start": 26748, + "end": 26760, "loc": { "start": { "line": 784, @@ -117501,7 +117564,7 @@ }, "end": { "line": 784, - "column": 69 + "column": 67 } } }, @@ -117518,16 +117581,16 @@ "binop": null, "updateContext": null }, - "start": 26750, - "end": 26751, + "start": 26760, + "end": 26761, "loc": { "start": { "line": 784, - "column": 69 + "column": 67 }, "end": { "line": 784, - "column": 70 + "column": 68 } } }, @@ -117544,16 +117607,16 @@ "binop": null, "updateContext": null }, - "start": 26751, - "end": 26752, + "start": 26761, + "end": 26762, "loc": { "start": { "line": 784, - "column": 70 + "column": 68 }, "end": { "line": 784, - "column": 71 + "column": 69 } } }, @@ -117570,8 +117633,8 @@ "binop": null }, "value": "keyMap", - "start": 26773, - "end": 26779, + "start": 26783, + "end": 26789, "loc": { "start": { "line": 785, @@ -117596,8 +117659,8 @@ "binop": null, "updateContext": null }, - "start": 26779, - "end": 26780, + "start": 26789, + "end": 26790, "loc": { "start": { "line": 785, @@ -117624,8 +117687,8 @@ "updateContext": null }, "value": "this", - "start": 26780, - "end": 26784, + "start": 26790, + "end": 26794, "loc": { "start": { "line": 785, @@ -117650,8 +117713,8 @@ "binop": null, "updateContext": null }, - "start": 26784, - "end": 26785, + "start": 26794, + "end": 26795, "loc": { "start": { "line": 785, @@ -117675,9 +117738,9 @@ "postfix": false, "binop": null }, - "value": "ROTATE_X_NEG", - "start": 26785, - "end": 26797, + "value": "ROTATE_Y_POS", + "start": 26795, + "end": 26807, "loc": { "start": { "line": 785, @@ -117702,8 +117765,8 @@ "binop": null, "updateContext": null }, - "start": 26797, - "end": 26798, + "start": 26807, + "end": 26808, "loc": { "start": { "line": 785, @@ -117729,8 +117792,8 @@ "updateContext": null }, "value": "=", - "start": 26799, - "end": 26800, + "start": 26809, + "end": 26810, "loc": { "start": { "line": 785, @@ -117755,8 +117818,8 @@ "binop": null, "updateContext": null }, - "start": 26801, - "end": 26802, + "start": 26811, + "end": 26812, "loc": { "start": { "line": 785, @@ -117781,8 +117844,8 @@ "binop": null }, "value": "input", - "start": 26802, - "end": 26807, + "start": 26812, + "end": 26817, "loc": { "start": { "line": 785, @@ -117807,8 +117870,8 @@ "binop": null, "updateContext": null }, - "start": 26807, - "end": 26808, + "start": 26817, + "end": 26818, "loc": { "start": { "line": 785, @@ -117832,14 +117895,66 @@ "postfix": false, "binop": null }, - "value": "KEY_UP_ARROW", - "start": 26808, - "end": 26820, + "value": "KEY_Q", + "start": 26818, + "end": 26823, "loc": { "start": { "line": 785, "column": 55 }, + "end": { + "line": 785, + "column": 60 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 26823, + "end": 26824, + "loc": { + "start": { + "line": 785, + "column": 60 + }, + "end": { + "line": 785, + "column": 61 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "input", + "start": 26825, + "end": 26830, + "loc": { + "start": { + "line": 785, + "column": 62 + }, "end": { "line": 785, "column": 67 @@ -117848,7 +117963,7 @@ }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -117859,8 +117974,8 @@ "binop": null, "updateContext": null }, - "start": 26820, - "end": 26821, + "start": 26830, + "end": 26831, "loc": { "start": { "line": 785, @@ -117872,6 +117987,58 @@ } } }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "KEY_LEFT_ARROW", + "start": 26831, + "end": 26845, + "loc": { + "start": { + "line": 785, + "column": 68 + }, + "end": { + "line": 785, + "column": 82 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 26845, + "end": 26846, + "loc": { + "start": { + "line": 785, + "column": 82 + }, + "end": { + "line": 785, + "column": 83 + } + } + }, { "type": { "label": ";", @@ -117885,16 +118052,16 @@ "binop": null, "updateContext": null }, - "start": 26821, - "end": 26822, + "start": 26846, + "end": 26847, "loc": { "start": { "line": 785, - "column": 68 + "column": 83 }, "end": { "line": 785, - "column": 69 + "column": 84 } } }, @@ -117911,8 +118078,8 @@ "binop": null }, "value": "keyMap", - "start": 26843, - "end": 26849, + "start": 26868, + "end": 26874, "loc": { "start": { "line": 786, @@ -117937,8 +118104,8 @@ "binop": null, "updateContext": null }, - "start": 26849, - "end": 26850, + "start": 26874, + "end": 26875, "loc": { "start": { "line": 786, @@ -117965,8 +118132,8 @@ "updateContext": null }, "value": "this", - "start": 26850, - "end": 26854, + "start": 26875, + "end": 26879, "loc": { "start": { "line": 786, @@ -117991,8 +118158,8 @@ "binop": null, "updateContext": null }, - "start": 26854, - "end": 26855, + "start": 26879, + "end": 26880, "loc": { "start": { "line": 786, @@ -118016,9 +118183,9 @@ "postfix": false, "binop": null }, - "value": "ROTATE_Y_POS", - "start": 26855, - "end": 26867, + "value": "ROTATE_Y_NEG", + "start": 26880, + "end": 26892, "loc": { "start": { "line": 786, @@ -118043,8 +118210,8 @@ "binop": null, "updateContext": null }, - "start": 26867, - "end": 26868, + "start": 26892, + "end": 26893, "loc": { "start": { "line": 786, @@ -118070,8 +118237,8 @@ "updateContext": null }, "value": "=", - "start": 26869, - "end": 26870, + "start": 26894, + "end": 26895, "loc": { "start": { "line": 786, @@ -118096,8 +118263,8 @@ "binop": null, "updateContext": null }, - "start": 26871, - "end": 26872, + "start": 26896, + "end": 26897, "loc": { "start": { "line": 786, @@ -118122,8 +118289,8 @@ "binop": null }, "value": "input", - "start": 26872, - "end": 26877, + "start": 26897, + "end": 26902, "loc": { "start": { "line": 786, @@ -118148,8 +118315,8 @@ "binop": null, "updateContext": null }, - "start": 26877, - "end": 26878, + "start": 26902, + "end": 26903, "loc": { "start": { "line": 786, @@ -118173,9 +118340,9 @@ "postfix": false, "binop": null }, - "value": "KEY_Q", - "start": 26878, - "end": 26883, + "value": "KEY_E", + "start": 26903, + "end": 26908, "loc": { "start": { "line": 786, @@ -118200,8 +118367,8 @@ "binop": null, "updateContext": null }, - "start": 26883, - "end": 26884, + "start": 26908, + "end": 26909, "loc": { "start": { "line": 786, @@ -118226,8 +118393,8 @@ "binop": null }, "value": "input", - "start": 26885, - "end": 26890, + "start": 26910, + "end": 26915, "loc": { "start": { "line": 786, @@ -118252,8 +118419,8 @@ "binop": null, "updateContext": null }, - "start": 26890, - "end": 26891, + "start": 26915, + "end": 26916, "loc": { "start": { "line": 786, @@ -118277,9 +118444,9 @@ "postfix": false, "binop": null }, - "value": "KEY_LEFT_ARROW", - "start": 26891, - "end": 26905, + "value": "KEY_RIGHT_ARROW", + "start": 26916, + "end": 26931, "loc": { "start": { "line": 786, @@ -118287,7 +118454,7 @@ }, "end": { "line": 786, - "column": 82 + "column": 83 } } }, @@ -118304,16 +118471,16 @@ "binop": null, "updateContext": null }, - "start": 26905, - "end": 26906, + "start": 26931, + "end": 26932, "loc": { "start": { "line": 786, - "column": 82 + "column": 83 }, "end": { "line": 786, - "column": 83 + "column": 84 } } }, @@ -118330,16 +118497,16 @@ "binop": null, "updateContext": null }, - "start": 26906, - "end": 26907, + "start": 26932, + "end": 26933, "loc": { "start": { "line": 786, - "column": 83 + "column": 84 }, "end": { "line": 786, - "column": 84 + "column": 85 } } }, @@ -118356,8 +118523,8 @@ "binop": null }, "value": "keyMap", - "start": 26928, - "end": 26934, + "start": 26954, + "end": 26960, "loc": { "start": { "line": 787, @@ -118382,8 +118549,8 @@ "binop": null, "updateContext": null }, - "start": 26934, - "end": 26935, + "start": 26960, + "end": 26961, "loc": { "start": { "line": 787, @@ -118410,8 +118577,8 @@ "updateContext": null }, "value": "this", - "start": 26935, - "end": 26939, + "start": 26961, + "end": 26965, "loc": { "start": { "line": 787, @@ -118436,8 +118603,8 @@ "binop": null, "updateContext": null }, - "start": 26939, - "end": 26940, + "start": 26965, + "end": 26966, "loc": { "start": { "line": 787, @@ -118461,9 +118628,9 @@ "postfix": false, "binop": null }, - "value": "ROTATE_Y_NEG", - "start": 26940, - "end": 26952, + "value": "AXIS_VIEW_RIGHT", + "start": 26966, + "end": 26981, "loc": { "start": { "line": 787, @@ -118471,7 +118638,7 @@ }, "end": { "line": 787, - "column": 44 + "column": 47 } } }, @@ -118488,16 +118655,16 @@ "binop": null, "updateContext": null }, - "start": 26952, - "end": 26953, + "start": 26981, + "end": 26982, "loc": { "start": { "line": 787, - "column": 44 + "column": 47 }, "end": { "line": 787, - "column": 45 + "column": 48 } } }, @@ -118515,16 +118682,16 @@ "updateContext": null }, "value": "=", - "start": 26954, - "end": 26955, + "start": 26983, + "end": 26984, "loc": { "start": { "line": 787, - "column": 46 + "column": 49 }, "end": { "line": 787, - "column": 47 + "column": 50 } } }, @@ -118541,16 +118708,16 @@ "binop": null, "updateContext": null }, - "start": 26956, - "end": 26957, + "start": 26985, + "end": 26986, "loc": { "start": { "line": 787, - "column": 48 + "column": 51 }, "end": { "line": 787, - "column": 49 + "column": 52 } } }, @@ -118567,16 +118734,16 @@ "binop": null }, "value": "input", - "start": 26957, - "end": 26962, + "start": 26986, + "end": 26991, "loc": { "start": { "line": 787, - "column": 49 + "column": 52 }, "end": { "line": 787, - "column": 54 + "column": 57 } } }, @@ -118593,68 +118760,16 @@ "binop": null, "updateContext": null }, - "start": 26962, - "end": 26963, - "loc": { - "start": { - "line": 787, - "column": 54 - }, - "end": { - "line": 787, - "column": 55 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "KEY_E", - "start": 26963, - "end": 26968, - "loc": { - "start": { - "line": 787, - "column": 55 - }, - "end": { - "line": 787, - "column": 60 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 26968, - "end": 26969, + "start": 26991, + "end": 26992, "loc": { "start": { "line": 787, - "column": 60 + "column": 57 }, "end": { "line": 787, - "column": 61 + "column": 58 } } }, @@ -118670,13 +118785,13 @@ "postfix": false, "binop": null }, - "value": "input", - "start": 26970, - "end": 26975, + "value": "KEY_NUM_1", + "start": 26992, + "end": 27001, "loc": { "start": { "line": 787, - "column": 62 + "column": 58 }, "end": { "line": 787, @@ -118686,7 +118801,7 @@ }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -118697,8 +118812,8 @@ "binop": null, "updateContext": null }, - "start": 26975, - "end": 26976, + "start": 27001, + "end": 27002, "loc": { "start": { "line": 787, @@ -118710,58 +118825,6 @@ } } }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "KEY_RIGHT_ARROW", - "start": 26976, - "end": 26991, - "loc": { - "start": { - "line": 787, - "column": 68 - }, - "end": { - "line": 787, - "column": 83 - } - } - }, - { - "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 26991, - "end": 26992, - "loc": { - "start": { - "line": 787, - "column": 83 - }, - "end": { - "line": 787, - "column": 84 - } - } - }, { "type": { "label": ";", @@ -118775,16 +118838,16 @@ "binop": null, "updateContext": null }, - "start": 26992, - "end": 26993, + "start": 27002, + "end": 27003, "loc": { "start": { "line": 787, - "column": 84 + "column": 68 }, "end": { "line": 787, - "column": 85 + "column": 69 } } }, @@ -118801,8 +118864,8 @@ "binop": null }, "value": "keyMap", - "start": 27014, - "end": 27020, + "start": 27024, + "end": 27030, "loc": { "start": { "line": 788, @@ -118827,8 +118890,8 @@ "binop": null, "updateContext": null }, - "start": 27020, - "end": 27021, + "start": 27030, + "end": 27031, "loc": { "start": { "line": 788, @@ -118855,8 +118918,8 @@ "updateContext": null }, "value": "this", - "start": 27021, - "end": 27025, + "start": 27031, + "end": 27035, "loc": { "start": { "line": 788, @@ -118881,8 +118944,8 @@ "binop": null, "updateContext": null }, - "start": 27025, - "end": 27026, + "start": 27035, + "end": 27036, "loc": { "start": { "line": 788, @@ -118906,9 +118969,9 @@ "postfix": false, "binop": null }, - "value": "AXIS_VIEW_RIGHT", - "start": 27026, - "end": 27041, + "value": "AXIS_VIEW_BACK", + "start": 27036, + "end": 27050, "loc": { "start": { "line": 788, @@ -118916,7 +118979,7 @@ }, "end": { "line": 788, - "column": 47 + "column": 46 } } }, @@ -118933,16 +118996,16 @@ "binop": null, "updateContext": null }, - "start": 27041, - "end": 27042, + "start": 27050, + "end": 27051, "loc": { "start": { "line": 788, - "column": 47 + "column": 46 }, "end": { "line": 788, - "column": 48 + "column": 47 } } }, @@ -118960,16 +119023,16 @@ "updateContext": null }, "value": "=", - "start": 27043, - "end": 27044, + "start": 27052, + "end": 27053, "loc": { "start": { "line": 788, - "column": 49 + "column": 48 }, "end": { "line": 788, - "column": 50 + "column": 49 } } }, @@ -118986,16 +119049,16 @@ "binop": null, "updateContext": null }, - "start": 27045, - "end": 27046, + "start": 27054, + "end": 27055, "loc": { "start": { "line": 788, - "column": 51 + "column": 50 }, "end": { "line": 788, - "column": 52 + "column": 51 } } }, @@ -119012,16 +119075,16 @@ "binop": null }, "value": "input", - "start": 27046, - "end": 27051, + "start": 27055, + "end": 27060, "loc": { "start": { "line": 788, - "column": 52 + "column": 51 }, "end": { "line": 788, - "column": 57 + "column": 56 } } }, @@ -119038,16 +119101,16 @@ "binop": null, "updateContext": null }, - "start": 27051, - "end": 27052, + "start": 27060, + "end": 27061, "loc": { "start": { "line": 788, - "column": 57 + "column": 56 }, "end": { "line": 788, - "column": 58 + "column": 57 } } }, @@ -119063,17 +119126,17 @@ "postfix": false, "binop": null }, - "value": "KEY_NUM_1", - "start": 27052, - "end": 27061, + "value": "KEY_NUM_2", + "start": 27061, + "end": 27070, "loc": { "start": { "line": 788, - "column": 58 + "column": 57 }, "end": { "line": 788, - "column": 67 + "column": 66 } } }, @@ -119090,16 +119153,16 @@ "binop": null, "updateContext": null }, - "start": 27061, - "end": 27062, + "start": 27070, + "end": 27071, "loc": { "start": { "line": 788, - "column": 67 + "column": 66 }, "end": { "line": 788, - "column": 68 + "column": 67 } } }, @@ -119116,16 +119179,16 @@ "binop": null, "updateContext": null }, - "start": 27062, - "end": 27063, + "start": 27071, + "end": 27072, "loc": { "start": { "line": 788, - "column": 68 + "column": 67 }, "end": { "line": 788, - "column": 69 + "column": 68 } } }, @@ -119142,8 +119205,8 @@ "binop": null }, "value": "keyMap", - "start": 27084, - "end": 27090, + "start": 27093, + "end": 27099, "loc": { "start": { "line": 789, @@ -119168,8 +119231,8 @@ "binop": null, "updateContext": null }, - "start": 27090, - "end": 27091, + "start": 27099, + "end": 27100, "loc": { "start": { "line": 789, @@ -119196,8 +119259,8 @@ "updateContext": null }, "value": "this", - "start": 27091, - "end": 27095, + "start": 27100, + "end": 27104, "loc": { "start": { "line": 789, @@ -119222,8 +119285,8 @@ "binop": null, "updateContext": null }, - "start": 27095, - "end": 27096, + "start": 27104, + "end": 27105, "loc": { "start": { "line": 789, @@ -119247,9 +119310,9 @@ "postfix": false, "binop": null }, - "value": "AXIS_VIEW_BACK", - "start": 27096, - "end": 27110, + "value": "AXIS_VIEW_LEFT", + "start": 27105, + "end": 27119, "loc": { "start": { "line": 789, @@ -119274,8 +119337,8 @@ "binop": null, "updateContext": null }, - "start": 27110, - "end": 27111, + "start": 27119, + "end": 27120, "loc": { "start": { "line": 789, @@ -119301,8 +119364,8 @@ "updateContext": null }, "value": "=", - "start": 27112, - "end": 27113, + "start": 27121, + "end": 27122, "loc": { "start": { "line": 789, @@ -119327,8 +119390,8 @@ "binop": null, "updateContext": null }, - "start": 27114, - "end": 27115, + "start": 27123, + "end": 27124, "loc": { "start": { "line": 789, @@ -119353,8 +119416,8 @@ "binop": null }, "value": "input", - "start": 27115, - "end": 27120, + "start": 27124, + "end": 27129, "loc": { "start": { "line": 789, @@ -119379,8 +119442,8 @@ "binop": null, "updateContext": null }, - "start": 27120, - "end": 27121, + "start": 27129, + "end": 27130, "loc": { "start": { "line": 789, @@ -119404,9 +119467,9 @@ "postfix": false, "binop": null }, - "value": "KEY_NUM_2", - "start": 27121, - "end": 27130, + "value": "KEY_NUM_3", + "start": 27130, + "end": 27139, "loc": { "start": { "line": 789, @@ -119431,8 +119494,8 @@ "binop": null, "updateContext": null }, - "start": 27130, - "end": 27131, + "start": 27139, + "end": 27140, "loc": { "start": { "line": 789, @@ -119457,8 +119520,8 @@ "binop": null, "updateContext": null }, - "start": 27131, - "end": 27132, + "start": 27140, + "end": 27141, "loc": { "start": { "line": 789, @@ -119483,8 +119546,8 @@ "binop": null }, "value": "keyMap", - "start": 27153, - "end": 27159, + "start": 27162, + "end": 27168, "loc": { "start": { "line": 790, @@ -119509,8 +119572,8 @@ "binop": null, "updateContext": null }, - "start": 27159, - "end": 27160, + "start": 27168, + "end": 27169, "loc": { "start": { "line": 790, @@ -119537,8 +119600,8 @@ "updateContext": null }, "value": "this", - "start": 27160, - "end": 27164, + "start": 27169, + "end": 27173, "loc": { "start": { "line": 790, @@ -119563,8 +119626,8 @@ "binop": null, "updateContext": null }, - "start": 27164, - "end": 27165, + "start": 27173, + "end": 27174, "loc": { "start": { "line": 790, @@ -119588,9 +119651,9 @@ "postfix": false, "binop": null }, - "value": "AXIS_VIEW_LEFT", - "start": 27165, - "end": 27179, + "value": "AXIS_VIEW_FRONT", + "start": 27174, + "end": 27189, "loc": { "start": { "line": 790, @@ -119598,7 +119661,7 @@ }, "end": { "line": 790, - "column": 46 + "column": 47 } } }, @@ -119615,16 +119678,16 @@ "binop": null, "updateContext": null }, - "start": 27179, - "end": 27180, + "start": 27189, + "end": 27190, "loc": { "start": { "line": 790, - "column": 46 + "column": 47 }, "end": { "line": 790, - "column": 47 + "column": 48 } } }, @@ -119642,16 +119705,16 @@ "updateContext": null }, "value": "=", - "start": 27181, - "end": 27182, + "start": 27191, + "end": 27192, "loc": { "start": { "line": 790, - "column": 48 + "column": 49 }, "end": { "line": 790, - "column": 49 + "column": 50 } } }, @@ -119668,16 +119731,16 @@ "binop": null, "updateContext": null }, - "start": 27183, - "end": 27184, + "start": 27193, + "end": 27194, "loc": { "start": { "line": 790, - "column": 50 + "column": 51 }, "end": { "line": 790, - "column": 51 + "column": 52 } } }, @@ -119694,16 +119757,16 @@ "binop": null }, "value": "input", - "start": 27184, - "end": 27189, + "start": 27194, + "end": 27199, "loc": { "start": { "line": 790, - "column": 51 + "column": 52 }, "end": { "line": 790, - "column": 56 + "column": 57 } } }, @@ -119720,16 +119783,16 @@ "binop": null, "updateContext": null }, - "start": 27189, - "end": 27190, + "start": 27199, + "end": 27200, "loc": { "start": { "line": 790, - "column": 56 + "column": 57 }, "end": { "line": 790, - "column": 57 + "column": 58 } } }, @@ -119745,17 +119808,17 @@ "postfix": false, "binop": null }, - "value": "KEY_NUM_3", - "start": 27190, - "end": 27199, + "value": "KEY_NUM_4", + "start": 27200, + "end": 27209, "loc": { "start": { "line": 790, - "column": 57 + "column": 58 }, "end": { "line": 790, - "column": 66 + "column": 67 } } }, @@ -119772,16 +119835,16 @@ "binop": null, "updateContext": null }, - "start": 27199, - "end": 27200, + "start": 27209, + "end": 27210, "loc": { "start": { "line": 790, - "column": 66 + "column": 67 }, "end": { "line": 790, - "column": 67 + "column": 68 } } }, @@ -119798,16 +119861,16 @@ "binop": null, "updateContext": null }, - "start": 27200, - "end": 27201, + "start": 27210, + "end": 27211, "loc": { "start": { "line": 790, - "column": 67 + "column": 68 }, "end": { "line": 790, - "column": 68 + "column": 69 } } }, @@ -119824,8 +119887,8 @@ "binop": null }, "value": "keyMap", - "start": 27222, - "end": 27228, + "start": 27232, + "end": 27238, "loc": { "start": { "line": 791, @@ -119850,8 +119913,8 @@ "binop": null, "updateContext": null }, - "start": 27228, - "end": 27229, + "start": 27238, + "end": 27239, "loc": { "start": { "line": 791, @@ -119878,8 +119941,8 @@ "updateContext": null }, "value": "this", - "start": 27229, - "end": 27233, + "start": 27239, + "end": 27243, "loc": { "start": { "line": 791, @@ -119904,8 +119967,8 @@ "binop": null, "updateContext": null }, - "start": 27233, - "end": 27234, + "start": 27243, + "end": 27244, "loc": { "start": { "line": 791, @@ -119929,9 +119992,9 @@ "postfix": false, "binop": null }, - "value": "AXIS_VIEW_FRONT", - "start": 27234, - "end": 27249, + "value": "AXIS_VIEW_TOP", + "start": 27244, + "end": 27257, "loc": { "start": { "line": 791, @@ -119939,7 +120002,7 @@ }, "end": { "line": 791, - "column": 47 + "column": 45 } } }, @@ -119956,16 +120019,16 @@ "binop": null, "updateContext": null }, - "start": 27249, - "end": 27250, + "start": 27257, + "end": 27258, "loc": { "start": { "line": 791, - "column": 47 + "column": 45 }, "end": { "line": 791, - "column": 48 + "column": 46 } } }, @@ -119983,16 +120046,16 @@ "updateContext": null }, "value": "=", - "start": 27251, - "end": 27252, + "start": 27259, + "end": 27260, "loc": { "start": { "line": 791, - "column": 49 + "column": 47 }, "end": { "line": 791, - "column": 50 + "column": 48 } } }, @@ -120009,16 +120072,16 @@ "binop": null, "updateContext": null }, - "start": 27253, - "end": 27254, + "start": 27261, + "end": 27262, "loc": { "start": { "line": 791, - "column": 51 + "column": 49 }, "end": { "line": 791, - "column": 52 + "column": 50 } } }, @@ -120035,16 +120098,16 @@ "binop": null }, "value": "input", - "start": 27254, - "end": 27259, + "start": 27262, + "end": 27267, "loc": { "start": { "line": 791, - "column": 52 + "column": 50 }, "end": { "line": 791, - "column": 57 + "column": 55 } } }, @@ -120061,16 +120124,16 @@ "binop": null, "updateContext": null }, - "start": 27259, - "end": 27260, + "start": 27267, + "end": 27268, "loc": { "start": { "line": 791, - "column": 57 + "column": 55 }, "end": { "line": 791, - "column": 58 + "column": 56 } } }, @@ -120086,17 +120149,17 @@ "postfix": false, "binop": null }, - "value": "KEY_NUM_4", - "start": 27260, - "end": 27269, + "value": "KEY_NUM_5", + "start": 27268, + "end": 27277, "loc": { "start": { "line": 791, - "column": 58 + "column": 56 }, "end": { "line": 791, - "column": 67 + "column": 65 } } }, @@ -120113,16 +120176,16 @@ "binop": null, "updateContext": null }, - "start": 27269, - "end": 27270, + "start": 27277, + "end": 27278, "loc": { "start": { "line": 791, - "column": 67 + "column": 65 }, "end": { "line": 791, - "column": 68 + "column": 66 } } }, @@ -120139,16 +120202,16 @@ "binop": null, "updateContext": null }, - "start": 27270, - "end": 27271, + "start": 27278, + "end": 27279, "loc": { "start": { "line": 791, - "column": 68 + "column": 66 }, "end": { "line": 791, - "column": 69 + "column": 67 } } }, @@ -120165,8 +120228,8 @@ "binop": null }, "value": "keyMap", - "start": 27292, - "end": 27298, + "start": 27300, + "end": 27306, "loc": { "start": { "line": 792, @@ -120191,8 +120254,8 @@ "binop": null, "updateContext": null }, - "start": 27298, - "end": 27299, + "start": 27306, + "end": 27307, "loc": { "start": { "line": 792, @@ -120219,8 +120282,8 @@ "updateContext": null }, "value": "this", - "start": 27299, - "end": 27303, + "start": 27307, + "end": 27311, "loc": { "start": { "line": 792, @@ -120245,8 +120308,8 @@ "binop": null, "updateContext": null }, - "start": 27303, - "end": 27304, + "start": 27311, + "end": 27312, "loc": { "start": { "line": 792, @@ -120270,9 +120333,9 @@ "postfix": false, "binop": null }, - "value": "AXIS_VIEW_TOP", - "start": 27304, - "end": 27317, + "value": "AXIS_VIEW_BOTTOM", + "start": 27312, + "end": 27328, "loc": { "start": { "line": 792, @@ -120280,7 +120343,7 @@ }, "end": { "line": 792, - "column": 45 + "column": 48 } } }, @@ -120297,16 +120360,16 @@ "binop": null, "updateContext": null }, - "start": 27317, - "end": 27318, + "start": 27328, + "end": 27329, "loc": { "start": { "line": 792, - "column": 45 + "column": 48 }, "end": { "line": 792, - "column": 46 + "column": 49 } } }, @@ -120324,16 +120387,16 @@ "updateContext": null }, "value": "=", - "start": 27319, - "end": 27320, + "start": 27330, + "end": 27331, "loc": { "start": { "line": 792, - "column": 47 + "column": 50 }, "end": { "line": 792, - "column": 48 + "column": 51 } } }, @@ -120350,16 +120413,16 @@ "binop": null, "updateContext": null }, - "start": 27321, - "end": 27322, + "start": 27332, + "end": 27333, "loc": { "start": { "line": 792, - "column": 49 + "column": 52 }, "end": { "line": 792, - "column": 50 + "column": 53 } } }, @@ -120376,16 +120439,16 @@ "binop": null }, "value": "input", - "start": 27322, - "end": 27327, + "start": 27333, + "end": 27338, "loc": { "start": { "line": 792, - "column": 50 + "column": 53 }, "end": { "line": 792, - "column": 55 + "column": 58 } } }, @@ -120402,16 +120465,16 @@ "binop": null, "updateContext": null }, - "start": 27327, - "end": 27328, + "start": 27338, + "end": 27339, "loc": { "start": { "line": 792, - "column": 55 + "column": 58 }, "end": { "line": 792, - "column": 56 + "column": 59 } } }, @@ -120427,17 +120490,17 @@ "postfix": false, "binop": null }, - "value": "KEY_NUM_5", - "start": 27328, - "end": 27337, + "value": "KEY_NUM_6", + "start": 27339, + "end": 27348, "loc": { "start": { "line": 792, - "column": 56 + "column": 59 }, "end": { "line": 792, - "column": 65 + "column": 68 } } }, @@ -120454,16 +120517,16 @@ "binop": null, "updateContext": null }, - "start": 27337, - "end": 27338, + "start": 27348, + "end": 27349, "loc": { "start": { "line": 792, - "column": 65 + "column": 68 }, "end": { "line": 792, - "column": 66 + "column": 69 } } }, @@ -120480,34 +120543,36 @@ "binop": null, "updateContext": null }, - "start": 27338, - "end": 27339, + "start": 27349, + "end": 27350, "loc": { "start": { "line": 792, - "column": 66 + "column": 69 }, "end": { "line": 792, - "column": 67 + "column": 70 } } }, { "type": { - "label": "name", + "label": "break", + "keyword": "break", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "keyMap", - "start": 27360, - "end": 27366, + "value": "break", + "start": 27371, + "end": 27376, "loc": { "start": { "line": 793, @@ -120515,15 +120580,15 @@ }, "end": { "line": 793, - "column": 26 + "column": 25 } } }, { "type": { - "label": "[", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -120532,25 +120597,25 @@ "binop": null, "updateContext": null }, - "start": 27366, - "end": 27367, + "start": 27376, + "end": 27377, "loc": { "start": { "line": 793, - "column": 26 + "column": 25 }, "end": { "line": 793, - "column": 27 + "column": 26 } } }, { "type": { - "label": "this", - "keyword": "this", - "beforeExpr": false, - "startsExpr": true, + "label": "case", + "keyword": "case", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -120559,25 +120624,25 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 27367, - "end": 27371, + "value": "case", + "start": 27395, + "end": 27399, "loc": { "start": { - "line": 793, - "column": 27 + "line": 795, + "column": 16 }, "end": { - "line": 793, - "column": 31 + "line": 795, + "column": 20 } } }, { "type": { - "label": ".", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -120586,102 +120651,103 @@ "binop": null, "updateContext": null }, - "start": 27371, - "end": 27372, + "value": "azerty", + "start": 27400, + "end": 27408, "loc": { "start": { - "line": 793, - "column": 31 + "line": 795, + "column": 21 }, "end": { - "line": 793, - "column": 32 + "line": 795, + "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": "AXIS_VIEW_BOTTOM", - "start": 27372, - "end": 27388, + "start": 27408, + "end": 27409, "loc": { "start": { - "line": 793, - "column": 32 + "line": 795, + "column": 29 }, "end": { - "line": 793, - "column": 48 + "line": 795, + "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": 27388, - "end": 27389, + "value": "keyMap", + "start": 27430, + "end": 27436, "loc": { "start": { - "line": 793, - "column": 48 + "line": 796, + "column": 20 }, "end": { - "line": 793, - "column": 49 + "line": 796, + "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 }, - "value": "=", - "start": 27390, - "end": 27391, + "start": 27436, + "end": 27437, "loc": { "start": { - "line": 793, - "column": 50 + "line": 796, + "column": 26 }, "end": { - "line": 793, - "column": 51 + "line": 796, + "column": 27 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "this", + "keyword": "this", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -120691,128 +120757,130 @@ "binop": null, "updateContext": null }, - "start": 27392, - "end": 27393, + "value": "this", + "start": 27437, + "end": 27441, "loc": { "start": { - "line": 793, - "column": 52 + "line": 796, + "column": 27 }, "end": { - "line": 793, - "column": 53 + "line": 796, + "column": 31 } } }, { "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": "input", - "start": 27393, - "end": 27398, + "start": 27441, + "end": 27442, "loc": { "start": { - "line": 793, - "column": 53 + "line": 796, + "column": 31 }, "end": { - "line": 793, - "column": 58 + "line": 796, + "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": 27398, - "end": 27399, + "value": "PAN_LEFT", + "start": 27442, + "end": 27450, "loc": { "start": { - "line": 793, - "column": 58 + "line": 796, + "column": 32 }, "end": { - "line": 793, - "column": 59 + "line": 796, + "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": "KEY_NUM_6", - "start": 27399, - "end": 27408, + "start": 27450, + "end": 27451, "loc": { "start": { - "line": 793, - "column": 59 + "line": 796, + "column": 40 }, "end": { - "line": 793, - "column": 68 + "line": 796, + "column": 41 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 27408, - "end": 27409, + "value": "=", + "start": 27452, + "end": 27453, "loc": { "start": { - "line": 793, - "column": 68 + "line": 796, + "column": 42 }, "end": { - "line": 793, - "column": 69 + "line": 796, + "column": 43 } } }, { "type": { - "label": ";", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -120821,51 +120889,49 @@ "binop": null, "updateContext": null }, - "start": 27409, - "end": 27410, + "start": 27454, + "end": 27455, "loc": { "start": { - "line": 793, - "column": 69 + "line": 796, + "column": 44 }, "end": { - "line": 793, - "column": 70 + "line": 796, + "column": 45 } } }, { "type": { - "label": "break", - "keyword": "break", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "break", - "start": 27431, - "end": 27436, + "value": "input", + "start": 27455, + "end": 27460, "loc": { "start": { - "line": 794, - "column": 20 + "line": 796, + "column": 45 }, "end": { - "line": 794, - "column": 25 + "line": 796, + "column": 50 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -120875,52 +120941,50 @@ "binop": null, "updateContext": null }, - "start": 27436, - "end": 27437, + "start": 27460, + "end": 27461, "loc": { "start": { - "line": 794, - "column": 25 + "line": 796, + "column": 50 }, "end": { - "line": 794, - "column": 26 + "line": 796, + "column": 51 } } }, { "type": { - "label": "case", - "keyword": "case", - "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": "case", - "start": 27455, - "end": 27459, + "value": "KEY_Q", + "start": 27461, + "end": 27466, "loc": { "start": { "line": 796, - "column": 16 + "column": 51 }, "end": { "line": 796, - "column": 20 + "column": 56 } } }, { "type": { - "label": "string", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -120929,23 +120993,22 @@ "binop": null, "updateContext": null }, - "value": "azerty", - "start": 27460, - "end": 27468, + "start": 27466, + "end": 27467, "loc": { "start": { "line": 796, - "column": 21 + "column": 56 }, "end": { "line": 796, - "column": 29 + "column": 57 } } }, { "type": { - "label": ":", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -120956,16 +121019,16 @@ "binop": null, "updateContext": null }, - "start": 27468, - "end": 27469, + "start": 27467, + "end": 27468, "loc": { "start": { "line": 796, - "column": 29 + "column": 57 }, "end": { "line": 796, - "column": 30 + "column": 58 } } }, @@ -120982,8 +121045,8 @@ "binop": null }, "value": "keyMap", - "start": 27490, - "end": 27496, + "start": 27489, + "end": 27495, "loc": { "start": { "line": 797, @@ -121008,8 +121071,8 @@ "binop": null, "updateContext": null }, - "start": 27496, - "end": 27497, + "start": 27495, + "end": 27496, "loc": { "start": { "line": 797, @@ -121036,8 +121099,8 @@ "updateContext": null }, "value": "this", - "start": 27497, - "end": 27501, + "start": 27496, + "end": 27500, "loc": { "start": { "line": 797, @@ -121062,8 +121125,8 @@ "binop": null, "updateContext": null }, - "start": 27501, - "end": 27502, + "start": 27500, + "end": 27501, "loc": { "start": { "line": 797, @@ -121087,8 +121150,8 @@ "postfix": false, "binop": null }, - "value": "PAN_LEFT", - "start": 27502, + "value": "PAN_RIGHT", + "start": 27501, "end": 27510, "loc": { "start": { @@ -121097,7 +121160,7 @@ }, "end": { "line": 797, - "column": 40 + "column": 41 } } }, @@ -121119,11 +121182,11 @@ "loc": { "start": { "line": 797, - "column": 40 + "column": 41 }, "end": { "line": 797, - "column": 41 + "column": 42 } } }, @@ -121146,11 +121209,11 @@ "loc": { "start": { "line": 797, - "column": 42 + "column": 43 }, "end": { "line": 797, - "column": 43 + "column": 44 } } }, @@ -121172,11 +121235,11 @@ "loc": { "start": { "line": 797, - "column": 44 + "column": 45 }, "end": { "line": 797, - "column": 45 + "column": 46 } } }, @@ -121198,11 +121261,11 @@ "loc": { "start": { "line": 797, - "column": 45 + "column": 46 }, "end": { "line": 797, - "column": 50 + "column": 51 } } }, @@ -121224,11 +121287,11 @@ "loc": { "start": { "line": 797, - "column": 50 + "column": 51 }, "end": { "line": 797, - "column": 51 + "column": 52 } } }, @@ -121244,17 +121307,17 @@ "postfix": false, "binop": null }, - "value": "KEY_Q", + "value": "KEY_D", "start": 27521, "end": 27526, "loc": { "start": { "line": 797, - "column": 51 + "column": 52 }, "end": { "line": 797, - "column": 56 + "column": 57 } } }, @@ -121276,11 +121339,11 @@ "loc": { "start": { "line": 797, - "column": 56 + "column": 57 }, "end": { "line": 797, - "column": 57 + "column": 58 } } }, @@ -121302,11 +121365,11 @@ "loc": { "start": { "line": 797, - "column": 57 + "column": 58 }, "end": { "line": 797, - "column": 58 + "column": 59 } } }, @@ -121428,9 +121491,9 @@ "postfix": false, "binop": null }, - "value": "PAN_RIGHT", + "value": "PAN_UP", "start": 27561, - "end": 27570, + "end": 27567, "loc": { "start": { "line": 798, @@ -121438,7 +121501,7 @@ }, "end": { "line": 798, - "column": 41 + "column": 38 } } }, @@ -121455,16 +121518,16 @@ "binop": null, "updateContext": null }, - "start": 27570, - "end": 27571, + "start": 27567, + "end": 27568, "loc": { "start": { "line": 798, - "column": 41 + "column": 38 }, "end": { "line": 798, - "column": 42 + "column": 39 } } }, @@ -121482,16 +121545,16 @@ "updateContext": null }, "value": "=", - "start": 27572, - "end": 27573, + "start": 27569, + "end": 27570, "loc": { "start": { "line": 798, - "column": 43 + "column": 40 }, "end": { "line": 798, - "column": 44 + "column": 41 } } }, @@ -121508,16 +121571,16 @@ "binop": null, "updateContext": null }, - "start": 27574, - "end": 27575, + "start": 27571, + "end": 27572, "loc": { "start": { "line": 798, - "column": 45 + "column": 42 }, "end": { "line": 798, - "column": 46 + "column": 43 } } }, @@ -121534,16 +121597,16 @@ "binop": null }, "value": "input", - "start": 27575, - "end": 27580, + "start": 27572, + "end": 27577, "loc": { "start": { "line": 798, - "column": 46 + "column": 43 }, "end": { "line": 798, - "column": 51 + "column": 48 } } }, @@ -121560,16 +121623,16 @@ "binop": null, "updateContext": null }, - "start": 27580, - "end": 27581, + "start": 27577, + "end": 27578, "loc": { "start": { "line": 798, - "column": 51 + "column": 48 }, "end": { "line": 798, - "column": 52 + "column": 49 } } }, @@ -121585,17 +121648,17 @@ "postfix": false, "binop": null }, - "value": "KEY_D", - "start": 27581, - "end": 27586, + "value": "KEY_W", + "start": 27578, + "end": 27583, "loc": { "start": { "line": 798, - "column": 52 + "column": 49 }, "end": { "line": 798, - "column": 57 + "column": 54 } } }, @@ -121612,16 +121675,16 @@ "binop": null, "updateContext": null }, - "start": 27586, - "end": 27587, + "start": 27583, + "end": 27584, "loc": { "start": { "line": 798, - "column": 57 + "column": 54 }, "end": { "line": 798, - "column": 58 + "column": 55 } } }, @@ -121638,16 +121701,16 @@ "binop": null, "updateContext": null }, - "start": 27587, - "end": 27588, + "start": 27584, + "end": 27585, "loc": { "start": { "line": 798, - "column": 58 + "column": 55 }, "end": { "line": 798, - "column": 59 + "column": 56 } } }, @@ -121664,8 +121727,8 @@ "binop": null }, "value": "keyMap", - "start": 27609, - "end": 27615, + "start": 27606, + "end": 27612, "loc": { "start": { "line": 799, @@ -121690,8 +121753,8 @@ "binop": null, "updateContext": null }, - "start": 27615, - "end": 27616, + "start": 27612, + "end": 27613, "loc": { "start": { "line": 799, @@ -121718,8 +121781,8 @@ "updateContext": null }, "value": "this", - "start": 27616, - "end": 27620, + "start": 27613, + "end": 27617, "loc": { "start": { "line": 799, @@ -121744,8 +121807,8 @@ "binop": null, "updateContext": null }, - "start": 27620, - "end": 27621, + "start": 27617, + "end": 27618, "loc": { "start": { "line": 799, @@ -121769,9 +121832,9 @@ "postfix": false, "binop": null }, - "value": "PAN_UP", - "start": 27621, - "end": 27627, + "value": "PAN_DOWN", + "start": 27618, + "end": 27626, "loc": { "start": { "line": 799, @@ -121779,7 +121842,7 @@ }, "end": { "line": 799, - "column": 38 + "column": 40 } } }, @@ -121796,16 +121859,16 @@ "binop": null, "updateContext": null }, - "start": 27627, - "end": 27628, + "start": 27626, + "end": 27627, "loc": { "start": { "line": 799, - "column": 38 + "column": 40 }, "end": { "line": 799, - "column": 39 + "column": 41 } } }, @@ -121823,16 +121886,16 @@ "updateContext": null }, "value": "=", - "start": 27629, - "end": 27630, + "start": 27628, + "end": 27629, "loc": { "start": { "line": 799, - "column": 40 + "column": 42 }, "end": { "line": 799, - "column": 41 + "column": 43 } } }, @@ -121849,16 +121912,16 @@ "binop": null, "updateContext": null }, - "start": 27631, - "end": 27632, + "start": 27630, + "end": 27631, "loc": { "start": { "line": 799, - "column": 42 + "column": 44 }, "end": { "line": 799, - "column": 43 + "column": 45 } } }, @@ -121875,16 +121938,16 @@ "binop": null }, "value": "input", - "start": 27632, - "end": 27637, + "start": 27631, + "end": 27636, "loc": { "start": { "line": 799, - "column": 43 + "column": 45 }, "end": { "line": 799, - "column": 48 + "column": 50 } } }, @@ -121901,16 +121964,16 @@ "binop": null, "updateContext": null }, - "start": 27637, - "end": 27638, + "start": 27636, + "end": 27637, "loc": { "start": { "line": 799, - "column": 48 + "column": 50 }, "end": { "line": 799, - "column": 49 + "column": 51 } } }, @@ -121926,17 +121989,17 @@ "postfix": false, "binop": null }, - "value": "KEY_W", - "start": 27638, - "end": 27643, + "value": "KEY_X", + "start": 27637, + "end": 27642, "loc": { "start": { "line": 799, - "column": 49 + "column": 51 }, "end": { "line": 799, - "column": 54 + "column": 56 } } }, @@ -121953,16 +122016,16 @@ "binop": null, "updateContext": null }, - "start": 27643, - "end": 27644, + "start": 27642, + "end": 27643, "loc": { "start": { "line": 799, - "column": 54 + "column": 56 }, "end": { "line": 799, - "column": 55 + "column": 57 } } }, @@ -121979,16 +122042,16 @@ "binop": null, "updateContext": null }, - "start": 27644, - "end": 27645, + "start": 27643, + "end": 27644, "loc": { "start": { "line": 799, - "column": 55 + "column": 57 }, "end": { "line": 799, - "column": 56 + "column": 58 } } }, @@ -122005,8 +122068,8 @@ "binop": null }, "value": "keyMap", - "start": 27666, - "end": 27672, + "start": 27665, + "end": 27671, "loc": { "start": { "line": 800, @@ -122031,8 +122094,8 @@ "binop": null, "updateContext": null }, - "start": 27672, - "end": 27673, + "start": 27671, + "end": 27672, "loc": { "start": { "line": 800, @@ -122059,8 +122122,8 @@ "updateContext": null }, "value": "this", - "start": 27673, - "end": 27677, + "start": 27672, + "end": 27676, "loc": { "start": { "line": 800, @@ -122085,8 +122148,8 @@ "binop": null, "updateContext": null }, - "start": 27677, - "end": 27678, + "start": 27676, + "end": 27677, "loc": { "start": { "line": 800, @@ -122110,9 +122173,9 @@ "postfix": false, "binop": null }, - "value": "PAN_DOWN", - "start": 27678, - "end": 27686, + "value": "PAN_BACKWARDS", + "start": 27677, + "end": 27690, "loc": { "start": { "line": 800, @@ -122120,7 +122183,7 @@ }, "end": { "line": 800, - "column": 40 + "column": 45 } } }, @@ -122137,16 +122200,16 @@ "binop": null, "updateContext": null }, - "start": 27686, - "end": 27687, + "start": 27690, + "end": 27691, "loc": { "start": { "line": 800, - "column": 40 + "column": 45 }, "end": { "line": 800, - "column": 41 + "column": 46 } } }, @@ -122164,16 +122227,16 @@ "updateContext": null }, "value": "=", - "start": 27688, - "end": 27689, + "start": 27692, + "end": 27693, "loc": { "start": { "line": 800, - "column": 42 + "column": 47 }, "end": { "line": 800, - "column": 43 + "column": 48 } } }, @@ -122190,38 +122253,12 @@ "binop": null, "updateContext": null }, - "start": 27690, - "end": 27691, + "start": 27694, + "end": 27695, "loc": { "start": { "line": 800, - "column": 44 - }, - "end": { - "line": 800, - "column": 45 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "input", - "start": 27691, - "end": 27696, - "loc": { - "start": { - "line": 800, - "column": 45 + "column": 49 }, "end": { "line": 800, @@ -122231,7 +122268,7 @@ }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -122242,8 +122279,8 @@ "binop": null, "updateContext": null }, - "start": 27696, - "end": 27697, + "start": 27695, + "end": 27696, "loc": { "start": { "line": 800, @@ -122255,58 +122292,6 @@ } } }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "KEY_X", - "start": 27697, - "end": 27702, - "loc": { - "start": { - "line": 800, - "column": 51 - }, - "end": { - "line": 800, - "column": 56 - } - } - }, - { - "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 27702, - "end": 27703, - "loc": { - "start": { - "line": 800, - "column": 56 - }, - "end": { - "line": 800, - "column": 57 - } - } - }, { "type": { "label": ";", @@ -122320,16 +122305,16 @@ "binop": null, "updateContext": null }, - "start": 27703, - "end": 27704, + "start": 27696, + "end": 27697, "loc": { "start": { "line": 800, - "column": 57 + "column": 51 }, "end": { "line": 800, - "column": 58 + "column": 52 } } }, @@ -122346,8 +122331,8 @@ "binop": null }, "value": "keyMap", - "start": 27725, - "end": 27731, + "start": 27718, + "end": 27724, "loc": { "start": { "line": 801, @@ -122372,8 +122357,8 @@ "binop": null, "updateContext": null }, - "start": 27731, - "end": 27732, + "start": 27724, + "end": 27725, "loc": { "start": { "line": 801, @@ -122400,8 +122385,8 @@ "updateContext": null }, "value": "this", - "start": 27732, - "end": 27736, + "start": 27725, + "end": 27729, "loc": { "start": { "line": 801, @@ -122426,8 +122411,8 @@ "binop": null, "updateContext": null }, - "start": 27736, - "end": 27737, + "start": 27729, + "end": 27730, "loc": { "start": { "line": 801, @@ -122451,9 +122436,9 @@ "postfix": false, "binop": null }, - "value": "PAN_BACKWARDS", - "start": 27737, - "end": 27750, + "value": "PAN_FORWARDS", + "start": 27730, + "end": 27742, "loc": { "start": { "line": 801, @@ -122461,7 +122446,7 @@ }, "end": { "line": 801, - "column": 45 + "column": 44 } } }, @@ -122478,16 +122463,16 @@ "binop": null, "updateContext": null }, - "start": 27750, - "end": 27751, + "start": 27742, + "end": 27743, "loc": { "start": { "line": 801, - "column": 45 + "column": 44 }, "end": { "line": 801, - "column": 46 + "column": 45 } } }, @@ -122505,16 +122490,16 @@ "updateContext": null }, "value": "=", - "start": 27752, - "end": 27753, + "start": 27744, + "end": 27745, "loc": { "start": { "line": 801, - "column": 47 + "column": 46 }, "end": { "line": 801, - "column": 48 + "column": 47 } } }, @@ -122531,16 +122516,16 @@ "binop": null, "updateContext": null }, - "start": 27754, - "end": 27755, + "start": 27746, + "end": 27747, "loc": { "start": { "line": 801, - "column": 49 + "column": 48 }, "end": { "line": 801, - "column": 50 + "column": 49 } } }, @@ -122557,16 +122542,16 @@ "binop": null, "updateContext": null }, - "start": 27755, - "end": 27756, + "start": 27747, + "end": 27748, "loc": { "start": { "line": 801, - "column": 50 + "column": 49 }, "end": { "line": 801, - "column": 51 + "column": 50 } } }, @@ -122583,16 +122568,16 @@ "binop": null, "updateContext": null }, - "start": 27756, - "end": 27757, + "start": 27748, + "end": 27749, "loc": { "start": { "line": 801, - "column": 51 + "column": 50 }, "end": { "line": 801, - "column": 52 + "column": 51 } } }, @@ -122609,8 +122594,8 @@ "binop": null }, "value": "keyMap", - "start": 27778, - "end": 27784, + "start": 27770, + "end": 27776, "loc": { "start": { "line": 802, @@ -122635,8 +122620,8 @@ "binop": null, "updateContext": null }, - "start": 27784, - "end": 27785, + "start": 27776, + "end": 27777, "loc": { "start": { "line": 802, @@ -122663,278 +122648,15 @@ "updateContext": null }, "value": "this", - "start": 27785, - "end": 27789, - "loc": { - "start": { - "line": 802, - "column": 27 - }, - "end": { - "line": 802, - "column": 31 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 27789, - "end": 27790, - "loc": { - "start": { - "line": 802, - "column": 31 - }, - "end": { - "line": 802, - "column": 32 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "PAN_FORWARDS", - "start": 27790, - "end": 27802, - "loc": { - "start": { - "line": 802, - "column": 32 - }, - "end": { - "line": 802, - "column": 44 - } - } - }, - { - "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 27802, - "end": 27803, - "loc": { - "start": { - "line": 802, - "column": 44 - }, - "end": { - "line": 802, - "column": 45 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 27804, - "end": 27805, - "loc": { - "start": { - "line": 802, - "column": 46 - }, - "end": { - "line": 802, - "column": 47 - } - } - }, - { - "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 27806, - "end": 27807, - "loc": { - "start": { - "line": 802, - "column": 48 - }, - "end": { - "line": 802, - "column": 49 - } - } - }, - { - "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 27807, - "end": 27808, - "loc": { - "start": { - "line": 802, - "column": 49 - }, - "end": { - "line": 802, - "column": 50 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 27808, - "end": 27809, - "loc": { - "start": { - "line": 802, - "column": 50 - }, - "end": { - "line": 802, - "column": 51 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "keyMap", - "start": 27830, - "end": 27836, - "loc": { - "start": { - "line": 803, - "column": 20 - }, - "end": { - "line": 803, - "column": 26 - } - } - }, - { - "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 27836, - "end": 27837, - "loc": { - "start": { - "line": 803, - "column": 26 - }, - "end": { - "line": 803, - "column": 27 - } - } - }, - { - "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": 27837, - "end": 27841, + "start": 27777, + "end": 27781, "loc": { "start": { - "line": 803, + "line": 802, "column": 27 }, "end": { - "line": 803, + "line": 802, "column": 31 } } @@ -122952,15 +122674,15 @@ "binop": null, "updateContext": null }, - "start": 27841, - "end": 27842, + "start": 27781, + "end": 27782, "loc": { "start": { - "line": 803, + "line": 802, "column": 31 }, "end": { - "line": 803, + "line": 802, "column": 32 } } @@ -122978,15 +122700,15 @@ "binop": null }, "value": "DOLLY_FORWARDS", - "start": 27842, - "end": 27856, + "start": 27782, + "end": 27796, "loc": { "start": { - "line": 803, + "line": 802, "column": 32 }, "end": { - "line": 803, + "line": 802, "column": 46 } } @@ -123004,15 +122726,15 @@ "binop": null, "updateContext": null }, - "start": 27856, - "end": 27857, + "start": 27796, + "end": 27797, "loc": { "start": { - "line": 803, + "line": 802, "column": 46 }, "end": { - "line": 803, + "line": 802, "column": 47 } } @@ -123031,15 +122753,15 @@ "updateContext": null }, "value": "=", - "start": 27858, - "end": 27859, + "start": 27798, + "end": 27799, "loc": { "start": { - "line": 803, + "line": 802, "column": 48 }, "end": { - "line": 803, + "line": 802, "column": 49 } } @@ -123057,15 +122779,15 @@ "binop": null, "updateContext": null }, - "start": 27860, - "end": 27861, + "start": 27800, + "end": 27801, "loc": { "start": { - "line": 803, + "line": 802, "column": 50 }, "end": { - "line": 803, + "line": 802, "column": 51 } } @@ -123083,15 +122805,15 @@ "binop": null }, "value": "input", - "start": 27861, - "end": 27866, + "start": 27801, + "end": 27806, "loc": { "start": { - "line": 803, + "line": 802, "column": 51 }, "end": { - "line": 803, + "line": 802, "column": 56 } } @@ -123109,15 +122831,15 @@ "binop": null, "updateContext": null }, - "start": 27866, - "end": 27867, + "start": 27806, + "end": 27807, "loc": { "start": { - "line": 803, + "line": 802, "column": 56 }, "end": { - "line": 803, + "line": 802, "column": 57 } } @@ -123135,15 +122857,15 @@ "binop": null }, "value": "KEY_Z", - "start": 27867, - "end": 27872, + "start": 27807, + "end": 27812, "loc": { "start": { - "line": 803, + "line": 802, "column": 57 }, "end": { - "line": 803, + "line": 802, "column": 62 } } @@ -123161,15 +122883,15 @@ "binop": null, "updateContext": null }, - "start": 27872, - "end": 27873, + "start": 27812, + "end": 27813, "loc": { "start": { - "line": 803, + "line": 802, "column": 62 }, "end": { - "line": 803, + "line": 802, "column": 63 } } @@ -123187,15 +122909,15 @@ "binop": null }, "value": "input", - "start": 27874, - "end": 27879, + "start": 27814, + "end": 27819, "loc": { "start": { - "line": 803, + "line": 802, "column": 64 }, "end": { - "line": 803, + "line": 802, "column": 69 } } @@ -123213,15 +122935,15 @@ "binop": null, "updateContext": null }, - "start": 27879, - "end": 27880, + "start": 27819, + "end": 27820, "loc": { "start": { - "line": 803, + "line": 802, "column": 69 }, "end": { - "line": 803, + "line": 802, "column": 70 } } @@ -123239,15 +122961,15 @@ "binop": null }, "value": "KEY_ADD", - "start": 27880, - "end": 27887, + "start": 27820, + "end": 27827, "loc": { "start": { - "line": 803, + "line": 802, "column": 70 }, "end": { - "line": 803, + "line": 802, "column": 77 } } @@ -123265,15 +122987,15 @@ "binop": null, "updateContext": null }, - "start": 27887, - "end": 27888, + "start": 27827, + "end": 27828, "loc": { "start": { - "line": 803, + "line": 802, "column": 77 }, "end": { - "line": 803, + "line": 802, "column": 78 } } @@ -123291,15 +123013,15 @@ "binop": null, "updateContext": null }, - "start": 27888, - "end": 27889, + "start": 27828, + "end": 27829, "loc": { "start": { - "line": 803, + "line": 802, "column": 78 }, "end": { - "line": 803, + "line": 802, "column": 79 } } @@ -123317,15 +123039,15 @@ "binop": null }, "value": "keyMap", - "start": 27910, - "end": 27916, + "start": 27850, + "end": 27856, "loc": { "start": { - "line": 804, + "line": 803, "column": 20 }, "end": { - "line": 804, + "line": 803, "column": 26 } } @@ -123343,15 +123065,15 @@ "binop": null, "updateContext": null }, - "start": 27916, - "end": 27917, + "start": 27856, + "end": 27857, "loc": { "start": { - "line": 804, + "line": 803, "column": 26 }, "end": { - "line": 804, + "line": 803, "column": 27 } } @@ -123371,15 +123093,15 @@ "updateContext": null }, "value": "this", - "start": 27917, - "end": 27921, + "start": 27857, + "end": 27861, "loc": { "start": { - "line": 804, + "line": 803, "column": 27 }, "end": { - "line": 804, + "line": 803, "column": 31 } } @@ -123397,15 +123119,15 @@ "binop": null, "updateContext": null }, - "start": 27921, - "end": 27922, + "start": 27861, + "end": 27862, "loc": { "start": { - "line": 804, + "line": 803, "column": 31 }, "end": { - "line": 804, + "line": 803, "column": 32 } } @@ -123423,15 +123145,15 @@ "binop": null }, "value": "DOLLY_BACKWARDS", - "start": 27922, - "end": 27937, + "start": 27862, + "end": 27877, "loc": { "start": { - "line": 804, + "line": 803, "column": 32 }, "end": { - "line": 804, + "line": 803, "column": 47 } } @@ -123449,15 +123171,15 @@ "binop": null, "updateContext": null }, - "start": 27937, - "end": 27938, + "start": 27877, + "end": 27878, "loc": { "start": { - "line": 804, + "line": 803, "column": 47 }, "end": { - "line": 804, + "line": 803, "column": 48 } } @@ -123476,15 +123198,15 @@ "updateContext": null }, "value": "=", - "start": 27939, - "end": 27940, + "start": 27879, + "end": 27880, "loc": { "start": { - "line": 804, + "line": 803, "column": 49 }, "end": { - "line": 804, + "line": 803, "column": 50 } } @@ -123502,15 +123224,15 @@ "binop": null, "updateContext": null }, - "start": 27941, - "end": 27942, + "start": 27881, + "end": 27882, "loc": { "start": { - "line": 804, + "line": 803, "column": 51 }, "end": { - "line": 804, + "line": 803, "column": 52 } } @@ -123528,15 +123250,15 @@ "binop": null }, "value": "input", - "start": 27942, - "end": 27947, + "start": 27882, + "end": 27887, "loc": { "start": { - "line": 804, + "line": 803, "column": 52 }, "end": { - "line": 804, + "line": 803, "column": 57 } } @@ -123554,15 +123276,15 @@ "binop": null, "updateContext": null }, - "start": 27947, - "end": 27948, + "start": 27887, + "end": 27888, "loc": { "start": { - "line": 804, + "line": 803, "column": 57 }, "end": { - "line": 804, + "line": 803, "column": 58 } } @@ -123580,15 +123302,15 @@ "binop": null }, "value": "KEY_S", - "start": 27948, - "end": 27953, + "start": 27888, + "end": 27893, "loc": { "start": { - "line": 804, + "line": 803, "column": 58 }, "end": { - "line": 804, + "line": 803, "column": 63 } } @@ -123606,15 +123328,15 @@ "binop": null, "updateContext": null }, - "start": 27953, - "end": 27954, + "start": 27893, + "end": 27894, "loc": { "start": { - "line": 804, + "line": 803, "column": 63 }, "end": { - "line": 804, + "line": 803, "column": 64 } } @@ -123632,15 +123354,15 @@ "binop": null }, "value": "input", - "start": 27955, - "end": 27960, + "start": 27895, + "end": 27900, "loc": { "start": { - "line": 804, + "line": 803, "column": 65 }, "end": { - "line": 804, + "line": 803, "column": 70 } } @@ -123658,15 +123380,15 @@ "binop": null, "updateContext": null }, - "start": 27960, - "end": 27961, + "start": 27900, + "end": 27901, "loc": { "start": { - "line": 804, + "line": 803, "column": 70 }, "end": { - "line": 804, + "line": 803, "column": 71 } } @@ -123684,15 +123406,15 @@ "binop": null }, "value": "KEY_SUBTRACT", - "start": 27961, - "end": 27973, + "start": 27901, + "end": 27913, "loc": { "start": { - "line": 804, + "line": 803, "column": 71 }, "end": { - "line": 804, + "line": 803, "column": 83 } } @@ -123710,15 +123432,15 @@ "binop": null, "updateContext": null }, - "start": 27973, - "end": 27974, + "start": 27913, + "end": 27914, "loc": { "start": { - "line": 804, + "line": 803, "column": 83 }, "end": { - "line": 804, + "line": 803, "column": 84 } } @@ -123736,15 +123458,15 @@ "binop": null, "updateContext": null }, - "start": 27974, - "end": 27975, + "start": 27914, + "end": 27915, "loc": { "start": { - "line": 804, + "line": 803, "column": 84 }, "end": { - "line": 804, + "line": 803, "column": 85 } } @@ -123762,15 +123484,15 @@ "binop": null }, "value": "keyMap", - "start": 27996, - "end": 28002, + "start": 27936, + "end": 27942, "loc": { "start": { - "line": 805, + "line": 804, "column": 20 }, "end": { - "line": 805, + "line": 804, "column": 26 } } @@ -123788,15 +123510,15 @@ "binop": null, "updateContext": null }, - "start": 28002, - "end": 28003, + "start": 27942, + "end": 27943, "loc": { "start": { - "line": 805, + "line": 804, "column": 26 }, "end": { - "line": 805, + "line": 804, "column": 27 } } @@ -123816,15 +123538,15 @@ "updateContext": null }, "value": "this", - "start": 28003, - "end": 28007, + "start": 27943, + "end": 27947, "loc": { "start": { - "line": 805, + "line": 804, "column": 27 }, "end": { - "line": 805, + "line": 804, "column": 31 } } @@ -123842,15 +123564,15 @@ "binop": null, "updateContext": null }, - "start": 28007, - "end": 28008, + "start": 27947, + "end": 27948, "loc": { "start": { - "line": 805, + "line": 804, "column": 31 }, "end": { - "line": 805, + "line": 804, "column": 32 } } @@ -123868,15 +123590,15 @@ "binop": null }, "value": "ROTATE_X_POS", - "start": 28008, - "end": 28020, + "start": 27948, + "end": 27960, "loc": { "start": { - "line": 805, + "line": 804, "column": 32 }, "end": { - "line": 805, + "line": 804, "column": 44 } } @@ -123894,15 +123616,15 @@ "binop": null, "updateContext": null }, - "start": 28020, - "end": 28021, + "start": 27960, + "end": 27961, "loc": { "start": { - "line": 805, + "line": 804, "column": 44 }, "end": { - "line": 805, + "line": 804, "column": 45 } } @@ -123921,15 +123643,15 @@ "updateContext": null }, "value": "=", - "start": 28022, - "end": 28023, + "start": 27962, + "end": 27963, "loc": { "start": { - "line": 805, + "line": 804, "column": 46 }, "end": { - "line": 805, + "line": 804, "column": 47 } } @@ -123947,15 +123669,15 @@ "binop": null, "updateContext": null }, - "start": 28024, - "end": 28025, + "start": 27964, + "end": 27965, "loc": { "start": { - "line": 805, + "line": 804, "column": 48 }, "end": { - "line": 805, + "line": 804, "column": 49 } } @@ -123973,15 +123695,15 @@ "binop": null }, "value": "input", - "start": 28025, - "end": 28030, + "start": 27965, + "end": 27970, "loc": { "start": { - "line": 805, + "line": 804, "column": 49 }, "end": { - "line": 805, + "line": 804, "column": 54 } } @@ -123999,15 +123721,15 @@ "binop": null, "updateContext": null }, - "start": 28030, - "end": 28031, + "start": 27970, + "end": 27971, "loc": { "start": { - "line": 805, + "line": 804, "column": 54 }, "end": { - "line": 805, + "line": 804, "column": 55 } } @@ -124025,15 +123747,15 @@ "binop": null }, "value": "KEY_DOWN_ARROW", - "start": 28031, - "end": 28045, + "start": 27971, + "end": 27985, "loc": { "start": { - "line": 805, + "line": 804, "column": 55 }, "end": { - "line": 805, + "line": 804, "column": 69 } } @@ -124051,15 +123773,15 @@ "binop": null, "updateContext": null }, - "start": 28045, - "end": 28046, + "start": 27985, + "end": 27986, "loc": { "start": { - "line": 805, + "line": 804, "column": 69 }, "end": { - "line": 805, + "line": 804, "column": 70 } } @@ -124077,15 +123799,15 @@ "binop": null, "updateContext": null }, - "start": 28046, - "end": 28047, + "start": 27986, + "end": 27987, "loc": { "start": { - "line": 805, + "line": 804, "column": 70 }, "end": { - "line": 805, + "line": 804, "column": 71 } } @@ -124103,15 +123825,15 @@ "binop": null }, "value": "keyMap", - "start": 28068, - "end": 28074, + "start": 28008, + "end": 28014, "loc": { "start": { - "line": 806, + "line": 805, "column": 20 }, "end": { - "line": 806, + "line": 805, "column": 26 } } @@ -124129,15 +123851,15 @@ "binop": null, "updateContext": null }, - "start": 28074, - "end": 28075, + "start": 28014, + "end": 28015, "loc": { "start": { - "line": 806, + "line": 805, "column": 26 }, "end": { - "line": 806, + "line": 805, "column": 27 } } @@ -124157,15 +123879,15 @@ "updateContext": null }, "value": "this", - "start": 28075, - "end": 28079, + "start": 28015, + "end": 28019, "loc": { "start": { - "line": 806, + "line": 805, "column": 27 }, "end": { - "line": 806, + "line": 805, "column": 31 } } @@ -124183,15 +123905,15 @@ "binop": null, "updateContext": null }, - "start": 28079, - "end": 28080, + "start": 28019, + "end": 28020, "loc": { "start": { - "line": 806, + "line": 805, "column": 31 }, "end": { - "line": 806, + "line": 805, "column": 32 } } @@ -124209,15 +123931,15 @@ "binop": null }, "value": "ROTATE_X_NEG", - "start": 28080, - "end": 28092, + "start": 28020, + "end": 28032, "loc": { "start": { - "line": 806, + "line": 805, "column": 32 }, "end": { - "line": 806, + "line": 805, "column": 44 } } @@ -124235,15 +123957,15 @@ "binop": null, "updateContext": null }, - "start": 28092, - "end": 28093, + "start": 28032, + "end": 28033, "loc": { "start": { - "line": 806, + "line": 805, "column": 44 }, "end": { - "line": 806, + "line": 805, "column": 45 } } @@ -124262,15 +123984,15 @@ "updateContext": null }, "value": "=", - "start": 28094, - "end": 28095, + "start": 28034, + "end": 28035, "loc": { "start": { - "line": 806, + "line": 805, "column": 46 }, "end": { - "line": 806, + "line": 805, "column": 47 } } @@ -124288,15 +124010,15 @@ "binop": null, "updateContext": null }, - "start": 28096, - "end": 28097, + "start": 28036, + "end": 28037, "loc": { "start": { - "line": 806, + "line": 805, "column": 48 }, "end": { - "line": 806, + "line": 805, "column": 49 } } @@ -124314,15 +124036,15 @@ "binop": null }, "value": "input", - "start": 28097, - "end": 28102, + "start": 28037, + "end": 28042, "loc": { "start": { - "line": 806, + "line": 805, "column": 49 }, "end": { - "line": 806, + "line": 805, "column": 54 } } @@ -124340,15 +124062,15 @@ "binop": null, "updateContext": null }, - "start": 28102, - "end": 28103, + "start": 28042, + "end": 28043, "loc": { "start": { - "line": 806, + "line": 805, "column": 54 }, "end": { - "line": 806, + "line": 805, "column": 55 } } @@ -124366,15 +124088,15 @@ "binop": null }, "value": "KEY_UP_ARROW", - "start": 28103, - "end": 28115, + "start": 28043, + "end": 28055, "loc": { "start": { - "line": 806, + "line": 805, "column": 55 }, "end": { - "line": 806, + "line": 805, "column": 67 } } @@ -124392,15 +124114,15 @@ "binop": null, "updateContext": null }, - "start": 28115, - "end": 28116, + "start": 28055, + "end": 28056, "loc": { "start": { - "line": 806, + "line": 805, "column": 67 }, "end": { - "line": 806, + "line": 805, "column": 68 } } @@ -124418,15 +124140,15 @@ "binop": null, "updateContext": null }, - "start": 28116, - "end": 28117, + "start": 28056, + "end": 28057, "loc": { "start": { - "line": 806, + "line": 805, "column": 68 }, "end": { - "line": 806, + "line": 805, "column": 69 } } @@ -124444,15 +124166,15 @@ "binop": null }, "value": "keyMap", - "start": 28138, - "end": 28144, + "start": 28078, + "end": 28084, "loc": { "start": { - "line": 807, + "line": 806, "column": 20 }, "end": { - "line": 807, + "line": 806, "column": 26 } } @@ -124470,15 +124192,15 @@ "binop": null, "updateContext": null }, - "start": 28144, - "end": 28145, + "start": 28084, + "end": 28085, "loc": { "start": { - "line": 807, + "line": 806, "column": 26 }, "end": { - "line": 807, + "line": 806, "column": 27 } } @@ -124498,15 +124220,15 @@ "updateContext": null }, "value": "this", - "start": 28145, - "end": 28149, + "start": 28085, + "end": 28089, "loc": { "start": { - "line": 807, + "line": 806, "column": 27 }, "end": { - "line": 807, + "line": 806, "column": 31 } } @@ -124524,15 +124246,15 @@ "binop": null, "updateContext": null }, - "start": 28149, - "end": 28150, + "start": 28089, + "end": 28090, "loc": { "start": { - "line": 807, + "line": 806, "column": 31 }, "end": { - "line": 807, + "line": 806, "column": 32 } } @@ -124550,15 +124272,15 @@ "binop": null }, "value": "ROTATE_Y_POS", - "start": 28150, - "end": 28162, + "start": 28090, + "end": 28102, "loc": { "start": { - "line": 807, + "line": 806, "column": 32 }, "end": { - "line": 807, + "line": 806, "column": 44 } } @@ -124576,15 +124298,15 @@ "binop": null, "updateContext": null }, - "start": 28162, - "end": 28163, + "start": 28102, + "end": 28103, "loc": { "start": { - "line": 807, + "line": 806, "column": 44 }, "end": { - "line": 807, + "line": 806, "column": 45 } } @@ -124603,15 +124325,15 @@ "updateContext": null }, "value": "=", - "start": 28164, - "end": 28165, + "start": 28104, + "end": 28105, "loc": { "start": { - "line": 807, + "line": 806, "column": 46 }, "end": { - "line": 807, + "line": 806, "column": 47 } } @@ -124629,15 +124351,15 @@ "binop": null, "updateContext": null }, - "start": 28166, - "end": 28167, + "start": 28106, + "end": 28107, "loc": { "start": { - "line": 807, + "line": 806, "column": 48 }, "end": { - "line": 807, + "line": 806, "column": 49 } } @@ -124655,15 +124377,15 @@ "binop": null }, "value": "input", - "start": 28167, - "end": 28172, + "start": 28107, + "end": 28112, "loc": { "start": { - "line": 807, + "line": 806, "column": 49 }, "end": { - "line": 807, + "line": 806, "column": 54 } } @@ -124681,15 +124403,15 @@ "binop": null, "updateContext": null }, - "start": 28172, - "end": 28173, + "start": 28112, + "end": 28113, "loc": { "start": { - "line": 807, + "line": 806, "column": 54 }, "end": { - "line": 807, + "line": 806, "column": 55 } } @@ -124707,15 +124429,15 @@ "binop": null }, "value": "KEY_A", - "start": 28173, - "end": 28178, + "start": 28113, + "end": 28118, "loc": { "start": { - "line": 807, + "line": 806, "column": 55 }, "end": { - "line": 807, + "line": 806, "column": 60 } } @@ -124733,15 +124455,15 @@ "binop": null, "updateContext": null }, - "start": 28178, - "end": 28179, + "start": 28118, + "end": 28119, "loc": { "start": { - "line": 807, + "line": 806, "column": 60 }, "end": { - "line": 807, + "line": 806, "column": 61 } } @@ -124759,15 +124481,15 @@ "binop": null }, "value": "input", - "start": 28180, - "end": 28185, + "start": 28120, + "end": 28125, "loc": { "start": { - "line": 807, + "line": 806, "column": 62 }, "end": { - "line": 807, + "line": 806, "column": 67 } } @@ -124785,15 +124507,15 @@ "binop": null, "updateContext": null }, - "start": 28185, - "end": 28186, + "start": 28125, + "end": 28126, "loc": { "start": { - "line": 807, + "line": 806, "column": 67 }, "end": { - "line": 807, + "line": 806, "column": 68 } } @@ -124811,15 +124533,15 @@ "binop": null }, "value": "KEY_LEFT_ARROW", - "start": 28186, - "end": 28200, + "start": 28126, + "end": 28140, "loc": { "start": { - "line": 807, + "line": 806, "column": 68 }, "end": { - "line": 807, + "line": 806, "column": 82 } } @@ -124837,15 +124559,15 @@ "binop": null, "updateContext": null }, - "start": 28200, - "end": 28201, + "start": 28140, + "end": 28141, "loc": { "start": { - "line": 807, + "line": 806, "column": 82 }, "end": { - "line": 807, + "line": 806, "column": 83 } } @@ -124863,15 +124585,15 @@ "binop": null, "updateContext": null }, - "start": 28201, - "end": 28202, + "start": 28141, + "end": 28142, "loc": { "start": { - "line": 807, + "line": 806, "column": 83 }, "end": { - "line": 807, + "line": 806, "column": 84 } } @@ -124889,15 +124611,15 @@ "binop": null }, "value": "keyMap", - "start": 28223, - "end": 28229, + "start": 28163, + "end": 28169, "loc": { "start": { - "line": 808, + "line": 807, "column": 20 }, "end": { - "line": 808, + "line": 807, "column": 26 } } @@ -124915,15 +124637,15 @@ "binop": null, "updateContext": null }, - "start": 28229, - "end": 28230, + "start": 28169, + "end": 28170, "loc": { "start": { - "line": 808, + "line": 807, "column": 26 }, "end": { - "line": 808, + "line": 807, "column": 27 } } @@ -124943,15 +124665,15 @@ "updateContext": null }, "value": "this", - "start": 28230, - "end": 28234, + "start": 28170, + "end": 28174, "loc": { "start": { - "line": 808, + "line": 807, "column": 27 }, "end": { - "line": 808, + "line": 807, "column": 31 } } @@ -124969,15 +124691,15 @@ "binop": null, "updateContext": null }, - "start": 28234, - "end": 28235, + "start": 28174, + "end": 28175, "loc": { "start": { - "line": 808, + "line": 807, "column": 31 }, "end": { - "line": 808, + "line": 807, "column": 32 } } @@ -124995,15 +124717,15 @@ "binop": null }, "value": "ROTATE_Y_NEG", - "start": 28235, - "end": 28247, + "start": 28175, + "end": 28187, "loc": { "start": { - "line": 808, + "line": 807, "column": 32 }, "end": { - "line": 808, + "line": 807, "column": 44 } } @@ -125021,15 +124743,15 @@ "binop": null, "updateContext": null }, - "start": 28247, - "end": 28248, + "start": 28187, + "end": 28188, "loc": { "start": { - "line": 808, + "line": 807, "column": 44 }, "end": { - "line": 808, + "line": 807, "column": 45 } } @@ -125048,15 +124770,15 @@ "updateContext": null }, "value": "=", - "start": 28249, - "end": 28250, + "start": 28189, + "end": 28190, "loc": { "start": { - "line": 808, + "line": 807, "column": 46 }, "end": { - "line": 808, + "line": 807, "column": 47 } } @@ -125074,15 +124796,15 @@ "binop": null, "updateContext": null }, - "start": 28251, - "end": 28252, + "start": 28191, + "end": 28192, "loc": { "start": { - "line": 808, + "line": 807, "column": 48 }, "end": { - "line": 808, + "line": 807, "column": 49 } } @@ -125100,15 +124822,15 @@ "binop": null }, "value": "input", - "start": 28252, - "end": 28257, + "start": 28192, + "end": 28197, "loc": { "start": { - "line": 808, + "line": 807, "column": 49 }, "end": { - "line": 808, + "line": 807, "column": 54 } } @@ -125126,15 +124848,15 @@ "binop": null, "updateContext": null }, - "start": 28257, - "end": 28258, + "start": 28197, + "end": 28198, "loc": { "start": { - "line": 808, + "line": 807, "column": 54 }, "end": { - "line": 808, + "line": 807, "column": 55 } } @@ -125152,15 +124874,15 @@ "binop": null }, "value": "KEY_E", - "start": 28258, - "end": 28263, + "start": 28198, + "end": 28203, "loc": { "start": { - "line": 808, + "line": 807, "column": 55 }, "end": { - "line": 808, + "line": 807, "column": 60 } } @@ -125178,15 +124900,15 @@ "binop": null, "updateContext": null }, - "start": 28263, - "end": 28264, + "start": 28203, + "end": 28204, "loc": { "start": { - "line": 808, + "line": 807, "column": 60 }, "end": { - "line": 808, + "line": 807, "column": 61 } } @@ -125204,15 +124926,15 @@ "binop": null }, "value": "input", - "start": 28265, - "end": 28270, + "start": 28205, + "end": 28210, "loc": { "start": { - "line": 808, + "line": 807, "column": 62 }, "end": { - "line": 808, + "line": 807, "column": 67 } } @@ -125230,15 +124952,15 @@ "binop": null, "updateContext": null }, - "start": 28270, - "end": 28271, + "start": 28210, + "end": 28211, "loc": { "start": { - "line": 808, + "line": 807, "column": 67 }, "end": { - "line": 808, + "line": 807, "column": 68 } } @@ -125256,15 +124978,15 @@ "binop": null }, "value": "KEY_RIGHT_ARROW", - "start": 28271, - "end": 28286, + "start": 28211, + "end": 28226, "loc": { "start": { - "line": 808, + "line": 807, "column": 68 }, "end": { - "line": 808, + "line": 807, "column": 83 } } @@ -125282,15 +125004,15 @@ "binop": null, "updateContext": null }, - "start": 28286, - "end": 28287, + "start": 28226, + "end": 28227, "loc": { "start": { - "line": 808, + "line": 807, "column": 83 }, "end": { - "line": 808, + "line": 807, "column": 84 } } @@ -125308,15 +125030,15 @@ "binop": null, "updateContext": null }, - "start": 28287, - "end": 28288, + "start": 28227, + "end": 28228, "loc": { "start": { - "line": 808, + "line": 807, "column": 84 }, "end": { - "line": 808, + "line": 807, "column": 85 } } @@ -125334,15 +125056,15 @@ "binop": null }, "value": "keyMap", - "start": 28309, - "end": 28315, + "start": 28249, + "end": 28255, "loc": { "start": { - "line": 809, + "line": 808, "column": 20 }, "end": { - "line": 809, + "line": 808, "column": 26 } } @@ -125360,15 +125082,15 @@ "binop": null, "updateContext": null }, - "start": 28315, - "end": 28316, + "start": 28255, + "end": 28256, "loc": { "start": { - "line": 809, + "line": 808, "column": 26 }, "end": { - "line": 809, + "line": 808, "column": 27 } } @@ -125388,15 +125110,15 @@ "updateContext": null }, "value": "this", - "start": 28316, - "end": 28320, + "start": 28256, + "end": 28260, "loc": { "start": { - "line": 809, + "line": 808, "column": 27 }, "end": { - "line": 809, + "line": 808, "column": 31 } } @@ -125414,15 +125136,15 @@ "binop": null, "updateContext": null }, - "start": 28320, - "end": 28321, + "start": 28260, + "end": 28261, "loc": { "start": { - "line": 809, + "line": 808, "column": 31 }, "end": { - "line": 809, + "line": 808, "column": 32 } } @@ -125440,15 +125162,15 @@ "binop": null }, "value": "AXIS_VIEW_RIGHT", - "start": 28321, - "end": 28336, + "start": 28261, + "end": 28276, "loc": { "start": { - "line": 809, + "line": 808, "column": 32 }, "end": { - "line": 809, + "line": 808, "column": 47 } } @@ -125466,15 +125188,15 @@ "binop": null, "updateContext": null }, - "start": 28336, - "end": 28337, + "start": 28276, + "end": 28277, "loc": { "start": { - "line": 809, + "line": 808, "column": 47 }, "end": { - "line": 809, + "line": 808, "column": 48 } } @@ -125493,15 +125215,15 @@ "updateContext": null }, "value": "=", - "start": 28338, - "end": 28339, + "start": 28278, + "end": 28279, "loc": { "start": { - "line": 809, + "line": 808, "column": 49 }, "end": { - "line": 809, + "line": 808, "column": 50 } } @@ -125519,15 +125241,15 @@ "binop": null, "updateContext": null }, - "start": 28340, - "end": 28341, + "start": 28280, + "end": 28281, "loc": { "start": { - "line": 809, + "line": 808, "column": 51 }, "end": { - "line": 809, + "line": 808, "column": 52 } } @@ -125545,15 +125267,15 @@ "binop": null }, "value": "input", - "start": 28341, - "end": 28346, + "start": 28281, + "end": 28286, "loc": { "start": { - "line": 809, + "line": 808, "column": 52 }, "end": { - "line": 809, + "line": 808, "column": 57 } } @@ -125571,15 +125293,15 @@ "binop": null, "updateContext": null }, - "start": 28346, - "end": 28347, + "start": 28286, + "end": 28287, "loc": { "start": { - "line": 809, + "line": 808, "column": 57 }, "end": { - "line": 809, + "line": 808, "column": 58 } } @@ -125597,15 +125319,15 @@ "binop": null }, "value": "KEY_NUM_1", - "start": 28347, - "end": 28356, + "start": 28287, + "end": 28296, "loc": { "start": { - "line": 809, + "line": 808, "column": 58 }, "end": { - "line": 809, + "line": 808, "column": 67 } } @@ -125623,15 +125345,15 @@ "binop": null, "updateContext": null }, - "start": 28356, - "end": 28357, + "start": 28296, + "end": 28297, "loc": { "start": { - "line": 809, + "line": 808, "column": 67 }, "end": { - "line": 809, + "line": 808, "column": 68 } } @@ -125649,15 +125371,15 @@ "binop": null, "updateContext": null }, - "start": 28357, - "end": 28358, + "start": 28297, + "end": 28298, "loc": { "start": { - "line": 809, + "line": 808, "column": 68 }, "end": { - "line": 809, + "line": 808, "column": 69 } } @@ -125675,15 +125397,15 @@ "binop": null }, "value": "keyMap", - "start": 28379, - "end": 28385, + "start": 28319, + "end": 28325, "loc": { "start": { - "line": 810, + "line": 809, "column": 20 }, "end": { - "line": 810, + "line": 809, "column": 26 } } @@ -125701,15 +125423,15 @@ "binop": null, "updateContext": null }, - "start": 28385, - "end": 28386, + "start": 28325, + "end": 28326, "loc": { "start": { - "line": 810, + "line": 809, "column": 26 }, "end": { - "line": 810, + "line": 809, "column": 27 } } @@ -125729,15 +125451,15 @@ "updateContext": null }, "value": "this", - "start": 28386, - "end": 28390, + "start": 28326, + "end": 28330, "loc": { "start": { - "line": 810, + "line": 809, "column": 27 }, "end": { - "line": 810, + "line": 809, "column": 31 } } @@ -125755,15 +125477,15 @@ "binop": null, "updateContext": null }, - "start": 28390, - "end": 28391, + "start": 28330, + "end": 28331, "loc": { "start": { - "line": 810, + "line": 809, "column": 31 }, "end": { - "line": 810, + "line": 809, "column": 32 } } @@ -125781,15 +125503,15 @@ "binop": null }, "value": "AXIS_VIEW_BACK", - "start": 28391, - "end": 28405, + "start": 28331, + "end": 28345, "loc": { "start": { - "line": 810, + "line": 809, "column": 32 }, "end": { - "line": 810, + "line": 809, "column": 46 } } @@ -125807,15 +125529,15 @@ "binop": null, "updateContext": null }, - "start": 28405, - "end": 28406, + "start": 28345, + "end": 28346, "loc": { "start": { - "line": 810, + "line": 809, "column": 46 }, "end": { - "line": 810, + "line": 809, "column": 47 } } @@ -125834,15 +125556,15 @@ "updateContext": null }, "value": "=", - "start": 28407, - "end": 28408, + "start": 28347, + "end": 28348, "loc": { "start": { - "line": 810, + "line": 809, "column": 48 }, "end": { - "line": 810, + "line": 809, "column": 49 } } @@ -125860,15 +125582,15 @@ "binop": null, "updateContext": null }, - "start": 28409, - "end": 28410, + "start": 28349, + "end": 28350, "loc": { "start": { - "line": 810, + "line": 809, "column": 50 }, "end": { - "line": 810, + "line": 809, "column": 51 } } @@ -125886,15 +125608,15 @@ "binop": null }, "value": "input", - "start": 28410, - "end": 28415, + "start": 28350, + "end": 28355, "loc": { "start": { - "line": 810, + "line": 809, "column": 51 }, "end": { - "line": 810, + "line": 809, "column": 56 } } @@ -125912,15 +125634,15 @@ "binop": null, "updateContext": null }, - "start": 28415, - "end": 28416, + "start": 28355, + "end": 28356, "loc": { "start": { - "line": 810, + "line": 809, "column": 56 }, "end": { - "line": 810, + "line": 809, "column": 57 } } @@ -125938,15 +125660,15 @@ "binop": null }, "value": "KEY_NUM_2", - "start": 28416, - "end": 28425, + "start": 28356, + "end": 28365, "loc": { "start": { - "line": 810, + "line": 809, "column": 57 }, "end": { - "line": 810, + "line": 809, "column": 66 } } @@ -125964,15 +125686,15 @@ "binop": null, "updateContext": null }, - "start": 28425, - "end": 28426, + "start": 28365, + "end": 28366, "loc": { "start": { - "line": 810, + "line": 809, "column": 66 }, "end": { - "line": 810, + "line": 809, "column": 67 } } @@ -125990,15 +125712,15 @@ "binop": null, "updateContext": null }, - "start": 28426, - "end": 28427, + "start": 28366, + "end": 28367, "loc": { "start": { - "line": 810, + "line": 809, "column": 67 }, "end": { - "line": 810, + "line": 809, "column": 68 } } @@ -126016,15 +125738,15 @@ "binop": null }, "value": "keyMap", - "start": 28448, - "end": 28454, + "start": 28388, + "end": 28394, "loc": { "start": { - "line": 811, + "line": 810, "column": 20 }, "end": { - "line": 811, + "line": 810, "column": 26 } } @@ -126042,15 +125764,15 @@ "binop": null, "updateContext": null }, - "start": 28454, - "end": 28455, + "start": 28394, + "end": 28395, "loc": { "start": { - "line": 811, + "line": 810, "column": 26 }, "end": { - "line": 811, + "line": 810, "column": 27 } } @@ -126070,15 +125792,15 @@ "updateContext": null }, "value": "this", - "start": 28455, - "end": 28459, + "start": 28395, + "end": 28399, "loc": { "start": { - "line": 811, + "line": 810, "column": 27 }, "end": { - "line": 811, + "line": 810, "column": 31 } } @@ -126096,15 +125818,15 @@ "binop": null, "updateContext": null }, - "start": 28459, - "end": 28460, + "start": 28399, + "end": 28400, "loc": { "start": { - "line": 811, + "line": 810, "column": 31 }, "end": { - "line": 811, + "line": 810, "column": 32 } } @@ -126122,15 +125844,15 @@ "binop": null }, "value": "AXIS_VIEW_LEFT", - "start": 28460, - "end": 28474, + "start": 28400, + "end": 28414, "loc": { "start": { - "line": 811, + "line": 810, "column": 32 }, "end": { - "line": 811, + "line": 810, "column": 46 } } @@ -126148,15 +125870,15 @@ "binop": null, "updateContext": null }, - "start": 28474, - "end": 28475, + "start": 28414, + "end": 28415, "loc": { "start": { - "line": 811, + "line": 810, "column": 46 }, "end": { - "line": 811, + "line": 810, "column": 47 } } @@ -126175,15 +125897,15 @@ "updateContext": null }, "value": "=", - "start": 28476, - "end": 28477, + "start": 28416, + "end": 28417, "loc": { "start": { - "line": 811, + "line": 810, "column": 48 }, "end": { - "line": 811, + "line": 810, "column": 49 } } @@ -126201,15 +125923,15 @@ "binop": null, "updateContext": null }, - "start": 28478, - "end": 28479, + "start": 28418, + "end": 28419, "loc": { "start": { - "line": 811, + "line": 810, "column": 50 }, "end": { - "line": 811, + "line": 810, "column": 51 } } @@ -126227,15 +125949,15 @@ "binop": null }, "value": "input", - "start": 28479, - "end": 28484, + "start": 28419, + "end": 28424, "loc": { "start": { - "line": 811, + "line": 810, "column": 51 }, "end": { - "line": 811, + "line": 810, "column": 56 } } @@ -126253,15 +125975,15 @@ "binop": null, "updateContext": null }, - "start": 28484, - "end": 28485, + "start": 28424, + "end": 28425, "loc": { "start": { - "line": 811, + "line": 810, "column": 56 }, "end": { - "line": 811, + "line": 810, "column": 57 } } @@ -126279,15 +126001,15 @@ "binop": null }, "value": "KEY_NUM_3", - "start": 28485, - "end": 28494, + "start": 28425, + "end": 28434, "loc": { "start": { - "line": 811, + "line": 810, "column": 57 }, "end": { - "line": 811, + "line": 810, "column": 66 } } @@ -126305,15 +126027,15 @@ "binop": null, "updateContext": null }, - "start": 28494, - "end": 28495, + "start": 28434, + "end": 28435, "loc": { "start": { - "line": 811, + "line": 810, "column": 66 }, "end": { - "line": 811, + "line": 810, "column": 67 } } @@ -126331,15 +126053,15 @@ "binop": null, "updateContext": null }, - "start": 28495, - "end": 28496, + "start": 28435, + "end": 28436, "loc": { "start": { - "line": 811, + "line": 810, "column": 67 }, "end": { - "line": 811, + "line": 810, "column": 68 } } @@ -126357,15 +126079,15 @@ "binop": null }, "value": "keyMap", - "start": 28517, - "end": 28523, + "start": 28457, + "end": 28463, "loc": { "start": { - "line": 812, + "line": 811, "column": 20 }, "end": { - "line": 812, + "line": 811, "column": 26 } } @@ -126383,15 +126105,15 @@ "binop": null, "updateContext": null }, - "start": 28523, - "end": 28524, + "start": 28463, + "end": 28464, "loc": { "start": { - "line": 812, + "line": 811, "column": 26 }, "end": { - "line": 812, + "line": 811, "column": 27 } } @@ -126411,15 +126133,15 @@ "updateContext": null }, "value": "this", - "start": 28524, - "end": 28528, + "start": 28464, + "end": 28468, "loc": { "start": { - "line": 812, + "line": 811, "column": 27 }, "end": { - "line": 812, + "line": 811, "column": 31 } } @@ -126437,15 +126159,15 @@ "binop": null, "updateContext": null }, - "start": 28528, - "end": 28529, + "start": 28468, + "end": 28469, "loc": { "start": { - "line": 812, + "line": 811, "column": 31 }, "end": { - "line": 812, + "line": 811, "column": 32 } } @@ -126463,15 +126185,15 @@ "binop": null }, "value": "AXIS_VIEW_FRONT", - "start": 28529, - "end": 28544, + "start": 28469, + "end": 28484, "loc": { "start": { - "line": 812, + "line": 811, "column": 32 }, "end": { - "line": 812, + "line": 811, "column": 47 } } @@ -126489,15 +126211,15 @@ "binop": null, "updateContext": null }, - "start": 28544, - "end": 28545, + "start": 28484, + "end": 28485, "loc": { "start": { - "line": 812, + "line": 811, "column": 47 }, "end": { - "line": 812, + "line": 811, "column": 48 } } @@ -126516,15 +126238,15 @@ "updateContext": null }, "value": "=", - "start": 28546, - "end": 28547, + "start": 28486, + "end": 28487, "loc": { "start": { - "line": 812, + "line": 811, "column": 49 }, "end": { - "line": 812, + "line": 811, "column": 50 } } @@ -126542,15 +126264,15 @@ "binop": null, "updateContext": null }, - "start": 28548, - "end": 28549, + "start": 28488, + "end": 28489, "loc": { "start": { - "line": 812, + "line": 811, "column": 51 }, "end": { - "line": 812, + "line": 811, "column": 52 } } @@ -126568,15 +126290,15 @@ "binop": null }, "value": "input", - "start": 28549, - "end": 28554, + "start": 28489, + "end": 28494, "loc": { "start": { - "line": 812, + "line": 811, "column": 52 }, "end": { - "line": 812, + "line": 811, "column": 57 } } @@ -126594,15 +126316,15 @@ "binop": null, "updateContext": null }, - "start": 28554, - "end": 28555, + "start": 28494, + "end": 28495, "loc": { "start": { - "line": 812, + "line": 811, "column": 57 }, "end": { - "line": 812, + "line": 811, "column": 58 } } @@ -126620,15 +126342,15 @@ "binop": null }, "value": "KEY_NUM_4", - "start": 28555, - "end": 28564, + "start": 28495, + "end": 28504, "loc": { "start": { - "line": 812, + "line": 811, "column": 58 }, "end": { - "line": 812, + "line": 811, "column": 67 } } @@ -126646,15 +126368,15 @@ "binop": null, "updateContext": null }, - "start": 28564, - "end": 28565, + "start": 28504, + "end": 28505, "loc": { "start": { - "line": 812, + "line": 811, "column": 67 }, "end": { - "line": 812, + "line": 811, "column": 68 } } @@ -126672,15 +126394,15 @@ "binop": null, "updateContext": null }, - "start": 28565, - "end": 28566, + "start": 28505, + "end": 28506, "loc": { "start": { - "line": 812, + "line": 811, "column": 68 }, "end": { - "line": 812, + "line": 811, "column": 69 } } @@ -126698,15 +126420,15 @@ "binop": null }, "value": "keyMap", - "start": 28587, - "end": 28593, + "start": 28527, + "end": 28533, "loc": { "start": { - "line": 813, + "line": 812, "column": 20 }, "end": { - "line": 813, + "line": 812, "column": 26 } } @@ -126724,15 +126446,15 @@ "binop": null, "updateContext": null }, - "start": 28593, - "end": 28594, + "start": 28533, + "end": 28534, "loc": { "start": { - "line": 813, + "line": 812, "column": 26 }, "end": { - "line": 813, + "line": 812, "column": 27 } } @@ -126752,15 +126474,15 @@ "updateContext": null }, "value": "this", - "start": 28594, - "end": 28598, + "start": 28534, + "end": 28538, "loc": { "start": { - "line": 813, + "line": 812, "column": 27 }, "end": { - "line": 813, + "line": 812, "column": 31 } } @@ -126778,15 +126500,15 @@ "binop": null, "updateContext": null }, - "start": 28598, - "end": 28599, + "start": 28538, + "end": 28539, "loc": { "start": { - "line": 813, + "line": 812, "column": 31 }, "end": { - "line": 813, + "line": 812, "column": 32 } } @@ -126804,15 +126526,15 @@ "binop": null }, "value": "AXIS_VIEW_TOP", - "start": 28599, - "end": 28612, + "start": 28539, + "end": 28552, "loc": { "start": { - "line": 813, + "line": 812, "column": 32 }, "end": { - "line": 813, + "line": 812, "column": 45 } } @@ -126830,15 +126552,15 @@ "binop": null, "updateContext": null }, - "start": 28612, - "end": 28613, + "start": 28552, + "end": 28553, "loc": { "start": { - "line": 813, + "line": 812, "column": 45 }, "end": { - "line": 813, + "line": 812, "column": 46 } } @@ -126857,15 +126579,15 @@ "updateContext": null }, "value": "=", - "start": 28614, - "end": 28615, + "start": 28554, + "end": 28555, "loc": { "start": { - "line": 813, + "line": 812, "column": 47 }, "end": { - "line": 813, + "line": 812, "column": 48 } } @@ -126883,15 +126605,15 @@ "binop": null, "updateContext": null }, - "start": 28616, - "end": 28617, + "start": 28556, + "end": 28557, "loc": { "start": { - "line": 813, + "line": 812, "column": 49 }, "end": { - "line": 813, + "line": 812, "column": 50 } } @@ -126909,15 +126631,15 @@ "binop": null }, "value": "input", - "start": 28617, - "end": 28622, + "start": 28557, + "end": 28562, "loc": { "start": { - "line": 813, + "line": 812, "column": 50 }, "end": { - "line": 813, + "line": 812, "column": 55 } } @@ -126935,15 +126657,15 @@ "binop": null, "updateContext": null }, - "start": 28622, - "end": 28623, + "start": 28562, + "end": 28563, "loc": { "start": { - "line": 813, + "line": 812, "column": 55 }, "end": { - "line": 813, + "line": 812, "column": 56 } } @@ -126961,15 +126683,15 @@ "binop": null }, "value": "KEY_NUM_5", - "start": 28623, - "end": 28632, + "start": 28563, + "end": 28572, "loc": { "start": { - "line": 813, + "line": 812, "column": 56 }, "end": { - "line": 813, + "line": 812, "column": 65 } } @@ -126987,15 +126709,15 @@ "binop": null, "updateContext": null }, - "start": 28632, - "end": 28633, + "start": 28572, + "end": 28573, "loc": { "start": { - "line": 813, + "line": 812, "column": 65 }, "end": { - "line": 813, + "line": 812, "column": 66 } } @@ -127013,15 +126735,15 @@ "binop": null, "updateContext": null }, - "start": 28633, - "end": 28634, + "start": 28573, + "end": 28574, "loc": { "start": { - "line": 813, + "line": 812, "column": 66 }, "end": { - "line": 813, + "line": 812, "column": 67 } } @@ -127039,15 +126761,15 @@ "binop": null }, "value": "keyMap", - "start": 28655, - "end": 28661, + "start": 28595, + "end": 28601, "loc": { "start": { - "line": 814, + "line": 813, "column": 20 }, "end": { - "line": 814, + "line": 813, "column": 26 } } @@ -127065,15 +126787,15 @@ "binop": null, "updateContext": null }, - "start": 28661, - "end": 28662, + "start": 28601, + "end": 28602, "loc": { "start": { - "line": 814, + "line": 813, "column": 26 }, "end": { - "line": 814, + "line": 813, "column": 27 } } @@ -127093,15 +126815,15 @@ "updateContext": null }, "value": "this", - "start": 28662, - "end": 28666, + "start": 28602, + "end": 28606, "loc": { "start": { - "line": 814, + "line": 813, "column": 27 }, "end": { - "line": 814, + "line": 813, "column": 31 } } @@ -127119,15 +126841,15 @@ "binop": null, "updateContext": null }, - "start": 28666, - "end": 28667, + "start": 28606, + "end": 28607, "loc": { "start": { - "line": 814, + "line": 813, "column": 31 }, "end": { - "line": 814, + "line": 813, "column": 32 } } @@ -127145,15 +126867,15 @@ "binop": null }, "value": "AXIS_VIEW_BOTTOM", - "start": 28667, - "end": 28683, + "start": 28607, + "end": 28623, "loc": { "start": { - "line": 814, + "line": 813, "column": 32 }, "end": { - "line": 814, + "line": 813, "column": 48 } } @@ -127171,15 +126893,15 @@ "binop": null, "updateContext": null }, - "start": 28683, - "end": 28684, + "start": 28623, + "end": 28624, "loc": { "start": { - "line": 814, + "line": 813, "column": 48 }, "end": { - "line": 814, + "line": 813, "column": 49 } } @@ -127198,15 +126920,15 @@ "updateContext": null }, "value": "=", - "start": 28685, - "end": 28686, + "start": 28625, + "end": 28626, "loc": { "start": { - "line": 814, + "line": 813, "column": 50 }, "end": { - "line": 814, + "line": 813, "column": 51 } } @@ -127224,15 +126946,15 @@ "binop": null, "updateContext": null }, - "start": 28687, - "end": 28688, + "start": 28627, + "end": 28628, "loc": { "start": { - "line": 814, + "line": 813, "column": 52 }, "end": { - "line": 814, + "line": 813, "column": 53 } } @@ -127250,15 +126972,15 @@ "binop": null }, "value": "input", - "start": 28688, - "end": 28693, + "start": 28628, + "end": 28633, "loc": { "start": { - "line": 814, + "line": 813, "column": 53 }, "end": { - "line": 814, + "line": 813, "column": 58 } } @@ -127276,15 +126998,15 @@ "binop": null, "updateContext": null }, - "start": 28693, - "end": 28694, + "start": 28633, + "end": 28634, "loc": { "start": { - "line": 814, + "line": 813, "column": 58 }, "end": { - "line": 814, + "line": 813, "column": 59 } } @@ -127302,15 +127024,15 @@ "binop": null }, "value": "KEY_NUM_6", - "start": 28694, - "end": 28703, + "start": 28634, + "end": 28643, "loc": { "start": { - "line": 814, + "line": 813, "column": 59 }, "end": { - "line": 814, + "line": 813, "column": 68 } } @@ -127328,15 +127050,15 @@ "binop": null, "updateContext": null }, - "start": 28703, - "end": 28704, + "start": 28643, + "end": 28644, "loc": { "start": { - "line": 814, + "line": 813, "column": 68 }, "end": { - "line": 814, + "line": 813, "column": 69 } } @@ -127354,15 +127076,15 @@ "binop": null, "updateContext": null }, - "start": 28704, - "end": 28705, + "start": 28644, + "end": 28645, "loc": { "start": { - "line": 814, + "line": 813, "column": 69 }, "end": { - "line": 814, + "line": 813, "column": 70 } } @@ -127382,15 +127104,15 @@ "updateContext": null }, "value": "break", - "start": 28726, - "end": 28731, + "start": 28666, + "end": 28671, "loc": { "start": { - "line": 815, + "line": 814, "column": 20 }, "end": { - "line": 815, + "line": 814, "column": 25 } } @@ -127408,15 +127130,15 @@ "binop": null, "updateContext": null }, - "start": 28731, - "end": 28732, + "start": 28671, + "end": 28672, "loc": { "start": { - "line": 815, + "line": 814, "column": 25 }, "end": { - "line": 815, + "line": 814, "column": 26 } } @@ -127433,15 +127155,15 @@ "postfix": false, "binop": null }, - "start": 28745, - "end": 28746, + "start": 28685, + "end": 28686, "loc": { "start": { - "line": 816, + "line": 815, "column": 12 }, "end": { - "line": 816, + "line": 815, "column": 13 } } @@ -127461,15 +127183,15 @@ "updateContext": null }, "value": "this", - "start": 28760, - "end": 28764, + "start": 28700, + "end": 28704, "loc": { "start": { - "line": 818, + "line": 817, "column": 12 }, "end": { - "line": 818, + "line": 817, "column": 16 } } @@ -127487,15 +127209,15 @@ "binop": null, "updateContext": null }, - "start": 28764, - "end": 28765, + "start": 28704, + "end": 28705, "loc": { "start": { - "line": 818, + "line": 817, "column": 16 }, "end": { - "line": 818, + "line": 817, "column": 17 } } @@ -127513,15 +127235,15 @@ "binop": null }, "value": "_keyMap", - "start": 28765, - "end": 28772, + "start": 28705, + "end": 28712, "loc": { "start": { - "line": 818, + "line": 817, "column": 17 }, "end": { - "line": 818, + "line": 817, "column": 24 } } @@ -127540,15 +127262,15 @@ "updateContext": null }, "value": "=", - "start": 28773, - "end": 28774, + "start": 28713, + "end": 28714, "loc": { "start": { - "line": 818, + "line": 817, "column": 25 }, "end": { - "line": 818, + "line": 817, "column": 26 } } @@ -127566,15 +127288,15 @@ "binop": null }, "value": "keyMap", - "start": 28775, - "end": 28781, + "start": 28715, + "end": 28721, "loc": { "start": { - "line": 818, + "line": 817, "column": 27 }, "end": { - "line": 818, + "line": 817, "column": 33 } } @@ -127592,15 +127314,15 @@ "binop": null, "updateContext": null }, - "start": 28781, - "end": 28782, + "start": 28721, + "end": 28722, "loc": { "start": { - "line": 818, + "line": 817, "column": 33 }, "end": { - "line": 818, + "line": 817, "column": 34 } } @@ -127617,15 +127339,15 @@ "postfix": false, "binop": null }, - "start": 28791, - "end": 28792, + "start": 28731, + "end": 28732, "loc": { "start": { - "line": 819, + "line": 818, "column": 8 }, "end": { - "line": 819, + "line": 818, "column": 9 } } @@ -127645,15 +127367,15 @@ "updateContext": null }, "value": "else", - "start": 28793, - "end": 28797, + "start": 28733, + "end": 28737, "loc": { "start": { - "line": 819, + "line": 818, "column": 10 }, "end": { - "line": 819, + "line": 818, "column": 14 } } @@ -127670,15 +127392,15 @@ "postfix": false, "binop": null }, - "start": 28798, - "end": 28799, + "start": 28738, + "end": 28739, "loc": { "start": { - "line": 819, + "line": 818, "column": 15 }, "end": { - "line": 819, + "line": 818, "column": 16 } } @@ -127698,15 +127420,15 @@ "updateContext": null }, "value": "const", - "start": 28812, - "end": 28817, + "start": 28752, + "end": 28757, "loc": { "start": { - "line": 820, + "line": 819, "column": 12 }, "end": { - "line": 820, + "line": 819, "column": 17 } } @@ -127724,15 +127446,15 @@ "binop": null }, "value": "keyMap", - "start": 28818, - "end": 28824, + "start": 28758, + "end": 28764, "loc": { "start": { - "line": 820, + "line": 819, "column": 18 }, "end": { - "line": 820, + "line": 819, "column": 24 } } @@ -127751,15 +127473,15 @@ "updateContext": null }, "value": "=", - "start": 28825, - "end": 28826, + "start": 28765, + "end": 28766, "loc": { "start": { - "line": 820, + "line": 819, "column": 25 }, "end": { - "line": 820, + "line": 819, "column": 26 } } @@ -127777,15 +127499,15 @@ "binop": null }, "value": "value", - "start": 28827, - "end": 28832, + "start": 28767, + "end": 28772, "loc": { "start": { - "line": 820, + "line": 819, "column": 27 }, "end": { - "line": 820, + "line": 819, "column": 32 } } @@ -127803,15 +127525,15 @@ "binop": null, "updateContext": null }, - "start": 28832, - "end": 28833, + "start": 28772, + "end": 28773, "loc": { "start": { - "line": 820, + "line": 819, "column": 32 }, "end": { - "line": 820, + "line": 819, "column": 33 } } @@ -127831,15 +127553,15 @@ "updateContext": null }, "value": "this", - "start": 28846, - "end": 28850, + "start": 28786, + "end": 28790, "loc": { "start": { - "line": 821, + "line": 820, "column": 12 }, "end": { - "line": 821, + "line": 820, "column": 16 } } @@ -127857,15 +127579,15 @@ "binop": null, "updateContext": null }, - "start": 28850, - "end": 28851, + "start": 28790, + "end": 28791, "loc": { "start": { - "line": 821, + "line": 820, "column": 16 }, "end": { - "line": 821, + "line": 820, "column": 17 } } @@ -127883,15 +127605,15 @@ "binop": null }, "value": "_keyMap", - "start": 28851, - "end": 28858, + "start": 28791, + "end": 28798, "loc": { "start": { - "line": 821, + "line": 820, "column": 17 }, "end": { - "line": 821, + "line": 820, "column": 24 } } @@ -127910,15 +127632,15 @@ "updateContext": null }, "value": "=", - "start": 28859, - "end": 28860, + "start": 28799, + "end": 28800, "loc": { "start": { - "line": 821, + "line": 820, "column": 25 }, "end": { - "line": 821, + "line": 820, "column": 26 } } @@ -127936,15 +127658,15 @@ "binop": null }, "value": "keyMap", - "start": 28861, - "end": 28867, + "start": 28801, + "end": 28807, "loc": { "start": { - "line": 821, + "line": 820, "column": 27 }, "end": { - "line": 821, + "line": 820, "column": 33 } } @@ -127962,15 +127684,15 @@ "binop": null, "updateContext": null }, - "start": 28867, - "end": 28868, + "start": 28807, + "end": 28808, "loc": { "start": { - "line": 821, + "line": 820, "column": 33 }, "end": { - "line": 821, + "line": 820, "column": 34 } } @@ -127987,15 +127709,15 @@ "postfix": false, "binop": null }, - "start": 28877, - "end": 28878, + "start": 28817, + "end": 28818, "loc": { "start": { - "line": 822, + "line": 821, "column": 8 }, "end": { - "line": 822, + "line": 821, "column": 9 } } @@ -128012,15 +127734,15 @@ "postfix": false, "binop": null }, - "start": 28883, - "end": 28884, + "start": 28823, + "end": 28824, "loc": { "start": { - "line": 823, + "line": 822, "column": 4 }, "end": { - "line": 823, + "line": 822, "column": 5 } } @@ -128028,15 +127750,15 @@ { "type": "CommentBlock", "value": "*\n * Gets custom mappings of keys to {@link CameraControl} actions.\n *\n * @returns {{Number:Number}} Current key mappings.\n ", - "start": 28890, - "end": 29034, + "start": 28830, + "end": 28974, "loc": { "start": { - "line": 825, + "line": 824, "column": 4 }, "end": { - "line": 829, + "line": 828, "column": 7 } } @@ -128054,15 +127776,15 @@ "binop": null }, "value": "get", - "start": 29039, - "end": 29042, + "start": 28979, + "end": 28982, "loc": { "start": { - "line": 830, + "line": 829, "column": 4 }, "end": { - "line": 830, + "line": 829, "column": 7 } } @@ -128080,15 +127802,15 @@ "binop": null }, "value": "keyMap", - "start": 29043, - "end": 29049, + "start": 28983, + "end": 28989, "loc": { "start": { - "line": 830, + "line": 829, "column": 8 }, "end": { - "line": 830, + "line": 829, "column": 14 } } @@ -128105,15 +127827,15 @@ "postfix": false, "binop": null }, - "start": 29049, - "end": 29050, + "start": 28989, + "end": 28990, "loc": { "start": { - "line": 830, + "line": 829, "column": 14 }, "end": { - "line": 830, + "line": 829, "column": 15 } } @@ -128130,15 +127852,15 @@ "postfix": false, "binop": null }, - "start": 29050, - "end": 29051, + "start": 28990, + "end": 28991, "loc": { "start": { - "line": 830, + "line": 829, "column": 15 }, "end": { - "line": 830, + "line": 829, "column": 16 } } @@ -128155,15 +127877,15 @@ "postfix": false, "binop": null }, - "start": 29052, - "end": 29053, + "start": 28992, + "end": 28993, "loc": { "start": { - "line": 830, + "line": 829, "column": 17 }, "end": { - "line": 830, + "line": 829, "column": 18 } } @@ -128183,15 +127905,15 @@ "updateContext": null }, "value": "return", - "start": 29062, - "end": 29068, + "start": 29002, + "end": 29008, "loc": { "start": { - "line": 831, + "line": 830, "column": 8 }, "end": { - "line": 831, + "line": 830, "column": 14 } } @@ -128211,15 +127933,15 @@ "updateContext": null }, "value": "this", - "start": 29069, - "end": 29073, + "start": 29009, + "end": 29013, "loc": { "start": { - "line": 831, + "line": 830, "column": 15 }, "end": { - "line": 831, + "line": 830, "column": 19 } } @@ -128237,15 +127959,15 @@ "binop": null, "updateContext": null }, - "start": 29073, - "end": 29074, + "start": 29013, + "end": 29014, "loc": { "start": { - "line": 831, + "line": 830, "column": 19 }, "end": { - "line": 831, + "line": 830, "column": 20 } } @@ -128263,15 +127985,15 @@ "binop": null }, "value": "_keyMap", - "start": 29074, - "end": 29081, + "start": 29014, + "end": 29021, "loc": { "start": { - "line": 831, + "line": 830, "column": 20 }, "end": { - "line": 831, + "line": 830, "column": 27 } } @@ -128289,15 +128011,15 @@ "binop": null, "updateContext": null }, - "start": 29081, - "end": 29082, + "start": 29021, + "end": 29022, "loc": { "start": { - "line": 831, + "line": 830, "column": 27 }, "end": { - "line": 831, + "line": 830, "column": 28 } } @@ -128314,15 +128036,15 @@ "postfix": false, "binop": null }, - "start": 29087, - "end": 29088, + "start": 29027, + "end": 29028, "loc": { "start": { - "line": 832, + "line": 831, "column": 4 }, "end": { - "line": 832, + "line": 831, "column": 5 } } @@ -128330,15 +128052,15 @@ { "type": "CommentBlock", "value": "*\n * Returns true if any keys configured for the given action are down.\n * @param action\n * @param keyDownMap\n * @private\n ", - "start": 29094, - "end": 29241, + "start": 29034, + "end": 29181, "loc": { "start": { - "line": 834, + "line": 833, "column": 4 }, "end": { - "line": 839, + "line": 838, "column": 7 } } @@ -128356,15 +128078,15 @@ "binop": null }, "value": "_isKeyDownForAction", - "start": 29246, - "end": 29265, + "start": 29186, + "end": 29205, "loc": { "start": { - "line": 840, + "line": 839, "column": 4 }, "end": { - "line": 840, + "line": 839, "column": 23 } } @@ -128381,15 +128103,15 @@ "postfix": false, "binop": null }, - "start": 29265, - "end": 29266, + "start": 29205, + "end": 29206, "loc": { "start": { - "line": 840, + "line": 839, "column": 23 }, "end": { - "line": 840, + "line": 839, "column": 24 } } @@ -128407,15 +128129,15 @@ "binop": null }, "value": "action", - "start": 29266, - "end": 29272, + "start": 29206, + "end": 29212, "loc": { "start": { - "line": 840, + "line": 839, "column": 24 }, "end": { - "line": 840, + "line": 839, "column": 30 } } @@ -128433,15 +128155,15 @@ "binop": null, "updateContext": null }, - "start": 29272, - "end": 29273, + "start": 29212, + "end": 29213, "loc": { "start": { - "line": 840, + "line": 839, "column": 30 }, "end": { - "line": 840, + "line": 839, "column": 31 } } @@ -128459,15 +128181,15 @@ "binop": null }, "value": "keyDownMap", - "start": 29274, - "end": 29284, + "start": 29214, + "end": 29224, "loc": { "start": { - "line": 840, + "line": 839, "column": 32 }, "end": { - "line": 840, + "line": 839, "column": 42 } } @@ -128484,15 +128206,15 @@ "postfix": false, "binop": null }, - "start": 29284, - "end": 29285, + "start": 29224, + "end": 29225, "loc": { "start": { - "line": 840, + "line": 839, "column": 42 }, "end": { - "line": 840, + "line": 839, "column": 43 } } @@ -128509,15 +128231,15 @@ "postfix": false, "binop": null }, - "start": 29286, - "end": 29287, + "start": 29226, + "end": 29227, "loc": { "start": { - "line": 840, + "line": 839, "column": 44 }, "end": { - "line": 840, + "line": 839, "column": 45 } } @@ -128537,15 +128259,15 @@ "updateContext": null }, "value": "const", - "start": 29296, - "end": 29301, + "start": 29236, + "end": 29241, "loc": { "start": { - "line": 841, + "line": 840, "column": 8 }, "end": { - "line": 841, + "line": 840, "column": 13 } } @@ -128563,15 +128285,15 @@ "binop": null }, "value": "keys", - "start": 29302, - "end": 29306, + "start": 29242, + "end": 29246, "loc": { "start": { - "line": 841, + "line": 840, "column": 14 }, "end": { - "line": 841, + "line": 840, "column": 18 } } @@ -128590,15 +128312,15 @@ "updateContext": null }, "value": "=", - "start": 29307, - "end": 29308, + "start": 29247, + "end": 29248, "loc": { "start": { - "line": 841, + "line": 840, "column": 19 }, "end": { - "line": 841, + "line": 840, "column": 20 } } @@ -128618,15 +128340,15 @@ "updateContext": null }, "value": "this", - "start": 29309, - "end": 29313, + "start": 29249, + "end": 29253, "loc": { "start": { - "line": 841, + "line": 840, "column": 21 }, "end": { - "line": 841, + "line": 840, "column": 25 } } @@ -128644,15 +128366,15 @@ "binop": null, "updateContext": null }, - "start": 29313, - "end": 29314, + "start": 29253, + "end": 29254, "loc": { "start": { - "line": 841, + "line": 840, "column": 25 }, "end": { - "line": 841, + "line": 840, "column": 26 } } @@ -128670,15 +128392,15 @@ "binop": null }, "value": "_keyMap", - "start": 29314, - "end": 29321, + "start": 29254, + "end": 29261, "loc": { "start": { - "line": 841, + "line": 840, "column": 26 }, "end": { - "line": 841, + "line": 840, "column": 33 } } @@ -128696,15 +128418,15 @@ "binop": null, "updateContext": null }, - "start": 29321, - "end": 29322, + "start": 29261, + "end": 29262, "loc": { "start": { - "line": 841, + "line": 840, "column": 33 }, "end": { - "line": 841, + "line": 840, "column": 34 } } @@ -128722,15 +128444,15 @@ "binop": null }, "value": "action", - "start": 29322, - "end": 29328, + "start": 29262, + "end": 29268, "loc": { "start": { - "line": 841, + "line": 840, "column": 34 }, "end": { - "line": 841, + "line": 840, "column": 40 } } @@ -128748,15 +128470,15 @@ "binop": null, "updateContext": null }, - "start": 29328, - "end": 29329, + "start": 29268, + "end": 29269, "loc": { "start": { - "line": 841, + "line": 840, "column": 40 }, "end": { - "line": 841, + "line": 840, "column": 41 } } @@ -128774,15 +128496,15 @@ "binop": null, "updateContext": null }, - "start": 29329, - "end": 29330, + "start": 29269, + "end": 29270, "loc": { "start": { - "line": 841, + "line": 840, "column": 41 }, "end": { - "line": 841, + "line": 840, "column": 42 } } @@ -128802,15 +128524,15 @@ "updateContext": null }, "value": "if", - "start": 29339, - "end": 29341, + "start": 29279, + "end": 29281, "loc": { "start": { - "line": 842, + "line": 841, "column": 8 }, "end": { - "line": 842, + "line": 841, "column": 10 } } @@ -128827,15 +128549,15 @@ "postfix": false, "binop": null }, - "start": 29342, - "end": 29343, + "start": 29282, + "end": 29283, "loc": { "start": { - "line": 842, + "line": 841, "column": 11 }, "end": { - "line": 842, + "line": 841, "column": 12 } } @@ -128854,15 +128576,15 @@ "updateContext": null }, "value": "!", - "start": 29343, - "end": 29344, + "start": 29283, + "end": 29284, "loc": { "start": { - "line": 842, + "line": 841, "column": 12 }, "end": { - "line": 842, + "line": 841, "column": 13 } } @@ -128880,15 +128602,15 @@ "binop": null }, "value": "keys", - "start": 29344, - "end": 29348, + "start": 29284, + "end": 29288, "loc": { "start": { - "line": 842, + "line": 841, "column": 13 }, "end": { - "line": 842, + "line": 841, "column": 17 } } @@ -128905,15 +128627,15 @@ "postfix": false, "binop": null }, - "start": 29348, - "end": 29349, + "start": 29288, + "end": 29289, "loc": { "start": { - "line": 842, + "line": 841, "column": 17 }, "end": { - "line": 842, + "line": 841, "column": 18 } } @@ -128930,15 +128652,15 @@ "postfix": false, "binop": null }, - "start": 29350, - "end": 29351, + "start": 29290, + "end": 29291, "loc": { "start": { - "line": 842, + "line": 841, "column": 19 }, "end": { - "line": 842, + "line": 841, "column": 20 } } @@ -128958,15 +128680,15 @@ "updateContext": null }, "value": "return", - "start": 29364, - "end": 29370, + "start": 29304, + "end": 29310, "loc": { "start": { - "line": 843, + "line": 842, "column": 12 }, "end": { - "line": 843, + "line": 842, "column": 18 } } @@ -128986,15 +128708,15 @@ "updateContext": null }, "value": "false", - "start": 29371, - "end": 29376, + "start": 29311, + "end": 29316, "loc": { "start": { - "line": 843, + "line": 842, "column": 19 }, "end": { - "line": 843, + "line": 842, "column": 24 } } @@ -129012,15 +128734,15 @@ "binop": null, "updateContext": null }, - "start": 29376, - "end": 29377, + "start": 29316, + "end": 29317, "loc": { "start": { - "line": 843, + "line": 842, "column": 24 }, "end": { - "line": 843, + "line": 842, "column": 25 } } @@ -129037,15 +128759,15 @@ "postfix": false, "binop": null }, - "start": 29386, - "end": 29387, + "start": 29326, + "end": 29327, "loc": { "start": { - "line": 844, + "line": 843, "column": 8 }, "end": { - "line": 844, + "line": 843, "column": 9 } } @@ -129065,15 +128787,15 @@ "updateContext": null }, "value": "if", - "start": 29396, - "end": 29398, + "start": 29336, + "end": 29338, "loc": { "start": { - "line": 845, + "line": 844, "column": 8 }, "end": { - "line": 845, + "line": 844, "column": 10 } } @@ -129090,15 +128812,15 @@ "postfix": false, "binop": null }, - "start": 29399, - "end": 29400, + "start": 29339, + "end": 29340, "loc": { "start": { - "line": 845, + "line": 844, "column": 11 }, "end": { - "line": 845, + "line": 844, "column": 12 } } @@ -129117,15 +128839,15 @@ "updateContext": null }, "value": "!", - "start": 29400, - "end": 29401, + "start": 29340, + "end": 29341, "loc": { "start": { - "line": 845, + "line": 844, "column": 12 }, "end": { - "line": 845, + "line": 844, "column": 13 } } @@ -129143,15 +128865,15 @@ "binop": null }, "value": "keyDownMap", - "start": 29401, - "end": 29411, + "start": 29341, + "end": 29351, "loc": { "start": { - "line": 845, + "line": 844, "column": 13 }, "end": { - "line": 845, + "line": 844, "column": 23 } } @@ -129168,15 +128890,15 @@ "postfix": false, "binop": null }, - "start": 29411, - "end": 29412, + "start": 29351, + "end": 29352, "loc": { "start": { - "line": 845, + "line": 844, "column": 23 }, "end": { - "line": 845, + "line": 844, "column": 24 } } @@ -129193,15 +128915,15 @@ "postfix": false, "binop": null }, - "start": 29413, - "end": 29414, + "start": 29353, + "end": 29354, "loc": { "start": { - "line": 845, + "line": 844, "column": 25 }, "end": { - "line": 845, + "line": 844, "column": 26 } } @@ -129219,15 +128941,15 @@ "binop": null }, "value": "keyDownMap", - "start": 29427, - "end": 29437, + "start": 29367, + "end": 29377, "loc": { "start": { - "line": 846, + "line": 845, "column": 12 }, "end": { - "line": 846, + "line": 845, "column": 22 } } @@ -129246,15 +128968,15 @@ "updateContext": null }, "value": "=", - "start": 29438, - "end": 29439, + "start": 29378, + "end": 29379, "loc": { "start": { - "line": 846, + "line": 845, "column": 23 }, "end": { - "line": 846, + "line": 845, "column": 24 } } @@ -129274,15 +128996,15 @@ "updateContext": null }, "value": "this", - "start": 29440, - "end": 29444, + "start": 29380, + "end": 29384, "loc": { "start": { - "line": 846, + "line": 845, "column": 25 }, "end": { - "line": 846, + "line": 845, "column": 29 } } @@ -129300,15 +129022,15 @@ "binop": null, "updateContext": null }, - "start": 29444, - "end": 29445, + "start": 29384, + "end": 29385, "loc": { "start": { - "line": 846, + "line": 845, "column": 29 }, "end": { - "line": 846, + "line": 845, "column": 30 } } @@ -129326,15 +129048,15 @@ "binop": null }, "value": "scene", - "start": 29445, - "end": 29450, + "start": 29385, + "end": 29390, "loc": { "start": { - "line": 846, + "line": 845, "column": 30 }, "end": { - "line": 846, + "line": 845, "column": 35 } } @@ -129352,15 +129074,15 @@ "binop": null, "updateContext": null }, - "start": 29450, - "end": 29451, + "start": 29390, + "end": 29391, "loc": { "start": { - "line": 846, + "line": 845, "column": 35 }, "end": { - "line": 846, + "line": 845, "column": 36 } } @@ -129378,15 +129100,15 @@ "binop": null }, "value": "input", - "start": 29451, - "end": 29456, + "start": 29391, + "end": 29396, "loc": { "start": { - "line": 846, + "line": 845, "column": 36 }, "end": { - "line": 846, + "line": 845, "column": 41 } } @@ -129404,15 +129126,15 @@ "binop": null, "updateContext": null }, - "start": 29456, - "end": 29457, + "start": 29396, + "end": 29397, "loc": { "start": { - "line": 846, + "line": 845, "column": 41 }, "end": { - "line": 846, + "line": 845, "column": 42 } } @@ -129430,15 +129152,15 @@ "binop": null }, "value": "keyDown", - "start": 29457, - "end": 29464, + "start": 29397, + "end": 29404, "loc": { "start": { - "line": 846, + "line": 845, "column": 42 }, "end": { - "line": 846, + "line": 845, "column": 49 } } @@ -129456,15 +129178,15 @@ "binop": null, "updateContext": null }, - "start": 29464, - "end": 29465, + "start": 29404, + "end": 29405, "loc": { "start": { - "line": 846, + "line": 845, "column": 49 }, "end": { - "line": 846, + "line": 845, "column": 50 } } @@ -129481,15 +129203,15 @@ "postfix": false, "binop": null }, - "start": 29474, - "end": 29475, + "start": 29414, + "end": 29415, "loc": { "start": { - "line": 847, + "line": 846, "column": 8 }, "end": { - "line": 847, + "line": 846, "column": 9 } } @@ -129509,15 +129231,15 @@ "updateContext": null }, "value": "for", - "start": 29484, - "end": 29487, + "start": 29424, + "end": 29427, "loc": { "start": { - "line": 848, + "line": 847, "column": 8 }, "end": { - "line": 848, + "line": 847, "column": 11 } } @@ -129534,15 +129256,15 @@ "postfix": false, "binop": null }, - "start": 29488, - "end": 29489, + "start": 29428, + "end": 29429, "loc": { "start": { - "line": 848, + "line": 847, "column": 12 }, "end": { - "line": 848, + "line": 847, "column": 13 } } @@ -129562,15 +129284,15 @@ "updateContext": null }, "value": "let", - "start": 29489, - "end": 29492, + "start": 29429, + "end": 29432, "loc": { "start": { - "line": 848, + "line": 847, "column": 13 }, "end": { - "line": 848, + "line": 847, "column": 16 } } @@ -129588,15 +129310,15 @@ "binop": null }, "value": "i", - "start": 29493, - "end": 29494, + "start": 29433, + "end": 29434, "loc": { "start": { - "line": 848, + "line": 847, "column": 17 }, "end": { - "line": 848, + "line": 847, "column": 18 } } @@ -129615,15 +129337,15 @@ "updateContext": null }, "value": "=", - "start": 29495, - "end": 29496, + "start": 29435, + "end": 29436, "loc": { "start": { - "line": 848, + "line": 847, "column": 19 }, "end": { - "line": 848, + "line": 847, "column": 20 } } @@ -129642,15 +129364,15 @@ "updateContext": null }, "value": 0, - "start": 29497, - "end": 29498, + "start": 29437, + "end": 29438, "loc": { "start": { - "line": 848, + "line": 847, "column": 21 }, "end": { - "line": 848, + "line": 847, "column": 22 } } @@ -129668,15 +129390,15 @@ "binop": null, "updateContext": null }, - "start": 29498, - "end": 29499, + "start": 29438, + "end": 29439, "loc": { "start": { - "line": 848, + "line": 847, "column": 22 }, "end": { - "line": 848, + "line": 847, "column": 23 } } @@ -129694,15 +129416,15 @@ "binop": null }, "value": "len", - "start": 29500, - "end": 29503, + "start": 29440, + "end": 29443, "loc": { "start": { - "line": 848, + "line": 847, "column": 24 }, "end": { - "line": 848, + "line": 847, "column": 27 } } @@ -129721,15 +129443,15 @@ "updateContext": null }, "value": "=", - "start": 29504, - "end": 29505, + "start": 29444, + "end": 29445, "loc": { "start": { - "line": 848, + "line": 847, "column": 28 }, "end": { - "line": 848, + "line": 847, "column": 29 } } @@ -129747,15 +129469,15 @@ "binop": null }, "value": "keys", - "start": 29506, - "end": 29510, + "start": 29446, + "end": 29450, "loc": { "start": { - "line": 848, + "line": 847, "column": 30 }, "end": { - "line": 848, + "line": 847, "column": 34 } } @@ -129773,15 +129495,15 @@ "binop": null, "updateContext": null }, - "start": 29510, - "end": 29511, + "start": 29450, + "end": 29451, "loc": { "start": { - "line": 848, + "line": 847, "column": 34 }, "end": { - "line": 848, + "line": 847, "column": 35 } } @@ -129799,15 +129521,15 @@ "binop": null }, "value": "length", - "start": 29511, - "end": 29517, + "start": 29451, + "end": 29457, "loc": { "start": { - "line": 848, + "line": 847, "column": 35 }, "end": { - "line": 848, + "line": 847, "column": 41 } } @@ -129825,15 +129547,15 @@ "binop": null, "updateContext": null }, - "start": 29517, - "end": 29518, + "start": 29457, + "end": 29458, "loc": { "start": { - "line": 848, + "line": 847, "column": 41 }, "end": { - "line": 848, + "line": 847, "column": 42 } } @@ -129851,15 +129573,15 @@ "binop": null }, "value": "i", - "start": 29519, - "end": 29520, + "start": 29459, + "end": 29460, "loc": { "start": { - "line": 848, + "line": 847, "column": 43 }, "end": { - "line": 848, + "line": 847, "column": 44 } } @@ -129878,15 +129600,15 @@ "updateContext": null }, "value": "<", - "start": 29521, - "end": 29522, + "start": 29461, + "end": 29462, "loc": { "start": { - "line": 848, + "line": 847, "column": 45 }, "end": { - "line": 848, + "line": 847, "column": 46 } } @@ -129904,15 +129626,15 @@ "binop": null }, "value": "len", - "start": 29523, - "end": 29526, + "start": 29463, + "end": 29466, "loc": { "start": { - "line": 848, + "line": 847, "column": 47 }, "end": { - "line": 848, + "line": 847, "column": 50 } } @@ -129930,15 +129652,15 @@ "binop": null, "updateContext": null }, - "start": 29526, - "end": 29527, + "start": 29466, + "end": 29467, "loc": { "start": { - "line": 848, + "line": 847, "column": 50 }, "end": { - "line": 848, + "line": 847, "column": 51 } } @@ -129956,15 +129678,15 @@ "binop": null }, "value": "i", - "start": 29528, - "end": 29529, + "start": 29468, + "end": 29469, "loc": { "start": { - "line": 848, + "line": 847, "column": 52 }, "end": { - "line": 848, + "line": 847, "column": 53 } } @@ -129982,15 +129704,15 @@ "binop": null }, "value": "++", - "start": 29529, - "end": 29531, + "start": 29469, + "end": 29471, "loc": { "start": { - "line": 848, + "line": 847, "column": 53 }, "end": { - "line": 848, + "line": 847, "column": 55 } } @@ -130007,15 +129729,15 @@ "postfix": false, "binop": null }, - "start": 29531, - "end": 29532, + "start": 29471, + "end": 29472, "loc": { "start": { - "line": 848, + "line": 847, "column": 55 }, "end": { - "line": 848, + "line": 847, "column": 56 } } @@ -130032,15 +129754,15 @@ "postfix": false, "binop": null }, - "start": 29533, - "end": 29534, + "start": 29473, + "end": 29474, "loc": { "start": { - "line": 848, + "line": 847, "column": 57 }, "end": { - "line": 848, + "line": 847, "column": 58 } } @@ -130060,15 +129782,15 @@ "updateContext": null }, "value": "const", - "start": 29547, - "end": 29552, + "start": 29487, + "end": 29492, "loc": { "start": { - "line": 849, + "line": 848, "column": 12 }, "end": { - "line": 849, + "line": 848, "column": 17 } } @@ -130086,15 +129808,15 @@ "binop": null }, "value": "key", - "start": 29553, - "end": 29556, + "start": 29493, + "end": 29496, "loc": { "start": { - "line": 849, + "line": 848, "column": 18 }, "end": { - "line": 849, + "line": 848, "column": 21 } } @@ -130113,15 +129835,15 @@ "updateContext": null }, "value": "=", - "start": 29557, - "end": 29558, + "start": 29497, + "end": 29498, "loc": { "start": { - "line": 849, + "line": 848, "column": 22 }, "end": { - "line": 849, + "line": 848, "column": 23 } } @@ -130139,15 +129861,15 @@ "binop": null }, "value": "keys", - "start": 29559, - "end": 29563, + "start": 29499, + "end": 29503, "loc": { "start": { - "line": 849, + "line": 848, "column": 24 }, "end": { - "line": 849, + "line": 848, "column": 28 } } @@ -130165,15 +129887,15 @@ "binop": null, "updateContext": null }, - "start": 29563, - "end": 29564, + "start": 29503, + "end": 29504, "loc": { "start": { - "line": 849, + "line": 848, "column": 28 }, "end": { - "line": 849, + "line": 848, "column": 29 } } @@ -130191,13 +129913,196 @@ "binop": null }, "value": "i", - "start": 29564, - "end": 29565, + "start": 29504, + "end": 29505, "loc": { "start": { - "line": 849, + "line": 848, "column": 29 }, + "end": { + "line": 848, + "column": 30 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 29505, + "end": 29506, + "loc": { + "start": { + "line": 848, + "column": 30 + }, + "end": { + "line": 848, + "column": 31 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 29506, + "end": 29507, + "loc": { + "start": { + "line": 848, + "column": 31 + }, + "end": { + "line": 848, + "column": 32 + } + } + }, + { + "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": 29520, + "end": 29522, + "loc": { + "start": { + "line": 849, + "column": 12 + }, + "end": { + "line": 849, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 29523, + "end": 29524, + "loc": { + "start": { + "line": 849, + "column": 15 + }, + "end": { + "line": 849, + "column": 16 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "keyDownMap", + "start": 29524, + "end": 29534, + "loc": { + "start": { + "line": 849, + "column": 16 + }, + "end": { + "line": 849, + "column": 26 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 29534, + "end": 29535, + "loc": { + "start": { + "line": 849, + "column": 26 + }, + "end": { + "line": 849, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "key", + "start": 29535, + "end": 29538, + "loc": { + "start": { + "line": 849, + "column": 27 + }, "end": { "line": 849, "column": 30 @@ -130217,8 +130122,8 @@ "binop": null, "updateContext": null }, - "start": 29565, - "end": 29566, + "start": 29538, + "end": 29539, "loc": { "start": { "line": 849, @@ -130230,189 +130135,6 @@ } } }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 29566, - "end": 29567, - "loc": { - "start": { - "line": 849, - "column": 31 - }, - "end": { - "line": 849, - "column": 32 - } - } - }, - { - "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": 29580, - "end": 29582, - "loc": { - "start": { - "line": 850, - "column": 12 - }, - "end": { - "line": 850, - "column": 14 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 29583, - "end": 29584, - "loc": { - "start": { - "line": 850, - "column": 15 - }, - "end": { - "line": 850, - "column": 16 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "keyDownMap", - "start": 29584, - "end": 29594, - "loc": { - "start": { - "line": 850, - "column": 16 - }, - "end": { - "line": 850, - "column": 26 - } - } - }, - { - "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 29594, - "end": 29595, - "loc": { - "start": { - "line": 850, - "column": 26 - }, - "end": { - "line": 850, - "column": 27 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "key", - "start": 29595, - "end": 29598, - "loc": { - "start": { - "line": 850, - "column": 27 - }, - "end": { - "line": 850, - "column": 30 - } - } - }, - { - "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 29598, - "end": 29599, - "loc": { - "start": { - "line": 850, - "column": 30 - }, - "end": { - "line": 850, - "column": 31 - } - } - }, { "type": { "label": ")", @@ -130425,15 +130147,15 @@ "postfix": false, "binop": null }, - "start": 29599, - "end": 29600, + "start": 29539, + "end": 29540, "loc": { "start": { - "line": 850, + "line": 849, "column": 31 }, "end": { - "line": 850, + "line": 849, "column": 32 } } @@ -130450,15 +130172,15 @@ "postfix": false, "binop": null }, - "start": 29601, - "end": 29602, + "start": 29541, + "end": 29542, "loc": { "start": { - "line": 850, + "line": 849, "column": 33 }, "end": { - "line": 850, + "line": 849, "column": 34 } } @@ -130478,15 +130200,15 @@ "updateContext": null }, "value": "return", - "start": 29619, - "end": 29625, + "start": 29559, + "end": 29565, "loc": { "start": { - "line": 851, + "line": 850, "column": 16 }, "end": { - "line": 851, + "line": 850, "column": 22 } } @@ -130506,15 +130228,15 @@ "updateContext": null }, "value": "true", - "start": 29626, - "end": 29630, + "start": 29566, + "end": 29570, "loc": { "start": { - "line": 851, + "line": 850, "column": 23 }, "end": { - "line": 851, + "line": 850, "column": 27 } } @@ -130532,15 +130254,15 @@ "binop": null, "updateContext": null }, - "start": 29630, - "end": 29631, + "start": 29570, + "end": 29571, "loc": { "start": { - "line": 851, + "line": 850, "column": 27 }, "end": { - "line": 851, + "line": 850, "column": 28 } } @@ -130557,15 +130279,15 @@ "postfix": false, "binop": null }, - "start": 29644, - "end": 29645, + "start": 29584, + "end": 29585, "loc": { "start": { - "line": 852, + "line": 851, "column": 12 }, "end": { - "line": 852, + "line": 851, "column": 13 } } @@ -130582,15 +130304,15 @@ "postfix": false, "binop": null }, - "start": 29654, - "end": 29655, + "start": 29594, + "end": 29595, "loc": { "start": { - "line": 853, + "line": 852, "column": 8 }, "end": { - "line": 853, + "line": 852, "column": 9 } } @@ -130610,15 +130332,15 @@ "updateContext": null }, "value": "return", - "start": 29664, - "end": 29670, + "start": 29604, + "end": 29610, "loc": { "start": { - "line": 854, + "line": 853, "column": 8 }, "end": { - "line": 854, + "line": 853, "column": 14 } } @@ -130638,15 +130360,15 @@ "updateContext": null }, "value": "false", - "start": 29671, - "end": 29676, + "start": 29611, + "end": 29616, "loc": { "start": { - "line": 854, + "line": 853, "column": 15 }, "end": { - "line": 854, + "line": 853, "column": 20 } } @@ -130664,15 +130386,15 @@ "binop": null, "updateContext": null }, - "start": 29676, - "end": 29677, + "start": 29616, + "end": 29617, "loc": { "start": { - "line": 854, + "line": 853, "column": 20 }, "end": { - "line": 854, + "line": 853, "column": 21 } } @@ -130689,15 +130411,15 @@ "postfix": false, "binop": null }, - "start": 29682, - "end": 29683, + "start": 29622, + "end": 29623, "loc": { "start": { - "line": 855, + "line": 854, "column": 4 }, "end": { - "line": 855, + "line": 854, "column": 5 } } @@ -130705,15 +130427,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 29689, - "end": 29943, + "start": 29629, + "end": 29883, "loc": { "start": { - "line": 857, + "line": 856, "column": 4 }, "end": { - "line": 863, + "line": 862, "column": 7 } } @@ -130731,15 +130453,15 @@ "binop": null }, "value": "set", - "start": 29948, - "end": 29951, + "start": 29888, + "end": 29891, "loc": { "start": { - "line": 864, + "line": 863, "column": 4 }, "end": { - "line": 864, + "line": 863, "column": 7 } } @@ -130757,15 +130479,15 @@ "binop": null }, "value": "pivotElement", - "start": 29952, - "end": 29964, + "start": 29892, + "end": 29904, "loc": { "start": { - "line": 864, + "line": 863, "column": 8 }, "end": { - "line": 864, + "line": 863, "column": 20 } } @@ -130782,15 +130504,15 @@ "postfix": false, "binop": null }, - "start": 29964, - "end": 29965, + "start": 29904, + "end": 29905, "loc": { "start": { - "line": 864, + "line": 863, "column": 20 }, "end": { - "line": 864, + "line": 863, "column": 21 } } @@ -130808,15 +130530,15 @@ "binop": null }, "value": "element", - "start": 29965, - "end": 29972, + "start": 29905, + "end": 29912, "loc": { "start": { - "line": 864, + "line": 863, "column": 21 }, "end": { - "line": 864, + "line": 863, "column": 28 } } @@ -130833,15 +130555,15 @@ "postfix": false, "binop": null }, - "start": 29972, - "end": 29973, + "start": 29912, + "end": 29913, "loc": { "start": { - "line": 864, + "line": 863, "column": 28 }, "end": { - "line": 864, + "line": 863, "column": 29 } } @@ -130858,15 +130580,15 @@ "postfix": false, "binop": null }, - "start": 29974, - "end": 29975, + "start": 29914, + "end": 29915, "loc": { "start": { - "line": 864, + "line": 863, "column": 30 }, "end": { - "line": 864, + "line": 863, "column": 31 } } @@ -130886,15 +130608,15 @@ "updateContext": null }, "value": "this", - "start": 29984, - "end": 29988, + "start": 29924, + "end": 29928, "loc": { "start": { - "line": 865, + "line": 864, "column": 8 }, "end": { - "line": 865, + "line": 864, "column": 12 } } @@ -130912,15 +130634,15 @@ "binop": null, "updateContext": null }, - "start": 29988, - "end": 29989, + "start": 29928, + "end": 29929, "loc": { "start": { - "line": 865, + "line": 864, "column": 12 }, "end": { - "line": 865, + "line": 864, "column": 13 } } @@ -130938,15 +130660,15 @@ "binop": null }, "value": "_controllers", - "start": 29989, - "end": 30001, + "start": 29929, + "end": 29941, "loc": { "start": { - "line": 865, + "line": 864, "column": 13 }, "end": { - "line": 865, + "line": 864, "column": 25 } } @@ -130964,15 +130686,15 @@ "binop": null, "updateContext": null }, - "start": 30001, - "end": 30002, + "start": 29941, + "end": 29942, "loc": { "start": { - "line": 865, + "line": 864, "column": 25 }, "end": { - "line": 865, + "line": 864, "column": 26 } } @@ -130990,15 +130712,15 @@ "binop": null }, "value": "pivotController", - "start": 30002, - "end": 30017, + "start": 29942, + "end": 29957, "loc": { "start": { - "line": 865, + "line": 864, "column": 26 }, "end": { - "line": 865, + "line": 864, "column": 41 } } @@ -131016,15 +130738,15 @@ "binop": null, "updateContext": null }, - "start": 30017, - "end": 30018, + "start": 29957, + "end": 29958, "loc": { "start": { - "line": 865, + "line": 864, "column": 41 }, "end": { - "line": 865, + "line": 864, "column": 42 } } @@ -131042,15 +130764,15 @@ "binop": null }, "value": "setPivotElement", - "start": 30018, - "end": 30033, + "start": 29958, + "end": 29973, "loc": { "start": { - "line": 865, + "line": 864, "column": 42 }, "end": { - "line": 865, + "line": 864, "column": 57 } } @@ -131067,15 +130789,15 @@ "postfix": false, "binop": null }, - "start": 30033, - "end": 30034, + "start": 29973, + "end": 29974, "loc": { "start": { - "line": 865, + "line": 864, "column": 57 }, "end": { - "line": 865, + "line": 864, "column": 58 } } @@ -131093,15 +130815,15 @@ "binop": null }, "value": "element", - "start": 30034, - "end": 30041, + "start": 29974, + "end": 29981, "loc": { "start": { - "line": 865, + "line": 864, "column": 58 }, "end": { - "line": 865, + "line": 864, "column": 65 } } @@ -131118,15 +130840,15 @@ "postfix": false, "binop": null }, - "start": 30041, - "end": 30042, + "start": 29981, + "end": 29982, "loc": { "start": { - "line": 865, + "line": 864, "column": 65 }, "end": { - "line": 865, + "line": 864, "column": 66 } } @@ -131144,15 +130866,15 @@ "binop": null, "updateContext": null }, - "start": 30042, - "end": 30043, + "start": 29982, + "end": 29983, "loc": { "start": { - "line": 865, + "line": 864, "column": 66 }, "end": { - "line": 865, + "line": 864, "column": 67 } } @@ -131169,15 +130891,15 @@ "postfix": false, "binop": null }, - "start": 30048, - "end": 30049, + "start": 29988, + "end": 29989, "loc": { "start": { - "line": 866, + "line": 865, "column": 4 }, "end": { - "line": 866, + "line": 865, "column": 5 } } @@ -131185,15 +130907,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30055, - "end": 30340, + "start": 29995, + "end": 30280, "loc": { "start": { - "line": 868, + "line": 867, "column": 4 }, "end": { - "line": 876, + "line": 875, "column": 7 } } @@ -131211,15 +130933,15 @@ "binop": null }, "value": "set", - "start": 30345, - "end": 30348, + "start": 30285, + "end": 30288, "loc": { "start": { - "line": 877, + "line": 876, "column": 4 }, "end": { - "line": 877, + "line": 876, "column": 7 } } @@ -131237,15 +130959,15 @@ "binop": null }, "value": "active", - "start": 30349, - "end": 30355, + "start": 30289, + "end": 30295, "loc": { "start": { - "line": 877, + "line": 876, "column": 8 }, "end": { - "line": 877, + "line": 876, "column": 14 } } @@ -131262,15 +130984,15 @@ "postfix": false, "binop": null }, - "start": 30355, - "end": 30356, + "start": 30295, + "end": 30296, "loc": { "start": { - "line": 877, + "line": 876, "column": 14 }, "end": { - "line": 877, + "line": 876, "column": 15 } } @@ -131288,15 +131010,15 @@ "binop": null }, "value": "value", - "start": 30356, - "end": 30361, + "start": 30296, + "end": 30301, "loc": { "start": { - "line": 877, + "line": 876, "column": 15 }, "end": { - "line": 877, + "line": 876, "column": 20 } } @@ -131313,15 +131035,15 @@ "postfix": false, "binop": null }, - "start": 30361, - "end": 30362, + "start": 30301, + "end": 30302, "loc": { "start": { - "line": 877, + "line": 876, "column": 20 }, "end": { - "line": 877, + "line": 876, "column": 21 } } @@ -131338,15 +131060,15 @@ "postfix": false, "binop": null }, - "start": 30363, - "end": 30364, + "start": 30303, + "end": 30304, "loc": { "start": { - "line": 877, + "line": 876, "column": 22 }, "end": { - "line": 877, + "line": 876, "column": 23 } } @@ -131366,15 +131088,15 @@ "updateContext": null }, "value": "this", - "start": 30373, - "end": 30377, + "start": 30313, + "end": 30317, "loc": { "start": { - "line": 878, + "line": 877, "column": 8 }, "end": { - "line": 878, + "line": 877, "column": 12 } } @@ -131392,15 +131114,15 @@ "binop": null, "updateContext": null }, - "start": 30377, - "end": 30378, + "start": 30317, + "end": 30318, "loc": { "start": { - "line": 878, + "line": 877, "column": 12 }, "end": { - "line": 878, + "line": 877, "column": 13 } } @@ -131418,15 +131140,15 @@ "binop": null }, "value": "_configs", - "start": 30378, - "end": 30386, + "start": 30318, + "end": 30326, "loc": { "start": { - "line": 878, + "line": 877, "column": 13 }, "end": { - "line": 878, + "line": 877, "column": 21 } } @@ -131444,15 +131166,15 @@ "binop": null, "updateContext": null }, - "start": 30386, - "end": 30387, + "start": 30326, + "end": 30327, "loc": { "start": { - "line": 878, + "line": 877, "column": 21 }, "end": { - "line": 878, + "line": 877, "column": 22 } } @@ -131470,15 +131192,15 @@ "binop": null }, "value": "active", - "start": 30387, - "end": 30393, + "start": 30327, + "end": 30333, "loc": { "start": { - "line": 878, + "line": 877, "column": 22 }, "end": { - "line": 878, + "line": 877, "column": 28 } } @@ -131497,15 +131219,15 @@ "updateContext": null }, "value": "=", - "start": 30394, - "end": 30395, + "start": 30334, + "end": 30335, "loc": { "start": { - "line": 878, + "line": 877, "column": 29 }, "end": { - "line": 878, + "line": 877, "column": 30 } } @@ -131523,15 +131245,15 @@ "binop": null }, "value": "value", - "start": 30396, - "end": 30401, + "start": 30336, + "end": 30341, "loc": { "start": { - "line": 878, + "line": 877, "column": 31 }, "end": { - "line": 878, + "line": 877, "column": 36 } } @@ -131550,15 +131272,15 @@ "updateContext": null }, "value": "!==", - "start": 30402, - "end": 30405, + "start": 30342, + "end": 30345, "loc": { "start": { - "line": 878, + "line": 877, "column": 37 }, "end": { - "line": 878, + "line": 877, "column": 40 } } @@ -131578,15 +131300,15 @@ "updateContext": null }, "value": "false", - "start": 30406, - "end": 30411, + "start": 30346, + "end": 30351, "loc": { "start": { - "line": 878, + "line": 877, "column": 41 }, "end": { - "line": 878, + "line": 877, "column": 46 } } @@ -131604,15 +131326,15 @@ "binop": null, "updateContext": null }, - "start": 30411, - "end": 30412, + "start": 30351, + "end": 30352, "loc": { "start": { - "line": 878, + "line": 877, "column": 46 }, "end": { - "line": 878, + "line": 877, "column": 47 } } @@ -131629,15 +131351,15 @@ "postfix": false, "binop": null }, - "start": 30417, - "end": 30418, + "start": 30357, + "end": 30358, "loc": { "start": { - "line": 879, + "line": 878, "column": 4 }, "end": { - "line": 879, + "line": 878, "column": 5 } } @@ -131645,15 +131367,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30424, - "end": 30709, + "start": 30364, + "end": 30649, "loc": { "start": { - "line": 881, + "line": 880, "column": 4 }, "end": { - "line": 889, + "line": 888, "column": 7 } } @@ -131671,15 +131393,15 @@ "binop": null }, "value": "get", - "start": 30714, - "end": 30717, + "start": 30654, + "end": 30657, "loc": { "start": { - "line": 890, + "line": 889, "column": 4 }, "end": { - "line": 890, + "line": 889, "column": 7 } } @@ -131697,15 +131419,15 @@ "binop": null }, "value": "active", - "start": 30718, - "end": 30724, + "start": 30658, + "end": 30664, "loc": { "start": { - "line": 890, + "line": 889, "column": 8 }, "end": { - "line": 890, + "line": 889, "column": 14 } } @@ -131722,15 +131444,15 @@ "postfix": false, "binop": null }, - "start": 30724, - "end": 30725, + "start": 30664, + "end": 30665, "loc": { "start": { - "line": 890, + "line": 889, "column": 14 }, "end": { - "line": 890, + "line": 889, "column": 15 } } @@ -131747,15 +131469,15 @@ "postfix": false, "binop": null }, - "start": 30725, - "end": 30726, + "start": 30665, + "end": 30666, "loc": { "start": { - "line": 890, + "line": 889, "column": 15 }, "end": { - "line": 890, + "line": 889, "column": 16 } } @@ -131772,15 +131494,15 @@ "postfix": false, "binop": null }, - "start": 30727, - "end": 30728, + "start": 30667, + "end": 30668, "loc": { "start": { - "line": 890, + "line": 889, "column": 17 }, "end": { - "line": 890, + "line": 889, "column": 18 } } @@ -131800,15 +131522,15 @@ "updateContext": null }, "value": "return", - "start": 30737, - "end": 30743, + "start": 30677, + "end": 30683, "loc": { "start": { - "line": 891, + "line": 890, "column": 8 }, "end": { - "line": 891, + "line": 890, "column": 14 } } @@ -131828,15 +131550,15 @@ "updateContext": null }, "value": "this", - "start": 30744, - "end": 30748, + "start": 30684, + "end": 30688, "loc": { "start": { - "line": 891, + "line": 890, "column": 15 }, "end": { - "line": 891, + "line": 890, "column": 19 } } @@ -131854,15 +131576,15 @@ "binop": null, "updateContext": null }, - "start": 30748, - "end": 30749, + "start": 30688, + "end": 30689, "loc": { "start": { - "line": 891, + "line": 890, "column": 19 }, "end": { - "line": 891, + "line": 890, "column": 20 } } @@ -131880,15 +131602,15 @@ "binop": null }, "value": "_configs", - "start": 30749, - "end": 30757, + "start": 30689, + "end": 30697, "loc": { "start": { - "line": 891, + "line": 890, "column": 20 }, "end": { - "line": 891, + "line": 890, "column": 28 } } @@ -131906,15 +131628,15 @@ "binop": null, "updateContext": null }, - "start": 30757, - "end": 30758, + "start": 30697, + "end": 30698, "loc": { "start": { - "line": 891, + "line": 890, "column": 28 }, "end": { - "line": 891, + "line": 890, "column": 29 } } @@ -131932,15 +131654,15 @@ "binop": null }, "value": "active", - "start": 30758, - "end": 30764, + "start": 30698, + "end": 30704, "loc": { "start": { - "line": 891, + "line": 890, "column": 29 }, "end": { - "line": 891, + "line": 890, "column": 35 } } @@ -131958,15 +131680,15 @@ "binop": null, "updateContext": null }, - "start": 30764, - "end": 30765, + "start": 30704, + "end": 30705, "loc": { "start": { - "line": 891, + "line": 890, "column": 35 }, "end": { - "line": 891, + "line": 890, "column": 36 } } @@ -131983,15 +131705,15 @@ "postfix": false, "binop": null }, - "start": 30770, - "end": 30771, + "start": 30710, + "end": 30711, "loc": { "start": { - "line": 892, + "line": 891, "column": 4 }, "end": { - "line": 892, + "line": 891, "column": 5 } } @@ -131999,15 +131721,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 30777, - "end": 31205, + "start": 30717, + "end": 31145, "loc": { "start": { - "line": 894, + "line": 893, "column": 4 }, "end": { - "line": 906, + "line": 905, "column": 7 } } @@ -132025,15 +131747,15 @@ "binop": null }, "value": "set", - "start": 31210, - "end": 31213, + "start": 31150, + "end": 31153, "loc": { "start": { - "line": 907, + "line": 906, "column": 4 }, "end": { - "line": 907, + "line": 906, "column": 7 } } @@ -132051,15 +131773,15 @@ "binop": null }, "value": "navMode", - "start": 31214, - "end": 31221, + "start": 31154, + "end": 31161, "loc": { "start": { - "line": 907, + "line": 906, "column": 8 }, "end": { - "line": 907, + "line": 906, "column": 15 } } @@ -132076,15 +131798,15 @@ "postfix": false, "binop": null }, - "start": 31221, - "end": 31222, + "start": 31161, + "end": 31162, "loc": { "start": { - "line": 907, + "line": 906, "column": 15 }, "end": { - "line": 907, + "line": 906, "column": 16 } } @@ -132102,15 +131824,15 @@ "binop": null }, "value": "navMode", - "start": 31222, - "end": 31229, + "start": 31162, + "end": 31169, "loc": { "start": { - "line": 907, + "line": 906, "column": 16 }, "end": { - "line": 907, + "line": 906, "column": 23 } } @@ -132127,15 +131849,15 @@ "postfix": false, "binop": null }, - "start": 31229, - "end": 31230, + "start": 31169, + "end": 31170, "loc": { "start": { - "line": 907, + "line": 906, "column": 23 }, "end": { - "line": 907, + "line": 906, "column": 24 } } @@ -132152,15 +131874,15 @@ "postfix": false, "binop": null }, - "start": 31231, - "end": 31232, + "start": 31171, + "end": 31172, "loc": { "start": { - "line": 907, + "line": 906, "column": 25 }, "end": { - "line": 907, + "line": 906, "column": 26 } } @@ -132178,15 +131900,15 @@ "binop": null }, "value": "navMode", - "start": 31241, - "end": 31248, + "start": 31181, + "end": 31188, "loc": { "start": { - "line": 908, + "line": 907, "column": 8 }, "end": { - "line": 908, + "line": 907, "column": 15 } } @@ -132205,15 +131927,15 @@ "updateContext": null }, "value": "=", - "start": 31249, - "end": 31250, + "start": 31189, + "end": 31190, "loc": { "start": { - "line": 908, + "line": 907, "column": 16 }, "end": { - "line": 908, + "line": 907, "column": 17 } } @@ -132231,15 +131953,15 @@ "binop": null }, "value": "navMode", - "start": 31251, - "end": 31258, + "start": 31191, + "end": 31198, "loc": { "start": { - "line": 908, + "line": 907, "column": 18 }, "end": { - "line": 908, + "line": 907, "column": 25 } } @@ -132258,15 +131980,15 @@ "updateContext": null }, "value": "||", - "start": 31259, - "end": 31261, + "start": 31199, + "end": 31201, "loc": { "start": { - "line": 908, + "line": 907, "column": 26 }, "end": { - "line": 908, + "line": 907, "column": 28 } } @@ -132285,15 +132007,15 @@ "updateContext": null }, "value": "orbit", - "start": 31262, - "end": 31269, + "start": 31202, + "end": 31209, "loc": { "start": { - "line": 908, + "line": 907, "column": 29 }, "end": { - "line": 908, + "line": 907, "column": 36 } } @@ -132311,15 +132033,15 @@ "binop": null, "updateContext": null }, - "start": 31269, - "end": 31270, + "start": 31209, + "end": 31210, "loc": { "start": { - "line": 908, + "line": 907, "column": 36 }, "end": { - "line": 908, + "line": 907, "column": 37 } } @@ -132339,15 +132061,15 @@ "updateContext": null }, "value": "if", - "start": 31279, - "end": 31281, + "start": 31219, + "end": 31221, "loc": { "start": { - "line": 909, + "line": 908, "column": 8 }, "end": { - "line": 909, + "line": 908, "column": 10 } } @@ -132364,15 +132086,15 @@ "postfix": false, "binop": null }, - "start": 31282, - "end": 31283, + "start": 31222, + "end": 31223, "loc": { "start": { - "line": 909, + "line": 908, "column": 11 }, "end": { - "line": 909, + "line": 908, "column": 12 } } @@ -132390,15 +132112,15 @@ "binop": null }, "value": "navMode", - "start": 31283, - "end": 31290, + "start": 31223, + "end": 31230, "loc": { "start": { - "line": 909, + "line": 908, "column": 12 }, "end": { - "line": 909, + "line": 908, "column": 19 } } @@ -132417,15 +132139,15 @@ "updateContext": null }, "value": "!==", - "start": 31291, - "end": 31294, + "start": 31231, + "end": 31234, "loc": { "start": { - "line": 909, + "line": 908, "column": 20 }, "end": { - "line": 909, + "line": 908, "column": 23 } } @@ -132444,15 +132166,15 @@ "updateContext": null }, "value": "firstPerson", - "start": 31295, - "end": 31308, + "start": 31235, + "end": 31248, "loc": { "start": { - "line": 909, + "line": 908, "column": 24 }, "end": { - "line": 909, + "line": 908, "column": 37 } } @@ -132471,15 +132193,15 @@ "updateContext": null }, "value": "&&", - "start": 31309, - "end": 31311, + "start": 31249, + "end": 31251, "loc": { "start": { - "line": 909, + "line": 908, "column": 38 }, "end": { - "line": 909, + "line": 908, "column": 40 } } @@ -132497,15 +132219,15 @@ "binop": null }, "value": "navMode", - "start": 31312, - "end": 31319, + "start": 31252, + "end": 31259, "loc": { "start": { - "line": 909, + "line": 908, "column": 41 }, "end": { - "line": 909, + "line": 908, "column": 48 } } @@ -132524,15 +132246,15 @@ "updateContext": null }, "value": "!==", - "start": 31320, - "end": 31323, + "start": 31260, + "end": 31263, "loc": { "start": { - "line": 909, + "line": 908, "column": 49 }, "end": { - "line": 909, + "line": 908, "column": 52 } } @@ -132551,15 +132273,15 @@ "updateContext": null }, "value": "orbit", - "start": 31324, - "end": 31331, + "start": 31264, + "end": 31271, "loc": { "start": { - "line": 909, + "line": 908, "column": 53 }, "end": { - "line": 909, + "line": 908, "column": 60 } } @@ -132578,15 +132300,15 @@ "updateContext": null }, "value": "&&", - "start": 31332, - "end": 31334, + "start": 31272, + "end": 31274, "loc": { "start": { - "line": 909, + "line": 908, "column": 61 }, "end": { - "line": 909, + "line": 908, "column": 63 } } @@ -132604,15 +132326,15 @@ "binop": null }, "value": "navMode", - "start": 31335, - "end": 31342, + "start": 31275, + "end": 31282, "loc": { "start": { - "line": 909, + "line": 908, "column": 64 }, "end": { - "line": 909, + "line": 908, "column": 71 } } @@ -132631,15 +132353,15 @@ "updateContext": null }, "value": "!==", - "start": 31343, - "end": 31346, + "start": 31283, + "end": 31286, "loc": { "start": { - "line": 909, + "line": 908, "column": 72 }, "end": { - "line": 909, + "line": 908, "column": 75 } } @@ -132658,15 +132380,15 @@ "updateContext": null }, "value": "planView", - "start": 31347, - "end": 31357, + "start": 31287, + "end": 31297, "loc": { "start": { - "line": 909, + "line": 908, "column": 76 }, "end": { - "line": 909, + "line": 908, "column": 86 } } @@ -132683,15 +132405,15 @@ "postfix": false, "binop": null }, - "start": 31357, - "end": 31358, + "start": 31297, + "end": 31298, "loc": { "start": { - "line": 909, + "line": 908, "column": 86 }, "end": { - "line": 909, + "line": 908, "column": 87 } } @@ -132708,15 +132430,15 @@ "postfix": false, "binop": null }, - "start": 31359, - "end": 31360, + "start": 31299, + "end": 31300, "loc": { "start": { - "line": 909, + "line": 908, "column": 88 }, "end": { - "line": 909, + "line": 908, "column": 89 } } @@ -132736,15 +132458,15 @@ "updateContext": null }, "value": "this", - "start": 31373, - "end": 31377, + "start": 31313, + "end": 31317, "loc": { "start": { - "line": 910, + "line": 909, "column": 12 }, "end": { - "line": 910, + "line": 909, "column": 16 } } @@ -132762,15 +132484,15 @@ "binop": null, "updateContext": null }, - "start": 31377, - "end": 31378, + "start": 31317, + "end": 31318, "loc": { "start": { - "line": 910, + "line": 909, "column": 16 }, "end": { - "line": 910, + "line": 909, "column": 17 } } @@ -132788,15 +132510,15 @@ "binop": null }, "value": "error", - "start": 31378, - "end": 31383, + "start": 31318, + "end": 31323, "loc": { "start": { - "line": 910, + "line": 909, "column": 17 }, "end": { - "line": 910, + "line": 909, "column": 22 } } @@ -132813,15 +132535,15 @@ "postfix": false, "binop": null }, - "start": 31383, - "end": 31384, + "start": 31323, + "end": 31324, "loc": { "start": { - "line": 910, + "line": 909, "column": 22 }, "end": { - "line": 910, + "line": 909, "column": 23 } } @@ -132840,15 +132562,15 @@ "updateContext": null }, "value": "Unsupported value for navMode: ", - "start": 31384, - "end": 31417, + "start": 31324, + "end": 31357, "loc": { "start": { - "line": 910, + "line": 909, "column": 23 }, "end": { - "line": 910, + "line": 909, "column": 56 } } @@ -132867,15 +132589,15 @@ "updateContext": null }, "value": "+", - "start": 31418, - "end": 31419, + "start": 31358, + "end": 31359, "loc": { "start": { - "line": 910, + "line": 909, "column": 57 }, "end": { - "line": 910, + "line": 909, "column": 58 } } @@ -132893,15 +132615,15 @@ "binop": null }, "value": "navMode", - "start": 31420, - "end": 31427, + "start": 31360, + "end": 31367, "loc": { "start": { - "line": 910, + "line": 909, "column": 59 }, "end": { - "line": 910, + "line": 909, "column": 66 } } @@ -132920,15 +132642,15 @@ "updateContext": null }, "value": "+", - "start": 31428, - "end": 31429, + "start": 31368, + "end": 31369, "loc": { "start": { - "line": 910, + "line": 909, "column": 67 }, "end": { - "line": 910, + "line": 909, "column": 68 } } @@ -132947,15 +132669,15 @@ "updateContext": null }, "value": " - supported values are 'orbit', 'firstPerson' and 'planView' - defaulting to 'orbit'", - "start": 31430, - "end": 31517, + "start": 31370, + "end": 31457, "loc": { "start": { - "line": 910, + "line": 909, "column": 69 }, "end": { - "line": 910, + "line": 909, "column": 156 } } @@ -132972,15 +132694,15 @@ "postfix": false, "binop": null }, - "start": 31517, - "end": 31518, + "start": 31457, + "end": 31458, "loc": { "start": { - "line": 910, + "line": 909, "column": 156 }, "end": { - "line": 910, + "line": 909, "column": 157 } } @@ -132998,15 +132720,15 @@ "binop": null, "updateContext": null }, - "start": 31518, - "end": 31519, + "start": 31458, + "end": 31459, "loc": { "start": { - "line": 910, + "line": 909, "column": 157 }, "end": { - "line": 910, + "line": 909, "column": 158 } } @@ -133024,15 +132746,15 @@ "binop": null }, "value": "navMode", - "start": 31532, - "end": 31539, + "start": 31472, + "end": 31479, "loc": { "start": { - "line": 911, + "line": 910, "column": 12 }, "end": { - "line": 911, + "line": 910, "column": 19 } } @@ -133051,15 +132773,15 @@ "updateContext": null }, "value": "=", - "start": 31540, - "end": 31541, + "start": 31480, + "end": 31481, "loc": { "start": { - "line": 911, + "line": 910, "column": 20 }, "end": { - "line": 911, + "line": 910, "column": 21 } } @@ -133078,15 +132800,15 @@ "updateContext": null }, "value": "orbit", - "start": 31542, - "end": 31549, + "start": 31482, + "end": 31489, "loc": { "start": { - "line": 911, + "line": 910, "column": 22 }, "end": { - "line": 911, + "line": 910, "column": 29 } } @@ -133104,15 +132826,15 @@ "binop": null, "updateContext": null }, - "start": 31549, - "end": 31550, + "start": 31489, + "end": 31490, "loc": { "start": { - "line": 911, + "line": 910, "column": 29 }, "end": { - "line": 911, + "line": 910, "column": 30 } } @@ -133129,15 +132851,15 @@ "postfix": false, "binop": null }, - "start": 31559, - "end": 31560, + "start": 31499, + "end": 31500, "loc": { "start": { - "line": 912, + "line": 911, "column": 8 }, "end": { - "line": 912, + "line": 911, "column": 9 } } @@ -133157,15 +132879,15 @@ "updateContext": null }, "value": "this", - "start": 31569, - "end": 31573, + "start": 31509, + "end": 31513, "loc": { "start": { - "line": 913, + "line": 912, "column": 8 }, "end": { - "line": 913, + "line": 912, "column": 12 } } @@ -133183,15 +132905,15 @@ "binop": null, "updateContext": null }, - "start": 31573, - "end": 31574, + "start": 31513, + "end": 31514, "loc": { "start": { - "line": 913, + "line": 912, "column": 12 }, "end": { - "line": 913, + "line": 912, "column": 13 } } @@ -133209,15 +132931,15 @@ "binop": null }, "value": "_configs", - "start": 31574, - "end": 31582, + "start": 31514, + "end": 31522, "loc": { "start": { - "line": 913, + "line": 912, "column": 13 }, "end": { - "line": 913, + "line": 912, "column": 21 } } @@ -133235,15 +132957,15 @@ "binop": null, "updateContext": null }, - "start": 31582, - "end": 31583, + "start": 31522, + "end": 31523, "loc": { "start": { - "line": 913, + "line": 912, "column": 21 }, "end": { - "line": 913, + "line": 912, "column": 22 } } @@ -133261,15 +132983,15 @@ "binop": null }, "value": "firstPerson", - "start": 31583, - "end": 31594, + "start": 31523, + "end": 31534, "loc": { "start": { - "line": 913, + "line": 912, "column": 22 }, "end": { - "line": 913, + "line": 912, "column": 33 } } @@ -133288,15 +133010,15 @@ "updateContext": null }, "value": "=", - "start": 31595, - "end": 31596, + "start": 31535, + "end": 31536, "loc": { "start": { - "line": 913, + "line": 912, "column": 34 }, "end": { - "line": 913, + "line": 912, "column": 35 } } @@ -133313,15 +133035,15 @@ "postfix": false, "binop": null }, - "start": 31597, - "end": 31598, + "start": 31537, + "end": 31538, "loc": { "start": { - "line": 913, + "line": 912, "column": 36 }, "end": { - "line": 913, + "line": 912, "column": 37 } } @@ -133339,15 +133061,15 @@ "binop": null }, "value": "navMode", - "start": 31598, - "end": 31605, + "start": 31538, + "end": 31545, "loc": { "start": { - "line": 913, + "line": 912, "column": 37 }, "end": { - "line": 913, + "line": 912, "column": 44 } } @@ -133366,15 +133088,15 @@ "updateContext": null }, "value": "===", - "start": 31606, - "end": 31609, + "start": 31546, + "end": 31549, "loc": { "start": { - "line": 913, + "line": 912, "column": 45 }, "end": { - "line": 913, + "line": 912, "column": 48 } } @@ -133393,15 +133115,15 @@ "updateContext": null }, "value": "firstPerson", - "start": 31610, - "end": 31623, + "start": 31550, + "end": 31563, "loc": { "start": { - "line": 913, + "line": 912, "column": 49 }, "end": { - "line": 913, + "line": 912, "column": 62 } } @@ -133418,15 +133140,15 @@ "postfix": false, "binop": null }, - "start": 31623, - "end": 31624, + "start": 31563, + "end": 31564, "loc": { "start": { - "line": 913, + "line": 912, "column": 62 }, "end": { - "line": 913, + "line": 912, "column": 63 } } @@ -133444,15 +133166,15 @@ "binop": null, "updateContext": null }, - "start": 31624, - "end": 31625, + "start": 31564, + "end": 31565, "loc": { "start": { - "line": 913, + "line": 912, "column": 63 }, "end": { - "line": 913, + "line": 912, "column": 64 } } @@ -133472,15 +133194,15 @@ "updateContext": null }, "value": "this", - "start": 31634, - "end": 31638, + "start": 31574, + "end": 31578, "loc": { "start": { - "line": 914, + "line": 913, "column": 8 }, "end": { - "line": 914, + "line": 913, "column": 12 } } @@ -133498,15 +133220,15 @@ "binop": null, "updateContext": null }, - "start": 31638, - "end": 31639, + "start": 31578, + "end": 31579, "loc": { "start": { - "line": 914, + "line": 913, "column": 12 }, "end": { - "line": 914, + "line": 913, "column": 13 } } @@ -133524,15 +133246,15 @@ "binop": null }, "value": "_configs", - "start": 31639, - "end": 31647, + "start": 31579, + "end": 31587, "loc": { "start": { - "line": 914, + "line": 913, "column": 13 }, "end": { - "line": 914, + "line": 913, "column": 21 } } @@ -133550,15 +133272,15 @@ "binop": null, "updateContext": null }, - "start": 31647, - "end": 31648, + "start": 31587, + "end": 31588, "loc": { "start": { - "line": 914, + "line": 913, "column": 21 }, "end": { - "line": 914, + "line": 913, "column": 22 } } @@ -133576,15 +133298,15 @@ "binop": null }, "value": "planView", - "start": 31648, - "end": 31656, + "start": 31588, + "end": 31596, "loc": { "start": { - "line": 914, + "line": 913, "column": 22 }, "end": { - "line": 914, + "line": 913, "column": 30 } } @@ -133603,15 +133325,15 @@ "updateContext": null }, "value": "=", - "start": 31657, - "end": 31658, + "start": 31597, + "end": 31598, "loc": { "start": { - "line": 914, + "line": 913, "column": 31 }, "end": { - "line": 914, + "line": 913, "column": 32 } } @@ -133628,15 +133350,15 @@ "postfix": false, "binop": null }, - "start": 31659, - "end": 31660, + "start": 31599, + "end": 31600, "loc": { "start": { - "line": 914, + "line": 913, "column": 33 }, "end": { - "line": 914, + "line": 913, "column": 34 } } @@ -133654,15 +133376,15 @@ "binop": null }, "value": "navMode", - "start": 31660, - "end": 31667, + "start": 31600, + "end": 31607, "loc": { "start": { - "line": 914, + "line": 913, "column": 34 }, "end": { - "line": 914, + "line": 913, "column": 41 } } @@ -133681,15 +133403,15 @@ "updateContext": null }, "value": "===", - "start": 31668, - "end": 31671, + "start": 31608, + "end": 31611, "loc": { "start": { - "line": 914, + "line": 913, "column": 42 }, "end": { - "line": 914, + "line": 913, "column": 45 } } @@ -133708,15 +133430,15 @@ "updateContext": null }, "value": "planView", - "start": 31672, - "end": 31682, + "start": 31612, + "end": 31622, "loc": { "start": { - "line": 914, + "line": 913, "column": 46 }, "end": { - "line": 914, + "line": 913, "column": 56 } } @@ -133733,15 +133455,15 @@ "postfix": false, "binop": null }, - "start": 31682, - "end": 31683, + "start": 31622, + "end": 31623, "loc": { "start": { - "line": 914, + "line": 913, "column": 56 }, "end": { - "line": 914, + "line": 913, "column": 57 } } @@ -133759,15 +133481,15 @@ "binop": null, "updateContext": null }, - "start": 31683, - "end": 31684, + "start": 31623, + "end": 31624, "loc": { "start": { - "line": 914, + "line": 913, "column": 57 }, "end": { - "line": 914, + "line": 913, "column": 58 } } @@ -133787,15 +133509,15 @@ "updateContext": null }, "value": "if", - "start": 31693, - "end": 31695, + "start": 31633, + "end": 31635, "loc": { "start": { - "line": 915, + "line": 914, "column": 8 }, "end": { - "line": 915, + "line": 914, "column": 10 } } @@ -133812,15 +133534,15 @@ "postfix": false, "binop": null }, - "start": 31696, - "end": 31697, + "start": 31636, + "end": 31637, "loc": { "start": { - "line": 915, + "line": 914, "column": 11 }, "end": { - "line": 915, + "line": 914, "column": 12 } } @@ -133840,15 +133562,15 @@ "updateContext": null }, "value": "this", - "start": 31697, - "end": 31701, + "start": 31637, + "end": 31641, "loc": { "start": { - "line": 915, + "line": 914, "column": 12 }, "end": { - "line": 915, + "line": 914, "column": 16 } } @@ -133866,15 +133588,15 @@ "binop": null, "updateContext": null }, - "start": 31701, - "end": 31702, + "start": 31641, + "end": 31642, "loc": { "start": { - "line": 915, + "line": 914, "column": 16 }, "end": { - "line": 915, + "line": 914, "column": 17 } } @@ -133892,15 +133614,15 @@ "binop": null }, "value": "_configs", - "start": 31702, - "end": 31710, + "start": 31642, + "end": 31650, "loc": { "start": { - "line": 915, + "line": 914, "column": 17 }, "end": { - "line": 915, + "line": 914, "column": 25 } } @@ -133918,15 +133640,15 @@ "binop": null, "updateContext": null }, - "start": 31710, - "end": 31711, + "start": 31650, + "end": 31651, "loc": { "start": { - "line": 915, + "line": 914, "column": 25 }, "end": { - "line": 915, + "line": 914, "column": 26 } } @@ -133944,15 +133666,15 @@ "binop": null }, "value": "firstPerson", - "start": 31711, - "end": 31722, + "start": 31651, + "end": 31662, "loc": { "start": { - "line": 915, + "line": 914, "column": 26 }, "end": { - "line": 915, + "line": 914, "column": 37 } } @@ -133971,15 +133693,15 @@ "updateContext": null }, "value": "||", - "start": 31723, - "end": 31725, + "start": 31663, + "end": 31665, "loc": { "start": { - "line": 915, + "line": 914, "column": 38 }, "end": { - "line": 915, + "line": 914, "column": 40 } } @@ -133999,15 +133721,15 @@ "updateContext": null }, "value": "this", - "start": 31726, - "end": 31730, + "start": 31666, + "end": 31670, "loc": { "start": { - "line": 915, + "line": 914, "column": 41 }, "end": { - "line": 915, + "line": 914, "column": 45 } } @@ -134025,15 +133747,15 @@ "binop": null, "updateContext": null }, - "start": 31730, - "end": 31731, + "start": 31670, + "end": 31671, "loc": { "start": { - "line": 915, + "line": 914, "column": 45 }, "end": { - "line": 915, + "line": 914, "column": 46 } } @@ -134051,15 +133773,15 @@ "binop": null }, "value": "_configs", - "start": 31731, - "end": 31739, + "start": 31671, + "end": 31679, "loc": { "start": { - "line": 915, + "line": 914, "column": 46 }, "end": { - "line": 915, + "line": 914, "column": 54 } } @@ -134077,15 +133799,15 @@ "binop": null, "updateContext": null }, - "start": 31739, - "end": 31740, + "start": 31679, + "end": 31680, "loc": { "start": { - "line": 915, + "line": 914, "column": 54 }, "end": { - "line": 915, + "line": 914, "column": 55 } } @@ -134103,15 +133825,15 @@ "binop": null }, "value": "planView", - "start": 31740, - "end": 31748, + "start": 31680, + "end": 31688, "loc": { "start": { - "line": 915, + "line": 914, "column": 55 }, "end": { - "line": 915, + "line": 914, "column": 63 } } @@ -134128,15 +133850,15 @@ "postfix": false, "binop": null }, - "start": 31748, - "end": 31749, + "start": 31688, + "end": 31689, "loc": { "start": { - "line": 915, + "line": 914, "column": 63 }, "end": { - "line": 915, + "line": 914, "column": 64 } } @@ -134153,15 +133875,15 @@ "postfix": false, "binop": null }, - "start": 31750, - "end": 31751, + "start": 31690, + "end": 31691, "loc": { "start": { - "line": 915, + "line": 914, "column": 65 }, "end": { - "line": 915, + "line": 914, "column": 66 } } @@ -134181,15 +133903,15 @@ "updateContext": null }, "value": "this", - "start": 31764, - "end": 31768, + "start": 31704, + "end": 31708, "loc": { "start": { - "line": 916, + "line": 915, "column": 12 }, "end": { - "line": 916, + "line": 915, "column": 16 } } @@ -134207,15 +133929,15 @@ "binop": null, "updateContext": null }, - "start": 31768, - "end": 31769, + "start": 31708, + "end": 31709, "loc": { "start": { - "line": 916, + "line": 915, "column": 16 }, "end": { - "line": 916, + "line": 915, "column": 17 } } @@ -134233,15 +133955,15 @@ "binop": null }, "value": "_controllers", - "start": 31769, - "end": 31781, + "start": 31709, + "end": 31721, "loc": { "start": { - "line": 916, + "line": 915, "column": 17 }, "end": { - "line": 916, + "line": 915, "column": 29 } } @@ -134259,15 +133981,15 @@ "binop": null, "updateContext": null }, - "start": 31781, - "end": 31782, + "start": 31721, + "end": 31722, "loc": { "start": { - "line": 916, + "line": 915, "column": 29 }, "end": { - "line": 916, + "line": 915, "column": 30 } } @@ -134285,15 +134007,15 @@ "binop": null }, "value": "pivotController", - "start": 31782, - "end": 31797, + "start": 31722, + "end": 31737, "loc": { "start": { - "line": 916, + "line": 915, "column": 30 }, "end": { - "line": 916, + "line": 915, "column": 45 } } @@ -134311,15 +134033,15 @@ "binop": null, "updateContext": null }, - "start": 31797, - "end": 31798, + "start": 31737, + "end": 31738, "loc": { "start": { - "line": 916, + "line": 915, "column": 45 }, "end": { - "line": 916, + "line": 915, "column": 46 } } @@ -134337,15 +134059,15 @@ "binop": null }, "value": "hidePivot", - "start": 31798, - "end": 31807, + "start": 31738, + "end": 31747, "loc": { "start": { - "line": 916, + "line": 915, "column": 46 }, "end": { - "line": 916, + "line": 915, "column": 55 } } @@ -134362,15 +134084,15 @@ "postfix": false, "binop": null }, - "start": 31807, - "end": 31808, + "start": 31747, + "end": 31748, "loc": { "start": { - "line": 916, + "line": 915, "column": 55 }, "end": { - "line": 916, + "line": 915, "column": 56 } } @@ -134387,15 +134109,15 @@ "postfix": false, "binop": null }, - "start": 31808, - "end": 31809, + "start": 31748, + "end": 31749, "loc": { "start": { - "line": 916, + "line": 915, "column": 56 }, "end": { - "line": 916, + "line": 915, "column": 57 } } @@ -134413,15 +134135,15 @@ "binop": null, "updateContext": null }, - "start": 31809, - "end": 31810, + "start": 31749, + "end": 31750, "loc": { "start": { - "line": 916, + "line": 915, "column": 57 }, "end": { - "line": 916, + "line": 915, "column": 58 } } @@ -134441,15 +134163,15 @@ "updateContext": null }, "value": "this", - "start": 31823, - "end": 31827, + "start": 31763, + "end": 31767, "loc": { "start": { - "line": 917, + "line": 916, "column": 12 }, "end": { - "line": 917, + "line": 916, "column": 16 } } @@ -134467,15 +134189,15 @@ "binop": null, "updateContext": null }, - "start": 31827, - "end": 31828, + "start": 31767, + "end": 31768, "loc": { "start": { - "line": 917, + "line": 916, "column": 16 }, "end": { - "line": 917, + "line": 916, "column": 17 } } @@ -134493,15 +134215,15 @@ "binop": null }, "value": "_controllers", - "start": 31828, - "end": 31840, + "start": 31768, + "end": 31780, "loc": { "start": { - "line": 917, + "line": 916, "column": 17 }, "end": { - "line": 917, + "line": 916, "column": 29 } } @@ -134519,15 +134241,15 @@ "binop": null, "updateContext": null }, - "start": 31840, - "end": 31841, + "start": 31780, + "end": 31781, "loc": { "start": { - "line": 917, + "line": 916, "column": 29 }, "end": { - "line": 917, + "line": 916, "column": 30 } } @@ -134545,15 +134267,15 @@ "binop": null }, "value": "pivotController", - "start": 31841, - "end": 31856, + "start": 31781, + "end": 31796, "loc": { "start": { - "line": 917, + "line": 916, "column": 30 }, "end": { - "line": 917, + "line": 916, "column": 45 } } @@ -134571,15 +134293,15 @@ "binop": null, "updateContext": null }, - "start": 31856, - "end": 31857, + "start": 31796, + "end": 31797, "loc": { "start": { - "line": 917, + "line": 916, "column": 45 }, "end": { - "line": 917, + "line": 916, "column": 46 } } @@ -134597,15 +134319,15 @@ "binop": null }, "value": "endPivot", - "start": 31857, - "end": 31865, + "start": 31797, + "end": 31805, "loc": { "start": { - "line": 917, + "line": 916, "column": 46 }, "end": { - "line": 917, + "line": 916, "column": 54 } } @@ -134622,15 +134344,15 @@ "postfix": false, "binop": null }, - "start": 31865, - "end": 31866, + "start": 31805, + "end": 31806, "loc": { "start": { - "line": 917, + "line": 916, "column": 54 }, "end": { - "line": 917, + "line": 916, "column": 55 } } @@ -134647,15 +134369,15 @@ "postfix": false, "binop": null }, - "start": 31866, - "end": 31867, + "start": 31806, + "end": 31807, "loc": { "start": { - "line": 917, + "line": 916, "column": 55 }, "end": { - "line": 917, + "line": 916, "column": 56 } } @@ -134673,15 +134395,15 @@ "binop": null, "updateContext": null }, - "start": 31867, - "end": 31868, + "start": 31807, + "end": 31808, "loc": { "start": { - "line": 917, + "line": 916, "column": 56 }, "end": { - "line": 917, + "line": 916, "column": 57 } } @@ -134698,15 +134420,15 @@ "postfix": false, "binop": null }, - "start": 31877, - "end": 31878, + "start": 31817, + "end": 31818, "loc": { "start": { - "line": 918, + "line": 917, "column": 8 }, "end": { - "line": 918, + "line": 917, "column": 9 } } @@ -134726,15 +134448,15 @@ "updateContext": null }, "value": "this", - "start": 31887, - "end": 31891, + "start": 31827, + "end": 31831, "loc": { "start": { - "line": 919, + "line": 918, "column": 8 }, "end": { - "line": 919, + "line": 918, "column": 12 } } @@ -134752,15 +134474,15 @@ "binop": null, "updateContext": null }, - "start": 31891, - "end": 31892, + "start": 31831, + "end": 31832, "loc": { "start": { - "line": 919, + "line": 918, "column": 12 }, "end": { - "line": 919, + "line": 918, "column": 13 } } @@ -134778,15 +134500,15 @@ "binop": null }, "value": "_configs", - "start": 31892, - "end": 31900, + "start": 31832, + "end": 31840, "loc": { "start": { - "line": 919, + "line": 918, "column": 13 }, "end": { - "line": 919, + "line": 918, "column": 21 } } @@ -134804,15 +134526,15 @@ "binop": null, "updateContext": null }, - "start": 31900, - "end": 31901, + "start": 31840, + "end": 31841, "loc": { "start": { - "line": 919, + "line": 918, "column": 21 }, "end": { - "line": 919, + "line": 918, "column": 22 } } @@ -134830,15 +134552,15 @@ "binop": null }, "value": "navMode", - "start": 31901, - "end": 31908, + "start": 31841, + "end": 31848, "loc": { "start": { - "line": 919, + "line": 918, "column": 22 }, "end": { - "line": 919, + "line": 918, "column": 29 } } @@ -134857,15 +134579,15 @@ "updateContext": null }, "value": "=", - "start": 31909, - "end": 31910, + "start": 31849, + "end": 31850, "loc": { "start": { - "line": 919, + "line": 918, "column": 30 }, "end": { - "line": 919, + "line": 918, "column": 31 } } @@ -134883,15 +134605,15 @@ "binop": null }, "value": "navMode", - "start": 31911, - "end": 31918, + "start": 31851, + "end": 31858, "loc": { "start": { - "line": 919, + "line": 918, "column": 32 }, "end": { - "line": 919, + "line": 918, "column": 39 } } @@ -134909,15 +134631,15 @@ "binop": null, "updateContext": null }, - "start": 31918, - "end": 31919, + "start": 31858, + "end": 31859, "loc": { "start": { - "line": 919, + "line": 918, "column": 39 }, "end": { - "line": 919, + "line": 918, "column": 40 } } @@ -134934,15 +134656,15 @@ "postfix": false, "binop": null }, - "start": 31924, - "end": 31925, + "start": 31864, + "end": 31865, "loc": { "start": { - "line": 920, + "line": 919, "column": 4 }, "end": { - "line": 920, + "line": 919, "column": 5 } } @@ -134950,15 +134672,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the current navigation mode.\n *\n * @returns {String} The navigation mode: \"orbit\", \"firstPerson\" or \"planView\".\n ", - "start": 31931, - "end": 32074, + "start": 31871, + "end": 32014, "loc": { "start": { - "line": 922, + "line": 921, "column": 4 }, "end": { - "line": 926, + "line": 925, "column": 7 } } @@ -134976,15 +134698,15 @@ "binop": null }, "value": "get", - "start": 32079, - "end": 32082, + "start": 32019, + "end": 32022, "loc": { "start": { - "line": 927, + "line": 926, "column": 4 }, "end": { - "line": 927, + "line": 926, "column": 7 } } @@ -135002,15 +134724,15 @@ "binop": null }, "value": "navMode", - "start": 32083, - "end": 32090, + "start": 32023, + "end": 32030, "loc": { "start": { - "line": 927, + "line": 926, "column": 8 }, "end": { - "line": 927, + "line": 926, "column": 15 } } @@ -135027,15 +134749,15 @@ "postfix": false, "binop": null }, - "start": 32090, - "end": 32091, + "start": 32030, + "end": 32031, "loc": { "start": { - "line": 927, + "line": 926, "column": 15 }, "end": { - "line": 927, + "line": 926, "column": 16 } } @@ -135052,15 +134774,15 @@ "postfix": false, "binop": null }, - "start": 32091, - "end": 32092, + "start": 32031, + "end": 32032, "loc": { "start": { - "line": 927, + "line": 926, "column": 16 }, "end": { - "line": 927, + "line": 926, "column": 17 } } @@ -135077,15 +134799,15 @@ "postfix": false, "binop": null }, - "start": 32093, - "end": 32094, + "start": 32033, + "end": 32034, "loc": { "start": { - "line": 927, + "line": 926, "column": 18 }, "end": { - "line": 927, + "line": 926, "column": 19 } } @@ -135105,15 +134827,15 @@ "updateContext": null }, "value": "return", - "start": 32103, - "end": 32109, + "start": 32043, + "end": 32049, "loc": { "start": { - "line": 928, + "line": 927, "column": 8 }, "end": { - "line": 928, + "line": 927, "column": 14 } } @@ -135133,15 +134855,15 @@ "updateContext": null }, "value": "this", - "start": 32110, - "end": 32114, + "start": 32050, + "end": 32054, "loc": { "start": { - "line": 928, + "line": 927, "column": 15 }, "end": { - "line": 928, + "line": 927, "column": 19 } } @@ -135159,15 +134881,15 @@ "binop": null, "updateContext": null }, - "start": 32114, - "end": 32115, + "start": 32054, + "end": 32055, "loc": { "start": { - "line": 928, + "line": 927, "column": 19 }, "end": { - "line": 928, + "line": 927, "column": 20 } } @@ -135185,15 +134907,15 @@ "binop": null }, "value": "_configs", - "start": 32115, - "end": 32123, + "start": 32055, + "end": 32063, "loc": { "start": { - "line": 928, + "line": 927, "column": 20 }, "end": { - "line": 928, + "line": 927, "column": 28 } } @@ -135211,15 +134933,15 @@ "binop": null, "updateContext": null }, - "start": 32123, - "end": 32124, + "start": 32063, + "end": 32064, "loc": { "start": { - "line": 928, + "line": 927, "column": 28 }, "end": { - "line": 928, + "line": 927, "column": 29 } } @@ -135237,15 +134959,15 @@ "binop": null }, "value": "navMode", - "start": 32124, - "end": 32131, + "start": 32064, + "end": 32071, "loc": { "start": { - "line": 928, + "line": 927, "column": 29 }, "end": { - "line": 928, + "line": 927, "column": 36 } } @@ -135263,15 +134985,15 @@ "binop": null, "updateContext": null }, - "start": 32131, - "end": 32132, + "start": 32071, + "end": 32072, "loc": { "start": { - "line": 928, + "line": 927, "column": 36 }, "end": { - "line": 928, + "line": 927, "column": 37 } } @@ -135288,15 +135010,15 @@ "postfix": false, "binop": null }, - "start": 32137, - "end": 32138, + "start": 32077, + "end": 32078, "loc": { "start": { - "line": 929, + "line": 928, "column": 4 }, "end": { - "line": 929, + "line": 928, "column": 5 } } @@ -135304,15 +135026,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 32144, - "end": 32555, + "start": 32084, + "end": 32495, "loc": { "start": { - "line": 931, + "line": 930, "column": 4 }, "end": { - "line": 940, + "line": 939, "column": 7 } } @@ -135330,15 +135052,15 @@ "binop": null }, "value": "set", - "start": 32560, - "end": 32563, + "start": 32500, + "end": 32503, "loc": { "start": { - "line": 941, + "line": 940, "column": 4 }, "end": { - "line": 941, + "line": 940, "column": 7 } } @@ -135356,15 +135078,15 @@ "binop": null }, "value": "pointerEnabled", - "start": 32564, - "end": 32578, + "start": 32504, + "end": 32518, "loc": { "start": { - "line": 941, + "line": 940, "column": 8 }, "end": { - "line": 941, + "line": 940, "column": 22 } } @@ -135381,15 +135103,15 @@ "postfix": false, "binop": null }, - "start": 32578, - "end": 32579, + "start": 32518, + "end": 32519, "loc": { "start": { - "line": 941, + "line": 940, "column": 22 }, "end": { - "line": 941, + "line": 940, "column": 23 } } @@ -135407,15 +135129,15 @@ "binop": null }, "value": "value", - "start": 32579, - "end": 32584, + "start": 32519, + "end": 32524, "loc": { "start": { - "line": 941, + "line": 940, "column": 23 }, "end": { - "line": 941, + "line": 940, "column": 28 } } @@ -135432,15 +135154,15 @@ "postfix": false, "binop": null }, - "start": 32584, - "end": 32585, + "start": 32524, + "end": 32525, "loc": { "start": { - "line": 941, + "line": 940, "column": 28 }, "end": { - "line": 941, + "line": 940, "column": 29 } } @@ -135457,15 +135179,15 @@ "postfix": false, "binop": null }, - "start": 32586, - "end": 32587, + "start": 32526, + "end": 32527, "loc": { "start": { - "line": 941, + "line": 940, "column": 30 }, "end": { - "line": 941, + "line": 940, "column": 31 } } @@ -135485,15 +135207,15 @@ "updateContext": null }, "value": "this", - "start": 32596, - "end": 32600, + "start": 32536, + "end": 32540, "loc": { "start": { - "line": 942, + "line": 941, "column": 8 }, "end": { - "line": 942, + "line": 941, "column": 12 } } @@ -135511,15 +135233,15 @@ "binop": null, "updateContext": null }, - "start": 32600, - "end": 32601, + "start": 32540, + "end": 32541, "loc": { "start": { - "line": 942, + "line": 941, "column": 12 }, "end": { - "line": 942, + "line": 941, "column": 13 } } @@ -135537,15 +135259,15 @@ "binop": null }, "value": "_reset", - "start": 32601, - "end": 32607, + "start": 32541, + "end": 32547, "loc": { "start": { - "line": 942, + "line": 941, "column": 13 }, "end": { - "line": 942, + "line": 941, "column": 19 } } @@ -135562,15 +135284,15 @@ "postfix": false, "binop": null }, - "start": 32607, - "end": 32608, + "start": 32547, + "end": 32548, "loc": { "start": { - "line": 942, + "line": 941, "column": 19 }, "end": { - "line": 942, + "line": 941, "column": 20 } } @@ -135587,15 +135309,15 @@ "postfix": false, "binop": null }, - "start": 32608, - "end": 32609, + "start": 32548, + "end": 32549, "loc": { "start": { - "line": 942, + "line": 941, "column": 20 }, "end": { - "line": 942, + "line": 941, "column": 21 } } @@ -135613,15 +135335,15 @@ "binop": null, "updateContext": null }, - "start": 32609, - "end": 32610, + "start": 32549, + "end": 32550, "loc": { "start": { - "line": 942, + "line": 941, "column": 21 }, "end": { - "line": 942, + "line": 941, "column": 22 } } @@ -135641,15 +135363,15 @@ "updateContext": null }, "value": "this", - "start": 32619, - "end": 32623, + "start": 32559, + "end": 32563, "loc": { "start": { - "line": 943, + "line": 942, "column": 8 }, "end": { - "line": 943, + "line": 942, "column": 12 } } @@ -135667,15 +135389,15 @@ "binop": null, "updateContext": null }, - "start": 32623, - "end": 32624, + "start": 32563, + "end": 32564, "loc": { "start": { - "line": 943, + "line": 942, "column": 12 }, "end": { - "line": 943, + "line": 942, "column": 13 } } @@ -135693,15 +135415,15 @@ "binop": null }, "value": "_configs", - "start": 32624, - "end": 32632, + "start": 32564, + "end": 32572, "loc": { "start": { - "line": 943, + "line": 942, "column": 13 }, "end": { - "line": 943, + "line": 942, "column": 21 } } @@ -135719,15 +135441,15 @@ "binop": null, "updateContext": null }, - "start": 32632, - "end": 32633, + "start": 32572, + "end": 32573, "loc": { "start": { - "line": 943, + "line": 942, "column": 21 }, "end": { - "line": 943, + "line": 942, "column": 22 } } @@ -135745,15 +135467,15 @@ "binop": null }, "value": "pointerEnabled", - "start": 32633, - "end": 32647, + "start": 32573, + "end": 32587, "loc": { "start": { - "line": 943, + "line": 942, "column": 22 }, "end": { - "line": 943, + "line": 942, "column": 36 } } @@ -135772,15 +135494,15 @@ "updateContext": null }, "value": "=", - "start": 32648, - "end": 32649, + "start": 32588, + "end": 32589, "loc": { "start": { - "line": 943, + "line": 942, "column": 37 }, "end": { - "line": 943, + "line": 942, "column": 38 } } @@ -135799,15 +135521,15 @@ "updateContext": null }, "value": "!", - "start": 32650, - "end": 32651, + "start": 32590, + "end": 32591, "loc": { "start": { - "line": 943, + "line": 942, "column": 39 }, "end": { - "line": 943, + "line": 942, "column": 40 } } @@ -135826,15 +135548,15 @@ "updateContext": null }, "value": "!", - "start": 32651, - "end": 32652, + "start": 32591, + "end": 32592, "loc": { "start": { - "line": 943, + "line": 942, "column": 40 }, "end": { - "line": 943, + "line": 942, "column": 41 } } @@ -135852,15 +135574,15 @@ "binop": null }, "value": "value", - "start": 32652, - "end": 32657, + "start": 32592, + "end": 32597, "loc": { "start": { - "line": 943, + "line": 942, "column": 41 }, "end": { - "line": 943, + "line": 942, "column": 46 } } @@ -135878,15 +135600,15 @@ "binop": null, "updateContext": null }, - "start": 32657, - "end": 32658, + "start": 32597, + "end": 32598, "loc": { "start": { - "line": 943, + "line": 942, "column": 46 }, "end": { - "line": 943, + "line": 942, "column": 47 } } @@ -135903,15 +135625,15 @@ "postfix": false, "binop": null }, - "start": 32663, - "end": 32664, + "start": 32603, + "end": 32604, "loc": { "start": { - "line": 944, + "line": 943, "column": 4 }, "end": { - "line": 944, + "line": 943, "column": 5 } } @@ -135929,15 +135651,15 @@ "binop": null }, "value": "_reset", - "start": 32670, - "end": 32676, + "start": 32610, + "end": 32616, "loc": { "start": { - "line": 946, + "line": 945, "column": 4 }, "end": { - "line": 946, + "line": 945, "column": 10 } } @@ -135954,15 +135676,15 @@ "postfix": false, "binop": null }, - "start": 32676, - "end": 32677, + "start": 32616, + "end": 32617, "loc": { "start": { - "line": 946, + "line": 945, "column": 10 }, "end": { - "line": 946, + "line": 945, "column": 11 } } @@ -135979,15 +135701,15 @@ "postfix": false, "binop": null }, - "start": 32677, - "end": 32678, + "start": 32617, + "end": 32618, "loc": { "start": { - "line": 946, + "line": 945, "column": 11 }, "end": { - "line": 946, + "line": 945, "column": 12 } } @@ -136004,15 +135726,15 @@ "postfix": false, "binop": null }, - "start": 32679, - "end": 32680, + "start": 32619, + "end": 32620, "loc": { "start": { - "line": 946, + "line": 945, "column": 13 }, "end": { - "line": 946, + "line": 945, "column": 14 } } @@ -136032,15 +135754,15 @@ "updateContext": null }, "value": "for", - "start": 32689, - "end": 32692, + "start": 32629, + "end": 32632, "loc": { "start": { - "line": 947, + "line": 946, "column": 8 }, "end": { - "line": 947, + "line": 946, "column": 11 } } @@ -136057,15 +135779,15 @@ "postfix": false, "binop": null }, - "start": 32693, - "end": 32694, + "start": 32633, + "end": 32634, "loc": { "start": { - "line": 947, + "line": 946, "column": 12 }, "end": { - "line": 947, + "line": 946, "column": 13 } } @@ -136085,15 +135807,15 @@ "updateContext": null }, "value": "let", - "start": 32694, - "end": 32697, + "start": 32634, + "end": 32637, "loc": { "start": { - "line": 947, + "line": 946, "column": 13 }, "end": { - "line": 947, + "line": 946, "column": 16 } } @@ -136111,15 +135833,15 @@ "binop": null }, "value": "i", - "start": 32698, - "end": 32699, + "start": 32638, + "end": 32639, "loc": { "start": { - "line": 947, + "line": 946, "column": 17 }, "end": { - "line": 947, + "line": 946, "column": 18 } } @@ -136138,15 +135860,15 @@ "updateContext": null }, "value": "=", - "start": 32700, - "end": 32701, + "start": 32640, + "end": 32641, "loc": { "start": { - "line": 947, + "line": 946, "column": 19 }, "end": { - "line": 947, + "line": 946, "column": 20 } } @@ -136165,15 +135887,15 @@ "updateContext": null }, "value": 0, - "start": 32702, - "end": 32703, + "start": 32642, + "end": 32643, "loc": { "start": { - "line": 947, + "line": 946, "column": 21 }, "end": { - "line": 947, + "line": 946, "column": 22 } } @@ -136191,15 +135913,15 @@ "binop": null, "updateContext": null }, - "start": 32703, - "end": 32704, + "start": 32643, + "end": 32644, "loc": { "start": { - "line": 947, + "line": 946, "column": 22 }, "end": { - "line": 947, + "line": 946, "column": 23 } } @@ -136217,15 +135939,15 @@ "binop": null }, "value": "len", - "start": 32705, - "end": 32708, + "start": 32645, + "end": 32648, "loc": { "start": { - "line": 947, + "line": 946, "column": 24 }, "end": { - "line": 947, + "line": 946, "column": 27 } } @@ -136244,15 +135966,15 @@ "updateContext": null }, "value": "=", - "start": 32709, - "end": 32710, + "start": 32649, + "end": 32650, "loc": { "start": { - "line": 947, + "line": 946, "column": 28 }, "end": { - "line": 947, + "line": 946, "column": 29 } } @@ -136272,15 +135994,15 @@ "updateContext": null }, "value": "this", - "start": 32711, - "end": 32715, + "start": 32651, + "end": 32655, "loc": { "start": { - "line": 947, + "line": 946, "column": 30 }, "end": { - "line": 947, + "line": 946, "column": 34 } } @@ -136298,15 +136020,15 @@ "binop": null, "updateContext": null }, - "start": 32715, - "end": 32716, + "start": 32655, + "end": 32656, "loc": { "start": { - "line": 947, + "line": 946, "column": 34 }, "end": { - "line": 947, + "line": 946, "column": 35 } } @@ -136324,15 +136046,15 @@ "binop": null }, "value": "_handlers", - "start": 32716, - "end": 32725, + "start": 32656, + "end": 32665, "loc": { "start": { - "line": 947, + "line": 946, "column": 35 }, "end": { - "line": 947, + "line": 946, "column": 44 } } @@ -136350,15 +136072,15 @@ "binop": null, "updateContext": null }, - "start": 32725, - "end": 32726, + "start": 32665, + "end": 32666, "loc": { "start": { - "line": 947, + "line": 946, "column": 44 }, "end": { - "line": 947, + "line": 946, "column": 45 } } @@ -136376,15 +136098,15 @@ "binop": null }, "value": "length", - "start": 32726, - "end": 32732, + "start": 32666, + "end": 32672, "loc": { "start": { - "line": 947, + "line": 946, "column": 45 }, "end": { - "line": 947, + "line": 946, "column": 51 } } @@ -136402,15 +136124,15 @@ "binop": null, "updateContext": null }, - "start": 32732, - "end": 32733, + "start": 32672, + "end": 32673, "loc": { "start": { - "line": 947, + "line": 946, "column": 51 }, "end": { - "line": 947, + "line": 946, "column": 52 } } @@ -136428,15 +136150,15 @@ "binop": null }, "value": "i", - "start": 32734, - "end": 32735, + "start": 32674, + "end": 32675, "loc": { "start": { - "line": 947, + "line": 946, "column": 53 }, "end": { - "line": 947, + "line": 946, "column": 54 } } @@ -136455,15 +136177,15 @@ "updateContext": null }, "value": "<", - "start": 32736, - "end": 32737, + "start": 32676, + "end": 32677, "loc": { "start": { - "line": 947, + "line": 946, "column": 55 }, "end": { - "line": 947, + "line": 946, "column": 56 } } @@ -136481,15 +136203,15 @@ "binop": null }, "value": "len", - "start": 32738, - "end": 32741, + "start": 32678, + "end": 32681, "loc": { "start": { - "line": 947, + "line": 946, "column": 57 }, "end": { - "line": 947, + "line": 946, "column": 60 } } @@ -136507,15 +136229,15 @@ "binop": null, "updateContext": null }, - "start": 32741, - "end": 32742, + "start": 32681, + "end": 32682, "loc": { "start": { - "line": 947, + "line": 946, "column": 60 }, "end": { - "line": 947, + "line": 946, "column": 61 } } @@ -136533,15 +136255,15 @@ "binop": null }, "value": "i", - "start": 32743, - "end": 32744, + "start": 32683, + "end": 32684, "loc": { "start": { - "line": 947, + "line": 946, "column": 62 }, "end": { - "line": 947, + "line": 946, "column": 63 } } @@ -136559,15 +136281,15 @@ "binop": null }, "value": "++", - "start": 32744, - "end": 32746, + "start": 32684, + "end": 32686, "loc": { "start": { - "line": 947, + "line": 946, "column": 63 }, "end": { - "line": 947, + "line": 946, "column": 65 } } @@ -136584,15 +136306,15 @@ "postfix": false, "binop": null }, - "start": 32746, - "end": 32747, + "start": 32686, + "end": 32687, "loc": { "start": { - "line": 947, + "line": 946, "column": 65 }, "end": { - "line": 947, + "line": 946, "column": 66 } } @@ -136609,15 +136331,15 @@ "postfix": false, "binop": null }, - "start": 32748, - "end": 32749, + "start": 32688, + "end": 32689, "loc": { "start": { - "line": 947, + "line": 946, "column": 67 }, "end": { - "line": 947, + "line": 946, "column": 68 } } @@ -136637,15 +136359,15 @@ "updateContext": null }, "value": "const", - "start": 32762, - "end": 32767, + "start": 32702, + "end": 32707, "loc": { "start": { - "line": 948, + "line": 947, "column": 12 }, "end": { - "line": 948, + "line": 947, "column": 17 } } @@ -136663,15 +136385,15 @@ "binop": null }, "value": "handler", - "start": 32768, - "end": 32775, + "start": 32708, + "end": 32715, "loc": { "start": { - "line": 948, + "line": 947, "column": 18 }, "end": { - "line": 948, + "line": 947, "column": 25 } } @@ -136690,15 +136412,15 @@ "updateContext": null }, "value": "=", - "start": 32776, - "end": 32777, + "start": 32716, + "end": 32717, "loc": { "start": { - "line": 948, + "line": 947, "column": 26 }, "end": { - "line": 948, + "line": 947, "column": 27 } } @@ -136718,15 +136440,15 @@ "updateContext": null }, "value": "this", - "start": 32778, - "end": 32782, + "start": 32718, + "end": 32722, "loc": { "start": { - "line": 948, + "line": 947, "column": 28 }, "end": { - "line": 948, + "line": 947, "column": 32 } } @@ -136744,15 +136466,15 @@ "binop": null, "updateContext": null }, - "start": 32782, - "end": 32783, + "start": 32722, + "end": 32723, "loc": { "start": { - "line": 948, + "line": 947, "column": 32 }, "end": { - "line": 948, + "line": 947, "column": 33 } } @@ -136770,15 +136492,15 @@ "binop": null }, "value": "_handlers", - "start": 32783, - "end": 32792, + "start": 32723, + "end": 32732, "loc": { "start": { - "line": 948, + "line": 947, "column": 33 }, "end": { - "line": 948, + "line": 947, "column": 42 } } @@ -136796,15 +136518,15 @@ "binop": null, "updateContext": null }, - "start": 32792, - "end": 32793, + "start": 32732, + "end": 32733, "loc": { "start": { - "line": 948, + "line": 947, "column": 42 }, "end": { - "line": 948, + "line": 947, "column": 43 } } @@ -136822,15 +136544,15 @@ "binop": null }, "value": "i", - "start": 32793, - "end": 32794, + "start": 32733, + "end": 32734, "loc": { "start": { - "line": 948, + "line": 947, "column": 43 }, "end": { - "line": 948, + "line": 947, "column": 44 } } @@ -136848,15 +136570,15 @@ "binop": null, "updateContext": null }, - "start": 32794, - "end": 32795, + "start": 32734, + "end": 32735, "loc": { "start": { - "line": 948, + "line": 947, "column": 44 }, "end": { - "line": 948, + "line": 947, "column": 45 } } @@ -136874,15 +136596,15 @@ "binop": null, "updateContext": null }, - "start": 32795, - "end": 32796, + "start": 32735, + "end": 32736, "loc": { "start": { - "line": 948, + "line": 947, "column": 45 }, "end": { - "line": 948, + "line": 947, "column": 46 } } @@ -136902,15 +136624,15 @@ "updateContext": null }, "value": "if", - "start": 32809, - "end": 32811, + "start": 32749, + "end": 32751, "loc": { "start": { - "line": 949, + "line": 948, "column": 12 }, "end": { - "line": 949, + "line": 948, "column": 14 } } @@ -136927,15 +136649,15 @@ "postfix": false, "binop": null }, - "start": 32812, - "end": 32813, + "start": 32752, + "end": 32753, "loc": { "start": { - "line": 949, + "line": 948, "column": 15 }, "end": { - "line": 949, + "line": 948, "column": 16 } } @@ -136953,15 +136675,15 @@ "binop": null }, "value": "handler", - "start": 32813, - "end": 32820, + "start": 32753, + "end": 32760, "loc": { "start": { - "line": 949, + "line": 948, "column": 16 }, "end": { - "line": 949, + "line": 948, "column": 23 } } @@ -136979,15 +136701,15 @@ "binop": null, "updateContext": null }, - "start": 32820, - "end": 32821, + "start": 32760, + "end": 32761, "loc": { "start": { - "line": 949, + "line": 948, "column": 23 }, "end": { - "line": 949, + "line": 948, "column": 24 } } @@ -137005,15 +136727,15 @@ "binop": null }, "value": "reset", - "start": 32821, - "end": 32826, + "start": 32761, + "end": 32766, "loc": { "start": { - "line": 949, + "line": 948, "column": 24 }, "end": { - "line": 949, + "line": 948, "column": 29 } } @@ -137030,15 +136752,15 @@ "postfix": false, "binop": null }, - "start": 32826, - "end": 32827, + "start": 32766, + "end": 32767, "loc": { "start": { - "line": 949, + "line": 948, "column": 29 }, "end": { - "line": 949, + "line": 948, "column": 30 } } @@ -137055,15 +136777,15 @@ "postfix": false, "binop": null }, - "start": 32828, - "end": 32829, + "start": 32768, + "end": 32769, "loc": { "start": { - "line": 949, + "line": 948, "column": 31 }, "end": { - "line": 949, + "line": 948, "column": 32 } } @@ -137081,15 +136803,15 @@ "binop": null }, "value": "handler", - "start": 32846, - "end": 32853, + "start": 32786, + "end": 32793, "loc": { "start": { - "line": 950, + "line": 949, "column": 16 }, "end": { - "line": 950, + "line": 949, "column": 23 } } @@ -137107,15 +136829,15 @@ "binop": null, "updateContext": null }, - "start": 32853, - "end": 32854, + "start": 32793, + "end": 32794, "loc": { "start": { - "line": 950, + "line": 949, "column": 23 }, "end": { - "line": 950, + "line": 949, "column": 24 } } @@ -137133,15 +136855,15 @@ "binop": null }, "value": "reset", - "start": 32854, - "end": 32859, + "start": 32794, + "end": 32799, "loc": { "start": { - "line": 950, + "line": 949, "column": 24 }, "end": { - "line": 950, + "line": 949, "column": 29 } } @@ -137158,15 +136880,15 @@ "postfix": false, "binop": null }, - "start": 32859, - "end": 32860, + "start": 32799, + "end": 32800, "loc": { "start": { - "line": 950, + "line": 949, "column": 29 }, "end": { - "line": 950, + "line": 949, "column": 30 } } @@ -137183,15 +136905,15 @@ "postfix": false, "binop": null }, - "start": 32860, - "end": 32861, + "start": 32800, + "end": 32801, "loc": { "start": { - "line": 950, + "line": 949, "column": 30 }, "end": { - "line": 950, + "line": 949, "column": 31 } } @@ -137209,15 +136931,15 @@ "binop": null, "updateContext": null }, - "start": 32861, - "end": 32862, + "start": 32801, + "end": 32802, "loc": { "start": { - "line": 950, + "line": 949, "column": 31 }, "end": { - "line": 950, + "line": 949, "column": 32 } } @@ -137234,15 +136956,15 @@ "postfix": false, "binop": null }, - "start": 32875, - "end": 32876, + "start": 32815, + "end": 32816, "loc": { "start": { - "line": 951, + "line": 950, "column": 12 }, "end": { - "line": 951, + "line": 950, "column": 13 } } @@ -137259,15 +136981,15 @@ "postfix": false, "binop": null }, - "start": 32885, - "end": 32886, + "start": 32825, + "end": 32826, "loc": { "start": { - "line": 952, + "line": 951, "column": 8 }, "end": { - "line": 952, + "line": 951, "column": 9 } } @@ -137287,15 +137009,15 @@ "updateContext": null }, "value": "this", - "start": 32896, - "end": 32900, + "start": 32836, + "end": 32840, "loc": { "start": { - "line": 954, + "line": 953, "column": 8 }, "end": { - "line": 954, + "line": 953, "column": 12 } } @@ -137313,15 +137035,15 @@ "binop": null, "updateContext": null }, - "start": 32900, - "end": 32901, + "start": 32840, + "end": 32841, "loc": { "start": { - "line": 954, + "line": 953, "column": 12 }, "end": { - "line": 954, + "line": 953, "column": 13 } } @@ -137339,15 +137061,15 @@ "binop": null }, "value": "_updates", - "start": 32901, - "end": 32909, + "start": 32841, + "end": 32849, "loc": { "start": { - "line": 954, + "line": 953, "column": 13 }, "end": { - "line": 954, + "line": 953, "column": 21 } } @@ -137365,15 +137087,15 @@ "binop": null, "updateContext": null }, - "start": 32909, - "end": 32910, + "start": 32849, + "end": 32850, "loc": { "start": { - "line": 954, + "line": 953, "column": 21 }, "end": { - "line": 954, + "line": 953, "column": 22 } } @@ -137391,15 +137113,15 @@ "binop": null }, "value": "panDeltaX", - "start": 32910, - "end": 32919, + "start": 32850, + "end": 32859, "loc": { "start": { - "line": 954, + "line": 953, "column": 22 }, "end": { - "line": 954, + "line": 953, "column": 31 } } @@ -137418,15 +137140,15 @@ "updateContext": null }, "value": "=", - "start": 32920, - "end": 32921, + "start": 32860, + "end": 32861, "loc": { "start": { - "line": 954, + "line": 953, "column": 32 }, "end": { - "line": 954, + "line": 953, "column": 33 } } @@ -137445,15 +137167,15 @@ "updateContext": null }, "value": 0, - "start": 32922, - "end": 32923, + "start": 32862, + "end": 32863, "loc": { "start": { - "line": 954, + "line": 953, "column": 34 }, "end": { - "line": 954, + "line": 953, "column": 35 } } @@ -137471,15 +137193,15 @@ "binop": null, "updateContext": null }, - "start": 32923, - "end": 32924, + "start": 32863, + "end": 32864, "loc": { "start": { - "line": 954, + "line": 953, "column": 35 }, "end": { - "line": 954, + "line": 953, "column": 36 } } @@ -137499,15 +137221,15 @@ "updateContext": null }, "value": "this", - "start": 32933, - "end": 32937, + "start": 32873, + "end": 32877, "loc": { "start": { - "line": 955, + "line": 954, "column": 8 }, "end": { - "line": 955, + "line": 954, "column": 12 } } @@ -137525,15 +137247,15 @@ "binop": null, "updateContext": null }, - "start": 32937, - "end": 32938, + "start": 32877, + "end": 32878, "loc": { "start": { - "line": 955, + "line": 954, "column": 12 }, "end": { - "line": 955, + "line": 954, "column": 13 } } @@ -137551,15 +137273,15 @@ "binop": null }, "value": "_updates", - "start": 32938, - "end": 32946, + "start": 32878, + "end": 32886, "loc": { "start": { - "line": 955, + "line": 954, "column": 13 }, "end": { - "line": 955, + "line": 954, "column": 21 } } @@ -137577,15 +137299,15 @@ "binop": null, "updateContext": null }, - "start": 32946, - "end": 32947, + "start": 32886, + "end": 32887, "loc": { "start": { - "line": 955, + "line": 954, "column": 21 }, "end": { - "line": 955, + "line": 954, "column": 22 } } @@ -137603,15 +137325,15 @@ "binop": null }, "value": "panDeltaY", - "start": 32947, - "end": 32956, + "start": 32887, + "end": 32896, "loc": { "start": { - "line": 955, + "line": 954, "column": 22 }, "end": { - "line": 955, + "line": 954, "column": 31 } } @@ -137630,15 +137352,15 @@ "updateContext": null }, "value": "=", - "start": 32957, - "end": 32958, + "start": 32897, + "end": 32898, "loc": { "start": { - "line": 955, + "line": 954, "column": 32 }, "end": { - "line": 955, + "line": 954, "column": 33 } } @@ -137657,15 +137379,15 @@ "updateContext": null }, "value": 0, - "start": 32959, - "end": 32960, + "start": 32899, + "end": 32900, "loc": { "start": { - "line": 955, + "line": 954, "column": 34 }, "end": { - "line": 955, + "line": 954, "column": 35 } } @@ -137683,15 +137405,15 @@ "binop": null, "updateContext": null }, - "start": 32960, - "end": 32961, + "start": 32900, + "end": 32901, "loc": { "start": { - "line": 955, + "line": 954, "column": 35 }, "end": { - "line": 955, + "line": 954, "column": 36 } } @@ -137711,15 +137433,15 @@ "updateContext": null }, "value": "this", - "start": 32970, - "end": 32974, + "start": 32910, + "end": 32914, "loc": { "start": { - "line": 956, + "line": 955, "column": 8 }, "end": { - "line": 956, + "line": 955, "column": 12 } } @@ -137737,15 +137459,15 @@ "binop": null, "updateContext": null }, - "start": 32974, - "end": 32975, + "start": 32914, + "end": 32915, "loc": { "start": { - "line": 956, + "line": 955, "column": 12 }, "end": { - "line": 956, + "line": 955, "column": 13 } } @@ -137763,15 +137485,15 @@ "binop": null }, "value": "_updates", - "start": 32975, - "end": 32983, + "start": 32915, + "end": 32923, "loc": { "start": { - "line": 956, + "line": 955, "column": 13 }, "end": { - "line": 956, + "line": 955, "column": 21 } } @@ -137789,15 +137511,15 @@ "binop": null, "updateContext": null }, - "start": 32983, - "end": 32984, + "start": 32923, + "end": 32924, "loc": { "start": { - "line": 956, + "line": 955, "column": 21 }, "end": { - "line": 956, + "line": 955, "column": 22 } } @@ -137815,15 +137537,15 @@ "binop": null }, "value": "rotateDeltaX", - "start": 32984, - "end": 32996, + "start": 32924, + "end": 32936, "loc": { "start": { - "line": 956, + "line": 955, "column": 22 }, "end": { - "line": 956, + "line": 955, "column": 34 } } @@ -137842,15 +137564,15 @@ "updateContext": null }, "value": "=", - "start": 32997, - "end": 32998, + "start": 32937, + "end": 32938, "loc": { "start": { - "line": 956, + "line": 955, "column": 35 }, "end": { - "line": 956, + "line": 955, "column": 36 } } @@ -137869,15 +137591,15 @@ "updateContext": null }, "value": 0, - "start": 32999, - "end": 33000, + "start": 32939, + "end": 32940, "loc": { "start": { - "line": 956, + "line": 955, "column": 37 }, "end": { - "line": 956, + "line": 955, "column": 38 } } @@ -137895,15 +137617,15 @@ "binop": null, "updateContext": null }, - "start": 33000, - "end": 33001, + "start": 32940, + "end": 32941, "loc": { "start": { - "line": 956, + "line": 955, "column": 38 }, "end": { - "line": 956, + "line": 955, "column": 39 } } @@ -137923,15 +137645,15 @@ "updateContext": null }, "value": "this", - "start": 33010, - "end": 33014, + "start": 32950, + "end": 32954, "loc": { "start": { - "line": 957, + "line": 956, "column": 8 }, "end": { - "line": 957, + "line": 956, "column": 12 } } @@ -137949,15 +137671,15 @@ "binop": null, "updateContext": null }, - "start": 33014, - "end": 33015, + "start": 32954, + "end": 32955, "loc": { "start": { - "line": 957, + "line": 956, "column": 12 }, "end": { - "line": 957, + "line": 956, "column": 13 } } @@ -137975,15 +137697,15 @@ "binop": null }, "value": "_updates", - "start": 33015, - "end": 33023, + "start": 32955, + "end": 32963, "loc": { "start": { - "line": 957, + "line": 956, "column": 13 }, "end": { - "line": 957, + "line": 956, "column": 21 } } @@ -138001,15 +137723,15 @@ "binop": null, "updateContext": null }, - "start": 33023, - "end": 33024, + "start": 32963, + "end": 32964, "loc": { "start": { - "line": 957, + "line": 956, "column": 21 }, "end": { - "line": 957, + "line": 956, "column": 22 } } @@ -138027,15 +137749,15 @@ "binop": null }, "value": "rotateDeltaY", - "start": 33024, - "end": 33036, + "start": 32964, + "end": 32976, "loc": { "start": { - "line": 957, + "line": 956, "column": 22 }, "end": { - "line": 957, + "line": 956, "column": 34 } } @@ -138054,15 +137776,15 @@ "updateContext": null }, "value": "=", - "start": 33037, - "end": 33038, + "start": 32977, + "end": 32978, "loc": { "start": { - "line": 957, + "line": 956, "column": 35 }, "end": { - "line": 957, + "line": 956, "column": 36 } } @@ -138081,15 +137803,15 @@ "updateContext": null }, "value": 0, - "start": 33039, - "end": 33040, + "start": 32979, + "end": 32980, "loc": { "start": { - "line": 957, + "line": 956, "column": 37 }, "end": { - "line": 957, + "line": 956, "column": 38 } } @@ -138107,15 +137829,15 @@ "binop": null, "updateContext": null }, - "start": 33040, - "end": 33041, + "start": 32980, + "end": 32981, "loc": { "start": { - "line": 957, + "line": 956, "column": 38 }, "end": { - "line": 957, + "line": 956, "column": 39 } } @@ -138135,15 +137857,15 @@ "updateContext": null }, "value": "this", - "start": 33050, - "end": 33054, + "start": 32990, + "end": 32994, "loc": { "start": { - "line": 958, + "line": 957, "column": 8 }, "end": { - "line": 958, + "line": 957, "column": 12 } } @@ -138161,15 +137883,15 @@ "binop": null, "updateContext": null }, - "start": 33054, - "end": 33055, + "start": 32994, + "end": 32995, "loc": { "start": { - "line": 958, + "line": 957, "column": 12 }, "end": { - "line": 958, + "line": 957, "column": 13 } } @@ -138187,15 +137909,15 @@ "binop": null }, "value": "_updates", - "start": 33055, - "end": 33063, + "start": 32995, + "end": 33003, "loc": { "start": { - "line": 958, + "line": 957, "column": 13 }, "end": { - "line": 958, + "line": 957, "column": 21 } } @@ -138213,15 +137935,15 @@ "binop": null, "updateContext": null }, - "start": 33063, - "end": 33064, + "start": 33003, + "end": 33004, "loc": { "start": { - "line": 958, + "line": 957, "column": 21 }, "end": { - "line": 958, + "line": 957, "column": 22 } } @@ -138239,15 +137961,15 @@ "binop": null }, "value": "dolyDelta", - "start": 33064, - "end": 33073, + "start": 33004, + "end": 33013, "loc": { "start": { - "line": 958, + "line": 957, "column": 22 }, "end": { - "line": 958, + "line": 957, "column": 31 } } @@ -138266,15 +137988,15 @@ "updateContext": null }, "value": "=", - "start": 33074, - "end": 33075, + "start": 33014, + "end": 33015, "loc": { "start": { - "line": 958, + "line": 957, "column": 32 }, "end": { - "line": 958, + "line": 957, "column": 33 } } @@ -138293,15 +138015,15 @@ "updateContext": null }, "value": 0, - "start": 33076, - "end": 33077, + "start": 33016, + "end": 33017, "loc": { "start": { - "line": 958, + "line": 957, "column": 34 }, "end": { - "line": 958, + "line": 957, "column": 35 } } @@ -138319,15 +138041,15 @@ "binop": null, "updateContext": null }, - "start": 33077, - "end": 33078, + "start": 33017, + "end": 33018, "loc": { "start": { - "line": 958, + "line": 957, "column": 35 }, "end": { - "line": 958, + "line": 957, "column": 36 } } @@ -138344,15 +138066,15 @@ "postfix": false, "binop": null }, - "start": 33083, - "end": 33084, + "start": 33023, + "end": 33024, "loc": { "start": { - "line": 959, + "line": 958, "column": 4 }, "end": { - "line": 959, + "line": 958, "column": 5 } } @@ -138360,15 +138082,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 33090, - "end": 33514, + "start": 33030, + "end": 33454, "loc": { "start": { - "line": 961, + "line": 960, "column": 4 }, "end": { - "line": 970, + "line": 969, "column": 7 } } @@ -138386,15 +138108,15 @@ "binop": null }, "value": "get", - "start": 33519, - "end": 33522, + "start": 33459, + "end": 33462, "loc": { "start": { - "line": 971, + "line": 970, "column": 4 }, "end": { - "line": 971, + "line": 970, "column": 7 } } @@ -138412,15 +138134,15 @@ "binop": null }, "value": "pointerEnabled", - "start": 33523, - "end": 33537, + "start": 33463, + "end": 33477, "loc": { "start": { - "line": 971, + "line": 970, "column": 8 }, "end": { - "line": 971, + "line": 970, "column": 22 } } @@ -138437,15 +138159,15 @@ "postfix": false, "binop": null }, - "start": 33537, - "end": 33538, + "start": 33477, + "end": 33478, "loc": { "start": { - "line": 971, + "line": 970, "column": 22 }, "end": { - "line": 971, + "line": 970, "column": 23 } } @@ -138462,15 +138184,15 @@ "postfix": false, "binop": null }, - "start": 33538, - "end": 33539, + "start": 33478, + "end": 33479, "loc": { "start": { - "line": 971, + "line": 970, "column": 23 }, "end": { - "line": 971, + "line": 970, "column": 24 } } @@ -138487,15 +138209,15 @@ "postfix": false, "binop": null }, - "start": 33540, - "end": 33541, + "start": 33480, + "end": 33481, "loc": { "start": { - "line": 971, + "line": 970, "column": 25 }, "end": { - "line": 971, + "line": 970, "column": 26 } } @@ -138515,15 +138237,15 @@ "updateContext": null }, "value": "return", - "start": 33550, - "end": 33556, + "start": 33490, + "end": 33496, "loc": { "start": { - "line": 972, + "line": 971, "column": 8 }, "end": { - "line": 972, + "line": 971, "column": 14 } } @@ -138543,15 +138265,15 @@ "updateContext": null }, "value": "this", - "start": 33557, - "end": 33561, + "start": 33497, + "end": 33501, "loc": { "start": { - "line": 972, + "line": 971, "column": 15 }, "end": { - "line": 972, + "line": 971, "column": 19 } } @@ -138569,15 +138291,15 @@ "binop": null, "updateContext": null }, - "start": 33561, - "end": 33562, + "start": 33501, + "end": 33502, "loc": { "start": { - "line": 972, + "line": 971, "column": 19 }, "end": { - "line": 972, + "line": 971, "column": 20 } } @@ -138595,15 +138317,15 @@ "binop": null }, "value": "_configs", - "start": 33562, - "end": 33570, + "start": 33502, + "end": 33510, "loc": { "start": { - "line": 972, + "line": 971, "column": 20 }, "end": { - "line": 972, + "line": 971, "column": 28 } } @@ -138621,15 +138343,15 @@ "binop": null, "updateContext": null }, - "start": 33570, - "end": 33571, + "start": 33510, + "end": 33511, "loc": { "start": { - "line": 972, + "line": 971, "column": 28 }, "end": { - "line": 972, + "line": 971, "column": 29 } } @@ -138647,15 +138369,15 @@ "binop": null }, "value": "pointerEnabled", - "start": 33571, - "end": 33585, + "start": 33511, + "end": 33525, "loc": { "start": { - "line": 972, + "line": 971, "column": 29 }, "end": { - "line": 972, + "line": 971, "column": 43 } } @@ -138673,15 +138395,15 @@ "binop": null, "updateContext": null }, - "start": 33585, - "end": 33586, + "start": 33525, + "end": 33526, "loc": { "start": { - "line": 972, + "line": 971, "column": 43 }, "end": { - "line": 972, + "line": 971, "column": 44 } } @@ -138698,15 +138420,15 @@ "postfix": false, "binop": null }, - "start": 33591, - "end": 33592, + "start": 33531, + "end": 33532, "loc": { "start": { - "line": 973, + "line": 972, "column": 4 }, "end": { - "line": 973, + "line": 972, "column": 5 } } @@ -138714,15 +138436,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 33598, - "end": 34236, + "start": 33538, + "end": 34176, "loc": { "start": { - "line": 975, + "line": 974, "column": 4 }, "end": { - "line": 989, + "line": 988, "column": 7 } } @@ -138740,15 +138462,15 @@ "binop": null }, "value": "set", - "start": 34241, - "end": 34244, + "start": 34181, + "end": 34184, "loc": { "start": { - "line": 990, + "line": 989, "column": 4 }, "end": { - "line": 990, + "line": 989, "column": 7 } } @@ -138766,15 +138488,15 @@ "binop": null }, "value": "followPointer", - "start": 34245, - "end": 34258, + "start": 34185, + "end": 34198, "loc": { "start": { - "line": 990, + "line": 989, "column": 8 }, "end": { - "line": 990, + "line": 989, "column": 21 } } @@ -138791,15 +138513,15 @@ "postfix": false, "binop": null }, - "start": 34258, - "end": 34259, + "start": 34198, + "end": 34199, "loc": { "start": { - "line": 990, + "line": 989, "column": 21 }, "end": { - "line": 990, + "line": 989, "column": 22 } } @@ -138817,15 +138539,15 @@ "binop": null }, "value": "value", - "start": 34259, - "end": 34264, + "start": 34199, + "end": 34204, "loc": { "start": { - "line": 990, + "line": 989, "column": 22 }, "end": { - "line": 990, + "line": 989, "column": 27 } } @@ -138842,15 +138564,15 @@ "postfix": false, "binop": null }, - "start": 34264, - "end": 34265, + "start": 34204, + "end": 34205, "loc": { "start": { - "line": 990, + "line": 989, "column": 27 }, "end": { - "line": 990, + "line": 989, "column": 28 } } @@ -138867,15 +138589,15 @@ "postfix": false, "binop": null }, - "start": 34266, - "end": 34267, + "start": 34206, + "end": 34207, "loc": { "start": { - "line": 990, + "line": 989, "column": 29 }, "end": { - "line": 990, + "line": 989, "column": 30 } } @@ -138895,15 +138617,15 @@ "updateContext": null }, "value": "this", - "start": 34276, - "end": 34280, + "start": 34216, + "end": 34220, "loc": { "start": { - "line": 991, + "line": 990, "column": 8 }, "end": { - "line": 991, + "line": 990, "column": 12 } } @@ -138921,15 +138643,15 @@ "binop": null, "updateContext": null }, - "start": 34280, - "end": 34281, + "start": 34220, + "end": 34221, "loc": { "start": { - "line": 991, + "line": 990, "column": 12 }, "end": { - "line": 991, + "line": 990, "column": 13 } } @@ -138947,15 +138669,15 @@ "binop": null }, "value": "_configs", - "start": 34281, - "end": 34289, + "start": 34221, + "end": 34229, "loc": { "start": { - "line": 991, + "line": 990, "column": 13 }, "end": { - "line": 991, + "line": 990, "column": 21 } } @@ -138973,15 +138695,15 @@ "binop": null, "updateContext": null }, - "start": 34289, - "end": 34290, + "start": 34229, + "end": 34230, "loc": { "start": { - "line": 991, + "line": 990, "column": 21 }, "end": { - "line": 991, + "line": 990, "column": 22 } } @@ -138999,15 +138721,15 @@ "binop": null }, "value": "followPointer", - "start": 34290, - "end": 34303, + "start": 34230, + "end": 34243, "loc": { "start": { - "line": 991, + "line": 990, "column": 22 }, "end": { - "line": 991, + "line": 990, "column": 35 } } @@ -139026,15 +138748,15 @@ "updateContext": null }, "value": "=", - "start": 34304, - "end": 34305, + "start": 34244, + "end": 34245, "loc": { "start": { - "line": 991, + "line": 990, "column": 36 }, "end": { - "line": 991, + "line": 990, "column": 37 } } @@ -139051,15 +138773,15 @@ "postfix": false, "binop": null }, - "start": 34306, - "end": 34307, + "start": 34246, + "end": 34247, "loc": { "start": { - "line": 991, + "line": 990, "column": 38 }, "end": { - "line": 991, + "line": 990, "column": 39 } } @@ -139077,15 +138799,15 @@ "binop": null }, "value": "value", - "start": 34307, - "end": 34312, + "start": 34247, + "end": 34252, "loc": { "start": { - "line": 991, + "line": 990, "column": 39 }, "end": { - "line": 991, + "line": 990, "column": 44 } } @@ -139104,15 +138826,15 @@ "updateContext": null }, "value": "!==", - "start": 34313, - "end": 34316, + "start": 34253, + "end": 34256, "loc": { "start": { - "line": 991, + "line": 990, "column": 45 }, "end": { - "line": 991, + "line": 990, "column": 48 } } @@ -139132,15 +138854,15 @@ "updateContext": null }, "value": "false", - "start": 34317, - "end": 34322, + "start": 34257, + "end": 34262, "loc": { "start": { - "line": 991, + "line": 990, "column": 49 }, "end": { - "line": 991, + "line": 990, "column": 54 } } @@ -139157,15 +138879,15 @@ "postfix": false, "binop": null }, - "start": 34322, - "end": 34323, + "start": 34262, + "end": 34263, "loc": { "start": { - "line": 991, + "line": 990, "column": 54 }, "end": { - "line": 991, + "line": 990, "column": 55 } } @@ -139183,15 +138905,15 @@ "binop": null, "updateContext": null }, - "start": 34323, - "end": 34324, + "start": 34263, + "end": 34264, "loc": { "start": { - "line": 991, + "line": 990, "column": 55 }, "end": { - "line": 991, + "line": 990, "column": 56 } } @@ -139208,15 +138930,15 @@ "postfix": false, "binop": null }, - "start": 34329, - "end": 34330, + "start": 34269, + "end": 34270, "loc": { "start": { - "line": 992, + "line": 991, "column": 4 }, "end": { - "line": 992, + "line": 991, "column": 5 } } @@ -139224,15 +138946,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 34336, - "end": 34965, + "start": 34276, + "end": 34905, "loc": { "start": { - "line": 994, + "line": 993, "column": 4 }, "end": { - "line": 1008, + "line": 1007, "column": 7 } } @@ -139250,15 +138972,15 @@ "binop": null }, "value": "get", - "start": 34970, - "end": 34973, + "start": 34910, + "end": 34913, "loc": { "start": { - "line": 1009, + "line": 1008, "column": 4 }, "end": { - "line": 1009, + "line": 1008, "column": 7 } } @@ -139276,15 +138998,15 @@ "binop": null }, "value": "followPointer", - "start": 34974, - "end": 34987, + "start": 34914, + "end": 34927, "loc": { "start": { - "line": 1009, + "line": 1008, "column": 8 }, "end": { - "line": 1009, + "line": 1008, "column": 21 } } @@ -139301,15 +139023,15 @@ "postfix": false, "binop": null }, - "start": 34987, - "end": 34988, + "start": 34927, + "end": 34928, "loc": { "start": { - "line": 1009, + "line": 1008, "column": 21 }, "end": { - "line": 1009, + "line": 1008, "column": 22 } } @@ -139326,15 +139048,15 @@ "postfix": false, "binop": null }, - "start": 34988, - "end": 34989, + "start": 34928, + "end": 34929, "loc": { "start": { - "line": 1009, + "line": 1008, "column": 22 }, "end": { - "line": 1009, + "line": 1008, "column": 23 } } @@ -139351,15 +139073,15 @@ "postfix": false, "binop": null }, - "start": 34990, - "end": 34991, + "start": 34930, + "end": 34931, "loc": { "start": { - "line": 1009, + "line": 1008, "column": 24 }, "end": { - "line": 1009, + "line": 1008, "column": 25 } } @@ -139379,15 +139101,15 @@ "updateContext": null }, "value": "return", - "start": 35000, - "end": 35006, + "start": 34940, + "end": 34946, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 8 }, "end": { - "line": 1010, + "line": 1009, "column": 14 } } @@ -139407,15 +139129,15 @@ "updateContext": null }, "value": "this", - "start": 35007, - "end": 35011, + "start": 34947, + "end": 34951, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 15 }, "end": { - "line": 1010, + "line": 1009, "column": 19 } } @@ -139433,15 +139155,15 @@ "binop": null, "updateContext": null }, - "start": 35011, - "end": 35012, + "start": 34951, + "end": 34952, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 19 }, "end": { - "line": 1010, + "line": 1009, "column": 20 } } @@ -139459,15 +139181,15 @@ "binop": null }, "value": "_configs", - "start": 35012, - "end": 35020, + "start": 34952, + "end": 34960, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 20 }, "end": { - "line": 1010, + "line": 1009, "column": 28 } } @@ -139485,15 +139207,15 @@ "binop": null, "updateContext": null }, - "start": 35020, - "end": 35021, + "start": 34960, + "end": 34961, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 28 }, "end": { - "line": 1010, + "line": 1009, "column": 29 } } @@ -139511,15 +139233,15 @@ "binop": null }, "value": "followPointer", - "start": 35021, - "end": 35034, + "start": 34961, + "end": 34974, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 29 }, "end": { - "line": 1010, + "line": 1009, "column": 42 } } @@ -139537,15 +139259,15 @@ "binop": null, "updateContext": null }, - "start": 35034, - "end": 35035, + "start": 34974, + "end": 34975, "loc": { "start": { - "line": 1010, + "line": 1009, "column": 42 }, "end": { - "line": 1010, + "line": 1009, "column": 43 } } @@ -139562,15 +139284,15 @@ "postfix": false, "binop": null }, - "start": 35040, - "end": 35041, + "start": 34980, + "end": 34981, "loc": { "start": { - "line": 1011, + "line": 1010, "column": 4 }, "end": { - "line": 1011, + "line": 1010, "column": 5 } } @@ -139578,15 +139300,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 35047, - "end": 35280, + "start": 34987, + "end": 35220, "loc": { "start": { - "line": 1013, + "line": 1012, "column": 4 }, "end": { - "line": 1019, + "line": 1018, "column": 7 } } @@ -139604,15 +139326,15 @@ "binop": null }, "value": "set", - "start": 35285, - "end": 35288, + "start": 35225, + "end": 35228, "loc": { "start": { - "line": 1020, + "line": 1019, "column": 4 }, "end": { - "line": 1020, + "line": 1019, "column": 7 } } @@ -139630,15 +139352,15 @@ "binop": null }, "value": "pivotPos", - "start": 35289, - "end": 35297, + "start": 35229, + "end": 35237, "loc": { "start": { - "line": 1020, + "line": 1019, "column": 8 }, "end": { - "line": 1020, + "line": 1019, "column": 16 } } @@ -139655,15 +139377,15 @@ "postfix": false, "binop": null }, - "start": 35297, - "end": 35298, + "start": 35237, + "end": 35238, "loc": { "start": { - "line": 1020, + "line": 1019, "column": 16 }, "end": { - "line": 1020, + "line": 1019, "column": 17 } } @@ -139681,15 +139403,15 @@ "binop": null }, "value": "worldPos", - "start": 35298, - "end": 35306, + "start": 35238, + "end": 35246, "loc": { "start": { - "line": 1020, + "line": 1019, "column": 17 }, "end": { - "line": 1020, + "line": 1019, "column": 25 } } @@ -139706,15 +139428,15 @@ "postfix": false, "binop": null }, - "start": 35306, - "end": 35307, + "start": 35246, + "end": 35247, "loc": { "start": { - "line": 1020, + "line": 1019, "column": 25 }, "end": { - "line": 1020, + "line": 1019, "column": 26 } } @@ -139731,15 +139453,15 @@ "postfix": false, "binop": null }, - "start": 35308, - "end": 35309, + "start": 35248, + "end": 35249, "loc": { "start": { - "line": 1020, + "line": 1019, "column": 27 }, "end": { - "line": 1020, + "line": 1019, "column": 28 } } @@ -139759,15 +139481,15 @@ "updateContext": null }, "value": "this", - "start": 35318, - "end": 35322, + "start": 35258, + "end": 35262, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 8 }, "end": { - "line": 1021, + "line": 1020, "column": 12 } } @@ -139785,15 +139507,15 @@ "binop": null, "updateContext": null }, - "start": 35322, - "end": 35323, + "start": 35262, + "end": 35263, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 12 }, "end": { - "line": 1021, + "line": 1020, "column": 13 } } @@ -139811,15 +139533,15 @@ "binop": null }, "value": "_controllers", - "start": 35323, - "end": 35335, + "start": 35263, + "end": 35275, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 13 }, "end": { - "line": 1021, + "line": 1020, "column": 25 } } @@ -139837,15 +139559,15 @@ "binop": null, "updateContext": null }, - "start": 35335, - "end": 35336, + "start": 35275, + "end": 35276, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 25 }, "end": { - "line": 1021, + "line": 1020, "column": 26 } } @@ -139863,15 +139585,15 @@ "binop": null }, "value": "pivotController", - "start": 35336, - "end": 35351, + "start": 35276, + "end": 35291, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 26 }, "end": { - "line": 1021, + "line": 1020, "column": 41 } } @@ -139889,15 +139611,15 @@ "binop": null, "updateContext": null }, - "start": 35351, - "end": 35352, + "start": 35291, + "end": 35292, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 41 }, "end": { - "line": 1021, + "line": 1020, "column": 42 } } @@ -139915,15 +139637,15 @@ "binop": null }, "value": "setPivotPos", - "start": 35352, - "end": 35363, + "start": 35292, + "end": 35303, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 42 }, "end": { - "line": 1021, + "line": 1020, "column": 53 } } @@ -139940,15 +139662,15 @@ "postfix": false, "binop": null }, - "start": 35363, - "end": 35364, + "start": 35303, + "end": 35304, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 53 }, "end": { - "line": 1021, + "line": 1020, "column": 54 } } @@ -139966,15 +139688,15 @@ "binop": null }, "value": "worldPos", - "start": 35364, - "end": 35372, + "start": 35304, + "end": 35312, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 54 }, "end": { - "line": 1021, + "line": 1020, "column": 62 } } @@ -139991,15 +139713,15 @@ "postfix": false, "binop": null }, - "start": 35372, - "end": 35373, + "start": 35312, + "end": 35313, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 62 }, "end": { - "line": 1021, + "line": 1020, "column": 63 } } @@ -140017,15 +139739,15 @@ "binop": null, "updateContext": null }, - "start": 35373, - "end": 35374, + "start": 35313, + "end": 35314, "loc": { "start": { - "line": 1021, + "line": 1020, "column": 63 }, "end": { - "line": 1021, + "line": 1020, "column": 64 } } @@ -140042,15 +139764,15 @@ "postfix": false, "binop": null }, - "start": 35379, - "end": 35380, + "start": 35319, + "end": 35320, "loc": { "start": { - "line": 1022, + "line": 1021, "column": 4 }, "end": { - "line": 1022, + "line": 1021, "column": 5 } } @@ -140058,15 +139780,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 35386, - "end": 35622, + "start": 35326, + "end": 35562, "loc": { "start": { - "line": 1024, + "line": 1023, "column": 4 }, "end": { - "line": 1030, + "line": 1029, "column": 7 } } @@ -140084,15 +139806,15 @@ "binop": null }, "value": "get", - "start": 35627, - "end": 35630, + "start": 35567, + "end": 35570, "loc": { "start": { - "line": 1031, + "line": 1030, "column": 4 }, "end": { - "line": 1031, + "line": 1030, "column": 7 } } @@ -140110,15 +139832,15 @@ "binop": null }, "value": "pivotPos", - "start": 35631, - "end": 35639, + "start": 35571, + "end": 35579, "loc": { "start": { - "line": 1031, + "line": 1030, "column": 8 }, "end": { - "line": 1031, + "line": 1030, "column": 16 } } @@ -140135,15 +139857,15 @@ "postfix": false, "binop": null }, - "start": 35639, - "end": 35640, + "start": 35579, + "end": 35580, "loc": { "start": { - "line": 1031, + "line": 1030, "column": 16 }, "end": { - "line": 1031, + "line": 1030, "column": 17 } } @@ -140160,15 +139882,15 @@ "postfix": false, "binop": null }, - "start": 35640, - "end": 35641, + "start": 35580, + "end": 35581, "loc": { "start": { - "line": 1031, + "line": 1030, "column": 17 }, "end": { - "line": 1031, + "line": 1030, "column": 18 } } @@ -140185,15 +139907,15 @@ "postfix": false, "binop": null }, - "start": 35642, - "end": 35643, + "start": 35582, + "end": 35583, "loc": { "start": { - "line": 1031, + "line": 1030, "column": 19 }, "end": { - "line": 1031, + "line": 1030, "column": 20 } } @@ -140213,15 +139935,15 @@ "updateContext": null }, "value": "return", - "start": 35652, - "end": 35658, + "start": 35592, + "end": 35598, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 8 }, "end": { - "line": 1032, + "line": 1031, "column": 14 } } @@ -140241,15 +139963,15 @@ "updateContext": null }, "value": "this", - "start": 35659, - "end": 35663, + "start": 35599, + "end": 35603, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 15 }, "end": { - "line": 1032, + "line": 1031, "column": 19 } } @@ -140267,15 +139989,15 @@ "binop": null, "updateContext": null }, - "start": 35663, - "end": 35664, + "start": 35603, + "end": 35604, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 19 }, "end": { - "line": 1032, + "line": 1031, "column": 20 } } @@ -140293,15 +140015,15 @@ "binop": null }, "value": "_controllers", - "start": 35664, - "end": 35676, + "start": 35604, + "end": 35616, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 20 }, "end": { - "line": 1032, + "line": 1031, "column": 32 } } @@ -140319,15 +140041,15 @@ "binop": null, "updateContext": null }, - "start": 35676, - "end": 35677, + "start": 35616, + "end": 35617, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 32 }, "end": { - "line": 1032, + "line": 1031, "column": 33 } } @@ -140345,15 +140067,15 @@ "binop": null }, "value": "pivotController", - "start": 35677, - "end": 35692, + "start": 35617, + "end": 35632, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 33 }, "end": { - "line": 1032, + "line": 1031, "column": 48 } } @@ -140371,15 +140093,15 @@ "binop": null, "updateContext": null }, - "start": 35692, - "end": 35693, + "start": 35632, + "end": 35633, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 48 }, "end": { - "line": 1032, + "line": 1031, "column": 49 } } @@ -140397,15 +140119,15 @@ "binop": null }, "value": "getPivotPos", - "start": 35693, - "end": 35704, + "start": 35633, + "end": 35644, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 49 }, "end": { - "line": 1032, + "line": 1031, "column": 60 } } @@ -140422,15 +140144,15 @@ "postfix": false, "binop": null }, - "start": 35704, - "end": 35705, + "start": 35644, + "end": 35645, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 60 }, "end": { - "line": 1032, + "line": 1031, "column": 61 } } @@ -140447,15 +140169,15 @@ "postfix": false, "binop": null }, - "start": 35705, - "end": 35706, + "start": 35645, + "end": 35646, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 61 }, "end": { - "line": 1032, + "line": 1031, "column": 62 } } @@ -140473,15 +140195,15 @@ "binop": null, "updateContext": null }, - "start": 35706, - "end": 35707, + "start": 35646, + "end": 35647, "loc": { "start": { - "line": 1032, + "line": 1031, "column": 62 }, "end": { - "line": 1032, + "line": 1031, "column": 63 } } @@ -140498,15 +140220,15 @@ "postfix": false, "binop": null }, - "start": 35712, - "end": 35713, + "start": 35652, + "end": 35653, "loc": { "start": { - "line": 1033, + "line": 1032, "column": 4 }, "end": { - "line": 1033, + "line": 1032, "column": 5 } } @@ -140514,15 +140236,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n ", - "start": 35719, - "end": 35834, + "start": 35659, + "end": 35774, "loc": { "start": { - "line": 1035, + "line": 1034, "column": 4 }, "end": { - "line": 1038, + "line": 1037, "column": 7 } } @@ -140540,15 +140262,15 @@ "binop": null }, "value": "set", - "start": 35839, - "end": 35842, + "start": 35779, + "end": 35782, "loc": { "start": { - "line": 1039, + "line": 1038, "column": 4 }, "end": { - "line": 1039, + "line": 1038, "column": 7 } } @@ -140566,15 +140288,15 @@ "binop": null }, "value": "dollyToPointer", - "start": 35843, - "end": 35857, + "start": 35783, + "end": 35797, "loc": { "start": { - "line": 1039, + "line": 1038, "column": 8 }, "end": { - "line": 1039, + "line": 1038, "column": 22 } } @@ -140591,15 +140313,15 @@ "postfix": false, "binop": null }, - "start": 35857, - "end": 35858, + "start": 35797, + "end": 35798, "loc": { "start": { - "line": 1039, + "line": 1038, "column": 22 }, "end": { - "line": 1039, + "line": 1038, "column": 23 } } @@ -140617,15 +140339,15 @@ "binop": null }, "value": "value", - "start": 35858, - "end": 35863, + "start": 35798, + "end": 35803, "loc": { "start": { - "line": 1039, + "line": 1038, "column": 23 }, "end": { - "line": 1039, + "line": 1038, "column": 28 } } @@ -140642,15 +140364,15 @@ "postfix": false, "binop": null }, - "start": 35863, - "end": 35864, + "start": 35803, + "end": 35804, "loc": { "start": { - "line": 1039, + "line": 1038, "column": 28 }, "end": { - "line": 1039, + "line": 1038, "column": 29 } } @@ -140667,15 +140389,15 @@ "postfix": false, "binop": null }, - "start": 35865, - "end": 35866, + "start": 35805, + "end": 35806, "loc": { "start": { - "line": 1039, + "line": 1038, "column": 30 }, "end": { - "line": 1039, + "line": 1038, "column": 31 } } @@ -140695,15 +140417,15 @@ "updateContext": null }, "value": "this", - "start": 35875, - "end": 35879, + "start": 35815, + "end": 35819, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 8 }, "end": { - "line": 1040, + "line": 1039, "column": 12 } } @@ -140721,15 +140443,15 @@ "binop": null, "updateContext": null }, - "start": 35879, - "end": 35880, + "start": 35819, + "end": 35820, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 12 }, "end": { - "line": 1040, + "line": 1039, "column": 13 } } @@ -140747,15 +140469,15 @@ "binop": null }, "value": "warn", - "start": 35880, - "end": 35884, + "start": 35820, + "end": 35824, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 13 }, "end": { - "line": 1040, + "line": 1039, "column": 17 } } @@ -140772,15 +140494,15 @@ "postfix": false, "binop": null }, - "start": 35884, - "end": 35885, + "start": 35824, + "end": 35825, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 17 }, "end": { - "line": 1040, + "line": 1039, "column": 18 } } @@ -140799,15 +140521,15 @@ "updateContext": null }, "value": "dollyToPointer property is deprecated - replaced with followPointer", - "start": 35885, - "end": 35954, + "start": 35825, + "end": 35894, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 18 }, "end": { - "line": 1040, + "line": 1039, "column": 87 } } @@ -140824,15 +140546,15 @@ "postfix": false, "binop": null }, - "start": 35954, - "end": 35955, + "start": 35894, + "end": 35895, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 87 }, "end": { - "line": 1040, + "line": 1039, "column": 88 } } @@ -140850,15 +140572,15 @@ "binop": null, "updateContext": null }, - "start": 35955, - "end": 35956, + "start": 35895, + "end": 35896, "loc": { "start": { - "line": 1040, + "line": 1039, "column": 88 }, "end": { - "line": 1040, + "line": 1039, "column": 89 } } @@ -140878,15 +140600,15 @@ "updateContext": null }, "value": "this", - "start": 35965, - "end": 35969, + "start": 35905, + "end": 35909, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 8 }, "end": { - "line": 1041, + "line": 1040, "column": 12 } } @@ -140904,15 +140626,15 @@ "binop": null, "updateContext": null }, - "start": 35969, - "end": 35970, + "start": 35909, + "end": 35910, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 12 }, "end": { - "line": 1041, + "line": 1040, "column": 13 } } @@ -140930,15 +140652,15 @@ "binop": null }, "value": "followPointer", - "start": 35970, - "end": 35983, + "start": 35910, + "end": 35923, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 13 }, "end": { - "line": 1041, + "line": 1040, "column": 26 } } @@ -140957,15 +140679,15 @@ "updateContext": null }, "value": "=", - "start": 35984, - "end": 35985, + "start": 35924, + "end": 35925, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 27 }, "end": { - "line": 1041, + "line": 1040, "column": 28 } } @@ -140983,15 +140705,15 @@ "binop": null }, "value": "value", - "start": 35986, - "end": 35991, + "start": 35926, + "end": 35931, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 29 }, "end": { - "line": 1041, + "line": 1040, "column": 34 } } @@ -141009,15 +140731,15 @@ "binop": null, "updateContext": null }, - "start": 35991, - "end": 35992, + "start": 35931, + "end": 35932, "loc": { "start": { - "line": 1041, + "line": 1040, "column": 34 }, "end": { - "line": 1041, + "line": 1040, "column": 35 } } @@ -141034,15 +140756,15 @@ "postfix": false, "binop": null }, - "start": 35997, - "end": 35998, + "start": 35937, + "end": 35938, "loc": { "start": { - "line": 1042, + "line": 1041, "column": 4 }, "end": { - "line": 1042, + "line": 1041, "column": 5 } } @@ -141050,15 +140772,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n ", - "start": 36004, - "end": 36123, + "start": 35944, + "end": 36063, "loc": { "start": { - "line": 1044, + "line": 1043, "column": 4 }, "end": { - "line": 1047, + "line": 1046, "column": 7 } } @@ -141076,15 +140798,15 @@ "binop": null }, "value": "get", - "start": 36128, - "end": 36131, + "start": 36068, + "end": 36071, "loc": { "start": { - "line": 1048, + "line": 1047, "column": 4 }, "end": { - "line": 1048, + "line": 1047, "column": 7 } } @@ -141102,15 +140824,15 @@ "binop": null }, "value": "dollyToPointer", - "start": 36132, - "end": 36146, + "start": 36072, + "end": 36086, "loc": { "start": { - "line": 1048, + "line": 1047, "column": 8 }, "end": { - "line": 1048, + "line": 1047, "column": 22 } } @@ -141127,15 +140849,15 @@ "postfix": false, "binop": null }, - "start": 36146, - "end": 36147, + "start": 36086, + "end": 36087, "loc": { "start": { - "line": 1048, + "line": 1047, "column": 22 }, "end": { - "line": 1048, + "line": 1047, "column": 23 } } @@ -141152,15 +140874,15 @@ "postfix": false, "binop": null }, - "start": 36147, - "end": 36148, + "start": 36087, + "end": 36088, "loc": { "start": { - "line": 1048, + "line": 1047, "column": 23 }, "end": { - "line": 1048, + "line": 1047, "column": 24 } } @@ -141177,15 +140899,15 @@ "postfix": false, "binop": null }, - "start": 36149, - "end": 36150, + "start": 36089, + "end": 36090, "loc": { "start": { - "line": 1048, + "line": 1047, "column": 25 }, "end": { - "line": 1048, + "line": 1047, "column": 26 } } @@ -141205,15 +140927,15 @@ "updateContext": null }, "value": "this", - "start": 36159, - "end": 36163, + "start": 36099, + "end": 36103, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 8 }, "end": { - "line": 1049, + "line": 1048, "column": 12 } } @@ -141231,15 +140953,15 @@ "binop": null, "updateContext": null }, - "start": 36163, - "end": 36164, + "start": 36103, + "end": 36104, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 12 }, "end": { - "line": 1049, + "line": 1048, "column": 13 } } @@ -141257,15 +140979,15 @@ "binop": null }, "value": "warn", - "start": 36164, - "end": 36168, + "start": 36104, + "end": 36108, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 13 }, "end": { - "line": 1049, + "line": 1048, "column": 17 } } @@ -141282,15 +141004,15 @@ "postfix": false, "binop": null }, - "start": 36168, - "end": 36169, + "start": 36108, + "end": 36109, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 17 }, "end": { - "line": 1049, + "line": 1048, "column": 18 } } @@ -141309,15 +141031,15 @@ "updateContext": null }, "value": "dollyToPointer property is deprecated - replaced with followPointer", - "start": 36169, - "end": 36238, + "start": 36109, + "end": 36178, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 18 }, "end": { - "line": 1049, + "line": 1048, "column": 87 } } @@ -141334,15 +141056,15 @@ "postfix": false, "binop": null }, - "start": 36238, - "end": 36239, + "start": 36178, + "end": 36179, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 87 }, "end": { - "line": 1049, + "line": 1048, "column": 88 } } @@ -141360,15 +141082,15 @@ "binop": null, "updateContext": null }, - "start": 36239, - "end": 36240, + "start": 36179, + "end": 36180, "loc": { "start": { - "line": 1049, + "line": 1048, "column": 88 }, "end": { - "line": 1049, + "line": 1048, "column": 89 } } @@ -141388,15 +141110,15 @@ "updateContext": null }, "value": "return", - "start": 36249, - "end": 36255, + "start": 36189, + "end": 36195, "loc": { "start": { - "line": 1050, + "line": 1049, "column": 8 }, "end": { - "line": 1050, + "line": 1049, "column": 14 } } @@ -141416,15 +141138,15 @@ "updateContext": null }, "value": "this", - "start": 36256, - "end": 36260, + "start": 36196, + "end": 36200, "loc": { "start": { - "line": 1050, + "line": 1049, "column": 15 }, "end": { - "line": 1050, + "line": 1049, "column": 19 } } @@ -141442,15 +141164,15 @@ "binop": null, "updateContext": null }, - "start": 36260, - "end": 36261, + "start": 36200, + "end": 36201, "loc": { "start": { - "line": 1050, + "line": 1049, "column": 19 }, "end": { - "line": 1050, + "line": 1049, "column": 20 } } @@ -141468,15 +141190,15 @@ "binop": null }, "value": "followPointer", - "start": 36261, - "end": 36274, + "start": 36201, + "end": 36214, "loc": { "start": { - "line": 1050, + "line": 1049, "column": 20 }, "end": { - "line": 1050, + "line": 1049, "column": 33 } } @@ -141494,15 +141216,15 @@ "binop": null, "updateContext": null }, - "start": 36274, - "end": 36275, + "start": 36214, + "end": 36215, "loc": { "start": { - "line": 1050, + "line": 1049, "column": 33 }, "end": { - "line": 1050, + "line": 1049, "column": 34 } } @@ -141519,15 +141241,15 @@ "postfix": false, "binop": null }, - "start": 36280, - "end": 36281, + "start": 36220, + "end": 36221, "loc": { "start": { - "line": 1051, + "line": 1050, "column": 4 }, "end": { - "line": 1051, + "line": 1050, "column": 5 } } @@ -141535,15 +141257,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n ", - "start": 36287, - "end": 36402, + "start": 36227, + "end": 36342, "loc": { "start": { - "line": 1053, + "line": 1052, "column": 4 }, "end": { - "line": 1056, + "line": 1055, "column": 7 } } @@ -141561,15 +141283,15 @@ "binop": null }, "value": "set", - "start": 36407, - "end": 36410, + "start": 36347, + "end": 36350, "loc": { "start": { - "line": 1057, + "line": 1056, "column": 4 }, "end": { - "line": 1057, + "line": 1056, "column": 7 } } @@ -141587,15 +141309,15 @@ "binop": null }, "value": "panToPointer", - "start": 36411, - "end": 36423, + "start": 36351, + "end": 36363, "loc": { "start": { - "line": 1057, + "line": 1056, "column": 8 }, "end": { - "line": 1057, + "line": 1056, "column": 20 } } @@ -141612,15 +141334,15 @@ "postfix": false, "binop": null }, - "start": 36423, - "end": 36424, + "start": 36363, + "end": 36364, "loc": { "start": { - "line": 1057, + "line": 1056, "column": 20 }, "end": { - "line": 1057, + "line": 1056, "column": 21 } } @@ -141638,15 +141360,15 @@ "binop": null }, "value": "value", - "start": 36424, - "end": 36429, + "start": 36364, + "end": 36369, "loc": { "start": { - "line": 1057, + "line": 1056, "column": 21 }, "end": { - "line": 1057, + "line": 1056, "column": 26 } } @@ -141663,15 +141385,15 @@ "postfix": false, "binop": null }, - "start": 36429, - "end": 36430, + "start": 36369, + "end": 36370, "loc": { "start": { - "line": 1057, + "line": 1056, "column": 26 }, "end": { - "line": 1057, + "line": 1056, "column": 27 } } @@ -141688,15 +141410,15 @@ "postfix": false, "binop": null }, - "start": 36431, - "end": 36432, + "start": 36371, + "end": 36372, "loc": { "start": { - "line": 1057, + "line": 1056, "column": 28 }, "end": { - "line": 1057, + "line": 1056, "column": 29 } } @@ -141716,15 +141438,15 @@ "updateContext": null }, "value": "this", - "start": 36441, - "end": 36445, + "start": 36381, + "end": 36385, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 8 }, "end": { - "line": 1058, + "line": 1057, "column": 12 } } @@ -141742,15 +141464,15 @@ "binop": null, "updateContext": null }, - "start": 36445, - "end": 36446, + "start": 36385, + "end": 36386, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 12 }, "end": { - "line": 1058, + "line": 1057, "column": 13 } } @@ -141768,15 +141490,15 @@ "binop": null }, "value": "warn", - "start": 36446, - "end": 36450, + "start": 36386, + "end": 36390, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 13 }, "end": { - "line": 1058, + "line": 1057, "column": 17 } } @@ -141793,15 +141515,15 @@ "postfix": false, "binop": null }, - "start": 36450, - "end": 36451, + "start": 36390, + "end": 36391, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 17 }, "end": { - "line": 1058, + "line": 1057, "column": 18 } } @@ -141820,15 +141542,15 @@ "updateContext": null }, "value": "panToPointer property is deprecated - replaced with followPointer", - "start": 36451, - "end": 36518, + "start": 36391, + "end": 36458, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 18 }, "end": { - "line": 1058, + "line": 1057, "column": 85 } } @@ -141845,15 +141567,15 @@ "postfix": false, "binop": null }, - "start": 36518, - "end": 36519, + "start": 36458, + "end": 36459, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 85 }, "end": { - "line": 1058, + "line": 1057, "column": 86 } } @@ -141871,15 +141593,15 @@ "binop": null, "updateContext": null }, - "start": 36519, - "end": 36520, + "start": 36459, + "end": 36460, "loc": { "start": { - "line": 1058, + "line": 1057, "column": 86 }, "end": { - "line": 1058, + "line": 1057, "column": 87 } } @@ -141896,15 +141618,15 @@ "postfix": false, "binop": null }, - "start": 36525, - "end": 36526, + "start": 36465, + "end": 36466, "loc": { "start": { - "line": 1059, + "line": 1058, "column": 4 }, "end": { - "line": 1059, + "line": 1058, "column": 5 } } @@ -141912,15 +141634,15 @@ { "type": "CommentBlock", "value": "*\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n ", - "start": 36532, - "end": 36651, + "start": 36472, + "end": 36591, "loc": { "start": { - "line": 1061, + "line": 1060, "column": 4 }, "end": { - "line": 1064, + "line": 1063, "column": 7 } } @@ -141938,15 +141660,15 @@ "binop": null }, "value": "get", - "start": 36656, - "end": 36659, + "start": 36596, + "end": 36599, "loc": { "start": { - "line": 1065, + "line": 1064, "column": 4 }, "end": { - "line": 1065, + "line": 1064, "column": 7 } } @@ -141964,15 +141686,15 @@ "binop": null }, "value": "panToPointer", - "start": 36660, - "end": 36672, + "start": 36600, + "end": 36612, "loc": { "start": { - "line": 1065, + "line": 1064, "column": 8 }, "end": { - "line": 1065, + "line": 1064, "column": 20 } } @@ -141989,15 +141711,15 @@ "postfix": false, "binop": null }, - "start": 36672, - "end": 36673, + "start": 36612, + "end": 36613, "loc": { "start": { - "line": 1065, + "line": 1064, "column": 20 }, "end": { - "line": 1065, + "line": 1064, "column": 21 } } @@ -142014,15 +141736,15 @@ "postfix": false, "binop": null }, - "start": 36673, - "end": 36674, + "start": 36613, + "end": 36614, "loc": { "start": { - "line": 1065, + "line": 1064, "column": 21 }, "end": { - "line": 1065, + "line": 1064, "column": 22 } } @@ -142039,15 +141761,15 @@ "postfix": false, "binop": null }, - "start": 36675, - "end": 36676, + "start": 36615, + "end": 36616, "loc": { "start": { - "line": 1065, + "line": 1064, "column": 23 }, "end": { - "line": 1065, + "line": 1064, "column": 24 } } @@ -142067,15 +141789,15 @@ "updateContext": null }, "value": "this", - "start": 36685, - "end": 36689, + "start": 36625, + "end": 36629, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 8 }, "end": { - "line": 1066, + "line": 1065, "column": 12 } } @@ -142093,15 +141815,15 @@ "binop": null, "updateContext": null }, - "start": 36689, - "end": 36690, + "start": 36629, + "end": 36630, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 12 }, "end": { - "line": 1066, + "line": 1065, "column": 13 } } @@ -142119,15 +141841,15 @@ "binop": null }, "value": "warn", - "start": 36690, - "end": 36694, + "start": 36630, + "end": 36634, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 13 }, "end": { - "line": 1066, + "line": 1065, "column": 17 } } @@ -142144,15 +141866,15 @@ "postfix": false, "binop": null }, - "start": 36694, - "end": 36695, + "start": 36634, + "end": 36635, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 17 }, "end": { - "line": 1066, + "line": 1065, "column": 18 } } @@ -142171,15 +141893,15 @@ "updateContext": null }, "value": "panToPointer property is deprecated - replaced with followPointer", - "start": 36695, - "end": 36762, + "start": 36635, + "end": 36702, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 18 }, "end": { - "line": 1066, + "line": 1065, "column": 85 } } @@ -142196,15 +141918,15 @@ "postfix": false, "binop": null }, - "start": 36762, - "end": 36763, + "start": 36702, + "end": 36703, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 85 }, "end": { - "line": 1066, + "line": 1065, "column": 86 } } @@ -142222,15 +141944,15 @@ "binop": null, "updateContext": null }, - "start": 36763, - "end": 36764, + "start": 36703, + "end": 36704, "loc": { "start": { - "line": 1066, + "line": 1065, "column": 86 }, "end": { - "line": 1066, + "line": 1065, "column": 87 } } @@ -142250,15 +141972,15 @@ "updateContext": null }, "value": "return", - "start": 36773, - "end": 36779, + "start": 36713, + "end": 36719, "loc": { "start": { - "line": 1067, + "line": 1066, "column": 8 }, "end": { - "line": 1067, + "line": 1066, "column": 14 } } @@ -142278,15 +142000,15 @@ "updateContext": null }, "value": "false", - "start": 36780, - "end": 36785, + "start": 36720, + "end": 36725, "loc": { "start": { - "line": 1067, + "line": 1066, "column": 15 }, "end": { - "line": 1067, + "line": 1066, "column": 20 } } @@ -142304,15 +142026,15 @@ "binop": null, "updateContext": null }, - "start": 36785, - "end": 36786, + "start": 36725, + "end": 36726, "loc": { "start": { - "line": 1067, + "line": 1066, "column": 20 }, "end": { - "line": 1067, + "line": 1066, "column": 21 } } @@ -142329,15 +142051,15 @@ "postfix": false, "binop": null }, - "start": 36791, - "end": 36792, + "start": 36731, + "end": 36732, "loc": { "start": { - "line": 1068, + "line": 1067, "column": 4 }, "end": { - "line": 1068, + "line": 1067, "column": 5 } } @@ -142345,15 +142067,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 36798, - "end": 37147, + "start": 36738, + "end": 37087, "loc": { "start": { - "line": 1070, + "line": 1069, "column": 4 }, "end": { - "line": 1081, + "line": 1080, "column": 7 } } @@ -142371,15 +142093,15 @@ "binop": null }, "value": "set", - "start": 37152, - "end": 37155, + "start": 37092, + "end": 37095, "loc": { "start": { - "line": 1082, + "line": 1081, "column": 4 }, "end": { - "line": 1082, + "line": 1081, "column": 7 } } @@ -142397,15 +142119,15 @@ "binop": null }, "value": "planView", - "start": 37156, - "end": 37164, + "start": 37096, + "end": 37104, "loc": { "start": { - "line": 1082, + "line": 1081, "column": 8 }, "end": { - "line": 1082, + "line": 1081, "column": 16 } } @@ -142422,15 +142144,15 @@ "postfix": false, "binop": null }, - "start": 37164, - "end": 37165, + "start": 37104, + "end": 37105, "loc": { "start": { - "line": 1082, + "line": 1081, "column": 16 }, "end": { - "line": 1082, + "line": 1081, "column": 17 } } @@ -142448,15 +142170,15 @@ "binop": null }, "value": "value", - "start": 37165, - "end": 37170, + "start": 37105, + "end": 37110, "loc": { "start": { - "line": 1082, + "line": 1081, "column": 17 }, "end": { - "line": 1082, + "line": 1081, "column": 22 } } @@ -142473,15 +142195,15 @@ "postfix": false, "binop": null }, - "start": 37170, - "end": 37171, + "start": 37110, + "end": 37111, "loc": { "start": { - "line": 1082, + "line": 1081, "column": 22 }, "end": { - "line": 1082, + "line": 1081, "column": 23 } } @@ -142498,15 +142220,15 @@ "postfix": false, "binop": null }, - "start": 37172, - "end": 37173, + "start": 37112, + "end": 37113, "loc": { "start": { - "line": 1082, + "line": 1081, "column": 24 }, "end": { - "line": 1082, + "line": 1081, "column": 25 } } @@ -142526,15 +142248,15 @@ "updateContext": null }, "value": "this", - "start": 37182, - "end": 37186, + "start": 37122, + "end": 37126, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 8 }, "end": { - "line": 1083, + "line": 1082, "column": 12 } } @@ -142552,15 +142274,15 @@ "binop": null, "updateContext": null }, - "start": 37186, - "end": 37187, + "start": 37126, + "end": 37127, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 12 }, "end": { - "line": 1083, + "line": 1082, "column": 13 } } @@ -142578,15 +142300,15 @@ "binop": null }, "value": "_configs", - "start": 37187, - "end": 37195, + "start": 37127, + "end": 37135, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 13 }, "end": { - "line": 1083, + "line": 1082, "column": 21 } } @@ -142604,15 +142326,15 @@ "binop": null, "updateContext": null }, - "start": 37195, - "end": 37196, + "start": 37135, + "end": 37136, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 21 }, "end": { - "line": 1083, + "line": 1082, "column": 22 } } @@ -142630,15 +142352,15 @@ "binop": null }, "value": "planView", - "start": 37196, - "end": 37204, + "start": 37136, + "end": 37144, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 22 }, "end": { - "line": 1083, + "line": 1082, "column": 30 } } @@ -142657,15 +142379,15 @@ "updateContext": null }, "value": "=", - "start": 37205, - "end": 37206, + "start": 37145, + "end": 37146, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 31 }, "end": { - "line": 1083, + "line": 1082, "column": 32 } } @@ -142684,15 +142406,15 @@ "updateContext": null }, "value": "!", - "start": 37207, - "end": 37208, + "start": 37147, + "end": 37148, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 33 }, "end": { - "line": 1083, + "line": 1082, "column": 34 } } @@ -142711,15 +142433,15 @@ "updateContext": null }, "value": "!", - "start": 37208, - "end": 37209, + "start": 37148, + "end": 37149, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 34 }, "end": { - "line": 1083, + "line": 1082, "column": 35 } } @@ -142737,15 +142459,15 @@ "binop": null }, "value": "value", - "start": 37209, - "end": 37214, + "start": 37149, + "end": 37154, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 35 }, "end": { - "line": 1083, + "line": 1082, "column": 40 } } @@ -142763,15 +142485,15 @@ "binop": null, "updateContext": null }, - "start": 37214, - "end": 37215, + "start": 37154, + "end": 37155, "loc": { "start": { - "line": 1083, + "line": 1082, "column": 40 }, "end": { - "line": 1083, + "line": 1082, "column": 41 } } @@ -142791,15 +142513,15 @@ "updateContext": null }, "value": "this", - "start": 37224, - "end": 37228, + "start": 37164, + "end": 37168, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 8 }, "end": { - "line": 1084, + "line": 1083, "column": 12 } } @@ -142817,15 +142539,15 @@ "binop": null, "updateContext": null }, - "start": 37228, - "end": 37229, + "start": 37168, + "end": 37169, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 12 }, "end": { - "line": 1084, + "line": 1083, "column": 13 } } @@ -142843,15 +142565,15 @@ "binop": null }, "value": "_configs", - "start": 37229, - "end": 37237, + "start": 37169, + "end": 37177, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 13 }, "end": { - "line": 1084, + "line": 1083, "column": 21 } } @@ -142869,15 +142591,15 @@ "binop": null, "updateContext": null }, - "start": 37237, - "end": 37238, + "start": 37177, + "end": 37178, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 21 }, "end": { - "line": 1084, + "line": 1083, "column": 22 } } @@ -142895,15 +142617,15 @@ "binop": null }, "value": "firstPerson", - "start": 37238, - "end": 37249, + "start": 37178, + "end": 37189, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 22 }, "end": { - "line": 1084, + "line": 1083, "column": 33 } } @@ -142922,15 +142644,15 @@ "updateContext": null }, "value": "=", - "start": 37250, - "end": 37251, + "start": 37190, + "end": 37191, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 34 }, "end": { - "line": 1084, + "line": 1083, "column": 35 } } @@ -142950,15 +142672,15 @@ "updateContext": null }, "value": "false", - "start": 37252, - "end": 37257, + "start": 37192, + "end": 37197, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 36 }, "end": { - "line": 1084, + "line": 1083, "column": 41 } } @@ -142976,15 +142698,15 @@ "binop": null, "updateContext": null }, - "start": 37257, - "end": 37258, + "start": 37197, + "end": 37198, "loc": { "start": { - "line": 1084, + "line": 1083, "column": 41 }, "end": { - "line": 1084, + "line": 1083, "column": 42 } } @@ -143004,15 +142726,15 @@ "updateContext": null }, "value": "if", - "start": 37267, - "end": 37269, + "start": 37207, + "end": 37209, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 8 }, "end": { - "line": 1085, + "line": 1084, "column": 10 } } @@ -143029,15 +142751,15 @@ "postfix": false, "binop": null }, - "start": 37270, - "end": 37271, + "start": 37210, + "end": 37211, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 11 }, "end": { - "line": 1085, + "line": 1084, "column": 12 } } @@ -143057,15 +142779,15 @@ "updateContext": null }, "value": "this", - "start": 37271, - "end": 37275, + "start": 37211, + "end": 37215, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 12 }, "end": { - "line": 1085, + "line": 1084, "column": 16 } } @@ -143083,15 +142805,15 @@ "binop": null, "updateContext": null }, - "start": 37275, - "end": 37276, + "start": 37215, + "end": 37216, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 16 }, "end": { - "line": 1085, + "line": 1084, "column": 17 } } @@ -143109,15 +142831,15 @@ "binop": null }, "value": "_configs", - "start": 37276, - "end": 37284, + "start": 37216, + "end": 37224, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 17 }, "end": { - "line": 1085, + "line": 1084, "column": 25 } } @@ -143135,15 +142857,15 @@ "binop": null, "updateContext": null }, - "start": 37284, - "end": 37285, + "start": 37224, + "end": 37225, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 25 }, "end": { - "line": 1085, + "line": 1084, "column": 26 } } @@ -143161,15 +142883,15 @@ "binop": null }, "value": "planView", - "start": 37285, - "end": 37293, + "start": 37225, + "end": 37233, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 26 }, "end": { - "line": 1085, + "line": 1084, "column": 34 } } @@ -143186,15 +142908,15 @@ "postfix": false, "binop": null }, - "start": 37293, - "end": 37294, + "start": 37233, + "end": 37234, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 34 }, "end": { - "line": 1085, + "line": 1084, "column": 35 } } @@ -143211,15 +142933,15 @@ "postfix": false, "binop": null }, - "start": 37295, - "end": 37296, + "start": 37235, + "end": 37236, "loc": { "start": { - "line": 1085, + "line": 1084, "column": 36 }, "end": { - "line": 1085, + "line": 1084, "column": 37 } } @@ -143239,15 +142961,15 @@ "updateContext": null }, "value": "this", - "start": 37309, - "end": 37313, + "start": 37249, + "end": 37253, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 12 }, "end": { - "line": 1086, + "line": 1085, "column": 16 } } @@ -143265,15 +142987,15 @@ "binop": null, "updateContext": null }, - "start": 37313, - "end": 37314, + "start": 37253, + "end": 37254, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 16 }, "end": { - "line": 1086, + "line": 1085, "column": 17 } } @@ -143291,15 +143013,15 @@ "binop": null }, "value": "_controllers", - "start": 37314, - "end": 37326, + "start": 37254, + "end": 37266, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 17 }, "end": { - "line": 1086, + "line": 1085, "column": 29 } } @@ -143317,15 +143039,15 @@ "binop": null, "updateContext": null }, - "start": 37326, - "end": 37327, + "start": 37266, + "end": 37267, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 29 }, "end": { - "line": 1086, + "line": 1085, "column": 30 } } @@ -143343,15 +143065,15 @@ "binop": null }, "value": "pivotController", - "start": 37327, - "end": 37342, + "start": 37267, + "end": 37282, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 30 }, "end": { - "line": 1086, + "line": 1085, "column": 45 } } @@ -143369,15 +143091,15 @@ "binop": null, "updateContext": null }, - "start": 37342, - "end": 37343, + "start": 37282, + "end": 37283, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 45 }, "end": { - "line": 1086, + "line": 1085, "column": 46 } } @@ -143395,15 +143117,15 @@ "binop": null }, "value": "hidePivot", - "start": 37343, - "end": 37352, + "start": 37283, + "end": 37292, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 46 }, "end": { - "line": 1086, + "line": 1085, "column": 55 } } @@ -143420,15 +143142,15 @@ "postfix": false, "binop": null }, - "start": 37352, - "end": 37353, + "start": 37292, + "end": 37293, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 55 }, "end": { - "line": 1086, + "line": 1085, "column": 56 } } @@ -143445,15 +143167,15 @@ "postfix": false, "binop": null }, - "start": 37353, - "end": 37354, + "start": 37293, + "end": 37294, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 56 }, "end": { - "line": 1086, + "line": 1085, "column": 57 } } @@ -143471,15 +143193,15 @@ "binop": null, "updateContext": null }, - "start": 37354, - "end": 37355, + "start": 37294, + "end": 37295, "loc": { "start": { - "line": 1086, + "line": 1085, "column": 57 }, "end": { - "line": 1086, + "line": 1085, "column": 58 } } @@ -143499,15 +143221,15 @@ "updateContext": null }, "value": "this", - "start": 37368, - "end": 37372, + "start": 37308, + "end": 37312, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 12 }, "end": { - "line": 1087, + "line": 1086, "column": 16 } } @@ -143525,15 +143247,15 @@ "binop": null, "updateContext": null }, - "start": 37372, - "end": 37373, + "start": 37312, + "end": 37313, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 16 }, "end": { - "line": 1087, + "line": 1086, "column": 17 } } @@ -143551,15 +143273,15 @@ "binop": null }, "value": "_controllers", - "start": 37373, - "end": 37385, + "start": 37313, + "end": 37325, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 17 }, "end": { - "line": 1087, + "line": 1086, "column": 29 } } @@ -143577,15 +143299,15 @@ "binop": null, "updateContext": null }, - "start": 37385, - "end": 37386, + "start": 37325, + "end": 37326, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 29 }, "end": { - "line": 1087, + "line": 1086, "column": 30 } } @@ -143603,15 +143325,15 @@ "binop": null }, "value": "pivotController", - "start": 37386, - "end": 37401, + "start": 37326, + "end": 37341, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 30 }, "end": { - "line": 1087, + "line": 1086, "column": 45 } } @@ -143629,15 +143351,15 @@ "binop": null, "updateContext": null }, - "start": 37401, - "end": 37402, + "start": 37341, + "end": 37342, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 45 }, "end": { - "line": 1087, + "line": 1086, "column": 46 } } @@ -143655,15 +143377,15 @@ "binop": null }, "value": "endPivot", - "start": 37402, - "end": 37410, + "start": 37342, + "end": 37350, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 46 }, "end": { - "line": 1087, + "line": 1086, "column": 54 } } @@ -143680,15 +143402,15 @@ "postfix": false, "binop": null }, - "start": 37410, - "end": 37411, + "start": 37350, + "end": 37351, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 54 }, "end": { - "line": 1087, + "line": 1086, "column": 55 } } @@ -143705,15 +143427,15 @@ "postfix": false, "binop": null }, - "start": 37411, - "end": 37412, + "start": 37351, + "end": 37352, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 55 }, "end": { - "line": 1087, + "line": 1086, "column": 56 } } @@ -143731,15 +143453,15 @@ "binop": null, "updateContext": null }, - "start": 37412, - "end": 37413, + "start": 37352, + "end": 37353, "loc": { "start": { - "line": 1087, + "line": 1086, "column": 56 }, "end": { - "line": 1087, + "line": 1086, "column": 57 } } @@ -143756,15 +143478,15 @@ "postfix": false, "binop": null }, - "start": 37422, - "end": 37423, + "start": 37362, + "end": 37363, "loc": { "start": { - "line": 1088, + "line": 1087, "column": 8 }, "end": { - "line": 1088, + "line": 1087, "column": 9 } } @@ -143784,15 +143506,15 @@ "updateContext": null }, "value": "this", - "start": 37432, - "end": 37436, + "start": 37372, + "end": 37376, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 8 }, "end": { - "line": 1089, + "line": 1088, "column": 12 } } @@ -143810,15 +143532,15 @@ "binop": null, "updateContext": null }, - "start": 37436, - "end": 37437, + "start": 37376, + "end": 37377, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 12 }, "end": { - "line": 1089, + "line": 1088, "column": 13 } } @@ -143836,15 +143558,15 @@ "binop": null }, "value": "warn", - "start": 37437, - "end": 37441, + "start": 37377, + "end": 37381, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 13 }, "end": { - "line": 1089, + "line": 1088, "column": 17 } } @@ -143861,15 +143583,15 @@ "postfix": false, "binop": null }, - "start": 37441, - "end": 37442, + "start": 37381, + "end": 37382, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 17 }, "end": { - "line": 1089, + "line": 1088, "column": 18 } } @@ -143888,15 +143610,15 @@ "updateContext": null }, "value": "planView property is deprecated - replaced with navMode", - "start": 37442, - "end": 37499, + "start": 37382, + "end": 37439, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 18 }, "end": { - "line": 1089, + "line": 1088, "column": 75 } } @@ -143913,15 +143635,15 @@ "postfix": false, "binop": null }, - "start": 37499, - "end": 37500, + "start": 37439, + "end": 37440, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 75 }, "end": { - "line": 1089, + "line": 1088, "column": 76 } } @@ -143939,15 +143661,15 @@ "binop": null, "updateContext": null }, - "start": 37500, - "end": 37501, + "start": 37440, + "end": 37441, "loc": { "start": { - "line": 1089, + "line": 1088, "column": 76 }, "end": { - "line": 1089, + "line": 1088, "column": 77 } } @@ -143964,15 +143686,15 @@ "postfix": false, "binop": null }, - "start": 37506, - "end": 37507, + "start": 37446, + "end": 37447, "loc": { "start": { - "line": 1090, + "line": 1089, "column": 4 }, "end": { - "line": 1090, + "line": 1089, "column": 5 } } @@ -143980,15 +143702,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 37513, - "end": 37866, + "start": 37453, + "end": 37806, "loc": { "start": { - "line": 1092, + "line": 1091, "column": 4 }, "end": { - "line": 1103, + "line": 1102, "column": 7 } } @@ -144006,15 +143728,15 @@ "binop": null }, "value": "get", - "start": 37871, - "end": 37874, + "start": 37811, + "end": 37814, "loc": { "start": { - "line": 1104, + "line": 1103, "column": 4 }, "end": { - "line": 1104, + "line": 1103, "column": 7 } } @@ -144032,15 +143754,15 @@ "binop": null }, "value": "planView", - "start": 37875, - "end": 37883, + "start": 37815, + "end": 37823, "loc": { "start": { - "line": 1104, + "line": 1103, "column": 8 }, "end": { - "line": 1104, + "line": 1103, "column": 16 } } @@ -144057,15 +143779,15 @@ "postfix": false, "binop": null }, - "start": 37883, - "end": 37884, + "start": 37823, + "end": 37824, "loc": { "start": { - "line": 1104, + "line": 1103, "column": 16 }, "end": { - "line": 1104, + "line": 1103, "column": 17 } } @@ -144082,15 +143804,15 @@ "postfix": false, "binop": null }, - "start": 37884, - "end": 37885, + "start": 37824, + "end": 37825, "loc": { "start": { - "line": 1104, + "line": 1103, "column": 17 }, "end": { - "line": 1104, + "line": 1103, "column": 18 } } @@ -144107,15 +143829,15 @@ "postfix": false, "binop": null }, - "start": 37886, - "end": 37887, + "start": 37826, + "end": 37827, "loc": { "start": { - "line": 1104, + "line": 1103, "column": 19 }, "end": { - "line": 1104, + "line": 1103, "column": 20 } } @@ -144135,15 +143857,15 @@ "updateContext": null }, "value": "this", - "start": 37896, - "end": 37900, + "start": 37836, + "end": 37840, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 8 }, "end": { - "line": 1105, + "line": 1104, "column": 12 } } @@ -144161,15 +143883,15 @@ "binop": null, "updateContext": null }, - "start": 37900, - "end": 37901, + "start": 37840, + "end": 37841, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 12 }, "end": { - "line": 1105, + "line": 1104, "column": 13 } } @@ -144187,15 +143909,15 @@ "binop": null }, "value": "warn", - "start": 37901, - "end": 37905, + "start": 37841, + "end": 37845, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 13 }, "end": { - "line": 1105, + "line": 1104, "column": 17 } } @@ -144212,15 +143934,15 @@ "postfix": false, "binop": null }, - "start": 37905, - "end": 37906, + "start": 37845, + "end": 37846, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 17 }, "end": { - "line": 1105, + "line": 1104, "column": 18 } } @@ -144239,15 +143961,15 @@ "updateContext": null }, "value": "planView property is deprecated - replaced with navMode", - "start": 37906, - "end": 37963, + "start": 37846, + "end": 37903, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 18 }, "end": { - "line": 1105, + "line": 1104, "column": 75 } } @@ -144264,15 +143986,15 @@ "postfix": false, "binop": null }, - "start": 37963, - "end": 37964, + "start": 37903, + "end": 37904, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 75 }, "end": { - "line": 1105, + "line": 1104, "column": 76 } } @@ -144290,15 +144012,15 @@ "binop": null, "updateContext": null }, - "start": 37964, - "end": 37965, + "start": 37904, + "end": 37905, "loc": { "start": { - "line": 1105, + "line": 1104, "column": 76 }, "end": { - "line": 1105, + "line": 1104, "column": 77 } } @@ -144318,15 +144040,15 @@ "updateContext": null }, "value": "return", - "start": 37974, - "end": 37980, + "start": 37914, + "end": 37920, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 8 }, "end": { - "line": 1106, + "line": 1105, "column": 14 } } @@ -144346,15 +144068,15 @@ "updateContext": null }, "value": "this", - "start": 37981, - "end": 37985, + "start": 37921, + "end": 37925, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 15 }, "end": { - "line": 1106, + "line": 1105, "column": 19 } } @@ -144372,15 +144094,15 @@ "binop": null, "updateContext": null }, - "start": 37985, - "end": 37986, + "start": 37925, + "end": 37926, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 19 }, "end": { - "line": 1106, + "line": 1105, "column": 20 } } @@ -144398,15 +144120,15 @@ "binop": null }, "value": "_configs", - "start": 37986, - "end": 37994, + "start": 37926, + "end": 37934, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 20 }, "end": { - "line": 1106, + "line": 1105, "column": 28 } } @@ -144424,15 +144146,15 @@ "binop": null, "updateContext": null }, - "start": 37994, - "end": 37995, + "start": 37934, + "end": 37935, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 28 }, "end": { - "line": 1106, + "line": 1105, "column": 29 } } @@ -144450,15 +144172,15 @@ "binop": null }, "value": "planView", - "start": 37995, - "end": 38003, + "start": 37935, + "end": 37943, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 29 }, "end": { - "line": 1106, + "line": 1105, "column": 37 } } @@ -144476,15 +144198,15 @@ "binop": null, "updateContext": null }, - "start": 38003, - "end": 38004, + "start": 37943, + "end": 37944, "loc": { "start": { - "line": 1106, + "line": 1105, "column": 37 }, "end": { - "line": 1106, + "line": 1105, "column": 38 } } @@ -144501,15 +144223,15 @@ "postfix": false, "binop": null }, - "start": 38009, - "end": 38010, + "start": 37949, + "end": 37950, "loc": { "start": { - "line": 1107, + "line": 1106, "column": 4 }, "end": { - "line": 1107, + "line": 1106, "column": 5 } } @@ -144517,15 +144239,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 38016, - "end": 38486, + "start": 37956, + "end": 38426, "loc": { "start": { - "line": 1109, + "line": 1108, "column": 4 }, "end": { - "line": 1120, + "line": 1119, "column": 7 } } @@ -144543,15 +144265,15 @@ "binop": null }, "value": "set", - "start": 38491, - "end": 38494, + "start": 38431, + "end": 38434, "loc": { "start": { - "line": 1121, + "line": 1120, "column": 4 }, "end": { - "line": 1121, + "line": 1120, "column": 7 } } @@ -144569,15 +144291,15 @@ "binop": null }, "value": "firstPerson", - "start": 38495, - "end": 38506, + "start": 38435, + "end": 38446, "loc": { "start": { - "line": 1121, + "line": 1120, "column": 8 }, "end": { - "line": 1121, + "line": 1120, "column": 19 } } @@ -144594,15 +144316,15 @@ "postfix": false, "binop": null }, - "start": 38506, - "end": 38507, + "start": 38446, + "end": 38447, "loc": { "start": { - "line": 1121, + "line": 1120, "column": 19 }, "end": { - "line": 1121, + "line": 1120, "column": 20 } } @@ -144620,15 +144342,15 @@ "binop": null }, "value": "value", - "start": 38507, - "end": 38512, + "start": 38447, + "end": 38452, "loc": { "start": { - "line": 1121, + "line": 1120, "column": 20 }, "end": { - "line": 1121, + "line": 1120, "column": 25 } } @@ -144645,15 +144367,15 @@ "postfix": false, "binop": null }, - "start": 38512, - "end": 38513, + "start": 38452, + "end": 38453, "loc": { "start": { - "line": 1121, + "line": 1120, "column": 25 }, "end": { - "line": 1121, + "line": 1120, "column": 26 } } @@ -144670,15 +144392,15 @@ "postfix": false, "binop": null }, - "start": 38514, - "end": 38515, + "start": 38454, + "end": 38455, "loc": { "start": { - "line": 1121, + "line": 1120, "column": 27 }, "end": { - "line": 1121, + "line": 1120, "column": 28 } } @@ -144698,15 +144420,15 @@ "updateContext": null }, "value": "this", - "start": 38524, - "end": 38528, + "start": 38464, + "end": 38468, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 8 }, "end": { - "line": 1122, + "line": 1121, "column": 12 } } @@ -144724,15 +144446,15 @@ "binop": null, "updateContext": null }, - "start": 38528, - "end": 38529, + "start": 38468, + "end": 38469, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 12 }, "end": { - "line": 1122, + "line": 1121, "column": 13 } } @@ -144750,15 +144472,15 @@ "binop": null }, "value": "warn", - "start": 38529, - "end": 38533, + "start": 38469, + "end": 38473, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 13 }, "end": { - "line": 1122, + "line": 1121, "column": 17 } } @@ -144775,15 +144497,15 @@ "postfix": false, "binop": null }, - "start": 38533, - "end": 38534, + "start": 38473, + "end": 38474, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 17 }, "end": { - "line": 1122, + "line": 1121, "column": 18 } } @@ -144802,15 +144524,15 @@ "updateContext": null }, "value": "firstPerson property is deprecated - replaced with navMode", - "start": 38534, - "end": 38594, + "start": 38474, + "end": 38534, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 18 }, "end": { - "line": 1122, + "line": 1121, "column": 78 } } @@ -144827,15 +144549,15 @@ "postfix": false, "binop": null }, - "start": 38594, - "end": 38595, + "start": 38534, + "end": 38535, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 78 }, "end": { - "line": 1122, + "line": 1121, "column": 79 } } @@ -144853,15 +144575,15 @@ "binop": null, "updateContext": null }, - "start": 38595, - "end": 38596, + "start": 38535, + "end": 38536, "loc": { "start": { - "line": 1122, + "line": 1121, "column": 79 }, "end": { - "line": 1122, + "line": 1121, "column": 80 } } @@ -144881,15 +144603,15 @@ "updateContext": null }, "value": "this", - "start": 38605, - "end": 38609, + "start": 38545, + "end": 38549, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 8 }, "end": { - "line": 1123, + "line": 1122, "column": 12 } } @@ -144907,15 +144629,15 @@ "binop": null, "updateContext": null }, - "start": 38609, - "end": 38610, + "start": 38549, + "end": 38550, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 12 }, "end": { - "line": 1123, + "line": 1122, "column": 13 } } @@ -144933,15 +144655,15 @@ "binop": null }, "value": "_configs", - "start": 38610, - "end": 38618, + "start": 38550, + "end": 38558, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 13 }, "end": { - "line": 1123, + "line": 1122, "column": 21 } } @@ -144959,15 +144681,15 @@ "binop": null, "updateContext": null }, - "start": 38618, - "end": 38619, + "start": 38558, + "end": 38559, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 21 }, "end": { - "line": 1123, + "line": 1122, "column": 22 } } @@ -144985,15 +144707,15 @@ "binop": null }, "value": "firstPerson", - "start": 38619, - "end": 38630, + "start": 38559, + "end": 38570, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 22 }, "end": { - "line": 1123, + "line": 1122, "column": 33 } } @@ -145012,15 +144734,15 @@ "updateContext": null }, "value": "=", - "start": 38631, - "end": 38632, + "start": 38571, + "end": 38572, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 34 }, "end": { - "line": 1123, + "line": 1122, "column": 35 } } @@ -145039,15 +144761,15 @@ "updateContext": null }, "value": "!", - "start": 38633, - "end": 38634, + "start": 38573, + "end": 38574, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 36 }, "end": { - "line": 1123, + "line": 1122, "column": 37 } } @@ -145066,15 +144788,15 @@ "updateContext": null }, "value": "!", - "start": 38634, - "end": 38635, + "start": 38574, + "end": 38575, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 37 }, "end": { - "line": 1123, + "line": 1122, "column": 38 } } @@ -145092,15 +144814,15 @@ "binop": null }, "value": "value", - "start": 38635, - "end": 38640, + "start": 38575, + "end": 38580, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 38 }, "end": { - "line": 1123, + "line": 1122, "column": 43 } } @@ -145118,15 +144840,15 @@ "binop": null, "updateContext": null }, - "start": 38640, - "end": 38641, + "start": 38580, + "end": 38581, "loc": { "start": { - "line": 1123, + "line": 1122, "column": 43 }, "end": { - "line": 1123, + "line": 1122, "column": 44 } } @@ -145146,15 +144868,15 @@ "updateContext": null }, "value": "this", - "start": 38650, - "end": 38654, + "start": 38590, + "end": 38594, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 8 }, "end": { - "line": 1124, + "line": 1123, "column": 12 } } @@ -145172,15 +144894,15 @@ "binop": null, "updateContext": null }, - "start": 38654, - "end": 38655, + "start": 38594, + "end": 38595, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 12 }, "end": { - "line": 1124, + "line": 1123, "column": 13 } } @@ -145198,15 +144920,15 @@ "binop": null }, "value": "_configs", - "start": 38655, - "end": 38663, + "start": 38595, + "end": 38603, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 13 }, "end": { - "line": 1124, + "line": 1123, "column": 21 } } @@ -145224,15 +144946,15 @@ "binop": null, "updateContext": null }, - "start": 38663, - "end": 38664, + "start": 38603, + "end": 38604, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 21 }, "end": { - "line": 1124, + "line": 1123, "column": 22 } } @@ -145250,15 +144972,15 @@ "binop": null }, "value": "planView", - "start": 38664, - "end": 38672, + "start": 38604, + "end": 38612, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 22 }, "end": { - "line": 1124, + "line": 1123, "column": 30 } } @@ -145277,15 +144999,15 @@ "updateContext": null }, "value": "=", - "start": 38673, - "end": 38674, + "start": 38613, + "end": 38614, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 31 }, "end": { - "line": 1124, + "line": 1123, "column": 32 } } @@ -145305,15 +145027,15 @@ "updateContext": null }, "value": "false", - "start": 38675, - "end": 38680, + "start": 38615, + "end": 38620, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 33 }, "end": { - "line": 1124, + "line": 1123, "column": 38 } } @@ -145331,15 +145053,15 @@ "binop": null, "updateContext": null }, - "start": 38680, - "end": 38681, + "start": 38620, + "end": 38621, "loc": { "start": { - "line": 1124, + "line": 1123, "column": 38 }, "end": { - "line": 1124, + "line": 1123, "column": 39 } } @@ -145359,15 +145081,15 @@ "updateContext": null }, "value": "if", - "start": 38690, - "end": 38692, + "start": 38630, + "end": 38632, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 8 }, "end": { - "line": 1125, + "line": 1124, "column": 10 } } @@ -145384,15 +145106,15 @@ "postfix": false, "binop": null }, - "start": 38693, - "end": 38694, + "start": 38633, + "end": 38634, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 11 }, "end": { - "line": 1125, + "line": 1124, "column": 12 } } @@ -145412,15 +145134,15 @@ "updateContext": null }, "value": "this", - "start": 38694, - "end": 38698, + "start": 38634, + "end": 38638, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 12 }, "end": { - "line": 1125, + "line": 1124, "column": 16 } } @@ -145438,15 +145160,15 @@ "binop": null, "updateContext": null }, - "start": 38698, - "end": 38699, + "start": 38638, + "end": 38639, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 16 }, "end": { - "line": 1125, + "line": 1124, "column": 17 } } @@ -145464,15 +145186,15 @@ "binop": null }, "value": "_configs", - "start": 38699, - "end": 38707, + "start": 38639, + "end": 38647, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 17 }, "end": { - "line": 1125, + "line": 1124, "column": 25 } } @@ -145490,15 +145212,15 @@ "binop": null, "updateContext": null }, - "start": 38707, - "end": 38708, + "start": 38647, + "end": 38648, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 25 }, "end": { - "line": 1125, + "line": 1124, "column": 26 } } @@ -145516,15 +145238,15 @@ "binop": null }, "value": "firstPerson", - "start": 38708, - "end": 38719, + "start": 38648, + "end": 38659, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 26 }, "end": { - "line": 1125, + "line": 1124, "column": 37 } } @@ -145541,15 +145263,15 @@ "postfix": false, "binop": null }, - "start": 38719, - "end": 38720, + "start": 38659, + "end": 38660, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 37 }, "end": { - "line": 1125, + "line": 1124, "column": 38 } } @@ -145566,15 +145288,15 @@ "postfix": false, "binop": null }, - "start": 38721, - "end": 38722, + "start": 38661, + "end": 38662, "loc": { "start": { - "line": 1125, + "line": 1124, "column": 39 }, "end": { - "line": 1125, + "line": 1124, "column": 40 } } @@ -145594,15 +145316,15 @@ "updateContext": null }, "value": "this", - "start": 38735, - "end": 38739, + "start": 38675, + "end": 38679, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 12 }, "end": { - "line": 1126, + "line": 1125, "column": 16 } } @@ -145620,15 +145342,15 @@ "binop": null, "updateContext": null }, - "start": 38739, - "end": 38740, + "start": 38679, + "end": 38680, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 16 }, "end": { - "line": 1126, + "line": 1125, "column": 17 } } @@ -145646,15 +145368,15 @@ "binop": null }, "value": "_controllers", - "start": 38740, - "end": 38752, + "start": 38680, + "end": 38692, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 17 }, "end": { - "line": 1126, + "line": 1125, "column": 29 } } @@ -145672,15 +145394,15 @@ "binop": null, "updateContext": null }, - "start": 38752, - "end": 38753, + "start": 38692, + "end": 38693, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 29 }, "end": { - "line": 1126, + "line": 1125, "column": 30 } } @@ -145698,15 +145420,15 @@ "binop": null }, "value": "pivotController", - "start": 38753, - "end": 38768, + "start": 38693, + "end": 38708, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 30 }, "end": { - "line": 1126, + "line": 1125, "column": 45 } } @@ -145724,15 +145446,15 @@ "binop": null, "updateContext": null }, - "start": 38768, - "end": 38769, + "start": 38708, + "end": 38709, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 45 }, "end": { - "line": 1126, + "line": 1125, "column": 46 } } @@ -145750,15 +145472,15 @@ "binop": null }, "value": "hidePivot", - "start": 38769, - "end": 38778, + "start": 38709, + "end": 38718, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 46 }, "end": { - "line": 1126, + "line": 1125, "column": 55 } } @@ -145775,15 +145497,15 @@ "postfix": false, "binop": null }, - "start": 38778, - "end": 38779, + "start": 38718, + "end": 38719, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 55 }, "end": { - "line": 1126, + "line": 1125, "column": 56 } } @@ -145800,15 +145522,15 @@ "postfix": false, "binop": null }, - "start": 38779, - "end": 38780, + "start": 38719, + "end": 38720, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 56 }, "end": { - "line": 1126, + "line": 1125, "column": 57 } } @@ -145826,15 +145548,15 @@ "binop": null, "updateContext": null }, - "start": 38780, - "end": 38781, + "start": 38720, + "end": 38721, "loc": { "start": { - "line": 1126, + "line": 1125, "column": 57 }, "end": { - "line": 1126, + "line": 1125, "column": 58 } } @@ -145854,15 +145576,15 @@ "updateContext": null }, "value": "this", - "start": 38794, - "end": 38798, + "start": 38734, + "end": 38738, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 12 }, "end": { - "line": 1127, + "line": 1126, "column": 16 } } @@ -145880,15 +145602,15 @@ "binop": null, "updateContext": null }, - "start": 38798, - "end": 38799, + "start": 38738, + "end": 38739, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 16 }, "end": { - "line": 1127, + "line": 1126, "column": 17 } } @@ -145906,15 +145628,15 @@ "binop": null }, "value": "_controllers", - "start": 38799, - "end": 38811, + "start": 38739, + "end": 38751, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 17 }, "end": { - "line": 1127, + "line": 1126, "column": 29 } } @@ -145932,15 +145654,15 @@ "binop": null, "updateContext": null }, - "start": 38811, - "end": 38812, + "start": 38751, + "end": 38752, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 29 }, "end": { - "line": 1127, + "line": 1126, "column": 30 } } @@ -145958,15 +145680,15 @@ "binop": null }, "value": "pivotController", - "start": 38812, - "end": 38827, + "start": 38752, + "end": 38767, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 30 }, "end": { - "line": 1127, + "line": 1126, "column": 45 } } @@ -145984,15 +145706,15 @@ "binop": null, "updateContext": null }, - "start": 38827, - "end": 38828, + "start": 38767, + "end": 38768, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 45 }, "end": { - "line": 1127, + "line": 1126, "column": 46 } } @@ -146010,15 +145732,15 @@ "binop": null }, "value": "endPivot", - "start": 38828, - "end": 38836, + "start": 38768, + "end": 38776, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 46 }, "end": { - "line": 1127, + "line": 1126, "column": 54 } } @@ -146035,15 +145757,15 @@ "postfix": false, "binop": null }, - "start": 38836, - "end": 38837, + "start": 38776, + "end": 38777, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 54 }, "end": { - "line": 1127, + "line": 1126, "column": 55 } } @@ -146060,15 +145782,15 @@ "postfix": false, "binop": null }, - "start": 38837, - "end": 38838, + "start": 38777, + "end": 38778, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 55 }, "end": { - "line": 1127, + "line": 1126, "column": 56 } } @@ -146086,15 +145808,15 @@ "binop": null, "updateContext": null }, - "start": 38838, - "end": 38839, + "start": 38778, + "end": 38779, "loc": { "start": { - "line": 1127, + "line": 1126, "column": 56 }, "end": { - "line": 1127, + "line": 1126, "column": 57 } } @@ -146111,15 +145833,15 @@ "postfix": false, "binop": null }, - "start": 38848, - "end": 38849, + "start": 38788, + "end": 38789, "loc": { "start": { - "line": 1128, + "line": 1127, "column": 8 }, "end": { - "line": 1128, + "line": 1127, "column": 9 } } @@ -146136,15 +145858,15 @@ "postfix": false, "binop": null }, - "start": 38854, - "end": 38855, + "start": 38794, + "end": 38795, "loc": { "start": { - "line": 1129, + "line": 1128, "column": 4 }, "end": { - "line": 1129, + "line": 1128, "column": 5 } } @@ -146152,15 +145874,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 38861, - "end": 39335, + "start": 38801, + "end": 39275, "loc": { "start": { - "line": 1131, + "line": 1130, "column": 4 }, "end": { - "line": 1142, + "line": 1141, "column": 7 } } @@ -146178,15 +145900,15 @@ "binop": null }, "value": "get", - "start": 39340, - "end": 39343, + "start": 39280, + "end": 39283, "loc": { "start": { - "line": 1143, + "line": 1142, "column": 4 }, "end": { - "line": 1143, + "line": 1142, "column": 7 } } @@ -146204,15 +145926,15 @@ "binop": null }, "value": "firstPerson", - "start": 39344, - "end": 39355, + "start": 39284, + "end": 39295, "loc": { "start": { - "line": 1143, + "line": 1142, "column": 8 }, "end": { - "line": 1143, + "line": 1142, "column": 19 } } @@ -146229,15 +145951,15 @@ "postfix": false, "binop": null }, - "start": 39355, - "end": 39356, + "start": 39295, + "end": 39296, "loc": { "start": { - "line": 1143, + "line": 1142, "column": 19 }, "end": { - "line": 1143, + "line": 1142, "column": 20 } } @@ -146254,15 +145976,15 @@ "postfix": false, "binop": null }, - "start": 39356, - "end": 39357, + "start": 39296, + "end": 39297, "loc": { "start": { - "line": 1143, + "line": 1142, "column": 20 }, "end": { - "line": 1143, + "line": 1142, "column": 21 } } @@ -146279,15 +146001,15 @@ "postfix": false, "binop": null }, - "start": 39358, - "end": 39359, + "start": 39298, + "end": 39299, "loc": { "start": { - "line": 1143, + "line": 1142, "column": 22 }, "end": { - "line": 1143, + "line": 1142, "column": 23 } } @@ -146307,15 +146029,15 @@ "updateContext": null }, "value": "this", - "start": 39368, - "end": 39372, + "start": 39308, + "end": 39312, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 8 }, "end": { - "line": 1144, + "line": 1143, "column": 12 } } @@ -146333,15 +146055,15 @@ "binop": null, "updateContext": null }, - "start": 39372, - "end": 39373, + "start": 39312, + "end": 39313, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 12 }, "end": { - "line": 1144, + "line": 1143, "column": 13 } } @@ -146359,15 +146081,15 @@ "binop": null }, "value": "warn", - "start": 39373, - "end": 39377, + "start": 39313, + "end": 39317, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 13 }, "end": { - "line": 1144, + "line": 1143, "column": 17 } } @@ -146384,15 +146106,15 @@ "postfix": false, "binop": null }, - "start": 39377, - "end": 39378, + "start": 39317, + "end": 39318, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 17 }, "end": { - "line": 1144, + "line": 1143, "column": 18 } } @@ -146411,15 +146133,15 @@ "updateContext": null }, "value": "firstPerson property is deprecated - replaced with navMode", - "start": 39378, - "end": 39438, + "start": 39318, + "end": 39378, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 18 }, "end": { - "line": 1144, + "line": 1143, "column": 78 } } @@ -146436,15 +146158,15 @@ "postfix": false, "binop": null }, - "start": 39438, - "end": 39439, + "start": 39378, + "end": 39379, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 78 }, "end": { - "line": 1144, + "line": 1143, "column": 79 } } @@ -146462,15 +146184,15 @@ "binop": null, "updateContext": null }, - "start": 39439, - "end": 39440, + "start": 39379, + "end": 39380, "loc": { "start": { - "line": 1144, + "line": 1143, "column": 79 }, "end": { - "line": 1144, + "line": 1143, "column": 80 } } @@ -146490,15 +146212,15 @@ "updateContext": null }, "value": "return", - "start": 39449, - "end": 39455, + "start": 39389, + "end": 39395, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 8 }, "end": { - "line": 1145, + "line": 1144, "column": 14 } } @@ -146518,15 +146240,15 @@ "updateContext": null }, "value": "this", - "start": 39456, - "end": 39460, + "start": 39396, + "end": 39400, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 15 }, "end": { - "line": 1145, + "line": 1144, "column": 19 } } @@ -146544,15 +146266,15 @@ "binop": null, "updateContext": null }, - "start": 39460, - "end": 39461, + "start": 39400, + "end": 39401, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 19 }, "end": { - "line": 1145, + "line": 1144, "column": 20 } } @@ -146570,15 +146292,15 @@ "binop": null }, "value": "_configs", - "start": 39461, - "end": 39469, + "start": 39401, + "end": 39409, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 20 }, "end": { - "line": 1145, + "line": 1144, "column": 28 } } @@ -146596,15 +146318,15 @@ "binop": null, "updateContext": null }, - "start": 39469, - "end": 39470, + "start": 39409, + "end": 39410, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 28 }, "end": { - "line": 1145, + "line": 1144, "column": 29 } } @@ -146622,15 +146344,15 @@ "binop": null }, "value": "firstPerson", - "start": 39470, - "end": 39481, + "start": 39410, + "end": 39421, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 29 }, "end": { - "line": 1145, + "line": 1144, "column": 40 } } @@ -146648,15 +146370,15 @@ "binop": null, "updateContext": null }, - "start": 39481, - "end": 39482, + "start": 39421, + "end": 39422, "loc": { "start": { - "line": 1145, + "line": 1144, "column": 40 }, "end": { - "line": 1145, + "line": 1144, "column": 41 } } @@ -146673,15 +146395,15 @@ "postfix": false, "binop": null }, - "start": 39487, - "end": 39488, + "start": 39427, + "end": 39428, "loc": { "start": { - "line": 1146, + "line": 1145, "column": 4 }, "end": { - "line": 1146, + "line": 1145, "column": 5 } } @@ -146689,15 +146411,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 39494, - "end": 39930, + "start": 39434, + "end": 39870, "loc": { "start": { - "line": 1148, + "line": 1147, "column": 4 }, "end": { - "line": 1158, + "line": 1157, "column": 7 } } @@ -146715,15 +146437,15 @@ "binop": null }, "value": "set", - "start": 39935, - "end": 39938, + "start": 39875, + "end": 39878, "loc": { "start": { - "line": 1159, + "line": 1158, "column": 4 }, "end": { - "line": 1159, + "line": 1158, "column": 7 } } @@ -146741,15 +146463,15 @@ "binop": null }, "value": "constrainVertical", - "start": 39939, - "end": 39956, + "start": 39879, + "end": 39896, "loc": { "start": { - "line": 1159, + "line": 1158, "column": 8 }, "end": { - "line": 1159, + "line": 1158, "column": 25 } } @@ -146766,15 +146488,15 @@ "postfix": false, "binop": null }, - "start": 39956, - "end": 39957, + "start": 39896, + "end": 39897, "loc": { "start": { - "line": 1159, + "line": 1158, "column": 25 }, "end": { - "line": 1159, + "line": 1158, "column": 26 } } @@ -146792,15 +146514,15 @@ "binop": null }, "value": "value", - "start": 39957, - "end": 39962, + "start": 39897, + "end": 39902, "loc": { "start": { - "line": 1159, + "line": 1158, "column": 26 }, "end": { - "line": 1159, + "line": 1158, "column": 31 } } @@ -146817,15 +146539,15 @@ "postfix": false, "binop": null }, - "start": 39962, - "end": 39963, + "start": 39902, + "end": 39903, "loc": { "start": { - "line": 1159, + "line": 1158, "column": 31 }, "end": { - "line": 1159, + "line": 1158, "column": 32 } } @@ -146842,15 +146564,15 @@ "postfix": false, "binop": null }, - "start": 39964, - "end": 39965, + "start": 39904, + "end": 39905, "loc": { "start": { - "line": 1159, + "line": 1158, "column": 33 }, "end": { - "line": 1159, + "line": 1158, "column": 34 } } @@ -146870,15 +146592,15 @@ "updateContext": null }, "value": "this", - "start": 39974, - "end": 39978, + "start": 39914, + "end": 39918, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 8 }, "end": { - "line": 1160, + "line": 1159, "column": 12 } } @@ -146896,15 +146618,15 @@ "binop": null, "updateContext": null }, - "start": 39978, - "end": 39979, + "start": 39918, + "end": 39919, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 12 }, "end": { - "line": 1160, + "line": 1159, "column": 13 } } @@ -146922,15 +146644,15 @@ "binop": null }, "value": "_configs", - "start": 39979, - "end": 39987, + "start": 39919, + "end": 39927, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 13 }, "end": { - "line": 1160, + "line": 1159, "column": 21 } } @@ -146948,15 +146670,15 @@ "binop": null, "updateContext": null }, - "start": 39987, - "end": 39988, + "start": 39927, + "end": 39928, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 21 }, "end": { - "line": 1160, + "line": 1159, "column": 22 } } @@ -146974,15 +146696,15 @@ "binop": null }, "value": "constrainVertical", - "start": 39988, - "end": 40005, + "start": 39928, + "end": 39945, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 22 }, "end": { - "line": 1160, + "line": 1159, "column": 39 } } @@ -147001,15 +146723,15 @@ "updateContext": null }, "value": "=", - "start": 40006, - "end": 40007, + "start": 39946, + "end": 39947, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 40 }, "end": { - "line": 1160, + "line": 1159, "column": 41 } } @@ -147028,15 +146750,15 @@ "updateContext": null }, "value": "!", - "start": 40008, - "end": 40009, + "start": 39948, + "end": 39949, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 42 }, "end": { - "line": 1160, + "line": 1159, "column": 43 } } @@ -147055,15 +146777,15 @@ "updateContext": null }, "value": "!", - "start": 40009, - "end": 40010, + "start": 39949, + "end": 39950, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 43 }, "end": { - "line": 1160, + "line": 1159, "column": 44 } } @@ -147081,15 +146803,15 @@ "binop": null }, "value": "value", - "start": 40010, - "end": 40015, + "start": 39950, + "end": 39955, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 44 }, "end": { - "line": 1160, + "line": 1159, "column": 49 } } @@ -147107,15 +146829,15 @@ "binop": null, "updateContext": null }, - "start": 40015, - "end": 40016, + "start": 39955, + "end": 39956, "loc": { "start": { - "line": 1160, + "line": 1159, "column": 49 }, "end": { - "line": 1160, + "line": 1159, "column": 50 } } @@ -147132,15 +146854,15 @@ "postfix": false, "binop": null }, - "start": 40021, - "end": 40022, + "start": 39961, + "end": 39962, "loc": { "start": { - "line": 1161, + "line": 1160, "column": 4 }, "end": { - "line": 1161, + "line": 1160, "column": 5 } } @@ -147148,15 +146870,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40028, - "end": 40459, + "start": 39968, + "end": 40399, "loc": { "start": { - "line": 1163, + "line": 1162, "column": 4 }, "end": { - "line": 1173, + "line": 1172, "column": 7 } } @@ -147174,15 +146896,15 @@ "binop": null }, "value": "get", - "start": 40464, - "end": 40467, + "start": 40404, + "end": 40407, "loc": { "start": { - "line": 1174, + "line": 1173, "column": 4 }, "end": { - "line": 1174, + "line": 1173, "column": 7 } } @@ -147200,15 +146922,15 @@ "binop": null }, "value": "constrainVertical", - "start": 40468, - "end": 40485, + "start": 40408, + "end": 40425, "loc": { "start": { - "line": 1174, + "line": 1173, "column": 8 }, "end": { - "line": 1174, + "line": 1173, "column": 25 } } @@ -147225,15 +146947,15 @@ "postfix": false, "binop": null }, - "start": 40485, - "end": 40486, + "start": 40425, + "end": 40426, "loc": { "start": { - "line": 1174, + "line": 1173, "column": 25 }, "end": { - "line": 1174, + "line": 1173, "column": 26 } } @@ -147250,15 +146972,15 @@ "postfix": false, "binop": null }, - "start": 40486, - "end": 40487, + "start": 40426, + "end": 40427, "loc": { "start": { - "line": 1174, + "line": 1173, "column": 26 }, "end": { - "line": 1174, + "line": 1173, "column": 27 } } @@ -147275,15 +146997,15 @@ "postfix": false, "binop": null }, - "start": 40488, - "end": 40489, + "start": 40428, + "end": 40429, "loc": { "start": { - "line": 1174, + "line": 1173, "column": 28 }, "end": { - "line": 1174, + "line": 1173, "column": 29 } } @@ -147303,15 +147025,15 @@ "updateContext": null }, "value": "return", - "start": 40498, - "end": 40504, + "start": 40438, + "end": 40444, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 8 }, "end": { - "line": 1175, + "line": 1174, "column": 14 } } @@ -147331,15 +147053,15 @@ "updateContext": null }, "value": "this", - "start": 40505, - "end": 40509, + "start": 40445, + "end": 40449, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 15 }, "end": { - "line": 1175, + "line": 1174, "column": 19 } } @@ -147357,15 +147079,15 @@ "binop": null, "updateContext": null }, - "start": 40509, - "end": 40510, + "start": 40449, + "end": 40450, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 19 }, "end": { - "line": 1175, + "line": 1174, "column": 20 } } @@ -147383,15 +147105,15 @@ "binop": null }, "value": "_configs", - "start": 40510, - "end": 40518, + "start": 40450, + "end": 40458, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 20 }, "end": { - "line": 1175, + "line": 1174, "column": 28 } } @@ -147409,15 +147131,15 @@ "binop": null, "updateContext": null }, - "start": 40518, - "end": 40519, + "start": 40458, + "end": 40459, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 28 }, "end": { - "line": 1175, + "line": 1174, "column": 29 } } @@ -147435,15 +147157,15 @@ "binop": null }, "value": "constrainVertical", - "start": 40519, - "end": 40536, + "start": 40459, + "end": 40476, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 29 }, "end": { - "line": 1175, + "line": 1174, "column": 46 } } @@ -147461,15 +147183,15 @@ "binop": null, "updateContext": null }, - "start": 40536, - "end": 40537, + "start": 40476, + "end": 40477, "loc": { "start": { - "line": 1175, + "line": 1174, "column": 46 }, "end": { - "line": 1175, + "line": 1174, "column": 47 } } @@ -147486,15 +147208,15 @@ "postfix": false, "binop": null }, - "start": 40542, - "end": 40543, + "start": 40482, + "end": 40483, "loc": { "start": { - "line": 1176, + "line": 1175, "column": 4 }, "end": { - "line": 1176, + "line": 1175, "column": 5 } } @@ -147502,15 +147224,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40549, - "end": 40792, + "start": 40489, + "end": 40732, "loc": { "start": { - "line": 1178, + "line": 1177, "column": 4 }, "end": { - "line": 1184, + "line": 1183, "column": 7 } } @@ -147528,15 +147250,15 @@ "binop": null }, "value": "set", - "start": 40797, - "end": 40800, + "start": 40737, + "end": 40740, "loc": { "start": { - "line": 1185, + "line": 1184, "column": 4 }, "end": { - "line": 1185, + "line": 1184, "column": 7 } } @@ -147554,15 +147276,15 @@ "binop": null }, "value": "doublePickFlyTo", - "start": 40801, - "end": 40816, + "start": 40741, + "end": 40756, "loc": { "start": { - "line": 1185, + "line": 1184, "column": 8 }, "end": { - "line": 1185, + "line": 1184, "column": 23 } } @@ -147579,15 +147301,15 @@ "postfix": false, "binop": null }, - "start": 40816, - "end": 40817, + "start": 40756, + "end": 40757, "loc": { "start": { - "line": 1185, + "line": 1184, "column": 23 }, "end": { - "line": 1185, + "line": 1184, "column": 24 } } @@ -147605,15 +147327,15 @@ "binop": null }, "value": "value", - "start": 40817, - "end": 40822, + "start": 40757, + "end": 40762, "loc": { "start": { - "line": 1185, + "line": 1184, "column": 24 }, "end": { - "line": 1185, + "line": 1184, "column": 29 } } @@ -147630,15 +147352,15 @@ "postfix": false, "binop": null }, - "start": 40822, - "end": 40823, + "start": 40762, + "end": 40763, "loc": { "start": { - "line": 1185, + "line": 1184, "column": 29 }, "end": { - "line": 1185, + "line": 1184, "column": 30 } } @@ -147655,15 +147377,15 @@ "postfix": false, "binop": null }, - "start": 40824, - "end": 40825, + "start": 40764, + "end": 40765, "loc": { "start": { - "line": 1185, + "line": 1184, "column": 31 }, "end": { - "line": 1185, + "line": 1184, "column": 32 } } @@ -147683,15 +147405,15 @@ "updateContext": null }, "value": "this", - "start": 40834, - "end": 40838, + "start": 40774, + "end": 40778, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 8 }, "end": { - "line": 1186, + "line": 1185, "column": 12 } } @@ -147709,15 +147431,15 @@ "binop": null, "updateContext": null }, - "start": 40838, - "end": 40839, + "start": 40778, + "end": 40779, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 12 }, "end": { - "line": 1186, + "line": 1185, "column": 13 } } @@ -147735,15 +147457,15 @@ "binop": null }, "value": "_configs", - "start": 40839, - "end": 40847, + "start": 40779, + "end": 40787, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 13 }, "end": { - "line": 1186, + "line": 1185, "column": 21 } } @@ -147761,15 +147483,15 @@ "binop": null, "updateContext": null }, - "start": 40847, - "end": 40848, + "start": 40787, + "end": 40788, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 21 }, "end": { - "line": 1186, + "line": 1185, "column": 22 } } @@ -147787,15 +147509,15 @@ "binop": null }, "value": "doublePickFlyTo", - "start": 40848, - "end": 40863, + "start": 40788, + "end": 40803, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 22 }, "end": { - "line": 1186, + "line": 1185, "column": 37 } } @@ -147814,15 +147536,15 @@ "updateContext": null }, "value": "=", - "start": 40864, - "end": 40865, + "start": 40804, + "end": 40805, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 38 }, "end": { - "line": 1186, + "line": 1185, "column": 39 } } @@ -147840,15 +147562,15 @@ "binop": null }, "value": "value", - "start": 40866, - "end": 40871, + "start": 40806, + "end": 40811, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 40 }, "end": { - "line": 1186, + "line": 1185, "column": 45 } } @@ -147867,15 +147589,15 @@ "updateContext": null }, "value": "!==", - "start": 40872, - "end": 40875, + "start": 40812, + "end": 40815, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 46 }, "end": { - "line": 1186, + "line": 1185, "column": 49 } } @@ -147895,15 +147617,15 @@ "updateContext": null }, "value": "false", - "start": 40876, - "end": 40881, + "start": 40816, + "end": 40821, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 50 }, "end": { - "line": 1186, + "line": 1185, "column": 55 } } @@ -147921,15 +147643,15 @@ "binop": null, "updateContext": null }, - "start": 40881, - "end": 40882, + "start": 40821, + "end": 40822, "loc": { "start": { - "line": 1186, + "line": 1185, "column": 55 }, "end": { - "line": 1186, + "line": 1185, "column": 56 } } @@ -147946,15 +147668,15 @@ "postfix": false, "binop": null }, - "start": 40887, - "end": 40888, + "start": 40827, + "end": 40828, "loc": { "start": { - "line": 1187, + "line": 1186, "column": 4 }, "end": { - "line": 1187, + "line": 1186, "column": 5 } } @@ -147962,15 +147684,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 40894, - "end": 41143, + "start": 40834, + "end": 41083, "loc": { "start": { - "line": 1189, + "line": 1188, "column": 4 }, "end": { - "line": 1195, + "line": 1194, "column": 7 } } @@ -147988,15 +147710,15 @@ "binop": null }, "value": "get", - "start": 41148, - "end": 41151, + "start": 41088, + "end": 41091, "loc": { "start": { - "line": 1196, + "line": 1195, "column": 4 }, "end": { - "line": 1196, + "line": 1195, "column": 7 } } @@ -148014,15 +147736,15 @@ "binop": null }, "value": "doublePickFlyTo", - "start": 41152, - "end": 41167, + "start": 41092, + "end": 41107, "loc": { "start": { - "line": 1196, + "line": 1195, "column": 8 }, "end": { - "line": 1196, + "line": 1195, "column": 23 } } @@ -148039,15 +147761,15 @@ "postfix": false, "binop": null }, - "start": 41167, - "end": 41168, + "start": 41107, + "end": 41108, "loc": { "start": { - "line": 1196, + "line": 1195, "column": 23 }, "end": { - "line": 1196, + "line": 1195, "column": 24 } } @@ -148064,15 +147786,15 @@ "postfix": false, "binop": null }, - "start": 41168, - "end": 41169, + "start": 41108, + "end": 41109, "loc": { "start": { - "line": 1196, + "line": 1195, "column": 24 }, "end": { - "line": 1196, + "line": 1195, "column": 25 } } @@ -148089,15 +147811,15 @@ "postfix": false, "binop": null }, - "start": 41170, - "end": 41171, + "start": 41110, + "end": 41111, "loc": { "start": { - "line": 1196, + "line": 1195, "column": 26 }, "end": { - "line": 1196, + "line": 1195, "column": 27 } } @@ -148117,15 +147839,15 @@ "updateContext": null }, "value": "return", - "start": 41180, - "end": 41186, + "start": 41120, + "end": 41126, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 8 }, "end": { - "line": 1197, + "line": 1196, "column": 14 } } @@ -148145,15 +147867,15 @@ "updateContext": null }, "value": "this", - "start": 41187, - "end": 41191, + "start": 41127, + "end": 41131, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 15 }, "end": { - "line": 1197, + "line": 1196, "column": 19 } } @@ -148171,15 +147893,15 @@ "binop": null, "updateContext": null }, - "start": 41191, - "end": 41192, + "start": 41131, + "end": 41132, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 19 }, "end": { - "line": 1197, + "line": 1196, "column": 20 } } @@ -148197,15 +147919,15 @@ "binop": null }, "value": "_configs", - "start": 41192, - "end": 41200, + "start": 41132, + "end": 41140, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 20 }, "end": { - "line": 1197, + "line": 1196, "column": 28 } } @@ -148223,15 +147945,15 @@ "binop": null, "updateContext": null }, - "start": 41200, - "end": 41201, + "start": 41140, + "end": 41141, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 28 }, "end": { - "line": 1197, + "line": 1196, "column": 29 } } @@ -148249,15 +147971,15 @@ "binop": null }, "value": "doublePickFlyTo", - "start": 41201, - "end": 41216, + "start": 41141, + "end": 41156, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 29 }, "end": { - "line": 1197, + "line": 1196, "column": 44 } } @@ -148275,15 +147997,15 @@ "binop": null, "updateContext": null }, - "start": 41216, - "end": 41217, + "start": 41156, + "end": 41157, "loc": { "start": { - "line": 1197, + "line": 1196, "column": 44 }, "end": { - "line": 1197, + "line": 1196, "column": 45 } } @@ -148300,15 +148022,15 @@ "postfix": false, "binop": null }, - "start": 41222, - "end": 41223, + "start": 41162, + "end": 41163, "loc": { "start": { - "line": 1198, + "line": 1197, "column": 4 }, "end": { - "line": 1198, + "line": 1197, "column": 5 } } @@ -148316,15 +148038,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 41229, - "end": 41466, + "start": 41169, + "end": 41406, "loc": { "start": { - "line": 1200, + "line": 1199, "column": 4 }, "end": { - "line": 1206, + "line": 1205, "column": 7 } } @@ -148342,15 +148064,15 @@ "binop": null }, "value": "set", - "start": 41471, - "end": 41474, + "start": 41411, + "end": 41414, "loc": { "start": { - "line": 1207, + "line": 1206, "column": 4 }, "end": { - "line": 1207, + "line": 1206, "column": 7 } } @@ -148368,15 +148090,15 @@ "binop": null }, "value": "panRightClick", - "start": 41475, - "end": 41488, + "start": 41415, + "end": 41428, "loc": { "start": { - "line": 1207, + "line": 1206, "column": 8 }, "end": { - "line": 1207, + "line": 1206, "column": 21 } } @@ -148393,15 +148115,15 @@ "postfix": false, "binop": null }, - "start": 41488, - "end": 41489, + "start": 41428, + "end": 41429, "loc": { "start": { - "line": 1207, + "line": 1206, "column": 21 }, "end": { - "line": 1207, + "line": 1206, "column": 22 } } @@ -148419,15 +148141,15 @@ "binop": null }, "value": "value", - "start": 41489, - "end": 41494, + "start": 41429, + "end": 41434, "loc": { "start": { - "line": 1207, + "line": 1206, "column": 22 }, "end": { - "line": 1207, + "line": 1206, "column": 27 } } @@ -148444,15 +148166,15 @@ "postfix": false, "binop": null }, - "start": 41494, - "end": 41495, + "start": 41434, + "end": 41435, "loc": { "start": { - "line": 1207, + "line": 1206, "column": 27 }, "end": { - "line": 1207, + "line": 1206, "column": 28 } } @@ -148469,15 +148191,15 @@ "postfix": false, "binop": null }, - "start": 41496, - "end": 41497, + "start": 41436, + "end": 41437, "loc": { "start": { - "line": 1207, + "line": 1206, "column": 29 }, "end": { - "line": 1207, + "line": 1206, "column": 30 } } @@ -148497,15 +148219,15 @@ "updateContext": null }, "value": "this", - "start": 41506, - "end": 41510, + "start": 41446, + "end": 41450, "loc": { "start": { - "line": 1208, + "line": 1207, "column": 8 }, "end": { - "line": 1208, + "line": 1207, "column": 12 } } @@ -148523,15 +148245,15 @@ "binop": null, "updateContext": null }, - "start": 41510, - "end": 41511, + "start": 41450, + "end": 41451, "loc": { "start": { - "line": 1208, + "line": 1207, "column": 12 }, "end": { - "line": 1208, + "line": 1207, "column": 13 } } @@ -148549,15 +148271,15 @@ "binop": null }, "value": "_configs", - "start": 41511, - "end": 41519, + "start": 41451, + "end": 41459, "loc": { "start": { - "line": 1208, + "line": 1207, "column": 13 }, "end": { - "line": 1208, + "line": 1207, "column": 21 } } @@ -148575,15 +148297,15 @@ "binop": null, "updateContext": null }, - "start": 41519, - "end": 41520, + "start": 41459, + "end": 41460, "loc": { "start": { - "line": 1208, + "line": 1207, "column": 21 }, "end": { - "line": 1208, + "line": 1207, "column": 22 } } @@ -148601,15 +148323,15 @@ "binop": null }, "value": "panRightClick", - "start": 41520, - "end": 41533, + "start": 41460, + "end": 41473, "loc": { "start": { - "line": 1208, + "line": 1207, "column": 22 }, "end": { - "line": 1208, + "line": 1207, "column": 35 } } @@ -148628,15 +148350,15 @@ "updateContext": null }, "value": "=", - "start": 41534, - "end": 41535, + "start": 41474, + "end": 41475, "loc": { "start": { - "line": 1208, + "line": 1207, "column": 36 }, "end": { - "line": 1208, + "line": 1207, "column": 37 } } @@ -148654,15 +148376,15 @@ "binop": null }, "value": "value", - "start": 41536, - "end": 41541, + "start": 41476, + "end": 41481, "loc": { "start": { - "line": 1208, + "line": 1207, "column": 38 }, "end": { - "line": 1208, + "line": 1207, "column": 43 } } @@ -148681,15 +148403,15 @@ "updateContext": null }, "value": "!==", - "start": 41542, - "end": 41545, + "start": 41482, + "end": 41485, "loc": { "start": { - "line": 1208, + "line": 1207, "column": 44 }, "end": { - "line": 1208, + "line": 1207, "column": 47 } } @@ -148709,15 +148431,15 @@ "updateContext": null }, "value": "false", - "start": 41546, - "end": 41551, + "start": 41486, + "end": 41491, "loc": { "start": { - "line": 1208, + "line": 1207, "column": 48 }, "end": { - "line": 1208, + "line": 1207, "column": 53 } } @@ -148735,15 +148457,15 @@ "binop": null, "updateContext": null }, - "start": 41551, - "end": 41552, + "start": 41491, + "end": 41492, "loc": { "start": { - "line": 1208, + "line": 1207, "column": 53 }, "end": { - "line": 1208, + "line": 1207, "column": 54 } } @@ -148760,15 +148482,15 @@ "postfix": false, "binop": null }, - "start": 41557, - "end": 41558, + "start": 41497, + "end": 41498, "loc": { "start": { - "line": 1209, + "line": 1208, "column": 4 }, "end": { - "line": 1209, + "line": 1208, "column": 5 } } @@ -148776,15 +148498,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 41564, - "end": 41766, + "start": 41504, + "end": 41706, "loc": { "start": { - "line": 1211, + "line": 1210, "column": 4 }, "end": { - "line": 1217, + "line": 1216, "column": 7 } } @@ -148802,15 +148524,15 @@ "binop": null }, "value": "get", - "start": 41771, - "end": 41774, + "start": 41711, + "end": 41714, "loc": { "start": { - "line": 1218, + "line": 1217, "column": 4 }, "end": { - "line": 1218, + "line": 1217, "column": 7 } } @@ -148828,15 +148550,15 @@ "binop": null }, "value": "panRightClick", - "start": 41775, - "end": 41788, + "start": 41715, + "end": 41728, "loc": { "start": { - "line": 1218, + "line": 1217, "column": 8 }, "end": { - "line": 1218, + "line": 1217, "column": 21 } } @@ -148853,15 +148575,15 @@ "postfix": false, "binop": null }, - "start": 41788, - "end": 41789, + "start": 41728, + "end": 41729, "loc": { "start": { - "line": 1218, + "line": 1217, "column": 21 }, "end": { - "line": 1218, + "line": 1217, "column": 22 } } @@ -148878,15 +148600,15 @@ "postfix": false, "binop": null }, - "start": 41789, - "end": 41790, + "start": 41729, + "end": 41730, "loc": { "start": { - "line": 1218, + "line": 1217, "column": 22 }, "end": { - "line": 1218, + "line": 1217, "column": 23 } } @@ -148903,15 +148625,15 @@ "postfix": false, "binop": null }, - "start": 41791, - "end": 41792, + "start": 41731, + "end": 41732, "loc": { "start": { - "line": 1218, + "line": 1217, "column": 24 }, "end": { - "line": 1218, + "line": 1217, "column": 25 } } @@ -148931,15 +148653,15 @@ "updateContext": null }, "value": "return", - "start": 41801, - "end": 41807, + "start": 41741, + "end": 41747, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 8 }, "end": { - "line": 1219, + "line": 1218, "column": 14 } } @@ -148959,15 +148681,15 @@ "updateContext": null }, "value": "this", - "start": 41808, - "end": 41812, + "start": 41748, + "end": 41752, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 15 }, "end": { - "line": 1219, + "line": 1218, "column": 19 } } @@ -148985,15 +148707,15 @@ "binop": null, "updateContext": null }, - "start": 41812, - "end": 41813, + "start": 41752, + "end": 41753, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 19 }, "end": { - "line": 1219, + "line": 1218, "column": 20 } } @@ -149011,15 +148733,15 @@ "binop": null }, "value": "_configs", - "start": 41813, - "end": 41821, + "start": 41753, + "end": 41761, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 20 }, "end": { - "line": 1219, + "line": 1218, "column": 28 } } @@ -149037,15 +148759,15 @@ "binop": null, "updateContext": null }, - "start": 41821, - "end": 41822, + "start": 41761, + "end": 41762, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 28 }, "end": { - "line": 1219, + "line": 1218, "column": 29 } } @@ -149063,15 +148785,15 @@ "binop": null }, "value": "panRightClick", - "start": 41822, - "end": 41835, + "start": 41762, + "end": 41775, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 29 }, "end": { - "line": 1219, + "line": 1218, "column": 42 } } @@ -149089,15 +148811,15 @@ "binop": null, "updateContext": null }, - "start": 41835, - "end": 41836, + "start": 41775, + "end": 41776, "loc": { "start": { - "line": 1219, + "line": 1218, "column": 42 }, "end": { - "line": 1219, + "line": 1218, "column": 43 } } @@ -149114,15 +148836,15 @@ "postfix": false, "binop": null }, - "start": 41841, - "end": 41842, + "start": 41781, + "end": 41782, "loc": { "start": { - "line": 1220, + "line": 1219, "column": 4 }, "end": { - "line": 1220, + "line": 1219, "column": 5 } } @@ -149130,15 +148852,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 41848, - "end": 42678, + "start": 41788, + "end": 42618, "loc": { "start": { - "line": 1222, + "line": 1221, "column": 4 }, "end": { - "line": 1237, + "line": 1236, "column": 7 } } @@ -149156,15 +148878,15 @@ "binop": null }, "value": "set", - "start": 42683, - "end": 42686, + "start": 42623, + "end": 42626, "loc": { "start": { - "line": 1238, + "line": 1237, "column": 4 }, "end": { - "line": 1238, + "line": 1237, "column": 7 } } @@ -149182,15 +148904,15 @@ "binop": null }, "value": "rotationInertia", - "start": 42687, - "end": 42702, + "start": 42627, + "end": 42642, "loc": { "start": { - "line": 1238, + "line": 1237, "column": 8 }, "end": { - "line": 1238, + "line": 1237, "column": 23 } } @@ -149207,15 +148929,15 @@ "postfix": false, "binop": null }, - "start": 42702, - "end": 42703, + "start": 42642, + "end": 42643, "loc": { "start": { - "line": 1238, + "line": 1237, "column": 23 }, "end": { - "line": 1238, + "line": 1237, "column": 24 } } @@ -149233,15 +148955,15 @@ "binop": null }, "value": "rotationInertia", - "start": 42703, - "end": 42718, + "start": 42643, + "end": 42658, "loc": { "start": { - "line": 1238, + "line": 1237, "column": 24 }, "end": { - "line": 1238, + "line": 1237, "column": 39 } } @@ -149258,15 +148980,15 @@ "postfix": false, "binop": null }, - "start": 42718, - "end": 42719, + "start": 42658, + "end": 42659, "loc": { "start": { - "line": 1238, + "line": 1237, "column": 39 }, "end": { - "line": 1238, + "line": 1237, "column": 40 } } @@ -149283,15 +149005,15 @@ "postfix": false, "binop": null }, - "start": 42720, - "end": 42721, + "start": 42660, + "end": 42661, "loc": { "start": { - "line": 1238, + "line": 1237, "column": 41 }, "end": { - "line": 1238, + "line": 1237, "column": 42 } } @@ -149311,15 +149033,15 @@ "updateContext": null }, "value": "this", - "start": 42730, - "end": 42734, + "start": 42670, + "end": 42674, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 8 }, "end": { - "line": 1239, + "line": 1238, "column": 12 } } @@ -149337,15 +149059,15 @@ "binop": null, "updateContext": null }, - "start": 42734, - "end": 42735, + "start": 42674, + "end": 42675, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 12 }, "end": { - "line": 1239, + "line": 1238, "column": 13 } } @@ -149363,15 +149085,15 @@ "binop": null }, "value": "_configs", - "start": 42735, - "end": 42743, + "start": 42675, + "end": 42683, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 13 }, "end": { - "line": 1239, + "line": 1238, "column": 21 } } @@ -149389,15 +149111,15 @@ "binop": null, "updateContext": null }, - "start": 42743, - "end": 42744, + "start": 42683, + "end": 42684, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 21 }, "end": { - "line": 1239, + "line": 1238, "column": 22 } } @@ -149415,15 +149137,15 @@ "binop": null }, "value": "rotationInertia", - "start": 42744, - "end": 42759, + "start": 42684, + "end": 42699, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 22 }, "end": { - "line": 1239, + "line": 1238, "column": 37 } } @@ -149442,15 +149164,15 @@ "updateContext": null }, "value": "=", - "start": 42760, - "end": 42761, + "start": 42700, + "end": 42701, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 38 }, "end": { - "line": 1239, + "line": 1238, "column": 39 } } @@ -149467,15 +149189,15 @@ "postfix": false, "binop": null }, - "start": 42762, - "end": 42763, + "start": 42702, + "end": 42703, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 40 }, "end": { - "line": 1239, + "line": 1238, "column": 41 } } @@ -149493,15 +149215,15 @@ "binop": null }, "value": "rotationInertia", - "start": 42763, - "end": 42778, + "start": 42703, + "end": 42718, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 41 }, "end": { - "line": 1239, + "line": 1238, "column": 56 } } @@ -149520,15 +149242,15 @@ "updateContext": null }, "value": "!==", - "start": 42779, - "end": 42782, + "start": 42719, + "end": 42722, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 57 }, "end": { - "line": 1239, + "line": 1238, "column": 60 } } @@ -149546,15 +149268,15 @@ "binop": null }, "value": "undefined", - "start": 42783, - "end": 42792, + "start": 42723, + "end": 42732, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 61 }, "end": { - "line": 1239, + "line": 1238, "column": 70 } } @@ -149573,15 +149295,15 @@ "updateContext": null }, "value": "&&", - "start": 42793, - "end": 42795, + "start": 42733, + "end": 42735, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 71 }, "end": { - "line": 1239, + "line": 1238, "column": 73 } } @@ -149599,15 +149321,15 @@ "binop": null }, "value": "rotationInertia", - "start": 42796, - "end": 42811, + "start": 42736, + "end": 42751, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 74 }, "end": { - "line": 1239, + "line": 1238, "column": 89 } } @@ -149626,15 +149348,15 @@ "updateContext": null }, "value": "!==", - "start": 42812, - "end": 42815, + "start": 42752, + "end": 42755, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 90 }, "end": { - "line": 1239, + "line": 1238, "column": 93 } } @@ -149654,15 +149376,15 @@ "updateContext": null }, "value": "null", - "start": 42816, - "end": 42820, + "start": 42756, + "end": 42760, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 94 }, "end": { - "line": 1239, + "line": 1238, "column": 98 } } @@ -149679,15 +149401,15 @@ "postfix": false, "binop": null }, - "start": 42820, - "end": 42821, + "start": 42760, + "end": 42761, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 98 }, "end": { - "line": 1239, + "line": 1238, "column": 99 } } @@ -149705,15 +149427,15 @@ "binop": null, "updateContext": null }, - "start": 42822, - "end": 42823, + "start": 42762, + "end": 42763, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 100 }, "end": { - "line": 1239, + "line": 1238, "column": 101 } } @@ -149731,15 +149453,15 @@ "binop": null }, "value": "rotationInertia", - "start": 42824, - "end": 42839, + "start": 42764, + "end": 42779, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 102 }, "end": { - "line": 1239, + "line": 1238, "column": 117 } } @@ -149757,15 +149479,15 @@ "binop": null, "updateContext": null }, - "start": 42840, - "end": 42841, + "start": 42780, + "end": 42781, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 118 }, "end": { - "line": 1239, + "line": 1238, "column": 119 } } @@ -149784,15 +149506,15 @@ "updateContext": null }, "value": 0, - "start": 42842, - "end": 42845, + "start": 42782, + "end": 42785, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 120 }, "end": { - "line": 1239, + "line": 1238, "column": 123 } } @@ -149810,15 +149532,15 @@ "binop": null, "updateContext": null }, - "start": 42845, - "end": 42846, + "start": 42785, + "end": 42786, "loc": { "start": { - "line": 1239, + "line": 1238, "column": 123 }, "end": { - "line": 1239, + "line": 1238, "column": 124 } } @@ -149835,15 +149557,15 @@ "postfix": false, "binop": null }, - "start": 42851, - "end": 42852, + "start": 42791, + "end": 42792, "loc": { "start": { - "line": 1240, + "line": 1239, "column": 4 }, "end": { - "line": 1240, + "line": 1239, "column": 5 } } @@ -149851,15 +149573,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 42858, - "end": 43113, + "start": 42798, + "end": 43053, "loc": { "start": { - "line": 1242, + "line": 1241, "column": 4 }, "end": { - "line": 1250, + "line": 1249, "column": 7 } } @@ -149877,15 +149599,15 @@ "binop": null }, "value": "get", - "start": 43118, - "end": 43121, + "start": 43058, + "end": 43061, "loc": { "start": { - "line": 1251, + "line": 1250, "column": 4 }, "end": { - "line": 1251, + "line": 1250, "column": 7 } } @@ -149903,15 +149625,15 @@ "binop": null }, "value": "rotationInertia", - "start": 43122, - "end": 43137, + "start": 43062, + "end": 43077, "loc": { "start": { - "line": 1251, + "line": 1250, "column": 8 }, "end": { - "line": 1251, + "line": 1250, "column": 23 } } @@ -149928,15 +149650,15 @@ "postfix": false, "binop": null }, - "start": 43137, - "end": 43138, + "start": 43077, + "end": 43078, "loc": { "start": { - "line": 1251, + "line": 1250, "column": 23 }, "end": { - "line": 1251, + "line": 1250, "column": 24 } } @@ -149953,15 +149675,15 @@ "postfix": false, "binop": null }, - "start": 43138, - "end": 43139, + "start": 43078, + "end": 43079, "loc": { "start": { - "line": 1251, + "line": 1250, "column": 24 }, "end": { - "line": 1251, + "line": 1250, "column": 25 } } @@ -149978,15 +149700,15 @@ "postfix": false, "binop": null }, - "start": 43140, - "end": 43141, + "start": 43080, + "end": 43081, "loc": { "start": { - "line": 1251, + "line": 1250, "column": 26 }, "end": { - "line": 1251, + "line": 1250, "column": 27 } } @@ -150006,15 +149728,15 @@ "updateContext": null }, "value": "return", - "start": 43150, - "end": 43156, + "start": 43090, + "end": 43096, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 8 }, "end": { - "line": 1252, + "line": 1251, "column": 14 } } @@ -150034,15 +149756,15 @@ "updateContext": null }, "value": "this", - "start": 43157, - "end": 43161, + "start": 43097, + "end": 43101, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 15 }, "end": { - "line": 1252, + "line": 1251, "column": 19 } } @@ -150060,15 +149782,15 @@ "binop": null, "updateContext": null }, - "start": 43161, - "end": 43162, + "start": 43101, + "end": 43102, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 19 }, "end": { - "line": 1252, + "line": 1251, "column": 20 } } @@ -150086,15 +149808,15 @@ "binop": null }, "value": "_configs", - "start": 43162, - "end": 43170, + "start": 43102, + "end": 43110, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 20 }, "end": { - "line": 1252, + "line": 1251, "column": 28 } } @@ -150112,15 +149834,15 @@ "binop": null, "updateContext": null }, - "start": 43170, - "end": 43171, + "start": 43110, + "end": 43111, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 28 }, "end": { - "line": 1252, + "line": 1251, "column": 29 } } @@ -150138,15 +149860,15 @@ "binop": null }, "value": "rotationInertia", - "start": 43171, - "end": 43186, + "start": 43111, + "end": 43126, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 29 }, "end": { - "line": 1252, + "line": 1251, "column": 44 } } @@ -150164,15 +149886,15 @@ "binop": null, "updateContext": null }, - "start": 43186, - "end": 43187, + "start": 43126, + "end": 43127, "loc": { "start": { - "line": 1252, + "line": 1251, "column": 44 }, "end": { - "line": 1252, + "line": 1251, "column": 45 } } @@ -150189,15 +149911,15 @@ "postfix": false, "binop": null }, - "start": 43192, - "end": 43193, + "start": 43132, + "end": 43133, "loc": { "start": { - "line": 1253, + "line": 1252, "column": 4 }, "end": { - "line": 1253, + "line": 1252, "column": 5 } } @@ -150205,15 +149927,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 43199, - "end": 43987, + "start": 43139, + "end": 43927, "loc": { "start": { - "line": 1255, + "line": 1254, "column": 4 }, "end": { - "line": 1269, + "line": 1268, "column": 7 } } @@ -150231,15 +149953,15 @@ "binop": null }, "value": "set", - "start": 43992, - "end": 43995, + "start": 43932, + "end": 43935, "loc": { "start": { - "line": 1270, + "line": 1269, "column": 4 }, "end": { - "line": 1270, + "line": 1269, "column": 7 } } @@ -150257,15 +149979,15 @@ "binop": null }, "value": "keyboardPanRate", - "start": 43996, - "end": 44011, + "start": 43936, + "end": 43951, "loc": { "start": { - "line": 1270, + "line": 1269, "column": 8 }, "end": { - "line": 1270, + "line": 1269, "column": 23 } } @@ -150282,15 +150004,15 @@ "postfix": false, "binop": null }, - "start": 44011, - "end": 44012, + "start": 43951, + "end": 43952, "loc": { "start": { - "line": 1270, + "line": 1269, "column": 23 }, "end": { - "line": 1270, + "line": 1269, "column": 24 } } @@ -150308,15 +150030,15 @@ "binop": null }, "value": "keyboardPanRate", - "start": 44012, - "end": 44027, + "start": 43952, + "end": 43967, "loc": { "start": { - "line": 1270, + "line": 1269, "column": 24 }, "end": { - "line": 1270, + "line": 1269, "column": 39 } } @@ -150333,15 +150055,15 @@ "postfix": false, "binop": null }, - "start": 44027, - "end": 44028, + "start": 43967, + "end": 43968, "loc": { "start": { - "line": 1270, + "line": 1269, "column": 39 }, "end": { - "line": 1270, + "line": 1269, "column": 40 } } @@ -150358,15 +150080,15 @@ "postfix": false, "binop": null }, - "start": 44029, - "end": 44030, + "start": 43969, + "end": 43970, "loc": { "start": { - "line": 1270, + "line": 1269, "column": 41 }, "end": { - "line": 1270, + "line": 1269, "column": 42 } } @@ -150386,15 +150108,15 @@ "updateContext": null }, "value": "this", - "start": 44039, - "end": 44043, + "start": 43979, + "end": 43983, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 8 }, "end": { - "line": 1271, + "line": 1270, "column": 12 } } @@ -150412,15 +150134,15 @@ "binop": null, "updateContext": null }, - "start": 44043, - "end": 44044, + "start": 43983, + "end": 43984, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 12 }, "end": { - "line": 1271, + "line": 1270, "column": 13 } } @@ -150438,15 +150160,15 @@ "binop": null }, "value": "_configs", - "start": 44044, - "end": 44052, + "start": 43984, + "end": 43992, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 13 }, "end": { - "line": 1271, + "line": 1270, "column": 21 } } @@ -150464,15 +150186,15 @@ "binop": null, "updateContext": null }, - "start": 44052, - "end": 44053, + "start": 43992, + "end": 43993, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 21 }, "end": { - "line": 1271, + "line": 1270, "column": 22 } } @@ -150490,15 +150212,15 @@ "binop": null }, "value": "keyboardPanRate", - "start": 44053, - "end": 44068, + "start": 43993, + "end": 44008, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 22 }, "end": { - "line": 1271, + "line": 1270, "column": 37 } } @@ -150517,15 +150239,15 @@ "updateContext": null }, "value": "=", - "start": 44069, - "end": 44070, + "start": 44009, + "end": 44010, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 38 }, "end": { - "line": 1271, + "line": 1270, "column": 39 } } @@ -150542,15 +150264,15 @@ "postfix": false, "binop": null }, - "start": 44071, - "end": 44072, + "start": 44011, + "end": 44012, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 40 }, "end": { - "line": 1271, + "line": 1270, "column": 41 } } @@ -150568,15 +150290,15 @@ "binop": null }, "value": "keyboardPanRate", - "start": 44072, - "end": 44087, + "start": 44012, + "end": 44027, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 41 }, "end": { - "line": 1271, + "line": 1270, "column": 56 } } @@ -150595,15 +150317,15 @@ "updateContext": null }, "value": "!==", - "start": 44088, - "end": 44091, + "start": 44028, + "end": 44031, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 57 }, "end": { - "line": 1271, + "line": 1270, "column": 60 } } @@ -150623,15 +150345,15 @@ "updateContext": null }, "value": "null", - "start": 44092, - "end": 44096, + "start": 44032, + "end": 44036, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 61 }, "end": { - "line": 1271, + "line": 1270, "column": 65 } } @@ -150650,15 +150372,15 @@ "updateContext": null }, "value": "&&", - "start": 44097, - "end": 44099, + "start": 44037, + "end": 44039, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 66 }, "end": { - "line": 1271, + "line": 1270, "column": 68 } } @@ -150676,15 +150398,15 @@ "binop": null }, "value": "keyboardPanRate", - "start": 44100, - "end": 44115, + "start": 44040, + "end": 44055, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 69 }, "end": { - "line": 1271, + "line": 1270, "column": 84 } } @@ -150703,15 +150425,15 @@ "updateContext": null }, "value": "!==", - "start": 44116, - "end": 44119, + "start": 44056, + "end": 44059, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 85 }, "end": { - "line": 1271, + "line": 1270, "column": 88 } } @@ -150729,15 +150451,15 @@ "binop": null }, "value": "undefined", - "start": 44120, - "end": 44129, + "start": 44060, + "end": 44069, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 89 }, "end": { - "line": 1271, + "line": 1270, "column": 98 } } @@ -150754,15 +150476,15 @@ "postfix": false, "binop": null }, - "start": 44129, - "end": 44130, + "start": 44069, + "end": 44070, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 98 }, "end": { - "line": 1271, + "line": 1270, "column": 99 } } @@ -150780,15 +150502,15 @@ "binop": null, "updateContext": null }, - "start": 44131, - "end": 44132, + "start": 44071, + "end": 44072, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 100 }, "end": { - "line": 1271, + "line": 1270, "column": 101 } } @@ -150806,15 +150528,15 @@ "binop": null }, "value": "keyboardPanRate", - "start": 44133, - "end": 44148, + "start": 44073, + "end": 44088, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 102 }, "end": { - "line": 1271, + "line": 1270, "column": 117 } } @@ -150832,15 +150554,15 @@ "binop": null, "updateContext": null }, - "start": 44149, - "end": 44150, + "start": 44089, + "end": 44090, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 118 }, "end": { - "line": 1271, + "line": 1270, "column": 119 } } @@ -150859,15 +150581,15 @@ "updateContext": null }, "value": 5, - "start": 44151, - "end": 44154, + "start": 44091, + "end": 44094, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 120 }, "end": { - "line": 1271, + "line": 1270, "column": 123 } } @@ -150885,15 +150607,15 @@ "binop": null, "updateContext": null }, - "start": 44154, - "end": 44155, + "start": 44094, + "end": 44095, "loc": { "start": { - "line": 1271, + "line": 1270, "column": 123 }, "end": { - "line": 1271, + "line": 1270, "column": 124 } } @@ -150910,15 +150632,15 @@ "postfix": false, "binop": null }, - "start": 44160, - "end": 44161, + "start": 44100, + "end": 44101, "loc": { "start": { - "line": 1272, + "line": 1271, "column": 4 }, "end": { - "line": 1272, + "line": 1271, "column": 5 } } @@ -150926,15 +150648,15 @@ { "type": "CommentBlock", "value": "*\n * Sets how fast the camera pans on touch panning\n *\n * @param {Number} touchPanRate The new touch pan rate.\n ", - "start": 44168, - "end": 44300, + "start": 44108, + "end": 44240, "loc": { "start": { - "line": 1275, + "line": 1274, "column": 4 }, "end": { - "line": 1279, + "line": 1278, "column": 7 } } @@ -150952,15 +150674,15 @@ "binop": null }, "value": "set", - "start": 44305, - "end": 44308, + "start": 44245, + "end": 44248, "loc": { "start": { - "line": 1280, + "line": 1279, "column": 4 }, "end": { - "line": 1280, + "line": 1279, "column": 7 } } @@ -150978,15 +150700,15 @@ "binop": null }, "value": "touchPanRate", - "start": 44309, - "end": 44321, + "start": 44249, + "end": 44261, "loc": { "start": { - "line": 1280, + "line": 1279, "column": 8 }, "end": { - "line": 1280, + "line": 1279, "column": 20 } } @@ -151003,15 +150725,15 @@ "postfix": false, "binop": null }, - "start": 44321, - "end": 44322, + "start": 44261, + "end": 44262, "loc": { "start": { - "line": 1280, + "line": 1279, "column": 20 }, "end": { - "line": 1280, + "line": 1279, "column": 21 } } @@ -151029,15 +150751,15 @@ "binop": null }, "value": "touchPanRate", - "start": 44322, - "end": 44334, + "start": 44262, + "end": 44274, "loc": { "start": { - "line": 1280, + "line": 1279, "column": 21 }, "end": { - "line": 1280, + "line": 1279, "column": 33 } } @@ -151054,15 +150776,15 @@ "postfix": false, "binop": null }, - "start": 44334, - "end": 44335, + "start": 44274, + "end": 44275, "loc": { "start": { - "line": 1280, + "line": 1279, "column": 33 }, "end": { - "line": 1280, + "line": 1279, "column": 34 } } @@ -151079,15 +150801,15 @@ "postfix": false, "binop": null }, - "start": 44336, - "end": 44337, + "start": 44276, + "end": 44277, "loc": { "start": { - "line": 1280, + "line": 1279, "column": 35 }, "end": { - "line": 1280, + "line": 1279, "column": 36 } } @@ -151107,15 +150829,15 @@ "updateContext": null }, "value": "this", - "start": 44346, - "end": 44350, + "start": 44286, + "end": 44290, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 8 }, "end": { - "line": 1281, + "line": 1280, "column": 12 } } @@ -151133,15 +150855,15 @@ "binop": null, "updateContext": null }, - "start": 44350, - "end": 44351, + "start": 44290, + "end": 44291, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 12 }, "end": { - "line": 1281, + "line": 1280, "column": 13 } } @@ -151159,15 +150881,15 @@ "binop": null }, "value": "_configs", - "start": 44351, - "end": 44359, + "start": 44291, + "end": 44299, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 13 }, "end": { - "line": 1281, + "line": 1280, "column": 21 } } @@ -151185,15 +150907,15 @@ "binop": null, "updateContext": null }, - "start": 44359, - "end": 44360, + "start": 44299, + "end": 44300, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 21 }, "end": { - "line": 1281, + "line": 1280, "column": 22 } } @@ -151211,15 +150933,15 @@ "binop": null }, "value": "touchPanRate", - "start": 44360, - "end": 44372, + "start": 44300, + "end": 44312, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 22 }, "end": { - "line": 1281, + "line": 1280, "column": 34 } } @@ -151238,15 +150960,15 @@ "updateContext": null }, "value": "=", - "start": 44373, - "end": 44374, + "start": 44313, + "end": 44314, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 35 }, "end": { - "line": 1281, + "line": 1280, "column": 36 } } @@ -151263,15 +150985,15 @@ "postfix": false, "binop": null }, - "start": 44375, - "end": 44376, + "start": 44315, + "end": 44316, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 37 }, "end": { - "line": 1281, + "line": 1280, "column": 38 } } @@ -151289,15 +151011,15 @@ "binop": null }, "value": "touchPanRate", - "start": 44376, - "end": 44388, + "start": 44316, + "end": 44328, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 38 }, "end": { - "line": 1281, + "line": 1280, "column": 50 } } @@ -151316,15 +151038,15 @@ "updateContext": null }, "value": "!==", - "start": 44389, - "end": 44392, + "start": 44329, + "end": 44332, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 51 }, "end": { - "line": 1281, + "line": 1280, "column": 54 } } @@ -151344,15 +151066,15 @@ "updateContext": null }, "value": "null", - "start": 44393, - "end": 44397, + "start": 44333, + "end": 44337, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 55 }, "end": { - "line": 1281, + "line": 1280, "column": 59 } } @@ -151371,15 +151093,15 @@ "updateContext": null }, "value": "&&", - "start": 44398, - "end": 44400, + "start": 44338, + "end": 44340, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 60 }, "end": { - "line": 1281, + "line": 1280, "column": 62 } } @@ -151397,15 +151119,15 @@ "binop": null }, "value": "touchPanRate", - "start": 44401, - "end": 44413, + "start": 44341, + "end": 44353, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 63 }, "end": { - "line": 1281, + "line": 1280, "column": 75 } } @@ -151424,15 +151146,15 @@ "updateContext": null }, "value": "!==", - "start": 44414, - "end": 44417, + "start": 44354, + "end": 44357, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 76 }, "end": { - "line": 1281, + "line": 1280, "column": 79 } } @@ -151450,15 +151172,15 @@ "binop": null }, "value": "undefined", - "start": 44418, - "end": 44427, + "start": 44358, + "end": 44367, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 80 }, "end": { - "line": 1281, + "line": 1280, "column": 89 } } @@ -151475,15 +151197,15 @@ "postfix": false, "binop": null }, - "start": 44427, - "end": 44428, + "start": 44367, + "end": 44368, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 89 }, "end": { - "line": 1281, + "line": 1280, "column": 90 } } @@ -151501,15 +151223,15 @@ "binop": null, "updateContext": null }, - "start": 44429, - "end": 44430, + "start": 44369, + "end": 44370, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 91 }, "end": { - "line": 1281, + "line": 1280, "column": 92 } } @@ -151527,15 +151249,15 @@ "binop": null }, "value": "touchPanRate", - "start": 44431, - "end": 44443, + "start": 44371, + "end": 44383, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 93 }, "end": { - "line": 1281, + "line": 1280, "column": 105 } } @@ -151553,15 +151275,15 @@ "binop": null, "updateContext": null }, - "start": 44444, - "end": 44445, + "start": 44384, + "end": 44385, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 106 }, "end": { - "line": 1281, + "line": 1280, "column": 107 } } @@ -151580,15 +151302,15 @@ "updateContext": null }, "value": 1, - "start": 44446, - "end": 44449, + "start": 44386, + "end": 44389, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 108 }, "end": { - "line": 1281, + "line": 1280, "column": 111 } } @@ -151606,15 +151328,15 @@ "binop": null, "updateContext": null }, - "start": 44449, - "end": 44450, + "start": 44389, + "end": 44390, "loc": { "start": { - "line": 1281, + "line": 1280, "column": 111 }, "end": { - "line": 1281, + "line": 1280, "column": 112 } } @@ -151631,15 +151353,15 @@ "postfix": false, "binop": null }, - "start": 44455, - "end": 44456, + "start": 44395, + "end": 44396, "loc": { "start": { - "line": 1282, + "line": 1281, "column": 4 }, "end": { - "line": 1282, + "line": 1281, "column": 5 } } @@ -151647,15 +151369,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44462, - "end": 44633, + "start": 44402, + "end": 44573, "loc": { "start": { - "line": 1284, + "line": 1283, "column": 4 }, "end": { - "line": 1290, + "line": 1289, "column": 7 } } @@ -151673,15 +151395,15 @@ "binop": null }, "value": "get", - "start": 44638, - "end": 44641, + "start": 44578, + "end": 44581, "loc": { "start": { - "line": 1291, + "line": 1290, "column": 4 }, "end": { - "line": 1291, + "line": 1290, "column": 7 } } @@ -151699,15 +151421,15 @@ "binop": null }, "value": "touchPanRate", - "start": 44642, - "end": 44654, + "start": 44582, + "end": 44594, "loc": { "start": { - "line": 1291, + "line": 1290, "column": 8 }, "end": { - "line": 1291, + "line": 1290, "column": 20 } } @@ -151724,15 +151446,15 @@ "postfix": false, "binop": null }, - "start": 44654, - "end": 44655, + "start": 44594, + "end": 44595, "loc": { "start": { - "line": 1291, + "line": 1290, "column": 20 }, "end": { - "line": 1291, + "line": 1290, "column": 21 } } @@ -151749,15 +151471,15 @@ "postfix": false, "binop": null }, - "start": 44655, - "end": 44656, + "start": 44595, + "end": 44596, "loc": { "start": { - "line": 1291, + "line": 1290, "column": 21 }, "end": { - "line": 1291, + "line": 1290, "column": 22 } } @@ -151774,15 +151496,15 @@ "postfix": false, "binop": null }, - "start": 44657, - "end": 44658, + "start": 44597, + "end": 44598, "loc": { "start": { - "line": 1291, + "line": 1290, "column": 23 }, "end": { - "line": 1291, + "line": 1290, "column": 24 } } @@ -151802,15 +151524,15 @@ "updateContext": null }, "value": "return", - "start": 44667, - "end": 44673, + "start": 44607, + "end": 44613, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 8 }, "end": { - "line": 1292, + "line": 1291, "column": 14 } } @@ -151830,15 +151552,15 @@ "updateContext": null }, "value": "this", - "start": 44674, - "end": 44678, + "start": 44614, + "end": 44618, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 15 }, "end": { - "line": 1292, + "line": 1291, "column": 19 } } @@ -151856,15 +151578,15 @@ "binop": null, "updateContext": null }, - "start": 44678, - "end": 44679, + "start": 44618, + "end": 44619, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 19 }, "end": { - "line": 1292, + "line": 1291, "column": 20 } } @@ -151882,15 +151604,15 @@ "binop": null }, "value": "_configs", - "start": 44679, - "end": 44687, + "start": 44619, + "end": 44627, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 20 }, "end": { - "line": 1292, + "line": 1291, "column": 28 } } @@ -151908,15 +151630,15 @@ "binop": null, "updateContext": null }, - "start": 44687, - "end": 44688, + "start": 44627, + "end": 44628, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 28 }, "end": { - "line": 1292, + "line": 1291, "column": 29 } } @@ -151934,15 +151656,15 @@ "binop": null }, "value": "touchPanRate", - "start": 44688, - "end": 44700, + "start": 44628, + "end": 44640, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 29 }, "end": { - "line": 1292, + "line": 1291, "column": 41 } } @@ -151960,15 +151682,15 @@ "binop": null, "updateContext": null }, - "start": 44700, - "end": 44701, + "start": 44640, + "end": 44641, "loc": { "start": { - "line": 1292, + "line": 1291, "column": 41 }, "end": { - "line": 1292, + "line": 1291, "column": 42 } } @@ -151985,15 +151707,15 @@ "postfix": false, "binop": null }, - "start": 44706, - "end": 44707, + "start": 44646, + "end": 44647, "loc": { "start": { - "line": 1293, + "line": 1292, "column": 4 }, "end": { - "line": 1293, + "line": 1292, "column": 5 } } @@ -152001,15 +151723,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44713, - "end": 44903, + "start": 44653, + "end": 44843, "loc": { "start": { - "line": 1295, + "line": 1294, "column": 4 }, "end": { - "line": 1301, + "line": 1300, "column": 7 } } @@ -152027,15 +151749,15 @@ "binop": null }, "value": "get", - "start": 44908, - "end": 44911, + "start": 44848, + "end": 44851, "loc": { "start": { - "line": 1302, + "line": 1301, "column": 4 }, "end": { - "line": 1302, + "line": 1301, "column": 7 } } @@ -152053,15 +151775,15 @@ "binop": null }, "value": "keyboardPanRate", - "start": 44912, - "end": 44927, + "start": 44852, + "end": 44867, "loc": { "start": { - "line": 1302, + "line": 1301, "column": 8 }, "end": { - "line": 1302, + "line": 1301, "column": 23 } } @@ -152078,15 +151800,15 @@ "postfix": false, "binop": null }, - "start": 44927, - "end": 44928, + "start": 44867, + "end": 44868, "loc": { "start": { - "line": 1302, + "line": 1301, "column": 23 }, "end": { - "line": 1302, + "line": 1301, "column": 24 } } @@ -152103,15 +151825,15 @@ "postfix": false, "binop": null }, - "start": 44928, - "end": 44929, + "start": 44868, + "end": 44869, "loc": { "start": { - "line": 1302, + "line": 1301, "column": 24 }, "end": { - "line": 1302, + "line": 1301, "column": 25 } } @@ -152128,15 +151850,15 @@ "postfix": false, "binop": null }, - "start": 44930, - "end": 44931, + "start": 44870, + "end": 44871, "loc": { "start": { - "line": 1302, + "line": 1301, "column": 26 }, "end": { - "line": 1302, + "line": 1301, "column": 27 } } @@ -152156,15 +151878,15 @@ "updateContext": null }, "value": "return", - "start": 44940, - "end": 44946, + "start": 44880, + "end": 44886, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 8 }, "end": { - "line": 1303, + "line": 1302, "column": 14 } } @@ -152184,15 +151906,15 @@ "updateContext": null }, "value": "this", - "start": 44947, - "end": 44951, + "start": 44887, + "end": 44891, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 15 }, "end": { - "line": 1303, + "line": 1302, "column": 19 } } @@ -152210,15 +151932,15 @@ "binop": null, "updateContext": null }, - "start": 44951, - "end": 44952, + "start": 44891, + "end": 44892, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 19 }, "end": { - "line": 1303, + "line": 1302, "column": 20 } } @@ -152236,15 +151958,15 @@ "binop": null }, "value": "_configs", - "start": 44952, - "end": 44960, + "start": 44892, + "end": 44900, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 20 }, "end": { - "line": 1303, + "line": 1302, "column": 28 } } @@ -152262,15 +151984,15 @@ "binop": null, "updateContext": null }, - "start": 44960, - "end": 44961, + "start": 44900, + "end": 44901, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 28 }, "end": { - "line": 1303, + "line": 1302, "column": 29 } } @@ -152288,15 +152010,15 @@ "binop": null }, "value": "keyboardPanRate", - "start": 44961, - "end": 44976, + "start": 44901, + "end": 44916, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 29 }, "end": { - "line": 1303, + "line": 1302, "column": 44 } } @@ -152314,15 +152036,15 @@ "binop": null, "updateContext": null }, - "start": 44976, - "end": 44977, + "start": 44916, + "end": 44917, "loc": { "start": { - "line": 1303, + "line": 1302, "column": 44 }, "end": { - "line": 1303, + "line": 1302, "column": 45 } } @@ -152339,15 +152061,15 @@ "postfix": false, "binop": null }, - "start": 44982, - "end": 44983, + "start": 44922, + "end": 44923, "loc": { "start": { - "line": 1304, + "line": 1303, "column": 4 }, "end": { - "line": 1304, + "line": 1303, "column": 5 } } @@ -152355,15 +152077,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 44989, - "end": 45415, + "start": 44929, + "end": 45355, "loc": { "start": { - "line": 1306, + "line": 1305, "column": 4 }, "end": { - "line": 1314, + "line": 1313, "column": 7 } } @@ -152381,15 +152103,15 @@ "binop": null }, "value": "set", - "start": 45420, - "end": 45423, + "start": 45360, + "end": 45363, "loc": { "start": { - "line": 1315, + "line": 1314, "column": 4 }, "end": { - "line": 1315, + "line": 1314, "column": 7 } } @@ -152407,15 +152129,15 @@ "binop": null }, "value": "keyboardRotationRate", - "start": 45424, - "end": 45444, + "start": 45364, + "end": 45384, "loc": { "start": { - "line": 1315, + "line": 1314, "column": 8 }, "end": { - "line": 1315, + "line": 1314, "column": 28 } } @@ -152432,15 +152154,15 @@ "postfix": false, "binop": null }, - "start": 45444, - "end": 45445, + "start": 45384, + "end": 45385, "loc": { "start": { - "line": 1315, + "line": 1314, "column": 28 }, "end": { - "line": 1315, + "line": 1314, "column": 29 } } @@ -152458,15 +152180,15 @@ "binop": null }, "value": "keyboardRotationRate", - "start": 45445, - "end": 45465, + "start": 45385, + "end": 45405, "loc": { "start": { - "line": 1315, + "line": 1314, "column": 29 }, "end": { - "line": 1315, + "line": 1314, "column": 49 } } @@ -152483,15 +152205,15 @@ "postfix": false, "binop": null }, - "start": 45465, - "end": 45466, + "start": 45405, + "end": 45406, "loc": { "start": { - "line": 1315, + "line": 1314, "column": 49 }, "end": { - "line": 1315, + "line": 1314, "column": 50 } } @@ -152508,15 +152230,15 @@ "postfix": false, "binop": null }, - "start": 45467, - "end": 45468, + "start": 45407, + "end": 45408, "loc": { "start": { - "line": 1315, + "line": 1314, "column": 51 }, "end": { - "line": 1315, + "line": 1314, "column": 52 } } @@ -152536,15 +152258,15 @@ "updateContext": null }, "value": "this", - "start": 45477, - "end": 45481, + "start": 45417, + "end": 45421, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 8 }, "end": { - "line": 1316, + "line": 1315, "column": 12 } } @@ -152562,15 +152284,15 @@ "binop": null, "updateContext": null }, - "start": 45481, - "end": 45482, + "start": 45421, + "end": 45422, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 12 }, "end": { - "line": 1316, + "line": 1315, "column": 13 } } @@ -152588,15 +152310,15 @@ "binop": null }, "value": "_configs", - "start": 45482, - "end": 45490, + "start": 45422, + "end": 45430, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 13 }, "end": { - "line": 1316, + "line": 1315, "column": 21 } } @@ -152614,15 +152336,15 @@ "binop": null, "updateContext": null }, - "start": 45490, - "end": 45491, + "start": 45430, + "end": 45431, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 21 }, "end": { - "line": 1316, + "line": 1315, "column": 22 } } @@ -152640,15 +152362,15 @@ "binop": null }, "value": "keyboardRotationRate", - "start": 45491, - "end": 45511, + "start": 45431, + "end": 45451, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 22 }, "end": { - "line": 1316, + "line": 1315, "column": 42 } } @@ -152667,15 +152389,15 @@ "updateContext": null }, "value": "=", - "start": 45512, - "end": 45513, + "start": 45452, + "end": 45453, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 43 }, "end": { - "line": 1316, + "line": 1315, "column": 44 } } @@ -152692,15 +152414,15 @@ "postfix": false, "binop": null }, - "start": 45514, - "end": 45515, + "start": 45454, + "end": 45455, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 45 }, "end": { - "line": 1316, + "line": 1315, "column": 46 } } @@ -152718,15 +152440,15 @@ "binop": null }, "value": "keyboardRotationRate", - "start": 45515, - "end": 45535, + "start": 45455, + "end": 45475, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 46 }, "end": { - "line": 1316, + "line": 1315, "column": 66 } } @@ -152745,15 +152467,15 @@ "updateContext": null }, "value": "!==", - "start": 45536, - "end": 45539, + "start": 45476, + "end": 45479, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 67 }, "end": { - "line": 1316, + "line": 1315, "column": 70 } } @@ -152773,15 +152495,15 @@ "updateContext": null }, "value": "null", - "start": 45540, - "end": 45544, + "start": 45480, + "end": 45484, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 71 }, "end": { - "line": 1316, + "line": 1315, "column": 75 } } @@ -152800,15 +152522,15 @@ "updateContext": null }, "value": "&&", - "start": 45545, - "end": 45547, + "start": 45485, + "end": 45487, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 76 }, "end": { - "line": 1316, + "line": 1315, "column": 78 } } @@ -152826,15 +152548,15 @@ "binop": null }, "value": "keyboardRotationRate", - "start": 45548, - "end": 45568, + "start": 45488, + "end": 45508, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 79 }, "end": { - "line": 1316, + "line": 1315, "column": 99 } } @@ -152853,15 +152575,15 @@ "updateContext": null }, "value": "!==", - "start": 45569, - "end": 45572, + "start": 45509, + "end": 45512, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 100 }, "end": { - "line": 1316, + "line": 1315, "column": 103 } } @@ -152879,15 +152601,15 @@ "binop": null }, "value": "undefined", - "start": 45573, - "end": 45582, + "start": 45513, + "end": 45522, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 104 }, "end": { - "line": 1316, + "line": 1315, "column": 113 } } @@ -152904,15 +152626,15 @@ "postfix": false, "binop": null }, - "start": 45582, - "end": 45583, + "start": 45522, + "end": 45523, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 113 }, "end": { - "line": 1316, + "line": 1315, "column": 114 } } @@ -152930,15 +152652,15 @@ "binop": null, "updateContext": null }, - "start": 45584, - "end": 45585, + "start": 45524, + "end": 45525, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 115 }, "end": { - "line": 1316, + "line": 1315, "column": 116 } } @@ -152956,15 +152678,15 @@ "binop": null }, "value": "keyboardRotationRate", - "start": 45586, - "end": 45606, + "start": 45526, + "end": 45546, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 117 }, "end": { - "line": 1316, + "line": 1315, "column": 137 } } @@ -152982,15 +152704,15 @@ "binop": null, "updateContext": null }, - "start": 45607, - "end": 45608, + "start": 45547, + "end": 45548, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 138 }, "end": { - "line": 1316, + "line": 1315, "column": 139 } } @@ -153009,15 +152731,15 @@ "updateContext": null }, "value": 90, - "start": 45609, - "end": 45613, + "start": 45549, + "end": 45553, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 140 }, "end": { - "line": 1316, + "line": 1315, "column": 144 } } @@ -153035,15 +152757,15 @@ "binop": null, "updateContext": null }, - "start": 45613, - "end": 45614, + "start": 45553, + "end": 45554, "loc": { "start": { - "line": 1316, + "line": 1315, "column": 144 }, "end": { - "line": 1316, + "line": 1315, "column": 145 } } @@ -153060,15 +152782,15 @@ "postfix": false, "binop": null }, - "start": 45619, - "end": 45620, + "start": 45559, + "end": 45560, "loc": { "start": { - "line": 1317, + "line": 1316, "column": 4 }, "end": { - "line": 1317, + "line": 1316, "column": 5 } } @@ -153076,15 +152798,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 45626, - "end": 45839, + "start": 45566, + "end": 45779, "loc": { "start": { - "line": 1319, + "line": 1318, "column": 4 }, "end": { - "line": 1325, + "line": 1324, "column": 7 } } @@ -153102,15 +152824,15 @@ "binop": null }, "value": "get", - "start": 45844, - "end": 45847, + "start": 45784, + "end": 45787, "loc": { "start": { - "line": 1326, + "line": 1325, "column": 4 }, "end": { - "line": 1326, + "line": 1325, "column": 7 } } @@ -153128,15 +152850,15 @@ "binop": null }, "value": "keyboardRotationRate", - "start": 45848, - "end": 45868, + "start": 45788, + "end": 45808, "loc": { "start": { - "line": 1326, + "line": 1325, "column": 8 }, "end": { - "line": 1326, + "line": 1325, "column": 28 } } @@ -153153,15 +152875,15 @@ "postfix": false, "binop": null }, - "start": 45868, - "end": 45869, + "start": 45808, + "end": 45809, "loc": { "start": { - "line": 1326, + "line": 1325, "column": 28 }, "end": { - "line": 1326, + "line": 1325, "column": 29 } } @@ -153178,15 +152900,15 @@ "postfix": false, "binop": null }, - "start": 45869, - "end": 45870, + "start": 45809, + "end": 45810, "loc": { "start": { - "line": 1326, + "line": 1325, "column": 29 }, "end": { - "line": 1326, + "line": 1325, "column": 30 } } @@ -153203,15 +152925,15 @@ "postfix": false, "binop": null }, - "start": 45871, - "end": 45872, + "start": 45811, + "end": 45812, "loc": { "start": { - "line": 1326, + "line": 1325, "column": 31 }, "end": { - "line": 1326, + "line": 1325, "column": 32 } } @@ -153231,15 +152953,15 @@ "updateContext": null }, "value": "return", - "start": 45881, - "end": 45887, + "start": 45821, + "end": 45827, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 8 }, "end": { - "line": 1327, + "line": 1326, "column": 14 } } @@ -153259,15 +152981,15 @@ "updateContext": null }, "value": "this", - "start": 45888, - "end": 45892, + "start": 45828, + "end": 45832, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 15 }, "end": { - "line": 1327, + "line": 1326, "column": 19 } } @@ -153285,15 +153007,15 @@ "binop": null, "updateContext": null }, - "start": 45892, - "end": 45893, + "start": 45832, + "end": 45833, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 19 }, "end": { - "line": 1327, + "line": 1326, "column": 20 } } @@ -153311,15 +153033,15 @@ "binop": null }, "value": "_configs", - "start": 45893, - "end": 45901, + "start": 45833, + "end": 45841, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 20 }, "end": { - "line": 1327, + "line": 1326, "column": 28 } } @@ -153337,15 +153059,15 @@ "binop": null, "updateContext": null }, - "start": 45901, - "end": 45902, + "start": 45841, + "end": 45842, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 28 }, "end": { - "line": 1327, + "line": 1326, "column": 29 } } @@ -153363,15 +153085,15 @@ "binop": null }, "value": "keyboardRotationRate", - "start": 45902, - "end": 45922, + "start": 45842, + "end": 45862, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 29 }, "end": { - "line": 1327, + "line": 1326, "column": 49 } } @@ -153389,15 +153111,15 @@ "binop": null, "updateContext": null }, - "start": 45922, - "end": 45923, + "start": 45862, + "end": 45863, "loc": { "start": { - "line": 1327, + "line": 1326, "column": 49 }, "end": { - "line": 1327, + "line": 1326, "column": 50 } } @@ -153414,15 +153136,15 @@ "postfix": false, "binop": null }, - "start": 45928, - "end": 45929, + "start": 45868, + "end": 45869, "loc": { "start": { - "line": 1328, + "line": 1327, "column": 4 }, "end": { - "line": 1328, + "line": 1327, "column": 5 } } @@ -153430,15 +153152,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 45935, - "end": 46751, + "start": 45875, + "end": 46691, "loc": { "start": { - "line": 1330, + "line": 1329, "column": 4 }, "end": { - "line": 1345, + "line": 1344, "column": 7 } } @@ -153456,15 +153178,15 @@ "binop": null }, "value": "set", - "start": 46756, - "end": 46759, + "start": 46696, + "end": 46699, "loc": { "start": { - "line": 1346, + "line": 1345, "column": 4 }, "end": { - "line": 1346, + "line": 1345, "column": 7 } } @@ -153482,15 +153204,15 @@ "binop": null }, "value": "dragRotationRate", - "start": 46760, - "end": 46776, + "start": 46700, + "end": 46716, "loc": { "start": { - "line": 1346, + "line": 1345, "column": 8 }, "end": { - "line": 1346, + "line": 1345, "column": 24 } } @@ -153507,15 +153229,15 @@ "postfix": false, "binop": null }, - "start": 46776, - "end": 46777, + "start": 46716, + "end": 46717, "loc": { "start": { - "line": 1346, + "line": 1345, "column": 24 }, "end": { - "line": 1346, + "line": 1345, "column": 25 } } @@ -153533,15 +153255,15 @@ "binop": null }, "value": "dragRotationRate", - "start": 46777, - "end": 46793, + "start": 46717, + "end": 46733, "loc": { "start": { - "line": 1346, + "line": 1345, "column": 25 }, "end": { - "line": 1346, + "line": 1345, "column": 41 } } @@ -153558,15 +153280,15 @@ "postfix": false, "binop": null }, - "start": 46793, - "end": 46794, + "start": 46733, + "end": 46734, "loc": { "start": { - "line": 1346, + "line": 1345, "column": 41 }, "end": { - "line": 1346, + "line": 1345, "column": 42 } } @@ -153583,15 +153305,15 @@ "postfix": false, "binop": null }, - "start": 46795, - "end": 46796, + "start": 46735, + "end": 46736, "loc": { "start": { - "line": 1346, + "line": 1345, "column": 43 }, "end": { - "line": 1346, + "line": 1345, "column": 44 } } @@ -153611,15 +153333,15 @@ "updateContext": null }, "value": "this", - "start": 46805, - "end": 46809, + "start": 46745, + "end": 46749, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 8 }, "end": { - "line": 1347, + "line": 1346, "column": 12 } } @@ -153637,15 +153359,15 @@ "binop": null, "updateContext": null }, - "start": 46809, - "end": 46810, + "start": 46749, + "end": 46750, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 12 }, "end": { - "line": 1347, + "line": 1346, "column": 13 } } @@ -153663,15 +153385,15 @@ "binop": null }, "value": "_configs", - "start": 46810, - "end": 46818, + "start": 46750, + "end": 46758, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 13 }, "end": { - "line": 1347, + "line": 1346, "column": 21 } } @@ -153689,15 +153411,15 @@ "binop": null, "updateContext": null }, - "start": 46818, - "end": 46819, + "start": 46758, + "end": 46759, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 21 }, "end": { - "line": 1347, + "line": 1346, "column": 22 } } @@ -153715,15 +153437,15 @@ "binop": null }, "value": "dragRotationRate", - "start": 46819, - "end": 46835, + "start": 46759, + "end": 46775, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 22 }, "end": { - "line": 1347, + "line": 1346, "column": 38 } } @@ -153742,15 +153464,15 @@ "updateContext": null }, "value": "=", - "start": 46836, - "end": 46837, + "start": 46776, + "end": 46777, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 39 }, "end": { - "line": 1347, + "line": 1346, "column": 40 } } @@ -153767,15 +153489,15 @@ "postfix": false, "binop": null }, - "start": 46838, - "end": 46839, + "start": 46778, + "end": 46779, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 41 }, "end": { - "line": 1347, + "line": 1346, "column": 42 } } @@ -153793,15 +153515,15 @@ "binop": null }, "value": "dragRotationRate", - "start": 46839, - "end": 46855, + "start": 46779, + "end": 46795, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 42 }, "end": { - "line": 1347, + "line": 1346, "column": 58 } } @@ -153820,15 +153542,15 @@ "updateContext": null }, "value": "!==", - "start": 46856, - "end": 46859, + "start": 46796, + "end": 46799, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 59 }, "end": { - "line": 1347, + "line": 1346, "column": 62 } } @@ -153848,15 +153570,15 @@ "updateContext": null }, "value": "null", - "start": 46860, - "end": 46864, + "start": 46800, + "end": 46804, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 63 }, "end": { - "line": 1347, + "line": 1346, "column": 67 } } @@ -153875,15 +153597,15 @@ "updateContext": null }, "value": "&&", - "start": 46865, - "end": 46867, + "start": 46805, + "end": 46807, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 68 }, "end": { - "line": 1347, + "line": 1346, "column": 70 } } @@ -153901,15 +153623,15 @@ "binop": null }, "value": "dragRotationRate", - "start": 46868, - "end": 46884, + "start": 46808, + "end": 46824, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 71 }, "end": { - "line": 1347, + "line": 1346, "column": 87 } } @@ -153928,15 +153650,15 @@ "updateContext": null }, "value": "!==", - "start": 46885, - "end": 46888, + "start": 46825, + "end": 46828, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 88 }, "end": { - "line": 1347, + "line": 1346, "column": 91 } } @@ -153954,15 +153676,15 @@ "binop": null }, "value": "undefined", - "start": 46889, - "end": 46898, + "start": 46829, + "end": 46838, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 92 }, "end": { - "line": 1347, + "line": 1346, "column": 101 } } @@ -153979,15 +153701,15 @@ "postfix": false, "binop": null }, - "start": 46898, - "end": 46899, + "start": 46838, + "end": 46839, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 101 }, "end": { - "line": 1347, + "line": 1346, "column": 102 } } @@ -154005,15 +153727,15 @@ "binop": null, "updateContext": null }, - "start": 46900, - "end": 46901, + "start": 46840, + "end": 46841, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 103 }, "end": { - "line": 1347, + "line": 1346, "column": 104 } } @@ -154031,15 +153753,15 @@ "binop": null }, "value": "dragRotationRate", - "start": 46902, - "end": 46918, + "start": 46842, + "end": 46858, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 105 }, "end": { - "line": 1347, + "line": 1346, "column": 121 } } @@ -154057,15 +153779,15 @@ "binop": null, "updateContext": null }, - "start": 46919, - "end": 46920, + "start": 46859, + "end": 46860, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 122 }, "end": { - "line": 1347, + "line": 1346, "column": 123 } } @@ -154084,15 +153806,15 @@ "updateContext": null }, "value": 360, - "start": 46921, - "end": 46926, + "start": 46861, + "end": 46866, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 124 }, "end": { - "line": 1347, + "line": 1346, "column": 129 } } @@ -154110,15 +153832,15 @@ "binop": null, "updateContext": null }, - "start": 46926, - "end": 46927, + "start": 46866, + "end": 46867, "loc": { "start": { - "line": 1347, + "line": 1346, "column": 129 }, "end": { - "line": 1347, + "line": 1346, "column": 130 } } @@ -154135,15 +153857,15 @@ "postfix": false, "binop": null }, - "start": 46932, - "end": 46933, + "start": 46872, + "end": 46873, "loc": { "start": { - "line": 1348, + "line": 1347, "column": 4 }, "end": { - "line": 1348, + "line": 1347, "column": 5 } } @@ -154151,15 +153873,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the current drag rotation rate.\n *\n * Default is ````360.0````.\n *\n * @returns {Number} The current drag rotation rate.\n ", - "start": 46939, - "end": 47098, + "start": 46879, + "end": 47038, "loc": { "start": { - "line": 1350, + "line": 1349, "column": 4 }, "end": { - "line": 1356, + "line": 1355, "column": 7 } } @@ -154177,15 +153899,15 @@ "binop": null }, "value": "get", - "start": 47103, - "end": 47106, + "start": 47043, + "end": 47046, "loc": { "start": { - "line": 1357, + "line": 1356, "column": 4 }, "end": { - "line": 1357, + "line": 1356, "column": 7 } } @@ -154203,15 +153925,15 @@ "binop": null }, "value": "dragRotationRate", - "start": 47107, - "end": 47123, + "start": 47047, + "end": 47063, "loc": { "start": { - "line": 1357, + "line": 1356, "column": 8 }, "end": { - "line": 1357, + "line": 1356, "column": 24 } } @@ -154228,15 +153950,15 @@ "postfix": false, "binop": null }, - "start": 47123, - "end": 47124, + "start": 47063, + "end": 47064, "loc": { "start": { - "line": 1357, + "line": 1356, "column": 24 }, "end": { - "line": 1357, + "line": 1356, "column": 25 } } @@ -154253,15 +153975,15 @@ "postfix": false, "binop": null }, - "start": 47124, - "end": 47125, + "start": 47064, + "end": 47065, "loc": { "start": { - "line": 1357, + "line": 1356, "column": 25 }, "end": { - "line": 1357, + "line": 1356, "column": 26 } } @@ -154278,15 +154000,15 @@ "postfix": false, "binop": null }, - "start": 47126, - "end": 47127, + "start": 47066, + "end": 47067, "loc": { "start": { - "line": 1357, + "line": 1356, "column": 27 }, "end": { - "line": 1357, + "line": 1356, "column": 28 } } @@ -154306,15 +154028,15 @@ "updateContext": null }, "value": "return", - "start": 47136, - "end": 47142, + "start": 47076, + "end": 47082, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 8 }, "end": { - "line": 1358, + "line": 1357, "column": 14 } } @@ -154334,15 +154056,15 @@ "updateContext": null }, "value": "this", - "start": 47143, - "end": 47147, + "start": 47083, + "end": 47087, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 15 }, "end": { - "line": 1358, + "line": 1357, "column": 19 } } @@ -154360,15 +154082,15 @@ "binop": null, "updateContext": null }, - "start": 47147, - "end": 47148, + "start": 47087, + "end": 47088, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 19 }, "end": { - "line": 1358, + "line": 1357, "column": 20 } } @@ -154386,15 +154108,15 @@ "binop": null }, "value": "_configs", - "start": 47148, - "end": 47156, + "start": 47088, + "end": 47096, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 20 }, "end": { - "line": 1358, + "line": 1357, "column": 28 } } @@ -154412,15 +154134,15 @@ "binop": null, "updateContext": null }, - "start": 47156, - "end": 47157, + "start": 47096, + "end": 47097, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 28 }, "end": { - "line": 1358, + "line": 1357, "column": 29 } } @@ -154438,15 +154160,15 @@ "binop": null }, "value": "dragRotationRate", - "start": 47157, - "end": 47173, + "start": 47097, + "end": 47113, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 29 }, "end": { - "line": 1358, + "line": 1357, "column": 45 } } @@ -154464,15 +154186,15 @@ "binop": null, "updateContext": null }, - "start": 47173, - "end": 47174, + "start": 47113, + "end": 47114, "loc": { "start": { - "line": 1358, + "line": 1357, "column": 45 }, "end": { - "line": 1358, + "line": 1357, "column": 46 } } @@ -154489,15 +154211,15 @@ "postfix": false, "binop": null }, - "start": 47179, - "end": 47180, + "start": 47119, + "end": 47120, "loc": { "start": { - "line": 1359, + "line": 1358, "column": 4 }, "end": { - "line": 1359, + "line": 1358, "column": 5 } } @@ -154505,15 +154227,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 47186, - "end": 47523, + "start": 47126, + "end": 47463, "loc": { "start": { - "line": 1361, + "line": 1360, "column": 4 }, "end": { - "line": 1368, + "line": 1367, "column": 7 } } @@ -154531,15 +154253,15 @@ "binop": null }, "value": "set", - "start": 47528, - "end": 47531, + "start": 47468, + "end": 47471, "loc": { "start": { - "line": 1369, + "line": 1368, "column": 4 }, "end": { - "line": 1369, + "line": 1368, "column": 7 } } @@ -154557,15 +154279,15 @@ "binop": null }, "value": "keyboardDollyRate", - "start": 47532, - "end": 47549, + "start": 47472, + "end": 47489, "loc": { "start": { - "line": 1369, + "line": 1368, "column": 8 }, "end": { - "line": 1369, + "line": 1368, "column": 25 } } @@ -154582,15 +154304,15 @@ "postfix": false, "binop": null }, - "start": 47549, - "end": 47550, + "start": 47489, + "end": 47490, "loc": { "start": { - "line": 1369, + "line": 1368, "column": 25 }, "end": { - "line": 1369, + "line": 1368, "column": 26 } } @@ -154608,15 +154330,15 @@ "binop": null }, "value": "keyboardDollyRate", - "start": 47550, - "end": 47567, + "start": 47490, + "end": 47507, "loc": { "start": { - "line": 1369, + "line": 1368, "column": 26 }, "end": { - "line": 1369, + "line": 1368, "column": 43 } } @@ -154633,15 +154355,15 @@ "postfix": false, "binop": null }, - "start": 47567, - "end": 47568, + "start": 47507, + "end": 47508, "loc": { "start": { - "line": 1369, + "line": 1368, "column": 43 }, "end": { - "line": 1369, + "line": 1368, "column": 44 } } @@ -154658,15 +154380,15 @@ "postfix": false, "binop": null }, - "start": 47569, - "end": 47570, + "start": 47509, + "end": 47510, "loc": { "start": { - "line": 1369, + "line": 1368, "column": 45 }, "end": { - "line": 1369, + "line": 1368, "column": 46 } } @@ -154686,15 +154408,15 @@ "updateContext": null }, "value": "this", - "start": 47579, - "end": 47583, + "start": 47519, + "end": 47523, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 8 }, "end": { - "line": 1370, + "line": 1369, "column": 12 } } @@ -154712,15 +154434,15 @@ "binop": null, "updateContext": null }, - "start": 47583, - "end": 47584, + "start": 47523, + "end": 47524, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 12 }, "end": { - "line": 1370, + "line": 1369, "column": 13 } } @@ -154738,15 +154460,15 @@ "binop": null }, "value": "_configs", - "start": 47584, - "end": 47592, + "start": 47524, + "end": 47532, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 13 }, "end": { - "line": 1370, + "line": 1369, "column": 21 } } @@ -154764,15 +154486,15 @@ "binop": null, "updateContext": null }, - "start": 47592, - "end": 47593, + "start": 47532, + "end": 47533, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 21 }, "end": { - "line": 1370, + "line": 1369, "column": 22 } } @@ -154790,15 +154512,15 @@ "binop": null }, "value": "keyboardDollyRate", - "start": 47593, - "end": 47610, + "start": 47533, + "end": 47550, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 22 }, "end": { - "line": 1370, + "line": 1369, "column": 39 } } @@ -154817,15 +154539,15 @@ "updateContext": null }, "value": "=", - "start": 47611, - "end": 47612, + "start": 47551, + "end": 47552, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 40 }, "end": { - "line": 1370, + "line": 1369, "column": 41 } } @@ -154842,15 +154564,15 @@ "postfix": false, "binop": null }, - "start": 47613, - "end": 47614, + "start": 47553, + "end": 47554, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 42 }, "end": { - "line": 1370, + "line": 1369, "column": 43 } } @@ -154868,15 +154590,15 @@ "binop": null }, "value": "keyboardDollyRate", - "start": 47614, - "end": 47631, + "start": 47554, + "end": 47571, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 43 }, "end": { - "line": 1370, + "line": 1369, "column": 60 } } @@ -154895,15 +154617,15 @@ "updateContext": null }, "value": "!==", - "start": 47632, - "end": 47635, + "start": 47572, + "end": 47575, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 61 }, "end": { - "line": 1370, + "line": 1369, "column": 64 } } @@ -154923,15 +154645,15 @@ "updateContext": null }, "value": "null", - "start": 47636, - "end": 47640, + "start": 47576, + "end": 47580, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 65 }, "end": { - "line": 1370, + "line": 1369, "column": 69 } } @@ -154950,15 +154672,15 @@ "updateContext": null }, "value": "&&", - "start": 47641, - "end": 47643, + "start": 47581, + "end": 47583, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 70 }, "end": { - "line": 1370, + "line": 1369, "column": 72 } } @@ -154976,15 +154698,15 @@ "binop": null }, "value": "keyboardDollyRate", - "start": 47644, - "end": 47661, + "start": 47584, + "end": 47601, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 73 }, "end": { - "line": 1370, + "line": 1369, "column": 90 } } @@ -155003,15 +154725,15 @@ "updateContext": null }, "value": "!==", - "start": 47662, - "end": 47665, + "start": 47602, + "end": 47605, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 91 }, "end": { - "line": 1370, + "line": 1369, "column": 94 } } @@ -155029,15 +154751,15 @@ "binop": null }, "value": "undefined", - "start": 47666, - "end": 47675, + "start": 47606, + "end": 47615, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 95 }, "end": { - "line": 1370, + "line": 1369, "column": 104 } } @@ -155054,15 +154776,15 @@ "postfix": false, "binop": null }, - "start": 47675, - "end": 47676, + "start": 47615, + "end": 47616, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 104 }, "end": { - "line": 1370, + "line": 1369, "column": 105 } } @@ -155080,15 +154802,15 @@ "binop": null, "updateContext": null }, - "start": 47677, - "end": 47678, + "start": 47617, + "end": 47618, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 106 }, "end": { - "line": 1370, + "line": 1369, "column": 107 } } @@ -155106,15 +154828,15 @@ "binop": null }, "value": "keyboardDollyRate", - "start": 47679, - "end": 47696, + "start": 47619, + "end": 47636, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 108 }, "end": { - "line": 1370, + "line": 1369, "column": 125 } } @@ -155132,15 +154854,15 @@ "binop": null, "updateContext": null }, - "start": 47697, - "end": 47698, + "start": 47637, + "end": 47638, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 126 }, "end": { - "line": 1370, + "line": 1369, "column": 127 } } @@ -155159,15 +154881,15 @@ "updateContext": null }, "value": 15, - "start": 47699, - "end": 47703, + "start": 47639, + "end": 47643, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 128 }, "end": { - "line": 1370, + "line": 1369, "column": 132 } } @@ -155185,15 +154907,15 @@ "binop": null, "updateContext": null }, - "start": 47703, - "end": 47704, + "start": 47643, + "end": 47644, "loc": { "start": { - "line": 1370, + "line": 1369, "column": 132 }, "end": { - "line": 1370, + "line": 1369, "column": 133 } } @@ -155210,15 +154932,15 @@ "postfix": false, "binop": null }, - "start": 47709, - "end": 47710, + "start": 47649, + "end": 47650, "loc": { "start": { - "line": 1371, + "line": 1370, "column": 4 }, "end": { - "line": 1371, + "line": 1370, "column": 5 } } @@ -155226,15 +154948,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 47716, - "end": 47911, + "start": 47656, + "end": 47851, "loc": { "start": { - "line": 1373, + "line": 1372, "column": 4 }, "end": { - "line": 1379, + "line": 1378, "column": 7 } } @@ -155252,15 +154974,15 @@ "binop": null }, "value": "get", - "start": 47916, - "end": 47919, + "start": 47856, + "end": 47859, "loc": { "start": { - "line": 1380, + "line": 1379, "column": 4 }, "end": { - "line": 1380, + "line": 1379, "column": 7 } } @@ -155278,15 +155000,15 @@ "binop": null }, "value": "keyboardDollyRate", - "start": 47920, - "end": 47937, + "start": 47860, + "end": 47877, "loc": { "start": { - "line": 1380, + "line": 1379, "column": 8 }, "end": { - "line": 1380, + "line": 1379, "column": 25 } } @@ -155303,15 +155025,15 @@ "postfix": false, "binop": null }, - "start": 47937, - "end": 47938, + "start": 47877, + "end": 47878, "loc": { "start": { - "line": 1380, + "line": 1379, "column": 25 }, "end": { - "line": 1380, + "line": 1379, "column": 26 } } @@ -155328,15 +155050,15 @@ "postfix": false, "binop": null }, - "start": 47938, - "end": 47939, + "start": 47878, + "end": 47879, "loc": { "start": { - "line": 1380, + "line": 1379, "column": 26 }, "end": { - "line": 1380, + "line": 1379, "column": 27 } } @@ -155353,15 +155075,15 @@ "postfix": false, "binop": null }, - "start": 47940, - "end": 47941, + "start": 47880, + "end": 47881, "loc": { "start": { - "line": 1380, + "line": 1379, "column": 28 }, "end": { - "line": 1380, + "line": 1379, "column": 29 } } @@ -155381,15 +155103,15 @@ "updateContext": null }, "value": "return", - "start": 47950, - "end": 47956, + "start": 47890, + "end": 47896, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 8 }, "end": { - "line": 1381, + "line": 1380, "column": 14 } } @@ -155409,15 +155131,15 @@ "updateContext": null }, "value": "this", - "start": 47957, - "end": 47961, + "start": 47897, + "end": 47901, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 15 }, "end": { - "line": 1381, + "line": 1380, "column": 19 } } @@ -155435,15 +155157,15 @@ "binop": null, "updateContext": null }, - "start": 47961, - "end": 47962, + "start": 47901, + "end": 47902, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 19 }, "end": { - "line": 1381, + "line": 1380, "column": 20 } } @@ -155461,15 +155183,15 @@ "binop": null }, "value": "_configs", - "start": 47962, - "end": 47970, + "start": 47902, + "end": 47910, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 20 }, "end": { - "line": 1381, + "line": 1380, "column": 28 } } @@ -155487,15 +155209,15 @@ "binop": null, "updateContext": null }, - "start": 47970, - "end": 47971, + "start": 47910, + "end": 47911, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 28 }, "end": { - "line": 1381, + "line": 1380, "column": 29 } } @@ -155513,15 +155235,15 @@ "binop": null }, "value": "keyboardDollyRate", - "start": 47971, - "end": 47988, + "start": 47911, + "end": 47928, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 29 }, "end": { - "line": 1381, + "line": 1380, "column": 46 } } @@ -155539,15 +155261,15 @@ "binop": null, "updateContext": null }, - "start": 47988, - "end": 47989, + "start": 47928, + "end": 47929, "loc": { "start": { - "line": 1381, + "line": 1380, "column": 46 }, "end": { - "line": 1381, + "line": 1380, "column": 47 } } @@ -155564,15 +155286,15 @@ "postfix": false, "binop": null }, - "start": 47994, - "end": 47995, + "start": 47934, + "end": 47935, "loc": { "start": { - "line": 1382, + "line": 1381, "column": 4 }, "end": { - "line": 1382, + "line": 1381, "column": 5 } } @@ -155580,15 +155302,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48001, - "end": 48185, + "start": 47941, + "end": 48125, "loc": { "start": { - "line": 1384, + "line": 1383, "column": 4 }, "end": { - "line": 1390, + "line": 1389, "column": 7 } } @@ -155606,15 +155328,15 @@ "binop": null }, "value": "set", - "start": 48190, - "end": 48193, + "start": 48130, + "end": 48133, "loc": { "start": { - "line": 1391, + "line": 1390, "column": 4 }, "end": { - "line": 1391, + "line": 1390, "column": 7 } } @@ -155632,15 +155354,15 @@ "binop": null }, "value": "touchDollyRate", - "start": 48194, - "end": 48208, + "start": 48134, + "end": 48148, "loc": { "start": { - "line": 1391, + "line": 1390, "column": 8 }, "end": { - "line": 1391, + "line": 1390, "column": 22 } } @@ -155657,15 +155379,15 @@ "postfix": false, "binop": null }, - "start": 48208, - "end": 48209, + "start": 48148, + "end": 48149, "loc": { "start": { - "line": 1391, + "line": 1390, "column": 22 }, "end": { - "line": 1391, + "line": 1390, "column": 23 } } @@ -155683,15 +155405,15 @@ "binop": null }, "value": "touchDollyRate", - "start": 48209, - "end": 48223, + "start": 48149, + "end": 48163, "loc": { "start": { - "line": 1391, + "line": 1390, "column": 23 }, "end": { - "line": 1391, + "line": 1390, "column": 37 } } @@ -155708,15 +155430,15 @@ "postfix": false, "binop": null }, - "start": 48223, - "end": 48224, + "start": 48163, + "end": 48164, "loc": { "start": { - "line": 1391, + "line": 1390, "column": 37 }, "end": { - "line": 1391, + "line": 1390, "column": 38 } } @@ -155733,15 +155455,15 @@ "postfix": false, "binop": null }, - "start": 48225, - "end": 48226, + "start": 48165, + "end": 48166, "loc": { "start": { - "line": 1391, + "line": 1390, "column": 39 }, "end": { - "line": 1391, + "line": 1390, "column": 40 } } @@ -155761,15 +155483,15 @@ "updateContext": null }, "value": "this", - "start": 48235, - "end": 48239, + "start": 48175, + "end": 48179, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 8 }, "end": { - "line": 1392, + "line": 1391, "column": 12 } } @@ -155787,15 +155509,15 @@ "binop": null, "updateContext": null }, - "start": 48239, - "end": 48240, + "start": 48179, + "end": 48180, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 12 }, "end": { - "line": 1392, + "line": 1391, "column": 13 } } @@ -155813,15 +155535,15 @@ "binop": null }, "value": "_configs", - "start": 48240, - "end": 48248, + "start": 48180, + "end": 48188, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 13 }, "end": { - "line": 1392, + "line": 1391, "column": 21 } } @@ -155839,15 +155561,15 @@ "binop": null, "updateContext": null }, - "start": 48248, - "end": 48249, + "start": 48188, + "end": 48189, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 21 }, "end": { - "line": 1392, + "line": 1391, "column": 22 } } @@ -155865,15 +155587,15 @@ "binop": null }, "value": "touchDollyRate", - "start": 48249, - "end": 48263, + "start": 48189, + "end": 48203, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 22 }, "end": { - "line": 1392, + "line": 1391, "column": 36 } } @@ -155892,15 +155614,15 @@ "updateContext": null }, "value": "=", - "start": 48264, - "end": 48265, + "start": 48204, + "end": 48205, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 37 }, "end": { - "line": 1392, + "line": 1391, "column": 38 } } @@ -155917,15 +155639,15 @@ "postfix": false, "binop": null }, - "start": 48266, - "end": 48267, + "start": 48206, + "end": 48207, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 39 }, "end": { - "line": 1392, + "line": 1391, "column": 40 } } @@ -155943,15 +155665,15 @@ "binop": null }, "value": "touchDollyRate", - "start": 48267, - "end": 48281, + "start": 48207, + "end": 48221, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 40 }, "end": { - "line": 1392, + "line": 1391, "column": 54 } } @@ -155970,15 +155692,15 @@ "updateContext": null }, "value": "!==", - "start": 48282, - "end": 48285, + "start": 48222, + "end": 48225, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 55 }, "end": { - "line": 1392, + "line": 1391, "column": 58 } } @@ -155998,15 +155720,15 @@ "updateContext": null }, "value": "null", - "start": 48286, - "end": 48290, + "start": 48226, + "end": 48230, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 59 }, "end": { - "line": 1392, + "line": 1391, "column": 63 } } @@ -156025,15 +155747,15 @@ "updateContext": null }, "value": "&&", - "start": 48291, - "end": 48293, + "start": 48231, + "end": 48233, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 64 }, "end": { - "line": 1392, + "line": 1391, "column": 66 } } @@ -156051,15 +155773,15 @@ "binop": null }, "value": "touchDollyRate", - "start": 48294, - "end": 48308, + "start": 48234, + "end": 48248, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 67 }, "end": { - "line": 1392, + "line": 1391, "column": 81 } } @@ -156078,15 +155800,15 @@ "updateContext": null }, "value": "!==", - "start": 48309, - "end": 48312, + "start": 48249, + "end": 48252, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 82 }, "end": { - "line": 1392, + "line": 1391, "column": 85 } } @@ -156104,15 +155826,15 @@ "binop": null }, "value": "undefined", - "start": 48313, - "end": 48322, + "start": 48253, + "end": 48262, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 86 }, "end": { - "line": 1392, + "line": 1391, "column": 95 } } @@ -156129,15 +155851,15 @@ "postfix": false, "binop": null }, - "start": 48322, - "end": 48323, + "start": 48262, + "end": 48263, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 95 }, "end": { - "line": 1392, + "line": 1391, "column": 96 } } @@ -156155,15 +155877,15 @@ "binop": null, "updateContext": null }, - "start": 48324, - "end": 48325, + "start": 48264, + "end": 48265, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 97 }, "end": { - "line": 1392, + "line": 1391, "column": 98 } } @@ -156181,15 +155903,15 @@ "binop": null }, "value": "touchDollyRate", - "start": 48326, - "end": 48340, + "start": 48266, + "end": 48280, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 99 }, "end": { - "line": 1392, + "line": 1391, "column": 113 } } @@ -156207,15 +155929,15 @@ "binop": null, "updateContext": null }, - "start": 48341, - "end": 48342, + "start": 48281, + "end": 48282, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 114 }, "end": { - "line": 1392, + "line": 1391, "column": 115 } } @@ -156234,15 +155956,15 @@ "updateContext": null }, "value": 0.2, - "start": 48343, - "end": 48346, + "start": 48283, + "end": 48286, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 116 }, "end": { - "line": 1392, + "line": 1391, "column": 119 } } @@ -156260,15 +155982,15 @@ "binop": null, "updateContext": null }, - "start": 48346, - "end": 48347, + "start": 48286, + "end": 48287, "loc": { "start": { - "line": 1392, + "line": 1391, "column": 119 }, "end": { - "line": 1392, + "line": 1391, "column": 120 } } @@ -156285,15 +156007,15 @@ "postfix": false, "binop": null }, - "start": 48352, - "end": 48353, + "start": 48292, + "end": 48293, "loc": { "start": { - "line": 1393, + "line": 1392, "column": 4 }, "end": { - "line": 1393, + "line": 1392, "column": 5 } } @@ -156301,15 +156023,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48359, - "end": 48547, + "start": 48299, + "end": 48487, "loc": { "start": { - "line": 1395, + "line": 1394, "column": 4 }, "end": { - "line": 1401, + "line": 1400, "column": 7 } } @@ -156327,15 +156049,15 @@ "binop": null }, "value": "get", - "start": 48552, - "end": 48555, + "start": 48492, + "end": 48495, "loc": { "start": { - "line": 1402, + "line": 1401, "column": 4 }, "end": { - "line": 1402, + "line": 1401, "column": 7 } } @@ -156353,15 +156075,15 @@ "binop": null }, "value": "touchDollyRate", - "start": 48556, - "end": 48570, + "start": 48496, + "end": 48510, "loc": { "start": { - "line": 1402, + "line": 1401, "column": 8 }, "end": { - "line": 1402, + "line": 1401, "column": 22 } } @@ -156378,15 +156100,15 @@ "postfix": false, "binop": null }, - "start": 48570, - "end": 48571, + "start": 48510, + "end": 48511, "loc": { "start": { - "line": 1402, + "line": 1401, "column": 22 }, "end": { - "line": 1402, + "line": 1401, "column": 23 } } @@ -156403,15 +156125,15 @@ "postfix": false, "binop": null }, - "start": 48571, - "end": 48572, + "start": 48511, + "end": 48512, "loc": { "start": { - "line": 1402, + "line": 1401, "column": 23 }, "end": { - "line": 1402, + "line": 1401, "column": 24 } } @@ -156428,15 +156150,15 @@ "postfix": false, "binop": null }, - "start": 48573, - "end": 48574, + "start": 48513, + "end": 48514, "loc": { "start": { - "line": 1402, + "line": 1401, "column": 25 }, "end": { - "line": 1402, + "line": 1401, "column": 26 } } @@ -156456,15 +156178,15 @@ "updateContext": null }, "value": "return", - "start": 48583, - "end": 48589, + "start": 48523, + "end": 48529, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 8 }, "end": { - "line": 1403, + "line": 1402, "column": 14 } } @@ -156484,15 +156206,15 @@ "updateContext": null }, "value": "this", - "start": 48590, - "end": 48594, + "start": 48530, + "end": 48534, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 15 }, "end": { - "line": 1403, + "line": 1402, "column": 19 } } @@ -156510,15 +156232,15 @@ "binop": null, "updateContext": null }, - "start": 48594, - "end": 48595, + "start": 48534, + "end": 48535, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 19 }, "end": { - "line": 1403, + "line": 1402, "column": 20 } } @@ -156536,15 +156258,15 @@ "binop": null }, "value": "_configs", - "start": 48595, - "end": 48603, + "start": 48535, + "end": 48543, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 20 }, "end": { - "line": 1403, + "line": 1402, "column": 28 } } @@ -156562,15 +156284,15 @@ "binop": null, "updateContext": null }, - "start": 48603, - "end": 48604, + "start": 48543, + "end": 48544, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 28 }, "end": { - "line": 1403, + "line": 1402, "column": 29 } } @@ -156588,15 +156310,15 @@ "binop": null }, "value": "touchDollyRate", - "start": 48604, - "end": 48618, + "start": 48544, + "end": 48558, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 29 }, "end": { - "line": 1403, + "line": 1402, "column": 43 } } @@ -156614,15 +156336,15 @@ "binop": null, "updateContext": null }, - "start": 48618, - "end": 48619, + "start": 48558, + "end": 48559, "loc": { "start": { - "line": 1403, + "line": 1402, "column": 43 }, "end": { - "line": 1403, + "line": 1402, "column": 44 } } @@ -156639,15 +156361,15 @@ "postfix": false, "binop": null }, - "start": 48624, - "end": 48625, + "start": 48564, + "end": 48565, "loc": { "start": { - "line": 1404, + "line": 1403, "column": 4 }, "end": { - "line": 1404, + "line": 1403, "column": 5 } } @@ -156655,15 +156377,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 48631, - "end": 48963, + "start": 48571, + "end": 48903, "loc": { "start": { - "line": 1406, + "line": 1405, "column": 4 }, "end": { - "line": 1413, + "line": 1412, "column": 7 } } @@ -156681,15 +156403,15 @@ "binop": null }, "value": "set", - "start": 48968, - "end": 48971, + "start": 48908, + "end": 48911, "loc": { "start": { - "line": 1414, + "line": 1413, "column": 4 }, "end": { - "line": 1414, + "line": 1413, "column": 7 } } @@ -156707,15 +156429,15 @@ "binop": null }, "value": "mouseWheelDollyRate", - "start": 48972, - "end": 48991, + "start": 48912, + "end": 48931, "loc": { "start": { - "line": 1414, + "line": 1413, "column": 8 }, "end": { - "line": 1414, + "line": 1413, "column": 27 } } @@ -156732,15 +156454,15 @@ "postfix": false, "binop": null }, - "start": 48991, - "end": 48992, + "start": 48931, + "end": 48932, "loc": { "start": { - "line": 1414, + "line": 1413, "column": 27 }, "end": { - "line": 1414, + "line": 1413, "column": 28 } } @@ -156758,15 +156480,15 @@ "binop": null }, "value": "mouseWheelDollyRate", - "start": 48992, - "end": 49011, + "start": 48932, + "end": 48951, "loc": { "start": { - "line": 1414, + "line": 1413, "column": 28 }, "end": { - "line": 1414, + "line": 1413, "column": 47 } } @@ -156783,15 +156505,15 @@ "postfix": false, "binop": null }, - "start": 49011, - "end": 49012, + "start": 48951, + "end": 48952, "loc": { "start": { - "line": 1414, + "line": 1413, "column": 47 }, "end": { - "line": 1414, + "line": 1413, "column": 48 } } @@ -156808,15 +156530,15 @@ "postfix": false, "binop": null }, - "start": 49013, - "end": 49014, + "start": 48953, + "end": 48954, "loc": { "start": { - "line": 1414, + "line": 1413, "column": 49 }, "end": { - "line": 1414, + "line": 1413, "column": 50 } } @@ -156836,15 +156558,15 @@ "updateContext": null }, "value": "this", - "start": 49023, - "end": 49027, + "start": 48963, + "end": 48967, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 8 }, "end": { - "line": 1415, + "line": 1414, "column": 12 } } @@ -156862,15 +156584,15 @@ "binop": null, "updateContext": null }, - "start": 49027, - "end": 49028, + "start": 48967, + "end": 48968, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 12 }, "end": { - "line": 1415, + "line": 1414, "column": 13 } } @@ -156888,15 +156610,15 @@ "binop": null }, "value": "_configs", - "start": 49028, - "end": 49036, + "start": 48968, + "end": 48976, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 13 }, "end": { - "line": 1415, + "line": 1414, "column": 21 } } @@ -156914,15 +156636,15 @@ "binop": null, "updateContext": null }, - "start": 49036, - "end": 49037, + "start": 48976, + "end": 48977, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 21 }, "end": { - "line": 1415, + "line": 1414, "column": 22 } } @@ -156940,15 +156662,15 @@ "binop": null }, "value": "mouseWheelDollyRate", - "start": 49037, - "end": 49056, + "start": 48977, + "end": 48996, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 22 }, "end": { - "line": 1415, + "line": 1414, "column": 41 } } @@ -156967,15 +156689,15 @@ "updateContext": null }, "value": "=", - "start": 49057, - "end": 49058, + "start": 48997, + "end": 48998, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 42 }, "end": { - "line": 1415, + "line": 1414, "column": 43 } } @@ -156992,15 +156714,15 @@ "postfix": false, "binop": null }, - "start": 49059, - "end": 49060, + "start": 48999, + "end": 49000, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 44 }, "end": { - "line": 1415, + "line": 1414, "column": 45 } } @@ -157018,15 +156740,15 @@ "binop": null }, "value": "mouseWheelDollyRate", - "start": 49060, - "end": 49079, + "start": 49000, + "end": 49019, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 45 }, "end": { - "line": 1415, + "line": 1414, "column": 64 } } @@ -157045,15 +156767,15 @@ "updateContext": null }, "value": "!==", - "start": 49080, - "end": 49083, + "start": 49020, + "end": 49023, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 65 }, "end": { - "line": 1415, + "line": 1414, "column": 68 } } @@ -157073,15 +156795,15 @@ "updateContext": null }, "value": "null", - "start": 49084, - "end": 49088, + "start": 49024, + "end": 49028, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 69 }, "end": { - "line": 1415, + "line": 1414, "column": 73 } } @@ -157100,15 +156822,15 @@ "updateContext": null }, "value": "&&", - "start": 49089, - "end": 49091, + "start": 49029, + "end": 49031, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 74 }, "end": { - "line": 1415, + "line": 1414, "column": 76 } } @@ -157126,15 +156848,15 @@ "binop": null }, "value": "mouseWheelDollyRate", - "start": 49092, - "end": 49111, + "start": 49032, + "end": 49051, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 77 }, "end": { - "line": 1415, + "line": 1414, "column": 96 } } @@ -157153,15 +156875,15 @@ "updateContext": null }, "value": "!==", - "start": 49112, - "end": 49115, + "start": 49052, + "end": 49055, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 97 }, "end": { - "line": 1415, + "line": 1414, "column": 100 } } @@ -157179,15 +156901,15 @@ "binop": null }, "value": "undefined", - "start": 49116, - "end": 49125, + "start": 49056, + "end": 49065, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 101 }, "end": { - "line": 1415, + "line": 1414, "column": 110 } } @@ -157204,15 +156926,15 @@ "postfix": false, "binop": null }, - "start": 49125, - "end": 49126, + "start": 49065, + "end": 49066, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 110 }, "end": { - "line": 1415, + "line": 1414, "column": 111 } } @@ -157230,15 +156952,15 @@ "binop": null, "updateContext": null }, - "start": 49127, - "end": 49128, + "start": 49067, + "end": 49068, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 112 }, "end": { - "line": 1415, + "line": 1414, "column": 113 } } @@ -157256,15 +156978,15 @@ "binop": null }, "value": "mouseWheelDollyRate", - "start": 49129, - "end": 49148, + "start": 49069, + "end": 49088, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 114 }, "end": { - "line": 1415, + "line": 1414, "column": 133 } } @@ -157282,15 +157004,15 @@ "binop": null, "updateContext": null }, - "start": 49149, - "end": 49150, + "start": 49089, + "end": 49090, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 134 }, "end": { - "line": 1415, + "line": 1414, "column": 135 } } @@ -157309,15 +157031,15 @@ "updateContext": null }, "value": 100, - "start": 49151, - "end": 49156, + "start": 49091, + "end": 49096, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 136 }, "end": { - "line": 1415, + "line": 1414, "column": 141 } } @@ -157335,15 +157057,15 @@ "binop": null, "updateContext": null }, - "start": 49156, - "end": 49157, + "start": 49096, + "end": 49097, "loc": { "start": { - "line": 1415, + "line": 1414, "column": 141 }, "end": { - "line": 1415, + "line": 1414, "column": 142 } } @@ -157360,15 +157082,15 @@ "postfix": false, "binop": null }, - "start": 49162, - "end": 49163, + "start": 49102, + "end": 49103, "loc": { "start": { - "line": 1416, + "line": 1415, "column": 4 }, "end": { - "line": 1416, + "line": 1415, "column": 5 } } @@ -157376,15 +157098,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 49169, - "end": 49381, + "start": 49109, + "end": 49321, "loc": { "start": { - "line": 1418, + "line": 1417, "column": 4 }, "end": { - "line": 1424, + "line": 1423, "column": 7 } } @@ -157402,15 +157124,15 @@ "binop": null }, "value": "get", - "start": 49386, - "end": 49389, + "start": 49326, + "end": 49329, "loc": { "start": { - "line": 1425, + "line": 1424, "column": 4 }, "end": { - "line": 1425, + "line": 1424, "column": 7 } } @@ -157428,15 +157150,15 @@ "binop": null }, "value": "mouseWheelDollyRate", - "start": 49390, - "end": 49409, + "start": 49330, + "end": 49349, "loc": { "start": { - "line": 1425, + "line": 1424, "column": 8 }, "end": { - "line": 1425, + "line": 1424, "column": 27 } } @@ -157453,15 +157175,15 @@ "postfix": false, "binop": null }, - "start": 49409, - "end": 49410, + "start": 49349, + "end": 49350, "loc": { "start": { - "line": 1425, + "line": 1424, "column": 27 }, "end": { - "line": 1425, + "line": 1424, "column": 28 } } @@ -157478,15 +157200,15 @@ "postfix": false, "binop": null }, - "start": 49410, - "end": 49411, + "start": 49350, + "end": 49351, "loc": { "start": { - "line": 1425, + "line": 1424, "column": 28 }, "end": { - "line": 1425, + "line": 1424, "column": 29 } } @@ -157503,15 +157225,15 @@ "postfix": false, "binop": null }, - "start": 49412, - "end": 49413, + "start": 49352, + "end": 49353, "loc": { "start": { - "line": 1425, + "line": 1424, "column": 30 }, "end": { - "line": 1425, + "line": 1424, "column": 31 } } @@ -157531,15 +157253,15 @@ "updateContext": null }, "value": "return", - "start": 49422, - "end": 49428, + "start": 49362, + "end": 49368, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 8 }, "end": { - "line": 1426, + "line": 1425, "column": 14 } } @@ -157559,15 +157281,15 @@ "updateContext": null }, "value": "this", - "start": 49429, - "end": 49433, + "start": 49369, + "end": 49373, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 15 }, "end": { - "line": 1426, + "line": 1425, "column": 19 } } @@ -157585,15 +157307,15 @@ "binop": null, "updateContext": null }, - "start": 49433, - "end": 49434, + "start": 49373, + "end": 49374, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 19 }, "end": { - "line": 1426, + "line": 1425, "column": 20 } } @@ -157611,15 +157333,15 @@ "binop": null }, "value": "_configs", - "start": 49434, - "end": 49442, + "start": 49374, + "end": 49382, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 20 }, "end": { - "line": 1426, + "line": 1425, "column": 28 } } @@ -157637,15 +157359,15 @@ "binop": null, "updateContext": null }, - "start": 49442, - "end": 49443, + "start": 49382, + "end": 49383, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 28 }, "end": { - "line": 1426, + "line": 1425, "column": 29 } } @@ -157663,15 +157385,15 @@ "binop": null }, "value": "mouseWheelDollyRate", - "start": 49443, - "end": 49462, + "start": 49383, + "end": 49402, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 29 }, "end": { - "line": 1426, + "line": 1425, "column": 48 } } @@ -157689,15 +157411,15 @@ "binop": null, "updateContext": null }, - "start": 49462, - "end": 49463, + "start": 49402, + "end": 49403, "loc": { "start": { - "line": 1426, + "line": 1425, "column": 48 }, "end": { - "line": 1426, + "line": 1425, "column": 49 } } @@ -157714,15 +157436,15 @@ "postfix": false, "binop": null }, - "start": 49468, - "end": 49469, + "start": 49408, + "end": 49409, "loc": { "start": { - "line": 1427, + "line": 1426, "column": 4 }, "end": { - "line": 1427, + "line": 1426, "column": 5 } } @@ -157730,15 +157452,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 49475, - "end": 50326, + "start": 49415, + "end": 50266, "loc": { "start": { - "line": 1429, + "line": 1428, "column": 4 }, "end": { - "line": 1445, + "line": 1444, "column": 7 } } @@ -157756,15 +157478,15 @@ "binop": null }, "value": "set", - "start": 50331, - "end": 50334, + "start": 50271, + "end": 50274, "loc": { "start": { - "line": 1446, + "line": 1445, "column": 4 }, "end": { - "line": 1446, + "line": 1445, "column": 7 } } @@ -157782,15 +157504,15 @@ "binop": null }, "value": "dollyInertia", - "start": 50335, - "end": 50347, + "start": 50275, + "end": 50287, "loc": { "start": { - "line": 1446, + "line": 1445, "column": 8 }, "end": { - "line": 1446, + "line": 1445, "column": 20 } } @@ -157807,15 +157529,15 @@ "postfix": false, "binop": null }, - "start": 50347, - "end": 50348, + "start": 50287, + "end": 50288, "loc": { "start": { - "line": 1446, + "line": 1445, "column": 20 }, "end": { - "line": 1446, + "line": 1445, "column": 21 } } @@ -157833,15 +157555,15 @@ "binop": null }, "value": "dollyInertia", - "start": 50348, - "end": 50360, + "start": 50288, + "end": 50300, "loc": { "start": { - "line": 1446, + "line": 1445, "column": 21 }, "end": { - "line": 1446, + "line": 1445, "column": 33 } } @@ -157858,15 +157580,15 @@ "postfix": false, "binop": null }, - "start": 50360, - "end": 50361, + "start": 50300, + "end": 50301, "loc": { "start": { - "line": 1446, + "line": 1445, "column": 33 }, "end": { - "line": 1446, + "line": 1445, "column": 34 } } @@ -157883,15 +157605,15 @@ "postfix": false, "binop": null }, - "start": 50362, - "end": 50363, + "start": 50302, + "end": 50303, "loc": { "start": { - "line": 1446, + "line": 1445, "column": 35 }, "end": { - "line": 1446, + "line": 1445, "column": 36 } } @@ -157911,15 +157633,15 @@ "updateContext": null }, "value": "this", - "start": 50372, - "end": 50376, + "start": 50312, + "end": 50316, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 8 }, "end": { - "line": 1447, + "line": 1446, "column": 12 } } @@ -157937,15 +157659,15 @@ "binop": null, "updateContext": null }, - "start": 50376, - "end": 50377, + "start": 50316, + "end": 50317, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 12 }, "end": { - "line": 1447, + "line": 1446, "column": 13 } } @@ -157963,15 +157685,15 @@ "binop": null }, "value": "_configs", - "start": 50377, - "end": 50385, + "start": 50317, + "end": 50325, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 13 }, "end": { - "line": 1447, + "line": 1446, "column": 21 } } @@ -157989,15 +157711,15 @@ "binop": null, "updateContext": null }, - "start": 50385, - "end": 50386, + "start": 50325, + "end": 50326, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 21 }, "end": { - "line": 1447, + "line": 1446, "column": 22 } } @@ -158015,15 +157737,15 @@ "binop": null }, "value": "dollyInertia", - "start": 50386, - "end": 50398, + "start": 50326, + "end": 50338, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 22 }, "end": { - "line": 1447, + "line": 1446, "column": 34 } } @@ -158042,15 +157764,15 @@ "updateContext": null }, "value": "=", - "start": 50399, - "end": 50400, + "start": 50339, + "end": 50340, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 35 }, "end": { - "line": 1447, + "line": 1446, "column": 36 } } @@ -158067,15 +157789,15 @@ "postfix": false, "binop": null }, - "start": 50401, - "end": 50402, + "start": 50341, + "end": 50342, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 37 }, "end": { - "line": 1447, + "line": 1446, "column": 38 } } @@ -158093,15 +157815,15 @@ "binop": null }, "value": "dollyInertia", - "start": 50402, - "end": 50414, + "start": 50342, + "end": 50354, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 38 }, "end": { - "line": 1447, + "line": 1446, "column": 50 } } @@ -158120,15 +157842,15 @@ "updateContext": null }, "value": "!==", - "start": 50415, - "end": 50418, + "start": 50355, + "end": 50358, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 51 }, "end": { - "line": 1447, + "line": 1446, "column": 54 } } @@ -158146,15 +157868,15 @@ "binop": null }, "value": "undefined", - "start": 50419, - "end": 50428, + "start": 50359, + "end": 50368, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 55 }, "end": { - "line": 1447, + "line": 1446, "column": 64 } } @@ -158173,15 +157895,15 @@ "updateContext": null }, "value": "&&", - "start": 50429, - "end": 50431, + "start": 50369, + "end": 50371, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 65 }, "end": { - "line": 1447, + "line": 1446, "column": 67 } } @@ -158199,15 +157921,15 @@ "binop": null }, "value": "dollyInertia", - "start": 50432, - "end": 50444, + "start": 50372, + "end": 50384, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 68 }, "end": { - "line": 1447, + "line": 1446, "column": 80 } } @@ -158226,15 +157948,15 @@ "updateContext": null }, "value": "!==", - "start": 50445, - "end": 50448, + "start": 50385, + "end": 50388, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 81 }, "end": { - "line": 1447, + "line": 1446, "column": 84 } } @@ -158254,15 +157976,15 @@ "updateContext": null }, "value": "null", - "start": 50449, - "end": 50453, + "start": 50389, + "end": 50393, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 85 }, "end": { - "line": 1447, + "line": 1446, "column": 89 } } @@ -158279,15 +158001,15 @@ "postfix": false, "binop": null }, - "start": 50453, - "end": 50454, + "start": 50393, + "end": 50394, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 89 }, "end": { - "line": 1447, + "line": 1446, "column": 90 } } @@ -158305,15 +158027,15 @@ "binop": null, "updateContext": null }, - "start": 50455, - "end": 50456, + "start": 50395, + "end": 50396, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 91 }, "end": { - "line": 1447, + "line": 1446, "column": 92 } } @@ -158331,15 +158053,15 @@ "binop": null }, "value": "dollyInertia", - "start": 50457, - "end": 50469, + "start": 50397, + "end": 50409, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 93 }, "end": { - "line": 1447, + "line": 1446, "column": 105 } } @@ -158357,15 +158079,15 @@ "binop": null, "updateContext": null }, - "start": 50470, - "end": 50471, + "start": 50410, + "end": 50411, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 106 }, "end": { - "line": 1447, + "line": 1446, "column": 107 } } @@ -158384,15 +158106,15 @@ "updateContext": null }, "value": 0, - "start": 50472, - "end": 50473, + "start": 50412, + "end": 50413, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 108 }, "end": { - "line": 1447, + "line": 1446, "column": 109 } } @@ -158410,15 +158132,15 @@ "binop": null, "updateContext": null }, - "start": 50473, - "end": 50474, + "start": 50413, + "end": 50414, "loc": { "start": { - "line": 1447, + "line": 1446, "column": 109 }, "end": { - "line": 1447, + "line": 1446, "column": 110 } } @@ -158435,15 +158157,15 @@ "postfix": false, "binop": null }, - "start": 50479, - "end": 50480, + "start": 50419, + "end": 50420, "loc": { "start": { - "line": 1448, + "line": 1447, "column": 4 }, "end": { - "line": 1448, + "line": 1447, "column": 5 } } @@ -158451,15 +158173,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the dolly inertia factor.\n *\n * Default is ````0````.\n *\n * @returns {Number} The current dolly inertia factor.\n ", - "start": 50486, - "end": 50637, + "start": 50426, + "end": 50577, "loc": { "start": { - "line": 1450, + "line": 1449, "column": 4 }, "end": { - "line": 1456, + "line": 1455, "column": 7 } } @@ -158477,15 +158199,15 @@ "binop": null }, "value": "get", - "start": 50642, - "end": 50645, + "start": 50582, + "end": 50585, "loc": { "start": { - "line": 1457, + "line": 1456, "column": 4 }, "end": { - "line": 1457, + "line": 1456, "column": 7 } } @@ -158503,15 +158225,15 @@ "binop": null }, "value": "dollyInertia", - "start": 50646, - "end": 50658, + "start": 50586, + "end": 50598, "loc": { "start": { - "line": 1457, + "line": 1456, "column": 8 }, "end": { - "line": 1457, + "line": 1456, "column": 20 } } @@ -158528,15 +158250,15 @@ "postfix": false, "binop": null }, - "start": 50658, - "end": 50659, + "start": 50598, + "end": 50599, "loc": { "start": { - "line": 1457, + "line": 1456, "column": 20 }, "end": { - "line": 1457, + "line": 1456, "column": 21 } } @@ -158553,15 +158275,15 @@ "postfix": false, "binop": null }, - "start": 50659, - "end": 50660, + "start": 50599, + "end": 50600, "loc": { "start": { - "line": 1457, + "line": 1456, "column": 21 }, "end": { - "line": 1457, + "line": 1456, "column": 22 } } @@ -158578,15 +158300,15 @@ "postfix": false, "binop": null }, - "start": 50661, - "end": 50662, + "start": 50601, + "end": 50602, "loc": { "start": { - "line": 1457, + "line": 1456, "column": 23 }, "end": { - "line": 1457, + "line": 1456, "column": 24 } } @@ -158606,15 +158328,15 @@ "updateContext": null }, "value": "return", - "start": 50671, - "end": 50677, + "start": 50611, + "end": 50617, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 8 }, "end": { - "line": 1458, + "line": 1457, "column": 14 } } @@ -158634,15 +158356,15 @@ "updateContext": null }, "value": "this", - "start": 50678, - "end": 50682, + "start": 50618, + "end": 50622, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 15 }, "end": { - "line": 1458, + "line": 1457, "column": 19 } } @@ -158660,15 +158382,15 @@ "binop": null, "updateContext": null }, - "start": 50682, - "end": 50683, + "start": 50622, + "end": 50623, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 19 }, "end": { - "line": 1458, + "line": 1457, "column": 20 } } @@ -158686,15 +158408,15 @@ "binop": null }, "value": "_configs", - "start": 50683, - "end": 50691, + "start": 50623, + "end": 50631, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 20 }, "end": { - "line": 1458, + "line": 1457, "column": 28 } } @@ -158712,15 +158434,15 @@ "binop": null, "updateContext": null }, - "start": 50691, - "end": 50692, + "start": 50631, + "end": 50632, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 28 }, "end": { - "line": 1458, + "line": 1457, "column": 29 } } @@ -158738,15 +158460,15 @@ "binop": null }, "value": "dollyInertia", - "start": 50692, - "end": 50704, + "start": 50632, + "end": 50644, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 29 }, "end": { - "line": 1458, + "line": 1457, "column": 41 } } @@ -158764,15 +158486,15 @@ "binop": null, "updateContext": null }, - "start": 50704, - "end": 50705, + "start": 50644, + "end": 50645, "loc": { "start": { - "line": 1458, + "line": 1457, "column": 41 }, "end": { - "line": 1458, + "line": 1457, "column": 42 } } @@ -158789,15 +158511,15 @@ "postfix": false, "binop": null }, - "start": 50710, - "end": 50711, + "start": 50650, + "end": 50651, "loc": { "start": { - "line": 1459, + "line": 1458, "column": 4 }, "end": { - "line": 1459, + "line": 1458, "column": 5 } } @@ -158805,15 +158527,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 50717, - "end": 50974, + "start": 50657, + "end": 50914, "loc": { "start": { - "line": 1461, + "line": 1460, "column": 4 }, "end": { - "line": 1467, + "line": 1466, "column": 7 } } @@ -158831,15 +158553,15 @@ "binop": null }, "value": "set", - "start": 50979, - "end": 50982, + "start": 50919, + "end": 50922, "loc": { "start": { - "line": 1468, + "line": 1467, "column": 4 }, "end": { - "line": 1468, + "line": 1467, "column": 7 } } @@ -158857,15 +158579,15 @@ "binop": null }, "value": "dollyProximityThreshold", - "start": 50983, - "end": 51006, + "start": 50923, + "end": 50946, "loc": { "start": { - "line": 1468, + "line": 1467, "column": 8 }, "end": { - "line": 1468, + "line": 1467, "column": 31 } } @@ -158882,15 +158604,15 @@ "postfix": false, "binop": null }, - "start": 51006, - "end": 51007, + "start": 50946, + "end": 50947, "loc": { "start": { - "line": 1468, + "line": 1467, "column": 31 }, "end": { - "line": 1468, + "line": 1467, "column": 32 } } @@ -158908,15 +158630,15 @@ "binop": null }, "value": "dollyProximityThreshold", - "start": 51007, - "end": 51030, + "start": 50947, + "end": 50970, "loc": { "start": { - "line": 1468, + "line": 1467, "column": 32 }, "end": { - "line": 1468, + "line": 1467, "column": 55 } } @@ -158933,15 +158655,15 @@ "postfix": false, "binop": null }, - "start": 51030, - "end": 51031, + "start": 50970, + "end": 50971, "loc": { "start": { - "line": 1468, + "line": 1467, "column": 55 }, "end": { - "line": 1468, + "line": 1467, "column": 56 } } @@ -158958,15 +158680,15 @@ "postfix": false, "binop": null }, - "start": 51032, - "end": 51033, + "start": 50972, + "end": 50973, "loc": { "start": { - "line": 1468, + "line": 1467, "column": 57 }, "end": { - "line": 1468, + "line": 1467, "column": 58 } } @@ -158986,15 +158708,15 @@ "updateContext": null }, "value": "this", - "start": 51042, - "end": 51046, + "start": 50982, + "end": 50986, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 8 }, "end": { - "line": 1469, + "line": 1468, "column": 12 } } @@ -159012,15 +158734,15 @@ "binop": null, "updateContext": null }, - "start": 51046, - "end": 51047, + "start": 50986, + "end": 50987, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 12 }, "end": { - "line": 1469, + "line": 1468, "column": 13 } } @@ -159038,15 +158760,15 @@ "binop": null }, "value": "_configs", - "start": 51047, - "end": 51055, + "start": 50987, + "end": 50995, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 13 }, "end": { - "line": 1469, + "line": 1468, "column": 21 } } @@ -159064,15 +158786,15 @@ "binop": null, "updateContext": null }, - "start": 51055, - "end": 51056, + "start": 50995, + "end": 50996, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 21 }, "end": { - "line": 1469, + "line": 1468, "column": 22 } } @@ -159090,15 +158812,15 @@ "binop": null }, "value": "dollyProximityThreshold", - "start": 51056, - "end": 51079, + "start": 50996, + "end": 51019, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 22 }, "end": { - "line": 1469, + "line": 1468, "column": 45 } } @@ -159117,15 +158839,15 @@ "updateContext": null }, "value": "=", - "start": 51080, - "end": 51081, + "start": 51020, + "end": 51021, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 46 }, "end": { - "line": 1469, + "line": 1468, "column": 47 } } @@ -159142,15 +158864,15 @@ "postfix": false, "binop": null }, - "start": 51082, - "end": 51083, + "start": 51022, + "end": 51023, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 48 }, "end": { - "line": 1469, + "line": 1468, "column": 49 } } @@ -159168,15 +158890,15 @@ "binop": null }, "value": "dollyProximityThreshold", - "start": 51083, - "end": 51106, + "start": 51023, + "end": 51046, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 49 }, "end": { - "line": 1469, + "line": 1468, "column": 72 } } @@ -159195,15 +158917,15 @@ "updateContext": null }, "value": "!==", - "start": 51107, - "end": 51110, + "start": 51047, + "end": 51050, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 73 }, "end": { - "line": 1469, + "line": 1468, "column": 76 } } @@ -159221,15 +158943,15 @@ "binop": null }, "value": "undefined", - "start": 51111, - "end": 51120, + "start": 51051, + "end": 51060, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 77 }, "end": { - "line": 1469, + "line": 1468, "column": 86 } } @@ -159248,15 +158970,15 @@ "updateContext": null }, "value": "&&", - "start": 51121, - "end": 51123, + "start": 51061, + "end": 51063, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 87 }, "end": { - "line": 1469, + "line": 1468, "column": 89 } } @@ -159274,15 +158996,15 @@ "binop": null }, "value": "dollyProximityThreshold", - "start": 51124, - "end": 51147, + "start": 51064, + "end": 51087, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 90 }, "end": { - "line": 1469, + "line": 1468, "column": 113 } } @@ -159301,15 +159023,15 @@ "updateContext": null }, "value": "!==", - "start": 51148, - "end": 51151, + "start": 51088, + "end": 51091, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 114 }, "end": { - "line": 1469, + "line": 1468, "column": 117 } } @@ -159329,15 +159051,15 @@ "updateContext": null }, "value": "null", - "start": 51152, - "end": 51156, + "start": 51092, + "end": 51096, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 118 }, "end": { - "line": 1469, + "line": 1468, "column": 122 } } @@ -159354,15 +159076,15 @@ "postfix": false, "binop": null }, - "start": 51156, - "end": 51157, + "start": 51096, + "end": 51097, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 122 }, "end": { - "line": 1469, + "line": 1468, "column": 123 } } @@ -159380,15 +159102,15 @@ "binop": null, "updateContext": null }, - "start": 51158, - "end": 51159, + "start": 51098, + "end": 51099, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 124 }, "end": { - "line": 1469, + "line": 1468, "column": 125 } } @@ -159406,15 +159128,15 @@ "binop": null }, "value": "dollyProximityThreshold", - "start": 51160, - "end": 51183, + "start": 51100, + "end": 51123, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 126 }, "end": { - "line": 1469, + "line": 1468, "column": 149 } } @@ -159432,15 +159154,15 @@ "binop": null, "updateContext": null }, - "start": 51184, - "end": 51185, + "start": 51124, + "end": 51125, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 150 }, "end": { - "line": 1469, + "line": 1468, "column": 151 } } @@ -159459,15 +159181,15 @@ "updateContext": null }, "value": 35, - "start": 51186, - "end": 51190, + "start": 51126, + "end": 51130, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 152 }, "end": { - "line": 1469, + "line": 1468, "column": 156 } } @@ -159485,15 +159207,15 @@ "binop": null, "updateContext": null }, - "start": 51190, - "end": 51191, + "start": 51130, + "end": 51131, "loc": { "start": { - "line": 1469, + "line": 1468, "column": 156 }, "end": { - "line": 1469, + "line": 1468, "column": 157 } } @@ -159510,15 +159232,15 @@ "postfix": false, "binop": null }, - "start": 51196, - "end": 51197, + "start": 51136, + "end": 51137, "loc": { "start": { - "line": 1470, + "line": 1469, "column": 4 }, "end": { - "line": 1470, + "line": 1469, "column": 5 } } @@ -159526,15 +159248,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 51203, - "end": 51446, + "start": 51143, + "end": 51386, "loc": { "start": { - "line": 1472, + "line": 1471, "column": 4 }, "end": { - "line": 1478, + "line": 1477, "column": 7 } } @@ -159552,15 +159274,15 @@ "binop": null }, "value": "get", - "start": 51451, - "end": 51454, + "start": 51391, + "end": 51394, "loc": { "start": { - "line": 1479, + "line": 1478, "column": 4 }, "end": { - "line": 1479, + "line": 1478, "column": 7 } } @@ -159578,15 +159300,15 @@ "binop": null }, "value": "dollyProximityThreshold", - "start": 51455, - "end": 51478, + "start": 51395, + "end": 51418, "loc": { "start": { - "line": 1479, + "line": 1478, "column": 8 }, "end": { - "line": 1479, + "line": 1478, "column": 31 } } @@ -159603,15 +159325,15 @@ "postfix": false, "binop": null }, - "start": 51478, - "end": 51479, + "start": 51418, + "end": 51419, "loc": { "start": { - "line": 1479, + "line": 1478, "column": 31 }, "end": { - "line": 1479, + "line": 1478, "column": 32 } } @@ -159628,15 +159350,15 @@ "postfix": false, "binop": null }, - "start": 51479, - "end": 51480, + "start": 51419, + "end": 51420, "loc": { "start": { - "line": 1479, + "line": 1478, "column": 32 }, "end": { - "line": 1479, + "line": 1478, "column": 33 } } @@ -159653,15 +159375,15 @@ "postfix": false, "binop": null }, - "start": 51481, - "end": 51482, + "start": 51421, + "end": 51422, "loc": { "start": { - "line": 1479, + "line": 1478, "column": 34 }, "end": { - "line": 1479, + "line": 1478, "column": 35 } } @@ -159681,15 +159403,15 @@ "updateContext": null }, "value": "return", - "start": 51491, - "end": 51497, + "start": 51431, + "end": 51437, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 8 }, "end": { - "line": 1480, + "line": 1479, "column": 14 } } @@ -159709,15 +159431,15 @@ "updateContext": null }, "value": "this", - "start": 51498, - "end": 51502, + "start": 51438, + "end": 51442, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 15 }, "end": { - "line": 1480, + "line": 1479, "column": 19 } } @@ -159735,15 +159457,15 @@ "binop": null, "updateContext": null }, - "start": 51502, - "end": 51503, + "start": 51442, + "end": 51443, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 19 }, "end": { - "line": 1480, + "line": 1479, "column": 20 } } @@ -159761,15 +159483,15 @@ "binop": null }, "value": "_configs", - "start": 51503, - "end": 51511, + "start": 51443, + "end": 51451, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 20 }, "end": { - "line": 1480, + "line": 1479, "column": 28 } } @@ -159787,15 +159509,15 @@ "binop": null, "updateContext": null }, - "start": 51511, - "end": 51512, + "start": 51451, + "end": 51452, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 28 }, "end": { - "line": 1480, + "line": 1479, "column": 29 } } @@ -159813,15 +159535,15 @@ "binop": null }, "value": "dollyProximityThreshold", - "start": 51512, - "end": 51535, + "start": 51452, + "end": 51475, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 29 }, "end": { - "line": 1480, + "line": 1479, "column": 52 } } @@ -159839,15 +159561,15 @@ "binop": null, "updateContext": null }, - "start": 51535, - "end": 51536, + "start": 51475, + "end": 51476, "loc": { "start": { - "line": 1480, + "line": 1479, "column": 52 }, "end": { - "line": 1480, + "line": 1479, "column": 53 } } @@ -159864,15 +159586,15 @@ "postfix": false, "binop": null }, - "start": 51541, - "end": 51542, + "start": 51481, + "end": 51482, "loc": { "start": { - "line": 1481, + "line": 1480, "column": 4 }, "end": { - "line": 1481, + "line": 1480, "column": 5 } } @@ -159880,15 +159602,15 @@ { "type": "CommentBlock", "value": "*\n * Sets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @param {Number} dollyMinSpeed New dolly minimum speed.\n ", - "start": 51548, - "end": 51704, + "start": 51488, + "end": 51644, "loc": { "start": { - "line": 1483, + "line": 1482, "column": 4 }, "end": { - "line": 1489, + "line": 1488, "column": 7 } } @@ -159906,15 +159628,15 @@ "binop": null }, "value": "set", - "start": 51709, - "end": 51712, + "start": 51649, + "end": 51652, "loc": { "start": { - "line": 1490, + "line": 1489, "column": 4 }, "end": { - "line": 1490, + "line": 1489, "column": 7 } } @@ -159932,15 +159654,15 @@ "binop": null }, "value": "dollyMinSpeed", - "start": 51713, - "end": 51726, + "start": 51653, + "end": 51666, "loc": { "start": { - "line": 1490, + "line": 1489, "column": 8 }, "end": { - "line": 1490, + "line": 1489, "column": 21 } } @@ -159957,15 +159679,15 @@ "postfix": false, "binop": null }, - "start": 51726, - "end": 51727, + "start": 51666, + "end": 51667, "loc": { "start": { - "line": 1490, + "line": 1489, "column": 21 }, "end": { - "line": 1490, + "line": 1489, "column": 22 } } @@ -159983,15 +159705,15 @@ "binop": null }, "value": "dollyMinSpeed", - "start": 51727, - "end": 51740, + "start": 51667, + "end": 51680, "loc": { "start": { - "line": 1490, + "line": 1489, "column": 22 }, "end": { - "line": 1490, + "line": 1489, "column": 35 } } @@ -160008,15 +159730,15 @@ "postfix": false, "binop": null }, - "start": 51740, - "end": 51741, + "start": 51680, + "end": 51681, "loc": { "start": { - "line": 1490, + "line": 1489, "column": 35 }, "end": { - "line": 1490, + "line": 1489, "column": 36 } } @@ -160033,15 +159755,15 @@ "postfix": false, "binop": null }, - "start": 51742, - "end": 51743, + "start": 51682, + "end": 51683, "loc": { "start": { - "line": 1490, + "line": 1489, "column": 37 }, "end": { - "line": 1490, + "line": 1489, "column": 38 } } @@ -160061,15 +159783,15 @@ "updateContext": null }, "value": "this", - "start": 51752, - "end": 51756, + "start": 51692, + "end": 51696, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 8 }, "end": { - "line": 1491, + "line": 1490, "column": 12 } } @@ -160087,15 +159809,15 @@ "binop": null, "updateContext": null }, - "start": 51756, - "end": 51757, + "start": 51696, + "end": 51697, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 12 }, "end": { - "line": 1491, + "line": 1490, "column": 13 } } @@ -160113,15 +159835,15 @@ "binop": null }, "value": "_configs", - "start": 51757, - "end": 51765, + "start": 51697, + "end": 51705, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 13 }, "end": { - "line": 1491, + "line": 1490, "column": 21 } } @@ -160139,15 +159861,15 @@ "binop": null, "updateContext": null }, - "start": 51765, - "end": 51766, + "start": 51705, + "end": 51706, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 21 }, "end": { - "line": 1491, + "line": 1490, "column": 22 } } @@ -160165,15 +159887,15 @@ "binop": null }, "value": "dollyMinSpeed", - "start": 51766, - "end": 51779, + "start": 51706, + "end": 51719, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 22 }, "end": { - "line": 1491, + "line": 1490, "column": 35 } } @@ -160192,15 +159914,15 @@ "updateContext": null }, "value": "=", - "start": 51780, - "end": 51781, + "start": 51720, + "end": 51721, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 36 }, "end": { - "line": 1491, + "line": 1490, "column": 37 } } @@ -160217,15 +159939,15 @@ "postfix": false, "binop": null }, - "start": 51782, - "end": 51783, + "start": 51722, + "end": 51723, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 38 }, "end": { - "line": 1491, + "line": 1490, "column": 39 } } @@ -160243,15 +159965,15 @@ "binop": null }, "value": "dollyMinSpeed", - "start": 51783, - "end": 51796, + "start": 51723, + "end": 51736, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 39 }, "end": { - "line": 1491, + "line": 1490, "column": 52 } } @@ -160270,15 +159992,15 @@ "updateContext": null }, "value": "!==", - "start": 51797, - "end": 51800, + "start": 51737, + "end": 51740, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 53 }, "end": { - "line": 1491, + "line": 1490, "column": 56 } } @@ -160296,15 +160018,15 @@ "binop": null }, "value": "undefined", - "start": 51801, - "end": 51810, + "start": 51741, + "end": 51750, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 57 }, "end": { - "line": 1491, + "line": 1490, "column": 66 } } @@ -160323,15 +160045,15 @@ "updateContext": null }, "value": "&&", - "start": 51811, - "end": 51813, + "start": 51751, + "end": 51753, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 67 }, "end": { - "line": 1491, + "line": 1490, "column": 69 } } @@ -160349,15 +160071,15 @@ "binop": null }, "value": "dollyMinSpeed", - "start": 51814, - "end": 51827, + "start": 51754, + "end": 51767, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 70 }, "end": { - "line": 1491, + "line": 1490, "column": 83 } } @@ -160376,15 +160098,15 @@ "updateContext": null }, "value": "!==", - "start": 51828, - "end": 51831, + "start": 51768, + "end": 51771, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 84 }, "end": { - "line": 1491, + "line": 1490, "column": 87 } } @@ -160404,15 +160126,15 @@ "updateContext": null }, "value": "null", - "start": 51832, - "end": 51836, + "start": 51772, + "end": 51776, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 88 }, "end": { - "line": 1491, + "line": 1490, "column": 92 } } @@ -160429,15 +160151,15 @@ "postfix": false, "binop": null }, - "start": 51836, - "end": 51837, + "start": 51776, + "end": 51777, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 92 }, "end": { - "line": 1491, + "line": 1490, "column": 93 } } @@ -160455,15 +160177,15 @@ "binop": null, "updateContext": null }, - "start": 51838, - "end": 51839, + "start": 51778, + "end": 51779, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 94 }, "end": { - "line": 1491, + "line": 1490, "column": 95 } } @@ -160481,15 +160203,15 @@ "binop": null }, "value": "dollyMinSpeed", - "start": 51840, - "end": 51853, + "start": 51780, + "end": 51793, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 96 }, "end": { - "line": 1491, + "line": 1490, "column": 109 } } @@ -160507,15 +160229,15 @@ "binop": null, "updateContext": null }, - "start": 51854, - "end": 51855, + "start": 51794, + "end": 51795, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 110 }, "end": { - "line": 1491, + "line": 1490, "column": 111 } } @@ -160534,15 +160256,15 @@ "updateContext": null }, "value": 0.04, - "start": 51856, - "end": 51860, + "start": 51796, + "end": 51800, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 112 }, "end": { - "line": 1491, + "line": 1490, "column": 116 } } @@ -160560,15 +160282,15 @@ "binop": null, "updateContext": null }, - "start": 51860, - "end": 51861, + "start": 51800, + "end": 51801, "loc": { "start": { - "line": 1491, + "line": 1490, "column": 116 }, "end": { - "line": 1491, + "line": 1490, "column": 117 } } @@ -160585,15 +160307,15 @@ "postfix": false, "binop": null }, - "start": 51866, - "end": 51867, + "start": 51806, + "end": 51807, "loc": { "start": { - "line": 1492, + "line": 1491, "column": 4 }, "end": { - "line": 1492, + "line": 1491, "column": 5 } } @@ -160601,15 +160323,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @returns {Number} The current minimum dolly speed.\n ", - "start": 51873, - "end": 52025, + "start": 51813, + "end": 51965, "loc": { "start": { - "line": 1494, + "line": 1493, "column": 4 }, "end": { - "line": 1500, + "line": 1499, "column": 7 } } @@ -160627,15 +160349,15 @@ "binop": null }, "value": "get", - "start": 52030, - "end": 52033, + "start": 51970, + "end": 51973, "loc": { "start": { - "line": 1501, + "line": 1500, "column": 4 }, "end": { - "line": 1501, + "line": 1500, "column": 7 } } @@ -160653,15 +160375,15 @@ "binop": null }, "value": "dollyMinSpeed", - "start": 52034, - "end": 52047, + "start": 51974, + "end": 51987, "loc": { "start": { - "line": 1501, + "line": 1500, "column": 8 }, "end": { - "line": 1501, + "line": 1500, "column": 21 } } @@ -160678,15 +160400,15 @@ "postfix": false, "binop": null }, - "start": 52047, - "end": 52048, + "start": 51987, + "end": 51988, "loc": { "start": { - "line": 1501, + "line": 1500, "column": 21 }, "end": { - "line": 1501, + "line": 1500, "column": 22 } } @@ -160703,15 +160425,15 @@ "postfix": false, "binop": null }, - "start": 52048, - "end": 52049, + "start": 51988, + "end": 51989, "loc": { "start": { - "line": 1501, + "line": 1500, "column": 22 }, "end": { - "line": 1501, + "line": 1500, "column": 23 } } @@ -160728,15 +160450,15 @@ "postfix": false, "binop": null }, - "start": 52050, - "end": 52051, + "start": 51990, + "end": 51991, "loc": { "start": { - "line": 1501, + "line": 1500, "column": 24 }, "end": { - "line": 1501, + "line": 1500, "column": 25 } } @@ -160756,15 +160478,15 @@ "updateContext": null }, "value": "return", - "start": 52060, - "end": 52066, + "start": 52000, + "end": 52006, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 8 }, "end": { - "line": 1502, + "line": 1501, "column": 14 } } @@ -160784,15 +160506,15 @@ "updateContext": null }, "value": "this", - "start": 52067, - "end": 52071, + "start": 52007, + "end": 52011, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 15 }, "end": { - "line": 1502, + "line": 1501, "column": 19 } } @@ -160810,15 +160532,15 @@ "binop": null, "updateContext": null }, - "start": 52071, - "end": 52072, + "start": 52011, + "end": 52012, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 19 }, "end": { - "line": 1502, + "line": 1501, "column": 20 } } @@ -160836,15 +160558,15 @@ "binop": null }, "value": "_configs", - "start": 52072, - "end": 52080, + "start": 52012, + "end": 52020, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 20 }, "end": { - "line": 1502, + "line": 1501, "column": 28 } } @@ -160862,15 +160584,15 @@ "binop": null, "updateContext": null }, - "start": 52080, - "end": 52081, + "start": 52020, + "end": 52021, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 28 }, "end": { - "line": 1502, + "line": 1501, "column": 29 } } @@ -160888,15 +160610,15 @@ "binop": null }, "value": "dollyMinSpeed", - "start": 52081, - "end": 52094, + "start": 52021, + "end": 52034, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 29 }, "end": { - "line": 1502, + "line": 1501, "column": 42 } } @@ -160914,15 +160636,15 @@ "binop": null, "updateContext": null }, - "start": 52094, - "end": 52095, + "start": 52034, + "end": 52035, "loc": { "start": { - "line": 1502, + "line": 1501, "column": 42 }, "end": { - "line": 1502, + "line": 1501, "column": 43 } } @@ -160939,15 +160661,15 @@ "postfix": false, "binop": null }, - "start": 52100, - "end": 52101, + "start": 52040, + "end": 52041, "loc": { "start": { - "line": 1503, + "line": 1502, "column": 4 }, "end": { - "line": 1503, + "line": 1502, "column": 5 } } @@ -160955,15 +160677,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 52107, - "end": 52946, + "start": 52047, + "end": 52886, "loc": { "start": { - "line": 1505, + "line": 1504, "column": 4 }, "end": { - "line": 1521, + "line": 1520, "column": 7 } } @@ -160981,15 +160703,15 @@ "binop": null }, "value": "set", - "start": 52951, - "end": 52954, + "start": 52891, + "end": 52894, "loc": { "start": { - "line": 1522, + "line": 1521, "column": 4 }, "end": { - "line": 1522, + "line": 1521, "column": 7 } } @@ -161007,15 +160729,15 @@ "binop": null }, "value": "panInertia", - "start": 52955, - "end": 52965, + "start": 52895, + "end": 52905, "loc": { "start": { - "line": 1522, + "line": 1521, "column": 8 }, "end": { - "line": 1522, + "line": 1521, "column": 18 } } @@ -161032,15 +160754,15 @@ "postfix": false, "binop": null }, - "start": 52965, - "end": 52966, + "start": 52905, + "end": 52906, "loc": { "start": { - "line": 1522, + "line": 1521, "column": 18 }, "end": { - "line": 1522, + "line": 1521, "column": 19 } } @@ -161058,15 +160780,15 @@ "binop": null }, "value": "panInertia", - "start": 52966, - "end": 52976, + "start": 52906, + "end": 52916, "loc": { "start": { - "line": 1522, + "line": 1521, "column": 19 }, "end": { - "line": 1522, + "line": 1521, "column": 29 } } @@ -161083,15 +160805,15 @@ "postfix": false, "binop": null }, - "start": 52976, - "end": 52977, + "start": 52916, + "end": 52917, "loc": { "start": { - "line": 1522, + "line": 1521, "column": 29 }, "end": { - "line": 1522, + "line": 1521, "column": 30 } } @@ -161108,15 +160830,15 @@ "postfix": false, "binop": null }, - "start": 52978, - "end": 52979, + "start": 52918, + "end": 52919, "loc": { "start": { - "line": 1522, + "line": 1521, "column": 31 }, "end": { - "line": 1522, + "line": 1521, "column": 32 } } @@ -161136,15 +160858,15 @@ "updateContext": null }, "value": "this", - "start": 52988, - "end": 52992, + "start": 52928, + "end": 52932, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 8 }, "end": { - "line": 1523, + "line": 1522, "column": 12 } } @@ -161162,15 +160884,15 @@ "binop": null, "updateContext": null }, - "start": 52992, - "end": 52993, + "start": 52932, + "end": 52933, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 12 }, "end": { - "line": 1523, + "line": 1522, "column": 13 } } @@ -161188,15 +160910,15 @@ "binop": null }, "value": "_configs", - "start": 52993, - "end": 53001, + "start": 52933, + "end": 52941, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 13 }, "end": { - "line": 1523, + "line": 1522, "column": 21 } } @@ -161214,15 +160936,15 @@ "binop": null, "updateContext": null }, - "start": 53001, - "end": 53002, + "start": 52941, + "end": 52942, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 21 }, "end": { - "line": 1523, + "line": 1522, "column": 22 } } @@ -161240,15 +160962,15 @@ "binop": null }, "value": "panInertia", - "start": 53002, - "end": 53012, + "start": 52942, + "end": 52952, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 22 }, "end": { - "line": 1523, + "line": 1522, "column": 32 } } @@ -161267,15 +160989,15 @@ "updateContext": null }, "value": "=", - "start": 53013, - "end": 53014, + "start": 52953, + "end": 52954, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 33 }, "end": { - "line": 1523, + "line": 1522, "column": 34 } } @@ -161292,15 +161014,15 @@ "postfix": false, "binop": null }, - "start": 53015, - "end": 53016, + "start": 52955, + "end": 52956, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 35 }, "end": { - "line": 1523, + "line": 1522, "column": 36 } } @@ -161318,15 +161040,15 @@ "binop": null }, "value": "panInertia", - "start": 53016, - "end": 53026, + "start": 52956, + "end": 52966, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 36 }, "end": { - "line": 1523, + "line": 1522, "column": 46 } } @@ -161345,15 +161067,15 @@ "updateContext": null }, "value": "!==", - "start": 53027, - "end": 53030, + "start": 52967, + "end": 52970, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 47 }, "end": { - "line": 1523, + "line": 1522, "column": 50 } } @@ -161371,15 +161093,15 @@ "binop": null }, "value": "undefined", - "start": 53031, - "end": 53040, + "start": 52971, + "end": 52980, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 51 }, "end": { - "line": 1523, + "line": 1522, "column": 60 } } @@ -161398,15 +161120,15 @@ "updateContext": null }, "value": "&&", - "start": 53041, - "end": 53043, + "start": 52981, + "end": 52983, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 61 }, "end": { - "line": 1523, + "line": 1522, "column": 63 } } @@ -161424,15 +161146,15 @@ "binop": null }, "value": "panInertia", - "start": 53044, - "end": 53054, + "start": 52984, + "end": 52994, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 64 }, "end": { - "line": 1523, + "line": 1522, "column": 74 } } @@ -161451,15 +161173,15 @@ "updateContext": null }, "value": "!==", - "start": 53055, - "end": 53058, + "start": 52995, + "end": 52998, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 75 }, "end": { - "line": 1523, + "line": 1522, "column": 78 } } @@ -161479,15 +161201,15 @@ "updateContext": null }, "value": "null", - "start": 53059, - "end": 53063, + "start": 52999, + "end": 53003, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 79 }, "end": { - "line": 1523, + "line": 1522, "column": 83 } } @@ -161504,15 +161226,15 @@ "postfix": false, "binop": null }, - "start": 53063, - "end": 53064, + "start": 53003, + "end": 53004, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 83 }, "end": { - "line": 1523, + "line": 1522, "column": 84 } } @@ -161530,15 +161252,15 @@ "binop": null, "updateContext": null }, - "start": 53065, - "end": 53066, + "start": 53005, + "end": 53006, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 85 }, "end": { - "line": 1523, + "line": 1522, "column": 86 } } @@ -161556,15 +161278,15 @@ "binop": null }, "value": "panInertia", - "start": 53067, - "end": 53077, + "start": 53007, + "end": 53017, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 87 }, "end": { - "line": 1523, + "line": 1522, "column": 97 } } @@ -161582,15 +161304,15 @@ "binop": null, "updateContext": null }, - "start": 53078, - "end": 53079, + "start": 53018, + "end": 53019, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 98 }, "end": { - "line": 1523, + "line": 1522, "column": 99 } } @@ -161609,15 +161331,15 @@ "updateContext": null }, "value": 0.5, - "start": 53080, - "end": 53083, + "start": 53020, + "end": 53023, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 100 }, "end": { - "line": 1523, + "line": 1522, "column": 103 } } @@ -161635,15 +161357,15 @@ "binop": null, "updateContext": null }, - "start": 53083, - "end": 53084, + "start": 53023, + "end": 53024, "loc": { "start": { - "line": 1523, + "line": 1522, "column": 103 }, "end": { - "line": 1523, + "line": 1522, "column": 104 } } @@ -161660,15 +161382,15 @@ "postfix": false, "binop": null }, - "start": 53089, - "end": 53090, + "start": 53029, + "end": 53030, "loc": { "start": { - "line": 1524, + "line": 1523, "column": 4 }, "end": { - "line": 1524, + "line": 1523, "column": 5 } } @@ -161676,15 +161398,15 @@ { "type": "CommentBlock", "value": "*\n * Gets the pan inertia factor.\n *\n * Default is ````0.5````.\n *\n * @returns {Number} The current pan inertia factor.\n ", - "start": 53096, - "end": 53245, + "start": 53036, + "end": 53185, "loc": { "start": { - "line": 1526, + "line": 1525, "column": 4 }, "end": { - "line": 1532, + "line": 1531, "column": 7 } } @@ -161702,15 +161424,15 @@ "binop": null }, "value": "get", - "start": 53250, - "end": 53253, + "start": 53190, + "end": 53193, "loc": { "start": { - "line": 1533, + "line": 1532, "column": 4 }, "end": { - "line": 1533, + "line": 1532, "column": 7 } } @@ -161728,15 +161450,15 @@ "binop": null }, "value": "panInertia", - "start": 53254, - "end": 53264, + "start": 53194, + "end": 53204, "loc": { "start": { - "line": 1533, + "line": 1532, "column": 8 }, "end": { - "line": 1533, + "line": 1532, "column": 18 } } @@ -161753,15 +161475,15 @@ "postfix": false, "binop": null }, - "start": 53264, - "end": 53265, + "start": 53204, + "end": 53205, "loc": { "start": { - "line": 1533, + "line": 1532, "column": 18 }, "end": { - "line": 1533, + "line": 1532, "column": 19 } } @@ -161778,15 +161500,15 @@ "postfix": false, "binop": null }, - "start": 53265, - "end": 53266, + "start": 53205, + "end": 53206, "loc": { "start": { - "line": 1533, + "line": 1532, "column": 19 }, "end": { - "line": 1533, + "line": 1532, "column": 20 } } @@ -161803,15 +161525,15 @@ "postfix": false, "binop": null }, - "start": 53267, - "end": 53268, + "start": 53207, + "end": 53208, "loc": { "start": { - "line": 1533, + "line": 1532, "column": 21 }, "end": { - "line": 1533, + "line": 1532, "column": 22 } } @@ -161831,15 +161553,15 @@ "updateContext": null }, "value": "return", - "start": 53277, - "end": 53283, + "start": 53217, + "end": 53223, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 8 }, "end": { - "line": 1534, + "line": 1533, "column": 14 } } @@ -161859,15 +161581,15 @@ "updateContext": null }, "value": "this", - "start": 53284, - "end": 53288, + "start": 53224, + "end": 53228, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 15 }, "end": { - "line": 1534, + "line": 1533, "column": 19 } } @@ -161885,15 +161607,15 @@ "binop": null, "updateContext": null }, - "start": 53288, - "end": 53289, + "start": 53228, + "end": 53229, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 19 }, "end": { - "line": 1534, + "line": 1533, "column": 20 } } @@ -161911,15 +161633,15 @@ "binop": null }, "value": "_configs", - "start": 53289, - "end": 53297, + "start": 53229, + "end": 53237, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 20 }, "end": { - "line": 1534, + "line": 1533, "column": 28 } } @@ -161937,15 +161659,15 @@ "binop": null, "updateContext": null }, - "start": 53297, - "end": 53298, + "start": 53237, + "end": 53238, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 28 }, "end": { - "line": 1534, + "line": 1533, "column": 29 } } @@ -161963,15 +161685,15 @@ "binop": null }, "value": "panInertia", - "start": 53298, - "end": 53308, + "start": 53238, + "end": 53248, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 29 }, "end": { - "line": 1534, + "line": 1533, "column": 39 } } @@ -161989,15 +161711,15 @@ "binop": null, "updateContext": null }, - "start": 53308, - "end": 53309, + "start": 53248, + "end": 53249, "loc": { "start": { - "line": 1534, + "line": 1533, "column": 39 }, "end": { - "line": 1534, + "line": 1533, "column": 40 } } @@ -162014,15 +161736,15 @@ "postfix": false, "binop": null }, - "start": 53314, - "end": 53315, + "start": 53254, + "end": 53255, "loc": { "start": { - "line": 1535, + "line": 1534, "column": 4 }, "end": { - "line": 1535, + "line": 1534, "column": 5 } } @@ -162030,15 +161752,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 53321, - "end": 53555, + "start": 53261, + "end": 53495, "loc": { "start": { - "line": 1537, + "line": 1536, "column": 4 }, "end": { - "line": 1547, + "line": 1546, "column": 7 } } @@ -162056,15 +161778,15 @@ "binop": null }, "value": "set", - "start": 53560, - "end": 53563, + "start": 53500, + "end": 53503, "loc": { "start": { - "line": 1548, + "line": 1547, "column": 4 }, "end": { - "line": 1548, + "line": 1547, "column": 7 } } @@ -162082,15 +161804,15 @@ "binop": null }, "value": "keyboardLayout", - "start": 53564, - "end": 53578, + "start": 53504, + "end": 53518, "loc": { "start": { - "line": 1548, + "line": 1547, "column": 8 }, "end": { - "line": 1548, + "line": 1547, "column": 22 } } @@ -162107,15 +161829,15 @@ "postfix": false, "binop": null }, - "start": 53578, - "end": 53579, + "start": 53518, + "end": 53519, "loc": { "start": { - "line": 1548, + "line": 1547, "column": 22 }, "end": { - "line": 1548, + "line": 1547, "column": 23 } } @@ -162133,15 +161855,15 @@ "binop": null }, "value": "value", - "start": 53579, - "end": 53584, + "start": 53519, + "end": 53524, "loc": { "start": { - "line": 1548, + "line": 1547, "column": 23 }, "end": { - "line": 1548, + "line": 1547, "column": 28 } } @@ -162158,15 +161880,15 @@ "postfix": false, "binop": null }, - "start": 53584, - "end": 53585, + "start": 53524, + "end": 53525, "loc": { "start": { - "line": 1548, + "line": 1547, "column": 28 }, "end": { - "line": 1548, + "line": 1547, "column": 29 } } @@ -162183,15 +161905,15 @@ "postfix": false, "binop": null }, - "start": 53586, - "end": 53587, + "start": 53526, + "end": 53527, "loc": { "start": { - "line": 1548, + "line": 1547, "column": 30 }, "end": { - "line": 1548, + "line": 1547, "column": 31 } } @@ -162199,15 +161921,15 @@ { "type": "CommentLine", "value": " this.warn(\"keyboardLayout property is deprecated - use keyMap property instead\");", - "start": 53596, - "end": 53680, + "start": 53536, + "end": 53620, "loc": { "start": { - "line": 1549, + "line": 1548, "column": 8 }, "end": { - "line": 1549, + "line": 1548, "column": 92 } } @@ -162225,15 +161947,15 @@ "binop": null }, "value": "value", - "start": 53689, - "end": 53694, + "start": 53629, + "end": 53634, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 8 }, "end": { - "line": 1550, + "line": 1549, "column": 13 } } @@ -162252,15 +161974,15 @@ "updateContext": null }, "value": "=", - "start": 53695, - "end": 53696, + "start": 53635, + "end": 53636, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 14 }, "end": { - "line": 1550, + "line": 1549, "column": 15 } } @@ -162278,15 +162000,15 @@ "binop": null }, "value": "value", - "start": 53697, - "end": 53702, + "start": 53637, + "end": 53642, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 16 }, "end": { - "line": 1550, + "line": 1549, "column": 21 } } @@ -162305,15 +162027,15 @@ "updateContext": null }, "value": "||", - "start": 53703, - "end": 53705, + "start": 53643, + "end": 53645, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 22 }, "end": { - "line": 1550, + "line": 1549, "column": 24 } } @@ -162332,15 +162054,15 @@ "updateContext": null }, "value": "qwerty", - "start": 53706, - "end": 53714, + "start": 53646, + "end": 53654, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 25 }, "end": { - "line": 1550, + "line": 1549, "column": 33 } } @@ -162358,15 +162080,15 @@ "binop": null, "updateContext": null }, - "start": 53714, - "end": 53715, + "start": 53654, + "end": 53655, "loc": { "start": { - "line": 1550, + "line": 1549, "column": 33 }, "end": { - "line": 1550, + "line": 1549, "column": 34 } } @@ -162386,15 +162108,15 @@ "updateContext": null }, "value": "if", - "start": 53724, - "end": 53726, + "start": 53664, + "end": 53666, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 8 }, "end": { - "line": 1551, + "line": 1550, "column": 10 } } @@ -162411,15 +162133,15 @@ "postfix": false, "binop": null }, - "start": 53727, - "end": 53728, + "start": 53667, + "end": 53668, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 11 }, "end": { - "line": 1551, + "line": 1550, "column": 12 } } @@ -162437,15 +162159,15 @@ "binop": null }, "value": "value", - "start": 53728, - "end": 53733, + "start": 53668, + "end": 53673, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 12 }, "end": { - "line": 1551, + "line": 1550, "column": 17 } } @@ -162464,15 +162186,15 @@ "updateContext": null }, "value": "!==", - "start": 53734, - "end": 53737, + "start": 53674, + "end": 53677, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 18 }, "end": { - "line": 1551, + "line": 1550, "column": 21 } } @@ -162491,15 +162213,15 @@ "updateContext": null }, "value": "qwerty", - "start": 53738, - "end": 53746, + "start": 53678, + "end": 53686, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 22 }, "end": { - "line": 1551, + "line": 1550, "column": 30 } } @@ -162518,15 +162240,15 @@ "updateContext": null }, "value": "&&", - "start": 53747, - "end": 53749, + "start": 53687, + "end": 53689, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 31 }, "end": { - "line": 1551, + "line": 1550, "column": 33 } } @@ -162544,15 +162266,15 @@ "binop": null }, "value": "value", - "start": 53750, - "end": 53755, + "start": 53690, + "end": 53695, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 34 }, "end": { - "line": 1551, + "line": 1550, "column": 39 } } @@ -162571,15 +162293,15 @@ "updateContext": null }, "value": "!==", - "start": 53756, - "end": 53759, + "start": 53696, + "end": 53699, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 40 }, "end": { - "line": 1551, + "line": 1550, "column": 43 } } @@ -162598,15 +162320,15 @@ "updateContext": null }, "value": "azerty", - "start": 53760, - "end": 53768, + "start": 53700, + "end": 53708, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 44 }, "end": { - "line": 1551, + "line": 1550, "column": 52 } } @@ -162623,15 +162345,15 @@ "postfix": false, "binop": null }, - "start": 53768, - "end": 53769, + "start": 53708, + "end": 53709, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 52 }, "end": { - "line": 1551, + "line": 1550, "column": 53 } } @@ -162648,15 +162370,15 @@ "postfix": false, "binop": null }, - "start": 53770, - "end": 53771, + "start": 53710, + "end": 53711, "loc": { "start": { - "line": 1551, + "line": 1550, "column": 54 }, "end": { - "line": 1551, + "line": 1550, "column": 55 } } @@ -162676,15 +162398,15 @@ "updateContext": null }, "value": "this", - "start": 53784, - "end": 53788, + "start": 53724, + "end": 53728, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 12 }, "end": { - "line": 1552, + "line": 1551, "column": 16 } } @@ -162702,15 +162424,15 @@ "binop": null, "updateContext": null }, - "start": 53788, - "end": 53789, + "start": 53728, + "end": 53729, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 16 }, "end": { - "line": 1552, + "line": 1551, "column": 17 } } @@ -162728,15 +162450,15 @@ "binop": null }, "value": "error", - "start": 53789, - "end": 53794, + "start": 53729, + "end": 53734, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 17 }, "end": { - "line": 1552, + "line": 1551, "column": 22 } } @@ -162753,15 +162475,15 @@ "postfix": false, "binop": null }, - "start": 53794, - "end": 53795, + "start": 53734, + "end": 53735, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 22 }, "end": { - "line": 1552, + "line": 1551, "column": 23 } } @@ -162780,15 +162502,15 @@ "updateContext": null }, "value": "Unsupported value for keyboardLayout - defaulting to 'qwerty'", - "start": 53795, - "end": 53858, + "start": 53735, + "end": 53798, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 23 }, "end": { - "line": 1552, + "line": 1551, "column": 86 } } @@ -162805,15 +162527,15 @@ "postfix": false, "binop": null }, - "start": 53858, - "end": 53859, + "start": 53798, + "end": 53799, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 86 }, "end": { - "line": 1552, + "line": 1551, "column": 87 } } @@ -162831,15 +162553,15 @@ "binop": null, "updateContext": null }, - "start": 53859, - "end": 53860, + "start": 53799, + "end": 53800, "loc": { "start": { - "line": 1552, + "line": 1551, "column": 87 }, "end": { - "line": 1552, + "line": 1551, "column": 88 } } @@ -162857,15 +162579,15 @@ "binop": null }, "value": "value", - "start": 53873, - "end": 53878, + "start": 53813, + "end": 53818, "loc": { "start": { - "line": 1553, + "line": 1552, "column": 12 }, "end": { - "line": 1553, + "line": 1552, "column": 17 } } @@ -162884,15 +162606,15 @@ "updateContext": null }, "value": "=", - "start": 53879, - "end": 53880, + "start": 53819, + "end": 53820, "loc": { "start": { - "line": 1553, + "line": 1552, "column": 18 }, "end": { - "line": 1553, + "line": 1552, "column": 19 } } @@ -162911,15 +162633,15 @@ "updateContext": null }, "value": "qwerty", - "start": 53881, - "end": 53889, + "start": 53821, + "end": 53829, "loc": { "start": { - "line": 1553, + "line": 1552, "column": 20 }, "end": { - "line": 1553, + "line": 1552, "column": 28 } } @@ -162937,15 +162659,15 @@ "binop": null, "updateContext": null }, - "start": 53889, - "end": 53890, + "start": 53829, + "end": 53830, "loc": { "start": { - "line": 1553, + "line": 1552, "column": 28 }, "end": { - "line": 1553, + "line": 1552, "column": 29 } } @@ -162962,8 +162684,36 @@ "postfix": false, "binop": null }, - "start": 53899, - "end": 53900, + "start": 53839, + "end": 53840, + "loc": { + "start": { + "line": 1553, + "column": 8 + }, + "end": { + "line": 1553, + "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": 53849, + "end": 53853, "loc": { "start": { "line": 1554, @@ -162971,7 +162721,190 @@ }, "end": { "line": 1554, - "column": 9 + "column": 12 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 53853, + "end": 53854, + "loc": { + "start": { + "line": 1554, + "column": 12 + }, + "end": { + "line": 1554, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_configs", + "start": 53854, + "end": 53862, + "loc": { + "start": { + "line": 1554, + "column": 13 + }, + "end": { + "line": 1554, + "column": 21 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 53862, + "end": 53863, + "loc": { + "start": { + "line": 1554, + "column": 21 + }, + "end": { + "line": 1554, + "column": 22 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "keyboardLayout", + "start": 53863, + "end": 53877, + "loc": { + "start": { + "line": 1554, + "column": 22 + }, + "end": { + "line": 1554, + "column": 36 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 53878, + "end": 53879, + "loc": { + "start": { + "line": 1554, + "column": 37 + }, + "end": { + "line": 1554, + "column": 38 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "value", + "start": 53880, + "end": 53885, + "loc": { + "start": { + "line": 1554, + "column": 39 + }, + "end": { + "line": 1554, + "column": 44 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 53885, + "end": 53886, + "loc": { + "start": { + "line": 1554, + "column": 44 + }, + "end": { + "line": 1554, + "column": 45 } } }, @@ -162990,8 +162923,8 @@ "updateContext": null }, "value": "this", - "start": 53909, - "end": 53913, + "start": 53895, + "end": 53899, "loc": { "start": { "line": 1555, @@ -163016,8 +162949,8 @@ "binop": null, "updateContext": null }, - "start": 53913, - "end": 53914, + "start": 53899, + "end": 53900, "loc": { "start": { "line": 1555, @@ -163041,9 +162974,9 @@ "postfix": false, "binop": null }, - "value": "_configs", - "start": 53914, - "end": 53922, + "value": "keyMap", + "start": 53900, + "end": 53906, "loc": { "start": { "line": 1555, @@ -163051,217 +162984,6 @@ }, "end": { "line": 1555, - "column": 21 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 53922, - "end": 53923, - "loc": { - "start": { - "line": 1555, - "column": 21 - }, - "end": { - "line": 1555, - "column": 22 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "keyboardLayout", - "start": 53923, - "end": 53937, - "loc": { - "start": { - "line": 1555, - "column": 22 - }, - "end": { - "line": 1555, - "column": 36 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 53938, - "end": 53939, - "loc": { - "start": { - "line": 1555, - "column": 37 - }, - "end": { - "line": 1555, - "column": 38 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "value", - "start": 53940, - "end": 53945, - "loc": { - "start": { - "line": 1555, - "column": 39 - }, - "end": { - "line": 1555, - "column": 44 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 53945, - "end": 53946, - "loc": { - "start": { - "line": 1555, - "column": 44 - }, - "end": { - "line": 1555, - "column": 45 - } - } - }, - { - "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": 53955, - "end": 53959, - "loc": { - "start": { - "line": 1556, - "column": 8 - }, - "end": { - "line": 1556, - "column": 12 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 53959, - "end": 53960, - "loc": { - "start": { - "line": 1556, - "column": 12 - }, - "end": { - "line": 1556, - "column": 13 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "keyMap", - "start": 53960, - "end": 53966, - "loc": { - "start": { - "line": 1556, - "column": 13 - }, - "end": { - "line": 1556, "column": 19 } } @@ -163280,15 +163002,15 @@ "updateContext": null }, "value": "=", - "start": 53967, - "end": 53968, + "start": 53907, + "end": 53908, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 20 }, "end": { - "line": 1556, + "line": 1555, "column": 21 } } @@ -163308,15 +163030,15 @@ "updateContext": null }, "value": "this", - "start": 53969, - "end": 53973, + "start": 53909, + "end": 53913, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 22 }, "end": { - "line": 1556, + "line": 1555, "column": 26 } } @@ -163334,15 +163056,15 @@ "binop": null, "updateContext": null }, - "start": 53973, - "end": 53974, + "start": 53913, + "end": 53914, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 26 }, "end": { - "line": 1556, + "line": 1555, "column": 27 } } @@ -163360,15 +163082,15 @@ "binop": null }, "value": "_configs", - "start": 53974, - "end": 53982, + "start": 53914, + "end": 53922, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 27 }, "end": { - "line": 1556, + "line": 1555, "column": 35 } } @@ -163386,15 +163108,15 @@ "binop": null, "updateContext": null }, - "start": 53982, - "end": 53983, + "start": 53922, + "end": 53923, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 35 }, "end": { - "line": 1556, + "line": 1555, "column": 36 } } @@ -163412,15 +163134,15 @@ "binop": null }, "value": "keyboardLayout", - "start": 53983, - "end": 53997, + "start": 53923, + "end": 53937, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 36 }, "end": { - "line": 1556, + "line": 1555, "column": 50 } } @@ -163438,15 +163160,15 @@ "binop": null, "updateContext": null }, - "start": 53997, - "end": 53998, + "start": 53937, + "end": 53938, "loc": { "start": { - "line": 1556, + "line": 1555, "column": 50 }, "end": { - "line": 1556, + "line": 1555, "column": 51 } } @@ -163463,15 +163185,15 @@ "postfix": false, "binop": null }, - "start": 54003, - "end": 54004, + "start": 53943, + "end": 53944, "loc": { "start": { - "line": 1557, + "line": 1556, "column": 4 }, "end": { - "line": 1557, + "line": 1556, "column": 5 } } @@ -163479,15 +163201,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 54010, - "end": 54240, + "start": 53950, + "end": 54180, "loc": { "start": { - "line": 1559, + "line": 1558, "column": 4 }, "end": { - "line": 1569, + "line": 1568, "column": 7 } } @@ -163505,15 +163227,15 @@ "binop": null }, "value": "get", - "start": 54245, - "end": 54248, + "start": 54185, + "end": 54188, "loc": { "start": { - "line": 1570, + "line": 1569, "column": 4 }, "end": { - "line": 1570, + "line": 1569, "column": 7 } } @@ -163531,15 +163253,15 @@ "binop": null }, "value": "keyboardLayout", - "start": 54249, - "end": 54263, + "start": 54189, + "end": 54203, "loc": { "start": { - "line": 1570, + "line": 1569, "column": 8 }, "end": { - "line": 1570, + "line": 1569, "column": 22 } } @@ -163556,15 +163278,15 @@ "postfix": false, "binop": null }, - "start": 54263, - "end": 54264, + "start": 54203, + "end": 54204, "loc": { "start": { - "line": 1570, + "line": 1569, "column": 22 }, "end": { - "line": 1570, + "line": 1569, "column": 23 } } @@ -163581,15 +163303,15 @@ "postfix": false, "binop": null }, - "start": 54264, - "end": 54265, + "start": 54204, + "end": 54205, "loc": { "start": { - "line": 1570, + "line": 1569, "column": 23 }, "end": { - "line": 1570, + "line": 1569, "column": 24 } } @@ -163606,15 +163328,15 @@ "postfix": false, "binop": null }, - "start": 54266, - "end": 54267, + "start": 54206, + "end": 54207, "loc": { "start": { - "line": 1570, + "line": 1569, "column": 25 }, "end": { - "line": 1570, + "line": 1569, "column": 26 } } @@ -163634,15 +163356,15 @@ "updateContext": null }, "value": "return", - "start": 54276, - "end": 54282, + "start": 54216, + "end": 54222, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 8 }, "end": { - "line": 1571, + "line": 1570, "column": 14 } } @@ -163662,15 +163384,15 @@ "updateContext": null }, "value": "this", - "start": 54283, - "end": 54287, + "start": 54223, + "end": 54227, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 15 }, "end": { - "line": 1571, + "line": 1570, "column": 19 } } @@ -163688,15 +163410,15 @@ "binop": null, "updateContext": null }, - "start": 54287, - "end": 54288, + "start": 54227, + "end": 54228, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 19 }, "end": { - "line": 1571, + "line": 1570, "column": 20 } } @@ -163714,15 +163436,15 @@ "binop": null }, "value": "_configs", - "start": 54288, - "end": 54296, + "start": 54228, + "end": 54236, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 20 }, "end": { - "line": 1571, + "line": 1570, "column": 28 } } @@ -163740,15 +163462,15 @@ "binop": null, "updateContext": null }, - "start": 54296, - "end": 54297, + "start": 54236, + "end": 54237, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 28 }, "end": { - "line": 1571, + "line": 1570, "column": 29 } } @@ -163766,15 +163488,15 @@ "binop": null }, "value": "keyboardLayout", - "start": 54297, - "end": 54311, + "start": 54237, + "end": 54251, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 29 }, "end": { - "line": 1571, + "line": 1570, "column": 43 } } @@ -163792,15 +163514,15 @@ "binop": null, "updateContext": null }, - "start": 54311, - "end": 54312, + "start": 54251, + "end": 54252, "loc": { "start": { - "line": 1571, + "line": 1570, "column": 43 }, "end": { - "line": 1571, + "line": 1570, "column": 44 } } @@ -163817,15 +163539,15 @@ "postfix": false, "binop": null }, - "start": 54317, - "end": 54318, + "start": 54257, + "end": 54258, "loc": { "start": { - "line": 1572, + "line": 1571, "column": 4 }, "end": { - "line": 1572, + "line": 1571, "column": 5 } } @@ -163833,15 +163555,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 54324, - "end": 54916, + "start": 54264, + "end": 54856, "loc": { "start": { - "line": 1574, + "line": 1573, "column": 4 }, "end": { - "line": 1585, + "line": 1584, "column": 7 } } @@ -163859,15 +163581,15 @@ "binop": null }, "value": "set", - "start": 54921, - "end": 54924, + "start": 54861, + "end": 54864, "loc": { "start": { - "line": 1586, + "line": 1585, "column": 4 }, "end": { - "line": 1586, + "line": 1585, "column": 7 } } @@ -163885,15 +163607,15 @@ "binop": null }, "value": "smartPivot", - "start": 54925, - "end": 54935, + "start": 54865, + "end": 54875, "loc": { "start": { - "line": 1586, + "line": 1585, "column": 8 }, "end": { - "line": 1586, + "line": 1585, "column": 18 } } @@ -163910,15 +163632,15 @@ "postfix": false, "binop": null }, - "start": 54935, - "end": 54936, + "start": 54875, + "end": 54876, "loc": { "start": { - "line": 1586, + "line": 1585, "column": 18 }, "end": { - "line": 1586, + "line": 1585, "column": 19 } } @@ -163936,15 +163658,15 @@ "binop": null }, "value": "enabled", - "start": 54936, - "end": 54943, + "start": 54876, + "end": 54883, "loc": { "start": { - "line": 1586, + "line": 1585, "column": 19 }, "end": { - "line": 1586, + "line": 1585, "column": 26 } } @@ -163961,15 +163683,15 @@ "postfix": false, "binop": null }, - "start": 54943, - "end": 54944, + "start": 54883, + "end": 54884, "loc": { "start": { - "line": 1586, + "line": 1585, "column": 26 }, "end": { - "line": 1586, + "line": 1585, "column": 27 } } @@ -163986,15 +163708,15 @@ "postfix": false, "binop": null }, - "start": 54945, - "end": 54946, + "start": 54885, + "end": 54886, "loc": { "start": { - "line": 1586, + "line": 1585, "column": 28 }, "end": { - "line": 1586, + "line": 1585, "column": 29 } } @@ -164014,15 +163736,15 @@ "updateContext": null }, "value": "this", - "start": 54955, - "end": 54959, + "start": 54895, + "end": 54899, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 8 }, "end": { - "line": 1587, + "line": 1586, "column": 12 } } @@ -164040,15 +163762,15 @@ "binop": null, "updateContext": null }, - "start": 54959, - "end": 54960, + "start": 54899, + "end": 54900, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 12 }, "end": { - "line": 1587, + "line": 1586, "column": 13 } } @@ -164066,15 +163788,15 @@ "binop": null }, "value": "_configs", - "start": 54960, - "end": 54968, + "start": 54900, + "end": 54908, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 13 }, "end": { - "line": 1587, + "line": 1586, "column": 21 } } @@ -164092,15 +163814,15 @@ "binop": null, "updateContext": null }, - "start": 54968, - "end": 54969, + "start": 54908, + "end": 54909, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 21 }, "end": { - "line": 1587, + "line": 1586, "column": 22 } } @@ -164118,15 +163840,15 @@ "binop": null }, "value": "smartPivot", - "start": 54969, - "end": 54979, + "start": 54909, + "end": 54919, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 22 }, "end": { - "line": 1587, + "line": 1586, "column": 32 } } @@ -164145,15 +163867,15 @@ "updateContext": null }, "value": "=", - "start": 54980, - "end": 54981, + "start": 54920, + "end": 54921, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 33 }, "end": { - "line": 1587, + "line": 1586, "column": 34 } } @@ -164170,15 +163892,15 @@ "postfix": false, "binop": null }, - "start": 54982, - "end": 54983, + "start": 54922, + "end": 54923, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 35 }, "end": { - "line": 1587, + "line": 1586, "column": 36 } } @@ -164196,15 +163918,15 @@ "binop": null }, "value": "enabled", - "start": 54983, - "end": 54990, + "start": 54923, + "end": 54930, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 36 }, "end": { - "line": 1587, + "line": 1586, "column": 43 } } @@ -164223,15 +163945,15 @@ "updateContext": null }, "value": "!==", - "start": 54991, - "end": 54994, + "start": 54931, + "end": 54934, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 44 }, "end": { - "line": 1587, + "line": 1586, "column": 47 } } @@ -164251,15 +163973,15 @@ "updateContext": null }, "value": "false", - "start": 54995, - "end": 55000, + "start": 54935, + "end": 54940, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 48 }, "end": { - "line": 1587, + "line": 1586, "column": 53 } } @@ -164276,15 +163998,15 @@ "postfix": false, "binop": null }, - "start": 55000, - "end": 55001, + "start": 54940, + "end": 54941, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 53 }, "end": { - "line": 1587, + "line": 1586, "column": 54 } } @@ -164302,15 +164024,15 @@ "binop": null, "updateContext": null }, - "start": 55001, - "end": 55002, + "start": 54941, + "end": 54942, "loc": { "start": { - "line": 1587, + "line": 1586, "column": 54 }, "end": { - "line": 1587, + "line": 1586, "column": 55 } } @@ -164327,15 +164049,15 @@ "postfix": false, "binop": null }, - "start": 55007, - "end": 55008, + "start": 54947, + "end": 54948, "loc": { "start": { - "line": 1588, + "line": 1587, "column": 4 }, "end": { - "line": 1588, + "line": 1587, "column": 5 } } @@ -164343,15 +164065,15 @@ { "type": "CommentBlock", "value": "*\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 ", - "start": 55014, - "end": 55614, + "start": 54954, + "end": 55554, "loc": { "start": { - "line": 1590, + "line": 1589, "column": 4 }, "end": { - "line": 1601, + "line": 1600, "column": 7 } } @@ -164369,15 +164091,15 @@ "binop": null }, "value": "get", - "start": 55619, - "end": 55622, + "start": 55559, + "end": 55562, "loc": { "start": { - "line": 1602, + "line": 1601, "column": 4 }, "end": { - "line": 1602, + "line": 1601, "column": 7 } } @@ -164395,15 +164117,15 @@ "binop": null }, "value": "smartPivot", - "start": 55623, - "end": 55633, + "start": 55563, + "end": 55573, "loc": { "start": { - "line": 1602, + "line": 1601, "column": 8 }, "end": { - "line": 1602, + "line": 1601, "column": 18 } } @@ -164420,15 +164142,15 @@ "postfix": false, "binop": null }, - "start": 55633, - "end": 55634, + "start": 55573, + "end": 55574, "loc": { "start": { - "line": 1602, + "line": 1601, "column": 18 }, "end": { - "line": 1602, + "line": 1601, "column": 19 } } @@ -164445,15 +164167,15 @@ "postfix": false, "binop": null }, - "start": 55634, - "end": 55635, + "start": 55574, + "end": 55575, "loc": { "start": { - "line": 1602, + "line": 1601, "column": 19 }, "end": { - "line": 1602, + "line": 1601, "column": 20 } } @@ -164470,15 +164192,15 @@ "postfix": false, "binop": null }, - "start": 55636, - "end": 55637, + "start": 55576, + "end": 55577, "loc": { "start": { - "line": 1602, + "line": 1601, "column": 21 }, "end": { - "line": 1602, + "line": 1601, "column": 22 } } @@ -164498,15 +164220,15 @@ "updateContext": null }, "value": "return", - "start": 55646, - "end": 55652, + "start": 55586, + "end": 55592, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 8 }, "end": { - "line": 1603, + "line": 1602, "column": 14 } } @@ -164526,15 +164248,15 @@ "updateContext": null }, "value": "this", - "start": 55653, - "end": 55657, + "start": 55593, + "end": 55597, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 15 }, "end": { - "line": 1603, + "line": 1602, "column": 19 } } @@ -164552,15 +164274,15 @@ "binop": null, "updateContext": null }, - "start": 55657, - "end": 55658, + "start": 55597, + "end": 55598, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 19 }, "end": { - "line": 1603, + "line": 1602, "column": 20 } } @@ -164578,15 +164300,15 @@ "binop": null }, "value": "_configs", - "start": 55658, - "end": 55666, + "start": 55598, + "end": 55606, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 20 }, "end": { - "line": 1603, + "line": 1602, "column": 28 } } @@ -164604,15 +164326,15 @@ "binop": null, "updateContext": null }, - "start": 55666, - "end": 55667, + "start": 55606, + "end": 55607, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 28 }, "end": { - "line": 1603, + "line": 1602, "column": 29 } } @@ -164630,15 +164352,15 @@ "binop": null }, "value": "smartPivot", - "start": 55667, - "end": 55677, + "start": 55607, + "end": 55617, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 29 }, "end": { - "line": 1603, + "line": 1602, "column": 39 } } @@ -164656,15 +164378,15 @@ "binop": null, "updateContext": null }, - "start": 55677, - "end": 55678, + "start": 55617, + "end": 55618, "loc": { "start": { - "line": 1603, + "line": 1602, "column": 39 }, "end": { - "line": 1603, + "line": 1602, "column": 40 } } @@ -164681,15 +164403,15 @@ "postfix": false, "binop": null }, - "start": 55683, - "end": 55684, + "start": 55623, + "end": 55624, "loc": { "start": { - "line": 1604, + "line": 1603, "column": 4 }, "end": { - "line": 1604, + "line": 1603, "column": 5 } } @@ -164697,15 +164419,15 @@ { "type": "CommentBlock", "value": "*\n * Destroys this ````CameraControl````.\n * @private\n ", - "start": 55690, - "end": 55761, + "start": 55630, + "end": 55701, "loc": { "start": { - "line": 1606, + "line": 1605, "column": 4 }, "end": { - "line": 1609, + "line": 1608, "column": 7 } } @@ -164723,15 +164445,15 @@ "binop": null }, "value": "destroy", - "start": 55766, - "end": 55773, + "start": 55706, + "end": 55713, "loc": { "start": { - "line": 1610, + "line": 1609, "column": 4 }, "end": { - "line": 1610, + "line": 1609, "column": 11 } } @@ -164748,15 +164470,15 @@ "postfix": false, "binop": null }, - "start": 55773, - "end": 55774, + "start": 55713, + "end": 55714, "loc": { "start": { - "line": 1610, + "line": 1609, "column": 11 }, "end": { - "line": 1610, + "line": 1609, "column": 12 } } @@ -164773,15 +164495,15 @@ "postfix": false, "binop": null }, - "start": 55774, - "end": 55775, + "start": 55714, + "end": 55715, "loc": { "start": { - "line": 1610, + "line": 1609, "column": 12 }, "end": { - "line": 1610, + "line": 1609, "column": 13 } } @@ -164798,15 +164520,15 @@ "postfix": false, "binop": null }, - "start": 55776, - "end": 55777, + "start": 55716, + "end": 55717, "loc": { "start": { - "line": 1610, + "line": 1609, "column": 14 }, "end": { - "line": 1610, + "line": 1609, "column": 15 } } @@ -164826,15 +164548,15 @@ "updateContext": null }, "value": "this", - "start": 55786, - "end": 55790, + "start": 55726, + "end": 55730, "loc": { "start": { - "line": 1611, + "line": 1610, "column": 8 }, "end": { - "line": 1611, + "line": 1610, "column": 12 } } @@ -164852,15 +164574,15 @@ "binop": null, "updateContext": null }, - "start": 55790, - "end": 55791, + "start": 55730, + "end": 55731, "loc": { "start": { - "line": 1611, + "line": 1610, "column": 12 }, "end": { - "line": 1611, + "line": 1610, "column": 13 } } @@ -164878,15 +164600,15 @@ "binop": null }, "value": "_destroyHandlers", - "start": 55791, - "end": 55807, + "start": 55731, + "end": 55747, "loc": { "start": { - "line": 1611, + "line": 1610, "column": 13 }, "end": { - "line": 1611, + "line": 1610, "column": 29 } } @@ -164903,15 +164625,15 @@ "postfix": false, "binop": null }, - "start": 55807, - "end": 55808, + "start": 55747, + "end": 55748, "loc": { "start": { - "line": 1611, + "line": 1610, "column": 29 }, "end": { - "line": 1611, + "line": 1610, "column": 30 } } @@ -164928,15 +164650,15 @@ "postfix": false, "binop": null }, - "start": 55808, - "end": 55809, + "start": 55748, + "end": 55749, "loc": { "start": { - "line": 1611, + "line": 1610, "column": 30 }, "end": { - "line": 1611, + "line": 1610, "column": 31 } } @@ -164954,15 +164676,15 @@ "binop": null, "updateContext": null }, - "start": 55809, - "end": 55810, + "start": 55749, + "end": 55750, "loc": { "start": { - "line": 1611, + "line": 1610, "column": 31 }, "end": { - "line": 1611, + "line": 1610, "column": 32 } } @@ -164982,15 +164704,15 @@ "updateContext": null }, "value": "this", - "start": 55819, - "end": 55823, + "start": 55759, + "end": 55763, "loc": { "start": { - "line": 1612, + "line": 1611, "column": 8 }, "end": { - "line": 1612, + "line": 1611, "column": 12 } } @@ -165008,15 +164730,15 @@ "binop": null, "updateContext": null }, - "start": 55823, - "end": 55824, + "start": 55763, + "end": 55764, "loc": { "start": { - "line": 1612, + "line": 1611, "column": 12 }, "end": { - "line": 1612, + "line": 1611, "column": 13 } } @@ -165034,15 +164756,15 @@ "binop": null }, "value": "_destroyControllers", - "start": 55824, - "end": 55843, + "start": 55764, + "end": 55783, "loc": { "start": { - "line": 1612, + "line": 1611, "column": 13 }, "end": { - "line": 1612, + "line": 1611, "column": 32 } } @@ -165059,15 +164781,15 @@ "postfix": false, "binop": null }, - "start": 55843, - "end": 55844, + "start": 55783, + "end": 55784, "loc": { "start": { - "line": 1612, + "line": 1611, "column": 32 }, "end": { - "line": 1612, + "line": 1611, "column": 33 } } @@ -165084,15 +164806,15 @@ "postfix": false, "binop": null }, - "start": 55844, - "end": 55845, + "start": 55784, + "end": 55785, "loc": { "start": { - "line": 1612, + "line": 1611, "column": 33 }, "end": { - "line": 1612, + "line": 1611, "column": 34 } } @@ -165110,15 +164832,15 @@ "binop": null, "updateContext": null }, - "start": 55845, - "end": 55846, + "start": 55785, + "end": 55786, "loc": { "start": { - "line": 1612, + "line": 1611, "column": 34 }, "end": { - "line": 1612, + "line": 1611, "column": 35 } } @@ -165138,15 +164860,15 @@ "updateContext": null }, "value": "this", - "start": 55855, - "end": 55859, + "start": 55795, + "end": 55799, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 8 }, "end": { - "line": 1613, + "line": 1612, "column": 12 } } @@ -165164,15 +164886,15 @@ "binop": null, "updateContext": null }, - "start": 55859, - "end": 55860, + "start": 55799, + "end": 55800, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 12 }, "end": { - "line": 1613, + "line": 1612, "column": 13 } } @@ -165190,15 +164912,15 @@ "binop": null }, "value": "_cameraUpdater", - "start": 55860, - "end": 55874, + "start": 55800, + "end": 55814, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 13 }, "end": { - "line": 1613, + "line": 1612, "column": 27 } } @@ -165216,15 +164938,15 @@ "binop": null, "updateContext": null }, - "start": 55874, - "end": 55875, + "start": 55814, + "end": 55815, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 27 }, "end": { - "line": 1613, + "line": 1612, "column": 28 } } @@ -165242,15 +164964,15 @@ "binop": null }, "value": "destroy", - "start": 55875, - "end": 55882, + "start": 55815, + "end": 55822, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 28 }, "end": { - "line": 1613, + "line": 1612, "column": 35 } } @@ -165267,15 +164989,15 @@ "postfix": false, "binop": null }, - "start": 55882, - "end": 55883, + "start": 55822, + "end": 55823, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 35 }, "end": { - "line": 1613, + "line": 1612, "column": 36 } } @@ -165292,15 +165014,15 @@ "postfix": false, "binop": null }, - "start": 55883, - "end": 55884, + "start": 55823, + "end": 55824, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 36 }, "end": { - "line": 1613, + "line": 1612, "column": 37 } } @@ -165318,15 +165040,15 @@ "binop": null, "updateContext": null }, - "start": 55884, - "end": 55885, + "start": 55824, + "end": 55825, "loc": { "start": { - "line": 1613, + "line": 1612, "column": 37 }, "end": { - "line": 1613, + "line": 1612, "column": 38 } } @@ -165346,15 +165068,15 @@ "updateContext": null }, "value": "super", - "start": 55894, - "end": 55899, + "start": 55834, + "end": 55839, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 8 }, "end": { - "line": 1614, + "line": 1613, "column": 13 } } @@ -165372,15 +165094,15 @@ "binop": null, "updateContext": null }, - "start": 55899, - "end": 55900, + "start": 55839, + "end": 55840, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 13 }, "end": { - "line": 1614, + "line": 1613, "column": 14 } } @@ -165398,15 +165120,15 @@ "binop": null }, "value": "destroy", - "start": 55900, - "end": 55907, + "start": 55840, + "end": 55847, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 14 }, "end": { - "line": 1614, + "line": 1613, "column": 21 } } @@ -165423,15 +165145,15 @@ "postfix": false, "binop": null }, - "start": 55907, - "end": 55908, + "start": 55847, + "end": 55848, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 21 }, "end": { - "line": 1614, + "line": 1613, "column": 22 } } @@ -165448,15 +165170,15 @@ "postfix": false, "binop": null }, - "start": 55908, - "end": 55909, + "start": 55848, + "end": 55849, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 22 }, "end": { - "line": 1614, + "line": 1613, "column": 23 } } @@ -165474,15 +165196,15 @@ "binop": null, "updateContext": null }, - "start": 55909, - "end": 55910, + "start": 55849, + "end": 55850, "loc": { "start": { - "line": 1614, + "line": 1613, "column": 23 }, "end": { - "line": 1614, + "line": 1613, "column": 24 } } @@ -165499,15 +165221,15 @@ "postfix": false, "binop": null }, - "start": 55915, - "end": 55916, + "start": 55855, + "end": 55856, "loc": { "start": { - "line": 1615, + "line": 1614, "column": 4 }, "end": { - "line": 1615, + "line": 1614, "column": 5 } } @@ -165525,15 +165247,15 @@ "binop": null }, "value": "_destroyHandlers", - "start": 55922, - "end": 55938, + "start": 55862, + "end": 55878, "loc": { "start": { - "line": 1617, + "line": 1616, "column": 4 }, "end": { - "line": 1617, + "line": 1616, "column": 20 } } @@ -165550,15 +165272,15 @@ "postfix": false, "binop": null }, - "start": 55938, - "end": 55939, + "start": 55878, + "end": 55879, "loc": { "start": { - "line": 1617, + "line": 1616, "column": 20 }, "end": { - "line": 1617, + "line": 1616, "column": 21 } } @@ -165575,15 +165297,15 @@ "postfix": false, "binop": null }, - "start": 55939, - "end": 55940, + "start": 55879, + "end": 55880, "loc": { "start": { - "line": 1617, + "line": 1616, "column": 21 }, "end": { - "line": 1617, + "line": 1616, "column": 22 } } @@ -165600,15 +165322,15 @@ "postfix": false, "binop": null }, - "start": 55941, - "end": 55942, + "start": 55881, + "end": 55882, "loc": { "start": { - "line": 1617, + "line": 1616, "column": 23 }, "end": { - "line": 1617, + "line": 1616, "column": 24 } } @@ -165628,15 +165350,15 @@ "updateContext": null }, "value": "for", - "start": 55951, - "end": 55954, + "start": 55891, + "end": 55894, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 8 }, "end": { - "line": 1618, + "line": 1617, "column": 11 } } @@ -165653,15 +165375,15 @@ "postfix": false, "binop": null }, - "start": 55955, - "end": 55956, + "start": 55895, + "end": 55896, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 12 }, "end": { - "line": 1618, + "line": 1617, "column": 13 } } @@ -165681,15 +165403,15 @@ "updateContext": null }, "value": "let", - "start": 55956, - "end": 55959, + "start": 55896, + "end": 55899, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 13 }, "end": { - "line": 1618, + "line": 1617, "column": 16 } } @@ -165707,15 +165429,15 @@ "binop": null }, "value": "i", - "start": 55960, - "end": 55961, + "start": 55900, + "end": 55901, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 17 }, "end": { - "line": 1618, + "line": 1617, "column": 18 } } @@ -165734,15 +165456,15 @@ "updateContext": null }, "value": "=", - "start": 55962, - "end": 55963, + "start": 55902, + "end": 55903, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 19 }, "end": { - "line": 1618, + "line": 1617, "column": 20 } } @@ -165761,15 +165483,15 @@ "updateContext": null }, "value": 0, - "start": 55964, - "end": 55965, + "start": 55904, + "end": 55905, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 21 }, "end": { - "line": 1618, + "line": 1617, "column": 22 } } @@ -165787,15 +165509,15 @@ "binop": null, "updateContext": null }, - "start": 55965, - "end": 55966, + "start": 55905, + "end": 55906, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 22 }, "end": { - "line": 1618, + "line": 1617, "column": 23 } } @@ -165813,15 +165535,15 @@ "binop": null }, "value": "len", - "start": 55967, - "end": 55970, + "start": 55907, + "end": 55910, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 24 }, "end": { - "line": 1618, + "line": 1617, "column": 27 } } @@ -165840,15 +165562,15 @@ "updateContext": null }, "value": "=", - "start": 55971, - "end": 55972, + "start": 55911, + "end": 55912, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 28 }, "end": { - "line": 1618, + "line": 1617, "column": 29 } } @@ -165868,15 +165590,15 @@ "updateContext": null }, "value": "this", - "start": 55973, - "end": 55977, + "start": 55913, + "end": 55917, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 30 }, "end": { - "line": 1618, + "line": 1617, "column": 34 } } @@ -165894,15 +165616,15 @@ "binop": null, "updateContext": null }, - "start": 55977, - "end": 55978, + "start": 55917, + "end": 55918, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 34 }, "end": { - "line": 1618, + "line": 1617, "column": 35 } } @@ -165920,15 +165642,15 @@ "binop": null }, "value": "_handlers", - "start": 55978, - "end": 55987, + "start": 55918, + "end": 55927, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 35 }, "end": { - "line": 1618, + "line": 1617, "column": 44 } } @@ -165946,15 +165668,15 @@ "binop": null, "updateContext": null }, - "start": 55987, - "end": 55988, + "start": 55927, + "end": 55928, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 44 }, "end": { - "line": 1618, + "line": 1617, "column": 45 } } @@ -165972,15 +165694,15 @@ "binop": null }, "value": "length", - "start": 55988, - "end": 55994, + "start": 55928, + "end": 55934, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 45 }, "end": { - "line": 1618, + "line": 1617, "column": 51 } } @@ -165998,15 +165720,15 @@ "binop": null, "updateContext": null }, - "start": 55994, - "end": 55995, + "start": 55934, + "end": 55935, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 51 }, "end": { - "line": 1618, + "line": 1617, "column": 52 } } @@ -166024,15 +165746,15 @@ "binop": null }, "value": "i", - "start": 55996, - "end": 55997, + "start": 55936, + "end": 55937, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 53 }, "end": { - "line": 1618, + "line": 1617, "column": 54 } } @@ -166051,15 +165773,15 @@ "updateContext": null }, "value": "<", - "start": 55998, - "end": 55999, + "start": 55938, + "end": 55939, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 55 }, "end": { - "line": 1618, + "line": 1617, "column": 56 } } @@ -166077,15 +165799,15 @@ "binop": null }, "value": "len", - "start": 56000, - "end": 56003, + "start": 55940, + "end": 55943, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 57 }, "end": { - "line": 1618, + "line": 1617, "column": 60 } } @@ -166103,15 +165825,15 @@ "binop": null, "updateContext": null }, - "start": 56003, - "end": 56004, + "start": 55943, + "end": 55944, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 60 }, "end": { - "line": 1618, + "line": 1617, "column": 61 } } @@ -166129,15 +165851,15 @@ "binop": null }, "value": "i", - "start": 56005, - "end": 56006, + "start": 55945, + "end": 55946, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 62 }, "end": { - "line": 1618, + "line": 1617, "column": 63 } } @@ -166155,15 +165877,15 @@ "binop": null }, "value": "++", - "start": 56006, - "end": 56008, + "start": 55946, + "end": 55948, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 63 }, "end": { - "line": 1618, + "line": 1617, "column": 65 } } @@ -166180,15 +165902,15 @@ "postfix": false, "binop": null }, - "start": 56008, - "end": 56009, + "start": 55948, + "end": 55949, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 65 }, "end": { - "line": 1618, + "line": 1617, "column": 66 } } @@ -166205,15 +165927,15 @@ "postfix": false, "binop": null }, - "start": 56010, - "end": 56011, + "start": 55950, + "end": 55951, "loc": { "start": { - "line": 1618, + "line": 1617, "column": 67 }, "end": { - "line": 1618, + "line": 1617, "column": 68 } } @@ -166233,15 +165955,15 @@ "updateContext": null }, "value": "const", - "start": 56024, - "end": 56029, + "start": 55964, + "end": 55969, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 12 }, "end": { - "line": 1619, + "line": 1618, "column": 17 } } @@ -166259,15 +165981,15 @@ "binop": null }, "value": "handler", - "start": 56030, - "end": 56037, + "start": 55970, + "end": 55977, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 18 }, "end": { - "line": 1619, + "line": 1618, "column": 25 } } @@ -166286,15 +166008,15 @@ "updateContext": null }, "value": "=", - "start": 56038, - "end": 56039, + "start": 55978, + "end": 55979, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 26 }, "end": { - "line": 1619, + "line": 1618, "column": 27 } } @@ -166314,15 +166036,15 @@ "updateContext": null }, "value": "this", - "start": 56040, - "end": 56044, + "start": 55980, + "end": 55984, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 28 }, "end": { - "line": 1619, + "line": 1618, "column": 32 } } @@ -166340,15 +166062,15 @@ "binop": null, "updateContext": null }, - "start": 56044, - "end": 56045, + "start": 55984, + "end": 55985, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 32 }, "end": { - "line": 1619, + "line": 1618, "column": 33 } } @@ -166366,15 +166088,15 @@ "binop": null }, "value": "_handlers", - "start": 56045, - "end": 56054, + "start": 55985, + "end": 55994, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 33 }, "end": { - "line": 1619, + "line": 1618, "column": 42 } } @@ -166392,15 +166114,15 @@ "binop": null, "updateContext": null }, - "start": 56054, - "end": 56055, + "start": 55994, + "end": 55995, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 42 }, "end": { - "line": 1619, + "line": 1618, "column": 43 } } @@ -166418,15 +166140,15 @@ "binop": null }, "value": "i", - "start": 56055, - "end": 56056, + "start": 55995, + "end": 55996, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 43 }, "end": { - "line": 1619, + "line": 1618, "column": 44 } } @@ -166444,15 +166166,15 @@ "binop": null, "updateContext": null }, - "start": 56056, - "end": 56057, + "start": 55996, + "end": 55997, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 44 }, "end": { - "line": 1619, + "line": 1618, "column": 45 } } @@ -166470,15 +166192,15 @@ "binop": null, "updateContext": null }, - "start": 56057, - "end": 56058, + "start": 55997, + "end": 55998, "loc": { "start": { - "line": 1619, + "line": 1618, "column": 45 }, "end": { - "line": 1619, + "line": 1618, "column": 46 } } @@ -166498,15 +166220,15 @@ "updateContext": null }, "value": "if", - "start": 56071, - "end": 56073, + "start": 56011, + "end": 56013, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 12 }, "end": { - "line": 1620, + "line": 1619, "column": 14 } } @@ -166523,15 +166245,15 @@ "postfix": false, "binop": null }, - "start": 56074, - "end": 56075, + "start": 56014, + "end": 56015, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 15 }, "end": { - "line": 1620, + "line": 1619, "column": 16 } } @@ -166549,15 +166271,15 @@ "binop": null }, "value": "handler", - "start": 56075, - "end": 56082, + "start": 56015, + "end": 56022, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 16 }, "end": { - "line": 1620, + "line": 1619, "column": 23 } } @@ -166575,15 +166297,15 @@ "binop": null, "updateContext": null }, - "start": 56082, - "end": 56083, + "start": 56022, + "end": 56023, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 23 }, "end": { - "line": 1620, + "line": 1619, "column": 24 } } @@ -166601,15 +166323,15 @@ "binop": null }, "value": "destroy", - "start": 56083, - "end": 56090, + "start": 56023, + "end": 56030, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 24 }, "end": { - "line": 1620, + "line": 1619, "column": 31 } } @@ -166626,15 +166348,15 @@ "postfix": false, "binop": null }, - "start": 56090, - "end": 56091, + "start": 56030, + "end": 56031, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 31 }, "end": { - "line": 1620, + "line": 1619, "column": 32 } } @@ -166651,15 +166373,15 @@ "postfix": false, "binop": null }, - "start": 56092, - "end": 56093, + "start": 56032, + "end": 56033, "loc": { "start": { - "line": 1620, + "line": 1619, "column": 33 }, "end": { - "line": 1620, + "line": 1619, "column": 34 } } @@ -166677,15 +166399,15 @@ "binop": null }, "value": "handler", - "start": 56110, - "end": 56117, + "start": 56050, + "end": 56057, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 16 }, "end": { - "line": 1621, + "line": 1620, "column": 23 } } @@ -166703,15 +166425,15 @@ "binop": null, "updateContext": null }, - "start": 56117, - "end": 56118, + "start": 56057, + "end": 56058, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 23 }, "end": { - "line": 1621, + "line": 1620, "column": 24 } } @@ -166729,15 +166451,15 @@ "binop": null }, "value": "destroy", - "start": 56118, - "end": 56125, + "start": 56058, + "end": 56065, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 24 }, "end": { - "line": 1621, + "line": 1620, "column": 31 } } @@ -166754,15 +166476,15 @@ "postfix": false, "binop": null }, - "start": 56125, - "end": 56126, + "start": 56065, + "end": 56066, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 31 }, "end": { - "line": 1621, + "line": 1620, "column": 32 } } @@ -166779,15 +166501,15 @@ "postfix": false, "binop": null }, - "start": 56126, - "end": 56127, + "start": 56066, + "end": 56067, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 32 }, "end": { - "line": 1621, + "line": 1620, "column": 33 } } @@ -166805,15 +166527,15 @@ "binop": null, "updateContext": null }, - "start": 56127, - "end": 56128, + "start": 56067, + "end": 56068, "loc": { "start": { - "line": 1621, + "line": 1620, "column": 33 }, "end": { - "line": 1621, + "line": 1620, "column": 34 } } @@ -166830,15 +166552,15 @@ "postfix": false, "binop": null }, - "start": 56141, - "end": 56142, + "start": 56081, + "end": 56082, "loc": { "start": { - "line": 1622, + "line": 1621, "column": 12 }, "end": { - "line": 1622, + "line": 1621, "column": 13 } } @@ -166855,15 +166577,15 @@ "postfix": false, "binop": null }, - "start": 56151, - "end": 56152, + "start": 56091, + "end": 56092, "loc": { "start": { - "line": 1623, + "line": 1622, "column": 8 }, "end": { - "line": 1623, + "line": 1622, "column": 9 } } @@ -166880,15 +166602,15 @@ "postfix": false, "binop": null }, - "start": 56157, - "end": 56158, + "start": 56097, + "end": 56098, "loc": { "start": { - "line": 1624, + "line": 1623, "column": 4 }, "end": { - "line": 1624, + "line": 1623, "column": 5 } } @@ -166906,15 +166628,15 @@ "binop": null }, "value": "_destroyControllers", - "start": 56164, - "end": 56183, + "start": 56104, + "end": 56123, "loc": { "start": { - "line": 1626, + "line": 1625, "column": 4 }, "end": { - "line": 1626, + "line": 1625, "column": 23 } } @@ -166931,15 +166653,15 @@ "postfix": false, "binop": null }, - "start": 56183, - "end": 56184, + "start": 56123, + "end": 56124, "loc": { "start": { - "line": 1626, + "line": 1625, "column": 23 }, "end": { - "line": 1626, + "line": 1625, "column": 24 } } @@ -166956,15 +166678,15 @@ "postfix": false, "binop": null }, - "start": 56184, - "end": 56185, + "start": 56124, + "end": 56125, "loc": { "start": { - "line": 1626, + "line": 1625, "column": 24 }, "end": { - "line": 1626, + "line": 1625, "column": 25 } } @@ -166981,15 +166703,15 @@ "postfix": false, "binop": null }, - "start": 56186, - "end": 56187, + "start": 56126, + "end": 56127, "loc": { "start": { - "line": 1626, + "line": 1625, "column": 26 }, "end": { - "line": 1626, + "line": 1625, "column": 27 } } @@ -167009,15 +166731,15 @@ "updateContext": null }, "value": "for", - "start": 56196, - "end": 56199, + "start": 56136, + "end": 56139, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 8 }, "end": { - "line": 1627, + "line": 1626, "column": 11 } } @@ -167034,15 +166756,15 @@ "postfix": false, "binop": null }, - "start": 56200, - "end": 56201, + "start": 56140, + "end": 56141, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 12 }, "end": { - "line": 1627, + "line": 1626, "column": 13 } } @@ -167062,15 +166784,15 @@ "updateContext": null }, "value": "let", - "start": 56201, - "end": 56204, + "start": 56141, + "end": 56144, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 13 }, "end": { - "line": 1627, + "line": 1626, "column": 16 } } @@ -167088,15 +166810,15 @@ "binop": null }, "value": "i", - "start": 56205, - "end": 56206, + "start": 56145, + "end": 56146, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 17 }, "end": { - "line": 1627, + "line": 1626, "column": 18 } } @@ -167115,15 +166837,15 @@ "updateContext": null }, "value": "=", - "start": 56207, - "end": 56208, + "start": 56147, + "end": 56148, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 19 }, "end": { - "line": 1627, + "line": 1626, "column": 20 } } @@ -167142,15 +166864,15 @@ "updateContext": null }, "value": 0, - "start": 56209, - "end": 56210, + "start": 56149, + "end": 56150, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 21 }, "end": { - "line": 1627, + "line": 1626, "column": 22 } } @@ -167168,15 +166890,15 @@ "binop": null, "updateContext": null }, - "start": 56210, - "end": 56211, + "start": 56150, + "end": 56151, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 22 }, "end": { - "line": 1627, + "line": 1626, "column": 23 } } @@ -167194,15 +166916,15 @@ "binop": null }, "value": "len", - "start": 56212, - "end": 56215, + "start": 56152, + "end": 56155, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 24 }, "end": { - "line": 1627, + "line": 1626, "column": 27 } } @@ -167221,15 +166943,15 @@ "updateContext": null }, "value": "=", - "start": 56216, - "end": 56217, + "start": 56156, + "end": 56157, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 28 }, "end": { - "line": 1627, + "line": 1626, "column": 29 } } @@ -167249,15 +166971,15 @@ "updateContext": null }, "value": "this", - "start": 56218, - "end": 56222, + "start": 56158, + "end": 56162, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 30 }, "end": { - "line": 1627, + "line": 1626, "column": 34 } } @@ -167275,15 +166997,15 @@ "binop": null, "updateContext": null }, - "start": 56222, - "end": 56223, + "start": 56162, + "end": 56163, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 34 }, "end": { - "line": 1627, + "line": 1626, "column": 35 } } @@ -167301,15 +167023,15 @@ "binop": null }, "value": "_controllers", - "start": 56223, - "end": 56235, + "start": 56163, + "end": 56175, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 35 }, "end": { - "line": 1627, + "line": 1626, "column": 47 } } @@ -167327,15 +167049,15 @@ "binop": null, "updateContext": null }, - "start": 56235, - "end": 56236, + "start": 56175, + "end": 56176, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 47 }, "end": { - "line": 1627, + "line": 1626, "column": 48 } } @@ -167353,15 +167075,15 @@ "binop": null }, "value": "length", - "start": 56236, - "end": 56242, + "start": 56176, + "end": 56182, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 48 }, "end": { - "line": 1627, + "line": 1626, "column": 54 } } @@ -167379,15 +167101,15 @@ "binop": null, "updateContext": null }, - "start": 56242, - "end": 56243, + "start": 56182, + "end": 56183, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 54 }, "end": { - "line": 1627, + "line": 1626, "column": 55 } } @@ -167405,15 +167127,15 @@ "binop": null }, "value": "i", - "start": 56244, - "end": 56245, + "start": 56184, + "end": 56185, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 56 }, "end": { - "line": 1627, + "line": 1626, "column": 57 } } @@ -167432,15 +167154,15 @@ "updateContext": null }, "value": "<", - "start": 56246, - "end": 56247, + "start": 56186, + "end": 56187, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 58 }, "end": { - "line": 1627, + "line": 1626, "column": 59 } } @@ -167458,15 +167180,15 @@ "binop": null }, "value": "len", - "start": 56248, - "end": 56251, + "start": 56188, + "end": 56191, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 60 }, "end": { - "line": 1627, + "line": 1626, "column": 63 } } @@ -167484,15 +167206,15 @@ "binop": null, "updateContext": null }, - "start": 56251, - "end": 56252, + "start": 56191, + "end": 56192, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 63 }, "end": { - "line": 1627, + "line": 1626, "column": 64 } } @@ -167510,15 +167232,15 @@ "binop": null }, "value": "i", - "start": 56253, - "end": 56254, + "start": 56193, + "end": 56194, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 65 }, "end": { - "line": 1627, + "line": 1626, "column": 66 } } @@ -167536,15 +167258,15 @@ "binop": null }, "value": "++", - "start": 56254, - "end": 56256, + "start": 56194, + "end": 56196, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 66 }, "end": { - "line": 1627, + "line": 1626, "column": 68 } } @@ -167561,15 +167283,15 @@ "postfix": false, "binop": null }, - "start": 56256, - "end": 56257, + "start": 56196, + "end": 56197, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 68 }, "end": { - "line": 1627, + "line": 1626, "column": 69 } } @@ -167586,15 +167308,15 @@ "postfix": false, "binop": null }, - "start": 56258, - "end": 56259, + "start": 56198, + "end": 56199, "loc": { "start": { - "line": 1627, + "line": 1626, "column": 70 }, "end": { - "line": 1627, + "line": 1626, "column": 71 } } @@ -167614,15 +167336,15 @@ "updateContext": null }, "value": "const", - "start": 56272, - "end": 56277, + "start": 56212, + "end": 56217, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 12 }, "end": { - "line": 1628, + "line": 1627, "column": 17 } } @@ -167640,15 +167362,15 @@ "binop": null }, "value": "controller", - "start": 56278, - "end": 56288, + "start": 56218, + "end": 56228, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 18 }, "end": { - "line": 1628, + "line": 1627, "column": 28 } } @@ -167667,15 +167389,15 @@ "updateContext": null }, "value": "=", - "start": 56289, - "end": 56290, + "start": 56229, + "end": 56230, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 29 }, "end": { - "line": 1628, + "line": 1627, "column": 30 } } @@ -167695,15 +167417,15 @@ "updateContext": null }, "value": "this", - "start": 56291, - "end": 56295, + "start": 56231, + "end": 56235, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 31 }, "end": { - "line": 1628, + "line": 1627, "column": 35 } } @@ -167721,15 +167443,15 @@ "binop": null, "updateContext": null }, - "start": 56295, - "end": 56296, + "start": 56235, + "end": 56236, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 35 }, "end": { - "line": 1628, + "line": 1627, "column": 36 } } @@ -167747,15 +167469,15 @@ "binop": null }, "value": "_controllers", - "start": 56296, - "end": 56308, + "start": 56236, + "end": 56248, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 36 }, "end": { - "line": 1628, + "line": 1627, "column": 48 } } @@ -167773,15 +167495,15 @@ "binop": null, "updateContext": null }, - "start": 56308, - "end": 56309, + "start": 56248, + "end": 56249, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 48 }, "end": { - "line": 1628, + "line": 1627, "column": 49 } } @@ -167799,15 +167521,15 @@ "binop": null }, "value": "i", - "start": 56309, - "end": 56310, + "start": 56249, + "end": 56250, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 49 }, "end": { - "line": 1628, + "line": 1627, "column": 50 } } @@ -167825,15 +167547,15 @@ "binop": null, "updateContext": null }, - "start": 56310, - "end": 56311, + "start": 56250, + "end": 56251, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 50 }, "end": { - "line": 1628, + "line": 1627, "column": 51 } } @@ -167851,15 +167573,15 @@ "binop": null, "updateContext": null }, - "start": 56311, - "end": 56312, + "start": 56251, + "end": 56252, "loc": { "start": { - "line": 1628, + "line": 1627, "column": 51 }, "end": { - "line": 1628, + "line": 1627, "column": 52 } } @@ -167879,15 +167601,15 @@ "updateContext": null }, "value": "if", - "start": 56325, - "end": 56327, + "start": 56265, + "end": 56267, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 12 }, "end": { - "line": 1629, + "line": 1628, "column": 14 } } @@ -167904,15 +167626,15 @@ "postfix": false, "binop": null }, - "start": 56328, - "end": 56329, + "start": 56268, + "end": 56269, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 15 }, "end": { - "line": 1629, + "line": 1628, "column": 16 } } @@ -167930,15 +167652,15 @@ "binop": null }, "value": "controller", - "start": 56329, - "end": 56339, + "start": 56269, + "end": 56279, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 16 }, "end": { - "line": 1629, + "line": 1628, "column": 26 } } @@ -167956,15 +167678,15 @@ "binop": null, "updateContext": null }, - "start": 56339, - "end": 56340, + "start": 56279, + "end": 56280, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 26 }, "end": { - "line": 1629, + "line": 1628, "column": 27 } } @@ -167982,15 +167704,15 @@ "binop": null }, "value": "destroy", - "start": 56340, - "end": 56347, + "start": 56280, + "end": 56287, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 27 }, "end": { - "line": 1629, + "line": 1628, "column": 34 } } @@ -168007,15 +167729,15 @@ "postfix": false, "binop": null }, - "start": 56347, - "end": 56348, + "start": 56287, + "end": 56288, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 34 }, "end": { - "line": 1629, + "line": 1628, "column": 35 } } @@ -168032,15 +167754,15 @@ "postfix": false, "binop": null }, - "start": 56349, - "end": 56350, + "start": 56289, + "end": 56290, "loc": { "start": { - "line": 1629, + "line": 1628, "column": 36 }, "end": { - "line": 1629, + "line": 1628, "column": 37 } } @@ -168058,15 +167780,15 @@ "binop": null }, "value": "controller", - "start": 56367, - "end": 56377, + "start": 56307, + "end": 56317, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 16 }, "end": { - "line": 1630, + "line": 1629, "column": 26 } } @@ -168084,15 +167806,15 @@ "binop": null, "updateContext": null }, - "start": 56377, - "end": 56378, + "start": 56317, + "end": 56318, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 26 }, "end": { - "line": 1630, + "line": 1629, "column": 27 } } @@ -168110,15 +167832,15 @@ "binop": null }, "value": "destroy", - "start": 56378, - "end": 56385, + "start": 56318, + "end": 56325, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 27 }, "end": { - "line": 1630, + "line": 1629, "column": 34 } } @@ -168135,15 +167857,15 @@ "postfix": false, "binop": null }, - "start": 56385, - "end": 56386, + "start": 56325, + "end": 56326, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 34 }, "end": { - "line": 1630, + "line": 1629, "column": 35 } } @@ -168160,15 +167882,15 @@ "postfix": false, "binop": null }, - "start": 56386, - "end": 56387, + "start": 56326, + "end": 56327, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 35 }, "end": { - "line": 1630, + "line": 1629, "column": 36 } } @@ -168186,15 +167908,15 @@ "binop": null, "updateContext": null }, - "start": 56387, - "end": 56388, + "start": 56327, + "end": 56328, "loc": { "start": { - "line": 1630, + "line": 1629, "column": 36 }, "end": { - "line": 1630, + "line": 1629, "column": 37 } } @@ -168211,15 +167933,15 @@ "postfix": false, "binop": null }, - "start": 56401, - "end": 56402, + "start": 56341, + "end": 56342, "loc": { "start": { - "line": 1631, + "line": 1630, "column": 12 }, "end": { - "line": 1631, + "line": 1630, "column": 13 } } @@ -168236,15 +167958,15 @@ "postfix": false, "binop": null }, - "start": 56411, - "end": 56412, + "start": 56351, + "end": 56352, "loc": { "start": { - "line": 1632, + "line": 1631, "column": 8 }, "end": { - "line": 1632, + "line": 1631, "column": 9 } } @@ -168261,15 +167983,15 @@ "postfix": false, "binop": null }, - "start": 56417, - "end": 56418, + "start": 56357, + "end": 56358, "loc": { "start": { - "line": 1633, + "line": 1632, "column": 4 }, "end": { - "line": 1633, + "line": 1632, "column": 5 } } @@ -168286,15 +168008,15 @@ "postfix": false, "binop": null }, - "start": 56419, - "end": 56420, + "start": 56359, + "end": 56360, "loc": { "start": { - "line": 1634, + "line": 1633, "column": 0 }, "end": { - "line": 1634, + "line": 1633, "column": 1 } } @@ -168314,15 +168036,15 @@ "updateContext": null }, "value": "export", - "start": 56422, - "end": 56428, + "start": 56362, + "end": 56368, "loc": { "start": { - "line": 1636, + "line": 1635, "column": 0 }, "end": { - "line": 1636, + "line": 1635, "column": 6 } } @@ -168339,15 +168061,15 @@ "postfix": false, "binop": null }, - "start": 56429, - "end": 56430, + "start": 56369, + "end": 56370, "loc": { "start": { - "line": 1636, + "line": 1635, "column": 7 }, "end": { - "line": 1636, + "line": 1635, "column": 8 } } @@ -168365,15 +168087,15 @@ "binop": null }, "value": "CameraControl", - "start": 56435, - "end": 56448, + "start": 56375, + "end": 56388, "loc": { "start": { - "line": 1637, + "line": 1636, "column": 4 }, "end": { - "line": 1637, + "line": 1636, "column": 17 } } @@ -168390,15 +168112,15 @@ "postfix": false, "binop": null }, - "start": 56449, - "end": 56450, + "start": 56389, + "end": 56390, "loc": { "start": { - "line": 1638, + "line": 1637, "column": 0 }, "end": { - "line": 1638, + "line": 1637, "column": 1 } } @@ -168416,15 +168138,15 @@ "binop": null, "updateContext": null }, - "start": 56450, - "end": 56451, + "start": 56390, + "end": 56391, "loc": { "start": { - "line": 1638, + "line": 1637, "column": 1 }, "end": { - "line": 1638, + "line": 1637, "column": 2 } } @@ -168442,15 +168164,15 @@ "binop": null, "updateContext": null }, - "start": 56452, - "end": 56452, + "start": 56392, + "end": 56392, "loc": { "start": { - "line": 1639, + "line": 1638, "column": 0 }, "end": { - "line": 1639, + "line": 1638, "column": 0 } } diff --git a/docs/ast/source/viewer/scene/CameraControl/lib/CameraUpdater.js.json b/docs/ast/source/viewer/scene/CameraControl/lib/CameraUpdater.js.json index 82ba0c6927..4ceef80f87 100644 --- a/docs/ast/source/viewer/scene/CameraControl/lib/CameraUpdater.js.json +++ b/docs/ast/source/viewer/scene/CameraControl/lib/CameraUpdater.js.json @@ -1,28 +1,28 @@ { "type": "File", "start": 0, - "end": 12599, + "end": 12554, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 314, + "line": 312, "column": 23 } }, "program": { "type": "Program", "start": 0, - "end": 12599, + "end": 12554, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 314, + "line": 312, "column": 23 } }, @@ -429,14 +429,14 @@ { "type": "Identifier", "start": 312, - "end": 12574, + "end": 12529, "loc": { "start": { "line": 12, "column": 0 }, "end": { - "line": 312, + "line": 310, "column": 1 } }, @@ -462,14 +462,14 @@ "body": { "type": "ClassBody", "start": 332, - "end": 12574, + "end": 12529, "loc": { "start": { "line": 12, "column": 20 }, "end": { - "line": 312, + "line": 310, "column": 1 } }, @@ -477,14 +477,14 @@ { "type": "ClassMethod", "start": 339, - "end": 12509, + "end": 12464, "loc": { "start": { "line": 14, "column": 4 }, "end": { - "line": 306, + "line": 304, "column": 5 } }, @@ -602,14 +602,14 @@ "body": { "type": "BlockStatement", "start": 397, - "end": 12509, + "end": 12464, "loc": { "start": { "line": 14, "column": 62 }, "end": { - "line": 306, + "line": 304, "column": 5 } }, @@ -1409,28 +1409,28 @@ { "type": "ExpressionStatement", "start": 923, - "end": 12503, + "end": 12458, "loc": { "start": { "line": 26, "column": 8 }, "end": { - "line": 305, + "line": 303, "column": 11 } }, "expression": { "type": "AssignmentExpression", "start": 923, - "end": 12502, + "end": 12457, "loc": { "start": { "line": 26, "column": 8 }, "end": { - "line": 305, + "line": 303, "column": 10 } }, @@ -1488,14 +1488,14 @@ "right": { "type": "CallExpression", "start": 938, - "end": 12502, + "end": 12457, "loc": { "start": { "line": 26, "column": 23 }, "end": { - "line": 305, + "line": 303, "column": 10 } }, @@ -1573,14 +1573,14 @@ { "type": "ArrowFunctionExpression", "start": 955, - "end": 12501, + "end": 12456, "loc": { "start": { "line": 26, "column": 40 }, "end": { - "line": 305, + "line": 303, "column": 9 } }, @@ -1592,14 +1592,14 @@ "body": { "type": "BlockStatement", "start": 961, - "end": 12501, + "end": 12456, "loc": { "start": { "line": 26, "column": 46 }, "end": { - "line": 305, + "line": 303, "column": 9 } }, @@ -19124,7 +19124,7 @@ { "type": "ExpressionStatement", "start": 12406, - "end": 12437, + "end": 12446, "loc": { "start": { "line": 302, @@ -19132,13 +19132,13 @@ }, "end": { "line": 302, - "column": 43 + "column": 52 } }, "expression": { "type": "AssignmentExpression", "start": 12406, - "end": 12436, + "end": 12445, "loc": { "start": { "line": 302, @@ -19146,14 +19146,14 @@ }, "end": { "line": 302, - "column": 42 + "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", "start": 12406, - "end": 12428, + "end": 12432, "loc": { "start": { "line": 302, @@ -19161,13 +19161,13 @@ }, "end": { "line": 302, - "column": 34 + "column": 38 } }, "object": { - "type": "Identifier", + "type": "MemberExpression", "start": 12406, - "end": 12413, + "end": 12425, "loc": { "start": { "line": 302, @@ -19175,131 +19175,34 @@ }, "end": { "line": 302, - "column": 19 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 12414, - "end": 12428, - "loc": { - "start": { - "line": 302, - "column": 20 - }, - "end": { - "line": 302, - "column": 34 - }, - "identifierName": "inputFromMouse" - }, - "name": "inputFromMouse" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 12431, - "end": 12436, - "loc": { - "start": { - "line": 302, - "column": 37 - }, - "end": { - "line": 302, - "column": 42 - } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 12451, - "end": 12491, - "loc": { - "start": { - "line": 304, - "column": 12 - }, - "end": { - "line": 304, - "column": 52 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 12451, - "end": 12490, - "loc": { - "start": { - "line": 304, - "column": 12 - }, - "end": { - "line": 304, - "column": 51 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 12451, - "end": 12477, - "loc": { - "start": { - "line": 304, - "column": 12 - }, - "end": { - "line": 304, - "column": 38 - } - }, - "object": { - "type": "MemberExpression", - "start": 12451, - "end": 12470, - "loc": { - "start": { - "line": 304, - "column": 12 - }, - "end": { - "line": 304, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 12451, - "end": 12464, + "start": 12406, + "end": 12419, "loc": { "start": { - "line": 304, + "line": 302, "column": 12 }, "end": { - "line": 304, + "line": 302, "column": 25 } }, "object": { "type": "Identifier", - "start": 12451, - "end": 12459, + "start": 12406, + "end": 12414, "loc": { "start": { - "line": 304, + "line": 302, "column": 12 }, "end": { - "line": 304, + "line": 302, "column": 20 }, "identifierName": "document" @@ -19308,15 +19211,15 @@ }, "property": { "type": "Identifier", - "start": 12460, - "end": 12464, + "start": 12415, + "end": 12419, "loc": { "start": { - "line": 304, + "line": 302, "column": 21 }, "end": { - "line": 304, + "line": 302, "column": 25 }, "identifierName": "body" @@ -19327,15 +19230,15 @@ }, "property": { "type": "Identifier", - "start": 12465, - "end": 12470, + "start": 12420, + "end": 12425, "loc": { "start": { - "line": 304, + "line": 302, "column": 26 }, "end": { - "line": 304, + "line": 302, "column": 31 }, "identifierName": "style" @@ -19346,15 +19249,15 @@ }, "property": { "type": "Identifier", - "start": 12471, - "end": 12477, + "start": 12426, + "end": 12432, "loc": { "start": { - "line": 304, + "line": 302, "column": 32 }, "end": { - "line": 304, + "line": 302, "column": 38 }, "identifierName": "cursor" @@ -19365,15 +19268,15 @@ }, "right": { "type": "Identifier", - "start": 12480, - "end": 12490, + "start": 12435, + "end": 12445, "loc": { "start": { - "line": 304, + "line": 302, "column": 41 }, "end": { - "line": 304, + "line": 302, "column": 51 }, "identifierName": "cursorType" @@ -19415,15 +19318,15 @@ }, { "type": "ClassMethod", - "start": 12516, - "end": 12572, + "start": 12471, + "end": 12527, "loc": { "start": { - "line": 309, + "line": 307, "column": 4 }, "end": { - "line": 311, + "line": 309, "column": 5 } }, @@ -19431,15 +19334,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 12516, - "end": 12523, + "start": 12471, + "end": 12478, "loc": { "start": { - "line": 309, + "line": 307, "column": 4 }, "end": { - "line": 309, + "line": 307, "column": 11 }, "identifierName": "destroy" @@ -19454,101 +19357,101 @@ "params": [], "body": { "type": "BlockStatement", - "start": 12526, - "end": 12572, + "start": 12481, + "end": 12527, "loc": { "start": { - "line": 309, + "line": 307, "column": 14 }, "end": { - "line": 311, + "line": 309, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 12536, - "end": 12566, + "start": 12491, + "end": 12521, "loc": { "start": { - "line": 310, + "line": 308, "column": 8 }, "end": { - "line": 310, + "line": 308, "column": 38 } }, "expression": { "type": "CallExpression", - "start": 12536, - "end": 12565, + "start": 12491, + "end": 12520, "loc": { "start": { - "line": 310, + "line": 308, "column": 8 }, "end": { - "line": 310, + "line": 308, "column": 37 } }, "callee": { "type": "MemberExpression", - "start": 12536, - "end": 12551, + "start": 12491, + "end": 12506, "loc": { "start": { - "line": 310, + "line": 308, "column": 8 }, "end": { - "line": 310, + "line": 308, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 12536, - "end": 12547, + "start": 12491, + "end": 12502, "loc": { "start": { - "line": 310, + "line": 308, "column": 8 }, "end": { - "line": 310, + "line": 308, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 12536, - "end": 12540, + "start": 12491, + "end": 12495, "loc": { "start": { - "line": 310, + "line": 308, "column": 8 }, "end": { - "line": 310, + "line": 308, "column": 12 } } }, "property": { "type": "Identifier", - "start": 12541, - "end": 12547, + "start": 12496, + "end": 12502, "loc": { "start": { - "line": 310, + "line": 308, "column": 13 }, "end": { - "line": 310, + "line": 308, "column": 19 }, "identifierName": "_scene" @@ -19559,15 +19462,15 @@ }, "property": { "type": "Identifier", - "start": 12548, - "end": 12551, + "start": 12503, + "end": 12506, "loc": { "start": { - "line": 310, + "line": 308, "column": 20 }, "end": { - "line": 310, + "line": 308, "column": 23 }, "identifierName": "off" @@ -19579,44 +19482,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 12552, - "end": 12564, + "start": 12507, + "end": 12519, "loc": { "start": { - "line": 310, + "line": 308, "column": 24 }, "end": { - "line": 310, + "line": 308, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 12552, - "end": 12556, + "start": 12507, + "end": 12511, "loc": { "start": { - "line": 310, + "line": 308, "column": 24 }, "end": { - "line": 310, + "line": 308, "column": 28 } } }, "property": { "type": "Identifier", - "start": 12557, - "end": 12564, + "start": 12512, + "end": 12519, "loc": { "start": { - "line": 310, + "line": 308, "column": 29 }, "end": { - "line": 310, + "line": 308, "column": 36 }, "identifierName": "_onTick" @@ -19640,15 +19543,15 @@ }, { "type": "ExportNamedDeclaration", - "start": 12576, - "end": 12599, + "start": 12531, + "end": 12554, "loc": { "start": { - "line": 314, + "line": 312, "column": 0 }, "end": { - "line": 314, + "line": 312, "column": 23 } }, @@ -19656,29 +19559,29 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 12584, - "end": 12597, + "start": 12539, + "end": 12552, "loc": { "start": { - "line": 314, + "line": 312, "column": 8 }, "end": { - "line": 314, + "line": 312, "column": 21 } }, "local": { "type": "Identifier", - "start": 12584, - "end": 12597, + "start": 12539, + "end": 12552, "loc": { "start": { - "line": 314, + "line": 312, "column": 8 }, "end": { - "line": 314, + "line": 312, "column": 21 }, "identifierName": "CameraUpdater" @@ -19687,15 +19590,15 @@ }, "exported": { "type": "Identifier", - "start": 12584, - "end": 12597, + "start": 12539, + "end": 12552, "loc": { "start": { - "line": 314, + "line": 312, "column": 8 }, "end": { - "line": 314, + "line": 312, "column": 21 }, "identifierName": "CameraUpdater" @@ -19708,29 +19611,29 @@ }, { "type": "ExportNamedDeclaration", - "start": 12576, - "end": 12599, + "start": 12531, + "end": 12554, "loc": { "start": { - "line": 314, + "line": 312, "column": 0 }, "end": { - "line": 314, + "line": 312, "column": 23 } }, "declaration": { "type": "ClassDeclaration", "start": 312, - "end": 12574, + "end": 12529, "loc": { "start": { "line": 12, "column": 0 }, "end": { - "line": 312, + "line": 310, "column": 1 } }, @@ -19756,14 +19659,14 @@ "body": { "type": "ClassBody", "start": 332, - "end": 12574, + "end": 12529, "loc": { "start": { "line": 12, "column": 20 }, "end": { - "line": 312, + "line": 310, "column": 1 } }, @@ -19771,14 +19674,14 @@ { "type": "ClassMethod", "start": 339, - "end": 12509, + "end": 12464, "loc": { "start": { "line": 14, "column": 4 }, "end": { - "line": 306, + "line": 304, "column": 5 } }, @@ -19896,14 +19799,14 @@ "body": { "type": "BlockStatement", "start": 397, - "end": 12509, + "end": 12464, "loc": { "start": { "line": 14, "column": 62 }, "end": { - "line": 306, + "line": 304, "column": 5 } }, @@ -20703,28 +20606,28 @@ { "type": "ExpressionStatement", "start": 923, - "end": 12503, + "end": 12458, "loc": { "start": { "line": 26, "column": 8 }, "end": { - "line": 305, + "line": 303, "column": 11 } }, "expression": { "type": "AssignmentExpression", "start": 923, - "end": 12502, + "end": 12457, "loc": { "start": { "line": 26, "column": 8 }, "end": { - "line": 305, + "line": 303, "column": 10 } }, @@ -20782,14 +20685,14 @@ "right": { "type": "CallExpression", "start": 938, - "end": 12502, + "end": 12457, "loc": { "start": { "line": 26, "column": 23 }, "end": { - "line": 305, + "line": 303, "column": 10 } }, @@ -20867,14 +20770,14 @@ { "type": "ArrowFunctionExpression", "start": 955, - "end": 12501, + "end": 12456, "loc": { "start": { "line": 26, "column": 40 }, "end": { - "line": 305, + "line": 303, "column": 9 } }, @@ -20886,14 +20789,14 @@ "body": { "type": "BlockStatement", "start": 961, - "end": 12501, + "end": 12456, "loc": { "start": { "line": 26, "column": 46 }, "end": { - "line": 305, + "line": 303, "column": 9 } }, @@ -38418,7 +38321,7 @@ { "type": "ExpressionStatement", "start": 12406, - "end": 12437, + "end": 12446, "loc": { "start": { "line": 302, @@ -38426,13 +38329,13 @@ }, "end": { "line": 302, - "column": 43 + "column": 52 } }, "expression": { "type": "AssignmentExpression", "start": 12406, - "end": 12436, + "end": 12445, "loc": { "start": { "line": 302, @@ -38440,14 +38343,14 @@ }, "end": { "line": 302, - "column": 42 + "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", "start": 12406, - "end": 12428, + "end": 12432, "loc": { "start": { "line": 302, @@ -38455,13 +38358,13 @@ }, "end": { "line": 302, - "column": 34 + "column": 38 } }, "object": { - "type": "Identifier", + "type": "MemberExpression", "start": 12406, - "end": 12413, + "end": 12425, "loc": { "start": { "line": 302, @@ -38469,131 +38372,34 @@ }, "end": { "line": 302, - "column": 19 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 12414, - "end": 12428, - "loc": { - "start": { - "line": 302, - "column": 20 - }, - "end": { - "line": 302, - "column": 34 - }, - "identifierName": "inputFromMouse" - }, - "name": "inputFromMouse" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 12431, - "end": 12436, - "loc": { - "start": { - "line": 302, - "column": 37 - }, - "end": { - "line": 302, - "column": 42 - } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 12451, - "end": 12491, - "loc": { - "start": { - "line": 304, - "column": 12 - }, - "end": { - "line": 304, - "column": 52 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 12451, - "end": 12490, - "loc": { - "start": { - "line": 304, - "column": 12 - }, - "end": { - "line": 304, - "column": 51 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 12451, - "end": 12477, - "loc": { - "start": { - "line": 304, - "column": 12 - }, - "end": { - "line": 304, - "column": 38 - } - }, - "object": { - "type": "MemberExpression", - "start": 12451, - "end": 12470, - "loc": { - "start": { - "line": 304, - "column": 12 - }, - "end": { - "line": 304, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 12451, - "end": 12464, + "start": 12406, + "end": 12419, "loc": { "start": { - "line": 304, + "line": 302, "column": 12 }, "end": { - "line": 304, + "line": 302, "column": 25 } }, "object": { "type": "Identifier", - "start": 12451, - "end": 12459, + "start": 12406, + "end": 12414, "loc": { "start": { - "line": 304, + "line": 302, "column": 12 }, "end": { - "line": 304, + "line": 302, "column": 20 }, "identifierName": "document" @@ -38602,15 +38408,15 @@ }, "property": { "type": "Identifier", - "start": 12460, - "end": 12464, + "start": 12415, + "end": 12419, "loc": { "start": { - "line": 304, + "line": 302, "column": 21 }, "end": { - "line": 304, + "line": 302, "column": 25 }, "identifierName": "body" @@ -38621,15 +38427,15 @@ }, "property": { "type": "Identifier", - "start": 12465, - "end": 12470, + "start": 12420, + "end": 12425, "loc": { "start": { - "line": 304, + "line": 302, "column": 26 }, "end": { - "line": 304, + "line": 302, "column": 31 }, "identifierName": "style" @@ -38640,15 +38446,15 @@ }, "property": { "type": "Identifier", - "start": 12471, - "end": 12477, + "start": 12426, + "end": 12432, "loc": { "start": { - "line": 304, + "line": 302, "column": 32 }, "end": { - "line": 304, + "line": 302, "column": 38 }, "identifierName": "cursor" @@ -38659,15 +38465,15 @@ }, "right": { "type": "Identifier", - "start": 12480, - "end": 12490, + "start": 12435, + "end": 12445, "loc": { "start": { - "line": 304, + "line": 302, "column": 41 }, "end": { - "line": 304, + "line": 302, "column": 51 }, "identifierName": "cursorType" @@ -38709,15 +38515,15 @@ }, { "type": "ClassMethod", - "start": 12516, - "end": 12572, + "start": 12471, + "end": 12527, "loc": { "start": { - "line": 309, + "line": 307, "column": 4 }, "end": { - "line": 311, + "line": 309, "column": 5 } }, @@ -38725,15 +38531,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 12516, - "end": 12523, + "start": 12471, + "end": 12478, "loc": { "start": { - "line": 309, + "line": 307, "column": 4 }, "end": { - "line": 309, + "line": 307, "column": 11 }, "identifierName": "destroy" @@ -38748,101 +38554,101 @@ "params": [], "body": { "type": "BlockStatement", - "start": 12526, - "end": 12572, + "start": 12481, + "end": 12527, "loc": { "start": { - "line": 309, + "line": 307, "column": 14 }, "end": { - "line": 311, + "line": 309, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 12536, - "end": 12566, + "start": 12491, + "end": 12521, "loc": { "start": { - "line": 310, + "line": 308, "column": 8 }, "end": { - "line": 310, + "line": 308, "column": 38 } }, "expression": { "type": "CallExpression", - "start": 12536, - "end": 12565, + "start": 12491, + "end": 12520, "loc": { "start": { - "line": 310, + "line": 308, "column": 8 }, "end": { - "line": 310, + "line": 308, "column": 37 } }, "callee": { "type": "MemberExpression", - "start": 12536, - "end": 12551, + "start": 12491, + "end": 12506, "loc": { "start": { - "line": 310, + "line": 308, "column": 8 }, "end": { - "line": 310, + "line": 308, "column": 23 } }, "object": { "type": "MemberExpression", - "start": 12536, - "end": 12547, + "start": 12491, + "end": 12502, "loc": { "start": { - "line": 310, + "line": 308, "column": 8 }, "end": { - "line": 310, + "line": 308, "column": 19 } }, "object": { "type": "ThisExpression", - "start": 12536, - "end": 12540, + "start": 12491, + "end": 12495, "loc": { "start": { - "line": 310, + "line": 308, "column": 8 }, "end": { - "line": 310, + "line": 308, "column": 12 } } }, "property": { "type": "Identifier", - "start": 12541, - "end": 12547, + "start": 12496, + "end": 12502, "loc": { "start": { - "line": 310, + "line": 308, "column": 13 }, "end": { - "line": 310, + "line": 308, "column": 19 }, "identifierName": "_scene" @@ -38853,15 +38659,15 @@ }, "property": { "type": "Identifier", - "start": 12548, - "end": 12551, + "start": 12503, + "end": 12506, "loc": { "start": { - "line": 310, + "line": 308, "column": 20 }, "end": { - "line": 310, + "line": 308, "column": 23 }, "identifierName": "off" @@ -38873,44 +38679,44 @@ "arguments": [ { "type": "MemberExpression", - "start": 12552, - "end": 12564, + "start": 12507, + "end": 12519, "loc": { "start": { - "line": 310, + "line": 308, "column": 24 }, "end": { - "line": 310, + "line": 308, "column": 36 } }, "object": { "type": "ThisExpression", - "start": 12552, - "end": 12556, + "start": 12507, + "end": 12511, "loc": { "start": { - "line": 310, + "line": 308, "column": 24 }, "end": { - "line": 310, + "line": 308, "column": 28 } } }, "property": { "type": "Identifier", - "start": 12557, - "end": 12564, + "start": 12512, + "end": 12519, "loc": { "start": { - "line": 310, + "line": 308, "column": 29 }, "end": { - "line": 310, + "line": 308, "column": 36 }, "identifierName": "_onTick" @@ -75360,9 +75166,9 @@ "postfix": false, "binop": null }, - "value": "updates", + "value": "document", "start": 12406, - "end": 12413, + "end": 12414, "loc": { "start": { "line": 302, @@ -75370,7 +75176,7 @@ }, "end": { "line": 302, - "column": 19 + "column": 20 } } }, @@ -75387,34 +75193,8 @@ "binop": null, "updateContext": null }, - "start": 12413, - "end": 12414, - "loc": { - "start": { - "line": 302, - "column": 19 - }, - "end": { - "line": 302, - "column": 20 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "inputFromMouse", "start": 12414, - "end": 12428, + "end": 12415, "loc": { "start": { "line": 302, @@ -75422,139 +75202,6 @@ }, "end": { "line": 302, - "column": 34 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 12429, - "end": 12430, - "loc": { - "start": { - "line": 302, - "column": 35 - }, - "end": { - "line": 302, - "column": 36 - } - } - }, - { - "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": 12431, - "end": 12436, - "loc": { - "start": { - "line": 302, - "column": 37 - }, - "end": { - "line": 302, - "column": 42 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 12436, - "end": 12437, - "loc": { - "start": { - "line": 302, - "column": 42 - }, - "end": { - "line": 302, - "column": 43 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "document", - "start": 12451, - "end": 12459, - "loc": { - "start": { - "line": 304, - "column": 12 - }, - "end": { - "line": 304, - "column": 20 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 12459, - "end": 12460, - "loc": { - "start": { - "line": 304, - "column": 20 - }, - "end": { - "line": 304, "column": 21 } } @@ -75572,15 +75219,15 @@ "binop": null }, "value": "body", - "start": 12460, - "end": 12464, + "start": 12415, + "end": 12419, "loc": { "start": { - "line": 304, + "line": 302, "column": 21 }, "end": { - "line": 304, + "line": 302, "column": 25 } } @@ -75598,15 +75245,15 @@ "binop": null, "updateContext": null }, - "start": 12464, - "end": 12465, + "start": 12419, + "end": 12420, "loc": { "start": { - "line": 304, + "line": 302, "column": 25 }, "end": { - "line": 304, + "line": 302, "column": 26 } } @@ -75624,15 +75271,15 @@ "binop": null }, "value": "style", - "start": 12465, - "end": 12470, + "start": 12420, + "end": 12425, "loc": { "start": { - "line": 304, + "line": 302, "column": 26 }, "end": { - "line": 304, + "line": 302, "column": 31 } } @@ -75650,15 +75297,15 @@ "binop": null, "updateContext": null }, - "start": 12470, - "end": 12471, + "start": 12425, + "end": 12426, "loc": { "start": { - "line": 304, + "line": 302, "column": 31 }, "end": { - "line": 304, + "line": 302, "column": 32 } } @@ -75676,15 +75323,15 @@ "binop": null }, "value": "cursor", - "start": 12471, - "end": 12477, + "start": 12426, + "end": 12432, "loc": { "start": { - "line": 304, + "line": 302, "column": 32 }, "end": { - "line": 304, + "line": 302, "column": 38 } } @@ -75703,15 +75350,15 @@ "updateContext": null }, "value": "=", - "start": 12478, - "end": 12479, + "start": 12433, + "end": 12434, "loc": { "start": { - "line": 304, + "line": 302, "column": 39 }, "end": { - "line": 304, + "line": 302, "column": 40 } } @@ -75729,15 +75376,15 @@ "binop": null }, "value": "cursorType", - "start": 12480, - "end": 12490, + "start": 12435, + "end": 12445, "loc": { "start": { - "line": 304, + "line": 302, "column": 41 }, "end": { - "line": 304, + "line": 302, "column": 51 } } @@ -75755,15 +75402,15 @@ "binop": null, "updateContext": null }, - "start": 12490, - "end": 12491, + "start": 12445, + "end": 12446, "loc": { "start": { - "line": 304, + "line": 302, "column": 51 }, "end": { - "line": 304, + "line": 302, "column": 52 } } @@ -75780,15 +75427,15 @@ "postfix": false, "binop": null }, - "start": 12500, - "end": 12501, + "start": 12455, + "end": 12456, "loc": { "start": { - "line": 305, + "line": 303, "column": 8 }, "end": { - "line": 305, + "line": 303, "column": 9 } } @@ -75805,15 +75452,15 @@ "postfix": false, "binop": null }, - "start": 12501, - "end": 12502, + "start": 12456, + "end": 12457, "loc": { "start": { - "line": 305, + "line": 303, "column": 9 }, "end": { - "line": 305, + "line": 303, "column": 10 } } @@ -75831,15 +75478,15 @@ "binop": null, "updateContext": null }, - "start": 12502, - "end": 12503, + "start": 12457, + "end": 12458, "loc": { "start": { - "line": 305, + "line": 303, "column": 10 }, "end": { - "line": 305, + "line": 303, "column": 11 } } @@ -75856,15 +75503,15 @@ "postfix": false, "binop": null }, - "start": 12508, - "end": 12509, + "start": 12463, + "end": 12464, "loc": { "start": { - "line": 306, + "line": 304, "column": 4 }, "end": { - "line": 306, + "line": 304, "column": 5 } } @@ -75882,15 +75529,15 @@ "binop": null }, "value": "destroy", - "start": 12516, - "end": 12523, + "start": 12471, + "end": 12478, "loc": { "start": { - "line": 309, + "line": 307, "column": 4 }, "end": { - "line": 309, + "line": 307, "column": 11 } } @@ -75907,15 +75554,15 @@ "postfix": false, "binop": null }, - "start": 12523, - "end": 12524, + "start": 12478, + "end": 12479, "loc": { "start": { - "line": 309, + "line": 307, "column": 11 }, "end": { - "line": 309, + "line": 307, "column": 12 } } @@ -75932,15 +75579,15 @@ "postfix": false, "binop": null }, - "start": 12524, - "end": 12525, + "start": 12479, + "end": 12480, "loc": { "start": { - "line": 309, + "line": 307, "column": 12 }, "end": { - "line": 309, + "line": 307, "column": 13 } } @@ -75957,15 +75604,15 @@ "postfix": false, "binop": null }, - "start": 12526, - "end": 12527, + "start": 12481, + "end": 12482, "loc": { "start": { - "line": 309, + "line": 307, "column": 14 }, "end": { - "line": 309, + "line": 307, "column": 15 } } @@ -75985,15 +75632,15 @@ "updateContext": null }, "value": "this", - "start": 12536, - "end": 12540, + "start": 12491, + "end": 12495, "loc": { "start": { - "line": 310, + "line": 308, "column": 8 }, "end": { - "line": 310, + "line": 308, "column": 12 } } @@ -76011,15 +75658,15 @@ "binop": null, "updateContext": null }, - "start": 12540, - "end": 12541, + "start": 12495, + "end": 12496, "loc": { "start": { - "line": 310, + "line": 308, "column": 12 }, "end": { - "line": 310, + "line": 308, "column": 13 } } @@ -76037,15 +75684,15 @@ "binop": null }, "value": "_scene", - "start": 12541, - "end": 12547, + "start": 12496, + "end": 12502, "loc": { "start": { - "line": 310, + "line": 308, "column": 13 }, "end": { - "line": 310, + "line": 308, "column": 19 } } @@ -76063,15 +75710,15 @@ "binop": null, "updateContext": null }, - "start": 12547, - "end": 12548, + "start": 12502, + "end": 12503, "loc": { "start": { - "line": 310, + "line": 308, "column": 19 }, "end": { - "line": 310, + "line": 308, "column": 20 } } @@ -76089,15 +75736,15 @@ "binop": null }, "value": "off", - "start": 12548, - "end": 12551, + "start": 12503, + "end": 12506, "loc": { "start": { - "line": 310, + "line": 308, "column": 20 }, "end": { - "line": 310, + "line": 308, "column": 23 } } @@ -76114,15 +75761,15 @@ "postfix": false, "binop": null }, - "start": 12551, - "end": 12552, + "start": 12506, + "end": 12507, "loc": { "start": { - "line": 310, + "line": 308, "column": 23 }, "end": { - "line": 310, + "line": 308, "column": 24 } } @@ -76142,15 +75789,15 @@ "updateContext": null }, "value": "this", - "start": 12552, - "end": 12556, + "start": 12507, + "end": 12511, "loc": { "start": { - "line": 310, + "line": 308, "column": 24 }, "end": { - "line": 310, + "line": 308, "column": 28 } } @@ -76168,15 +75815,15 @@ "binop": null, "updateContext": null }, - "start": 12556, - "end": 12557, + "start": 12511, + "end": 12512, "loc": { "start": { - "line": 310, + "line": 308, "column": 28 }, "end": { - "line": 310, + "line": 308, "column": 29 } } @@ -76194,15 +75841,15 @@ "binop": null }, "value": "_onTick", - "start": 12557, - "end": 12564, + "start": 12512, + "end": 12519, "loc": { "start": { - "line": 310, + "line": 308, "column": 29 }, "end": { - "line": 310, + "line": 308, "column": 36 } } @@ -76219,15 +75866,15 @@ "postfix": false, "binop": null }, - "start": 12564, - "end": 12565, + "start": 12519, + "end": 12520, "loc": { "start": { - "line": 310, + "line": 308, "column": 36 }, "end": { - "line": 310, + "line": 308, "column": 37 } } @@ -76245,15 +75892,15 @@ "binop": null, "updateContext": null }, - "start": 12565, - "end": 12566, + "start": 12520, + "end": 12521, "loc": { "start": { - "line": 310, + "line": 308, "column": 37 }, "end": { - "line": 310, + "line": 308, "column": 38 } } @@ -76270,15 +75917,15 @@ "postfix": false, "binop": null }, - "start": 12571, - "end": 12572, + "start": 12526, + "end": 12527, "loc": { "start": { - "line": 311, + "line": 309, "column": 4 }, "end": { - "line": 311, + "line": 309, "column": 5 } } @@ -76295,15 +75942,15 @@ "postfix": false, "binop": null }, - "start": 12573, - "end": 12574, + "start": 12528, + "end": 12529, "loc": { "start": { - "line": 312, + "line": 310, "column": 0 }, "end": { - "line": 312, + "line": 310, "column": 1 } } @@ -76323,15 +75970,15 @@ "updateContext": null }, "value": "export", - "start": 12576, - "end": 12582, + "start": 12531, + "end": 12537, "loc": { "start": { - "line": 314, + "line": 312, "column": 0 }, "end": { - "line": 314, + "line": 312, "column": 6 } } @@ -76348,15 +75995,15 @@ "postfix": false, "binop": null }, - "start": 12583, - "end": 12584, + "start": 12538, + "end": 12539, "loc": { "start": { - "line": 314, + "line": 312, "column": 7 }, "end": { - "line": 314, + "line": 312, "column": 8 } } @@ -76374,15 +76021,15 @@ "binop": null }, "value": "CameraUpdater", - "start": 12584, - "end": 12597, + "start": 12539, + "end": 12552, "loc": { "start": { - "line": 314, + "line": 312, "column": 8 }, "end": { - "line": 314, + "line": 312, "column": 21 } } @@ -76399,15 +76046,15 @@ "postfix": false, "binop": null }, - "start": 12597, - "end": 12598, + "start": 12552, + "end": 12553, "loc": { "start": { - "line": 314, + "line": 312, "column": 21 }, "end": { - "line": 314, + "line": 312, "column": 22 } } @@ -76425,15 +76072,15 @@ "binop": null, "updateContext": null }, - "start": 12598, - "end": 12599, + "start": 12553, + "end": 12554, "loc": { "start": { - "line": 314, + "line": 312, "column": 22 }, "end": { - "line": 314, + "line": 312, "column": 23 } } @@ -76451,15 +76098,15 @@ "binop": null, "updateContext": null }, - "start": 12599, - "end": 12599, + "start": 12554, + "end": 12554, "loc": { "start": { - "line": 314, + "line": 312, "column": 23 }, "end": { - "line": 314, + "line": 312, "column": 23 } } diff --git a/docs/ast/source/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js.json b/docs/ast/source/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js.json index eb36d9002b..ffc78c1188 100644 --- a/docs/ast/source/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js.json +++ b/docs/ast/source/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js.json @@ -1,28 +1,28 @@ { "type": "File", "start": 0, - "end": 11122, + "end": 11188, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 342, + "line": 341, "column": 0 } }, "program": { "type": "Program", "start": 0, - "end": 11122, + "end": 11188, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 342, + "line": 341, "column": 0 } }, @@ -1847,14 +1847,14 @@ { "type": "Identifier", "start": 735, - "end": 11083, + "end": 11149, "loc": { "start": { "line": 31, "column": 0 }, "end": { - "line": 339, + "line": 338, "column": 1 } }, @@ -1880,14 +1880,14 @@ "body": { "type": "ClassBody", "start": 768, - "end": 11083, + "end": 11149, "loc": { "start": { "line": 31, "column": 33 }, "end": { - "line": 339, + "line": 338, "column": 1 } }, @@ -1895,7 +1895,7 @@ { "type": "ClassMethod", "start": 775, - "end": 10275, + "end": 10369, "loc": { "start": { "line": 33, @@ -2020,7 +2020,7 @@ "body": { "type": "BlockStatement", "start": 833, - "end": 10275, + "end": 10369, "loc": { "start": { "line": 33, @@ -2648,141 +2648,46 @@ ], "kind": "let" }, - { - "type": "ExpressionStatement", - "start": 1094, - "end": 1113, - "loc": { - "start": { - "line": 45, - "column": 8 - }, - "end": { - "line": 45, - "column": 27 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 1094, - "end": 1112, - "loc": { - "start": { - "line": 45, - "column": 8 - }, - "end": { - "line": 45, - "column": 26 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 1094, - "end": 1104, - "loc": { - "start": { - "line": 45, - "column": 8 - }, - "end": { - "line": 45, - "column": 18 - } - }, - "object": { - "type": "ThisExpression", - "start": 1094, - "end": 1098, - "loc": { - "start": { - "line": 45, - "column": 8 - }, - "end": { - "line": 45, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 1099, - "end": 1104, - "loc": { - "start": { - "line": 45, - "column": 13 - }, - "end": { - "line": 45, - "column": 18 - }, - "identifierName": "_down" - }, - "name": "_down" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 1107, - "end": 1112, - "loc": { - "start": { - "line": 45, - "column": 21 - }, - "end": { - "line": 45, - "column": 26 - } - }, - "value": false - } - } - }, { "type": "VariableDeclaration", - "start": 1123, - "end": 1141, + "start": 1095, + "end": 1113, "loc": { "start": { - "line": 47, + "line": 46, "column": 8 }, "end": { - "line": 47, + "line": 46, "column": 26 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1127, - "end": 1140, + "start": 1099, + "end": 1112, "loc": { "start": { - "line": 47, + "line": 46, "column": 12 }, "end": { - "line": 47, + "line": 46, "column": 25 } }, "id": { "type": "Identifier", - "start": 1127, - "end": 1140, + "start": 1099, + "end": 1112, "loc": { "start": { - "line": 47, + "line": 46, "column": 12 }, "end": { - "line": 47, + "line": 46, "column": 25 }, "identifierName": "mouseDownLeft" @@ -2796,44 +2701,44 @@ }, { "type": "VariableDeclaration", - "start": 1150, - "end": 1170, + "start": 1122, + "end": 1142, "loc": { "start": { - "line": 48, + "line": 47, "column": 8 }, "end": { - "line": 48, + "line": 47, "column": 28 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1154, - "end": 1169, + "start": 1126, + "end": 1141, "loc": { "start": { - "line": 48, + "line": 47, "column": 12 }, "end": { - "line": 48, + "line": 47, "column": 27 } }, "id": { "type": "Identifier", - "start": 1154, - "end": 1169, + "start": 1126, + "end": 1141, "loc": { "start": { - "line": 48, + "line": 47, "column": 12 }, "end": { - "line": 48, + "line": 47, "column": 27 }, "identifierName": "mouseDownMiddle" @@ -2847,44 +2752,44 @@ }, { "type": "VariableDeclaration", - "start": 1179, - "end": 1198, + "start": 1151, + "end": 1170, "loc": { "start": { - "line": 49, + "line": 48, "column": 8 }, "end": { - "line": 49, + "line": 48, "column": 27 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1183, - "end": 1197, + "start": 1155, + "end": 1169, "loc": { "start": { - "line": 49, + "line": 48, "column": 12 }, "end": { - "line": 49, + "line": 48, "column": 26 } }, "id": { "type": "Identifier", - "start": 1183, - "end": 1197, + "start": 1155, + "end": 1169, "loc": { "start": { - "line": 49, + "line": 48, "column": 12 }, "end": { - "line": 49, + "line": 48, "column": 26 }, "identifierName": "mouseDownRight" @@ -2898,44 +2803,44 @@ }, { "type": "VariableDeclaration", - "start": 1208, - "end": 1236, + "start": 1180, + "end": 1208, "loc": { "start": { - "line": 51, + "line": 50, "column": 8 }, "end": { - "line": 51, + "line": 50, "column": 36 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1212, - "end": 1235, + "start": 1184, + "end": 1207, "loc": { "start": { - "line": 51, + "line": 50, "column": 12 }, "end": { - "line": 51, + "line": 50, "column": 35 } }, "id": { "type": "Identifier", - "start": 1212, - "end": 1227, + "start": 1184, + "end": 1199, "loc": { "start": { - "line": 51, + "line": 50, "column": 12 }, "end": { - "line": 51, + "line": 50, "column": 27 }, "identifierName": "mouseDownPicked" @@ -2944,15 +2849,15 @@ }, "init": { "type": "BooleanLiteral", - "start": 1230, - "end": 1235, + "start": 1202, + "end": 1207, "loc": { "start": { - "line": 51, + "line": 50, "column": 30 }, "end": { - "line": 51, + "line": 50, "column": 35 } }, @@ -2964,44 +2869,44 @@ }, { "type": "VariableDeclaration", - "start": 1245, - "end": 1280, + "start": 1217, + "end": 1252, "loc": { "start": { - "line": 52, + "line": 51, "column": 8 }, "end": { - "line": 52, + "line": 51, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1251, - "end": 1279, + "start": 1223, + "end": 1251, "loc": { "start": { - "line": 52, + "line": 51, "column": 14 }, "end": { - "line": 52, + "line": 51, "column": 42 } }, "id": { "type": "Identifier", - "start": 1251, - "end": 1265, + "start": 1223, + "end": 1237, "loc": { "start": { - "line": 52, + "line": 51, "column": 14 }, "end": { - "line": 52, + "line": 51, "column": 28 }, "identifierName": "pickedWorldPos" @@ -3010,43 +2915,43 @@ }, "init": { "type": "CallExpression", - "start": 1268, - "end": 1279, + "start": 1240, + "end": 1251, "loc": { "start": { - "line": 52, + "line": 51, "column": 31 }, "end": { - "line": 52, + "line": 51, "column": 42 } }, "callee": { "type": "MemberExpression", - "start": 1268, - "end": 1277, + "start": 1240, + "end": 1249, "loc": { "start": { - "line": 52, + "line": 51, "column": 31 }, "end": { - "line": 52, + "line": 51, "column": 40 } }, "object": { "type": "Identifier", - "start": 1268, - "end": 1272, + "start": 1240, + "end": 1244, "loc": { "start": { - "line": 52, + "line": 51, "column": 31 }, "end": { - "line": 52, + "line": 51, "column": 35 }, "identifierName": "math" @@ -3055,15 +2960,15 @@ }, "property": { "type": "Identifier", - "start": 1273, - "end": 1277, + "start": 1245, + "end": 1249, "loc": { "start": { - "line": 52, + "line": 51, "column": 36 }, "end": { - "line": 52, + "line": 51, "column": 40 }, "identifierName": "vec3" @@ -3080,62 +2985,62 @@ }, { "type": "VariableDeclaration", - "start": 1290, - "end": 1326, + "start": 1262, + "end": 1306, "loc": { "start": { - "line": 54, + "line": 53, "column": 8 }, "end": { - "line": 54, - "column": 44 + "line": 53, + "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1294, - "end": 1325, + "start": 1266, + "end": 1305, "loc": { "start": { - "line": 54, + "line": 53, "column": 12 }, "end": { - "line": 54, - "column": 43 + "line": 53, + "column": 51 } }, "id": { "type": "Identifier", - "start": 1294, - "end": 1318, + "start": 1266, + "end": 1298, "loc": { "start": { - "line": 54, + "line": 53, "column": 12 }, "end": { - "line": 54, - "column": 36 + "line": 53, + "column": 44 }, - "identifierName": "mouseMovedSinceLastWheel" + "identifierName": "mouseMovedOnCanvasSinceLastWheel" }, - "name": "mouseMovedSinceLastWheel" + "name": "mouseMovedOnCanvasSinceLastWheel" }, "init": { "type": "BooleanLiteral", - "start": 1321, - "end": 1325, + "start": 1301, + "end": 1305, "loc": { "start": { - "line": 54, - "column": 39 + "line": 53, + "column": 47 }, "end": { - "line": 54, - "column": 43 + "line": 53, + "column": 51 } }, "value": true @@ -3146,44 +3051,44 @@ }, { "type": "VariableDeclaration", - "start": 1336, - "end": 1377, + "start": 1316, + "end": 1357, "loc": { "start": { - "line": 56, + "line": 55, "column": 8 }, "end": { - "line": 56, + "line": 55, "column": 49 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1342, - "end": 1376, + "start": 1322, + "end": 1356, "loc": { "start": { - "line": 56, + "line": 55, "column": 14 }, "end": { - "line": 56, + "line": 55, "column": 48 } }, "id": { "type": "Identifier", - "start": 1342, - "end": 1348, + "start": 1322, + "end": 1328, "loc": { "start": { - "line": 56, + "line": 55, "column": 14 }, "end": { - "line": 56, + "line": 55, "column": 20 }, "identifierName": "canvas" @@ -3192,72 +3097,72 @@ }, "init": { "type": "MemberExpression", - "start": 1351, - "end": 1376, + "start": 1331, + "end": 1356, "loc": { "start": { - "line": 56, + "line": 55, "column": 23 }, "end": { - "line": 56, + "line": 55, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 1351, - "end": 1369, + "start": 1331, + "end": 1349, "loc": { "start": { - "line": 56, + "line": 55, "column": 23 }, "end": { - "line": 56, + "line": 55, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 1351, - "end": 1362, + "start": 1331, + "end": 1342, "loc": { "start": { - "line": 56, + "line": 55, "column": 23 }, "end": { - "line": 56, + "line": 55, "column": 34 } }, "object": { "type": "ThisExpression", - "start": 1351, - "end": 1355, + "start": 1331, + "end": 1335, "loc": { "start": { - "line": 56, + "line": 55, "column": 23 }, "end": { - "line": 56, + "line": 55, "column": 27 } } }, "property": { "type": "Identifier", - "start": 1356, - "end": 1362, + "start": 1336, + "end": 1342, "loc": { "start": { - "line": 56, + "line": 55, "column": 28 }, "end": { - "line": 56, + "line": 55, "column": 34 }, "identifierName": "_scene" @@ -3268,15 +3173,15 @@ }, "property": { "type": "Identifier", - "start": 1363, - "end": 1369, + "start": 1343, + "end": 1349, "loc": { "start": { - "line": 56, + "line": 55, "column": 35 }, "end": { - "line": 56, + "line": 55, "column": 41 }, "identifierName": "canvas" @@ -3287,15 +3192,15 @@ }, "property": { "type": "Identifier", - "start": 1370, - "end": 1376, + "start": 1350, + "end": 1356, "loc": { "start": { - "line": 56, + "line": 55, "column": 42 }, "end": { - "line": 56, + "line": 55, "column": 48 }, "identifierName": "canvas" @@ -3310,44 +3215,44 @@ }, { "type": "VariableDeclaration", - "start": 1387, - "end": 1406, + "start": 1367, + "end": 1386, "loc": { "start": { - "line": 58, + "line": 57, "column": 8 }, "end": { - "line": 58, + "line": 57, "column": 27 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1393, - "end": 1405, + "start": 1373, + "end": 1385, "loc": { "start": { - "line": 58, + "line": 57, "column": 14 }, "end": { - "line": 58, + "line": 57, "column": 26 } }, "id": { "type": "Identifier", - "start": 1393, - "end": 1400, + "start": 1373, + "end": 1380, "loc": { "start": { - "line": 58, + "line": 57, "column": 14 }, "end": { - "line": 58, + "line": 57, "column": 21 }, "identifierName": "keyDown" @@ -3356,15 +3261,15 @@ }, "init": { "type": "ArrayExpression", - "start": 1403, - "end": 1405, + "start": 1383, + "end": 1385, "loc": { "start": { - "line": 58, + "line": 57, "column": 24 }, "end": { - "line": 58, + "line": 57, "column": 26 } }, @@ -3376,57 +3281,57 @@ }, { "type": "ExpressionStatement", - "start": 1416, - "end": 1715, + "start": 1396, + "end": 1695, "loc": { "start": { - "line": 60, + "line": 59, "column": 8 }, "end": { - "line": 66, + "line": 65, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 1416, - "end": 1714, + "start": 1396, + "end": 1694, "loc": { "start": { - "line": 60, + "line": 59, "column": 8 }, "end": { - "line": 66, + "line": 65, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 1416, - "end": 1441, + "start": 1396, + "end": 1421, "loc": { "start": { - "line": 60, + "line": 59, "column": 8 }, "end": { - "line": 60, + "line": 59, "column": 33 } }, "object": { "type": "Identifier", - "start": 1416, - "end": 1424, + "start": 1396, + "end": 1404, "loc": { "start": { - "line": 60, + "line": 59, "column": 8 }, "end": { - "line": 60, + "line": 59, "column": 16 }, "identifierName": "document" @@ -3435,15 +3340,15 @@ }, "property": { "type": "Identifier", - "start": 1425, - "end": 1441, + "start": 1405, + "end": 1421, "loc": { "start": { - "line": 60, + "line": 59, "column": 17 }, "end": { - "line": 60, + "line": 59, "column": 33 }, "identifierName": "addEventListener" @@ -3455,15 +3360,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 1442, - "end": 1451, + "start": 1422, + "end": 1431, "loc": { "start": { - "line": 60, + "line": 59, "column": 34 }, "end": { - "line": 60, + "line": 59, "column": 43 } }, @@ -3475,59 +3380,59 @@ }, { "type": "AssignmentExpression", - "start": 1453, - "end": 1713, + "start": 1433, + "end": 1693, "loc": { "start": { - "line": 60, + "line": 59, "column": 45 }, "end": { - "line": 66, + "line": 65, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 1453, - "end": 1481, + "start": 1433, + "end": 1461, "loc": { "start": { - "line": 60, + "line": 59, "column": 45 }, "end": { - "line": 60, + "line": 59, "column": 73 } }, "object": { "type": "ThisExpression", - "start": 1453, - "end": 1457, + "start": 1433, + "end": 1437, "loc": { "start": { - "line": 60, + "line": 59, "column": 45 }, "end": { - "line": 60, + "line": 59, "column": 49 } } }, "property": { "type": "Identifier", - "start": 1458, - "end": 1481, + "start": 1438, + "end": 1461, "loc": { "start": { - "line": 60, + "line": 59, "column": 50 }, "end": { - "line": 60, + "line": 59, "column": 73 }, "identifierName": "_documentKeyDownHandler" @@ -3538,15 +3443,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 1484, - "end": 1713, + "start": 1464, + "end": 1693, "loc": { "start": { - "line": 60, + "line": 59, "column": 76 }, "end": { - "line": 66, + "line": 65, "column": 9 } }, @@ -3557,15 +3462,15 @@ "params": [ { "type": "Identifier", - "start": 1485, - "end": 1486, + "start": 1465, + "end": 1466, "loc": { "start": { - "line": 60, + "line": 59, "column": 77 }, "end": { - "line": 60, + "line": 59, "column": 78 }, "identifierName": "e" @@ -3575,58 +3480,58 @@ ], "body": { "type": "BlockStatement", - "start": 1491, - "end": 1713, + "start": 1471, + "end": 1693, "loc": { "start": { - "line": 60, + "line": 59, "column": 83 }, "end": { - "line": 66, + "line": 65, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 1505, - "end": 1627, + "start": 1485, + "end": 1607, "loc": { "start": { - "line": 61, + "line": 60, "column": 12 }, "end": { - "line": 63, + "line": 62, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 1509, - "end": 1586, + "start": 1489, + "end": 1566, "loc": { "start": { - "line": 61, + "line": 60, "column": 16 }, "end": { - "line": 61, + "line": 60, "column": 93 } }, "left": { "type": "UnaryExpression", - "start": 1509, - "end": 1552, + "start": 1489, + "end": 1532, "loc": { "start": { - "line": 61, + "line": 60, "column": 16 }, "end": { - "line": 61, + "line": 60, "column": 59 } }, @@ -3634,43 +3539,43 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 1511, - "end": 1551, + "start": 1491, + "end": 1531, "loc": { "start": { - "line": 61, + "line": 60, "column": 18 }, "end": { - "line": 61, + "line": 60, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 1511, - "end": 1525, + "start": 1491, + "end": 1505, "loc": { "start": { - "line": 61, + "line": 60, "column": 18 }, "end": { - "line": 61, + "line": 60, "column": 32 } }, "object": { "type": "Identifier", - "start": 1511, - "end": 1518, + "start": 1491, + "end": 1498, "loc": { "start": { - "line": 61, + "line": 60, "column": 18 }, "end": { - "line": 61, + "line": 60, "column": 25 }, "identifierName": "configs" @@ -3679,15 +3584,15 @@ }, "property": { "type": "Identifier", - "start": 1519, - "end": 1525, + "start": 1499, + "end": 1505, "loc": { "start": { - "line": 61, + "line": 60, "column": 26 }, "end": { - "line": 61, + "line": 60, "column": 32 }, "identifierName": "active" @@ -3699,29 +3604,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 1529, - "end": 1551, + "start": 1509, + "end": 1531, "loc": { "start": { - "line": 61, + "line": 60, "column": 36 }, "end": { - "line": 61, + "line": 60, "column": 58 } }, "object": { "type": "Identifier", - "start": 1529, - "end": 1536, + "start": 1509, + "end": 1516, "loc": { "start": { - "line": 61, + "line": 60, "column": 36 }, "end": { - "line": 61, + "line": 60, "column": 43 }, "identifierName": "configs" @@ -3730,15 +3635,15 @@ }, "property": { "type": "Identifier", - "start": 1537, - "end": 1551, + "start": 1517, + "end": 1531, "loc": { "start": { - "line": 61, + "line": 60, "column": 44 }, "end": { - "line": 61, + "line": 60, "column": 58 }, "identifierName": "pointerEnabled" @@ -3749,7 +3654,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 1510 + "parenStart": 1490 } }, "extra": { @@ -3759,15 +3664,15 @@ "operator": "||", "right": { "type": "UnaryExpression", - "start": 1557, - "end": 1585, + "start": 1537, + "end": 1565, "loc": { "start": { - "line": 61, + "line": 60, "column": 64 }, "end": { - "line": 61, + "line": 60, "column": 92 } }, @@ -3775,43 +3680,43 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 1558, - "end": 1585, + "start": 1538, + "end": 1565, "loc": { "start": { - "line": 61, + "line": 60, "column": 65 }, "end": { - "line": 61, + "line": 60, "column": 92 } }, "object": { "type": "MemberExpression", - "start": 1558, - "end": 1569, + "start": 1538, + "end": 1549, "loc": { "start": { - "line": 61, + "line": 60, "column": 65 }, "end": { - "line": 61, + "line": 60, "column": 76 } }, "object": { "type": "Identifier", - "start": 1558, - "end": 1563, + "start": 1538, + "end": 1543, "loc": { "start": { - "line": 61, + "line": 60, "column": 65 }, "end": { - "line": 61, + "line": 60, "column": 70 }, "identifierName": "scene" @@ -3820,15 +3725,15 @@ }, "property": { "type": "Identifier", - "start": 1564, - "end": 1569, + "start": 1544, + "end": 1549, "loc": { "start": { - "line": 61, + "line": 60, "column": 71 }, "end": { - "line": 61, + "line": 60, "column": 76 }, "identifierName": "input" @@ -3839,15 +3744,15 @@ }, "property": { "type": "Identifier", - "start": 1570, - "end": 1585, + "start": 1550, + "end": 1565, "loc": { "start": { - "line": 61, + "line": 60, "column": 77 }, "end": { - "line": 61, + "line": 60, "column": 92 }, "identifierName": "keyboardEnabled" @@ -3859,36 +3764,36 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 1556 + "parenStart": 1536 } } }, "consequent": { "type": "BlockStatement", - "start": 1588, - "end": 1627, + "start": 1568, + "end": 1607, "loc": { "start": { - "line": 61, + "line": 60, "column": 95 }, "end": { - "line": 63, + "line": 62, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 1606, - "end": 1613, + "start": 1586, + "end": 1593, "loc": { "start": { - "line": 62, + "line": 61, "column": 16 }, "end": { - "line": 62, + "line": 61, "column": 23 } }, @@ -3901,44 +3806,44 @@ }, { "type": "VariableDeclaration", - "start": 1640, - "end": 1666, + "start": 1620, + "end": 1646, "loc": { "start": { - "line": 64, + "line": 63, "column": 12 }, "end": { - "line": 64, + "line": 63, "column": 38 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1646, - "end": 1665, + "start": 1626, + "end": 1645, "loc": { "start": { - "line": 64, + "line": 63, "column": 18 }, "end": { - "line": 64, + "line": 63, "column": 37 } }, "id": { "type": "Identifier", - "start": 1646, - "end": 1653, + "start": 1626, + "end": 1633, "loc": { "start": { - "line": 64, + "line": 63, "column": 18 }, "end": { - "line": 64, + "line": 63, "column": 25 }, "identifierName": "keyCode" @@ -3947,29 +3852,29 @@ }, "init": { "type": "MemberExpression", - "start": 1656, - "end": 1665, + "start": 1636, + "end": 1645, "loc": { "start": { - "line": 64, + "line": 63, "column": 28 }, "end": { - "line": 64, + "line": 63, "column": 37 } }, "object": { "type": "Identifier", - "start": 1656, - "end": 1657, + "start": 1636, + "end": 1637, "loc": { "start": { - "line": 64, + "line": 63, "column": 28 }, "end": { - "line": 64, + "line": 63, "column": 29 }, "identifierName": "e" @@ -3978,15 +3883,15 @@ }, "property": { "type": "Identifier", - "start": 1658, - "end": 1665, + "start": 1638, + "end": 1645, "loc": { "start": { - "line": 64, + "line": 63, "column": 30 }, "end": { - "line": 64, + "line": 63, "column": 37 }, "identifierName": "keyCode" @@ -4001,58 +3906,58 @@ }, { "type": "ExpressionStatement", - "start": 1679, - "end": 1703, + "start": 1659, + "end": 1683, "loc": { "start": { - "line": 65, + "line": 64, "column": 12 }, "end": { - "line": 65, + "line": 64, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 1679, - "end": 1702, + "start": 1659, + "end": 1682, "loc": { "start": { - "line": 65, + "line": 64, "column": 12 }, "end": { - "line": 65, + "line": 64, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 1679, - "end": 1695, + "start": 1659, + "end": 1675, "loc": { "start": { - "line": 65, + "line": 64, "column": 12 }, "end": { - "line": 65, + "line": 64, "column": 28 } }, "object": { "type": "Identifier", - "start": 1679, - "end": 1686, + "start": 1659, + "end": 1666, "loc": { "start": { - "line": 65, + "line": 64, "column": 12 }, "end": { - "line": 65, + "line": 64, "column": 19 }, "identifierName": "keyDown" @@ -4061,15 +3966,15 @@ }, "property": { "type": "Identifier", - "start": 1687, - "end": 1694, + "start": 1667, + "end": 1674, "loc": { "start": { - "line": 65, + "line": 64, "column": 20 }, "end": { - "line": 65, + "line": 64, "column": 27 }, "identifierName": "keyCode" @@ -4080,15 +3985,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 1698, - "end": 1702, + "start": 1678, + "end": 1682, "loc": { "start": { - "line": 65, + "line": 64, "column": 31 }, "end": { - "line": 65, + "line": 64, "column": 35 } }, @@ -4106,57 +4011,57 @@ }, { "type": "ExpressionStatement", - "start": 1725, - "end": 2021, + "start": 1705, + "end": 2001, "loc": { "start": { - "line": 68, + "line": 67, "column": 8 }, "end": { - "line": 74, + "line": 73, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 1725, - "end": 2020, + "start": 1705, + "end": 2000, "loc": { "start": { - "line": 68, + "line": 67, "column": 8 }, "end": { - "line": 74, + "line": 73, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 1725, - "end": 1750, + "start": 1705, + "end": 1730, "loc": { "start": { - "line": 68, + "line": 67, "column": 8 }, "end": { - "line": 68, + "line": 67, "column": 33 } }, "object": { "type": "Identifier", - "start": 1725, - "end": 1733, + "start": 1705, + "end": 1713, "loc": { "start": { - "line": 68, + "line": 67, "column": 8 }, "end": { - "line": 68, + "line": 67, "column": 16 }, "identifierName": "document" @@ -4165,15 +4070,15 @@ }, "property": { "type": "Identifier", - "start": 1734, - "end": 1750, + "start": 1714, + "end": 1730, "loc": { "start": { - "line": 68, + "line": 67, "column": 17 }, "end": { - "line": 68, + "line": 67, "column": 33 }, "identifierName": "addEventListener" @@ -4185,15 +4090,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 1751, - "end": 1758, + "start": 1731, + "end": 1738, "loc": { "start": { - "line": 68, + "line": 67, "column": 34 }, "end": { - "line": 68, + "line": 67, "column": 41 } }, @@ -4205,59 +4110,59 @@ }, { "type": "AssignmentExpression", - "start": 1760, - "end": 2019, + "start": 1740, + "end": 1999, "loc": { "start": { - "line": 68, + "line": 67, "column": 43 }, "end": { - "line": 74, + "line": 73, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 1760, - "end": 1786, + "start": 1740, + "end": 1766, "loc": { "start": { - "line": 68, + "line": 67, "column": 43 }, "end": { - "line": 68, + "line": 67, "column": 69 } }, "object": { "type": "ThisExpression", - "start": 1760, - "end": 1764, + "start": 1740, + "end": 1744, "loc": { "start": { - "line": 68, + "line": 67, "column": 43 }, "end": { - "line": 68, + "line": 67, "column": 47 } } }, "property": { "type": "Identifier", - "start": 1765, - "end": 1786, + "start": 1745, + "end": 1766, "loc": { "start": { - "line": 68, + "line": 67, "column": 48 }, "end": { - "line": 68, + "line": 67, "column": 69 }, "identifierName": "_documentKeyUpHandler" @@ -4268,15 +4173,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 1789, - "end": 2019, + "start": 1769, + "end": 1999, "loc": { "start": { - "line": 68, + "line": 67, "column": 72 }, "end": { - "line": 74, + "line": 73, "column": 9 } }, @@ -4287,15 +4192,15 @@ "params": [ { "type": "Identifier", - "start": 1790, - "end": 1791, + "start": 1770, + "end": 1771, "loc": { "start": { - "line": 68, + "line": 67, "column": 73 }, "end": { - "line": 68, + "line": 67, "column": 74 }, "identifierName": "e" @@ -4305,58 +4210,58 @@ ], "body": { "type": "BlockStatement", - "start": 1796, - "end": 2019, + "start": 1776, + "end": 1999, "loc": { "start": { - "line": 68, + "line": 67, "column": 79 }, "end": { - "line": 74, + "line": 73, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 1810, - "end": 1932, + "start": 1790, + "end": 1912, "loc": { "start": { - "line": 69, + "line": 68, "column": 12 }, "end": { - "line": 71, + "line": 70, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 1814, - "end": 1891, + "start": 1794, + "end": 1871, "loc": { "start": { - "line": 69, + "line": 68, "column": 16 }, "end": { - "line": 69, + "line": 68, "column": 93 } }, "left": { "type": "UnaryExpression", - "start": 1814, - "end": 1857, + "start": 1794, + "end": 1837, "loc": { "start": { - "line": 69, + "line": 68, "column": 16 }, "end": { - "line": 69, + "line": 68, "column": 59 } }, @@ -4364,43 +4269,43 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 1816, - "end": 1856, + "start": 1796, + "end": 1836, "loc": { "start": { - "line": 69, + "line": 68, "column": 18 }, "end": { - "line": 69, + "line": 68, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 1816, - "end": 1830, + "start": 1796, + "end": 1810, "loc": { "start": { - "line": 69, + "line": 68, "column": 18 }, "end": { - "line": 69, + "line": 68, "column": 32 } }, "object": { "type": "Identifier", - "start": 1816, - "end": 1823, + "start": 1796, + "end": 1803, "loc": { "start": { - "line": 69, + "line": 68, "column": 18 }, "end": { - "line": 69, + "line": 68, "column": 25 }, "identifierName": "configs" @@ -4409,15 +4314,15 @@ }, "property": { "type": "Identifier", - "start": 1824, - "end": 1830, + "start": 1804, + "end": 1810, "loc": { "start": { - "line": 69, + "line": 68, "column": 26 }, "end": { - "line": 69, + "line": 68, "column": 32 }, "identifierName": "active" @@ -4429,29 +4334,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 1834, - "end": 1856, + "start": 1814, + "end": 1836, "loc": { "start": { - "line": 69, + "line": 68, "column": 36 }, "end": { - "line": 69, + "line": 68, "column": 58 } }, "object": { "type": "Identifier", - "start": 1834, - "end": 1841, + "start": 1814, + "end": 1821, "loc": { "start": { - "line": 69, + "line": 68, "column": 36 }, "end": { - "line": 69, + "line": 68, "column": 43 }, "identifierName": "configs" @@ -4460,15 +4365,15 @@ }, "property": { "type": "Identifier", - "start": 1842, - "end": 1856, + "start": 1822, + "end": 1836, "loc": { "start": { - "line": 69, + "line": 68, "column": 44 }, "end": { - "line": 69, + "line": 68, "column": 58 }, "identifierName": "pointerEnabled" @@ -4479,7 +4384,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 1815 + "parenStart": 1795 } }, "extra": { @@ -4489,15 +4394,15 @@ "operator": "||", "right": { "type": "UnaryExpression", - "start": 1862, - "end": 1890, + "start": 1842, + "end": 1870, "loc": { "start": { - "line": 69, + "line": 68, "column": 64 }, "end": { - "line": 69, + "line": 68, "column": 92 } }, @@ -4505,43 +4410,43 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 1863, - "end": 1890, + "start": 1843, + "end": 1870, "loc": { "start": { - "line": 69, + "line": 68, "column": 65 }, "end": { - "line": 69, + "line": 68, "column": 92 } }, "object": { "type": "MemberExpression", - "start": 1863, - "end": 1874, + "start": 1843, + "end": 1854, "loc": { "start": { - "line": 69, + "line": 68, "column": 65 }, "end": { - "line": 69, + "line": 68, "column": 76 } }, "object": { "type": "Identifier", - "start": 1863, - "end": 1868, + "start": 1843, + "end": 1848, "loc": { "start": { - "line": 69, + "line": 68, "column": 65 }, "end": { - "line": 69, + "line": 68, "column": 70 }, "identifierName": "scene" @@ -4550,15 +4455,15 @@ }, "property": { "type": "Identifier", - "start": 1869, - "end": 1874, + "start": 1849, + "end": 1854, "loc": { "start": { - "line": 69, + "line": 68, "column": 71 }, "end": { - "line": 69, + "line": 68, "column": 76 }, "identifierName": "input" @@ -4569,15 +4474,15 @@ }, "property": { "type": "Identifier", - "start": 1875, - "end": 1890, + "start": 1855, + "end": 1870, "loc": { "start": { - "line": 69, + "line": 68, "column": 77 }, "end": { - "line": 69, + "line": 68, "column": 92 }, "identifierName": "keyboardEnabled" @@ -4589,36 +4494,36 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 1861 + "parenStart": 1841 } } }, "consequent": { "type": "BlockStatement", - "start": 1893, - "end": 1932, + "start": 1873, + "end": 1912, "loc": { "start": { - "line": 69, + "line": 68, "column": 95 }, "end": { - "line": 71, + "line": 70, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 1911, - "end": 1918, + "start": 1891, + "end": 1898, "loc": { "start": { - "line": 70, + "line": 69, "column": 16 }, "end": { - "line": 70, + "line": 69, "column": 23 } }, @@ -4631,44 +4536,44 @@ }, { "type": "VariableDeclaration", - "start": 1945, - "end": 1971, + "start": 1925, + "end": 1951, "loc": { "start": { - "line": 72, + "line": 71, "column": 12 }, "end": { - "line": 72, + "line": 71, "column": 38 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1951, - "end": 1970, + "start": 1931, + "end": 1950, "loc": { "start": { - "line": 72, + "line": 71, "column": 18 }, "end": { - "line": 72, + "line": 71, "column": 37 } }, "id": { "type": "Identifier", - "start": 1951, - "end": 1958, + "start": 1931, + "end": 1938, "loc": { "start": { - "line": 72, + "line": 71, "column": 18 }, "end": { - "line": 72, + "line": 71, "column": 25 }, "identifierName": "keyCode" @@ -4677,29 +4582,29 @@ }, "init": { "type": "MemberExpression", - "start": 1961, - "end": 1970, + "start": 1941, + "end": 1950, "loc": { "start": { - "line": 72, + "line": 71, "column": 28 }, "end": { - "line": 72, + "line": 71, "column": 37 } }, "object": { "type": "Identifier", - "start": 1961, - "end": 1962, + "start": 1941, + "end": 1942, "loc": { "start": { - "line": 72, + "line": 71, "column": 28 }, "end": { - "line": 72, + "line": 71, "column": 29 }, "identifierName": "e" @@ -4708,15 +4613,15 @@ }, "property": { "type": "Identifier", - "start": 1963, - "end": 1970, + "start": 1943, + "end": 1950, "loc": { "start": { - "line": 72, + "line": 71, "column": 30 }, "end": { - "line": 72, + "line": 71, "column": 37 }, "identifierName": "keyCode" @@ -4731,58 +4636,58 @@ }, { "type": "ExpressionStatement", - "start": 1984, - "end": 2009, + "start": 1964, + "end": 1989, "loc": { "start": { - "line": 73, + "line": 72, "column": 12 }, "end": { - "line": 73, + "line": 72, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 1984, - "end": 2008, + "start": 1964, + "end": 1988, "loc": { "start": { - "line": 73, + "line": 72, "column": 12 }, "end": { - "line": 73, + "line": 72, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 1984, - "end": 2000, + "start": 1964, + "end": 1980, "loc": { "start": { - "line": 73, + "line": 72, "column": 12 }, "end": { - "line": 73, + "line": 72, "column": 28 } }, "object": { "type": "Identifier", - "start": 1984, - "end": 1991, + "start": 1964, + "end": 1971, "loc": { "start": { - "line": 73, + "line": 72, "column": 12 }, "end": { - "line": 73, + "line": 72, "column": 19 }, "identifierName": "keyDown" @@ -4791,15 +4696,15 @@ }, "property": { "type": "Identifier", - "start": 1992, - "end": 1999, + "start": 1972, + "end": 1979, "loc": { "start": { - "line": 73, + "line": 72, "column": 20 }, "end": { - "line": 73, + "line": 72, "column": 27 }, "identifierName": "keyCode" @@ -4810,15 +4715,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 2003, - "end": 2008, + "start": 1983, + "end": 1988, "loc": { "start": { - "line": 73, + "line": 72, "column": 31 }, "end": { - "line": 73, + "line": 72, "column": 36 } }, @@ -4836,29 +4741,29 @@ }, { "type": "FunctionDeclaration", - "start": 2031, - "end": 2235, + "start": 2011, + "end": 2215, "loc": { "start": { - "line": 76, + "line": 75, "column": 8 }, "end": { - "line": 82, + "line": 81, "column": 9 } }, "id": { "type": "Identifier", - "start": 2040, - "end": 2057, + "start": 2020, + "end": 2037, "loc": { "start": { - "line": 76, + "line": 75, "column": 17 }, "end": { - "line": 76, + "line": 75, "column": 34 }, "identifierName": "setMousedownState" @@ -4871,29 +4776,29 @@ "params": [ { "type": "AssignmentPattern", - "start": 2058, - "end": 2069, + "start": 2038, + "end": 2049, "loc": { "start": { - "line": 76, + "line": 75, "column": 35 }, "end": { - "line": 76, + "line": 75, "column": 46 } }, "left": { "type": "Identifier", - "start": 2058, - "end": 2062, + "start": 2038, + "end": 2042, "loc": { "start": { - "line": 76, + "line": 75, "column": 35 }, "end": { - "line": 76, + "line": 75, "column": 39 }, "identifierName": "pick" @@ -4902,15 +4807,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 2065, - "end": 2069, + "start": 2045, + "end": 2049, "loc": { "start": { - "line": 76, + "line": 75, "column": 42 }, "end": { - "line": 76, + "line": 75, "column": 46 } }, @@ -4920,87 +4825,87 @@ ], "body": { "type": "BlockStatement", - "start": 2071, - "end": 2235, + "start": 2051, + "end": 2215, "loc": { "start": { - "line": 76, + "line": 75, "column": 48 }, "end": { - "line": 82, + "line": 81, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 2085, - "end": 2114, + "start": 2065, + "end": 2094, "loc": { "start": { - "line": 77, + "line": 76, "column": 12 }, "end": { - "line": 77, + "line": 76, "column": 41 } }, "expression": { "type": "AssignmentExpression", - "start": 2085, - "end": 2113, + "start": 2065, + "end": 2093, "loc": { "start": { - "line": 77, + "line": 76, "column": 12 }, "end": { - "line": 77, + "line": 76, "column": 40 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 2085, - "end": 2104, + "start": 2065, + "end": 2084, "loc": { "start": { - "line": 77, + "line": 76, "column": 12 }, "end": { - "line": 77, + "line": 76, "column": 31 } }, "object": { "type": "MemberExpression", - "start": 2085, - "end": 2097, + "start": 2065, + "end": 2077, "loc": { "start": { - "line": 77, + "line": 76, "column": 12 }, "end": { - "line": 77, + "line": 76, "column": 24 } }, "object": { "type": "Identifier", - "start": 2085, - "end": 2091, + "start": 2065, + "end": 2071, "loc": { "start": { - "line": 77, + "line": 76, "column": 12 }, "end": { - "line": 77, + "line": 76, "column": 18 }, "identifierName": "canvas" @@ -5009,15 +4914,15 @@ }, "property": { "type": "Identifier", - "start": 2092, - "end": 2097, + "start": 2072, + "end": 2077, "loc": { "start": { - "line": 77, + "line": 76, "column": 19 }, "end": { - "line": 77, + "line": 76, "column": 24 }, "identifierName": "style" @@ -5028,15 +4933,15 @@ }, "property": { "type": "Identifier", - "start": 2098, - "end": 2104, + "start": 2078, + "end": 2084, "loc": { "start": { - "line": 77, + "line": 76, "column": 25 }, "end": { - "line": 77, + "line": 76, "column": 31 }, "identifierName": "cursor" @@ -5047,15 +4952,15 @@ }, "right": { "type": "StringLiteral", - "start": 2107, - "end": 2113, + "start": 2087, + "end": 2093, "loc": { "start": { - "line": 77, + "line": 76, "column": 34 }, "end": { - "line": 77, + "line": 76, "column": 40 } }, @@ -5069,43 +4974,43 @@ }, { "type": "ExpressionStatement", - "start": 2127, - "end": 2151, + "start": 2107, + "end": 2131, "loc": { "start": { - "line": 78, + "line": 77, "column": 12 }, "end": { - "line": 78, + "line": 77, "column": 36 } }, "expression": { "type": "CallExpression", - "start": 2127, - "end": 2150, + "start": 2107, + "end": 2130, "loc": { "start": { - "line": 78, + "line": 77, "column": 12 }, "end": { - "line": 78, + "line": 77, "column": 35 } }, "callee": { "type": "Identifier", - "start": 2127, - "end": 2148, + "start": 2107, + "end": 2128, "loc": { "start": { - "line": 78, + "line": 77, "column": 12 }, "end": { - "line": 78, + "line": 77, "column": 33 }, "identifierName": "setMousedownPositions" @@ -5117,29 +5022,29 @@ }, { "type": "IfStatement", - "start": 2164, - "end": 2225, + "start": 2144, + "end": 2205, "loc": { "start": { - "line": 79, + "line": 78, "column": 12 }, "end": { - "line": 81, + "line": 80, "column": 13 } }, "test": { "type": "Identifier", - "start": 2168, - "end": 2172, + "start": 2148, + "end": 2152, "loc": { "start": { - "line": 79, + "line": 78, "column": 16 }, "end": { - "line": 79, + "line": 78, "column": 20 }, "identifierName": "pick" @@ -5148,58 +5053,58 @@ }, "consequent": { "type": "BlockStatement", - "start": 2174, - "end": 2225, + "start": 2154, + "end": 2205, "loc": { "start": { - "line": 79, + "line": 78, "column": 22 }, "end": { - "line": 81, + "line": 80, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 2192, - "end": 2211, + "start": 2172, + "end": 2191, "loc": { "start": { - "line": 80, + "line": 79, "column": 16 }, "end": { - "line": 80, + "line": 79, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 2192, - "end": 2210, + "start": 2172, + "end": 2190, "loc": { "start": { - "line": 80, + "line": 79, "column": 16 }, "end": { - "line": 80, + "line": 79, "column": 34 } }, "callee": { "type": "Identifier", - "start": 2192, - "end": 2208, + "start": 2172, + "end": 2188, "loc": { "start": { - "line": 80, + "line": 79, "column": 16 }, "end": { - "line": 80, + "line": 79, "column": 32 }, "identifierName": "setMousedownPick" @@ -5220,29 +5125,29 @@ }, { "type": "FunctionDeclaration", - "start": 2245, - "end": 2550, + "start": 2225, + "end": 2530, "loc": { "start": { - "line": 84, + "line": 83, "column": 8 }, "end": { - "line": 92, + "line": 91, "column": 9 } }, "id": { "type": "Identifier", - "start": 2254, - "end": 2275, + "start": 2234, + "end": 2255, "loc": { "start": { - "line": 84, + "line": 83, "column": 17 }, "end": { - "line": 84, + "line": 83, "column": 38 }, "identifierName": "setMousedownPositions" @@ -5255,59 +5160,59 @@ "params": [], "body": { "type": "BlockStatement", - "start": 2278, - "end": 2550, + "start": 2258, + "end": 2530, "loc": { "start": { - "line": 84, + "line": 83, "column": 41 }, "end": { - "line": 92, + "line": 91, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 2292, - "end": 2309, + "start": 2272, + "end": 2289, "loc": { "start": { - "line": 85, + "line": 84, "column": 12 }, "end": { - "line": 85, + "line": 84, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 2292, - "end": 2308, + "start": 2272, + "end": 2288, "loc": { "start": { - "line": 85, + "line": 84, "column": 12 }, "end": { - "line": 85, + "line": 84, "column": 28 } }, "operator": "=", "left": { "type": "Identifier", - "start": 2292, - "end": 2304, + "start": 2272, + "end": 2284, "loc": { "start": { - "line": 85, + "line": 84, "column": 12 }, "end": { - "line": 85, + "line": 84, "column": 24 }, "identifierName": "xRotateDelta" @@ -5316,15 +5221,15 @@ }, "right": { "type": "NumericLiteral", - "start": 2307, - "end": 2308, + "start": 2287, + "end": 2288, "loc": { "start": { - "line": 85, + "line": 84, "column": 27 }, "end": { - "line": 85, + "line": 84, "column": 28 } }, @@ -5338,44 +5243,44 @@ }, { "type": "ExpressionStatement", - "start": 2322, - "end": 2339, + "start": 2302, + "end": 2319, "loc": { "start": { - "line": 86, + "line": 85, "column": 12 }, "end": { - "line": 86, + "line": 85, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 2322, - "end": 2338, + "start": 2302, + "end": 2318, "loc": { "start": { - "line": 86, + "line": 85, "column": 12 }, "end": { - "line": 86, + "line": 85, "column": 28 } }, "operator": "=", "left": { "type": "Identifier", - "start": 2322, - "end": 2334, + "start": 2302, + "end": 2314, "loc": { "start": { - "line": 86, + "line": 85, "column": 12 }, "end": { - "line": 86, + "line": 85, "column": 24 }, "identifierName": "yRotateDelta" @@ -5384,15 +5289,15 @@ }, "right": { "type": "NumericLiteral", - "start": 2337, - "end": 2338, + "start": 2317, + "end": 2318, "loc": { "start": { - "line": 86, + "line": 85, "column": 27 }, "end": { - "line": 86, + "line": 85, "column": 28 } }, @@ -5406,44 +5311,44 @@ }, { "type": "ExpressionStatement", - "start": 2353, - "end": 2388, + "start": 2333, + "end": 2368, "loc": { "start": { - "line": 88, + "line": 87, "column": 12 }, "end": { - "line": 88, + "line": 87, "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 2353, - "end": 2387, + "start": 2333, + "end": 2367, "loc": { "start": { - "line": 88, + "line": 87, "column": 12 }, "end": { - "line": 88, + "line": 87, "column": 46 } }, "operator": "=", "left": { "type": "Identifier", - "start": 2353, - "end": 2358, + "start": 2333, + "end": 2338, "loc": { "start": { - "line": 88, + "line": 87, "column": 12 }, "end": { - "line": 88, + "line": 87, "column": 17 }, "identifierName": "lastX" @@ -5452,43 +5357,43 @@ }, "right": { "type": "MemberExpression", - "start": 2361, - "end": 2387, + "start": 2341, + "end": 2367, "loc": { "start": { - "line": 88, + "line": 87, "column": 20 }, "end": { - "line": 88, + "line": 87, "column": 46 } }, "object": { "type": "MemberExpression", - "start": 2361, - "end": 2384, + "start": 2341, + "end": 2364, "loc": { "start": { - "line": 88, + "line": 87, "column": 20 }, "end": { - "line": 88, + "line": 87, "column": 43 } }, "object": { "type": "Identifier", - "start": 2361, - "end": 2367, + "start": 2341, + "end": 2347, "loc": { "start": { - "line": 88, + "line": 87, "column": 20 }, "end": { - "line": 88, + "line": 87, "column": 26 }, "identifierName": "states" @@ -5497,15 +5402,15 @@ }, "property": { "type": "Identifier", - "start": 2368, - "end": 2384, + "start": 2348, + "end": 2364, "loc": { "start": { - "line": 88, + "line": 87, "column": 27 }, "end": { - "line": 88, + "line": 87, "column": 43 }, "identifierName": "pointerCanvasPos" @@ -5516,15 +5421,15 @@ }, "property": { "type": "NumericLiteral", - "start": 2385, - "end": 2386, + "start": 2365, + "end": 2366, "loc": { "start": { - "line": 88, + "line": 87, "column": 44 }, "end": { - "line": 88, + "line": 87, "column": 45 } }, @@ -5540,44 +5445,44 @@ }, { "type": "ExpressionStatement", - "start": 2401, - "end": 2436, + "start": 2381, + "end": 2416, "loc": { "start": { - "line": 89, + "line": 88, "column": 12 }, "end": { - "line": 89, + "line": 88, "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 2401, - "end": 2435, + "start": 2381, + "end": 2415, "loc": { "start": { - "line": 89, + "line": 88, "column": 12 }, "end": { - "line": 89, + "line": 88, "column": 46 } }, "operator": "=", "left": { "type": "Identifier", - "start": 2401, - "end": 2406, + "start": 2381, + "end": 2386, "loc": { "start": { - "line": 89, + "line": 88, "column": 12 }, "end": { - "line": 89, + "line": 88, "column": 17 }, "identifierName": "lastY" @@ -5586,43 +5491,43 @@ }, "right": { "type": "MemberExpression", - "start": 2409, - "end": 2435, + "start": 2389, + "end": 2415, "loc": { "start": { - "line": 89, + "line": 88, "column": 20 }, "end": { - "line": 89, + "line": 88, "column": 46 } }, "object": { "type": "MemberExpression", - "start": 2409, - "end": 2432, + "start": 2389, + "end": 2412, "loc": { "start": { - "line": 89, + "line": 88, "column": 20 }, "end": { - "line": 89, + "line": 88, "column": 43 } }, "object": { "type": "Identifier", - "start": 2409, - "end": 2415, + "start": 2389, + "end": 2395, "loc": { "start": { - "line": 89, + "line": 88, "column": 20 }, "end": { - "line": 89, + "line": 88, "column": 26 }, "identifierName": "states" @@ -5631,15 +5536,15 @@ }, "property": { "type": "Identifier", - "start": 2416, - "end": 2432, + "start": 2396, + "end": 2412, "loc": { "start": { - "line": 89, + "line": 88, "column": 27 }, "end": { - "line": 89, + "line": 88, "column": 43 }, "identifierName": "pointerCanvasPos" @@ -5650,15 +5555,15 @@ }, "property": { "type": "NumericLiteral", - "start": 2433, - "end": 2434, + "start": 2413, + "end": 2414, "loc": { "start": { - "line": 89, + "line": 88, "column": 44 }, "end": { - "line": 89, + "line": 88, "column": 45 } }, @@ -5674,44 +5579,44 @@ }, { "type": "ExpressionStatement", - "start": 2449, - "end": 2488, + "start": 2429, + "end": 2468, "loc": { "start": { - "line": 90, + "line": 89, "column": 12 }, "end": { - "line": 90, + "line": 89, "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 2449, - "end": 2487, + "start": 2429, + "end": 2467, "loc": { "start": { - "line": 90, + "line": 89, "column": 12 }, "end": { - "line": 90, + "line": 89, "column": 50 } }, "operator": "=", "left": { "type": "Identifier", - "start": 2449, - "end": 2458, + "start": 2429, + "end": 2438, "loc": { "start": { - "line": 90, + "line": 89, "column": 12 }, "end": { - "line": 90, + "line": 89, "column": 21 }, "identifierName": "lastXDown" @@ -5720,43 +5625,43 @@ }, "right": { "type": "MemberExpression", - "start": 2461, - "end": 2487, + "start": 2441, + "end": 2467, "loc": { "start": { - "line": 90, + "line": 89, "column": 24 }, "end": { - "line": 90, + "line": 89, "column": 50 } }, "object": { "type": "MemberExpression", - "start": 2461, - "end": 2484, + "start": 2441, + "end": 2464, "loc": { "start": { - "line": 90, + "line": 89, "column": 24 }, "end": { - "line": 90, + "line": 89, "column": 47 } }, "object": { "type": "Identifier", - "start": 2461, - "end": 2467, + "start": 2441, + "end": 2447, "loc": { "start": { - "line": 90, + "line": 89, "column": 24 }, "end": { - "line": 90, + "line": 89, "column": 30 }, "identifierName": "states" @@ -5765,15 +5670,15 @@ }, "property": { "type": "Identifier", - "start": 2468, - "end": 2484, + "start": 2448, + "end": 2464, "loc": { "start": { - "line": 90, + "line": 89, "column": 31 }, "end": { - "line": 90, + "line": 89, "column": 47 }, "identifierName": "pointerCanvasPos" @@ -5784,15 +5689,15 @@ }, "property": { "type": "NumericLiteral", - "start": 2485, - "end": 2486, + "start": 2465, + "end": 2466, "loc": { "start": { - "line": 90, + "line": 89, "column": 48 }, "end": { - "line": 90, + "line": 89, "column": 49 } }, @@ -5808,44 +5713,44 @@ }, { "type": "ExpressionStatement", - "start": 2501, - "end": 2540, + "start": 2481, + "end": 2520, "loc": { "start": { - "line": 91, + "line": 90, "column": 12 }, "end": { - "line": 91, + "line": 90, "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 2501, - "end": 2539, + "start": 2481, + "end": 2519, "loc": { "start": { - "line": 91, + "line": 90, "column": 12 }, "end": { - "line": 91, + "line": 90, "column": 50 } }, "operator": "=", "left": { "type": "Identifier", - "start": 2501, - "end": 2510, + "start": 2481, + "end": 2490, "loc": { "start": { - "line": 91, + "line": 90, "column": 12 }, "end": { - "line": 91, + "line": 90, "column": 21 }, "identifierName": "lastYDown" @@ -5854,43 +5759,43 @@ }, "right": { "type": "MemberExpression", - "start": 2513, - "end": 2539, + "start": 2493, + "end": 2519, "loc": { "start": { - "line": 91, + "line": 90, "column": 24 }, "end": { - "line": 91, + "line": 90, "column": 50 } }, "object": { "type": "MemberExpression", - "start": 2513, - "end": 2536, + "start": 2493, + "end": 2516, "loc": { "start": { - "line": 91, + "line": 90, "column": 24 }, "end": { - "line": 91, + "line": 90, "column": 47 } }, "object": { "type": "Identifier", - "start": 2513, - "end": 2519, + "start": 2493, + "end": 2499, "loc": { "start": { - "line": 91, + "line": 90, "column": 24 }, "end": { - "line": 91, + "line": 90, "column": 30 }, "identifierName": "states" @@ -5899,15 +5804,15 @@ }, "property": { "type": "Identifier", - "start": 2520, - "end": 2536, + "start": 2500, + "end": 2516, "loc": { "start": { - "line": 91, + "line": 90, "column": 31 }, "end": { - "line": 91, + "line": 90, "column": 47 }, "identifierName": "pointerCanvasPos" @@ -5918,15 +5823,15 @@ }, "property": { "type": "NumericLiteral", - "start": 2537, - "end": 2538, + "start": 2517, + "end": 2518, "loc": { "start": { - "line": 91, + "line": 90, "column": 48 }, "end": { - "line": 91, + "line": 90, "column": 49 } }, @@ -5946,29 +5851,29 @@ }, { "type": "FunctionDeclaration", - "start": 2560, - "end": 3088, + "start": 2540, + "end": 3068, "loc": { "start": { - "line": 94, + "line": 93, "column": 8 }, "end": { - "line": 105, + "line": 104, "column": 9 } }, "id": { "type": "Identifier", - "start": 2569, - "end": 2585, + "start": 2549, + "end": 2565, "loc": { "start": { - "line": 94, + "line": 93, "column": 17 }, "end": { - "line": 94, + "line": 93, "column": 33 }, "identifierName": "setMousedownPick" @@ -5981,73 +5886,73 @@ "params": [], "body": { "type": "BlockStatement", - "start": 2588, - "end": 3088, + "start": 2568, + "end": 3068, "loc": { "start": { - "line": 94, + "line": 93, "column": 36 }, "end": { - "line": 105, + "line": 104, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 2602, - "end": 2657, + "start": 2582, + "end": 2637, "loc": { "start": { - "line": 95, + "line": 94, "column": 12 }, "end": { - "line": 95, + "line": 94, "column": 67 } }, "expression": { "type": "AssignmentExpression", - "start": 2602, - "end": 2656, + "start": 2582, + "end": 2636, "loc": { "start": { - "line": 95, + "line": 94, "column": 12 }, "end": { - "line": 95, + "line": 94, "column": 66 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 2602, - "end": 2630, + "start": 2582, + "end": 2610, "loc": { "start": { - "line": 95, + "line": 94, "column": 12 }, "end": { - "line": 95, + "line": 94, "column": 40 } }, "object": { "type": "Identifier", - "start": 2602, - "end": 2616, + "start": 2582, + "end": 2596, "loc": { "start": { - "line": 95, + "line": 94, "column": 12 }, "end": { - "line": 95, + "line": 94, "column": 26 }, "identifierName": "pickController" @@ -6056,15 +5961,15 @@ }, "property": { "type": "Identifier", - "start": 2617, - "end": 2630, + "start": 2597, + "end": 2610, "loc": { "start": { - "line": 95, + "line": 94, "column": 27 }, "end": { - "line": 95, + "line": 94, "column": 40 }, "identifierName": "pickCursorPos" @@ -6075,29 +5980,29 @@ }, "right": { "type": "MemberExpression", - "start": 2633, - "end": 2656, + "start": 2613, + "end": 2636, "loc": { "start": { - "line": 95, + "line": 94, "column": 43 }, "end": { - "line": 95, + "line": 94, "column": 66 } }, "object": { "type": "Identifier", - "start": 2633, - "end": 2639, + "start": 2613, + "end": 2619, "loc": { "start": { - "line": 95, + "line": 94, "column": 43 }, "end": { - "line": 95, + "line": 94, "column": 49 }, "identifierName": "states" @@ -6106,15 +6011,15 @@ }, "property": { "type": "Identifier", - "start": 2640, - "end": 2656, + "start": 2620, + "end": 2636, "loc": { "start": { - "line": 95, + "line": 94, "column": 50 }, "end": { - "line": 95, + "line": 94, "column": 66 }, "identifierName": "pointerCanvasPos" @@ -6127,58 +6032,58 @@ }, { "type": "ExpressionStatement", - "start": 2670, - "end": 2712, + "start": 2650, + "end": 2692, "loc": { "start": { - "line": 96, + "line": 95, "column": 12 }, "end": { - "line": 96, + "line": 95, "column": 54 } }, "expression": { "type": "AssignmentExpression", - "start": 2670, - "end": 2711, + "start": 2650, + "end": 2691, "loc": { "start": { - "line": 96, + "line": 95, "column": 12 }, "end": { - "line": 96, + "line": 95, "column": 53 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 2670, - "end": 2704, + "start": 2650, + "end": 2684, "loc": { "start": { - "line": 96, + "line": 95, "column": 12 }, "end": { - "line": 96, + "line": 95, "column": 46 } }, "object": { "type": "Identifier", - "start": 2670, - "end": 2684, + "start": 2650, + "end": 2664, "loc": { "start": { - "line": 96, + "line": 95, "column": 12 }, "end": { - "line": 96, + "line": 95, "column": 26 }, "identifierName": "pickController" @@ -6187,15 +6092,15 @@ }, "property": { "type": "Identifier", - "start": 2685, - "end": 2704, + "start": 2665, + "end": 2684, "loc": { "start": { - "line": 96, + "line": 95, "column": 27 }, "end": { - "line": 96, + "line": 95, "column": 46 }, "identifierName": "schedulePickSurface" @@ -6206,15 +6111,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 2707, - "end": 2711, + "start": 2687, + "end": 2691, "loc": { "start": { - "line": 96, + "line": 95, "column": 49 }, "end": { - "line": 96, + "line": 95, "column": 53 } }, @@ -6224,57 +6129,57 @@ }, { "type": "ExpressionStatement", - "start": 2725, - "end": 2749, + "start": 2705, + "end": 2729, "loc": { "start": { - "line": 97, + "line": 96, "column": 12 }, "end": { - "line": 97, + "line": 96, "column": 36 } }, "expression": { "type": "CallExpression", - "start": 2725, - "end": 2748, + "start": 2705, + "end": 2728, "loc": { "start": { - "line": 97, + "line": 96, "column": 12 }, "end": { - "line": 97, + "line": 96, "column": 35 } }, "callee": { "type": "MemberExpression", - "start": 2725, - "end": 2746, + "start": 2705, + "end": 2726, "loc": { "start": { - "line": 97, + "line": 96, "column": 12 }, "end": { - "line": 97, + "line": 96, "column": 33 } }, "object": { "type": "Identifier", - "start": 2725, - "end": 2739, + "start": 2705, + "end": 2719, "loc": { "start": { - "line": 97, + "line": 96, "column": 12 }, "end": { - "line": 97, + "line": 96, "column": 26 }, "identifierName": "pickController" @@ -6283,15 +6188,15 @@ }, "property": { "type": "Identifier", - "start": 2740, - "end": 2746, + "start": 2720, + "end": 2726, "loc": { "start": { - "line": 97, + "line": 96, "column": 27 }, "end": { - "line": 97, + "line": 96, "column": 33 }, "identifierName": "update" @@ -6305,85 +6210,85 @@ }, { "type": "IfStatement", - "start": 2763, - "end": 3078, + "start": 2743, + "end": 3058, "loc": { "start": { - "line": 99, + "line": 98, "column": 12 }, "end": { - "line": 104, + "line": 103, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 2767, - "end": 2887, + "start": 2747, + "end": 2867, "loc": { "start": { - "line": 99, + "line": 98, "column": 16 }, "end": { - "line": 99, + "line": 98, "column": 136 } }, "left": { "type": "LogicalExpression", - "start": 2767, - "end": 2849, + "start": 2747, + "end": 2829, "loc": { "start": { - "line": 99, + "line": 98, "column": 16 }, "end": { - "line": 99, + "line": 98, "column": 98 } }, "left": { "type": "LogicalExpression", - "start": 2767, - "end": 2820, + "start": 2747, + "end": 2800, "loc": { "start": { - "line": 99, + "line": 98, "column": 16 }, "end": { - "line": 99, + "line": 98, "column": 69 } }, "left": { "type": "MemberExpression", - "start": 2767, - "end": 2788, + "start": 2747, + "end": 2768, "loc": { "start": { - "line": 99, + "line": 98, "column": 16 }, "end": { - "line": 99, + "line": 98, "column": 37 } }, "object": { "type": "Identifier", - "start": 2767, - "end": 2781, + "start": 2747, + "end": 2761, "loc": { "start": { - "line": 99, + "line": 98, "column": 16 }, "end": { - "line": 99, + "line": 98, "column": 30 }, "identifierName": "pickController" @@ -6392,15 +6297,15 @@ }, "property": { "type": "Identifier", - "start": 2782, - "end": 2788, + "start": 2762, + "end": 2768, "loc": { "start": { - "line": 99, + "line": 98, "column": 31 }, "end": { - "line": 99, + "line": 98, "column": 37 }, "identifierName": "picked" @@ -6412,29 +6317,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 2792, - "end": 2820, + "start": 2772, + "end": 2800, "loc": { "start": { - "line": 99, + "line": 98, "column": 41 }, "end": { - "line": 99, + "line": 98, "column": 69 } }, "object": { "type": "Identifier", - "start": 2792, - "end": 2806, + "start": 2772, + "end": 2786, "loc": { "start": { - "line": 99, + "line": 98, "column": 41 }, "end": { - "line": 99, + "line": 98, "column": 55 }, "identifierName": "pickController" @@ -6443,15 +6348,15 @@ }, "property": { "type": "Identifier", - "start": 2807, - "end": 2820, + "start": 2787, + "end": 2800, "loc": { "start": { - "line": 99, + "line": 98, "column": 56 }, "end": { - "line": 99, + "line": 98, "column": 69 }, "identifierName": "pickedSurface" @@ -6464,29 +6369,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 2824, - "end": 2849, + "start": 2804, + "end": 2829, "loc": { "start": { - "line": 99, + "line": 98, "column": 73 }, "end": { - "line": 99, + "line": 98, "column": 98 } }, "object": { "type": "Identifier", - "start": 2824, - "end": 2838, + "start": 2804, + "end": 2818, "loc": { "start": { - "line": 99, + "line": 98, "column": 73 }, "end": { - "line": 99, + "line": 98, "column": 87 }, "identifierName": "pickController" @@ -6495,15 +6400,15 @@ }, "property": { "type": "Identifier", - "start": 2839, - "end": 2849, + "start": 2819, + "end": 2829, "loc": { "start": { - "line": 99, + "line": 98, "column": 88 }, "end": { - "line": 99, + "line": 98, "column": 98 }, "identifierName": "pickResult" @@ -6516,43 +6421,43 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 2853, - "end": 2887, + "start": 2833, + "end": 2867, "loc": { "start": { - "line": 99, + "line": 98, "column": 102 }, "end": { - "line": 99, + "line": 98, "column": 136 } }, "object": { "type": "MemberExpression", - "start": 2853, - "end": 2878, + "start": 2833, + "end": 2858, "loc": { "start": { - "line": 99, + "line": 98, "column": 102 }, "end": { - "line": 99, + "line": 98, "column": 127 } }, "object": { "type": "Identifier", - "start": 2853, - "end": 2867, + "start": 2833, + "end": 2847, "loc": { "start": { - "line": 99, + "line": 98, "column": 102 }, "end": { - "line": 99, + "line": 98, "column": 116 }, "identifierName": "pickController" @@ -6561,15 +6466,15 @@ }, "property": { "type": "Identifier", - "start": 2868, - "end": 2878, + "start": 2848, + "end": 2858, "loc": { "start": { - "line": 99, + "line": 98, "column": 117 }, "end": { - "line": 99, + "line": 98, "column": 127 }, "identifierName": "pickResult" @@ -6580,15 +6485,15 @@ }, "property": { "type": "Identifier", - "start": 2879, - "end": 2887, + "start": 2859, + "end": 2867, "loc": { "start": { - "line": 99, + "line": 98, "column": 128 }, "end": { - "line": 99, + "line": 98, "column": 136 }, "identifierName": "worldPos" @@ -6600,59 +6505,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 2889, - "end": 3016, + "start": 2869, + "end": 2996, "loc": { "start": { - "line": 99, + "line": 98, "column": 138 }, "end": { - "line": 102, + "line": 101, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 2907, - "end": 2930, + "start": 2887, + "end": 2910, "loc": { "start": { - "line": 100, + "line": 99, "column": 16 }, "end": { - "line": 100, + "line": 99, "column": 39 } }, "expression": { "type": "AssignmentExpression", - "start": 2907, - "end": 2929, + "start": 2887, + "end": 2909, "loc": { "start": { - "line": 100, + "line": 99, "column": 16 }, "end": { - "line": 100, + "line": 99, "column": 38 } }, "operator": "=", "left": { "type": "Identifier", - "start": 2907, - "end": 2922, + "start": 2887, + "end": 2902, "loc": { "start": { - "line": 100, + "line": 99, "column": 16 }, "end": { - "line": 100, + "line": 99, "column": 31 }, "identifierName": "mouseDownPicked" @@ -6661,15 +6566,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 2925, - "end": 2929, + "start": 2905, + "end": 2909, "loc": { "start": { - "line": 100, + "line": 99, "column": 34 }, "end": { - "line": 100, + "line": 99, "column": 38 } }, @@ -6679,57 +6584,57 @@ }, { "type": "ExpressionStatement", - "start": 2947, - "end": 3002, + "start": 2927, + "end": 2982, "loc": { "start": { - "line": 101, + "line": 100, "column": 16 }, "end": { - "line": 101, + "line": 100, "column": 71 } }, "expression": { "type": "CallExpression", - "start": 2947, - "end": 3001, + "start": 2927, + "end": 2981, "loc": { "start": { - "line": 101, + "line": 100, "column": 16 }, "end": { - "line": 101, + "line": 100, "column": 70 } }, "callee": { "type": "MemberExpression", - "start": 2947, - "end": 2965, + "start": 2927, + "end": 2945, "loc": { "start": { - "line": 101, + "line": 100, "column": 16 }, "end": { - "line": 101, + "line": 100, "column": 34 } }, "object": { "type": "Identifier", - "start": 2947, - "end": 2961, + "start": 2927, + "end": 2941, "loc": { "start": { - "line": 101, + "line": 100, "column": 16 }, "end": { - "line": 101, + "line": 100, "column": 30 }, "identifierName": "pickedWorldPos" @@ -6738,15 +6643,15 @@ }, "property": { "type": "Identifier", - "start": 2962, - "end": 2965, + "start": 2942, + "end": 2945, "loc": { "start": { - "line": 101, + "line": 100, "column": 31 }, "end": { - "line": 101, + "line": 100, "column": 34 }, "identifierName": "set" @@ -6758,43 +6663,43 @@ "arguments": [ { "type": "MemberExpression", - "start": 2966, - "end": 3000, + "start": 2946, + "end": 2980, "loc": { "start": { - "line": 101, + "line": 100, "column": 35 }, "end": { - "line": 101, + "line": 100, "column": 69 } }, "object": { "type": "MemberExpression", - "start": 2966, - "end": 2991, + "start": 2946, + "end": 2971, "loc": { "start": { - "line": 101, + "line": 100, "column": 35 }, "end": { - "line": 101, + "line": 100, "column": 60 } }, "object": { "type": "Identifier", - "start": 2966, - "end": 2980, + "start": 2946, + "end": 2960, "loc": { "start": { - "line": 101, + "line": 100, "column": 35 }, "end": { - "line": 101, + "line": 100, "column": 49 }, "identifierName": "pickController" @@ -6803,15 +6708,15 @@ }, "property": { "type": "Identifier", - "start": 2981, - "end": 2991, + "start": 2961, + "end": 2971, "loc": { "start": { - "line": 101, + "line": 100, "column": 50 }, "end": { - "line": 101, + "line": 100, "column": 60 }, "identifierName": "pickResult" @@ -6822,15 +6727,15 @@ }, "property": { "type": "Identifier", - "start": 2992, - "end": 3000, + "start": 2972, + "end": 2980, "loc": { "start": { - "line": 101, + "line": 100, "column": 61 }, "end": { - "line": 101, + "line": 100, "column": 69 }, "identifierName": "worldPos" @@ -6847,59 +6752,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 3022, - "end": 3078, + "start": 3002, + "end": 3058, "loc": { "start": { - "line": 102, + "line": 101, "column": 19 }, "end": { - "line": 104, + "line": 103, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 3040, - "end": 3064, + "start": 3020, + "end": 3044, "loc": { "start": { - "line": 103, + "line": 102, "column": 16 }, "end": { - "line": 103, + "line": 102, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 3040, - "end": 3063, + "start": 3020, + "end": 3043, "loc": { "start": { - "line": 103, + "line": 102, "column": 16 }, "end": { - "line": 103, + "line": 102, "column": 39 } }, "operator": "=", "left": { "type": "Identifier", - "start": 3040, - "end": 3055, + "start": 3020, + "end": 3035, "loc": { "start": { - "line": 103, + "line": 102, "column": 16 }, "end": { - "line": 103, + "line": 102, "column": 31 }, "identifierName": "mouseDownPicked" @@ -6908,15 +6813,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 3058, - "end": 3063, + "start": 3038, + "end": 3043, "loc": { "start": { - "line": 103, + "line": 102, "column": 34 }, "end": { - "line": 103, + "line": 102, "column": 39 } }, @@ -6934,57 +6839,57 @@ }, { "type": "ExpressionStatement", - "start": 3098, - "end": 6774, + "start": 3078, + "end": 4145, "loc": { "start": { - "line": 107, + "line": 106, "column": 8 }, "end": { - "line": 213, + "line": 153, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 3098, - "end": 6773, + "start": 3078, + "end": 4144, "loc": { "start": { - "line": 107, + "line": 106, "column": 8 }, "end": { - "line": 213, + "line": 153, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 3098, - "end": 3121, + "start": 3078, + "end": 3101, "loc": { "start": { - "line": 107, + "line": 106, "column": 8 }, "end": { - "line": 107, + "line": 106, "column": 31 } }, "object": { "type": "Identifier", - "start": 3098, - "end": 3104, + "start": 3078, + "end": 3084, "loc": { "start": { - "line": 107, + "line": 106, "column": 8 }, "end": { - "line": 107, + "line": 106, "column": 14 }, "identifierName": "canvas" @@ -6993,15 +6898,15 @@ }, "property": { "type": "Identifier", - "start": 3105, - "end": 3121, + "start": 3085, + "end": 3101, "loc": { "start": { - "line": 107, + "line": 106, "column": 15 }, "end": { - "line": 107, + "line": 106, "column": 31 }, "identifierName": "addEventListener" @@ -7013,15 +6918,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 3122, - "end": 3133, + "start": 3102, + "end": 3113, "loc": { "start": { - "line": 107, + "line": 106, "column": 32 }, "end": { - "line": 107, + "line": 106, "column": 43 } }, @@ -7033,59 +6938,59 @@ }, { "type": "AssignmentExpression", - "start": 3135, - "end": 6772, + "start": 3115, + "end": 4143, "loc": { "start": { - "line": 107, + "line": 106, "column": 45 }, "end": { - "line": 213, + "line": 153, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 3135, - "end": 3157, + "start": 3115, + "end": 3137, "loc": { "start": { - "line": 107, + "line": 106, "column": 45 }, "end": { - "line": 107, + "line": 106, "column": 67 } }, "object": { "type": "ThisExpression", - "start": 3135, - "end": 3139, + "start": 3115, + "end": 3119, "loc": { "start": { - "line": 107, + "line": 106, "column": 45 }, "end": { - "line": 107, + "line": 106, "column": 49 } } }, "property": { "type": "Identifier", - "start": 3140, - "end": 3157, + "start": 3120, + "end": 3137, "loc": { "start": { - "line": 107, + "line": 106, "column": 50 }, "end": { - "line": 107, + "line": 106, "column": 67 }, "identifierName": "_mouseDownHandler" @@ -7096,15 +7001,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 3160, - "end": 6772, + "start": 3140, + "end": 4143, "loc": { "start": { - "line": 107, + "line": 106, "column": 70 }, "end": { - "line": 213, + "line": 153, "column": 9 } }, @@ -7115,15 +7020,15 @@ "params": [ { "type": "Identifier", - "start": 3161, - "end": 3162, + "start": 3141, + "end": 3142, "loc": { "start": { - "line": 107, + "line": 106, "column": 71 }, "end": { - "line": 107, + "line": 106, "column": 72 }, "identifierName": "e" @@ -7133,44 +7038,44 @@ ], "body": { "type": "BlockStatement", - "start": 3167, - "end": 6772, + "start": 3147, + "end": 4143, "loc": { "start": { - "line": 107, + "line": 106, "column": 77 }, "end": { - "line": 213, + "line": 153, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 3182, - "end": 3270, + "start": 3162, + "end": 3250, "loc": { "start": { - "line": 109, + "line": 108, "column": 12 }, "end": { - "line": 111, + "line": 110, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 3186, - "end": 3229, + "start": 3166, + "end": 3209, "loc": { "start": { - "line": 109, + "line": 108, "column": 16 }, "end": { - "line": 109, + "line": 108, "column": 59 } }, @@ -7178,43 +7083,43 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 3188, - "end": 3228, + "start": 3168, + "end": 3208, "loc": { "start": { - "line": 109, + "line": 108, "column": 18 }, "end": { - "line": 109, + "line": 108, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 3188, - "end": 3202, + "start": 3168, + "end": 3182, "loc": { "start": { - "line": 109, + "line": 108, "column": 18 }, "end": { - "line": 109, + "line": 108, "column": 32 } }, "object": { "type": "Identifier", - "start": 3188, - "end": 3195, + "start": 3168, + "end": 3175, "loc": { "start": { - "line": 109, + "line": 108, "column": 18 }, "end": { - "line": 109, + "line": 108, "column": 25 }, "identifierName": "configs" @@ -7223,15 +7128,15 @@ }, "property": { "type": "Identifier", - "start": 3196, - "end": 3202, + "start": 3176, + "end": 3182, "loc": { "start": { - "line": 109, + "line": 108, "column": 26 }, "end": { - "line": 109, + "line": 108, "column": 32 }, "identifierName": "active" @@ -7243,29 +7148,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 3206, - "end": 3228, + "start": 3186, + "end": 3208, "loc": { "start": { - "line": 109, + "line": 108, "column": 36 }, "end": { - "line": 109, + "line": 108, "column": 58 } }, "object": { "type": "Identifier", - "start": 3206, - "end": 3213, + "start": 3186, + "end": 3193, "loc": { "start": { - "line": 109, + "line": 108, "column": 36 }, "end": { - "line": 109, + "line": 108, "column": 43 }, "identifierName": "configs" @@ -7274,15 +7179,15 @@ }, "property": { "type": "Identifier", - "start": 3214, - "end": 3228, + "start": 3194, + "end": 3208, "loc": { "start": { - "line": 109, + "line": 108, "column": 44 }, "end": { - "line": 109, + "line": 108, "column": 58 }, "identifierName": "pointerEnabled" @@ -7293,7 +7198,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 3187 + "parenStart": 3167 } }, "extra": { @@ -7302,30 +7207,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 3231, - "end": 3270, + "start": 3211, + "end": 3250, "loc": { "start": { - "line": 109, + "line": 108, "column": 61 }, "end": { - "line": 111, + "line": 110, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 3249, - "end": 3256, + "start": 3229, + "end": 3236, "loc": { "start": { - "line": 110, + "line": 109, "column": 16 }, "end": { - "line": 110, + "line": 109, "column": 23 } }, @@ -7336,140 +7241,45 @@ }, "alternate": null }, - { - "type": "ExpressionStatement", - "start": 3284, - "end": 3302, - "loc": { - "start": { - "line": 113, - "column": 12 - }, - "end": { - "line": 113, - "column": 30 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 3284, - "end": 3301, - "loc": { - "start": { - "line": 113, - "column": 12 - }, - "end": { - "line": 113, - "column": 29 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 3284, - "end": 3294, - "loc": { - "start": { - "line": 113, - "column": 12 - }, - "end": { - "line": 113, - "column": 22 - } - }, - "object": { - "type": "ThisExpression", - "start": 3284, - "end": 3288, - "loc": { - "start": { - "line": 113, - "column": 12 - }, - "end": { - "line": 113, - "column": 16 - } - } - }, - "property": { - "type": "Identifier", - "start": 3289, - "end": 3294, - "loc": { - "start": { - "line": 113, - "column": 17 - }, - "end": { - "line": 113, - "column": 22 - }, - "identifierName": "_down" - }, - "name": "_down" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 3297, - "end": 3301, - "loc": { - "start": { - "line": 113, - "column": 25 - }, - "end": { - "line": 113, - "column": 29 - } - }, - "value": true - } - } - }, { "type": "SwitchStatement", - "start": 3316, - "end": 4217, + "start": 3264, + "end": 4133, "loc": { "start": { - "line": 115, + "line": 112, "column": 12 }, "end": { - "line": 159, + "line": 152, "column": 13 } }, "discriminant": { "type": "MemberExpression", - "start": 3324, - "end": 3331, + "start": 3272, + "end": 3279, "loc": { "start": { - "line": 115, + "line": 112, "column": 20 }, "end": { - "line": 115, + "line": 112, "column": 27 } }, "object": { "type": "Identifier", - "start": 3324, - "end": 3325, + "start": 3272, + "end": 3273, "loc": { "start": { - "line": 115, + "line": 112, "column": 20 }, "end": { - "line": 115, + "line": 112, "column": 21 }, "identifierName": "e" @@ -7478,15 +7288,15 @@ }, "property": { "type": "Identifier", - "start": 3326, - "end": 3331, + "start": 3274, + "end": 3279, "loc": { "start": { - "line": 115, + "line": 112, "column": 22 }, "end": { - "line": 115, + "line": 112, "column": 27 }, "identifierName": "which" @@ -7498,72 +7308,72 @@ "cases": [ { "type": "SwitchCase", - "start": 3352, - "end": 3678, + "start": 3300, + "end": 3672, "loc": { "start": { - "line": 117, + "line": 114, "column": 16 }, "end": { - "line": 131, + "line": 129, "column": 26 } }, "consequent": [ { "type": "IfStatement", - "start": 3396, - "end": 3650, + "start": 3344, + "end": 3644, "loc": { "start": { - "line": 119, + "line": 116, "column": 20 }, "end": { - "line": 129, + "line": 127, "column": 21 } }, "test": { "type": "LogicalExpression", - "start": 3400, - "end": 3450, + "start": 3348, + "end": 3398, "loc": { "start": { - "line": 119, + "line": 116, "column": 24 }, "end": { - "line": 119, + "line": 116, "column": 74 } }, "left": { "type": "MemberExpression", - "start": 3400, - "end": 3430, + "start": 3348, + "end": 3378, "loc": { "start": { - "line": 119, + "line": 116, "column": 24 }, "end": { - "line": 119, + "line": 116, "column": 54 } }, "object": { "type": "Identifier", - "start": 3400, - "end": 3407, + "start": 3348, + "end": 3355, "loc": { "start": { - "line": 119, + "line": 116, "column": 24 }, "end": { - "line": 119, + "line": 116, "column": 31 }, "identifierName": "keyDown" @@ -7573,43 +7383,43 @@ }, "property": { "type": "MemberExpression", - "start": 3408, - "end": 3429, + "start": 3356, + "end": 3377, "loc": { "start": { - "line": 119, + "line": 116, "column": 32 }, "end": { - "line": 119, + "line": 116, "column": 53 } }, "object": { "type": "MemberExpression", - "start": 3408, - "end": 3419, + "start": 3356, + "end": 3367, "loc": { "start": { - "line": 119, + "line": 116, "column": 32 }, "end": { - "line": 119, + "line": 116, "column": 43 } }, "object": { "type": "Identifier", - "start": 3408, - "end": 3413, + "start": 3356, + "end": 3361, "loc": { "start": { - "line": 119, + "line": 116, "column": 32 }, "end": { - "line": 119, + "line": 116, "column": 37 }, "identifierName": "scene" @@ -7618,15 +7428,15 @@ }, "property": { "type": "Identifier", - "start": 3414, - "end": 3419, + "start": 3362, + "end": 3367, "loc": { "start": { - "line": 119, + "line": 116, "column": 38 }, "end": { - "line": 119, + "line": 116, "column": 43 }, "identifierName": "input" @@ -7637,15 +7447,15 @@ }, "property": { "type": "Identifier", - "start": 3420, - "end": 3429, + "start": 3368, + "end": 3377, "loc": { "start": { - "line": 119, + "line": 116, "column": 44 }, "end": { - "line": 119, + "line": 116, "column": 53 }, "identifierName": "KEY_SHIFT" @@ -7660,29 +7470,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 3434, - "end": 3450, + "start": 3382, + "end": 3398, "loc": { "start": { - "line": 119, + "line": 116, "column": 58 }, "end": { - "line": 119, + "line": 116, "column": 74 } }, "object": { "type": "Identifier", - "start": 3434, - "end": 3441, + "start": 3382, + "end": 3389, "loc": { "start": { - "line": 119, + "line": 116, "column": 58 }, "end": { - "line": 119, + "line": 116, "column": 65 }, "identifierName": "configs" @@ -7691,15 +7501,15 @@ }, "property": { "type": "Identifier", - "start": 3442, - "end": 3450, + "start": 3390, + "end": 3398, "loc": { "start": { - "line": 119, + "line": 116, "column": 66 }, "end": { - "line": 119, + "line": 116, "column": 74 }, "identifierName": "planView" @@ -7712,58 +7522,122 @@ }, "consequent": { "type": "BlockStatement", - "start": 3452, - "end": 3522, + "start": 3400, + "end": 3517, "loc": { "start": { - "line": 119, + "line": 116, "column": 76 }, "end": { - "line": 123, + "line": 122, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 3479, - "end": 3499, + "start": 3427, + "end": 3448, + "loc": { + "start": { + "line": 118, + "column": 24 + }, + "end": { + "line": 118, + "column": 45 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 3427, + "end": 3447, + "loc": { + "start": { + "line": 118, + "column": 24 + }, + "end": { + "line": 118, + "column": 44 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 3427, + "end": 3440, + "loc": { + "start": { + "line": 118, + "column": 24 + }, + "end": { + "line": 118, + "column": 37 + }, + "identifierName": "mouseDownLeft" + }, + "name": "mouseDownLeft" + }, + "right": { + "type": "BooleanLiteral", + "start": 3443, + "end": 3447, + "loc": { + "start": { + "line": 118, + "column": 40 + }, + "end": { + "line": 118, + "column": 44 + } + }, + "value": true + } + } + }, + { + "type": "ExpressionStatement", + "start": 3474, + "end": 3494, "loc": { "start": { - "line": 121, + "line": 120, "column": 24 }, "end": { - "line": 121, + "line": 120, "column": 44 } }, "expression": { "type": "CallExpression", - "start": 3479, - "end": 3498, + "start": 3474, + "end": 3493, "loc": { "start": { - "line": 121, + "line": 120, "column": 24 }, "end": { - "line": 121, + "line": 120, "column": 43 } }, "callee": { "type": "Identifier", - "start": 3479, - "end": 3496, + "start": 3474, + "end": 3491, "loc": { "start": { - "line": 121, + "line": 120, "column": 24 }, "end": { - "line": 121, + "line": 120, "column": 41 }, "identifierName": "setMousedownState" @@ -7778,59 +7652,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 3528, - "end": 3650, + "start": 3523, + "end": 3644, "loc": { "start": { - "line": 123, + "line": 122, "column": 27 }, "end": { - "line": 129, + "line": 127, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 3555, - "end": 3576, + "start": 3550, + "end": 3571, "loc": { "start": { - "line": 125, + "line": 124, "column": 24 }, "end": { - "line": 125, + "line": 124, "column": 45 } }, "expression": { "type": "AssignmentExpression", - "start": 3555, - "end": 3575, + "start": 3550, + "end": 3570, "loc": { "start": { - "line": 125, + "line": 124, "column": 24 }, "end": { - "line": 125, + "line": 124, "column": 44 } }, "operator": "=", "left": { "type": "Identifier", - "start": 3555, - "end": 3568, + "start": 3550, + "end": 3563, "loc": { "start": { - "line": 125, + "line": 124, "column": 24 }, "end": { - "line": 125, + "line": 124, "column": 37 }, "identifierName": "mouseDownLeft" @@ -7839,15 +7713,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 3571, - "end": 3575, + "start": 3566, + "end": 3570, "loc": { "start": { - "line": 125, + "line": 124, "column": 40 }, "end": { - "line": 125, + "line": 124, "column": 44 } }, @@ -7857,43 +7731,43 @@ }, { "type": "ExpressionStatement", - "start": 3602, - "end": 3627, + "start": 3597, + "end": 3622, "loc": { "start": { - "line": 127, + "line": 126, "column": 24 }, "end": { - "line": 127, + "line": 126, "column": 49 } }, "expression": { "type": "CallExpression", - "start": 3602, - "end": 3626, + "start": 3597, + "end": 3621, "loc": { "start": { - "line": 127, + "line": 126, "column": 24 }, "end": { - "line": 127, + "line": 126, "column": 48 } }, "callee": { "type": "Identifier", - "start": 3602, - "end": 3619, + "start": 3597, + "end": 3614, "loc": { "start": { - "line": 127, + "line": 126, "column": 24 }, "end": { - "line": 127, + "line": 126, "column": 41 }, "identifierName": "setMousedownState" @@ -7903,15 +7777,15 @@ "arguments": [ { "type": "BooleanLiteral", - "start": 3620, - "end": 3625, + "start": 3615, + "end": 3620, "loc": { "start": { - "line": 127, + "line": 126, "column": 42 }, "end": { - "line": 127, + "line": 126, "column": 47 } }, @@ -7927,15 +7801,15 @@ { "type": "CommentLine", "value": " Left button", - "start": 3360, - "end": 3374, + "start": 3308, + "end": 3322, "loc": { "start": { - "line": 117, + "line": 114, "column": 24 }, "end": { - "line": 117, + "line": 114, "column": 38 } } @@ -7944,15 +7818,15 @@ }, { "type": "BreakStatement", - "start": 3672, - "end": 3678, + "start": 3666, + "end": 3672, "loc": { "start": { - "line": 131, + "line": 129, "column": 20 }, "end": { - "line": 131, + "line": 129, "column": 26 } }, @@ -7961,15 +7835,15 @@ ], "test": { "type": "NumericLiteral", - "start": 3357, - "end": 3358, + "start": 3305, + "end": 3306, "loc": { "start": { - "line": 117, + "line": 114, "column": 21 }, "end": { - "line": 117, + "line": 114, "column": 22 } }, @@ -7982,59 +7856,59 @@ }, { "type": "SwitchCase", - "start": 3696, - "end": 3918, + "start": 3690, + "end": 3835, "loc": { "start": { - "line": 133, + "line": 131, "column": 16 }, "end": { - "line": 143, + "line": 137, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 3748, - "end": 3771, + "start": 3742, + "end": 3765, "loc": { "start": { - "line": 135, + "line": 133, "column": 20 }, "end": { - "line": 135, + "line": 133, "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 3748, - "end": 3770, + "start": 3742, + "end": 3764, "loc": { "start": { - "line": 135, + "line": 133, "column": 20 }, "end": { - "line": 135, + "line": 133, "column": 42 } }, "operator": "=", "left": { "type": "Identifier", - "start": 3748, - "end": 3763, + "start": 3742, + "end": 3757, "loc": { "start": { - "line": 135, + "line": 133, "column": 20 }, "end": { - "line": 135, + "line": 133, "column": 35 }, "identifierName": "mouseDownMiddle" @@ -8044,15 +7918,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 3766, - "end": 3770, + "start": 3760, + "end": 3764, "loc": { "start": { - "line": 135, + "line": 133, "column": 38 }, "end": { - "line": 135, + "line": 133, "column": 42 } }, @@ -8064,15 +7938,15 @@ { "type": "CommentLine", "value": " Middle/both buttons", - "start": 3704, - "end": 3726, + "start": 3698, + "end": 3720, "loc": { "start": { - "line": 133, + "line": 131, "column": 24 }, "end": { - "line": 133, + "line": 131, "column": 46 } } @@ -8080,168 +7954,64 @@ ] }, { - "type": "IfStatement", - "start": 3792, - "end": 3890, + "type": "ExpressionStatement", + "start": 3787, + "end": 3807, "loc": { "start": { - "line": 137, - "column": 19 + "line": 135, + "column": 20 }, "end": { - "line": 141, - "column": 21 + "line": 135, + "column": 40 } }, - "test": { - "type": "UnaryExpression", - "start": 3796, - "end": 3818, + "expression": { + "type": "CallExpression", + "start": 3787, + "end": 3806, "loc": { "start": { - "line": 137, - "column": 23 + "line": 135, + "column": 20 }, "end": { - "line": 137, - "column": 45 + "line": 135, + "column": 39 } }, - "operator": "!", - "prefix": true, - "argument": { - "type": "MemberExpression", - "start": 3797, - "end": 3818, + "callee": { + "type": "Identifier", + "start": 3787, + "end": 3804, "loc": { "start": { - "line": 137, - "column": 24 + "line": 135, + "column": 20 }, "end": { - "line": 137, - "column": 45 - } - }, - "object": { - "type": "Identifier", - "start": 3797, - "end": 3804, - "loc": { - "start": { - "line": 137, - "column": 24 - }, - "end": { - "line": 137, - "column": 31 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 3805, - "end": 3818, - "loc": { - "start": { - "line": 137, - "column": 32 - }, - "end": { - "line": 137, - "column": 45 - }, - "identifierName": "panRightClick" + "line": 135, + "column": 37 }, - "name": "panRightClick" - }, - "computed": false - }, - "extra": { - "parenthesizedArgument": false - } - }, - "consequent": { - "type": "BlockStatement", - "start": 3820, - "end": 3890, - "loc": { - "start": { - "line": 137, - "column": 47 + "identifierName": "setMousedownState" }, - "end": { - "line": 141, - "column": 21 - } + "name": "setMousedownState" }, - "body": [ - { - "type": "ExpressionStatement", - "start": 3847, - "end": 3867, - "loc": { - "start": { - "line": 139, - "column": 24 - }, - "end": { - "line": 139, - "column": 44 - } - }, - "expression": { - "type": "CallExpression", - "start": 3847, - "end": 3866, - "loc": { - "start": { - "line": 139, - "column": 24 - }, - "end": { - "line": 139, - "column": 43 - } - }, - "callee": { - "type": "Identifier", - "start": 3847, - "end": 3864, - "loc": { - "start": { - "line": 139, - "column": 24 - }, - "end": { - "line": 139, - "column": 41 - }, - "identifierName": "setMousedownState" - }, - "name": "setMousedownState" - }, - "arguments": [] - } - } - ], - "directives": [] - }, - "alternate": null + "arguments": [] + } }, { "type": "BreakStatement", - "start": 3912, - "end": 3918, + "start": 3829, + "end": 3835, "loc": { "start": { - "line": 143, + "line": 137, "column": 20 }, "end": { - "line": 143, + "line": 137, "column": 26 } }, @@ -8250,15 +8020,15 @@ ], "test": { "type": "NumericLiteral", - "start": 3701, - "end": 3702, + "start": 3695, + "end": 3696, "loc": { "start": { - "line": 133, + "line": 131, "column": 21 }, "end": { - "line": 133, + "line": 131, "column": 22 } }, @@ -8271,59 +8041,59 @@ }, { "type": "SwitchCase", - "start": 3936, - "end": 4150, + "start": 3853, + "end": 4066, "loc": { "start": { - "line": 145, + "line": 139, "column": 16 }, "end": { - "line": 155, + "line": 148, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 3981, - "end": 4003, + "start": 3898, + "end": 3920, "loc": { "start": { - "line": 147, + "line": 141, "column": 20 }, "end": { - "line": 147, + "line": 141, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 3981, - "end": 4002, + "start": 3898, + "end": 3919, "loc": { "start": { - "line": 147, + "line": 141, "column": 20 }, "end": { - "line": 147, + "line": 141, "column": 41 } }, "operator": "=", "left": { "type": "Identifier", - "start": 3981, - "end": 3995, + "start": 3898, + "end": 3912, "loc": { "start": { - "line": 147, + "line": 141, "column": 20 }, "end": { - "line": 147, + "line": 141, "column": 34 }, "identifierName": "mouseDownRight" @@ -8333,15 +8103,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 3998, - "end": 4002, + "start": 3915, + "end": 3919, "loc": { "start": { - "line": 147, + "line": 141, "column": 37 }, "end": { - "line": 147, + "line": 141, "column": 41 } }, @@ -8353,15 +8123,15 @@ { "type": "CommentLine", "value": " Right button", - "start": 3944, - "end": 3959, + "start": 3861, + "end": 3876, "loc": { "start": { - "line": 145, + "line": 139, "column": 24 }, "end": { - "line": 145, + "line": 139, "column": 39 } } @@ -8370,43 +8140,43 @@ }, { "type": "IfStatement", - "start": 4025, - "end": 4122, + "start": 3942, + "end": 4038, "loc": { "start": { - "line": 149, + "line": 143, "column": 20 }, "end": { - "line": 153, + "line": 146, "column": 21 } }, "test": { "type": "MemberExpression", - "start": 4029, - "end": 4050, + "start": 3946, + "end": 3967, "loc": { "start": { - "line": 149, + "line": 143, "column": 24 }, "end": { - "line": 149, + "line": 143, "column": 45 } }, "object": { "type": "Identifier", - "start": 4029, - "end": 4036, + "start": 3946, + "end": 3953, "loc": { "start": { - "line": 149, + "line": 143, "column": 24 }, "end": { - "line": 149, + "line": 143, "column": 31 }, "identifierName": "configs" @@ -8415,15 +8185,15 @@ }, "property": { "type": "Identifier", - "start": 4037, - "end": 4050, + "start": 3954, + "end": 3967, "loc": { "start": { - "line": 149, + "line": 143, "column": 32 }, "end": { - "line": 149, + "line": 143, "column": 45 }, "identifierName": "panRightClick" @@ -8434,58 +8204,58 @@ }, "consequent": { "type": "BlockStatement", - "start": 4052, - "end": 4122, + "start": 3969, + "end": 4038, "loc": { "start": { - "line": 149, + "line": 143, "column": 47 }, "end": { - "line": 153, + "line": 146, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 4079, - "end": 4099, + "start": 3996, + "end": 4016, "loc": { "start": { - "line": 151, + "line": 145, "column": 24 }, "end": { - "line": 151, + "line": 145, "column": 44 } }, "expression": { "type": "CallExpression", - "start": 4079, - "end": 4098, + "start": 3996, + "end": 4015, "loc": { "start": { - "line": 151, + "line": 145, "column": 24 }, "end": { - "line": 151, + "line": 145, "column": 43 } }, "callee": { "type": "Identifier", - "start": 4079, - "end": 4096, + "start": 3996, + "end": 4013, "loc": { "start": { - "line": 151, + "line": 145, "column": 24 }, "end": { - "line": 151, + "line": 145, "column": 41 }, "identifierName": "setMousedownState" @@ -8502,15 +8272,15 @@ }, { "type": "BreakStatement", - "start": 4144, - "end": 4150, + "start": 4060, + "end": 4066, "loc": { "start": { - "line": 155, + "line": 148, "column": 20 }, "end": { - "line": 155, + "line": 148, "column": 26 } }, @@ -8519,15 +8289,15 @@ ], "test": { "type": "NumericLiteral", - "start": 3941, - "end": 3942, + "start": 3858, + "end": 3859, "loc": { "start": { - "line": 145, + "line": 139, "column": 21 }, "end": { - "line": 145, + "line": 139, "column": 22 } }, @@ -8540,30 +8310,30 @@ }, { "type": "SwitchCase", - "start": 4168, - "end": 4203, + "start": 4084, + "end": 4119, "loc": { "start": { - "line": 157, + "line": 150, "column": 16 }, "end": { - "line": 158, + "line": 151, "column": 26 } }, "consequent": [ { "type": "BreakStatement", - "start": 4197, - "end": 4203, + "start": 4113, + "end": 4119, "loc": { "start": { - "line": 158, + "line": 151, "column": 20 }, "end": { - "line": 158, + "line": 151, "column": 26 } }, @@ -8573,1756 +8343,2762 @@ "test": null } ] + } + ], + "directives": [] + } + } + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 4155, + "end": 6778, + "loc": { + "start": { + "line": 155, + "column": 8 + }, + "end": { + "line": 215, + "column": 11 + } + }, + "expression": { + "type": "CallExpression", + "start": 4155, + "end": 6777, + "loc": { + "start": { + "line": 155, + "column": 8 + }, + "end": { + "line": 215, + "column": 10 + } + }, + "callee": { + "type": "MemberExpression", + "start": 4155, + "end": 4180, + "loc": { + "start": { + "line": 155, + "column": 8 + }, + "end": { + "line": 155, + "column": 33 + } + }, + "object": { + "type": "Identifier", + "start": 4155, + "end": 4163, + "loc": { + "start": { + "line": 155, + "column": 8 + }, + "end": { + "line": 155, + "column": 16 + }, + "identifierName": "document" + }, + "name": "document" + }, + "property": { + "type": "Identifier", + "start": 4164, + "end": 4180, + "loc": { + "start": { + "line": 155, + "column": 17 + }, + "end": { + "line": 155, + "column": 33 + }, + "identifierName": "addEventListener" + }, + "name": "addEventListener" + }, + "computed": false + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 4181, + "end": 4192, + "loc": { + "start": { + "line": 155, + "column": 34 + }, + "end": { + "line": 155, + "column": 45 + } + }, + "extra": { + "rawValue": "mousemove", + "raw": "\"mousemove\"" + }, + "value": "mousemove" + }, + { + "type": "AssignmentExpression", + "start": 4194, + "end": 6776, + "loc": { + "start": { + "line": 155, + "column": 47 + }, + "end": { + "line": 215, + "column": 9 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 4194, + "end": 4224, + "loc": { + "start": { + "line": 155, + "column": 47 + }, + "end": { + "line": 155, + "column": 77 + } + }, + "object": { + "type": "ThisExpression", + "start": 4194, + "end": 4198, + "loc": { + "start": { + "line": 155, + "column": 47 + }, + "end": { + "line": 155, + "column": 51 + } + } + }, + "property": { + "type": "Identifier", + "start": 4199, + "end": 4224, + "loc": { + "start": { + "line": 155, + "column": 52 + }, + "end": { + "line": 155, + "column": 77 + }, + "identifierName": "_documentMouseMoveHandler" + }, + "name": "_documentMouseMoveHandler" + }, + "computed": false + }, + "right": { + "type": "ArrowFunctionExpression", + "start": 4227, + "end": 6776, + "loc": { + "start": { + "line": 155, + "column": 80 + }, + "end": { + "line": 215, + "column": 9 + } + }, + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 4233, + "end": 6776, + "loc": { + "start": { + "line": 155, + "column": 86 }, + "end": { + "line": 215, + "column": 9 + } + }, + "body": [ { - "type": "ExpressionStatement", - "start": 4231, - "end": 6762, + "type": "IfStatement", + "start": 4248, + "end": 4336, "loc": { "start": { - "line": 161, + "line": 157, "column": 12 }, "end": { - "line": 212, - "column": 15 + "line": 159, + "column": 13 } }, - "expression": { - "type": "CallExpression", - "start": 4231, - "end": 6761, + "test": { + "type": "UnaryExpression", + "start": 4252, + "end": 4295, "loc": { "start": { - "line": 161, - "column": 12 + "line": 157, + "column": 16 }, "end": { - "line": 212, - "column": 14 + "line": 157, + "column": 59 } }, - "callee": { - "type": "MemberExpression", - "start": 4231, - "end": 4256, + "operator": "!", + "prefix": true, + "argument": { + "type": "LogicalExpression", + "start": 4254, + "end": 4294, "loc": { "start": { - "line": 161, - "column": 12 + "line": 157, + "column": 18 }, "end": { - "line": 161, - "column": 37 + "line": 157, + "column": 58 } }, - "object": { - "type": "Identifier", - "start": 4231, - "end": 4239, + "left": { + "type": "MemberExpression", + "start": 4254, + "end": 4268, "loc": { "start": { - "line": 161, - "column": 12 + "line": 157, + "column": 18 }, "end": { - "line": 161, - "column": 20 - }, - "identifierName": "document" + "line": 157, + "column": 32 + } }, - "name": "document" - }, - "property": { - "type": "Identifier", - "start": 4240, - "end": 4256, - "loc": { - "start": { - "line": 161, - "column": 21 + "object": { + "type": "Identifier", + "start": 4254, + "end": 4261, + "loc": { + "start": { + "line": 157, + "column": 18 + }, + "end": { + "line": 157, + "column": 25 + }, + "identifierName": "configs" }, - "end": { - "line": 161, - "column": 37 + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 4262, + "end": 4268, + "loc": { + "start": { + "line": 157, + "column": 26 + }, + "end": { + "line": 157, + "column": 32 + }, + "identifierName": "active" }, - "identifierName": "addEventListener" + "name": "active" }, - "name": "addEventListener" + "computed": false }, - "computed": false - }, - "arguments": [ - { - "type": "StringLiteral", - "start": 4257, - "end": 4268, + "operator": "&&", + "right": { + "type": "MemberExpression", + "start": 4272, + "end": 4294, "loc": { "start": { - "line": 161, - "column": 38 + "line": 157, + "column": 36 }, "end": { - "line": 161, - "column": 49 + "line": 157, + "column": 58 } }, - "extra": { - "rawValue": "mousemove", - "raw": "\"mousemove\"" - }, - "value": "mousemove" - }, - { - "type": "AssignmentExpression", - "start": 4270, - "end": 6760, - "loc": { - "start": { - "line": 161, - "column": 51 + "object": { + "type": "Identifier", + "start": 4272, + "end": 4279, + "loc": { + "start": { + "line": 157, + "column": 36 + }, + "end": { + "line": 157, + "column": 43 + }, + "identifierName": "configs" }, - "end": { - "line": 212, - "column": 13 - } + "name": "configs" }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 4270, - "end": 4300, + "property": { + "type": "Identifier", + "start": 4280, + "end": 4294, "loc": { "start": { - "line": 161, - "column": 51 + "line": 157, + "column": 44 }, "end": { - "line": 161, - "column": 81 - } + "line": 157, + "column": 58 + }, + "identifierName": "pointerEnabled" }, - "object": { - "type": "ThisExpression", - "start": 4270, - "end": 4274, - "loc": { - "start": { - "line": 161, - "column": 51 + "name": "pointerEnabled" + }, + "computed": false + }, + "extra": { + "parenthesized": true, + "parenStart": 4253 + } + }, + "extra": { + "parenthesizedArgument": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 4297, + "end": 4336, + "loc": { + "start": { + "line": 157, + "column": 61 + }, + "end": { + "line": 159, + "column": 13 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 4315, + "end": 4322, + "loc": { + "start": { + "line": 158, + "column": 16 + }, + "end": { + "line": 158, + "column": 23 + } + }, + "argument": null + } + ], + "directives": [] + }, + "alternate": null + }, + { + "type": "IfStatement", + "start": 4350, + "end": 4448, + "loc": { + "start": { + "line": 161, + "column": 12 + }, + "end": { + "line": 163, + "column": 13 + } + }, + "test": { + "type": "LogicalExpression", + "start": 4354, + "end": 4407, + "loc": { + "start": { + "line": 161, + "column": 16 + }, + "end": { + "line": 161, + "column": 69 + } + }, + "left": { + "type": "LogicalExpression", + "start": 4354, + "end": 4388, + "loc": { + "start": { + "line": 161, + "column": 16 + }, + "end": { + "line": 161, + "column": 50 + } + }, + "left": { + "type": "UnaryExpression", + "start": 4354, + "end": 4368, + "loc": { + "start": { + "line": 161, + "column": 16 + }, + "end": { + "line": 161, + "column": 30 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 4355, + "end": 4368, + "loc": { + "start": { + "line": 161, + "column": 17 + }, + "end": { + "line": 161, + "column": 30 + }, + "identifierName": "mouseDownLeft" + }, + "name": "mouseDownLeft" + }, + "extra": { + "parenthesizedArgument": false + } + }, + "operator": "&&", + "right": { + "type": "UnaryExpression", + "start": 4372, + "end": 4388, + "loc": { + "start": { + "line": 161, + "column": 34 + }, + "end": { + "line": 161, + "column": 50 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 4373, + "end": 4388, + "loc": { + "start": { + "line": 161, + "column": 35 + }, + "end": { + "line": 161, + "column": 50 + }, + "identifierName": "mouseDownMiddle" + }, + "name": "mouseDownMiddle" + }, + "extra": { + "parenthesizedArgument": false + } + } + }, + "operator": "&&", + "right": { + "type": "UnaryExpression", + "start": 4392, + "end": 4407, + "loc": { + "start": { + "line": 161, + "column": 54 + }, + "end": { + "line": 161, + "column": 69 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 4393, + "end": 4407, + "loc": { + "start": { + "line": 161, + "column": 55 + }, + "end": { + "line": 161, + "column": 69 + }, + "identifierName": "mouseDownRight" + }, + "name": "mouseDownRight" + }, + "extra": { + "parenthesizedArgument": false + } + } + }, + "consequent": { + "type": "BlockStatement", + "start": 4409, + "end": 4448, + "loc": { + "start": { + "line": 161, + "column": 71 + }, + "end": { + "line": 163, + "column": 13 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 4427, + "end": 4434, + "loc": { + "start": { + "line": 162, + "column": 16 + }, + "end": { + "line": 162, + "column": 23 + } + }, + "argument": null + } + ], + "directives": [], + "trailingComments": null + }, + "alternate": null, + "trailingComments": [ + { + "type": "CommentLine", + "value": " Scaling drag-rotate to canvas boundary", + "start": 4462, + "end": 4503, + "loc": { + "start": { + "line": 165, + "column": 12 + }, + "end": { + "line": 165, + "column": 53 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 4517, + "end": 4562, + "loc": { + "start": { + "line": 167, + "column": 12 + }, + "end": { + "line": 167, + "column": 57 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4523, + "end": 4561, + "loc": { + "start": { + "line": 167, + "column": 18 + }, + "end": { + "line": 167, + "column": 56 + } + }, + "id": { + "type": "Identifier", + "start": 4523, + "end": 4537, + "loc": { + "start": { + "line": 167, + "column": 18 + }, + "end": { + "line": 167, + "column": 32 + }, + "identifierName": "canvasBoundary" + }, + "name": "canvasBoundary", + "leadingComments": null + }, + "init": { + "type": "MemberExpression", + "start": 4540, + "end": 4561, + "loc": { + "start": { + "line": 167, + "column": 35 + }, + "end": { + "line": 167, + "column": 56 + } + }, + "object": { + "type": "MemberExpression", + "start": 4540, + "end": 4552, + "loc": { + "start": { + "line": 167, + "column": 35 + }, + "end": { + "line": 167, + "column": 47 + } + }, + "object": { + "type": "Identifier", + "start": 4540, + "end": 4545, + "loc": { + "start": { + "line": 167, + "column": 35 }, "end": { - "line": 161, - "column": 55 - } - } + "line": 167, + "column": 40 + }, + "identifierName": "scene" + }, + "name": "scene" }, "property": { "type": "Identifier", - "start": 4275, - "end": 4300, + "start": 4546, + "end": 4552, "loc": { "start": { - "line": 161, - "column": 56 + "line": 167, + "column": 41 }, "end": { - "line": 161, - "column": 81 + "line": 167, + "column": 47 }, - "identifierName": "_documentMouseMoveHandler" + "identifierName": "canvas" }, - "name": "_documentMouseMoveHandler" + "name": "canvas" }, "computed": false }, - "right": { - "type": "ArrowFunctionExpression", - "start": 4303, - "end": 6760, + "property": { + "type": "Identifier", + "start": 4553, + "end": 4561, "loc": { "start": { - "line": 161, - "column": 84 + "line": 167, + "column": 48 }, "end": { - "line": 212, - "column": 13 + "line": 167, + "column": 56 + }, + "identifierName": "boundary" + }, + "name": "boundary" + }, + "computed": false + }, + "leadingComments": null + } + ], + "kind": "const", + "leadingComments": [ + { + "type": "CommentLine", + "value": " Scaling drag-rotate to canvas boundary", + "start": 4462, + "end": 4503, + "loc": { + "start": { + "line": 165, + "column": 12 + }, + "end": { + "line": 165, + "column": 53 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 4575, + "end": 4633, + "loc": { + "start": { + "line": 168, + "column": 12 + }, + "end": { + "line": 168, + "column": 70 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4581, + "end": 4632, + "loc": { + "start": { + "line": 168, + "column": 18 + }, + "end": { + "line": 168, + "column": 69 + } + }, + "id": { + "type": "Identifier", + "start": 4581, + "end": 4592, + "loc": { + "start": { + "line": 168, + "column": 18 + }, + "end": { + "line": 168, + "column": 29 + }, + "identifierName": "canvasWidth" + }, + "name": "canvasWidth" + }, + "init": { + "type": "BinaryExpression", + "start": 4595, + "end": 4632, + "loc": { + "start": { + "line": 168, + "column": 32 + }, + "end": { + "line": 168, + "column": 69 + } + }, + "left": { + "type": "MemberExpression", + "start": 4595, + "end": 4612, + "loc": { + "start": { + "line": 168, + "column": 32 + }, + "end": { + "line": 168, + "column": 49 } }, - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [], - "body": { - "type": "BlockStatement", - "start": 4309, - "end": 6760, + "object": { + "type": "Identifier", + "start": 4595, + "end": 4609, "loc": { "start": { - "line": 161, - "column": 90 + "line": 168, + "column": 32 + }, + "end": { + "line": 168, + "column": 46 + }, + "identifierName": "canvasBoundary" + }, + "name": "canvasBoundary" + }, + "property": { + "type": "NumericLiteral", + "start": 4610, + "end": 4611, + "loc": { + "start": { + "line": 168, + "column": 47 }, "end": { - "line": 212, - "column": 13 + "line": 168, + "column": 48 } }, - "body": [ - { - "type": "VariableDeclaration", - "start": 4386, - "end": 4431, - "loc": { - "start": { - "line": 164, - "column": 16 - }, - "end": { - "line": 164, - "column": 61 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4392, - "end": 4430, - "loc": { - "start": { - "line": 164, - "column": 22 - }, - "end": { - "line": 164, - "column": 60 - } - }, - "id": { - "type": "Identifier", - "start": 4392, - "end": 4406, - "loc": { - "start": { - "line": 164, - "column": 22 - }, - "end": { - "line": 164, - "column": 36 - }, - "identifierName": "canvasBoundary" - }, - "name": "canvasBoundary", - "leadingComments": null - }, - "init": { - "type": "MemberExpression", - "start": 4409, - "end": 4430, - "loc": { - "start": { - "line": 164, - "column": 39 - }, - "end": { - "line": 164, - "column": 60 - } - }, - "object": { - "type": "MemberExpression", - "start": 4409, - "end": 4421, - "loc": { - "start": { - "line": 164, - "column": 39 - }, - "end": { - "line": 164, - "column": 51 - } - }, - "object": { - "type": "Identifier", - "start": 4409, - "end": 4414, - "loc": { - "start": { - "line": 164, - "column": 39 - }, - "end": { - "line": 164, - "column": 44 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "property": { - "type": "Identifier", - "start": 4415, - "end": 4421, - "loc": { - "start": { - "line": 164, - "column": 45 - }, - "end": { - "line": 164, - "column": 51 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 4422, - "end": 4430, - "loc": { - "start": { - "line": 164, - "column": 52 - }, - "end": { - "line": 164, - "column": 60 - }, - "identifierName": "boundary" - }, - "name": "boundary" - }, - "computed": false - }, - "leadingComments": null - } - ], - "kind": "const", - "leadingComments": [ - { - "type": "CommentLine", - "value": " Scaling drag-rotate to canvas boundary", - "start": 4327, - "end": 4368, - "loc": { - "start": { - "line": 162, - "column": 16 - }, - "end": { - "line": 162, - "column": 57 - } - } - } - ] + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + }, + "computed": true + }, + "operator": "-", + "right": { + "type": "MemberExpression", + "start": 4615, + "end": 4632, + "loc": { + "start": { + "line": 168, + "column": 52 + }, + "end": { + "line": 168, + "column": 69 + } + }, + "object": { + "type": "Identifier", + "start": 4615, + "end": 4629, + "loc": { + "start": { + "line": 168, + "column": 52 }, - { - "type": "VariableDeclaration", - "start": 4448, - "end": 4506, - "loc": { - "start": { - "line": 165, - "column": 16 - }, - "end": { - "line": 165, - "column": 74 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4454, - "end": 4505, - "loc": { - "start": { - "line": 165, - "column": 22 - }, - "end": { - "line": 165, - "column": 73 - } - }, - "id": { - "type": "Identifier", - "start": 4454, - "end": 4465, - "loc": { - "start": { - "line": 165, - "column": 22 - }, - "end": { - "line": 165, - "column": 33 - }, - "identifierName": "canvasWidth" - }, - "name": "canvasWidth" - }, - "init": { - "type": "BinaryExpression", - "start": 4468, - "end": 4505, - "loc": { - "start": { - "line": 165, - "column": 36 - }, - "end": { - "line": 165, - "column": 73 - } - }, - "left": { - "type": "MemberExpression", - "start": 4468, - "end": 4485, - "loc": { - "start": { - "line": 165, - "column": 36 - }, - "end": { - "line": 165, - "column": 53 - } - }, - "object": { - "type": "Identifier", - "start": 4468, - "end": 4482, - "loc": { - "start": { - "line": 165, - "column": 36 - }, - "end": { - "line": 165, - "column": 50 - }, - "identifierName": "canvasBoundary" - }, - "name": "canvasBoundary" - }, - "property": { - "type": "NumericLiteral", - "start": 4483, - "end": 4484, - "loc": { - "start": { - "line": 165, - "column": 51 - }, - "end": { - "line": 165, - "column": 52 - } - }, - "extra": { - "rawValue": 2, - "raw": "2" - }, - "value": 2 - }, - "computed": true - }, - "operator": "-", - "right": { - "type": "MemberExpression", - "start": 4488, - "end": 4505, - "loc": { - "start": { - "line": 165, - "column": 56 - }, - "end": { - "line": 165, - "column": 73 - } - }, - "object": { - "type": "Identifier", - "start": 4488, - "end": 4502, - "loc": { - "start": { - "line": 165, - "column": 56 - }, - "end": { - "line": 165, - "column": 70 - }, - "identifierName": "canvasBoundary" - }, - "name": "canvasBoundary" - }, - "property": { - "type": "NumericLiteral", - "start": 4503, - "end": 4504, - "loc": { - "start": { - "line": 165, - "column": 71 - }, - "end": { - "line": 165, - "column": 72 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - }, - "computed": true - } - } - } - ], - "kind": "const" + "end": { + "line": 168, + "column": 66 }, - { - "type": "VariableDeclaration", - "start": 4523, - "end": 4582, + "identifierName": "canvasBoundary" + }, + "name": "canvasBoundary" + }, + "property": { + "type": "NumericLiteral", + "start": 4630, + "end": 4631, + "loc": { + "start": { + "line": 168, + "column": 67 + }, + "end": { + "line": 168, + "column": 68 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "computed": true + } + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 4646, + "end": 4705, + "loc": { + "start": { + "line": 169, + "column": 12 + }, + "end": { + "line": 169, + "column": 71 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4652, + "end": 4704, + "loc": { + "start": { + "line": 169, + "column": 18 + }, + "end": { + "line": 169, + "column": 70 + } + }, + "id": { + "type": "Identifier", + "start": 4652, + "end": 4664, + "loc": { + "start": { + "line": 169, + "column": 18 + }, + "end": { + "line": 169, + "column": 30 + }, + "identifierName": "canvasHeight" + }, + "name": "canvasHeight" + }, + "init": { + "type": "BinaryExpression", + "start": 4667, + "end": 4704, + "loc": { + "start": { + "line": 169, + "column": 33 + }, + "end": { + "line": 169, + "column": 70 + } + }, + "left": { + "type": "MemberExpression", + "start": 4667, + "end": 4684, + "loc": { + "start": { + "line": 169, + "column": 33 + }, + "end": { + "line": 169, + "column": 50 + } + }, + "object": { + "type": "Identifier", + "start": 4667, + "end": 4681, + "loc": { + "start": { + "line": 169, + "column": 33 + }, + "end": { + "line": 169, + "column": 47 + }, + "identifierName": "canvasBoundary" + }, + "name": "canvasBoundary" + }, + "property": { + "type": "NumericLiteral", + "start": 4682, + "end": 4683, + "loc": { + "start": { + "line": 169, + "column": 48 + }, + "end": { + "line": 169, + "column": 49 + } + }, + "extra": { + "rawValue": 3, + "raw": "3" + }, + "value": 3 + }, + "computed": true + }, + "operator": "-", + "right": { + "type": "MemberExpression", + "start": 4687, + "end": 4704, + "loc": { + "start": { + "line": 169, + "column": 53 + }, + "end": { + "line": 169, + "column": 70 + } + }, + "object": { + "type": "Identifier", + "start": 4687, + "end": 4701, + "loc": { + "start": { + "line": 169, + "column": 53 + }, + "end": { + "line": 169, + "column": 67 + }, + "identifierName": "canvasBoundary" + }, + "name": "canvasBoundary" + }, + "property": { + "type": "NumericLiteral", + "start": 4702, + "end": 4703, + "loc": { + "start": { + "line": 169, + "column": 68 + }, + "end": { + "line": 169, + "column": 69 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "computed": true + } + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 4718, + "end": 4755, + "loc": { + "start": { + "line": 170, + "column": 12 + }, + "end": { + "line": 170, + "column": 49 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4724, + "end": 4754, + "loc": { + "start": { + "line": 170, + "column": 18 + }, + "end": { + "line": 170, + "column": 48 + } + }, + "id": { + "type": "Identifier", + "start": 4724, + "end": 4725, + "loc": { + "start": { + "line": 170, + "column": 18 + }, + "end": { + "line": 170, + "column": 19 + }, + "identifierName": "x" + }, + "name": "x" + }, + "init": { + "type": "MemberExpression", + "start": 4728, + "end": 4754, + "loc": { + "start": { + "line": 170, + "column": 22 + }, + "end": { + "line": 170, + "column": 48 + } + }, + "object": { + "type": "MemberExpression", + "start": 4728, + "end": 4751, + "loc": { + "start": { + "line": 170, + "column": 22 + }, + "end": { + "line": 170, + "column": 45 + } + }, + "object": { + "type": "Identifier", + "start": 4728, + "end": 4734, + "loc": { + "start": { + "line": 170, + "column": 22 + }, + "end": { + "line": 170, + "column": 28 + }, + "identifierName": "states" + }, + "name": "states" + }, + "property": { + "type": "Identifier", + "start": 4735, + "end": 4751, + "loc": { + "start": { + "line": 170, + "column": 29 + }, + "end": { + "line": 170, + "column": 45 + }, + "identifierName": "pointerCanvasPos" + }, + "name": "pointerCanvasPos" + }, + "computed": false + }, + "property": { + "type": "NumericLiteral", + "start": 4752, + "end": 4753, + "loc": { + "start": { + "line": 170, + "column": 46 + }, + "end": { + "line": 170, + "column": 47 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "computed": true + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 4768, + "end": 4805, + "loc": { + "start": { + "line": 171, + "column": 12 + }, + "end": { + "line": 171, + "column": 49 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4774, + "end": 4804, + "loc": { + "start": { + "line": 171, + "column": 18 + }, + "end": { + "line": 171, + "column": 48 + } + }, + "id": { + "type": "Identifier", + "start": 4774, + "end": 4775, + "loc": { + "start": { + "line": 171, + "column": 18 + }, + "end": { + "line": 171, + "column": 19 + }, + "identifierName": "y" + }, + "name": "y" + }, + "init": { + "type": "MemberExpression", + "start": 4778, + "end": 4804, + "loc": { + "start": { + "line": 171, + "column": 22 + }, + "end": { + "line": 171, + "column": 48 + } + }, + "object": { + "type": "MemberExpression", + "start": 4778, + "end": 4801, + "loc": { + "start": { + "line": 171, + "column": 22 + }, + "end": { + "line": 171, + "column": 45 + } + }, + "object": { + "type": "Identifier", + "start": 4778, + "end": 4784, + "loc": { + "start": { + "line": 171, + "column": 22 + }, + "end": { + "line": 171, + "column": 28 + }, + "identifierName": "states" + }, + "name": "states" + }, + "property": { + "type": "Identifier", + "start": 4785, + "end": 4801, + "loc": { + "start": { + "line": 171, + "column": 29 + }, + "end": { + "line": 171, + "column": 45 + }, + "identifierName": "pointerCanvasPos" + }, + "name": "pointerCanvasPos" + }, + "computed": false + }, + "property": { + "type": "NumericLiteral", + "start": 4802, + "end": 4803, + "loc": { + "start": { + "line": 171, + "column": 46 + }, + "end": { + "line": 171, + "column": 47 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "computed": true + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 4819, + "end": 4978, + "loc": { + "start": { + "line": 173, + "column": 12 + }, + "end": { + "line": 173, + "column": 171 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4825, + "end": 4977, + "loc": { + "start": { + "line": 173, + "column": 18 + }, + "end": { + "line": 173, + "column": 170 + } + }, + "id": { + "type": "Identifier", + "start": 4825, + "end": 4832, + "loc": { + "start": { + "line": 173, + "column": 18 + }, + "end": { + "line": 173, + "column": 25 + }, + "identifierName": "panning" + }, + "name": "panning" + }, + "init": { + "type": "LogicalExpression", + "start": 4835, + "end": 4977, + "loc": { + "start": { + "line": 173, + "column": 28 + }, + "end": { + "line": 173, + "column": 170 + } + }, + "left": { + "type": "LogicalExpression", + "start": 4835, + "end": 4932, + "loc": { + "start": { + "line": 173, + "column": 28 + }, + "end": { + "line": 173, + "column": 125 + } + }, + "left": { + "type": "LogicalExpression", + "start": 4835, + "end": 4885, + "loc": { + "start": { + "line": 173, + "column": 28 + }, + "end": { + "line": 173, + "column": 78 + } + }, + "left": { + "type": "MemberExpression", + "start": 4835, + "end": 4865, + "loc": { + "start": { + "line": 173, + "column": 28 + }, + "end": { + "line": 173, + "column": 58 + } + }, + "object": { + "type": "Identifier", + "start": 4835, + "end": 4842, "loc": { "start": { - "line": 166, - "column": 16 + "line": 173, + "column": 28 + }, + "end": { + "line": 173, + "column": 35 + }, + "identifierName": "keyDown" + }, + "name": "keyDown" + }, + "property": { + "type": "MemberExpression", + "start": 4843, + "end": 4864, + "loc": { + "start": { + "line": 173, + "column": 36 }, "end": { - "line": 166, - "column": 75 + "line": 173, + "column": 57 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4529, - "end": 4581, + "object": { + "type": "MemberExpression", + "start": 4843, + "end": 4854, + "loc": { + "start": { + "line": 173, + "column": 36 + }, + "end": { + "line": 173, + "column": 47 + } + }, + "object": { + "type": "Identifier", + "start": 4843, + "end": 4848, "loc": { "start": { - "line": 166, - "column": 22 + "line": 173, + "column": 36 }, "end": { - "line": 166, - "column": 74 - } - }, - "id": { - "type": "Identifier", - "start": 4529, - "end": 4541, - "loc": { - "start": { - "line": 166, - "column": 22 - }, - "end": { - "line": 166, - "column": 34 - }, - "identifierName": "canvasHeight" + "line": 173, + "column": 41 }, - "name": "canvasHeight" + "identifierName": "scene" }, - "init": { - "type": "BinaryExpression", - "start": 4544, - "end": 4581, - "loc": { - "start": { - "line": 166, - "column": 37 - }, - "end": { - "line": 166, - "column": 74 - } + "name": "scene" + }, + "property": { + "type": "Identifier", + "start": 4849, + "end": 4854, + "loc": { + "start": { + "line": 173, + "column": 42 }, - "left": { - "type": "MemberExpression", - "start": 4544, - "end": 4561, - "loc": { - "start": { - "line": 166, - "column": 37 - }, - "end": { - "line": 166, - "column": 54 - } - }, - "object": { - "type": "Identifier", - "start": 4544, - "end": 4558, - "loc": { - "start": { - "line": 166, - "column": 37 - }, - "end": { - "line": 166, - "column": 51 - }, - "identifierName": "canvasBoundary" - }, - "name": "canvasBoundary" - }, - "property": { - "type": "NumericLiteral", - "start": 4559, - "end": 4560, - "loc": { - "start": { - "line": 166, - "column": 52 - }, - "end": { - "line": 166, - "column": 53 - } - }, - "extra": { - "rawValue": 3, - "raw": "3" - }, - "value": 3 - }, - "computed": true + "end": { + "line": 173, + "column": 47 }, - "operator": "-", - "right": { - "type": "MemberExpression", - "start": 4564, - "end": 4581, - "loc": { - "start": { - "line": 166, - "column": 57 - }, - "end": { - "line": 166, - "column": 74 - } - }, - "object": { - "type": "Identifier", - "start": 4564, - "end": 4578, - "loc": { - "start": { - "line": 166, - "column": 57 - }, - "end": { - "line": 166, - "column": 71 - }, - "identifierName": "canvasBoundary" - }, - "name": "canvasBoundary" - }, - "property": { - "type": "NumericLiteral", - "start": 4579, - "end": 4580, - "loc": { - "start": { - "line": 166, - "column": 72 - }, - "end": { - "line": 166, - "column": 73 - } - }, - "extra": { - "rawValue": 1, - "raw": "1" - }, - "value": 1 - }, - "computed": true - } - } - } - ], - "kind": "const" + "identifierName": "input" + }, + "name": "input" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 4855, + "end": 4864, + "loc": { + "start": { + "line": 173, + "column": 48 + }, + "end": { + "line": 173, + "column": 57 + }, + "identifierName": "KEY_SHIFT" + }, + "name": "KEY_SHIFT" + }, + "computed": false }, - { - "type": "VariableDeclaration", - "start": 4599, - "end": 4636, + "computed": true + }, + "operator": "||", + "right": { + "type": "MemberExpression", + "start": 4869, + "end": 4885, + "loc": { + "start": { + "line": 173, + "column": 62 + }, + "end": { + "line": 173, + "column": 78 + } + }, + "object": { + "type": "Identifier", + "start": 4869, + "end": 4876, "loc": { "start": { - "line": 167, - "column": 16 + "line": 173, + "column": 62 }, "end": { - "line": 167, - "column": 53 - } + "line": 173, + "column": 69 + }, + "identifierName": "configs" }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4605, - "end": 4635, - "loc": { - "start": { - "line": 167, - "column": 22 - }, - "end": { - "line": 167, - "column": 52 - } - }, - "id": { - "type": "Identifier", - "start": 4605, - "end": 4606, - "loc": { - "start": { - "line": 167, - "column": 22 - }, - "end": { - "line": 167, - "column": 23 - }, - "identifierName": "x" - }, - "name": "x" - }, - "init": { - "type": "MemberExpression", - "start": 4609, - "end": 4635, - "loc": { - "start": { - "line": 167, - "column": 26 - }, - "end": { - "line": 167, - "column": 52 - } - }, - "object": { - "type": "MemberExpression", - "start": 4609, - "end": 4632, - "loc": { - "start": { - "line": 167, - "column": 26 - }, - "end": { - "line": 167, - "column": 49 - } - }, - "object": { - "type": "Identifier", - "start": 4609, - "end": 4615, - "loc": { - "start": { - "line": 167, - "column": 26 - }, - "end": { - "line": 167, - "column": 32 - }, - "identifierName": "states" - }, - "name": "states" - }, - "property": { - "type": "Identifier", - "start": 4616, - "end": 4632, - "loc": { - "start": { - "line": 167, - "column": 33 - }, - "end": { - "line": 167, - "column": 49 - }, - "identifierName": "pointerCanvasPos" - }, - "name": "pointerCanvasPos" - }, - "computed": false - }, - "property": { - "type": "NumericLiteral", - "start": 4633, - "end": 4634, - "loc": { - "start": { - "line": 167, - "column": 50 - }, - "end": { - "line": 167, - "column": 51 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - }, - "computed": true - } - } - ], - "kind": "const" + "name": "configs" }, - { - "type": "VariableDeclaration", - "start": 4653, - "end": 4690, + "property": { + "type": "Identifier", + "start": 4877, + "end": 4885, "loc": { "start": { - "line": 168, - "column": 16 + "line": 173, + "column": 70 }, "end": { - "line": 168, - "column": 53 - } + "line": 173, + "column": 78 + }, + "identifierName": "planView" }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4659, - "end": 4689, - "loc": { - "start": { - "line": 168, - "column": 22 - }, - "end": { - "line": 168, - "column": 52 - } - }, - "id": { - "type": "Identifier", - "start": 4659, - "end": 4660, - "loc": { - "start": { - "line": 168, - "column": 22 - }, - "end": { - "line": 168, - "column": 23 - }, - "identifierName": "y" - }, - "name": "y" - }, - "init": { - "type": "MemberExpression", - "start": 4663, - "end": 4689, - "loc": { - "start": { - "line": 168, - "column": 26 - }, - "end": { - "line": 168, - "column": 52 - } - }, - "object": { - "type": "MemberExpression", - "start": 4663, - "end": 4686, - "loc": { - "start": { - "line": 168, - "column": 26 - }, - "end": { - "line": 168, - "column": 49 - } - }, - "object": { - "type": "Identifier", - "start": 4663, - "end": 4669, - "loc": { - "start": { - "line": 168, - "column": 26 - }, - "end": { - "line": 168, - "column": 32 - }, - "identifierName": "states" - }, - "name": "states" - }, - "property": { - "type": "Identifier", - "start": 4670, - "end": 4686, - "loc": { - "start": { - "line": 168, - "column": 33 - }, - "end": { - "line": 168, - "column": 49 - }, - "identifierName": "pointerCanvasPos" - }, - "name": "pointerCanvasPos" - }, - "computed": false - }, - "property": { - "type": "NumericLiteral", - "start": 4687, - "end": 4688, - "loc": { - "start": { - "line": 168, - "column": 50 - }, - "end": { - "line": 168, - "column": 51 - } - }, - "extra": { - "rawValue": 1, - "raw": "1" - }, - "value": 1 - }, - "computed": true - } - } - ], - "kind": "const" + "name": "planView" }, - { - "type": "VariableDeclaration", - "start": 4708, - "end": 4867, + "computed": false + } + }, + "operator": "||", + "right": { + "type": "LogicalExpression", + "start": 4890, + "end": 4931, + "loc": { + "start": { + "line": 173, + "column": 83 + }, + "end": { + "line": 173, + "column": 124 + } + }, + "left": { + "type": "UnaryExpression", + "start": 4890, + "end": 4912, + "loc": { + "start": { + "line": 173, + "column": 83 + }, + "end": { + "line": 173, + "column": 105 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "MemberExpression", + "start": 4891, + "end": 4912, "loc": { "start": { - "line": 170, - "column": 16 + "line": 173, + "column": 84 }, "end": { - "line": 170, - "column": 175 + "line": 173, + "column": 105 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4714, - "end": 4866, - "loc": { - "start": { - "line": 170, - "column": 22 - }, - "end": { - "line": 170, - "column": 174 - } + "object": { + "type": "Identifier", + "start": 4891, + "end": 4898, + "loc": { + "start": { + "line": 173, + "column": 84 }, - "id": { - "type": "Identifier", - "start": 4714, - "end": 4721, - "loc": { - "start": { - "line": 170, - "column": 22 - }, - "end": { - "line": 170, - "column": 29 - }, - "identifierName": "panning" - }, - "name": "panning" + "end": { + "line": 173, + "column": 91 }, - "init": { - "type": "LogicalExpression", - "start": 4724, - "end": 4866, - "loc": { - "start": { - "line": 170, - "column": 32 - }, - "end": { - "line": 170, - "column": 174 - } - }, - "left": { - "type": "LogicalExpression", - "start": 4724, - "end": 4821, - "loc": { - "start": { - "line": 170, - "column": 32 - }, - "end": { - "line": 170, - "column": 129 - } - }, - "left": { - "type": "LogicalExpression", - "start": 4724, - "end": 4774, - "loc": { - "start": { - "line": 170, - "column": 32 - }, - "end": { - "line": 170, - "column": 82 - } - }, - "left": { - "type": "MemberExpression", - "start": 4724, - "end": 4754, - "loc": { - "start": { - "line": 170, - "column": 32 - }, - "end": { - "line": 170, - "column": 62 - } - }, - "object": { - "type": "Identifier", - "start": 4724, - "end": 4731, - "loc": { - "start": { - "line": 170, - "column": 32 - }, - "end": { - "line": 170, - "column": 39 - }, - "identifierName": "keyDown" - }, - "name": "keyDown" - }, - "property": { - "type": "MemberExpression", - "start": 4732, - "end": 4753, - "loc": { - "start": { - "line": 170, - "column": 40 - }, - "end": { - "line": 170, - "column": 61 - } - }, - "object": { - "type": "MemberExpression", - "start": 4732, - "end": 4743, - "loc": { - "start": { - "line": 170, - "column": 40 - }, - "end": { - "line": 170, - "column": 51 - } - }, - "object": { - "type": "Identifier", - "start": 4732, - "end": 4737, - "loc": { - "start": { - "line": 170, - "column": 40 - }, - "end": { - "line": 170, - "column": 45 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "property": { - "type": "Identifier", - "start": 4738, - "end": 4743, - "loc": { - "start": { - "line": 170, - "column": 46 - }, - "end": { - "line": 170, - "column": 51 - }, - "identifierName": "input" - }, - "name": "input" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 4744, - "end": 4753, - "loc": { - "start": { - "line": 170, - "column": 52 - }, - "end": { - "line": 170, - "column": 61 - }, - "identifierName": "KEY_SHIFT" - }, - "name": "KEY_SHIFT" - }, - "computed": false - }, - "computed": true - }, - "operator": "||", - "right": { - "type": "MemberExpression", - "start": 4758, - "end": 4774, - "loc": { - "start": { - "line": 170, - "column": 66 - }, - "end": { - "line": 170, - "column": 82 - } - }, - "object": { - "type": "Identifier", - "start": 4758, - "end": 4765, - "loc": { - "start": { - "line": 170, - "column": 66 - }, - "end": { - "line": 170, - "column": 73 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 4766, - "end": 4774, - "loc": { - "start": { - "line": 170, - "column": 74 - }, - "end": { - "line": 170, - "column": 82 - }, - "identifierName": "planView" - }, - "name": "planView" - }, - "computed": false - } - }, - "operator": "||", - "right": { - "type": "LogicalExpression", - "start": 4779, - "end": 4820, - "loc": { - "start": { - "line": 170, - "column": 87 - }, - "end": { - "line": 170, - "column": 128 - } - }, - "left": { - "type": "UnaryExpression", - "start": 4779, - "end": 4801, - "loc": { - "start": { - "line": 170, - "column": 87 - }, - "end": { - "line": 170, - "column": 109 - } - }, - "operator": "!", - "prefix": true, - "argument": { - "type": "MemberExpression", - "start": 4780, - "end": 4801, - "loc": { - "start": { - "line": 170, - "column": 88 - }, - "end": { - "line": 170, - "column": 109 - } - }, - "object": { - "type": "Identifier", - "start": 4780, - "end": 4787, - "loc": { - "start": { - "line": 170, - "column": 88 - }, - "end": { - "line": 170, - "column": 95 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 4788, - "end": 4801, - "loc": { - "start": { - "line": 170, - "column": 96 - }, - "end": { - "line": 170, - "column": 109 - }, - "identifierName": "panRightClick" - }, - "name": "panRightClick" - }, - "computed": false - }, - "extra": { - "parenthesizedArgument": false - } - }, - "operator": "&&", - "right": { - "type": "Identifier", - "start": 4805, - "end": 4820, - "loc": { - "start": { - "line": 170, - "column": 113 - }, - "end": { - "line": 170, - "column": 128 - }, - "identifierName": "mouseDownMiddle" - }, - "name": "mouseDownMiddle" - }, - "extra": { - "parenthesized": true, - "parenStart": 4778 - } - } - }, - "operator": "||", - "right": { - "type": "LogicalExpression", - "start": 4826, - "end": 4865, - "loc": { - "start": { - "line": 170, - "column": 134 - }, - "end": { - "line": 170, - "column": 173 - } - }, - "left": { - "type": "MemberExpression", - "start": 4826, - "end": 4847, - "loc": { - "start": { - "line": 170, - "column": 134 - }, - "end": { - "line": 170, - "column": 155 - } - }, - "object": { - "type": "Identifier", - "start": 4826, - "end": 4833, - "loc": { - "start": { - "line": 170, - "column": 134 - }, - "end": { - "line": 170, - "column": 141 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 4834, - "end": 4847, - "loc": { - "start": { - "line": 170, - "column": 142 - }, - "end": { - "line": 170, - "column": 155 - }, - "identifierName": "panRightClick" - }, - "name": "panRightClick" - }, - "computed": false - }, - "operator": "&&", - "right": { - "type": "Identifier", - "start": 4851, - "end": 4865, - "loc": { - "start": { - "line": 170, - "column": 159 - }, - "end": { - "line": 170, - "column": 173 - }, - "identifierName": "mouseDownRight" - }, - "name": "mouseDownRight" - }, - "extra": { - "parenthesized": true, - "parenStart": 4825 - } - } - } - } - ], - "kind": "const" - }, - { - "type": "IfStatement", - "start": 4885, - "end": 6691, - "loc": { - "start": { - "line": 172, - "column": 16 + "identifierName": "configs" }, - "end": { - "line": 208, - "column": 17 - } + "name": "configs" }, - "test": { + "property": { "type": "Identifier", - "start": 4889, - "end": 4896, + "start": 4899, + "end": 4912, "loc": { "start": { - "line": 172, - "column": 20 + "line": 173, + "column": 92 }, "end": { - "line": 172, - "column": 27 + "line": 173, + "column": 105 }, - "identifierName": "panning" + "identifierName": "panRightClick" }, - "name": "panning" + "name": "panRightClick" }, - "consequent": { - "type": "BlockStatement", - "start": 4898, - "end": 5952, + "computed": false + }, + "extra": { + "parenthesizedArgument": false + } + }, + "operator": "&&", + "right": { + "type": "Identifier", + "start": 4916, + "end": 4931, + "loc": { + "start": { + "line": 173, + "column": 109 + }, + "end": { + "line": 173, + "column": 124 + }, + "identifierName": "mouseDownMiddle" + }, + "name": "mouseDownMiddle" + }, + "extra": { + "parenthesized": true, + "parenStart": 4889 + } + } + }, + "operator": "||", + "right": { + "type": "LogicalExpression", + "start": 4937, + "end": 4976, + "loc": { + "start": { + "line": 173, + "column": 130 + }, + "end": { + "line": 173, + "column": 169 + } + }, + "left": { + "type": "MemberExpression", + "start": 4937, + "end": 4958, + "loc": { + "start": { + "line": 173, + "column": 130 + }, + "end": { + "line": 173, + "column": 151 + } + }, + "object": { + "type": "Identifier", + "start": 4937, + "end": 4944, + "loc": { + "start": { + "line": 173, + "column": 130 + }, + "end": { + "line": 173, + "column": 137 + }, + "identifierName": "configs" + }, + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 4945, + "end": 4958, + "loc": { + "start": { + "line": 173, + "column": 138 + }, + "end": { + "line": 173, + "column": 151 + }, + "identifierName": "panRightClick" + }, + "name": "panRightClick" + }, + "computed": false + }, + "operator": "&&", + "right": { + "type": "Identifier", + "start": 4962, + "end": 4976, + "loc": { + "start": { + "line": 173, + "column": 155 + }, + "end": { + "line": 173, + "column": 169 + }, + "identifierName": "mouseDownRight" + }, + "name": "mouseDownRight" + }, + "extra": { + "parenthesized": true, + "parenStart": 4936 + } + } + } + } + ], + "kind": "const" + }, + { + "type": "IfStatement", + "start": 4992, + "end": 6719, + "loc": { + "start": { + "line": 175, + "column": 12 + }, + "end": { + "line": 211, + "column": 13 + } + }, + "test": { + "type": "Identifier", + "start": 4996, + "end": 5003, + "loc": { + "start": { + "line": 175, + "column": 16 + }, + "end": { + "line": 175, + "column": 23 + }, + "identifierName": "panning" + }, + "name": "panning" + }, + "consequent": { + "type": "BlockStatement", + "start": 5005, + "end": 6003, + "loc": { + "start": { + "line": 175, + "column": 25 + }, + "end": { + "line": 198, + "column": 13 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 5024, + "end": 5054, + "loc": { + "start": { + "line": 177, + "column": 16 + }, + "end": { + "line": 177, + "column": 46 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5030, + "end": 5053, + "loc": { + "start": { + "line": 177, + "column": 22 + }, + "end": { + "line": 177, + "column": 45 + } + }, + "id": { + "type": "Identifier", + "start": 5030, + "end": 5039, + "loc": { + "start": { + "line": 177, + "column": 22 + }, + "end": { + "line": 177, + "column": 31 + }, + "identifierName": "xPanDelta" + }, + "name": "xPanDelta" + }, + "init": { + "type": "BinaryExpression", + "start": 5043, + "end": 5052, + "loc": { + "start": { + "line": 177, + "column": 35 + }, + "end": { + "line": 177, + "column": 44 + } + }, + "left": { + "type": "Identifier", + "start": 5043, + "end": 5044, + "loc": { + "start": { + "line": 177, + "column": 35 + }, + "end": { + "line": 177, + "column": 36 + }, + "identifierName": "x" + }, + "name": "x" + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 5047, + "end": 5052, + "loc": { + "start": { + "line": 177, + "column": 39 + }, + "end": { + "line": 177, + "column": 44 + }, + "identifierName": "lastX" + }, + "name": "lastX" + }, + "extra": { + "parenthesized": true, + "parenStart": 5042 + } + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 5071, + "end": 5101, + "loc": { + "start": { + "line": 178, + "column": 16 + }, + "end": { + "line": 178, + "column": 46 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5077, + "end": 5100, + "loc": { + "start": { + "line": 178, + "column": 22 + }, + "end": { + "line": 178, + "column": 45 + } + }, + "id": { + "type": "Identifier", + "start": 5077, + "end": 5086, + "loc": { + "start": { + "line": 178, + "column": 22 + }, + "end": { + "line": 178, + "column": 31 + }, + "identifierName": "yPanDelta" + }, + "name": "yPanDelta" + }, + "init": { + "type": "BinaryExpression", + "start": 5090, + "end": 5099, + "loc": { + "start": { + "line": 178, + "column": 35 + }, + "end": { + "line": 178, + "column": 44 + } + }, + "left": { + "type": "Identifier", + "start": 5090, + "end": 5091, + "loc": { + "start": { + "line": 178, + "column": 35 + }, + "end": { + "line": 178, + "column": 36 + }, + "identifierName": "y" + }, + "name": "y" + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 5094, + "end": 5099, + "loc": { + "start": { + "line": 178, + "column": 39 + }, + "end": { + "line": 178, + "column": 44 + }, + "identifierName": "lastY" + }, + "name": "lastY" + }, + "extra": { + "parenthesized": true, + "parenStart": 5089 + } + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 5119, + "end": 5147, + "loc": { + "start": { + "line": 180, + "column": 16 + }, + "end": { + "line": 180, + "column": 44 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5125, + "end": 5146, + "loc": { + "start": { + "line": 180, + "column": 22 + }, + "end": { + "line": 180, + "column": 43 + } + }, + "id": { + "type": "Identifier", + "start": 5125, + "end": 5131, + "loc": { + "start": { + "line": 180, + "column": 22 + }, + "end": { + "line": 180, + "column": 28 + }, + "identifierName": "camera" + }, + "name": "camera" + }, + "init": { + "type": "MemberExpression", + "start": 5134, + "end": 5146, + "loc": { + "start": { + "line": 180, + "column": 31 + }, + "end": { + "line": 180, + "column": 43 + } + }, + "object": { + "type": "Identifier", + "start": 5134, + "end": 5139, + "loc": { + "start": { + "line": 180, + "column": 31 + }, + "end": { + "line": 180, + "column": 36 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "property": { + "type": "Identifier", + "start": 5140, + "end": 5146, + "loc": { + "start": { + "line": 180, + "column": 37 + }, + "end": { + "line": 180, + "column": 43 + }, + "identifierName": "camera" + }, + "name": "camera" + }, + "computed": false + } + } + ], + "kind": "const", + "trailingComments": [ + { + "type": "CommentLine", + "value": " We use only canvasHeight here so that aspect ratio does not distort speed", + "start": 5165, + "end": 5241, + "loc": { + "start": { + "line": 182, + "column": 16 + }, + "end": { + "line": 182, + "column": 92 + } + } + } + ] + }, + { + "type": "IfStatement", + "start": 5259, + "end": 5988, + "loc": { + "start": { + "line": 184, + "column": 16 + }, + "end": { + "line": 196, + "column": 17 + } + }, + "test": { + "type": "BinaryExpression", + "start": 5263, + "end": 5298, + "loc": { + "start": { + "line": 184, + "column": 20 + }, + "end": { + "line": 184, + "column": 55 + } + }, + "left": { + "type": "MemberExpression", + "start": 5263, + "end": 5280, + "loc": { + "start": { + "line": 184, + "column": 20 + }, + "end": { + "line": 184, + "column": 37 + } + }, + "object": { + "type": "Identifier", + "start": 5263, + "end": 5269, + "loc": { + "start": { + "line": 184, + "column": 20 + }, + "end": { + "line": 184, + "column": 26 + }, + "identifierName": "camera" + }, + "name": "camera", + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 5270, + "end": 5280, + "loc": { + "start": { + "line": 184, + "column": 27 + }, + "end": { + "line": 184, + "column": 37 + }, + "identifierName": "projection" + }, + "name": "projection" + }, + "computed": false, + "leadingComments": null + }, + "operator": "===", + "right": { + "type": "StringLiteral", + "start": 5285, + "end": 5298, + "loc": { + "start": { + "line": 184, + "column": 42 + }, + "end": { + "line": 184, + "column": 55 + } + }, + "extra": { + "rawValue": "perspective", + "raw": "\"perspective\"" + }, + "value": "perspective" + }, + "leadingComments": null + }, + "consequent": { + "type": "BlockStatement", + "start": 5300, + "end": 5770, + "loc": { + "start": { + "line": 184, + "column": 57 + }, + "end": { + "line": 192, + "column": 17 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 5323, + "end": 5457, + "loc": { + "start": { + "line": 186, + "column": 20 + }, + "end": { + "line": 186, + "column": 154 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5329, + "end": 5456, "loc": { "start": { - "line": 172, - "column": 29 + "line": 186, + "column": 26 }, "end": { - "line": 195, - "column": 17 + "line": 186, + "column": 153 } }, - "body": [ - { - "type": "VariableDeclaration", - "start": 4921, - "end": 4951, - "loc": { - "start": { - "line": 174, - "column": 20 - }, - "end": { - "line": 174, - "column": 50 + "id": { + "type": "Identifier", + "start": 5329, + "end": 5334, + "loc": { + "start": { + "line": 186, + "column": 26 + }, + "end": { + "line": 186, + "column": 31 + }, + "identifierName": "depth" + }, + "name": "depth" + }, + "init": { + "type": "CallExpression", + "start": 5337, + "end": 5456, + "loc": { + "start": { + "line": 186, + "column": 34 + }, + "end": { + "line": 186, + "column": 153 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5337, + "end": 5345, + "loc": { + "start": { + "line": 186, + "column": 34 + }, + "end": { + "line": 186, + "column": 42 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4927, - "end": 4950, + "object": { + "type": "Identifier", + "start": 5337, + "end": 5341, + "loc": { + "start": { + "line": 186, + "column": 34 + }, + "end": { + "line": 186, + "column": 38 + }, + "identifierName": "Math" + }, + "name": "Math" + }, + "property": { + "type": "Identifier", + "start": 5342, + "end": 5345, + "loc": { + "start": { + "line": 186, + "column": 39 + }, + "end": { + "line": 186, + "column": 42 + }, + "identifierName": "abs" + }, + "name": "abs" + }, + "computed": false + }, + "arguments": [ + { + "type": "ConditionalExpression", + "start": 5346, + "end": 5455, + "loc": { + "start": { + "line": 186, + "column": 43 + }, + "end": { + "line": 186, + "column": 152 + } + }, + "test": { + "type": "Identifier", + "start": 5346, + "end": 5361, "loc": { "start": { - "line": 174, - "column": 26 + "line": 186, + "column": 43 }, "end": { - "line": 174, - "column": 49 - } + "line": 186, + "column": 58 + }, + "identifierName": "mouseDownPicked" }, - "id": { - "type": "Identifier", - "start": 4927, - "end": 4936, - "loc": { - "start": { - "line": 174, - "column": 26 - }, - "end": { - "line": 174, - "column": 35 - }, - "identifierName": "xPanDelta" + "name": "mouseDownPicked" + }, + "consequent": { + "type": "CallExpression", + "start": 5364, + "end": 5428, + "loc": { + "start": { + "line": 186, + "column": 61 }, - "name": "xPanDelta" + "end": { + "line": 186, + "column": 125 + } }, - "init": { - "type": "BinaryExpression", - "start": 4940, - "end": 4949, + "callee": { + "type": "MemberExpression", + "start": 5364, + "end": 5376, "loc": { "start": { - "line": 174, - "column": 39 + "line": 186, + "column": 61 }, "end": { - "line": 174, - "column": 48 + "line": 186, + "column": 73 } }, - "left": { + "object": { "type": "Identifier", - "start": 4940, - "end": 4941, + "start": 5364, + "end": 5368, "loc": { "start": { - "line": 174, - "column": 39 + "line": 186, + "column": 61 }, "end": { - "line": 174, - "column": 40 + "line": 186, + "column": 65 }, - "identifierName": "x" + "identifierName": "math" }, - "name": "x" + "name": "math" }, - "operator": "-", - "right": { + "property": { "type": "Identifier", - "start": 4944, - "end": 4949, + "start": 5369, + "end": 5376, "loc": { "start": { - "line": 174, - "column": 43 + "line": 186, + "column": 66 }, "end": { - "line": 174, - "column": 48 + "line": 186, + "column": 73 }, - "identifierName": "lastX" - }, - "name": "lastX" - }, - "extra": { - "parenthesized": true, - "parenStart": 4939 - } - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 4972, - "end": 5002, - "loc": { - "start": { - "line": 175, - "column": 20 - }, - "end": { - "line": 175, - "column": 50 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4978, - "end": 5001, - "loc": { - "start": { - "line": 175, - "column": 26 - }, - "end": { - "line": 175, - "column": 49 - } - }, - "id": { - "type": "Identifier", - "start": 4978, - "end": 4987, - "loc": { - "start": { - "line": 175, - "column": 26 - }, - "end": { - "line": 175, - "column": 35 + "identifierName": "lenVec3" }, - "identifierName": "yPanDelta" + "name": "lenVec3" }, - "name": "yPanDelta" + "computed": false }, - "init": { - "type": "BinaryExpression", - "start": 4991, - "end": 5000, - "loc": { - "start": { - "line": 175, - "column": 39 - }, - "end": { - "line": 175, - "column": 48 - } - }, - "left": { - "type": "Identifier", - "start": 4991, - "end": 4992, + "arguments": [ + { + "type": "CallExpression", + "start": 5377, + "end": 5427, "loc": { "start": { - "line": 175, - "column": 39 + "line": 186, + "column": 74 }, "end": { - "line": 175, - "column": 40 - }, - "identifierName": "y" + "line": 186, + "column": 124 + } }, - "name": "y" - }, - "operator": "-", - "right": { - "type": "Identifier", - "start": 4995, - "end": 5000, - "loc": { - "start": { - "line": 175, - "column": 43 + "callee": { + "type": "MemberExpression", + "start": 5377, + "end": 5389, + "loc": { + "start": { + "line": 186, + "column": 74 + }, + "end": { + "line": 186, + "column": 86 + } }, - "end": { - "line": 175, - "column": 48 + "object": { + "type": "Identifier", + "start": 5377, + "end": 5381, + "loc": { + "start": { + "line": 186, + "column": 74 + }, + "end": { + "line": 186, + "column": 78 + }, + "identifierName": "math" + }, + "name": "math" + }, + "property": { + "type": "Identifier", + "start": 5382, + "end": 5389, + "loc": { + "start": { + "line": 186, + "column": 79 + }, + "end": { + "line": 186, + "column": 86 + }, + "identifierName": "subVec3" + }, + "name": "subVec3" }, - "identifierName": "lastY" + "computed": false }, - "name": "lastY" - }, - "extra": { - "parenthesized": true, - "parenStart": 4990 + "arguments": [ + { + "type": "Identifier", + "start": 5390, + "end": 5404, + "loc": { + "start": { + "line": 186, + "column": 87 + }, + "end": { + "line": 186, + "column": 101 + }, + "identifierName": "pickedWorldPos" + }, + "name": "pickedWorldPos" + }, + { + "type": "MemberExpression", + "start": 5406, + "end": 5422, + "loc": { + "start": { + "line": 186, + "column": 103 + }, + "end": { + "line": 186, + "column": 119 + } + }, + "object": { + "type": "MemberExpression", + "start": 5406, + "end": 5418, + "loc": { + "start": { + "line": 186, + "column": 103 + }, + "end": { + "line": 186, + "column": 115 + } + }, + "object": { + "type": "Identifier", + "start": 5406, + "end": 5411, + "loc": { + "start": { + "line": 186, + "column": 103 + }, + "end": { + "line": 186, + "column": 108 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "property": { + "type": "Identifier", + "start": 5412, + "end": 5418, + "loc": { + "start": { + "line": 186, + "column": 109 + }, + "end": { + "line": 186, + "column": 115 + }, + "identifierName": "camera" + }, + "name": "camera" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5419, + "end": 5422, + "loc": { + "start": { + "line": 186, + "column": 116 + }, + "end": { + "line": 186, + "column": 119 + }, + "identifierName": "eye" + }, + "name": "eye" + }, + "computed": false + }, + { + "type": "ArrayExpression", + "start": 5424, + "end": 5426, + "loc": { + "start": { + "line": 186, + "column": 121 + }, + "end": { + "line": 186, + "column": 123 + } + }, + "elements": [] + } + ] } - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 5024, - "end": 5052, - "loc": { - "start": { - "line": 177, - "column": 20 + ] }, - "end": { - "line": 177, - "column": 48 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 5030, - "end": 5051, + "alternate": { + "type": "MemberExpression", + "start": 5431, + "end": 5455, "loc": { "start": { - "line": 177, - "column": 26 + "line": 186, + "column": 128 }, "end": { - "line": 177, - "column": 47 + "line": 186, + "column": 152 } }, - "id": { - "type": "Identifier", - "start": 5030, - "end": 5036, - "loc": { - "start": { - "line": 177, - "column": 26 - }, - "end": { - "line": 177, - "column": 32 - }, - "identifierName": "camera" - }, - "name": "camera" - }, - "init": { + "object": { "type": "MemberExpression", - "start": 5039, - "end": 5051, + "start": 5431, + "end": 5443, "loc": { "start": { - "line": 177, - "column": 35 + "line": 186, + "column": 128 }, "end": { - "line": 177, - "column": 47 + "line": 186, + "column": 140 } }, "object": { "type": "Identifier", - "start": 5039, - "end": 5044, + "start": 5431, + "end": 5436, "loc": { "start": { - "line": 177, - "column": 35 + "line": 186, + "column": 128 }, "end": { - "line": 177, - "column": 40 + "line": 186, + "column": 133 }, "identifierName": "scene" }, @@ -10330,4098 +11106,3407 @@ }, "property": { "type": "Identifier", - "start": 5045, - "end": 5051, + "start": 5437, + "end": 5443, "loc": { "start": { - "line": 177, - "column": 41 + "line": 186, + "column": 134 }, "end": { - "line": 177, - "column": 47 + "line": 186, + "column": 140 }, "identifierName": "camera" }, "name": "camera" }, "computed": false - } - } - ], - "kind": "const", - "trailingComments": [ - { - "type": "CommentLine", - "value": " We use only canvasHeight here so that aspect ratio does not distort speed", - "start": 5074, - "end": 5150, - "loc": { - "start": { - "line": 179, - "column": 20 + }, + "property": { + "type": "Identifier", + "start": 5444, + "end": 5455, + "loc": { + "start": { + "line": 186, + "column": 141 + }, + "end": { + "line": 186, + "column": 152 + }, + "identifierName": "eyeLookDist" }, - "end": { - "line": 179, - "column": 96 - } - } + "name": "eyeLookDist" + }, + "computed": false } - ] + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 5478, + "end": 5566, + "loc": { + "start": { + "line": 187, + "column": 20 + }, + "end": { + "line": 187, + "column": 108 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5484, + "end": 5565, + "loc": { + "start": { + "line": 187, + "column": 26 }, - { - "type": "IfStatement", - "start": 5172, - "end": 5933, + "end": { + "line": 187, + "column": 107 + } + }, + "id": { + "type": "Identifier", + "start": 5484, + "end": 5498, + "loc": { + "start": { + "line": 187, + "column": 26 + }, + "end": { + "line": 187, + "column": 40 + }, + "identifierName": "targetDistance" + }, + "name": "targetDistance" + }, + "init": { + "type": "BinaryExpression", + "start": 5501, + "end": 5565, + "loc": { + "start": { + "line": 187, + "column": 43 + }, + "end": { + "line": 187, + "column": 107 + } + }, + "left": { + "type": "Identifier", + "start": 5501, + "end": 5506, "loc": { "start": { - "line": 181, - "column": 20 + "line": 187, + "column": 43 + }, + "end": { + "line": 187, + "column": 48 + }, + "identifierName": "depth" + }, + "name": "depth" + }, + "operator": "*", + "right": { + "type": "CallExpression", + "start": 5509, + "end": 5565, + "loc": { + "start": { + "line": 187, + "column": 51 }, "end": { - "line": 193, - "column": 21 + "line": 187, + "column": 107 } }, - "test": { - "type": "BinaryExpression", - "start": 5176, - "end": 5211, + "callee": { + "type": "MemberExpression", + "start": 5509, + "end": 5517, "loc": { "start": { - "line": 181, - "column": 24 + "line": 187, + "column": 51 }, "end": { - "line": 181, + "line": 187, "column": 59 } }, - "left": { - "type": "MemberExpression", - "start": 5176, - "end": 5193, + "object": { + "type": "Identifier", + "start": 5509, + "end": 5513, "loc": { "start": { - "line": 181, - "column": 24 + "line": 187, + "column": 51 }, "end": { - "line": 181, - "column": 41 - } - }, - "object": { - "type": "Identifier", - "start": 5176, - "end": 5182, - "loc": { - "start": { - "line": 181, - "column": 24 - }, - "end": { - "line": 181, - "column": 30 - }, - "identifierName": "camera" - }, - "name": "camera", - "leadingComments": null - }, - "property": { - "type": "Identifier", - "start": 5183, - "end": 5193, - "loc": { - "start": { - "line": 181, - "column": 31 - }, - "end": { - "line": 181, - "column": 41 - }, - "identifierName": "projection" + "line": 187, + "column": 55 }, - "name": "projection" + "identifierName": "Math" }, - "computed": false, - "leadingComments": null + "name": "Math" }, - "operator": "===", - "right": { - "type": "StringLiteral", - "start": 5198, - "end": 5211, + "property": { + "type": "Identifier", + "start": 5514, + "end": 5517, "loc": { "start": { - "line": 181, - "column": 46 + "line": 187, + "column": 56 }, "end": { - "line": 181, + "line": 187, "column": 59 - } - }, - "extra": { - "rawValue": "perspective", - "raw": "\"perspective\"" + }, + "identifierName": "tan" }, - "value": "perspective" + "name": "tan" }, - "leadingComments": null + "computed": false }, - "consequent": { - "type": "BlockStatement", - "start": 5213, - "end": 5703, - "loc": { - "start": { - "line": 181, - "column": 61 + "arguments": [ + { + "type": "BinaryExpression", + "start": 5518, + "end": 5564, + "loc": { + "start": { + "line": 187, + "column": 60 + }, + "end": { + "line": 187, + "column": 106 + } }, - "end": { - "line": 189, - "column": 21 - } - }, - "body": [ - { - "type": "VariableDeclaration", - "start": 5240, - "end": 5374, + "left": { + "type": "BinaryExpression", + "start": 5518, + "end": 5556, "loc": { "start": { - "line": 183, - "column": 24 + "line": 187, + "column": 60 }, "end": { - "line": 183, - "column": 158 + "line": 187, + "column": 98 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 5246, - "end": 5373, + "left": { + "type": "BinaryExpression", + "start": 5519, + "end": 5545, + "loc": { + "start": { + "line": 187, + "column": 61 + }, + "end": { + "line": 187, + "column": 87 + } + }, + "left": { + "type": "MemberExpression", + "start": 5519, + "end": 5541, "loc": { "start": { - "line": 183, - "column": 30 + "line": 187, + "column": 61 }, "end": { - "line": 183, - "column": 157 + "line": 187, + "column": 83 } }, - "id": { - "type": "Identifier", - "start": 5246, - "end": 5251, - "loc": { - "start": { - "line": 183, - "column": 30 - }, - "end": { - "line": 183, - "column": 35 - }, - "identifierName": "depth" - }, - "name": "depth" - }, - "init": { - "type": "CallExpression", - "start": 5254, - "end": 5373, + "object": { + "type": "MemberExpression", + "start": 5519, + "end": 5537, "loc": { "start": { - "line": 183, - "column": 38 + "line": 187, + "column": 61 }, "end": { - "line": 183, - "column": 157 + "line": 187, + "column": 79 } }, - "callee": { - "type": "MemberExpression", - "start": 5254, - "end": 5262, + "object": { + "type": "Identifier", + "start": 5519, + "end": 5525, "loc": { "start": { - "line": 183, - "column": 38 + "line": 187, + "column": 61 }, "end": { - "line": 183, - "column": 46 - } - }, - "object": { - "type": "Identifier", - "start": 5254, - "end": 5258, - "loc": { - "start": { - "line": 183, - "column": 38 - }, - "end": { - "line": 183, - "column": 42 - }, - "identifierName": "Math" + "line": 187, + "column": 67 }, - "name": "Math" + "identifierName": "camera" }, - "property": { - "type": "Identifier", - "start": 5259, - "end": 5262, - "loc": { - "start": { - "line": 183, - "column": 43 - }, - "end": { - "line": 183, - "column": 46 - }, - "identifierName": "abs" + "name": "camera" + }, + "property": { + "type": "Identifier", + "start": 5526, + "end": 5537, + "loc": { + "start": { + "line": 187, + "column": 68 + }, + "end": { + "line": 187, + "column": 79 }, - "name": "abs" + "identifierName": "perspective" }, - "computed": false + "name": "perspective" }, - "arguments": [ - { - "type": "ConditionalExpression", - "start": 5263, - "end": 5372, - "loc": { - "start": { - "line": 183, - "column": 47 - }, - "end": { - "line": 183, - "column": 156 - } - }, - "test": { - "type": "Identifier", - "start": 5263, - "end": 5278, - "loc": { - "start": { - "line": 183, - "column": 47 - }, - "end": { - "line": 183, - "column": 62 - }, - "identifierName": "mouseDownPicked" - }, - "name": "mouseDownPicked" - }, - "consequent": { - "type": "CallExpression", - "start": 5281, - "end": 5345, - "loc": { - "start": { - "line": 183, - "column": 65 - }, - "end": { - "line": 183, - "column": 129 - } - }, - "callee": { - "type": "MemberExpression", - "start": 5281, - "end": 5293, - "loc": { - "start": { - "line": 183, - "column": 65 - }, - "end": { - "line": 183, - "column": 77 - } - }, - "object": { - "type": "Identifier", - "start": 5281, - "end": 5285, - "loc": { - "start": { - "line": 183, - "column": 65 - }, - "end": { - "line": 183, - "column": 69 - }, - "identifierName": "math" - }, - "name": "math" - }, - "property": { - "type": "Identifier", - "start": 5286, - "end": 5293, - "loc": { - "start": { - "line": 183, - "column": 70 - }, - "end": { - "line": 183, - "column": 77 - }, - "identifierName": "lenVec3" - }, - "name": "lenVec3" - }, - "computed": false - }, - "arguments": [ - { - "type": "CallExpression", - "start": 5294, - "end": 5344, - "loc": { - "start": { - "line": 183, - "column": 78 - }, - "end": { - "line": 183, - "column": 128 - } - }, - "callee": { - "type": "MemberExpression", - "start": 5294, - "end": 5306, - "loc": { - "start": { - "line": 183, - "column": 78 - }, - "end": { - "line": 183, - "column": 90 - } - }, - "object": { - "type": "Identifier", - "start": 5294, - "end": 5298, - "loc": { - "start": { - "line": 183, - "column": 78 - }, - "end": { - "line": 183, - "column": 82 - }, - "identifierName": "math" - }, - "name": "math" - }, - "property": { - "type": "Identifier", - "start": 5299, - "end": 5306, - "loc": { - "start": { - "line": 183, - "column": 83 - }, - "end": { - "line": 183, - "column": 90 - }, - "identifierName": "subVec3" - }, - "name": "subVec3" - }, - "computed": false - }, - "arguments": [ - { - "type": "Identifier", - "start": 5307, - "end": 5321, - "loc": { - "start": { - "line": 183, - "column": 91 - }, - "end": { - "line": 183, - "column": 105 - }, - "identifierName": "pickedWorldPos" - }, - "name": "pickedWorldPos" - }, - { - "type": "MemberExpression", - "start": 5323, - "end": 5339, - "loc": { - "start": { - "line": 183, - "column": 107 - }, - "end": { - "line": 183, - "column": 123 - } - }, - "object": { - "type": "MemberExpression", - "start": 5323, - "end": 5335, - "loc": { - "start": { - "line": 183, - "column": 107 - }, - "end": { - "line": 183, - "column": 119 - } - }, - "object": { - "type": "Identifier", - "start": 5323, - "end": 5328, - "loc": { - "start": { - "line": 183, - "column": 107 - }, - "end": { - "line": 183, - "column": 112 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "property": { - "type": "Identifier", - "start": 5329, - "end": 5335, - "loc": { - "start": { - "line": 183, - "column": 113 - }, - "end": { - "line": 183, - "column": 119 - }, - "identifierName": "camera" - }, - "name": "camera" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5336, - "end": 5339, - "loc": { - "start": { - "line": 183, - "column": 120 - }, - "end": { - "line": 183, - "column": 123 - }, - "identifierName": "eye" - }, - "name": "eye" - }, - "computed": false - }, - { - "type": "ArrayExpression", - "start": 5341, - "end": 5343, - "loc": { - "start": { - "line": 183, - "column": 125 - }, - "end": { - "line": 183, - "column": 127 - } - }, - "elements": [] - } - ] - } - ] - }, - "alternate": { - "type": "MemberExpression", - "start": 5348, - "end": 5372, - "loc": { - "start": { - "line": 183, - "column": 132 - }, - "end": { - "line": 183, - "column": 156 - } - }, - "object": { - "type": "MemberExpression", - "start": 5348, - "end": 5360, - "loc": { - "start": { - "line": 183, - "column": 132 - }, - "end": { - "line": 183, - "column": 144 - } - }, - "object": { - "type": "Identifier", - "start": 5348, - "end": 5353, - "loc": { - "start": { - "line": 183, - "column": 132 - }, - "end": { - "line": 183, - "column": 137 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "property": { - "type": "Identifier", - "start": 5354, - "end": 5360, - "loc": { - "start": { - "line": 183, - "column": 138 - }, - "end": { - "line": 183, - "column": 144 - }, - "identifierName": "camera" - }, - "name": "camera" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5361, - "end": 5372, - "loc": { - "start": { - "line": 183, - "column": 145 - }, - "end": { - "line": 183, - "column": 156 - }, - "identifierName": "eyeLookDist" - }, - "name": "eyeLookDist" - }, - "computed": false - } - } - ] - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 5399, - "end": 5487, - "loc": { - "start": { - "line": 184, - "column": 24 - }, - "end": { - "line": 184, - "column": 112 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 5405, - "end": 5486, - "loc": { - "start": { - "line": 184, - "column": 30 - }, - "end": { - "line": 184, - "column": 111 - } - }, - "id": { - "type": "Identifier", - "start": 5405, - "end": 5419, - "loc": { - "start": { - "line": 184, - "column": 30 - }, - "end": { - "line": 184, - "column": 44 - }, - "identifierName": "targetDistance" - }, - "name": "targetDistance" - }, - "init": { - "type": "BinaryExpression", - "start": 5422, - "end": 5486, - "loc": { - "start": { - "line": 184, - "column": 47 - }, - "end": { - "line": 184, - "column": 111 - } - }, - "left": { - "type": "Identifier", - "start": 5422, - "end": 5427, - "loc": { - "start": { - "line": 184, - "column": 47 - }, - "end": { - "line": 184, - "column": 52 - }, - "identifierName": "depth" - }, - "name": "depth" - }, - "operator": "*", - "right": { - "type": "CallExpression", - "start": 5430, - "end": 5486, - "loc": { - "start": { - "line": 184, - "column": 55 - }, - "end": { - "line": 184, - "column": 111 - } - }, - "callee": { - "type": "MemberExpression", - "start": 5430, - "end": 5438, - "loc": { - "start": { - "line": 184, - "column": 55 - }, - "end": { - "line": 184, - "column": 63 - } - }, - "object": { - "type": "Identifier", - "start": 5430, - "end": 5434, - "loc": { - "start": { - "line": 184, - "column": 55 - }, - "end": { - "line": 184, - "column": 59 - }, - "identifierName": "Math" - }, - "name": "Math" - }, - "property": { - "type": "Identifier", - "start": 5435, - "end": 5438, - "loc": { - "start": { - "line": 184, - "column": 60 - }, - "end": { - "line": 184, - "column": 63 - }, - "identifierName": "tan" - }, - "name": "tan" - }, - "computed": false - }, - "arguments": [ - { - "type": "BinaryExpression", - "start": 5439, - "end": 5485, - "loc": { - "start": { - "line": 184, - "column": 64 - }, - "end": { - "line": 184, - "column": 110 - } - }, - "left": { - "type": "BinaryExpression", - "start": 5439, - "end": 5477, - "loc": { - "start": { - "line": 184, - "column": 64 - }, - "end": { - "line": 184, - "column": 102 - } - }, - "left": { - "type": "BinaryExpression", - "start": 5440, - "end": 5466, - "loc": { - "start": { - "line": 184, - "column": 65 - }, - "end": { - "line": 184, - "column": 91 - } - }, - "left": { - "type": "MemberExpression", - "start": 5440, - "end": 5462, - "loc": { - "start": { - "line": 184, - "column": 65 - }, - "end": { - "line": 184, - "column": 87 - } - }, - "object": { - "type": "MemberExpression", - "start": 5440, - "end": 5458, - "loc": { - "start": { - "line": 184, - "column": 65 - }, - "end": { - "line": 184, - "column": 83 - } - }, - "object": { - "type": "Identifier", - "start": 5440, - "end": 5446, - "loc": { - "start": { - "line": 184, - "column": 65 - }, - "end": { - "line": 184, - "column": 71 - }, - "identifierName": "camera" - }, - "name": "camera" - }, - "property": { - "type": "Identifier", - "start": 5447, - "end": 5458, - "loc": { - "start": { - "line": 184, - "column": 72 - }, - "end": { - "line": 184, - "column": 83 - }, - "identifierName": "perspective" - }, - "name": "perspective" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5459, - "end": 5462, - "loc": { - "start": { - "line": 184, - "column": 84 - }, - "end": { - "line": 184, - "column": 87 - }, - "identifierName": "fov" - }, - "name": "fov" - }, - "computed": false - }, - "operator": "/", - "right": { - "type": "NumericLiteral", - "start": 5465, - "end": 5466, - "loc": { - "start": { - "line": 184, - "column": 90 - }, - "end": { - "line": 184, - "column": 91 - } - }, - "extra": { - "rawValue": 2, - "raw": "2" - }, - "value": 2 - }, - "extra": { - "parenthesized": true, - "parenStart": 5439 - } - }, - "operator": "*", - "right": { - "type": "MemberExpression", - "start": 5470, - "end": 5477, - "loc": { - "start": { - "line": 184, - "column": 95 - }, - "end": { - "line": 184, - "column": 102 - } - }, - "object": { - "type": "Identifier", - "start": 5470, - "end": 5474, - "loc": { - "start": { - "line": 184, - "column": 95 - }, - "end": { - "line": 184, - "column": 99 - }, - "identifierName": "Math" - }, - "name": "Math" - }, - "property": { - "type": "Identifier", - "start": 5475, - "end": 5477, - "loc": { - "start": { - "line": 184, - "column": 100 - }, - "end": { - "line": 184, - "column": 102 - }, - "identifierName": "PI" - }, - "name": "PI" - }, - "computed": false - } - }, - "operator": "/", - "right": { - "type": "NumericLiteral", - "start": 5480, - "end": 5485, - "loc": { - "start": { - "line": 184, - "column": 105 - }, - "end": { - "line": 184, - "column": 110 - } - }, - "extra": { - "rawValue": 180, - "raw": "180.0" - }, - "value": 180 - } - } - ] - } - } - } - ], - "kind": "const" - }, - { - "type": "ExpressionStatement", - "start": 5513, - "end": 5584, - "loc": { - "start": { - "line": 186, - "column": 24 - }, - "end": { - "line": 186, - "column": 95 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 5513, - "end": 5583, - "loc": { - "start": { - "line": 186, - "column": 24 - }, - "end": { - "line": 186, - "column": 94 - } - }, - "operator": "+=", - "left": { - "type": "MemberExpression", - "start": 5513, - "end": 5530, - "loc": { - "start": { - "line": 186, - "column": 24 - }, - "end": { - "line": 186, - "column": 41 - } - }, - "object": { - "type": "Identifier", - "start": 5513, - "end": 5520, - "loc": { - "start": { - "line": 186, - "column": 24 - }, - "end": { - "line": 186, - "column": 31 - }, - "identifierName": "updates" - }, - "name": "updates" + "computed": false }, "property": { "type": "Identifier", - "start": 5521, - "end": 5530, + "start": 5538, + "end": 5541, "loc": { "start": { - "line": 186, - "column": 32 + "line": 187, + "column": 80 }, "end": { - "line": 186, - "column": 41 + "line": 187, + "column": 83 }, - "identifierName": "panDeltaX" + "identifierName": "fov" }, - "name": "panDeltaX" + "name": "fov" }, "computed": false }, + "operator": "/", "right": { - "type": "BinaryExpression", - "start": 5535, - "end": 5582, + "type": "NumericLiteral", + "start": 5544, + "end": 5545, "loc": { "start": { - "line": 186, - "column": 46 + "line": 187, + "column": 86 }, "end": { - "line": 186, - "column": 93 - } - }, - "left": { - "type": "BinaryExpression", - "start": 5535, - "end": 5567, - "loc": { - "start": { - "line": 186, - "column": 46 - }, - "end": { - "line": 186, - "column": 78 - } - }, - "left": { - "type": "BinaryExpression", - "start": 5535, - "end": 5550, - "loc": { - "start": { - "line": 186, - "column": 46 - }, - "end": { - "line": 186, - "column": 61 - } - }, - "left": { - "type": "NumericLiteral", - "start": 5535, - "end": 5538, - "loc": { - "start": { - "line": 186, - "column": 46 - }, - "end": { - "line": 186, - "column": 49 - } - }, - "extra": { - "rawValue": 1.5, - "raw": "1.5" - }, - "value": 1.5 - }, - "operator": "*", - "right": { - "type": "Identifier", - "start": 5541, - "end": 5550, - "loc": { - "start": { - "line": 186, - "column": 52 - }, - "end": { - "line": 186, - "column": 61 - }, - "identifierName": "xPanDelta" - }, - "name": "xPanDelta" - } - }, - "operator": "*", - "right": { - "type": "Identifier", - "start": 5553, - "end": 5567, - "loc": { - "start": { - "line": 186, - "column": 64 - }, - "end": { - "line": 186, - "column": 78 - }, - "identifierName": "targetDistance" - }, - "name": "targetDistance" + "line": 187, + "column": 87 } }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 5570, - "end": 5582, - "loc": { - "start": { - "line": 186, - "column": 81 - }, - "end": { - "line": 186, - "column": 93 - }, - "identifierName": "canvasHeight" - }, - "name": "canvasHeight" - }, "extra": { - "parenthesized": true, - "parenStart": 5534 - } - } - } - }, - { - "type": "ExpressionStatement", - "start": 5609, - "end": 5680, - "loc": { - "start": { - "line": 187, - "column": 24 + "rawValue": 2, + "raw": "2" + }, + "value": 2 }, - "end": { - "line": 187, - "column": 95 + "extra": { + "parenthesized": true, + "parenStart": 5518 } }, - "expression": { - "type": "AssignmentExpression", - "start": 5609, - "end": 5679, + "operator": "*", + "right": { + "type": "MemberExpression", + "start": 5549, + "end": 5556, "loc": { "start": { "line": 187, - "column": 24 + "column": 91 }, "end": { "line": 187, - "column": 94 + "column": 98 } }, - "operator": "+=", - "left": { - "type": "MemberExpression", - "start": 5609, - "end": 5626, + "object": { + "type": "Identifier", + "start": 5549, + "end": 5553, "loc": { "start": { "line": 187, - "column": 24 + "column": 91 }, "end": { "line": 187, - "column": 41 - } - }, - "object": { - "type": "Identifier", - "start": 5609, - "end": 5616, - "loc": { - "start": { - "line": 187, - "column": 24 - }, - "end": { - "line": 187, - "column": 31 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 5617, - "end": 5626, - "loc": { - "start": { - "line": 187, - "column": 32 - }, - "end": { - "line": 187, - "column": 41 - }, - "identifierName": "panDeltaY" + "column": 95 }, - "name": "panDeltaY" + "identifierName": "Math" }, - "computed": false + "name": "Math" }, - "right": { - "type": "BinaryExpression", - "start": 5631, - "end": 5678, + "property": { + "type": "Identifier", + "start": 5554, + "end": 5556, "loc": { "start": { "line": 187, - "column": 46 + "column": 96 }, "end": { "line": 187, - "column": 93 - } - }, - "left": { - "type": "BinaryExpression", - "start": 5631, - "end": 5663, - "loc": { - "start": { - "line": 187, - "column": 46 - }, - "end": { - "line": 187, - "column": 78 - } - }, - "left": { - "type": "BinaryExpression", - "start": 5631, - "end": 5646, - "loc": { - "start": { - "line": 187, - "column": 46 - }, - "end": { - "line": 187, - "column": 61 - } - }, - "left": { - "type": "NumericLiteral", - "start": 5631, - "end": 5634, - "loc": { - "start": { - "line": 187, - "column": 46 - }, - "end": { - "line": 187, - "column": 49 - } - }, - "extra": { - "rawValue": 1.5, - "raw": "1.5" - }, - "value": 1.5 - }, - "operator": "*", - "right": { - "type": "Identifier", - "start": 5637, - "end": 5646, - "loc": { - "start": { - "line": 187, - "column": 52 - }, - "end": { - "line": 187, - "column": 61 - }, - "identifierName": "yPanDelta" - }, - "name": "yPanDelta" - } - }, - "operator": "*", - "right": { - "type": "Identifier", - "start": 5649, - "end": 5663, - "loc": { - "start": { - "line": 187, - "column": 64 - }, - "end": { - "line": 187, - "column": 78 - }, - "identifierName": "targetDistance" - }, - "name": "targetDistance" - } - }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 5666, - "end": 5678, - "loc": { - "start": { - "line": 187, - "column": 81 - }, - "end": { - "line": 187, - "column": 93 - }, - "identifierName": "canvasHeight" + "column": 98 }, - "name": "canvasHeight" + "identifierName": "PI" }, - "extra": { - "parenthesized": true, - "parenStart": 5630 - } - } + "name": "PI" + }, + "computed": false } + }, + "operator": "/", + "right": { + "type": "NumericLiteral", + "start": 5559, + "end": 5564, + "loc": { + "start": { + "line": 187, + "column": 101 + }, + "end": { + "line": 187, + "column": 106 + } + }, + "extra": { + "rawValue": 180, + "raw": "180.0" + }, + "value": 180 } - ], - "directives": [] + } + ] + } + } + } + ], + "kind": "const" + }, + { + "type": "ExpressionStatement", + "start": 5588, + "end": 5659, + "loc": { + "start": { + "line": 189, + "column": 20 + }, + "end": { + "line": 189, + "column": 91 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5588, + "end": 5658, + "loc": { + "start": { + "line": 189, + "column": 20 + }, + "end": { + "line": 189, + "column": 90 + } + }, + "operator": "+=", + "left": { + "type": "MemberExpression", + "start": 5588, + "end": 5605, + "loc": { + "start": { + "line": 189, + "column": 20 + }, + "end": { + "line": 189, + "column": 37 + } + }, + "object": { + "type": "Identifier", + "start": 5588, + "end": 5595, + "loc": { + "start": { + "line": 189, + "column": 20 + }, + "end": { + "line": 189, + "column": 27 + }, + "identifierName": "updates" + }, + "name": "updates" + }, + "property": { + "type": "Identifier", + "start": 5596, + "end": 5605, + "loc": { + "start": { + "line": 189, + "column": 28 + }, + "end": { + "line": 189, + "column": 37 + }, + "identifierName": "panDeltaX" + }, + "name": "panDeltaX" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 5610, + "end": 5657, + "loc": { + "start": { + "line": 189, + "column": 42 + }, + "end": { + "line": 189, + "column": 89 + } + }, + "left": { + "type": "BinaryExpression", + "start": 5610, + "end": 5642, + "loc": { + "start": { + "line": 189, + "column": 42 + }, + "end": { + "line": 189, + "column": 74 + } + }, + "left": { + "type": "BinaryExpression", + "start": 5610, + "end": 5625, + "loc": { + "start": { + "line": 189, + "column": 42 + }, + "end": { + "line": 189, + "column": 57 + } }, - "alternate": { - "type": "BlockStatement", - "start": 5709, - "end": 5933, + "left": { + "type": "NumericLiteral", + "start": 5610, + "end": 5613, "loc": { "start": { "line": 189, - "column": 27 + "column": 42 }, "end": { - "line": 193, - "column": 21 + "line": 189, + "column": 45 } }, - "body": [ - { - "type": "ExpressionStatement", - "start": 5736, - "end": 5811, - "loc": { - "start": { - "line": 191, - "column": 24 - }, - "end": { - "line": 191, - "column": 99 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 5736, - "end": 5810, - "loc": { - "start": { - "line": 191, - "column": 24 - }, - "end": { - "line": 191, - "column": 98 - } - }, - "operator": "+=", - "left": { - "type": "MemberExpression", - "start": 5736, - "end": 5753, - "loc": { - "start": { - "line": 191, - "column": 24 - }, - "end": { - "line": 191, - "column": 41 - } - }, - "object": { - "type": "Identifier", - "start": 5736, - "end": 5743, - "loc": { - "start": { - "line": 191, - "column": 24 - }, - "end": { - "line": 191, - "column": 31 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 5744, - "end": 5753, - "loc": { - "start": { - "line": 191, - "column": 32 - }, - "end": { - "line": 191, - "column": 41 - }, - "identifierName": "panDeltaX" - }, - "name": "panDeltaX" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 5757, - "end": 5810, - "loc": { - "start": { - "line": 191, - "column": 45 - }, - "end": { - "line": 191, - "column": 98 - } - }, - "left": { - "type": "BinaryExpression", - "start": 5757, - "end": 5781, - "loc": { - "start": { - "line": 191, - "column": 45 - }, - "end": { - "line": 191, - "column": 69 - } - }, - "left": { - "type": "NumericLiteral", - "start": 5757, - "end": 5760, - "loc": { - "start": { - "line": 191, - "column": 45 - }, - "end": { - "line": 191, - "column": 48 - } - }, - "extra": { - "rawValue": 0.5, - "raw": "0.5" - }, - "value": 0.5 - }, - "operator": "*", - "right": { - "type": "MemberExpression", - "start": 5763, - "end": 5781, - "loc": { - "start": { - "line": 191, - "column": 51 - }, - "end": { - "line": 191, - "column": 69 - } - }, - "object": { - "type": "MemberExpression", - "start": 5763, - "end": 5775, - "loc": { - "start": { - "line": 191, - "column": 51 - }, - "end": { - "line": 191, - "column": 63 - } - }, - "object": { - "type": "Identifier", - "start": 5763, - "end": 5769, - "loc": { - "start": { - "line": 191, - "column": 51 - }, - "end": { - "line": 191, - "column": 57 - }, - "identifierName": "camera" - }, - "name": "camera" - }, - "property": { - "type": "Identifier", - "start": 5770, - "end": 5775, - "loc": { - "start": { - "line": 191, - "column": 58 - }, - "end": { - "line": 191, - "column": 63 - }, - "identifierName": "ortho" - }, - "name": "ortho" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5776, - "end": 5781, - "loc": { - "start": { - "line": 191, - "column": 64 - }, - "end": { - "line": 191, - "column": 69 - }, - "identifierName": "scale" - }, - "name": "scale" - }, - "computed": false - } - }, - "operator": "*", - "right": { - "type": "BinaryExpression", - "start": 5785, - "end": 5809, - "loc": { - "start": { - "line": 191, - "column": 73 - }, - "end": { - "line": 191, - "column": 97 - } - }, - "left": { - "type": "Identifier", - "start": 5785, - "end": 5794, - "loc": { - "start": { - "line": 191, - "column": 73 - }, - "end": { - "line": 191, - "column": 82 - }, - "identifierName": "xPanDelta" - }, - "name": "xPanDelta" - }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 5797, - "end": 5809, - "loc": { - "start": { - "line": 191, - "column": 85 - }, - "end": { - "line": 191, - "column": 97 - }, - "identifierName": "canvasHeight" - }, - "name": "canvasHeight" - }, - "extra": { - "parenthesized": true, - "parenStart": 5784 - } - } - } - } + "extra": { + "rawValue": 1.5, + "raw": "1.5" + }, + "value": 1.5 + }, + "operator": "*", + "right": { + "type": "Identifier", + "start": 5616, + "end": 5625, + "loc": { + "start": { + "line": 189, + "column": 48 }, - { - "type": "ExpressionStatement", - "start": 5836, - "end": 5911, - "loc": { - "start": { - "line": 192, - "column": 24 - }, - "end": { - "line": 192, - "column": 99 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 5836, - "end": 5910, - "loc": { - "start": { - "line": 192, - "column": 24 - }, - "end": { - "line": 192, - "column": 98 - } - }, - "operator": "+=", - "left": { - "type": "MemberExpression", - "start": 5836, - "end": 5853, - "loc": { - "start": { - "line": 192, - "column": 24 - }, - "end": { - "line": 192, - "column": 41 - } - }, - "object": { - "type": "Identifier", - "start": 5836, - "end": 5843, - "loc": { - "start": { - "line": 192, - "column": 24 - }, - "end": { - "line": 192, - "column": 31 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 5844, - "end": 5853, - "loc": { - "start": { - "line": 192, - "column": 32 - }, - "end": { - "line": 192, - "column": 41 - }, - "identifierName": "panDeltaY" - }, - "name": "panDeltaY" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 5857, - "end": 5910, - "loc": { - "start": { - "line": 192, - "column": 45 - }, - "end": { - "line": 192, - "column": 98 - } - }, - "left": { - "type": "BinaryExpression", - "start": 5857, - "end": 5881, - "loc": { - "start": { - "line": 192, - "column": 45 - }, - "end": { - "line": 192, - "column": 69 - } - }, - "left": { - "type": "NumericLiteral", - "start": 5857, - "end": 5860, - "loc": { - "start": { - "line": 192, - "column": 45 - }, - "end": { - "line": 192, - "column": 48 - } - }, - "extra": { - "rawValue": 0.5, - "raw": "0.5" - }, - "value": 0.5 - }, - "operator": "*", - "right": { - "type": "MemberExpression", - "start": 5863, - "end": 5881, - "loc": { - "start": { - "line": 192, - "column": 51 - }, - "end": { - "line": 192, - "column": 69 - } - }, - "object": { - "type": "MemberExpression", - "start": 5863, - "end": 5875, - "loc": { - "start": { - "line": 192, - "column": 51 - }, - "end": { - "line": 192, - "column": 63 - } - }, - "object": { - "type": "Identifier", - "start": 5863, - "end": 5869, - "loc": { - "start": { - "line": 192, - "column": 51 - }, - "end": { - "line": 192, - "column": 57 - }, - "identifierName": "camera" - }, - "name": "camera" - }, - "property": { - "type": "Identifier", - "start": 5870, - "end": 5875, - "loc": { - "start": { - "line": 192, - "column": 58 - }, - "end": { - "line": 192, - "column": 63 - }, - "identifierName": "ortho" - }, - "name": "ortho" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5876, - "end": 5881, - "loc": { - "start": { - "line": 192, - "column": 64 - }, - "end": { - "line": 192, - "column": 69 - }, - "identifierName": "scale" - }, - "name": "scale" - }, - "computed": false - } - }, - "operator": "*", - "right": { - "type": "BinaryExpression", - "start": 5885, - "end": 5909, - "loc": { - "start": { - "line": 192, - "column": 73 - }, - "end": { - "line": 192, - "column": 97 - } - }, - "left": { - "type": "Identifier", - "start": 5885, - "end": 5894, - "loc": { - "start": { - "line": 192, - "column": 73 - }, - "end": { - "line": 192, - "column": 82 - }, - "identifierName": "yPanDelta" - }, - "name": "yPanDelta" - }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 5897, - "end": 5909, - "loc": { - "start": { - "line": 192, - "column": 85 - }, - "end": { - "line": 192, - "column": 97 - }, - "identifierName": "canvasHeight" - }, - "name": "canvasHeight" - }, - "extra": { - "parenthesized": true, - "parenStart": 5884 - } - } - } - } - } - ], - "directives": [] + "end": { + "line": 189, + "column": 57 + }, + "identifierName": "xPanDelta" + }, + "name": "xPanDelta" + } + }, + "operator": "*", + "right": { + "type": "Identifier", + "start": 5628, + "end": 5642, + "loc": { + "start": { + "line": 189, + "column": 60 + }, + "end": { + "line": 189, + "column": 74 + }, + "identifierName": "targetDistance" }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " We use only canvasHeight here so that aspect ratio does not distort speed", - "start": 5074, - "end": 5150, - "loc": { - "start": { - "line": 179, - "column": 20 - }, - "end": { - "line": 179, - "column": 96 - } - } - } - ] + "name": "targetDistance" } - ], - "directives": [] + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 5645, + "end": 5657, + "loc": { + "start": { + "line": 189, + "column": 77 + }, + "end": { + "line": 189, + "column": 89 + }, + "identifierName": "canvasHeight" + }, + "name": "canvasHeight" + }, + "extra": { + "parenthesized": true, + "parenStart": 5609 + } + } + } + }, + { + "type": "ExpressionStatement", + "start": 5680, + "end": 5751, + "loc": { + "start": { + "line": 190, + "column": 20 }, - "alternate": { - "type": "IfStatement", - "start": 5958, - "end": 6691, + "end": { + "line": 190, + "column": 91 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 5680, + "end": 5750, + "loc": { + "start": { + "line": 190, + "column": 20 + }, + "end": { + "line": 190, + "column": 90 + } + }, + "operator": "+=", + "left": { + "type": "MemberExpression", + "start": 5680, + "end": 5697, "loc": { "start": { - "line": 195, - "column": 23 + "line": 190, + "column": 20 }, "end": { - "line": 208, - "column": 17 + "line": 190, + "column": 37 } }, - "test": { - "type": "LogicalExpression", - "start": 5962, - "end": 5997, + "object": { + "type": "Identifier", + "start": 5680, + "end": 5687, "loc": { "start": { - "line": 195, + "line": 190, + "column": 20 + }, + "end": { + "line": 190, "column": 27 }, + "identifierName": "updates" + }, + "name": "updates" + }, + "property": { + "type": "Identifier", + "start": 5688, + "end": 5697, + "loc": { + "start": { + "line": 190, + "column": 28 + }, "end": { - "line": 195, - "column": 62 + "line": 190, + "column": 37 + }, + "identifierName": "panDeltaY" + }, + "name": "panDeltaY" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 5702, + "end": 5749, + "loc": { + "start": { + "line": 190, + "column": 42 + }, + "end": { + "line": 190, + "column": 89 + } + }, + "left": { + "type": "BinaryExpression", + "start": 5702, + "end": 5734, + "loc": { + "start": { + "line": 190, + "column": 42 + }, + "end": { + "line": 190, + "column": 74 } }, "left": { - "type": "UnaryExpression", - "start": 5962, - "end": 5978, + "type": "BinaryExpression", + "start": 5702, + "end": 5717, "loc": { "start": { - "line": 195, - "column": 27 + "line": 190, + "column": 42 }, "end": { - "line": 195, - "column": 43 + "line": 190, + "column": 57 } }, - "operator": "!", - "prefix": true, - "argument": { - "type": "Identifier", - "start": 5963, - "end": 5978, + "left": { + "type": "NumericLiteral", + "start": 5702, + "end": 5705, "loc": { "start": { - "line": 195, - "column": 28 + "line": 190, + "column": 42 }, "end": { - "line": 195, - "column": 43 - }, - "identifierName": "mouseDownMiddle" + "line": 190, + "column": 45 + } }, - "name": "mouseDownMiddle" - }, - "extra": { - "parenthesizedArgument": false - } - }, - "operator": "&&", - "right": { - "type": "UnaryExpression", - "start": 5982, - "end": 5997, - "loc": { - "start": { - "line": 195, - "column": 47 + "extra": { + "rawValue": 1.5, + "raw": "1.5" }, - "end": { - "line": 195, - "column": 62 - } + "value": 1.5 }, - "operator": "!", - "prefix": true, - "argument": { + "operator": "*", + "right": { "type": "Identifier", - "start": 5983, - "end": 5997, + "start": 5708, + "end": 5717, "loc": { "start": { - "line": 195, + "line": 190, "column": 48 }, "end": { - "line": 195, - "column": 62 + "line": 190, + "column": 57 }, - "identifierName": "mouseDownRight" + "identifierName": "yPanDelta" }, - "name": "mouseDownRight" - }, - "extra": { - "parenthesizedArgument": false + "name": "yPanDelta" } + }, + "operator": "*", + "right": { + "type": "Identifier", + "start": 5720, + "end": 5734, + "loc": { + "start": { + "line": 190, + "column": 60 + }, + "end": { + "line": 190, + "column": 74 + }, + "identifierName": "targetDistance" + }, + "name": "targetDistance" } }, - "consequent": { - "type": "BlockStatement", - "start": 5999, - "end": 6691, + "operator": "/", + "right": { + "type": "Identifier", + "start": 5737, + "end": 5749, "loc": { "start": { - "line": 195, - "column": 64 + "line": 190, + "column": 77 }, "end": { - "line": 208, - "column": 17 - } + "line": 190, + "column": 89 + }, + "identifierName": "canvasHeight" }, - "body": [ - { - "type": "IfStatement", - "start": 6022, - "end": 6673, - "loc": { - "start": { - "line": 197, - "column": 20 - }, - "end": { - "line": 207, - "column": 21 - } - }, - "test": { - "type": "UnaryExpression", - "start": 6026, - "end": 6043, - "loc": { - "start": { - "line": 197, - "column": 24 - }, - "end": { - "line": 197, - "column": 41 - } - }, - "operator": "!", - "prefix": true, - "argument": { - "type": "MemberExpression", - "start": 6027, - "end": 6043, - "loc": { - "start": { - "line": 197, - "column": 25 - }, - "end": { - "line": 197, - "column": 41 - } - }, - "object": { - "type": "Identifier", - "start": 6027, - "end": 6034, - "loc": { - "start": { - "line": 197, - "column": 25 - }, - "end": { - "line": 197, - "column": 32 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 6035, - "end": 6043, - "loc": { - "start": { - "line": 197, - "column": 33 - }, - "end": { - "line": 197, - "column": 41 - }, - "identifierName": "planView" - }, - "name": "planView" - }, - "computed": false - }, - "extra": { - "parenthesizedArgument": false - } - }, - "consequent": { - "type": "BlockStatement", - "start": 6045, - "end": 6673, - "loc": { - "start": { - "line": 197, - "column": 43 - }, - "end": { - "line": 207, - "column": 21 - } - }, - "body": [ - { - "type": "IfStatement", - "start": 6105, - "end": 6651, - "loc": { - "start": { - "line": 199, - "column": 24 - }, - "end": { - "line": 206, - "column": 25 - } - }, - "test": { - "type": "MemberExpression", - "start": 6109, - "end": 6128, - "loc": { - "start": { - "line": 199, - "column": 28 - }, - "end": { - "line": 199, - "column": 47 - } - }, - "object": { - "type": "Identifier", - "start": 6109, - "end": 6116, - "loc": { - "start": { - "line": 199, - "column": 28 - }, - "end": { - "line": 199, - "column": 35 - }, - "identifierName": "configs" - }, - "name": "configs", - "leadingComments": null - }, - "property": { - "type": "Identifier", - "start": 6117, - "end": 6128, - "loc": { - "start": { - "line": 199, - "column": 36 - }, - "end": { - "line": 199, - "column": 47 - }, - "identifierName": "firstPerson" - }, - "name": "firstPerson" - }, - "computed": false, - "leadingComments": null - }, - "consequent": { - "type": "BlockStatement", - "start": 6130, - "end": 6385, - "loc": { - "start": { - "line": 199, - "column": 49 - }, - "end": { - "line": 203, - "column": 25 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 6160, - "end": 6243, - "loc": { - "start": { - "line": 200, - "column": 28 - }, - "end": { - "line": 200, - "column": 111 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 6160, - "end": 6242, - "loc": { - "start": { - "line": 200, - "column": 28 - }, - "end": { - "line": 200, - "column": 110 - } - }, - "operator": "-=", - "left": { - "type": "MemberExpression", - "start": 6160, - "end": 6180, - "loc": { - "start": { - "line": 200, - "column": 28 - }, - "end": { - "line": 200, - "column": 48 - } - }, - "object": { - "type": "Identifier", - "start": 6160, - "end": 6167, - "loc": { - "start": { - "line": 200, - "column": 28 - }, - "end": { - "line": 200, - "column": 35 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 6168, - "end": 6180, - "loc": { - "start": { - "line": 200, - "column": 36 - }, - "end": { - "line": 200, - "column": 48 - }, - "identifierName": "rotateDeltaY" - }, - "name": "rotateDeltaY" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 6184, - "end": 6242, - "loc": { - "start": { - "line": 200, - "column": 52 - }, - "end": { - "line": 200, - "column": 110 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6184, - "end": 6238, - "loc": { - "start": { - "line": 200, - "column": 52 - }, - "end": { - "line": 200, - "column": 106 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6185, - "end": 6210, - "loc": { - "start": { - "line": 200, - "column": 53 - }, - "end": { - "line": 200, - "column": 78 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6186, - "end": 6195, - "loc": { - "start": { - "line": 200, - "column": 54 - }, - "end": { - "line": 200, - "column": 63 - } - }, - "left": { - "type": "Identifier", - "start": 6186, - "end": 6187, - "loc": { - "start": { - "line": 200, - "column": 54 - }, - "end": { - "line": 200, - "column": 55 - }, - "identifierName": "x" - }, - "name": "x" - }, - "operator": "-", - "right": { - "type": "Identifier", - "start": 6190, - "end": 6195, - "loc": { - "start": { - "line": 200, - "column": 58 - }, - "end": { - "line": 200, - "column": 63 - }, - "identifierName": "lastX" - }, - "name": "lastX" - }, - "extra": { - "parenthesized": true, - "parenStart": 6185 - } - }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 6199, - "end": 6210, - "loc": { - "start": { - "line": 200, - "column": 67 - }, - "end": { - "line": 200, - "column": 78 - }, - "identifierName": "canvasWidth" - }, - "name": "canvasWidth" - }, - "extra": { - "parenthesized": true, - "parenStart": 6184 - } - }, - "operator": "*", - "right": { - "type": "MemberExpression", - "start": 6214, - "end": 6238, - "loc": { - "start": { - "line": 200, - "column": 82 - }, - "end": { - "line": 200, - "column": 106 - } - }, - "object": { - "type": "Identifier", - "start": 6214, - "end": 6221, - "loc": { - "start": { - "line": 200, - "column": 82 - }, - "end": { - "line": 200, - "column": 89 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 6222, - "end": 6238, - "loc": { - "start": { - "line": 200, - "column": 90 - }, - "end": { - "line": 200, - "column": 106 - }, - "identifierName": "dragRotationRate" - }, - "name": "dragRotationRate" - }, - "computed": false - } - }, - "operator": "/", - "right": { - "type": "NumericLiteral", - "start": 6241, - "end": 6242, - "loc": { - "start": { - "line": 200, - "column": 109 - }, - "end": { - "line": 200, - "column": 110 - } - }, - "extra": { - "rawValue": 2, - "raw": "2" - }, - "value": 2 - } - } - } - }, - { - "type": "ExpressionStatement", - "start": 6272, - "end": 6358, - "loc": { - "start": { - "line": 201, - "column": 28 - }, - "end": { - "line": 201, - "column": 114 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 6272, - "end": 6357, - "loc": { - "start": { - "line": 201, - "column": 28 - }, - "end": { - "line": 201, - "column": 113 - } - }, - "operator": "+=", - "left": { - "type": "MemberExpression", - "start": 6272, - "end": 6292, - "loc": { - "start": { - "line": 201, - "column": 28 - }, - "end": { - "line": 201, - "column": 48 - } - }, - "object": { - "type": "Identifier", - "start": 6272, - "end": 6279, - "loc": { - "start": { - "line": 201, - "column": 28 - }, - "end": { - "line": 201, - "column": 35 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 6280, - "end": 6292, - "loc": { - "start": { - "line": 201, - "column": 36 - }, - "end": { - "line": 201, - "column": 48 - }, - "identifierName": "rotateDeltaX" - }, - "name": "rotateDeltaX" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 6296, - "end": 6357, - "loc": { - "start": { - "line": 201, - "column": 52 - }, - "end": { - "line": 201, - "column": 113 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6297, - "end": 6323, - "loc": { - "start": { - "line": 201, - "column": 53 - }, - "end": { - "line": 201, - "column": 79 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6298, - "end": 6307, - "loc": { - "start": { - "line": 201, - "column": 54 - }, - "end": { - "line": 201, - "column": 63 - } - }, - "left": { - "type": "Identifier", - "start": 6298, - "end": 6299, - "loc": { - "start": { - "line": 201, - "column": 54 - }, - "end": { - "line": 201, - "column": 55 - }, - "identifierName": "y" - }, - "name": "y" - }, - "operator": "-", - "right": { - "type": "Identifier", - "start": 6302, - "end": 6307, - "loc": { - "start": { - "line": 201, - "column": 58 - }, - "end": { - "line": 201, - "column": 63 - }, - "identifierName": "lastY" - }, - "name": "lastY" - }, - "extra": { - "parenthesized": true, - "parenStart": 6297 - } - }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 6311, - "end": 6323, - "loc": { - "start": { - "line": 201, - "column": 67 - }, - "end": { - "line": 201, - "column": 79 - }, - "identifierName": "canvasHeight" - }, - "name": "canvasHeight" - }, - "extra": { - "parenthesized": true, - "parenStart": 6296 - } - }, - "operator": "*", - "right": { - "type": "BinaryExpression", - "start": 6328, - "end": 6356, - "loc": { - "start": { - "line": 201, - "column": 84 - }, - "end": { - "line": 201, - "column": 112 - } - }, - "left": { - "type": "MemberExpression", - "start": 6328, - "end": 6352, - "loc": { - "start": { - "line": 201, - "column": 84 - }, - "end": { - "line": 201, - "column": 108 - } - }, - "object": { - "type": "Identifier", - "start": 6328, - "end": 6335, - "loc": { - "start": { - "line": 201, - "column": 84 - }, - "end": { - "line": 201, - "column": 91 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 6336, - "end": 6352, - "loc": { - "start": { - "line": 201, - "column": 92 - }, - "end": { - "line": 201, - "column": 108 - }, - "identifierName": "dragRotationRate" - }, - "name": "dragRotationRate" - }, - "computed": false - }, - "operator": "/", - "right": { - "type": "NumericLiteral", - "start": 6355, - "end": 6356, - "loc": { - "start": { - "line": 201, - "column": 111 - }, - "end": { - "line": 201, - "column": 112 - } - }, - "extra": { - "rawValue": 4, - "raw": "4" - }, - "value": 4 - }, - "extra": { - "parenthesized": true, - "parenStart": 6327 - } - } - } - } - } - ], - "directives": [] - }, - "alternate": { - "type": "BlockStatement", - "start": 6391, - "end": 6651, - "loc": { - "start": { - "line": 203, - "column": 31 - }, - "end": { - "line": 206, - "column": 25 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 6421, - "end": 6508, - "loc": { - "start": { - "line": 204, - "column": 28 - }, - "end": { - "line": 204, - "column": 115 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 6421, - "end": 6507, - "loc": { - "start": { - "line": 204, - "column": 28 - }, - "end": { - "line": 204, - "column": 114 - } - }, - "operator": "-=", - "left": { - "type": "MemberExpression", - "start": 6421, - "end": 6441, - "loc": { - "start": { - "line": 204, - "column": 28 - }, - "end": { - "line": 204, - "column": 48 - } - }, - "object": { - "type": "Identifier", - "start": 6421, - "end": 6428, - "loc": { - "start": { - "line": 204, - "column": 28 - }, - "end": { - "line": 204, - "column": 35 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 6429, - "end": 6441, - "loc": { - "start": { - "line": 204, - "column": 36 - }, - "end": { - "line": 204, - "column": 48 - }, - "identifierName": "rotateDeltaY" - }, - "name": "rotateDeltaY" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 6445, - "end": 6507, - "loc": { - "start": { - "line": 204, - "column": 52 - }, - "end": { - "line": 204, - "column": 114 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6446, - "end": 6471, - "loc": { - "start": { - "line": 204, - "column": 53 - }, - "end": { - "line": 204, - "column": 78 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6447, - "end": 6456, - "loc": { - "start": { - "line": 204, - "column": 54 - }, - "end": { - "line": 204, - "column": 63 - } - }, - "left": { - "type": "Identifier", - "start": 6447, - "end": 6448, - "loc": { - "start": { - "line": 204, - "column": 54 - }, - "end": { - "line": 204, - "column": 55 - }, - "identifierName": "x" - }, - "name": "x" - }, - "operator": "-", - "right": { - "type": "Identifier", - "start": 6451, - "end": 6456, - "loc": { - "start": { - "line": 204, - "column": 58 - }, - "end": { - "line": 204, - "column": 63 - }, - "identifierName": "lastX" - }, - "name": "lastX" - }, - "extra": { - "parenthesized": true, - "parenStart": 6446 - } - }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 6460, - "end": 6471, - "loc": { - "start": { - "line": 204, - "column": 67 - }, - "end": { - "line": 204, - "column": 78 - }, - "identifierName": "canvasWidth" - }, - "name": "canvasWidth" - }, - "extra": { - "parenthesized": true, - "parenStart": 6445 - } - }, - "operator": "*", - "right": { - "type": "BinaryExpression", - "start": 6476, - "end": 6506, - "loc": { - "start": { - "line": 204, - "column": 83 - }, - "end": { - "line": 204, - "column": 113 - } - }, - "left": { - "type": "MemberExpression", - "start": 6476, - "end": 6500, - "loc": { - "start": { - "line": 204, - "column": 83 - }, - "end": { - "line": 204, - "column": 107 - } - }, - "object": { - "type": "Identifier", - "start": 6476, - "end": 6483, - "loc": { - "start": { - "line": 204, - "column": 83 - }, - "end": { - "line": 204, - "column": 90 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 6484, - "end": 6500, - "loc": { - "start": { - "line": 204, - "column": 91 - }, - "end": { - "line": 204, - "column": 107 - }, - "identifierName": "dragRotationRate" - }, - "name": "dragRotationRate" - }, - "computed": false - }, - "operator": "*", - "right": { - "type": "NumericLiteral", - "start": 6503, - "end": 6506, - "loc": { - "start": { - "line": 204, - "column": 110 - }, - "end": { - "line": 204, - "column": 113 - } - }, - "extra": { - "rawValue": 1.5, - "raw": "1.5" - }, - "value": 1.5 - }, - "extra": { - "parenthesized": true, - "parenStart": 6475 - } - } - } - } - }, - { - "type": "ExpressionStatement", - "start": 6537, - "end": 6625, - "loc": { - "start": { - "line": 205, - "column": 28 - }, - "end": { - "line": 205, - "column": 116 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 6537, - "end": 6624, - "loc": { - "start": { - "line": 205, - "column": 28 - }, - "end": { - "line": 205, - "column": 115 - } - }, - "operator": "+=", - "left": { - "type": "MemberExpression", - "start": 6537, - "end": 6557, - "loc": { - "start": { - "line": 205, - "column": 28 - }, - "end": { - "line": 205, - "column": 48 - } - }, - "object": { - "type": "Identifier", - "start": 6537, - "end": 6544, - "loc": { - "start": { - "line": 205, - "column": 28 - }, - "end": { - "line": 205, - "column": 35 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 6545, - "end": 6557, - "loc": { - "start": { - "line": 205, - "column": 36 - }, - "end": { - "line": 205, - "column": 48 - }, - "identifierName": "rotateDeltaX" - }, - "name": "rotateDeltaX" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 6561, - "end": 6624, - "loc": { - "start": { - "line": 205, - "column": 52 - }, - "end": { - "line": 205, - "column": 115 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6562, - "end": 6588, - "loc": { - "start": { - "line": 205, - "column": 53 - }, - "end": { - "line": 205, - "column": 79 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6563, - "end": 6572, - "loc": { - "start": { - "line": 205, - "column": 54 - }, - "end": { - "line": 205, - "column": 63 - } - }, - "left": { - "type": "Identifier", - "start": 6563, - "end": 6564, - "loc": { - "start": { - "line": 205, - "column": 54 - }, - "end": { - "line": 205, - "column": 55 - }, - "identifierName": "y" - }, - "name": "y" - }, - "operator": "-", - "right": { - "type": "Identifier", - "start": 6567, - "end": 6572, - "loc": { - "start": { - "line": 205, - "column": 58 - }, - "end": { - "line": 205, - "column": 63 - }, - "identifierName": "lastY" - }, - "name": "lastY" - }, - "extra": { - "parenthesized": true, - "parenStart": 6562 - } - }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 6576, - "end": 6588, - "loc": { - "start": { - "line": 205, - "column": 67 - }, - "end": { - "line": 205, - "column": 79 - }, - "identifierName": "canvasHeight" - }, - "name": "canvasHeight" - }, - "extra": { - "parenthesized": true, - "parenStart": 6561 - } - }, - "operator": "*", - "right": { - "type": "BinaryExpression", - "start": 6593, - "end": 6623, - "loc": { - "start": { - "line": 205, - "column": 84 - }, - "end": { - "line": 205, - "column": 114 - } - }, - "left": { - "type": "MemberExpression", - "start": 6593, - "end": 6617, - "loc": { - "start": { - "line": 205, - "column": 84 - }, - "end": { - "line": 205, - "column": 108 - } - }, - "object": { - "type": "Identifier", - "start": 6593, - "end": 6600, - "loc": { - "start": { - "line": 205, - "column": 84 - }, - "end": { - "line": 205, - "column": 91 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 6601, - "end": 6617, - "loc": { - "start": { - "line": 205, - "column": 92 - }, - "end": { - "line": 205, - "column": 108 - }, - "identifierName": "dragRotationRate" - }, - "name": "dragRotationRate" - }, - "computed": false - }, - "operator": "*", - "right": { - "type": "NumericLiteral", - "start": 6620, - "end": 6623, - "loc": { - "start": { - "line": 205, - "column": 111 - }, - "end": { - "line": 205, - "column": 114 - } - }, - "extra": { - "rawValue": 1.5, - "raw": "1.5" - }, - "value": 1.5 - }, - "extra": { - "parenthesized": true, - "parenStart": 6592 - } - } - } - } - } - ], - "directives": [] - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " No rotating in plan-view mode", - "start": 6047, - "end": 6079, - "loc": { - "start": { - "line": 197, - "column": 45 - }, - "end": { - "line": 197, - "column": 77 - } - } - } - ] - } - ], - "directives": [] - }, - "alternate": null - } - ], - "directives": [] + "name": "canvasHeight" }, - "alternate": null + "extra": { + "parenthesized": true, + "parenStart": 5701 + } + } + } + } + ], + "directives": [] + }, + "alternate": { + "type": "BlockStatement", + "start": 5776, + "end": 5988, + "loc": { + "start": { + "line": 192, + "column": 23 + }, + "end": { + "line": 196, + "column": 17 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 5799, + "end": 5874, + "loc": { + "start": { + "line": 194, + "column": 20 + }, + "end": { + "line": 194, + "column": 95 } }, - { - "type": "ExpressionStatement", - "start": 6709, - "end": 6719, + "expression": { + "type": "AssignmentExpression", + "start": 5799, + "end": 5873, "loc": { "start": { - "line": 210, - "column": 16 + "line": 194, + "column": 20 }, "end": { - "line": 210, - "column": 26 + "line": 194, + "column": 94 } }, - "expression": { - "type": "AssignmentExpression", - "start": 6709, - "end": 6718, + "operator": "+=", + "left": { + "type": "MemberExpression", + "start": 5799, + "end": 5816, "loc": { "start": { - "line": 210, - "column": 16 + "line": 194, + "column": 20 }, "end": { - "line": 210, - "column": 25 + "line": 194, + "column": 37 } }, - "operator": "=", - "left": { + "object": { "type": "Identifier", - "start": 6709, - "end": 6714, + "start": 5799, + "end": 5806, "loc": { "start": { - "line": 210, - "column": 16 + "line": 194, + "column": 20 }, "end": { - "line": 210, - "column": 21 + "line": 194, + "column": 27 }, - "identifierName": "lastX" + "identifierName": "updates" }, - "name": "lastX" + "name": "updates" }, - "right": { + "property": { "type": "Identifier", - "start": 6717, - "end": 6718, + "start": 5807, + "end": 5816, "loc": { "start": { - "line": 210, - "column": 24 + "line": 194, + "column": 28 + }, + "end": { + "line": 194, + "column": 37 + }, + "identifierName": "panDeltaX" + }, + "name": "panDeltaX" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 5820, + "end": 5873, + "loc": { + "start": { + "line": 194, + "column": 41 + }, + "end": { + "line": 194, + "column": 94 + } + }, + "left": { + "type": "BinaryExpression", + "start": 5820, + "end": 5844, + "loc": { + "start": { + "line": 194, + "column": 41 + }, + "end": { + "line": 194, + "column": 65 + } + }, + "left": { + "type": "NumericLiteral", + "start": 5820, + "end": 5823, + "loc": { + "start": { + "line": 194, + "column": 41 + }, + "end": { + "line": 194, + "column": 44 + } + }, + "extra": { + "rawValue": 0.5, + "raw": "0.5" + }, + "value": 0.5 + }, + "operator": "*", + "right": { + "type": "MemberExpression", + "start": 5826, + "end": 5844, + "loc": { + "start": { + "line": 194, + "column": 47 + }, + "end": { + "line": 194, + "column": 65 + } + }, + "object": { + "type": "MemberExpression", + "start": 5826, + "end": 5838, + "loc": { + "start": { + "line": 194, + "column": 47 + }, + "end": { + "line": 194, + "column": 59 + } + }, + "object": { + "type": "Identifier", + "start": 5826, + "end": 5832, + "loc": { + "start": { + "line": 194, + "column": 47 + }, + "end": { + "line": 194, + "column": 53 + }, + "identifierName": "camera" + }, + "name": "camera" + }, + "property": { + "type": "Identifier", + "start": 5833, + "end": 5838, + "loc": { + "start": { + "line": 194, + "column": 54 + }, + "end": { + "line": 194, + "column": 59 + }, + "identifierName": "ortho" + }, + "name": "ortho" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5839, + "end": 5844, + "loc": { + "start": { + "line": 194, + "column": 60 + }, + "end": { + "line": 194, + "column": 65 + }, + "identifierName": "scale" + }, + "name": "scale" + }, + "computed": false + } + }, + "operator": "*", + "right": { + "type": "BinaryExpression", + "start": 5848, + "end": 5872, + "loc": { + "start": { + "line": 194, + "column": 69 }, "end": { - "line": 210, - "column": 25 + "line": 194, + "column": 93 + } + }, + "left": { + "type": "Identifier", + "start": 5848, + "end": 5857, + "loc": { + "start": { + "line": 194, + "column": 69 + }, + "end": { + "line": 194, + "column": 78 + }, + "identifierName": "xPanDelta" + }, + "name": "xPanDelta" + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 5860, + "end": 5872, + "loc": { + "start": { + "line": 194, + "column": 81 + }, + "end": { + "line": 194, + "column": 93 + }, + "identifierName": "canvasHeight" }, - "identifierName": "x" + "name": "canvasHeight" }, - "name": "x" + "extra": { + "parenthesized": true, + "parenStart": 5847 + } } } + } + }, + { + "type": "ExpressionStatement", + "start": 5895, + "end": 5970, + "loc": { + "start": { + "line": 195, + "column": 20 + }, + "end": { + "line": 195, + "column": 95 + } }, - { - "type": "ExpressionStatement", - "start": 6736, - "end": 6746, + "expression": { + "type": "AssignmentExpression", + "start": 5895, + "end": 5969, "loc": { "start": { - "line": 211, - "column": 16 + "line": 195, + "column": 20 }, "end": { - "line": 211, - "column": 26 + "line": 195, + "column": 94 } }, - "expression": { - "type": "AssignmentExpression", - "start": 6736, - "end": 6745, + "operator": "+=", + "left": { + "type": "MemberExpression", + "start": 5895, + "end": 5912, "loc": { "start": { - "line": 211, - "column": 16 + "line": 195, + "column": 20 }, "end": { - "line": 211, - "column": 25 + "line": 195, + "column": 37 } }, - "operator": "=", - "left": { + "object": { "type": "Identifier", - "start": 6736, - "end": 6741, + "start": 5895, + "end": 5902, "loc": { "start": { - "line": 211, - "column": 16 + "line": 195, + "column": 20 }, "end": { - "line": 211, - "column": 21 + "line": 195, + "column": 27 }, - "identifierName": "lastY" + "identifierName": "updates" }, - "name": "lastY" + "name": "updates" }, - "right": { + "property": { "type": "Identifier", - "start": 6744, - "end": 6745, + "start": 5903, + "end": 5912, "loc": { "start": { - "line": 211, - "column": 24 + "line": 195, + "column": 28 }, "end": { - "line": 211, - "column": 25 + "line": 195, + "column": 37 }, - "identifierName": "y" + "identifierName": "panDeltaY" }, - "name": "y" - } - } - } - ], - "directives": [] - } - } - } - ] - } - } - ], - "directives": [] - } - } - } - ] - } - }, - { - "type": "ExpressionStatement", - "start": 6784, - "end": 7141, - "loc": { - "start": { - "line": 215, - "column": 8 - }, - "end": { - "line": 229, - "column": 11 - } - }, - "expression": { - "type": "CallExpression", - "start": 6784, - "end": 7140, - "loc": { - "start": { - "line": 215, - "column": 8 - }, - "end": { - "line": 229, - "column": 10 - } - }, - "callee": { - "type": "MemberExpression", - "start": 6784, - "end": 6807, - "loc": { - "start": { - "line": 215, - "column": 8 - }, - "end": { - "line": 215, - "column": 31 - } - }, - "object": { - "type": "Identifier", - "start": 6784, - "end": 6790, - "loc": { - "start": { - "line": 215, - "column": 8 - }, - "end": { - "line": 215, - "column": 14 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "property": { - "type": "Identifier", - "start": 6791, - "end": 6807, - "loc": { - "start": { - "line": 215, - "column": 15 - }, - "end": { - "line": 215, - "column": 31 - }, - "identifierName": "addEventListener" - }, - "name": "addEventListener" - }, - "computed": false - }, - "arguments": [ - { - "type": "StringLiteral", - "start": 6808, - "end": 6819, - "loc": { - "start": { - "line": 215, - "column": 32 - }, - "end": { - "line": 215, - "column": 43 - } - }, - "extra": { - "rawValue": "mousemove", - "raw": "\"mousemove\"" - }, - "value": "mousemove" - }, - { - "type": "AssignmentExpression", - "start": 6821, - "end": 7139, - "loc": { - "start": { - "line": 215, - "column": 45 - }, - "end": { - "line": 229, - "column": 9 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 6821, - "end": 6849, - "loc": { - "start": { - "line": 215, - "column": 45 - }, - "end": { - "line": 215, - "column": 73 - } - }, - "object": { - "type": "ThisExpression", - "start": 6821, - "end": 6825, - "loc": { - "start": { - "line": 215, - "column": 45 - }, - "end": { - "line": 215, - "column": 49 - } - } - }, - "property": { - "type": "Identifier", - "start": 6826, - "end": 6849, - "loc": { - "start": { - "line": 215, - "column": 50 - }, - "end": { - "line": 215, - "column": 73 - }, - "identifierName": "_canvasMouseMoveHandler" - }, - "name": "_canvasMouseMoveHandler" - }, - "computed": false - }, - "right": { - "type": "ArrowFunctionExpression", - "start": 6852, - "end": 7139, - "loc": { - "start": { - "line": 215, - "column": 76 - }, - "end": { - "line": 229, - "column": 9 - } - }, - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [ - { - "type": "Identifier", - "start": 6853, - "end": 6854, - "loc": { - "start": { - "line": 215, - "column": 77 - }, - "end": { - "line": 215, - "column": 78 - }, - "identifierName": "e" - }, - "name": "e" - } - ], - "body": { - "type": "BlockStatement", - "start": 6859, - "end": 7139, - "loc": { - "start": { - "line": 215, - "column": 83 - }, - "end": { - "line": 229, - "column": 9 - } - }, - "body": [ - { - "type": "IfStatement", - "start": 6874, - "end": 6962, - "loc": { - "start": { - "line": 217, - "column": 12 - }, - "end": { - "line": 219, - "column": 13 - } + "name": "panDeltaY" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 5916, + "end": 5969, + "loc": { + "start": { + "line": 195, + "column": 41 + }, + "end": { + "line": 195, + "column": 94 + } + }, + "left": { + "type": "BinaryExpression", + "start": 5916, + "end": 5940, + "loc": { + "start": { + "line": 195, + "column": 41 + }, + "end": { + "line": 195, + "column": 65 + } + }, + "left": { + "type": "NumericLiteral", + "start": 5916, + "end": 5919, + "loc": { + "start": { + "line": 195, + "column": 41 + }, + "end": { + "line": 195, + "column": 44 + } + }, + "extra": { + "rawValue": 0.5, + "raw": "0.5" + }, + "value": 0.5 + }, + "operator": "*", + "right": { + "type": "MemberExpression", + "start": 5922, + "end": 5940, + "loc": { + "start": { + "line": 195, + "column": 47 + }, + "end": { + "line": 195, + "column": 65 + } + }, + "object": { + "type": "MemberExpression", + "start": 5922, + "end": 5934, + "loc": { + "start": { + "line": 195, + "column": 47 + }, + "end": { + "line": 195, + "column": 59 + } + }, + "object": { + "type": "Identifier", + "start": 5922, + "end": 5928, + "loc": { + "start": { + "line": 195, + "column": 47 + }, + "end": { + "line": 195, + "column": 53 + }, + "identifierName": "camera" + }, + "name": "camera" + }, + "property": { + "type": "Identifier", + "start": 5929, + "end": 5934, + "loc": { + "start": { + "line": 195, + "column": 54 + }, + "end": { + "line": 195, + "column": 59 + }, + "identifierName": "ortho" + }, + "name": "ortho" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5935, + "end": 5940, + "loc": { + "start": { + "line": 195, + "column": 60 + }, + "end": { + "line": 195, + "column": 65 + }, + "identifierName": "scale" + }, + "name": "scale" + }, + "computed": false + } + }, + "operator": "*", + "right": { + "type": "BinaryExpression", + "start": 5944, + "end": 5968, + "loc": { + "start": { + "line": 195, + "column": 69 + }, + "end": { + "line": 195, + "column": 93 + } + }, + "left": { + "type": "Identifier", + "start": 5944, + "end": 5953, + "loc": { + "start": { + "line": 195, + "column": 69 + }, + "end": { + "line": 195, + "column": 78 + }, + "identifierName": "yPanDelta" + }, + "name": "yPanDelta" + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 5956, + "end": 5968, + "loc": { + "start": { + "line": 195, + "column": 81 + }, + "end": { + "line": 195, + "column": 93 + }, + "identifierName": "canvasHeight" + }, + "name": "canvasHeight" + }, + "extra": { + "parenthesized": true, + "parenStart": 5943 + } + } + } + } + } + ], + "directives": [] + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " We use only canvasHeight here so that aspect ratio does not distort speed", + "start": 5165, + "end": 5241, + "loc": { + "start": { + "line": 182, + "column": 16 + }, + "end": { + "line": 182, + "column": 92 + } + } + } + ] + } + ], + "directives": [] }, - "test": { - "type": "UnaryExpression", - "start": 6878, - "end": 6921, + "alternate": { + "type": "IfStatement", + "start": 6009, + "end": 6719, "loc": { "start": { - "line": 217, - "column": 16 + "line": 198, + "column": 19 }, "end": { - "line": 217, - "column": 59 + "line": 211, + "column": 13 } }, - "operator": "!", - "prefix": true, - "argument": { + "test": { "type": "LogicalExpression", - "start": 6880, - "end": 6920, + "start": 6013, + "end": 6065, "loc": { "start": { - "line": 217, - "column": 18 + "line": 198, + "column": 23 }, "end": { - "line": 217, - "column": 58 + "line": 198, + "column": 75 } }, "left": { - "type": "MemberExpression", - "start": 6880, - "end": 6894, + "type": "LogicalExpression", + "start": 6013, + "end": 6046, "loc": { "start": { - "line": 217, - "column": 18 + "line": 198, + "column": 23 }, "end": { - "line": 217, - "column": 32 + "line": 198, + "column": 56 } }, - "object": { + "left": { "type": "Identifier", - "start": 6880, - "end": 6887, + "start": 6013, + "end": 6026, "loc": { "start": { - "line": 217, - "column": 18 + "line": 198, + "column": 23 }, "end": { - "line": 217, - "column": 25 + "line": 198, + "column": 36 }, - "identifierName": "configs" + "identifierName": "mouseDownLeft" }, - "name": "configs" + "name": "mouseDownLeft" }, - "property": { - "type": "Identifier", - "start": 6888, - "end": 6894, + "operator": "&&", + "right": { + "type": "UnaryExpression", + "start": 6030, + "end": 6046, "loc": { "start": { - "line": 217, - "column": 26 + "line": 198, + "column": 40 }, "end": { - "line": 217, - "column": 32 + "line": 198, + "column": 56 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 6031, + "end": 6046, + "loc": { + "start": { + "line": 198, + "column": 41 + }, + "end": { + "line": 198, + "column": 56 + }, + "identifierName": "mouseDownMiddle" }, - "identifierName": "active" + "name": "mouseDownMiddle" }, - "name": "active" - }, - "computed": false + "extra": { + "parenthesizedArgument": false + } + } }, "operator": "&&", "right": { - "type": "MemberExpression", - "start": 6898, - "end": 6920, + "type": "UnaryExpression", + "start": 6050, + "end": 6065, "loc": { "start": { - "line": 217, - "column": 36 + "line": 198, + "column": 60 }, "end": { - "line": 217, - "column": 58 + "line": 198, + "column": 75 } }, - "object": { - "type": "Identifier", - "start": 6898, - "end": 6905, - "loc": { - "start": { - "line": 217, - "column": 36 - }, - "end": { - "line": 217, - "column": 43 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { + "operator": "!", + "prefix": true, + "argument": { "type": "Identifier", - "start": 6906, - "end": 6920, + "start": 6051, + "end": 6065, "loc": { "start": { - "line": 217, - "column": 44 + "line": 198, + "column": 61 }, "end": { - "line": 217, - "column": 58 + "line": 198, + "column": 75 }, - "identifierName": "pointerEnabled" - }, - "name": "pointerEnabled" - }, - "computed": false - }, - "extra": { - "parenthesized": true, - "parenStart": 6879 - } - }, - "extra": { - "parenthesizedArgument": false - } - }, - "consequent": { - "type": "BlockStatement", - "start": 6923, - "end": 6962, - "loc": { - "start": { - "line": 217, - "column": 61 - }, - "end": { - "line": 219, - "column": 13 - } - }, - "body": [ - { - "type": "ReturnStatement", - "start": 6941, - "end": 6948, - "loc": { - "start": { - "line": 218, - "column": 16 + "identifierName": "mouseDownRight" }, - "end": { - "line": 218, - "column": 23 - } + "name": "mouseDownRight" }, - "argument": null - } - ], - "directives": [] - }, - "alternate": null - }, - { - "type": "IfStatement", - "start": 6976, - "end": 7038, - "loc": { - "start": { - "line": 221, - "column": 12 - }, - "end": { - "line": 223, - "column": 13 - } - }, - "test": { - "type": "UnaryExpression", - "start": 6980, - "end": 6997, - "loc": { - "start": { - "line": 221, - "column": 16 - }, - "end": { - "line": 221, - "column": 33 + "extra": { + "parenthesizedArgument": false + } } }, - "operator": "!", - "prefix": true, - "argument": { - "type": "MemberExpression", - "start": 6981, - "end": 6997, + "consequent": { + "type": "BlockStatement", + "start": 6067, + "end": 6719, "loc": { "start": { - "line": 221, - "column": 17 + "line": 198, + "column": 77 }, "end": { - "line": 221, - "column": 33 + "line": 211, + "column": 13 } }, - "object": { - "type": "Identifier", - "start": 6981, - "end": 6987, - "loc": { - "start": { - "line": 221, - "column": 17 + "body": [ + { + "type": "IfStatement", + "start": 6086, + "end": 6705, + "loc": { + "start": { + "line": 200, + "column": 16 + }, + "end": { + "line": 210, + "column": 17 + } }, - "end": { - "line": 221, - "column": 23 + "test": { + "type": "UnaryExpression", + "start": 6090, + "end": 6107, + "loc": { + "start": { + "line": 200, + "column": 20 + }, + "end": { + "line": 200, + "column": 37 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "MemberExpression", + "start": 6091, + "end": 6107, + "loc": { + "start": { + "line": 200, + "column": 21 + }, + "end": { + "line": 200, + "column": 37 + } + }, + "object": { + "type": "Identifier", + "start": 6091, + "end": 6098, + "loc": { + "start": { + "line": 200, + "column": 21 + }, + "end": { + "line": 200, + "column": 28 + }, + "identifierName": "configs" + }, + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 6099, + "end": 6107, + "loc": { + "start": { + "line": 200, + "column": 29 + }, + "end": { + "line": 200, + "column": 37 + }, + "identifierName": "planView" + }, + "name": "planView" + }, + "computed": false + }, + "extra": { + "parenthesizedArgument": false + } }, - "identifierName": "states" - }, - "name": "states" - }, - "property": { - "type": "Identifier", - "start": 6988, - "end": 6997, - "loc": { - "start": { - "line": 221, - "column": 24 + "consequent": { + "type": "BlockStatement", + "start": 6109, + "end": 6705, + "loc": { + "start": { + "line": 200, + "column": 39 + }, + "end": { + "line": 210, + "column": 17 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 6165, + "end": 6687, + "loc": { + "start": { + "line": 202, + "column": 20 + }, + "end": { + "line": 209, + "column": 21 + } + }, + "test": { + "type": "MemberExpression", + "start": 6169, + "end": 6188, + "loc": { + "start": { + "line": 202, + "column": 24 + }, + "end": { + "line": 202, + "column": 43 + } + }, + "object": { + "type": "Identifier", + "start": 6169, + "end": 6176, + "loc": { + "start": { + "line": 202, + "column": 24 + }, + "end": { + "line": 202, + "column": 31 + }, + "identifierName": "configs" + }, + "name": "configs", + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 6177, + "end": 6188, + "loc": { + "start": { + "line": 202, + "column": 32 + }, + "end": { + "line": 202, + "column": 43 + }, + "identifierName": "firstPerson" + }, + "name": "firstPerson" + }, + "computed": false, + "leadingComments": null + }, + "consequent": { + "type": "BlockStatement", + "start": 6190, + "end": 6433, + "loc": { + "start": { + "line": 202, + "column": 45 + }, + "end": { + "line": 206, + "column": 21 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 6216, + "end": 6299, + "loc": { + "start": { + "line": 203, + "column": 24 + }, + "end": { + "line": 203, + "column": 107 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6216, + "end": 6298, + "loc": { + "start": { + "line": 203, + "column": 24 + }, + "end": { + "line": 203, + "column": 106 + } + }, + "operator": "-=", + "left": { + "type": "MemberExpression", + "start": 6216, + "end": 6236, + "loc": { + "start": { + "line": 203, + "column": 24 + }, + "end": { + "line": 203, + "column": 44 + } + }, + "object": { + "type": "Identifier", + "start": 6216, + "end": 6223, + "loc": { + "start": { + "line": 203, + "column": 24 + }, + "end": { + "line": 203, + "column": 31 + }, + "identifierName": "updates" + }, + "name": "updates" + }, + "property": { + "type": "Identifier", + "start": 6224, + "end": 6236, + "loc": { + "start": { + "line": 203, + "column": 32 + }, + "end": { + "line": 203, + "column": 44 + }, + "identifierName": "rotateDeltaY" + }, + "name": "rotateDeltaY" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 6240, + "end": 6298, + "loc": { + "start": { + "line": 203, + "column": 48 + }, + "end": { + "line": 203, + "column": 106 + } + }, + "left": { + "type": "BinaryExpression", + "start": 6240, + "end": 6294, + "loc": { + "start": { + "line": 203, + "column": 48 + }, + "end": { + "line": 203, + "column": 102 + } + }, + "left": { + "type": "BinaryExpression", + "start": 6241, + "end": 6266, + "loc": { + "start": { + "line": 203, + "column": 49 + }, + "end": { + "line": 203, + "column": 74 + } + }, + "left": { + "type": "BinaryExpression", + "start": 6242, + "end": 6251, + "loc": { + "start": { + "line": 203, + "column": 50 + }, + "end": { + "line": 203, + "column": 59 + } + }, + "left": { + "type": "Identifier", + "start": 6242, + "end": 6243, + "loc": { + "start": { + "line": 203, + "column": 50 + }, + "end": { + "line": 203, + "column": 51 + }, + "identifierName": "x" + }, + "name": "x" + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 6246, + "end": 6251, + "loc": { + "start": { + "line": 203, + "column": 54 + }, + "end": { + "line": 203, + "column": 59 + }, + "identifierName": "lastX" + }, + "name": "lastX" + }, + "extra": { + "parenthesized": true, + "parenStart": 6241 + } + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 6255, + "end": 6266, + "loc": { + "start": { + "line": 203, + "column": 63 + }, + "end": { + "line": 203, + "column": 74 + }, + "identifierName": "canvasWidth" + }, + "name": "canvasWidth" + }, + "extra": { + "parenthesized": true, + "parenStart": 6240 + } + }, + "operator": "*", + "right": { + "type": "MemberExpression", + "start": 6270, + "end": 6294, + "loc": { + "start": { + "line": 203, + "column": 78 + }, + "end": { + "line": 203, + "column": 102 + } + }, + "object": { + "type": "Identifier", + "start": 6270, + "end": 6277, + "loc": { + "start": { + "line": 203, + "column": 78 + }, + "end": { + "line": 203, + "column": 85 + }, + "identifierName": "configs" + }, + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 6278, + "end": 6294, + "loc": { + "start": { + "line": 203, + "column": 86 + }, + "end": { + "line": 203, + "column": 102 + }, + "identifierName": "dragRotationRate" + }, + "name": "dragRotationRate" + }, + "computed": false + } + }, + "operator": "/", + "right": { + "type": "NumericLiteral", + "start": 6297, + "end": 6298, + "loc": { + "start": { + "line": 203, + "column": 105 + }, + "end": { + "line": 203, + "column": 106 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + } + } + } + }, + { + "type": "ExpressionStatement", + "start": 6324, + "end": 6410, + "loc": { + "start": { + "line": 204, + "column": 24 + }, + "end": { + "line": 204, + "column": 110 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6324, + "end": 6409, + "loc": { + "start": { + "line": 204, + "column": 24 + }, + "end": { + "line": 204, + "column": 109 + } + }, + "operator": "+=", + "left": { + "type": "MemberExpression", + "start": 6324, + "end": 6344, + "loc": { + "start": { + "line": 204, + "column": 24 + }, + "end": { + "line": 204, + "column": 44 + } + }, + "object": { + "type": "Identifier", + "start": 6324, + "end": 6331, + "loc": { + "start": { + "line": 204, + "column": 24 + }, + "end": { + "line": 204, + "column": 31 + }, + "identifierName": "updates" + }, + "name": "updates" + }, + "property": { + "type": "Identifier", + "start": 6332, + "end": 6344, + "loc": { + "start": { + "line": 204, + "column": 32 + }, + "end": { + "line": 204, + "column": 44 + }, + "identifierName": "rotateDeltaX" + }, + "name": "rotateDeltaX" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 6348, + "end": 6409, + "loc": { + "start": { + "line": 204, + "column": 48 + }, + "end": { + "line": 204, + "column": 109 + } + }, + "left": { + "type": "BinaryExpression", + "start": 6349, + "end": 6375, + "loc": { + "start": { + "line": 204, + "column": 49 + }, + "end": { + "line": 204, + "column": 75 + } + }, + "left": { + "type": "BinaryExpression", + "start": 6350, + "end": 6359, + "loc": { + "start": { + "line": 204, + "column": 50 + }, + "end": { + "line": 204, + "column": 59 + } + }, + "left": { + "type": "Identifier", + "start": 6350, + "end": 6351, + "loc": { + "start": { + "line": 204, + "column": 50 + }, + "end": { + "line": 204, + "column": 51 + }, + "identifierName": "y" + }, + "name": "y" + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 6354, + "end": 6359, + "loc": { + "start": { + "line": 204, + "column": 54 + }, + "end": { + "line": 204, + "column": 59 + }, + "identifierName": "lastY" + }, + "name": "lastY" + }, + "extra": { + "parenthesized": true, + "parenStart": 6349 + } + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 6363, + "end": 6375, + "loc": { + "start": { + "line": 204, + "column": 63 + }, + "end": { + "line": 204, + "column": 75 + }, + "identifierName": "canvasHeight" + }, + "name": "canvasHeight" + }, + "extra": { + "parenthesized": true, + "parenStart": 6348 + } + }, + "operator": "*", + "right": { + "type": "BinaryExpression", + "start": 6380, + "end": 6408, + "loc": { + "start": { + "line": 204, + "column": 80 + }, + "end": { + "line": 204, + "column": 108 + } + }, + "left": { + "type": "MemberExpression", + "start": 6380, + "end": 6404, + "loc": { + "start": { + "line": 204, + "column": 80 + }, + "end": { + "line": 204, + "column": 104 + } + }, + "object": { + "type": "Identifier", + "start": 6380, + "end": 6387, + "loc": { + "start": { + "line": 204, + "column": 80 + }, + "end": { + "line": 204, + "column": 87 + }, + "identifierName": "configs" + }, + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 6388, + "end": 6404, + "loc": { + "start": { + "line": 204, + "column": 88 + }, + "end": { + "line": 204, + "column": 104 + }, + "identifierName": "dragRotationRate" + }, + "name": "dragRotationRate" + }, + "computed": false + }, + "operator": "/", + "right": { + "type": "NumericLiteral", + "start": 6407, + "end": 6408, + "loc": { + "start": { + "line": 204, + "column": 107 + }, + "end": { + "line": 204, + "column": 108 + } + }, + "extra": { + "rawValue": 4, + "raw": "4" + }, + "value": 4 + }, + "extra": { + "parenthesized": true, + "parenStart": 6379 + } + } + } + } + } + ], + "directives": [] + }, + "alternate": { + "type": "BlockStatement", + "start": 6439, + "end": 6687, + "loc": { + "start": { + "line": 206, + "column": 27 + }, + "end": { + "line": 209, + "column": 21 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 6465, + "end": 6552, + "loc": { + "start": { + "line": 207, + "column": 24 + }, + "end": { + "line": 207, + "column": 111 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6465, + "end": 6551, + "loc": { + "start": { + "line": 207, + "column": 24 + }, + "end": { + "line": 207, + "column": 110 + } + }, + "operator": "-=", + "left": { + "type": "MemberExpression", + "start": 6465, + "end": 6485, + "loc": { + "start": { + "line": 207, + "column": 24 + }, + "end": { + "line": 207, + "column": 44 + } + }, + "object": { + "type": "Identifier", + "start": 6465, + "end": 6472, + "loc": { + "start": { + "line": 207, + "column": 24 + }, + "end": { + "line": 207, + "column": 31 + }, + "identifierName": "updates" + }, + "name": "updates" + }, + "property": { + "type": "Identifier", + "start": 6473, + "end": 6485, + "loc": { + "start": { + "line": 207, + "column": 32 + }, + "end": { + "line": 207, + "column": 44 + }, + "identifierName": "rotateDeltaY" + }, + "name": "rotateDeltaY" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 6489, + "end": 6551, + "loc": { + "start": { + "line": 207, + "column": 48 + }, + "end": { + "line": 207, + "column": 110 + } + }, + "left": { + "type": "BinaryExpression", + "start": 6490, + "end": 6515, + "loc": { + "start": { + "line": 207, + "column": 49 + }, + "end": { + "line": 207, + "column": 74 + } + }, + "left": { + "type": "BinaryExpression", + "start": 6491, + "end": 6500, + "loc": { + "start": { + "line": 207, + "column": 50 + }, + "end": { + "line": 207, + "column": 59 + } + }, + "left": { + "type": "Identifier", + "start": 6491, + "end": 6492, + "loc": { + "start": { + "line": 207, + "column": 50 + }, + "end": { + "line": 207, + "column": 51 + }, + "identifierName": "x" + }, + "name": "x" + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 6495, + "end": 6500, + "loc": { + "start": { + "line": 207, + "column": 54 + }, + "end": { + "line": 207, + "column": 59 + }, + "identifierName": "lastX" + }, + "name": "lastX" + }, + "extra": { + "parenthesized": true, + "parenStart": 6490 + } + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 6504, + "end": 6515, + "loc": { + "start": { + "line": 207, + "column": 63 + }, + "end": { + "line": 207, + "column": 74 + }, + "identifierName": "canvasWidth" + }, + "name": "canvasWidth" + }, + "extra": { + "parenthesized": true, + "parenStart": 6489 + } + }, + "operator": "*", + "right": { + "type": "BinaryExpression", + "start": 6520, + "end": 6550, + "loc": { + "start": { + "line": 207, + "column": 79 + }, + "end": { + "line": 207, + "column": 109 + } + }, + "left": { + "type": "MemberExpression", + "start": 6520, + "end": 6544, + "loc": { + "start": { + "line": 207, + "column": 79 + }, + "end": { + "line": 207, + "column": 103 + } + }, + "object": { + "type": "Identifier", + "start": 6520, + "end": 6527, + "loc": { + "start": { + "line": 207, + "column": 79 + }, + "end": { + "line": 207, + "column": 86 + }, + "identifierName": "configs" + }, + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 6528, + "end": 6544, + "loc": { + "start": { + "line": 207, + "column": 87 + }, + "end": { + "line": 207, + "column": 103 + }, + "identifierName": "dragRotationRate" + }, + "name": "dragRotationRate" + }, + "computed": false + }, + "operator": "*", + "right": { + "type": "NumericLiteral", + "start": 6547, + "end": 6550, + "loc": { + "start": { + "line": 207, + "column": 106 + }, + "end": { + "line": 207, + "column": 109 + } + }, + "extra": { + "rawValue": 1.5, + "raw": "1.5" + }, + "value": 1.5 + }, + "extra": { + "parenthesized": true, + "parenStart": 6519 + } + } + } + } + }, + { + "type": "ExpressionStatement", + "start": 6577, + "end": 6665, + "loc": { + "start": { + "line": 208, + "column": 24 + }, + "end": { + "line": 208, + "column": 112 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6577, + "end": 6664, + "loc": { + "start": { + "line": 208, + "column": 24 + }, + "end": { + "line": 208, + "column": 111 + } + }, + "operator": "+=", + "left": { + "type": "MemberExpression", + "start": 6577, + "end": 6597, + "loc": { + "start": { + "line": 208, + "column": 24 + }, + "end": { + "line": 208, + "column": 44 + } + }, + "object": { + "type": "Identifier", + "start": 6577, + "end": 6584, + "loc": { + "start": { + "line": 208, + "column": 24 + }, + "end": { + "line": 208, + "column": 31 + }, + "identifierName": "updates" + }, + "name": "updates" + }, + "property": { + "type": "Identifier", + "start": 6585, + "end": 6597, + "loc": { + "start": { + "line": 208, + "column": 32 + }, + "end": { + "line": 208, + "column": 44 + }, + "identifierName": "rotateDeltaX" + }, + "name": "rotateDeltaX" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 6601, + "end": 6664, + "loc": { + "start": { + "line": 208, + "column": 48 + }, + "end": { + "line": 208, + "column": 111 + } + }, + "left": { + "type": "BinaryExpression", + "start": 6602, + "end": 6628, + "loc": { + "start": { + "line": 208, + "column": 49 + }, + "end": { + "line": 208, + "column": 75 + } + }, + "left": { + "type": "BinaryExpression", + "start": 6603, + "end": 6612, + "loc": { + "start": { + "line": 208, + "column": 50 + }, + "end": { + "line": 208, + "column": 59 + } + }, + "left": { + "type": "Identifier", + "start": 6603, + "end": 6604, + "loc": { + "start": { + "line": 208, + "column": 50 + }, + "end": { + "line": 208, + "column": 51 + }, + "identifierName": "y" + }, + "name": "y" + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 6607, + "end": 6612, + "loc": { + "start": { + "line": 208, + "column": 54 + }, + "end": { + "line": 208, + "column": 59 + }, + "identifierName": "lastY" + }, + "name": "lastY" + }, + "extra": { + "parenthesized": true, + "parenStart": 6602 + } + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 6616, + "end": 6628, + "loc": { + "start": { + "line": 208, + "column": 63 + }, + "end": { + "line": 208, + "column": 75 + }, + "identifierName": "canvasHeight" + }, + "name": "canvasHeight" + }, + "extra": { + "parenthesized": true, + "parenStart": 6601 + } + }, + "operator": "*", + "right": { + "type": "BinaryExpression", + "start": 6633, + "end": 6663, + "loc": { + "start": { + "line": 208, + "column": 80 + }, + "end": { + "line": 208, + "column": 110 + } + }, + "left": { + "type": "MemberExpression", + "start": 6633, + "end": 6657, + "loc": { + "start": { + "line": 208, + "column": 80 + }, + "end": { + "line": 208, + "column": 104 + } + }, + "object": { + "type": "Identifier", + "start": 6633, + "end": 6640, + "loc": { + "start": { + "line": 208, + "column": 80 + }, + "end": { + "line": 208, + "column": 87 + }, + "identifierName": "configs" + }, + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 6641, + "end": 6657, + "loc": { + "start": { + "line": 208, + "column": 88 + }, + "end": { + "line": 208, + "column": 104 + }, + "identifierName": "dragRotationRate" + }, + "name": "dragRotationRate" + }, + "computed": false + }, + "operator": "*", + "right": { + "type": "NumericLiteral", + "start": 6660, + "end": 6663, + "loc": { + "start": { + "line": 208, + "column": 107 + }, + "end": { + "line": 208, + "column": 110 + } + }, + "extra": { + "rawValue": 1.5, + "raw": "1.5" + }, + "value": 1.5 + }, + "extra": { + "parenthesized": true, + "parenStart": 6632 + } + } + } + } + } + ], + "directives": [] + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " No rotating in plan-view mode", + "start": 6111, + "end": 6143, + "loc": { + "start": { + "line": 200, + "column": 41 + }, + "end": { + "line": 200, + "column": 73 + } + } + } + ] + } + ], + "directives": [] + }, + "alternate": null + } + ], + "directives": [] + }, + "alternate": null + } + }, + { + "type": "ExpressionStatement", + "start": 6733, + "end": 6743, + "loc": { + "start": { + "line": 213, + "column": 12 + }, + "end": { + "line": 213, + "column": 22 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6733, + "end": 6742, + "loc": { + "start": { + "line": 213, + "column": 12 + }, + "end": { + "line": 213, + "column": 21 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 6733, + "end": 6738, + "loc": { + "start": { + "line": 213, + "column": 12 + }, + "end": { + "line": 213, + "column": 17 + }, + "identifierName": "lastX" + }, + "name": "lastX" + }, + "right": { + "type": "Identifier", + "start": 6741, + "end": 6742, + "loc": { + "start": { + "line": 213, + "column": 20 + }, + "end": { + "line": 213, + "column": 21 + }, + "identifierName": "x" + }, + "name": "x" + } + } + }, + { + "type": "ExpressionStatement", + "start": 6756, + "end": 6766, + "loc": { + "start": { + "line": 214, + "column": 12 + }, + "end": { + "line": 214, + "column": 22 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6756, + "end": 6765, + "loc": { + "start": { + "line": 214, + "column": 12 + }, + "end": { + "line": 214, + "column": 21 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 6756, + "end": 6761, + "loc": { + "start": { + "line": 214, + "column": 12 + }, + "end": { + "line": 214, + "column": 17 + }, + "identifierName": "lastY" + }, + "name": "lastY" + }, + "right": { + "type": "Identifier", + "start": 6764, + "end": 6765, + "loc": { + "start": { + "line": 214, + "column": 20 + }, + "end": { + "line": 214, + "column": 21 + }, + "identifierName": "y" + }, + "name": "y" + } + } + } + ], + "directives": [] + } + } + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 6788, + "end": 7108, + "loc": { + "start": { + "line": 217, + "column": 8 + }, + "end": { + "line": 228, + "column": 11 + } + }, + "expression": { + "type": "CallExpression", + "start": 6788, + "end": 7107, + "loc": { + "start": { + "line": 217, + "column": 8 + }, + "end": { + "line": 228, + "column": 10 + } + }, + "callee": { + "type": "MemberExpression", + "start": 6788, + "end": 6811, + "loc": { + "start": { + "line": 217, + "column": 8 + }, + "end": { + "line": 217, + "column": 31 + } + }, + "object": { + "type": "Identifier", + "start": 6788, + "end": 6794, + "loc": { + "start": { + "line": 217, + "column": 8 + }, + "end": { + "line": 217, + "column": 14 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "property": { + "type": "Identifier", + "start": 6795, + "end": 6811, + "loc": { + "start": { + "line": 217, + "column": 15 + }, + "end": { + "line": 217, + "column": 31 + }, + "identifierName": "addEventListener" + }, + "name": "addEventListener" + }, + "computed": false + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 6812, + "end": 6823, + "loc": { + "start": { + "line": 217, + "column": 32 + }, + "end": { + "line": 217, + "column": 43 + } + }, + "extra": { + "rawValue": "mousemove", + "raw": "\"mousemove\"" + }, + "value": "mousemove" + }, + { + "type": "AssignmentExpression", + "start": 6825, + "end": 7106, + "loc": { + "start": { + "line": 217, + "column": 45 + }, + "end": { + "line": 228, + "column": 9 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 6825, + "end": 6853, + "loc": { + "start": { + "line": 217, + "column": 45 + }, + "end": { + "line": 217, + "column": 73 + } + }, + "object": { + "type": "ThisExpression", + "start": 6825, + "end": 6829, + "loc": { + "start": { + "line": 217, + "column": 45 + }, + "end": { + "line": 217, + "column": 49 + } + } + }, + "property": { + "type": "Identifier", + "start": 6830, + "end": 6853, + "loc": { + "start": { + "line": 217, + "column": 50 + }, + "end": { + "line": 217, + "column": 73 + }, + "identifierName": "_canvasMouseMoveHandler" + }, + "name": "_canvasMouseMoveHandler" + }, + "computed": false + }, + "right": { + "type": "ArrowFunctionExpression", + "start": 6856, + "end": 7106, + "loc": { + "start": { + "line": 217, + "column": 76 + }, + "end": { + "line": 228, + "column": 9 + } + }, + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 6857, + "end": 6858, + "loc": { + "start": { + "line": 217, + "column": 77 + }, + "end": { + "line": 217, + "column": 78 + }, + "identifierName": "e" + }, + "name": "e" + } + ], + "body": { + "type": "BlockStatement", + "start": 6863, + "end": 7106, + "loc": { + "start": { + "line": 217, + "column": 83 + }, + "end": { + "line": 228, + "column": 9 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 6878, + "end": 6966, + "loc": { + "start": { + "line": 219, + "column": 12 + }, + "end": { + "line": 221, + "column": 13 + } + }, + "test": { + "type": "UnaryExpression", + "start": 6882, + "end": 6925, + "loc": { + "start": { + "line": 219, + "column": 16 + }, + "end": { + "line": 219, + "column": 59 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "LogicalExpression", + "start": 6884, + "end": 6924, + "loc": { + "start": { + "line": 219, + "column": 18 + }, + "end": { + "line": 219, + "column": 58 + } + }, + "left": { + "type": "MemberExpression", + "start": 6884, + "end": 6898, + "loc": { + "start": { + "line": 219, + "column": 18 }, "end": { - "line": 221, - "column": 33 + "line": 219, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 6884, + "end": 6891, + "loc": { + "start": { + "line": 219, + "column": 18 + }, + "end": { + "line": 219, + "column": 25 + }, + "identifierName": "configs" }, - "identifierName": "mouseover" + "name": "configs" }, - "name": "mouseover" + "property": { + "type": "Identifier", + "start": 6892, + "end": 6898, + "loc": { + "start": { + "line": 219, + "column": 26 + }, + "end": { + "line": 219, + "column": 32 + }, + "identifierName": "active" + }, + "name": "active" + }, + "computed": false }, - "computed": false + "operator": "&&", + "right": { + "type": "MemberExpression", + "start": 6902, + "end": 6924, + "loc": { + "start": { + "line": 219, + "column": 36 + }, + "end": { + "line": 219, + "column": 58 + } + }, + "object": { + "type": "Identifier", + "start": 6902, + "end": 6909, + "loc": { + "start": { + "line": 219, + "column": 36 + }, + "end": { + "line": 219, + "column": 43 + }, + "identifierName": "configs" + }, + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 6910, + "end": 6924, + "loc": { + "start": { + "line": 219, + "column": 44 + }, + "end": { + "line": 219, + "column": 58 + }, + "identifierName": "pointerEnabled" + }, + "name": "pointerEnabled" + }, + "computed": false + }, + "extra": { + "parenthesized": true, + "parenStart": 6883 + } }, "extra": { "parenthesizedArgument": false @@ -14429,30 +14514,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 6999, - "end": 7038, + "start": 6927, + "end": 6966, "loc": { "start": { - "line": 221, - "column": 35 + "line": 219, + "column": 61 }, "end": { - "line": 223, + "line": 221, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 7017, - "end": 7024, + "start": 6945, + "end": 6952, "loc": { "start": { - "line": 222, + "line": 220, "column": 16 }, "end": { - "line": 222, + "line": 220, "column": 23 } }, @@ -14464,106 +14549,129 @@ "alternate": null }, { - "type": "ExpressionStatement", - "start": 7052, - "end": 7082, + "type": "IfStatement", + "start": 6980, + "end": 7042, "loc": { "start": { - "line": 225, + "line": 223, "column": 12 }, "end": { "line": 225, - "column": 42 + "column": 13 } }, - "expression": { - "type": "AssignmentExpression", - "start": 7052, - "end": 7081, + "test": { + "type": "UnaryExpression", + "start": 6984, + "end": 7001, "loc": { "start": { - "line": 225, - "column": 12 + "line": 223, + "column": 16 }, "end": { - "line": 225, - "column": 41 + "line": 223, + "column": 33 } }, - "operator": "=", - "left": { + "operator": "!", + "prefix": true, + "argument": { "type": "MemberExpression", - "start": 7052, - "end": 7074, + "start": 6985, + "end": 7001, "loc": { "start": { - "line": 225, - "column": 12 + "line": 223, + "column": 17 }, "end": { - "line": 225, - "column": 34 + "line": 223, + "column": 33 } }, "object": { "type": "Identifier", - "start": 7052, - "end": 7059, + "start": 6985, + "end": 6991, "loc": { "start": { - "line": 225, - "column": 12 + "line": 223, + "column": 17 }, "end": { - "line": 225, - "column": 19 + "line": 223, + "column": 23 }, - "identifierName": "updates" + "identifierName": "states" }, - "name": "updates" + "name": "states" }, "property": { "type": "Identifier", - "start": 7060, - "end": 7074, + "start": 6992, + "end": 7001, "loc": { "start": { - "line": 225, - "column": 20 + "line": 223, + "column": 24 }, "end": { - "line": 225, - "column": 34 + "line": 223, + "column": 33 }, - "identifierName": "inputFromMouse" + "identifierName": "mouseover" }, - "name": "inputFromMouse" + "name": "mouseover" }, "computed": false }, - "right": { - "type": "BooleanLiteral", - "start": 7077, - "end": 7081, - "loc": { - "start": { - "line": 225, - "column": 37 - }, - "end": { - "line": 225, - "column": 41 - } - }, - "value": true + "extra": { + "parenthesizedArgument": false } - } + }, + "consequent": { + "type": "BlockStatement", + "start": 7003, + "end": 7042, + "loc": { + "start": { + "line": 223, + "column": 35 + }, + "end": { + "line": 225, + "column": 13 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 7021, + "end": 7028, + "loc": { + "start": { + "line": 224, + "column": 16 + }, + "end": { + "line": 224, + "column": 23 + } + }, + "argument": null + } + ], + "directives": [] + }, + "alternate": null }, { "type": "ExpressionStatement", - "start": 7096, - "end": 7128, + "start": 7056, + "end": 7096, "loc": { "start": { "line": 227, @@ -14571,13 +14679,13 @@ }, "end": { "line": 227, - "column": 44 + "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 7096, - "end": 7127, + "start": 7056, + "end": 7095, "loc": { "start": { "line": 227, @@ -14585,14 +14693,14 @@ }, "end": { "line": 227, - "column": 43 + "column": 51 } }, "operator": "=", "left": { "type": "Identifier", - "start": 7096, - "end": 7120, + "start": 7056, + "end": 7088, "loc": { "start": { "line": 227, @@ -14600,24 +14708,24 @@ }, "end": { "line": 227, - "column": 36 + "column": 44 }, - "identifierName": "mouseMovedSinceLastWheel" + "identifierName": "mouseMovedOnCanvasSinceLastWheel" }, - "name": "mouseMovedSinceLastWheel" + "name": "mouseMovedOnCanvasSinceLastWheel" }, "right": { "type": "BooleanLiteral", - "start": 7123, - "end": 7127, + "start": 7091, + "end": 7095, "loc": { "start": { "line": 227, - "column": 39 + "column": 47 }, "end": { "line": 227, - "column": 43 + "column": 51 } }, "value": true @@ -14634,57 +14742,57 @@ }, { "type": "ExpressionStatement", - "start": 7151, - "end": 7956, + "start": 7118, + "end": 8067, "loc": { "start": { - "line": 231, + "line": 230, "column": 8 }, "end": { - "line": 253, + "line": 255, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 7151, - "end": 7955, + "start": 7118, + "end": 8066, "loc": { "start": { - "line": 231, + "line": 230, "column": 8 }, "end": { - "line": 253, + "line": 255, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 7151, - "end": 7176, + "start": 7118, + "end": 7143, "loc": { "start": { - "line": 231, + "line": 230, "column": 8 }, "end": { - "line": 231, + "line": 230, "column": 33 } }, "object": { "type": "Identifier", - "start": 7151, - "end": 7159, + "start": 7118, + "end": 7126, "loc": { "start": { - "line": 231, + "line": 230, "column": 8 }, "end": { - "line": 231, + "line": 230, "column": 16 }, "identifierName": "document" @@ -14693,15 +14801,15 @@ }, "property": { "type": "Identifier", - "start": 7160, - "end": 7176, + "start": 7127, + "end": 7143, "loc": { "start": { - "line": 231, + "line": 230, "column": 17 }, "end": { - "line": 231, + "line": 230, "column": 33 }, "identifierName": "addEventListener" @@ -14713,15 +14821,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 7177, - "end": 7186, + "start": 7144, + "end": 7153, "loc": { "start": { - "line": 231, + "line": 230, "column": 34 }, "end": { - "line": 231, + "line": 230, "column": 43 } }, @@ -14733,59 +14841,59 @@ }, { "type": "AssignmentExpression", - "start": 7188, - "end": 7954, + "start": 7155, + "end": 8065, "loc": { "start": { - "line": 231, + "line": 230, "column": 45 }, "end": { - "line": 253, + "line": 255, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 7188, - "end": 7216, + "start": 7155, + "end": 7183, "loc": { "start": { - "line": 231, + "line": 230, "column": 45 }, "end": { - "line": 231, + "line": 230, "column": 73 } }, "object": { "type": "ThisExpression", - "start": 7188, - "end": 7192, + "start": 7155, + "end": 7159, "loc": { "start": { - "line": 231, + "line": 230, "column": 45 }, "end": { - "line": 231, + "line": 230, "column": 49 } } }, "property": { "type": "Identifier", - "start": 7193, - "end": 7216, + "start": 7160, + "end": 7183, "loc": { "start": { - "line": 231, + "line": 230, "column": 50 }, "end": { - "line": 231, + "line": 230, "column": 73 }, "identifierName": "_documentMouseUpHandler" @@ -14796,15 +14904,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 7219, - "end": 7954, + "start": 7186, + "end": 8065, "loc": { "start": { - "line": 231, + "line": 230, "column": 76 }, "end": { - "line": 253, + "line": 255, "column": 9 } }, @@ -14815,15 +14923,15 @@ "params": [ { "type": "Identifier", - "start": 7220, - "end": 7221, + "start": 7187, + "end": 7188, "loc": { "start": { - "line": 231, + "line": 230, "column": 77 }, "end": { - "line": 231, + "line": 230, "column": 78 }, "identifierName": "e" @@ -14833,44 +14941,44 @@ ], "body": { "type": "BlockStatement", - "start": 7226, - "end": 7954, + "start": 7193, + "end": 8065, "loc": { "start": { - "line": 231, + "line": 230, "column": 83 }, "end": { - "line": 253, + "line": 255, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 7240, - "end": 7328, + "start": 7207, + "end": 7295, "loc": { "start": { - "line": 232, + "line": 231, "column": 12 }, "end": { - "line": 234, + "line": 233, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 7244, - "end": 7287, + "start": 7211, + "end": 7254, "loc": { "start": { - "line": 232, + "line": 231, "column": 16 }, "end": { - "line": 232, + "line": 231, "column": 59 } }, @@ -14878,43 +14986,43 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 7246, - "end": 7286, + "start": 7213, + "end": 7253, "loc": { "start": { - "line": 232, + "line": 231, "column": 18 }, "end": { - "line": 232, + "line": 231, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 7246, - "end": 7260, + "start": 7213, + "end": 7227, "loc": { "start": { - "line": 232, + "line": 231, "column": 18 }, "end": { - "line": 232, + "line": 231, "column": 32 } }, "object": { "type": "Identifier", - "start": 7246, - "end": 7253, + "start": 7213, + "end": 7220, "loc": { "start": { - "line": 232, + "line": 231, "column": 18 }, "end": { - "line": 232, + "line": 231, "column": 25 }, "identifierName": "configs" @@ -14923,15 +15031,15 @@ }, "property": { "type": "Identifier", - "start": 7254, - "end": 7260, + "start": 7221, + "end": 7227, "loc": { "start": { - "line": 232, + "line": 231, "column": 26 }, "end": { - "line": 232, + "line": 231, "column": 32 }, "identifierName": "active" @@ -14943,29 +15051,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 7264, - "end": 7286, + "start": 7231, + "end": 7253, "loc": { "start": { - "line": 232, + "line": 231, "column": 36 }, "end": { - "line": 232, + "line": 231, "column": 58 } }, "object": { "type": "Identifier", - "start": 7264, - "end": 7271, + "start": 7231, + "end": 7238, "loc": { "start": { - "line": 232, + "line": 231, "column": 36 }, "end": { - "line": 232, + "line": 231, "column": 43 }, "identifierName": "configs" @@ -14974,15 +15082,15 @@ }, "property": { "type": "Identifier", - "start": 7272, - "end": 7286, + "start": 7239, + "end": 7253, "loc": { "start": { - "line": 232, + "line": 231, "column": 44 }, "end": { - "line": 232, + "line": 231, "column": 58 }, "identifierName": "pointerEnabled" @@ -14993,7 +15101,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 7245 + "parenStart": 7212 } }, "extra": { @@ -15002,30 +15110,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 7289, - "end": 7328, + "start": 7256, + "end": 7295, "loc": { "start": { - "line": 232, + "line": 231, "column": 61 }, "end": { - "line": 234, + "line": 233, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 7307, - "end": 7314, + "start": 7274, + "end": 7281, "loc": { "start": { - "line": 233, + "line": 232, "column": 16 }, "end": { - "line": 233, + "line": 232, "column": 23 } }, @@ -15038,43 +15146,43 @@ }, { "type": "SwitchStatement", - "start": 7341, - "end": 7764, + "start": 7308, + "end": 7995, "loc": { "start": { - "line": 235, + "line": 234, "column": 12 }, "end": { - "line": 247, + "line": 252, "column": 13 } }, "discriminant": { "type": "MemberExpression", - "start": 7349, - "end": 7356, + "start": 7316, + "end": 7323, "loc": { "start": { - "line": 235, + "line": 234, "column": 20 }, "end": { - "line": 235, + "line": 234, "column": 27 } }, "object": { "type": "Identifier", - "start": 7349, - "end": 7350, + "start": 7316, + "end": 7317, "loc": { "start": { - "line": 235, + "line": 234, "column": 20 }, "end": { - "line": 235, + "line": 234, "column": 21 }, "identifierName": "e" @@ -15083,79 +15191,344 @@ }, "property": { "type": "Identifier", - "start": 7351, - "end": 7356, + "start": 7318, + "end": 7323, "loc": { "start": { - "line": 235, + "line": 234, "column": 22 }, - "end": { - "line": 235, - "column": 27 + "end": { + "line": 234, + "column": 27 + }, + "identifierName": "which" + }, + "name": "which" + }, + "computed": false + }, + "cases": [ + { + "type": "SwitchCase", + "start": 7343, + "end": 7524, + "loc": { + "start": { + "line": 235, + "column": 16 + }, + "end": { + "line": 239, + "column": 26 + } + }, + "consequent": [ + { + "type": "ExpressionStatement", + "start": 7386, + "end": 7408, + "loc": { + "start": { + "line": 236, + "column": 20 + }, + "end": { + "line": 236, + "column": 42 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7386, + "end": 7407, + "loc": { + "start": { + "line": 236, + "column": 20 + }, + "end": { + "line": 236, + "column": 41 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 7386, + "end": 7399, + "loc": { + "start": { + "line": 236, + "column": 20 + }, + "end": { + "line": 236, + "column": 33 + }, + "identifierName": "mouseDownLeft" + }, + "name": "mouseDownLeft", + "leadingComments": null + }, + "right": { + "type": "BooleanLiteral", + "start": 7402, + "end": 7407, + "loc": { + "start": { + "line": 236, + "column": 36 + }, + "end": { + "line": 236, + "column": 41 + } + }, + "value": false + }, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Left button", + "start": 7351, + "end": 7365, + "loc": { + "start": { + "line": 235, + "column": 24 + }, + "end": { + "line": 235, + "column": 38 + } + } + } + ] + }, + { + "type": "ExpressionStatement", + "start": 7429, + "end": 7453, + "loc": { + "start": { + "line": 237, + "column": 20 + }, + "end": { + "line": 237, + "column": 44 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7429, + "end": 7452, + "loc": { + "start": { + "line": 237, + "column": 20 + }, + "end": { + "line": 237, + "column": 43 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 7429, + "end": 7444, + "loc": { + "start": { + "line": 237, + "column": 20 + }, + "end": { + "line": 237, + "column": 35 + }, + "identifierName": "mouseDownMiddle" + }, + "name": "mouseDownMiddle" + }, + "right": { + "type": "BooleanLiteral", + "start": 7447, + "end": 7452, + "loc": { + "start": { + "line": 237, + "column": 38 + }, + "end": { + "line": 237, + "column": 43 + } + }, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 7474, + "end": 7497, + "loc": { + "start": { + "line": 238, + "column": 20 + }, + "end": { + "line": 238, + "column": 43 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7474, + "end": 7496, + "loc": { + "start": { + "line": 238, + "column": 20 + }, + "end": { + "line": 238, + "column": 42 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 7474, + "end": 7488, + "loc": { + "start": { + "line": 238, + "column": 20 + }, + "end": { + "line": 238, + "column": 34 + }, + "identifierName": "mouseDownRight" + }, + "name": "mouseDownRight" + }, + "right": { + "type": "BooleanLiteral", + "start": 7491, + "end": 7496, + "loc": { + "start": { + "line": 238, + "column": 37 + }, + "end": { + "line": 238, + "column": 42 + } + }, + "value": false + } + } + }, + { + "type": "BreakStatement", + "start": 7518, + "end": 7524, + "loc": { + "start": { + "line": 239, + "column": 20 + }, + "end": { + "line": 239, + "column": 26 + } + }, + "label": null + } + ], + "test": { + "type": "NumericLiteral", + "start": 7348, + "end": 7349, + "loc": { + "start": { + "line": 235, + "column": 21 + }, + "end": { + "line": 235, + "column": 22 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" }, - "identifierName": "which" - }, - "name": "which" + "value": 1 + } }, - "computed": false - }, - "cases": [ { "type": "SwitchCase", - "start": 7376, - "end": 7468, + "start": 7541, + "end": 7730, "loc": { "start": { - "line": 236, + "line": 240, "column": 16 }, "end": { - "line": 238, + "line": 244, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 7419, - "end": 7441, + "start": 7592, + "end": 7614, "loc": { "start": { - "line": 237, + "line": 241, "column": 20 }, "end": { - "line": 237, + "line": 241, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 7419, - "end": 7440, + "start": 7592, + "end": 7613, "loc": { "start": { - "line": 237, + "line": 241, "column": 20 }, "end": { - "line": 237, + "line": 241, "column": 41 } }, "operator": "=", "left": { "type": "Identifier", - "start": 7419, - "end": 7432, + "start": 7592, + "end": 7605, "loc": { "start": { - "line": 237, + "line": 241, "column": 20 }, "end": { - "line": 237, + "line": 241, "column": 33 }, "identifierName": "mouseDownLeft" @@ -15165,15 +15538,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 7435, - "end": 7440, + "start": 7608, + "end": 7613, "loc": { "start": { - "line": 237, + "line": 241, "column": 36 }, "end": { - "line": 237, + "line": 241, "column": 41 } }, @@ -15184,170 +15557,161 @@ "leadingComments": [ { "type": "CommentLine", - "value": " Left button", - "start": 7384, - "end": 7398, + "value": " Middle/both buttons", + "start": 7549, + "end": 7571, "loc": { "start": { - "line": 236, + "line": 240, "column": 24 }, "end": { - "line": 236, - "column": 38 + "line": 240, + "column": 46 } } } ] }, - { - "type": "BreakStatement", - "start": 7462, - "end": 7468, - "loc": { - "start": { - "line": 238, - "column": 20 - }, - "end": { - "line": 238, - "column": 26 - } - }, - "label": null - } - ], - "test": { - "type": "NumericLiteral", - "start": 7381, - "end": 7382, - "loc": { - "start": { - "line": 236, - "column": 21 - }, - "end": { - "line": 236, - "column": 22 - } - }, - "extra": { - "rawValue": 1, - "raw": "1" - }, - "value": 1 - } - }, - { - "type": "SwitchCase", - "start": 7485, - "end": 7587, - "loc": { - "start": { - "line": 239, - "column": 16 - }, - "end": { - "line": 241, - "column": 26 - } - }, - "consequent": [ { "type": "ExpressionStatement", - "start": 7536, - "end": 7560, + "start": 7635, + "end": 7659, "loc": { "start": { - "line": 240, + "line": 242, "column": 20 }, "end": { - "line": 240, + "line": 242, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 7536, - "end": 7559, + "start": 7635, + "end": 7658, "loc": { "start": { - "line": 240, + "line": 242, "column": 20 }, "end": { - "line": 240, + "line": 242, "column": 43 } }, "operator": "=", "left": { "type": "Identifier", - "start": 7536, - "end": 7551, + "start": 7635, + "end": 7650, "loc": { "start": { - "line": 240, + "line": 242, "column": 20 }, "end": { - "line": 240, + "line": 242, "column": 35 }, "identifierName": "mouseDownMiddle" }, - "name": "mouseDownMiddle", - "leadingComments": null + "name": "mouseDownMiddle" }, "right": { "type": "BooleanLiteral", - "start": 7554, - "end": 7559, + "start": 7653, + "end": 7658, "loc": { "start": { - "line": 240, + "line": 242, "column": 38 }, "end": { - "line": 240, + "line": 242, "column": 43 } }, "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 7680, + "end": 7703, + "loc": { + "start": { + "line": 243, + "column": 20 }, - "leadingComments": null + "end": { + "line": 243, + "column": 43 + } }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " Middle/both buttons", - "start": 7493, - "end": 7515, + "expression": { + "type": "AssignmentExpression", + "start": 7680, + "end": 7702, + "loc": { + "start": { + "line": 243, + "column": 20 + }, + "end": { + "line": 243, + "column": 42 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 7680, + "end": 7694, "loc": { "start": { - "line": 239, - "column": 24 + "line": 243, + "column": 20 }, "end": { - "line": 239, - "column": 46 + "line": 243, + "column": 34 + }, + "identifierName": "mouseDownRight" + }, + "name": "mouseDownRight" + }, + "right": { + "type": "BooleanLiteral", + "start": 7697, + "end": 7702, + "loc": { + "start": { + "line": 243, + "column": 37 + }, + "end": { + "line": 243, + "column": 42 } - } + }, + "value": false } - ] + } }, { "type": "BreakStatement", - "start": 7581, - "end": 7587, + "start": 7724, + "end": 7730, "loc": { "start": { - "line": 241, + "line": 244, "column": 20 }, "end": { - "line": 241, + "line": 244, "column": 26 } }, @@ -15356,15 +15720,15 @@ ], "test": { "type": "NumericLiteral", - "start": 7490, - "end": 7491, + "start": 7546, + "end": 7547, "loc": { "start": { - "line": 239, + "line": 240, "column": 21 }, "end": { - "line": 239, + "line": 240, "column": 22 } }, @@ -15377,78 +15741,78 @@ }, { "type": "SwitchCase", - "start": 7604, - "end": 7698, + "start": 7747, + "end": 7929, "loc": { "start": { - "line": 242, + "line": 245, "column": 16 }, "end": { - "line": 244, + "line": 249, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 7648, - "end": 7671, + "start": 7791, + "end": 7813, "loc": { "start": { - "line": 243, + "line": 246, "column": 20 }, "end": { - "line": 243, - "column": 43 + "line": 246, + "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 7648, - "end": 7670, + "start": 7791, + "end": 7812, "loc": { "start": { - "line": 243, + "line": 246, "column": 20 }, "end": { - "line": 243, - "column": 42 + "line": 246, + "column": 41 } }, "operator": "=", "left": { "type": "Identifier", - "start": 7648, - "end": 7662, + "start": 7791, + "end": 7804, "loc": { "start": { - "line": 243, + "line": 246, "column": 20 }, "end": { - "line": 243, - "column": 34 + "line": 246, + "column": 33 }, - "identifierName": "mouseDownRight" + "identifierName": "mouseDownLeft" }, - "name": "mouseDownRight", + "name": "mouseDownLeft", "leadingComments": null }, "right": { "type": "BooleanLiteral", - "start": 7665, - "end": 7670, + "start": 7807, + "end": 7812, "loc": { "start": { - "line": 243, - "column": 37 + "line": 246, + "column": 36 }, "end": { - "line": 243, - "column": 42 + "line": 246, + "column": 41 } }, "value": false @@ -15459,32 +15823,160 @@ { "type": "CommentLine", "value": " Right button", - "start": 7612, - "end": 7627, + "start": 7755, + "end": 7770, "loc": { "start": { - "line": 242, + "line": 245, "column": 24 }, "end": { - "line": 242, + "line": 245, "column": 39 } } } ] }, + { + "type": "ExpressionStatement", + "start": 7834, + "end": 7858, + "loc": { + "start": { + "line": 247, + "column": 20 + }, + "end": { + "line": 247, + "column": 44 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7834, + "end": 7857, + "loc": { + "start": { + "line": 247, + "column": 20 + }, + "end": { + "line": 247, + "column": 43 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 7834, + "end": 7849, + "loc": { + "start": { + "line": 247, + "column": 20 + }, + "end": { + "line": 247, + "column": 35 + }, + "identifierName": "mouseDownMiddle" + }, + "name": "mouseDownMiddle" + }, + "right": { + "type": "BooleanLiteral", + "start": 7852, + "end": 7857, + "loc": { + "start": { + "line": 247, + "column": 38 + }, + "end": { + "line": 247, + "column": 43 + } + }, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 7879, + "end": 7902, + "loc": { + "start": { + "line": 248, + "column": 20 + }, + "end": { + "line": 248, + "column": 43 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7879, + "end": 7901, + "loc": { + "start": { + "line": 248, + "column": 20 + }, + "end": { + "line": 248, + "column": 42 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 7879, + "end": 7893, + "loc": { + "start": { + "line": 248, + "column": 20 + }, + "end": { + "line": 248, + "column": 34 + }, + "identifierName": "mouseDownRight" + }, + "name": "mouseDownRight" + }, + "right": { + "type": "BooleanLiteral", + "start": 7896, + "end": 7901, + "loc": { + "start": { + "line": 248, + "column": 37 + }, + "end": { + "line": 248, + "column": 42 + } + }, + "value": false + } + } + }, { "type": "BreakStatement", - "start": 7692, - "end": 7698, + "start": 7923, + "end": 7929, "loc": { "start": { - "line": 244, + "line": 249, "column": 20 }, "end": { - "line": 244, + "line": 249, "column": 26 } }, @@ -15493,15 +15985,15 @@ ], "test": { "type": "NumericLiteral", - "start": 7609, - "end": 7610, + "start": 7752, + "end": 7753, "loc": { "start": { - "line": 242, + "line": 245, "column": 21 }, "end": { - "line": 242, + "line": 245, "column": 22 } }, @@ -15514,30 +16006,30 @@ }, { "type": "SwitchCase", - "start": 7715, - "end": 7750, + "start": 7946, + "end": 7981, "loc": { "start": { - "line": 245, + "line": 250, "column": 16 }, "end": { - "line": 246, + "line": 251, "column": 26 } }, "consequent": [ { "type": "BreakStatement", - "start": 7744, - "end": 7750, + "start": 7975, + "end": 7981, "loc": { "start": { - "line": 246, + "line": 251, "column": 20 }, "end": { - "line": 246, + "line": 251, "column": 26 } }, @@ -15550,44 +16042,44 @@ }, { "type": "ExpressionStatement", - "start": 7777, - "end": 7794, + "start": 8008, + "end": 8025, "loc": { "start": { - "line": 248, + "line": 253, "column": 12 }, "end": { - "line": 248, + "line": 253, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 7777, - "end": 7793, + "start": 8008, + "end": 8024, "loc": { "start": { - "line": 248, + "line": 253, "column": 12 }, "end": { - "line": 248, + "line": 253, "column": 28 } }, "operator": "=", "left": { "type": "Identifier", - "start": 7777, - "end": 7789, + "start": 8008, + "end": 8020, "loc": { "start": { - "line": 248, + "line": 253, "column": 12 }, "end": { - "line": 248, + "line": 253, "column": 24 }, "identifierName": "xRotateDelta" @@ -15596,15 +16088,15 @@ }, "right": { "type": "NumericLiteral", - "start": 7792, - "end": 7793, + "start": 8023, + "end": 8024, "loc": { "start": { - "line": 248, + "line": 253, "column": 27 }, "end": { - "line": 248, + "line": 253, "column": 28 } }, @@ -15618,44 +16110,44 @@ }, { "type": "ExpressionStatement", - "start": 7807, - "end": 7824, + "start": 8038, + "end": 8055, "loc": { "start": { - "line": 249, + "line": 254, "column": 12 }, "end": { - "line": 249, + "line": 254, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 7807, - "end": 7823, + "start": 8038, + "end": 8054, "loc": { "start": { - "line": 249, + "line": 254, "column": 12 }, "end": { - "line": 249, + "line": 254, "column": 28 } }, "operator": "=", "left": { "type": "Identifier", - "start": 7807, - "end": 7819, + "start": 8038, + "end": 8050, "loc": { "start": { - "line": 249, + "line": 254, "column": 12 }, "end": { - "line": 249, + "line": 254, "column": 24 }, "identifierName": "yRotateDelta" @@ -15664,15 +16156,15 @@ }, "right": { "type": "NumericLiteral", - "start": 7822, - "end": 7823, + "start": 8053, + "end": 8054, "loc": { "start": { - "line": 249, + "line": 254, "column": 27 }, "end": { - "line": 249, + "line": 254, "column": 28 } }, @@ -15683,251 +16175,6 @@ "value": 0 } } - }, - { - "type": "ExpressionStatement", - "start": 7837, - "end": 7856, - "loc": { - "start": { - "line": 250, - "column": 12 - }, - "end": { - "line": 250, - "column": 31 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 7837, - "end": 7855, - "loc": { - "start": { - "line": 250, - "column": 12 - }, - "end": { - "line": 250, - "column": 30 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 7837, - "end": 7847, - "loc": { - "start": { - "line": 250, - "column": 12 - }, - "end": { - "line": 250, - "column": 22 - } - }, - "object": { - "type": "ThisExpression", - "start": 7837, - "end": 7841, - "loc": { - "start": { - "line": 250, - "column": 12 - }, - "end": { - "line": 250, - "column": 16 - } - } - }, - "property": { - "type": "Identifier", - "start": 7842, - "end": 7847, - "loc": { - "start": { - "line": 250, - "column": 17 - }, - "end": { - "line": 250, - "column": 22 - }, - "identifierName": "_down" - }, - "name": "_down" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 7850, - "end": 7855, - "loc": { - "start": { - "line": 250, - "column": 25 - }, - "end": { - "line": 250, - "column": 30 - } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 7870, - "end": 7944, - "loc": { - "start": { - "line": 252, - "column": 12 - }, - "end": { - "line": 252, - "column": 86 - } - }, - "expression": { - "type": "CallExpression", - "start": 7870, - "end": 7943, - "loc": { - "start": { - "line": 252, - "column": 12 - }, - "end": { - "line": 252, - "column": 85 - } - }, - "callee": { - "type": "MemberExpression", - "start": 7870, - "end": 7898, - "loc": { - "start": { - "line": 252, - "column": 12 - }, - "end": { - "line": 252, - "column": 40 - } - }, - "object": { - "type": "Identifier", - "start": 7870, - "end": 7878, - "loc": { - "start": { - "line": 252, - "column": 12 - }, - "end": { - "line": 252, - "column": 20 - }, - "identifierName": "document" - }, - "name": "document" - }, - "property": { - "type": "Identifier", - "start": 7879, - "end": 7898, - "loc": { - "start": { - "line": 252, - "column": 21 - }, - "end": { - "line": 252, - "column": 40 - }, - "identifierName": "removeEventListener" - }, - "name": "removeEventListener" - }, - "computed": false - }, - "arguments": [ - { - "type": "StringLiteral", - "start": 7899, - "end": 7910, - "loc": { - "start": { - "line": 252, - "column": 41 - }, - "end": { - "line": 252, - "column": 52 - } - }, - "extra": { - "rawValue": "mousemove", - "raw": "\"mousemove\"" - }, - "value": "mousemove" - }, - { - "type": "MemberExpression", - "start": 7912, - "end": 7942, - "loc": { - "start": { - "line": 252, - "column": 54 - }, - "end": { - "line": 252, - "column": 84 - } - }, - "object": { - "type": "ThisExpression", - "start": 7912, - "end": 7916, - "loc": { - "start": { - "line": 252, - "column": 54 - }, - "end": { - "line": 252, - "column": 58 - } - } - }, - "property": { - "type": "Identifier", - "start": 7917, - "end": 7942, - "loc": { - "start": { - "line": 252, - "column": 59 - }, - "end": { - "line": 252, - "column": 84 - }, - "identifierName": "_documentMouseMoveHandler" - }, - "name": "_documentMouseMoveHandler" - }, - "computed": false - } - ] - } } ], "directives": [] @@ -15939,57 +16186,57 @@ }, { "type": "ExpressionStatement", - "start": 7966, - "end": 8826, + "start": 8077, + "end": 8937, "loc": { "start": { - "line": 255, + "line": 257, "column": 8 }, "end": { - "line": 275, + "line": 277, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 7966, - "end": 8825, + "start": 8077, + "end": 8936, "loc": { "start": { - "line": 255, + "line": 257, "column": 8 }, "end": { - "line": 275, + "line": 277, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 7966, - "end": 7989, + "start": 8077, + "end": 8100, "loc": { "start": { - "line": 255, + "line": 257, "column": 8 }, "end": { - "line": 255, + "line": 257, "column": 31 } }, "object": { "type": "Identifier", - "start": 7966, - "end": 7972, + "start": 8077, + "end": 8083, "loc": { "start": { - "line": 255, + "line": 257, "column": 8 }, "end": { - "line": 255, + "line": 257, "column": 14 }, "identifierName": "canvas" @@ -15998,15 +16245,15 @@ }, "property": { "type": "Identifier", - "start": 7973, - "end": 7989, + "start": 8084, + "end": 8100, "loc": { "start": { - "line": 255, + "line": 257, "column": 15 }, "end": { - "line": 255, + "line": 257, "column": 31 }, "identifierName": "addEventListener" @@ -16018,15 +16265,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 7990, - "end": 7999, + "start": 8101, + "end": 8110, "loc": { "start": { - "line": 255, + "line": 257, "column": 32 }, "end": { - "line": 255, + "line": 257, "column": 41 } }, @@ -16038,59 +16285,59 @@ }, { "type": "AssignmentExpression", - "start": 8001, - "end": 8824, + "start": 8112, + "end": 8935, "loc": { "start": { - "line": 255, + "line": 257, "column": 43 }, "end": { - "line": 275, + "line": 277, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8001, - "end": 8021, + "start": 8112, + "end": 8132, "loc": { "start": { - "line": 255, + "line": 257, "column": 43 }, "end": { - "line": 255, + "line": 257, "column": 63 } }, "object": { "type": "ThisExpression", - "start": 8001, - "end": 8005, + "start": 8112, + "end": 8116, "loc": { "start": { - "line": 255, + "line": 257, "column": 43 }, "end": { - "line": 255, + "line": 257, "column": 47 } } }, "property": { "type": "Identifier", - "start": 8006, - "end": 8021, + "start": 8117, + "end": 8132, "loc": { "start": { - "line": 255, + "line": 257, "column": 48 }, "end": { - "line": 255, + "line": 257, "column": 63 }, "identifierName": "_mouseUpHandler" @@ -16101,15 +16348,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 8024, - "end": 8824, + "start": 8135, + "end": 8935, "loc": { "start": { - "line": 255, + "line": 257, "column": 66 }, "end": { - "line": 275, + "line": 277, "column": 9 } }, @@ -16120,15 +16367,15 @@ "params": [ { "type": "Identifier", - "start": 8025, - "end": 8026, + "start": 8136, + "end": 8137, "loc": { "start": { - "line": 255, + "line": 257, "column": 67 }, "end": { - "line": 255, + "line": 257, "column": 68 }, "identifierName": "e" @@ -16138,44 +16385,44 @@ ], "body": { "type": "BlockStatement", - "start": 8031, - "end": 8824, + "start": 8142, + "end": 8935, "loc": { "start": { - "line": 255, + "line": 257, "column": 73 }, "end": { - "line": 275, + "line": 277, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 8045, - "end": 8133, + "start": 8156, + "end": 8244, "loc": { "start": { - "line": 256, + "line": 258, "column": 12 }, "end": { - "line": 258, + "line": 260, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 8049, - "end": 8092, + "start": 8160, + "end": 8203, "loc": { "start": { - "line": 256, + "line": 258, "column": 16 }, "end": { - "line": 256, + "line": 258, "column": 59 } }, @@ -16183,43 +16430,43 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 8051, - "end": 8091, + "start": 8162, + "end": 8202, "loc": { "start": { - "line": 256, + "line": 258, "column": 18 }, "end": { - "line": 256, + "line": 258, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 8051, - "end": 8065, + "start": 8162, + "end": 8176, "loc": { "start": { - "line": 256, + "line": 258, "column": 18 }, "end": { - "line": 256, + "line": 258, "column": 32 } }, "object": { "type": "Identifier", - "start": 8051, - "end": 8058, + "start": 8162, + "end": 8169, "loc": { "start": { - "line": 256, + "line": 258, "column": 18 }, "end": { - "line": 256, + "line": 258, "column": 25 }, "identifierName": "configs" @@ -16228,15 +16475,15 @@ }, "property": { "type": "Identifier", - "start": 8059, - "end": 8065, + "start": 8170, + "end": 8176, "loc": { "start": { - "line": 256, + "line": 258, "column": 26 }, "end": { - "line": 256, + "line": 258, "column": 32 }, "identifierName": "active" @@ -16248,29 +16495,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 8069, - "end": 8091, + "start": 8180, + "end": 8202, "loc": { "start": { - "line": 256, + "line": 258, "column": 36 }, "end": { - "line": 256, + "line": 258, "column": 58 } }, "object": { "type": "Identifier", - "start": 8069, - "end": 8076, + "start": 8180, + "end": 8187, "loc": { "start": { - "line": 256, + "line": 258, "column": 36 }, "end": { - "line": 256, + "line": 258, "column": 43 }, "identifierName": "configs" @@ -16279,15 +16526,15 @@ }, "property": { "type": "Identifier", - "start": 8077, - "end": 8091, + "start": 8188, + "end": 8202, "loc": { "start": { - "line": 256, + "line": 258, "column": 44 }, "end": { - "line": 256, + "line": 258, "column": 58 }, "identifierName": "pointerEnabled" @@ -16298,7 +16545,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 8050 + "parenStart": 8161 } }, "extra": { @@ -16307,30 +16554,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 8094, - "end": 8133, + "start": 8205, + "end": 8244, "loc": { "start": { - "line": 256, + "line": 258, "column": 61 }, "end": { - "line": 258, + "line": 260, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 8112, - "end": 8119, + "start": 8223, + "end": 8230, "loc": { "start": { - "line": 257, + "line": 259, "column": 16 }, "end": { - "line": 257, + "line": 259, "column": 23 } }, @@ -16343,43 +16590,43 @@ }, { "type": "SwitchStatement", - "start": 8146, - "end": 8763, + "start": 8257, + "end": 8874, "loc": { "start": { - "line": 259, + "line": 261, "column": 12 }, "end": { - "line": 273, + "line": 275, "column": 13 } }, "discriminant": { "type": "MemberExpression", - "start": 8154, - "end": 8161, + "start": 8265, + "end": 8272, "loc": { "start": { - "line": 259, + "line": 261, "column": 20 }, "end": { - "line": 259, + "line": 261, "column": 27 } }, "object": { "type": "Identifier", - "start": 8154, - "end": 8155, + "start": 8265, + "end": 8266, "loc": { "start": { - "line": 259, + "line": 261, "column": 20 }, "end": { - "line": 259, + "line": 261, "column": 21 }, "identifierName": "e" @@ -16388,15 +16635,15 @@ }, "property": { "type": "Identifier", - "start": 8156, - "end": 8161, + "start": 8267, + "end": 8272, "loc": { "start": { - "line": 259, + "line": 261, "column": 22 }, "end": { - "line": 259, + "line": 261, "column": 27 }, "identifierName": "which" @@ -16408,58 +16655,58 @@ "cases": [ { "type": "SwitchCase", - "start": 8181, - "end": 8697, + "start": 8292, + "end": 8808, "loc": { "start": { - "line": 260, + "line": 262, "column": 16 }, "end": { - "line": 270, + "line": 272, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 8225, - "end": 8261, + "start": 8336, + "end": 8372, "loc": { "start": { - "line": 261, + "line": 263, "column": 20 }, "end": { - "line": 261, + "line": 263, "column": 56 } }, "expression": { "type": "CallExpression", - "start": 8225, - "end": 8260, + "start": 8336, + "end": 8371, "loc": { "start": { - "line": 261, + "line": 263, "column": 20 }, "end": { - "line": 261, + "line": 263, "column": 55 } }, "callee": { "type": "Identifier", - "start": 8225, - "end": 8246, + "start": 8336, + "end": 8357, "loc": { "start": { - "line": 261, + "line": 263, "column": 20 }, "end": { - "line": 261, + "line": 263, "column": 41 }, "identifierName": "getCanvasPosFromEvent" @@ -16470,15 +16717,15 @@ "arguments": [ { "type": "Identifier", - "start": 8247, - "end": 8248, + "start": 8358, + "end": 8359, "loc": { "start": { - "line": 261, + "line": 263, "column": 42 }, "end": { - "line": 261, + "line": 263, "column": 43 }, "identifierName": "e" @@ -16487,15 +16734,15 @@ }, { "type": "Identifier", - "start": 8250, - "end": 8259, + "start": 8361, + "end": 8370, "loc": { "start": { - "line": 261, + "line": 263, "column": 45 }, "end": { - "line": 261, + "line": 263, "column": 54 }, "identifierName": "canvasPos" @@ -16509,15 +16756,15 @@ { "type": "CommentLine", "value": " Right button", - "start": 8189, - "end": 8204, + "start": 8300, + "end": 8315, "loc": { "start": { - "line": 260, + "line": 262, "column": 24 }, "end": { - "line": 260, + "line": 262, "column": 39 } } @@ -16526,44 +16773,44 @@ }, { "type": "VariableDeclaration", - "start": 8282, - "end": 8305, + "start": 8393, + "end": 8416, "loc": { "start": { - "line": 262, + "line": 264, "column": 20 }, "end": { - "line": 262, + "line": 264, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 8288, - "end": 8304, + "start": 8399, + "end": 8415, "loc": { "start": { - "line": 262, + "line": 264, "column": 26 }, "end": { - "line": 262, + "line": 264, "column": 42 } }, "id": { "type": "Identifier", - "start": 8288, - "end": 8289, + "start": 8399, + "end": 8400, "loc": { "start": { - "line": 262, + "line": 264, "column": 26 }, "end": { - "line": 262, + "line": 264, "column": 27 }, "identifierName": "x" @@ -16572,29 +16819,29 @@ }, "init": { "type": "MemberExpression", - "start": 8292, - "end": 8304, + "start": 8403, + "end": 8415, "loc": { "start": { - "line": 262, + "line": 264, "column": 30 }, "end": { - "line": 262, + "line": 264, "column": 42 } }, "object": { "type": "Identifier", - "start": 8292, - "end": 8301, + "start": 8403, + "end": 8412, "loc": { "start": { - "line": 262, + "line": 264, "column": 30 }, "end": { - "line": 262, + "line": 264, "column": 39 }, "identifierName": "canvasPos" @@ -16603,15 +16850,15 @@ }, "property": { "type": "NumericLiteral", - "start": 8302, - "end": 8303, + "start": 8413, + "end": 8414, "loc": { "start": { - "line": 262, + "line": 264, "column": 40 }, "end": { - "line": 262, + "line": 264, "column": 41 } }, @@ -16629,44 +16876,44 @@ }, { "type": "VariableDeclaration", - "start": 8326, - "end": 8349, + "start": 8437, + "end": 8460, "loc": { "start": { - "line": 263, + "line": 265, "column": 20 }, "end": { - "line": 263, + "line": 265, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 8332, - "end": 8348, + "start": 8443, + "end": 8459, "loc": { "start": { - "line": 263, + "line": 265, "column": 26 }, "end": { - "line": 263, + "line": 265, "column": 42 } }, "id": { "type": "Identifier", - "start": 8332, - "end": 8333, + "start": 8443, + "end": 8444, "loc": { "start": { - "line": 263, + "line": 265, "column": 26 }, "end": { - "line": 263, + "line": 265, "column": 27 }, "identifierName": "y" @@ -16675,29 +16922,29 @@ }, "init": { "type": "MemberExpression", - "start": 8336, - "end": 8348, + "start": 8447, + "end": 8459, "loc": { "start": { - "line": 263, + "line": 265, "column": 30 }, "end": { - "line": 263, + "line": 265, "column": 42 } }, "object": { "type": "Identifier", - "start": 8336, - "end": 8345, + "start": 8447, + "end": 8456, "loc": { "start": { - "line": 263, + "line": 265, "column": 30 }, "end": { - "line": 263, + "line": 265, "column": 39 }, "identifierName": "canvasPos" @@ -16706,15 +16953,15 @@ }, "property": { "type": "NumericLiteral", - "start": 8346, - "end": 8347, + "start": 8457, + "end": 8458, "loc": { "start": { - "line": 263, + "line": 265, "column": 40 }, "end": { - "line": 263, + "line": 265, "column": 41 } }, @@ -16732,85 +16979,85 @@ }, { "type": "IfStatement", - "start": 8370, - "end": 8670, + "start": 8481, + "end": 8781, "loc": { "start": { - "line": 264, + "line": 266, "column": 20 }, "end": { - "line": 269, + "line": 271, "column": 21 } }, "test": { "type": "LogicalExpression", - "start": 8374, - "end": 8432, + "start": 8485, + "end": 8543, "loc": { "start": { - "line": 264, + "line": 266, "column": 24 }, "end": { - "line": 264, + "line": 266, "column": 82 } }, "left": { "type": "BinaryExpression", - "start": 8374, - "end": 8401, + "start": 8485, + "end": 8512, "loc": { "start": { - "line": 264, + "line": 266, "column": 24 }, "end": { - "line": 264, + "line": 266, "column": 51 } }, "left": { "type": "CallExpression", - "start": 8374, - "end": 8397, + "start": 8485, + "end": 8508, "loc": { "start": { - "line": 264, + "line": 266, "column": 24 }, "end": { - "line": 264, + "line": 266, "column": 47 } }, "callee": { "type": "MemberExpression", - "start": 8374, - "end": 8382, + "start": 8485, + "end": 8493, "loc": { "start": { - "line": 264, + "line": 266, "column": 24 }, "end": { - "line": 264, + "line": 266, "column": 32 } }, "object": { "type": "Identifier", - "start": 8374, - "end": 8378, + "start": 8485, + "end": 8489, "loc": { "start": { - "line": 264, + "line": 266, "column": 24 }, "end": { - "line": 264, + "line": 266, "column": 28 }, "identifierName": "Math" @@ -16819,15 +17066,15 @@ }, "property": { "type": "Identifier", - "start": 8379, - "end": 8382, + "start": 8490, + "end": 8493, "loc": { "start": { - "line": 264, + "line": 266, "column": 29 }, "end": { - "line": 264, + "line": 266, "column": 32 }, "identifierName": "abs" @@ -16839,29 +17086,29 @@ "arguments": [ { "type": "BinaryExpression", - "start": 8383, - "end": 8396, + "start": 8494, + "end": 8507, "loc": { "start": { - "line": 264, + "line": 266, "column": 33 }, "end": { - "line": 264, + "line": 266, "column": 46 } }, "left": { "type": "Identifier", - "start": 8383, - "end": 8384, + "start": 8494, + "end": 8495, "loc": { "start": { - "line": 264, + "line": 266, "column": 33 }, "end": { - "line": 264, + "line": 266, "column": 34 }, "identifierName": "x" @@ -16871,15 +17118,15 @@ "operator": "-", "right": { "type": "Identifier", - "start": 8387, - "end": 8396, + "start": 8498, + "end": 8507, "loc": { "start": { - "line": 264, + "line": 266, "column": 37 }, "end": { - "line": 264, + "line": 266, "column": 46 }, "identifierName": "lastXDown" @@ -16892,15 +17139,15 @@ "operator": "<", "right": { "type": "NumericLiteral", - "start": 8400, - "end": 8401, + "start": 8511, + "end": 8512, "loc": { "start": { - "line": 264, + "line": 266, "column": 50 }, "end": { - "line": 264, + "line": 266, "column": 51 } }, @@ -16914,57 +17161,57 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 8405, - "end": 8432, + "start": 8516, + "end": 8543, "loc": { "start": { - "line": 264, + "line": 266, "column": 55 }, "end": { - "line": 264, + "line": 266, "column": 82 } }, "left": { "type": "CallExpression", - "start": 8405, - "end": 8428, + "start": 8516, + "end": 8539, "loc": { "start": { - "line": 264, + "line": 266, "column": 55 }, "end": { - "line": 264, + "line": 266, "column": 78 } }, "callee": { "type": "MemberExpression", - "start": 8405, - "end": 8413, + "start": 8516, + "end": 8524, "loc": { "start": { - "line": 264, + "line": 266, "column": 55 }, "end": { - "line": 264, + "line": 266, "column": 63 } }, "object": { "type": "Identifier", - "start": 8405, - "end": 8409, + "start": 8516, + "end": 8520, "loc": { "start": { - "line": 264, + "line": 266, "column": 55 }, "end": { - "line": 264, + "line": 266, "column": 59 }, "identifierName": "Math" @@ -16973,15 +17220,15 @@ }, "property": { "type": "Identifier", - "start": 8410, - "end": 8413, + "start": 8521, + "end": 8524, "loc": { "start": { - "line": 264, + "line": 266, "column": 60 }, "end": { - "line": 264, + "line": 266, "column": 63 }, "identifierName": "abs" @@ -16993,29 +17240,29 @@ "arguments": [ { "type": "BinaryExpression", - "start": 8414, - "end": 8427, + "start": 8525, + "end": 8538, "loc": { "start": { - "line": 264, + "line": 266, "column": 64 }, "end": { - "line": 264, + "line": 266, "column": 77 } }, "left": { "type": "Identifier", - "start": 8414, - "end": 8415, + "start": 8525, + "end": 8526, "loc": { "start": { - "line": 264, + "line": 266, "column": 64 }, "end": { - "line": 264, + "line": 266, "column": 65 }, "identifierName": "y" @@ -17025,15 +17272,15 @@ "operator": "-", "right": { "type": "Identifier", - "start": 8418, - "end": 8427, + "start": 8529, + "end": 8538, "loc": { "start": { - "line": 264, + "line": 266, "column": 68 }, "end": { - "line": 264, + "line": 266, "column": 77 }, "identifierName": "lastYDown" @@ -17046,15 +17293,15 @@ "operator": "<", "right": { "type": "NumericLiteral", - "start": 8431, - "end": 8432, + "start": 8542, + "end": 8543, "loc": { "start": { - "line": 264, + "line": 266, "column": 81 }, "end": { - "line": 264, + "line": 266, "column": 82 } }, @@ -17068,86 +17315,86 @@ }, "consequent": { "type": "BlockStatement", - "start": 8434, - "end": 8670, + "start": 8545, + "end": 8781, "loc": { "start": { - "line": 264, + "line": 266, "column": 84 }, "end": { - "line": 269, + "line": 271, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 8460, - "end": 8648, + "start": 8571, + "end": 8759, "loc": { "start": { - "line": 265, + "line": 267, "column": 24 }, "end": { - "line": 268, + "line": 270, "column": 33 } }, "expression": { "type": "CallExpression", - "start": 8460, - "end": 8647, + "start": 8571, + "end": 8758, "loc": { "start": { - "line": 265, + "line": 267, "column": 24 }, "end": { - "line": 268, + "line": 270, "column": 32 } }, "callee": { "type": "MemberExpression", - "start": 8460, - "end": 8490, + "start": 8571, + "end": 8601, "loc": { "start": { - "line": 265, + "line": 267, "column": 24 }, "end": { - "line": 265, + "line": 267, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 8460, - "end": 8485, + "start": 8571, + "end": 8596, "loc": { "start": { - "line": 265, + "line": 267, "column": 24 }, "end": { - "line": 265, + "line": 267, "column": 49 } }, "object": { "type": "Identifier", - "start": 8460, - "end": 8471, + "start": 8571, + "end": 8582, "loc": { "start": { - "line": 265, + "line": 267, "column": 24 }, "end": { - "line": 265, + "line": 267, "column": 35 }, "identifierName": "controllers" @@ -17156,15 +17403,15 @@ }, "property": { "type": "Identifier", - "start": 8472, - "end": 8485, + "start": 8583, + "end": 8596, "loc": { "start": { - "line": 265, + "line": 267, "column": 36 }, "end": { - "line": 265, + "line": 267, "column": 49 }, "identifierName": "cameraControl" @@ -17175,15 +17422,15 @@ }, "property": { "type": "Identifier", - "start": 8486, - "end": 8490, + "start": 8597, + "end": 8601, "loc": { "start": { - "line": 265, + "line": 267, "column": 50 }, "end": { - "line": 265, + "line": 267, "column": 54 }, "identifierName": "fire" @@ -17195,15 +17442,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 8491, - "end": 8503, + "start": 8602, + "end": 8614, "loc": { "start": { - "line": 265, + "line": 267, "column": 55 }, "end": { - "line": 265, + "line": 267, "column": 67 } }, @@ -17215,30 +17462,30 @@ }, { "type": "ObjectExpression", - "start": 8505, - "end": 8640, + "start": 8616, + "end": 8751, "loc": { "start": { - "line": 265, + "line": 267, "column": 69 }, "end": { - "line": 268, + "line": 270, "column": 25 } }, "properties": [ { "type": "ObjectProperty", - "start": 8556, - "end": 8576, + "start": 8667, + "end": 8687, "loc": { "start": { - "line": 266, + "line": 268, "column": 28 }, "end": { - "line": 266, + "line": 268, "column": 48 } }, @@ -17247,15 +17494,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8556, - "end": 8565, + "start": 8667, + "end": 8676, "loc": { "start": { - "line": 266, + "line": 268, "column": 28 }, "end": { - "line": 266, + "line": 268, "column": 37 }, "identifierName": "canvasPos" @@ -17265,15 +17512,15 @@ }, "value": { "type": "Identifier", - "start": 8567, - "end": 8576, + "start": 8678, + "end": 8687, "loc": { "start": { - "line": 266, + "line": 268, "column": 39 }, "end": { - "line": 266, + "line": 268, "column": 48 }, "identifierName": "canvasPos" @@ -17284,15 +17531,15 @@ { "type": "CommentLine", "value": " For context menus", - "start": 8507, - "end": 8527, + "start": 8618, + "end": 8638, "loc": { "start": { - "line": 265, + "line": 267, "column": 71 }, "end": { - "line": 265, + "line": 267, "column": 91 } } @@ -17301,15 +17548,15 @@ }, { "type": "ObjectProperty", - "start": 8606, - "end": 8614, + "start": 8717, + "end": 8725, "loc": { "start": { - "line": 267, + "line": 269, "column": 28 }, "end": { - "line": 267, + "line": 269, "column": 36 } }, @@ -17318,15 +17565,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8606, - "end": 8611, + "start": 8717, + "end": 8722, "loc": { "start": { - "line": 267, + "line": 269, "column": 28 }, "end": { - "line": 267, + "line": 269, "column": 33 }, "identifierName": "event" @@ -17335,15 +17582,15 @@ }, "value": { "type": "Identifier", - "start": 8613, - "end": 8614, + "start": 8724, + "end": 8725, "loc": { "start": { - "line": 267, + "line": 269, "column": 35 }, "end": { - "line": 267, + "line": 269, "column": 36 }, "identifierName": "e" @@ -17355,15 +17602,15 @@ }, { "type": "BooleanLiteral", - "start": 8642, - "end": 8646, + "start": 8753, + "end": 8757, "loc": { "start": { - "line": 268, + "line": 270, "column": 27 }, "end": { - "line": 268, + "line": 270, "column": 31 } }, @@ -17379,15 +17626,15 @@ }, { "type": "BreakStatement", - "start": 8691, - "end": 8697, + "start": 8802, + "end": 8808, "loc": { "start": { - "line": 270, + "line": 272, "column": 20 }, "end": { - "line": 270, + "line": 272, "column": 26 } }, @@ -17396,15 +17643,15 @@ ], "test": { "type": "NumericLiteral", - "start": 8186, - "end": 8187, + "start": 8297, + "end": 8298, "loc": { "start": { - "line": 260, + "line": 262, "column": 21 }, "end": { - "line": 260, + "line": 262, "column": 22 } }, @@ -17417,30 +17664,30 @@ }, { "type": "SwitchCase", - "start": 8714, - "end": 8749, + "start": 8825, + "end": 8860, "loc": { "start": { - "line": 271, + "line": 273, "column": 16 }, "end": { - "line": 272, + "line": 274, "column": 26 } }, "consequent": [ { "type": "BreakStatement", - "start": 8743, - "end": 8749, + "start": 8854, + "end": 8860, "loc": { "start": { - "line": 272, + "line": 274, "column": 20 }, "end": { - "line": 272, + "line": 274, "column": 26 } }, @@ -17453,71 +17700,71 @@ }, { "type": "ExpressionStatement", - "start": 8776, - "end": 8814, + "start": 8887, + "end": 8925, "loc": { "start": { - "line": 274, + "line": 276, "column": 12 }, "end": { - "line": 274, + "line": 276, "column": 50 } }, "expression": { "type": "CallExpression", - "start": 8776, - "end": 8813, + "start": 8887, + "end": 8924, "loc": { "start": { - "line": 274, + "line": 276, "column": 12 }, "end": { - "line": 274, + "line": 276, "column": 49 } }, "callee": { "type": "MemberExpression", - "start": 8776, - "end": 8803, + "start": 8887, + "end": 8914, "loc": { "start": { - "line": 274, + "line": 276, "column": 12 }, "end": { - "line": 274, + "line": 276, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 8776, - "end": 8788, + "start": 8887, + "end": 8899, "loc": { "start": { - "line": 274, + "line": 276, "column": 12 }, "end": { - "line": 274, + "line": 276, "column": 24 } }, "object": { "type": "Identifier", - "start": 8776, - "end": 8782, + "start": 8887, + "end": 8893, "loc": { "start": { - "line": 274, + "line": 276, "column": 12 }, "end": { - "line": 274, + "line": 276, "column": 18 }, "identifierName": "canvas" @@ -17526,15 +17773,15 @@ }, "property": { "type": "Identifier", - "start": 8783, - "end": 8788, + "start": 8894, + "end": 8899, "loc": { "start": { - "line": 274, + "line": 276, "column": 19 }, "end": { - "line": 274, + "line": 276, "column": 24 }, "identifierName": "style" @@ -17545,15 +17792,15 @@ }, "property": { "type": "Identifier", - "start": 8789, - "end": 8803, + "start": 8900, + "end": 8914, "loc": { "start": { - "line": 274, + "line": 276, "column": 25 }, "end": { - "line": 274, + "line": 276, "column": 39 }, "identifierName": "removeProperty" @@ -17565,15 +17812,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 8804, - "end": 8812, + "start": 8915, + "end": 8923, "loc": { "start": { - "line": 274, + "line": 276, "column": 40 }, "end": { - "line": 274, + "line": 276, "column": 48 } }, @@ -17596,11 +17843,11 @@ }, { "type": "ExpressionStatement", - "start": 8836, - "end": 9113, + "start": 8947, + "end": 9191, "loc": { "start": { - "line": 277, + "line": 279, "column": 8 }, "end": { @@ -17610,11 +17857,11 @@ }, "expression": { "type": "CallExpression", - "start": 8836, - "end": 9112, + "start": 8947, + "end": 9190, "loc": { "start": { - "line": 277, + "line": 279, "column": 8 }, "end": { @@ -17624,29 +17871,29 @@ }, "callee": { "type": "MemberExpression", - "start": 8836, - "end": 8859, + "start": 8947, + "end": 8970, "loc": { "start": { - "line": 277, + "line": 279, "column": 8 }, "end": { - "line": 277, + "line": 279, "column": 31 } }, "object": { "type": "Identifier", - "start": 8836, - "end": 8842, + "start": 8947, + "end": 8953, "loc": { "start": { - "line": 277, + "line": 279, "column": 8 }, "end": { - "line": 277, + "line": 279, "column": 14 }, "identifierName": "canvas" @@ -17655,15 +17902,15 @@ }, "property": { "type": "Identifier", - "start": 8843, - "end": 8859, + "start": 8954, + "end": 8970, "loc": { "start": { - "line": 277, + "line": 279, "column": 15 }, "end": { - "line": 277, + "line": 279, "column": 31 }, "identifierName": "addEventListener" @@ -17675,15 +17922,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 8860, - "end": 8872, + "start": 8971, + "end": 8983, "loc": { "start": { - "line": 277, + "line": 279, "column": 32 }, "end": { - "line": 277, + "line": 279, "column": 44 } }, @@ -17695,11 +17942,11 @@ }, { "type": "AssignmentExpression", - "start": 8874, - "end": 9111, + "start": 8985, + "end": 9189, "loc": { "start": { - "line": 277, + "line": 279, "column": 46 }, "end": { @@ -17710,44 +17957,44 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 8874, - "end": 8897, + "start": 8985, + "end": 9008, "loc": { "start": { - "line": 277, + "line": 279, "column": 46 }, "end": { - "line": 277, + "line": 279, "column": 69 } }, "object": { "type": "ThisExpression", - "start": 8874, - "end": 8878, + "start": 8985, + "end": 8989, "loc": { "start": { - "line": 277, + "line": 279, "column": 46 }, "end": { - "line": 277, + "line": 279, "column": 50 } } }, "property": { "type": "Identifier", - "start": 8879, - "end": 8897, + "start": 8990, + "end": 9008, "loc": { "start": { - "line": 277, + "line": 279, "column": 51 }, "end": { - "line": 277, + "line": 279, "column": 69 }, "identifierName": "_mouseEnterHandler" @@ -17758,11 +18005,11 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 8900, - "end": 9111, + "start": 9011, + "end": 9189, "loc": { "start": { - "line": 277, + "line": 279, "column": 72 }, "end": { @@ -17777,11 +18024,11 @@ "params": [], "body": { "type": "BlockStatement", - "start": 8906, - "end": 9111, + "start": 9017, + "end": 9189, "loc": { "start": { - "line": 277, + "line": 279, "column": 78 }, "end": { @@ -17792,29 +18039,29 @@ "body": [ { "type": "IfStatement", - "start": 8920, - "end": 9008, + "start": 9031, + "end": 9119, "loc": { "start": { - "line": 278, + "line": 280, "column": 12 }, "end": { - "line": 280, + "line": 282, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 8924, - "end": 8967, + "start": 9035, + "end": 9078, "loc": { "start": { - "line": 278, + "line": 280, "column": 16 }, "end": { - "line": 278, + "line": 280, "column": 59 } }, @@ -17822,43 +18069,43 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 8926, - "end": 8966, + "start": 9037, + "end": 9077, "loc": { "start": { - "line": 278, + "line": 280, "column": 18 }, "end": { - "line": 278, + "line": 280, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 8926, - "end": 8940, + "start": 9037, + "end": 9051, "loc": { "start": { - "line": 278, + "line": 280, "column": 18 }, "end": { - "line": 278, + "line": 280, "column": 32 } }, "object": { "type": "Identifier", - "start": 8926, - "end": 8933, + "start": 9037, + "end": 9044, "loc": { "start": { - "line": 278, + "line": 280, "column": 18 }, "end": { - "line": 278, + "line": 280, "column": 25 }, "identifierName": "configs" @@ -17867,15 +18114,15 @@ }, "property": { "type": "Identifier", - "start": 8934, - "end": 8940, + "start": 9045, + "end": 9051, "loc": { "start": { - "line": 278, + "line": 280, "column": 26 }, "end": { - "line": 278, + "line": 280, "column": 32 }, "identifierName": "active" @@ -17887,29 +18134,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 8944, - "end": 8966, + "start": 9055, + "end": 9077, "loc": { "start": { - "line": 278, + "line": 280, "column": 36 }, "end": { - "line": 278, + "line": 280, "column": 58 } }, "object": { "type": "Identifier", - "start": 8944, - "end": 8951, + "start": 9055, + "end": 9062, "loc": { "start": { - "line": 278, + "line": 280, "column": 36 }, "end": { - "line": 278, + "line": 280, "column": 43 }, "identifierName": "configs" @@ -17918,15 +18165,15 @@ }, "property": { "type": "Identifier", - "start": 8952, - "end": 8966, + "start": 9063, + "end": 9077, "loc": { "start": { - "line": 278, + "line": 280, "column": 44 }, "end": { - "line": 278, + "line": 280, "column": 58 }, "identifierName": "pointerEnabled" @@ -17937,7 +18184,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 8925 + "parenStart": 9036 } }, "extra": { @@ -17946,30 +18193,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 8969, - "end": 9008, + "start": 9080, + "end": 9119, "loc": { "start": { - "line": 278, + "line": 280, "column": 61 }, "end": { - "line": 280, + "line": 282, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 8987, - "end": 8994, + "start": 9098, + "end": 9105, "loc": { "start": { - "line": 279, + "line": 281, "column": 16 }, "end": { - "line": 279, + "line": 281, "column": 23 } }, @@ -17982,44 +18229,44 @@ }, { "type": "ExpressionStatement", - "start": 9021, - "end": 9038, + "start": 9132, + "end": 9149, "loc": { "start": { - "line": 281, + "line": 283, "column": 12 }, "end": { - "line": 281, + "line": 283, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 9021, - "end": 9037, + "start": 9132, + "end": 9148, "loc": { "start": { - "line": 281, + "line": 283, "column": 12 }, "end": { - "line": 281, + "line": 283, "column": 28 } }, "operator": "=", "left": { "type": "Identifier", - "start": 9021, - "end": 9033, + "start": 9132, + "end": 9144, "loc": { "start": { - "line": 281, + "line": 283, "column": 12 }, "end": { - "line": 281, + "line": 283, "column": 24 }, "identifierName": "xRotateDelta" @@ -18028,15 +18275,15 @@ }, "right": { "type": "NumericLiteral", - "start": 9036, - "end": 9037, + "start": 9147, + "end": 9148, "loc": { "start": { - "line": 281, + "line": 283, "column": 27 }, "end": { - "line": 281, + "line": 283, "column": 28 } }, @@ -18050,44 +18297,44 @@ }, { "type": "ExpressionStatement", - "start": 9051, - "end": 9068, + "start": 9162, + "end": 9179, "loc": { "start": { - "line": 282, + "line": 284, "column": 12 }, "end": { - "line": 282, + "line": 284, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 9051, - "end": 9067, + "start": 9162, + "end": 9178, "loc": { "start": { - "line": 282, + "line": 284, "column": 12 }, "end": { - "line": 282, + "line": 284, "column": 28 } }, "operator": "=", "left": { "type": "Identifier", - "start": 9051, - "end": 9063, + "start": 9162, + "end": 9174, "loc": { "start": { - "line": 282, + "line": 284, "column": 12 }, "end": { - "line": 282, + "line": 284, "column": 24 }, "identifierName": "yRotateDelta" @@ -18096,15 +18343,15 @@ }, "right": { "type": "NumericLiteral", - "start": 9066, - "end": 9067, + "start": 9177, + "end": 9178, "loc": { "start": { - "line": 282, + "line": 284, "column": 27 }, "end": { - "line": 282, + "line": 284, "column": 28 } }, @@ -18115,101 +18362,6 @@ "value": 0 } } - }, - { - "type": "ExpressionStatement", - "start": 9082, - "end": 9101, - "loc": { - "start": { - "line": 284, - "column": 12 - }, - "end": { - "line": 284, - "column": 31 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 9082, - "end": 9100, - "loc": { - "start": { - "line": 284, - "column": 12 - }, - "end": { - "line": 284, - "column": 30 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 9082, - "end": 9092, - "loc": { - "start": { - "line": 284, - "column": 12 - }, - "end": { - "line": 284, - "column": 22 - } - }, - "object": { - "type": "ThisExpression", - "start": 9082, - "end": 9086, - "loc": { - "start": { - "line": 284, - "column": 12 - }, - "end": { - "line": 284, - "column": 16 - } - } - }, - "property": { - "type": "Identifier", - "start": 9087, - "end": 9092, - "loc": { - "start": { - "line": 284, - "column": 17 - }, - "end": { - "line": 284, - "column": 22 - }, - "identifierName": "_down" - }, - "name": "_down" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 9095, - "end": 9100, - "loc": { - "start": { - "line": 284, - "column": 25 - }, - "end": { - "line": 284, - "column": 30 - } - }, - "value": false - } - } } ], "directives": [] @@ -18221,8 +18373,8 @@ }, { "type": "VariableDeclaration", - "start": 9123, - "end": 9149, + "start": 9201, + "end": 9227, "loc": { "start": { "line": 287, @@ -18236,8 +18388,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9129, - "end": 9148, + "start": 9207, + "end": 9226, "loc": { "start": { "line": 287, @@ -18250,8 +18402,8 @@ }, "id": { "type": "Identifier", - "start": 9129, - "end": 9139, + "start": 9207, + "end": 9217, "loc": { "start": { "line": 287, @@ -18267,8 +18419,8 @@ }, "init": { "type": "BinaryExpression", - "start": 9142, - "end": 9148, + "start": 9220, + "end": 9226, "loc": { "start": { "line": 287, @@ -18281,8 +18433,8 @@ }, "left": { "type": "NumericLiteral", - "start": 9142, - "end": 9143, + "start": 9220, + "end": 9221, "loc": { "start": { "line": 287, @@ -18302,8 +18454,8 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 9146, - "end": 9148, + "start": 9224, + "end": 9226, "loc": { "start": { "line": 287, @@ -18327,8 +18479,8 @@ }, { "type": "VariableDeclaration", - "start": 9158, - "end": 9184, + "start": 9236, + "end": 9262, "loc": { "start": { "line": 288, @@ -18342,8 +18494,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9164, - "end": 9183, + "start": 9242, + "end": 9261, "loc": { "start": { "line": 288, @@ -18356,8 +18508,8 @@ }, "id": { "type": "Identifier", - "start": 9164, - "end": 9174, + "start": 9242, + "end": 9252, "loc": { "start": { "line": 288, @@ -18373,8 +18525,8 @@ }, "init": { "type": "BinaryExpression", - "start": 9177, - "end": 9183, + "start": 9255, + "end": 9261, "loc": { "start": { "line": 288, @@ -18387,8 +18539,8 @@ }, "left": { "type": "NumericLiteral", - "start": 9177, - "end": 9178, + "start": 9255, + "end": 9256, "loc": { "start": { "line": 288, @@ -18408,8 +18560,8 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 9181, - "end": 9183, + "start": 9259, + "end": 9261, "loc": { "start": { "line": 288, @@ -18433,8 +18585,8 @@ }, { "type": "VariableDeclaration", - "start": 9194, - "end": 9217, + "start": 9272, + "end": 9295, "loc": { "start": { "line": 290, @@ -18448,8 +18600,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9198, - "end": 9216, + "start": 9276, + "end": 9294, "loc": { "start": { "line": 290, @@ -18462,8 +18614,8 @@ }, "id": { "type": "Identifier", - "start": 9198, - "end": 9209, + "start": 9276, + "end": 9287, "loc": { "start": { "line": 290, @@ -18479,8 +18631,8 @@ }, "init": { "type": "NullLiteral", - "start": 9212, - "end": 9216, + "start": 9290, + "end": 9294, "loc": { "start": { "line": 290, @@ -18498,8 +18650,8 @@ }, { "type": "ExpressionStatement", - "start": 9227, - "end": 10269, + "start": 9305, + "end": 10363, "loc": { "start": { "line": 292, @@ -18512,8 +18664,8 @@ }, "expression": { "type": "CallExpression", - "start": 9227, - "end": 10268, + "start": 9305, + "end": 10362, "loc": { "start": { "line": 292, @@ -18526,8 +18678,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9227, - "end": 9250, + "start": 9305, + "end": 9328, "loc": { "start": { "line": 292, @@ -18540,8 +18692,8 @@ }, "object": { "type": "Identifier", - "start": 9227, - "end": 9233, + "start": 9305, + "end": 9311, "loc": { "start": { "line": 292, @@ -18557,8 +18709,8 @@ }, "property": { "type": "Identifier", - "start": 9234, - "end": 9250, + "start": 9312, + "end": 9328, "loc": { "start": { "line": 292, @@ -18577,8 +18729,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 9251, - "end": 9258, + "start": 9329, + "end": 9336, "loc": { "start": { "line": 292, @@ -18597,8 +18749,8 @@ }, { "type": "AssignmentExpression", - "start": 9260, - "end": 10267, + "start": 9338, + "end": 10361, "loc": { "start": { "line": 292, @@ -18612,8 +18764,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 9260, - "end": 9283, + "start": 9338, + "end": 9361, "loc": { "start": { "line": 292, @@ -18626,8 +18778,8 @@ }, "object": { "type": "ThisExpression", - "start": 9260, - "end": 9264, + "start": 9338, + "end": 9342, "loc": { "start": { "line": 292, @@ -18641,8 +18793,8 @@ }, "property": { "type": "Identifier", - "start": 9265, - "end": 9283, + "start": 9343, + "end": 9361, "loc": { "start": { "line": 292, @@ -18660,8 +18812,8 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 9286, - "end": 10267, + "start": 9364, + "end": 10361, "loc": { "start": { "line": 292, @@ -18679,8 +18831,8 @@ "params": [ { "type": "Identifier", - "start": 9287, - "end": 9288, + "start": 9365, + "end": 9366, "loc": { "start": { "line": 292, @@ -18697,8 +18849,8 @@ ], "body": { "type": "BlockStatement", - "start": 9293, - "end": 10267, + "start": 9371, + "end": 10361, "loc": { "start": { "line": 292, @@ -18712,8 +18864,8 @@ "body": [ { "type": "IfStatement", - "start": 9307, - "end": 9395, + "start": 9385, + "end": 9473, "loc": { "start": { "line": 293, @@ -18726,8 +18878,8 @@ }, "test": { "type": "UnaryExpression", - "start": 9311, - "end": 9354, + "start": 9389, + "end": 9432, "loc": { "start": { "line": 293, @@ -18742,8 +18894,8 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 9313, - "end": 9353, + "start": 9391, + "end": 9431, "loc": { "start": { "line": 293, @@ -18756,8 +18908,8 @@ }, "left": { "type": "MemberExpression", - "start": 9313, - "end": 9327, + "start": 9391, + "end": 9405, "loc": { "start": { "line": 293, @@ -18770,8 +18922,8 @@ }, "object": { "type": "Identifier", - "start": 9313, - "end": 9320, + "start": 9391, + "end": 9398, "loc": { "start": { "line": 293, @@ -18787,8 +18939,8 @@ }, "property": { "type": "Identifier", - "start": 9321, - "end": 9327, + "start": 9399, + "end": 9405, "loc": { "start": { "line": 293, @@ -18807,8 +18959,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 9331, - "end": 9353, + "start": 9409, + "end": 9431, "loc": { "start": { "line": 293, @@ -18821,8 +18973,8 @@ }, "object": { "type": "Identifier", - "start": 9331, - "end": 9338, + "start": 9409, + "end": 9416, "loc": { "start": { "line": 293, @@ -18838,8 +18990,8 @@ }, "property": { "type": "Identifier", - "start": 9339, - "end": 9353, + "start": 9417, + "end": 9431, "loc": { "start": { "line": 293, @@ -18857,7 +19009,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 9312 + "parenStart": 9390 } }, "extra": { @@ -18866,8 +19018,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9356, - "end": 9395, + "start": 9434, + "end": 9473, "loc": { "start": { "line": 293, @@ -18881,8 +19033,8 @@ "body": [ { "type": "ReturnStatement", - "start": 9374, - "end": 9381, + "start": 9452, + "end": 9459, "loc": { "start": { "line": 294, @@ -18902,8 +19054,8 @@ }, { "type": "VariableDeclaration", - "start": 9408, - "end": 9451, + "start": 9486, + "end": 9529, "loc": { "start": { "line": 296, @@ -18917,8 +19069,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9414, - "end": 9450, + "start": 9492, + "end": 9528, "loc": { "start": { "line": 296, @@ -18931,8 +19083,8 @@ }, "id": { "type": "Identifier", - "start": 9414, - "end": 9421, + "start": 9492, + "end": 9499, "loc": { "start": { "line": 296, @@ -18948,8 +19100,8 @@ }, "init": { "type": "BinaryExpression", - "start": 9424, - "end": 9450, + "start": 9502, + "end": 9528, "loc": { "start": { "line": 296, @@ -18962,8 +19114,8 @@ }, "left": { "type": "CallExpression", - "start": 9424, - "end": 9441, + "start": 9502, + "end": 9519, "loc": { "start": { "line": 296, @@ -18976,8 +19128,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9424, - "end": 9439, + "start": 9502, + "end": 9517, "loc": { "start": { "line": 296, @@ -18990,8 +19142,8 @@ }, "object": { "type": "Identifier", - "start": 9424, - "end": 9435, + "start": 9502, + "end": 9513, "loc": { "start": { "line": 296, @@ -19007,8 +19159,8 @@ }, "property": { "type": "Identifier", - "start": 9436, - "end": 9439, + "start": 9514, + "end": 9517, "loc": { "start": { "line": 296, @@ -19029,8 +19181,8 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 9444, - "end": 9450, + "start": 9522, + "end": 9528, "loc": { "start": { "line": 296, @@ -19054,8 +19206,8 @@ }, { "type": "VariableDeclaration", - "start": 9464, - "end": 9535, + "start": 9542, + "end": 9613, "loc": { "start": { "line": 297, @@ -19069,8 +19221,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9468, - "end": 9534, + "start": 9546, + "end": 9612, "loc": { "start": { "line": 297, @@ -19083,8 +19235,8 @@ }, "id": { "type": "Identifier", - "start": 9468, - "end": 9479, + "start": 9546, + "end": 9557, "loc": { "start": { "line": 297, @@ -19100,8 +19252,8 @@ }, "init": { "type": "ConditionalExpression", - "start": 9482, - "end": 9534, + "start": 9560, + "end": 9612, "loc": { "start": { "line": 297, @@ -19114,8 +19266,8 @@ }, "test": { "type": "BinaryExpression", - "start": 9483, - "end": 9503, + "start": 9561, + "end": 9581, "loc": { "start": { "line": 297, @@ -19128,8 +19280,8 @@ }, "left": { "type": "Identifier", - "start": 9483, - "end": 9494, + "start": 9561, + "end": 9572, "loc": { "start": { "line": 297, @@ -19146,8 +19298,8 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 9499, - "end": 9503, + "start": 9577, + "end": 9581, "loc": { "start": { "line": 297, @@ -19161,13 +19313,13 @@ }, "extra": { "parenthesized": true, - "parenStart": 9482 + "parenStart": 9560 } }, "consequent": { "type": "BinaryExpression", - "start": 9508, - "end": 9529, + "start": 9586, + "end": 9607, "loc": { "start": { "line": 297, @@ -19180,8 +19332,8 @@ }, "left": { "type": "Identifier", - "start": 9508, - "end": 9515, + "start": 9586, + "end": 9593, "loc": { "start": { "line": 297, @@ -19198,8 +19350,8 @@ "operator": "-", "right": { "type": "Identifier", - "start": 9518, - "end": 9529, + "start": 9596, + "end": 9607, "loc": { "start": { "line": 297, @@ -19215,13 +19367,13 @@ }, "extra": { "parenthesized": true, - "parenStart": 9507 + "parenStart": 9585 } }, "alternate": { "type": "NumericLiteral", - "start": 9533, - "end": 9534, + "start": 9611, + "end": 9612, "loc": { "start": { "line": 297, @@ -19245,8 +19397,8 @@ }, { "type": "ExpressionStatement", - "start": 9548, - "end": 9570, + "start": 9626, + "end": 9648, "loc": { "start": { "line": 298, @@ -19259,8 +19411,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9548, - "end": 9569, + "start": 9626, + "end": 9647, "loc": { "start": { "line": 298, @@ -19274,8 +19426,8 @@ "operator": "=", "left": { "type": "Identifier", - "start": 9548, - "end": 9559, + "start": 9626, + "end": 9637, "loc": { "start": { "line": 298, @@ -19291,8 +19443,8 @@ }, "right": { "type": "Identifier", - "start": 9562, - "end": 9569, + "start": 9640, + "end": 9647, "loc": { "start": { "line": 298, @@ -19310,8 +19462,8 @@ }, { "type": "IfStatement", - "start": 9583, - "end": 9670, + "start": 9661, + "end": 9748, "loc": { "start": { "line": 299, @@ -19324,8 +19476,8 @@ }, "test": { "type": "BinaryExpression", - "start": 9587, - "end": 9611, + "start": 9665, + "end": 9689, "loc": { "start": { "line": 299, @@ -19338,8 +19490,8 @@ }, "left": { "type": "Identifier", - "start": 9587, - "end": 9598, + "start": 9665, + "end": 9676, "loc": { "start": { "line": 299, @@ -19356,8 +19508,8 @@ "operator": ">", "right": { "type": "Identifier", - "start": 9601, - "end": 9611, + "start": 9679, + "end": 9689, "loc": { "start": { "line": 299, @@ -19374,8 +19526,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9613, - "end": 9670, + "start": 9691, + "end": 9748, "loc": { "start": { "line": 299, @@ -19389,8 +19541,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9631, - "end": 9656, + "start": 9709, + "end": 9734, "loc": { "start": { "line": 300, @@ -19403,8 +19555,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9631, - "end": 9655, + "start": 9709, + "end": 9733, "loc": { "start": { "line": 300, @@ -19418,8 +19570,8 @@ "operator": "=", "left": { "type": "Identifier", - "start": 9631, - "end": 9642, + "start": 9709, + "end": 9720, "loc": { "start": { "line": 300, @@ -19435,8 +19587,8 @@ }, "right": { "type": "Identifier", - "start": 9645, - "end": 9655, + "start": 9723, + "end": 9733, "loc": { "start": { "line": 300, @@ -19459,8 +19611,8 @@ }, { "type": "IfStatement", - "start": 9683, - "end": 9770, + "start": 9761, + "end": 9848, "loc": { "start": { "line": 302, @@ -19473,8 +19625,8 @@ }, "test": { "type": "BinaryExpression", - "start": 9687, - "end": 9711, + "start": 9765, + "end": 9789, "loc": { "start": { "line": 302, @@ -19487,8 +19639,8 @@ }, "left": { "type": "Identifier", - "start": 9687, - "end": 9698, + "start": 9765, + "end": 9776, "loc": { "start": { "line": 302, @@ -19505,8 +19657,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 9701, - "end": 9711, + "start": 9779, + "end": 9789, "loc": { "start": { "line": 302, @@ -19523,8 +19675,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9713, - "end": 9770, + "start": 9791, + "end": 9848, "loc": { "start": { "line": 302, @@ -19538,8 +19690,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9731, - "end": 9756, + "start": 9809, + "end": 9834, "loc": { "start": { "line": 303, @@ -19552,8 +19704,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9731, - "end": 9755, + "start": 9809, + "end": 9833, "loc": { "start": { "line": 303, @@ -19567,8 +19719,8 @@ "operator": "=", "left": { "type": "Identifier", - "start": 9731, - "end": 9742, + "start": 9809, + "end": 9820, "loc": { "start": { "line": 303, @@ -19584,8 +19736,8 @@ }, "right": { "type": "Identifier", - "start": 9745, - "end": 9755, + "start": 9823, + "end": 9833, "loc": { "start": { "line": 303, @@ -19608,8 +19760,8 @@ }, { "type": "VariableDeclaration", - "start": 9783, - "end": 9839, + "start": 9861, + "end": 9917, "loc": { "start": { "line": 305, @@ -19623,8 +19775,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9789, - "end": 9838, + "start": 9867, + "end": 9916, "loc": { "start": { "line": 305, @@ -19637,8 +19789,8 @@ }, "id": { "type": "Identifier", - "start": 9789, - "end": 9794, + "start": 9867, + "end": 9872, "loc": { "start": { "line": 305, @@ -19654,8 +19806,8 @@ }, "init": { "type": "CallExpression", - "start": 9797, - "end": 9838, + "start": 9875, + "end": 9916, "loc": { "start": { "line": 305, @@ -19668,8 +19820,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9797, - "end": 9805, + "start": 9875, + "end": 9883, "loc": { "start": { "line": 305, @@ -19682,8 +19834,8 @@ }, "object": { "type": "Identifier", - "start": 9797, - "end": 9801, + "start": 9875, + "end": 9879, "loc": { "start": { "line": 305, @@ -19699,8 +19851,8 @@ }, "property": { "type": "Identifier", - "start": 9802, - "end": 9805, + "start": 9880, + "end": 9883, "loc": { "start": { "line": 305, @@ -19719,8 +19871,8 @@ "arguments": [ { "type": "UnaryExpression", - "start": 9806, - "end": 9808, + "start": 9884, + "end": 9886, "loc": { "start": { "line": 305, @@ -19735,8 +19887,8 @@ "prefix": true, "argument": { "type": "NumericLiteral", - "start": 9807, - "end": 9808, + "start": 9885, + "end": 9886, "loc": { "start": { "line": 305, @@ -19759,8 +19911,8 @@ }, { "type": "CallExpression", - "start": 9810, - "end": 9837, + "start": 9888, + "end": 9915, "loc": { "start": { "line": 305, @@ -19773,8 +19925,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9810, - "end": 9818, + "start": 9888, + "end": 9896, "loc": { "start": { "line": 305, @@ -19787,8 +19939,8 @@ }, "object": { "type": "Identifier", - "start": 9810, - "end": 9814, + "start": 9888, + "end": 9892, "loc": { "start": { "line": 305, @@ -19804,8 +19956,8 @@ }, "property": { "type": "Identifier", - "start": 9815, - "end": 9818, + "start": 9893, + "end": 9896, "loc": { "start": { "line": 305, @@ -19824,8 +19976,8 @@ "arguments": [ { "type": "NumericLiteral", - "start": 9819, - "end": 9820, + "start": 9897, + "end": 9898, "loc": { "start": { "line": 305, @@ -19844,8 +19996,8 @@ }, { "type": "BinaryExpression", - "start": 9822, - "end": 9836, + "start": 9900, + "end": 9914, "loc": { "start": { "line": 305, @@ -19858,8 +20010,8 @@ }, "left": { "type": "UnaryExpression", - "start": 9822, - "end": 9831, + "start": 9900, + "end": 9909, "loc": { "start": { "line": 305, @@ -19874,8 +20026,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 9823, - "end": 9831, + "start": 9901, + "end": 9909, "loc": { "start": { "line": 305, @@ -19888,8 +20040,8 @@ }, "object": { "type": "Identifier", - "start": 9823, - "end": 9824, + "start": 9901, + "end": 9902, "loc": { "start": { "line": 305, @@ -19905,8 +20057,8 @@ }, "property": { "type": "Identifier", - "start": 9825, - "end": 9831, + "start": 9903, + "end": 9909, "loc": { "start": { "line": 305, @@ -19929,8 +20081,8 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 9834, - "end": 9836, + "start": 9912, + "end": 9914, "loc": { "start": { "line": 305, @@ -19958,8 +20110,8 @@ }, { "type": "IfStatement", - "start": 9852, - "end": 9908, + "start": 9930, + "end": 9986, "loc": { "start": { "line": 306, @@ -19972,8 +20124,8 @@ }, "test": { "type": "BinaryExpression", - "start": 9856, - "end": 9867, + "start": 9934, + "end": 9945, "loc": { "start": { "line": 306, @@ -19986,8 +20138,8 @@ }, "left": { "type": "Identifier", - "start": 9856, - "end": 9861, + "start": 9934, + "end": 9939, "loc": { "start": { "line": 306, @@ -20004,8 +20156,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 9866, - "end": 9867, + "start": 9944, + "end": 9945, "loc": { "start": { "line": 306, @@ -20025,8 +20177,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9869, - "end": 9908, + "start": 9947, + "end": 9986, "loc": { "start": { "line": 306, @@ -20040,8 +20192,8 @@ "body": [ { "type": "ReturnStatement", - "start": 9887, - "end": 9894, + "start": 9965, + "end": 9972, "loc": { "start": { "line": 307, @@ -20061,8 +20213,8 @@ }, { "type": "VariableDeclaration", - "start": 9921, - "end": 9969, + "start": 9999, + "end": 10047, "loc": { "start": { "line": 309, @@ -20076,8 +20228,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9927, - "end": 9968, + "start": 10005, + "end": 10046, "loc": { "start": { "line": 309, @@ -20090,8 +20242,8 @@ }, "id": { "type": "Identifier", - "start": 9927, - "end": 9942, + "start": 10005, + "end": 10020, "loc": { "start": { "line": 309, @@ -20107,8 +20259,8 @@ }, "init": { "type": "BinaryExpression", - "start": 9945, - "end": 9968, + "start": 10023, + "end": 10046, "loc": { "start": { "line": 309, @@ -20121,8 +20273,8 @@ }, "left": { "type": "Identifier", - "start": 9945, - "end": 9950, + "start": 10023, + "end": 10028, "loc": { "start": { "line": 309, @@ -20139,8 +20291,8 @@ "operator": "/", "right": { "type": "CallExpression", - "start": 9953, - "end": 9968, + "start": 10031, + "end": 10046, "loc": { "start": { "line": 309, @@ -20153,8 +20305,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9953, - "end": 9961, + "start": 10031, + "end": 10039, "loc": { "start": { "line": 309, @@ -20167,8 +20319,8 @@ }, "object": { "type": "Identifier", - "start": 9953, - "end": 9957, + "start": 10031, + "end": 10035, "loc": { "start": { "line": 309, @@ -20184,8 +20336,8 @@ }, "property": { "type": "Identifier", - "start": 9958, - "end": 9961, + "start": 10036, + "end": 10039, "loc": { "start": { "line": 309, @@ -20204,8 +20356,8 @@ "arguments": [ { "type": "Identifier", - "start": 9962, - "end": 9967, + "start": 10040, + "end": 10045, "loc": { "start": { "line": 309, @@ -20228,8 +20380,8 @@ }, { "type": "ExpressionStatement", - "start": 9982, - "end": 10065, + "start": 10060, + "end": 10143, "loc": { "start": { "line": 310, @@ -20242,8 +20394,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9982, - "end": 10064, + "start": 10060, + "end": 10142, "loc": { "start": { "line": 310, @@ -20257,8 +20409,8 @@ "operator": "+=", "left": { "type": "MemberExpression", - "start": 9982, - "end": 10000, + "start": 10060, + "end": 10078, "loc": { "start": { "line": 310, @@ -20271,8 +20423,8 @@ }, "object": { "type": "Identifier", - "start": 9982, - "end": 9989, + "start": 10060, + "end": 10067, "loc": { "start": { "line": 310, @@ -20288,8 +20440,8 @@ }, "property": { "type": "Identifier", - "start": 9990, - "end": 10000, + "start": 10068, + "end": 10078, "loc": { "start": { "line": 310, @@ -20307,8 +20459,8 @@ }, "right": { "type": "BinaryExpression", - "start": 10004, - "end": 10064, + "start": 10082, + "end": 10142, "loc": { "start": { "line": 310, @@ -20321,8 +20473,8 @@ }, "left": { "type": "BinaryExpression", - "start": 10004, - "end": 10034, + "start": 10082, + "end": 10112, "loc": { "start": { "line": 310, @@ -20335,8 +20487,8 @@ }, "left": { "type": "UnaryExpression", - "start": 10004, - "end": 10020, + "start": 10082, + "end": 10098, "loc": { "start": { "line": 310, @@ -20351,8 +20503,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 10005, - "end": 10020, + "start": 10083, + "end": 10098, "loc": { "start": { "line": 310, @@ -20373,8 +20525,8 @@ "operator": "*", "right": { "type": "Identifier", - "start": 10023, - "end": 10034, + "start": 10101, + "end": 10112, "loc": { "start": { "line": 310, @@ -20392,8 +20544,8 @@ "operator": "*", "right": { "type": "MemberExpression", - "start": 10037, - "end": 10064, + "start": 10115, + "end": 10142, "loc": { "start": { "line": 310, @@ -20406,8 +20558,8 @@ }, "object": { "type": "Identifier", - "start": 10037, - "end": 10044, + "start": 10115, + "end": 10122, "loc": { "start": { "line": 310, @@ -20423,8 +20575,8 @@ }, "property": { "type": "Identifier", - "start": 10045, - "end": 10064, + "start": 10123, + "end": 10142, "loc": { "start": { "line": 310, @@ -20445,8 +20597,8 @@ }, { "type": "IfStatement", - "start": 10079, - "end": 10224, + "start": 10157, + "end": 10318, "loc": { "start": { "line": 312, @@ -20459,8 +20611,8 @@ }, "test": { "type": "Identifier", - "start": 10083, - "end": 10107, + "start": 10161, + "end": 10193, "loc": { "start": { "line": 312, @@ -20468,20 +20620,20 @@ }, "end": { "line": 312, - "column": 40 + "column": 48 }, - "identifierName": "mouseMovedSinceLastWheel" + "identifierName": "mouseMovedOnCanvasSinceLastWheel" }, - "name": "mouseMovedSinceLastWheel" + "name": "mouseMovedOnCanvasSinceLastWheel" }, "consequent": { "type": "BlockStatement", - "start": 10109, - "end": 10224, + "start": 10195, + "end": 10318, "loc": { "start": { "line": 312, - "column": 42 + "column": 50 }, "end": { "line": 315, @@ -20491,8 +20643,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 10127, - "end": 10160, + "start": 10213, + "end": 10246, "loc": { "start": { "line": 313, @@ -20505,8 +20657,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 10127, - "end": 10159, + "start": 10213, + "end": 10245, "loc": { "start": { "line": 313, @@ -20520,8 +20672,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 10127, - "end": 10152, + "start": 10213, + "end": 10238, "loc": { "start": { "line": 313, @@ -20534,8 +20686,8 @@ }, "object": { "type": "Identifier", - "start": 10127, - "end": 10133, + "start": 10213, + "end": 10219, "loc": { "start": { "line": 313, @@ -20551,8 +20703,8 @@ }, "property": { "type": "Identifier", - "start": 10134, - "end": 10152, + "start": 10220, + "end": 10238, "loc": { "start": { "line": 313, @@ -20570,8 +20722,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 10155, - "end": 10159, + "start": 10241, + "end": 10245, "loc": { "start": { "line": 313, @@ -20588,8 +20740,8 @@ }, { "type": "ExpressionStatement", - "start": 10177, - "end": 10210, + "start": 10263, + "end": 10304, "loc": { "start": { "line": 314, @@ -20597,13 +20749,13 @@ }, "end": { "line": 314, - "column": 49 + "column": 57 } }, "expression": { "type": "AssignmentExpression", - "start": 10177, - "end": 10209, + "start": 10263, + "end": 10303, "loc": { "start": { "line": 314, @@ -20611,14 +20763,14 @@ }, "end": { "line": 314, - "column": 48 + "column": 56 } }, "operator": "=", "left": { "type": "Identifier", - "start": 10177, - "end": 10201, + "start": 10263, + "end": 10295, "loc": { "start": { "line": 314, @@ -20626,24 +20778,24 @@ }, "end": { "line": 314, - "column": 40 + "column": 48 }, - "identifierName": "mouseMovedSinceLastWheel" + "identifierName": "mouseMovedOnCanvasSinceLastWheel" }, - "name": "mouseMovedSinceLastWheel" + "name": "mouseMovedOnCanvasSinceLastWheel" }, "right": { "type": "BooleanLiteral", - "start": 10204, - "end": 10209, + "start": 10298, + "end": 10303, "loc": { "start": { "line": 314, - "column": 43 + "column": 51 }, "end": { "line": 314, - "column": 48 + "column": 56 } }, "value": false @@ -20657,8 +20809,8 @@ }, { "type": "ExpressionStatement", - "start": 10238, - "end": 10257, + "start": 10332, + "end": 10351, "loc": { "start": { "line": 317, @@ -20671,8 +20823,8 @@ }, "expression": { "type": "CallExpression", - "start": 10238, - "end": 10256, + "start": 10332, + "end": 10350, "loc": { "start": { "line": 317, @@ -20685,8 +20837,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10238, - "end": 10254, + "start": 10332, + "end": 10348, "loc": { "start": { "line": 317, @@ -20699,8 +20851,8 @@ }, "object": { "type": "Identifier", - "start": 10238, - "end": 10239, + "start": 10332, + "end": 10333, "loc": { "start": { "line": 317, @@ -20716,8 +20868,8 @@ }, "property": { "type": "Identifier", - "start": 10240, - "end": 10254, + "start": 10334, + "end": 10348, "loc": { "start": { "line": 317, @@ -20750,15 +20902,15 @@ }, { "type": "ClassMethod", - "start": 10281, - "end": 10324, + "start": 10375, + "end": 10390, "loc": { "start": { "line": 321, "column": 4 }, "end": { - "line": 323, + "line": 322, "column": 5 } }, @@ -20766,8 +20918,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 10281, - "end": 10286, + "start": 10375, + "end": 10380, "loc": { "start": { "line": 321, @@ -20789,129 +20941,33 @@ "params": [], "body": { "type": "BlockStatement", - "start": 10289, - "end": 10324, + "start": 10383, + "end": 10390, "loc": { "start": { "line": 321, "column": 12 }, "end": { - "line": 323, + "line": 322, "column": 5 } }, - "body": [ - { - "type": "ExpressionStatement", - "start": 10299, - "end": 10318, - "loc": { - "start": { - "line": 322, - "column": 8 - }, - "end": { - "line": 322, - "column": 27 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 10299, - "end": 10317, - "loc": { - "start": { - "line": 322, - "column": 8 - }, - "end": { - "line": 322, - "column": 26 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 10299, - "end": 10309, - "loc": { - "start": { - "line": 322, - "column": 8 - }, - "end": { - "line": 322, - "column": 18 - } - }, - "object": { - "type": "ThisExpression", - "start": 10299, - "end": 10303, - "loc": { - "start": { - "line": 322, - "column": 8 - }, - "end": { - "line": 322, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 10304, - "end": 10309, - "loc": { - "start": { - "line": 322, - "column": 13 - }, - "end": { - "line": 322, - "column": 18 - }, - "identifierName": "_down" - }, - "name": "_down" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 10312, - "end": 10317, - "loc": { - "start": { - "line": 322, - "column": 21 - }, - "end": { - "line": 322, - "column": 26 - } - }, - "value": false - } - } - } - ], + "body": [], "directives": [] } }, { "type": "ClassMethod", - "start": 10330, - "end": 11081, + "start": 10396, + "end": 11147, "loc": { "start": { - "line": 325, + "line": 324, "column": 4 }, "end": { - "line": 338, + "line": 337, "column": 5 } }, @@ -20919,15 +20975,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 10330, - "end": 10337, + "start": 10396, + "end": 10403, "loc": { "start": { - "line": 325, + "line": 324, "column": 4 }, "end": { - "line": 325, + "line": 324, "column": 11 }, "identifierName": "destroy" @@ -20942,59 +20998,59 @@ "params": [], "body": { "type": "BlockStatement", - "start": 10340, - "end": 11081, + "start": 10406, + "end": 11147, "loc": { "start": { - "line": 325, + "line": 324, "column": 14 }, "end": { - "line": 338, + "line": 337, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 10351, - "end": 10392, + "start": 10417, + "end": 10458, "loc": { "start": { - "line": 327, + "line": 326, "column": 8 }, "end": { - "line": 327, + "line": 326, "column": 49 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 10357, - "end": 10391, + "start": 10423, + "end": 10457, "loc": { "start": { - "line": 327, + "line": 326, "column": 14 }, "end": { - "line": 327, + "line": 326, "column": 48 } }, "id": { "type": "Identifier", - "start": 10357, - "end": 10363, + "start": 10423, + "end": 10429, "loc": { "start": { - "line": 327, + "line": 326, "column": 14 }, "end": { - "line": 327, + "line": 326, "column": 20 }, "identifierName": "canvas" @@ -21003,72 +21059,72 @@ }, "init": { "type": "MemberExpression", - "start": 10366, - "end": 10391, + "start": 10432, + "end": 10457, "loc": { "start": { - "line": 327, + "line": 326, "column": 23 }, "end": { - "line": 327, + "line": 326, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 10366, - "end": 10384, + "start": 10432, + "end": 10450, "loc": { "start": { - "line": 327, + "line": 326, "column": 23 }, "end": { - "line": 327, + "line": 326, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 10366, - "end": 10377, + "start": 10432, + "end": 10443, "loc": { "start": { - "line": 327, + "line": 326, "column": 23 }, "end": { - "line": 327, + "line": 326, "column": 34 } }, "object": { "type": "ThisExpression", - "start": 10366, - "end": 10370, + "start": 10432, + "end": 10436, "loc": { "start": { - "line": 327, + "line": 326, "column": 23 }, "end": { - "line": 327, + "line": 326, "column": 27 } } }, "property": { "type": "Identifier", - "start": 10371, - "end": 10377, + "start": 10437, + "end": 10443, "loc": { "start": { - "line": 327, + "line": 326, "column": 28 }, "end": { - "line": 327, + "line": 326, "column": 34 }, "identifierName": "_scene" @@ -21079,15 +21135,15 @@ }, "property": { "type": "Identifier", - "start": 10378, - "end": 10384, + "start": 10444, + "end": 10450, "loc": { "start": { - "line": 327, + "line": 326, "column": 35 }, "end": { - "line": 327, + "line": 326, "column": 41 }, "identifierName": "canvas" @@ -21098,15 +21154,15 @@ }, "property": { "type": "Identifier", - "start": 10385, - "end": 10391, + "start": 10451, + "end": 10457, "loc": { "start": { - "line": 327, + "line": 326, "column": 42 }, "end": { - "line": 327, + "line": 326, "column": 48 }, "identifierName": "canvas" @@ -21121,57 +21177,57 @@ }, { "type": "ExpressionStatement", - "start": 10402, - "end": 10472, + "start": 10468, + "end": 10538, "loc": { "start": { - "line": 329, + "line": 328, "column": 8 }, "end": { - "line": 329, + "line": 328, "column": 78 } }, "expression": { "type": "CallExpression", - "start": 10402, - "end": 10471, + "start": 10468, + "end": 10537, "loc": { "start": { - "line": 329, + "line": 328, "column": 8 }, "end": { - "line": 329, + "line": 328, "column": 77 } }, "callee": { "type": "MemberExpression", - "start": 10402, - "end": 10430, + "start": 10468, + "end": 10496, "loc": { "start": { - "line": 329, + "line": 328, "column": 8 }, "end": { - "line": 329, + "line": 328, "column": 36 } }, "object": { "type": "Identifier", - "start": 10402, - "end": 10410, + "start": 10468, + "end": 10476, "loc": { "start": { - "line": 329, + "line": 328, "column": 8 }, "end": { - "line": 329, + "line": 328, "column": 16 }, "identifierName": "document" @@ -21180,15 +21236,15 @@ }, "property": { "type": "Identifier", - "start": 10411, - "end": 10430, + "start": 10477, + "end": 10496, "loc": { "start": { - "line": 329, + "line": 328, "column": 17 }, "end": { - "line": 329, + "line": 328, "column": 36 }, "identifierName": "removeEventListener" @@ -21200,15 +21256,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 10431, - "end": 10440, + "start": 10497, + "end": 10506, "loc": { "start": { - "line": 329, + "line": 328, "column": 37 }, "end": { - "line": 329, + "line": 328, "column": 46 } }, @@ -21220,44 +21276,44 @@ }, { "type": "MemberExpression", - "start": 10442, - "end": 10470, + "start": 10508, + "end": 10536, "loc": { "start": { - "line": 329, + "line": 328, "column": 48 }, "end": { - "line": 329, + "line": 328, "column": 76 } }, "object": { "type": "ThisExpression", - "start": 10442, - "end": 10446, + "start": 10508, + "end": 10512, "loc": { "start": { - "line": 329, + "line": 328, "column": 48 }, "end": { - "line": 329, + "line": 328, "column": 52 } } }, "property": { "type": "Identifier", - "start": 10447, - "end": 10470, + "start": 10513, + "end": 10536, "loc": { "start": { - "line": 329, + "line": 328, "column": 53 }, "end": { - "line": 329, + "line": 328, "column": 76 }, "identifierName": "_documentKeyDownHandler" @@ -21271,57 +21327,57 @@ }, { "type": "ExpressionStatement", - "start": 10481, - "end": 10547, + "start": 10547, + "end": 10613, "loc": { "start": { - "line": 330, + "line": 329, "column": 8 }, "end": { - "line": 330, + "line": 329, "column": 74 } }, "expression": { "type": "CallExpression", - "start": 10481, - "end": 10546, + "start": 10547, + "end": 10612, "loc": { "start": { - "line": 330, + "line": 329, "column": 8 }, "end": { - "line": 330, + "line": 329, "column": 73 } }, "callee": { "type": "MemberExpression", - "start": 10481, - "end": 10509, + "start": 10547, + "end": 10575, "loc": { "start": { - "line": 330, + "line": 329, "column": 8 }, "end": { - "line": 330, + "line": 329, "column": 36 } }, "object": { "type": "Identifier", - "start": 10481, - "end": 10489, + "start": 10547, + "end": 10555, "loc": { "start": { - "line": 330, + "line": 329, "column": 8 }, "end": { - "line": 330, + "line": 329, "column": 16 }, "identifierName": "document" @@ -21330,15 +21386,15 @@ }, "property": { "type": "Identifier", - "start": 10490, - "end": 10509, + "start": 10556, + "end": 10575, "loc": { "start": { - "line": 330, + "line": 329, "column": 17 }, "end": { - "line": 330, + "line": 329, "column": 36 }, "identifierName": "removeEventListener" @@ -21350,15 +21406,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 10510, - "end": 10517, + "start": 10576, + "end": 10583, "loc": { "start": { - "line": 330, + "line": 329, "column": 37 }, "end": { - "line": 330, + "line": 329, "column": 44 } }, @@ -21370,44 +21426,44 @@ }, { "type": "MemberExpression", - "start": 10519, - "end": 10545, + "start": 10585, + "end": 10611, "loc": { "start": { - "line": 330, + "line": 329, "column": 46 }, "end": { - "line": 330, + "line": 329, "column": 72 } }, "object": { "type": "ThisExpression", - "start": 10519, - "end": 10523, + "start": 10585, + "end": 10589, "loc": { "start": { - "line": 330, + "line": 329, "column": 46 }, "end": { - "line": 330, + "line": 329, "column": 50 } } }, "property": { "type": "Identifier", - "start": 10524, - "end": 10545, + "start": 10590, + "end": 10611, "loc": { "start": { - "line": 330, + "line": 329, "column": 51 }, "end": { - "line": 330, + "line": 329, "column": 72 }, "identifierName": "_documentKeyUpHandler" @@ -21421,57 +21477,57 @@ }, { "type": "ExpressionStatement", - "start": 10556, - "end": 10620, + "start": 10622, + "end": 10686, "loc": { "start": { - "line": 331, + "line": 330, "column": 8 }, "end": { - "line": 331, + "line": 330, "column": 72 } }, "expression": { "type": "CallExpression", - "start": 10556, - "end": 10619, + "start": 10622, + "end": 10685, "loc": { "start": { - "line": 331, + "line": 330, "column": 8 }, "end": { - "line": 331, + "line": 330, "column": 71 } }, "callee": { "type": "MemberExpression", - "start": 10556, - "end": 10582, + "start": 10622, + "end": 10648, "loc": { "start": { - "line": 331, + "line": 330, "column": 8 }, "end": { - "line": 331, + "line": 330, "column": 34 } }, "object": { "type": "Identifier", - "start": 10556, - "end": 10562, + "start": 10622, + "end": 10628, "loc": { "start": { - "line": 331, + "line": 330, "column": 8 }, "end": { - "line": 331, + "line": 330, "column": 14 }, "identifierName": "canvas" @@ -21480,15 +21536,15 @@ }, "property": { "type": "Identifier", - "start": 10563, - "end": 10582, + "start": 10629, + "end": 10648, "loc": { "start": { - "line": 331, + "line": 330, "column": 15 }, "end": { - "line": 331, + "line": 330, "column": 34 }, "identifierName": "removeEventListener" @@ -21500,15 +21556,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 10583, - "end": 10594, + "start": 10649, + "end": 10660, "loc": { "start": { - "line": 331, + "line": 330, "column": 35 }, "end": { - "line": 331, + "line": 330, "column": 46 } }, @@ -21520,44 +21576,44 @@ }, { "type": "MemberExpression", - "start": 10596, - "end": 10618, + "start": 10662, + "end": 10684, "loc": { "start": { - "line": 331, + "line": 330, "column": 48 }, "end": { - "line": 331, + "line": 330, "column": 70 } }, "object": { "type": "ThisExpression", - "start": 10596, - "end": 10600, + "start": 10662, + "end": 10666, "loc": { "start": { - "line": 331, + "line": 330, "column": 48 }, "end": { - "line": 331, + "line": 330, "column": 52 } } }, "property": { "type": "Identifier", - "start": 10601, - "end": 10618, + "start": 10667, + "end": 10684, "loc": { "start": { - "line": 331, + "line": 330, "column": 53 }, "end": { - "line": 331, + "line": 330, "column": 70 }, "identifierName": "_mouseDownHandler" @@ -21571,57 +21627,57 @@ }, { "type": "ExpressionStatement", - "start": 10629, - "end": 10703, + "start": 10695, + "end": 10769, "loc": { "start": { - "line": 332, + "line": 331, "column": 8 }, "end": { - "line": 332, + "line": 331, "column": 82 } }, "expression": { "type": "CallExpression", - "start": 10629, - "end": 10702, + "start": 10695, + "end": 10768, "loc": { "start": { - "line": 332, + "line": 331, "column": 8 }, "end": { - "line": 332, + "line": 331, "column": 81 } }, "callee": { "type": "MemberExpression", - "start": 10629, - "end": 10657, + "start": 10695, + "end": 10723, "loc": { "start": { - "line": 332, + "line": 331, "column": 8 }, "end": { - "line": 332, + "line": 331, "column": 36 } }, "object": { "type": "Identifier", - "start": 10629, - "end": 10637, + "start": 10695, + "end": 10703, "loc": { "start": { - "line": 332, + "line": 331, "column": 8 }, "end": { - "line": 332, + "line": 331, "column": 16 }, "identifierName": "document" @@ -21630,15 +21686,15 @@ }, "property": { "type": "Identifier", - "start": 10638, - "end": 10657, + "start": 10704, + "end": 10723, "loc": { "start": { - "line": 332, + "line": 331, "column": 17 }, "end": { - "line": 332, + "line": 331, "column": 36 }, "identifierName": "removeEventListener" @@ -21650,15 +21706,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 10658, - "end": 10669, + "start": 10724, + "end": 10735, "loc": { "start": { - "line": 332, + "line": 331, "column": 37 }, "end": { - "line": 332, + "line": 331, "column": 48 } }, @@ -21670,44 +21726,44 @@ }, { "type": "MemberExpression", - "start": 10671, - "end": 10701, + "start": 10737, + "end": 10767, "loc": { "start": { - "line": 332, + "line": 331, "column": 50 }, "end": { - "line": 332, + "line": 331, "column": 80 } }, "object": { "type": "ThisExpression", - "start": 10671, - "end": 10675, + "start": 10737, + "end": 10741, "loc": { "start": { - "line": 332, + "line": 331, "column": 50 }, "end": { - "line": 332, + "line": 331, "column": 54 } } }, "property": { "type": "Identifier", - "start": 10676, - "end": 10701, + "start": 10742, + "end": 10767, "loc": { "start": { - "line": 332, + "line": 331, "column": 55 }, "end": { - "line": 332, + "line": 331, "column": 80 }, "identifierName": "_documentMouseMoveHandler" @@ -21721,8 +21777,158 @@ }, { "type": "ExpressionStatement", - "start": 10712, - "end": 10782, + "start": 10778, + "end": 10848, + "loc": { + "start": { + "line": 332, + "column": 8 + }, + "end": { + "line": 332, + "column": 78 + } + }, + "expression": { + "type": "CallExpression", + "start": 10778, + "end": 10847, + "loc": { + "start": { + "line": 332, + "column": 8 + }, + "end": { + "line": 332, + "column": 77 + } + }, + "callee": { + "type": "MemberExpression", + "start": 10778, + "end": 10804, + "loc": { + "start": { + "line": 332, + "column": 8 + }, + "end": { + "line": 332, + "column": 34 + } + }, + "object": { + "type": "Identifier", + "start": 10778, + "end": 10784, + "loc": { + "start": { + "line": 332, + "column": 8 + }, + "end": { + "line": 332, + "column": 14 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "property": { + "type": "Identifier", + "start": 10785, + "end": 10804, + "loc": { + "start": { + "line": 332, + "column": 15 + }, + "end": { + "line": 332, + "column": 34 + }, + "identifierName": "removeEventListener" + }, + "name": "removeEventListener" + }, + "computed": false + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 10805, + "end": 10816, + "loc": { + "start": { + "line": 332, + "column": 35 + }, + "end": { + "line": 332, + "column": 46 + } + }, + "extra": { + "rawValue": "mousemove", + "raw": "\"mousemove\"" + }, + "value": "mousemove" + }, + { + "type": "MemberExpression", + "start": 10818, + "end": 10846, + "loc": { + "start": { + "line": 332, + "column": 48 + }, + "end": { + "line": 332, + "column": 76 + } + }, + "object": { + "type": "ThisExpression", + "start": 10818, + "end": 10822, + "loc": { + "start": { + "line": 332, + "column": 48 + }, + "end": { + "line": 332, + "column": 52 + } + } + }, + "property": { + "type": "Identifier", + "start": 10823, + "end": 10846, + "loc": { + "start": { + "line": 332, + "column": 53 + }, + "end": { + "line": 332, + "column": 76 + }, + "identifierName": "_canvasMouseMoveHandler" + }, + "name": "_canvasMouseMoveHandler" + }, + "computed": false + } + ] + } + }, + { + "type": "ExpressionStatement", + "start": 10857, + "end": 10927, "loc": { "start": { "line": 333, @@ -21735,8 +21941,8 @@ }, "expression": { "type": "CallExpression", - "start": 10712, - "end": 10781, + "start": 10857, + "end": 10926, "loc": { "start": { "line": 333, @@ -21749,8 +21955,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10712, - "end": 10738, + "start": 10857, + "end": 10885, "loc": { "start": { "line": 333, @@ -21758,13 +21964,13 @@ }, "end": { "line": 333, - "column": 34 + "column": 36 } }, "object": { "type": "Identifier", - "start": 10712, - "end": 10718, + "start": 10857, + "end": 10865, "loc": { "start": { "line": 333, @@ -21772,24 +21978,24 @@ }, "end": { "line": 333, - "column": 14 + "column": 16 }, - "identifierName": "canvas" + "identifierName": "document" }, - "name": "canvas" + "name": "document" }, "property": { "type": "Identifier", - "start": 10719, - "end": 10738, + "start": 10866, + "end": 10885, "loc": { "start": { "line": 333, - "column": 15 + "column": 17 }, "end": { "line": 333, - "column": 34 + "column": 36 }, "identifierName": "removeEventListener" }, @@ -21800,12 +22006,12 @@ "arguments": [ { "type": "StringLiteral", - "start": 10739, - "end": 10750, + "start": 10886, + "end": 10895, "loc": { "start": { "line": 333, - "column": 35 + "column": 37 }, "end": { "line": 333, @@ -21813,15 +22019,15 @@ } }, "extra": { - "rawValue": "mousemove", - "raw": "\"mousemove\"" + "rawValue": "mouseup", + "raw": "\"mouseup\"" }, - "value": "mousemove" + "value": "mouseup" }, { "type": "MemberExpression", - "start": 10752, - "end": 10780, + "start": 10897, + "end": 10925, "loc": { "start": { "line": 333, @@ -21834,8 +22040,8 @@ }, "object": { "type": "ThisExpression", - "start": 10752, - "end": 10756, + "start": 10897, + "end": 10901, "loc": { "start": { "line": 333, @@ -21849,8 +22055,8 @@ }, "property": { "type": "Identifier", - "start": 10757, - "end": 10780, + "start": 10902, + "end": 10925, "loc": { "start": { "line": 333, @@ -21860,9 +22066,9 @@ "line": 333, "column": 76 }, - "identifierName": "_canvasMouseMoveHandler" + "identifierName": "_documentMouseUpHandler" }, - "name": "_canvasMouseMoveHandler" + "name": "_documentMouseUpHandler" }, "computed": false } @@ -21871,8 +22077,8 @@ }, { "type": "ExpressionStatement", - "start": 10791, - "end": 10861, + "start": 10936, + "end": 10996, "loc": { "start": { "line": 334, @@ -21880,13 +22086,13 @@ }, "end": { "line": 334, - "column": 78 + "column": 68 } }, "expression": { "type": "CallExpression", - "start": 10791, - "end": 10860, + "start": 10936, + "end": 10995, "loc": { "start": { "line": 334, @@ -21894,13 +22100,13 @@ }, "end": { "line": 334, - "column": 77 + "column": 67 } }, "callee": { "type": "MemberExpression", - "start": 10791, - "end": 10819, + "start": 10936, + "end": 10962, "loc": { "start": { "line": 334, @@ -21908,13 +22114,13 @@ }, "end": { "line": 334, - "column": 36 + "column": 34 } }, "object": { "type": "Identifier", - "start": 10791, - "end": 10799, + "start": 10936, + "end": 10942, "loc": { "start": { "line": 334, @@ -21922,24 +22128,24 @@ }, "end": { "line": 334, - "column": 16 + "column": 14 }, - "identifierName": "document" + "identifierName": "canvas" }, - "name": "document" + "name": "canvas" }, "property": { "type": "Identifier", - "start": 10800, - "end": 10819, + "start": 10943, + "end": 10962, "loc": { "start": { "line": 334, - "column": 17 + "column": 15 }, "end": { "line": 334, - "column": 36 + "column": 34 }, "identifierName": "removeEventListener" }, @@ -21950,16 +22156,16 @@ "arguments": [ { "type": "StringLiteral", - "start": 10820, - "end": 10829, + "start": 10963, + "end": 10972, "loc": { "start": { "line": 334, - "column": 37 + "column": 35 }, "end": { "line": 334, - "column": 46 + "column": 44 } }, "extra": { @@ -21970,49 +22176,49 @@ }, { "type": "MemberExpression", - "start": 10831, - "end": 10859, + "start": 10974, + "end": 10994, "loc": { "start": { "line": 334, - "column": 48 + "column": 46 }, "end": { "line": 334, - "column": 76 + "column": 66 } }, "object": { "type": "ThisExpression", - "start": 10831, - "end": 10835, + "start": 10974, + "end": 10978, "loc": { "start": { "line": 334, - "column": 48 + "column": 46 }, "end": { "line": 334, - "column": 52 + "column": 50 } } }, "property": { "type": "Identifier", - "start": 10836, - "end": 10859, + "start": 10979, + "end": 10994, "loc": { "start": { "line": 334, - "column": 53 + "column": 51 }, "end": { "line": 334, - "column": 76 + "column": 66 }, - "identifierName": "_documentMouseUpHandler" + "identifierName": "_mouseUpHandler" }, - "name": "_documentMouseUpHandler" + "name": "_mouseUpHandler" }, "computed": false } @@ -22021,8 +22227,8 @@ }, { "type": "ExpressionStatement", - "start": 10870, - "end": 10930, + "start": 11005, + "end": 11071, "loc": { "start": { "line": 335, @@ -22030,13 +22236,13 @@ }, "end": { "line": 335, - "column": 68 + "column": 74 } }, "expression": { "type": "CallExpression", - "start": 10870, - "end": 10929, + "start": 11005, + "end": 11070, "loc": { "start": { "line": 335, @@ -22044,13 +22250,13 @@ }, "end": { "line": 335, - "column": 67 + "column": 73 } }, "callee": { "type": "MemberExpression", - "start": 10870, - "end": 10896, + "start": 11005, + "end": 11031, "loc": { "start": { "line": 335, @@ -22063,8 +22269,8 @@ }, "object": { "type": "Identifier", - "start": 10870, - "end": 10876, + "start": 11005, + "end": 11011, "loc": { "start": { "line": 335, @@ -22080,8 +22286,8 @@ }, "property": { "type": "Identifier", - "start": 10877, - "end": 10896, + "start": 11012, + "end": 11031, "loc": { "start": { "line": 335, @@ -22100,8 +22306,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 10897, - "end": 10906, + "start": 11032, + "end": 11044, "loc": { "start": { "line": 335, @@ -22109,60 +22315,60 @@ }, "end": { "line": 335, - "column": 44 + "column": 47 } }, "extra": { - "rawValue": "mouseup", - "raw": "\"mouseup\"" + "rawValue": "mouseenter", + "raw": "\"mouseenter\"" }, - "value": "mouseup" + "value": "mouseenter" }, { "type": "MemberExpression", - "start": 10908, - "end": 10928, + "start": 11046, + "end": 11069, "loc": { "start": { "line": 335, - "column": 46 + "column": 49 }, "end": { "line": 335, - "column": 66 + "column": 72 } }, "object": { "type": "ThisExpression", - "start": 10908, - "end": 10912, + "start": 11046, + "end": 11050, "loc": { "start": { "line": 335, - "column": 46 + "column": 49 }, "end": { "line": 335, - "column": 50 + "column": 53 } } }, "property": { "type": "Identifier", - "start": 10913, - "end": 10928, + "start": 11051, + "end": 11069, "loc": { "start": { "line": 335, - "column": 51 + "column": 54 }, "end": { "line": 335, - "column": 66 + "column": 72 }, - "identifierName": "_mouseUpHandler" + "identifierName": "_mouseEnterHandler" }, - "name": "_mouseUpHandler" + "name": "_mouseEnterHandler" }, "computed": false } @@ -22171,8 +22377,8 @@ }, { "type": "ExpressionStatement", - "start": 10939, - "end": 11005, + "start": 11080, + "end": 11141, "loc": { "start": { "line": 336, @@ -22180,13 +22386,13 @@ }, "end": { "line": 336, - "column": 74 + "column": 69 } }, "expression": { "type": "CallExpression", - "start": 10939, - "end": 11004, + "start": 11080, + "end": 11140, "loc": { "start": { "line": 336, @@ -22194,13 +22400,13 @@ }, "end": { "line": 336, - "column": 73 + "column": 68 } }, "callee": { "type": "MemberExpression", - "start": 10939, - "end": 10965, + "start": 11080, + "end": 11106, "loc": { "start": { "line": 336, @@ -22213,8 +22419,8 @@ }, "object": { "type": "Identifier", - "start": 10939, - "end": 10945, + "start": 11080, + "end": 11086, "loc": { "start": { "line": 336, @@ -22230,8 +22436,8 @@ }, "property": { "type": "Identifier", - "start": 10946, - "end": 10965, + "start": 11087, + "end": 11106, "loc": { "start": { "line": 336, @@ -22250,8 +22456,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 10966, - "end": 10978, + "start": 11107, + "end": 11114, "loc": { "start": { "line": 336, @@ -22259,156 +22465,6 @@ }, "end": { "line": 336, - "column": 47 - } - }, - "extra": { - "rawValue": "mouseenter", - "raw": "\"mouseenter\"" - }, - "value": "mouseenter" - }, - { - "type": "MemberExpression", - "start": 10980, - "end": 11003, - "loc": { - "start": { - "line": 336, - "column": 49 - }, - "end": { - "line": 336, - "column": 72 - } - }, - "object": { - "type": "ThisExpression", - "start": 10980, - "end": 10984, - "loc": { - "start": { - "line": 336, - "column": 49 - }, - "end": { - "line": 336, - "column": 53 - } - } - }, - "property": { - "type": "Identifier", - "start": 10985, - "end": 11003, - "loc": { - "start": { - "line": 336, - "column": 54 - }, - "end": { - "line": 336, - "column": 72 - }, - "identifierName": "_mouseEnterHandler" - }, - "name": "_mouseEnterHandler" - }, - "computed": false - } - ] - } - }, - { - "type": "ExpressionStatement", - "start": 11014, - "end": 11075, - "loc": { - "start": { - "line": 337, - "column": 8 - }, - "end": { - "line": 337, - "column": 69 - } - }, - "expression": { - "type": "CallExpression", - "start": 11014, - "end": 11074, - "loc": { - "start": { - "line": 337, - "column": 8 - }, - "end": { - "line": 337, - "column": 68 - } - }, - "callee": { - "type": "MemberExpression", - "start": 11014, - "end": 11040, - "loc": { - "start": { - "line": 337, - "column": 8 - }, - "end": { - "line": 337, - "column": 34 - } - }, - "object": { - "type": "Identifier", - "start": 11014, - "end": 11020, - "loc": { - "start": { - "line": 337, - "column": 8 - }, - "end": { - "line": 337, - "column": 14 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "property": { - "type": "Identifier", - "start": 11021, - "end": 11040, - "loc": { - "start": { - "line": 337, - "column": 15 - }, - "end": { - "line": 337, - "column": 34 - }, - "identifierName": "removeEventListener" - }, - "name": "removeEventListener" - }, - "computed": false - }, - "arguments": [ - { - "type": "StringLiteral", - "start": 11041, - "end": 11048, - "loc": { - "start": { - "line": 337, - "column": 35 - }, - "end": { - "line": 337, "column": 42 } }, @@ -22420,44 +22476,44 @@ }, { "type": "MemberExpression", - "start": 11050, - "end": 11073, + "start": 11116, + "end": 11139, "loc": { "start": { - "line": 337, + "line": 336, "column": 44 }, "end": { - "line": 337, + "line": 336, "column": 67 } }, "object": { "type": "ThisExpression", - "start": 11050, - "end": 11054, + "start": 11116, + "end": 11120, "loc": { "start": { - "line": 337, + "line": 336, "column": 44 }, "end": { - "line": 337, + "line": 336, "column": 48 } } }, "property": { "type": "Identifier", - "start": 11055, - "end": 11073, + "start": 11121, + "end": 11139, "loc": { "start": { - "line": 337, + "line": 336, "column": 49 }, "end": { - "line": 337, + "line": 336, "column": 67 }, "identifierName": "_mouseWheelHandler" @@ -22481,15 +22537,15 @@ }, { "type": "ExportNamedDeclaration", - "start": 11085, - "end": 11121, + "start": 11151, + "end": 11187, "loc": { "start": { - "line": 341, + "line": 340, "column": 0 }, "end": { - "line": 341, + "line": 340, "column": 36 } }, @@ -22497,29 +22553,29 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 11093, - "end": 11119, + "start": 11159, + "end": 11185, "loc": { "start": { - "line": 341, + "line": 340, "column": 8 }, "end": { - "line": 341, + "line": 340, "column": 34 } }, "local": { "type": "Identifier", - "start": 11093, - "end": 11119, + "start": 11159, + "end": 11185, "loc": { "start": { - "line": 341, + "line": 340, "column": 8 }, "end": { - "line": 341, + "line": 340, "column": 34 }, "identifierName": "MousePanRotateDollyHandler" @@ -22528,15 +22584,15 @@ }, "exported": { "type": "Identifier", - "start": 11093, - "end": 11119, + "start": 11159, + "end": 11185, "loc": { "start": { - "line": 341, + "line": 340, "column": 8 }, "end": { - "line": 341, + "line": 340, "column": 34 }, "identifierName": "MousePanRotateDollyHandler" @@ -22549,29 +22605,29 @@ }, { "type": "ExportNamedDeclaration", - "start": 11085, - "end": 11121, + "start": 11151, + "end": 11187, "loc": { "start": { - "line": 341, + "line": 340, "column": 0 }, "end": { - "line": 341, + "line": 340, "column": 36 } }, "declaration": { "type": "ClassDeclaration", "start": 735, - "end": 11083, + "end": 11149, "loc": { "start": { "line": 31, "column": 0 }, "end": { - "line": 339, + "line": 338, "column": 1 } }, @@ -22597,14 +22653,14 @@ "body": { "type": "ClassBody", "start": 768, - "end": 11083, + "end": 11149, "loc": { "start": { "line": 31, "column": 33 }, "end": { - "line": 339, + "line": 338, "column": 1 } }, @@ -22612,7 +22668,7 @@ { "type": "ClassMethod", "start": 775, - "end": 10275, + "end": 10369, "loc": { "start": { "line": 33, @@ -22737,7 +22793,7 @@ "body": { "type": "BlockStatement", "start": 833, - "end": 10275, + "end": 10369, "loc": { "start": { "line": 33, @@ -23365,141 +23421,46 @@ ], "kind": "let" }, - { - "type": "ExpressionStatement", - "start": 1094, - "end": 1113, - "loc": { - "start": { - "line": 45, - "column": 8 - }, - "end": { - "line": 45, - "column": 27 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 1094, - "end": 1112, - "loc": { - "start": { - "line": 45, - "column": 8 - }, - "end": { - "line": 45, - "column": 26 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 1094, - "end": 1104, - "loc": { - "start": { - "line": 45, - "column": 8 - }, - "end": { - "line": 45, - "column": 18 - } - }, - "object": { - "type": "ThisExpression", - "start": 1094, - "end": 1098, - "loc": { - "start": { - "line": 45, - "column": 8 - }, - "end": { - "line": 45, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 1099, - "end": 1104, - "loc": { - "start": { - "line": 45, - "column": 13 - }, - "end": { - "line": 45, - "column": 18 - }, - "identifierName": "_down" - }, - "name": "_down" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 1107, - "end": 1112, - "loc": { - "start": { - "line": 45, - "column": 21 - }, - "end": { - "line": 45, - "column": 26 - } - }, - "value": false - } - } - }, { "type": "VariableDeclaration", - "start": 1123, - "end": 1141, + "start": 1095, + "end": 1113, "loc": { "start": { - "line": 47, + "line": 46, "column": 8 }, "end": { - "line": 47, + "line": 46, "column": 26 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1127, - "end": 1140, + "start": 1099, + "end": 1112, "loc": { "start": { - "line": 47, + "line": 46, "column": 12 }, "end": { - "line": 47, + "line": 46, "column": 25 } }, "id": { "type": "Identifier", - "start": 1127, - "end": 1140, + "start": 1099, + "end": 1112, "loc": { "start": { - "line": 47, + "line": 46, "column": 12 }, "end": { - "line": 47, + "line": 46, "column": 25 }, "identifierName": "mouseDownLeft" @@ -23513,44 +23474,44 @@ }, { "type": "VariableDeclaration", - "start": 1150, - "end": 1170, + "start": 1122, + "end": 1142, "loc": { "start": { - "line": 48, + "line": 47, "column": 8 }, "end": { - "line": 48, + "line": 47, "column": 28 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1154, - "end": 1169, + "start": 1126, + "end": 1141, "loc": { "start": { - "line": 48, + "line": 47, "column": 12 }, "end": { - "line": 48, + "line": 47, "column": 27 } }, "id": { "type": "Identifier", - "start": 1154, - "end": 1169, + "start": 1126, + "end": 1141, "loc": { "start": { - "line": 48, + "line": 47, "column": 12 }, "end": { - "line": 48, + "line": 47, "column": 27 }, "identifierName": "mouseDownMiddle" @@ -23564,44 +23525,44 @@ }, { "type": "VariableDeclaration", - "start": 1179, - "end": 1198, + "start": 1151, + "end": 1170, "loc": { "start": { - "line": 49, + "line": 48, "column": 8 }, "end": { - "line": 49, + "line": 48, "column": 27 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1183, - "end": 1197, + "start": 1155, + "end": 1169, "loc": { "start": { - "line": 49, + "line": 48, "column": 12 }, "end": { - "line": 49, + "line": 48, "column": 26 } }, "id": { "type": "Identifier", - "start": 1183, - "end": 1197, + "start": 1155, + "end": 1169, "loc": { "start": { - "line": 49, + "line": 48, "column": 12 }, "end": { - "line": 49, + "line": 48, "column": 26 }, "identifierName": "mouseDownRight" @@ -23615,44 +23576,44 @@ }, { "type": "VariableDeclaration", - "start": 1208, - "end": 1236, + "start": 1180, + "end": 1208, "loc": { "start": { - "line": 51, + "line": 50, "column": 8 }, "end": { - "line": 51, + "line": 50, "column": 36 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1212, - "end": 1235, + "start": 1184, + "end": 1207, "loc": { "start": { - "line": 51, + "line": 50, "column": 12 }, "end": { - "line": 51, + "line": 50, "column": 35 } }, "id": { "type": "Identifier", - "start": 1212, - "end": 1227, + "start": 1184, + "end": 1199, "loc": { "start": { - "line": 51, + "line": 50, "column": 12 }, "end": { - "line": 51, + "line": 50, "column": 27 }, "identifierName": "mouseDownPicked" @@ -23661,15 +23622,15 @@ }, "init": { "type": "BooleanLiteral", - "start": 1230, - "end": 1235, + "start": 1202, + "end": 1207, "loc": { "start": { - "line": 51, + "line": 50, "column": 30 }, "end": { - "line": 51, + "line": 50, "column": 35 } }, @@ -23681,44 +23642,44 @@ }, { "type": "VariableDeclaration", - "start": 1245, - "end": 1280, + "start": 1217, + "end": 1252, "loc": { "start": { - "line": 52, + "line": 51, "column": 8 }, "end": { - "line": 52, + "line": 51, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1251, - "end": 1279, + "start": 1223, + "end": 1251, "loc": { "start": { - "line": 52, + "line": 51, "column": 14 }, "end": { - "line": 52, + "line": 51, "column": 42 } }, "id": { "type": "Identifier", - "start": 1251, - "end": 1265, + "start": 1223, + "end": 1237, "loc": { "start": { - "line": 52, + "line": 51, "column": 14 }, "end": { - "line": 52, + "line": 51, "column": 28 }, "identifierName": "pickedWorldPos" @@ -23727,43 +23688,43 @@ }, "init": { "type": "CallExpression", - "start": 1268, - "end": 1279, + "start": 1240, + "end": 1251, "loc": { "start": { - "line": 52, + "line": 51, "column": 31 }, "end": { - "line": 52, + "line": 51, "column": 42 } }, "callee": { "type": "MemberExpression", - "start": 1268, - "end": 1277, + "start": 1240, + "end": 1249, "loc": { "start": { - "line": 52, + "line": 51, "column": 31 }, "end": { - "line": 52, + "line": 51, "column": 40 } }, "object": { "type": "Identifier", - "start": 1268, - "end": 1272, + "start": 1240, + "end": 1244, "loc": { "start": { - "line": 52, + "line": 51, "column": 31 }, "end": { - "line": 52, + "line": 51, "column": 35 }, "identifierName": "math" @@ -23772,15 +23733,15 @@ }, "property": { "type": "Identifier", - "start": 1273, - "end": 1277, + "start": 1245, + "end": 1249, "loc": { "start": { - "line": 52, + "line": 51, "column": 36 }, "end": { - "line": 52, + "line": 51, "column": 40 }, "identifierName": "vec3" @@ -23797,62 +23758,62 @@ }, { "type": "VariableDeclaration", - "start": 1290, - "end": 1326, + "start": 1262, + "end": 1306, "loc": { "start": { - "line": 54, + "line": 53, "column": 8 }, "end": { - "line": 54, - "column": 44 + "line": 53, + "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1294, - "end": 1325, + "start": 1266, + "end": 1305, "loc": { "start": { - "line": 54, + "line": 53, "column": 12 }, "end": { - "line": 54, - "column": 43 + "line": 53, + "column": 51 } }, "id": { "type": "Identifier", - "start": 1294, - "end": 1318, + "start": 1266, + "end": 1298, "loc": { "start": { - "line": 54, + "line": 53, "column": 12 }, "end": { - "line": 54, - "column": 36 + "line": 53, + "column": 44 }, - "identifierName": "mouseMovedSinceLastWheel" + "identifierName": "mouseMovedOnCanvasSinceLastWheel" }, - "name": "mouseMovedSinceLastWheel" + "name": "mouseMovedOnCanvasSinceLastWheel" }, "init": { "type": "BooleanLiteral", - "start": 1321, - "end": 1325, + "start": 1301, + "end": 1305, "loc": { "start": { - "line": 54, - "column": 39 + "line": 53, + "column": 47 }, "end": { - "line": 54, - "column": 43 + "line": 53, + "column": 51 } }, "value": true @@ -23863,44 +23824,44 @@ }, { "type": "VariableDeclaration", - "start": 1336, - "end": 1377, + "start": 1316, + "end": 1357, "loc": { "start": { - "line": 56, + "line": 55, "column": 8 }, "end": { - "line": 56, + "line": 55, "column": 49 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1342, - "end": 1376, + "start": 1322, + "end": 1356, "loc": { "start": { - "line": 56, + "line": 55, "column": 14 }, "end": { - "line": 56, + "line": 55, "column": 48 } }, "id": { "type": "Identifier", - "start": 1342, - "end": 1348, + "start": 1322, + "end": 1328, "loc": { "start": { - "line": 56, + "line": 55, "column": 14 }, "end": { - "line": 56, + "line": 55, "column": 20 }, "identifierName": "canvas" @@ -23909,72 +23870,72 @@ }, "init": { "type": "MemberExpression", - "start": 1351, - "end": 1376, + "start": 1331, + "end": 1356, "loc": { "start": { - "line": 56, + "line": 55, "column": 23 }, "end": { - "line": 56, + "line": 55, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 1351, - "end": 1369, + "start": 1331, + "end": 1349, "loc": { "start": { - "line": 56, + "line": 55, "column": 23 }, "end": { - "line": 56, + "line": 55, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 1351, - "end": 1362, + "start": 1331, + "end": 1342, "loc": { "start": { - "line": 56, + "line": 55, "column": 23 }, "end": { - "line": 56, + "line": 55, "column": 34 } }, "object": { "type": "ThisExpression", - "start": 1351, - "end": 1355, + "start": 1331, + "end": 1335, "loc": { "start": { - "line": 56, + "line": 55, "column": 23 }, "end": { - "line": 56, + "line": 55, "column": 27 } } }, "property": { "type": "Identifier", - "start": 1356, - "end": 1362, + "start": 1336, + "end": 1342, "loc": { "start": { - "line": 56, + "line": 55, "column": 28 }, "end": { - "line": 56, + "line": 55, "column": 34 }, "identifierName": "_scene" @@ -23985,15 +23946,15 @@ }, "property": { "type": "Identifier", - "start": 1363, - "end": 1369, + "start": 1343, + "end": 1349, "loc": { "start": { - "line": 56, + "line": 55, "column": 35 }, "end": { - "line": 56, + "line": 55, "column": 41 }, "identifierName": "canvas" @@ -24004,15 +23965,15 @@ }, "property": { "type": "Identifier", - "start": 1370, - "end": 1376, + "start": 1350, + "end": 1356, "loc": { "start": { - "line": 56, + "line": 55, "column": 42 }, "end": { - "line": 56, + "line": 55, "column": 48 }, "identifierName": "canvas" @@ -24027,44 +23988,44 @@ }, { "type": "VariableDeclaration", - "start": 1387, - "end": 1406, + "start": 1367, + "end": 1386, "loc": { "start": { - "line": 58, + "line": 57, "column": 8 }, "end": { - "line": 58, + "line": 57, "column": 27 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1393, - "end": 1405, + "start": 1373, + "end": 1385, "loc": { "start": { - "line": 58, + "line": 57, "column": 14 }, "end": { - "line": 58, + "line": 57, "column": 26 } }, "id": { "type": "Identifier", - "start": 1393, - "end": 1400, + "start": 1373, + "end": 1380, "loc": { "start": { - "line": 58, + "line": 57, "column": 14 }, "end": { - "line": 58, + "line": 57, "column": 21 }, "identifierName": "keyDown" @@ -24073,15 +24034,15 @@ }, "init": { "type": "ArrayExpression", - "start": 1403, - "end": 1405, + "start": 1383, + "end": 1385, "loc": { "start": { - "line": 58, + "line": 57, "column": 24 }, "end": { - "line": 58, + "line": 57, "column": 26 } }, @@ -24093,57 +24054,57 @@ }, { "type": "ExpressionStatement", - "start": 1416, - "end": 1715, + "start": 1396, + "end": 1695, "loc": { "start": { - "line": 60, + "line": 59, "column": 8 }, "end": { - "line": 66, + "line": 65, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 1416, - "end": 1714, + "start": 1396, + "end": 1694, "loc": { "start": { - "line": 60, + "line": 59, "column": 8 }, "end": { - "line": 66, + "line": 65, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 1416, - "end": 1441, + "start": 1396, + "end": 1421, "loc": { "start": { - "line": 60, + "line": 59, "column": 8 }, "end": { - "line": 60, + "line": 59, "column": 33 } }, "object": { "type": "Identifier", - "start": 1416, - "end": 1424, + "start": 1396, + "end": 1404, "loc": { "start": { - "line": 60, + "line": 59, "column": 8 }, "end": { - "line": 60, + "line": 59, "column": 16 }, "identifierName": "document" @@ -24152,15 +24113,15 @@ }, "property": { "type": "Identifier", - "start": 1425, - "end": 1441, + "start": 1405, + "end": 1421, "loc": { "start": { - "line": 60, + "line": 59, "column": 17 }, "end": { - "line": 60, + "line": 59, "column": 33 }, "identifierName": "addEventListener" @@ -24172,15 +24133,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 1442, - "end": 1451, + "start": 1422, + "end": 1431, "loc": { "start": { - "line": 60, + "line": 59, "column": 34 }, "end": { - "line": 60, + "line": 59, "column": 43 } }, @@ -24192,59 +24153,59 @@ }, { "type": "AssignmentExpression", - "start": 1453, - "end": 1713, + "start": 1433, + "end": 1693, "loc": { "start": { - "line": 60, + "line": 59, "column": 45 }, "end": { - "line": 66, + "line": 65, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 1453, - "end": 1481, + "start": 1433, + "end": 1461, "loc": { "start": { - "line": 60, + "line": 59, "column": 45 }, "end": { - "line": 60, + "line": 59, "column": 73 } }, "object": { "type": "ThisExpression", - "start": 1453, - "end": 1457, + "start": 1433, + "end": 1437, "loc": { "start": { - "line": 60, + "line": 59, "column": 45 }, "end": { - "line": 60, + "line": 59, "column": 49 } } }, "property": { "type": "Identifier", - "start": 1458, - "end": 1481, + "start": 1438, + "end": 1461, "loc": { "start": { - "line": 60, + "line": 59, "column": 50 }, "end": { - "line": 60, + "line": 59, "column": 73 }, "identifierName": "_documentKeyDownHandler" @@ -24255,15 +24216,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 1484, - "end": 1713, + "start": 1464, + "end": 1693, "loc": { "start": { - "line": 60, + "line": 59, "column": 76 }, "end": { - "line": 66, + "line": 65, "column": 9 } }, @@ -24274,15 +24235,15 @@ "params": [ { "type": "Identifier", - "start": 1485, - "end": 1486, + "start": 1465, + "end": 1466, "loc": { "start": { - "line": 60, + "line": 59, "column": 77 }, "end": { - "line": 60, + "line": 59, "column": 78 }, "identifierName": "e" @@ -24292,58 +24253,58 @@ ], "body": { "type": "BlockStatement", - "start": 1491, - "end": 1713, + "start": 1471, + "end": 1693, "loc": { "start": { - "line": 60, + "line": 59, "column": 83 }, "end": { - "line": 66, + "line": 65, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 1505, - "end": 1627, + "start": 1485, + "end": 1607, "loc": { "start": { - "line": 61, + "line": 60, "column": 12 }, "end": { - "line": 63, + "line": 62, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 1509, - "end": 1586, + "start": 1489, + "end": 1566, "loc": { "start": { - "line": 61, + "line": 60, "column": 16 }, "end": { - "line": 61, + "line": 60, "column": 93 } }, "left": { "type": "UnaryExpression", - "start": 1509, - "end": 1552, + "start": 1489, + "end": 1532, "loc": { "start": { - "line": 61, + "line": 60, "column": 16 }, "end": { - "line": 61, + "line": 60, "column": 59 } }, @@ -24351,43 +24312,43 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 1511, - "end": 1551, + "start": 1491, + "end": 1531, "loc": { "start": { - "line": 61, + "line": 60, "column": 18 }, "end": { - "line": 61, + "line": 60, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 1511, - "end": 1525, + "start": 1491, + "end": 1505, "loc": { "start": { - "line": 61, + "line": 60, "column": 18 }, "end": { - "line": 61, + "line": 60, "column": 32 } }, "object": { "type": "Identifier", - "start": 1511, - "end": 1518, + "start": 1491, + "end": 1498, "loc": { "start": { - "line": 61, + "line": 60, "column": 18 }, "end": { - "line": 61, + "line": 60, "column": 25 }, "identifierName": "configs" @@ -24396,15 +24357,15 @@ }, "property": { "type": "Identifier", - "start": 1519, - "end": 1525, + "start": 1499, + "end": 1505, "loc": { "start": { - "line": 61, + "line": 60, "column": 26 }, "end": { - "line": 61, + "line": 60, "column": 32 }, "identifierName": "active" @@ -24416,29 +24377,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 1529, - "end": 1551, + "start": 1509, + "end": 1531, "loc": { "start": { - "line": 61, + "line": 60, "column": 36 }, "end": { - "line": 61, + "line": 60, "column": 58 } }, "object": { "type": "Identifier", - "start": 1529, - "end": 1536, + "start": 1509, + "end": 1516, "loc": { "start": { - "line": 61, + "line": 60, "column": 36 }, "end": { - "line": 61, + "line": 60, "column": 43 }, "identifierName": "configs" @@ -24447,15 +24408,15 @@ }, "property": { "type": "Identifier", - "start": 1537, - "end": 1551, + "start": 1517, + "end": 1531, "loc": { "start": { - "line": 61, + "line": 60, "column": 44 }, "end": { - "line": 61, + "line": 60, "column": 58 }, "identifierName": "pointerEnabled" @@ -24466,7 +24427,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 1510 + "parenStart": 1490 } }, "extra": { @@ -24476,15 +24437,15 @@ "operator": "||", "right": { "type": "UnaryExpression", - "start": 1557, - "end": 1585, + "start": 1537, + "end": 1565, "loc": { "start": { - "line": 61, + "line": 60, "column": 64 }, "end": { - "line": 61, + "line": 60, "column": 92 } }, @@ -24492,43 +24453,43 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 1558, - "end": 1585, + "start": 1538, + "end": 1565, "loc": { "start": { - "line": 61, + "line": 60, "column": 65 }, "end": { - "line": 61, + "line": 60, "column": 92 } }, "object": { "type": "MemberExpression", - "start": 1558, - "end": 1569, + "start": 1538, + "end": 1549, "loc": { "start": { - "line": 61, + "line": 60, "column": 65 }, "end": { - "line": 61, + "line": 60, "column": 76 } }, "object": { "type": "Identifier", - "start": 1558, - "end": 1563, + "start": 1538, + "end": 1543, "loc": { "start": { - "line": 61, + "line": 60, "column": 65 }, "end": { - "line": 61, + "line": 60, "column": 70 }, "identifierName": "scene" @@ -24537,15 +24498,15 @@ }, "property": { "type": "Identifier", - "start": 1564, - "end": 1569, + "start": 1544, + "end": 1549, "loc": { "start": { - "line": 61, + "line": 60, "column": 71 }, "end": { - "line": 61, + "line": 60, "column": 76 }, "identifierName": "input" @@ -24556,15 +24517,15 @@ }, "property": { "type": "Identifier", - "start": 1570, - "end": 1585, + "start": 1550, + "end": 1565, "loc": { "start": { - "line": 61, + "line": 60, "column": 77 }, "end": { - "line": 61, + "line": 60, "column": 92 }, "identifierName": "keyboardEnabled" @@ -24576,36 +24537,36 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 1556 + "parenStart": 1536 } } }, "consequent": { "type": "BlockStatement", - "start": 1588, - "end": 1627, + "start": 1568, + "end": 1607, "loc": { "start": { - "line": 61, + "line": 60, "column": 95 }, "end": { - "line": 63, + "line": 62, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 1606, - "end": 1613, + "start": 1586, + "end": 1593, "loc": { "start": { - "line": 62, + "line": 61, "column": 16 }, "end": { - "line": 62, + "line": 61, "column": 23 } }, @@ -24618,44 +24579,44 @@ }, { "type": "VariableDeclaration", - "start": 1640, - "end": 1666, + "start": 1620, + "end": 1646, "loc": { "start": { - "line": 64, + "line": 63, "column": 12 }, "end": { - "line": 64, + "line": 63, "column": 38 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1646, - "end": 1665, + "start": 1626, + "end": 1645, "loc": { "start": { - "line": 64, + "line": 63, "column": 18 }, "end": { - "line": 64, + "line": 63, "column": 37 } }, "id": { "type": "Identifier", - "start": 1646, - "end": 1653, + "start": 1626, + "end": 1633, "loc": { "start": { - "line": 64, + "line": 63, "column": 18 }, "end": { - "line": 64, + "line": 63, "column": 25 }, "identifierName": "keyCode" @@ -24664,29 +24625,29 @@ }, "init": { "type": "MemberExpression", - "start": 1656, - "end": 1665, + "start": 1636, + "end": 1645, "loc": { "start": { - "line": 64, + "line": 63, "column": 28 }, "end": { - "line": 64, + "line": 63, "column": 37 } }, "object": { "type": "Identifier", - "start": 1656, - "end": 1657, + "start": 1636, + "end": 1637, "loc": { "start": { - "line": 64, + "line": 63, "column": 28 }, "end": { - "line": 64, + "line": 63, "column": 29 }, "identifierName": "e" @@ -24695,15 +24656,15 @@ }, "property": { "type": "Identifier", - "start": 1658, - "end": 1665, + "start": 1638, + "end": 1645, "loc": { "start": { - "line": 64, + "line": 63, "column": 30 }, "end": { - "line": 64, + "line": 63, "column": 37 }, "identifierName": "keyCode" @@ -24718,58 +24679,58 @@ }, { "type": "ExpressionStatement", - "start": 1679, - "end": 1703, + "start": 1659, + "end": 1683, "loc": { "start": { - "line": 65, + "line": 64, "column": 12 }, "end": { - "line": 65, + "line": 64, "column": 36 } }, "expression": { "type": "AssignmentExpression", - "start": 1679, - "end": 1702, + "start": 1659, + "end": 1682, "loc": { "start": { - "line": 65, + "line": 64, "column": 12 }, "end": { - "line": 65, + "line": 64, "column": 35 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 1679, - "end": 1695, + "start": 1659, + "end": 1675, "loc": { "start": { - "line": 65, + "line": 64, "column": 12 }, "end": { - "line": 65, + "line": 64, "column": 28 } }, "object": { "type": "Identifier", - "start": 1679, - "end": 1686, + "start": 1659, + "end": 1666, "loc": { "start": { - "line": 65, + "line": 64, "column": 12 }, "end": { - "line": 65, + "line": 64, "column": 19 }, "identifierName": "keyDown" @@ -24778,15 +24739,15 @@ }, "property": { "type": "Identifier", - "start": 1687, - "end": 1694, + "start": 1667, + "end": 1674, "loc": { "start": { - "line": 65, + "line": 64, "column": 20 }, "end": { - "line": 65, + "line": 64, "column": 27 }, "identifierName": "keyCode" @@ -24797,15 +24758,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 1698, - "end": 1702, + "start": 1678, + "end": 1682, "loc": { "start": { - "line": 65, + "line": 64, "column": 31 }, "end": { - "line": 65, + "line": 64, "column": 35 } }, @@ -24823,57 +24784,57 @@ }, { "type": "ExpressionStatement", - "start": 1725, - "end": 2021, + "start": 1705, + "end": 2001, "loc": { "start": { - "line": 68, + "line": 67, "column": 8 }, "end": { - "line": 74, + "line": 73, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 1725, - "end": 2020, + "start": 1705, + "end": 2000, "loc": { "start": { - "line": 68, + "line": 67, "column": 8 }, "end": { - "line": 74, + "line": 73, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 1725, - "end": 1750, + "start": 1705, + "end": 1730, "loc": { "start": { - "line": 68, + "line": 67, "column": 8 }, "end": { - "line": 68, + "line": 67, "column": 33 } }, "object": { "type": "Identifier", - "start": 1725, - "end": 1733, + "start": 1705, + "end": 1713, "loc": { "start": { - "line": 68, + "line": 67, "column": 8 }, "end": { - "line": 68, + "line": 67, "column": 16 }, "identifierName": "document" @@ -24882,15 +24843,15 @@ }, "property": { "type": "Identifier", - "start": 1734, - "end": 1750, + "start": 1714, + "end": 1730, "loc": { "start": { - "line": 68, + "line": 67, "column": 17 }, "end": { - "line": 68, + "line": 67, "column": 33 }, "identifierName": "addEventListener" @@ -24902,15 +24863,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 1751, - "end": 1758, + "start": 1731, + "end": 1738, "loc": { "start": { - "line": 68, + "line": 67, "column": 34 }, "end": { - "line": 68, + "line": 67, "column": 41 } }, @@ -24922,59 +24883,59 @@ }, { "type": "AssignmentExpression", - "start": 1760, - "end": 2019, + "start": 1740, + "end": 1999, "loc": { "start": { - "line": 68, + "line": 67, "column": 43 }, "end": { - "line": 74, + "line": 73, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 1760, - "end": 1786, + "start": 1740, + "end": 1766, "loc": { "start": { - "line": 68, + "line": 67, "column": 43 }, "end": { - "line": 68, + "line": 67, "column": 69 } }, "object": { "type": "ThisExpression", - "start": 1760, - "end": 1764, + "start": 1740, + "end": 1744, "loc": { "start": { - "line": 68, + "line": 67, "column": 43 }, "end": { - "line": 68, + "line": 67, "column": 47 } } }, "property": { "type": "Identifier", - "start": 1765, - "end": 1786, + "start": 1745, + "end": 1766, "loc": { "start": { - "line": 68, + "line": 67, "column": 48 }, "end": { - "line": 68, + "line": 67, "column": 69 }, "identifierName": "_documentKeyUpHandler" @@ -24985,15 +24946,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 1789, - "end": 2019, + "start": 1769, + "end": 1999, "loc": { "start": { - "line": 68, + "line": 67, "column": 72 }, "end": { - "line": 74, + "line": 73, "column": 9 } }, @@ -25004,15 +24965,15 @@ "params": [ { "type": "Identifier", - "start": 1790, - "end": 1791, + "start": 1770, + "end": 1771, "loc": { "start": { - "line": 68, + "line": 67, "column": 73 }, "end": { - "line": 68, + "line": 67, "column": 74 }, "identifierName": "e" @@ -25022,58 +24983,58 @@ ], "body": { "type": "BlockStatement", - "start": 1796, - "end": 2019, + "start": 1776, + "end": 1999, "loc": { "start": { - "line": 68, + "line": 67, "column": 79 }, "end": { - "line": 74, + "line": 73, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 1810, - "end": 1932, + "start": 1790, + "end": 1912, "loc": { "start": { - "line": 69, + "line": 68, "column": 12 }, "end": { - "line": 71, + "line": 70, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 1814, - "end": 1891, + "start": 1794, + "end": 1871, "loc": { "start": { - "line": 69, + "line": 68, "column": 16 }, "end": { - "line": 69, + "line": 68, "column": 93 } }, "left": { "type": "UnaryExpression", - "start": 1814, - "end": 1857, + "start": 1794, + "end": 1837, "loc": { "start": { - "line": 69, + "line": 68, "column": 16 }, "end": { - "line": 69, + "line": 68, "column": 59 } }, @@ -25081,43 +25042,43 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 1816, - "end": 1856, + "start": 1796, + "end": 1836, "loc": { "start": { - "line": 69, + "line": 68, "column": 18 }, "end": { - "line": 69, + "line": 68, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 1816, - "end": 1830, + "start": 1796, + "end": 1810, "loc": { "start": { - "line": 69, + "line": 68, "column": 18 }, "end": { - "line": 69, + "line": 68, "column": 32 } }, "object": { "type": "Identifier", - "start": 1816, - "end": 1823, + "start": 1796, + "end": 1803, "loc": { "start": { - "line": 69, + "line": 68, "column": 18 }, "end": { - "line": 69, + "line": 68, "column": 25 }, "identifierName": "configs" @@ -25126,15 +25087,15 @@ }, "property": { "type": "Identifier", - "start": 1824, - "end": 1830, + "start": 1804, + "end": 1810, "loc": { "start": { - "line": 69, + "line": 68, "column": 26 }, "end": { - "line": 69, + "line": 68, "column": 32 }, "identifierName": "active" @@ -25146,29 +25107,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 1834, - "end": 1856, + "start": 1814, + "end": 1836, "loc": { "start": { - "line": 69, + "line": 68, "column": 36 }, "end": { - "line": 69, + "line": 68, "column": 58 } }, "object": { "type": "Identifier", - "start": 1834, - "end": 1841, + "start": 1814, + "end": 1821, "loc": { "start": { - "line": 69, + "line": 68, "column": 36 }, "end": { - "line": 69, + "line": 68, "column": 43 }, "identifierName": "configs" @@ -25177,15 +25138,15 @@ }, "property": { "type": "Identifier", - "start": 1842, - "end": 1856, + "start": 1822, + "end": 1836, "loc": { "start": { - "line": 69, + "line": 68, "column": 44 }, "end": { - "line": 69, + "line": 68, "column": 58 }, "identifierName": "pointerEnabled" @@ -25196,7 +25157,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 1815 + "parenStart": 1795 } }, "extra": { @@ -25206,15 +25167,15 @@ "operator": "||", "right": { "type": "UnaryExpression", - "start": 1862, - "end": 1890, + "start": 1842, + "end": 1870, "loc": { "start": { - "line": 69, + "line": 68, "column": 64 }, "end": { - "line": 69, + "line": 68, "column": 92 } }, @@ -25222,43 +25183,43 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 1863, - "end": 1890, + "start": 1843, + "end": 1870, "loc": { "start": { - "line": 69, + "line": 68, "column": 65 }, "end": { - "line": 69, + "line": 68, "column": 92 } }, "object": { "type": "MemberExpression", - "start": 1863, - "end": 1874, + "start": 1843, + "end": 1854, "loc": { "start": { - "line": 69, + "line": 68, "column": 65 }, "end": { - "line": 69, + "line": 68, "column": 76 } }, "object": { "type": "Identifier", - "start": 1863, - "end": 1868, + "start": 1843, + "end": 1848, "loc": { "start": { - "line": 69, + "line": 68, "column": 65 }, "end": { - "line": 69, + "line": 68, "column": 70 }, "identifierName": "scene" @@ -25267,15 +25228,15 @@ }, "property": { "type": "Identifier", - "start": 1869, - "end": 1874, + "start": 1849, + "end": 1854, "loc": { "start": { - "line": 69, + "line": 68, "column": 71 }, "end": { - "line": 69, + "line": 68, "column": 76 }, "identifierName": "input" @@ -25286,15 +25247,15 @@ }, "property": { "type": "Identifier", - "start": 1875, - "end": 1890, + "start": 1855, + "end": 1870, "loc": { "start": { - "line": 69, + "line": 68, "column": 77 }, "end": { - "line": 69, + "line": 68, "column": 92 }, "identifierName": "keyboardEnabled" @@ -25306,36 +25267,36 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 1861 + "parenStart": 1841 } } }, "consequent": { "type": "BlockStatement", - "start": 1893, - "end": 1932, + "start": 1873, + "end": 1912, "loc": { "start": { - "line": 69, + "line": 68, "column": 95 }, "end": { - "line": 71, + "line": 70, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 1911, - "end": 1918, + "start": 1891, + "end": 1898, "loc": { "start": { - "line": 70, + "line": 69, "column": 16 }, "end": { - "line": 70, + "line": 69, "column": 23 } }, @@ -25348,44 +25309,44 @@ }, { "type": "VariableDeclaration", - "start": 1945, - "end": 1971, + "start": 1925, + "end": 1951, "loc": { "start": { - "line": 72, + "line": 71, "column": 12 }, "end": { - "line": 72, + "line": 71, "column": 38 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 1951, - "end": 1970, + "start": 1931, + "end": 1950, "loc": { "start": { - "line": 72, + "line": 71, "column": 18 }, "end": { - "line": 72, + "line": 71, "column": 37 } }, "id": { "type": "Identifier", - "start": 1951, - "end": 1958, + "start": 1931, + "end": 1938, "loc": { "start": { - "line": 72, + "line": 71, "column": 18 }, "end": { - "line": 72, + "line": 71, "column": 25 }, "identifierName": "keyCode" @@ -25394,29 +25355,29 @@ }, "init": { "type": "MemberExpression", - "start": 1961, - "end": 1970, + "start": 1941, + "end": 1950, "loc": { "start": { - "line": 72, + "line": 71, "column": 28 }, "end": { - "line": 72, + "line": 71, "column": 37 } }, "object": { "type": "Identifier", - "start": 1961, - "end": 1962, + "start": 1941, + "end": 1942, "loc": { "start": { - "line": 72, + "line": 71, "column": 28 }, "end": { - "line": 72, + "line": 71, "column": 29 }, "identifierName": "e" @@ -25425,15 +25386,15 @@ }, "property": { "type": "Identifier", - "start": 1963, - "end": 1970, + "start": 1943, + "end": 1950, "loc": { "start": { - "line": 72, + "line": 71, "column": 30 }, "end": { - "line": 72, + "line": 71, "column": 37 }, "identifierName": "keyCode" @@ -25448,488 +25409,1214 @@ }, { "type": "ExpressionStatement", - "start": 1984, - "end": 2009, + "start": 1964, + "end": 1989, "loc": { "start": { - "line": 73, + "line": 72, "column": 12 }, "end": { - "line": 73, + "line": 72, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 1984, - "end": 2008, + "start": 1964, + "end": 1988, "loc": { "start": { - "line": 73, + "line": 72, "column": 12 }, "end": { - "line": 73, + "line": 72, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 1984, - "end": 2000, + "start": 1964, + "end": 1980, "loc": { "start": { - "line": 73, + "line": 72, "column": 12 }, "end": { - "line": 73, + "line": 72, "column": 28 } }, "object": { "type": "Identifier", - "start": 1984, - "end": 1991, + "start": 1964, + "end": 1971, "loc": { "start": { - "line": 73, + "line": 72, "column": 12 }, "end": { - "line": 73, + "line": 72, "column": 19 }, "identifierName": "keyDown" }, "name": "keyDown" }, - "property": { - "type": "Identifier", - "start": 1992, - "end": 1999, - "loc": { - "start": { - "line": 73, - "column": 20 - }, - "end": { - "line": 73, - "column": 27 - }, - "identifierName": "keyCode" - }, - "name": "keyCode" + "property": { + "type": "Identifier", + "start": 1972, + "end": 1979, + "loc": { + "start": { + "line": 72, + "column": 20 + }, + "end": { + "line": 72, + "column": 27 + }, + "identifierName": "keyCode" + }, + "name": "keyCode" + }, + "computed": true + }, + "right": { + "type": "BooleanLiteral", + "start": 1983, + "end": 1988, + "loc": { + "start": { + "line": 72, + "column": 31 + }, + "end": { + "line": 72, + "column": 36 + } + }, + "value": false + } + } + } + ], + "directives": [] + } + } + } + ] + } + }, + { + "type": "FunctionDeclaration", + "start": 2011, + "end": 2215, + "loc": { + "start": { + "line": 75, + "column": 8 + }, + "end": { + "line": 81, + "column": 9 + } + }, + "id": { + "type": "Identifier", + "start": 2020, + "end": 2037, + "loc": { + "start": { + "line": 75, + "column": 17 + }, + "end": { + "line": 75, + "column": 34 + }, + "identifierName": "setMousedownState" + }, + "name": "setMousedownState" + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "AssignmentPattern", + "start": 2038, + "end": 2049, + "loc": { + "start": { + "line": 75, + "column": 35 + }, + "end": { + "line": 75, + "column": 46 + } + }, + "left": { + "type": "Identifier", + "start": 2038, + "end": 2042, + "loc": { + "start": { + "line": 75, + "column": 35 + }, + "end": { + "line": 75, + "column": 39 + }, + "identifierName": "pick" + }, + "name": "pick" + }, + "right": { + "type": "BooleanLiteral", + "start": 2045, + "end": 2049, + "loc": { + "start": { + "line": 75, + "column": 42 + }, + "end": { + "line": 75, + "column": 46 + } + }, + "value": true + } + } + ], + "body": { + "type": "BlockStatement", + "start": 2051, + "end": 2215, + "loc": { + "start": { + "line": 75, + "column": 48 + }, + "end": { + "line": 81, + "column": 9 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 2065, + "end": 2094, + "loc": { + "start": { + "line": 76, + "column": 12 + }, + "end": { + "line": 76, + "column": 41 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 2065, + "end": 2093, + "loc": { + "start": { + "line": 76, + "column": 12 + }, + "end": { + "line": 76, + "column": 40 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 2065, + "end": 2084, + "loc": { + "start": { + "line": 76, + "column": 12 + }, + "end": { + "line": 76, + "column": 31 + } + }, + "object": { + "type": "MemberExpression", + "start": 2065, + "end": 2077, + "loc": { + "start": { + "line": 76, + "column": 12 + }, + "end": { + "line": 76, + "column": 24 + } + }, + "object": { + "type": "Identifier", + "start": 2065, + "end": 2071, + "loc": { + "start": { + "line": 76, + "column": 12 + }, + "end": { + "line": 76, + "column": 18 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "property": { + "type": "Identifier", + "start": 2072, + "end": 2077, + "loc": { + "start": { + "line": 76, + "column": 19 + }, + "end": { + "line": 76, + "column": 24 + }, + "identifierName": "style" + }, + "name": "style" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 2078, + "end": 2084, + "loc": { + "start": { + "line": 76, + "column": 25 + }, + "end": { + "line": 76, + "column": 31 + }, + "identifierName": "cursor" + }, + "name": "cursor" + }, + "computed": false + }, + "right": { + "type": "StringLiteral", + "start": 2087, + "end": 2093, + "loc": { + "start": { + "line": 76, + "column": 34 + }, + "end": { + "line": 76, + "column": 40 + } + }, + "extra": { + "rawValue": "move", + "raw": "\"move\"" + }, + "value": "move" + } + } + }, + { + "type": "ExpressionStatement", + "start": 2107, + "end": 2131, + "loc": { + "start": { + "line": 77, + "column": 12 + }, + "end": { + "line": 77, + "column": 36 + } + }, + "expression": { + "type": "CallExpression", + "start": 2107, + "end": 2130, + "loc": { + "start": { + "line": 77, + "column": 12 + }, + "end": { + "line": 77, + "column": 35 + } + }, + "callee": { + "type": "Identifier", + "start": 2107, + "end": 2128, + "loc": { + "start": { + "line": 77, + "column": 12 + }, + "end": { + "line": 77, + "column": 33 + }, + "identifierName": "setMousedownPositions" + }, + "name": "setMousedownPositions" + }, + "arguments": [] + } + }, + { + "type": "IfStatement", + "start": 2144, + "end": 2205, + "loc": { + "start": { + "line": 78, + "column": 12 + }, + "end": { + "line": 80, + "column": 13 + } + }, + "test": { + "type": "Identifier", + "start": 2148, + "end": 2152, + "loc": { + "start": { + "line": 78, + "column": 16 + }, + "end": { + "line": 78, + "column": 20 + }, + "identifierName": "pick" + }, + "name": "pick" + }, + "consequent": { + "type": "BlockStatement", + "start": 2154, + "end": 2205, + "loc": { + "start": { + "line": 78, + "column": 22 + }, + "end": { + "line": 80, + "column": 13 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 2172, + "end": 2191, + "loc": { + "start": { + "line": 79, + "column": 16 + }, + "end": { + "line": 79, + "column": 35 + } + }, + "expression": { + "type": "CallExpression", + "start": 2172, + "end": 2190, + "loc": { + "start": { + "line": 79, + "column": 16 + }, + "end": { + "line": 79, + "column": 34 + } + }, + "callee": { + "type": "Identifier", + "start": 2172, + "end": 2188, + "loc": { + "start": { + "line": 79, + "column": 16 + }, + "end": { + "line": 79, + "column": 32 }, - "computed": true + "identifierName": "setMousedownPick" }, - "right": { - "type": "BooleanLiteral", - "start": 2003, - "end": 2008, - "loc": { - "start": { - "line": 73, - "column": 31 - }, - "end": { - "line": 73, - "column": 36 - } - }, - "value": false - } - } + "name": "setMousedownPick" + }, + "arguments": [] } - ], - "directives": [] - } - } + } + ], + "directives": [] + }, + "alternate": null } - ] + ], + "directives": [] } }, { "type": "FunctionDeclaration", - "start": 2031, - "end": 2235, + "start": 2225, + "end": 2530, "loc": { "start": { - "line": 76, + "line": 83, "column": 8 }, "end": { - "line": 82, + "line": 91, "column": 9 } }, "id": { "type": "Identifier", - "start": 2040, - "end": 2057, + "start": 2234, + "end": 2255, "loc": { "start": { - "line": 76, + "line": 83, "column": 17 }, "end": { - "line": 76, - "column": 34 + "line": 83, + "column": 38 }, - "identifierName": "setMousedownState" + "identifierName": "setMousedownPositions" }, - "name": "setMousedownState" + "name": "setMousedownPositions" }, "generator": false, "expression": false, "async": false, - "params": [ - { - "type": "AssignmentPattern", - "start": 2058, - "end": 2069, - "loc": { - "start": { - "line": 76, - "column": 35 - }, - "end": { - "line": 76, - "column": 46 - } + "params": [], + "body": { + "type": "BlockStatement", + "start": 2258, + "end": 2530, + "loc": { + "start": { + "line": 83, + "column": 41 }, - "left": { - "type": "Identifier", - "start": 2058, - "end": 2062, + "end": { + "line": 91, + "column": 9 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 2272, + "end": 2289, "loc": { "start": { - "line": 76, - "column": 35 + "line": 84, + "column": 12 }, "end": { - "line": 76, - "column": 39 - }, - "identifierName": "pick" + "line": 84, + "column": 29 + } }, - "name": "pick" + "expression": { + "type": "AssignmentExpression", + "start": 2272, + "end": 2288, + "loc": { + "start": { + "line": 84, + "column": 12 + }, + "end": { + "line": 84, + "column": 28 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 2272, + "end": 2284, + "loc": { + "start": { + "line": 84, + "column": 12 + }, + "end": { + "line": 84, + "column": 24 + }, + "identifierName": "xRotateDelta" + }, + "name": "xRotateDelta" + }, + "right": { + "type": "NumericLiteral", + "start": 2287, + "end": 2288, + "loc": { + "start": { + "line": 84, + "column": 27 + }, + "end": { + "line": 84, + "column": 28 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } }, - "right": { - "type": "BooleanLiteral", - "start": 2065, - "end": 2069, + { + "type": "ExpressionStatement", + "start": 2302, + "end": 2319, "loc": { "start": { - "line": 76, - "column": 42 + "line": 85, + "column": 12 }, "end": { - "line": 76, - "column": 46 + "line": 85, + "column": 29 } }, - "value": true - } - } - ], - "body": { - "type": "BlockStatement", - "start": 2071, - "end": 2235, - "loc": { - "start": { - "line": 76, - "column": 48 + "expression": { + "type": "AssignmentExpression", + "start": 2302, + "end": 2318, + "loc": { + "start": { + "line": 85, + "column": 12 + }, + "end": { + "line": 85, + "column": 28 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 2302, + "end": 2314, + "loc": { + "start": { + "line": 85, + "column": 12 + }, + "end": { + "line": 85, + "column": 24 + }, + "identifierName": "yRotateDelta" + }, + "name": "yRotateDelta" + }, + "right": { + "type": "NumericLiteral", + "start": 2317, + "end": 2318, + "loc": { + "start": { + "line": 85, + "column": 27 + }, + "end": { + "line": 85, + "column": 28 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } }, - "end": { - "line": 82, - "column": 9 - } - }, - "body": [ { "type": "ExpressionStatement", - "start": 2085, - "end": 2114, + "start": 2333, + "end": 2368, "loc": { "start": { - "line": 77, + "line": 87, "column": 12 }, "end": { - "line": 77, - "column": 41 + "line": 87, + "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 2085, - "end": 2113, + "start": 2333, + "end": 2367, "loc": { "start": { - "line": 77, + "line": 87, "column": 12 }, "end": { - "line": 77, - "column": 40 + "line": 87, + "column": 46 } }, "operator": "=", "left": { - "type": "MemberExpression", - "start": 2085, - "end": 2104, + "type": "Identifier", + "start": 2333, + "end": 2338, "loc": { "start": { - "line": 77, + "line": 87, "column": 12 }, "end": { - "line": 77, - "column": 31 + "line": 87, + "column": 17 + }, + "identifierName": "lastX" + }, + "name": "lastX" + }, + "right": { + "type": "MemberExpression", + "start": 2341, + "end": 2367, + "loc": { + "start": { + "line": 87, + "column": 20 + }, + "end": { + "line": 87, + "column": 46 } }, "object": { "type": "MemberExpression", - "start": 2085, - "end": 2097, + "start": 2341, + "end": 2364, "loc": { "start": { - "line": 77, - "column": 12 + "line": 87, + "column": 20 }, "end": { - "line": 77, - "column": 24 + "line": 87, + "column": 43 } }, "object": { "type": "Identifier", - "start": 2085, - "end": 2091, + "start": 2341, + "end": 2347, "loc": { "start": { - "line": 77, - "column": 12 + "line": 87, + "column": 20 }, "end": { - "line": 77, - "column": 18 + "line": 87, + "column": 26 }, - "identifierName": "canvas" + "identifierName": "states" }, - "name": "canvas" + "name": "states" }, "property": { "type": "Identifier", - "start": 2092, - "end": 2097, + "start": 2348, + "end": 2364, "loc": { "start": { - "line": 77, - "column": 19 + "line": 87, + "column": 27 }, "end": { - "line": 77, - "column": 24 + "line": 87, + "column": 43 }, - "identifierName": "style" + "identifierName": "pointerCanvasPos" }, - "name": "style" + "name": "pointerCanvasPos" }, "computed": false }, "property": { - "type": "Identifier", - "start": 2098, - "end": 2104, + "type": "NumericLiteral", + "start": 2365, + "end": 2366, "loc": { "start": { - "line": 77, - "column": 25 + "line": 87, + "column": 44 }, "end": { - "line": 77, - "column": 31 - }, - "identifierName": "cursor" + "line": 87, + "column": 45 + } }, - "name": "cursor" + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 }, - "computed": false + "computed": true + } + } + }, + { + "type": "ExpressionStatement", + "start": 2381, + "end": 2416, + "loc": { + "start": { + "line": 88, + "column": 12 + }, + "end": { + "line": 88, + "column": 47 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 2381, + "end": 2415, + "loc": { + "start": { + "line": 88, + "column": 12 + }, + "end": { + "line": 88, + "column": 46 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 2381, + "end": 2386, + "loc": { + "start": { + "line": 88, + "column": 12 + }, + "end": { + "line": 88, + "column": 17 + }, + "identifierName": "lastY" + }, + "name": "lastY" }, "right": { - "type": "StringLiteral", - "start": 2107, - "end": 2113, + "type": "MemberExpression", + "start": 2389, + "end": 2415, "loc": { "start": { - "line": 77, - "column": 34 + "line": 88, + "column": 20 }, "end": { - "line": 77, - "column": 40 + "line": 88, + "column": 46 } }, - "extra": { - "rawValue": "move", - "raw": "\"move\"" + "object": { + "type": "MemberExpression", + "start": 2389, + "end": 2412, + "loc": { + "start": { + "line": 88, + "column": 20 + }, + "end": { + "line": 88, + "column": 43 + } + }, + "object": { + "type": "Identifier", + "start": 2389, + "end": 2395, + "loc": { + "start": { + "line": 88, + "column": 20 + }, + "end": { + "line": 88, + "column": 26 + }, + "identifierName": "states" + }, + "name": "states" + }, + "property": { + "type": "Identifier", + "start": 2396, + "end": 2412, + "loc": { + "start": { + "line": 88, + "column": 27 + }, + "end": { + "line": 88, + "column": 43 + }, + "identifierName": "pointerCanvasPos" + }, + "name": "pointerCanvasPos" + }, + "computed": false }, - "value": "move" + "property": { + "type": "NumericLiteral", + "start": 2413, + "end": 2414, + "loc": { + "start": { + "line": 88, + "column": 44 + }, + "end": { + "line": 88, + "column": 45 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "computed": true } } }, { "type": "ExpressionStatement", - "start": 2127, - "end": 2151, + "start": 2429, + "end": 2468, "loc": { "start": { - "line": 78, + "line": 89, "column": 12 }, "end": { - "line": 78, - "column": 36 + "line": 89, + "column": 51 } }, "expression": { - "type": "CallExpression", - "start": 2127, - "end": 2150, + "type": "AssignmentExpression", + "start": 2429, + "end": 2467, "loc": { "start": { - "line": 78, + "line": 89, "column": 12 }, "end": { - "line": 78, - "column": 35 + "line": 89, + "column": 50 } }, - "callee": { + "operator": "=", + "left": { "type": "Identifier", - "start": 2127, - "end": 2148, + "start": 2429, + "end": 2438, "loc": { "start": { - "line": 78, + "line": 89, "column": 12 }, "end": { - "line": 78, - "column": 33 + "line": 89, + "column": 21 }, - "identifierName": "setMousedownPositions" + "identifierName": "lastXDown" }, - "name": "setMousedownPositions" + "name": "lastXDown" }, - "arguments": [] + "right": { + "type": "MemberExpression", + "start": 2441, + "end": 2467, + "loc": { + "start": { + "line": 89, + "column": 24 + }, + "end": { + "line": 89, + "column": 50 + } + }, + "object": { + "type": "MemberExpression", + "start": 2441, + "end": 2464, + "loc": { + "start": { + "line": 89, + "column": 24 + }, + "end": { + "line": 89, + "column": 47 + } + }, + "object": { + "type": "Identifier", + "start": 2441, + "end": 2447, + "loc": { + "start": { + "line": 89, + "column": 24 + }, + "end": { + "line": 89, + "column": 30 + }, + "identifierName": "states" + }, + "name": "states" + }, + "property": { + "type": "Identifier", + "start": 2448, + "end": 2464, + "loc": { + "start": { + "line": 89, + "column": 31 + }, + "end": { + "line": 89, + "column": 47 + }, + "identifierName": "pointerCanvasPos" + }, + "name": "pointerCanvasPos" + }, + "computed": false + }, + "property": { + "type": "NumericLiteral", + "start": 2465, + "end": 2466, + "loc": { + "start": { + "line": 89, + "column": 48 + }, + "end": { + "line": 89, + "column": 49 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "computed": true + } } }, { - "type": "IfStatement", - "start": 2164, - "end": 2225, + "type": "ExpressionStatement", + "start": 2481, + "end": 2520, "loc": { "start": { - "line": 79, + "line": 90, "column": 12 }, "end": { - "line": 81, - "column": 13 + "line": 90, + "column": 51 } }, - "test": { - "type": "Identifier", - "start": 2168, - "end": 2172, + "expression": { + "type": "AssignmentExpression", + "start": 2481, + "end": 2519, "loc": { "start": { - "line": 79, - "column": 16 + "line": 90, + "column": 12 }, "end": { - "line": 79, - "column": 20 - }, - "identifierName": "pick" + "line": 90, + "column": 50 + } }, - "name": "pick" - }, - "consequent": { - "type": "BlockStatement", - "start": 2174, - "end": 2225, - "loc": { - "start": { - "line": 79, - "column": 22 + "operator": "=", + "left": { + "type": "Identifier", + "start": 2481, + "end": 2490, + "loc": { + "start": { + "line": 90, + "column": 12 + }, + "end": { + "line": 90, + "column": 21 + }, + "identifierName": "lastYDown" }, - "end": { - "line": 81, - "column": 13 - } + "name": "lastYDown" }, - "body": [ - { - "type": "ExpressionStatement", - "start": 2192, - "end": 2211, + "right": { + "type": "MemberExpression", + "start": 2493, + "end": 2519, + "loc": { + "start": { + "line": 90, + "column": 24 + }, + "end": { + "line": 90, + "column": 50 + } + }, + "object": { + "type": "MemberExpression", + "start": 2493, + "end": 2516, "loc": { "start": { - "line": 80, - "column": 16 + "line": 90, + "column": 24 }, "end": { - "line": 80, - "column": 35 + "line": 90, + "column": 47 } }, - "expression": { - "type": "CallExpression", - "start": 2192, - "end": 2210, + "object": { + "type": "Identifier", + "start": 2493, + "end": 2499, "loc": { "start": { - "line": 80, - "column": 16 + "line": 90, + "column": 24 }, "end": { - "line": 80, - "column": 34 - } + "line": 90, + "column": 30 + }, + "identifierName": "states" }, - "callee": { - "type": "Identifier", - "start": 2192, - "end": 2208, - "loc": { - "start": { - "line": 80, - "column": 16 - }, - "end": { - "line": 80, - "column": 32 - }, - "identifierName": "setMousedownPick" + "name": "states" + }, + "property": { + "type": "Identifier", + "start": 2500, + "end": 2516, + "loc": { + "start": { + "line": 90, + "column": 31 }, - "name": "setMousedownPick" + "end": { + "line": 90, + "column": 47 + }, + "identifierName": "pointerCanvasPos" }, - "arguments": [] - } - } - ], - "directives": [] - }, - "alternate": null + "name": "pointerCanvasPos" + }, + "computed": false + }, + "property": { + "type": "NumericLiteral", + "start": 2517, + "end": 2518, + "loc": { + "start": { + "line": 90, + "column": 48 + }, + "end": { + "line": 90, + "column": 49 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "computed": true + } + } } ], "directives": [] @@ -25937,34 +26624,34 @@ }, { "type": "FunctionDeclaration", - "start": 2245, - "end": 2550, + "start": 2540, + "end": 3068, "loc": { "start": { - "line": 84, + "line": 93, "column": 8 }, "end": { - "line": 92, + "line": 104, "column": 9 } }, "id": { "type": "Identifier", - "start": 2254, - "end": 2275, + "start": 2549, + "end": 2565, "loc": { "start": { - "line": 84, + "line": 93, "column": 17 }, "end": { - "line": 84, - "column": 38 + "line": 93, + "column": 33 }, - "identifierName": "setMousedownPositions" + "identifierName": "setMousedownPick" }, - "name": "setMousedownPositions" + "name": "setMousedownPick" }, "generator": false, "expression": false, @@ -25972,2362 +26659,3998 @@ "params": [], "body": { "type": "BlockStatement", - "start": 2278, - "end": 2550, + "start": 2568, + "end": 3068, "loc": { "start": { - "line": 84, - "column": 41 + "line": 93, + "column": 36 }, "end": { - "line": 92, + "line": 104, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 2292, - "end": 2309, + "start": 2582, + "end": 2637, "loc": { "start": { - "line": 85, + "line": 94, "column": 12 }, "end": { - "line": 85, - "column": 29 + "line": 94, + "column": 67 } }, "expression": { "type": "AssignmentExpression", - "start": 2292, - "end": 2308, + "start": 2582, + "end": 2636, "loc": { "start": { - "line": 85, + "line": 94, "column": 12 }, "end": { - "line": 85, - "column": 28 + "line": 94, + "column": 66 } }, "operator": "=", "left": { - "type": "Identifier", - "start": 2292, - "end": 2304, + "type": "MemberExpression", + "start": 2582, + "end": 2610, "loc": { "start": { - "line": 85, + "line": 94, "column": 12 }, "end": { - "line": 85, - "column": 24 + "line": 94, + "column": 40 + } + }, + "object": { + "type": "Identifier", + "start": 2582, + "end": 2596, + "loc": { + "start": { + "line": 94, + "column": 12 + }, + "end": { + "line": 94, + "column": 26 + }, + "identifierName": "pickController" }, - "identifierName": "xRotateDelta" + "name": "pickController" }, - "name": "xRotateDelta" + "property": { + "type": "Identifier", + "start": 2597, + "end": 2610, + "loc": { + "start": { + "line": 94, + "column": 27 + }, + "end": { + "line": 94, + "column": 40 + }, + "identifierName": "pickCursorPos" + }, + "name": "pickCursorPos" + }, + "computed": false }, "right": { - "type": "NumericLiteral", - "start": 2307, - "end": 2308, + "type": "MemberExpression", + "start": 2613, + "end": 2636, "loc": { "start": { - "line": 85, - "column": 27 + "line": 94, + "column": 43 }, "end": { - "line": 85, - "column": 28 + "line": 94, + "column": 66 } }, - "extra": { - "rawValue": 0, - "raw": "0" + "object": { + "type": "Identifier", + "start": 2613, + "end": 2619, + "loc": { + "start": { + "line": 94, + "column": 43 + }, + "end": { + "line": 94, + "column": 49 + }, + "identifierName": "states" + }, + "name": "states" }, - "value": 0 + "property": { + "type": "Identifier", + "start": 2620, + "end": 2636, + "loc": { + "start": { + "line": 94, + "column": 50 + }, + "end": { + "line": 94, + "column": 66 + }, + "identifierName": "pointerCanvasPos" + }, + "name": "pointerCanvasPos" + }, + "computed": false } } }, { "type": "ExpressionStatement", - "start": 2322, - "end": 2339, + "start": 2650, + "end": 2692, "loc": { "start": { - "line": 86, + "line": 95, "column": 12 }, "end": { - "line": 86, - "column": 29 + "line": 95, + "column": 54 } }, "expression": { "type": "AssignmentExpression", - "start": 2322, - "end": 2338, + "start": 2650, + "end": 2691, "loc": { "start": { - "line": 86, + "line": 95, "column": 12 }, "end": { - "line": 86, - "column": 28 + "line": 95, + "column": 53 } }, "operator": "=", "left": { - "type": "Identifier", - "start": 2322, - "end": 2334, + "type": "MemberExpression", + "start": 2650, + "end": 2684, "loc": { "start": { - "line": 86, + "line": 95, "column": 12 }, "end": { - "line": 86, - "column": 24 + "line": 95, + "column": 46 + } + }, + "object": { + "type": "Identifier", + "start": 2650, + "end": 2664, + "loc": { + "start": { + "line": 95, + "column": 12 + }, + "end": { + "line": 95, + "column": 26 + }, + "identifierName": "pickController" }, - "identifierName": "yRotateDelta" + "name": "pickController" }, - "name": "yRotateDelta" + "property": { + "type": "Identifier", + "start": 2665, + "end": 2684, + "loc": { + "start": { + "line": 95, + "column": 27 + }, + "end": { + "line": 95, + "column": 46 + }, + "identifierName": "schedulePickSurface" + }, + "name": "schedulePickSurface" + }, + "computed": false }, "right": { - "type": "NumericLiteral", - "start": 2337, - "end": 2338, + "type": "BooleanLiteral", + "start": 2687, + "end": 2691, "loc": { "start": { - "line": 86, - "column": 27 + "line": 95, + "column": 49 }, "end": { - "line": 86, - "column": 28 + "line": 95, + "column": 53 } }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 + "value": true } } }, { "type": "ExpressionStatement", - "start": 2353, - "end": 2388, + "start": 2705, + "end": 2729, "loc": { "start": { - "line": 88, + "line": 96, "column": 12 }, "end": { - "line": 88, - "column": 47 + "line": 96, + "column": 36 } }, "expression": { - "type": "AssignmentExpression", - "start": 2353, - "end": 2387, + "type": "CallExpression", + "start": 2705, + "end": 2728, "loc": { "start": { - "line": 88, + "line": 96, "column": 12 }, "end": { - "line": 88, - "column": 46 + "line": 96, + "column": 35 } }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 2353, - "end": 2358, - "loc": { - "start": { - "line": 88, - "column": 12 - }, - "end": { - "line": 88, - "column": 17 - }, - "identifierName": "lastX" - }, - "name": "lastX" - }, - "right": { + "callee": { "type": "MemberExpression", - "start": 2361, - "end": 2387, + "start": 2705, + "end": 2726, "loc": { "start": { - "line": 88, - "column": 20 + "line": 96, + "column": 12 }, "end": { - "line": 88, - "column": 46 + "line": 96, + "column": 33 } }, "object": { - "type": "MemberExpression", - "start": 2361, - "end": 2384, + "type": "Identifier", + "start": 2705, + "end": 2719, "loc": { "start": { - "line": 88, - "column": 20 + "line": 96, + "column": 12 }, "end": { - "line": 88, - "column": 43 - } - }, - "object": { - "type": "Identifier", - "start": 2361, - "end": 2367, - "loc": { - "start": { - "line": 88, - "column": 20 - }, - "end": { - "line": 88, - "column": 26 - }, - "identifierName": "states" - }, - "name": "states" - }, - "property": { - "type": "Identifier", - "start": 2368, - "end": 2384, - "loc": { - "start": { - "line": 88, - "column": 27 - }, - "end": { - "line": 88, - "column": 43 - }, - "identifierName": "pointerCanvasPos" + "line": 96, + "column": 26 }, - "name": "pointerCanvasPos" + "identifierName": "pickController" }, - "computed": false + "name": "pickController" }, "property": { - "type": "NumericLiteral", - "start": 2385, - "end": 2386, + "type": "Identifier", + "start": 2720, + "end": 2726, "loc": { "start": { - "line": 88, - "column": 44 + "line": 96, + "column": 27 }, "end": { - "line": 88, - "column": 45 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" + "line": 96, + "column": 33 + }, + "identifierName": "update" }, - "value": 0 + "name": "update" }, - "computed": true - } + "computed": false + }, + "arguments": [] } }, { - "type": "ExpressionStatement", - "start": 2401, - "end": 2436, + "type": "IfStatement", + "start": 2743, + "end": 3058, "loc": { "start": { - "line": 89, + "line": 98, "column": 12 }, "end": { - "line": 89, - "column": 47 + "line": 103, + "column": 13 } }, - "expression": { - "type": "AssignmentExpression", - "start": 2401, - "end": 2435, + "test": { + "type": "LogicalExpression", + "start": 2747, + "end": 2867, "loc": { "start": { - "line": 89, - "column": 12 + "line": 98, + "column": 16 }, "end": { - "line": 89, - "column": 46 + "line": 98, + "column": 136 } }, - "operator": "=", "left": { - "type": "Identifier", - "start": 2401, - "end": 2406, + "type": "LogicalExpression", + "start": 2747, + "end": 2829, "loc": { "start": { - "line": 89, - "column": 12 + "line": 98, + "column": 16 + }, + "end": { + "line": 98, + "column": 98 + } + }, + "left": { + "type": "LogicalExpression", + "start": 2747, + "end": 2800, + "loc": { + "start": { + "line": 98, + "column": 16 + }, + "end": { + "line": 98, + "column": 69 + } + }, + "left": { + "type": "MemberExpression", + "start": 2747, + "end": 2768, + "loc": { + "start": { + "line": 98, + "column": 16 + }, + "end": { + "line": 98, + "column": 37 + } + }, + "object": { + "type": "Identifier", + "start": 2747, + "end": 2761, + "loc": { + "start": { + "line": 98, + "column": 16 + }, + "end": { + "line": 98, + "column": 30 + }, + "identifierName": "pickController" + }, + "name": "pickController" + }, + "property": { + "type": "Identifier", + "start": 2762, + "end": 2768, + "loc": { + "start": { + "line": 98, + "column": 31 + }, + "end": { + "line": 98, + "column": 37 + }, + "identifierName": "picked" + }, + "name": "picked" + }, + "computed": false + }, + "operator": "&&", + "right": { + "type": "MemberExpression", + "start": 2772, + "end": 2800, + "loc": { + "start": { + "line": 98, + "column": 41 + }, + "end": { + "line": 98, + "column": 69 + } + }, + "object": { + "type": "Identifier", + "start": 2772, + "end": 2786, + "loc": { + "start": { + "line": 98, + "column": 41 + }, + "end": { + "line": 98, + "column": 55 + }, + "identifierName": "pickController" + }, + "name": "pickController" + }, + "property": { + "type": "Identifier", + "start": 2787, + "end": 2800, + "loc": { + "start": { + "line": 98, + "column": 56 + }, + "end": { + "line": 98, + "column": 69 + }, + "identifierName": "pickedSurface" + }, + "name": "pickedSurface" + }, + "computed": false + } + }, + "operator": "&&", + "right": { + "type": "MemberExpression", + "start": 2804, + "end": 2829, + "loc": { + "start": { + "line": 98, + "column": 73 + }, + "end": { + "line": 98, + "column": 98 + } }, - "end": { - "line": 89, - "column": 17 + "object": { + "type": "Identifier", + "start": 2804, + "end": 2818, + "loc": { + "start": { + "line": 98, + "column": 73 + }, + "end": { + "line": 98, + "column": 87 + }, + "identifierName": "pickController" + }, + "name": "pickController" }, - "identifierName": "lastY" - }, - "name": "lastY" + "property": { + "type": "Identifier", + "start": 2819, + "end": 2829, + "loc": { + "start": { + "line": 98, + "column": 88 + }, + "end": { + "line": 98, + "column": 98 + }, + "identifierName": "pickResult" + }, + "name": "pickResult" + }, + "computed": false + } }, + "operator": "&&", "right": { "type": "MemberExpression", - "start": 2409, - "end": 2435, + "start": 2833, + "end": 2867, "loc": { "start": { - "line": 89, - "column": 20 + "line": 98, + "column": 102 }, "end": { - "line": 89, - "column": 46 + "line": 98, + "column": 136 } }, "object": { "type": "MemberExpression", - "start": 2409, - "end": 2432, + "start": 2833, + "end": 2858, "loc": { "start": { - "line": 89, - "column": 20 + "line": 98, + "column": 102 }, "end": { - "line": 89, - "column": 43 + "line": 98, + "column": 127 } }, "object": { "type": "Identifier", - "start": 2409, - "end": 2415, + "start": 2833, + "end": 2847, "loc": { "start": { - "line": 89, - "column": 20 + "line": 98, + "column": 102 }, "end": { - "line": 89, - "column": 26 + "line": 98, + "column": 116 }, - "identifierName": "states" + "identifierName": "pickController" }, - "name": "states" + "name": "pickController" }, "property": { "type": "Identifier", - "start": 2416, - "end": 2432, + "start": 2848, + "end": 2858, "loc": { "start": { - "line": 89, - "column": 27 + "line": 98, + "column": 117 }, "end": { - "line": 89, - "column": 43 + "line": 98, + "column": 127 }, - "identifierName": "pointerCanvasPos" + "identifierName": "pickResult" }, - "name": "pointerCanvasPos" + "name": "pickResult" }, "computed": false }, "property": { - "type": "NumericLiteral", - "start": 2433, - "end": 2434, + "type": "Identifier", + "start": 2859, + "end": 2867, "loc": { "start": { - "line": 89, - "column": 44 + "line": 98, + "column": 128 }, "end": { - "line": 89, - "column": 45 - } - }, - "extra": { - "rawValue": 1, - "raw": "1" + "line": 98, + "column": 136 + }, + "identifierName": "worldPos" }, - "value": 1 + "name": "worldPos" }, - "computed": true - } - } - }, - { - "type": "ExpressionStatement", - "start": 2449, - "end": 2488, - "loc": { - "start": { - "line": 90, - "column": 12 - }, - "end": { - "line": 90, - "column": 51 + "computed": false } }, - "expression": { - "type": "AssignmentExpression", - "start": 2449, - "end": 2487, + "consequent": { + "type": "BlockStatement", + "start": 2869, + "end": 2996, "loc": { "start": { - "line": 90, - "column": 12 + "line": 98, + "column": 138 }, "end": { - "line": 90, - "column": 50 + "line": 101, + "column": 13 } }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 2449, - "end": 2458, - "loc": { - "start": { - "line": 90, - "column": 12 - }, - "end": { - "line": 90, - "column": 21 - }, - "identifierName": "lastXDown" - }, - "name": "lastXDown" - }, - "right": { - "type": "MemberExpression", - "start": 2461, - "end": 2487, - "loc": { - "start": { - "line": 90, - "column": 24 - }, - "end": { - "line": 90, - "column": 50 - } - }, - "object": { - "type": "MemberExpression", - "start": 2461, - "end": 2484, + "body": [ + { + "type": "ExpressionStatement", + "start": 2887, + "end": 2910, "loc": { "start": { - "line": 90, - "column": 24 + "line": 99, + "column": 16 }, "end": { - "line": 90, - "column": 47 + "line": 99, + "column": 39 } }, - "object": { - "type": "Identifier", - "start": 2461, - "end": 2467, + "expression": { + "type": "AssignmentExpression", + "start": 2887, + "end": 2909, "loc": { "start": { - "line": 90, - "column": 24 + "line": 99, + "column": 16 }, "end": { - "line": 90, - "column": 30 + "line": 99, + "column": 38 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 2887, + "end": 2902, + "loc": { + "start": { + "line": 99, + "column": 16 + }, + "end": { + "line": 99, + "column": 31 + }, + "identifierName": "mouseDownPicked" }, - "identifierName": "states" + "name": "mouseDownPicked" }, - "name": "states" + "right": { + "type": "BooleanLiteral", + "start": 2905, + "end": 2909, + "loc": { + "start": { + "line": 99, + "column": 34 + }, + "end": { + "line": 99, + "column": 38 + } + }, + "value": true + } + } + }, + { + "type": "ExpressionStatement", + "start": 2927, + "end": 2982, + "loc": { + "start": { + "line": 100, + "column": 16 + }, + "end": { + "line": 100, + "column": 71 + } }, - "property": { - "type": "Identifier", - "start": 2468, - "end": 2484, + "expression": { + "type": "CallExpression", + "start": 2927, + "end": 2981, "loc": { "start": { - "line": 90, - "column": 31 + "line": 100, + "column": 16 }, "end": { - "line": 90, - "column": 47 + "line": 100, + "column": 70 + } + }, + "callee": { + "type": "MemberExpression", + "start": 2927, + "end": 2945, + "loc": { + "start": { + "line": 100, + "column": 16 + }, + "end": { + "line": 100, + "column": 34 + } }, - "identifierName": "pointerCanvasPos" + "object": { + "type": "Identifier", + "start": 2927, + "end": 2941, + "loc": { + "start": { + "line": 100, + "column": 16 + }, + "end": { + "line": 100, + "column": 30 + }, + "identifierName": "pickedWorldPos" + }, + "name": "pickedWorldPos" + }, + "property": { + "type": "Identifier", + "start": 2942, + "end": 2945, + "loc": { + "start": { + "line": 100, + "column": 31 + }, + "end": { + "line": 100, + "column": 34 + }, + "identifierName": "set" + }, + "name": "set" + }, + "computed": false }, - "name": "pointerCanvasPos" - }, - "computed": false + "arguments": [ + { + "type": "MemberExpression", + "start": 2946, + "end": 2980, + "loc": { + "start": { + "line": 100, + "column": 35 + }, + "end": { + "line": 100, + "column": 69 + } + }, + "object": { + "type": "MemberExpression", + "start": 2946, + "end": 2971, + "loc": { + "start": { + "line": 100, + "column": 35 + }, + "end": { + "line": 100, + "column": 60 + } + }, + "object": { + "type": "Identifier", + "start": 2946, + "end": 2960, + "loc": { + "start": { + "line": 100, + "column": 35 + }, + "end": { + "line": 100, + "column": 49 + }, + "identifierName": "pickController" + }, + "name": "pickController" + }, + "property": { + "type": "Identifier", + "start": 2961, + "end": 2971, + "loc": { + "start": { + "line": 100, + "column": 50 + }, + "end": { + "line": 100, + "column": 60 + }, + "identifierName": "pickResult" + }, + "name": "pickResult" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 2972, + "end": 2980, + "loc": { + "start": { + "line": 100, + "column": 61 + }, + "end": { + "line": 100, + "column": 69 + }, + "identifierName": "worldPos" + }, + "name": "worldPos" + }, + "computed": false + } + ] + } + } + ], + "directives": [] + }, + "alternate": { + "type": "BlockStatement", + "start": 3002, + "end": 3058, + "loc": { + "start": { + "line": 101, + "column": 19 }, - "property": { - "type": "NumericLiteral", - "start": 2485, - "end": 2486, + "end": { + "line": 103, + "column": 13 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 3020, + "end": 3044, "loc": { "start": { - "line": 90, - "column": 48 + "line": 102, + "column": 16 }, "end": { - "line": 90, - "column": 49 + "line": 102, + "column": 40 } }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - }, - "computed": true - } + "expression": { + "type": "AssignmentExpression", + "start": 3020, + "end": 3043, + "loc": { + "start": { + "line": 102, + "column": 16 + }, + "end": { + "line": 102, + "column": 39 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 3020, + "end": 3035, + "loc": { + "start": { + "line": 102, + "column": 16 + }, + "end": { + "line": 102, + "column": 31 + }, + "identifierName": "mouseDownPicked" + }, + "name": "mouseDownPicked" + }, + "right": { + "type": "BooleanLiteral", + "start": 3038, + "end": 3043, + "loc": { + "start": { + "line": 102, + "column": 34 + }, + "end": { + "line": 102, + "column": 39 + } + }, + "value": false + } + } + } + ], + "directives": [] + } + } + ], + "directives": [] + } + }, + { + "type": "ExpressionStatement", + "start": 3078, + "end": 4145, + "loc": { + "start": { + "line": 106, + "column": 8 + }, + "end": { + "line": 153, + "column": 11 + } + }, + "expression": { + "type": "CallExpression", + "start": 3078, + "end": 4144, + "loc": { + "start": { + "line": 106, + "column": 8 + }, + "end": { + "line": 153, + "column": 10 + } + }, + "callee": { + "type": "MemberExpression", + "start": 3078, + "end": 3101, + "loc": { + "start": { + "line": 106, + "column": 8 + }, + "end": { + "line": 106, + "column": 31 } }, + "object": { + "type": "Identifier", + "start": 3078, + "end": 3084, + "loc": { + "start": { + "line": 106, + "column": 8 + }, + "end": { + "line": 106, + "column": 14 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "property": { + "type": "Identifier", + "start": 3085, + "end": 3101, + "loc": { + "start": { + "line": 106, + "column": 15 + }, + "end": { + "line": 106, + "column": 31 + }, + "identifierName": "addEventListener" + }, + "name": "addEventListener" + }, + "computed": false + }, + "arguments": [ { - "type": "ExpressionStatement", - "start": 2501, - "end": 2540, + "type": "StringLiteral", + "start": 3102, + "end": 3113, "loc": { "start": { - "line": 91, - "column": 12 + "line": 106, + "column": 32 }, "end": { - "line": 91, - "column": 51 + "line": 106, + "column": 43 } }, - "expression": { - "type": "AssignmentExpression", - "start": 2501, - "end": 2539, + "extra": { + "rawValue": "mousedown", + "raw": "\"mousedown\"" + }, + "value": "mousedown" + }, + { + "type": "AssignmentExpression", + "start": 3115, + "end": 4143, + "loc": { + "start": { + "line": 106, + "column": 45 + }, + "end": { + "line": 153, + "column": 9 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 3115, + "end": 3137, "loc": { "start": { - "line": 91, - "column": 12 + "line": 106, + "column": 45 }, "end": { - "line": 91, - "column": 50 + "line": 106, + "column": 67 + } + }, + "object": { + "type": "ThisExpression", + "start": 3115, + "end": 3119, + "loc": { + "start": { + "line": 106, + "column": 45 + }, + "end": { + "line": 106, + "column": 49 + } } }, - "operator": "=", - "left": { + "property": { "type": "Identifier", - "start": 2501, - "end": 2510, + "start": 3120, + "end": 3137, "loc": { "start": { - "line": 91, - "column": 12 + "line": 106, + "column": 50 }, "end": { - "line": 91, - "column": 21 + "line": 106, + "column": 67 }, - "identifierName": "lastYDown" + "identifierName": "_mouseDownHandler" }, - "name": "lastYDown" + "name": "_mouseDownHandler" }, - "right": { - "type": "MemberExpression", - "start": 2513, - "end": 2539, + "computed": false + }, + "right": { + "type": "ArrowFunctionExpression", + "start": 3140, + "end": 4143, + "loc": { + "start": { + "line": 106, + "column": 70 + }, + "end": { + "line": 153, + "column": 9 + } + }, + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 3141, + "end": 3142, + "loc": { + "start": { + "line": 106, + "column": 71 + }, + "end": { + "line": 106, + "column": 72 + }, + "identifierName": "e" + }, + "name": "e" + } + ], + "body": { + "type": "BlockStatement", + "start": 3147, + "end": 4143, "loc": { "start": { - "line": 91, - "column": 24 + "line": 106, + "column": 77 }, "end": { - "line": 91, - "column": 50 + "line": 153, + "column": 9 } }, - "object": { - "type": "MemberExpression", - "start": 2513, - "end": 2536, - "loc": { - "start": { - "line": 91, - "column": 24 + "body": [ + { + "type": "IfStatement", + "start": 3162, + "end": 3250, + "loc": { + "start": { + "line": 108, + "column": 12 + }, + "end": { + "line": 110, + "column": 13 + } }, - "end": { - "line": 91, - "column": 47 - } + "test": { + "type": "UnaryExpression", + "start": 3166, + "end": 3209, + "loc": { + "start": { + "line": 108, + "column": 16 + }, + "end": { + "line": 108, + "column": 59 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "LogicalExpression", + "start": 3168, + "end": 3208, + "loc": { + "start": { + "line": 108, + "column": 18 + }, + "end": { + "line": 108, + "column": 58 + } + }, + "left": { + "type": "MemberExpression", + "start": 3168, + "end": 3182, + "loc": { + "start": { + "line": 108, + "column": 18 + }, + "end": { + "line": 108, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 3168, + "end": 3175, + "loc": { + "start": { + "line": 108, + "column": 18 + }, + "end": { + "line": 108, + "column": 25 + }, + "identifierName": "configs" + }, + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 3176, + "end": 3182, + "loc": { + "start": { + "line": 108, + "column": 26 + }, + "end": { + "line": 108, + "column": 32 + }, + "identifierName": "active" + }, + "name": "active" + }, + "computed": false + }, + "operator": "&&", + "right": { + "type": "MemberExpression", + "start": 3186, + "end": 3208, + "loc": { + "start": { + "line": 108, + "column": 36 + }, + "end": { + "line": 108, + "column": 58 + } + }, + "object": { + "type": "Identifier", + "start": 3186, + "end": 3193, + "loc": { + "start": { + "line": 108, + "column": 36 + }, + "end": { + "line": 108, + "column": 43 + }, + "identifierName": "configs" + }, + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 3194, + "end": 3208, + "loc": { + "start": { + "line": 108, + "column": 44 + }, + "end": { + "line": 108, + "column": 58 + }, + "identifierName": "pointerEnabled" + }, + "name": "pointerEnabled" + }, + "computed": false + }, + "extra": { + "parenthesized": true, + "parenStart": 3167 + } + }, + "extra": { + "parenthesizedArgument": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 3211, + "end": 3250, + "loc": { + "start": { + "line": 108, + "column": 61 + }, + "end": { + "line": 110, + "column": 13 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 3229, + "end": 3236, + "loc": { + "start": { + "line": 109, + "column": 16 + }, + "end": { + "line": 109, + "column": 23 + } + }, + "argument": null + } + ], + "directives": [] + }, + "alternate": null }, - "object": { - "type": "Identifier", - "start": 2513, - "end": 2519, + { + "type": "SwitchStatement", + "start": 3264, + "end": 4133, "loc": { "start": { - "line": 91, - "column": 24 + "line": 112, + "column": 12 }, "end": { - "line": 91, - "column": 30 + "line": 152, + "column": 13 + } + }, + "discriminant": { + "type": "MemberExpression", + "start": 3272, + "end": 3279, + "loc": { + "start": { + "line": 112, + "column": 20 + }, + "end": { + "line": 112, + "column": 27 + } + }, + "object": { + "type": "Identifier", + "start": 3272, + "end": 3273, + "loc": { + "start": { + "line": 112, + "column": 20 + }, + "end": { + "line": 112, + "column": 21 + }, + "identifierName": "e" + }, + "name": "e" + }, + "property": { + "type": "Identifier", + "start": 3274, + "end": 3279, + "loc": { + "start": { + "line": 112, + "column": 22 + }, + "end": { + "line": 112, + "column": 27 + }, + "identifierName": "which" + }, + "name": "which" + }, + "computed": false + }, + "cases": [ + { + "type": "SwitchCase", + "start": 3300, + "end": 3672, + "loc": { + "start": { + "line": 114, + "column": 16 + }, + "end": { + "line": 129, + "column": 26 + } + }, + "consequent": [ + { + "type": "IfStatement", + "start": 3344, + "end": 3644, + "loc": { + "start": { + "line": 116, + "column": 20 + }, + "end": { + "line": 127, + "column": 21 + } + }, + "test": { + "type": "LogicalExpression", + "start": 3348, + "end": 3398, + "loc": { + "start": { + "line": 116, + "column": 24 + }, + "end": { + "line": 116, + "column": 74 + } + }, + "left": { + "type": "MemberExpression", + "start": 3348, + "end": 3378, + "loc": { + "start": { + "line": 116, + "column": 24 + }, + "end": { + "line": 116, + "column": 54 + } + }, + "object": { + "type": "Identifier", + "start": 3348, + "end": 3355, + "loc": { + "start": { + "line": 116, + "column": 24 + }, + "end": { + "line": 116, + "column": 31 + }, + "identifierName": "keyDown" + }, + "name": "keyDown", + "leadingComments": null + }, + "property": { + "type": "MemberExpression", + "start": 3356, + "end": 3377, + "loc": { + "start": { + "line": 116, + "column": 32 + }, + "end": { + "line": 116, + "column": 53 + } + }, + "object": { + "type": "MemberExpression", + "start": 3356, + "end": 3367, + "loc": { + "start": { + "line": 116, + "column": 32 + }, + "end": { + "line": 116, + "column": 43 + } + }, + "object": { + "type": "Identifier", + "start": 3356, + "end": 3361, + "loc": { + "start": { + "line": 116, + "column": 32 + }, + "end": { + "line": 116, + "column": 37 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "property": { + "type": "Identifier", + "start": 3362, + "end": 3367, + "loc": { + "start": { + "line": 116, + "column": 38 + }, + "end": { + "line": 116, + "column": 43 + }, + "identifierName": "input" + }, + "name": "input" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 3368, + "end": 3377, + "loc": { + "start": { + "line": 116, + "column": 44 + }, + "end": { + "line": 116, + "column": 53 + }, + "identifierName": "KEY_SHIFT" + }, + "name": "KEY_SHIFT" + }, + "computed": false + }, + "computed": true, + "leadingComments": null + }, + "operator": "||", + "right": { + "type": "MemberExpression", + "start": 3382, + "end": 3398, + "loc": { + "start": { + "line": 116, + "column": 58 + }, + "end": { + "line": 116, + "column": 74 + } + }, + "object": { + "type": "Identifier", + "start": 3382, + "end": 3389, + "loc": { + "start": { + "line": 116, + "column": 58 + }, + "end": { + "line": 116, + "column": 65 + }, + "identifierName": "configs" + }, + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 3390, + "end": 3398, + "loc": { + "start": { + "line": 116, + "column": 66 + }, + "end": { + "line": 116, + "column": 74 + }, + "identifierName": "planView" + }, + "name": "planView" + }, + "computed": false + }, + "leadingComments": null + }, + "consequent": { + "type": "BlockStatement", + "start": 3400, + "end": 3517, + "loc": { + "start": { + "line": 116, + "column": 76 + }, + "end": { + "line": 122, + "column": 21 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 3427, + "end": 3448, + "loc": { + "start": { + "line": 118, + "column": 24 + }, + "end": { + "line": 118, + "column": 45 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 3427, + "end": 3447, + "loc": { + "start": { + "line": 118, + "column": 24 + }, + "end": { + "line": 118, + "column": 44 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 3427, + "end": 3440, + "loc": { + "start": { + "line": 118, + "column": 24 + }, + "end": { + "line": 118, + "column": 37 + }, + "identifierName": "mouseDownLeft" + }, + "name": "mouseDownLeft" + }, + "right": { + "type": "BooleanLiteral", + "start": 3443, + "end": 3447, + "loc": { + "start": { + "line": 118, + "column": 40 + }, + "end": { + "line": 118, + "column": 44 + } + }, + "value": true + } + } + }, + { + "type": "ExpressionStatement", + "start": 3474, + "end": 3494, + "loc": { + "start": { + "line": 120, + "column": 24 + }, + "end": { + "line": 120, + "column": 44 + } + }, + "expression": { + "type": "CallExpression", + "start": 3474, + "end": 3493, + "loc": { + "start": { + "line": 120, + "column": 24 + }, + "end": { + "line": 120, + "column": 43 + } + }, + "callee": { + "type": "Identifier", + "start": 3474, + "end": 3491, + "loc": { + "start": { + "line": 120, + "column": 24 + }, + "end": { + "line": 120, + "column": 41 + }, + "identifierName": "setMousedownState" + }, + "name": "setMousedownState" + }, + "arguments": [] + } + } + ], + "directives": [] + }, + "alternate": { + "type": "BlockStatement", + "start": 3523, + "end": 3644, + "loc": { + "start": { + "line": 122, + "column": 27 + }, + "end": { + "line": 127, + "column": 21 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 3550, + "end": 3571, + "loc": { + "start": { + "line": 124, + "column": 24 + }, + "end": { + "line": 124, + "column": 45 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 3550, + "end": 3570, + "loc": { + "start": { + "line": 124, + "column": 24 + }, + "end": { + "line": 124, + "column": 44 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 3550, + "end": 3563, + "loc": { + "start": { + "line": 124, + "column": 24 + }, + "end": { + "line": 124, + "column": 37 + }, + "identifierName": "mouseDownLeft" + }, + "name": "mouseDownLeft" + }, + "right": { + "type": "BooleanLiteral", + "start": 3566, + "end": 3570, + "loc": { + "start": { + "line": 124, + "column": 40 + }, + "end": { + "line": 124, + "column": 44 + } + }, + "value": true + } + } + }, + { + "type": "ExpressionStatement", + "start": 3597, + "end": 3622, + "loc": { + "start": { + "line": 126, + "column": 24 + }, + "end": { + "line": 126, + "column": 49 + } + }, + "expression": { + "type": "CallExpression", + "start": 3597, + "end": 3621, + "loc": { + "start": { + "line": 126, + "column": 24 + }, + "end": { + "line": 126, + "column": 48 + } + }, + "callee": { + "type": "Identifier", + "start": 3597, + "end": 3614, + "loc": { + "start": { + "line": 126, + "column": 24 + }, + "end": { + "line": 126, + "column": 41 + }, + "identifierName": "setMousedownState" + }, + "name": "setMousedownState" + }, + "arguments": [ + { + "type": "BooleanLiteral", + "start": 3615, + "end": 3620, + "loc": { + "start": { + "line": 126, + "column": 42 + }, + "end": { + "line": 126, + "column": 47 + } + }, + "value": false + } + ] + } + } + ], + "directives": [] + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Left button", + "start": 3308, + "end": 3322, + "loc": { + "start": { + "line": 114, + "column": 24 + }, + "end": { + "line": 114, + "column": 38 + } + } + } + ] + }, + { + "type": "BreakStatement", + "start": 3666, + "end": 3672, + "loc": { + "start": { + "line": 129, + "column": 20 + }, + "end": { + "line": 129, + "column": 26 + } + }, + "label": null + } + ], + "test": { + "type": "NumericLiteral", + "start": 3305, + "end": 3306, + "loc": { + "start": { + "line": 114, + "column": 21 + }, + "end": { + "line": 114, + "column": 22 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } }, - "identifierName": "states" - }, - "name": "states" - }, - "property": { - "type": "Identifier", - "start": 2520, - "end": 2536, - "loc": { - "start": { - "line": 91, - "column": 31 + { + "type": "SwitchCase", + "start": 3690, + "end": 3835, + "loc": { + "start": { + "line": 131, + "column": 16 + }, + "end": { + "line": 137, + "column": 26 + } + }, + "consequent": [ + { + "type": "ExpressionStatement", + "start": 3742, + "end": 3765, + "loc": { + "start": { + "line": 133, + "column": 20 + }, + "end": { + "line": 133, + "column": 43 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 3742, + "end": 3764, + "loc": { + "start": { + "line": 133, + "column": 20 + }, + "end": { + "line": 133, + "column": 42 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 3742, + "end": 3757, + "loc": { + "start": { + "line": 133, + "column": 20 + }, + "end": { + "line": 133, + "column": 35 + }, + "identifierName": "mouseDownMiddle" + }, + "name": "mouseDownMiddle", + "leadingComments": null + }, + "right": { + "type": "BooleanLiteral", + "start": 3760, + "end": 3764, + "loc": { + "start": { + "line": 133, + "column": 38 + }, + "end": { + "line": 133, + "column": 42 + } + }, + "value": true + }, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Middle/both buttons", + "start": 3698, + "end": 3720, + "loc": { + "start": { + "line": 131, + "column": 24 + }, + "end": { + "line": 131, + "column": 46 + } + } + } + ] + }, + { + "type": "ExpressionStatement", + "start": 3787, + "end": 3807, + "loc": { + "start": { + "line": 135, + "column": 20 + }, + "end": { + "line": 135, + "column": 40 + } + }, + "expression": { + "type": "CallExpression", + "start": 3787, + "end": 3806, + "loc": { + "start": { + "line": 135, + "column": 20 + }, + "end": { + "line": 135, + "column": 39 + } + }, + "callee": { + "type": "Identifier", + "start": 3787, + "end": 3804, + "loc": { + "start": { + "line": 135, + "column": 20 + }, + "end": { + "line": 135, + "column": 37 + }, + "identifierName": "setMousedownState" + }, + "name": "setMousedownState" + }, + "arguments": [] + } + }, + { + "type": "BreakStatement", + "start": 3829, + "end": 3835, + "loc": { + "start": { + "line": 137, + "column": 20 + }, + "end": { + "line": 137, + "column": 26 + } + }, + "label": null + } + ], + "test": { + "type": "NumericLiteral", + "start": 3695, + "end": 3696, + "loc": { + "start": { + "line": 131, + "column": 21 + }, + "end": { + "line": 131, + "column": 22 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + } }, - "end": { - "line": 91, - "column": 47 + { + "type": "SwitchCase", + "start": 3853, + "end": 4066, + "loc": { + "start": { + "line": 139, + "column": 16 + }, + "end": { + "line": 148, + "column": 26 + } + }, + "consequent": [ + { + "type": "ExpressionStatement", + "start": 3898, + "end": 3920, + "loc": { + "start": { + "line": 141, + "column": 20 + }, + "end": { + "line": 141, + "column": 42 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 3898, + "end": 3919, + "loc": { + "start": { + "line": 141, + "column": 20 + }, + "end": { + "line": 141, + "column": 41 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 3898, + "end": 3912, + "loc": { + "start": { + "line": 141, + "column": 20 + }, + "end": { + "line": 141, + "column": 34 + }, + "identifierName": "mouseDownRight" + }, + "name": "mouseDownRight", + "leadingComments": null + }, + "right": { + "type": "BooleanLiteral", + "start": 3915, + "end": 3919, + "loc": { + "start": { + "line": 141, + "column": 37 + }, + "end": { + "line": 141, + "column": 41 + } + }, + "value": true + }, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Right button", + "start": 3861, + "end": 3876, + "loc": { + "start": { + "line": 139, + "column": 24 + }, + "end": { + "line": 139, + "column": 39 + } + } + } + ] + }, + { + "type": "IfStatement", + "start": 3942, + "end": 4038, + "loc": { + "start": { + "line": 143, + "column": 20 + }, + "end": { + "line": 146, + "column": 21 + } + }, + "test": { + "type": "MemberExpression", + "start": 3946, + "end": 3967, + "loc": { + "start": { + "line": 143, + "column": 24 + }, + "end": { + "line": 143, + "column": 45 + } + }, + "object": { + "type": "Identifier", + "start": 3946, + "end": 3953, + "loc": { + "start": { + "line": 143, + "column": 24 + }, + "end": { + "line": 143, + "column": 31 + }, + "identifierName": "configs" + }, + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 3954, + "end": 3967, + "loc": { + "start": { + "line": 143, + "column": 32 + }, + "end": { + "line": 143, + "column": 45 + }, + "identifierName": "panRightClick" + }, + "name": "panRightClick" + }, + "computed": false + }, + "consequent": { + "type": "BlockStatement", + "start": 3969, + "end": 4038, + "loc": { + "start": { + "line": 143, + "column": 47 + }, + "end": { + "line": 146, + "column": 21 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 3996, + "end": 4016, + "loc": { + "start": { + "line": 145, + "column": 24 + }, + "end": { + "line": 145, + "column": 44 + } + }, + "expression": { + "type": "CallExpression", + "start": 3996, + "end": 4015, + "loc": { + "start": { + "line": 145, + "column": 24 + }, + "end": { + "line": 145, + "column": 43 + } + }, + "callee": { + "type": "Identifier", + "start": 3996, + "end": 4013, + "loc": { + "start": { + "line": 145, + "column": 24 + }, + "end": { + "line": 145, + "column": 41 + }, + "identifierName": "setMousedownState" + }, + "name": "setMousedownState" + }, + "arguments": [] + } + } + ], + "directives": [] + }, + "alternate": null + }, + { + "type": "BreakStatement", + "start": 4060, + "end": 4066, + "loc": { + "start": { + "line": 148, + "column": 20 + }, + "end": { + "line": 148, + "column": 26 + } + }, + "label": null + } + ], + "test": { + "type": "NumericLiteral", + "start": 3858, + "end": 3859, + "loc": { + "start": { + "line": 139, + "column": 21 + }, + "end": { + "line": 139, + "column": 22 + } + }, + "extra": { + "rawValue": 3, + "raw": "3" + }, + "value": 3 + } }, - "identifierName": "pointerCanvasPos" - }, - "name": "pointerCanvasPos" - }, - "computed": false - }, - "property": { - "type": "NumericLiteral", - "start": 2537, - "end": 2538, - "loc": { - "start": { - "line": 91, - "column": 48 - }, - "end": { - "line": 91, - "column": 49 - } - }, - "extra": { - "rawValue": 1, - "raw": "1" - }, - "value": 1 - }, - "computed": true + { + "type": "SwitchCase", + "start": 4084, + "end": 4119, + "loc": { + "start": { + "line": 150, + "column": 16 + }, + "end": { + "line": 151, + "column": 26 + } + }, + "consequent": [ + { + "type": "BreakStatement", + "start": 4113, + "end": 4119, + "loc": { + "start": { + "line": 151, + "column": 20 + }, + "end": { + "line": 151, + "column": 26 + } + }, + "label": null + } + ], + "test": null + } + ] + } + ], + "directives": [] } } } - ], - "directives": [] + ] } }, { - "type": "FunctionDeclaration", - "start": 2560, - "end": 3088, + "type": "ExpressionStatement", + "start": 4155, + "end": 6778, "loc": { "start": { - "line": 94, + "line": 155, "column": 8 }, "end": { - "line": 105, - "column": 9 + "line": 215, + "column": 11 } }, - "id": { - "type": "Identifier", - "start": 2569, - "end": 2585, - "loc": { - "start": { - "line": 94, - "column": 17 - }, - "end": { - "line": 94, - "column": 33 - }, - "identifierName": "setMousedownPick" - }, - "name": "setMousedownPick" - }, - "generator": false, - "expression": false, - "async": false, - "params": [], - "body": { - "type": "BlockStatement", - "start": 2588, - "end": 3088, + "expression": { + "type": "CallExpression", + "start": 4155, + "end": 6777, "loc": { "start": { - "line": 94, - "column": 36 + "line": 155, + "column": 8 }, "end": { - "line": 105, - "column": 9 + "line": 215, + "column": 10 } }, - "body": [ - { - "type": "ExpressionStatement", - "start": 2602, - "end": 2657, - "loc": { - "start": { - "line": 95, - "column": 12 - }, - "end": { - "line": 95, - "column": 67 - } + "callee": { + "type": "MemberExpression", + "start": 4155, + "end": 4180, + "loc": { + "start": { + "line": 155, + "column": 8 }, - "expression": { - "type": "AssignmentExpression", - "start": 2602, - "end": 2656, - "loc": { - "start": { - "line": 95, - "column": 12 - }, - "end": { - "line": 95, - "column": 66 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 2602, - "end": 2630, - "loc": { - "start": { - "line": 95, - "column": 12 - }, - "end": { - "line": 95, - "column": 40 - } - }, - "object": { - "type": "Identifier", - "start": 2602, - "end": 2616, - "loc": { - "start": { - "line": 95, - "column": 12 - }, - "end": { - "line": 95, - "column": 26 - }, - "identifierName": "pickController" - }, - "name": "pickController" - }, - "property": { - "type": "Identifier", - "start": 2617, - "end": 2630, - "loc": { - "start": { - "line": 95, - "column": 27 - }, - "end": { - "line": 95, - "column": 40 - }, - "identifierName": "pickCursorPos" - }, - "name": "pickCursorPos" - }, - "computed": false - }, - "right": { - "type": "MemberExpression", - "start": 2633, - "end": 2656, - "loc": { - "start": { - "line": 95, - "column": 43 - }, - "end": { - "line": 95, - "column": 66 - } - }, - "object": { - "type": "Identifier", - "start": 2633, - "end": 2639, - "loc": { - "start": { - "line": 95, - "column": 43 - }, - "end": { - "line": 95, - "column": 49 - }, - "identifierName": "states" - }, - "name": "states" - }, - "property": { - "type": "Identifier", - "start": 2640, - "end": 2656, - "loc": { - "start": { - "line": 95, - "column": 50 - }, - "end": { - "line": 95, - "column": 66 - }, - "identifierName": "pointerCanvasPos" - }, - "name": "pointerCanvasPos" - }, - "computed": false - } + "end": { + "line": 155, + "column": 33 } }, - { - "type": "ExpressionStatement", - "start": 2670, - "end": 2712, + "object": { + "type": "Identifier", + "start": 4155, + "end": 4163, "loc": { "start": { - "line": 96, - "column": 12 + "line": 155, + "column": 8 }, "end": { - "line": 96, - "column": 54 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 2670, - "end": 2711, - "loc": { - "start": { - "line": 96, - "column": 12 - }, - "end": { - "line": 96, - "column": 53 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 2670, - "end": 2704, - "loc": { - "start": { - "line": 96, - "column": 12 - }, - "end": { - "line": 96, - "column": 46 - } - }, - "object": { - "type": "Identifier", - "start": 2670, - "end": 2684, - "loc": { - "start": { - "line": 96, - "column": 12 - }, - "end": { - "line": 96, - "column": 26 - }, - "identifierName": "pickController" - }, - "name": "pickController" - }, - "property": { - "type": "Identifier", - "start": 2685, - "end": 2704, - "loc": { - "start": { - "line": 96, - "column": 27 - }, - "end": { - "line": 96, - "column": 46 - }, - "identifierName": "schedulePickSurface" - }, - "name": "schedulePickSurface" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 2707, - "end": 2711, - "loc": { - "start": { - "line": 96, - "column": 49 - }, - "end": { - "line": 96, - "column": 53 - } - }, - "value": true - } - } - }, - { - "type": "ExpressionStatement", - "start": 2725, - "end": 2749, - "loc": { - "start": { - "line": 97, - "column": 12 + "line": 155, + "column": 16 }, - "end": { - "line": 97, - "column": 36 - } + "identifierName": "document" }, - "expression": { - "type": "CallExpression", - "start": 2725, - "end": 2748, - "loc": { - "start": { - "line": 97, - "column": 12 - }, - "end": { - "line": 97, - "column": 35 - } - }, - "callee": { - "type": "MemberExpression", - "start": 2725, - "end": 2746, - "loc": { - "start": { - "line": 97, - "column": 12 - }, - "end": { - "line": 97, - "column": 33 - } - }, - "object": { - "type": "Identifier", - "start": 2725, - "end": 2739, - "loc": { - "start": { - "line": 97, - "column": 12 - }, - "end": { - "line": 97, - "column": 26 - }, - "identifierName": "pickController" - }, - "name": "pickController" - }, - "property": { - "type": "Identifier", - "start": 2740, - "end": 2746, - "loc": { - "start": { - "line": 97, - "column": 27 - }, - "end": { - "line": 97, - "column": 33 - }, - "identifierName": "update" - }, - "name": "update" - }, - "computed": false - }, - "arguments": [] - } + "name": "document" }, - { - "type": "IfStatement", - "start": 2763, - "end": 3078, - "loc": { - "start": { - "line": 99, - "column": 12 - }, - "end": { - "line": 104, - "column": 13 - } - }, - "test": { - "type": "LogicalExpression", - "start": 2767, - "end": 2887, - "loc": { - "start": { - "line": 99, - "column": 16 - }, - "end": { - "line": 99, - "column": 136 - } - }, - "left": { - "type": "LogicalExpression", - "start": 2767, - "end": 2849, - "loc": { - "start": { - "line": 99, - "column": 16 - }, - "end": { - "line": 99, - "column": 98 - } - }, - "left": { - "type": "LogicalExpression", - "start": 2767, - "end": 2820, - "loc": { - "start": { - "line": 99, - "column": 16 - }, - "end": { - "line": 99, - "column": 69 - } - }, - "left": { - "type": "MemberExpression", - "start": 2767, - "end": 2788, - "loc": { - "start": { - "line": 99, - "column": 16 - }, - "end": { - "line": 99, - "column": 37 - } - }, - "object": { - "type": "Identifier", - "start": 2767, - "end": 2781, - "loc": { - "start": { - "line": 99, - "column": 16 - }, - "end": { - "line": 99, - "column": 30 - }, - "identifierName": "pickController" - }, - "name": "pickController" - }, - "property": { - "type": "Identifier", - "start": 2782, - "end": 2788, - "loc": { - "start": { - "line": 99, - "column": 31 - }, - "end": { - "line": 99, - "column": 37 - }, - "identifierName": "picked" - }, - "name": "picked" - }, - "computed": false - }, - "operator": "&&", - "right": { - "type": "MemberExpression", - "start": 2792, - "end": 2820, - "loc": { - "start": { - "line": 99, - "column": 41 - }, - "end": { - "line": 99, - "column": 69 - } - }, - "object": { - "type": "Identifier", - "start": 2792, - "end": 2806, - "loc": { - "start": { - "line": 99, - "column": 41 - }, - "end": { - "line": 99, - "column": 55 - }, - "identifierName": "pickController" - }, - "name": "pickController" - }, - "property": { - "type": "Identifier", - "start": 2807, - "end": 2820, - "loc": { - "start": { - "line": 99, - "column": 56 - }, - "end": { - "line": 99, - "column": 69 - }, - "identifierName": "pickedSurface" - }, - "name": "pickedSurface" - }, - "computed": false - } + "property": { + "type": "Identifier", + "start": 4164, + "end": 4180, + "loc": { + "start": { + "line": 155, + "column": 17 + }, + "end": { + "line": 155, + "column": 33 + }, + "identifierName": "addEventListener" + }, + "name": "addEventListener" + }, + "computed": false + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 4181, + "end": 4192, + "loc": { + "start": { + "line": 155, + "column": 34 + }, + "end": { + "line": 155, + "column": 45 + } + }, + "extra": { + "rawValue": "mousemove", + "raw": "\"mousemove\"" + }, + "value": "mousemove" + }, + { + "type": "AssignmentExpression", + "start": 4194, + "end": 6776, + "loc": { + "start": { + "line": 155, + "column": 47 + }, + "end": { + "line": 215, + "column": 9 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 4194, + "end": 4224, + "loc": { + "start": { + "line": 155, + "column": 47 }, - "operator": "&&", - "right": { - "type": "MemberExpression", - "start": 2824, - "end": 2849, - "loc": { - "start": { - "line": 99, - "column": 73 - }, - "end": { - "line": 99, - "column": 98 - } - }, - "object": { - "type": "Identifier", - "start": 2824, - "end": 2838, - "loc": { - "start": { - "line": 99, - "column": 73 - }, - "end": { - "line": 99, - "column": 87 - }, - "identifierName": "pickController" - }, - "name": "pickController" - }, - "property": { - "type": "Identifier", - "start": 2839, - "end": 2849, - "loc": { - "start": { - "line": 99, - "column": 88 - }, - "end": { - "line": 99, - "column": 98 - }, - "identifierName": "pickResult" - }, - "name": "pickResult" - }, - "computed": false + "end": { + "line": 155, + "column": 77 } }, - "operator": "&&", - "right": { - "type": "MemberExpression", - "start": 2853, - "end": 2887, + "object": { + "type": "ThisExpression", + "start": 4194, + "end": 4198, "loc": { "start": { - "line": 99, - "column": 102 + "line": 155, + "column": 47 }, "end": { - "line": 99, - "column": 136 + "line": 155, + "column": 51 } - }, - "object": { - "type": "MemberExpression", - "start": 2853, - "end": 2878, - "loc": { - "start": { - "line": 99, - "column": 102 - }, - "end": { - "line": 99, - "column": 127 - } - }, - "object": { - "type": "Identifier", - "start": 2853, - "end": 2867, - "loc": { - "start": { - "line": 99, - "column": 102 - }, - "end": { - "line": 99, - "column": 116 - }, - "identifierName": "pickController" - }, - "name": "pickController" - }, - "property": { - "type": "Identifier", - "start": 2868, - "end": 2878, - "loc": { - "start": { - "line": 99, - "column": 117 - }, - "end": { - "line": 99, - "column": 127 - }, - "identifierName": "pickResult" - }, - "name": "pickResult" + } + }, + "property": { + "type": "Identifier", + "start": 4199, + "end": 4224, + "loc": { + "start": { + "line": 155, + "column": 52 }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 2879, - "end": 2887, - "loc": { - "start": { - "line": 99, - "column": 128 - }, - "end": { - "line": 99, - "column": 136 - }, - "identifierName": "worldPos" + "end": { + "line": 155, + "column": 77 }, - "name": "worldPos" + "identifierName": "_documentMouseMoveHandler" }, - "computed": false - } + "name": "_documentMouseMoveHandler" + }, + "computed": false }, - "consequent": { - "type": "BlockStatement", - "start": 2889, - "end": 3016, + "right": { + "type": "ArrowFunctionExpression", + "start": 4227, + "end": 6776, "loc": { "start": { - "line": 99, - "column": 138 + "line": 155, + "column": 80 }, "end": { - "line": 102, - "column": 13 + "line": 215, + "column": 9 } }, - "body": [ - { - "type": "ExpressionStatement", - "start": 2907, - "end": 2930, - "loc": { - "start": { - "line": 100, - "column": 16 - }, - "end": { - "line": 100, - "column": 39 - } + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 4233, + "end": 6776, + "loc": { + "start": { + "line": 155, + "column": 86 }, - "expression": { - "type": "AssignmentExpression", - "start": 2907, - "end": 2929, + "end": { + "line": 215, + "column": 9 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 4248, + "end": 4336, "loc": { "start": { - "line": 100, - "column": 16 + "line": 157, + "column": 12 }, "end": { - "line": 100, - "column": 38 + "line": 159, + "column": 13 } }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 2907, - "end": 2922, + "test": { + "type": "UnaryExpression", + "start": 4252, + "end": 4295, "loc": { "start": { - "line": 100, + "line": 157, "column": 16 }, "end": { - "line": 100, - "column": 31 + "line": 157, + "column": 59 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "LogicalExpression", + "start": 4254, + "end": 4294, + "loc": { + "start": { + "line": 157, + "column": 18 + }, + "end": { + "line": 157, + "column": 58 + } }, - "identifierName": "mouseDownPicked" + "left": { + "type": "MemberExpression", + "start": 4254, + "end": 4268, + "loc": { + "start": { + "line": 157, + "column": 18 + }, + "end": { + "line": 157, + "column": 32 + } + }, + "object": { + "type": "Identifier", + "start": 4254, + "end": 4261, + "loc": { + "start": { + "line": 157, + "column": 18 + }, + "end": { + "line": 157, + "column": 25 + }, + "identifierName": "configs" + }, + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 4262, + "end": 4268, + "loc": { + "start": { + "line": 157, + "column": 26 + }, + "end": { + "line": 157, + "column": 32 + }, + "identifierName": "active" + }, + "name": "active" + }, + "computed": false + }, + "operator": "&&", + "right": { + "type": "MemberExpression", + "start": 4272, + "end": 4294, + "loc": { + "start": { + "line": 157, + "column": 36 + }, + "end": { + "line": 157, + "column": 58 + } + }, + "object": { + "type": "Identifier", + "start": 4272, + "end": 4279, + "loc": { + "start": { + "line": 157, + "column": 36 + }, + "end": { + "line": 157, + "column": 43 + }, + "identifierName": "configs" + }, + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 4280, + "end": 4294, + "loc": { + "start": { + "line": 157, + "column": 44 + }, + "end": { + "line": 157, + "column": 58 + }, + "identifierName": "pointerEnabled" + }, + "name": "pointerEnabled" + }, + "computed": false + }, + "extra": { + "parenthesized": true, + "parenStart": 4253 + } }, - "name": "mouseDownPicked" + "extra": { + "parenthesizedArgument": false + } }, - "right": { - "type": "BooleanLiteral", - "start": 2925, - "end": 2929, + "consequent": { + "type": "BlockStatement", + "start": 4297, + "end": 4336, "loc": { "start": { - "line": 100, - "column": 34 + "line": 157, + "column": 61 }, "end": { - "line": 100, - "column": 38 + "line": 159, + "column": 13 } }, - "value": true - } - } - }, - { - "type": "ExpressionStatement", - "start": 2947, - "end": 3002, - "loc": { - "start": { - "line": 101, - "column": 16 + "body": [ + { + "type": "ReturnStatement", + "start": 4315, + "end": 4322, + "loc": { + "start": { + "line": 158, + "column": 16 + }, + "end": { + "line": 158, + "column": 23 + } + }, + "argument": null + } + ], + "directives": [] }, - "end": { - "line": 101, - "column": 71 - } + "alternate": null }, - "expression": { - "type": "CallExpression", - "start": 2947, - "end": 3001, + { + "type": "IfStatement", + "start": 4350, + "end": 4448, "loc": { "start": { - "line": 101, - "column": 16 + "line": 161, + "column": 12 }, "end": { - "line": 101, - "column": 70 + "line": 163, + "column": 13 } }, - "callee": { - "type": "MemberExpression", - "start": 2947, - "end": 2965, + "test": { + "type": "LogicalExpression", + "start": 4354, + "end": 4407, "loc": { "start": { - "line": 101, + "line": 161, "column": 16 }, "end": { - "line": 101, - "column": 34 + "line": 161, + "column": 69 } }, - "object": { - "type": "Identifier", - "start": 2947, - "end": 2961, + "left": { + "type": "LogicalExpression", + "start": 4354, + "end": 4388, "loc": { "start": { - "line": 101, + "line": 161, "column": 16 }, "end": { - "line": 101, - "column": 30 + "line": 161, + "column": 50 + } + }, + "left": { + "type": "UnaryExpression", + "start": 4354, + "end": 4368, + "loc": { + "start": { + "line": 161, + "column": 16 + }, + "end": { + "line": 161, + "column": 30 + } }, - "identifierName": "pickedWorldPos" + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 4355, + "end": 4368, + "loc": { + "start": { + "line": 161, + "column": 17 + }, + "end": { + "line": 161, + "column": 30 + }, + "identifierName": "mouseDownLeft" + }, + "name": "mouseDownLeft" + }, + "extra": { + "parenthesizedArgument": false + } }, - "name": "pickedWorldPos" + "operator": "&&", + "right": { + "type": "UnaryExpression", + "start": 4372, + "end": 4388, + "loc": { + "start": { + "line": 161, + "column": 34 + }, + "end": { + "line": 161, + "column": 50 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 4373, + "end": 4388, + "loc": { + "start": { + "line": 161, + "column": 35 + }, + "end": { + "line": 161, + "column": 50 + }, + "identifierName": "mouseDownMiddle" + }, + "name": "mouseDownMiddle" + }, + "extra": { + "parenthesizedArgument": false + } + } }, - "property": { - "type": "Identifier", - "start": 2962, - "end": 2965, + "operator": "&&", + "right": { + "type": "UnaryExpression", + "start": 4392, + "end": 4407, + "loc": { + "start": { + "line": 161, + "column": 54 + }, + "end": { + "line": 161, + "column": 69 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 4393, + "end": 4407, + "loc": { + "start": { + "line": 161, + "column": 55 + }, + "end": { + "line": 161, + "column": 69 + }, + "identifierName": "mouseDownRight" + }, + "name": "mouseDownRight" + }, + "extra": { + "parenthesizedArgument": false + } + } + }, + "consequent": { + "type": "BlockStatement", + "start": 4409, + "end": 4448, + "loc": { + "start": { + "line": 161, + "column": 71 + }, + "end": { + "line": 163, + "column": 13 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 4427, + "end": 4434, + "loc": { + "start": { + "line": 162, + "column": 16 + }, + "end": { + "line": 162, + "column": 23 + } + }, + "argument": null + } + ], + "directives": [], + "trailingComments": null + }, + "alternate": null, + "trailingComments": [ + { + "type": "CommentLine", + "value": " Scaling drag-rotate to canvas boundary", + "start": 4462, + "end": 4503, "loc": { "start": { - "line": 101, - "column": 31 + "line": 165, + "column": 12 }, "end": { - "line": 101, - "column": 34 - }, - "identifierName": "set" - }, - "name": "set" + "line": 165, + "column": 53 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 4517, + "end": 4562, + "loc": { + "start": { + "line": 167, + "column": 12 }, - "computed": false + "end": { + "line": 167, + "column": 57 + } }, - "arguments": [ + "declarations": [ { - "type": "MemberExpression", - "start": 2966, - "end": 3000, + "type": "VariableDeclarator", + "start": 4523, + "end": 4561, "loc": { "start": { - "line": 101, - "column": 35 + "line": 167, + "column": 18 }, "end": { - "line": 101, - "column": 69 + "line": 167, + "column": 56 } }, - "object": { + "id": { + "type": "Identifier", + "start": 4523, + "end": 4537, + "loc": { + "start": { + "line": 167, + "column": 18 + }, + "end": { + "line": 167, + "column": 32 + }, + "identifierName": "canvasBoundary" + }, + "name": "canvasBoundary", + "leadingComments": null + }, + "init": { "type": "MemberExpression", - "start": 2966, - "end": 2991, + "start": 4540, + "end": 4561, "loc": { "start": { - "line": 101, + "line": 167, "column": 35 }, "end": { - "line": 101, - "column": 60 + "line": 167, + "column": 56 } }, "object": { - "type": "Identifier", - "start": 2966, - "end": 2980, + "type": "MemberExpression", + "start": 4540, + "end": 4552, "loc": { "start": { - "line": 101, + "line": 167, "column": 35 }, "end": { - "line": 101, - "column": 49 + "line": 167, + "column": 47 + } + }, + "object": { + "type": "Identifier", + "start": 4540, + "end": 4545, + "loc": { + "start": { + "line": 167, + "column": 35 + }, + "end": { + "line": 167, + "column": 40 + }, + "identifierName": "scene" }, - "identifierName": "pickController" + "name": "scene" }, - "name": "pickController" + "property": { + "type": "Identifier", + "start": 4546, + "end": 4552, + "loc": { + "start": { + "line": 167, + "column": 41 + }, + "end": { + "line": 167, + "column": 47 + }, + "identifierName": "canvas" + }, + "name": "canvas" + }, + "computed": false }, "property": { "type": "Identifier", - "start": 2981, - "end": 2991, + "start": 4553, + "end": 4561, "loc": { "start": { - "line": 101, - "column": 50 + "line": 167, + "column": 48 }, "end": { - "line": 101, - "column": 60 + "line": 167, + "column": 56 }, - "identifierName": "pickResult" + "identifierName": "boundary" }, - "name": "pickResult" + "name": "boundary" }, "computed": false }, - "property": { + "leadingComments": null + } + ], + "kind": "const", + "leadingComments": [ + { + "type": "CommentLine", + "value": " Scaling drag-rotate to canvas boundary", + "start": 4462, + "end": 4503, + "loc": { + "start": { + "line": 165, + "column": 12 + }, + "end": { + "line": 165, + "column": 53 + } + } + } + ] + }, + { + "type": "VariableDeclaration", + "start": 4575, + "end": 4633, + "loc": { + "start": { + "line": 168, + "column": 12 + }, + "end": { + "line": 168, + "column": 70 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4581, + "end": 4632, + "loc": { + "start": { + "line": 168, + "column": 18 + }, + "end": { + "line": 168, + "column": 69 + } + }, + "id": { "type": "Identifier", - "start": 2992, - "end": 3000, + "start": 4581, + "end": 4592, "loc": { "start": { - "line": 101, - "column": 61 + "line": 168, + "column": 18 }, "end": { - "line": 101, - "column": 69 + "line": 168, + "column": 29 }, - "identifierName": "worldPos" + "identifierName": "canvasWidth" }, - "name": "worldPos" + "name": "canvasWidth" }, - "computed": false + "init": { + "type": "BinaryExpression", + "start": 4595, + "end": 4632, + "loc": { + "start": { + "line": 168, + "column": 32 + }, + "end": { + "line": 168, + "column": 69 + } + }, + "left": { + "type": "MemberExpression", + "start": 4595, + "end": 4612, + "loc": { + "start": { + "line": 168, + "column": 32 + }, + "end": { + "line": 168, + "column": 49 + } + }, + "object": { + "type": "Identifier", + "start": 4595, + "end": 4609, + "loc": { + "start": { + "line": 168, + "column": 32 + }, + "end": { + "line": 168, + "column": 46 + }, + "identifierName": "canvasBoundary" + }, + "name": "canvasBoundary" + }, + "property": { + "type": "NumericLiteral", + "start": 4610, + "end": 4611, + "loc": { + "start": { + "line": 168, + "column": 47 + }, + "end": { + "line": 168, + "column": 48 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + }, + "computed": true + }, + "operator": "-", + "right": { + "type": "MemberExpression", + "start": 4615, + "end": 4632, + "loc": { + "start": { + "line": 168, + "column": 52 + }, + "end": { + "line": 168, + "column": 69 + } + }, + "object": { + "type": "Identifier", + "start": 4615, + "end": 4629, + "loc": { + "start": { + "line": 168, + "column": 52 + }, + "end": { + "line": 168, + "column": 66 + }, + "identifierName": "canvasBoundary" + }, + "name": "canvasBoundary" + }, + "property": { + "type": "NumericLiteral", + "start": 4630, + "end": 4631, + "loc": { + "start": { + "line": 168, + "column": 67 + }, + "end": { + "line": 168, + "column": 68 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + }, + "computed": true + } + } } - ] - } - } - ], - "directives": [] - }, - "alternate": { - "type": "BlockStatement", - "start": 3022, - "end": 3078, - "loc": { - "start": { - "line": 102, - "column": 19 - }, - "end": { - "line": 104, - "column": 13 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 3040, - "end": 3064, - "loc": { - "start": { - "line": 103, - "column": 16 - }, - "end": { - "line": 103, - "column": 40 - } + ], + "kind": "const" }, - "expression": { - "type": "AssignmentExpression", - "start": 3040, - "end": 3063, + { + "type": "VariableDeclaration", + "start": 4646, + "end": 4705, "loc": { "start": { - "line": 103, - "column": 16 + "line": 169, + "column": 12 }, "end": { - "line": 103, - "column": 39 + "line": 169, + "column": 71 } }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 3040, - "end": 3055, - "loc": { - "start": { - "line": 103, - "column": 16 - }, - "end": { - "line": 103, - "column": 31 + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4652, + "end": 4704, + "loc": { + "start": { + "line": 169, + "column": 18 + }, + "end": { + "line": 169, + "column": 70 + } }, - "identifierName": "mouseDownPicked" - }, - "name": "mouseDownPicked" - }, - "right": { - "type": "BooleanLiteral", - "start": 3058, - "end": 3063, - "loc": { - "start": { - "line": 103, - "column": 34 + "id": { + "type": "Identifier", + "start": 4652, + "end": 4664, + "loc": { + "start": { + "line": 169, + "column": 18 + }, + "end": { + "line": 169, + "column": 30 + }, + "identifierName": "canvasHeight" + }, + "name": "canvasHeight" }, - "end": { - "line": 103, - "column": 39 - } - }, - "value": false - } - } - } - ], - "directives": [] - } - } - ], - "directives": [] - } - }, - { - "type": "ExpressionStatement", - "start": 3098, - "end": 6774, - "loc": { - "start": { - "line": 107, - "column": 8 - }, - "end": { - "line": 213, - "column": 11 - } - }, - "expression": { - "type": "CallExpression", - "start": 3098, - "end": 6773, - "loc": { - "start": { - "line": 107, - "column": 8 - }, - "end": { - "line": 213, - "column": 10 - } - }, - "callee": { - "type": "MemberExpression", - "start": 3098, - "end": 3121, - "loc": { - "start": { - "line": 107, - "column": 8 - }, - "end": { - "line": 107, - "column": 31 - } - }, - "object": { - "type": "Identifier", - "start": 3098, - "end": 3104, - "loc": { - "start": { - "line": 107, - "column": 8 - }, - "end": { - "line": 107, - "column": 14 - }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "property": { - "type": "Identifier", - "start": 3105, - "end": 3121, - "loc": { - "start": { - "line": 107, - "column": 15 - }, - "end": { - "line": 107, - "column": 31 - }, - "identifierName": "addEventListener" - }, - "name": "addEventListener" - }, - "computed": false - }, - "arguments": [ - { - "type": "StringLiteral", - "start": 3122, - "end": 3133, - "loc": { - "start": { - "line": 107, - "column": 32 - }, - "end": { - "line": 107, - "column": 43 - } - }, - "extra": { - "rawValue": "mousedown", - "raw": "\"mousedown\"" - }, - "value": "mousedown" - }, - { - "type": "AssignmentExpression", - "start": 3135, - "end": 6772, - "loc": { - "start": { - "line": 107, - "column": 45 - }, - "end": { - "line": 213, - "column": 9 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 3135, - "end": 3157, - "loc": { - "start": { - "line": 107, - "column": 45 - }, - "end": { - "line": 107, - "column": 67 - } - }, - "object": { - "type": "ThisExpression", - "start": 3135, - "end": 3139, - "loc": { - "start": { - "line": 107, - "column": 45 - }, - "end": { - "line": 107, - "column": 49 - } - } - }, - "property": { - "type": "Identifier", - "start": 3140, - "end": 3157, - "loc": { - "start": { - "line": 107, - "column": 50 - }, - "end": { - "line": 107, - "column": 67 - }, - "identifierName": "_mouseDownHandler" - }, - "name": "_mouseDownHandler" - }, - "computed": false - }, - "right": { - "type": "ArrowFunctionExpression", - "start": 3160, - "end": 6772, - "loc": { - "start": { - "line": 107, - "column": 70 - }, - "end": { - "line": 213, - "column": 9 - } - }, - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [ - { - "type": "Identifier", - "start": 3161, - "end": 3162, - "loc": { - "start": { - "line": 107, - "column": 71 - }, - "end": { - "line": 107, - "column": 72 - }, - "identifierName": "e" - }, - "name": "e" - } - ], - "body": { - "type": "BlockStatement", - "start": 3167, - "end": 6772, - "loc": { - "start": { - "line": 107, - "column": 77 + "init": { + "type": "BinaryExpression", + "start": 4667, + "end": 4704, + "loc": { + "start": { + "line": 169, + "column": 33 + }, + "end": { + "line": 169, + "column": 70 + } + }, + "left": { + "type": "MemberExpression", + "start": 4667, + "end": 4684, + "loc": { + "start": { + "line": 169, + "column": 33 + }, + "end": { + "line": 169, + "column": 50 + } + }, + "object": { + "type": "Identifier", + "start": 4667, + "end": 4681, + "loc": { + "start": { + "line": 169, + "column": 33 + }, + "end": { + "line": 169, + "column": 47 + }, + "identifierName": "canvasBoundary" + }, + "name": "canvasBoundary" + }, + "property": { + "type": "NumericLiteral", + "start": 4682, + "end": 4683, + "loc": { + "start": { + "line": 169, + "column": 48 + }, + "end": { + "line": 169, + "column": 49 + } + }, + "extra": { + "rawValue": 3, + "raw": "3" + }, + "value": 3 + }, + "computed": true + }, + "operator": "-", + "right": { + "type": "MemberExpression", + "start": 4687, + "end": 4704, + "loc": { + "start": { + "line": 169, + "column": 53 + }, + "end": { + "line": 169, + "column": 70 + } + }, + "object": { + "type": "Identifier", + "start": 4687, + "end": 4701, + "loc": { + "start": { + "line": 169, + "column": 53 + }, + "end": { + "line": 169, + "column": 67 + }, + "identifierName": "canvasBoundary" + }, + "name": "canvasBoundary" + }, + "property": { + "type": "NumericLiteral", + "start": 4702, + "end": 4703, + "loc": { + "start": { + "line": 169, + "column": 68 + }, + "end": { + "line": 169, + "column": 69 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + }, + "computed": true + } + } + } + ], + "kind": "const" }, - "end": { - "line": 213, - "column": 9 - } - }, - "body": [ { - "type": "IfStatement", - "start": 3182, - "end": 3270, + "type": "VariableDeclaration", + "start": 4718, + "end": 4755, "loc": { "start": { - "line": 109, + "line": 170, "column": 12 }, "end": { - "line": 111, - "column": 13 + "line": 170, + "column": 49 } }, - "test": { - "type": "UnaryExpression", - "start": 3186, - "end": 3229, - "loc": { - "start": { - "line": 109, - "column": 16 - }, - "end": { - "line": 109, - "column": 59 - } - }, - "operator": "!", - "prefix": true, - "argument": { - "type": "LogicalExpression", - "start": 3188, - "end": 3228, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4724, + "end": 4754, "loc": { "start": { - "line": 109, + "line": 170, "column": 18 }, "end": { - "line": 109, - "column": 58 + "line": 170, + "column": 48 } }, - "left": { - "type": "MemberExpression", - "start": 3188, - "end": 3202, + "id": { + "type": "Identifier", + "start": 4724, + "end": 4725, "loc": { "start": { - "line": 109, + "line": 170, "column": 18 }, "end": { - "line": 109, - "column": 32 - } - }, - "object": { - "type": "Identifier", - "start": 3188, - "end": 3195, - "loc": { - "start": { - "line": 109, - "column": 18 - }, - "end": { - "line": 109, - "column": 25 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 3196, - "end": 3202, - "loc": { - "start": { - "line": 109, - "column": 26 - }, - "end": { - "line": 109, - "column": 32 - }, - "identifierName": "active" + "line": 170, + "column": 19 }, - "name": "active" + "identifierName": "x" }, - "computed": false + "name": "x" }, - "operator": "&&", - "right": { + "init": { "type": "MemberExpression", - "start": 3206, - "end": 3228, + "start": 4728, + "end": 4754, "loc": { "start": { - "line": 109, - "column": 36 + "line": 170, + "column": 22 }, "end": { - "line": 109, - "column": 58 + "line": 170, + "column": 48 } }, "object": { - "type": "Identifier", - "start": 3206, - "end": 3213, + "type": "MemberExpression", + "start": 4728, + "end": 4751, "loc": { "start": { - "line": 109, - "column": 36 + "line": 170, + "column": 22 }, "end": { - "line": 109, - "column": 43 + "line": 170, + "column": 45 + } + }, + "object": { + "type": "Identifier", + "start": 4728, + "end": 4734, + "loc": { + "start": { + "line": 170, + "column": 22 + }, + "end": { + "line": 170, + "column": 28 + }, + "identifierName": "states" }, - "identifierName": "configs" + "name": "states" }, - "name": "configs" + "property": { + "type": "Identifier", + "start": 4735, + "end": 4751, + "loc": { + "start": { + "line": 170, + "column": 29 + }, + "end": { + "line": 170, + "column": 45 + }, + "identifierName": "pointerCanvasPos" + }, + "name": "pointerCanvasPos" + }, + "computed": false }, "property": { - "type": "Identifier", - "start": 3214, - "end": 3228, + "type": "NumericLiteral", + "start": 4752, + "end": 4753, "loc": { "start": { - "line": 109, - "column": 44 + "line": 170, + "column": 46 }, "end": { - "line": 109, - "column": 58 - }, - "identifierName": "pointerEnabled" + "line": 170, + "column": 47 + } }, - "name": "pointerEnabled" - }, - "computed": false - }, - "extra": { - "parenthesized": true, - "parenStart": 3187 - } - }, - "extra": { - "parenthesizedArgument": false - } - }, - "consequent": { - "type": "BlockStatement", - "start": 3231, - "end": 3270, - "loc": { - "start": { - "line": 109, - "column": 61 - }, - "end": { - "line": 111, - "column": 13 - } - }, - "body": [ - { - "type": "ReturnStatement", - "start": 3249, - "end": 3256, - "loc": { - "start": { - "line": 110, - "column": 16 + "extra": { + "rawValue": 0, + "raw": "0" }, - "end": { - "line": 110, - "column": 23 - } + "value": 0 }, - "argument": null + "computed": true } - ], - "directives": [] - }, - "alternate": null + } + ], + "kind": "const" }, { - "type": "ExpressionStatement", - "start": 3284, - "end": 3302, + "type": "VariableDeclaration", + "start": 4768, + "end": 4805, "loc": { "start": { - "line": 113, + "line": 171, "column": 12 }, "end": { - "line": 113, - "column": 30 + "line": 171, + "column": 49 } }, - "expression": { - "type": "AssignmentExpression", - "start": 3284, - "end": 3301, - "loc": { - "start": { - "line": 113, - "column": 12 - }, - "end": { - "line": 113, - "column": 29 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 3284, - "end": 3294, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4774, + "end": 4804, "loc": { "start": { - "line": 113, - "column": 12 + "line": 171, + "column": 18 }, "end": { - "line": 113, - "column": 22 + "line": 171, + "column": 48 } }, - "object": { - "type": "ThisExpression", - "start": 3284, - "end": 3288, + "id": { + "type": "Identifier", + "start": 4774, + "end": 4775, "loc": { "start": { - "line": 113, - "column": 12 + "line": 171, + "column": 18 }, "end": { - "line": 113, - "column": 16 - } - } + "line": 171, + "column": 19 + }, + "identifierName": "y" + }, + "name": "y" }, - "property": { - "type": "Identifier", - "start": 3289, - "end": 3294, + "init": { + "type": "MemberExpression", + "start": 4778, + "end": 4804, "loc": { "start": { - "line": 113, - "column": 17 + "line": 171, + "column": 22 }, "end": { - "line": 113, - "column": 22 + "line": 171, + "column": 48 + } + }, + "object": { + "type": "MemberExpression", + "start": 4778, + "end": 4801, + "loc": { + "start": { + "line": 171, + "column": 22 + }, + "end": { + "line": 171, + "column": 45 + } + }, + "object": { + "type": "Identifier", + "start": 4778, + "end": 4784, + "loc": { + "start": { + "line": 171, + "column": 22 + }, + "end": { + "line": 171, + "column": 28 + }, + "identifierName": "states" + }, + "name": "states" + }, + "property": { + "type": "Identifier", + "start": 4785, + "end": 4801, + "loc": { + "start": { + "line": 171, + "column": 29 + }, + "end": { + "line": 171, + "column": 45 + }, + "identifierName": "pointerCanvasPos" + }, + "name": "pointerCanvasPos" }, - "identifierName": "_down" + "computed": false }, - "name": "_down" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 3297, - "end": 3301, - "loc": { - "start": { - "line": 113, - "column": 25 + "property": { + "type": "NumericLiteral", + "start": 4802, + "end": 4803, + "loc": { + "start": { + "line": 171, + "column": 46 + }, + "end": { + "line": 171, + "column": 47 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 }, - "end": { - "line": 113, - "column": 29 - } - }, - "value": true + "computed": true + } } - } + ], + "kind": "const" }, { - "type": "SwitchStatement", - "start": 3316, - "end": 4217, + "type": "VariableDeclaration", + "start": 4819, + "end": 4978, "loc": { "start": { - "line": 115, + "line": 173, "column": 12 }, "end": { - "line": 159, - "column": 13 + "line": 173, + "column": 171 } }, - "discriminant": { - "type": "MemberExpression", - "start": 3324, - "end": 3331, - "loc": { - "start": { - "line": 115, - "column": 20 - }, - "end": { - "line": 115, - "column": 27 - } - }, - "object": { - "type": "Identifier", - "start": 3324, - "end": 3325, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4825, + "end": 4977, "loc": { "start": { - "line": 115, - "column": 20 + "line": 173, + "column": 18 }, "end": { - "line": 115, - "column": 21 - }, - "identifierName": "e" + "line": 173, + "column": 170 + } }, - "name": "e" - }, - "property": { - "type": "Identifier", - "start": 3326, - "end": 3331, - "loc": { - "start": { - "line": 115, - "column": 22 - }, - "end": { - "line": 115, - "column": 27 + "id": { + "type": "Identifier", + "start": 4825, + "end": 4832, + "loc": { + "start": { + "line": 173, + "column": 18 + }, + "end": { + "line": 173, + "column": 25 + }, + "identifierName": "panning" }, - "identifierName": "which" + "name": "panning" }, - "name": "which" - }, - "computed": false - }, - "cases": [ - { - "type": "SwitchCase", - "start": 3352, - "end": 3678, - "loc": { - "start": { - "line": 117, - "column": 16 + "init": { + "type": "LogicalExpression", + "start": 4835, + "end": 4977, + "loc": { + "start": { + "line": 173, + "column": 28 + }, + "end": { + "line": 173, + "column": 170 + } }, - "end": { - "line": 131, - "column": 26 - } - }, - "consequent": [ - { - "type": "IfStatement", - "start": 3396, - "end": 3650, + "left": { + "type": "LogicalExpression", + "start": 4835, + "end": 4932, "loc": { "start": { - "line": 119, - "column": 20 + "line": 173, + "column": 28 }, "end": { - "line": 129, - "column": 21 + "line": 173, + "column": 125 } }, - "test": { + "left": { "type": "LogicalExpression", - "start": 3400, - "end": 3450, + "start": 4835, + "end": 4885, "loc": { "start": { - "line": 119, - "column": 24 + "line": 173, + "column": 28 }, "end": { - "line": 119, - "column": 74 + "line": 173, + "column": 78 } }, "left": { "type": "MemberExpression", - "start": 3400, - "end": 3430, + "start": 4835, + "end": 4865, "loc": { "start": { - "line": 119, - "column": 24 + "line": 173, + "column": 28 }, "end": { - "line": 119, - "column": 54 + "line": 173, + "column": 58 } }, "object": { "type": "Identifier", - "start": 3400, - "end": 3407, + "start": 4835, + "end": 4842, "loc": { "start": { - "line": 119, - "column": 24 + "line": 173, + "column": 28 }, "end": { - "line": 119, - "column": 31 + "line": 173, + "column": 35 }, "identifierName": "keyDown" }, - "name": "keyDown", - "leadingComments": null + "name": "keyDown" }, "property": { "type": "MemberExpression", - "start": 3408, - "end": 3429, + "start": 4843, + "end": 4864, "loc": { "start": { - "line": 119, - "column": 32 + "line": 173, + "column": 36 }, "end": { - "line": 119, - "column": 53 + "line": 173, + "column": 57 } }, "object": { "type": "MemberExpression", - "start": 3408, - "end": 3419, + "start": 4843, + "end": 4854, "loc": { "start": { - "line": 119, - "column": 32 + "line": 173, + "column": 36 }, "end": { - "line": 119, - "column": 43 + "line": 173, + "column": 47 } }, "object": { "type": "Identifier", - "start": 3408, - "end": 3413, + "start": 4843, + "end": 4848, "loc": { "start": { - "line": 119, - "column": 32 + "line": 173, + "column": 36 }, "end": { - "line": 119, - "column": 37 + "line": 173, + "column": 41 }, "identifierName": "scene" }, @@ -28335,16 +30658,16 @@ }, "property": { "type": "Identifier", - "start": 3414, - "end": 3419, + "start": 4849, + "end": 4854, "loc": { "start": { - "line": 119, - "column": 38 + "line": 173, + "column": 42 }, "end": { - "line": 119, - "column": 43 + "line": 173, + "column": 47 }, "identifierName": "input" }, @@ -28354,16 +30677,16 @@ }, "property": { "type": "Identifier", - "start": 3420, - "end": 3429, + "start": 4855, + "end": 4864, "loc": { "start": { - "line": 119, - "column": 44 + "line": 173, + "column": 48 }, "end": { - "line": 119, - "column": 53 + "line": 173, + "column": 57 }, "identifierName": "KEY_SHIFT" }, @@ -28371,36 +30694,35 @@ }, "computed": false }, - "computed": true, - "leadingComments": null + "computed": true }, "operator": "||", "right": { "type": "MemberExpression", - "start": 3434, - "end": 3450, + "start": 4869, + "end": 4885, "loc": { "start": { - "line": 119, - "column": 58 + "line": 173, + "column": 62 }, "end": { - "line": 119, - "column": 74 + "line": 173, + "column": 78 } }, "object": { "type": "Identifier", - "start": 3434, - "end": 3441, + "start": 4869, + "end": 4876, "loc": { "start": { - "line": 119, - "column": 58 + "line": 173, + "column": 62 }, "end": { - "line": 119, - "column": 65 + "line": 173, + "column": 69 }, "identifierName": "configs" }, @@ -28408,6244 +30730,4183 @@ }, "property": { "type": "Identifier", - "start": 3442, - "end": 3450, + "start": 4877, + "end": 4885, "loc": { "start": { - "line": 119, - "column": 66 + "line": 173, + "column": 70 }, "end": { - "line": 119, - "column": 74 + "line": 173, + "column": 78 }, "identifierName": "planView" }, "name": "planView" }, "computed": false - }, - "leadingComments": null - }, - "consequent": { - "type": "BlockStatement", - "start": 3452, - "end": 3522, - "loc": { - "start": { - "line": 119, - "column": 76 - }, - "end": { - "line": 123, - "column": 21 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 3479, - "end": 3499, - "loc": { - "start": { - "line": 121, - "column": 24 - }, - "end": { - "line": 121, - "column": 44 - } - }, - "expression": { - "type": "CallExpression", - "start": 3479, - "end": 3498, - "loc": { - "start": { - "line": 121, - "column": 24 - }, - "end": { - "line": 121, - "column": 43 - } - }, - "callee": { - "type": "Identifier", - "start": 3479, - "end": 3496, - "loc": { - "start": { - "line": 121, - "column": 24 - }, - "end": { - "line": 121, - "column": 41 - }, - "identifierName": "setMousedownState" - }, - "name": "setMousedownState" - }, - "arguments": [] - } - } - ], - "directives": [] + } }, - "alternate": { - "type": "BlockStatement", - "start": 3528, - "end": 3650, + "operator": "||", + "right": { + "type": "LogicalExpression", + "start": 4890, + "end": 4931, "loc": { "start": { - "line": 123, - "column": 27 + "line": 173, + "column": 83 }, "end": { - "line": 129, - "column": 21 + "line": 173, + "column": 124 } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 3555, - "end": 3576, - "loc": { - "start": { - "line": 125, - "column": 24 - }, - "end": { - "line": 125, - "column": 45 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 3555, - "end": 3575, - "loc": { - "start": { - "line": 125, - "column": 24 - }, - "end": { - "line": 125, - "column": 44 - } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 3555, - "end": 3568, - "loc": { - "start": { - "line": 125, - "column": 24 - }, - "end": { - "line": 125, - "column": 37 - }, - "identifierName": "mouseDownLeft" - }, - "name": "mouseDownLeft" - }, - "right": { - "type": "BooleanLiteral", - "start": 3571, - "end": 3575, - "loc": { - "start": { - "line": 125, - "column": 40 - }, - "end": { - "line": 125, - "column": 44 - } - }, - "value": true - } + }, + "left": { + "type": "UnaryExpression", + "start": 4890, + "end": 4912, + "loc": { + "start": { + "line": 173, + "column": 83 + }, + "end": { + "line": 173, + "column": 105 } }, - { - "type": "ExpressionStatement", - "start": 3602, - "end": 3627, + "operator": "!", + "prefix": true, + "argument": { + "type": "MemberExpression", + "start": 4891, + "end": 4912, "loc": { "start": { - "line": 127, - "column": 24 + "line": 173, + "column": 84 }, "end": { - "line": 127, - "column": 49 + "line": 173, + "column": 105 } }, - "expression": { - "type": "CallExpression", - "start": 3602, - "end": 3626, + "object": { + "type": "Identifier", + "start": 4891, + "end": 4898, "loc": { "start": { - "line": 127, - "column": 24 + "line": 173, + "column": 84 }, "end": { - "line": 127, - "column": 48 - } + "line": 173, + "column": 91 + }, + "identifierName": "configs" }, - "callee": { - "type": "Identifier", - "start": 3602, - "end": 3619, - "loc": { - "start": { - "line": 127, - "column": 24 - }, - "end": { - "line": 127, - "column": 41 - }, - "identifierName": "setMousedownState" + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 4899, + "end": 4912, + "loc": { + "start": { + "line": 173, + "column": 92 }, - "name": "setMousedownState" + "end": { + "line": 173, + "column": 105 + }, + "identifierName": "panRightClick" }, - "arguments": [ - { - "type": "BooleanLiteral", - "start": 3620, - "end": 3625, - "loc": { - "start": { - "line": 127, - "column": 42 - }, - "end": { - "line": 127, - "column": 47 - } - }, - "value": false - } - ] - } + "name": "panRightClick" + }, + "computed": false + }, + "extra": { + "parenthesizedArgument": false } - ], - "directives": [] - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " Left button", - "start": 3360, - "end": 3374, + }, + "operator": "&&", + "right": { + "type": "Identifier", + "start": 4916, + "end": 4931, "loc": { "start": { - "line": 117, - "column": 24 + "line": 173, + "column": 109 }, "end": { - "line": 117, - "column": 38 - } - } - } - ] - }, - { - "type": "BreakStatement", - "start": 3672, - "end": 3678, - "loc": { - "start": { - "line": 131, - "column": 20 + "line": 173, + "column": 124 + }, + "identifierName": "mouseDownMiddle" + }, + "name": "mouseDownMiddle" }, - "end": { - "line": 131, - "column": 26 + "extra": { + "parenthesized": true, + "parenStart": 4889 } - }, - "label": null - } - ], - "test": { - "type": "NumericLiteral", - "start": 3357, - "end": 3358, - "loc": { - "start": { - "line": 117, - "column": 21 - }, - "end": { - "line": 117, - "column": 22 } }, - "extra": { - "rawValue": 1, - "raw": "1" - }, - "value": 1 - } - }, - { - "type": "SwitchCase", - "start": 3696, - "end": 3918, - "loc": { - "start": { - "line": 133, - "column": 16 - }, - "end": { - "line": 143, - "column": 26 - } - }, - "consequent": [ - { - "type": "ExpressionStatement", - "start": 3748, - "end": 3771, + "operator": "||", + "right": { + "type": "LogicalExpression", + "start": 4937, + "end": 4976, "loc": { "start": { - "line": 135, - "column": 20 + "line": 173, + "column": 130 }, "end": { - "line": 135, - "column": 43 + "line": 173, + "column": 169 } }, - "expression": { - "type": "AssignmentExpression", - "start": 3748, - "end": 3770, + "left": { + "type": "MemberExpression", + "start": 4937, + "end": 4958, "loc": { "start": { - "line": 135, - "column": 20 + "line": 173, + "column": 130 }, "end": { - "line": 135, - "column": 42 + "line": 173, + "column": 151 } }, - "operator": "=", - "left": { + "object": { "type": "Identifier", - "start": 3748, - "end": 3763, + "start": 4937, + "end": 4944, "loc": { "start": { - "line": 135, - "column": 20 + "line": 173, + "column": 130 }, "end": { - "line": 135, - "column": 35 + "line": 173, + "column": 137 }, - "identifierName": "mouseDownMiddle" + "identifierName": "configs" }, - "name": "mouseDownMiddle", - "leadingComments": null + "name": "configs" }, - "right": { - "type": "BooleanLiteral", - "start": 3766, - "end": 3770, + "property": { + "type": "Identifier", + "start": 4945, + "end": 4958, "loc": { "start": { - "line": 135, - "column": 38 + "line": 173, + "column": 138 }, "end": { - "line": 135, - "column": 42 - } + "line": 173, + "column": 151 + }, + "identifierName": "panRightClick" }, - "value": true + "name": "panRightClick" }, - "leadingComments": null + "computed": false }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " Middle/both buttons", - "start": 3704, - "end": 3726, - "loc": { - "start": { - "line": 133, - "column": 24 - }, - "end": { - "line": 133, - "column": 46 - } - } - } - ] - }, - { - "type": "IfStatement", - "start": 3792, - "end": 3890, - "loc": { - "start": { - "line": 137, - "column": 19 + "operator": "&&", + "right": { + "type": "Identifier", + "start": 4962, + "end": 4976, + "loc": { + "start": { + "line": 173, + "column": 155 + }, + "end": { + "line": 173, + "column": 169 + }, + "identifierName": "mouseDownRight" }, - "end": { - "line": 141, - "column": 21 - } + "name": "mouseDownRight" }, - "test": { - "type": "UnaryExpression", - "start": 3796, - "end": 3818, + "extra": { + "parenthesized": true, + "parenStart": 4936 + } + } + } + } + ], + "kind": "const" + }, + { + "type": "IfStatement", + "start": 4992, + "end": 6719, + "loc": { + "start": { + "line": 175, + "column": 12 + }, + "end": { + "line": 211, + "column": 13 + } + }, + "test": { + "type": "Identifier", + "start": 4996, + "end": 5003, + "loc": { + "start": { + "line": 175, + "column": 16 + }, + "end": { + "line": 175, + "column": 23 + }, + "identifierName": "panning" + }, + "name": "panning" + }, + "consequent": { + "type": "BlockStatement", + "start": 5005, + "end": 6003, + "loc": { + "start": { + "line": 175, + "column": 25 + }, + "end": { + "line": 198, + "column": 13 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 5024, + "end": 5054, + "loc": { + "start": { + "line": 177, + "column": 16 + }, + "end": { + "line": 177, + "column": 46 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5030, + "end": 5053, "loc": { "start": { - "line": 137, - "column": 23 + "line": 177, + "column": 22 }, "end": { - "line": 137, + "line": 177, "column": 45 } }, - "operator": "!", - "prefix": true, - "argument": { - "type": "MemberExpression", - "start": 3797, - "end": 3818, + "id": { + "type": "Identifier", + "start": 5030, + "end": 5039, "loc": { "start": { - "line": 137, - "column": 24 + "line": 177, + "column": 22 }, "end": { - "line": 137, - "column": 45 + "line": 177, + "column": 31 + }, + "identifierName": "xPanDelta" + }, + "name": "xPanDelta" + }, + "init": { + "type": "BinaryExpression", + "start": 5043, + "end": 5052, + "loc": { + "start": { + "line": 177, + "column": 35 + }, + "end": { + "line": 177, + "column": 44 } }, - "object": { + "left": { "type": "Identifier", - "start": 3797, - "end": 3804, + "start": 5043, + "end": 5044, "loc": { "start": { - "line": 137, - "column": 24 + "line": 177, + "column": 35 }, "end": { - "line": 137, - "column": 31 + "line": 177, + "column": 36 }, - "identifierName": "configs" + "identifierName": "x" }, - "name": "configs" + "name": "x" }, - "property": { + "operator": "-", + "right": { "type": "Identifier", - "start": 3805, - "end": 3818, + "start": 5047, + "end": 5052, "loc": { "start": { - "line": 137, - "column": 32 + "line": 177, + "column": 39 }, "end": { - "line": 137, - "column": 45 + "line": 177, + "column": 44 }, - "identifierName": "panRightClick" + "identifierName": "lastX" }, - "name": "panRightClick" + "name": "lastX" }, - "computed": false - }, - "extra": { - "parenthesizedArgument": false + "extra": { + "parenthesized": true, + "parenStart": 5042 + } } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 5071, + "end": 5101, + "loc": { + "start": { + "line": 178, + "column": 16 }, - "consequent": { - "type": "BlockStatement", - "start": 3820, - "end": 3890, + "end": { + "line": 178, + "column": 46 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5077, + "end": 5100, "loc": { "start": { - "line": 137, - "column": 47 + "line": 178, + "column": 22 }, "end": { - "line": 141, - "column": 21 + "line": 178, + "column": 45 } }, - "body": [ - { - "type": "ExpressionStatement", - "start": 3847, - "end": 3867, + "id": { + "type": "Identifier", + "start": 5077, + "end": 5086, + "loc": { + "start": { + "line": 178, + "column": 22 + }, + "end": { + "line": 178, + "column": 31 + }, + "identifierName": "yPanDelta" + }, + "name": "yPanDelta" + }, + "init": { + "type": "BinaryExpression", + "start": 5090, + "end": 5099, + "loc": { + "start": { + "line": 178, + "column": 35 + }, + "end": { + "line": 178, + "column": 44 + } + }, + "left": { + "type": "Identifier", + "start": 5090, + "end": 5091, "loc": { "start": { - "line": 139, - "column": 24 + "line": 178, + "column": 35 }, "end": { - "line": 139, - "column": 44 - } + "line": 178, + "column": 36 + }, + "identifierName": "y" }, - "expression": { - "type": "CallExpression", - "start": 3847, - "end": 3866, - "loc": { - "start": { - "line": 139, - "column": 24 - }, - "end": { - "line": 139, - "column": 43 - } + "name": "y" + }, + "operator": "-", + "right": { + "type": "Identifier", + "start": 5094, + "end": 5099, + "loc": { + "start": { + "line": 178, + "column": 39 }, - "callee": { - "type": "Identifier", - "start": 3847, - "end": 3864, - "loc": { - "start": { - "line": 139, - "column": 24 - }, - "end": { - "line": 139, - "column": 41 - }, - "identifierName": "setMousedownState" - }, - "name": "setMousedownState" + "end": { + "line": 178, + "column": 44 }, - "arguments": [] - } + "identifierName": "lastY" + }, + "name": "lastY" + }, + "extra": { + "parenthesized": true, + "parenStart": 5089 } - ], - "directives": [] - }, - "alternate": null - }, - { - "type": "BreakStatement", - "start": 3912, - "end": 3918, - "loc": { - "start": { - "line": 143, - "column": 20 - }, - "end": { - "line": 143, - "column": 26 } - }, - "label": null - } - ], - "test": { - "type": "NumericLiteral", - "start": 3701, - "end": 3702, + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 5119, + "end": 5147, "loc": { "start": { - "line": 133, - "column": 21 + "line": 180, + "column": 16 }, "end": { - "line": 133, - "column": 22 + "line": 180, + "column": 44 } }, - "extra": { - "rawValue": 2, - "raw": "2" - }, - "value": 2 - } - }, - { - "type": "SwitchCase", - "start": 3936, - "end": 4150, - "loc": { - "start": { - "line": 145, - "column": 16 - }, - "end": { - "line": 155, - "column": 26 - } - }, - "consequent": [ - { - "type": "ExpressionStatement", - "start": 3981, - "end": 4003, - "loc": { - "start": { - "line": 147, - "column": 20 - }, - "end": { - "line": 147, - "column": 42 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 3981, - "end": 4002, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5125, + "end": 5146, "loc": { "start": { - "line": 147, - "column": 20 + "line": 180, + "column": 22 }, "end": { - "line": 147, - "column": 41 + "line": 180, + "column": 43 } }, - "operator": "=", - "left": { + "id": { "type": "Identifier", - "start": 3981, - "end": 3995, + "start": 5125, + "end": 5131, "loc": { "start": { - "line": 147, - "column": 20 + "line": 180, + "column": 22 }, "end": { - "line": 147, - "column": 34 + "line": 180, + "column": 28 }, - "identifierName": "mouseDownRight" + "identifierName": "camera" }, - "name": "mouseDownRight", - "leadingComments": null + "name": "camera" }, - "right": { - "type": "BooleanLiteral", - "start": 3998, - "end": 4002, + "init": { + "type": "MemberExpression", + "start": 5134, + "end": 5146, "loc": { "start": { - "line": 147, - "column": 37 + "line": 180, + "column": 31 }, "end": { - "line": 147, - "column": 41 + "line": 180, + "column": 43 } }, - "value": true - }, - "leadingComments": null - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " Right button", - "start": 3944, - "end": 3959, - "loc": { - "start": { - "line": 145, - "column": 24 + "object": { + "type": "Identifier", + "start": 5134, + "end": 5139, + "loc": { + "start": { + "line": 180, + "column": 31 + }, + "end": { + "line": 180, + "column": 36 + }, + "identifierName": "scene" }, - "end": { - "line": 145, - "column": 39 - } + "name": "scene" + }, + "property": { + "type": "Identifier", + "start": 5140, + "end": 5146, + "loc": { + "start": { + "line": 180, + "column": 37 + }, + "end": { + "line": 180, + "column": 43 + }, + "identifierName": "camera" + }, + "name": "camera" + }, + "computed": false + } + } + ], + "kind": "const", + "trailingComments": [ + { + "type": "CommentLine", + "value": " We use only canvasHeight here so that aspect ratio does not distort speed", + "start": 5165, + "end": 5241, + "loc": { + "start": { + "line": 182, + "column": 16 + }, + "end": { + "line": 182, + "column": 92 } } - ] + } + ] + }, + { + "type": "IfStatement", + "start": 5259, + "end": 5988, + "loc": { + "start": { + "line": 184, + "column": 16 + }, + "end": { + "line": 196, + "column": 17 + } }, - { - "type": "IfStatement", - "start": 4025, - "end": 4122, + "test": { + "type": "BinaryExpression", + "start": 5263, + "end": 5298, "loc": { "start": { - "line": 149, + "line": 184, "column": 20 }, "end": { - "line": 153, - "column": 21 + "line": 184, + "column": 55 } }, - "test": { + "left": { "type": "MemberExpression", - "start": 4029, - "end": 4050, + "start": 5263, + "end": 5280, "loc": { "start": { - "line": 149, - "column": 24 + "line": 184, + "column": 20 }, "end": { - "line": 149, - "column": 45 + "line": 184, + "column": 37 } }, "object": { "type": "Identifier", - "start": 4029, - "end": 4036, + "start": 5263, + "end": 5269, "loc": { "start": { - "line": 149, - "column": 24 + "line": 184, + "column": 20 }, "end": { - "line": 149, - "column": 31 + "line": 184, + "column": 26 }, - "identifierName": "configs" + "identifierName": "camera" }, - "name": "configs" + "name": "camera", + "leadingComments": null }, "property": { "type": "Identifier", - "start": 4037, - "end": 4050, + "start": 5270, + "end": 5280, "loc": { "start": { - "line": 149, - "column": 32 + "line": 184, + "column": 27 }, "end": { - "line": 149, - "column": 45 + "line": 184, + "column": 37 }, - "identifierName": "panRightClick" + "identifierName": "projection" }, - "name": "panRightClick" + "name": "projection" }, - "computed": false + "computed": false, + "leadingComments": null }, - "consequent": { - "type": "BlockStatement", - "start": 4052, - "end": 4122, + "operator": "===", + "right": { + "type": "StringLiteral", + "start": 5285, + "end": 5298, "loc": { "start": { - "line": 149, - "column": 47 + "line": 184, + "column": 42 }, "end": { - "line": 153, - "column": 21 + "line": 184, + "column": 55 } }, - "body": [ - { - "type": "ExpressionStatement", - "start": 4079, - "end": 4099, - "loc": { - "start": { - "line": 151, - "column": 24 - }, - "end": { - "line": 151, - "column": 44 - } + "extra": { + "rawValue": "perspective", + "raw": "\"perspective\"" + }, + "value": "perspective" + }, + "leadingComments": null + }, + "consequent": { + "type": "BlockStatement", + "start": 5300, + "end": 5770, + "loc": { + "start": { + "line": 184, + "column": 57 + }, + "end": { + "line": 192, + "column": 17 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 5323, + "end": 5457, + "loc": { + "start": { + "line": 186, + "column": 20 }, - "expression": { - "type": "CallExpression", - "start": 4079, - "end": 4098, + "end": { + "line": 186, + "column": 154 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5329, + "end": 5456, "loc": { "start": { - "line": 151, - "column": 24 + "line": 186, + "column": 26 }, "end": { - "line": 151, - "column": 43 + "line": 186, + "column": 153 } }, - "callee": { + "id": { "type": "Identifier", - "start": 4079, - "end": 4096, + "start": 5329, + "end": 5334, "loc": { "start": { - "line": 151, - "column": 24 + "line": 186, + "column": 26 }, "end": { - "line": 151, - "column": 41 + "line": 186, + "column": 31 }, - "identifierName": "setMousedownState" + "identifierName": "depth" }, - "name": "setMousedownState" - }, - "arguments": [] - } - } - ], - "directives": [] - }, - "alternate": null - }, - { - "type": "BreakStatement", - "start": 4144, - "end": 4150, - "loc": { - "start": { - "line": 155, - "column": 20 - }, - "end": { - "line": 155, - "column": 26 - } - }, - "label": null - } - ], - "test": { - "type": "NumericLiteral", - "start": 3941, - "end": 3942, - "loc": { - "start": { - "line": 145, - "column": 21 - }, - "end": { - "line": 145, - "column": 22 - } - }, - "extra": { - "rawValue": 3, - "raw": "3" - }, - "value": 3 - } - }, - { - "type": "SwitchCase", - "start": 4168, - "end": 4203, - "loc": { - "start": { - "line": 157, - "column": 16 - }, - "end": { - "line": 158, - "column": 26 - } - }, - "consequent": [ - { - "type": "BreakStatement", - "start": 4197, - "end": 4203, - "loc": { - "start": { - "line": 158, - "column": 20 - }, - "end": { - "line": 158, - "column": 26 - } - }, - "label": null - } - ], - "test": null - } - ] - }, - { - "type": "ExpressionStatement", - "start": 4231, - "end": 6762, - "loc": { - "start": { - "line": 161, - "column": 12 - }, - "end": { - "line": 212, - "column": 15 - } - }, - "expression": { - "type": "CallExpression", - "start": 4231, - "end": 6761, - "loc": { - "start": { - "line": 161, - "column": 12 - }, - "end": { - "line": 212, - "column": 14 - } - }, - "callee": { - "type": "MemberExpression", - "start": 4231, - "end": 4256, - "loc": { - "start": { - "line": 161, - "column": 12 - }, - "end": { - "line": 161, - "column": 37 - } - }, - "object": { - "type": "Identifier", - "start": 4231, - "end": 4239, - "loc": { - "start": { - "line": 161, - "column": 12 - }, - "end": { - "line": 161, - "column": 20 - }, - "identifierName": "document" - }, - "name": "document" - }, - "property": { - "type": "Identifier", - "start": 4240, - "end": 4256, - "loc": { - "start": { - "line": 161, - "column": 21 - }, - "end": { - "line": 161, - "column": 37 - }, - "identifierName": "addEventListener" - }, - "name": "addEventListener" - }, - "computed": false - }, - "arguments": [ - { - "type": "StringLiteral", - "start": 4257, - "end": 4268, - "loc": { - "start": { - "line": 161, - "column": 38 - }, - "end": { - "line": 161, - "column": 49 - } - }, - "extra": { - "rawValue": "mousemove", - "raw": "\"mousemove\"" - }, - "value": "mousemove" - }, - { - "type": "AssignmentExpression", - "start": 4270, - "end": 6760, - "loc": { - "start": { - "line": 161, - "column": 51 - }, - "end": { - "line": 212, - "column": 13 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 4270, - "end": 4300, - "loc": { - "start": { - "line": 161, - "column": 51 - }, - "end": { - "line": 161, - "column": 81 - } - }, - "object": { - "type": "ThisExpression", - "start": 4270, - "end": 4274, - "loc": { - "start": { - "line": 161, - "column": 51 - }, - "end": { - "line": 161, - "column": 55 - } - } - }, - "property": { - "type": "Identifier", - "start": 4275, - "end": 4300, - "loc": { - "start": { - "line": 161, - "column": 56 - }, - "end": { - "line": 161, - "column": 81 - }, - "identifierName": "_documentMouseMoveHandler" - }, - "name": "_documentMouseMoveHandler" - }, - "computed": false - }, - "right": { - "type": "ArrowFunctionExpression", - "start": 4303, - "end": 6760, - "loc": { - "start": { - "line": 161, - "column": 84 - }, - "end": { - "line": 212, - "column": 13 - } - }, - "id": null, - "generator": false, - "expression": false, - "async": false, - "params": [], - "body": { - "type": "BlockStatement", - "start": 4309, - "end": 6760, - "loc": { - "start": { - "line": 161, - "column": 90 - }, - "end": { - "line": 212, - "column": 13 - } - }, - "body": [ - { - "type": "VariableDeclaration", - "start": 4386, - "end": 4431, - "loc": { - "start": { - "line": 164, - "column": 16 + "name": "depth" }, - "end": { - "line": 164, - "column": 61 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4392, - "end": 4430, + "init": { + "type": "CallExpression", + "start": 5337, + "end": 5456, "loc": { "start": { - "line": 164, - "column": 22 + "line": 186, + "column": 34 }, "end": { - "line": 164, - "column": 60 + "line": 186, + "column": 153 } }, - "id": { - "type": "Identifier", - "start": 4392, - "end": 4406, - "loc": { - "start": { - "line": 164, - "column": 22 - }, - "end": { - "line": 164, - "column": 36 - }, - "identifierName": "canvasBoundary" - }, - "name": "canvasBoundary", - "leadingComments": null - }, - "init": { + "callee": { "type": "MemberExpression", - "start": 4409, - "end": 4430, + "start": 5337, + "end": 5345, "loc": { "start": { - "line": 164, - "column": 39 + "line": 186, + "column": 34 }, "end": { - "line": 164, - "column": 60 + "line": 186, + "column": 42 } }, "object": { - "type": "MemberExpression", - "start": 4409, - "end": 4421, + "type": "Identifier", + "start": 5337, + "end": 5341, + "loc": { + "start": { + "line": 186, + "column": 34 + }, + "end": { + "line": 186, + "column": 38 + }, + "identifierName": "Math" + }, + "name": "Math" + }, + "property": { + "type": "Identifier", + "start": 5342, + "end": 5345, "loc": { "start": { - "line": 164, + "line": 186, "column": 39 }, "end": { - "line": 164, - "column": 51 + "line": 186, + "column": 42 + }, + "identifierName": "abs" + }, + "name": "abs" + }, + "computed": false + }, + "arguments": [ + { + "type": "ConditionalExpression", + "start": 5346, + "end": 5455, + "loc": { + "start": { + "line": 186, + "column": 43 + }, + "end": { + "line": 186, + "column": 152 } }, - "object": { - "type": "Identifier", - "start": 4409, - "end": 4414, + "test": { + "type": "Identifier", + "start": 5346, + "end": 5361, + "loc": { + "start": { + "line": 186, + "column": 43 + }, + "end": { + "line": 186, + "column": 58 + }, + "identifierName": "mouseDownPicked" + }, + "name": "mouseDownPicked" + }, + "consequent": { + "type": "CallExpression", + "start": 5364, + "end": 5428, + "loc": { + "start": { + "line": 186, + "column": 61 + }, + "end": { + "line": 186, + "column": 125 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5364, + "end": 5376, + "loc": { + "start": { + "line": 186, + "column": 61 + }, + "end": { + "line": 186, + "column": 73 + } + }, + "object": { + "type": "Identifier", + "start": 5364, + "end": 5368, + "loc": { + "start": { + "line": 186, + "column": 61 + }, + "end": { + "line": 186, + "column": 65 + }, + "identifierName": "math" + }, + "name": "math" + }, + "property": { + "type": "Identifier", + "start": 5369, + "end": 5376, + "loc": { + "start": { + "line": 186, + "column": 66 + }, + "end": { + "line": 186, + "column": 73 + }, + "identifierName": "lenVec3" + }, + "name": "lenVec3" + }, + "computed": false + }, + "arguments": [ + { + "type": "CallExpression", + "start": 5377, + "end": 5427, + "loc": { + "start": { + "line": 186, + "column": 74 + }, + "end": { + "line": 186, + "column": 124 + } + }, + "callee": { + "type": "MemberExpression", + "start": 5377, + "end": 5389, + "loc": { + "start": { + "line": 186, + "column": 74 + }, + "end": { + "line": 186, + "column": 86 + } + }, + "object": { + "type": "Identifier", + "start": 5377, + "end": 5381, + "loc": { + "start": { + "line": 186, + "column": 74 + }, + "end": { + "line": 186, + "column": 78 + }, + "identifierName": "math" + }, + "name": "math" + }, + "property": { + "type": "Identifier", + "start": 5382, + "end": 5389, + "loc": { + "start": { + "line": 186, + "column": 79 + }, + "end": { + "line": 186, + "column": 86 + }, + "identifierName": "subVec3" + }, + "name": "subVec3" + }, + "computed": false + }, + "arguments": [ + { + "type": "Identifier", + "start": 5390, + "end": 5404, + "loc": { + "start": { + "line": 186, + "column": 87 + }, + "end": { + "line": 186, + "column": 101 + }, + "identifierName": "pickedWorldPos" + }, + "name": "pickedWorldPos" + }, + { + "type": "MemberExpression", + "start": 5406, + "end": 5422, + "loc": { + "start": { + "line": 186, + "column": 103 + }, + "end": { + "line": 186, + "column": 119 + } + }, + "object": { + "type": "MemberExpression", + "start": 5406, + "end": 5418, + "loc": { + "start": { + "line": 186, + "column": 103 + }, + "end": { + "line": 186, + "column": 115 + } + }, + "object": { + "type": "Identifier", + "start": 5406, + "end": 5411, + "loc": { + "start": { + "line": 186, + "column": 103 + }, + "end": { + "line": 186, + "column": 108 + }, + "identifierName": "scene" + }, + "name": "scene" + }, + "property": { + "type": "Identifier", + "start": 5412, + "end": 5418, + "loc": { + "start": { + "line": 186, + "column": 109 + }, + "end": { + "line": 186, + "column": 115 + }, + "identifierName": "camera" + }, + "name": "camera" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5419, + "end": 5422, + "loc": { + "start": { + "line": 186, + "column": 116 + }, + "end": { + "line": 186, + "column": 119 + }, + "identifierName": "eye" + }, + "name": "eye" + }, + "computed": false + }, + { + "type": "ArrayExpression", + "start": 5424, + "end": 5426, + "loc": { + "start": { + "line": 186, + "column": 121 + }, + "end": { + "line": 186, + "column": 123 + } + }, + "elements": [] + } + ] + } + ] + }, + "alternate": { + "type": "MemberExpression", + "start": 5431, + "end": 5455, "loc": { "start": { - "line": 164, - "column": 39 + "line": 186, + "column": 128 }, "end": { - "line": 164, - "column": 44 - }, - "identifierName": "scene" + "line": 186, + "column": 152 + } }, - "name": "scene" - }, - "property": { - "type": "Identifier", - "start": 4415, - "end": 4421, - "loc": { - "start": { - "line": 164, - "column": 45 + "object": { + "type": "MemberExpression", + "start": 5431, + "end": 5443, + "loc": { + "start": { + "line": 186, + "column": 128 + }, + "end": { + "line": 186, + "column": 140 + } }, - "end": { - "line": 164, - "column": 51 + "object": { + "type": "Identifier", + "start": 5431, + "end": 5436, + "loc": { + "start": { + "line": 186, + "column": 128 + }, + "end": { + "line": 186, + "column": 133 + }, + "identifierName": "scene" + }, + "name": "scene" }, - "identifierName": "canvas" - }, - "name": "canvas" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 4422, - "end": 4430, - "loc": { - "start": { - "line": 164, - "column": 52 + "property": { + "type": "Identifier", + "start": 5437, + "end": 5443, + "loc": { + "start": { + "line": 186, + "column": 134 + }, + "end": { + "line": 186, + "column": 140 + }, + "identifierName": "camera" + }, + "name": "camera" + }, + "computed": false }, - "end": { - "line": 164, - "column": 60 + "property": { + "type": "Identifier", + "start": 5444, + "end": 5455, + "loc": { + "start": { + "line": 186, + "column": 141 + }, + "end": { + "line": 186, + "column": 152 + }, + "identifierName": "eyeLookDist" + }, + "name": "eyeLookDist" }, - "identifierName": "boundary" - }, - "name": "boundary" - }, - "computed": false - }, - "leadingComments": null + "computed": false + } + } + ] } - ], - "kind": "const", - "leadingComments": [ - { - "type": "CommentLine", - "value": " Scaling drag-rotate to canvas boundary", - "start": 4327, - "end": 4368, + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 5478, + "end": 5566, + "loc": { + "start": { + "line": 187, + "column": 20 + }, + "end": { + "line": 187, + "column": 108 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 5484, + "end": 5565, + "loc": { + "start": { + "line": 187, + "column": 26 + }, + "end": { + "line": 187, + "column": 107 + } + }, + "id": { + "type": "Identifier", + "start": 5484, + "end": 5498, "loc": { "start": { - "line": 162, - "column": 16 + "line": 187, + "column": 26 }, "end": { - "line": 162, - "column": 57 - } - } - } - ] - }, - { - "type": "VariableDeclaration", - "start": 4448, - "end": 4506, - "loc": { - "start": { - "line": 165, - "column": 16 + "line": 187, + "column": 40 + }, + "identifierName": "targetDistance" + }, + "name": "targetDistance" }, - "end": { - "line": 165, - "column": 74 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4454, - "end": 4505, + "init": { + "type": "BinaryExpression", + "start": 5501, + "end": 5565, "loc": { "start": { - "line": 165, - "column": 22 + "line": 187, + "column": 43 }, "end": { - "line": 165, - "column": 73 + "line": 187, + "column": 107 } }, - "id": { + "left": { "type": "Identifier", - "start": 4454, - "end": 4465, + "start": 5501, + "end": 5506, "loc": { "start": { - "line": 165, - "column": 22 + "line": 187, + "column": 43 }, "end": { - "line": 165, - "column": 33 + "line": 187, + "column": 48 }, - "identifierName": "canvasWidth" + "identifierName": "depth" }, - "name": "canvasWidth" + "name": "depth" }, - "init": { - "type": "BinaryExpression", - "start": 4468, - "end": 4505, + "operator": "*", + "right": { + "type": "CallExpression", + "start": 5509, + "end": 5565, "loc": { "start": { - "line": 165, - "column": 36 + "line": 187, + "column": 51 }, "end": { - "line": 165, - "column": 73 + "line": 187, + "column": 107 } }, - "left": { + "callee": { "type": "MemberExpression", - "start": 4468, - "end": 4485, + "start": 5509, + "end": 5517, "loc": { "start": { - "line": 165, - "column": 36 + "line": 187, + "column": 51 }, "end": { - "line": 165, - "column": 53 + "line": 187, + "column": 59 } }, "object": { "type": "Identifier", - "start": 4468, - "end": 4482, + "start": 5509, + "end": 5513, "loc": { "start": { - "line": 165, - "column": 36 + "line": 187, + "column": 51 }, "end": { - "line": 165, - "column": 50 + "line": 187, + "column": 55 }, - "identifierName": "canvasBoundary" + "identifierName": "Math" }, - "name": "canvasBoundary" + "name": "Math" }, "property": { - "type": "NumericLiteral", - "start": 4483, - "end": 4484, - "loc": { - "start": { - "line": 165, - "column": 51 - }, - "end": { - "line": 165, - "column": 52 - } - }, - "extra": { - "rawValue": 2, - "raw": "2" - }, - "value": 2 - }, - "computed": true - }, - "operator": "-", - "right": { - "type": "MemberExpression", - "start": 4488, - "end": 4505, - "loc": { - "start": { - "line": 165, - "column": 56 - }, - "end": { - "line": 165, - "column": 73 - } - }, - "object": { "type": "Identifier", - "start": 4488, - "end": 4502, + "start": 5514, + "end": 5517, "loc": { "start": { - "line": 165, + "line": 187, "column": 56 }, "end": { - "line": 165, - "column": 70 + "line": 187, + "column": 59 }, - "identifierName": "canvasBoundary" + "identifierName": "tan" }, - "name": "canvasBoundary" + "name": "tan" }, - "property": { - "type": "NumericLiteral", - "start": 4503, - "end": 4504, + "computed": false + }, + "arguments": [ + { + "type": "BinaryExpression", + "start": 5518, + "end": 5564, "loc": { "start": { - "line": 165, - "column": 71 + "line": 187, + "column": 60 }, "end": { - "line": 165, - "column": 72 + "line": 187, + "column": 106 } }, - "extra": { - "rawValue": 0, - "raw": "0" + "left": { + "type": "BinaryExpression", + "start": 5518, + "end": 5556, + "loc": { + "start": { + "line": 187, + "column": 60 + }, + "end": { + "line": 187, + "column": 98 + } + }, + "left": { + "type": "BinaryExpression", + "start": 5519, + "end": 5545, + "loc": { + "start": { + "line": 187, + "column": 61 + }, + "end": { + "line": 187, + "column": 87 + } + }, + "left": { + "type": "MemberExpression", + "start": 5519, + "end": 5541, + "loc": { + "start": { + "line": 187, + "column": 61 + }, + "end": { + "line": 187, + "column": 83 + } + }, + "object": { + "type": "MemberExpression", + "start": 5519, + "end": 5537, + "loc": { + "start": { + "line": 187, + "column": 61 + }, + "end": { + "line": 187, + "column": 79 + } + }, + "object": { + "type": "Identifier", + "start": 5519, + "end": 5525, + "loc": { + "start": { + "line": 187, + "column": 61 + }, + "end": { + "line": 187, + "column": 67 + }, + "identifierName": "camera" + }, + "name": "camera" + }, + "property": { + "type": "Identifier", + "start": 5526, + "end": 5537, + "loc": { + "start": { + "line": 187, + "column": 68 + }, + "end": { + "line": 187, + "column": 79 + }, + "identifierName": "perspective" + }, + "name": "perspective" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5538, + "end": 5541, + "loc": { + "start": { + "line": 187, + "column": 80 + }, + "end": { + "line": 187, + "column": 83 + }, + "identifierName": "fov" + }, + "name": "fov" + }, + "computed": false + }, + "operator": "/", + "right": { + "type": "NumericLiteral", + "start": 5544, + "end": 5545, + "loc": { + "start": { + "line": 187, + "column": 86 + }, + "end": { + "line": 187, + "column": 87 + } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + }, + "extra": { + "parenthesized": true, + "parenStart": 5518 + } + }, + "operator": "*", + "right": { + "type": "MemberExpression", + "start": 5549, + "end": 5556, + "loc": { + "start": { + "line": 187, + "column": 91 + }, + "end": { + "line": 187, + "column": 98 + } + }, + "object": { + "type": "Identifier", + "start": 5549, + "end": 5553, + "loc": { + "start": { + "line": 187, + "column": 91 + }, + "end": { + "line": 187, + "column": 95 + }, + "identifierName": "Math" + }, + "name": "Math" + }, + "property": { + "type": "Identifier", + "start": 5554, + "end": 5556, + "loc": { + "start": { + "line": 187, + "column": 96 + }, + "end": { + "line": 187, + "column": 98 + }, + "identifierName": "PI" + }, + "name": "PI" + }, + "computed": false + } }, - "value": 0 - }, - "computed": true - } + "operator": "/", + "right": { + "type": "NumericLiteral", + "start": 5559, + "end": 5564, + "loc": { + "start": { + "line": 187, + "column": 101 + }, + "end": { + "line": 187, + "column": 106 + } + }, + "extra": { + "rawValue": 180, + "raw": "180.0" + }, + "value": 180 + } + } + ] } } - ], - "kind": "const" + } + ], + "kind": "const" + }, + { + "type": "ExpressionStatement", + "start": 5588, + "end": 5659, + "loc": { + "start": { + "line": 189, + "column": 20 + }, + "end": { + "line": 189, + "column": 91 + } }, - { - "type": "VariableDeclaration", - "start": 4523, - "end": 4582, + "expression": { + "type": "AssignmentExpression", + "start": 5588, + "end": 5658, "loc": { "start": { - "line": 166, - "column": 16 + "line": 189, + "column": 20 }, "end": { - "line": 166, - "column": 75 + "line": 189, + "column": 90 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4529, - "end": 4581, + "operator": "+=", + "left": { + "type": "MemberExpression", + "start": 5588, + "end": 5605, + "loc": { + "start": { + "line": 189, + "column": 20 + }, + "end": { + "line": 189, + "column": 37 + } + }, + "object": { + "type": "Identifier", + "start": 5588, + "end": 5595, "loc": { "start": { - "line": 166, - "column": 22 + "line": 189, + "column": 20 }, "end": { - "line": 166, - "column": 74 - } - }, - "id": { - "type": "Identifier", - "start": 4529, - "end": 4541, - "loc": { - "start": { - "line": 166, - "column": 22 - }, - "end": { - "line": 166, - "column": 34 - }, - "identifierName": "canvasHeight" + "line": 189, + "column": 27 }, - "name": "canvasHeight" + "identifierName": "updates" }, - "init": { - "type": "BinaryExpression", - "start": 4544, - "end": 4581, - "loc": { - "start": { - "line": 166, - "column": 37 - }, - "end": { - "line": 166, - "column": 74 - } + "name": "updates" + }, + "property": { + "type": "Identifier", + "start": 5596, + "end": 5605, + "loc": { + "start": { + "line": 189, + "column": 28 }, - "left": { - "type": "MemberExpression", - "start": 4544, - "end": 4561, - "loc": { - "start": { - "line": 166, - "column": 37 - }, - "end": { - "line": 166, - "column": 54 - } - }, - "object": { - "type": "Identifier", - "start": 4544, - "end": 4558, - "loc": { - "start": { - "line": 166, - "column": 37 - }, - "end": { - "line": 166, - "column": 51 - }, - "identifierName": "canvasBoundary" - }, - "name": "canvasBoundary" - }, - "property": { - "type": "NumericLiteral", - "start": 4559, - "end": 4560, - "loc": { - "start": { - "line": 166, - "column": 52 - }, - "end": { - "line": 166, - "column": 53 - } - }, - "extra": { - "rawValue": 3, - "raw": "3" - }, - "value": 3 - }, - "computed": true + "end": { + "line": 189, + "column": 37 }, - "operator": "-", - "right": { - "type": "MemberExpression", - "start": 4564, - "end": 4581, - "loc": { - "start": { - "line": 166, - "column": 57 - }, - "end": { - "line": 166, - "column": 74 - } - }, - "object": { - "type": "Identifier", - "start": 4564, - "end": 4578, - "loc": { - "start": { - "line": 166, - "column": 57 - }, - "end": { - "line": 166, - "column": 71 - }, - "identifierName": "canvasBoundary" - }, - "name": "canvasBoundary" - }, - "property": { - "type": "NumericLiteral", - "start": 4579, - "end": 4580, - "loc": { - "start": { - "line": 166, - "column": 72 - }, - "end": { - "line": 166, - "column": 73 - } - }, - "extra": { - "rawValue": 1, - "raw": "1" - }, - "value": 1 - }, - "computed": true - } - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 4599, - "end": 4636, - "loc": { - "start": { - "line": 167, - "column": 16 + "identifierName": "panDeltaX" + }, + "name": "panDeltaX" }, - "end": { - "line": 167, - "column": 53 - } + "computed": false }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4605, - "end": 4635, + "right": { + "type": "BinaryExpression", + "start": 5610, + "end": 5657, + "loc": { + "start": { + "line": 189, + "column": 42 + }, + "end": { + "line": 189, + "column": 89 + } + }, + "left": { + "type": "BinaryExpression", + "start": 5610, + "end": 5642, "loc": { "start": { - "line": 167, - "column": 22 + "line": 189, + "column": 42 }, "end": { - "line": 167, - "column": 52 + "line": 189, + "column": 74 } }, - "id": { - "type": "Identifier", - "start": 4605, - "end": 4606, - "loc": { - "start": { - "line": 167, - "column": 22 - }, - "end": { - "line": 167, - "column": 23 - }, - "identifierName": "x" - }, - "name": "x" - }, - "init": { - "type": "MemberExpression", - "start": 4609, - "end": 4635, + "left": { + "type": "BinaryExpression", + "start": 5610, + "end": 5625, "loc": { "start": { - "line": 167, - "column": 26 + "line": 189, + "column": 42 }, "end": { - "line": 167, - "column": 52 + "line": 189, + "column": 57 } }, - "object": { - "type": "MemberExpression", - "start": 4609, - "end": 4632, + "left": { + "type": "NumericLiteral", + "start": 5610, + "end": 5613, "loc": { "start": { - "line": 167, - "column": 26 + "line": 189, + "column": 42 }, "end": { - "line": 167, - "column": 49 + "line": 189, + "column": 45 } }, - "object": { - "type": "Identifier", - "start": 4609, - "end": 4615, - "loc": { - "start": { - "line": 167, - "column": 26 - }, - "end": { - "line": 167, - "column": 32 - }, - "identifierName": "states" - }, - "name": "states" - }, - "property": { - "type": "Identifier", - "start": 4616, - "end": 4632, - "loc": { - "start": { - "line": 167, - "column": 33 - }, - "end": { - "line": 167, - "column": 49 - }, - "identifierName": "pointerCanvasPos" - }, - "name": "pointerCanvasPos" + "extra": { + "rawValue": 1.5, + "raw": "1.5" }, - "computed": false + "value": 1.5 }, - "property": { - "type": "NumericLiteral", - "start": 4633, - "end": 4634, + "operator": "*", + "right": { + "type": "Identifier", + "start": 5616, + "end": 5625, "loc": { "start": { - "line": 167, - "column": 50 + "line": 189, + "column": 48 }, "end": { - "line": 167, - "column": 51 - } + "line": 189, + "column": 57 + }, + "identifierName": "xPanDelta" }, - "extra": { - "rawValue": 0, - "raw": "0" + "name": "xPanDelta" + } + }, + "operator": "*", + "right": { + "type": "Identifier", + "start": 5628, + "end": 5642, + "loc": { + "start": { + "line": 189, + "column": 60 + }, + "end": { + "line": 189, + "column": 74 }, - "value": 0 + "identifierName": "targetDistance" }, - "computed": true + "name": "targetDistance" } + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 5645, + "end": 5657, + "loc": { + "start": { + "line": 189, + "column": 77 + }, + "end": { + "line": 189, + "column": 89 + }, + "identifierName": "canvasHeight" + }, + "name": "canvasHeight" + }, + "extra": { + "parenthesized": true, + "parenStart": 5609 } - ], - "kind": "const" + } + } + }, + { + "type": "ExpressionStatement", + "start": 5680, + "end": 5751, + "loc": { + "start": { + "line": 190, + "column": 20 + }, + "end": { + "line": 190, + "column": 91 + } }, - { - "type": "VariableDeclaration", - "start": 4653, - "end": 4690, + "expression": { + "type": "AssignmentExpression", + "start": 5680, + "end": 5750, "loc": { "start": { - "line": 168, - "column": 16 + "line": 190, + "column": 20 }, "end": { - "line": 168, - "column": 53 + "line": 190, + "column": 90 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4659, - "end": 4689, + "operator": "+=", + "left": { + "type": "MemberExpression", + "start": 5680, + "end": 5697, + "loc": { + "start": { + "line": 190, + "column": 20 + }, + "end": { + "line": 190, + "column": 37 + } + }, + "object": { + "type": "Identifier", + "start": 5680, + "end": 5687, "loc": { "start": { - "line": 168, - "column": 22 + "line": 190, + "column": 20 }, "end": { - "line": 168, - "column": 52 - } + "line": 190, + "column": 27 + }, + "identifierName": "updates" }, - "id": { - "type": "Identifier", - "start": 4659, - "end": 4660, - "loc": { - "start": { - "line": 168, - "column": 22 - }, - "end": { - "line": 168, - "column": 23 - }, - "identifierName": "y" + "name": "updates" + }, + "property": { + "type": "Identifier", + "start": 5688, + "end": 5697, + "loc": { + "start": { + "line": 190, + "column": 28 }, - "name": "y" + "end": { + "line": 190, + "column": 37 + }, + "identifierName": "panDeltaY" }, - "init": { - "type": "MemberExpression", - "start": 4663, - "end": 4689, + "name": "panDeltaY" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 5702, + "end": 5749, + "loc": { + "start": { + "line": 190, + "column": 42 + }, + "end": { + "line": 190, + "column": 89 + } + }, + "left": { + "type": "BinaryExpression", + "start": 5702, + "end": 5734, + "loc": { + "start": { + "line": 190, + "column": 42 + }, + "end": { + "line": 190, + "column": 74 + } + }, + "left": { + "type": "BinaryExpression", + "start": 5702, + "end": 5717, "loc": { "start": { - "line": 168, - "column": 26 + "line": 190, + "column": 42 }, "end": { - "line": 168, - "column": 52 + "line": 190, + "column": 57 } }, - "object": { - "type": "MemberExpression", - "start": 4663, - "end": 4686, + "left": { + "type": "NumericLiteral", + "start": 5702, + "end": 5705, "loc": { "start": { - "line": 168, - "column": 26 + "line": 190, + "column": 42 }, "end": { - "line": 168, - "column": 49 + "line": 190, + "column": 45 } }, - "object": { - "type": "Identifier", - "start": 4663, - "end": 4669, - "loc": { - "start": { - "line": 168, - "column": 26 - }, - "end": { - "line": 168, - "column": 32 - }, - "identifierName": "states" - }, - "name": "states" - }, - "property": { - "type": "Identifier", - "start": 4670, - "end": 4686, - "loc": { - "start": { - "line": 168, - "column": 33 - }, - "end": { - "line": 168, - "column": 49 - }, - "identifierName": "pointerCanvasPos" - }, - "name": "pointerCanvasPos" + "extra": { + "rawValue": 1.5, + "raw": "1.5" }, - "computed": false + "value": 1.5 }, - "property": { - "type": "NumericLiteral", - "start": 4687, - "end": 4688, + "operator": "*", + "right": { + "type": "Identifier", + "start": 5708, + "end": 5717, "loc": { "start": { - "line": 168, - "column": 50 + "line": 190, + "column": 48 }, "end": { - "line": 168, - "column": 51 - } + "line": 190, + "column": 57 + }, + "identifierName": "yPanDelta" }, - "extra": { - "rawValue": 1, - "raw": "1" + "name": "yPanDelta" + } + }, + "operator": "*", + "right": { + "type": "Identifier", + "start": 5720, + "end": 5734, + "loc": { + "start": { + "line": 190, + "column": 60 + }, + "end": { + "line": 190, + "column": 74 }, - "value": 1 + "identifierName": "targetDistance" }, - "computed": true + "name": "targetDistance" } + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 5737, + "end": 5749, + "loc": { + "start": { + "line": 190, + "column": 77 + }, + "end": { + "line": 190, + "column": 89 + }, + "identifierName": "canvasHeight" + }, + "name": "canvasHeight" + }, + "extra": { + "parenthesized": true, + "parenStart": 5701 } - ], - "kind": "const" + } + } + } + ], + "directives": [] + }, + "alternate": { + "type": "BlockStatement", + "start": 5776, + "end": 5988, + "loc": { + "start": { + "line": 192, + "column": 23 + }, + "end": { + "line": 196, + "column": 17 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 5799, + "end": 5874, + "loc": { + "start": { + "line": 194, + "column": 20 + }, + "end": { + "line": 194, + "column": 95 + } }, - { - "type": "VariableDeclaration", - "start": 4708, - "end": 4867, + "expression": { + "type": "AssignmentExpression", + "start": 5799, + "end": 5873, "loc": { "start": { - "line": 170, - "column": 16 + "line": 194, + "column": 20 }, "end": { - "line": 170, - "column": 175 + "line": 194, + "column": 94 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4714, - "end": 4866, + "operator": "+=", + "left": { + "type": "MemberExpression", + "start": 5799, + "end": 5816, + "loc": { + "start": { + "line": 194, + "column": 20 + }, + "end": { + "line": 194, + "column": 37 + } + }, + "object": { + "type": "Identifier", + "start": 5799, + "end": 5806, + "loc": { + "start": { + "line": 194, + "column": 20 + }, + "end": { + "line": 194, + "column": 27 + }, + "identifierName": "updates" + }, + "name": "updates" + }, + "property": { + "type": "Identifier", + "start": 5807, + "end": 5816, + "loc": { + "start": { + "line": 194, + "column": 28 + }, + "end": { + "line": 194, + "column": 37 + }, + "identifierName": "panDeltaX" + }, + "name": "panDeltaX" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 5820, + "end": 5873, + "loc": { + "start": { + "line": 194, + "column": 41 + }, + "end": { + "line": 194, + "column": 94 + } + }, + "left": { + "type": "BinaryExpression", + "start": 5820, + "end": 5844, "loc": { "start": { - "line": 170, - "column": 22 + "line": 194, + "column": 41 }, "end": { - "line": 170, - "column": 174 + "line": 194, + "column": 65 } }, - "id": { - "type": "Identifier", - "start": 4714, - "end": 4721, + "left": { + "type": "NumericLiteral", + "start": 5820, + "end": 5823, "loc": { "start": { - "line": 170, - "column": 22 + "line": 194, + "column": 41 }, "end": { - "line": 170, - "column": 29 - }, - "identifierName": "panning" + "line": 194, + "column": 44 + } + }, + "extra": { + "rawValue": 0.5, + "raw": "0.5" }, - "name": "panning" + "value": 0.5 }, - "init": { - "type": "LogicalExpression", - "start": 4724, - "end": 4866, + "operator": "*", + "right": { + "type": "MemberExpression", + "start": 5826, + "end": 5844, "loc": { "start": { - "line": 170, - "column": 32 + "line": 194, + "column": 47 }, "end": { - "line": 170, - "column": 174 - } - }, - "left": { - "type": "LogicalExpression", - "start": 4724, - "end": 4821, - "loc": { - "start": { - "line": 170, - "column": 32 - }, - "end": { - "line": 170, - "column": 129 - } - }, - "left": { - "type": "LogicalExpression", - "start": 4724, - "end": 4774, - "loc": { - "start": { - "line": 170, - "column": 32 - }, - "end": { - "line": 170, - "column": 82 - } - }, - "left": { - "type": "MemberExpression", - "start": 4724, - "end": 4754, - "loc": { - "start": { - "line": 170, - "column": 32 - }, - "end": { - "line": 170, - "column": 62 - } - }, - "object": { - "type": "Identifier", - "start": 4724, - "end": 4731, - "loc": { - "start": { - "line": 170, - "column": 32 - }, - "end": { - "line": 170, - "column": 39 - }, - "identifierName": "keyDown" - }, - "name": "keyDown" - }, - "property": { - "type": "MemberExpression", - "start": 4732, - "end": 4753, - "loc": { - "start": { - "line": 170, - "column": 40 - }, - "end": { - "line": 170, - "column": 61 - } - }, - "object": { - "type": "MemberExpression", - "start": 4732, - "end": 4743, - "loc": { - "start": { - "line": 170, - "column": 40 - }, - "end": { - "line": 170, - "column": 51 - } - }, - "object": { - "type": "Identifier", - "start": 4732, - "end": 4737, - "loc": { - "start": { - "line": 170, - "column": 40 - }, - "end": { - "line": 170, - "column": 45 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "property": { - "type": "Identifier", - "start": 4738, - "end": 4743, - "loc": { - "start": { - "line": 170, - "column": 46 - }, - "end": { - "line": 170, - "column": 51 - }, - "identifierName": "input" - }, - "name": "input" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 4744, - "end": 4753, - "loc": { - "start": { - "line": 170, - "column": 52 - }, - "end": { - "line": 170, - "column": 61 - }, - "identifierName": "KEY_SHIFT" - }, - "name": "KEY_SHIFT" - }, - "computed": false - }, - "computed": true - }, - "operator": "||", - "right": { - "type": "MemberExpression", - "start": 4758, - "end": 4774, - "loc": { - "start": { - "line": 170, - "column": 66 - }, - "end": { - "line": 170, - "column": 82 - } - }, - "object": { - "type": "Identifier", - "start": 4758, - "end": 4765, - "loc": { - "start": { - "line": 170, - "column": 66 - }, - "end": { - "line": 170, - "column": 73 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 4766, - "end": 4774, - "loc": { - "start": { - "line": 170, - "column": 74 - }, - "end": { - "line": 170, - "column": 82 - }, - "identifierName": "planView" - }, - "name": "planView" - }, - "computed": false - } - }, - "operator": "||", - "right": { - "type": "LogicalExpression", - "start": 4779, - "end": 4820, - "loc": { - "start": { - "line": 170, - "column": 87 - }, - "end": { - "line": 170, - "column": 128 - } - }, - "left": { - "type": "UnaryExpression", - "start": 4779, - "end": 4801, - "loc": { - "start": { - "line": 170, - "column": 87 - }, - "end": { - "line": 170, - "column": 109 - } - }, - "operator": "!", - "prefix": true, - "argument": { - "type": "MemberExpression", - "start": 4780, - "end": 4801, - "loc": { - "start": { - "line": 170, - "column": 88 - }, - "end": { - "line": 170, - "column": 109 - } - }, - "object": { - "type": "Identifier", - "start": 4780, - "end": 4787, - "loc": { - "start": { - "line": 170, - "column": 88 - }, - "end": { - "line": 170, - "column": 95 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 4788, - "end": 4801, - "loc": { - "start": { - "line": 170, - "column": 96 - }, - "end": { - "line": 170, - "column": 109 - }, - "identifierName": "panRightClick" - }, - "name": "panRightClick" - }, - "computed": false - }, - "extra": { - "parenthesizedArgument": false - } - }, - "operator": "&&", - "right": { - "type": "Identifier", - "start": 4805, - "end": 4820, - "loc": { - "start": { - "line": 170, - "column": 113 - }, - "end": { - "line": 170, - "column": 128 - }, - "identifierName": "mouseDownMiddle" - }, - "name": "mouseDownMiddle" - }, - "extra": { - "parenthesized": true, - "parenStart": 4778 - } + "line": 194, + "column": 65 } }, - "operator": "||", - "right": { - "type": "LogicalExpression", - "start": 4826, - "end": 4865, + "object": { + "type": "MemberExpression", + "start": 5826, + "end": 5838, "loc": { "start": { - "line": 170, - "column": 134 + "line": 194, + "column": 47 }, "end": { - "line": 170, - "column": 173 + "line": 194, + "column": 59 } }, - "left": { - "type": "MemberExpression", - "start": 4826, - "end": 4847, + "object": { + "type": "Identifier", + "start": 5826, + "end": 5832, "loc": { "start": { - "line": 170, - "column": 134 + "line": 194, + "column": 47 }, "end": { - "line": 170, - "column": 155 - } - }, - "object": { - "type": "Identifier", - "start": 4826, - "end": 4833, - "loc": { - "start": { - "line": 170, - "column": 134 - }, - "end": { - "line": 170, - "column": 141 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 4834, - "end": 4847, - "loc": { - "start": { - "line": 170, - "column": 142 - }, - "end": { - "line": 170, - "column": 155 - }, - "identifierName": "panRightClick" + "line": 194, + "column": 53 }, - "name": "panRightClick" + "identifierName": "camera" }, - "computed": false + "name": "camera" }, - "operator": "&&", - "right": { + "property": { "type": "Identifier", - "start": 4851, - "end": 4865, + "start": 5833, + "end": 5838, "loc": { "start": { - "line": 170, - "column": 159 + "line": 194, + "column": 54 }, "end": { - "line": 170, - "column": 173 + "line": 194, + "column": 59 }, - "identifierName": "mouseDownRight" + "identifierName": "ortho" }, - "name": "mouseDownRight" + "name": "ortho" }, - "extra": { - "parenthesized": true, - "parenStart": 4825 - } + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5839, + "end": 5844, + "loc": { + "start": { + "line": 194, + "column": 60 + }, + "end": { + "line": 194, + "column": 65 + }, + "identifierName": "scale" + }, + "name": "scale" + }, + "computed": false + } + }, + "operator": "*", + "right": { + "type": "BinaryExpression", + "start": 5848, + "end": 5872, + "loc": { + "start": { + "line": 194, + "column": 69 + }, + "end": { + "line": 194, + "column": 93 } + }, + "left": { + "type": "Identifier", + "start": 5848, + "end": 5857, + "loc": { + "start": { + "line": 194, + "column": 69 + }, + "end": { + "line": 194, + "column": 78 + }, + "identifierName": "xPanDelta" + }, + "name": "xPanDelta" + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 5860, + "end": 5872, + "loc": { + "start": { + "line": 194, + "column": 81 + }, + "end": { + "line": 194, + "column": 93 + }, + "identifierName": "canvasHeight" + }, + "name": "canvasHeight" + }, + "extra": { + "parenthesized": true, + "parenStart": 5847 } } - ], - "kind": "const" + } + } + }, + { + "type": "ExpressionStatement", + "start": 5895, + "end": 5970, + "loc": { + "start": { + "line": 195, + "column": 20 + }, + "end": { + "line": 195, + "column": 95 + } }, - { - "type": "IfStatement", - "start": 4885, - "end": 6691, + "expression": { + "type": "AssignmentExpression", + "start": 5895, + "end": 5969, "loc": { "start": { - "line": 172, - "column": 16 + "line": 195, + "column": 20 }, "end": { - "line": 208, - "column": 17 + "line": 195, + "column": 94 } }, - "test": { - "type": "Identifier", - "start": 4889, - "end": 4896, + "operator": "+=", + "left": { + "type": "MemberExpression", + "start": 5895, + "end": 5912, "loc": { "start": { - "line": 172, + "line": 195, "column": 20 }, "end": { - "line": 172, - "column": 27 + "line": 195, + "column": 37 + } + }, + "object": { + "type": "Identifier", + "start": 5895, + "end": 5902, + "loc": { + "start": { + "line": 195, + "column": 20 + }, + "end": { + "line": 195, + "column": 27 + }, + "identifierName": "updates" + }, + "name": "updates" + }, + "property": { + "type": "Identifier", + "start": 5903, + "end": 5912, + "loc": { + "start": { + "line": 195, + "column": 28 + }, + "end": { + "line": 195, + "column": 37 + }, + "identifierName": "panDeltaY" }, - "identifierName": "panning" + "name": "panDeltaY" }, - "name": "panning" + "computed": false }, - "consequent": { - "type": "BlockStatement", - "start": 4898, - "end": 5952, + "right": { + "type": "BinaryExpression", + "start": 5916, + "end": 5969, "loc": { "start": { - "line": 172, - "column": 29 + "line": 195, + "column": 41 }, "end": { "line": 195, - "column": 17 + "column": 94 } }, - "body": [ - { - "type": "VariableDeclaration", - "start": 4921, - "end": 4951, + "left": { + "type": "BinaryExpression", + "start": 5916, + "end": 5940, + "loc": { + "start": { + "line": 195, + "column": 41 + }, + "end": { + "line": 195, + "column": 65 + } + }, + "left": { + "type": "NumericLiteral", + "start": 5916, + "end": 5919, "loc": { "start": { - "line": 174, - "column": 20 + "line": 195, + "column": 41 }, "end": { - "line": 174, - "column": 50 + "line": 195, + "column": 44 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4927, - "end": 4950, + "extra": { + "rawValue": 0.5, + "raw": "0.5" + }, + "value": 0.5 + }, + "operator": "*", + "right": { + "type": "MemberExpression", + "start": 5922, + "end": 5940, + "loc": { + "start": { + "line": 195, + "column": 47 + }, + "end": { + "line": 195, + "column": 65 + } + }, + "object": { + "type": "MemberExpression", + "start": 5922, + "end": 5934, + "loc": { + "start": { + "line": 195, + "column": 47 + }, + "end": { + "line": 195, + "column": 59 + } + }, + "object": { + "type": "Identifier", + "start": 5922, + "end": 5928, "loc": { "start": { - "line": 174, - "column": 26 + "line": 195, + "column": 47 }, "end": { - "line": 174, - "column": 49 - } - }, - "id": { - "type": "Identifier", - "start": 4927, - "end": 4936, - "loc": { - "start": { - "line": 174, - "column": 26 - }, - "end": { - "line": 174, - "column": 35 - }, - "identifierName": "xPanDelta" + "line": 195, + "column": 53 }, - "name": "xPanDelta" + "identifierName": "camera" }, - "init": { - "type": "BinaryExpression", - "start": 4940, - "end": 4949, - "loc": { - "start": { - "line": 174, - "column": 39 - }, - "end": { - "line": 174, - "column": 48 - } - }, - "left": { - "type": "Identifier", - "start": 4940, - "end": 4941, - "loc": { - "start": { - "line": 174, - "column": 39 - }, - "end": { - "line": 174, - "column": 40 - }, - "identifierName": "x" - }, - "name": "x" + "name": "camera" + }, + "property": { + "type": "Identifier", + "start": 5929, + "end": 5934, + "loc": { + "start": { + "line": 195, + "column": 54 }, - "operator": "-", - "right": { - "type": "Identifier", - "start": 4944, - "end": 4949, - "loc": { - "start": { - "line": 174, - "column": 43 - }, - "end": { - "line": 174, - "column": 48 - }, - "identifierName": "lastX" - }, - "name": "lastX" + "end": { + "line": 195, + "column": 59 }, - "extra": { - "parenthesized": true, - "parenStart": 4939 - } - } - } - ], - "kind": "const" + "identifierName": "ortho" + }, + "name": "ortho" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 5935, + "end": 5940, + "loc": { + "start": { + "line": 195, + "column": 60 + }, + "end": { + "line": 195, + "column": 65 + }, + "identifierName": "scale" + }, + "name": "scale" + }, + "computed": false + } + }, + "operator": "*", + "right": { + "type": "BinaryExpression", + "start": 5944, + "end": 5968, + "loc": { + "start": { + "line": 195, + "column": 69 + }, + "end": { + "line": 195, + "column": 93 + } + }, + "left": { + "type": "Identifier", + "start": 5944, + "end": 5953, + "loc": { + "start": { + "line": 195, + "column": 69 + }, + "end": { + "line": 195, + "column": 78 + }, + "identifierName": "yPanDelta" + }, + "name": "yPanDelta" + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 5956, + "end": 5968, + "loc": { + "start": { + "line": 195, + "column": 81 + }, + "end": { + "line": 195, + "column": 93 + }, + "identifierName": "canvasHeight" + }, + "name": "canvasHeight" + }, + "extra": { + "parenthesized": true, + "parenStart": 5943 + } + } + } + } + } + ], + "directives": [] + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " We use only canvasHeight here so that aspect ratio does not distort speed", + "start": 5165, + "end": 5241, + "loc": { + "start": { + "line": 182, + "column": 16 + }, + "end": { + "line": 182, + "column": 92 + } + } + } + ] + } + ], + "directives": [] + }, + "alternate": { + "type": "IfStatement", + "start": 6009, + "end": 6719, + "loc": { + "start": { + "line": 198, + "column": 19 + }, + "end": { + "line": 211, + "column": 13 + } + }, + "test": { + "type": "LogicalExpression", + "start": 6013, + "end": 6065, + "loc": { + "start": { + "line": 198, + "column": 23 + }, + "end": { + "line": 198, + "column": 75 + } + }, + "left": { + "type": "LogicalExpression", + "start": 6013, + "end": 6046, + "loc": { + "start": { + "line": 198, + "column": 23 + }, + "end": { + "line": 198, + "column": 56 + } + }, + "left": { + "type": "Identifier", + "start": 6013, + "end": 6026, + "loc": { + "start": { + "line": 198, + "column": 23 + }, + "end": { + "line": 198, + "column": 36 + }, + "identifierName": "mouseDownLeft" + }, + "name": "mouseDownLeft" + }, + "operator": "&&", + "right": { + "type": "UnaryExpression", + "start": 6030, + "end": 6046, + "loc": { + "start": { + "line": 198, + "column": 40 + }, + "end": { + "line": 198, + "column": 56 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 6031, + "end": 6046, + "loc": { + "start": { + "line": 198, + "column": 41 + }, + "end": { + "line": 198, + "column": 56 + }, + "identifierName": "mouseDownMiddle" + }, + "name": "mouseDownMiddle" + }, + "extra": { + "parenthesizedArgument": false + } + } + }, + "operator": "&&", + "right": { + "type": "UnaryExpression", + "start": 6050, + "end": 6065, + "loc": { + "start": { + "line": 198, + "column": 60 + }, + "end": { + "line": 198, + "column": 75 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 6051, + "end": 6065, + "loc": { + "start": { + "line": 198, + "column": 61 + }, + "end": { + "line": 198, + "column": 75 + }, + "identifierName": "mouseDownRight" + }, + "name": "mouseDownRight" + }, + "extra": { + "parenthesizedArgument": false + } + } + }, + "consequent": { + "type": "BlockStatement", + "start": 6067, + "end": 6719, + "loc": { + "start": { + "line": 198, + "column": 77 + }, + "end": { + "line": 211, + "column": 13 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 6086, + "end": 6705, + "loc": { + "start": { + "line": 200, + "column": 16 + }, + "end": { + "line": 210, + "column": 17 + } + }, + "test": { + "type": "UnaryExpression", + "start": 6090, + "end": 6107, + "loc": { + "start": { + "line": 200, + "column": 20 + }, + "end": { + "line": 200, + "column": 37 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "MemberExpression", + "start": 6091, + "end": 6107, + "loc": { + "start": { + "line": 200, + "column": 21 + }, + "end": { + "line": 200, + "column": 37 + } + }, + "object": { + "type": "Identifier", + "start": 6091, + "end": 6098, + "loc": { + "start": { + "line": 200, + "column": 21 + }, + "end": { + "line": 200, + "column": 28 + }, + "identifierName": "configs" + }, + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 6099, + "end": 6107, + "loc": { + "start": { + "line": 200, + "column": 29 + }, + "end": { + "line": 200, + "column": 37 + }, + "identifierName": "planView" + }, + "name": "planView" + }, + "computed": false + }, + "extra": { + "parenthesizedArgument": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 6109, + "end": 6705, + "loc": { + "start": { + "line": 200, + "column": 39 + }, + "end": { + "line": 210, + "column": 17 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 6165, + "end": 6687, + "loc": { + "start": { + "line": 202, + "column": 20 + }, + "end": { + "line": 209, + "column": 21 + } + }, + "test": { + "type": "MemberExpression", + "start": 6169, + "end": 6188, + "loc": { + "start": { + "line": 202, + "column": 24 }, - { - "type": "VariableDeclaration", - "start": 4972, - "end": 5002, - "loc": { - "start": { - "line": 175, - "column": 20 - }, - "end": { - "line": 175, - "column": 50 - } + "end": { + "line": 202, + "column": 43 + } + }, + "object": { + "type": "Identifier", + "start": 6169, + "end": 6176, + "loc": { + "start": { + "line": 202, + "column": 24 }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 4978, - "end": 5001, - "loc": { - "start": { - "line": 175, - "column": 26 - }, - "end": { - "line": 175, - "column": 49 - } - }, - "id": { - "type": "Identifier", - "start": 4978, - "end": 4987, - "loc": { - "start": { - "line": 175, - "column": 26 - }, - "end": { - "line": 175, - "column": 35 - }, - "identifierName": "yPanDelta" - }, - "name": "yPanDelta" - }, - "init": { - "type": "BinaryExpression", - "start": 4991, - "end": 5000, - "loc": { - "start": { - "line": 175, - "column": 39 - }, - "end": { - "line": 175, - "column": 48 - } - }, - "left": { - "type": "Identifier", - "start": 4991, - "end": 4992, - "loc": { - "start": { - "line": 175, - "column": 39 - }, - "end": { - "line": 175, - "column": 40 - }, - "identifierName": "y" - }, - "name": "y" - }, - "operator": "-", - "right": { - "type": "Identifier", - "start": 4995, - "end": 5000, - "loc": { - "start": { - "line": 175, - "column": 43 - }, - "end": { - "line": 175, - "column": 48 - }, - "identifierName": "lastY" - }, - "name": "lastY" - }, - "extra": { - "parenthesized": true, - "parenStart": 4990 - } - } - } - ], - "kind": "const" + "end": { + "line": 202, + "column": 31 + }, + "identifierName": "configs" }, - { - "type": "VariableDeclaration", - "start": 5024, - "end": 5052, - "loc": { - "start": { - "line": 177, - "column": 20 - }, - "end": { - "line": 177, - "column": 48 - } + "name": "configs", + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 6177, + "end": 6188, + "loc": { + "start": { + "line": 202, + "column": 32 }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 5030, - "end": 5051, - "loc": { - "start": { - "line": 177, - "column": 26 - }, - "end": { - "line": 177, - "column": 47 - } - }, - "id": { - "type": "Identifier", - "start": 5030, - "end": 5036, - "loc": { - "start": { - "line": 177, - "column": 26 - }, - "end": { - "line": 177, - "column": 32 - }, - "identifierName": "camera" - }, - "name": "camera" - }, - "init": { - "type": "MemberExpression", - "start": 5039, - "end": 5051, - "loc": { - "start": { - "line": 177, - "column": 35 - }, - "end": { - "line": 177, - "column": 47 - } - }, - "object": { - "type": "Identifier", - "start": 5039, - "end": 5044, - "loc": { - "start": { - "line": 177, - "column": 35 - }, - "end": { - "line": 177, - "column": 40 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "property": { - "type": "Identifier", - "start": 5045, - "end": 5051, - "loc": { - "start": { - "line": 177, - "column": 41 - }, - "end": { - "line": 177, - "column": 47 - }, - "identifierName": "camera" - }, - "name": "camera" - }, - "computed": false - } - } - ], - "kind": "const", - "trailingComments": [ - { - "type": "CommentLine", - "value": " We use only canvasHeight here so that aspect ratio does not distort speed", - "start": 5074, - "end": 5150, - "loc": { - "start": { - "line": 179, - "column": 20 - }, - "end": { - "line": 179, - "column": 96 - } - } - } - ] + "end": { + "line": 202, + "column": 43 + }, + "identifierName": "firstPerson" + }, + "name": "firstPerson" + }, + "computed": false, + "leadingComments": null + }, + "consequent": { + "type": "BlockStatement", + "start": 6190, + "end": 6433, + "loc": { + "start": { + "line": 202, + "column": 45 }, + "end": { + "line": 206, + "column": 21 + } + }, + "body": [ { - "type": "IfStatement", - "start": 5172, - "end": 5933, + "type": "ExpressionStatement", + "start": 6216, + "end": 6299, "loc": { "start": { - "line": 181, - "column": 20 + "line": 203, + "column": 24 }, "end": { - "line": 193, - "column": 21 + "line": 203, + "column": 107 } }, - "test": { - "type": "BinaryExpression", - "start": 5176, - "end": 5211, + "expression": { + "type": "AssignmentExpression", + "start": 6216, + "end": 6298, "loc": { "start": { - "line": 181, + "line": 203, "column": 24 }, "end": { - "line": 181, - "column": 59 + "line": 203, + "column": 106 } }, + "operator": "-=", "left": { "type": "MemberExpression", - "start": 5176, - "end": 5193, + "start": 6216, + "end": 6236, "loc": { "start": { - "line": 181, + "line": 203, "column": 24 }, "end": { - "line": 181, - "column": 41 + "line": 203, + "column": 44 } }, "object": { "type": "Identifier", - "start": 5176, - "end": 5182, + "start": 6216, + "end": 6223, "loc": { "start": { - "line": 181, + "line": 203, "column": 24 }, "end": { - "line": 181, - "column": 30 + "line": 203, + "column": 31 }, - "identifierName": "camera" + "identifierName": "updates" }, - "name": "camera", - "leadingComments": null + "name": "updates" }, "property": { "type": "Identifier", - "start": 5183, - "end": 5193, + "start": 6224, + "end": 6236, "loc": { "start": { - "line": 181, - "column": 31 + "line": 203, + "column": 32 }, "end": { - "line": 181, - "column": 41 + "line": 203, + "column": 44 }, - "identifierName": "projection" + "identifierName": "rotateDeltaY" }, - "name": "projection" + "name": "rotateDeltaY" }, - "computed": false, - "leadingComments": null + "computed": false }, - "operator": "===", "right": { - "type": "StringLiteral", - "start": 5198, - "end": 5211, + "type": "BinaryExpression", + "start": 6240, + "end": 6298, "loc": { "start": { - "line": 181, - "column": 46 + "line": 203, + "column": 48 }, "end": { - "line": 181, - "column": 59 + "line": 203, + "column": 106 } }, - "extra": { - "rawValue": "perspective", - "raw": "\"perspective\"" - }, - "value": "perspective" - }, - "leadingComments": null - }, - "consequent": { - "type": "BlockStatement", - "start": 5213, - "end": 5703, - "loc": { - "start": { - "line": 181, - "column": 61 - }, - "end": { - "line": 189, - "column": 21 - } - }, - "body": [ - { - "type": "VariableDeclaration", - "start": 5240, - "end": 5374, + "left": { + "type": "BinaryExpression", + "start": 6240, + "end": 6294, "loc": { "start": { - "line": 183, - "column": 24 + "line": 203, + "column": 48 }, "end": { - "line": 183, - "column": 158 + "line": 203, + "column": 102 } }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 5246, - "end": 5373, + "left": { + "type": "BinaryExpression", + "start": 6241, + "end": 6266, + "loc": { + "start": { + "line": 203, + "column": 49 + }, + "end": { + "line": 203, + "column": 74 + } + }, + "left": { + "type": "BinaryExpression", + "start": 6242, + "end": 6251, "loc": { "start": { - "line": 183, - "column": 30 + "line": 203, + "column": 50 }, "end": { - "line": 183, - "column": 157 + "line": 203, + "column": 59 } }, - "id": { + "left": { "type": "Identifier", - "start": 5246, - "end": 5251, + "start": 6242, + "end": 6243, "loc": { "start": { - "line": 183, - "column": 30 + "line": 203, + "column": 50 }, "end": { - "line": 183, - "column": 35 + "line": 203, + "column": 51 }, - "identifierName": "depth" + "identifierName": "x" }, - "name": "depth" + "name": "x" }, - "init": { - "type": "CallExpression", - "start": 5254, - "end": 5373, + "operator": "-", + "right": { + "type": "Identifier", + "start": 6246, + "end": 6251, "loc": { "start": { - "line": 183, - "column": 38 + "line": 203, + "column": 54 }, "end": { - "line": 183, - "column": 157 - } - }, - "callee": { - "type": "MemberExpression", - "start": 5254, - "end": 5262, - "loc": { - "start": { - "line": 183, - "column": 38 - }, - "end": { - "line": 183, - "column": 46 - } - }, - "object": { - "type": "Identifier", - "start": 5254, - "end": 5258, - "loc": { - "start": { - "line": 183, - "column": 38 - }, - "end": { - "line": 183, - "column": 42 - }, - "identifierName": "Math" - }, - "name": "Math" + "line": 203, + "column": 59 }, - "property": { - "type": "Identifier", - "start": 5259, - "end": 5262, - "loc": { - "start": { - "line": 183, - "column": 43 - }, - "end": { - "line": 183, - "column": 46 - }, - "identifierName": "abs" - }, - "name": "abs" - }, - "computed": false + "identifierName": "lastX" }, - "arguments": [ - { - "type": "ConditionalExpression", - "start": 5263, - "end": 5372, - "loc": { - "start": { - "line": 183, - "column": 47 - }, - "end": { - "line": 183, - "column": 156 - } - }, - "test": { - "type": "Identifier", - "start": 5263, - "end": 5278, - "loc": { - "start": { - "line": 183, - "column": 47 - }, - "end": { - "line": 183, - "column": 62 - }, - "identifierName": "mouseDownPicked" - }, - "name": "mouseDownPicked" - }, - "consequent": { - "type": "CallExpression", - "start": 5281, - "end": 5345, - "loc": { - "start": { - "line": 183, - "column": 65 - }, - "end": { - "line": 183, - "column": 129 - } - }, - "callee": { - "type": "MemberExpression", - "start": 5281, - "end": 5293, - "loc": { - "start": { - "line": 183, - "column": 65 - }, - "end": { - "line": 183, - "column": 77 - } - }, - "object": { - "type": "Identifier", - "start": 5281, - "end": 5285, - "loc": { - "start": { - "line": 183, - "column": 65 - }, - "end": { - "line": 183, - "column": 69 - }, - "identifierName": "math" - }, - "name": "math" - }, - "property": { - "type": "Identifier", - "start": 5286, - "end": 5293, - "loc": { - "start": { - "line": 183, - "column": 70 - }, - "end": { - "line": 183, - "column": 77 - }, - "identifierName": "lenVec3" - }, - "name": "lenVec3" - }, - "computed": false - }, - "arguments": [ - { - "type": "CallExpression", - "start": 5294, - "end": 5344, - "loc": { - "start": { - "line": 183, - "column": 78 - }, - "end": { - "line": 183, - "column": 128 - } - }, - "callee": { - "type": "MemberExpression", - "start": 5294, - "end": 5306, - "loc": { - "start": { - "line": 183, - "column": 78 - }, - "end": { - "line": 183, - "column": 90 - } - }, - "object": { - "type": "Identifier", - "start": 5294, - "end": 5298, - "loc": { - "start": { - "line": 183, - "column": 78 - }, - "end": { - "line": 183, - "column": 82 - }, - "identifierName": "math" - }, - "name": "math" - }, - "property": { - "type": "Identifier", - "start": 5299, - "end": 5306, - "loc": { - "start": { - "line": 183, - "column": 83 - }, - "end": { - "line": 183, - "column": 90 - }, - "identifierName": "subVec3" - }, - "name": "subVec3" - }, - "computed": false - }, - "arguments": [ - { - "type": "Identifier", - "start": 5307, - "end": 5321, - "loc": { - "start": { - "line": 183, - "column": 91 - }, - "end": { - "line": 183, - "column": 105 - }, - "identifierName": "pickedWorldPos" - }, - "name": "pickedWorldPos" - }, - { - "type": "MemberExpression", - "start": 5323, - "end": 5339, - "loc": { - "start": { - "line": 183, - "column": 107 - }, - "end": { - "line": 183, - "column": 123 - } - }, - "object": { - "type": "MemberExpression", - "start": 5323, - "end": 5335, - "loc": { - "start": { - "line": 183, - "column": 107 - }, - "end": { - "line": 183, - "column": 119 - } - }, - "object": { - "type": "Identifier", - "start": 5323, - "end": 5328, - "loc": { - "start": { - "line": 183, - "column": 107 - }, - "end": { - "line": 183, - "column": 112 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "property": { - "type": "Identifier", - "start": 5329, - "end": 5335, - "loc": { - "start": { - "line": 183, - "column": 113 - }, - "end": { - "line": 183, - "column": 119 - }, - "identifierName": "camera" - }, - "name": "camera" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5336, - "end": 5339, - "loc": { - "start": { - "line": 183, - "column": 120 - }, - "end": { - "line": 183, - "column": 123 - }, - "identifierName": "eye" - }, - "name": "eye" - }, - "computed": false - }, - { - "type": "ArrayExpression", - "start": 5341, - "end": 5343, - "loc": { - "start": { - "line": 183, - "column": 125 - }, - "end": { - "line": 183, - "column": 127 - } - }, - "elements": [] - } - ] - } - ] - }, - "alternate": { - "type": "MemberExpression", - "start": 5348, - "end": 5372, - "loc": { - "start": { - "line": 183, - "column": 132 - }, - "end": { - "line": 183, - "column": 156 - } - }, - "object": { - "type": "MemberExpression", - "start": 5348, - "end": 5360, - "loc": { - "start": { - "line": 183, - "column": 132 - }, - "end": { - "line": 183, - "column": 144 - } - }, - "object": { - "type": "Identifier", - "start": 5348, - "end": 5353, - "loc": { - "start": { - "line": 183, - "column": 132 - }, - "end": { - "line": 183, - "column": 137 - }, - "identifierName": "scene" - }, - "name": "scene" - }, - "property": { - "type": "Identifier", - "start": 5354, - "end": 5360, - "loc": { - "start": { - "line": 183, - "column": 138 - }, - "end": { - "line": 183, - "column": 144 - }, - "identifierName": "camera" - }, - "name": "camera" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5361, - "end": 5372, - "loc": { - "start": { - "line": 183, - "column": 145 - }, - "end": { - "line": 183, - "column": 156 - }, - "identifierName": "eyeLookDist" - }, - "name": "eyeLookDist" - }, - "computed": false - } - } - ] + "name": "lastX" + }, + "extra": { + "parenthesized": true, + "parenStart": 6241 } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 5399, - "end": 5487, - "loc": { - "start": { - "line": 184, - "column": 24 }, - "end": { - "line": 184, - "column": 112 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 5405, - "end": 5486, + "operator": "/", + "right": { + "type": "Identifier", + "start": 6255, + "end": 6266, "loc": { "start": { - "line": 184, - "column": 30 + "line": 203, + "column": 63 }, "end": { - "line": 184, - "column": 111 - } - }, - "id": { - "type": "Identifier", - "start": 5405, - "end": 5419, - "loc": { - "start": { - "line": 184, - "column": 30 - }, - "end": { - "line": 184, - "column": 44 - }, - "identifierName": "targetDistance" + "line": 203, + "column": 74 }, - "name": "targetDistance" + "identifierName": "canvasWidth" }, - "init": { - "type": "BinaryExpression", - "start": 5422, - "end": 5486, - "loc": { - "start": { - "line": 184, - "column": 47 - }, - "end": { - "line": 184, - "column": 111 - } - }, - "left": { - "type": "Identifier", - "start": 5422, - "end": 5427, - "loc": { - "start": { - "line": 184, - "column": 47 - }, - "end": { - "line": 184, - "column": 52 - }, - "identifierName": "depth" - }, - "name": "depth" - }, - "operator": "*", - "right": { - "type": "CallExpression", - "start": 5430, - "end": 5486, - "loc": { - "start": { - "line": 184, - "column": 55 - }, - "end": { - "line": 184, - "column": 111 - } - }, - "callee": { - "type": "MemberExpression", - "start": 5430, - "end": 5438, - "loc": { - "start": { - "line": 184, - "column": 55 - }, - "end": { - "line": 184, - "column": 63 - } - }, - "object": { - "type": "Identifier", - "start": 5430, - "end": 5434, - "loc": { - "start": { - "line": 184, - "column": 55 - }, - "end": { - "line": 184, - "column": 59 - }, - "identifierName": "Math" - }, - "name": "Math" - }, - "property": { - "type": "Identifier", - "start": 5435, - "end": 5438, - "loc": { - "start": { - "line": 184, - "column": 60 - }, - "end": { - "line": 184, - "column": 63 - }, - "identifierName": "tan" - }, - "name": "tan" - }, - "computed": false - }, - "arguments": [ - { - "type": "BinaryExpression", - "start": 5439, - "end": 5485, - "loc": { - "start": { - "line": 184, - "column": 64 - }, - "end": { - "line": 184, - "column": 110 - } - }, - "left": { - "type": "BinaryExpression", - "start": 5439, - "end": 5477, - "loc": { - "start": { - "line": 184, - "column": 64 - }, - "end": { - "line": 184, - "column": 102 - } - }, - "left": { - "type": "BinaryExpression", - "start": 5440, - "end": 5466, - "loc": { - "start": { - "line": 184, - "column": 65 - }, - "end": { - "line": 184, - "column": 91 - } - }, - "left": { - "type": "MemberExpression", - "start": 5440, - "end": 5462, - "loc": { - "start": { - "line": 184, - "column": 65 - }, - "end": { - "line": 184, - "column": 87 - } - }, - "object": { - "type": "MemberExpression", - "start": 5440, - "end": 5458, - "loc": { - "start": { - "line": 184, - "column": 65 - }, - "end": { - "line": 184, - "column": 83 - } - }, - "object": { - "type": "Identifier", - "start": 5440, - "end": 5446, - "loc": { - "start": { - "line": 184, - "column": 65 - }, - "end": { - "line": 184, - "column": 71 - }, - "identifierName": "camera" - }, - "name": "camera" - }, - "property": { - "type": "Identifier", - "start": 5447, - "end": 5458, - "loc": { - "start": { - "line": 184, - "column": 72 - }, - "end": { - "line": 184, - "column": 83 - }, - "identifierName": "perspective" - }, - "name": "perspective" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5459, - "end": 5462, - "loc": { - "start": { - "line": 184, - "column": 84 - }, - "end": { - "line": 184, - "column": 87 - }, - "identifierName": "fov" - }, - "name": "fov" - }, - "computed": false - }, - "operator": "/", - "right": { - "type": "NumericLiteral", - "start": 5465, - "end": 5466, - "loc": { - "start": { - "line": 184, - "column": 90 - }, - "end": { - "line": 184, - "column": 91 - } - }, - "extra": { - "rawValue": 2, - "raw": "2" - }, - "value": 2 - }, - "extra": { - "parenthesized": true, - "parenStart": 5439 - } - }, - "operator": "*", - "right": { - "type": "MemberExpression", - "start": 5470, - "end": 5477, - "loc": { - "start": { - "line": 184, - "column": 95 - }, - "end": { - "line": 184, - "column": 102 - } - }, - "object": { - "type": "Identifier", - "start": 5470, - "end": 5474, - "loc": { - "start": { - "line": 184, - "column": 95 - }, - "end": { - "line": 184, - "column": 99 - }, - "identifierName": "Math" - }, - "name": "Math" - }, - "property": { - "type": "Identifier", - "start": 5475, - "end": 5477, - "loc": { - "start": { - "line": 184, - "column": 100 - }, - "end": { - "line": 184, - "column": 102 - }, - "identifierName": "PI" - }, - "name": "PI" - }, - "computed": false - } - }, - "operator": "/", - "right": { - "type": "NumericLiteral", - "start": 5480, - "end": 5485, - "loc": { - "start": { - "line": 184, - "column": 105 - }, - "end": { - "line": 184, - "column": 110 - } - }, - "extra": { - "rawValue": 180, - "raw": "180.0" - }, - "value": 180 - } - } - ] - } - } - } - ], - "kind": "const" - }, - { - "type": "ExpressionStatement", - "start": 5513, - "end": 5584, - "loc": { - "start": { - "line": 186, - "column": 24 + "name": "canvasWidth" }, - "end": { - "line": 186, - "column": 95 + "extra": { + "parenthesized": true, + "parenStart": 6240 } }, - "expression": { - "type": "AssignmentExpression", - "start": 5513, - "end": 5583, + "operator": "*", + "right": { + "type": "MemberExpression", + "start": 6270, + "end": 6294, "loc": { "start": { - "line": 186, - "column": 24 + "line": 203, + "column": 78 }, "end": { - "line": 186, - "column": 94 + "line": 203, + "column": 102 } }, - "operator": "+=", - "left": { - "type": "MemberExpression", - "start": 5513, - "end": 5530, + "object": { + "type": "Identifier", + "start": 6270, + "end": 6277, "loc": { "start": { - "line": 186, - "column": 24 + "line": 203, + "column": 78 }, "end": { - "line": 186, - "column": 41 - } - }, - "object": { - "type": "Identifier", - "start": 5513, - "end": 5520, - "loc": { - "start": { - "line": 186, - "column": 24 - }, - "end": { - "line": 186, - "column": 31 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 5521, - "end": 5530, - "loc": { - "start": { - "line": 186, - "column": 32 - }, - "end": { - "line": 186, - "column": 41 - }, - "identifierName": "panDeltaX" + "line": 203, + "column": 85 }, - "name": "panDeltaX" + "identifierName": "configs" }, - "computed": false + "name": "configs" }, - "right": { - "type": "BinaryExpression", - "start": 5535, - "end": 5582, + "property": { + "type": "Identifier", + "start": 6278, + "end": 6294, "loc": { "start": { - "line": 186, - "column": 46 + "line": 203, + "column": 86 }, "end": { - "line": 186, - "column": 93 - } - }, - "left": { - "type": "BinaryExpression", - "start": 5535, - "end": 5567, - "loc": { - "start": { - "line": 186, - "column": 46 - }, - "end": { - "line": 186, - "column": 78 - } - }, - "left": { - "type": "BinaryExpression", - "start": 5535, - "end": 5550, - "loc": { - "start": { - "line": 186, - "column": 46 - }, - "end": { - "line": 186, - "column": 61 - } - }, - "left": { - "type": "NumericLiteral", - "start": 5535, - "end": 5538, - "loc": { - "start": { - "line": 186, - "column": 46 - }, - "end": { - "line": 186, - "column": 49 - } - }, - "extra": { - "rawValue": 1.5, - "raw": "1.5" - }, - "value": 1.5 - }, - "operator": "*", - "right": { - "type": "Identifier", - "start": 5541, - "end": 5550, - "loc": { - "start": { - "line": 186, - "column": 52 - }, - "end": { - "line": 186, - "column": 61 - }, - "identifierName": "xPanDelta" - }, - "name": "xPanDelta" - } - }, - "operator": "*", - "right": { - "type": "Identifier", - "start": 5553, - "end": 5567, - "loc": { - "start": { - "line": 186, - "column": 64 - }, - "end": { - "line": 186, - "column": 78 - }, - "identifierName": "targetDistance" - }, - "name": "targetDistance" - } - }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 5570, - "end": 5582, - "loc": { - "start": { - "line": 186, - "column": 81 - }, - "end": { - "line": 186, - "column": 93 - }, - "identifierName": "canvasHeight" + "line": 203, + "column": 102 }, - "name": "canvasHeight" + "identifierName": "dragRotationRate" }, - "extra": { - "parenthesized": true, - "parenStart": 5534 - } + "name": "dragRotationRate" + }, + "computed": false + } + }, + "operator": "/", + "right": { + "type": "NumericLiteral", + "start": 6297, + "end": 6298, + "loc": { + "start": { + "line": 203, + "column": 105 + }, + "end": { + "line": 203, + "column": 106 } + }, + "extra": { + "rawValue": 2, + "raw": "2" + }, + "value": 2 + } + } + } + }, + { + "type": "ExpressionStatement", + "start": 6324, + "end": 6410, + "loc": { + "start": { + "line": 204, + "column": 24 + }, + "end": { + "line": 204, + "column": 110 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6324, + "end": 6409, + "loc": { + "start": { + "line": 204, + "column": 24 + }, + "end": { + "line": 204, + "column": 109 + } + }, + "operator": "+=", + "left": { + "type": "MemberExpression", + "start": 6324, + "end": 6344, + "loc": { + "start": { + "line": 204, + "column": 24 + }, + "end": { + "line": 204, + "column": 44 + } + }, + "object": { + "type": "Identifier", + "start": 6324, + "end": 6331, + "loc": { + "start": { + "line": 204, + "column": 24 + }, + "end": { + "line": 204, + "column": 31 + }, + "identifierName": "updates" + }, + "name": "updates" + }, + "property": { + "type": "Identifier", + "start": 6332, + "end": 6344, + "loc": { + "start": { + "line": 204, + "column": 32 + }, + "end": { + "line": 204, + "column": 44 + }, + "identifierName": "rotateDeltaX" + }, + "name": "rotateDeltaX" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 6348, + "end": 6409, + "loc": { + "start": { + "line": 204, + "column": 48 + }, + "end": { + "line": 204, + "column": 109 } }, - { - "type": "ExpressionStatement", - "start": 5609, - "end": 5680, + "left": { + "type": "BinaryExpression", + "start": 6349, + "end": 6375, "loc": { "start": { - "line": 187, - "column": 24 + "line": 204, + "column": 49 }, "end": { - "line": 187, - "column": 95 + "line": 204, + "column": 75 } }, - "expression": { - "type": "AssignmentExpression", - "start": 5609, - "end": 5679, + "left": { + "type": "BinaryExpression", + "start": 6350, + "end": 6359, "loc": { "start": { - "line": 187, - "column": 24 + "line": 204, + "column": 50 }, "end": { - "line": 187, - "column": 94 + "line": 204, + "column": 59 } }, - "operator": "+=", "left": { - "type": "MemberExpression", - "start": 5609, - "end": 5626, + "type": "Identifier", + "start": 6350, + "end": 6351, "loc": { "start": { - "line": 187, - "column": 24 + "line": 204, + "column": 50 }, "end": { - "line": 187, - "column": 41 - } - }, - "object": { - "type": "Identifier", - "start": 5609, - "end": 5616, - "loc": { - "start": { - "line": 187, - "column": 24 - }, - "end": { - "line": 187, - "column": 31 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 5617, - "end": 5626, - "loc": { - "start": { - "line": 187, - "column": 32 - }, - "end": { - "line": 187, - "column": 41 - }, - "identifierName": "panDeltaY" + "line": 204, + "column": 51 }, - "name": "panDeltaY" + "identifierName": "y" }, - "computed": false + "name": "y" }, + "operator": "-", "right": { - "type": "BinaryExpression", - "start": 5631, - "end": 5678, + "type": "Identifier", + "start": 6354, + "end": 6359, "loc": { "start": { - "line": 187, - "column": 46 + "line": 204, + "column": 54 }, "end": { - "line": 187, - "column": 93 - } + "line": 204, + "column": 59 + }, + "identifierName": "lastY" }, - "left": { - "type": "BinaryExpression", - "start": 5631, - "end": 5663, - "loc": { - "start": { - "line": 187, - "column": 46 - }, - "end": { - "line": 187, - "column": 78 - } + "name": "lastY" + }, + "extra": { + "parenthesized": true, + "parenStart": 6349 + } + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 6363, + "end": 6375, + "loc": { + "start": { + "line": 204, + "column": 63 + }, + "end": { + "line": 204, + "column": 75 + }, + "identifierName": "canvasHeight" + }, + "name": "canvasHeight" + }, + "extra": { + "parenthesized": true, + "parenStart": 6348 + } + }, + "operator": "*", + "right": { + "type": "BinaryExpression", + "start": 6380, + "end": 6408, + "loc": { + "start": { + "line": 204, + "column": 80 + }, + "end": { + "line": 204, + "column": 108 + } + }, + "left": { + "type": "MemberExpression", + "start": 6380, + "end": 6404, + "loc": { + "start": { + "line": 204, + "column": 80 + }, + "end": { + "line": 204, + "column": 104 + } + }, + "object": { + "type": "Identifier", + "start": 6380, + "end": 6387, + "loc": { + "start": { + "line": 204, + "column": 80 }, - "left": { - "type": "BinaryExpression", - "start": 5631, - "end": 5646, - "loc": { - "start": { - "line": 187, - "column": 46 - }, - "end": { - "line": 187, - "column": 61 - } - }, - "left": { - "type": "NumericLiteral", - "start": 5631, - "end": 5634, - "loc": { - "start": { - "line": 187, - "column": 46 - }, - "end": { - "line": 187, - "column": 49 - } - }, - "extra": { - "rawValue": 1.5, - "raw": "1.5" - }, - "value": 1.5 - }, - "operator": "*", - "right": { - "type": "Identifier", - "start": 5637, - "end": 5646, - "loc": { - "start": { - "line": 187, - "column": 52 - }, - "end": { - "line": 187, - "column": 61 - }, - "identifierName": "yPanDelta" - }, - "name": "yPanDelta" - } + "end": { + "line": 204, + "column": 87 }, - "operator": "*", - "right": { - "type": "Identifier", - "start": 5649, - "end": 5663, - "loc": { - "start": { - "line": 187, - "column": 64 - }, - "end": { - "line": 187, - "column": 78 - }, - "identifierName": "targetDistance" - }, - "name": "targetDistance" - } + "identifierName": "configs" }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 5666, - "end": 5678, - "loc": { - "start": { - "line": 187, - "column": 81 - }, - "end": { - "line": 187, - "column": 93 - }, - "identifierName": "canvasHeight" + "name": "configs" + }, + "property": { + "type": "Identifier", + "start": 6388, + "end": 6404, + "loc": { + "start": { + "line": 204, + "column": 88 }, - "name": "canvasHeight" + "end": { + "line": 204, + "column": 104 + }, + "identifierName": "dragRotationRate" }, - "extra": { - "parenthesized": true, - "parenStart": 5630 + "name": "dragRotationRate" + }, + "computed": false + }, + "operator": "/", + "right": { + "type": "NumericLiteral", + "start": 6407, + "end": 6408, + "loc": { + "start": { + "line": 204, + "column": 107 + }, + "end": { + "line": 204, + "column": 108 } - } + }, + "extra": { + "rawValue": 4, + "raw": "4" + }, + "value": 4 + }, + "extra": { + "parenthesized": true, + "parenStart": 6379 } } - ], - "directives": [] + } + } + } + ], + "directives": [] + }, + "alternate": { + "type": "BlockStatement", + "start": 6439, + "end": 6687, + "loc": { + "start": { + "line": 206, + "column": 27 + }, + "end": { + "line": 209, + "column": 21 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 6465, + "end": 6552, + "loc": { + "start": { + "line": 207, + "column": 24 + }, + "end": { + "line": 207, + "column": 111 + } }, - "alternate": { - "type": "BlockStatement", - "start": 5709, - "end": 5933, + "expression": { + "type": "AssignmentExpression", + "start": 6465, + "end": 6551, "loc": { "start": { - "line": 189, - "column": 27 + "line": 207, + "column": 24 }, "end": { - "line": 193, - "column": 21 + "line": 207, + "column": 110 } }, - "body": [ - { - "type": "ExpressionStatement", - "start": 5736, - "end": 5811, + "operator": "-=", + "left": { + "type": "MemberExpression", + "start": 6465, + "end": 6485, + "loc": { + "start": { + "line": 207, + "column": 24 + }, + "end": { + "line": 207, + "column": 44 + } + }, + "object": { + "type": "Identifier", + "start": 6465, + "end": 6472, "loc": { "start": { - "line": 191, + "line": 207, "column": 24 }, "end": { - "line": 191, - "column": 99 + "line": 207, + "column": 31 + }, + "identifierName": "updates" + }, + "name": "updates" + }, + "property": { + "type": "Identifier", + "start": 6473, + "end": 6485, + "loc": { + "start": { + "line": 207, + "column": 32 + }, + "end": { + "line": 207, + "column": 44 + }, + "identifierName": "rotateDeltaY" + }, + "name": "rotateDeltaY" + }, + "computed": false + }, + "right": { + "type": "BinaryExpression", + "start": 6489, + "end": 6551, + "loc": { + "start": { + "line": 207, + "column": 48 + }, + "end": { + "line": 207, + "column": 110 + } + }, + "left": { + "type": "BinaryExpression", + "start": 6490, + "end": 6515, + "loc": { + "start": { + "line": 207, + "column": 49 + }, + "end": { + "line": 207, + "column": 74 } }, - "expression": { - "type": "AssignmentExpression", - "start": 5736, - "end": 5810, + "left": { + "type": "BinaryExpression", + "start": 6491, + "end": 6500, "loc": { "start": { - "line": 191, - "column": 24 + "line": 207, + "column": 50 }, "end": { - "line": 191, - "column": 98 + "line": 207, + "column": 59 } }, - "operator": "+=", "left": { - "type": "MemberExpression", - "start": 5736, - "end": 5753, + "type": "Identifier", + "start": 6491, + "end": 6492, "loc": { "start": { - "line": 191, - "column": 24 + "line": 207, + "column": 50 }, "end": { - "line": 191, - "column": 41 - } - }, - "object": { - "type": "Identifier", - "start": 5736, - "end": 5743, - "loc": { - "start": { - "line": 191, - "column": 24 - }, - "end": { - "line": 191, - "column": 31 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 5744, - "end": 5753, - "loc": { - "start": { - "line": 191, - "column": 32 - }, - "end": { - "line": 191, - "column": 41 - }, - "identifierName": "panDeltaX" + "line": 207, + "column": 51 }, - "name": "panDeltaX" + "identifierName": "x" }, - "computed": false + "name": "x" }, + "operator": "-", "right": { - "type": "BinaryExpression", - "start": 5757, - "end": 5810, + "type": "Identifier", + "start": 6495, + "end": 6500, "loc": { "start": { - "line": 191, - "column": 45 + "line": 207, + "column": 54 }, "end": { - "line": 191, - "column": 98 - } - }, - "left": { - "type": "BinaryExpression", - "start": 5757, - "end": 5781, - "loc": { - "start": { - "line": 191, - "column": 45 - }, - "end": { - "line": 191, - "column": 69 - } - }, - "left": { - "type": "NumericLiteral", - "start": 5757, - "end": 5760, - "loc": { - "start": { - "line": 191, - "column": 45 - }, - "end": { - "line": 191, - "column": 48 - } - }, - "extra": { - "rawValue": 0.5, - "raw": "0.5" - }, - "value": 0.5 + "line": 207, + "column": 59 }, - "operator": "*", - "right": { - "type": "MemberExpression", - "start": 5763, - "end": 5781, - "loc": { - "start": { - "line": 191, - "column": 51 - }, - "end": { - "line": 191, - "column": 69 - } - }, - "object": { - "type": "MemberExpression", - "start": 5763, - "end": 5775, - "loc": { - "start": { - "line": 191, - "column": 51 - }, - "end": { - "line": 191, - "column": 63 - } - }, - "object": { - "type": "Identifier", - "start": 5763, - "end": 5769, - "loc": { - "start": { - "line": 191, - "column": 51 - }, - "end": { - "line": 191, - "column": 57 - }, - "identifierName": "camera" - }, - "name": "camera" - }, - "property": { - "type": "Identifier", - "start": 5770, - "end": 5775, - "loc": { - "start": { - "line": 191, - "column": 58 - }, - "end": { - "line": 191, - "column": 63 - }, - "identifierName": "ortho" - }, - "name": "ortho" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5776, - "end": 5781, - "loc": { - "start": { - "line": 191, - "column": 64 - }, - "end": { - "line": 191, - "column": 69 - }, - "identifierName": "scale" - }, - "name": "scale" - }, - "computed": false - } + "identifierName": "lastX" }, - "operator": "*", - "right": { - "type": "BinaryExpression", - "start": 5785, - "end": 5809, - "loc": { - "start": { - "line": 191, - "column": 73 - }, - "end": { - "line": 191, - "column": 97 - } - }, - "left": { - "type": "Identifier", - "start": 5785, - "end": 5794, - "loc": { - "start": { - "line": 191, - "column": 73 - }, - "end": { - "line": 191, - "column": 82 - }, - "identifierName": "xPanDelta" - }, - "name": "xPanDelta" - }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 5797, - "end": 5809, - "loc": { - "start": { - "line": 191, - "column": 85 - }, - "end": { - "line": 191, - "column": 97 - }, - "identifierName": "canvasHeight" - }, - "name": "canvasHeight" - }, - "extra": { - "parenthesized": true, - "parenStart": 5784 - } - } + "name": "lastX" + }, + "extra": { + "parenthesized": true, + "parenStart": 6490 } + }, + "operator": "/", + "right": { + "type": "Identifier", + "start": 6504, + "end": 6515, + "loc": { + "start": { + "line": 207, + "column": 63 + }, + "end": { + "line": 207, + "column": 74 + }, + "identifierName": "canvasWidth" + }, + "name": "canvasWidth" + }, + "extra": { + "parenthesized": true, + "parenStart": 6489 } }, - { - "type": "ExpressionStatement", - "start": 5836, - "end": 5911, + "operator": "*", + "right": { + "type": "BinaryExpression", + "start": 6520, + "end": 6550, "loc": { "start": { - "line": 192, - "column": 24 + "line": 207, + "column": 79 }, "end": { - "line": 192, - "column": 99 + "line": 207, + "column": 109 } }, - "expression": { - "type": "AssignmentExpression", - "start": 5836, - "end": 5910, + "left": { + "type": "MemberExpression", + "start": 6520, + "end": 6544, "loc": { "start": { - "line": 192, - "column": 24 + "line": 207, + "column": 79 }, "end": { - "line": 192, - "column": 98 + "line": 207, + "column": 103 } }, - "operator": "+=", - "left": { - "type": "MemberExpression", - "start": 5836, - "end": 5853, + "object": { + "type": "Identifier", + "start": 6520, + "end": 6527, "loc": { "start": { - "line": 192, - "column": 24 + "line": 207, + "column": 79 }, "end": { - "line": 192, - "column": 41 - } - }, - "object": { - "type": "Identifier", - "start": 5836, - "end": 5843, - "loc": { - "start": { - "line": 192, - "column": 24 - }, - "end": { - "line": 192, - "column": 31 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 5844, - "end": 5853, - "loc": { - "start": { - "line": 192, - "column": 32 - }, - "end": { - "line": 192, - "column": 41 - }, - "identifierName": "panDeltaY" + "line": 207, + "column": 86 }, - "name": "panDeltaY" + "identifierName": "configs" }, - "computed": false + "name": "configs" }, - "right": { - "type": "BinaryExpression", - "start": 5857, - "end": 5910, + "property": { + "type": "Identifier", + "start": 6528, + "end": 6544, "loc": { "start": { - "line": 192, - "column": 45 + "line": 207, + "column": 87 }, "end": { - "line": 192, - "column": 98 - } - }, - "left": { - "type": "BinaryExpression", - "start": 5857, - "end": 5881, - "loc": { - "start": { - "line": 192, - "column": 45 - }, - "end": { - "line": 192, - "column": 69 - } - }, - "left": { - "type": "NumericLiteral", - "start": 5857, - "end": 5860, - "loc": { - "start": { - "line": 192, - "column": 45 - }, - "end": { - "line": 192, - "column": 48 - } - }, - "extra": { - "rawValue": 0.5, - "raw": "0.5" - }, - "value": 0.5 + "line": 207, + "column": 103 }, - "operator": "*", - "right": { - "type": "MemberExpression", - "start": 5863, - "end": 5881, - "loc": { - "start": { - "line": 192, - "column": 51 - }, - "end": { - "line": 192, - "column": 69 - } - }, - "object": { - "type": "MemberExpression", - "start": 5863, - "end": 5875, - "loc": { - "start": { - "line": 192, - "column": 51 - }, - "end": { - "line": 192, - "column": 63 - } - }, - "object": { - "type": "Identifier", - "start": 5863, - "end": 5869, - "loc": { - "start": { - "line": 192, - "column": 51 - }, - "end": { - "line": 192, - "column": 57 - }, - "identifierName": "camera" - }, - "name": "camera" - }, - "property": { - "type": "Identifier", - "start": 5870, - "end": 5875, - "loc": { - "start": { - "line": 192, - "column": 58 - }, - "end": { - "line": 192, - "column": 63 - }, - "identifierName": "ortho" - }, - "name": "ortho" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 5876, - "end": 5881, - "loc": { - "start": { - "line": 192, - "column": 64 - }, - "end": { - "line": 192, - "column": 69 - }, - "identifierName": "scale" - }, - "name": "scale" - }, - "computed": false - } + "identifierName": "dragRotationRate" }, - "operator": "*", - "right": { - "type": "BinaryExpression", - "start": 5885, - "end": 5909, - "loc": { - "start": { - "line": 192, - "column": 73 - }, - "end": { - "line": 192, - "column": 97 - } - }, - "left": { - "type": "Identifier", - "start": 5885, - "end": 5894, - "loc": { - "start": { - "line": 192, - "column": 73 - }, - "end": { - "line": 192, - "column": 82 - }, - "identifierName": "yPanDelta" - }, - "name": "yPanDelta" - }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 5897, - "end": 5909, - "loc": { - "start": { - "line": 192, - "column": 85 - }, - "end": { - "line": 192, - "column": 97 - }, - "identifierName": "canvasHeight" - }, - "name": "canvasHeight" - }, - "extra": { - "parenthesized": true, - "parenStart": 5884 - } - } - } - } - } - ], - "directives": [] - }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " We use only canvasHeight here so that aspect ratio does not distort speed", - "start": 5074, - "end": 5150, - "loc": { - "start": { - "line": 179, - "column": 20 + "name": "dragRotationRate" + }, + "computed": false }, - "end": { - "line": 179, - "column": 96 - } - } - } - ] - } - ], - "directives": [] - }, - "alternate": { - "type": "IfStatement", - "start": 5958, - "end": 6691, - "loc": { - "start": { - "line": 195, - "column": 23 - }, - "end": { - "line": 208, - "column": 17 - } - }, - "test": { - "type": "LogicalExpression", - "start": 5962, - "end": 5997, - "loc": { - "start": { - "line": 195, - "column": 27 - }, - "end": { - "line": 195, - "column": 62 + "operator": "*", + "right": { + "type": "NumericLiteral", + "start": 6547, + "end": 6550, + "loc": { + "start": { + "line": 207, + "column": 106 + }, + "end": { + "line": 207, + "column": 109 + } + }, + "extra": { + "rawValue": 1.5, + "raw": "1.5" + }, + "value": 1.5 + }, + "extra": { + "parenthesized": true, + "parenStart": 6519 + } + } + } } }, - "left": { - "type": "UnaryExpression", - "start": 5962, - "end": 5978, + { + "type": "ExpressionStatement", + "start": 6577, + "end": 6665, "loc": { "start": { - "line": 195, - "column": 27 + "line": 208, + "column": 24 }, "end": { - "line": 195, - "column": 43 + "line": 208, + "column": 112 } }, - "operator": "!", - "prefix": true, - "argument": { - "type": "Identifier", - "start": 5963, - "end": 5978, + "expression": { + "type": "AssignmentExpression", + "start": 6577, + "end": 6664, "loc": { "start": { - "line": 195, - "column": 28 + "line": 208, + "column": 24 }, "end": { - "line": 195, - "column": 43 - }, - "identifierName": "mouseDownMiddle" - }, - "name": "mouseDownMiddle" - }, - "extra": { - "parenthesizedArgument": false - } - }, - "operator": "&&", - "right": { - "type": "UnaryExpression", - "start": 5982, - "end": 5997, - "loc": { - "start": { - "line": 195, - "column": 47 + "line": 208, + "column": 111 + } }, - "end": { - "line": 195, - "column": 62 - } - }, - "operator": "!", - "prefix": true, - "argument": { - "type": "Identifier", - "start": 5983, - "end": 5997, - "loc": { - "start": { - "line": 195, - "column": 48 + "operator": "+=", + "left": { + "type": "MemberExpression", + "start": 6577, + "end": 6597, + "loc": { + "start": { + "line": 208, + "column": 24 + }, + "end": { + "line": 208, + "column": 44 + } }, - "end": { - "line": 195, - "column": 62 + "object": { + "type": "Identifier", + "start": 6577, + "end": 6584, + "loc": { + "start": { + "line": 208, + "column": 24 + }, + "end": { + "line": 208, + "column": 31 + }, + "identifierName": "updates" + }, + "name": "updates" }, - "identifierName": "mouseDownRight" - }, - "name": "mouseDownRight" - }, - "extra": { - "parenthesizedArgument": false - } - } - }, - "consequent": { - "type": "BlockStatement", - "start": 5999, - "end": 6691, - "loc": { - "start": { - "line": 195, - "column": 64 - }, - "end": { - "line": 208, - "column": 17 - } - }, - "body": [ - { - "type": "IfStatement", - "start": 6022, - "end": 6673, - "loc": { - "start": { - "line": 197, - "column": 20 + "property": { + "type": "Identifier", + "start": 6585, + "end": 6597, + "loc": { + "start": { + "line": 208, + "column": 32 + }, + "end": { + "line": 208, + "column": 44 + }, + "identifierName": "rotateDeltaX" + }, + "name": "rotateDeltaX" }, - "end": { - "line": 207, - "column": 21 - } + "computed": false }, - "test": { - "type": "UnaryExpression", - "start": 6026, - "end": 6043, + "right": { + "type": "BinaryExpression", + "start": 6601, + "end": 6664, "loc": { "start": { - "line": 197, - "column": 24 + "line": 208, + "column": 48 }, "end": { - "line": 197, - "column": 41 + "line": 208, + "column": 111 } }, - "operator": "!", - "prefix": true, - "argument": { - "type": "MemberExpression", - "start": 6027, - "end": 6043, + "left": { + "type": "BinaryExpression", + "start": 6602, + "end": 6628, "loc": { "start": { - "line": 197, - "column": 25 + "line": 208, + "column": 49 }, "end": { - "line": 197, - "column": 41 + "line": 208, + "column": 75 } }, - "object": { - "type": "Identifier", - "start": 6027, - "end": 6034, + "left": { + "type": "BinaryExpression", + "start": 6603, + "end": 6612, "loc": { "start": { - "line": 197, - "column": 25 + "line": 208, + "column": 50 }, "end": { - "line": 197, - "column": 32 + "line": 208, + "column": 59 + } + }, + "left": { + "type": "Identifier", + "start": 6603, + "end": 6604, + "loc": { + "start": { + "line": 208, + "column": 50 + }, + "end": { + "line": 208, + "column": 51 + }, + "identifierName": "y" }, - "identifierName": "configs" + "name": "y" }, - "name": "configs" + "operator": "-", + "right": { + "type": "Identifier", + "start": 6607, + "end": 6612, + "loc": { + "start": { + "line": 208, + "column": 54 + }, + "end": { + "line": 208, + "column": 59 + }, + "identifierName": "lastY" + }, + "name": "lastY" + }, + "extra": { + "parenthesized": true, + "parenStart": 6602 + } }, - "property": { + "operator": "/", + "right": { "type": "Identifier", - "start": 6035, - "end": 6043, + "start": 6616, + "end": 6628, "loc": { "start": { - "line": 197, - "column": 33 + "line": 208, + "column": 63 }, "end": { - "line": 197, - "column": 41 + "line": 208, + "column": 75 }, - "identifierName": "planView" + "identifierName": "canvasHeight" }, - "name": "planView" - }, - "computed": false - }, - "extra": { - "parenthesizedArgument": false - } - }, - "consequent": { - "type": "BlockStatement", - "start": 6045, - "end": 6673, - "loc": { - "start": { - "line": 197, - "column": 43 + "name": "canvasHeight" }, - "end": { - "line": 207, - "column": 21 + "extra": { + "parenthesized": true, + "parenStart": 6601 } }, - "body": [ - { - "type": "IfStatement", - "start": 6105, - "end": 6651, + "operator": "*", + "right": { + "type": "BinaryExpression", + "start": 6633, + "end": 6663, + "loc": { + "start": { + "line": 208, + "column": 80 + }, + "end": { + "line": 208, + "column": 110 + } + }, + "left": { + "type": "MemberExpression", + "start": 6633, + "end": 6657, "loc": { "start": { - "line": 199, - "column": 24 + "line": 208, + "column": 80 }, "end": { - "line": 206, - "column": 25 + "line": 208, + "column": 104 } }, - "test": { - "type": "MemberExpression", - "start": 6109, - "end": 6128, + "object": { + "type": "Identifier", + "start": 6633, + "end": 6640, "loc": { "start": { - "line": 199, - "column": 28 + "line": 208, + "column": 80 }, "end": { - "line": 199, - "column": 47 - } - }, - "object": { - "type": "Identifier", - "start": 6109, - "end": 6116, - "loc": { - "start": { - "line": 199, - "column": 28 - }, - "end": { - "line": 199, - "column": 35 - }, - "identifierName": "configs" - }, - "name": "configs", - "leadingComments": null - }, - "property": { - "type": "Identifier", - "start": 6117, - "end": 6128, - "loc": { - "start": { - "line": 199, - "column": 36 - }, - "end": { - "line": 199, - "column": 47 - }, - "identifierName": "firstPerson" + "line": 208, + "column": 87 }, - "name": "firstPerson" + "identifierName": "configs" }, - "computed": false, - "leadingComments": null + "name": "configs" }, - "consequent": { - "type": "BlockStatement", - "start": 6130, - "end": 6385, + "property": { + "type": "Identifier", + "start": 6641, + "end": 6657, "loc": { "start": { - "line": 199, - "column": 49 + "line": 208, + "column": 88 }, "end": { - "line": 203, - "column": 25 - } - }, - "body": [ - { - "type": "ExpressionStatement", - "start": 6160, - "end": 6243, - "loc": { - "start": { - "line": 200, - "column": 28 - }, - "end": { - "line": 200, - "column": 111 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 6160, - "end": 6242, - "loc": { - "start": { - "line": 200, - "column": 28 - }, - "end": { - "line": 200, - "column": 110 - } - }, - "operator": "-=", - "left": { - "type": "MemberExpression", - "start": 6160, - "end": 6180, - "loc": { - "start": { - "line": 200, - "column": 28 - }, - "end": { - "line": 200, - "column": 48 - } - }, - "object": { - "type": "Identifier", - "start": 6160, - "end": 6167, - "loc": { - "start": { - "line": 200, - "column": 28 - }, - "end": { - "line": 200, - "column": 35 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 6168, - "end": 6180, - "loc": { - "start": { - "line": 200, - "column": 36 - }, - "end": { - "line": 200, - "column": 48 - }, - "identifierName": "rotateDeltaY" - }, - "name": "rotateDeltaY" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 6184, - "end": 6242, - "loc": { - "start": { - "line": 200, - "column": 52 - }, - "end": { - "line": 200, - "column": 110 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6184, - "end": 6238, - "loc": { - "start": { - "line": 200, - "column": 52 - }, - "end": { - "line": 200, - "column": 106 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6185, - "end": 6210, - "loc": { - "start": { - "line": 200, - "column": 53 - }, - "end": { - "line": 200, - "column": 78 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6186, - "end": 6195, - "loc": { - "start": { - "line": 200, - "column": 54 - }, - "end": { - "line": 200, - "column": 63 - } - }, - "left": { - "type": "Identifier", - "start": 6186, - "end": 6187, - "loc": { - "start": { - "line": 200, - "column": 54 - }, - "end": { - "line": 200, - "column": 55 - }, - "identifierName": "x" - }, - "name": "x" - }, - "operator": "-", - "right": { - "type": "Identifier", - "start": 6190, - "end": 6195, - "loc": { - "start": { - "line": 200, - "column": 58 - }, - "end": { - "line": 200, - "column": 63 - }, - "identifierName": "lastX" - }, - "name": "lastX" - }, - "extra": { - "parenthesized": true, - "parenStart": 6185 - } - }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 6199, - "end": 6210, - "loc": { - "start": { - "line": 200, - "column": 67 - }, - "end": { - "line": 200, - "column": 78 - }, - "identifierName": "canvasWidth" - }, - "name": "canvasWidth" - }, - "extra": { - "parenthesized": true, - "parenStart": 6184 - } - }, - "operator": "*", - "right": { - "type": "MemberExpression", - "start": 6214, - "end": 6238, - "loc": { - "start": { - "line": 200, - "column": 82 - }, - "end": { - "line": 200, - "column": 106 - } - }, - "object": { - "type": "Identifier", - "start": 6214, - "end": 6221, - "loc": { - "start": { - "line": 200, - "column": 82 - }, - "end": { - "line": 200, - "column": 89 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 6222, - "end": 6238, - "loc": { - "start": { - "line": 200, - "column": 90 - }, - "end": { - "line": 200, - "column": 106 - }, - "identifierName": "dragRotationRate" - }, - "name": "dragRotationRate" - }, - "computed": false - } - }, - "operator": "/", - "right": { - "type": "NumericLiteral", - "start": 6241, - "end": 6242, - "loc": { - "start": { - "line": 200, - "column": 109 - }, - "end": { - "line": 200, - "column": 110 - } - }, - "extra": { - "rawValue": 2, - "raw": "2" - }, - "value": 2 - } - } - } - }, - { - "type": "ExpressionStatement", - "start": 6272, - "end": 6358, - "loc": { - "start": { - "line": 201, - "column": 28 - }, - "end": { - "line": 201, - "column": 114 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 6272, - "end": 6357, - "loc": { - "start": { - "line": 201, - "column": 28 - }, - "end": { - "line": 201, - "column": 113 - } - }, - "operator": "+=", - "left": { - "type": "MemberExpression", - "start": 6272, - "end": 6292, - "loc": { - "start": { - "line": 201, - "column": 28 - }, - "end": { - "line": 201, - "column": 48 - } - }, - "object": { - "type": "Identifier", - "start": 6272, - "end": 6279, - "loc": { - "start": { - "line": 201, - "column": 28 - }, - "end": { - "line": 201, - "column": 35 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 6280, - "end": 6292, - "loc": { - "start": { - "line": 201, - "column": 36 - }, - "end": { - "line": 201, - "column": 48 - }, - "identifierName": "rotateDeltaX" - }, - "name": "rotateDeltaX" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 6296, - "end": 6357, - "loc": { - "start": { - "line": 201, - "column": 52 - }, - "end": { - "line": 201, - "column": 113 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6297, - "end": 6323, - "loc": { - "start": { - "line": 201, - "column": 53 - }, - "end": { - "line": 201, - "column": 79 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6298, - "end": 6307, - "loc": { - "start": { - "line": 201, - "column": 54 - }, - "end": { - "line": 201, - "column": 63 - } - }, - "left": { - "type": "Identifier", - "start": 6298, - "end": 6299, - "loc": { - "start": { - "line": 201, - "column": 54 - }, - "end": { - "line": 201, - "column": 55 - }, - "identifierName": "y" - }, - "name": "y" - }, - "operator": "-", - "right": { - "type": "Identifier", - "start": 6302, - "end": 6307, - "loc": { - "start": { - "line": 201, - "column": 58 - }, - "end": { - "line": 201, - "column": 63 - }, - "identifierName": "lastY" - }, - "name": "lastY" - }, - "extra": { - "parenthesized": true, - "parenStart": 6297 - } - }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 6311, - "end": 6323, - "loc": { - "start": { - "line": 201, - "column": 67 - }, - "end": { - "line": 201, - "column": 79 - }, - "identifierName": "canvasHeight" - }, - "name": "canvasHeight" - }, - "extra": { - "parenthesized": true, - "parenStart": 6296 - } - }, - "operator": "*", - "right": { - "type": "BinaryExpression", - "start": 6328, - "end": 6356, - "loc": { - "start": { - "line": 201, - "column": 84 - }, - "end": { - "line": 201, - "column": 112 - } - }, - "left": { - "type": "MemberExpression", - "start": 6328, - "end": 6352, - "loc": { - "start": { - "line": 201, - "column": 84 - }, - "end": { - "line": 201, - "column": 108 - } - }, - "object": { - "type": "Identifier", - "start": 6328, - "end": 6335, - "loc": { - "start": { - "line": 201, - "column": 84 - }, - "end": { - "line": 201, - "column": 91 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 6336, - "end": 6352, - "loc": { - "start": { - "line": 201, - "column": 92 - }, - "end": { - "line": 201, - "column": 108 - }, - "identifierName": "dragRotationRate" - }, - "name": "dragRotationRate" - }, - "computed": false - }, - "operator": "/", - "right": { - "type": "NumericLiteral", - "start": 6355, - "end": 6356, - "loc": { - "start": { - "line": 201, - "column": 111 - }, - "end": { - "line": 201, - "column": 112 - } - }, - "extra": { - "rawValue": 4, - "raw": "4" - }, - "value": 4 - }, - "extra": { - "parenthesized": true, - "parenStart": 6327 - } - } - } - } - } - ], - "directives": [] - }, - "alternate": { - "type": "BlockStatement", - "start": 6391, - "end": 6651, - "loc": { - "start": { - "line": 203, - "column": 31 + "line": 208, + "column": 104 }, - "end": { - "line": 206, - "column": 25 - } + "identifierName": "dragRotationRate" }, - "body": [ - { - "type": "ExpressionStatement", - "start": 6421, - "end": 6508, - "loc": { - "start": { - "line": 204, - "column": 28 - }, - "end": { - "line": 204, - "column": 115 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 6421, - "end": 6507, - "loc": { - "start": { - "line": 204, - "column": 28 - }, - "end": { - "line": 204, - "column": 114 - } - }, - "operator": "-=", - "left": { - "type": "MemberExpression", - "start": 6421, - "end": 6441, - "loc": { - "start": { - "line": 204, - "column": 28 - }, - "end": { - "line": 204, - "column": 48 - } - }, - "object": { - "type": "Identifier", - "start": 6421, - "end": 6428, - "loc": { - "start": { - "line": 204, - "column": 28 - }, - "end": { - "line": 204, - "column": 35 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 6429, - "end": 6441, - "loc": { - "start": { - "line": 204, - "column": 36 - }, - "end": { - "line": 204, - "column": 48 - }, - "identifierName": "rotateDeltaY" - }, - "name": "rotateDeltaY" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 6445, - "end": 6507, - "loc": { - "start": { - "line": 204, - "column": 52 - }, - "end": { - "line": 204, - "column": 114 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6446, - "end": 6471, - "loc": { - "start": { - "line": 204, - "column": 53 - }, - "end": { - "line": 204, - "column": 78 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6447, - "end": 6456, - "loc": { - "start": { - "line": 204, - "column": 54 - }, - "end": { - "line": 204, - "column": 63 - } - }, - "left": { - "type": "Identifier", - "start": 6447, - "end": 6448, - "loc": { - "start": { - "line": 204, - "column": 54 - }, - "end": { - "line": 204, - "column": 55 - }, - "identifierName": "x" - }, - "name": "x" - }, - "operator": "-", - "right": { - "type": "Identifier", - "start": 6451, - "end": 6456, - "loc": { - "start": { - "line": 204, - "column": 58 - }, - "end": { - "line": 204, - "column": 63 - }, - "identifierName": "lastX" - }, - "name": "lastX" - }, - "extra": { - "parenthesized": true, - "parenStart": 6446 - } - }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 6460, - "end": 6471, - "loc": { - "start": { - "line": 204, - "column": 67 - }, - "end": { - "line": 204, - "column": 78 - }, - "identifierName": "canvasWidth" - }, - "name": "canvasWidth" - }, - "extra": { - "parenthesized": true, - "parenStart": 6445 - } - }, - "operator": "*", - "right": { - "type": "BinaryExpression", - "start": 6476, - "end": 6506, - "loc": { - "start": { - "line": 204, - "column": 83 - }, - "end": { - "line": 204, - "column": 113 - } - }, - "left": { - "type": "MemberExpression", - "start": 6476, - "end": 6500, - "loc": { - "start": { - "line": 204, - "column": 83 - }, - "end": { - "line": 204, - "column": 107 - } - }, - "object": { - "type": "Identifier", - "start": 6476, - "end": 6483, - "loc": { - "start": { - "line": 204, - "column": 83 - }, - "end": { - "line": 204, - "column": 90 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 6484, - "end": 6500, - "loc": { - "start": { - "line": 204, - "column": 91 - }, - "end": { - "line": 204, - "column": 107 - }, - "identifierName": "dragRotationRate" - }, - "name": "dragRotationRate" - }, - "computed": false - }, - "operator": "*", - "right": { - "type": "NumericLiteral", - "start": 6503, - "end": 6506, - "loc": { - "start": { - "line": 204, - "column": 110 - }, - "end": { - "line": 204, - "column": 113 - } - }, - "extra": { - "rawValue": 1.5, - "raw": "1.5" - }, - "value": 1.5 - }, - "extra": { - "parenthesized": true, - "parenStart": 6475 - } - } - } - } - }, - { - "type": "ExpressionStatement", - "start": 6537, - "end": 6625, - "loc": { - "start": { - "line": 205, - "column": 28 - }, - "end": { - "line": 205, - "column": 116 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 6537, - "end": 6624, - "loc": { - "start": { - "line": 205, - "column": 28 - }, - "end": { - "line": 205, - "column": 115 - } - }, - "operator": "+=", - "left": { - "type": "MemberExpression", - "start": 6537, - "end": 6557, - "loc": { - "start": { - "line": 205, - "column": 28 - }, - "end": { - "line": 205, - "column": 48 - } - }, - "object": { - "type": "Identifier", - "start": 6537, - "end": 6544, - "loc": { - "start": { - "line": 205, - "column": 28 - }, - "end": { - "line": 205, - "column": 35 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 6545, - "end": 6557, - "loc": { - "start": { - "line": 205, - "column": 36 - }, - "end": { - "line": 205, - "column": 48 - }, - "identifierName": "rotateDeltaX" - }, - "name": "rotateDeltaX" - }, - "computed": false - }, - "right": { - "type": "BinaryExpression", - "start": 6561, - "end": 6624, - "loc": { - "start": { - "line": 205, - "column": 52 - }, - "end": { - "line": 205, - "column": 115 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6562, - "end": 6588, - "loc": { - "start": { - "line": 205, - "column": 53 - }, - "end": { - "line": 205, - "column": 79 - } - }, - "left": { - "type": "BinaryExpression", - "start": 6563, - "end": 6572, - "loc": { - "start": { - "line": 205, - "column": 54 - }, - "end": { - "line": 205, - "column": 63 - } - }, - "left": { - "type": "Identifier", - "start": 6563, - "end": 6564, - "loc": { - "start": { - "line": 205, - "column": 54 - }, - "end": { - "line": 205, - "column": 55 - }, - "identifierName": "y" - }, - "name": "y" - }, - "operator": "-", - "right": { - "type": "Identifier", - "start": 6567, - "end": 6572, - "loc": { - "start": { - "line": 205, - "column": 58 - }, - "end": { - "line": 205, - "column": 63 - }, - "identifierName": "lastY" - }, - "name": "lastY" - }, - "extra": { - "parenthesized": true, - "parenStart": 6562 - } - }, - "operator": "/", - "right": { - "type": "Identifier", - "start": 6576, - "end": 6588, - "loc": { - "start": { - "line": 205, - "column": 67 - }, - "end": { - "line": 205, - "column": 79 - }, - "identifierName": "canvasHeight" - }, - "name": "canvasHeight" - }, - "extra": { - "parenthesized": true, - "parenStart": 6561 - } - }, - "operator": "*", - "right": { - "type": "BinaryExpression", - "start": 6593, - "end": 6623, - "loc": { - "start": { - "line": 205, - "column": 84 - }, - "end": { - "line": 205, - "column": 114 - } - }, - "left": { - "type": "MemberExpression", - "start": 6593, - "end": 6617, - "loc": { - "start": { - "line": 205, - "column": 84 - }, - "end": { - "line": 205, - "column": 108 - } - }, - "object": { - "type": "Identifier", - "start": 6593, - "end": 6600, - "loc": { - "start": { - "line": 205, - "column": 84 - }, - "end": { - "line": 205, - "column": 91 - }, - "identifierName": "configs" - }, - "name": "configs" - }, - "property": { - "type": "Identifier", - "start": 6601, - "end": 6617, - "loc": { - "start": { - "line": 205, - "column": 92 - }, - "end": { - "line": 205, - "column": 108 - }, - "identifierName": "dragRotationRate" - }, - "name": "dragRotationRate" - }, - "computed": false - }, - "operator": "*", - "right": { - "type": "NumericLiteral", - "start": 6620, - "end": 6623, - "loc": { - "start": { - "line": 205, - "column": 111 - }, - "end": { - "line": 205, - "column": 114 - } - }, - "extra": { - "rawValue": 1.5, - "raw": "1.5" - }, - "value": 1.5 - }, - "extra": { - "parenthesized": true, - "parenStart": 6592 - } - } - } - } - } - ], - "directives": [] + "name": "dragRotationRate" }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " No rotating in plan-view mode", - "start": 6047, - "end": 6079, - "loc": { - "start": { - "line": 197, - "column": 45 - }, - "end": { - "line": 197, - "column": 77 - } - } + "computed": false + }, + "operator": "*", + "right": { + "type": "NumericLiteral", + "start": 6660, + "end": 6663, + "loc": { + "start": { + "line": 208, + "column": 107 + }, + "end": { + "line": 208, + "column": 110 } - ] + }, + "extra": { + "rawValue": 1.5, + "raw": "1.5" + }, + "value": 1.5 + }, + "extra": { + "parenthesized": true, + "parenStart": 6632 } - ], - "directives": [] - }, - "alternate": null + } + } } - ], - "directives": [] - }, - "alternate": null - } - }, - { - "type": "ExpressionStatement", - "start": 6709, - "end": 6719, - "loc": { - "start": { - "line": 210, - "column": 16 - }, - "end": { - "line": 210, - "column": 26 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 6709, - "end": 6718, - "loc": { - "start": { - "line": 210, - "column": 16 - }, - "end": { - "line": 210, - "column": 25 } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 6709, - "end": 6714, - "loc": { - "start": { - "line": 210, - "column": 16 - }, - "end": { - "line": 210, - "column": 21 - }, - "identifierName": "lastX" - }, - "name": "lastX" - }, - "right": { - "type": "Identifier", - "start": 6717, - "end": 6718, - "loc": { - "start": { - "line": 210, - "column": 24 - }, - "end": { - "line": 210, - "column": 25 - }, - "identifierName": "x" - }, - "name": "x" - } - } - }, - { - "type": "ExpressionStatement", - "start": 6736, - "end": 6746, - "loc": { - "start": { - "line": 211, - "column": 16 - }, - "end": { - "line": 211, - "column": 26 - } + ], + "directives": [] }, - "expression": { - "type": "AssignmentExpression", - "start": 6736, - "end": 6745, - "loc": { - "start": { - "line": 211, - "column": 16 - }, - "end": { - "line": 211, - "column": 25 - } - }, - "operator": "=", - "left": { - "type": "Identifier", - "start": 6736, - "end": 6741, - "loc": { - "start": { - "line": 211, - "column": 16 - }, - "end": { - "line": 211, - "column": 21 - }, - "identifierName": "lastY" - }, - "name": "lastY" - }, - "right": { - "type": "Identifier", - "start": 6744, - "end": 6745, + "leadingComments": [ + { + "type": "CommentLine", + "value": " No rotating in plan-view mode", + "start": 6111, + "end": 6143, "loc": { "start": { - "line": 211, - "column": 24 + "line": 200, + "column": 41 }, "end": { - "line": 211, - "column": 25 - }, - "identifierName": "y" - }, - "name": "y" + "line": 200, + "column": 73 + } + } } - } + ] } ], "directives": [] - } + }, + "alternate": null } + ], + "directives": [] + }, + "alternate": null + } + }, + { + "type": "ExpressionStatement", + "start": 6733, + "end": 6743, + "loc": { + "start": { + "line": 213, + "column": 12 + }, + "end": { + "line": 213, + "column": 22 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6733, + "end": 6742, + "loc": { + "start": { + "line": 213, + "column": 12 + }, + "end": { + "line": 213, + "column": 21 } - ] + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 6733, + "end": 6738, + "loc": { + "start": { + "line": 213, + "column": 12 + }, + "end": { + "line": 213, + "column": 17 + }, + "identifierName": "lastX" + }, + "name": "lastX" + }, + "right": { + "type": "Identifier", + "start": 6741, + "end": 6742, + "loc": { + "start": { + "line": 213, + "column": 20 + }, + "end": { + "line": 213, + "column": 21 + }, + "identifierName": "x" + }, + "name": "x" + } + } + }, + { + "type": "ExpressionStatement", + "start": 6756, + "end": 6766, + "loc": { + "start": { + "line": 214, + "column": 12 + }, + "end": { + "line": 214, + "column": 22 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 6756, + "end": 6765, + "loc": { + "start": { + "line": 214, + "column": 12 + }, + "end": { + "line": 214, + "column": 21 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 6756, + "end": 6761, + "loc": { + "start": { + "line": 214, + "column": 12 + }, + "end": { + "line": 214, + "column": 17 + }, + "identifierName": "lastY" + }, + "name": "lastY" + }, + "right": { + "type": "Identifier", + "start": 6764, + "end": 6765, + "loc": { + "start": { + "line": 214, + "column": 20 + }, + "end": { + "line": 214, + "column": 21 + }, + "identifierName": "y" + }, + "name": "y" + } } } ], @@ -34658,57 +34919,57 @@ }, { "type": "ExpressionStatement", - "start": 6784, - "end": 7141, + "start": 6788, + "end": 7108, "loc": { "start": { - "line": 215, + "line": 217, "column": 8 }, "end": { - "line": 229, + "line": 228, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 6784, - "end": 7140, + "start": 6788, + "end": 7107, "loc": { "start": { - "line": 215, + "line": 217, "column": 8 }, "end": { - "line": 229, + "line": 228, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 6784, - "end": 6807, + "start": 6788, + "end": 6811, "loc": { "start": { - "line": 215, + "line": 217, "column": 8 }, "end": { - "line": 215, + "line": 217, "column": 31 } }, "object": { "type": "Identifier", - "start": 6784, - "end": 6790, + "start": 6788, + "end": 6794, "loc": { "start": { - "line": 215, + "line": 217, "column": 8 }, "end": { - "line": 215, + "line": 217, "column": 14 }, "identifierName": "canvas" @@ -34717,15 +34978,15 @@ }, "property": { "type": "Identifier", - "start": 6791, - "end": 6807, + "start": 6795, + "end": 6811, "loc": { "start": { - "line": 215, + "line": 217, "column": 15 }, "end": { - "line": 215, + "line": 217, "column": 31 }, "identifierName": "addEventListener" @@ -34737,15 +34998,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 6808, - "end": 6819, + "start": 6812, + "end": 6823, "loc": { "start": { - "line": 215, + "line": 217, "column": 32 }, "end": { - "line": 215, + "line": 217, "column": 43 } }, @@ -34757,59 +35018,59 @@ }, { "type": "AssignmentExpression", - "start": 6821, - "end": 7139, + "start": 6825, + "end": 7106, "loc": { "start": { - "line": 215, + "line": 217, "column": 45 }, "end": { - "line": 229, + "line": 228, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 6821, - "end": 6849, + "start": 6825, + "end": 6853, "loc": { "start": { - "line": 215, + "line": 217, "column": 45 }, "end": { - "line": 215, + "line": 217, "column": 73 } }, "object": { "type": "ThisExpression", - "start": 6821, - "end": 6825, + "start": 6825, + "end": 6829, "loc": { "start": { - "line": 215, + "line": 217, "column": 45 }, "end": { - "line": 215, + "line": 217, "column": 49 } } }, "property": { "type": "Identifier", - "start": 6826, - "end": 6849, + "start": 6830, + "end": 6853, "loc": { "start": { - "line": 215, + "line": 217, "column": 50 }, "end": { - "line": 215, + "line": 217, "column": 73 }, "identifierName": "_canvasMouseMoveHandler" @@ -34820,15 +35081,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 6852, - "end": 7139, + "start": 6856, + "end": 7106, "loc": { "start": { - "line": 215, + "line": 217, "column": 76 }, "end": { - "line": 229, + "line": 228, "column": 9 } }, @@ -34839,15 +35100,15 @@ "params": [ { "type": "Identifier", - "start": 6853, - "end": 6854, + "start": 6857, + "end": 6858, "loc": { "start": { - "line": 215, + "line": 217, "column": 77 }, "end": { - "line": 215, + "line": 217, "column": 78 }, "identifierName": "e" @@ -34857,44 +35118,44 @@ ], "body": { "type": "BlockStatement", - "start": 6859, - "end": 7139, + "start": 6863, + "end": 7106, "loc": { "start": { - "line": 215, + "line": 217, "column": 83 }, "end": { - "line": 229, + "line": 228, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 6874, - "end": 6962, + "start": 6878, + "end": 6966, "loc": { "start": { - "line": 217, + "line": 219, "column": 12 }, "end": { - "line": 219, + "line": 221, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 6878, - "end": 6921, + "start": 6882, + "end": 6925, "loc": { "start": { - "line": 217, + "line": 219, "column": 16 }, "end": { - "line": 217, + "line": 219, "column": 59 } }, @@ -34902,43 +35163,43 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 6880, - "end": 6920, + "start": 6884, + "end": 6924, "loc": { "start": { - "line": 217, + "line": 219, "column": 18 }, "end": { - "line": 217, + "line": 219, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 6880, - "end": 6894, + "start": 6884, + "end": 6898, "loc": { "start": { - "line": 217, + "line": 219, "column": 18 }, "end": { - "line": 217, + "line": 219, "column": 32 } }, "object": { "type": "Identifier", - "start": 6880, - "end": 6887, + "start": 6884, + "end": 6891, "loc": { "start": { - "line": 217, + "line": 219, "column": 18 }, "end": { - "line": 217, + "line": 219, "column": 25 }, "identifierName": "configs" @@ -34947,15 +35208,15 @@ }, "property": { "type": "Identifier", - "start": 6888, - "end": 6894, + "start": 6892, + "end": 6898, "loc": { "start": { - "line": 217, + "line": 219, "column": 26 }, "end": { - "line": 217, + "line": 219, "column": 32 }, "identifierName": "active" @@ -34967,29 +35228,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 6898, - "end": 6920, + "start": 6902, + "end": 6924, "loc": { "start": { - "line": 217, + "line": 219, "column": 36 }, "end": { - "line": 217, + "line": 219, "column": 58 } }, "object": { "type": "Identifier", - "start": 6898, - "end": 6905, + "start": 6902, + "end": 6909, "loc": { "start": { - "line": 217, + "line": 219, "column": 36 }, "end": { - "line": 217, + "line": 219, "column": 43 }, "identifierName": "configs" @@ -34998,15 +35259,15 @@ }, "property": { "type": "Identifier", - "start": 6906, - "end": 6920, + "start": 6910, + "end": 6924, "loc": { "start": { - "line": 217, + "line": 219, "column": 44 }, "end": { - "line": 217, + "line": 219, "column": 58 }, "identifierName": "pointerEnabled" @@ -35017,7 +35278,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 6879 + "parenStart": 6883 } }, "extra": { @@ -35026,30 +35287,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 6923, - "end": 6962, + "start": 6927, + "end": 6966, "loc": { "start": { - "line": 217, + "line": 219, "column": 61 }, "end": { - "line": 219, + "line": 221, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 6941, - "end": 6948, + "start": 6945, + "end": 6952, "loc": { "start": { - "line": 218, + "line": 220, "column": 16 }, "end": { - "line": 218, + "line": 220, "column": 23 } }, @@ -35062,29 +35323,29 @@ }, { "type": "IfStatement", - "start": 6976, - "end": 7038, + "start": 6980, + "end": 7042, "loc": { "start": { - "line": 221, + "line": 223, "column": 12 }, "end": { - "line": 223, + "line": 225, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 6980, - "end": 6997, + "start": 6984, + "end": 7001, "loc": { "start": { - "line": 221, + "line": 223, "column": 16 }, "end": { - "line": 221, + "line": 223, "column": 33 } }, @@ -35092,29 +35353,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 6981, - "end": 6997, + "start": 6985, + "end": 7001, "loc": { "start": { - "line": 221, + "line": 223, "column": 17 }, "end": { - "line": 221, + "line": 223, "column": 33 } }, "object": { "type": "Identifier", - "start": 6981, - "end": 6987, + "start": 6985, + "end": 6991, "loc": { "start": { - "line": 221, + "line": 223, "column": 17 }, "end": { - "line": 221, + "line": 223, "column": 23 }, "identifierName": "states" @@ -35123,15 +35384,15 @@ }, "property": { "type": "Identifier", - "start": 6988, - "end": 6997, + "start": 6992, + "end": 7001, "loc": { "start": { - "line": 221, + "line": 223, "column": 24 }, "end": { - "line": 221, + "line": 223, "column": 33 }, "identifierName": "mouseover" @@ -35146,30 +35407,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 6999, - "end": 7038, + "start": 7003, + "end": 7042, "loc": { "start": { - "line": 221, + "line": 223, "column": 35 }, "end": { - "line": 223, + "line": 225, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 7017, - "end": 7024, + "start": 7021, + "end": 7028, "loc": { "start": { - "line": 222, + "line": 224, "column": 16 }, "end": { - "line": 222, + "line": 224, "column": 23 } }, @@ -35182,105 +35443,8 @@ }, { "type": "ExpressionStatement", - "start": 7052, - "end": 7082, - "loc": { - "start": { - "line": 225, - "column": 12 - }, - "end": { - "line": 225, - "column": 42 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 7052, - "end": 7081, - "loc": { - "start": { - "line": 225, - "column": 12 - }, - "end": { - "line": 225, - "column": 41 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 7052, - "end": 7074, - "loc": { - "start": { - "line": 225, - "column": 12 - }, - "end": { - "line": 225, - "column": 34 - } - }, - "object": { - "type": "Identifier", - "start": 7052, - "end": 7059, - "loc": { - "start": { - "line": 225, - "column": 12 - }, - "end": { - "line": 225, - "column": 19 - }, - "identifierName": "updates" - }, - "name": "updates" - }, - "property": { - "type": "Identifier", - "start": 7060, - "end": 7074, - "loc": { - "start": { - "line": 225, - "column": 20 - }, - "end": { - "line": 225, - "column": 34 - }, - "identifierName": "inputFromMouse" - }, - "name": "inputFromMouse" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 7077, - "end": 7081, - "loc": { - "start": { - "line": 225, - "column": 37 - }, - "end": { - "line": 225, - "column": 41 - } - }, - "value": true - } - } - }, - { - "type": "ExpressionStatement", - "start": 7096, - "end": 7128, + "start": 7056, + "end": 7096, "loc": { "start": { "line": 227, @@ -35288,13 +35452,13 @@ }, "end": { "line": 227, - "column": 44 + "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 7096, - "end": 7127, + "start": 7056, + "end": 7095, "loc": { "start": { "line": 227, @@ -35302,14 +35466,14 @@ }, "end": { "line": 227, - "column": 43 + "column": 51 } }, "operator": "=", "left": { "type": "Identifier", - "start": 7096, - "end": 7120, + "start": 7056, + "end": 7088, "loc": { "start": { "line": 227, @@ -35317,24 +35481,24 @@ }, "end": { "line": 227, - "column": 36 + "column": 44 }, - "identifierName": "mouseMovedSinceLastWheel" + "identifierName": "mouseMovedOnCanvasSinceLastWheel" }, - "name": "mouseMovedSinceLastWheel" + "name": "mouseMovedOnCanvasSinceLastWheel" }, "right": { "type": "BooleanLiteral", - "start": 7123, - "end": 7127, + "start": 7091, + "end": 7095, "loc": { "start": { "line": 227, - "column": 39 + "column": 47 }, "end": { "line": 227, - "column": 43 + "column": 51 } }, "value": true @@ -35351,57 +35515,57 @@ }, { "type": "ExpressionStatement", - "start": 7151, - "end": 7956, + "start": 7118, + "end": 8067, "loc": { "start": { - "line": 231, + "line": 230, "column": 8 }, "end": { - "line": 253, + "line": 255, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 7151, - "end": 7955, + "start": 7118, + "end": 8066, "loc": { "start": { - "line": 231, + "line": 230, "column": 8 }, "end": { - "line": 253, + "line": 255, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 7151, - "end": 7176, + "start": 7118, + "end": 7143, "loc": { "start": { - "line": 231, + "line": 230, "column": 8 }, "end": { - "line": 231, + "line": 230, "column": 33 } }, "object": { "type": "Identifier", - "start": 7151, - "end": 7159, + "start": 7118, + "end": 7126, "loc": { "start": { - "line": 231, + "line": 230, "column": 8 }, "end": { - "line": 231, + "line": 230, "column": 16 }, "identifierName": "document" @@ -35410,15 +35574,15 @@ }, "property": { "type": "Identifier", - "start": 7160, - "end": 7176, + "start": 7127, + "end": 7143, "loc": { "start": { - "line": 231, + "line": 230, "column": 17 }, "end": { - "line": 231, + "line": 230, "column": 33 }, "identifierName": "addEventListener" @@ -35430,15 +35594,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 7177, - "end": 7186, + "start": 7144, + "end": 7153, "loc": { "start": { - "line": 231, + "line": 230, "column": 34 }, "end": { - "line": 231, + "line": 230, "column": 43 } }, @@ -35450,59 +35614,59 @@ }, { "type": "AssignmentExpression", - "start": 7188, - "end": 7954, + "start": 7155, + "end": 8065, "loc": { "start": { - "line": 231, + "line": 230, "column": 45 }, "end": { - "line": 253, + "line": 255, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 7188, - "end": 7216, + "start": 7155, + "end": 7183, "loc": { "start": { - "line": 231, + "line": 230, "column": 45 }, "end": { - "line": 231, + "line": 230, "column": 73 } }, "object": { "type": "ThisExpression", - "start": 7188, - "end": 7192, + "start": 7155, + "end": 7159, "loc": { "start": { - "line": 231, + "line": 230, "column": 45 }, "end": { - "line": 231, + "line": 230, "column": 49 } } }, "property": { "type": "Identifier", - "start": 7193, - "end": 7216, + "start": 7160, + "end": 7183, "loc": { "start": { - "line": 231, + "line": 230, "column": 50 }, "end": { - "line": 231, + "line": 230, "column": 73 }, "identifierName": "_documentMouseUpHandler" @@ -35513,15 +35677,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 7219, - "end": 7954, + "start": 7186, + "end": 8065, "loc": { "start": { - "line": 231, + "line": 230, "column": 76 }, "end": { - "line": 253, + "line": 255, "column": 9 } }, @@ -35532,15 +35696,15 @@ "params": [ { "type": "Identifier", - "start": 7220, - "end": 7221, + "start": 7187, + "end": 7188, "loc": { "start": { - "line": 231, + "line": 230, "column": 77 }, "end": { - "line": 231, + "line": 230, "column": 78 }, "identifierName": "e" @@ -35550,44 +35714,44 @@ ], "body": { "type": "BlockStatement", - "start": 7226, - "end": 7954, + "start": 7193, + "end": 8065, "loc": { "start": { - "line": 231, + "line": 230, "column": 83 }, "end": { - "line": 253, + "line": 255, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 7240, - "end": 7328, + "start": 7207, + "end": 7295, "loc": { "start": { - "line": 232, + "line": 231, "column": 12 }, "end": { - "line": 234, + "line": 233, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 7244, - "end": 7287, + "start": 7211, + "end": 7254, "loc": { "start": { - "line": 232, + "line": 231, "column": 16 }, "end": { - "line": 232, + "line": 231, "column": 59 } }, @@ -35595,43 +35759,43 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 7246, - "end": 7286, + "start": 7213, + "end": 7253, "loc": { "start": { - "line": 232, + "line": 231, "column": 18 }, "end": { - "line": 232, + "line": 231, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 7246, - "end": 7260, + "start": 7213, + "end": 7227, "loc": { "start": { - "line": 232, + "line": 231, "column": 18 }, "end": { - "line": 232, + "line": 231, "column": 32 } }, "object": { "type": "Identifier", - "start": 7246, - "end": 7253, + "start": 7213, + "end": 7220, "loc": { "start": { - "line": 232, + "line": 231, "column": 18 }, "end": { - "line": 232, + "line": 231, "column": 25 }, "identifierName": "configs" @@ -35640,15 +35804,15 @@ }, "property": { "type": "Identifier", - "start": 7254, - "end": 7260, + "start": 7221, + "end": 7227, "loc": { "start": { - "line": 232, + "line": 231, "column": 26 }, "end": { - "line": 232, + "line": 231, "column": 32 }, "identifierName": "active" @@ -35660,29 +35824,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 7264, - "end": 7286, + "start": 7231, + "end": 7253, "loc": { "start": { - "line": 232, + "line": 231, "column": 36 }, "end": { - "line": 232, + "line": 231, "column": 58 } }, "object": { "type": "Identifier", - "start": 7264, - "end": 7271, + "start": 7231, + "end": 7238, "loc": { "start": { - "line": 232, + "line": 231, "column": 36 }, "end": { - "line": 232, + "line": 231, "column": 43 }, "identifierName": "configs" @@ -35691,15 +35855,15 @@ }, "property": { "type": "Identifier", - "start": 7272, - "end": 7286, + "start": 7239, + "end": 7253, "loc": { "start": { - "line": 232, + "line": 231, "column": 44 }, "end": { - "line": 232, + "line": 231, "column": 58 }, "identifierName": "pointerEnabled" @@ -35710,7 +35874,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 7245 + "parenStart": 7212 } }, "extra": { @@ -35719,30 +35883,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 7289, - "end": 7328, + "start": 7256, + "end": 7295, "loc": { "start": { - "line": 232, + "line": 231, "column": 61 }, "end": { - "line": 234, + "line": 233, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 7307, - "end": 7314, + "start": 7274, + "end": 7281, "loc": { "start": { - "line": 233, + "line": 232, "column": 16 }, "end": { - "line": 233, + "line": 232, "column": 23 } }, @@ -35755,43 +35919,43 @@ }, { "type": "SwitchStatement", - "start": 7341, - "end": 7764, + "start": 7308, + "end": 7995, "loc": { "start": { - "line": 235, + "line": 234, "column": 12 }, "end": { - "line": 247, + "line": 252, "column": 13 } }, "discriminant": { "type": "MemberExpression", - "start": 7349, - "end": 7356, + "start": 7316, + "end": 7323, "loc": { "start": { - "line": 235, + "line": 234, "column": 20 }, "end": { - "line": 235, + "line": 234, "column": 27 } }, "object": { "type": "Identifier", - "start": 7349, - "end": 7350, + "start": 7316, + "end": 7317, "loc": { "start": { - "line": 235, + "line": 234, "column": 20 }, "end": { - "line": 235, + "line": 234, "column": 21 }, "identifierName": "e" @@ -35800,79 +35964,344 @@ }, "property": { "type": "Identifier", - "start": 7351, - "end": 7356, + "start": 7318, + "end": 7323, "loc": { "start": { - "line": 235, + "line": 234, "column": 22 }, - "end": { - "line": 235, - "column": 27 + "end": { + "line": 234, + "column": 27 + }, + "identifierName": "which" + }, + "name": "which" + }, + "computed": false + }, + "cases": [ + { + "type": "SwitchCase", + "start": 7343, + "end": 7524, + "loc": { + "start": { + "line": 235, + "column": 16 + }, + "end": { + "line": 239, + "column": 26 + } + }, + "consequent": [ + { + "type": "ExpressionStatement", + "start": 7386, + "end": 7408, + "loc": { + "start": { + "line": 236, + "column": 20 + }, + "end": { + "line": 236, + "column": 42 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7386, + "end": 7407, + "loc": { + "start": { + "line": 236, + "column": 20 + }, + "end": { + "line": 236, + "column": 41 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 7386, + "end": 7399, + "loc": { + "start": { + "line": 236, + "column": 20 + }, + "end": { + "line": 236, + "column": 33 + }, + "identifierName": "mouseDownLeft" + }, + "name": "mouseDownLeft", + "leadingComments": null + }, + "right": { + "type": "BooleanLiteral", + "start": 7402, + "end": 7407, + "loc": { + "start": { + "line": 236, + "column": 36 + }, + "end": { + "line": 236, + "column": 41 + } + }, + "value": false + }, + "leadingComments": null + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " Left button", + "start": 7351, + "end": 7365, + "loc": { + "start": { + "line": 235, + "column": 24 + }, + "end": { + "line": 235, + "column": 38 + } + } + } + ] + }, + { + "type": "ExpressionStatement", + "start": 7429, + "end": 7453, + "loc": { + "start": { + "line": 237, + "column": 20 + }, + "end": { + "line": 237, + "column": 44 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7429, + "end": 7452, + "loc": { + "start": { + "line": 237, + "column": 20 + }, + "end": { + "line": 237, + "column": 43 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 7429, + "end": 7444, + "loc": { + "start": { + "line": 237, + "column": 20 + }, + "end": { + "line": 237, + "column": 35 + }, + "identifierName": "mouseDownMiddle" + }, + "name": "mouseDownMiddle" + }, + "right": { + "type": "BooleanLiteral", + "start": 7447, + "end": 7452, + "loc": { + "start": { + "line": 237, + "column": 38 + }, + "end": { + "line": 237, + "column": 43 + } + }, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 7474, + "end": 7497, + "loc": { + "start": { + "line": 238, + "column": 20 + }, + "end": { + "line": 238, + "column": 43 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7474, + "end": 7496, + "loc": { + "start": { + "line": 238, + "column": 20 + }, + "end": { + "line": 238, + "column": 42 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 7474, + "end": 7488, + "loc": { + "start": { + "line": 238, + "column": 20 + }, + "end": { + "line": 238, + "column": 34 + }, + "identifierName": "mouseDownRight" + }, + "name": "mouseDownRight" + }, + "right": { + "type": "BooleanLiteral", + "start": 7491, + "end": 7496, + "loc": { + "start": { + "line": 238, + "column": 37 + }, + "end": { + "line": 238, + "column": 42 + } + }, + "value": false + } + } + }, + { + "type": "BreakStatement", + "start": 7518, + "end": 7524, + "loc": { + "start": { + "line": 239, + "column": 20 + }, + "end": { + "line": 239, + "column": 26 + } + }, + "label": null + } + ], + "test": { + "type": "NumericLiteral", + "start": 7348, + "end": 7349, + "loc": { + "start": { + "line": 235, + "column": 21 + }, + "end": { + "line": 235, + "column": 22 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" }, - "identifierName": "which" - }, - "name": "which" + "value": 1 + } }, - "computed": false - }, - "cases": [ { "type": "SwitchCase", - "start": 7376, - "end": 7468, + "start": 7541, + "end": 7730, "loc": { "start": { - "line": 236, + "line": 240, "column": 16 }, "end": { - "line": 238, + "line": 244, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 7419, - "end": 7441, + "start": 7592, + "end": 7614, "loc": { "start": { - "line": 237, + "line": 241, "column": 20 }, "end": { - "line": 237, + "line": 241, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 7419, - "end": 7440, + "start": 7592, + "end": 7613, "loc": { "start": { - "line": 237, + "line": 241, "column": 20 }, "end": { - "line": 237, + "line": 241, "column": 41 } }, "operator": "=", "left": { "type": "Identifier", - "start": 7419, - "end": 7432, + "start": 7592, + "end": 7605, "loc": { "start": { - "line": 237, + "line": 241, "column": 20 }, "end": { - "line": 237, + "line": 241, "column": 33 }, "identifierName": "mouseDownLeft" @@ -35882,15 +36311,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 7435, - "end": 7440, + "start": 7608, + "end": 7613, "loc": { "start": { - "line": 237, + "line": 241, "column": 36 }, "end": { - "line": 237, + "line": 241, "column": 41 } }, @@ -35901,170 +36330,161 @@ "leadingComments": [ { "type": "CommentLine", - "value": " Left button", - "start": 7384, - "end": 7398, + "value": " Middle/both buttons", + "start": 7549, + "end": 7571, "loc": { "start": { - "line": 236, + "line": 240, "column": 24 }, "end": { - "line": 236, - "column": 38 + "line": 240, + "column": 46 } } } ] }, - { - "type": "BreakStatement", - "start": 7462, - "end": 7468, - "loc": { - "start": { - "line": 238, - "column": 20 - }, - "end": { - "line": 238, - "column": 26 - } - }, - "label": null - } - ], - "test": { - "type": "NumericLiteral", - "start": 7381, - "end": 7382, - "loc": { - "start": { - "line": 236, - "column": 21 - }, - "end": { - "line": 236, - "column": 22 - } - }, - "extra": { - "rawValue": 1, - "raw": "1" - }, - "value": 1 - } - }, - { - "type": "SwitchCase", - "start": 7485, - "end": 7587, - "loc": { - "start": { - "line": 239, - "column": 16 - }, - "end": { - "line": 241, - "column": 26 - } - }, - "consequent": [ { "type": "ExpressionStatement", - "start": 7536, - "end": 7560, + "start": 7635, + "end": 7659, "loc": { "start": { - "line": 240, + "line": 242, "column": 20 }, "end": { - "line": 240, + "line": 242, "column": 44 } }, "expression": { "type": "AssignmentExpression", - "start": 7536, - "end": 7559, + "start": 7635, + "end": 7658, "loc": { "start": { - "line": 240, + "line": 242, "column": 20 }, "end": { - "line": 240, + "line": 242, "column": 43 } }, "operator": "=", "left": { "type": "Identifier", - "start": 7536, - "end": 7551, + "start": 7635, + "end": 7650, "loc": { "start": { - "line": 240, + "line": 242, "column": 20 }, "end": { - "line": 240, + "line": 242, "column": 35 }, "identifierName": "mouseDownMiddle" }, - "name": "mouseDownMiddle", - "leadingComments": null + "name": "mouseDownMiddle" }, "right": { "type": "BooleanLiteral", - "start": 7554, - "end": 7559, + "start": 7653, + "end": 7658, "loc": { "start": { - "line": 240, + "line": 242, "column": 38 }, "end": { - "line": 240, + "line": 242, "column": 43 } }, "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 7680, + "end": 7703, + "loc": { + "start": { + "line": 243, + "column": 20 }, - "leadingComments": null + "end": { + "line": 243, + "column": 43 + } }, - "leadingComments": [ - { - "type": "CommentLine", - "value": " Middle/both buttons", - "start": 7493, - "end": 7515, + "expression": { + "type": "AssignmentExpression", + "start": 7680, + "end": 7702, + "loc": { + "start": { + "line": 243, + "column": 20 + }, + "end": { + "line": 243, + "column": 42 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 7680, + "end": 7694, "loc": { "start": { - "line": 239, - "column": 24 + "line": 243, + "column": 20 }, "end": { - "line": 239, - "column": 46 + "line": 243, + "column": 34 + }, + "identifierName": "mouseDownRight" + }, + "name": "mouseDownRight" + }, + "right": { + "type": "BooleanLiteral", + "start": 7697, + "end": 7702, + "loc": { + "start": { + "line": 243, + "column": 37 + }, + "end": { + "line": 243, + "column": 42 } - } + }, + "value": false } - ] + } }, { "type": "BreakStatement", - "start": 7581, - "end": 7587, + "start": 7724, + "end": 7730, "loc": { "start": { - "line": 241, + "line": 244, "column": 20 }, "end": { - "line": 241, + "line": 244, "column": 26 } }, @@ -36073,15 +36493,15 @@ ], "test": { "type": "NumericLiteral", - "start": 7490, - "end": 7491, + "start": 7546, + "end": 7547, "loc": { "start": { - "line": 239, + "line": 240, "column": 21 }, "end": { - "line": 239, + "line": 240, "column": 22 } }, @@ -36094,78 +36514,78 @@ }, { "type": "SwitchCase", - "start": 7604, - "end": 7698, + "start": 7747, + "end": 7929, "loc": { "start": { - "line": 242, + "line": 245, "column": 16 }, "end": { - "line": 244, + "line": 249, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 7648, - "end": 7671, + "start": 7791, + "end": 7813, "loc": { "start": { - "line": 243, + "line": 246, "column": 20 }, "end": { - "line": 243, - "column": 43 + "line": 246, + "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 7648, - "end": 7670, + "start": 7791, + "end": 7812, "loc": { "start": { - "line": 243, + "line": 246, "column": 20 }, "end": { - "line": 243, - "column": 42 + "line": 246, + "column": 41 } }, "operator": "=", "left": { "type": "Identifier", - "start": 7648, - "end": 7662, + "start": 7791, + "end": 7804, "loc": { "start": { - "line": 243, + "line": 246, "column": 20 }, "end": { - "line": 243, - "column": 34 + "line": 246, + "column": 33 }, - "identifierName": "mouseDownRight" + "identifierName": "mouseDownLeft" }, - "name": "mouseDownRight", + "name": "mouseDownLeft", "leadingComments": null }, "right": { "type": "BooleanLiteral", - "start": 7665, - "end": 7670, + "start": 7807, + "end": 7812, "loc": { "start": { - "line": 243, - "column": 37 + "line": 246, + "column": 36 }, "end": { - "line": 243, - "column": 42 + "line": 246, + "column": 41 } }, "value": false @@ -36176,32 +36596,160 @@ { "type": "CommentLine", "value": " Right button", - "start": 7612, - "end": 7627, + "start": 7755, + "end": 7770, "loc": { "start": { - "line": 242, + "line": 245, "column": 24 }, "end": { - "line": 242, + "line": 245, "column": 39 } } } ] }, + { + "type": "ExpressionStatement", + "start": 7834, + "end": 7858, + "loc": { + "start": { + "line": 247, + "column": 20 + }, + "end": { + "line": 247, + "column": 44 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7834, + "end": 7857, + "loc": { + "start": { + "line": 247, + "column": 20 + }, + "end": { + "line": 247, + "column": 43 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 7834, + "end": 7849, + "loc": { + "start": { + "line": 247, + "column": 20 + }, + "end": { + "line": 247, + "column": 35 + }, + "identifierName": "mouseDownMiddle" + }, + "name": "mouseDownMiddle" + }, + "right": { + "type": "BooleanLiteral", + "start": 7852, + "end": 7857, + "loc": { + "start": { + "line": 247, + "column": 38 + }, + "end": { + "line": 247, + "column": 43 + } + }, + "value": false + } + } + }, + { + "type": "ExpressionStatement", + "start": 7879, + "end": 7902, + "loc": { + "start": { + "line": 248, + "column": 20 + }, + "end": { + "line": 248, + "column": 43 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 7879, + "end": 7901, + "loc": { + "start": { + "line": 248, + "column": 20 + }, + "end": { + "line": 248, + "column": 42 + } + }, + "operator": "=", + "left": { + "type": "Identifier", + "start": 7879, + "end": 7893, + "loc": { + "start": { + "line": 248, + "column": 20 + }, + "end": { + "line": 248, + "column": 34 + }, + "identifierName": "mouseDownRight" + }, + "name": "mouseDownRight" + }, + "right": { + "type": "BooleanLiteral", + "start": 7896, + "end": 7901, + "loc": { + "start": { + "line": 248, + "column": 37 + }, + "end": { + "line": 248, + "column": 42 + } + }, + "value": false + } + } + }, { "type": "BreakStatement", - "start": 7692, - "end": 7698, + "start": 7923, + "end": 7929, "loc": { "start": { - "line": 244, + "line": 249, "column": 20 }, "end": { - "line": 244, + "line": 249, "column": 26 } }, @@ -36210,15 +36758,15 @@ ], "test": { "type": "NumericLiteral", - "start": 7609, - "end": 7610, + "start": 7752, + "end": 7753, "loc": { "start": { - "line": 242, + "line": 245, "column": 21 }, "end": { - "line": 242, + "line": 245, "column": 22 } }, @@ -36231,30 +36779,30 @@ }, { "type": "SwitchCase", - "start": 7715, - "end": 7750, + "start": 7946, + "end": 7981, "loc": { "start": { - "line": 245, + "line": 250, "column": 16 }, "end": { - "line": 246, + "line": 251, "column": 26 } }, "consequent": [ { "type": "BreakStatement", - "start": 7744, - "end": 7750, + "start": 7975, + "end": 7981, "loc": { "start": { - "line": 246, + "line": 251, "column": 20 }, "end": { - "line": 246, + "line": 251, "column": 26 } }, @@ -36267,44 +36815,44 @@ }, { "type": "ExpressionStatement", - "start": 7777, - "end": 7794, + "start": 8008, + "end": 8025, "loc": { "start": { - "line": 248, + "line": 253, "column": 12 }, "end": { - "line": 248, + "line": 253, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 7777, - "end": 7793, + "start": 8008, + "end": 8024, "loc": { "start": { - "line": 248, + "line": 253, "column": 12 }, "end": { - "line": 248, + "line": 253, "column": 28 } }, "operator": "=", "left": { "type": "Identifier", - "start": 7777, - "end": 7789, + "start": 8008, + "end": 8020, "loc": { "start": { - "line": 248, + "line": 253, "column": 12 }, "end": { - "line": 248, + "line": 253, "column": 24 }, "identifierName": "xRotateDelta" @@ -36313,15 +36861,15 @@ }, "right": { "type": "NumericLiteral", - "start": 7792, - "end": 7793, + "start": 8023, + "end": 8024, "loc": { "start": { - "line": 248, + "line": 253, "column": 27 }, "end": { - "line": 248, + "line": 253, "column": 28 } }, @@ -36335,44 +36883,44 @@ }, { "type": "ExpressionStatement", - "start": 7807, - "end": 7824, + "start": 8038, + "end": 8055, "loc": { "start": { - "line": 249, + "line": 254, "column": 12 }, "end": { - "line": 249, + "line": 254, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 7807, - "end": 7823, + "start": 8038, + "end": 8054, "loc": { "start": { - "line": 249, + "line": 254, "column": 12 }, "end": { - "line": 249, + "line": 254, "column": 28 } }, "operator": "=", "left": { "type": "Identifier", - "start": 7807, - "end": 7819, + "start": 8038, + "end": 8050, "loc": { "start": { - "line": 249, + "line": 254, "column": 12 }, "end": { - "line": 249, + "line": 254, "column": 24 }, "identifierName": "yRotateDelta" @@ -36381,15 +36929,15 @@ }, "right": { "type": "NumericLiteral", - "start": 7822, - "end": 7823, + "start": 8053, + "end": 8054, "loc": { "start": { - "line": 249, + "line": 254, "column": 27 }, "end": { - "line": 249, + "line": 254, "column": 28 } }, @@ -36400,251 +36948,6 @@ "value": 0 } } - }, - { - "type": "ExpressionStatement", - "start": 7837, - "end": 7856, - "loc": { - "start": { - "line": 250, - "column": 12 - }, - "end": { - "line": 250, - "column": 31 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 7837, - "end": 7855, - "loc": { - "start": { - "line": 250, - "column": 12 - }, - "end": { - "line": 250, - "column": 30 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 7837, - "end": 7847, - "loc": { - "start": { - "line": 250, - "column": 12 - }, - "end": { - "line": 250, - "column": 22 - } - }, - "object": { - "type": "ThisExpression", - "start": 7837, - "end": 7841, - "loc": { - "start": { - "line": 250, - "column": 12 - }, - "end": { - "line": 250, - "column": 16 - } - } - }, - "property": { - "type": "Identifier", - "start": 7842, - "end": 7847, - "loc": { - "start": { - "line": 250, - "column": 17 - }, - "end": { - "line": 250, - "column": 22 - }, - "identifierName": "_down" - }, - "name": "_down" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 7850, - "end": 7855, - "loc": { - "start": { - "line": 250, - "column": 25 - }, - "end": { - "line": 250, - "column": 30 - } - }, - "value": false - } - } - }, - { - "type": "ExpressionStatement", - "start": 7870, - "end": 7944, - "loc": { - "start": { - "line": 252, - "column": 12 - }, - "end": { - "line": 252, - "column": 86 - } - }, - "expression": { - "type": "CallExpression", - "start": 7870, - "end": 7943, - "loc": { - "start": { - "line": 252, - "column": 12 - }, - "end": { - "line": 252, - "column": 85 - } - }, - "callee": { - "type": "MemberExpression", - "start": 7870, - "end": 7898, - "loc": { - "start": { - "line": 252, - "column": 12 - }, - "end": { - "line": 252, - "column": 40 - } - }, - "object": { - "type": "Identifier", - "start": 7870, - "end": 7878, - "loc": { - "start": { - "line": 252, - "column": 12 - }, - "end": { - "line": 252, - "column": 20 - }, - "identifierName": "document" - }, - "name": "document" - }, - "property": { - "type": "Identifier", - "start": 7879, - "end": 7898, - "loc": { - "start": { - "line": 252, - "column": 21 - }, - "end": { - "line": 252, - "column": 40 - }, - "identifierName": "removeEventListener" - }, - "name": "removeEventListener" - }, - "computed": false - }, - "arguments": [ - { - "type": "StringLiteral", - "start": 7899, - "end": 7910, - "loc": { - "start": { - "line": 252, - "column": 41 - }, - "end": { - "line": 252, - "column": 52 - } - }, - "extra": { - "rawValue": "mousemove", - "raw": "\"mousemove\"" - }, - "value": "mousemove" - }, - { - "type": "MemberExpression", - "start": 7912, - "end": 7942, - "loc": { - "start": { - "line": 252, - "column": 54 - }, - "end": { - "line": 252, - "column": 84 - } - }, - "object": { - "type": "ThisExpression", - "start": 7912, - "end": 7916, - "loc": { - "start": { - "line": 252, - "column": 54 - }, - "end": { - "line": 252, - "column": 58 - } - } - }, - "property": { - "type": "Identifier", - "start": 7917, - "end": 7942, - "loc": { - "start": { - "line": 252, - "column": 59 - }, - "end": { - "line": 252, - "column": 84 - }, - "identifierName": "_documentMouseMoveHandler" - }, - "name": "_documentMouseMoveHandler" - }, - "computed": false - } - ] - } } ], "directives": [] @@ -36656,57 +36959,57 @@ }, { "type": "ExpressionStatement", - "start": 7966, - "end": 8826, + "start": 8077, + "end": 8937, "loc": { "start": { - "line": 255, + "line": 257, "column": 8 }, "end": { - "line": 275, + "line": 277, "column": 11 } }, "expression": { "type": "CallExpression", - "start": 7966, - "end": 8825, + "start": 8077, + "end": 8936, "loc": { "start": { - "line": 255, + "line": 257, "column": 8 }, "end": { - "line": 275, + "line": 277, "column": 10 } }, "callee": { "type": "MemberExpression", - "start": 7966, - "end": 7989, + "start": 8077, + "end": 8100, "loc": { "start": { - "line": 255, + "line": 257, "column": 8 }, "end": { - "line": 255, + "line": 257, "column": 31 } }, "object": { "type": "Identifier", - "start": 7966, - "end": 7972, + "start": 8077, + "end": 8083, "loc": { "start": { - "line": 255, + "line": 257, "column": 8 }, "end": { - "line": 255, + "line": 257, "column": 14 }, "identifierName": "canvas" @@ -36715,15 +37018,15 @@ }, "property": { "type": "Identifier", - "start": 7973, - "end": 7989, + "start": 8084, + "end": 8100, "loc": { "start": { - "line": 255, + "line": 257, "column": 15 }, "end": { - "line": 255, + "line": 257, "column": 31 }, "identifierName": "addEventListener" @@ -36735,15 +37038,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 7990, - "end": 7999, + "start": 8101, + "end": 8110, "loc": { "start": { - "line": 255, + "line": 257, "column": 32 }, "end": { - "line": 255, + "line": 257, "column": 41 } }, @@ -36755,59 +37058,59 @@ }, { "type": "AssignmentExpression", - "start": 8001, - "end": 8824, + "start": 8112, + "end": 8935, "loc": { "start": { - "line": 255, + "line": 257, "column": 43 }, "end": { - "line": 275, + "line": 277, "column": 9 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8001, - "end": 8021, + "start": 8112, + "end": 8132, "loc": { "start": { - "line": 255, + "line": 257, "column": 43 }, "end": { - "line": 255, + "line": 257, "column": 63 } }, "object": { "type": "ThisExpression", - "start": 8001, - "end": 8005, + "start": 8112, + "end": 8116, "loc": { "start": { - "line": 255, + "line": 257, "column": 43 }, "end": { - "line": 255, + "line": 257, "column": 47 } } }, "property": { "type": "Identifier", - "start": 8006, - "end": 8021, + "start": 8117, + "end": 8132, "loc": { "start": { - "line": 255, + "line": 257, "column": 48 }, "end": { - "line": 255, + "line": 257, "column": 63 }, "identifierName": "_mouseUpHandler" @@ -36818,15 +37121,15 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 8024, - "end": 8824, + "start": 8135, + "end": 8935, "loc": { "start": { - "line": 255, + "line": 257, "column": 66 }, "end": { - "line": 275, + "line": 277, "column": 9 } }, @@ -36837,15 +37140,15 @@ "params": [ { "type": "Identifier", - "start": 8025, - "end": 8026, + "start": 8136, + "end": 8137, "loc": { "start": { - "line": 255, + "line": 257, "column": 67 }, "end": { - "line": 255, + "line": 257, "column": 68 }, "identifierName": "e" @@ -36855,44 +37158,44 @@ ], "body": { "type": "BlockStatement", - "start": 8031, - "end": 8824, + "start": 8142, + "end": 8935, "loc": { "start": { - "line": 255, + "line": 257, "column": 73 }, "end": { - "line": 275, + "line": 277, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 8045, - "end": 8133, + "start": 8156, + "end": 8244, "loc": { "start": { - "line": 256, + "line": 258, "column": 12 }, "end": { - "line": 258, + "line": 260, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 8049, - "end": 8092, + "start": 8160, + "end": 8203, "loc": { "start": { - "line": 256, + "line": 258, "column": 16 }, "end": { - "line": 256, + "line": 258, "column": 59 } }, @@ -36900,43 +37203,43 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 8051, - "end": 8091, + "start": 8162, + "end": 8202, "loc": { "start": { - "line": 256, + "line": 258, "column": 18 }, "end": { - "line": 256, + "line": 258, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 8051, - "end": 8065, + "start": 8162, + "end": 8176, "loc": { "start": { - "line": 256, + "line": 258, "column": 18 }, "end": { - "line": 256, + "line": 258, "column": 32 } }, "object": { "type": "Identifier", - "start": 8051, - "end": 8058, + "start": 8162, + "end": 8169, "loc": { "start": { - "line": 256, + "line": 258, "column": 18 }, "end": { - "line": 256, + "line": 258, "column": 25 }, "identifierName": "configs" @@ -36945,15 +37248,15 @@ }, "property": { "type": "Identifier", - "start": 8059, - "end": 8065, + "start": 8170, + "end": 8176, "loc": { "start": { - "line": 256, + "line": 258, "column": 26 }, "end": { - "line": 256, + "line": 258, "column": 32 }, "identifierName": "active" @@ -36965,29 +37268,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 8069, - "end": 8091, + "start": 8180, + "end": 8202, "loc": { "start": { - "line": 256, + "line": 258, "column": 36 }, "end": { - "line": 256, + "line": 258, "column": 58 } }, "object": { "type": "Identifier", - "start": 8069, - "end": 8076, + "start": 8180, + "end": 8187, "loc": { "start": { - "line": 256, + "line": 258, "column": 36 }, "end": { - "line": 256, + "line": 258, "column": 43 }, "identifierName": "configs" @@ -36996,15 +37299,15 @@ }, "property": { "type": "Identifier", - "start": 8077, - "end": 8091, + "start": 8188, + "end": 8202, "loc": { "start": { - "line": 256, + "line": 258, "column": 44 }, "end": { - "line": 256, + "line": 258, "column": 58 }, "identifierName": "pointerEnabled" @@ -37015,7 +37318,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 8050 + "parenStart": 8161 } }, "extra": { @@ -37024,30 +37327,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 8094, - "end": 8133, + "start": 8205, + "end": 8244, "loc": { "start": { - "line": 256, + "line": 258, "column": 61 }, "end": { - "line": 258, + "line": 260, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 8112, - "end": 8119, + "start": 8223, + "end": 8230, "loc": { "start": { - "line": 257, + "line": 259, "column": 16 }, "end": { - "line": 257, + "line": 259, "column": 23 } }, @@ -37060,43 +37363,43 @@ }, { "type": "SwitchStatement", - "start": 8146, - "end": 8763, + "start": 8257, + "end": 8874, "loc": { "start": { - "line": 259, + "line": 261, "column": 12 }, "end": { - "line": 273, + "line": 275, "column": 13 } }, "discriminant": { "type": "MemberExpression", - "start": 8154, - "end": 8161, + "start": 8265, + "end": 8272, "loc": { "start": { - "line": 259, + "line": 261, "column": 20 }, "end": { - "line": 259, + "line": 261, "column": 27 } }, "object": { "type": "Identifier", - "start": 8154, - "end": 8155, + "start": 8265, + "end": 8266, "loc": { "start": { - "line": 259, + "line": 261, "column": 20 }, "end": { - "line": 259, + "line": 261, "column": 21 }, "identifierName": "e" @@ -37105,15 +37408,15 @@ }, "property": { "type": "Identifier", - "start": 8156, - "end": 8161, + "start": 8267, + "end": 8272, "loc": { "start": { - "line": 259, + "line": 261, "column": 22 }, "end": { - "line": 259, + "line": 261, "column": 27 }, "identifierName": "which" @@ -37125,58 +37428,58 @@ "cases": [ { "type": "SwitchCase", - "start": 8181, - "end": 8697, + "start": 8292, + "end": 8808, "loc": { "start": { - "line": 260, + "line": 262, "column": 16 }, "end": { - "line": 270, + "line": 272, "column": 26 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 8225, - "end": 8261, + "start": 8336, + "end": 8372, "loc": { "start": { - "line": 261, + "line": 263, "column": 20 }, "end": { - "line": 261, + "line": 263, "column": 56 } }, "expression": { "type": "CallExpression", - "start": 8225, - "end": 8260, + "start": 8336, + "end": 8371, "loc": { "start": { - "line": 261, + "line": 263, "column": 20 }, "end": { - "line": 261, + "line": 263, "column": 55 } }, "callee": { "type": "Identifier", - "start": 8225, - "end": 8246, + "start": 8336, + "end": 8357, "loc": { "start": { - "line": 261, + "line": 263, "column": 20 }, "end": { - "line": 261, + "line": 263, "column": 41 }, "identifierName": "getCanvasPosFromEvent" @@ -37187,15 +37490,15 @@ "arguments": [ { "type": "Identifier", - "start": 8247, - "end": 8248, + "start": 8358, + "end": 8359, "loc": { "start": { - "line": 261, + "line": 263, "column": 42 }, "end": { - "line": 261, + "line": 263, "column": 43 }, "identifierName": "e" @@ -37204,15 +37507,15 @@ }, { "type": "Identifier", - "start": 8250, - "end": 8259, + "start": 8361, + "end": 8370, "loc": { "start": { - "line": 261, + "line": 263, "column": 45 }, "end": { - "line": 261, + "line": 263, "column": 54 }, "identifierName": "canvasPos" @@ -37226,15 +37529,15 @@ { "type": "CommentLine", "value": " Right button", - "start": 8189, - "end": 8204, + "start": 8300, + "end": 8315, "loc": { "start": { - "line": 260, + "line": 262, "column": 24 }, "end": { - "line": 260, + "line": 262, "column": 39 } } @@ -37243,44 +37546,44 @@ }, { "type": "VariableDeclaration", - "start": 8282, - "end": 8305, + "start": 8393, + "end": 8416, "loc": { "start": { - "line": 262, + "line": 264, "column": 20 }, "end": { - "line": 262, + "line": 264, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 8288, - "end": 8304, + "start": 8399, + "end": 8415, "loc": { "start": { - "line": 262, + "line": 264, "column": 26 }, "end": { - "line": 262, + "line": 264, "column": 42 } }, "id": { "type": "Identifier", - "start": 8288, - "end": 8289, + "start": 8399, + "end": 8400, "loc": { "start": { - "line": 262, + "line": 264, "column": 26 }, "end": { - "line": 262, + "line": 264, "column": 27 }, "identifierName": "x" @@ -37289,29 +37592,29 @@ }, "init": { "type": "MemberExpression", - "start": 8292, - "end": 8304, + "start": 8403, + "end": 8415, "loc": { "start": { - "line": 262, + "line": 264, "column": 30 }, "end": { - "line": 262, + "line": 264, "column": 42 } }, "object": { "type": "Identifier", - "start": 8292, - "end": 8301, + "start": 8403, + "end": 8412, "loc": { "start": { - "line": 262, + "line": 264, "column": 30 }, "end": { - "line": 262, + "line": 264, "column": 39 }, "identifierName": "canvasPos" @@ -37320,15 +37623,15 @@ }, "property": { "type": "NumericLiteral", - "start": 8302, - "end": 8303, + "start": 8413, + "end": 8414, "loc": { "start": { - "line": 262, + "line": 264, "column": 40 }, "end": { - "line": 262, + "line": 264, "column": 41 } }, @@ -37346,44 +37649,44 @@ }, { "type": "VariableDeclaration", - "start": 8326, - "end": 8349, + "start": 8437, + "end": 8460, "loc": { "start": { - "line": 263, + "line": 265, "column": 20 }, "end": { - "line": 263, + "line": 265, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 8332, - "end": 8348, + "start": 8443, + "end": 8459, "loc": { "start": { - "line": 263, + "line": 265, "column": 26 }, "end": { - "line": 263, + "line": 265, "column": 42 } }, "id": { "type": "Identifier", - "start": 8332, - "end": 8333, + "start": 8443, + "end": 8444, "loc": { "start": { - "line": 263, + "line": 265, "column": 26 }, "end": { - "line": 263, + "line": 265, "column": 27 }, "identifierName": "y" @@ -37392,29 +37695,29 @@ }, "init": { "type": "MemberExpression", - "start": 8336, - "end": 8348, + "start": 8447, + "end": 8459, "loc": { "start": { - "line": 263, + "line": 265, "column": 30 }, "end": { - "line": 263, + "line": 265, "column": 42 } }, "object": { "type": "Identifier", - "start": 8336, - "end": 8345, + "start": 8447, + "end": 8456, "loc": { "start": { - "line": 263, + "line": 265, "column": 30 }, "end": { - "line": 263, + "line": 265, "column": 39 }, "identifierName": "canvasPos" @@ -37423,15 +37726,15 @@ }, "property": { "type": "NumericLiteral", - "start": 8346, - "end": 8347, + "start": 8457, + "end": 8458, "loc": { "start": { - "line": 263, + "line": 265, "column": 40 }, "end": { - "line": 263, + "line": 265, "column": 41 } }, @@ -37449,85 +37752,85 @@ }, { "type": "IfStatement", - "start": 8370, - "end": 8670, + "start": 8481, + "end": 8781, "loc": { "start": { - "line": 264, + "line": 266, "column": 20 }, "end": { - "line": 269, + "line": 271, "column": 21 } }, "test": { "type": "LogicalExpression", - "start": 8374, - "end": 8432, + "start": 8485, + "end": 8543, "loc": { "start": { - "line": 264, + "line": 266, "column": 24 }, "end": { - "line": 264, + "line": 266, "column": 82 } }, "left": { "type": "BinaryExpression", - "start": 8374, - "end": 8401, + "start": 8485, + "end": 8512, "loc": { "start": { - "line": 264, + "line": 266, "column": 24 }, "end": { - "line": 264, + "line": 266, "column": 51 } }, "left": { "type": "CallExpression", - "start": 8374, - "end": 8397, + "start": 8485, + "end": 8508, "loc": { "start": { - "line": 264, + "line": 266, "column": 24 }, "end": { - "line": 264, + "line": 266, "column": 47 } }, "callee": { "type": "MemberExpression", - "start": 8374, - "end": 8382, + "start": 8485, + "end": 8493, "loc": { "start": { - "line": 264, + "line": 266, "column": 24 }, "end": { - "line": 264, + "line": 266, "column": 32 } }, "object": { "type": "Identifier", - "start": 8374, - "end": 8378, + "start": 8485, + "end": 8489, "loc": { "start": { - "line": 264, + "line": 266, "column": 24 }, "end": { - "line": 264, + "line": 266, "column": 28 }, "identifierName": "Math" @@ -37536,15 +37839,15 @@ }, "property": { "type": "Identifier", - "start": 8379, - "end": 8382, + "start": 8490, + "end": 8493, "loc": { "start": { - "line": 264, + "line": 266, "column": 29 }, "end": { - "line": 264, + "line": 266, "column": 32 }, "identifierName": "abs" @@ -37556,29 +37859,29 @@ "arguments": [ { "type": "BinaryExpression", - "start": 8383, - "end": 8396, + "start": 8494, + "end": 8507, "loc": { "start": { - "line": 264, + "line": 266, "column": 33 }, "end": { - "line": 264, + "line": 266, "column": 46 } }, "left": { "type": "Identifier", - "start": 8383, - "end": 8384, + "start": 8494, + "end": 8495, "loc": { "start": { - "line": 264, + "line": 266, "column": 33 }, "end": { - "line": 264, + "line": 266, "column": 34 }, "identifierName": "x" @@ -37588,15 +37891,15 @@ "operator": "-", "right": { "type": "Identifier", - "start": 8387, - "end": 8396, + "start": 8498, + "end": 8507, "loc": { "start": { - "line": 264, + "line": 266, "column": 37 }, "end": { - "line": 264, + "line": 266, "column": 46 }, "identifierName": "lastXDown" @@ -37609,15 +37912,15 @@ "operator": "<", "right": { "type": "NumericLiteral", - "start": 8400, - "end": 8401, + "start": 8511, + "end": 8512, "loc": { "start": { - "line": 264, + "line": 266, "column": 50 }, "end": { - "line": 264, + "line": 266, "column": 51 } }, @@ -37631,57 +37934,57 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 8405, - "end": 8432, + "start": 8516, + "end": 8543, "loc": { "start": { - "line": 264, + "line": 266, "column": 55 }, "end": { - "line": 264, + "line": 266, "column": 82 } }, "left": { "type": "CallExpression", - "start": 8405, - "end": 8428, + "start": 8516, + "end": 8539, "loc": { "start": { - "line": 264, + "line": 266, "column": 55 }, "end": { - "line": 264, + "line": 266, "column": 78 } }, "callee": { "type": "MemberExpression", - "start": 8405, - "end": 8413, + "start": 8516, + "end": 8524, "loc": { "start": { - "line": 264, + "line": 266, "column": 55 }, "end": { - "line": 264, + "line": 266, "column": 63 } }, "object": { "type": "Identifier", - "start": 8405, - "end": 8409, + "start": 8516, + "end": 8520, "loc": { "start": { - "line": 264, + "line": 266, "column": 55 }, "end": { - "line": 264, + "line": 266, "column": 59 }, "identifierName": "Math" @@ -37690,15 +37993,15 @@ }, "property": { "type": "Identifier", - "start": 8410, - "end": 8413, + "start": 8521, + "end": 8524, "loc": { "start": { - "line": 264, + "line": 266, "column": 60 }, "end": { - "line": 264, + "line": 266, "column": 63 }, "identifierName": "abs" @@ -37710,29 +38013,29 @@ "arguments": [ { "type": "BinaryExpression", - "start": 8414, - "end": 8427, + "start": 8525, + "end": 8538, "loc": { "start": { - "line": 264, + "line": 266, "column": 64 }, "end": { - "line": 264, + "line": 266, "column": 77 } }, "left": { "type": "Identifier", - "start": 8414, - "end": 8415, + "start": 8525, + "end": 8526, "loc": { "start": { - "line": 264, + "line": 266, "column": 64 }, "end": { - "line": 264, + "line": 266, "column": 65 }, "identifierName": "y" @@ -37742,15 +38045,15 @@ "operator": "-", "right": { "type": "Identifier", - "start": 8418, - "end": 8427, + "start": 8529, + "end": 8538, "loc": { "start": { - "line": 264, + "line": 266, "column": 68 }, "end": { - "line": 264, + "line": 266, "column": 77 }, "identifierName": "lastYDown" @@ -37763,15 +38066,15 @@ "operator": "<", "right": { "type": "NumericLiteral", - "start": 8431, - "end": 8432, + "start": 8542, + "end": 8543, "loc": { "start": { - "line": 264, + "line": 266, "column": 81 }, "end": { - "line": 264, + "line": 266, "column": 82 } }, @@ -37785,86 +38088,86 @@ }, "consequent": { "type": "BlockStatement", - "start": 8434, - "end": 8670, + "start": 8545, + "end": 8781, "loc": { "start": { - "line": 264, + "line": 266, "column": 84 }, "end": { - "line": 269, + "line": 271, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 8460, - "end": 8648, + "start": 8571, + "end": 8759, "loc": { "start": { - "line": 265, + "line": 267, "column": 24 }, "end": { - "line": 268, + "line": 270, "column": 33 } }, "expression": { "type": "CallExpression", - "start": 8460, - "end": 8647, + "start": 8571, + "end": 8758, "loc": { "start": { - "line": 265, + "line": 267, "column": 24 }, "end": { - "line": 268, + "line": 270, "column": 32 } }, "callee": { "type": "MemberExpression", - "start": 8460, - "end": 8490, + "start": 8571, + "end": 8601, "loc": { "start": { - "line": 265, + "line": 267, "column": 24 }, "end": { - "line": 265, + "line": 267, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 8460, - "end": 8485, + "start": 8571, + "end": 8596, "loc": { "start": { - "line": 265, + "line": 267, "column": 24 }, "end": { - "line": 265, + "line": 267, "column": 49 } }, "object": { "type": "Identifier", - "start": 8460, - "end": 8471, + "start": 8571, + "end": 8582, "loc": { "start": { - "line": 265, + "line": 267, "column": 24 }, "end": { - "line": 265, + "line": 267, "column": 35 }, "identifierName": "controllers" @@ -37873,15 +38176,15 @@ }, "property": { "type": "Identifier", - "start": 8472, - "end": 8485, + "start": 8583, + "end": 8596, "loc": { "start": { - "line": 265, + "line": 267, "column": 36 }, "end": { - "line": 265, + "line": 267, "column": 49 }, "identifierName": "cameraControl" @@ -37892,15 +38195,15 @@ }, "property": { "type": "Identifier", - "start": 8486, - "end": 8490, + "start": 8597, + "end": 8601, "loc": { "start": { - "line": 265, + "line": 267, "column": 50 }, "end": { - "line": 265, + "line": 267, "column": 54 }, "identifierName": "fire" @@ -37912,15 +38215,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 8491, - "end": 8503, + "start": 8602, + "end": 8614, "loc": { "start": { - "line": 265, + "line": 267, "column": 55 }, "end": { - "line": 265, + "line": 267, "column": 67 } }, @@ -37932,30 +38235,30 @@ }, { "type": "ObjectExpression", - "start": 8505, - "end": 8640, + "start": 8616, + "end": 8751, "loc": { "start": { - "line": 265, + "line": 267, "column": 69 }, "end": { - "line": 268, + "line": 270, "column": 25 } }, "properties": [ { "type": "ObjectProperty", - "start": 8556, - "end": 8576, + "start": 8667, + "end": 8687, "loc": { "start": { - "line": 266, + "line": 268, "column": 28 }, "end": { - "line": 266, + "line": 268, "column": 48 } }, @@ -37964,15 +38267,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8556, - "end": 8565, + "start": 8667, + "end": 8676, "loc": { "start": { - "line": 266, + "line": 268, "column": 28 }, "end": { - "line": 266, + "line": 268, "column": 37 }, "identifierName": "canvasPos" @@ -37982,15 +38285,15 @@ }, "value": { "type": "Identifier", - "start": 8567, - "end": 8576, + "start": 8678, + "end": 8687, "loc": { "start": { - "line": 266, + "line": 268, "column": 39 }, "end": { - "line": 266, + "line": 268, "column": 48 }, "identifierName": "canvasPos" @@ -38001,15 +38304,15 @@ { "type": "CommentLine", "value": " For context menus", - "start": 8507, - "end": 8527, + "start": 8618, + "end": 8638, "loc": { "start": { - "line": 265, + "line": 267, "column": 71 }, "end": { - "line": 265, + "line": 267, "column": 91 } } @@ -38018,15 +38321,15 @@ }, { "type": "ObjectProperty", - "start": 8606, - "end": 8614, + "start": 8717, + "end": 8725, "loc": { "start": { - "line": 267, + "line": 269, "column": 28 }, "end": { - "line": 267, + "line": 269, "column": 36 } }, @@ -38035,15 +38338,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 8606, - "end": 8611, + "start": 8717, + "end": 8722, "loc": { "start": { - "line": 267, + "line": 269, "column": 28 }, "end": { - "line": 267, + "line": 269, "column": 33 }, "identifierName": "event" @@ -38052,15 +38355,15 @@ }, "value": { "type": "Identifier", - "start": 8613, - "end": 8614, + "start": 8724, + "end": 8725, "loc": { "start": { - "line": 267, + "line": 269, "column": 35 }, "end": { - "line": 267, + "line": 269, "column": 36 }, "identifierName": "e" @@ -38072,15 +38375,15 @@ }, { "type": "BooleanLiteral", - "start": 8642, - "end": 8646, + "start": 8753, + "end": 8757, "loc": { "start": { - "line": 268, + "line": 270, "column": 27 }, "end": { - "line": 268, + "line": 270, "column": 31 } }, @@ -38096,15 +38399,15 @@ }, { "type": "BreakStatement", - "start": 8691, - "end": 8697, + "start": 8802, + "end": 8808, "loc": { "start": { - "line": 270, + "line": 272, "column": 20 }, "end": { - "line": 270, + "line": 272, "column": 26 } }, @@ -38113,15 +38416,15 @@ ], "test": { "type": "NumericLiteral", - "start": 8186, - "end": 8187, + "start": 8297, + "end": 8298, "loc": { "start": { - "line": 260, + "line": 262, "column": 21 }, "end": { - "line": 260, + "line": 262, "column": 22 } }, @@ -38134,30 +38437,30 @@ }, { "type": "SwitchCase", - "start": 8714, - "end": 8749, + "start": 8825, + "end": 8860, "loc": { "start": { - "line": 271, + "line": 273, "column": 16 }, "end": { - "line": 272, + "line": 274, "column": 26 } }, "consequent": [ { "type": "BreakStatement", - "start": 8743, - "end": 8749, + "start": 8854, + "end": 8860, "loc": { "start": { - "line": 272, + "line": 274, "column": 20 }, "end": { - "line": 272, + "line": 274, "column": 26 } }, @@ -38170,71 +38473,71 @@ }, { "type": "ExpressionStatement", - "start": 8776, - "end": 8814, + "start": 8887, + "end": 8925, "loc": { "start": { - "line": 274, + "line": 276, "column": 12 }, "end": { - "line": 274, + "line": 276, "column": 50 } }, "expression": { "type": "CallExpression", - "start": 8776, - "end": 8813, + "start": 8887, + "end": 8924, "loc": { "start": { - "line": 274, + "line": 276, "column": 12 }, "end": { - "line": 274, + "line": 276, "column": 49 } }, "callee": { "type": "MemberExpression", - "start": 8776, - "end": 8803, + "start": 8887, + "end": 8914, "loc": { "start": { - "line": 274, + "line": 276, "column": 12 }, "end": { - "line": 274, + "line": 276, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 8776, - "end": 8788, + "start": 8887, + "end": 8899, "loc": { "start": { - "line": 274, + "line": 276, "column": 12 }, "end": { - "line": 274, + "line": 276, "column": 24 } }, "object": { "type": "Identifier", - "start": 8776, - "end": 8782, + "start": 8887, + "end": 8893, "loc": { "start": { - "line": 274, + "line": 276, "column": 12 }, "end": { - "line": 274, + "line": 276, "column": 18 }, "identifierName": "canvas" @@ -38243,15 +38546,15 @@ }, "property": { "type": "Identifier", - "start": 8783, - "end": 8788, + "start": 8894, + "end": 8899, "loc": { "start": { - "line": 274, + "line": 276, "column": 19 }, "end": { - "line": 274, + "line": 276, "column": 24 }, "identifierName": "style" @@ -38262,15 +38565,15 @@ }, "property": { "type": "Identifier", - "start": 8789, - "end": 8803, + "start": 8900, + "end": 8914, "loc": { "start": { - "line": 274, + "line": 276, "column": 25 }, "end": { - "line": 274, + "line": 276, "column": 39 }, "identifierName": "removeProperty" @@ -38282,15 +38585,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 8804, - "end": 8812, + "start": 8915, + "end": 8923, "loc": { "start": { - "line": 274, + "line": 276, "column": 40 }, "end": { - "line": 274, + "line": 276, "column": 48 } }, @@ -38313,11 +38616,11 @@ }, { "type": "ExpressionStatement", - "start": 8836, - "end": 9113, + "start": 8947, + "end": 9191, "loc": { "start": { - "line": 277, + "line": 279, "column": 8 }, "end": { @@ -38327,11 +38630,11 @@ }, "expression": { "type": "CallExpression", - "start": 8836, - "end": 9112, + "start": 8947, + "end": 9190, "loc": { "start": { - "line": 277, + "line": 279, "column": 8 }, "end": { @@ -38341,29 +38644,29 @@ }, "callee": { "type": "MemberExpression", - "start": 8836, - "end": 8859, + "start": 8947, + "end": 8970, "loc": { "start": { - "line": 277, + "line": 279, "column": 8 }, "end": { - "line": 277, + "line": 279, "column": 31 } }, "object": { "type": "Identifier", - "start": 8836, - "end": 8842, + "start": 8947, + "end": 8953, "loc": { "start": { - "line": 277, + "line": 279, "column": 8 }, "end": { - "line": 277, + "line": 279, "column": 14 }, "identifierName": "canvas" @@ -38372,15 +38675,15 @@ }, "property": { "type": "Identifier", - "start": 8843, - "end": 8859, + "start": 8954, + "end": 8970, "loc": { "start": { - "line": 277, + "line": 279, "column": 15 }, "end": { - "line": 277, + "line": 279, "column": 31 }, "identifierName": "addEventListener" @@ -38392,15 +38695,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 8860, - "end": 8872, + "start": 8971, + "end": 8983, "loc": { "start": { - "line": 277, + "line": 279, "column": 32 }, "end": { - "line": 277, + "line": 279, "column": 44 } }, @@ -38412,11 +38715,11 @@ }, { "type": "AssignmentExpression", - "start": 8874, - "end": 9111, + "start": 8985, + "end": 9189, "loc": { "start": { - "line": 277, + "line": 279, "column": 46 }, "end": { @@ -38427,44 +38730,44 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 8874, - "end": 8897, + "start": 8985, + "end": 9008, "loc": { "start": { - "line": 277, + "line": 279, "column": 46 }, "end": { - "line": 277, + "line": 279, "column": 69 } }, "object": { "type": "ThisExpression", - "start": 8874, - "end": 8878, + "start": 8985, + "end": 8989, "loc": { "start": { - "line": 277, + "line": 279, "column": 46 }, "end": { - "line": 277, + "line": 279, "column": 50 } } }, "property": { "type": "Identifier", - "start": 8879, - "end": 8897, + "start": 8990, + "end": 9008, "loc": { "start": { - "line": 277, + "line": 279, "column": 51 }, "end": { - "line": 277, + "line": 279, "column": 69 }, "identifierName": "_mouseEnterHandler" @@ -38475,11 +38778,11 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 8900, - "end": 9111, + "start": 9011, + "end": 9189, "loc": { "start": { - "line": 277, + "line": 279, "column": 72 }, "end": { @@ -38494,11 +38797,11 @@ "params": [], "body": { "type": "BlockStatement", - "start": 8906, - "end": 9111, + "start": 9017, + "end": 9189, "loc": { "start": { - "line": 277, + "line": 279, "column": 78 }, "end": { @@ -38509,29 +38812,29 @@ "body": [ { "type": "IfStatement", - "start": 8920, - "end": 9008, + "start": 9031, + "end": 9119, "loc": { "start": { - "line": 278, + "line": 280, "column": 12 }, "end": { - "line": 280, + "line": 282, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 8924, - "end": 8967, + "start": 9035, + "end": 9078, "loc": { "start": { - "line": 278, + "line": 280, "column": 16 }, "end": { - "line": 278, + "line": 280, "column": 59 } }, @@ -38539,43 +38842,43 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 8926, - "end": 8966, + "start": 9037, + "end": 9077, "loc": { "start": { - "line": 278, + "line": 280, "column": 18 }, "end": { - "line": 278, + "line": 280, "column": 58 } }, "left": { "type": "MemberExpression", - "start": 8926, - "end": 8940, + "start": 9037, + "end": 9051, "loc": { "start": { - "line": 278, + "line": 280, "column": 18 }, "end": { - "line": 278, + "line": 280, "column": 32 } }, "object": { "type": "Identifier", - "start": 8926, - "end": 8933, + "start": 9037, + "end": 9044, "loc": { "start": { - "line": 278, + "line": 280, "column": 18 }, "end": { - "line": 278, + "line": 280, "column": 25 }, "identifierName": "configs" @@ -38584,15 +38887,15 @@ }, "property": { "type": "Identifier", - "start": 8934, - "end": 8940, + "start": 9045, + "end": 9051, "loc": { "start": { - "line": 278, + "line": 280, "column": 26 }, "end": { - "line": 278, + "line": 280, "column": 32 }, "identifierName": "active" @@ -38604,29 +38907,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 8944, - "end": 8966, + "start": 9055, + "end": 9077, "loc": { "start": { - "line": 278, + "line": 280, "column": 36 }, "end": { - "line": 278, + "line": 280, "column": 58 } }, "object": { "type": "Identifier", - "start": 8944, - "end": 8951, + "start": 9055, + "end": 9062, "loc": { "start": { - "line": 278, + "line": 280, "column": 36 }, "end": { - "line": 278, + "line": 280, "column": 43 }, "identifierName": "configs" @@ -38635,15 +38938,15 @@ }, "property": { "type": "Identifier", - "start": 8952, - "end": 8966, + "start": 9063, + "end": 9077, "loc": { "start": { - "line": 278, + "line": 280, "column": 44 }, "end": { - "line": 278, + "line": 280, "column": 58 }, "identifierName": "pointerEnabled" @@ -38654,7 +38957,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 8925 + "parenStart": 9036 } }, "extra": { @@ -38663,30 +38966,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 8969, - "end": 9008, + "start": 9080, + "end": 9119, "loc": { "start": { - "line": 278, + "line": 280, "column": 61 }, "end": { - "line": 280, + "line": 282, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 8987, - "end": 8994, + "start": 9098, + "end": 9105, "loc": { "start": { - "line": 279, + "line": 281, "column": 16 }, "end": { - "line": 279, + "line": 281, "column": 23 } }, @@ -38699,44 +39002,44 @@ }, { "type": "ExpressionStatement", - "start": 9021, - "end": 9038, + "start": 9132, + "end": 9149, "loc": { "start": { - "line": 281, + "line": 283, "column": 12 }, "end": { - "line": 281, + "line": 283, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 9021, - "end": 9037, + "start": 9132, + "end": 9148, "loc": { "start": { - "line": 281, + "line": 283, "column": 12 }, "end": { - "line": 281, + "line": 283, "column": 28 } }, "operator": "=", "left": { "type": "Identifier", - "start": 9021, - "end": 9033, + "start": 9132, + "end": 9144, "loc": { "start": { - "line": 281, + "line": 283, "column": 12 }, "end": { - "line": 281, + "line": 283, "column": 24 }, "identifierName": "xRotateDelta" @@ -38745,15 +39048,15 @@ }, "right": { "type": "NumericLiteral", - "start": 9036, - "end": 9037, + "start": 9147, + "end": 9148, "loc": { "start": { - "line": 281, + "line": 283, "column": 27 }, "end": { - "line": 281, + "line": 283, "column": 28 } }, @@ -38767,44 +39070,44 @@ }, { "type": "ExpressionStatement", - "start": 9051, - "end": 9068, + "start": 9162, + "end": 9179, "loc": { "start": { - "line": 282, + "line": 284, "column": 12 }, "end": { - "line": 282, + "line": 284, "column": 29 } }, "expression": { "type": "AssignmentExpression", - "start": 9051, - "end": 9067, + "start": 9162, + "end": 9178, "loc": { "start": { - "line": 282, + "line": 284, "column": 12 }, "end": { - "line": 282, + "line": 284, "column": 28 } }, "operator": "=", "left": { "type": "Identifier", - "start": 9051, - "end": 9063, + "start": 9162, + "end": 9174, "loc": { "start": { - "line": 282, + "line": 284, "column": 12 }, "end": { - "line": 282, + "line": 284, "column": 24 }, "identifierName": "yRotateDelta" @@ -38813,15 +39116,15 @@ }, "right": { "type": "NumericLiteral", - "start": 9066, - "end": 9067, + "start": 9177, + "end": 9178, "loc": { "start": { - "line": 282, + "line": 284, "column": 27 }, "end": { - "line": 282, + "line": 284, "column": 28 } }, @@ -38832,101 +39135,6 @@ "value": 0 } } - }, - { - "type": "ExpressionStatement", - "start": 9082, - "end": 9101, - "loc": { - "start": { - "line": 284, - "column": 12 - }, - "end": { - "line": 284, - "column": 31 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 9082, - "end": 9100, - "loc": { - "start": { - "line": 284, - "column": 12 - }, - "end": { - "line": 284, - "column": 30 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 9082, - "end": 9092, - "loc": { - "start": { - "line": 284, - "column": 12 - }, - "end": { - "line": 284, - "column": 22 - } - }, - "object": { - "type": "ThisExpression", - "start": 9082, - "end": 9086, - "loc": { - "start": { - "line": 284, - "column": 12 - }, - "end": { - "line": 284, - "column": 16 - } - } - }, - "property": { - "type": "Identifier", - "start": 9087, - "end": 9092, - "loc": { - "start": { - "line": 284, - "column": 17 - }, - "end": { - "line": 284, - "column": 22 - }, - "identifierName": "_down" - }, - "name": "_down" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 9095, - "end": 9100, - "loc": { - "start": { - "line": 284, - "column": 25 - }, - "end": { - "line": 284, - "column": 30 - } - }, - "value": false - } - } } ], "directives": [] @@ -38938,8 +39146,8 @@ }, { "type": "VariableDeclaration", - "start": 9123, - "end": 9149, + "start": 9201, + "end": 9227, "loc": { "start": { "line": 287, @@ -38953,8 +39161,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9129, - "end": 9148, + "start": 9207, + "end": 9226, "loc": { "start": { "line": 287, @@ -38967,8 +39175,8 @@ }, "id": { "type": "Identifier", - "start": 9129, - "end": 9139, + "start": 9207, + "end": 9217, "loc": { "start": { "line": 287, @@ -38984,8 +39192,8 @@ }, "init": { "type": "BinaryExpression", - "start": 9142, - "end": 9148, + "start": 9220, + "end": 9226, "loc": { "start": { "line": 287, @@ -38998,8 +39206,8 @@ }, "left": { "type": "NumericLiteral", - "start": 9142, - "end": 9143, + "start": 9220, + "end": 9221, "loc": { "start": { "line": 287, @@ -39019,8 +39227,8 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 9146, - "end": 9148, + "start": 9224, + "end": 9226, "loc": { "start": { "line": 287, @@ -39044,8 +39252,8 @@ }, { "type": "VariableDeclaration", - "start": 9158, - "end": 9184, + "start": 9236, + "end": 9262, "loc": { "start": { "line": 288, @@ -39059,8 +39267,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9164, - "end": 9183, + "start": 9242, + "end": 9261, "loc": { "start": { "line": 288, @@ -39073,8 +39281,8 @@ }, "id": { "type": "Identifier", - "start": 9164, - "end": 9174, + "start": 9242, + "end": 9252, "loc": { "start": { "line": 288, @@ -39090,8 +39298,8 @@ }, "init": { "type": "BinaryExpression", - "start": 9177, - "end": 9183, + "start": 9255, + "end": 9261, "loc": { "start": { "line": 288, @@ -39104,8 +39312,8 @@ }, "left": { "type": "NumericLiteral", - "start": 9177, - "end": 9178, + "start": 9255, + "end": 9256, "loc": { "start": { "line": 288, @@ -39125,8 +39333,8 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 9181, - "end": 9183, + "start": 9259, + "end": 9261, "loc": { "start": { "line": 288, @@ -39150,8 +39358,8 @@ }, { "type": "VariableDeclaration", - "start": 9194, - "end": 9217, + "start": 9272, + "end": 9295, "loc": { "start": { "line": 290, @@ -39165,8 +39373,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9198, - "end": 9216, + "start": 9276, + "end": 9294, "loc": { "start": { "line": 290, @@ -39179,8 +39387,8 @@ }, "id": { "type": "Identifier", - "start": 9198, - "end": 9209, + "start": 9276, + "end": 9287, "loc": { "start": { "line": 290, @@ -39196,8 +39404,8 @@ }, "init": { "type": "NullLiteral", - "start": 9212, - "end": 9216, + "start": 9290, + "end": 9294, "loc": { "start": { "line": 290, @@ -39215,8 +39423,8 @@ }, { "type": "ExpressionStatement", - "start": 9227, - "end": 10269, + "start": 9305, + "end": 10363, "loc": { "start": { "line": 292, @@ -39229,8 +39437,8 @@ }, "expression": { "type": "CallExpression", - "start": 9227, - "end": 10268, + "start": 9305, + "end": 10362, "loc": { "start": { "line": 292, @@ -39243,8 +39451,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9227, - "end": 9250, + "start": 9305, + "end": 9328, "loc": { "start": { "line": 292, @@ -39257,8 +39465,8 @@ }, "object": { "type": "Identifier", - "start": 9227, - "end": 9233, + "start": 9305, + "end": 9311, "loc": { "start": { "line": 292, @@ -39274,8 +39482,8 @@ }, "property": { "type": "Identifier", - "start": 9234, - "end": 9250, + "start": 9312, + "end": 9328, "loc": { "start": { "line": 292, @@ -39294,8 +39502,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 9251, - "end": 9258, + "start": 9329, + "end": 9336, "loc": { "start": { "line": 292, @@ -39314,8 +39522,8 @@ }, { "type": "AssignmentExpression", - "start": 9260, - "end": 10267, + "start": 9338, + "end": 10361, "loc": { "start": { "line": 292, @@ -39329,8 +39537,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 9260, - "end": 9283, + "start": 9338, + "end": 9361, "loc": { "start": { "line": 292, @@ -39343,8 +39551,8 @@ }, "object": { "type": "ThisExpression", - "start": 9260, - "end": 9264, + "start": 9338, + "end": 9342, "loc": { "start": { "line": 292, @@ -39358,8 +39566,8 @@ }, "property": { "type": "Identifier", - "start": 9265, - "end": 9283, + "start": 9343, + "end": 9361, "loc": { "start": { "line": 292, @@ -39377,8 +39585,8 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 9286, - "end": 10267, + "start": 9364, + "end": 10361, "loc": { "start": { "line": 292, @@ -39396,8 +39604,8 @@ "params": [ { "type": "Identifier", - "start": 9287, - "end": 9288, + "start": 9365, + "end": 9366, "loc": { "start": { "line": 292, @@ -39414,8 +39622,8 @@ ], "body": { "type": "BlockStatement", - "start": 9293, - "end": 10267, + "start": 9371, + "end": 10361, "loc": { "start": { "line": 292, @@ -39429,8 +39637,8 @@ "body": [ { "type": "IfStatement", - "start": 9307, - "end": 9395, + "start": 9385, + "end": 9473, "loc": { "start": { "line": 293, @@ -39443,8 +39651,8 @@ }, "test": { "type": "UnaryExpression", - "start": 9311, - "end": 9354, + "start": 9389, + "end": 9432, "loc": { "start": { "line": 293, @@ -39459,8 +39667,8 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 9313, - "end": 9353, + "start": 9391, + "end": 9431, "loc": { "start": { "line": 293, @@ -39473,8 +39681,8 @@ }, "left": { "type": "MemberExpression", - "start": 9313, - "end": 9327, + "start": 9391, + "end": 9405, "loc": { "start": { "line": 293, @@ -39487,8 +39695,8 @@ }, "object": { "type": "Identifier", - "start": 9313, - "end": 9320, + "start": 9391, + "end": 9398, "loc": { "start": { "line": 293, @@ -39504,8 +39712,8 @@ }, "property": { "type": "Identifier", - "start": 9321, - "end": 9327, + "start": 9399, + "end": 9405, "loc": { "start": { "line": 293, @@ -39524,8 +39732,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 9331, - "end": 9353, + "start": 9409, + "end": 9431, "loc": { "start": { "line": 293, @@ -39538,8 +39746,8 @@ }, "object": { "type": "Identifier", - "start": 9331, - "end": 9338, + "start": 9409, + "end": 9416, "loc": { "start": { "line": 293, @@ -39555,8 +39763,8 @@ }, "property": { "type": "Identifier", - "start": 9339, - "end": 9353, + "start": 9417, + "end": 9431, "loc": { "start": { "line": 293, @@ -39574,7 +39782,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 9312 + "parenStart": 9390 } }, "extra": { @@ -39583,8 +39791,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9356, - "end": 9395, + "start": 9434, + "end": 9473, "loc": { "start": { "line": 293, @@ -39598,8 +39806,8 @@ "body": [ { "type": "ReturnStatement", - "start": 9374, - "end": 9381, + "start": 9452, + "end": 9459, "loc": { "start": { "line": 294, @@ -39619,8 +39827,8 @@ }, { "type": "VariableDeclaration", - "start": 9408, - "end": 9451, + "start": 9486, + "end": 9529, "loc": { "start": { "line": 296, @@ -39634,8 +39842,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9414, - "end": 9450, + "start": 9492, + "end": 9528, "loc": { "start": { "line": 296, @@ -39648,8 +39856,8 @@ }, "id": { "type": "Identifier", - "start": 9414, - "end": 9421, + "start": 9492, + "end": 9499, "loc": { "start": { "line": 296, @@ -39665,8 +39873,8 @@ }, "init": { "type": "BinaryExpression", - "start": 9424, - "end": 9450, + "start": 9502, + "end": 9528, "loc": { "start": { "line": 296, @@ -39679,8 +39887,8 @@ }, "left": { "type": "CallExpression", - "start": 9424, - "end": 9441, + "start": 9502, + "end": 9519, "loc": { "start": { "line": 296, @@ -39693,8 +39901,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9424, - "end": 9439, + "start": 9502, + "end": 9517, "loc": { "start": { "line": 296, @@ -39707,8 +39915,8 @@ }, "object": { "type": "Identifier", - "start": 9424, - "end": 9435, + "start": 9502, + "end": 9513, "loc": { "start": { "line": 296, @@ -39724,8 +39932,8 @@ }, "property": { "type": "Identifier", - "start": 9436, - "end": 9439, + "start": 9514, + "end": 9517, "loc": { "start": { "line": 296, @@ -39746,8 +39954,8 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 9444, - "end": 9450, + "start": 9522, + "end": 9528, "loc": { "start": { "line": 296, @@ -39771,8 +39979,8 @@ }, { "type": "VariableDeclaration", - "start": 9464, - "end": 9535, + "start": 9542, + "end": 9613, "loc": { "start": { "line": 297, @@ -39786,8 +39994,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9468, - "end": 9534, + "start": 9546, + "end": 9612, "loc": { "start": { "line": 297, @@ -39800,8 +40008,8 @@ }, "id": { "type": "Identifier", - "start": 9468, - "end": 9479, + "start": 9546, + "end": 9557, "loc": { "start": { "line": 297, @@ -39817,8 +40025,8 @@ }, "init": { "type": "ConditionalExpression", - "start": 9482, - "end": 9534, + "start": 9560, + "end": 9612, "loc": { "start": { "line": 297, @@ -39831,8 +40039,8 @@ }, "test": { "type": "BinaryExpression", - "start": 9483, - "end": 9503, + "start": 9561, + "end": 9581, "loc": { "start": { "line": 297, @@ -39845,8 +40053,8 @@ }, "left": { "type": "Identifier", - "start": 9483, - "end": 9494, + "start": 9561, + "end": 9572, "loc": { "start": { "line": 297, @@ -39863,8 +40071,8 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 9499, - "end": 9503, + "start": 9577, + "end": 9581, "loc": { "start": { "line": 297, @@ -39878,13 +40086,13 @@ }, "extra": { "parenthesized": true, - "parenStart": 9482 + "parenStart": 9560 } }, "consequent": { "type": "BinaryExpression", - "start": 9508, - "end": 9529, + "start": 9586, + "end": 9607, "loc": { "start": { "line": 297, @@ -39897,8 +40105,8 @@ }, "left": { "type": "Identifier", - "start": 9508, - "end": 9515, + "start": 9586, + "end": 9593, "loc": { "start": { "line": 297, @@ -39915,8 +40123,8 @@ "operator": "-", "right": { "type": "Identifier", - "start": 9518, - "end": 9529, + "start": 9596, + "end": 9607, "loc": { "start": { "line": 297, @@ -39932,13 +40140,13 @@ }, "extra": { "parenthesized": true, - "parenStart": 9507 + "parenStart": 9585 } }, "alternate": { "type": "NumericLiteral", - "start": 9533, - "end": 9534, + "start": 9611, + "end": 9612, "loc": { "start": { "line": 297, @@ -39962,8 +40170,8 @@ }, { "type": "ExpressionStatement", - "start": 9548, - "end": 9570, + "start": 9626, + "end": 9648, "loc": { "start": { "line": 298, @@ -39976,8 +40184,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9548, - "end": 9569, + "start": 9626, + "end": 9647, "loc": { "start": { "line": 298, @@ -39991,8 +40199,8 @@ "operator": "=", "left": { "type": "Identifier", - "start": 9548, - "end": 9559, + "start": 9626, + "end": 9637, "loc": { "start": { "line": 298, @@ -40008,8 +40216,8 @@ }, "right": { "type": "Identifier", - "start": 9562, - "end": 9569, + "start": 9640, + "end": 9647, "loc": { "start": { "line": 298, @@ -40027,8 +40235,8 @@ }, { "type": "IfStatement", - "start": 9583, - "end": 9670, + "start": 9661, + "end": 9748, "loc": { "start": { "line": 299, @@ -40041,8 +40249,8 @@ }, "test": { "type": "BinaryExpression", - "start": 9587, - "end": 9611, + "start": 9665, + "end": 9689, "loc": { "start": { "line": 299, @@ -40055,8 +40263,8 @@ }, "left": { "type": "Identifier", - "start": 9587, - "end": 9598, + "start": 9665, + "end": 9676, "loc": { "start": { "line": 299, @@ -40073,8 +40281,8 @@ "operator": ">", "right": { "type": "Identifier", - "start": 9601, - "end": 9611, + "start": 9679, + "end": 9689, "loc": { "start": { "line": 299, @@ -40091,8 +40299,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9613, - "end": 9670, + "start": 9691, + "end": 9748, "loc": { "start": { "line": 299, @@ -40106,8 +40314,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9631, - "end": 9656, + "start": 9709, + "end": 9734, "loc": { "start": { "line": 300, @@ -40120,8 +40328,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9631, - "end": 9655, + "start": 9709, + "end": 9733, "loc": { "start": { "line": 300, @@ -40135,8 +40343,8 @@ "operator": "=", "left": { "type": "Identifier", - "start": 9631, - "end": 9642, + "start": 9709, + "end": 9720, "loc": { "start": { "line": 300, @@ -40152,8 +40360,8 @@ }, "right": { "type": "Identifier", - "start": 9645, - "end": 9655, + "start": 9723, + "end": 9733, "loc": { "start": { "line": 300, @@ -40176,8 +40384,8 @@ }, { "type": "IfStatement", - "start": 9683, - "end": 9770, + "start": 9761, + "end": 9848, "loc": { "start": { "line": 302, @@ -40190,8 +40398,8 @@ }, "test": { "type": "BinaryExpression", - "start": 9687, - "end": 9711, + "start": 9765, + "end": 9789, "loc": { "start": { "line": 302, @@ -40204,8 +40412,8 @@ }, "left": { "type": "Identifier", - "start": 9687, - "end": 9698, + "start": 9765, + "end": 9776, "loc": { "start": { "line": 302, @@ -40222,8 +40430,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 9701, - "end": 9711, + "start": 9779, + "end": 9789, "loc": { "start": { "line": 302, @@ -40240,8 +40448,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9713, - "end": 9770, + "start": 9791, + "end": 9848, "loc": { "start": { "line": 302, @@ -40255,8 +40463,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9731, - "end": 9756, + "start": 9809, + "end": 9834, "loc": { "start": { "line": 303, @@ -40269,8 +40477,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9731, - "end": 9755, + "start": 9809, + "end": 9833, "loc": { "start": { "line": 303, @@ -40284,8 +40492,8 @@ "operator": "=", "left": { "type": "Identifier", - "start": 9731, - "end": 9742, + "start": 9809, + "end": 9820, "loc": { "start": { "line": 303, @@ -40301,8 +40509,8 @@ }, "right": { "type": "Identifier", - "start": 9745, - "end": 9755, + "start": 9823, + "end": 9833, "loc": { "start": { "line": 303, @@ -40325,8 +40533,8 @@ }, { "type": "VariableDeclaration", - "start": 9783, - "end": 9839, + "start": 9861, + "end": 9917, "loc": { "start": { "line": 305, @@ -40340,8 +40548,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9789, - "end": 9838, + "start": 9867, + "end": 9916, "loc": { "start": { "line": 305, @@ -40354,8 +40562,8 @@ }, "id": { "type": "Identifier", - "start": 9789, - "end": 9794, + "start": 9867, + "end": 9872, "loc": { "start": { "line": 305, @@ -40371,8 +40579,8 @@ }, "init": { "type": "CallExpression", - "start": 9797, - "end": 9838, + "start": 9875, + "end": 9916, "loc": { "start": { "line": 305, @@ -40385,8 +40593,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9797, - "end": 9805, + "start": 9875, + "end": 9883, "loc": { "start": { "line": 305, @@ -40399,8 +40607,8 @@ }, "object": { "type": "Identifier", - "start": 9797, - "end": 9801, + "start": 9875, + "end": 9879, "loc": { "start": { "line": 305, @@ -40416,8 +40624,8 @@ }, "property": { "type": "Identifier", - "start": 9802, - "end": 9805, + "start": 9880, + "end": 9883, "loc": { "start": { "line": 305, @@ -40436,8 +40644,8 @@ "arguments": [ { "type": "UnaryExpression", - "start": 9806, - "end": 9808, + "start": 9884, + "end": 9886, "loc": { "start": { "line": 305, @@ -40452,8 +40660,8 @@ "prefix": true, "argument": { "type": "NumericLiteral", - "start": 9807, - "end": 9808, + "start": 9885, + "end": 9886, "loc": { "start": { "line": 305, @@ -40476,8 +40684,8 @@ }, { "type": "CallExpression", - "start": 9810, - "end": 9837, + "start": 9888, + "end": 9915, "loc": { "start": { "line": 305, @@ -40490,8 +40698,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9810, - "end": 9818, + "start": 9888, + "end": 9896, "loc": { "start": { "line": 305, @@ -40504,8 +40712,8 @@ }, "object": { "type": "Identifier", - "start": 9810, - "end": 9814, + "start": 9888, + "end": 9892, "loc": { "start": { "line": 305, @@ -40521,8 +40729,8 @@ }, "property": { "type": "Identifier", - "start": 9815, - "end": 9818, + "start": 9893, + "end": 9896, "loc": { "start": { "line": 305, @@ -40541,8 +40749,8 @@ "arguments": [ { "type": "NumericLiteral", - "start": 9819, - "end": 9820, + "start": 9897, + "end": 9898, "loc": { "start": { "line": 305, @@ -40561,8 +40769,8 @@ }, { "type": "BinaryExpression", - "start": 9822, - "end": 9836, + "start": 9900, + "end": 9914, "loc": { "start": { "line": 305, @@ -40575,8 +40783,8 @@ }, "left": { "type": "UnaryExpression", - "start": 9822, - "end": 9831, + "start": 9900, + "end": 9909, "loc": { "start": { "line": 305, @@ -40591,8 +40799,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 9823, - "end": 9831, + "start": 9901, + "end": 9909, "loc": { "start": { "line": 305, @@ -40605,8 +40813,8 @@ }, "object": { "type": "Identifier", - "start": 9823, - "end": 9824, + "start": 9901, + "end": 9902, "loc": { "start": { "line": 305, @@ -40622,8 +40830,8 @@ }, "property": { "type": "Identifier", - "start": 9825, - "end": 9831, + "start": 9903, + "end": 9909, "loc": { "start": { "line": 305, @@ -40646,8 +40854,8 @@ "operator": "*", "right": { "type": "NumericLiteral", - "start": 9834, - "end": 9836, + "start": 9912, + "end": 9914, "loc": { "start": { "line": 305, @@ -40675,8 +40883,8 @@ }, { "type": "IfStatement", - "start": 9852, - "end": 9908, + "start": 9930, + "end": 9986, "loc": { "start": { "line": 306, @@ -40689,8 +40897,8 @@ }, "test": { "type": "BinaryExpression", - "start": 9856, - "end": 9867, + "start": 9934, + "end": 9945, "loc": { "start": { "line": 306, @@ -40703,8 +40911,8 @@ }, "left": { "type": "Identifier", - "start": 9856, - "end": 9861, + "start": 9934, + "end": 9939, "loc": { "start": { "line": 306, @@ -40721,8 +40929,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 9866, - "end": 9867, + "start": 9944, + "end": 9945, "loc": { "start": { "line": 306, @@ -40742,8 +40950,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9869, - "end": 9908, + "start": 9947, + "end": 9986, "loc": { "start": { "line": 306, @@ -40757,8 +40965,8 @@ "body": [ { "type": "ReturnStatement", - "start": 9887, - "end": 9894, + "start": 9965, + "end": 9972, "loc": { "start": { "line": 307, @@ -40778,8 +40986,8 @@ }, { "type": "VariableDeclaration", - "start": 9921, - "end": 9969, + "start": 9999, + "end": 10047, "loc": { "start": { "line": 309, @@ -40793,8 +41001,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 9927, - "end": 9968, + "start": 10005, + "end": 10046, "loc": { "start": { "line": 309, @@ -40807,8 +41015,8 @@ }, "id": { "type": "Identifier", - "start": 9927, - "end": 9942, + "start": 10005, + "end": 10020, "loc": { "start": { "line": 309, @@ -40824,8 +41032,8 @@ }, "init": { "type": "BinaryExpression", - "start": 9945, - "end": 9968, + "start": 10023, + "end": 10046, "loc": { "start": { "line": 309, @@ -40838,8 +41046,8 @@ }, "left": { "type": "Identifier", - "start": 9945, - "end": 9950, + "start": 10023, + "end": 10028, "loc": { "start": { "line": 309, @@ -40856,8 +41064,8 @@ "operator": "/", "right": { "type": "CallExpression", - "start": 9953, - "end": 9968, + "start": 10031, + "end": 10046, "loc": { "start": { "line": 309, @@ -40870,8 +41078,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9953, - "end": 9961, + "start": 10031, + "end": 10039, "loc": { "start": { "line": 309, @@ -40884,8 +41092,8 @@ }, "object": { "type": "Identifier", - "start": 9953, - "end": 9957, + "start": 10031, + "end": 10035, "loc": { "start": { "line": 309, @@ -40901,8 +41109,8 @@ }, "property": { "type": "Identifier", - "start": 9958, - "end": 9961, + "start": 10036, + "end": 10039, "loc": { "start": { "line": 309, @@ -40921,8 +41129,8 @@ "arguments": [ { "type": "Identifier", - "start": 9962, - "end": 9967, + "start": 10040, + "end": 10045, "loc": { "start": { "line": 309, @@ -40945,8 +41153,8 @@ }, { "type": "ExpressionStatement", - "start": 9982, - "end": 10065, + "start": 10060, + "end": 10143, "loc": { "start": { "line": 310, @@ -40959,8 +41167,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9982, - "end": 10064, + "start": 10060, + "end": 10142, "loc": { "start": { "line": 310, @@ -40974,8 +41182,8 @@ "operator": "+=", "left": { "type": "MemberExpression", - "start": 9982, - "end": 10000, + "start": 10060, + "end": 10078, "loc": { "start": { "line": 310, @@ -40988,8 +41196,8 @@ }, "object": { "type": "Identifier", - "start": 9982, - "end": 9989, + "start": 10060, + "end": 10067, "loc": { "start": { "line": 310, @@ -41005,8 +41213,8 @@ }, "property": { "type": "Identifier", - "start": 9990, - "end": 10000, + "start": 10068, + "end": 10078, "loc": { "start": { "line": 310, @@ -41024,8 +41232,8 @@ }, "right": { "type": "BinaryExpression", - "start": 10004, - "end": 10064, + "start": 10082, + "end": 10142, "loc": { "start": { "line": 310, @@ -41038,8 +41246,8 @@ }, "left": { "type": "BinaryExpression", - "start": 10004, - "end": 10034, + "start": 10082, + "end": 10112, "loc": { "start": { "line": 310, @@ -41052,8 +41260,8 @@ }, "left": { "type": "UnaryExpression", - "start": 10004, - "end": 10020, + "start": 10082, + "end": 10098, "loc": { "start": { "line": 310, @@ -41068,8 +41276,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 10005, - "end": 10020, + "start": 10083, + "end": 10098, "loc": { "start": { "line": 310, @@ -41090,8 +41298,8 @@ "operator": "*", "right": { "type": "Identifier", - "start": 10023, - "end": 10034, + "start": 10101, + "end": 10112, "loc": { "start": { "line": 310, @@ -41109,8 +41317,8 @@ "operator": "*", "right": { "type": "MemberExpression", - "start": 10037, - "end": 10064, + "start": 10115, + "end": 10142, "loc": { "start": { "line": 310, @@ -41123,8 +41331,8 @@ }, "object": { "type": "Identifier", - "start": 10037, - "end": 10044, + "start": 10115, + "end": 10122, "loc": { "start": { "line": 310, @@ -41140,8 +41348,8 @@ }, "property": { "type": "Identifier", - "start": 10045, - "end": 10064, + "start": 10123, + "end": 10142, "loc": { "start": { "line": 310, @@ -41162,8 +41370,8 @@ }, { "type": "IfStatement", - "start": 10079, - "end": 10224, + "start": 10157, + "end": 10318, "loc": { "start": { "line": 312, @@ -41176,8 +41384,8 @@ }, "test": { "type": "Identifier", - "start": 10083, - "end": 10107, + "start": 10161, + "end": 10193, "loc": { "start": { "line": 312, @@ -41185,20 +41393,20 @@ }, "end": { "line": 312, - "column": 40 + "column": 48 }, - "identifierName": "mouseMovedSinceLastWheel" + "identifierName": "mouseMovedOnCanvasSinceLastWheel" }, - "name": "mouseMovedSinceLastWheel" + "name": "mouseMovedOnCanvasSinceLastWheel" }, "consequent": { "type": "BlockStatement", - "start": 10109, - "end": 10224, + "start": 10195, + "end": 10318, "loc": { "start": { "line": 312, - "column": 42 + "column": 50 }, "end": { "line": 315, @@ -41208,8 +41416,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 10127, - "end": 10160, + "start": 10213, + "end": 10246, "loc": { "start": { "line": 313, @@ -41222,8 +41430,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 10127, - "end": 10159, + "start": 10213, + "end": 10245, "loc": { "start": { "line": 313, @@ -41237,8 +41445,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 10127, - "end": 10152, + "start": 10213, + "end": 10238, "loc": { "start": { "line": 313, @@ -41251,8 +41459,8 @@ }, "object": { "type": "Identifier", - "start": 10127, - "end": 10133, + "start": 10213, + "end": 10219, "loc": { "start": { "line": 313, @@ -41268,8 +41476,8 @@ }, "property": { "type": "Identifier", - "start": 10134, - "end": 10152, + "start": 10220, + "end": 10238, "loc": { "start": { "line": 313, @@ -41287,8 +41495,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 10155, - "end": 10159, + "start": 10241, + "end": 10245, "loc": { "start": { "line": 313, @@ -41305,8 +41513,8 @@ }, { "type": "ExpressionStatement", - "start": 10177, - "end": 10210, + "start": 10263, + "end": 10304, "loc": { "start": { "line": 314, @@ -41314,13 +41522,13 @@ }, "end": { "line": 314, - "column": 49 + "column": 57 } }, "expression": { "type": "AssignmentExpression", - "start": 10177, - "end": 10209, + "start": 10263, + "end": 10303, "loc": { "start": { "line": 314, @@ -41328,14 +41536,14 @@ }, "end": { "line": 314, - "column": 48 + "column": 56 } }, "operator": "=", "left": { "type": "Identifier", - "start": 10177, - "end": 10201, + "start": 10263, + "end": 10295, "loc": { "start": { "line": 314, @@ -41343,24 +41551,24 @@ }, "end": { "line": 314, - "column": 40 + "column": 48 }, - "identifierName": "mouseMovedSinceLastWheel" + "identifierName": "mouseMovedOnCanvasSinceLastWheel" }, - "name": "mouseMovedSinceLastWheel" + "name": "mouseMovedOnCanvasSinceLastWheel" }, "right": { "type": "BooleanLiteral", - "start": 10204, - "end": 10209, + "start": 10298, + "end": 10303, "loc": { "start": { "line": 314, - "column": 43 + "column": 51 }, "end": { "line": 314, - "column": 48 + "column": 56 } }, "value": false @@ -41374,8 +41582,8 @@ }, { "type": "ExpressionStatement", - "start": 10238, - "end": 10257, + "start": 10332, + "end": 10351, "loc": { "start": { "line": 317, @@ -41388,8 +41596,8 @@ }, "expression": { "type": "CallExpression", - "start": 10238, - "end": 10256, + "start": 10332, + "end": 10350, "loc": { "start": { "line": 317, @@ -41402,8 +41610,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10238, - "end": 10254, + "start": 10332, + "end": 10348, "loc": { "start": { "line": 317, @@ -41416,8 +41624,8 @@ }, "object": { "type": "Identifier", - "start": 10238, - "end": 10239, + "start": 10332, + "end": 10333, "loc": { "start": { "line": 317, @@ -41433,8 +41641,8 @@ }, "property": { "type": "Identifier", - "start": 10240, - "end": 10254, + "start": 10334, + "end": 10348, "loc": { "start": { "line": 317, @@ -41467,15 +41675,15 @@ }, { "type": "ClassMethod", - "start": 10281, - "end": 10324, + "start": 10375, + "end": 10390, "loc": { "start": { "line": 321, "column": 4 }, "end": { - "line": 323, + "line": 322, "column": 5 } }, @@ -41483,8 +41691,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 10281, - "end": 10286, + "start": 10375, + "end": 10380, "loc": { "start": { "line": 321, @@ -41506,129 +41714,33 @@ "params": [], "body": { "type": "BlockStatement", - "start": 10289, - "end": 10324, + "start": 10383, + "end": 10390, "loc": { "start": { "line": 321, "column": 12 }, "end": { - "line": 323, + "line": 322, "column": 5 } }, - "body": [ - { - "type": "ExpressionStatement", - "start": 10299, - "end": 10318, - "loc": { - "start": { - "line": 322, - "column": 8 - }, - "end": { - "line": 322, - "column": 27 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 10299, - "end": 10317, - "loc": { - "start": { - "line": 322, - "column": 8 - }, - "end": { - "line": 322, - "column": 26 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 10299, - "end": 10309, - "loc": { - "start": { - "line": 322, - "column": 8 - }, - "end": { - "line": 322, - "column": 18 - } - }, - "object": { - "type": "ThisExpression", - "start": 10299, - "end": 10303, - "loc": { - "start": { - "line": 322, - "column": 8 - }, - "end": { - "line": 322, - "column": 12 - } - } - }, - "property": { - "type": "Identifier", - "start": 10304, - "end": 10309, - "loc": { - "start": { - "line": 322, - "column": 13 - }, - "end": { - "line": 322, - "column": 18 - }, - "identifierName": "_down" - }, - "name": "_down" - }, - "computed": false - }, - "right": { - "type": "BooleanLiteral", - "start": 10312, - "end": 10317, - "loc": { - "start": { - "line": 322, - "column": 21 - }, - "end": { - "line": 322, - "column": 26 - } - }, - "value": false - } - } - } - ], + "body": [], "directives": [] } }, { "type": "ClassMethod", - "start": 10330, - "end": 11081, + "start": 10396, + "end": 11147, "loc": { "start": { - "line": 325, + "line": 324, "column": 4 }, "end": { - "line": 338, + "line": 337, "column": 5 } }, @@ -41636,15 +41748,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 10330, - "end": 10337, + "start": 10396, + "end": 10403, "loc": { "start": { - "line": 325, + "line": 324, "column": 4 }, "end": { - "line": 325, + "line": 324, "column": 11 }, "identifierName": "destroy" @@ -41659,59 +41771,59 @@ "params": [], "body": { "type": "BlockStatement", - "start": 10340, - "end": 11081, + "start": 10406, + "end": 11147, "loc": { "start": { - "line": 325, + "line": 324, "column": 14 }, "end": { - "line": 338, + "line": 337, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 10351, - "end": 10392, + "start": 10417, + "end": 10458, "loc": { "start": { - "line": 327, + "line": 326, "column": 8 }, "end": { - "line": 327, + "line": 326, "column": 49 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 10357, - "end": 10391, + "start": 10423, + "end": 10457, "loc": { "start": { - "line": 327, + "line": 326, "column": 14 }, "end": { - "line": 327, + "line": 326, "column": 48 } }, "id": { "type": "Identifier", - "start": 10357, - "end": 10363, + "start": 10423, + "end": 10429, "loc": { "start": { - "line": 327, + "line": 326, "column": 14 }, "end": { - "line": 327, + "line": 326, "column": 20 }, "identifierName": "canvas" @@ -41720,72 +41832,72 @@ }, "init": { "type": "MemberExpression", - "start": 10366, - "end": 10391, + "start": 10432, + "end": 10457, "loc": { "start": { - "line": 327, + "line": 326, "column": 23 }, "end": { - "line": 327, + "line": 326, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 10366, - "end": 10384, + "start": 10432, + "end": 10450, "loc": { "start": { - "line": 327, + "line": 326, "column": 23 }, "end": { - "line": 327, + "line": 326, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 10366, - "end": 10377, + "start": 10432, + "end": 10443, "loc": { "start": { - "line": 327, + "line": 326, "column": 23 }, "end": { - "line": 327, + "line": 326, "column": 34 } }, "object": { "type": "ThisExpression", - "start": 10366, - "end": 10370, + "start": 10432, + "end": 10436, "loc": { "start": { - "line": 327, + "line": 326, "column": 23 }, "end": { - "line": 327, + "line": 326, "column": 27 } } }, "property": { "type": "Identifier", - "start": 10371, - "end": 10377, + "start": 10437, + "end": 10443, "loc": { "start": { - "line": 327, + "line": 326, "column": 28 }, "end": { - "line": 327, + "line": 326, "column": 34 }, "identifierName": "_scene" @@ -41796,15 +41908,15 @@ }, "property": { "type": "Identifier", - "start": 10378, - "end": 10384, + "start": 10444, + "end": 10450, "loc": { "start": { - "line": 327, + "line": 326, "column": 35 }, "end": { - "line": 327, + "line": 326, "column": 41 }, "identifierName": "canvas" @@ -41815,15 +41927,15 @@ }, "property": { "type": "Identifier", - "start": 10385, - "end": 10391, + "start": 10451, + "end": 10457, "loc": { "start": { - "line": 327, + "line": 326, "column": 42 }, "end": { - "line": 327, + "line": 326, "column": 48 }, "identifierName": "canvas" @@ -41838,57 +41950,57 @@ }, { "type": "ExpressionStatement", - "start": 10402, - "end": 10472, + "start": 10468, + "end": 10538, "loc": { "start": { - "line": 329, + "line": 328, "column": 8 }, "end": { - "line": 329, + "line": 328, "column": 78 } }, "expression": { "type": "CallExpression", - "start": 10402, - "end": 10471, + "start": 10468, + "end": 10537, "loc": { "start": { - "line": 329, + "line": 328, "column": 8 }, "end": { - "line": 329, + "line": 328, "column": 77 } }, "callee": { "type": "MemberExpression", - "start": 10402, - "end": 10430, + "start": 10468, + "end": 10496, "loc": { "start": { - "line": 329, + "line": 328, "column": 8 }, "end": { - "line": 329, + "line": 328, "column": 36 } }, "object": { "type": "Identifier", - "start": 10402, - "end": 10410, + "start": 10468, + "end": 10476, "loc": { "start": { - "line": 329, + "line": 328, "column": 8 }, "end": { - "line": 329, + "line": 328, "column": 16 }, "identifierName": "document" @@ -41897,15 +42009,15 @@ }, "property": { "type": "Identifier", - "start": 10411, - "end": 10430, + "start": 10477, + "end": 10496, "loc": { "start": { - "line": 329, + "line": 328, "column": 17 }, "end": { - "line": 329, + "line": 328, "column": 36 }, "identifierName": "removeEventListener" @@ -41917,15 +42029,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 10431, - "end": 10440, + "start": 10497, + "end": 10506, "loc": { "start": { - "line": 329, + "line": 328, "column": 37 }, "end": { - "line": 329, + "line": 328, "column": 46 } }, @@ -41937,44 +42049,44 @@ }, { "type": "MemberExpression", - "start": 10442, - "end": 10470, + "start": 10508, + "end": 10536, "loc": { "start": { - "line": 329, + "line": 328, "column": 48 }, "end": { - "line": 329, + "line": 328, "column": 76 } }, "object": { "type": "ThisExpression", - "start": 10442, - "end": 10446, + "start": 10508, + "end": 10512, "loc": { "start": { - "line": 329, + "line": 328, "column": 48 }, "end": { - "line": 329, + "line": 328, "column": 52 } } }, "property": { "type": "Identifier", - "start": 10447, - "end": 10470, + "start": 10513, + "end": 10536, "loc": { "start": { - "line": 329, + "line": 328, "column": 53 }, "end": { - "line": 329, + "line": 328, "column": 76 }, "identifierName": "_documentKeyDownHandler" @@ -41988,57 +42100,57 @@ }, { "type": "ExpressionStatement", - "start": 10481, - "end": 10547, + "start": 10547, + "end": 10613, "loc": { "start": { - "line": 330, + "line": 329, "column": 8 }, "end": { - "line": 330, + "line": 329, "column": 74 } }, "expression": { "type": "CallExpression", - "start": 10481, - "end": 10546, + "start": 10547, + "end": 10612, "loc": { "start": { - "line": 330, + "line": 329, "column": 8 }, "end": { - "line": 330, + "line": 329, "column": 73 } }, "callee": { "type": "MemberExpression", - "start": 10481, - "end": 10509, + "start": 10547, + "end": 10575, "loc": { "start": { - "line": 330, + "line": 329, "column": 8 }, "end": { - "line": 330, + "line": 329, "column": 36 } }, "object": { "type": "Identifier", - "start": 10481, - "end": 10489, + "start": 10547, + "end": 10555, "loc": { "start": { - "line": 330, + "line": 329, "column": 8 }, "end": { - "line": 330, + "line": 329, "column": 16 }, "identifierName": "document" @@ -42047,15 +42159,15 @@ }, "property": { "type": "Identifier", - "start": 10490, - "end": 10509, + "start": 10556, + "end": 10575, "loc": { "start": { - "line": 330, + "line": 329, "column": 17 }, "end": { - "line": 330, + "line": 329, "column": 36 }, "identifierName": "removeEventListener" @@ -42067,15 +42179,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 10510, - "end": 10517, + "start": 10576, + "end": 10583, "loc": { "start": { - "line": 330, + "line": 329, "column": 37 }, "end": { - "line": 330, + "line": 329, "column": 44 } }, @@ -42087,44 +42199,44 @@ }, { "type": "MemberExpression", - "start": 10519, - "end": 10545, + "start": 10585, + "end": 10611, "loc": { "start": { - "line": 330, + "line": 329, "column": 46 }, "end": { - "line": 330, + "line": 329, "column": 72 } }, "object": { "type": "ThisExpression", - "start": 10519, - "end": 10523, + "start": 10585, + "end": 10589, "loc": { "start": { - "line": 330, + "line": 329, "column": 46 }, "end": { - "line": 330, + "line": 329, "column": 50 } } }, "property": { "type": "Identifier", - "start": 10524, - "end": 10545, + "start": 10590, + "end": 10611, "loc": { "start": { - "line": 330, + "line": 329, "column": 51 }, "end": { - "line": 330, + "line": 329, "column": 72 }, "identifierName": "_documentKeyUpHandler" @@ -42138,57 +42250,57 @@ }, { "type": "ExpressionStatement", - "start": 10556, - "end": 10620, + "start": 10622, + "end": 10686, "loc": { "start": { - "line": 331, + "line": 330, "column": 8 }, "end": { - "line": 331, + "line": 330, "column": 72 } }, "expression": { "type": "CallExpression", - "start": 10556, - "end": 10619, + "start": 10622, + "end": 10685, "loc": { "start": { - "line": 331, + "line": 330, "column": 8 }, "end": { - "line": 331, + "line": 330, "column": 71 } }, "callee": { "type": "MemberExpression", - "start": 10556, - "end": 10582, + "start": 10622, + "end": 10648, "loc": { "start": { - "line": 331, + "line": 330, "column": 8 }, "end": { - "line": 331, + "line": 330, "column": 34 } }, "object": { "type": "Identifier", - "start": 10556, - "end": 10562, + "start": 10622, + "end": 10628, "loc": { "start": { - "line": 331, + "line": 330, "column": 8 }, "end": { - "line": 331, + "line": 330, "column": 14 }, "identifierName": "canvas" @@ -42197,15 +42309,15 @@ }, "property": { "type": "Identifier", - "start": 10563, - "end": 10582, + "start": 10629, + "end": 10648, "loc": { "start": { - "line": 331, + "line": 330, "column": 15 }, "end": { - "line": 331, + "line": 330, "column": 34 }, "identifierName": "removeEventListener" @@ -42217,15 +42329,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 10583, - "end": 10594, + "start": 10649, + "end": 10660, "loc": { "start": { - "line": 331, + "line": 330, "column": 35 }, "end": { - "line": 331, + "line": 330, "column": 46 } }, @@ -42237,44 +42349,44 @@ }, { "type": "MemberExpression", - "start": 10596, - "end": 10618, + "start": 10662, + "end": 10684, "loc": { "start": { - "line": 331, + "line": 330, "column": 48 }, "end": { - "line": 331, + "line": 330, "column": 70 } }, "object": { "type": "ThisExpression", - "start": 10596, - "end": 10600, + "start": 10662, + "end": 10666, "loc": { "start": { - "line": 331, + "line": 330, "column": 48 }, "end": { - "line": 331, + "line": 330, "column": 52 } } }, "property": { "type": "Identifier", - "start": 10601, - "end": 10618, + "start": 10667, + "end": 10684, "loc": { "start": { - "line": 331, + "line": 330, "column": 53 }, "end": { - "line": 331, + "line": 330, "column": 70 }, "identifierName": "_mouseDownHandler" @@ -42288,57 +42400,57 @@ }, { "type": "ExpressionStatement", - "start": 10629, - "end": 10703, + "start": 10695, + "end": 10769, "loc": { "start": { - "line": 332, + "line": 331, "column": 8 }, "end": { - "line": 332, + "line": 331, "column": 82 } }, "expression": { "type": "CallExpression", - "start": 10629, - "end": 10702, + "start": 10695, + "end": 10768, "loc": { "start": { - "line": 332, + "line": 331, "column": 8 }, "end": { - "line": 332, + "line": 331, "column": 81 } }, "callee": { "type": "MemberExpression", - "start": 10629, - "end": 10657, + "start": 10695, + "end": 10723, "loc": { "start": { - "line": 332, + "line": 331, "column": 8 }, "end": { - "line": 332, + "line": 331, "column": 36 } }, "object": { "type": "Identifier", - "start": 10629, - "end": 10637, + "start": 10695, + "end": 10703, "loc": { "start": { - "line": 332, + "line": 331, "column": 8 }, "end": { - "line": 332, + "line": 331, "column": 16 }, "identifierName": "document" @@ -42347,15 +42459,15 @@ }, "property": { "type": "Identifier", - "start": 10638, - "end": 10657, + "start": 10704, + "end": 10723, "loc": { "start": { - "line": 332, + "line": 331, "column": 17 }, "end": { - "line": 332, + "line": 331, "column": 36 }, "identifierName": "removeEventListener" @@ -42367,15 +42479,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 10658, - "end": 10669, + "start": 10724, + "end": 10735, "loc": { "start": { - "line": 332, + "line": 331, "column": 37 }, "end": { - "line": 332, + "line": 331, "column": 48 } }, @@ -42387,44 +42499,44 @@ }, { "type": "MemberExpression", - "start": 10671, - "end": 10701, + "start": 10737, + "end": 10767, "loc": { "start": { - "line": 332, + "line": 331, "column": 50 }, "end": { - "line": 332, + "line": 331, "column": 80 } }, "object": { "type": "ThisExpression", - "start": 10671, - "end": 10675, + "start": 10737, + "end": 10741, "loc": { "start": { - "line": 332, + "line": 331, "column": 50 }, "end": { - "line": 332, + "line": 331, "column": 54 } } }, "property": { "type": "Identifier", - "start": 10676, - "end": 10701, + "start": 10742, + "end": 10767, "loc": { "start": { - "line": 332, + "line": 331, "column": 55 }, "end": { - "line": 332, + "line": 331, "column": 80 }, "identifierName": "_documentMouseMoveHandler" @@ -42438,57 +42550,57 @@ }, { "type": "ExpressionStatement", - "start": 10712, - "end": 10782, + "start": 10778, + "end": 10848, "loc": { "start": { - "line": 333, + "line": 332, "column": 8 }, "end": { - "line": 333, + "line": 332, "column": 78 } }, "expression": { "type": "CallExpression", - "start": 10712, - "end": 10781, + "start": 10778, + "end": 10847, "loc": { "start": { - "line": 333, + "line": 332, "column": 8 }, "end": { - "line": 333, + "line": 332, "column": 77 } }, "callee": { "type": "MemberExpression", - "start": 10712, - "end": 10738, + "start": 10778, + "end": 10804, "loc": { "start": { - "line": 333, + "line": 332, "column": 8 }, "end": { - "line": 333, + "line": 332, "column": 34 } }, "object": { "type": "Identifier", - "start": 10712, - "end": 10718, + "start": 10778, + "end": 10784, "loc": { "start": { - "line": 333, + "line": 332, "column": 8 }, "end": { - "line": 333, + "line": 332, "column": 14 }, "identifierName": "canvas" @@ -42497,15 +42609,15 @@ }, "property": { "type": "Identifier", - "start": 10719, - "end": 10738, + "start": 10785, + "end": 10804, "loc": { "start": { - "line": 333, + "line": 332, "column": 15 }, "end": { - "line": 333, + "line": 332, "column": 34 }, "identifierName": "removeEventListener" @@ -42517,15 +42629,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 10739, - "end": 10750, + "start": 10805, + "end": 10816, "loc": { "start": { - "line": 333, + "line": 332, "column": 35 }, "end": { - "line": 333, + "line": 332, "column": 46 } }, @@ -42537,44 +42649,44 @@ }, { "type": "MemberExpression", - "start": 10752, - "end": 10780, + "start": 10818, + "end": 10846, "loc": { "start": { - "line": 333, + "line": 332, "column": 48 }, "end": { - "line": 333, + "line": 332, "column": 76 } }, "object": { "type": "ThisExpression", - "start": 10752, - "end": 10756, + "start": 10818, + "end": 10822, "loc": { "start": { - "line": 333, + "line": 332, "column": 48 }, "end": { - "line": 333, + "line": 332, "column": 52 } } }, "property": { "type": "Identifier", - "start": 10757, - "end": 10780, + "start": 10823, + "end": 10846, "loc": { "start": { - "line": 333, + "line": 332, "column": 53 }, "end": { - "line": 333, + "line": 332, "column": 76 }, "identifierName": "_canvasMouseMoveHandler" @@ -42588,57 +42700,57 @@ }, { "type": "ExpressionStatement", - "start": 10791, - "end": 10861, + "start": 10857, + "end": 10927, "loc": { "start": { - "line": 334, + "line": 333, "column": 8 }, "end": { - "line": 334, + "line": 333, "column": 78 } }, "expression": { "type": "CallExpression", - "start": 10791, - "end": 10860, + "start": 10857, + "end": 10926, "loc": { "start": { - "line": 334, + "line": 333, "column": 8 }, "end": { - "line": 334, + "line": 333, "column": 77 } }, "callee": { "type": "MemberExpression", - "start": 10791, - "end": 10819, + "start": 10857, + "end": 10885, "loc": { "start": { - "line": 334, + "line": 333, "column": 8 }, "end": { - "line": 334, + "line": 333, "column": 36 } }, "object": { "type": "Identifier", - "start": 10791, - "end": 10799, + "start": 10857, + "end": 10865, "loc": { "start": { - "line": 334, + "line": 333, "column": 8 }, "end": { - "line": 334, + "line": 333, "column": 16 }, "identifierName": "document" @@ -42647,15 +42759,15 @@ }, "property": { "type": "Identifier", - "start": 10800, - "end": 10819, + "start": 10866, + "end": 10885, "loc": { "start": { - "line": 334, + "line": 333, "column": 17 }, "end": { - "line": 334, + "line": 333, "column": 36 }, "identifierName": "removeEventListener" @@ -42667,15 +42779,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 10820, - "end": 10829, + "start": 10886, + "end": 10895, "loc": { "start": { - "line": 334, + "line": 333, "column": 37 }, "end": { - "line": 334, + "line": 333, "column": 46 } }, @@ -42687,44 +42799,44 @@ }, { "type": "MemberExpression", - "start": 10831, - "end": 10859, + "start": 10897, + "end": 10925, "loc": { "start": { - "line": 334, + "line": 333, "column": 48 }, "end": { - "line": 334, + "line": 333, "column": 76 } }, "object": { "type": "ThisExpression", - "start": 10831, - "end": 10835, + "start": 10897, + "end": 10901, "loc": { "start": { - "line": 334, + "line": 333, "column": 48 }, "end": { - "line": 334, + "line": 333, "column": 52 } } }, "property": { "type": "Identifier", - "start": 10836, - "end": 10859, + "start": 10902, + "end": 10925, "loc": { "start": { - "line": 334, + "line": 333, "column": 53 }, "end": { - "line": 334, + "line": 333, "column": 76 }, "identifierName": "_documentMouseUpHandler" @@ -42738,57 +42850,57 @@ }, { "type": "ExpressionStatement", - "start": 10870, - "end": 10930, + "start": 10936, + "end": 10996, "loc": { "start": { - "line": 335, + "line": 334, "column": 8 }, "end": { - "line": 335, + "line": 334, "column": 68 } }, "expression": { "type": "CallExpression", - "start": 10870, - "end": 10929, + "start": 10936, + "end": 10995, "loc": { "start": { - "line": 335, + "line": 334, "column": 8 }, "end": { - "line": 335, + "line": 334, "column": 67 } }, "callee": { "type": "MemberExpression", - "start": 10870, - "end": 10896, + "start": 10936, + "end": 10962, "loc": { "start": { - "line": 335, + "line": 334, "column": 8 }, "end": { - "line": 335, + "line": 334, "column": 34 } }, "object": { "type": "Identifier", - "start": 10870, - "end": 10876, + "start": 10936, + "end": 10942, "loc": { "start": { - "line": 335, + "line": 334, "column": 8 }, "end": { - "line": 335, + "line": 334, "column": 14 }, "identifierName": "canvas" @@ -42797,15 +42909,15 @@ }, "property": { "type": "Identifier", - "start": 10877, - "end": 10896, + "start": 10943, + "end": 10962, "loc": { "start": { - "line": 335, + "line": 334, "column": 15 }, "end": { - "line": 335, + "line": 334, "column": 34 }, "identifierName": "removeEventListener" @@ -42817,15 +42929,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 10897, - "end": 10906, + "start": 10963, + "end": 10972, "loc": { "start": { - "line": 335, + "line": 334, "column": 35 }, "end": { - "line": 335, + "line": 334, "column": 44 } }, @@ -42837,44 +42949,44 @@ }, { "type": "MemberExpression", - "start": 10908, - "end": 10928, + "start": 10974, + "end": 10994, "loc": { "start": { - "line": 335, + "line": 334, "column": 46 }, "end": { - "line": 335, + "line": 334, "column": 66 } }, "object": { "type": "ThisExpression", - "start": 10908, - "end": 10912, + "start": 10974, + "end": 10978, "loc": { "start": { - "line": 335, + "line": 334, "column": 46 }, "end": { - "line": 335, + "line": 334, "column": 50 } } }, "property": { "type": "Identifier", - "start": 10913, - "end": 10928, + "start": 10979, + "end": 10994, "loc": { "start": { - "line": 335, + "line": 334, "column": 51 }, "end": { - "line": 335, + "line": 334, "column": 66 }, "identifierName": "_mouseUpHandler" @@ -42888,57 +43000,57 @@ }, { "type": "ExpressionStatement", - "start": 10939, - "end": 11005, + "start": 11005, + "end": 11071, "loc": { "start": { - "line": 336, + "line": 335, "column": 8 }, "end": { - "line": 336, + "line": 335, "column": 74 } }, "expression": { "type": "CallExpression", - "start": 10939, - "end": 11004, + "start": 11005, + "end": 11070, "loc": { "start": { - "line": 336, + "line": 335, "column": 8 }, "end": { - "line": 336, + "line": 335, "column": 73 } }, "callee": { "type": "MemberExpression", - "start": 10939, - "end": 10965, + "start": 11005, + "end": 11031, "loc": { "start": { - "line": 336, + "line": 335, "column": 8 }, "end": { - "line": 336, + "line": 335, "column": 34 } }, "object": { "type": "Identifier", - "start": 10939, - "end": 10945, + "start": 11005, + "end": 11011, "loc": { "start": { - "line": 336, + "line": 335, "column": 8 }, "end": { - "line": 336, + "line": 335, "column": 14 }, "identifierName": "canvas" @@ -42947,15 +43059,15 @@ }, "property": { "type": "Identifier", - "start": 10946, - "end": 10965, + "start": 11012, + "end": 11031, "loc": { "start": { - "line": 336, + "line": 335, "column": 15 }, "end": { - "line": 336, + "line": 335, "column": 34 }, "identifierName": "removeEventListener" @@ -42967,15 +43079,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 10966, - "end": 10978, + "start": 11032, + "end": 11044, "loc": { "start": { - "line": 336, + "line": 335, "column": 35 }, "end": { - "line": 336, + "line": 335, "column": 47 } }, @@ -42987,44 +43099,44 @@ }, { "type": "MemberExpression", - "start": 10980, - "end": 11003, + "start": 11046, + "end": 11069, "loc": { "start": { - "line": 336, + "line": 335, "column": 49 }, "end": { - "line": 336, + "line": 335, "column": 72 } }, "object": { "type": "ThisExpression", - "start": 10980, - "end": 10984, + "start": 11046, + "end": 11050, "loc": { "start": { - "line": 336, + "line": 335, "column": 49 }, "end": { - "line": 336, + "line": 335, "column": 53 } } }, "property": { "type": "Identifier", - "start": 10985, - "end": 11003, + "start": 11051, + "end": 11069, "loc": { "start": { - "line": 336, + "line": 335, "column": 54 }, "end": { - "line": 336, + "line": 335, "column": 72 }, "identifierName": "_mouseEnterHandler" @@ -43038,57 +43150,57 @@ }, { "type": "ExpressionStatement", - "start": 11014, - "end": 11075, + "start": 11080, + "end": 11141, "loc": { "start": { - "line": 337, + "line": 336, "column": 8 }, "end": { - "line": 337, + "line": 336, "column": 69 } }, "expression": { "type": "CallExpression", - "start": 11014, - "end": 11074, + "start": 11080, + "end": 11140, "loc": { "start": { - "line": 337, + "line": 336, "column": 8 }, "end": { - "line": 337, + "line": 336, "column": 68 } }, "callee": { "type": "MemberExpression", - "start": 11014, - "end": 11040, + "start": 11080, + "end": 11106, "loc": { "start": { - "line": 337, + "line": 336, "column": 8 }, "end": { - "line": 337, + "line": 336, "column": 34 } }, "object": { "type": "Identifier", - "start": 11014, - "end": 11020, + "start": 11080, + "end": 11086, "loc": { "start": { - "line": 337, + "line": 336, "column": 8 }, "end": { - "line": 337, + "line": 336, "column": 14 }, "identifierName": "canvas" @@ -43097,15 +43209,15 @@ }, "property": { "type": "Identifier", - "start": 11021, - "end": 11040, + "start": 11087, + "end": 11106, "loc": { "start": { - "line": 337, + "line": 336, "column": 15 }, "end": { - "line": 337, + "line": 336, "column": 34 }, "identifierName": "removeEventListener" @@ -43117,15 +43229,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 11041, - "end": 11048, + "start": 11107, + "end": 11114, "loc": { "start": { - "line": 337, + "line": 336, "column": 35 }, "end": { - "line": 337, + "line": 336, "column": 42 } }, @@ -43137,44 +43249,44 @@ }, { "type": "MemberExpression", - "start": 11050, - "end": 11073, + "start": 11116, + "end": 11139, "loc": { "start": { - "line": 337, + "line": 336, "column": 44 }, "end": { - "line": 337, + "line": 336, "column": 67 } }, "object": { "type": "ThisExpression", - "start": 11050, - "end": 11054, + "start": 11116, + "end": 11120, "loc": { "start": { - "line": 337, + "line": 336, "column": 44 }, "end": { - "line": 337, + "line": 336, "column": 48 } } }, "property": { "type": "Identifier", - "start": 11055, - "end": 11073, + "start": 11121, + "end": 11139, "loc": { "start": { - "line": 337, + "line": 336, "column": 49 }, "end": { - "line": 337, + "line": 336, "column": 67 }, "identifierName": "_mouseWheelHandler" @@ -43256,15 +43368,15 @@ { "type": "CommentLine", "value": " Left button", - "start": 3360, - "end": 3374, + "start": 3308, + "end": 3322, "loc": { "start": { - "line": 117, + "line": 114, "column": 24 }, "end": { - "line": 117, + "line": 114, "column": 38 } } @@ -43272,15 +43384,15 @@ { "type": "CommentLine", "value": " Middle/both buttons", - "start": 3704, - "end": 3726, + "start": 3698, + "end": 3720, "loc": { "start": { - "line": 133, + "line": 131, "column": 24 }, "end": { - "line": 133, + "line": 131, "column": 46 } } @@ -43288,15 +43400,15 @@ { "type": "CommentLine", "value": " Right button", - "start": 3944, - "end": 3959, + "start": 3861, + "end": 3876, "loc": { "start": { - "line": 145, + "line": 139, "column": 24 }, "end": { - "line": 145, + "line": 139, "column": 39 } } @@ -43304,63 +43416,63 @@ { "type": "CommentLine", "value": " Scaling drag-rotate to canvas boundary", - "start": 4327, - "end": 4368, + "start": 4462, + "end": 4503, "loc": { "start": { - "line": 162, - "column": 16 + "line": 165, + "column": 12 }, "end": { - "line": 162, - "column": 57 + "line": 165, + "column": 53 } } }, { "type": "CommentLine", "value": " We use only canvasHeight here so that aspect ratio does not distort speed", - "start": 5074, - "end": 5150, + "start": 5165, + "end": 5241, "loc": { "start": { - "line": 179, - "column": 20 + "line": 182, + "column": 16 }, "end": { - "line": 179, - "column": 96 + "line": 182, + "column": 92 } } }, { "type": "CommentLine", "value": " No rotating in plan-view mode", - "start": 6047, - "end": 6079, + "start": 6111, + "end": 6143, "loc": { "start": { - "line": 197, - "column": 45 + "line": 200, + "column": 41 }, "end": { - "line": 197, - "column": 77 + "line": 200, + "column": 73 } } }, { "type": "CommentLine", "value": " Left button", - "start": 7384, - "end": 7398, + "start": 7351, + "end": 7365, "loc": { "start": { - "line": 236, + "line": 235, "column": 24 }, "end": { - "line": 236, + "line": 235, "column": 38 } } @@ -43368,15 +43480,15 @@ { "type": "CommentLine", "value": " Middle/both buttons", - "start": 7493, - "end": 7515, + "start": 7549, + "end": 7571, "loc": { "start": { - "line": 239, + "line": 240, "column": 24 }, "end": { - "line": 239, + "line": 240, "column": 46 } } @@ -43384,15 +43496,15 @@ { "type": "CommentLine", "value": " Right button", - "start": 7612, - "end": 7627, + "start": 7755, + "end": 7770, "loc": { "start": { - "line": 242, + "line": 245, "column": 24 }, "end": { - "line": 242, + "line": 245, "column": 39 } } @@ -43400,15 +43512,15 @@ { "type": "CommentLine", "value": " Right button", - "start": 8189, - "end": 8204, + "start": 8300, + "end": 8315, "loc": { "start": { - "line": 260, + "line": 262, "column": 24 }, "end": { - "line": 260, + "line": 262, "column": 39 } } @@ -43416,15 +43528,15 @@ { "type": "CommentLine", "value": " For context menus", - "start": 8507, - "end": 8527, + "start": 8618, + "end": 8638, "loc": { "start": { - "line": 265, + "line": 267, "column": 71 }, "end": { - "line": 265, + "line": 267, "column": 91 } } @@ -48433,10 +48545,10 @@ }, { "type": { - "label": "this", - "keyword": "this", + "label": "let", + "keyword": "let", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -48445,43 +48557,17 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 1094, + "value": "let", + "start": 1095, "end": 1098, "loc": { "start": { - "line": 45, + "line": 46, "column": 8 }, "end": { - "line": 45, - "column": 12 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 1098, - "end": 1099, - "loc": { - "start": { - "line": 45, - "column": 12 - }, - "end": { - "line": 45, - "column": 13 + "line": 46, + "column": 11 } } }, @@ -48497,72 +48583,17 @@ "postfix": false, "binop": null }, - "value": "_down", + "value": "mouseDownLeft", "start": 1099, - "end": 1104, - "loc": { - "start": { - "line": 45, - "column": 13 - }, - "end": { - "line": 45, - "column": 18 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 1105, - "end": 1106, - "loc": { - "start": { - "line": 45, - "column": 19 - }, - "end": { - "line": 45, - "column": 20 - } - } - }, - { - "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": 1107, "end": 1112, "loc": { "start": { - "line": 45, - "column": 21 + "line": 46, + "column": 12 }, "end": { - "line": 45, - "column": 26 + "line": 46, + "column": 25 } } }, @@ -48583,12 +48614,12 @@ "end": 1113, "loc": { "start": { - "line": 45, - "column": 26 + "line": 46, + "column": 25 }, "end": { - "line": 45, - "column": 27 + "line": 46, + "column": 26 } } }, @@ -48607,8 +48638,8 @@ "updateContext": null }, "value": "let", - "start": 1123, - "end": 1126, + "start": 1122, + "end": 1125, "loc": { "start": { "line": 47, @@ -48632,9 +48663,9 @@ "postfix": false, "binop": null }, - "value": "mouseDownLeft", - "start": 1127, - "end": 1140, + "value": "mouseDownMiddle", + "start": 1126, + "end": 1141, "loc": { "start": { "line": 47, @@ -48642,7 +48673,7 @@ }, "end": { "line": 47, - "column": 25 + "column": 27 } } }, @@ -48659,16 +48690,16 @@ "binop": null, "updateContext": null }, - "start": 1140, - "end": 1141, + "start": 1141, + "end": 1142, "loc": { "start": { "line": 47, - "column": 25 + "column": 27 }, "end": { "line": 47, - "column": 26 + "column": 28 } } }, @@ -48687,8 +48718,8 @@ "updateContext": null }, "value": "let", - "start": 1150, - "end": 1153, + "start": 1151, + "end": 1154, "loc": { "start": { "line": 48, @@ -48712,8 +48743,8 @@ "postfix": false, "binop": null }, - "value": "mouseDownMiddle", - "start": 1154, + "value": "mouseDownRight", + "start": 1155, "end": 1169, "loc": { "start": { @@ -48722,7 +48753,7 @@ }, "end": { "line": 48, - "column": 27 + "column": 26 } } }, @@ -48744,90 +48775,10 @@ "loc": { "start": { "line": 48, - "column": 27 - }, - "end": { - "line": 48, - "column": 28 - } - } - }, - { - "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": 1179, - "end": 1182, - "loc": { - "start": { - "line": 49, - "column": 8 - }, - "end": { - "line": 49, - "column": 11 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "mouseDownRight", - "start": 1183, - "end": 1197, - "loc": { - "start": { - "line": 49, - "column": 12 - }, - "end": { - "line": 49, - "column": 26 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 1197, - "end": 1198, - "loc": { - "start": { - "line": 49, "column": 26 }, "end": { - "line": 49, + "line": 48, "column": 27 } } @@ -48847,15 +48798,15 @@ "updateContext": null }, "value": "let", - "start": 1208, - "end": 1211, + "start": 1180, + "end": 1183, "loc": { "start": { - "line": 51, + "line": 50, "column": 8 }, "end": { - "line": 51, + "line": 50, "column": 11 } } @@ -48873,15 +48824,15 @@ "binop": null }, "value": "mouseDownPicked", - "start": 1212, - "end": 1227, + "start": 1184, + "end": 1199, "loc": { "start": { - "line": 51, + "line": 50, "column": 12 }, "end": { - "line": 51, + "line": 50, "column": 27 } } @@ -48900,15 +48851,15 @@ "updateContext": null }, "value": "=", - "start": 1228, - "end": 1229, + "start": 1200, + "end": 1201, "loc": { "start": { - "line": 51, + "line": 50, "column": 28 }, "end": { - "line": 51, + "line": 50, "column": 29 } } @@ -48928,15 +48879,15 @@ "updateContext": null }, "value": "false", - "start": 1230, - "end": 1235, + "start": 1202, + "end": 1207, "loc": { "start": { - "line": 51, + "line": 50, "column": 30 }, "end": { - "line": 51, + "line": 50, "column": 35 } } @@ -48954,15 +48905,15 @@ "binop": null, "updateContext": null }, - "start": 1235, - "end": 1236, + "start": 1207, + "end": 1208, "loc": { "start": { - "line": 51, + "line": 50, "column": 35 }, "end": { - "line": 51, + "line": 50, "column": 36 } } @@ -48982,15 +48933,15 @@ "updateContext": null }, "value": "const", - "start": 1245, - "end": 1250, + "start": 1217, + "end": 1222, "loc": { "start": { - "line": 52, + "line": 51, "column": 8 }, "end": { - "line": 52, + "line": 51, "column": 13 } } @@ -49008,15 +48959,15 @@ "binop": null }, "value": "pickedWorldPos", - "start": 1251, - "end": 1265, + "start": 1223, + "end": 1237, "loc": { "start": { - "line": 52, + "line": 51, "column": 14 }, "end": { - "line": 52, + "line": 51, "column": 28 } } @@ -49035,15 +48986,15 @@ "updateContext": null }, "value": "=", - "start": 1266, - "end": 1267, + "start": 1238, + "end": 1239, "loc": { "start": { - "line": 52, + "line": 51, "column": 29 }, "end": { - "line": 52, + "line": 51, "column": 30 } } @@ -49061,15 +49012,15 @@ "binop": null }, "value": "math", - "start": 1268, - "end": 1272, + "start": 1240, + "end": 1244, "loc": { "start": { - "line": 52, + "line": 51, "column": 31 }, "end": { - "line": 52, + "line": 51, "column": 35 } } @@ -49087,15 +49038,15 @@ "binop": null, "updateContext": null }, - "start": 1272, - "end": 1273, + "start": 1244, + "end": 1245, "loc": { "start": { - "line": 52, + "line": 51, "column": 35 }, "end": { - "line": 52, + "line": 51, "column": 36 } } @@ -49113,15 +49064,15 @@ "binop": null }, "value": "vec3", - "start": 1273, - "end": 1277, + "start": 1245, + "end": 1249, "loc": { "start": { - "line": 52, + "line": 51, "column": 36 }, "end": { - "line": 52, + "line": 51, "column": 40 } } @@ -49138,15 +49089,15 @@ "postfix": false, "binop": null }, - "start": 1277, - "end": 1278, + "start": 1249, + "end": 1250, "loc": { "start": { - "line": 52, + "line": 51, "column": 40 }, "end": { - "line": 52, + "line": 51, "column": 41 } } @@ -49163,15 +49114,15 @@ "postfix": false, "binop": null }, - "start": 1278, - "end": 1279, + "start": 1250, + "end": 1251, "loc": { "start": { - "line": 52, + "line": 51, "column": 41 }, "end": { - "line": 52, + "line": 51, "column": 42 } } @@ -49189,15 +49140,15 @@ "binop": null, "updateContext": null }, - "start": 1279, - "end": 1280, + "start": 1251, + "end": 1252, "loc": { "start": { - "line": 52, + "line": 51, "column": 42 }, "end": { - "line": 52, + "line": 51, "column": 43 } } @@ -49217,15 +49168,15 @@ "updateContext": null }, "value": "let", - "start": 1290, - "end": 1293, + "start": 1262, + "end": 1265, "loc": { "start": { - "line": 54, + "line": 53, "column": 8 }, "end": { - "line": 54, + "line": 53, "column": 11 } } @@ -49242,17 +49193,17 @@ "postfix": false, "binop": null }, - "value": "mouseMovedSinceLastWheel", - "start": 1294, - "end": 1318, + "value": "mouseMovedOnCanvasSinceLastWheel", + "start": 1266, + "end": 1298, "loc": { "start": { - "line": 54, + "line": 53, "column": 12 }, "end": { - "line": 54, - "column": 36 + "line": 53, + "column": 44 } } }, @@ -49270,16 +49221,16 @@ "updateContext": null }, "value": "=", - "start": 1319, - "end": 1320, + "start": 1299, + "end": 1300, "loc": { "start": { - "line": 54, - "column": 37 + "line": 53, + "column": 45 }, "end": { - "line": 54, - "column": 38 + "line": 53, + "column": 46 } } }, @@ -49298,16 +49249,16 @@ "updateContext": null }, "value": "true", - "start": 1321, - "end": 1325, + "start": 1301, + "end": 1305, "loc": { "start": { - "line": 54, - "column": 39 + "line": 53, + "column": 47 }, "end": { - "line": 54, - "column": 43 + "line": 53, + "column": 51 } } }, @@ -49324,16 +49275,16 @@ "binop": null, "updateContext": null }, - "start": 1325, - "end": 1326, + "start": 1305, + "end": 1306, "loc": { "start": { - "line": 54, - "column": 43 + "line": 53, + "column": 51 }, "end": { - "line": 54, - "column": 44 + "line": 53, + "column": 52 } } }, @@ -49352,15 +49303,15 @@ "updateContext": null }, "value": "const", - "start": 1336, - "end": 1341, + "start": 1316, + "end": 1321, "loc": { "start": { - "line": 56, + "line": 55, "column": 8 }, "end": { - "line": 56, + "line": 55, "column": 13 } } @@ -49378,15 +49329,15 @@ "binop": null }, "value": "canvas", - "start": 1342, - "end": 1348, + "start": 1322, + "end": 1328, "loc": { "start": { - "line": 56, + "line": 55, "column": 14 }, "end": { - "line": 56, + "line": 55, "column": 20 } } @@ -49405,15 +49356,15 @@ "updateContext": null }, "value": "=", - "start": 1349, - "end": 1350, + "start": 1329, + "end": 1330, "loc": { "start": { - "line": 56, + "line": 55, "column": 21 }, "end": { - "line": 56, + "line": 55, "column": 22 } } @@ -49433,15 +49384,15 @@ "updateContext": null }, "value": "this", - "start": 1351, - "end": 1355, + "start": 1331, + "end": 1335, "loc": { "start": { - "line": 56, + "line": 55, "column": 23 }, "end": { - "line": 56, + "line": 55, "column": 27 } } @@ -49459,15 +49410,15 @@ "binop": null, "updateContext": null }, - "start": 1355, - "end": 1356, + "start": 1335, + "end": 1336, "loc": { "start": { - "line": 56, + "line": 55, "column": 27 }, "end": { - "line": 56, + "line": 55, "column": 28 } } @@ -49485,15 +49436,15 @@ "binop": null }, "value": "_scene", - "start": 1356, - "end": 1362, + "start": 1336, + "end": 1342, "loc": { "start": { - "line": 56, + "line": 55, "column": 28 }, "end": { - "line": 56, + "line": 55, "column": 34 } } @@ -49511,15 +49462,15 @@ "binop": null, "updateContext": null }, - "start": 1362, - "end": 1363, + "start": 1342, + "end": 1343, "loc": { "start": { - "line": 56, + "line": 55, "column": 34 }, "end": { - "line": 56, + "line": 55, "column": 35 } } @@ -49537,15 +49488,15 @@ "binop": null }, "value": "canvas", - "start": 1363, - "end": 1369, + "start": 1343, + "end": 1349, "loc": { "start": { - "line": 56, + "line": 55, "column": 35 }, "end": { - "line": 56, + "line": 55, "column": 41 } } @@ -49563,15 +49514,15 @@ "binop": null, "updateContext": null }, - "start": 1369, - "end": 1370, + "start": 1349, + "end": 1350, "loc": { "start": { - "line": 56, + "line": 55, "column": 41 }, "end": { - "line": 56, + "line": 55, "column": 42 } } @@ -49589,15 +49540,15 @@ "binop": null }, "value": "canvas", - "start": 1370, - "end": 1376, + "start": 1350, + "end": 1356, "loc": { "start": { - "line": 56, + "line": 55, "column": 42 }, "end": { - "line": 56, + "line": 55, "column": 48 } } @@ -49615,15 +49566,15 @@ "binop": null, "updateContext": null }, - "start": 1376, - "end": 1377, + "start": 1356, + "end": 1357, "loc": { "start": { - "line": 56, + "line": 55, "column": 48 }, "end": { - "line": 56, + "line": 55, "column": 49 } } @@ -49643,15 +49594,15 @@ "updateContext": null }, "value": "const", - "start": 1387, - "end": 1392, + "start": 1367, + "end": 1372, "loc": { "start": { - "line": 58, + "line": 57, "column": 8 }, "end": { - "line": 58, + "line": 57, "column": 13 } } @@ -49669,15 +49620,15 @@ "binop": null }, "value": "keyDown", - "start": 1393, - "end": 1400, + "start": 1373, + "end": 1380, "loc": { "start": { - "line": 58, + "line": 57, "column": 14 }, "end": { - "line": 58, + "line": 57, "column": 21 } } @@ -49696,15 +49647,15 @@ "updateContext": null }, "value": "=", - "start": 1401, - "end": 1402, + "start": 1381, + "end": 1382, "loc": { "start": { - "line": 58, + "line": 57, "column": 22 }, "end": { - "line": 58, + "line": 57, "column": 23 } } @@ -49722,15 +49673,15 @@ "binop": null, "updateContext": null }, - "start": 1403, - "end": 1404, + "start": 1383, + "end": 1384, "loc": { "start": { - "line": 58, + "line": 57, "column": 24 }, "end": { - "line": 58, + "line": 57, "column": 25 } } @@ -49748,15 +49699,15 @@ "binop": null, "updateContext": null }, - "start": 1404, - "end": 1405, + "start": 1384, + "end": 1385, "loc": { "start": { - "line": 58, + "line": 57, "column": 25 }, "end": { - "line": 58, + "line": 57, "column": 26 } } @@ -49774,15 +49725,15 @@ "binop": null, "updateContext": null }, - "start": 1405, - "end": 1406, + "start": 1385, + "end": 1386, "loc": { "start": { - "line": 58, + "line": 57, "column": 26 }, "end": { - "line": 58, + "line": 57, "column": 27 } } @@ -49800,15 +49751,15 @@ "binop": null }, "value": "document", - "start": 1416, - "end": 1424, + "start": 1396, + "end": 1404, "loc": { "start": { - "line": 60, + "line": 59, "column": 8 }, "end": { - "line": 60, + "line": 59, "column": 16 } } @@ -49826,15 +49777,15 @@ "binop": null, "updateContext": null }, - "start": 1424, - "end": 1425, + "start": 1404, + "end": 1405, "loc": { "start": { - "line": 60, + "line": 59, "column": 16 }, "end": { - "line": 60, + "line": 59, "column": 17 } } @@ -49852,15 +49803,15 @@ "binop": null }, "value": "addEventListener", - "start": 1425, - "end": 1441, + "start": 1405, + "end": 1421, "loc": { "start": { - "line": 60, + "line": 59, "column": 17 }, "end": { - "line": 60, + "line": 59, "column": 33 } } @@ -49877,15 +49828,15 @@ "postfix": false, "binop": null }, - "start": 1441, - "end": 1442, + "start": 1421, + "end": 1422, "loc": { "start": { - "line": 60, + "line": 59, "column": 33 }, "end": { - "line": 60, + "line": 59, "column": 34 } } @@ -49904,15 +49855,15 @@ "updateContext": null }, "value": "keydown", - "start": 1442, - "end": 1451, + "start": 1422, + "end": 1431, "loc": { "start": { - "line": 60, + "line": 59, "column": 34 }, "end": { - "line": 60, + "line": 59, "column": 43 } } @@ -49930,15 +49881,15 @@ "binop": null, "updateContext": null }, - "start": 1451, - "end": 1452, + "start": 1431, + "end": 1432, "loc": { "start": { - "line": 60, + "line": 59, "column": 43 }, "end": { - "line": 60, + "line": 59, "column": 44 } } @@ -49958,15 +49909,15 @@ "updateContext": null }, "value": "this", - "start": 1453, - "end": 1457, + "start": 1433, + "end": 1437, "loc": { "start": { - "line": 60, + "line": 59, "column": 45 }, "end": { - "line": 60, + "line": 59, "column": 49 } } @@ -49984,15 +49935,15 @@ "binop": null, "updateContext": null }, - "start": 1457, - "end": 1458, + "start": 1437, + "end": 1438, "loc": { "start": { - "line": 60, + "line": 59, "column": 49 }, "end": { - "line": 60, + "line": 59, "column": 50 } } @@ -50010,15 +49961,15 @@ "binop": null }, "value": "_documentKeyDownHandler", - "start": 1458, - "end": 1481, + "start": 1438, + "end": 1461, "loc": { "start": { - "line": 60, + "line": 59, "column": 50 }, "end": { - "line": 60, + "line": 59, "column": 73 } } @@ -50037,15 +49988,15 @@ "updateContext": null }, "value": "=", - "start": 1482, - "end": 1483, + "start": 1462, + "end": 1463, "loc": { "start": { - "line": 60, + "line": 59, "column": 74 }, "end": { - "line": 60, + "line": 59, "column": 75 } } @@ -50062,15 +50013,15 @@ "postfix": false, "binop": null }, - "start": 1484, - "end": 1485, + "start": 1464, + "end": 1465, "loc": { "start": { - "line": 60, + "line": 59, "column": 76 }, "end": { - "line": 60, + "line": 59, "column": 77 } } @@ -50088,15 +50039,15 @@ "binop": null }, "value": "e", - "start": 1485, - "end": 1486, + "start": 1465, + "end": 1466, "loc": { "start": { - "line": 60, + "line": 59, "column": 77 }, "end": { - "line": 60, + "line": 59, "column": 78 } } @@ -50113,15 +50064,15 @@ "postfix": false, "binop": null }, - "start": 1486, - "end": 1487, + "start": 1466, + "end": 1467, "loc": { "start": { - "line": 60, + "line": 59, "column": 78 }, "end": { - "line": 60, + "line": 59, "column": 79 } } @@ -50139,15 +50090,15 @@ "binop": null, "updateContext": null }, - "start": 1488, - "end": 1490, + "start": 1468, + "end": 1470, "loc": { "start": { - "line": 60, + "line": 59, "column": 80 }, "end": { - "line": 60, + "line": 59, "column": 82 } } @@ -50164,15 +50115,15 @@ "postfix": false, "binop": null }, - "start": 1491, - "end": 1492, + "start": 1471, + "end": 1472, "loc": { "start": { - "line": 60, + "line": 59, "column": 83 }, "end": { - "line": 60, + "line": 59, "column": 84 } } @@ -50192,15 +50143,15 @@ "updateContext": null }, "value": "if", - "start": 1505, - "end": 1507, + "start": 1485, + "end": 1487, "loc": { "start": { - "line": 61, + "line": 60, "column": 12 }, "end": { - "line": 61, + "line": 60, "column": 14 } } @@ -50217,15 +50168,15 @@ "postfix": false, "binop": null }, - "start": 1508, - "end": 1509, + "start": 1488, + "end": 1489, "loc": { "start": { - "line": 61, + "line": 60, "column": 15 }, "end": { - "line": 61, + "line": 60, "column": 16 } } @@ -50244,15 +50195,15 @@ "updateContext": null }, "value": "!", - "start": 1509, - "end": 1510, + "start": 1489, + "end": 1490, "loc": { "start": { - "line": 61, + "line": 60, "column": 16 }, "end": { - "line": 61, + "line": 60, "column": 17 } } @@ -50269,15 +50220,15 @@ "postfix": false, "binop": null }, - "start": 1510, - "end": 1511, + "start": 1490, + "end": 1491, "loc": { "start": { - "line": 61, + "line": 60, "column": 17 }, "end": { - "line": 61, + "line": 60, "column": 18 } } @@ -50295,15 +50246,15 @@ "binop": null }, "value": "configs", - "start": 1511, - "end": 1518, + "start": 1491, + "end": 1498, "loc": { "start": { - "line": 61, + "line": 60, "column": 18 }, "end": { - "line": 61, + "line": 60, "column": 25 } } @@ -50321,15 +50272,15 @@ "binop": null, "updateContext": null }, - "start": 1518, - "end": 1519, + "start": 1498, + "end": 1499, "loc": { "start": { - "line": 61, + "line": 60, "column": 25 }, "end": { - "line": 61, + "line": 60, "column": 26 } } @@ -50347,15 +50298,15 @@ "binop": null }, "value": "active", - "start": 1519, - "end": 1525, + "start": 1499, + "end": 1505, "loc": { "start": { - "line": 61, + "line": 60, "column": 26 }, "end": { - "line": 61, + "line": 60, "column": 32 } } @@ -50374,15 +50325,15 @@ "updateContext": null }, "value": "&&", - "start": 1526, - "end": 1528, + "start": 1506, + "end": 1508, "loc": { "start": { - "line": 61, + "line": 60, "column": 33 }, "end": { - "line": 61, + "line": 60, "column": 35 } } @@ -50400,15 +50351,15 @@ "binop": null }, "value": "configs", - "start": 1529, - "end": 1536, + "start": 1509, + "end": 1516, "loc": { "start": { - "line": 61, + "line": 60, "column": 36 }, "end": { - "line": 61, + "line": 60, "column": 43 } } @@ -50426,15 +50377,15 @@ "binop": null, "updateContext": null }, - "start": 1536, - "end": 1537, + "start": 1516, + "end": 1517, "loc": { "start": { - "line": 61, + "line": 60, "column": 43 }, "end": { - "line": 61, + "line": 60, "column": 44 } } @@ -50452,15 +50403,15 @@ "binop": null }, "value": "pointerEnabled", - "start": 1537, - "end": 1551, + "start": 1517, + "end": 1531, "loc": { "start": { - "line": 61, + "line": 60, "column": 44 }, "end": { - "line": 61, + "line": 60, "column": 58 } } @@ -50477,15 +50428,15 @@ "postfix": false, "binop": null }, - "start": 1551, - "end": 1552, + "start": 1531, + "end": 1532, "loc": { "start": { - "line": 61, + "line": 60, "column": 58 }, "end": { - "line": 61, + "line": 60, "column": 59 } } @@ -50504,15 +50455,15 @@ "updateContext": null }, "value": "||", - "start": 1553, - "end": 1555, + "start": 1533, + "end": 1535, "loc": { "start": { - "line": 61, + "line": 60, "column": 60 }, "end": { - "line": 61, + "line": 60, "column": 62 } } @@ -50529,15 +50480,15 @@ "postfix": false, "binop": null }, - "start": 1556, - "end": 1557, + "start": 1536, + "end": 1537, "loc": { "start": { - "line": 61, + "line": 60, "column": 63 }, "end": { - "line": 61, + "line": 60, "column": 64 } } @@ -50556,15 +50507,15 @@ "updateContext": null }, "value": "!", - "start": 1557, - "end": 1558, + "start": 1537, + "end": 1538, "loc": { "start": { - "line": 61, + "line": 60, "column": 64 }, "end": { - "line": 61, + "line": 60, "column": 65 } } @@ -50582,15 +50533,15 @@ "binop": null }, "value": "scene", - "start": 1558, - "end": 1563, + "start": 1538, + "end": 1543, "loc": { "start": { - "line": 61, + "line": 60, "column": 65 }, "end": { - "line": 61, + "line": 60, "column": 70 } } @@ -50608,15 +50559,15 @@ "binop": null, "updateContext": null }, - "start": 1563, - "end": 1564, + "start": 1543, + "end": 1544, "loc": { "start": { - "line": 61, + "line": 60, "column": 70 }, "end": { - "line": 61, + "line": 60, "column": 71 } } @@ -50634,15 +50585,15 @@ "binop": null }, "value": "input", - "start": 1564, - "end": 1569, + "start": 1544, + "end": 1549, "loc": { "start": { - "line": 61, + "line": 60, "column": 71 }, "end": { - "line": 61, + "line": 60, "column": 76 } } @@ -50660,15 +50611,15 @@ "binop": null, "updateContext": null }, - "start": 1569, - "end": 1570, + "start": 1549, + "end": 1550, "loc": { "start": { - "line": 61, + "line": 60, "column": 76 }, "end": { - "line": 61, + "line": 60, "column": 77 } } @@ -50686,15 +50637,15 @@ "binop": null }, "value": "keyboardEnabled", - "start": 1570, - "end": 1585, + "start": 1550, + "end": 1565, "loc": { "start": { - "line": 61, + "line": 60, "column": 77 }, "end": { - "line": 61, + "line": 60, "column": 92 } } @@ -50711,15 +50662,15 @@ "postfix": false, "binop": null }, - "start": 1585, - "end": 1586, + "start": 1565, + "end": 1566, "loc": { "start": { - "line": 61, + "line": 60, "column": 92 }, "end": { - "line": 61, + "line": 60, "column": 93 } } @@ -50736,15 +50687,15 @@ "postfix": false, "binop": null }, - "start": 1586, - "end": 1587, + "start": 1566, + "end": 1567, "loc": { "start": { - "line": 61, + "line": 60, "column": 93 }, "end": { - "line": 61, + "line": 60, "column": 94 } } @@ -50761,15 +50712,15 @@ "postfix": false, "binop": null }, - "start": 1588, - "end": 1589, + "start": 1568, + "end": 1569, "loc": { "start": { - "line": 61, + "line": 60, "column": 95 }, "end": { - "line": 61, + "line": 60, "column": 96 } } @@ -50789,15 +50740,15 @@ "updateContext": null }, "value": "return", - "start": 1606, - "end": 1612, + "start": 1586, + "end": 1592, "loc": { "start": { - "line": 62, + "line": 61, "column": 16 }, "end": { - "line": 62, + "line": 61, "column": 22 } } @@ -50815,15 +50766,15 @@ "binop": null, "updateContext": null }, - "start": 1612, - "end": 1613, + "start": 1592, + "end": 1593, "loc": { "start": { - "line": 62, + "line": 61, "column": 22 }, "end": { - "line": 62, + "line": 61, "column": 23 } } @@ -50840,15 +50791,15 @@ "postfix": false, "binop": null }, - "start": 1626, - "end": 1627, + "start": 1606, + "end": 1607, "loc": { "start": { - "line": 63, + "line": 62, "column": 12 }, "end": { - "line": 63, + "line": 62, "column": 13 } } @@ -50868,15 +50819,15 @@ "updateContext": null }, "value": "const", - "start": 1640, - "end": 1645, + "start": 1620, + "end": 1625, "loc": { "start": { - "line": 64, + "line": 63, "column": 12 }, "end": { - "line": 64, + "line": 63, "column": 17 } } @@ -50894,15 +50845,15 @@ "binop": null }, "value": "keyCode", - "start": 1646, - "end": 1653, + "start": 1626, + "end": 1633, "loc": { "start": { - "line": 64, + "line": 63, "column": 18 }, "end": { - "line": 64, + "line": 63, "column": 25 } } @@ -50921,15 +50872,15 @@ "updateContext": null }, "value": "=", - "start": 1654, - "end": 1655, + "start": 1634, + "end": 1635, "loc": { "start": { - "line": 64, + "line": 63, "column": 26 }, "end": { - "line": 64, + "line": 63, "column": 27 } } @@ -50947,15 +50898,15 @@ "binop": null }, "value": "e", - "start": 1656, - "end": 1657, + "start": 1636, + "end": 1637, "loc": { "start": { - "line": 64, + "line": 63, "column": 28 }, "end": { - "line": 64, + "line": 63, "column": 29 } } @@ -50973,15 +50924,15 @@ "binop": null, "updateContext": null }, - "start": 1657, - "end": 1658, + "start": 1637, + "end": 1638, "loc": { "start": { - "line": 64, + "line": 63, "column": 29 }, "end": { - "line": 64, + "line": 63, "column": 30 } } @@ -50999,15 +50950,15 @@ "binop": null }, "value": "keyCode", - "start": 1658, - "end": 1665, + "start": 1638, + "end": 1645, "loc": { "start": { - "line": 64, + "line": 63, "column": 30 }, "end": { - "line": 64, + "line": 63, "column": 37 } } @@ -51025,15 +50976,15 @@ "binop": null, "updateContext": null }, - "start": 1665, - "end": 1666, + "start": 1645, + "end": 1646, "loc": { "start": { - "line": 64, + "line": 63, "column": 37 }, "end": { - "line": 64, + "line": 63, "column": 38 } } @@ -51051,15 +51002,15 @@ "binop": null }, "value": "keyDown", - "start": 1679, - "end": 1686, + "start": 1659, + "end": 1666, "loc": { "start": { - "line": 65, + "line": 64, "column": 12 }, "end": { - "line": 65, + "line": 64, "column": 19 } } @@ -51077,15 +51028,15 @@ "binop": null, "updateContext": null }, - "start": 1686, - "end": 1687, + "start": 1666, + "end": 1667, "loc": { "start": { - "line": 65, + "line": 64, "column": 19 }, "end": { - "line": 65, + "line": 64, "column": 20 } } @@ -51103,15 +51054,15 @@ "binop": null }, "value": "keyCode", - "start": 1687, - "end": 1694, + "start": 1667, + "end": 1674, "loc": { "start": { - "line": 65, + "line": 64, "column": 20 }, "end": { - "line": 65, + "line": 64, "column": 27 } } @@ -51129,15 +51080,15 @@ "binop": null, "updateContext": null }, - "start": 1694, - "end": 1695, + "start": 1674, + "end": 1675, "loc": { "start": { - "line": 65, + "line": 64, "column": 27 }, "end": { - "line": 65, + "line": 64, "column": 28 } } @@ -51156,15 +51107,15 @@ "updateContext": null }, "value": "=", - "start": 1696, - "end": 1697, + "start": 1676, + "end": 1677, "loc": { "start": { - "line": 65, + "line": 64, "column": 29 }, "end": { - "line": 65, + "line": 64, "column": 30 } } @@ -51184,15 +51135,15 @@ "updateContext": null }, "value": "true", - "start": 1698, - "end": 1702, + "start": 1678, + "end": 1682, "loc": { "start": { - "line": 65, + "line": 64, "column": 31 }, "end": { - "line": 65, + "line": 64, "column": 35 } } @@ -51210,15 +51161,15 @@ "binop": null, "updateContext": null }, - "start": 1702, - "end": 1703, + "start": 1682, + "end": 1683, "loc": { "start": { - "line": 65, + "line": 64, "column": 35 }, "end": { - "line": 65, + "line": 64, "column": 36 } } @@ -51235,15 +51186,15 @@ "postfix": false, "binop": null }, - "start": 1712, - "end": 1713, + "start": 1692, + "end": 1693, "loc": { "start": { - "line": 66, + "line": 65, "column": 8 }, "end": { - "line": 66, + "line": 65, "column": 9 } } @@ -51260,15 +51211,15 @@ "postfix": false, "binop": null }, - "start": 1713, - "end": 1714, + "start": 1693, + "end": 1694, "loc": { "start": { - "line": 66, + "line": 65, "column": 9 }, "end": { - "line": 66, + "line": 65, "column": 10 } } @@ -51286,15 +51237,15 @@ "binop": null, "updateContext": null }, - "start": 1714, - "end": 1715, + "start": 1694, + "end": 1695, "loc": { "start": { - "line": 66, + "line": 65, "column": 10 }, "end": { - "line": 66, + "line": 65, "column": 11 } } @@ -51312,15 +51263,15 @@ "binop": null }, "value": "document", - "start": 1725, - "end": 1733, + "start": 1705, + "end": 1713, "loc": { "start": { - "line": 68, + "line": 67, "column": 8 }, "end": { - "line": 68, + "line": 67, "column": 16 } } @@ -51338,15 +51289,15 @@ "binop": null, "updateContext": null }, - "start": 1733, - "end": 1734, + "start": 1713, + "end": 1714, "loc": { "start": { - "line": 68, + "line": 67, "column": 16 }, "end": { - "line": 68, + "line": 67, "column": 17 } } @@ -51364,15 +51315,15 @@ "binop": null }, "value": "addEventListener", - "start": 1734, - "end": 1750, + "start": 1714, + "end": 1730, "loc": { "start": { - "line": 68, + "line": 67, "column": 17 }, "end": { - "line": 68, + "line": 67, "column": 33 } } @@ -51389,15 +51340,15 @@ "postfix": false, "binop": null }, - "start": 1750, - "end": 1751, + "start": 1730, + "end": 1731, "loc": { "start": { - "line": 68, + "line": 67, "column": 33 }, "end": { - "line": 68, + "line": 67, "column": 34 } } @@ -51416,15 +51367,15 @@ "updateContext": null }, "value": "keyup", - "start": 1751, - "end": 1758, + "start": 1731, + "end": 1738, "loc": { "start": { - "line": 68, + "line": 67, "column": 34 }, "end": { - "line": 68, + "line": 67, "column": 41 } } @@ -51442,15 +51393,15 @@ "binop": null, "updateContext": null }, - "start": 1758, - "end": 1759, + "start": 1738, + "end": 1739, "loc": { "start": { - "line": 68, + "line": 67, "column": 41 }, "end": { - "line": 68, + "line": 67, "column": 42 } } @@ -51470,15 +51421,15 @@ "updateContext": null }, "value": "this", - "start": 1760, - "end": 1764, + "start": 1740, + "end": 1744, "loc": { "start": { - "line": 68, + "line": 67, "column": 43 }, "end": { - "line": 68, + "line": 67, "column": 47 } } @@ -51496,15 +51447,15 @@ "binop": null, "updateContext": null }, - "start": 1764, - "end": 1765, + "start": 1744, + "end": 1745, "loc": { "start": { - "line": 68, + "line": 67, "column": 47 }, "end": { - "line": 68, + "line": 67, "column": 48 } } @@ -51522,15 +51473,15 @@ "binop": null }, "value": "_documentKeyUpHandler", - "start": 1765, - "end": 1786, + "start": 1745, + "end": 1766, "loc": { "start": { - "line": 68, + "line": 67, "column": 48 }, "end": { - "line": 68, + "line": 67, "column": 69 } } @@ -51549,15 +51500,15 @@ "updateContext": null }, "value": "=", - "start": 1787, - "end": 1788, + "start": 1767, + "end": 1768, "loc": { "start": { - "line": 68, + "line": 67, "column": 70 }, "end": { - "line": 68, + "line": 67, "column": 71 } } @@ -51574,15 +51525,15 @@ "postfix": false, "binop": null }, - "start": 1789, - "end": 1790, + "start": 1769, + "end": 1770, "loc": { "start": { - "line": 68, + "line": 67, "column": 72 }, "end": { - "line": 68, + "line": 67, "column": 73 } } @@ -51600,15 +51551,15 @@ "binop": null }, "value": "e", - "start": 1790, - "end": 1791, + "start": 1770, + "end": 1771, "loc": { "start": { - "line": 68, + "line": 67, "column": 73 }, "end": { - "line": 68, + "line": 67, "column": 74 } } @@ -51625,15 +51576,15 @@ "postfix": false, "binop": null }, - "start": 1791, - "end": 1792, + "start": 1771, + "end": 1772, "loc": { "start": { - "line": 68, + "line": 67, "column": 74 }, "end": { - "line": 68, + "line": 67, "column": 75 } } @@ -51651,15 +51602,15 @@ "binop": null, "updateContext": null }, - "start": 1793, - "end": 1795, + "start": 1773, + "end": 1775, "loc": { "start": { - "line": 68, + "line": 67, "column": 76 }, "end": { - "line": 68, + "line": 67, "column": 78 } } @@ -51676,15 +51627,15 @@ "postfix": false, "binop": null }, - "start": 1796, - "end": 1797, + "start": 1776, + "end": 1777, "loc": { "start": { - "line": 68, + "line": 67, "column": 79 }, "end": { - "line": 68, + "line": 67, "column": 80 } } @@ -51704,15 +51655,15 @@ "updateContext": null }, "value": "if", - "start": 1810, - "end": 1812, + "start": 1790, + "end": 1792, "loc": { "start": { - "line": 69, + "line": 68, "column": 12 }, "end": { - "line": 69, + "line": 68, "column": 14 } } @@ -51729,15 +51680,15 @@ "postfix": false, "binop": null }, - "start": 1813, - "end": 1814, + "start": 1793, + "end": 1794, "loc": { "start": { - "line": 69, + "line": 68, "column": 15 }, "end": { - "line": 69, + "line": 68, "column": 16 } } @@ -51756,15 +51707,15 @@ "updateContext": null }, "value": "!", - "start": 1814, - "end": 1815, + "start": 1794, + "end": 1795, "loc": { "start": { - "line": 69, + "line": 68, "column": 16 }, "end": { - "line": 69, + "line": 68, "column": 17 } } @@ -51781,15 +51732,15 @@ "postfix": false, "binop": null }, - "start": 1815, - "end": 1816, + "start": 1795, + "end": 1796, "loc": { "start": { - "line": 69, + "line": 68, "column": 17 }, "end": { - "line": 69, + "line": 68, "column": 18 } } @@ -51807,15 +51758,15 @@ "binop": null }, "value": "configs", - "start": 1816, - "end": 1823, + "start": 1796, + "end": 1803, "loc": { "start": { - "line": 69, + "line": 68, "column": 18 }, "end": { - "line": 69, + "line": 68, "column": 25 } } @@ -51833,15 +51784,15 @@ "binop": null, "updateContext": null }, - "start": 1823, - "end": 1824, + "start": 1803, + "end": 1804, "loc": { "start": { - "line": 69, + "line": 68, "column": 25 }, "end": { - "line": 69, + "line": 68, "column": 26 } } @@ -51859,15 +51810,15 @@ "binop": null }, "value": "active", - "start": 1824, - "end": 1830, + "start": 1804, + "end": 1810, "loc": { "start": { - "line": 69, + "line": 68, "column": 26 }, "end": { - "line": 69, + "line": 68, "column": 32 } } @@ -51886,15 +51837,15 @@ "updateContext": null }, "value": "&&", - "start": 1831, - "end": 1833, + "start": 1811, + "end": 1813, "loc": { "start": { - "line": 69, + "line": 68, "column": 33 }, "end": { - "line": 69, + "line": 68, "column": 35 } } @@ -51912,15 +51863,15 @@ "binop": null }, "value": "configs", - "start": 1834, - "end": 1841, + "start": 1814, + "end": 1821, "loc": { "start": { - "line": 69, + "line": 68, "column": 36 }, "end": { - "line": 69, + "line": 68, "column": 43 } } @@ -51938,15 +51889,15 @@ "binop": null, "updateContext": null }, - "start": 1841, - "end": 1842, + "start": 1821, + "end": 1822, "loc": { "start": { - "line": 69, + "line": 68, "column": 43 }, "end": { - "line": 69, + "line": 68, "column": 44 } } @@ -51964,15 +51915,15 @@ "binop": null }, "value": "pointerEnabled", - "start": 1842, - "end": 1856, + "start": 1822, + "end": 1836, "loc": { "start": { - "line": 69, + "line": 68, "column": 44 }, "end": { - "line": 69, + "line": 68, "column": 58 } } @@ -51989,15 +51940,15 @@ "postfix": false, "binop": null }, - "start": 1856, - "end": 1857, + "start": 1836, + "end": 1837, "loc": { "start": { - "line": 69, + "line": 68, "column": 58 }, "end": { - "line": 69, + "line": 68, "column": 59 } } @@ -52016,15 +51967,15 @@ "updateContext": null }, "value": "||", - "start": 1858, - "end": 1860, + "start": 1838, + "end": 1840, "loc": { "start": { - "line": 69, + "line": 68, "column": 60 }, "end": { - "line": 69, + "line": 68, "column": 62 } } @@ -52041,15 +51992,15 @@ "postfix": false, "binop": null }, - "start": 1861, - "end": 1862, + "start": 1841, + "end": 1842, "loc": { "start": { - "line": 69, + "line": 68, "column": 63 }, "end": { - "line": 69, + "line": 68, "column": 64 } } @@ -52068,15 +52019,15 @@ "updateContext": null }, "value": "!", - "start": 1862, - "end": 1863, + "start": 1842, + "end": 1843, "loc": { "start": { - "line": 69, + "line": 68, "column": 64 }, "end": { - "line": 69, + "line": 68, "column": 65 } } @@ -52094,15 +52045,15 @@ "binop": null }, "value": "scene", - "start": 1863, - "end": 1868, + "start": 1843, + "end": 1848, "loc": { "start": { - "line": 69, + "line": 68, "column": 65 }, "end": { - "line": 69, + "line": 68, "column": 70 } } @@ -52120,15 +52071,15 @@ "binop": null, "updateContext": null }, - "start": 1868, - "end": 1869, + "start": 1848, + "end": 1849, "loc": { "start": { - "line": 69, + "line": 68, "column": 70 }, "end": { - "line": 69, + "line": 68, "column": 71 } } @@ -52146,15 +52097,15 @@ "binop": null }, "value": "input", - "start": 1869, - "end": 1874, + "start": 1849, + "end": 1854, "loc": { "start": { - "line": 69, + "line": 68, "column": 71 }, "end": { - "line": 69, + "line": 68, "column": 76 } } @@ -52172,15 +52123,15 @@ "binop": null, "updateContext": null }, - "start": 1874, - "end": 1875, + "start": 1854, + "end": 1855, "loc": { "start": { - "line": 69, + "line": 68, "column": 76 }, "end": { - "line": 69, + "line": 68, "column": 77 } } @@ -52198,15 +52149,15 @@ "binop": null }, "value": "keyboardEnabled", - "start": 1875, - "end": 1890, + "start": 1855, + "end": 1870, "loc": { "start": { - "line": 69, + "line": 68, "column": 77 }, "end": { - "line": 69, + "line": 68, "column": 92 } } @@ -52223,15 +52174,15 @@ "postfix": false, "binop": null }, - "start": 1890, - "end": 1891, + "start": 1870, + "end": 1871, "loc": { "start": { - "line": 69, + "line": 68, "column": 92 }, "end": { - "line": 69, + "line": 68, "column": 93 } } @@ -52248,15 +52199,15 @@ "postfix": false, "binop": null }, - "start": 1891, - "end": 1892, + "start": 1871, + "end": 1872, "loc": { "start": { - "line": 69, + "line": 68, "column": 93 }, "end": { - "line": 69, + "line": 68, "column": 94 } } @@ -52273,15 +52224,15 @@ "postfix": false, "binop": null }, - "start": 1893, - "end": 1894, + "start": 1873, + "end": 1874, "loc": { "start": { - "line": 69, + "line": 68, "column": 95 }, "end": { - "line": 69, + "line": 68, "column": 96 } } @@ -52301,15 +52252,15 @@ "updateContext": null }, "value": "return", - "start": 1911, - "end": 1917, + "start": 1891, + "end": 1897, "loc": { "start": { - "line": 70, + "line": 69, "column": 16 }, "end": { - "line": 70, + "line": 69, "column": 22 } } @@ -52327,15 +52278,15 @@ "binop": null, "updateContext": null }, - "start": 1917, - "end": 1918, + "start": 1897, + "end": 1898, "loc": { "start": { - "line": 70, + "line": 69, "column": 22 }, "end": { - "line": 70, + "line": 69, "column": 23 } } @@ -52352,15 +52303,15 @@ "postfix": false, "binop": null }, - "start": 1931, - "end": 1932, + "start": 1911, + "end": 1912, "loc": { "start": { - "line": 71, + "line": 70, "column": 12 }, "end": { - "line": 71, + "line": 70, "column": 13 } } @@ -52380,15 +52331,15 @@ "updateContext": null }, "value": "const", - "start": 1945, - "end": 1950, + "start": 1925, + "end": 1930, "loc": { "start": { - "line": 72, + "line": 71, "column": 12 }, "end": { - "line": 72, + "line": 71, "column": 17 } } @@ -52406,15 +52357,15 @@ "binop": null }, "value": "keyCode", - "start": 1951, - "end": 1958, + "start": 1931, + "end": 1938, "loc": { "start": { - "line": 72, + "line": 71, "column": 18 }, "end": { - "line": 72, + "line": 71, "column": 25 } } @@ -52433,15 +52384,15 @@ "updateContext": null }, "value": "=", - "start": 1959, - "end": 1960, + "start": 1939, + "end": 1940, "loc": { "start": { - "line": 72, + "line": 71, "column": 26 }, "end": { - "line": 72, + "line": 71, "column": 27 } } @@ -52459,15 +52410,15 @@ "binop": null }, "value": "e", - "start": 1961, - "end": 1962, + "start": 1941, + "end": 1942, "loc": { "start": { - "line": 72, + "line": 71, "column": 28 }, "end": { - "line": 72, + "line": 71, "column": 29 } } @@ -52485,15 +52436,15 @@ "binop": null, "updateContext": null }, - "start": 1962, - "end": 1963, + "start": 1942, + "end": 1943, "loc": { "start": { - "line": 72, + "line": 71, "column": 29 }, "end": { - "line": 72, + "line": 71, "column": 30 } } @@ -52511,15 +52462,15 @@ "binop": null }, "value": "keyCode", - "start": 1963, - "end": 1970, + "start": 1943, + "end": 1950, "loc": { "start": { - "line": 72, + "line": 71, "column": 30 }, "end": { - "line": 72, + "line": 71, "column": 37 } } @@ -52537,15 +52488,15 @@ "binop": null, "updateContext": null }, - "start": 1970, - "end": 1971, + "start": 1950, + "end": 1951, "loc": { "start": { - "line": 72, + "line": 71, "column": 37 }, "end": { - "line": 72, + "line": 71, "column": 38 } } @@ -52563,15 +52514,15 @@ "binop": null }, "value": "keyDown", - "start": 1984, - "end": 1991, + "start": 1964, + "end": 1971, "loc": { "start": { - "line": 73, + "line": 72, "column": 12 }, "end": { - "line": 73, + "line": 72, "column": 19 } } @@ -52589,15 +52540,15 @@ "binop": null, "updateContext": null }, - "start": 1991, - "end": 1992, + "start": 1971, + "end": 1972, "loc": { "start": { - "line": 73, + "line": 72, "column": 19 }, "end": { - "line": 73, + "line": 72, "column": 20 } } @@ -52615,15 +52566,15 @@ "binop": null }, "value": "keyCode", - "start": 1992, - "end": 1999, + "start": 1972, + "end": 1979, "loc": { "start": { - "line": 73, + "line": 72, "column": 20 }, "end": { - "line": 73, + "line": 72, "column": 27 } } @@ -52641,15 +52592,15 @@ "binop": null, "updateContext": null }, - "start": 1999, - "end": 2000, + "start": 1979, + "end": 1980, "loc": { "start": { - "line": 73, + "line": 72, "column": 27 }, "end": { - "line": 73, + "line": 72, "column": 28 } } @@ -52668,15 +52619,15 @@ "updateContext": null }, "value": "=", - "start": 2001, - "end": 2002, + "start": 1981, + "end": 1982, "loc": { "start": { - "line": 73, + "line": 72, "column": 29 }, "end": { - "line": 73, + "line": 72, "column": 30 } } @@ -52696,15 +52647,15 @@ "updateContext": null }, "value": "false", - "start": 2003, - "end": 2008, + "start": 1983, + "end": 1988, "loc": { "start": { - "line": 73, + "line": 72, "column": 31 }, "end": { - "line": 73, + "line": 72, "column": 36 } } @@ -52722,15 +52673,15 @@ "binop": null, "updateContext": null }, - "start": 2008, - "end": 2009, + "start": 1988, + "end": 1989, "loc": { "start": { - "line": 73, + "line": 72, "column": 36 }, "end": { - "line": 73, + "line": 72, "column": 37 } } @@ -52747,15 +52698,15 @@ "postfix": false, "binop": null }, - "start": 2018, - "end": 2019, + "start": 1998, + "end": 1999, "loc": { "start": { - "line": 74, + "line": 73, "column": 8 }, "end": { - "line": 74, + "line": 73, "column": 9 } } @@ -52772,15 +52723,15 @@ "postfix": false, "binop": null }, - "start": 2019, - "end": 2020, + "start": 1999, + "end": 2000, "loc": { "start": { - "line": 74, + "line": 73, "column": 9 }, "end": { - "line": 74, + "line": 73, "column": 10 } } @@ -52798,15 +52749,15 @@ "binop": null, "updateContext": null }, - "start": 2020, - "end": 2021, + "start": 2000, + "end": 2001, "loc": { "start": { - "line": 74, + "line": 73, "column": 10 }, "end": { - "line": 74, + "line": 73, "column": 11 } } @@ -52825,15 +52776,15 @@ "binop": null }, "value": "function", - "start": 2031, - "end": 2039, + "start": 2011, + "end": 2019, "loc": { "start": { - "line": 76, + "line": 75, "column": 8 }, "end": { - "line": 76, + "line": 75, "column": 16 } } @@ -52851,15 +52802,15 @@ "binop": null }, "value": "setMousedownState", - "start": 2040, - "end": 2057, + "start": 2020, + "end": 2037, "loc": { "start": { - "line": 76, + "line": 75, "column": 17 }, "end": { - "line": 76, + "line": 75, "column": 34 } } @@ -52876,15 +52827,15 @@ "postfix": false, "binop": null }, - "start": 2057, - "end": 2058, + "start": 2037, + "end": 2038, "loc": { "start": { - "line": 76, + "line": 75, "column": 34 }, "end": { - "line": 76, + "line": 75, "column": 35 } } @@ -52902,15 +52853,15 @@ "binop": null }, "value": "pick", - "start": 2058, - "end": 2062, + "start": 2038, + "end": 2042, "loc": { "start": { - "line": 76, + "line": 75, "column": 35 }, "end": { - "line": 76, + "line": 75, "column": 39 } } @@ -52929,15 +52880,15 @@ "updateContext": null }, "value": "=", - "start": 2063, - "end": 2064, + "start": 2043, + "end": 2044, "loc": { "start": { - "line": 76, + "line": 75, "column": 40 }, "end": { - "line": 76, + "line": 75, "column": 41 } } @@ -52957,15 +52908,15 @@ "updateContext": null }, "value": "true", - "start": 2065, - "end": 2069, + "start": 2045, + "end": 2049, "loc": { "start": { - "line": 76, + "line": 75, "column": 42 }, "end": { - "line": 76, + "line": 75, "column": 46 } } @@ -52982,15 +52933,15 @@ "postfix": false, "binop": null }, - "start": 2069, - "end": 2070, + "start": 2049, + "end": 2050, "loc": { "start": { - "line": 76, + "line": 75, "column": 46 }, "end": { - "line": 76, + "line": 75, "column": 47 } } @@ -53007,15 +52958,15 @@ "postfix": false, "binop": null }, - "start": 2071, - "end": 2072, + "start": 2051, + "end": 2052, "loc": { "start": { - "line": 76, + "line": 75, "column": 48 }, "end": { - "line": 76, + "line": 75, "column": 49 } } @@ -53033,15 +52984,15 @@ "binop": null }, "value": "canvas", - "start": 2085, - "end": 2091, + "start": 2065, + "end": 2071, "loc": { "start": { - "line": 77, + "line": 76, "column": 12 }, "end": { - "line": 77, + "line": 76, "column": 18 } } @@ -53059,15 +53010,15 @@ "binop": null, "updateContext": null }, - "start": 2091, - "end": 2092, + "start": 2071, + "end": 2072, "loc": { "start": { - "line": 77, + "line": 76, "column": 18 }, "end": { - "line": 77, + "line": 76, "column": 19 } } @@ -53085,15 +53036,15 @@ "binop": null }, "value": "style", - "start": 2092, - "end": 2097, + "start": 2072, + "end": 2077, "loc": { "start": { - "line": 77, + "line": 76, "column": 19 }, "end": { - "line": 77, + "line": 76, "column": 24 } } @@ -53111,15 +53062,15 @@ "binop": null, "updateContext": null }, - "start": 2097, - "end": 2098, + "start": 2077, + "end": 2078, "loc": { "start": { - "line": 77, + "line": 76, "column": 24 }, "end": { - "line": 77, + "line": 76, "column": 25 } } @@ -53137,15 +53088,15 @@ "binop": null }, "value": "cursor", - "start": 2098, - "end": 2104, + "start": 2078, + "end": 2084, "loc": { "start": { - "line": 77, + "line": 76, "column": 25 }, "end": { - "line": 77, + "line": 76, "column": 31 } } @@ -53164,15 +53115,15 @@ "updateContext": null }, "value": "=", - "start": 2105, - "end": 2106, + "start": 2085, + "end": 2086, "loc": { "start": { - "line": 77, + "line": 76, "column": 32 }, "end": { - "line": 77, + "line": 76, "column": 33 } } @@ -53191,15 +53142,15 @@ "updateContext": null }, "value": "move", - "start": 2107, - "end": 2113, + "start": 2087, + "end": 2093, "loc": { "start": { - "line": 77, + "line": 76, "column": 34 }, "end": { - "line": 77, + "line": 76, "column": 40 } } @@ -53217,15 +53168,15 @@ "binop": null, "updateContext": null }, - "start": 2113, - "end": 2114, + "start": 2093, + "end": 2094, "loc": { "start": { - "line": 77, + "line": 76, "column": 40 }, "end": { - "line": 77, + "line": 76, "column": 41 } } @@ -53243,15 +53194,15 @@ "binop": null }, "value": "setMousedownPositions", - "start": 2127, - "end": 2148, + "start": 2107, + "end": 2128, "loc": { "start": { - "line": 78, + "line": 77, "column": 12 }, "end": { - "line": 78, + "line": 77, "column": 33 } } @@ -53268,15 +53219,15 @@ "postfix": false, "binop": null }, - "start": 2148, - "end": 2149, + "start": 2128, + "end": 2129, "loc": { "start": { - "line": 78, + "line": 77, "column": 33 }, "end": { - "line": 78, + "line": 77, "column": 34 } } @@ -53293,15 +53244,15 @@ "postfix": false, "binop": null }, - "start": 2149, - "end": 2150, + "start": 2129, + "end": 2130, "loc": { "start": { - "line": 78, + "line": 77, "column": 34 }, "end": { - "line": 78, + "line": 77, "column": 35 } } @@ -53319,15 +53270,15 @@ "binop": null, "updateContext": null }, - "start": 2150, - "end": 2151, + "start": 2130, + "end": 2131, "loc": { "start": { - "line": 78, + "line": 77, "column": 35 }, "end": { - "line": 78, + "line": 77, "column": 36 } } @@ -53347,15 +53298,15 @@ "updateContext": null }, "value": "if", - "start": 2164, - "end": 2166, + "start": 2144, + "end": 2146, "loc": { "start": { - "line": 79, + "line": 78, "column": 12 }, "end": { - "line": 79, + "line": 78, "column": 14 } } @@ -53372,15 +53323,15 @@ "postfix": false, "binop": null }, - "start": 2167, - "end": 2168, + "start": 2147, + "end": 2148, "loc": { "start": { - "line": 79, + "line": 78, "column": 15 }, "end": { - "line": 79, + "line": 78, "column": 16 } } @@ -53398,15 +53349,15 @@ "binop": null }, "value": "pick", - "start": 2168, - "end": 2172, + "start": 2148, + "end": 2152, "loc": { "start": { - "line": 79, + "line": 78, "column": 16 }, "end": { - "line": 79, + "line": 78, "column": 20 } } @@ -53423,15 +53374,15 @@ "postfix": false, "binop": null }, - "start": 2172, - "end": 2173, + "start": 2152, + "end": 2153, "loc": { "start": { - "line": 79, + "line": 78, "column": 20 }, "end": { - "line": 79, + "line": 78, "column": 21 } } @@ -53448,15 +53399,15 @@ "postfix": false, "binop": null }, - "start": 2174, - "end": 2175, + "start": 2154, + "end": 2155, "loc": { "start": { - "line": 79, + "line": 78, "column": 22 }, "end": { - "line": 79, + "line": 78, "column": 23 } } @@ -53474,15 +53425,15 @@ "binop": null }, "value": "setMousedownPick", - "start": 2192, - "end": 2208, + "start": 2172, + "end": 2188, "loc": { "start": { - "line": 80, + "line": 79, "column": 16 }, "end": { - "line": 80, + "line": 79, "column": 32 } } @@ -53499,15 +53450,15 @@ "postfix": false, "binop": null }, - "start": 2208, - "end": 2209, + "start": 2188, + "end": 2189, "loc": { "start": { - "line": 80, + "line": 79, "column": 32 }, "end": { - "line": 80, + "line": 79, "column": 33 } } @@ -53524,15 +53475,15 @@ "postfix": false, "binop": null }, - "start": 2209, - "end": 2210, + "start": 2189, + "end": 2190, "loc": { "start": { - "line": 80, + "line": 79, "column": 33 }, "end": { - "line": 80, + "line": 79, "column": 34 } } @@ -53550,15 +53501,15 @@ "binop": null, "updateContext": null }, - "start": 2210, - "end": 2211, + "start": 2190, + "end": 2191, "loc": { "start": { - "line": 80, + "line": 79, "column": 34 }, "end": { - "line": 80, + "line": 79, "column": 35 } } @@ -53575,15 +53526,15 @@ "postfix": false, "binop": null }, - "start": 2224, - "end": 2225, + "start": 2204, + "end": 2205, "loc": { "start": { - "line": 81, + "line": 80, "column": 12 }, "end": { - "line": 81, + "line": 80, "column": 13 } } @@ -53600,15 +53551,15 @@ "postfix": false, "binop": null }, - "start": 2234, - "end": 2235, + "start": 2214, + "end": 2215, "loc": { "start": { - "line": 82, + "line": 81, "column": 8 }, "end": { - "line": 82, + "line": 81, "column": 9 } } @@ -53627,15 +53578,15 @@ "binop": null }, "value": "function", - "start": 2245, - "end": 2253, + "start": 2225, + "end": 2233, "loc": { "start": { - "line": 84, + "line": 83, "column": 8 }, "end": { - "line": 84, + "line": 83, "column": 16 } } @@ -53653,15 +53604,15 @@ "binop": null }, "value": "setMousedownPositions", - "start": 2254, - "end": 2275, + "start": 2234, + "end": 2255, "loc": { "start": { - "line": 84, + "line": 83, "column": 17 }, "end": { - "line": 84, + "line": 83, "column": 38 } } @@ -53678,15 +53629,15 @@ "postfix": false, "binop": null }, - "start": 2275, - "end": 2276, + "start": 2255, + "end": 2256, "loc": { "start": { - "line": 84, + "line": 83, "column": 38 }, "end": { - "line": 84, + "line": 83, "column": 39 } } @@ -53703,15 +53654,15 @@ "postfix": false, "binop": null }, - "start": 2276, - "end": 2277, + "start": 2256, + "end": 2257, "loc": { "start": { - "line": 84, + "line": 83, "column": 39 }, "end": { - "line": 84, + "line": 83, "column": 40 } } @@ -53728,15 +53679,15 @@ "postfix": false, "binop": null }, - "start": 2278, - "end": 2279, + "start": 2258, + "end": 2259, "loc": { "start": { - "line": 84, + "line": 83, "column": 41 }, "end": { - "line": 84, + "line": 83, "column": 42 } } @@ -53754,8 +53705,114 @@ "binop": null }, "value": "xRotateDelta", - "start": 2292, - "end": 2304, + "start": 2272, + "end": 2284, + "loc": { + "start": { + "line": 84, + "column": 12 + }, + "end": { + "line": 84, + "column": 24 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2285, + "end": 2286, + "loc": { + "start": { + "line": 84, + "column": 25 + }, + "end": { + "line": 84, + "column": 26 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 2287, + "end": 2288, + "loc": { + "start": { + "line": 84, + "column": 27 + }, + "end": { + "line": 84, + "column": 28 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2288, + "end": 2289, + "loc": { + "start": { + "line": 84, + "column": 28 + }, + "end": { + "line": 84, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "yRotateDelta", + "start": 2302, + "end": 2314, "loc": { "start": { "line": 85, @@ -53781,8 +53838,8 @@ "updateContext": null }, "value": "=", - "start": 2305, - "end": 2306, + "start": 2315, + "end": 2316, "loc": { "start": { "line": 85, @@ -53808,8 +53865,8 @@ "updateContext": null }, "value": 0, - "start": 2307, - "end": 2308, + "start": 2317, + "end": 2318, "loc": { "start": { "line": 85, @@ -53834,8 +53891,8 @@ "binop": null, "updateContext": null }, - "start": 2308, - "end": 2309, + "start": 2318, + "end": 2319, "loc": { "start": { "line": 85, @@ -53859,17 +53916,17 @@ "postfix": false, "binop": null }, - "value": "yRotateDelta", - "start": 2322, - "end": 2334, + "value": "lastX", + "start": 2333, + "end": 2338, "loc": { "start": { - "line": 86, + "line": 87, "column": 12 }, "end": { - "line": 86, - "column": 24 + "line": 87, + "column": 17 } } }, @@ -53887,24 +53944,155 @@ "updateContext": null }, "value": "=", - "start": 2335, - "end": 2336, + "start": 2339, + "end": 2340, "loc": { "start": { - "line": 86, - "column": 25 + "line": 87, + "column": 18 + }, + "end": { + "line": 87, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "states", + "start": 2341, + "end": 2347, + "loc": { + "start": { + "line": 87, + "column": 20 + }, + "end": { + "line": 87, + "column": 26 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2347, + "end": 2348, + "loc": { + "start": { + "line": 87, + "column": 26 + }, + "end": { + "line": 87, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pointerCanvasPos", + "start": 2348, + "end": 2364, + "loc": { + "start": { + "line": 87, + "column": 27 + }, + "end": { + "line": 87, + "column": 43 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2364, + "end": 2365, + "loc": { + "start": { + "line": 87, + "column": 43 + }, + "end": { + "line": 87, + "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": 2365, + "end": 2366, + "loc": { + "start": { + "line": 87, + "column": 44 }, "end": { - "line": 86, - "column": 26 + "line": 87, + "column": 45 } } }, { "type": { - "label": "num", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -53913,17 +54101,16 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 2337, - "end": 2338, + "start": 2366, + "end": 2367, "loc": { "start": { - "line": 86, - "column": 27 + "line": 87, + "column": 45 }, "end": { - "line": 86, - "column": 28 + "line": 87, + "column": 46 } } }, @@ -53940,16 +54127,16 @@ "binop": null, "updateContext": null }, - "start": 2338, - "end": 2339, + "start": 2367, + "end": 2368, "loc": { "start": { - "line": 86, - "column": 28 + "line": 87, + "column": 46 }, "end": { - "line": 86, - "column": 29 + "line": 87, + "column": 47 } } }, @@ -53965,9 +54152,9 @@ "postfix": false, "binop": null }, - "value": "lastX", - "start": 2353, - "end": 2358, + "value": "lastY", + "start": 2381, + "end": 2386, "loc": { "start": { "line": 88, @@ -53993,8 +54180,8 @@ "updateContext": null }, "value": "=", - "start": 2359, - "end": 2360, + "start": 2387, + "end": 2388, "loc": { "start": { "line": 88, @@ -54019,8 +54206,8 @@ "binop": null }, "value": "states", - "start": 2361, - "end": 2367, + "start": 2389, + "end": 2395, "loc": { "start": { "line": 88, @@ -54045,8 +54232,8 @@ "binop": null, "updateContext": null }, - "start": 2367, - "end": 2368, + "start": 2395, + "end": 2396, "loc": { "start": { "line": 88, @@ -54071,8 +54258,8 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 2368, - "end": 2384, + "start": 2396, + "end": 2412, "loc": { "start": { "line": 88, @@ -54097,8 +54284,8 @@ "binop": null, "updateContext": null }, - "start": 2384, - "end": 2385, + "start": 2412, + "end": 2413, "loc": { "start": { "line": 88, @@ -54123,9 +54310,9 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 2385, - "end": 2386, + "value": 1, + "start": 2413, + "end": 2414, "loc": { "start": { "line": 88, @@ -54150,8 +54337,8 @@ "binop": null, "updateContext": null }, - "start": 2386, - "end": 2387, + "start": 2414, + "end": 2415, "loc": { "start": { "line": 88, @@ -54176,8 +54363,8 @@ "binop": null, "updateContext": null }, - "start": 2387, - "end": 2388, + "start": 2415, + "end": 2416, "loc": { "start": { "line": 88, @@ -54201,9 +54388,9 @@ "postfix": false, "binop": null }, - "value": "lastY", - "start": 2401, - "end": 2406, + "value": "lastXDown", + "start": 2429, + "end": 2438, "loc": { "start": { "line": 89, @@ -54211,7 +54398,7 @@ }, "end": { "line": 89, - "column": 17 + "column": 21 } } }, @@ -54229,16 +54416,16 @@ "updateContext": null }, "value": "=", - "start": 2407, - "end": 2408, + "start": 2439, + "end": 2440, "loc": { "start": { "line": 89, - "column": 18 + "column": 22 }, "end": { "line": 89, - "column": 19 + "column": 23 } } }, @@ -54255,16 +54442,16 @@ "binop": null }, "value": "states", - "start": 2409, - "end": 2415, + "start": 2441, + "end": 2447, "loc": { "start": { "line": 89, - "column": 20 + "column": 24 }, "end": { "line": 89, - "column": 26 + "column": 30 } } }, @@ -54281,16 +54468,16 @@ "binop": null, "updateContext": null }, - "start": 2415, - "end": 2416, + "start": 2447, + "end": 2448, "loc": { "start": { "line": 89, - "column": 26 + "column": 30 }, "end": { "line": 89, - "column": 27 + "column": 31 } } }, @@ -54307,16 +54494,16 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 2416, - "end": 2432, + "start": 2448, + "end": 2464, "loc": { "start": { "line": 89, - "column": 27 + "column": 31 }, "end": { "line": 89, - "column": 43 + "column": 47 } } }, @@ -54333,16 +54520,16 @@ "binop": null, "updateContext": null }, - "start": 2432, - "end": 2433, + "start": 2464, + "end": 2465, "loc": { "start": { "line": 89, - "column": 43 + "column": 47 }, "end": { "line": 89, - "column": 44 + "column": 48 } } }, @@ -54359,17 +54546,17 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 2433, - "end": 2434, + "value": 0, + "start": 2465, + "end": 2466, "loc": { "start": { "line": 89, - "column": 44 + "column": 48 }, "end": { "line": 89, - "column": 45 + "column": 49 } } }, @@ -54386,16 +54573,16 @@ "binop": null, "updateContext": null }, - "start": 2434, - "end": 2435, + "start": 2466, + "end": 2467, "loc": { "start": { "line": 89, - "column": 45 + "column": 49 }, "end": { "line": 89, - "column": 46 + "column": 50 } } }, @@ -54412,16 +54599,16 @@ "binop": null, "updateContext": null }, - "start": 2435, - "end": 2436, + "start": 2467, + "end": 2468, "loc": { "start": { "line": 89, - "column": 46 + "column": 50 }, "end": { "line": 89, - "column": 47 + "column": 51 } } }, @@ -54437,9 +54624,9 @@ "postfix": false, "binop": null }, - "value": "lastXDown", - "start": 2449, - "end": 2458, + "value": "lastYDown", + "start": 2481, + "end": 2490, "loc": { "start": { "line": 90, @@ -54465,8 +54652,8 @@ "updateContext": null }, "value": "=", - "start": 2459, - "end": 2460, + "start": 2491, + "end": 2492, "loc": { "start": { "line": 90, @@ -54491,8 +54678,8 @@ "binop": null }, "value": "states", - "start": 2461, - "end": 2467, + "start": 2493, + "end": 2499, "loc": { "start": { "line": 90, @@ -54517,8 +54704,8 @@ "binop": null, "updateContext": null }, - "start": 2467, - "end": 2468, + "start": 2499, + "end": 2500, "loc": { "start": { "line": 90, @@ -54543,8 +54730,8 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 2468, - "end": 2484, + "start": 2500, + "end": 2516, "loc": { "start": { "line": 90, @@ -54569,8 +54756,8 @@ "binop": null, "updateContext": null }, - "start": 2484, - "end": 2485, + "start": 2516, + "end": 2517, "loc": { "start": { "line": 90, @@ -54595,9 +54782,9 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 2485, - "end": 2486, + "value": 1, + "start": 2517, + "end": 2518, "loc": { "start": { "line": 90, @@ -54622,8 +54809,8 @@ "binop": null, "updateContext": null }, - "start": 2486, - "end": 2487, + "start": 2518, + "end": 2519, "loc": { "start": { "line": 90, @@ -54648,8 +54835,8 @@ "binop": null, "updateContext": null }, - "start": 2487, - "end": 2488, + "start": 2519, + "end": 2520, "loc": { "start": { "line": 90, @@ -54661,6 +54848,58 @@ } } }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2529, + "end": 2530, + "loc": { + "start": { + "line": 91, + "column": 8 + }, + "end": { + "line": 91, + "column": 9 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 2540, + "end": 2548, + "loc": { + "start": { + "line": 93, + "column": 8 + }, + "end": { + "line": 93, + "column": 16 + } + } + }, { "type": { "label": "name", @@ -54673,17 +54912,170 @@ "postfix": false, "binop": null }, - "value": "lastYDown", - "start": 2501, - "end": 2510, + "value": "setMousedownPick", + "start": 2549, + "end": 2565, "loc": { "start": { - "line": 91, + "line": 93, + "column": 17 + }, + "end": { + "line": 93, + "column": 33 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2565, + "end": 2566, + "loc": { + "start": { + "line": 93, + "column": 33 + }, + "end": { + "line": 93, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2566, + "end": 2567, + "loc": { + "start": { + "line": 93, + "column": 34 + }, + "end": { + "line": 93, + "column": 35 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2568, + "end": 2569, + "loc": { + "start": { + "line": 93, + "column": 36 + }, + "end": { + "line": 93, + "column": 37 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pickController", + "start": 2582, + "end": 2596, + "loc": { + "start": { + "line": 94, "column": 12 }, "end": { - "line": 91, - "column": 21 + "line": 94, + "column": 26 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2596, + "end": 2597, + "loc": { + "start": { + "line": 94, + "column": 26 + }, + "end": { + "line": 94, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pickCursorPos", + "start": 2597, + "end": 2610, + "loc": { + "start": { + "line": 94, + "column": 27 + }, + "end": { + "line": 94, + "column": 40 } } }, @@ -54701,16 +55093,16 @@ "updateContext": null }, "value": "=", - "start": 2511, - "end": 2512, + "start": 2611, + "end": 2612, "loc": { "start": { - "line": 91, - "column": 22 + "line": 94, + "column": 41 }, "end": { - "line": 91, - "column": 23 + "line": 94, + "column": 42 } } }, @@ -54727,16 +55119,16 @@ "binop": null }, "value": "states", - "start": 2513, - "end": 2519, + "start": 2613, + "end": 2619, "loc": { "start": { - "line": 91, - "column": 24 + "line": 94, + "column": 43 }, "end": { - "line": 91, - "column": 30 + "line": 94, + "column": 49 } } }, @@ -54753,16 +55145,16 @@ "binop": null, "updateContext": null }, - "start": 2519, - "end": 2520, + "start": 2619, + "end": 2620, "loc": { "start": { - "line": 91, - "column": 30 + "line": 94, + "column": 49 }, "end": { - "line": 91, - "column": 31 + "line": 94, + "column": 50 } } }, @@ -54779,24 +55171,24 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 2520, - "end": 2536, + "start": 2620, + "end": 2636, "loc": { "start": { - "line": 91, - "column": 31 + "line": 94, + "column": 50 }, "end": { - "line": 91, - "column": 47 + "line": 94, + "column": 66 } } }, { "type": { - "label": "[", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -54805,22 +55197,22 @@ "binop": null, "updateContext": null }, - "start": 2536, - "end": 2537, + "start": 2636, + "end": 2637, "loc": { "start": { - "line": 91, - "column": 47 + "line": 94, + "column": 66 }, "end": { - "line": 91, - "column": 48 + "line": 94, + "column": 67 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -54828,46 +55220,126 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "value": "pickController", + "start": 2650, + "end": 2664, + "loc": { + "start": { + "line": 95, + "column": 12 + }, + "end": { + "line": 95, + "column": 26 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "value": 1, - "start": 2537, - "end": 2538, + "start": 2664, + "end": 2665, "loc": { "start": { - "line": 91, - "column": 48 + "line": 95, + "column": 26 }, "end": { - "line": 91, - "column": 49 + "line": 95, + "column": 27 } } }, { "type": { - "label": "]", + "label": "name", "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "schedulePickSurface", + "start": 2665, + "end": 2684, + "loc": { + "start": { + "line": 95, + "column": 27 + }, + "end": { + "line": 95, + "column": 46 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 2685, + "end": 2686, + "loc": { + "start": { + "line": 95, + "column": 47 + }, + "end": { + "line": 95, + "column": 48 + } + } + }, + { + "type": { + "label": "true", + "keyword": "true", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 2538, - "end": 2539, + "value": "true", + "start": 2687, + "end": 2691, "loc": { "start": { - "line": 91, + "line": 95, "column": 49 }, "end": { - "line": 91, - "column": 50 + "line": 95, + "column": 53 } } }, @@ -54884,24 +55356,24 @@ "binop": null, "updateContext": null }, - "start": 2539, - "end": 2540, + "start": 2691, + "end": 2692, "loc": { "start": { - "line": 91, - "column": 50 + "line": 95, + "column": 53 }, "end": { - "line": 91, - "column": 51 + "line": 95, + "column": 54 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -54909,43 +55381,43 @@ "postfix": false, "binop": null }, - "start": 2549, - "end": 2550, + "value": "pickController", + "start": 2705, + "end": 2719, "loc": { "start": { - "line": 92, - "column": 8 + "line": 96, + "column": 12 }, "end": { - "line": 92, - "column": 9 + "line": 96, + "column": 26 } } }, { "type": { - "label": "function", - "keyword": "function", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "function", - "start": 2560, - "end": 2568, + "start": 2719, + "end": 2720, "loc": { "start": { - "line": 94, - "column": 8 + "line": 96, + "column": 26 }, "end": { - "line": 94, - "column": 16 + "line": 96, + "column": 27 } } }, @@ -54961,16 +55433,16 @@ "postfix": false, "binop": null }, - "value": "setMousedownPick", - "start": 2569, - "end": 2585, + "value": "update", + "start": 2720, + "end": 2726, "loc": { "start": { - "line": 94, - "column": 17 + "line": 96, + "column": 27 }, "end": { - "line": 94, + "line": 96, "column": 33 } } @@ -54987,22 +55459,74 @@ "postfix": false, "binop": null }, - "start": 2585, - "end": 2586, + "start": 2726, + "end": 2727, + "loc": { + "start": { + "line": 96, + "column": 33 + }, + "end": { + "line": 96, + "column": 34 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2727, + "end": 2728, + "loc": { + "start": { + "line": 96, + "column": 34 + }, + "end": { + "line": 96, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 2728, + "end": 2729, "loc": { "start": { - "line": 94, - "column": 33 + "line": 96, + "column": 35 }, "end": { - "line": 94, - "column": 34 + "line": 96, + "column": 36 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -55010,24 +55534,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2586, - "end": 2587, + "value": "if", + "start": 2743, + "end": 2745, "loc": { "start": { - "line": 94, - "column": 34 + "line": 98, + "column": 12 }, "end": { - "line": 94, - "column": 35 + "line": 98, + "column": 14 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -55037,16 +55563,16 @@ "postfix": false, "binop": null }, - "start": 2588, - "end": 2589, + "start": 2746, + "end": 2747, "loc": { "start": { - "line": 94, - "column": 36 + "line": 98, + "column": 15 }, "end": { - "line": 94, - "column": 37 + "line": 98, + "column": 16 } } }, @@ -55063,16 +55589,16 @@ "binop": null }, "value": "pickController", - "start": 2602, - "end": 2616, + "start": 2747, + "end": 2761, "loc": { "start": { - "line": 95, - "column": 12 + "line": 98, + "column": 16 }, "end": { - "line": 95, - "column": 26 + "line": 98, + "column": 30 } } }, @@ -55089,16 +55615,16 @@ "binop": null, "updateContext": null }, - "start": 2616, - "end": 2617, + "start": 2761, + "end": 2762, "loc": { "start": { - "line": 95, - "column": 26 + "line": 98, + "column": 30 }, "end": { - "line": 95, - "column": 27 + "line": 98, + "column": 31 } } }, @@ -55114,44 +55640,44 @@ "postfix": false, "binop": null }, - "value": "pickCursorPos", - "start": 2617, - "end": 2630, + "value": "picked", + "start": 2762, + "end": 2768, "loc": { "start": { - "line": 95, - "column": 27 + "line": 98, + "column": 31 }, "end": { - "line": 95, - "column": 40 + "line": 98, + "column": 37 } } }, { "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": 2631, - "end": 2632, + "value": "&&", + "start": 2769, + "end": 2771, "loc": { "start": { - "line": 95, - "column": 41 + "line": 98, + "column": 38 }, "end": { - "line": 95, - "column": 42 + "line": 98, + "column": 40 } } }, @@ -55167,17 +55693,17 @@ "postfix": false, "binop": null }, - "value": "states", - "start": 2633, - "end": 2639, + "value": "pickController", + "start": 2772, + "end": 2786, "loc": { "start": { - "line": 95, - "column": 43 + "line": 98, + "column": 41 }, "end": { - "line": 95, - "column": 49 + "line": 98, + "column": 55 } } }, @@ -55194,16 +55720,16 @@ "binop": null, "updateContext": null }, - "start": 2639, - "end": 2640, + "start": 2786, + "end": 2787, "loc": { "start": { - "line": 95, - "column": 49 + "line": 98, + "column": 55 }, "end": { - "line": 95, - "column": 50 + "line": 98, + "column": 56 } } }, @@ -55219,23 +55745,23 @@ "postfix": false, "binop": null }, - "value": "pointerCanvasPos", - "start": 2640, - "end": 2656, + "value": "pickedSurface", + "start": 2787, + "end": 2800, "loc": { "start": { - "line": 95, - "column": 50 + "line": 98, + "column": 56 }, "end": { - "line": 95, - "column": 66 + "line": 98, + "column": 69 } } }, { "type": { - "label": ";", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -55243,19 +55769,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "start": 2656, - "end": 2657, + "value": "&&", + "start": 2801, + "end": 2803, "loc": { "start": { - "line": 95, - "column": 66 + "line": 98, + "column": 70 }, "end": { - "line": 95, - "column": 67 + "line": 98, + "column": 72 } } }, @@ -55272,16 +55799,16 @@ "binop": null }, "value": "pickController", - "start": 2670, - "end": 2684, + "start": 2804, + "end": 2818, "loc": { "start": { - "line": 96, - "column": 12 + "line": 98, + "column": 73 }, "end": { - "line": 96, - "column": 26 + "line": 98, + "column": 87 } } }, @@ -55298,16 +55825,16 @@ "binop": null, "updateContext": null }, - "start": 2684, - "end": 2685, + "start": 2818, + "end": 2819, "loc": { "start": { - "line": 96, - "column": 26 + "line": 98, + "column": 87 }, "end": { - "line": 96, - "column": 27 + "line": 98, + "column": 88 } } }, @@ -55323,51 +55850,50 @@ "postfix": false, "binop": null }, - "value": "schedulePickSurface", - "start": 2685, - "end": 2704, + "value": "pickResult", + "start": 2819, + "end": 2829, "loc": { "start": { - "line": 96, - "column": 27 + "line": 98, + "column": 88 }, "end": { - "line": 96, - "column": 46 + "line": 98, + "column": 98 } } }, { "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": 2705, - "end": 2706, + "value": "&&", + "start": 2830, + "end": 2832, "loc": { "start": { - "line": 96, - "column": 47 + "line": 98, + "column": 99 }, "end": { - "line": 96, - "column": 48 + "line": 98, + "column": 101 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -55375,27 +55901,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 2707, - "end": 2711, + "value": "pickController", + "start": 2833, + "end": 2847, "loc": { "start": { - "line": 96, - "column": 49 + "line": 98, + "column": 102 }, "end": { - "line": 96, - "column": 53 + "line": 98, + "column": 116 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -55405,16 +55930,16 @@ "binop": null, "updateContext": null }, - "start": 2711, - "end": 2712, + "start": 2847, + "end": 2848, "loc": { "start": { - "line": 96, - "column": 53 + "line": 98, + "column": 116 }, "end": { - "line": 96, - "column": 54 + "line": 98, + "column": 117 } } }, @@ -55430,17 +55955,17 @@ "postfix": false, "binop": null }, - "value": "pickController", - "start": 2725, - "end": 2739, + "value": "pickResult", + "start": 2848, + "end": 2858, "loc": { "start": { - "line": 97, - "column": 12 + "line": 98, + "column": 117 }, "end": { - "line": 97, - "column": 26 + "line": 98, + "column": 127 } } }, @@ -55457,16 +55982,16 @@ "binop": null, "updateContext": null }, - "start": 2739, - "end": 2740, + "start": 2858, + "end": 2859, "loc": { "start": { - "line": 97, - "column": 26 + "line": 98, + "column": 127 }, "end": { - "line": 97, - "column": 27 + "line": 98, + "column": 128 } } }, @@ -55482,23 +56007,48 @@ "postfix": false, "binop": null }, - "value": "update", - "start": 2740, - "end": 2746, + "value": "worldPos", + "start": 2859, + "end": 2867, "loc": { "start": { - "line": 97, - "column": 27 + "line": 98, + "column": 128 }, "end": { - "line": 97, - "column": 33 + "line": 98, + "column": 136 } } }, { "type": { - "label": "(", + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 2867, + "end": 2868, + "loc": { + "start": { + "line": 98, + "column": 136 + }, + "end": { + "line": 98, + "column": 137 + } + } + }, + { + "type": { + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -55508,24 +56058,24 @@ "postfix": false, "binop": null }, - "start": 2746, - "end": 2747, + "start": 2869, + "end": 2870, "loc": { "start": { - "line": 97, - "column": 33 + "line": 98, + "column": 138 }, "end": { - "line": 97, - "column": 34 + "line": 98, + "column": 139 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55533,51 +56083,53 @@ "postfix": false, "binop": null }, - "start": 2747, - "end": 2748, + "value": "mouseDownPicked", + "start": 2887, + "end": 2902, "loc": { "start": { - "line": 97, - "column": 34 + "line": 99, + "column": 16 }, "end": { - "line": 97, - "column": 35 + "line": 99, + "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": 2748, - "end": 2749, + "value": "=", + "start": 2903, + "end": 2904, "loc": { "start": { - "line": 97, - "column": 35 + "line": 99, + "column": 32 }, "end": { - "line": 97, - "column": 36 + "line": 99, + "column": 33 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "true", + "keyword": "true", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55586,42 +56138,43 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 2763, - "end": 2765, + "value": "true", + "start": 2905, + "end": 2909, "loc": { "start": { "line": 99, - "column": 12 + "column": 34 }, "end": { "line": 99, - "column": 14 + "column": 38 } } }, { "type": { - "label": "(", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2766, - "end": 2767, + "start": 2909, + "end": 2910, "loc": { "start": { "line": 99, - "column": 15 + "column": 38 }, "end": { "line": 99, - "column": 16 + "column": 39 } } }, @@ -55637,16 +56190,16 @@ "postfix": false, "binop": null }, - "value": "pickController", - "start": 2767, - "end": 2781, + "value": "pickedWorldPos", + "start": 2927, + "end": 2941, "loc": { "start": { - "line": 99, + "line": 100, "column": 16 }, "end": { - "line": 99, + "line": 100, "column": 30 } } @@ -55664,15 +56217,15 @@ "binop": null, "updateContext": null }, - "start": 2781, - "end": 2782, + "start": 2941, + "end": 2942, "loc": { "start": { - "line": 99, + "line": 100, "column": 30 }, "end": { - "line": 99, + "line": 100, "column": 31 } } @@ -55689,44 +56242,42 @@ "postfix": false, "binop": null }, - "value": "picked", - "start": 2782, - "end": 2788, + "value": "set", + "start": 2942, + "end": 2945, "loc": { "start": { - "line": 99, + "line": 100, "column": 31 }, "end": { - "line": 99, - "column": 37 + "line": 100, + "column": 34 } } }, { "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": 2789, - "end": 2791, + "start": 2945, + "end": 2946, "loc": { "start": { - "line": 99, - "column": 38 + "line": 100, + "column": 34 }, "end": { - "line": 99, - "column": 40 + "line": 100, + "column": 35 } } }, @@ -55743,16 +56294,16 @@ "binop": null }, "value": "pickController", - "start": 2792, - "end": 2806, + "start": 2946, + "end": 2960, "loc": { "start": { - "line": 99, - "column": 41 + "line": 100, + "column": 35 }, "end": { - "line": 99, - "column": 55 + "line": 100, + "column": 49 } } }, @@ -55769,16 +56320,16 @@ "binop": null, "updateContext": null }, - "start": 2806, - "end": 2807, + "start": 2960, + "end": 2961, "loc": { "start": { - "line": 99, - "column": 55 + "line": 100, + "column": 49 }, "end": { - "line": 99, - "column": 56 + "line": 100, + "column": 50 } } }, @@ -55794,44 +56345,43 @@ "postfix": false, "binop": null }, - "value": "pickedSurface", - "start": 2807, - "end": 2820, + "value": "pickResult", + "start": 2961, + "end": 2971, "loc": { "start": { - "line": 99, - "column": 56 + "line": 100, + "column": 50 }, "end": { - "line": 99, - "column": 69 + "line": 100, + "column": 60 } } }, { "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": 2821, - "end": 2823, + "start": 2971, + "end": 2972, "loc": { "start": { - "line": 99, - "column": 70 + "line": 100, + "column": 60 }, "end": { - "line": 99, - "column": 72 + "line": 100, + "column": 61 } } }, @@ -55847,23 +56397,23 @@ "postfix": false, "binop": null }, - "value": "pickController", - "start": 2824, - "end": 2838, + "value": "worldPos", + "start": 2972, + "end": 2980, "loc": { "start": { - "line": 99, - "column": 73 + "line": 100, + "column": 61 }, "end": { - "line": 99, - "column": 87 + "line": 100, + "column": 69 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -55871,27 +56421,52 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "start": 2980, + "end": 2981, + "loc": { + "start": { + "line": 100, + "column": 69 + }, + "end": { + "line": 100, + "column": 70 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "start": 2838, - "end": 2839, + "start": 2981, + "end": 2982, "loc": { "start": { - "line": 99, - "column": 87 + "line": 100, + "column": 70 }, "end": { - "line": 99, - "column": 88 + "line": 100, + "column": 71 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55899,23 +56474,23 @@ "postfix": false, "binop": null }, - "value": "pickResult", - "start": 2839, - "end": 2849, + "start": 2995, + "end": 2996, "loc": { "start": { - "line": 99, - "column": 88 + "line": 101, + "column": 12 }, "end": { - "line": 99, - "column": 98 + "line": 101, + "column": 13 } } }, { "type": { - "label": "&&", + "label": "else", + "keyword": "else", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -55923,20 +56498,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 2850, - "end": 2852, + "value": "else", + "start": 2997, + "end": 3001, "loc": { "start": { - "line": 99, - "column": 99 + "line": 101, + "column": 14 }, "end": { - "line": 99, - "column": 101 + "line": 101, + "column": 18 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3002, + "end": 3003, + "loc": { + "start": { + "line": 101, + "column": 19 + }, + "end": { + "line": 101, + "column": 20 } } }, @@ -55952,49 +56552,51 @@ "postfix": false, "binop": null }, - "value": "pickController", - "start": 2853, - "end": 2867, + "value": "mouseDownPicked", + "start": 3020, + "end": 3035, "loc": { "start": { - "line": 99, - "column": 102 + "line": 102, + "column": 16 }, "end": { - "line": 99, - "column": 116 + "line": 102, + "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": 2867, - "end": 2868, + "value": "=", + "start": 3036, + "end": 3037, "loc": { "start": { - "line": 99, - "column": 116 + "line": 102, + "column": 32 }, "end": { - "line": 99, - "column": 117 + "line": 102, + "column": 33 } } }, { "type": { - "label": "name", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -56002,26 +56604,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "pickResult", - "start": 2868, - "end": 2878, + "value": "false", + "start": 3038, + "end": 3043, "loc": { "start": { - "line": 99, - "column": 117 + "line": 102, + "column": 34 }, "end": { - "line": 99, - "column": 127 + "line": 102, + "column": 39 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -56031,24 +56634,49 @@ "binop": null, "updateContext": null }, - "start": 2878, - "end": 2879, + "start": 3043, + "end": 3044, "loc": { "start": { - "line": 99, - "column": 127 + "line": 102, + "column": 39 }, "end": { - "line": 99, - "column": 128 + "line": 102, + "column": 40 } } }, { "type": { - "label": "name", + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 3057, + "end": 3058, + "loc": { + "start": { + "line": 103, + "column": 12 + }, + "end": { + "line": 103, + "column": 13 + } + } + }, + { + "type": { + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56056,25 +56684,24 @@ "postfix": false, "binop": null }, - "value": "worldPos", - "start": 2879, - "end": 2887, + "start": 3067, + "end": 3068, "loc": { "start": { - "line": 99, - "column": 128 + "line": 104, + "column": 8 }, "end": { - "line": 99, - "column": 136 + "line": 104, + "column": 9 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56082,41 +56709,43 @@ "postfix": false, "binop": null }, - "start": 2887, - "end": 2888, + "value": "canvas", + "start": 3078, + "end": 3084, "loc": { "start": { - "line": 99, - "column": 136 + "line": 106, + "column": 8 }, "end": { - "line": 99, - "column": 137 + "line": 106, + "column": 14 } } }, { "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": 2889, - "end": 2890, + "start": 3084, + "end": 3085, "loc": { "start": { - "line": 99, - "column": 138 + "line": 106, + "column": 14 }, "end": { - "line": 99, - "column": 139 + "line": 106, + "column": 15 } } }, @@ -56132,51 +56761,48 @@ "postfix": false, "binop": null }, - "value": "mouseDownPicked", - "start": 2907, - "end": 2922, + "value": "addEventListener", + "start": 3085, + "end": 3101, "loc": { "start": { - "line": 100, - "column": 16 + "line": 106, + "column": 15 }, "end": { - "line": 100, + "line": 106, "column": 31 } } }, { "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": 2923, - "end": 2924, + "start": 3101, + "end": 3102, "loc": { "start": { - "line": 100, - "column": 32 + "line": 106, + "column": 31 }, "end": { - "line": 100, - "column": 33 + "line": 106, + "column": 32 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -56187,23 +56813,23 @@ "binop": null, "updateContext": null }, - "value": "true", - "start": 2925, - "end": 2929, + "value": "mousedown", + "start": 3102, + "end": 3113, "loc": { "start": { - "line": 100, - "column": 34 + "line": 106, + "column": 32 }, "end": { - "line": 100, - "column": 38 + "line": 106, + "column": 43 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -56214,22 +56840,23 @@ "binop": null, "updateContext": null }, - "start": 2929, - "end": 2930, + "start": 3113, + "end": 3114, "loc": { "start": { - "line": 100, - "column": 38 + "line": 106, + "column": 43 }, "end": { - "line": 100, - "column": 39 + "line": 106, + "column": 44 } } }, { "type": { - "label": "name", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -56237,19 +56864,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "pickedWorldPos", - "start": 2947, - "end": 2961, + "value": "this", + "start": 3115, + "end": 3119, "loc": { "start": { - "line": 101, - "column": 16 + "line": 106, + "column": 45 }, "end": { - "line": 101, - "column": 30 + "line": 106, + "column": 49 } } }, @@ -56266,16 +56894,16 @@ "binop": null, "updateContext": null }, - "start": 2961, - "end": 2962, + "start": 3119, + "end": 3120, "loc": { "start": { - "line": 101, - "column": 30 + "line": 106, + "column": 49 }, "end": { - "line": 101, - "column": 31 + "line": 106, + "column": 50 } } }, @@ -56291,49 +56919,51 @@ "postfix": false, "binop": null }, - "value": "set", - "start": 2962, - "end": 2965, + "value": "_mouseDownHandler", + "start": 3120, + "end": 3137, "loc": { "start": { - "line": 101, - "column": 31 + "line": 106, + "column": 50 }, "end": { - "line": 101, - "column": 34 + "line": 106, + "column": 67 } } }, { "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": 2965, - "end": 2966, + "value": "=", + "start": 3138, + "end": 3139, "loc": { "start": { - "line": 101, - "column": 34 + "line": 106, + "column": 68 }, "end": { - "line": 101, - "column": 35 + "line": 106, + "column": 69 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -56342,51 +56972,50 @@ "postfix": false, "binop": null }, - "value": "pickController", - "start": 2966, - "end": 2980, + "start": 3140, + "end": 3141, "loc": { "start": { - "line": 101, - "column": 35 + "line": 106, + "column": 70 }, "end": { - "line": 101, - "column": 49 + "line": 106, + "column": 71 } } }, { "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": 2980, - "end": 2981, + "value": "e", + "start": 3141, + "end": 3142, "loc": { "start": { - "line": 101, - "column": 49 + "line": 106, + "column": 71 }, "end": { - "line": 101, - "column": 50 + "line": 106, + "column": 72 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56394,24 +57023,23 @@ "postfix": false, "binop": null }, - "value": "pickResult", - "start": 2981, - "end": 2991, + "start": 3142, + "end": 3143, "loc": { "start": { - "line": 101, - "column": 50 + "line": 106, + "column": 72 }, "end": { - "line": 101, - "column": 60 + "line": 106, + "column": 73 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=>", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -56421,23 +57049,23 @@ "binop": null, "updateContext": null }, - "start": 2991, - "end": 2992, + "start": 3144, + "end": 3146, "loc": { "start": { - "line": 101, - "column": 60 + "line": 106, + "column": 74 }, "end": { - "line": 101, - "column": 61 + "line": 106, + "column": 76 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -56446,23 +57074,23 @@ "postfix": false, "binop": null }, - "value": "worldPos", - "start": 2992, - "end": 3000, + "start": 3147, + "end": 3148, "loc": { "start": { - "line": 101, - "column": 61 + "line": 106, + "column": 77 }, "end": { - "line": 101, - "column": 69 + "line": 106, + "column": 78 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -56470,52 +57098,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 3000, - "end": 3001, - "loc": { - "start": { - "line": 101, - "column": 69 - }, - "end": { - "line": 101, - "column": 70 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null, "updateContext": null }, - "start": 3001, - "end": 3002, + "value": "if", + "start": 3162, + "end": 3164, "loc": { "start": { - "line": 101, - "column": 70 + "line": 108, + "column": 12 }, "end": { - "line": 101, - "column": 71 + "line": 108, + "column": 14 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56523,50 +57127,49 @@ "postfix": false, "binop": null }, - "start": 3015, - "end": 3016, + "start": 3165, + "end": 3166, "loc": { "start": { - "line": 102, - "column": 12 + "line": 108, + "column": 15 }, "end": { - "line": 102, - "column": 13 + "line": 108, + "column": 16 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": "else", - "start": 3017, - "end": 3021, + "value": "!", + "start": 3166, + "end": 3167, "loc": { "start": { - "line": 102, - "column": 14 + "line": 108, + "column": 16 }, "end": { - "line": 102, - "column": 18 + "line": 108, + "column": 17 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -56576,16 +57179,16 @@ "postfix": false, "binop": null }, - "start": 3022, - "end": 3023, + "start": 3167, + "end": 3168, "loc": { "start": { - "line": 102, - "column": 19 + "line": 108, + "column": 17 }, "end": { - "line": 102, - "column": 20 + "line": 108, + "column": 18 } } }, @@ -56601,51 +57204,49 @@ "postfix": false, "binop": null }, - "value": "mouseDownPicked", - "start": 3040, - "end": 3055, + "value": "configs", + "start": 3168, + "end": 3175, "loc": { "start": { - "line": 103, - "column": 16 + "line": 108, + "column": 18 }, "end": { - "line": 103, - "column": 31 + "line": 108, + "column": 25 } } }, { "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": 3056, - "end": 3057, + "start": 3175, + "end": 3176, "loc": { "start": { - "line": 103, - "column": 32 + "line": 108, + "column": 25 }, "end": { - "line": 103, - "column": 33 + "line": 108, + "column": 26 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -56653,26 +57254,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 3058, - "end": 3063, + "value": "active", + "start": 3176, + "end": 3182, "loc": { "start": { - "line": 103, - "column": 34 + "line": 108, + "column": 26 }, "end": { - "line": 103, - "column": 39 + "line": 108, + "column": 32 } } }, { "type": { - "label": ";", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -56680,27 +57280,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "start": 3063, - "end": 3064, + "value": "&&", + "start": 3183, + "end": 3185, "loc": { "start": { - "line": 103, - "column": 39 + "line": 108, + "column": 33 }, "end": { - "line": 103, - "column": 40 + "line": 108, + "column": 35 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56708,22 +57309,23 @@ "postfix": false, "binop": null }, - "start": 3077, - "end": 3078, + "value": "configs", + "start": 3186, + "end": 3193, "loc": { "start": { - "line": 104, - "column": 12 + "line": 108, + "column": 36 }, "end": { - "line": 104, - "column": 13 + "line": 108, + "column": 43 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -56731,18 +57333,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3087, - "end": 3088, + "start": 3193, + "end": 3194, "loc": { "start": { - "line": 105, - "column": 8 + "line": 108, + "column": 43 }, "end": { - "line": 105, - "column": 9 + "line": 108, + "column": 44 } } }, @@ -56758,23 +57361,23 @@ "postfix": false, "binop": null }, - "value": "canvas", - "start": 3098, - "end": 3104, + "value": "pointerEnabled", + "start": 3194, + "end": 3208, "loc": { "start": { - "line": 107, - "column": 8 + "line": 108, + "column": 44 }, "end": { - "line": 107, - "column": 14 + "line": 108, + "column": 58 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -56782,27 +57385,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3104, - "end": 3105, + "start": 3208, + "end": 3209, "loc": { "start": { - "line": 107, - "column": 14 + "line": 108, + "column": 58 }, "end": { - "line": 107, - "column": 15 + "line": 108, + "column": 59 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56810,23 +57412,22 @@ "postfix": false, "binop": null }, - "value": "addEventListener", - "start": 3105, - "end": 3121, + "start": 3209, + "end": 3210, "loc": { "start": { - "line": 107, - "column": 15 + "line": 108, + "column": 59 }, "end": { - "line": 107, - "column": 31 + "line": 108, + "column": 60 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -56836,24 +57437,25 @@ "postfix": false, "binop": null }, - "start": 3121, - "end": 3122, + "start": 3211, + "end": 3212, "loc": { "start": { - "line": 107, - "column": 31 + "line": 108, + "column": 61 }, "end": { - "line": 107, - "column": 32 + "line": 108, + "column": 62 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56862,23 +57464,23 @@ "binop": null, "updateContext": null }, - "value": "mousedown", - "start": 3122, - "end": 3133, + "value": "return", + "start": 3229, + "end": 3235, "loc": { "start": { - "line": 107, - "column": 32 + "line": 109, + "column": 16 }, "end": { - "line": 107, - "column": 43 + "line": 109, + "column": 22 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -56889,50 +57491,48 @@ "binop": null, "updateContext": null }, - "start": 3133, - "end": 3134, + "start": 3235, + "end": 3236, "loc": { "start": { - "line": 107, - "column": 43 + "line": 109, + "column": 22 }, "end": { - "line": 107, - "column": 44 + "line": 109, + "column": 23 } } }, { "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": 3135, - "end": 3139, + "start": 3249, + "end": 3250, "loc": { "start": { - "line": 107, - "column": 45 + "line": 110, + "column": 12 }, "end": { - "line": 107, - "column": 49 + "line": 110, + "column": 13 } } }, { "type": { - "label": ".", + "label": "switch", + "keyword": "switch", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -56943,23 +57543,24 @@ "binop": null, "updateContext": null }, - "start": 3139, - "end": 3140, + "value": "switch", + "start": 3264, + "end": 3270, "loc": { "start": { - "line": 107, - "column": 49 + "line": 112, + "column": 12 }, "end": { - "line": 107, - "column": 50 + "line": 112, + "column": 18 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -56968,69 +57569,68 @@ "postfix": false, "binop": null }, - "value": "_mouseDownHandler", - "start": 3140, - "end": 3157, + "start": 3271, + "end": 3272, "loc": { "start": { - "line": 107, - "column": 50 + "line": 112, + "column": 19 }, "end": { - "line": 107, - "column": 67 + "line": 112, + "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": 3158, - "end": 3159, + "value": "e", + "start": 3272, + "end": 3273, "loc": { "start": { - "line": 107, - "column": 68 + "line": 112, + "column": 20 }, "end": { - "line": 107, - "column": 69 + "line": 112, + "column": 21 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3160, - "end": 3161, + "start": 3273, + "end": 3274, "loc": { "start": { - "line": 107, - "column": 70 + "line": 112, + "column": 21 }, "end": { - "line": 107, - "column": 71 + "line": 112, + "column": 22 } } }, @@ -57046,17 +57646,17 @@ "postfix": false, "binop": null }, - "value": "e", - "start": 3161, - "end": 3162, + "value": "which", + "start": 3274, + "end": 3279, "loc": { "start": { - "line": 107, - "column": 71 + "line": 112, + "column": 22 }, "end": { - "line": 107, - "column": 72 + "line": 112, + "column": 27 } } }, @@ -57072,76 +57672,77 @@ "postfix": false, "binop": null }, - "start": 3162, - "end": 3163, + "start": 3279, + "end": 3280, "loc": { "start": { - "line": 107, - "column": 72 + "line": 112, + "column": 27 }, "end": { - "line": 107, - "column": 73 + "line": 112, + "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": 3164, - "end": 3166, + "start": 3281, + "end": 3282, "loc": { "start": { - "line": 107, - "column": 74 + "line": 112, + "column": 29 }, "end": { - "line": 107, - "column": 76 + "line": 112, + "column": 30 } } }, { "type": { - "label": "{", + "label": "case", + "keyword": "case", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3167, - "end": 3168, + "value": "case", + "start": 3300, + "end": 3304, "loc": { "start": { - "line": 107, - "column": 77 + "line": 114, + "column": 16 }, "end": { - "line": 107, - "column": 78 + "line": 114, + "column": 20 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57150,69 +57751,87 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 3182, - "end": 3184, + "value": 1, + "start": 3305, + "end": 3306, "loc": { "start": { - "line": 109, - "column": 12 + "line": 114, + "column": 21 }, "end": { - "line": 109, - "column": 14 + "line": 114, + "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": 3185, - "end": 3186, + "start": 3306, + "end": 3307, + "loc": { + "start": { + "line": 114, + "column": 22 + }, + "end": { + "line": 114, + "column": 23 + } + } + }, + { + "type": "CommentLine", + "value": " Left button", + "start": 3308, + "end": 3322, "loc": { "start": { - "line": 109, - "column": 15 + "line": 114, + "column": 24 }, "end": { - "line": 109, - "column": 16 + "line": 114, + "column": 38 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 3186, - "end": 3187, + "value": "if", + "start": 3344, + "end": 3346, "loc": { "start": { - "line": 109, - "column": 16 + "line": 116, + "column": 20 }, "end": { - "line": 109, - "column": 17 + "line": 116, + "column": 22 } } }, @@ -57228,16 +57847,16 @@ "postfix": false, "binop": null }, - "start": 3187, - "end": 3188, + "start": 3347, + "end": 3348, "loc": { "start": { - "line": 109, - "column": 17 + "line": 116, + "column": 23 }, "end": { - "line": 109, - "column": 18 + "line": 116, + "column": 24 } } }, @@ -57253,25 +57872,25 @@ "postfix": false, "binop": null }, - "value": "configs", - "start": 3188, - "end": 3195, + "value": "keyDown", + "start": 3348, + "end": 3355, "loc": { "start": { - "line": 109, - "column": 18 + "line": 116, + "column": 24 }, "end": { - "line": 109, - "column": 25 + "line": 116, + "column": 31 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57280,16 +57899,16 @@ "binop": null, "updateContext": null }, - "start": 3195, - "end": 3196, + "start": 3355, + "end": 3356, "loc": { "start": { - "line": 109, - "column": 25 + "line": 116, + "column": 31 }, "end": { - "line": 109, - "column": 26 + "line": 116, + "column": 32 } } }, @@ -57305,44 +57924,43 @@ "postfix": false, "binop": null }, - "value": "active", - "start": 3196, - "end": 3202, + "value": "scene", + "start": 3356, + "end": 3361, "loc": { "start": { - "line": 109, - "column": 26 + "line": 116, + "column": 32 }, "end": { - "line": 109, - "column": 32 + "line": 116, + "column": 37 } } }, { "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": 3203, - "end": 3205, + "start": 3361, + "end": 3362, "loc": { "start": { - "line": 109, - "column": 33 + "line": 116, + "column": 37 }, "end": { - "line": 109, - "column": 35 + "line": 116, + "column": 38 } } }, @@ -57358,16 +57976,16 @@ "postfix": false, "binop": null }, - "value": "configs", - "start": 3206, - "end": 3213, + "value": "input", + "start": 3362, + "end": 3367, "loc": { "start": { - "line": 109, - "column": 36 + "line": 116, + "column": 38 }, "end": { - "line": 109, + "line": 116, "column": 43 } } @@ -57385,15 +58003,15 @@ "binop": null, "updateContext": null }, - "start": 3213, - "end": 3214, + "start": 3367, + "end": 3368, "loc": { "start": { - "line": 109, + "line": 116, "column": 43 }, "end": { - "line": 109, + "line": 116, "column": 44 } } @@ -57410,23 +58028,23 @@ "postfix": false, "binop": null }, - "value": "pointerEnabled", - "start": 3214, - "end": 3228, + "value": "KEY_SHIFT", + "start": 3368, + "end": 3377, "loc": { "start": { - "line": 109, + "line": 116, "column": 44 }, "end": { - "line": 109, - "column": 58 + "line": 116, + "column": 53 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -57434,50 +58052,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3228, - "end": 3229, + "start": 3377, + "end": 3378, "loc": { "start": { - "line": 109, - "column": 58 + "line": 116, + "column": 53 }, "end": { - "line": 109, - "column": 59 + "line": 116, + "column": 54 } } }, { "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": 3229, - "end": 3230, + "value": "||", + "start": 3379, + "end": 3381, "loc": { "start": { - "line": 109, - "column": 59 + "line": 116, + "column": 55 }, "end": { - "line": 109, - "column": 60 + "line": 116, + "column": 57 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -57486,24 +58107,24 @@ "postfix": false, "binop": null }, - "start": 3231, - "end": 3232, + "value": "configs", + "start": 3382, + "end": 3389, "loc": { "start": { - "line": 109, - "column": 61 + "line": 116, + "column": 58 }, "end": { - "line": 109, - "column": 62 + "line": 116, + "column": 65 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -57513,49 +58134,48 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 3249, - "end": 3255, + "start": 3389, + "end": 3390, "loc": { "start": { - "line": 110, - "column": 16 + "line": 116, + "column": 65 }, "end": { - "line": 110, - "column": 22 + "line": 116, + "column": 66 } } }, { "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": 3255, - "end": 3256, + "value": "planView", + "start": 3390, + "end": 3398, "loc": { "start": { - "line": 110, - "column": 22 + "line": 116, + "column": 66 }, "end": { - "line": 110, - "column": 23 + "line": 116, + "column": 74 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -57565,70 +58185,41 @@ "postfix": false, "binop": null }, - "start": 3269, - "end": 3270, + "start": 3398, + "end": 3399, "loc": { "start": { - "line": 111, - "column": 12 + "line": 116, + "column": 74 }, "end": { - "line": 111, - "column": 13 + "line": 116, + "column": 75 } } }, { "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 - }, - "value": "this", - "start": 3284, - "end": 3288, - "loc": { - "start": { - "line": 113, - "column": 12 - }, - "end": { - "line": 113, - "column": 16 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3288, - "end": 3289, + "start": 3400, + "end": 3401, "loc": { "start": { - "line": 113, - "column": 16 + "line": 116, + "column": 76 }, "end": { - "line": 113, - "column": 17 + "line": 116, + "column": 77 } } }, @@ -57644,17 +58235,17 @@ "postfix": false, "binop": null }, - "value": "_down", - "start": 3289, - "end": 3294, + "value": "mouseDownLeft", + "start": 3427, + "end": 3440, "loc": { "start": { - "line": 113, - "column": 17 + "line": 118, + "column": 24 }, "end": { - "line": 113, - "column": 22 + "line": 118, + "column": 37 } } }, @@ -57672,16 +58263,16 @@ "updateContext": null }, "value": "=", - "start": 3295, - "end": 3296, + "start": 3441, + "end": 3442, "loc": { "start": { - "line": 113, - "column": 23 + "line": 118, + "column": 38 }, "end": { - "line": 113, - "column": 24 + "line": 118, + "column": 39 } } }, @@ -57700,16 +58291,16 @@ "updateContext": null }, "value": "true", - "start": 3297, - "end": 3301, + "start": 3443, + "end": 3447, "loc": { "start": { - "line": 113, - "column": 25 + "line": 118, + "column": 40 }, "end": { - "line": 113, - "column": 29 + "line": 118, + "column": 44 } } }, @@ -57726,44 +58317,42 @@ "binop": null, "updateContext": null }, - "start": 3301, - "end": 3302, + "start": 3447, + "end": 3448, "loc": { "start": { - "line": 113, - "column": 29 + "line": 118, + "column": 44 }, "end": { - "line": 113, - "column": 30 + "line": 118, + "column": 45 } } }, { "type": { - "label": "switch", - "keyword": "switch", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "switch", - "start": 3316, - "end": 3322, + "value": "setMousedownState", + "start": 3474, + "end": 3491, "loc": { "start": { - "line": 115, - "column": 12 + "line": 120, + "column": 24 }, "end": { - "line": 115, - "column": 18 + "line": 120, + "column": 41 } } }, @@ -57779,24 +58368,24 @@ "postfix": false, "binop": null }, - "start": 3323, - "end": 3324, + "start": 3491, + "end": 3492, "loc": { "start": { - "line": 115, - "column": 19 + "line": 120, + "column": 41 }, "end": { - "line": 115, - "column": 20 + "line": 120, + "column": 42 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57804,24 +58393,23 @@ "postfix": false, "binop": null }, - "value": "e", - "start": 3324, - "end": 3325, + "start": 3492, + "end": 3493, "loc": { "start": { - "line": 115, - "column": 20 + "line": 120, + "column": 42 }, "end": { - "line": 115, - "column": 21 + "line": 120, + "column": 43 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -57831,24 +58419,24 @@ "binop": null, "updateContext": null }, - "start": 3325, - "end": 3326, + "start": 3493, + "end": 3494, "loc": { "start": { - "line": 115, - "column": 21 + "line": 120, + "column": 43 }, "end": { - "line": 115, - "column": 22 + "line": 120, + "column": 44 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57856,42 +58444,44 @@ "postfix": false, "binop": null }, - "value": "which", - "start": 3326, - "end": 3331, + "start": 3516, + "end": 3517, "loc": { "start": { - "line": 115, - "column": 22 + "line": 122, + "column": 20 }, "end": { - "line": 115, - "column": 27 + "line": 122, + "column": 21 } } }, { "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": 3331, - "end": 3332, + "value": "else", + "start": 3518, + "end": 3522, "loc": { "start": { - "line": 115, - "column": 27 + "line": 122, + "column": 22 }, "end": { - "line": 115, - "column": 28 + "line": 122, + "column": 26 } } }, @@ -57907,79 +58497,78 @@ "postfix": false, "binop": null }, - "start": 3333, - "end": 3334, + "start": 3523, + "end": 3524, "loc": { "start": { - "line": 115, - "column": 29 + "line": 122, + "column": 27 }, "end": { - "line": 115, - "column": 30 + "line": 122, + "column": 28 } } }, { "type": { - "label": "case", - "keyword": "case", - "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": "case", - "start": 3352, - "end": 3356, + "value": "mouseDownLeft", + "start": 3550, + "end": 3563, "loc": { "start": { - "line": 117, - "column": 16 + "line": 124, + "column": 24 }, "end": { - "line": 117, - "column": 20 + "line": 124, + "column": 37 } } }, { "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, + "label": "=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": 1, - "start": 3357, - "end": 3358, + "value": "=", + "start": 3564, + "end": 3565, "loc": { "start": { - "line": 117, - "column": 21 + "line": 124, + "column": 38 }, "end": { - "line": 117, - "column": 22 + "line": 124, + "column": 39 } } }, { "type": { - "label": ":", - "beforeExpr": true, - "startsExpr": false, + "label": "true", + "keyword": "true", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57988,40 +58577,24 @@ "binop": null, "updateContext": null }, - "start": 3358, - "end": 3359, - "loc": { - "start": { - "line": 117, - "column": 22 - }, - "end": { - "line": 117, - "column": 23 - } - } - }, - { - "type": "CommentLine", - "value": " Left button", - "start": 3360, - "end": 3374, + "value": "true", + "start": 3566, + "end": 3570, "loc": { "start": { - "line": 117, - "column": 24 + "line": 124, + "column": 40 }, "end": { - "line": 117, - "column": 38 + "line": 124, + "column": 44 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -58031,24 +58604,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 3396, - "end": 3398, + "start": 3570, + "end": 3571, "loc": { "start": { - "line": 119, - "column": 20 + "line": 124, + "column": 44 }, "end": { - "line": 119, - "column": 22 + "line": 124, + "column": 45 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -58057,23 +58629,24 @@ "postfix": false, "binop": null }, - "start": 3399, - "end": 3400, + "value": "setMousedownState", + "start": 3597, + "end": 3614, "loc": { "start": { - "line": 119, - "column": 23 + "line": 126, + "column": 24 }, "end": { - "line": 119, - "column": 24 + "line": 126, + "column": 41 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -58082,24 +58655,24 @@ "postfix": false, "binop": null }, - "value": "keyDown", - "start": 3400, - "end": 3407, + "start": 3614, + "end": 3615, "loc": { "start": { - "line": 119, - "column": 24 + "line": 126, + "column": 41 }, "end": { - "line": 119, - "column": 31 + "line": 126, + "column": 42 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "false", + "keyword": "false", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -58109,24 +58682,25 @@ "binop": null, "updateContext": null }, - "start": 3407, - "end": 3408, + "value": "false", + "start": 3615, + "end": 3620, "loc": { "start": { - "line": 119, - "column": 31 + "line": 126, + "column": 42 }, "end": { - "line": 119, - "column": 32 + "line": 126, + "column": 47 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -58134,24 +58708,23 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 3408, - "end": 3413, + "start": 3620, + "end": 3621, "loc": { "start": { - "line": 119, - "column": 32 + "line": 126, + "column": 47 }, "end": { - "line": 119, - "column": 37 + "line": 126, + "column": 48 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -58161,24 +58734,24 @@ "binop": null, "updateContext": null }, - "start": 3413, - "end": 3414, + "start": 3621, + "end": 3622, "loc": { "start": { - "line": 119, - "column": 37 + "line": 126, + "column": 48 }, "end": { - "line": 119, - "column": 38 + "line": 126, + "column": 49 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -58186,23 +58759,23 @@ "postfix": false, "binop": null }, - "value": "input", - "start": 3414, - "end": 3419, + "start": 3643, + "end": 3644, "loc": { "start": { - "line": 119, - "column": 38 + "line": 127, + "column": 20 }, "end": { - "line": 119, - "column": 43 + "line": 127, + "column": 21 } } }, { "type": { - "label": ".", + "label": "break", + "keyword": "break", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -58213,49 +58786,51 @@ "binop": null, "updateContext": null }, - "start": 3419, - "end": 3420, + "value": "break", + "start": 3666, + "end": 3671, "loc": { "start": { - "line": 119, - "column": 43 + "line": 129, + "column": 20 }, "end": { - "line": 119, - "column": 44 + "line": 129, + "column": 25 } } }, { "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": "KEY_SHIFT", - "start": 3420, - "end": 3429, + "start": 3671, + "end": 3672, "loc": { "start": { - "line": 119, - "column": 44 + "line": 129, + "column": 25 }, "end": { - "line": 119, - "column": 53 + "line": 129, + "column": 26 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": "case", + "keyword": "case", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -58265,171 +58840,193 @@ "binop": null, "updateContext": null }, - "start": 3429, - "end": 3430, + "value": "case", + "start": 3690, + "end": 3694, "loc": { "start": { - "line": 119, - "column": 53 + "line": 131, + "column": 16 }, "end": { - "line": 119, - "column": 54 + "line": 131, + "column": 20 } } }, { "type": { - "label": "||", - "beforeExpr": true, - "startsExpr": false, + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 3431, - "end": 3433, + "value": 2, + "start": 3695, + "end": 3696, "loc": { "start": { - "line": 119, - "column": 55 + "line": 131, + "column": 21 }, "end": { - "line": 119, - "column": 57 + "line": 131, + "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": "configs", - "start": 3434, - "end": 3441, + "start": 3696, + "end": 3697, "loc": { "start": { - "line": 119, - "column": 58 + "line": 131, + "column": 22 }, "end": { - "line": 119, - "column": 65 + "line": 131, + "column": 23 + } + } + }, + { + "type": "CommentLine", + "value": " Middle/both buttons", + "start": 3698, + "end": 3720, + "loc": { + "start": { + "line": 131, + "column": 24 + }, + "end": { + "line": 131, + "column": 46 } } }, { "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": 3441, - "end": 3442, + "value": "mouseDownMiddle", + "start": 3742, + "end": 3757, "loc": { "start": { - "line": 119, - "column": 65 + "line": 133, + "column": 20 }, "end": { - "line": 119, - "column": 66 + "line": 133, + "column": 35 } } }, { "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": "planView", - "start": 3442, - "end": 3450, + "value": "=", + "start": 3758, + "end": 3759, "loc": { "start": { - "line": 119, - "column": 66 + "line": 133, + "column": 36 }, "end": { - "line": 119, - "column": 74 + "line": 133, + "column": 37 } } }, { "type": { - "label": ")", + "label": "true", + "keyword": "true", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3450, - "end": 3451, + "value": "true", + "start": 3760, + "end": 3764, "loc": { "start": { - "line": 119, - "column": 74 + "line": 133, + "column": 38 }, "end": { - "line": 119, - "column": 75 + "line": 133, + "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": 3452, - "end": 3453, + "start": 3764, + "end": 3765, "loc": { "start": { - "line": 119, - "column": 76 + "line": 133, + "column": 42 }, "end": { - "line": 119, - "column": 77 + "line": 133, + "column": 43 } } }, @@ -58446,16 +59043,16 @@ "binop": null }, "value": "setMousedownState", - "start": 3479, - "end": 3496, + "start": 3787, + "end": 3804, "loc": { "start": { - "line": 121, - "column": 24 + "line": 135, + "column": 20 }, "end": { - "line": 121, - "column": 41 + "line": 135, + "column": 37 } } }, @@ -58471,16 +59068,16 @@ "postfix": false, "binop": null }, - "start": 3496, - "end": 3497, + "start": 3804, + "end": 3805, "loc": { "start": { - "line": 121, - "column": 41 + "line": 135, + "column": 37 }, "end": { - "line": 121, - "column": 42 + "line": 135, + "column": 38 } } }, @@ -58496,16 +59093,16 @@ "postfix": false, "binop": null }, - "start": 3497, - "end": 3498, + "start": 3805, + "end": 3806, "loc": { "start": { - "line": 121, - "column": 42 + "line": 135, + "column": 38 }, "end": { - "line": 121, - "column": 43 + "line": 135, + "column": 39 } } }, @@ -58522,22 +59119,23 @@ "binop": null, "updateContext": null }, - "start": 3498, - "end": 3499, + "start": 3806, + "end": 3807, "loc": { "start": { - "line": 121, - "column": 43 + "line": 135, + "column": 39 }, "end": { - "line": 121, - "column": 44 + "line": 135, + "column": 40 } } }, { "type": { - "label": "}", + "label": "break", + "keyword": "break", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -58545,25 +59143,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3521, - "end": 3522, + "value": "break", + "start": 3829, + "end": 3834, "loc": { "start": { - "line": 123, + "line": 137, "column": 20 }, "end": { - "line": 123, - "column": 21 + "line": 137, + "column": 25 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -58574,48 +59173,50 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 3523, - "end": 3527, + "start": 3834, + "end": 3835, "loc": { "start": { - "line": 123, - "column": 22 + "line": 137, + "column": 25 }, "end": { - "line": 123, + "line": 137, "column": 26 } } }, { "type": { - "label": "{", + "label": "case", + "keyword": "case", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3528, - "end": 3529, + "value": "case", + "start": 3853, + "end": 3857, "loc": { "start": { - "line": 123, - "column": 27 + "line": 139, + "column": 16 }, "end": { - "line": 123, - "column": 28 + "line": 139, + "column": 20 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -58623,53 +59224,68 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "mouseDownLeft", - "start": 3555, - "end": 3568, + "value": 3, + "start": 3858, + "end": 3859, "loc": { "start": { - "line": 125, - "column": 24 + "line": 139, + "column": 21 }, "end": { - "line": 125, - "column": 37 + "line": 139, + "column": 22 } } }, { "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": 3569, - "end": 3570, + "start": 3859, + "end": 3860, "loc": { "start": { - "line": 125, - "column": 38 + "line": 139, + "column": 22 + }, + "end": { + "line": 139, + "column": 23 + } + } + }, + { + "type": "CommentLine", + "value": " Right button", + "start": 3861, + "end": 3876, + "loc": { + "start": { + "line": 139, + "column": 24 }, "end": { - "line": 125, + "line": 139, "column": 39 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -58677,52 +59293,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 3571, - "end": 3575, + "value": "mouseDownRight", + "start": 3898, + "end": 3912, "loc": { "start": { - "line": 125, - "column": 40 + "line": 141, + "column": 20 }, "end": { - "line": 125, - "column": 44 + "line": 141, + "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": 3575, - "end": 3576, + "value": "=", + "start": 3913, + "end": 3914, "loc": { "start": { - "line": 125, - "column": 44 + "line": 141, + "column": 35 }, "end": { - "line": 125, - "column": 45 + "line": 141, + "column": 36 } } }, { "type": { - "label": "name", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -58730,53 +59347,55 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "setMousedownState", - "start": 3602, - "end": 3619, + "value": "true", + "start": 3915, + "end": 3919, "loc": { "start": { - "line": 127, - "column": 24 + "line": 141, + "column": 37 }, "end": { - "line": 127, + "line": 141, "column": 41 } } }, { "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": 3619, - "end": 3620, + "start": 3919, + "end": 3920, "loc": { "start": { - "line": 127, + "line": 141, "column": 41 }, "end": { - "line": 127, + "line": 141, "column": 42 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -58785,25 +59404,25 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 3620, - "end": 3625, + "value": "if", + "start": 3942, + "end": 3944, "loc": { "start": { - "line": 127, - "column": 42 + "line": 143, + "column": 20 }, "end": { - "line": 127, - "column": 47 + "line": 143, + "column": 22 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -58811,48 +59430,48 @@ "postfix": false, "binop": null }, - "start": 3625, - "end": 3626, + "start": 3945, + "end": 3946, "loc": { "start": { - "line": 127, - "column": 47 + "line": 143, + "column": 23 }, "end": { - "line": 127, - "column": 48 + "line": 143, + "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": 3626, - "end": 3627, + "value": "configs", + "start": 3946, + "end": 3953, "loc": { "start": { - "line": 127, - "column": 48 + "line": 143, + "column": 24 }, "end": { - "line": 127, - "column": 49 + "line": 143, + "column": 31 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -58860,106 +59479,101 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3649, - "end": 3650, + "start": 3953, + "end": 3954, "loc": { "start": { - "line": 129, - "column": 20 + "line": 143, + "column": 31 }, "end": { - "line": 129, - "column": 21 + "line": 143, + "column": 32 } } }, { "type": { - "label": "break", - "keyword": "break", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "break", - "start": 3672, - "end": 3677, + "value": "panRightClick", + "start": 3954, + "end": 3967, "loc": { "start": { - "line": 131, - "column": 20 + "line": 143, + "column": 32 }, "end": { - "line": 131, - "column": 25 + "line": 143, + "column": 45 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3677, - "end": 3678, + "start": 3967, + "end": 3968, "loc": { "start": { - "line": 131, - "column": 25 + "line": 143, + "column": 45 }, "end": { - "line": 131, - "column": 26 + "line": 143, + "column": 46 } } }, { "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": 3696, - "end": 3700, + "start": 3969, + "end": 3970, "loc": { "start": { - "line": 133, - "column": 16 + "line": 143, + "column": 47 }, "end": { - "line": 133, - "column": 20 + "line": 143, + "column": 48 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -58967,70 +59581,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 2, - "start": 3701, - "end": 3702, + "value": "setMousedownState", + "start": 3996, + "end": 4013, "loc": { "start": { - "line": 133, - "column": 21 + "line": 145, + "column": 24 }, "end": { - "line": 133, - "column": 22 + "line": 145, + "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": 3702, - "end": 3703, - "loc": { - "start": { - "line": 133, - "column": 22 - }, - "end": { - "line": 133, - "column": 23 - } - } - }, - { - "type": "CommentLine", - "value": " Middle/both buttons", - "start": 3704, - "end": 3726, + "start": 4013, + "end": 4014, "loc": { "start": { - "line": 133, - "column": 24 + "line": 145, + "column": 41 }, "end": { - "line": 133, - "column": 46 + "line": 145, + "column": 42 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59038,79 +59634,75 @@ "postfix": false, "binop": null }, - "value": "mouseDownMiddle", - "start": 3748, - "end": 3763, + "start": 4014, + "end": 4015, "loc": { "start": { - "line": 135, - "column": 20 + "line": 145, + "column": 42 }, "end": { - "line": 135, - "column": 35 + "line": 145, + "column": 43 } } }, { "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": 3764, - "end": 3765, + "start": 4015, + "end": 4016, "loc": { "start": { - "line": 135, - "column": 36 + "line": 145, + "column": 43 }, "end": { - "line": 135, - "column": 37 + "line": 145, + "column": 44 } } }, { "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": 3766, - "end": 3770, + "start": 4037, + "end": 4038, "loc": { "start": { - "line": 135, - "column": 38 + "line": 146, + "column": 20 }, "end": { - "line": 135, - "column": 42 + "line": 146, + "column": 21 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "break", + "keyword": "break", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -59120,24 +59712,24 @@ "binop": null, "updateContext": null }, - "start": 3770, - "end": 3771, + "value": "break", + "start": 4060, + "end": 4065, "loc": { "start": { - "line": 135, - "column": 42 + "line": 148, + "column": 20 }, "end": { - "line": 135, - "column": 43 + "line": 148, + "column": 25 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -59147,101 +59739,77 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 3792, - "end": 3794, + "start": 4065, + "end": 4066, "loc": { "start": { - "line": 137, - "column": 19 + "line": 148, + "column": 25 }, "end": { - "line": 137, - "column": 21 + "line": 148, + "column": 26 } } }, { "type": { - "label": "(", + "label": "default", + "keyword": "default", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3795, - "end": 3796, + "value": "default", + "start": 4084, + "end": 4091, "loc": { "start": { - "line": 137, - "column": 22 + "line": 150, + "column": 16 }, "end": { - "line": 137, + "line": 150, "column": 23 } } }, { "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": 3796, - "end": 3797, + "start": 4091, + "end": 4092, "loc": { "start": { - "line": 137, + "line": 150, "column": 23 }, "end": { - "line": 137, - "column": 24 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "configs", - "start": 3797, - "end": 3804, - "loc": { - "start": { - "line": 137, + "line": 150, "column": 24 - }, - "end": { - "line": 137, - "column": 31 } } }, { "type": { - "label": ".", + "label": "break", + "keyword": "break", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -59252,48 +59820,49 @@ "binop": null, "updateContext": null }, - "start": 3804, - "end": 3805, + "value": "break", + "start": 4113, + "end": 4118, "loc": { "start": { - "line": 137, - "column": 31 + "line": 151, + "column": 20 }, "end": { - "line": 137, - "column": 32 + "line": 151, + "column": 25 } } }, { "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": "panRightClick", - "start": 3805, - "end": 3818, + "start": 4118, + "end": 4119, "loc": { "start": { - "line": 137, - "column": 32 + "line": 151, + "column": 25 }, "end": { - "line": 137, - "column": 45 + "line": 151, + "column": 26 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -59303,24 +59872,24 @@ "postfix": false, "binop": null }, - "start": 3818, - "end": 3819, + "start": 4132, + "end": 4133, "loc": { "start": { - "line": 137, - "column": 45 + "line": 152, + "column": 12 }, "end": { - "line": 137, - "column": 46 + "line": 152, + "column": 13 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59328,24 +59897,24 @@ "postfix": false, "binop": null }, - "start": 3820, - "end": 3821, + "start": 4142, + "end": 4143, "loc": { "start": { - "line": 137, - "column": 47 + "line": 153, + "column": 8 }, "end": { - "line": 137, - "column": 48 + "line": 153, + "column": 9 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59353,50 +59922,50 @@ "postfix": false, "binop": null }, - "value": "setMousedownState", - "start": 3847, - "end": 3864, + "start": 4143, + "end": 4144, "loc": { "start": { - "line": 139, - "column": 24 + "line": 153, + "column": 9 }, "end": { - "line": 139, - "column": 41 + "line": 153, + "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": 3864, - "end": 3865, + "start": 4144, + "end": 4145, "loc": { "start": { - "line": 139, - "column": 41 + "line": 153, + "column": 10 }, "end": { - "line": 139, - "column": 42 + "line": 153, + "column": 11 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59404,23 +59973,24 @@ "postfix": false, "binop": null }, - "start": 3865, - "end": 3866, + "value": "document", + "start": 4155, + "end": 4163, "loc": { "start": { - "line": 139, - "column": 42 + "line": 155, + "column": 8 }, "end": { - "line": 139, - "column": 43 + "line": 155, + "column": 16 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -59430,24 +60000,24 @@ "binop": null, "updateContext": null }, - "start": 3866, - "end": 3867, + "start": 4163, + "end": 4164, "loc": { "start": { - "line": 139, - "column": 43 + "line": 155, + "column": 16 }, "end": { - "line": 139, - "column": 44 + "line": 155, + "column": 17 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59455,52 +60025,50 @@ "postfix": false, "binop": null }, - "start": 3889, - "end": 3890, + "value": "addEventListener", + "start": 4164, + "end": 4180, "loc": { "start": { - "line": 141, - "column": 20 + "line": 155, + "column": 17 }, "end": { - "line": 141, - "column": 21 + "line": 155, + "column": 33 } } }, { "type": { - "label": "break", - "keyword": "break", - "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": "break", - "start": 3912, - "end": 3917, + "start": 4180, + "end": 4181, "loc": { "start": { - "line": 143, - "column": 20 + "line": 155, + "column": 33 }, "end": { - "line": 143, - "column": 25 + "line": 155, + "column": 34 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59509,23 +60077,23 @@ "binop": null, "updateContext": null }, - "start": 3917, - "end": 3918, + "value": "mousemove", + "start": 4181, + "end": 4192, "loc": { "start": { - "line": 143, - "column": 25 + "line": 155, + "column": 34 }, "end": { - "line": 143, - "column": 26 + "line": 155, + "column": 45 } } }, { "type": { - "label": "case", - "keyword": "case", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -59536,23 +60104,23 @@ "binop": null, "updateContext": null }, - "value": "case", - "start": 3936, - "end": 3940, + "start": 4192, + "end": 4193, "loc": { "start": { - "line": 145, - "column": 16 + "line": 155, + "column": 45 }, "end": { - "line": 145, - "column": 20 + "line": 155, + "column": 46 } } }, { "type": { - "label": "num", + "label": "this", + "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -59563,24 +60131,24 @@ "binop": null, "updateContext": null }, - "value": 3, - "start": 3941, - "end": 3942, + "value": "this", + "start": 4194, + "end": 4198, "loc": { "start": { - "line": 145, - "column": 21 + "line": 155, + "column": 47 }, "end": { - "line": 145, - "column": 22 + "line": 155, + "column": 51 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -59590,32 +60158,16 @@ "binop": null, "updateContext": null }, - "start": 3942, - "end": 3943, - "loc": { - "start": { - "line": 145, - "column": 22 - }, - "end": { - "line": 145, - "column": 23 - } - } - }, - { - "type": "CommentLine", - "value": " Right button", - "start": 3944, - "end": 3959, + "start": 4198, + "end": 4199, "loc": { "start": { - "line": 145, - "column": 24 + "line": 155, + "column": 51 }, "end": { - "line": 145, - "column": 39 + "line": 155, + "column": 52 } } }, @@ -59631,17 +60183,17 @@ "postfix": false, "binop": null }, - "value": "mouseDownRight", - "start": 3981, - "end": 3995, + "value": "_documentMouseMoveHandler", + "start": 4199, + "end": 4224, "loc": { "start": { - "line": 147, - "column": 20 + "line": 155, + "column": 52 }, "end": { - "line": 147, - "column": 34 + "line": 155, + "column": 77 } } }, @@ -59659,78 +60211,73 @@ "updateContext": null }, "value": "=", - "start": 3996, - "end": 3997, + "start": 4225, + "end": 4226, "loc": { "start": { - "line": 147, - "column": 35 + "line": 155, + "column": 78 }, "end": { - "line": 147, - "column": 36 + "line": 155, + "column": 79 } } }, { "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": 3998, - "end": 4002, + "start": 4227, + "end": 4228, "loc": { "start": { - "line": 147, - "column": 37 + "line": 155, + "column": 80 }, "end": { - "line": 147, - "column": 41 + "line": 155, + "column": 81 } } }, { "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": 4002, - "end": 4003, + "start": 4228, + "end": 4229, "loc": { "start": { - "line": 147, - "column": 41 + "line": 155, + "column": 81 }, "end": { - "line": 147, - "column": 42 + "line": 155, + "column": 82 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "=>", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -59740,23 +60287,22 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 4025, - "end": 4027, + "start": 4230, + "end": 4232, "loc": { "start": { - "line": 149, - "column": 20 + "line": 155, + "column": 83 }, "end": { - "line": 149, - "column": 22 + "line": 155, + "column": 85 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -59766,23 +60312,51 @@ "postfix": false, "binop": null }, - "start": 4028, - "end": 4029, + "start": 4233, + "end": 4234, "loc": { "start": { - "line": 149, - "column": 23 + "line": 155, + "column": 86 }, "end": { - "line": 149, - "column": 24 + "line": 155, + "column": 87 } } }, { "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": 4248, + "end": 4250, + "loc": { + "start": { + "line": 157, + "column": 12 + }, + "end": { + "line": 157, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -59791,50 +60365,50 @@ "postfix": false, "binop": null }, - "value": "configs", - "start": 4029, - "end": 4036, + "start": 4251, + "end": 4252, "loc": { "start": { - "line": 149, - "column": 24 + "line": 157, + "column": 15 }, "end": { - "line": 149, - "column": 31 + "line": 157, + "column": 16 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 4036, - "end": 4037, + "value": "!", + "start": 4252, + "end": 4253, "loc": { "start": { - "line": 149, - "column": 31 + "line": 157, + "column": 16 }, "end": { - "line": 149, - "column": 32 + "line": 157, + "column": 17 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -59843,25 +60417,24 @@ "postfix": false, "binop": null }, - "value": "panRightClick", - "start": 4037, - "end": 4050, + "start": 4253, + "end": 4254, "loc": { "start": { - "line": 149, - "column": 32 + "line": 157, + "column": 17 }, "end": { - "line": 149, - "column": 45 + "line": 157, + "column": 18 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59869,41 +60442,43 @@ "postfix": false, "binop": null }, - "start": 4050, - "end": 4051, + "value": "configs", + "start": 4254, + "end": 4261, "loc": { "start": { - "line": 149, - "column": 45 + "line": 157, + "column": 18 }, "end": { - "line": 149, - "column": 46 + "line": 157, + "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": 4052, - "end": 4053, + "start": 4261, + "end": 4262, "loc": { "start": { - "line": 149, - "column": 47 + "line": 157, + "column": 25 }, "end": { - "line": 149, - "column": 48 + "line": 157, + "column": 26 } } }, @@ -59919,50 +60494,52 @@ "postfix": false, "binop": null }, - "value": "setMousedownState", - "start": 4079, - "end": 4096, + "value": "active", + "start": 4262, + "end": 4268, "loc": { "start": { - "line": 151, - "column": 24 + "line": 157, + "column": 26 }, "end": { - "line": 151, - "column": 41 + "line": 157, + "column": 32 } } }, { "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": 4096, - "end": 4097, + "value": "&&", + "start": 4269, + "end": 4271, "loc": { "start": { - "line": 151, - "column": 41 + "line": 157, + "column": 33 }, "end": { - "line": 151, - "column": 42 + "line": 157, + "column": 35 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59970,23 +60547,24 @@ "postfix": false, "binop": null }, - "start": 4097, - "end": 4098, + "value": "configs", + "start": 4272, + "end": 4279, "loc": { "start": { - "line": 151, - "column": 42 + "line": 157, + "column": 36 }, "end": { - "line": 151, + "line": 157, "column": 43 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -59996,24 +60574,24 @@ "binop": null, "updateContext": null }, - "start": 4098, - "end": 4099, + "start": 4279, + "end": 4280, "loc": { "start": { - "line": 151, + "line": 157, "column": 43 }, "end": { - "line": 151, + "line": 157, "column": 44 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -60021,23 +60599,23 @@ "postfix": false, "binop": null }, - "start": 4121, - "end": 4122, + "value": "pointerEnabled", + "start": 4280, + "end": 4294, "loc": { "start": { - "line": 153, - "column": 20 + "line": 157, + "column": 44 }, "end": { - "line": 153, - "column": 21 + "line": 157, + "column": 58 } } }, { "type": { - "label": "break", - "keyword": "break", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -60045,80 +60623,75 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "break", - "start": 4144, - "end": 4149, + "start": 4294, + "end": 4295, "loc": { "start": { - "line": 155, - "column": 20 + "line": 157, + "column": 58 }, "end": { - "line": 155, - "column": 25 + "line": 157, + "column": 59 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4149, - "end": 4150, + "start": 4295, + "end": 4296, "loc": { "start": { - "line": 155, - "column": 25 + "line": 157, + "column": 59 }, "end": { - "line": 155, - "column": 26 + "line": 157, + "column": 60 } } }, { "type": { - "label": "default", - "keyword": "default", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "default", - "start": 4168, - "end": 4175, + "start": 4297, + "end": 4298, "loc": { "start": { "line": 157, - "column": 16 + "column": 61 }, "end": { "line": 157, - "column": 23 + "column": 62 } } }, { "type": { - "label": ":", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -60129,24 +60702,24 @@ "binop": null, "updateContext": null }, - "start": 4175, - "end": 4176, + "value": "return", + "start": 4315, + "end": 4321, "loc": { "start": { - "line": 157, - "column": 23 + "line": 158, + "column": 16 }, "end": { - "line": 157, - "column": 24 + "line": 158, + "column": 22 } } }, { "type": { - "label": "break", - "keyword": "break", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -60156,49 +60729,48 @@ "binop": null, "updateContext": null }, - "value": "break", - "start": 4197, - "end": 4202, + "start": 4321, + "end": 4322, "loc": { "start": { "line": 158, - "column": 20 + "column": 22 }, "end": { "line": 158, - "column": 25 + "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": 4202, - "end": 4203, + "start": 4335, + "end": 4336, "loc": { "start": { - "line": 158, - "column": 25 + "line": 159, + "column": 12 }, "end": { - "line": 158, - "column": 26 + "line": 159, + "column": 13 } } }, { "type": { - "label": "}", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -60206,25 +60778,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4216, - "end": 4217, + "value": "if", + "start": 4350, + "end": 4352, "loc": { "start": { - "line": 159, + "line": 161, "column": 12 }, "end": { - "line": 159, - "column": 13 + "line": 161, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -60233,43 +60807,43 @@ "postfix": false, "binop": null }, - "value": "document", - "start": 4231, - "end": 4239, + "start": 4353, + "end": 4354, "loc": { "start": { "line": 161, - "column": 12 + "column": 15 }, "end": { "line": 161, - "column": 20 + "column": 16 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 4239, - "end": 4240, + "value": "!", + "start": 4354, + "end": 4355, "loc": { "start": { "line": 161, - "column": 20 + "column": 16 }, "end": { "line": 161, - "column": 21 + "column": 17 } } }, @@ -60285,91 +60859,93 @@ "postfix": false, "binop": null }, - "value": "addEventListener", - "start": 4240, - "end": 4256, + "value": "mouseDownLeft", + "start": 4355, + "end": 4368, "loc": { "start": { "line": 161, - "column": 21 + "column": 17 }, "end": { "line": 161, - "column": 37 + "column": 30 } } }, { "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": 4256, - "end": 4257, + "value": "&&", + "start": 4369, + "end": 4371, "loc": { "start": { "line": 161, - "column": 37 + "column": 31 }, "end": { "line": 161, - "column": 38 + "column": 33 } } }, { "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": "mousemove", - "start": 4257, - "end": 4268, + "value": "!", + "start": 4372, + "end": 4373, "loc": { "start": { "line": 161, - "column": 38 + "column": 34 }, "end": { "line": 161, - "column": 49 + "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": 4268, - "end": 4269, + "value": "mouseDownMiddle", + "start": 4373, + "end": 4388, "loc": { "start": { "line": 161, - "column": 49 + "column": 35 }, "end": { "line": 161, @@ -60379,21 +60955,20 @@ }, { "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": 2, "updateContext": null }, - "value": "this", - "start": 4270, - "end": 4274, + "value": "&&", + "start": 4389, + "end": 4391, "loc": { "start": { "line": 161, @@ -60401,33 +60976,34 @@ }, "end": { "line": 161, - "column": 55 + "column": 53 } } }, { "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": 4274, - "end": 4275, + "value": "!", + "start": 4392, + "end": 4393, "loc": { "start": { "line": 161, - "column": 55 + "column": 54 }, "end": { "line": 161, - "column": 56 + "column": 55 } } }, @@ -60443,50 +61019,48 @@ "postfix": false, "binop": null }, - "value": "_documentMouseMoveHandler", - "start": 4275, - "end": 4300, + "value": "mouseDownRight", + "start": 4393, + "end": 4407, "loc": { "start": { "line": 161, - "column": 56 + "column": 55 }, "end": { "line": 161, - "column": 81 + "column": 69 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 4301, - "end": 4302, + "start": 4407, + "end": 4408, "loc": { "start": { "line": 161, - "column": 82 + "column": 69 }, "end": { "line": 161, - "column": 83 + "column": 70 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -60496,47 +61070,50 @@ "postfix": false, "binop": null }, - "start": 4303, - "end": 4304, + "start": 4409, + "end": 4410, "loc": { "start": { "line": 161, - "column": 84 + "column": 71 }, "end": { "line": 161, - "column": 85 + "column": 72 } } }, { "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": 4304, - "end": 4305, + "value": "return", + "start": 4427, + "end": 4433, "loc": { "start": { - "line": 161, - "column": 85 + "line": 162, + "column": 16 }, "end": { - "line": 161, - "column": 86 + "line": 162, + "column": 22 } } }, { "type": { - "label": "=>", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -60547,24 +61124,24 @@ "binop": null, "updateContext": null }, - "start": 4306, - "end": 4308, + "start": 4433, + "end": 4434, "loc": { "start": { - "line": 161, - "column": 87 + "line": 162, + "column": 22 }, "end": { - "line": 161, - "column": 89 + "line": 162, + "column": 23 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -60572,32 +61149,32 @@ "postfix": false, "binop": null }, - "start": 4309, - "end": 4310, + "start": 4447, + "end": 4448, "loc": { "start": { - "line": 161, - "column": 90 + "line": 163, + "column": 12 }, "end": { - "line": 161, - "column": 91 + "line": 163, + "column": 13 } } }, { "type": "CommentLine", "value": " Scaling drag-rotate to canvas boundary", - "start": 4327, - "end": 4368, + "start": 4462, + "end": 4503, "loc": { "start": { - "line": 162, - "column": 16 + "line": 165, + "column": 12 }, "end": { - "line": 162, - "column": 57 + "line": 165, + "column": 53 } } }, @@ -60616,16 +61193,16 @@ "updateContext": null }, "value": "const", - "start": 4386, - "end": 4391, + "start": 4517, + "end": 4522, "loc": { "start": { - "line": 164, - "column": 16 + "line": 167, + "column": 12 }, "end": { - "line": 164, - "column": 21 + "line": 167, + "column": 17 } } }, @@ -60642,16 +61219,16 @@ "binop": null }, "value": "canvasBoundary", - "start": 4392, - "end": 4406, + "start": 4523, + "end": 4537, "loc": { "start": { - "line": 164, - "column": 22 + "line": 167, + "column": 18 }, "end": { - "line": 164, - "column": 36 + "line": 167, + "column": 32 } } }, @@ -60669,16 +61246,16 @@ "updateContext": null }, "value": "=", - "start": 4407, - "end": 4408, + "start": 4538, + "end": 4539, "loc": { "start": { - "line": 164, - "column": 37 + "line": 167, + "column": 33 }, "end": { - "line": 164, - "column": 38 + "line": 167, + "column": 34 } } }, @@ -60695,16 +61272,16 @@ "binop": null }, "value": "scene", - "start": 4409, - "end": 4414, + "start": 4540, + "end": 4545, "loc": { "start": { - "line": 164, - "column": 39 + "line": 167, + "column": 35 }, "end": { - "line": 164, - "column": 44 + "line": 167, + "column": 40 } } }, @@ -60721,16 +61298,16 @@ "binop": null, "updateContext": null }, - "start": 4414, - "end": 4415, + "start": 4545, + "end": 4546, "loc": { "start": { - "line": 164, - "column": 44 + "line": 167, + "column": 40 }, "end": { - "line": 164, - "column": 45 + "line": 167, + "column": 41 } } }, @@ -60747,16 +61324,16 @@ "binop": null }, "value": "canvas", - "start": 4415, - "end": 4421, + "start": 4546, + "end": 4552, "loc": { "start": { - "line": 164, - "column": 45 + "line": 167, + "column": 41 }, "end": { - "line": 164, - "column": 51 + "line": 167, + "column": 47 } } }, @@ -60773,16 +61350,16 @@ "binop": null, "updateContext": null }, - "start": 4421, - "end": 4422, + "start": 4552, + "end": 4553, "loc": { "start": { - "line": 164, - "column": 51 + "line": 167, + "column": 47 }, "end": { - "line": 164, - "column": 52 + "line": 167, + "column": 48 } } }, @@ -60799,16 +61376,16 @@ "binop": null }, "value": "boundary", - "start": 4422, - "end": 4430, + "start": 4553, + "end": 4561, "loc": { "start": { - "line": 164, - "column": 52 + "line": 167, + "column": 48 }, "end": { - "line": 164, - "column": 60 + "line": 167, + "column": 56 } } }, @@ -60825,16 +61402,16 @@ "binop": null, "updateContext": null }, - "start": 4430, - "end": 4431, + "start": 4561, + "end": 4562, "loc": { "start": { - "line": 164, - "column": 60 + "line": 167, + "column": 56 }, "end": { - "line": 164, - "column": 61 + "line": 167, + "column": 57 } } }, @@ -60853,16 +61430,16 @@ "updateContext": null }, "value": "const", - "start": 4448, - "end": 4453, + "start": 4575, + "end": 4580, "loc": { "start": { - "line": 165, - "column": 16 + "line": 168, + "column": 12 }, "end": { - "line": 165, - "column": 21 + "line": 168, + "column": 17 } } }, @@ -60879,16 +61456,16 @@ "binop": null }, "value": "canvasWidth", - "start": 4454, - "end": 4465, + "start": 4581, + "end": 4592, "loc": { "start": { - "line": 165, - "column": 22 + "line": 168, + "column": 18 }, "end": { - "line": 165, - "column": 33 + "line": 168, + "column": 29 } } }, @@ -60906,16 +61483,16 @@ "updateContext": null }, "value": "=", - "start": 4466, - "end": 4467, + "start": 4593, + "end": 4594, "loc": { "start": { - "line": 165, - "column": 34 + "line": 168, + "column": 30 }, "end": { - "line": 165, - "column": 35 + "line": 168, + "column": 31 } } }, @@ -60932,16 +61509,16 @@ "binop": null }, "value": "canvasBoundary", - "start": 4468, - "end": 4482, + "start": 4595, + "end": 4609, "loc": { "start": { - "line": 165, - "column": 36 + "line": 168, + "column": 32 }, "end": { - "line": 165, - "column": 50 + "line": 168, + "column": 46 } } }, @@ -60958,16 +61535,16 @@ "binop": null, "updateContext": null }, - "start": 4482, - "end": 4483, + "start": 4609, + "end": 4610, "loc": { "start": { - "line": 165, - "column": 50 + "line": 168, + "column": 46 }, "end": { - "line": 165, - "column": 51 + "line": 168, + "column": 47 } } }, @@ -60985,16 +61562,16 @@ "updateContext": null }, "value": 2, - "start": 4483, - "end": 4484, + "start": 4610, + "end": 4611, "loc": { "start": { - "line": 165, - "column": 51 + "line": 168, + "column": 47 }, "end": { - "line": 165, - "column": 52 + "line": 168, + "column": 48 } } }, @@ -61011,16 +61588,16 @@ "binop": null, "updateContext": null }, - "start": 4484, - "end": 4485, + "start": 4611, + "end": 4612, "loc": { "start": { - "line": 165, - "column": 52 + "line": 168, + "column": 48 }, "end": { - "line": 165, - "column": 53 + "line": 168, + "column": 49 } } }, @@ -61038,16 +61615,16 @@ "updateContext": null }, "value": "-", - "start": 4486, - "end": 4487, + "start": 4613, + "end": 4614, "loc": { "start": { - "line": 165, - "column": 54 + "line": 168, + "column": 50 }, "end": { - "line": 165, - "column": 55 + "line": 168, + "column": 51 } } }, @@ -61064,16 +61641,16 @@ "binop": null }, "value": "canvasBoundary", - "start": 4488, - "end": 4502, + "start": 4615, + "end": 4629, "loc": { "start": { - "line": 165, - "column": 56 + "line": 168, + "column": 52 }, "end": { - "line": 165, - "column": 70 + "line": 168, + "column": 66 } } }, @@ -61090,16 +61667,16 @@ "binop": null, "updateContext": null }, - "start": 4502, - "end": 4503, + "start": 4629, + "end": 4630, "loc": { "start": { - "line": 165, - "column": 70 + "line": 168, + "column": 66 }, "end": { - "line": 165, - "column": 71 + "line": 168, + "column": 67 } } }, @@ -61117,16 +61694,16 @@ "updateContext": null }, "value": 0, - "start": 4503, - "end": 4504, + "start": 4630, + "end": 4631, "loc": { "start": { - "line": 165, - "column": 71 + "line": 168, + "column": 67 }, "end": { - "line": 165, - "column": 72 + "line": 168, + "column": 68 } } }, @@ -61143,16 +61720,16 @@ "binop": null, "updateContext": null }, - "start": 4504, - "end": 4505, + "start": 4631, + "end": 4632, "loc": { "start": { - "line": 165, - "column": 72 + "line": 168, + "column": 68 }, "end": { - "line": 165, - "column": 73 + "line": 168, + "column": 69 } } }, @@ -61169,16 +61746,16 @@ "binop": null, "updateContext": null }, - "start": 4505, - "end": 4506, + "start": 4632, + "end": 4633, "loc": { "start": { - "line": 165, - "column": 73 + "line": 168, + "column": 69 }, "end": { - "line": 165, - "column": 74 + "line": 168, + "column": 70 } } }, @@ -61197,16 +61774,16 @@ "updateContext": null }, "value": "const", - "start": 4523, - "end": 4528, + "start": 4646, + "end": 4651, "loc": { "start": { - "line": 166, - "column": 16 + "line": 169, + "column": 12 }, "end": { - "line": 166, - "column": 21 + "line": 169, + "column": 17 } } }, @@ -61223,16 +61800,16 @@ "binop": null }, "value": "canvasHeight", - "start": 4529, - "end": 4541, + "start": 4652, + "end": 4664, "loc": { "start": { - "line": 166, - "column": 22 + "line": 169, + "column": 18 }, "end": { - "line": 166, - "column": 34 + "line": 169, + "column": 30 } } }, @@ -61250,16 +61827,16 @@ "updateContext": null }, "value": "=", - "start": 4542, - "end": 4543, + "start": 4665, + "end": 4666, "loc": { "start": { - "line": 166, - "column": 35 + "line": 169, + "column": 31 }, "end": { - "line": 166, - "column": 36 + "line": 169, + "column": 32 } } }, @@ -61276,16 +61853,16 @@ "binop": null }, "value": "canvasBoundary", - "start": 4544, - "end": 4558, + "start": 4667, + "end": 4681, "loc": { "start": { - "line": 166, - "column": 37 + "line": 169, + "column": 33 }, "end": { - "line": 166, - "column": 51 + "line": 169, + "column": 47 } } }, @@ -61302,16 +61879,16 @@ "binop": null, "updateContext": null }, - "start": 4558, - "end": 4559, + "start": 4681, + "end": 4682, "loc": { "start": { - "line": 166, - "column": 51 + "line": 169, + "column": 47 }, "end": { - "line": 166, - "column": 52 + "line": 169, + "column": 48 } } }, @@ -61329,16 +61906,16 @@ "updateContext": null }, "value": 3, - "start": 4559, - "end": 4560, + "start": 4682, + "end": 4683, "loc": { "start": { - "line": 166, - "column": 52 + "line": 169, + "column": 48 }, "end": { - "line": 166, - "column": 53 + "line": 169, + "column": 49 } } }, @@ -61355,16 +61932,16 @@ "binop": null, "updateContext": null }, - "start": 4560, - "end": 4561, + "start": 4683, + "end": 4684, "loc": { "start": { - "line": 166, - "column": 53 + "line": 169, + "column": 49 }, "end": { - "line": 166, - "column": 54 + "line": 169, + "column": 50 } } }, @@ -61382,16 +61959,16 @@ "updateContext": null }, "value": "-", - "start": 4562, - "end": 4563, + "start": 4685, + "end": 4686, "loc": { "start": { - "line": 166, - "column": 55 + "line": 169, + "column": 51 }, "end": { - "line": 166, - "column": 56 + "line": 169, + "column": 52 } } }, @@ -61408,16 +61985,16 @@ "binop": null }, "value": "canvasBoundary", - "start": 4564, - "end": 4578, + "start": 4687, + "end": 4701, "loc": { "start": { - "line": 166, - "column": 57 + "line": 169, + "column": 53 }, "end": { - "line": 166, - "column": 71 + "line": 169, + "column": 67 } } }, @@ -61434,16 +62011,16 @@ "binop": null, "updateContext": null }, - "start": 4578, - "end": 4579, + "start": 4701, + "end": 4702, "loc": { "start": { - "line": 166, - "column": 71 + "line": 169, + "column": 67 }, "end": { - "line": 166, - "column": 72 + "line": 169, + "column": 68 } } }, @@ -61461,16 +62038,16 @@ "updateContext": null }, "value": 1, - "start": 4579, - "end": 4580, + "start": 4702, + "end": 4703, "loc": { "start": { - "line": 166, - "column": 72 + "line": 169, + "column": 68 }, "end": { - "line": 166, - "column": 73 + "line": 169, + "column": 69 } } }, @@ -61487,16 +62064,16 @@ "binop": null, "updateContext": null }, - "start": 4580, - "end": 4581, + "start": 4703, + "end": 4704, "loc": { "start": { - "line": 166, - "column": 73 + "line": 169, + "column": 69 }, "end": { - "line": 166, - "column": 74 + "line": 169, + "column": 70 } } }, @@ -61513,16 +62090,16 @@ "binop": null, "updateContext": null }, - "start": 4581, - "end": 4582, + "start": 4704, + "end": 4705, "loc": { "start": { - "line": 166, - "column": 74 + "line": 169, + "column": 70 }, "end": { - "line": 166, - "column": 75 + "line": 169, + "column": 71 } } }, @@ -61541,16 +62118,16 @@ "updateContext": null }, "value": "const", - "start": 4599, - "end": 4604, + "start": 4718, + "end": 4723, "loc": { "start": { - "line": 167, - "column": 16 + "line": 170, + "column": 12 }, "end": { - "line": 167, - "column": 21 + "line": 170, + "column": 17 } } }, @@ -61567,16 +62144,16 @@ "binop": null }, "value": "x", - "start": 4605, - "end": 4606, + "start": 4724, + "end": 4725, "loc": { "start": { - "line": 167, - "column": 22 + "line": 170, + "column": 18 }, "end": { - "line": 167, - "column": 23 + "line": 170, + "column": 19 } } }, @@ -61594,16 +62171,16 @@ "updateContext": null }, "value": "=", - "start": 4607, - "end": 4608, + "start": 4726, + "end": 4727, "loc": { "start": { - "line": 167, - "column": 24 + "line": 170, + "column": 20 }, "end": { - "line": 167, - "column": 25 + "line": 170, + "column": 21 } } }, @@ -61620,16 +62197,16 @@ "binop": null }, "value": "states", - "start": 4609, - "end": 4615, + "start": 4728, + "end": 4734, "loc": { "start": { - "line": 167, - "column": 26 + "line": 170, + "column": 22 }, "end": { - "line": 167, - "column": 32 + "line": 170, + "column": 28 } } }, @@ -61646,16 +62223,16 @@ "binop": null, "updateContext": null }, - "start": 4615, - "end": 4616, + "start": 4734, + "end": 4735, "loc": { "start": { - "line": 167, - "column": 32 + "line": 170, + "column": 28 }, "end": { - "line": 167, - "column": 33 + "line": 170, + "column": 29 } } }, @@ -61672,16 +62249,16 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 4616, - "end": 4632, + "start": 4735, + "end": 4751, "loc": { "start": { - "line": 167, - "column": 33 + "line": 170, + "column": 29 }, "end": { - "line": 167, - "column": 49 + "line": 170, + "column": 45 } } }, @@ -61698,16 +62275,16 @@ "binop": null, "updateContext": null }, - "start": 4632, - "end": 4633, + "start": 4751, + "end": 4752, "loc": { "start": { - "line": 167, - "column": 49 + "line": 170, + "column": 45 }, "end": { - "line": 167, - "column": 50 + "line": 170, + "column": 46 } } }, @@ -61725,16 +62302,16 @@ "updateContext": null }, "value": 0, - "start": 4633, - "end": 4634, + "start": 4752, + "end": 4753, "loc": { "start": { - "line": 167, - "column": 50 + "line": 170, + "column": 46 }, "end": { - "line": 167, - "column": 51 + "line": 170, + "column": 47 } } }, @@ -61751,16 +62328,16 @@ "binop": null, "updateContext": null }, - "start": 4634, - "end": 4635, + "start": 4753, + "end": 4754, "loc": { "start": { - "line": 167, - "column": 51 + "line": 170, + "column": 47 }, "end": { - "line": 167, - "column": 52 + "line": 170, + "column": 48 } } }, @@ -61777,16 +62354,16 @@ "binop": null, "updateContext": null }, - "start": 4635, - "end": 4636, + "start": 4754, + "end": 4755, "loc": { "start": { - "line": 167, - "column": 52 + "line": 170, + "column": 48 }, "end": { - "line": 167, - "column": 53 + "line": 170, + "column": 49 } } }, @@ -61805,16 +62382,16 @@ "updateContext": null }, "value": "const", - "start": 4653, - "end": 4658, + "start": 4768, + "end": 4773, "loc": { "start": { - "line": 168, - "column": 16 + "line": 171, + "column": 12 }, "end": { - "line": 168, - "column": 21 + "line": 171, + "column": 17 } } }, @@ -61831,16 +62408,16 @@ "binop": null }, "value": "y", - "start": 4659, - "end": 4660, + "start": 4774, + "end": 4775, "loc": { "start": { - "line": 168, - "column": 22 + "line": 171, + "column": 18 }, "end": { - "line": 168, - "column": 23 + "line": 171, + "column": 19 } } }, @@ -61858,16 +62435,16 @@ "updateContext": null }, "value": "=", - "start": 4661, - "end": 4662, + "start": 4776, + "end": 4777, "loc": { "start": { - "line": 168, - "column": 24 + "line": 171, + "column": 20 }, "end": { - "line": 168, - "column": 25 + "line": 171, + "column": 21 } } }, @@ -61884,16 +62461,16 @@ "binop": null }, "value": "states", - "start": 4663, - "end": 4669, + "start": 4778, + "end": 4784, "loc": { "start": { - "line": 168, - "column": 26 + "line": 171, + "column": 22 }, "end": { - "line": 168, - "column": 32 + "line": 171, + "column": 28 } } }, @@ -61910,16 +62487,16 @@ "binop": null, "updateContext": null }, - "start": 4669, - "end": 4670, + "start": 4784, + "end": 4785, "loc": { "start": { - "line": 168, - "column": 32 + "line": 171, + "column": 28 }, "end": { - "line": 168, - "column": 33 + "line": 171, + "column": 29 } } }, @@ -61936,16 +62513,16 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 4670, - "end": 4686, + "start": 4785, + "end": 4801, "loc": { "start": { - "line": 168, - "column": 33 + "line": 171, + "column": 29 }, "end": { - "line": 168, - "column": 49 + "line": 171, + "column": 45 } } }, @@ -61962,16 +62539,16 @@ "binop": null, "updateContext": null }, - "start": 4686, - "end": 4687, + "start": 4801, + "end": 4802, "loc": { "start": { - "line": 168, - "column": 49 + "line": 171, + "column": 45 }, "end": { - "line": 168, - "column": 50 + "line": 171, + "column": 46 } } }, @@ -61989,16 +62566,16 @@ "updateContext": null }, "value": 1, - "start": 4687, - "end": 4688, + "start": 4802, + "end": 4803, "loc": { "start": { - "line": 168, - "column": 50 + "line": 171, + "column": 46 }, - "end": { - "line": 168, - "column": 51 + "end": { + "line": 171, + "column": 47 } } }, @@ -62015,16 +62592,16 @@ "binop": null, "updateContext": null }, - "start": 4688, - "end": 4689, + "start": 4803, + "end": 4804, "loc": { "start": { - "line": 168, - "column": 51 + "line": 171, + "column": 47 }, "end": { - "line": 168, - "column": 52 + "line": 171, + "column": 48 } } }, @@ -62041,16 +62618,16 @@ "binop": null, "updateContext": null }, - "start": 4689, - "end": 4690, + "start": 4804, + "end": 4805, "loc": { "start": { - "line": 168, - "column": 52 + "line": 171, + "column": 48 }, "end": { - "line": 168, - "column": 53 + "line": 171, + "column": 49 } } }, @@ -62069,16 +62646,16 @@ "updateContext": null }, "value": "const", - "start": 4708, - "end": 4713, + "start": 4819, + "end": 4824, "loc": { "start": { - "line": 170, - "column": 16 + "line": 173, + "column": 12 }, "end": { - "line": 170, - "column": 21 + "line": 173, + "column": 17 } } }, @@ -62095,16 +62672,16 @@ "binop": null }, "value": "panning", - "start": 4714, - "end": 4721, + "start": 4825, + "end": 4832, "loc": { "start": { - "line": 170, - "column": 22 + "line": 173, + "column": 18 }, "end": { - "line": 170, - "column": 29 + "line": 173, + "column": 25 } } }, @@ -62122,16 +62699,16 @@ "updateContext": null }, "value": "=", - "start": 4722, - "end": 4723, + "start": 4833, + "end": 4834, "loc": { "start": { - "line": 170, - "column": 30 + "line": 173, + "column": 26 }, "end": { - "line": 170, - "column": 31 + "line": 173, + "column": 27 } } }, @@ -62148,16 +62725,16 @@ "binop": null }, "value": "keyDown", - "start": 4724, - "end": 4731, + "start": 4835, + "end": 4842, "loc": { "start": { - "line": 170, - "column": 32 + "line": 173, + "column": 28 }, "end": { - "line": 170, - "column": 39 + "line": 173, + "column": 35 } } }, @@ -62174,16 +62751,16 @@ "binop": null, "updateContext": null }, - "start": 4731, - "end": 4732, + "start": 4842, + "end": 4843, "loc": { "start": { - "line": 170, - "column": 39 + "line": 173, + "column": 35 }, "end": { - "line": 170, - "column": 40 + "line": 173, + "column": 36 } } }, @@ -62200,16 +62777,16 @@ "binop": null }, "value": "scene", - "start": 4732, - "end": 4737, + "start": 4843, + "end": 4848, "loc": { "start": { - "line": 170, - "column": 40 + "line": 173, + "column": 36 }, "end": { - "line": 170, - "column": 45 + "line": 173, + "column": 41 } } }, @@ -62226,16 +62803,16 @@ "binop": null, "updateContext": null }, - "start": 4737, - "end": 4738, + "start": 4848, + "end": 4849, "loc": { "start": { - "line": 170, - "column": 45 + "line": 173, + "column": 41 }, "end": { - "line": 170, - "column": 46 + "line": 173, + "column": 42 } } }, @@ -62252,16 +62829,16 @@ "binop": null }, "value": "input", - "start": 4738, - "end": 4743, + "start": 4849, + "end": 4854, "loc": { "start": { - "line": 170, - "column": 46 + "line": 173, + "column": 42 }, "end": { - "line": 170, - "column": 51 + "line": 173, + "column": 47 } } }, @@ -62278,16 +62855,16 @@ "binop": null, "updateContext": null }, - "start": 4743, - "end": 4744, + "start": 4854, + "end": 4855, "loc": { "start": { - "line": 170, - "column": 51 + "line": 173, + "column": 47 }, "end": { - "line": 170, - "column": 52 + "line": 173, + "column": 48 } } }, @@ -62304,16 +62881,16 @@ "binop": null }, "value": "KEY_SHIFT", - "start": 4744, - "end": 4753, + "start": 4855, + "end": 4864, "loc": { "start": { - "line": 170, - "column": 52 + "line": 173, + "column": 48 }, "end": { - "line": 170, - "column": 61 + "line": 173, + "column": 57 } } }, @@ -62330,16 +62907,16 @@ "binop": null, "updateContext": null }, - "start": 4753, - "end": 4754, + "start": 4864, + "end": 4865, "loc": { "start": { - "line": 170, - "column": 61 + "line": 173, + "column": 57 }, "end": { - "line": 170, - "column": 62 + "line": 173, + "column": 58 } } }, @@ -62357,16 +62934,16 @@ "updateContext": null }, "value": "||", - "start": 4755, - "end": 4757, + "start": 4866, + "end": 4868, "loc": { "start": { - "line": 170, - "column": 63 + "line": 173, + "column": 59 }, "end": { - "line": 170, - "column": 65 + "line": 173, + "column": 61 } } }, @@ -62383,16 +62960,16 @@ "binop": null }, "value": "configs", - "start": 4758, - "end": 4765, + "start": 4869, + "end": 4876, "loc": { "start": { - "line": 170, - "column": 66 + "line": 173, + "column": 62 }, "end": { - "line": 170, - "column": 73 + "line": 173, + "column": 69 } } }, @@ -62409,16 +62986,16 @@ "binop": null, "updateContext": null }, - "start": 4765, - "end": 4766, + "start": 4876, + "end": 4877, "loc": { "start": { - "line": 170, - "column": 73 + "line": 173, + "column": 69 }, "end": { - "line": 170, - "column": 74 + "line": 173, + "column": 70 } } }, @@ -62435,16 +63012,16 @@ "binop": null }, "value": "planView", - "start": 4766, - "end": 4774, + "start": 4877, + "end": 4885, "loc": { "start": { - "line": 170, - "column": 74 + "line": 173, + "column": 70 }, "end": { - "line": 170, - "column": 82 + "line": 173, + "column": 78 } } }, @@ -62462,16 +63039,16 @@ "updateContext": null }, "value": "||", - "start": 4775, - "end": 4777, + "start": 4886, + "end": 4888, "loc": { "start": { - "line": 170, - "column": 83 + "line": 173, + "column": 79 }, "end": { - "line": 170, - "column": 85 + "line": 173, + "column": 81 } } }, @@ -62487,16 +63064,16 @@ "postfix": false, "binop": null }, - "start": 4778, - "end": 4779, + "start": 4889, + "end": 4890, "loc": { "start": { - "line": 170, - "column": 86 + "line": 173, + "column": 82 }, "end": { - "line": 170, - "column": 87 + "line": 173, + "column": 83 } } }, @@ -62514,16 +63091,16 @@ "updateContext": null }, "value": "!", - "start": 4779, - "end": 4780, + "start": 4890, + "end": 4891, "loc": { "start": { - "line": 170, - "column": 87 + "line": 173, + "column": 83 }, "end": { - "line": 170, - "column": 88 + "line": 173, + "column": 84 } } }, @@ -62540,16 +63117,16 @@ "binop": null }, "value": "configs", - "start": 4780, - "end": 4787, + "start": 4891, + "end": 4898, "loc": { "start": { - "line": 170, - "column": 88 + "line": 173, + "column": 84 }, "end": { - "line": 170, - "column": 95 + "line": 173, + "column": 91 } } }, @@ -62566,16 +63143,16 @@ "binop": null, "updateContext": null }, - "start": 4787, - "end": 4788, + "start": 4898, + "end": 4899, "loc": { "start": { - "line": 170, - "column": 95 + "line": 173, + "column": 91 }, "end": { - "line": 170, - "column": 96 + "line": 173, + "column": 92 } } }, @@ -62592,16 +63169,16 @@ "binop": null }, "value": "panRightClick", - "start": 4788, - "end": 4801, + "start": 4899, + "end": 4912, "loc": { "start": { - "line": 170, - "column": 96 + "line": 173, + "column": 92 }, "end": { - "line": 170, - "column": 109 + "line": 173, + "column": 105 } } }, @@ -62619,16 +63196,16 @@ "updateContext": null }, "value": "&&", - "start": 4802, - "end": 4804, + "start": 4913, + "end": 4915, "loc": { "start": { - "line": 170, - "column": 110 + "line": 173, + "column": 106 }, "end": { - "line": 170, - "column": 112 + "line": 173, + "column": 108 } } }, @@ -62645,16 +63222,16 @@ "binop": null }, "value": "mouseDownMiddle", - "start": 4805, - "end": 4820, + "start": 4916, + "end": 4931, "loc": { "start": { - "line": 170, - "column": 113 + "line": 173, + "column": 109 }, "end": { - "line": 170, - "column": 128 + "line": 173, + "column": 124 } } }, @@ -62670,16 +63247,16 @@ "postfix": false, "binop": null }, - "start": 4820, - "end": 4821, + "start": 4931, + "end": 4932, "loc": { "start": { - "line": 170, - "column": 128 + "line": 173, + "column": 124 }, "end": { - "line": 170, - "column": 129 + "line": 173, + "column": 125 } } }, @@ -62697,16 +63274,16 @@ "updateContext": null }, "value": "||", - "start": 4822, - "end": 4824, + "start": 4933, + "end": 4935, "loc": { "start": { - "line": 170, - "column": 130 + "line": 173, + "column": 126 }, "end": { - "line": 170, - "column": 132 + "line": 173, + "column": 128 } } }, @@ -62722,16 +63299,16 @@ "postfix": false, "binop": null }, - "start": 4825, - "end": 4826, + "start": 4936, + "end": 4937, "loc": { "start": { - "line": 170, - "column": 133 + "line": 173, + "column": 129 }, "end": { - "line": 170, - "column": 134 + "line": 173, + "column": 130 } } }, @@ -62748,16 +63325,16 @@ "binop": null }, "value": "configs", - "start": 4826, - "end": 4833, + "start": 4937, + "end": 4944, "loc": { "start": { - "line": 170, - "column": 134 + "line": 173, + "column": 130 }, "end": { - "line": 170, - "column": 141 + "line": 173, + "column": 137 } } }, @@ -62774,16 +63351,16 @@ "binop": null, "updateContext": null }, - "start": 4833, - "end": 4834, + "start": 4944, + "end": 4945, "loc": { "start": { - "line": 170, - "column": 141 + "line": 173, + "column": 137 }, "end": { - "line": 170, - "column": 142 + "line": 173, + "column": 138 } } }, @@ -62800,16 +63377,16 @@ "binop": null }, "value": "panRightClick", - "start": 4834, - "end": 4847, + "start": 4945, + "end": 4958, "loc": { "start": { - "line": 170, - "column": 142 + "line": 173, + "column": 138 }, "end": { - "line": 170, - "column": 155 + "line": 173, + "column": 151 } } }, @@ -62827,16 +63404,16 @@ "updateContext": null }, "value": "&&", - "start": 4848, - "end": 4850, + "start": 4959, + "end": 4961, "loc": { "start": { - "line": 170, - "column": 156 + "line": 173, + "column": 152 }, "end": { - "line": 170, - "column": 158 + "line": 173, + "column": 154 } } }, @@ -62853,16 +63430,16 @@ "binop": null }, "value": "mouseDownRight", - "start": 4851, - "end": 4865, + "start": 4962, + "end": 4976, "loc": { "start": { - "line": 170, - "column": 159 + "line": 173, + "column": 155 }, "end": { - "line": 170, - "column": 173 + "line": 173, + "column": 169 } } }, @@ -62878,16 +63455,16 @@ "postfix": false, "binop": null }, - "start": 4865, - "end": 4866, + "start": 4976, + "end": 4977, "loc": { "start": { - "line": 170, - "column": 173 + "line": 173, + "column": 169 }, "end": { - "line": 170, - "column": 174 + "line": 173, + "column": 170 } } }, @@ -62904,16 +63481,16 @@ "binop": null, "updateContext": null }, - "start": 4866, - "end": 4867, + "start": 4977, + "end": 4978, "loc": { "start": { - "line": 170, - "column": 174 + "line": 173, + "column": 170 }, "end": { - "line": 170, - "column": 175 + "line": 173, + "column": 171 } } }, @@ -62932,16 +63509,16 @@ "updateContext": null }, "value": "if", - "start": 4885, - "end": 4887, + "start": 4992, + "end": 4994, "loc": { "start": { - "line": 172, - "column": 16 + "line": 175, + "column": 12 }, "end": { - "line": 172, - "column": 18 + "line": 175, + "column": 14 } } }, @@ -62957,16 +63534,16 @@ "postfix": false, "binop": null }, - "start": 4888, - "end": 4889, + "start": 4995, + "end": 4996, "loc": { "start": { - "line": 172, - "column": 19 + "line": 175, + "column": 15 }, "end": { - "line": 172, - "column": 20 + "line": 175, + "column": 16 } } }, @@ -62983,16 +63560,16 @@ "binop": null }, "value": "panning", - "start": 4889, - "end": 4896, + "start": 4996, + "end": 5003, "loc": { "start": { - "line": 172, - "column": 20 + "line": 175, + "column": 16 }, "end": { - "line": 172, - "column": 27 + "line": 175, + "column": 23 } } }, @@ -63008,16 +63585,16 @@ "postfix": false, "binop": null }, - "start": 4896, - "end": 4897, + "start": 5003, + "end": 5004, "loc": { "start": { - "line": 172, - "column": 27 + "line": 175, + "column": 23 }, "end": { - "line": 172, - "column": 28 + "line": 175, + "column": 24 } } }, @@ -63033,16 +63610,16 @@ "postfix": false, "binop": null }, - "start": 4898, - "end": 4899, + "start": 5005, + "end": 5006, "loc": { "start": { - "line": 172, - "column": 29 + "line": 175, + "column": 25 }, "end": { - "line": 172, - "column": 30 + "line": 175, + "column": 26 } } }, @@ -63061,16 +63638,16 @@ "updateContext": null }, "value": "const", - "start": 4921, - "end": 4926, + "start": 5024, + "end": 5029, "loc": { "start": { - "line": 174, - "column": 20 + "line": 177, + "column": 16 }, "end": { - "line": 174, - "column": 25 + "line": 177, + "column": 21 } } }, @@ -63087,16 +63664,16 @@ "binop": null }, "value": "xPanDelta", - "start": 4927, - "end": 4936, + "start": 5030, + "end": 5039, "loc": { "start": { - "line": 174, - "column": 26 + "line": 177, + "column": 22 }, "end": { - "line": 174, - "column": 35 + "line": 177, + "column": 31 } } }, @@ -63114,16 +63691,16 @@ "updateContext": null }, "value": "=", - "start": 4937, - "end": 4938, + "start": 5040, + "end": 5041, "loc": { "start": { - "line": 174, - "column": 36 + "line": 177, + "column": 32 }, "end": { - "line": 174, - "column": 37 + "line": 177, + "column": 33 } } }, @@ -63139,16 +63716,16 @@ "postfix": false, "binop": null }, - "start": 4939, - "end": 4940, + "start": 5042, + "end": 5043, "loc": { "start": { - "line": 174, - "column": 38 + "line": 177, + "column": 34 }, "end": { - "line": 174, - "column": 39 + "line": 177, + "column": 35 } } }, @@ -63165,16 +63742,16 @@ "binop": null }, "value": "x", - "start": 4940, - "end": 4941, + "start": 5043, + "end": 5044, "loc": { "start": { - "line": 174, - "column": 39 + "line": 177, + "column": 35 }, "end": { - "line": 174, - "column": 40 + "line": 177, + "column": 36 } } }, @@ -63192,16 +63769,16 @@ "updateContext": null }, "value": "-", - "start": 4942, - "end": 4943, + "start": 5045, + "end": 5046, "loc": { "start": { - "line": 174, - "column": 41 + "line": 177, + "column": 37 }, "end": { - "line": 174, - "column": 42 + "line": 177, + "column": 38 } } }, @@ -63218,16 +63795,16 @@ "binop": null }, "value": "lastX", - "start": 4944, - "end": 4949, + "start": 5047, + "end": 5052, "loc": { "start": { - "line": 174, - "column": 43 + "line": 177, + "column": 39 }, "end": { - "line": 174, - "column": 48 + "line": 177, + "column": 44 } } }, @@ -63243,16 +63820,16 @@ "postfix": false, "binop": null }, - "start": 4949, - "end": 4950, + "start": 5052, + "end": 5053, "loc": { "start": { - "line": 174, - "column": 48 + "line": 177, + "column": 44 }, "end": { - "line": 174, - "column": 49 + "line": 177, + "column": 45 } } }, @@ -63269,16 +63846,16 @@ "binop": null, "updateContext": null }, - "start": 4950, - "end": 4951, + "start": 5053, + "end": 5054, "loc": { "start": { - "line": 174, - "column": 49 + "line": 177, + "column": 45 }, "end": { - "line": 174, - "column": 50 + "line": 177, + "column": 46 } } }, @@ -63297,16 +63874,16 @@ "updateContext": null }, "value": "const", - "start": 4972, - "end": 4977, + "start": 5071, + "end": 5076, "loc": { "start": { - "line": 175, - "column": 20 + "line": 178, + "column": 16 }, "end": { - "line": 175, - "column": 25 + "line": 178, + "column": 21 } } }, @@ -63323,16 +63900,16 @@ "binop": null }, "value": "yPanDelta", - "start": 4978, - "end": 4987, + "start": 5077, + "end": 5086, "loc": { "start": { - "line": 175, - "column": 26 + "line": 178, + "column": 22 }, "end": { - "line": 175, - "column": 35 + "line": 178, + "column": 31 } } }, @@ -63350,16 +63927,16 @@ "updateContext": null }, "value": "=", - "start": 4988, - "end": 4989, + "start": 5087, + "end": 5088, "loc": { "start": { - "line": 175, - "column": 36 + "line": 178, + "column": 32 }, "end": { - "line": 175, - "column": 37 + "line": 178, + "column": 33 } } }, @@ -63375,16 +63952,16 @@ "postfix": false, "binop": null }, - "start": 4990, - "end": 4991, + "start": 5089, + "end": 5090, "loc": { "start": { - "line": 175, - "column": 38 + "line": 178, + "column": 34 }, "end": { - "line": 175, - "column": 39 + "line": 178, + "column": 35 } } }, @@ -63401,16 +63978,16 @@ "binop": null }, "value": "y", - "start": 4991, - "end": 4992, + "start": 5090, + "end": 5091, "loc": { "start": { - "line": 175, - "column": 39 + "line": 178, + "column": 35 }, "end": { - "line": 175, - "column": 40 + "line": 178, + "column": 36 } } }, @@ -63428,16 +64005,16 @@ "updateContext": null }, "value": "-", - "start": 4993, - "end": 4994, + "start": 5092, + "end": 5093, "loc": { "start": { - "line": 175, - "column": 41 + "line": 178, + "column": 37 }, "end": { - "line": 175, - "column": 42 + "line": 178, + "column": 38 } } }, @@ -63454,16 +64031,16 @@ "binop": null }, "value": "lastY", - "start": 4995, - "end": 5000, + "start": 5094, + "end": 5099, "loc": { "start": { - "line": 175, - "column": 43 + "line": 178, + "column": 39 }, "end": { - "line": 175, - "column": 48 + "line": 178, + "column": 44 } } }, @@ -63479,16 +64056,16 @@ "postfix": false, "binop": null }, - "start": 5000, - "end": 5001, + "start": 5099, + "end": 5100, "loc": { "start": { - "line": 175, - "column": 48 + "line": 178, + "column": 44 }, "end": { - "line": 175, - "column": 49 + "line": 178, + "column": 45 } } }, @@ -63505,16 +64082,16 @@ "binop": null, "updateContext": null }, - "start": 5001, - "end": 5002, + "start": 5100, + "end": 5101, "loc": { "start": { - "line": 175, - "column": 49 + "line": 178, + "column": 45 }, "end": { - "line": 175, - "column": 50 + "line": 178, + "column": 46 } } }, @@ -63533,16 +64110,16 @@ "updateContext": null }, "value": "const", - "start": 5024, - "end": 5029, + "start": 5119, + "end": 5124, "loc": { "start": { - "line": 177, - "column": 20 + "line": 180, + "column": 16 }, "end": { - "line": 177, - "column": 25 + "line": 180, + "column": 21 } } }, @@ -63559,16 +64136,16 @@ "binop": null }, "value": "camera", - "start": 5030, - "end": 5036, + "start": 5125, + "end": 5131, "loc": { "start": { - "line": 177, - "column": 26 + "line": 180, + "column": 22 }, "end": { - "line": 177, - "column": 32 + "line": 180, + "column": 28 } } }, @@ -63586,16 +64163,16 @@ "updateContext": null }, "value": "=", - "start": 5037, - "end": 5038, + "start": 5132, + "end": 5133, "loc": { "start": { - "line": 177, - "column": 33 + "line": 180, + "column": 29 }, "end": { - "line": 177, - "column": 34 + "line": 180, + "column": 30 } } }, @@ -63612,16 +64189,16 @@ "binop": null }, "value": "scene", - "start": 5039, - "end": 5044, + "start": 5134, + "end": 5139, "loc": { "start": { - "line": 177, - "column": 35 + "line": 180, + "column": 31 }, "end": { - "line": 177, - "column": 40 + "line": 180, + "column": 36 } } }, @@ -63638,16 +64215,16 @@ "binop": null, "updateContext": null }, - "start": 5044, - "end": 5045, + "start": 5139, + "end": 5140, "loc": { "start": { - "line": 177, - "column": 40 + "line": 180, + "column": 36 }, "end": { - "line": 177, - "column": 41 + "line": 180, + "column": 37 } } }, @@ -63664,16 +64241,16 @@ "binop": null }, "value": "camera", - "start": 5045, - "end": 5051, + "start": 5140, + "end": 5146, "loc": { "start": { - "line": 177, - "column": 41 + "line": 180, + "column": 37 }, "end": { - "line": 177, - "column": 47 + "line": 180, + "column": 43 } } }, @@ -63690,32 +64267,32 @@ "binop": null, "updateContext": null }, - "start": 5051, - "end": 5052, + "start": 5146, + "end": 5147, "loc": { "start": { - "line": 177, - "column": 47 + "line": 180, + "column": 43 }, "end": { - "line": 177, - "column": 48 + "line": 180, + "column": 44 } } }, { "type": "CommentLine", "value": " We use only canvasHeight here so that aspect ratio does not distort speed", - "start": 5074, - "end": 5150, + "start": 5165, + "end": 5241, "loc": { "start": { - "line": 179, - "column": 20 + "line": 182, + "column": 16 }, "end": { - "line": 179, - "column": 96 + "line": 182, + "column": 92 } } }, @@ -63734,16 +64311,16 @@ "updateContext": null }, "value": "if", - "start": 5172, - "end": 5174, + "start": 5259, + "end": 5261, "loc": { "start": { - "line": 181, - "column": 20 + "line": 184, + "column": 16 }, "end": { - "line": 181, - "column": 22 + "line": 184, + "column": 18 } } }, @@ -63759,16 +64336,16 @@ "postfix": false, "binop": null }, - "start": 5175, - "end": 5176, + "start": 5262, + "end": 5263, "loc": { "start": { - "line": 181, - "column": 23 + "line": 184, + "column": 19 }, "end": { - "line": 181, - "column": 24 + "line": 184, + "column": 20 } } }, @@ -63785,16 +64362,16 @@ "binop": null }, "value": "camera", - "start": 5176, - "end": 5182, + "start": 5263, + "end": 5269, "loc": { "start": { - "line": 181, - "column": 24 + "line": 184, + "column": 20 }, "end": { - "line": 181, - "column": 30 + "line": 184, + "column": 26 } } }, @@ -63811,16 +64388,16 @@ "binop": null, "updateContext": null }, - "start": 5182, - "end": 5183, + "start": 5269, + "end": 5270, "loc": { "start": { - "line": 181, - "column": 30 + "line": 184, + "column": 26 }, "end": { - "line": 181, - "column": 31 + "line": 184, + "column": 27 } } }, @@ -63837,16 +64414,16 @@ "binop": null }, "value": "projection", - "start": 5183, - "end": 5193, + "start": 5270, + "end": 5280, "loc": { "start": { - "line": 181, - "column": 31 + "line": 184, + "column": 27 }, "end": { - "line": 181, - "column": 41 + "line": 184, + "column": 37 } } }, @@ -63864,16 +64441,16 @@ "updateContext": null }, "value": "===", - "start": 5194, - "end": 5197, + "start": 5281, + "end": 5284, "loc": { "start": { - "line": 181, - "column": 42 + "line": 184, + "column": 38 }, "end": { - "line": 181, - "column": 45 + "line": 184, + "column": 41 } } }, @@ -63891,16 +64468,16 @@ "updateContext": null }, "value": "perspective", - "start": 5198, - "end": 5211, + "start": 5285, + "end": 5298, "loc": { "start": { - "line": 181, - "column": 46 + "line": 184, + "column": 42 }, "end": { - "line": 181, - "column": 59 + "line": 184, + "column": 55 } } }, @@ -63916,16 +64493,16 @@ "postfix": false, "binop": null }, - "start": 5211, - "end": 5212, + "start": 5298, + "end": 5299, "loc": { "start": { - "line": 181, - "column": 59 + "line": 184, + "column": 55 }, "end": { - "line": 181, - "column": 60 + "line": 184, + "column": 56 } } }, @@ -63941,16 +64518,16 @@ "postfix": false, "binop": null }, - "start": 5213, - "end": 5214, + "start": 5300, + "end": 5301, "loc": { "start": { - "line": 181, - "column": 61 + "line": 184, + "column": 57 }, "end": { - "line": 181, - "column": 62 + "line": 184, + "column": 58 } } }, @@ -63969,16 +64546,16 @@ "updateContext": null }, "value": "const", - "start": 5240, - "end": 5245, + "start": 5323, + "end": 5328, "loc": { "start": { - "line": 183, - "column": 24 + "line": 186, + "column": 20 }, "end": { - "line": 183, - "column": 29 + "line": 186, + "column": 25 } } }, @@ -63995,16 +64572,16 @@ "binop": null }, "value": "depth", - "start": 5246, - "end": 5251, + "start": 5329, + "end": 5334, "loc": { "start": { - "line": 183, - "column": 30 + "line": 186, + "column": 26 }, "end": { - "line": 183, - "column": 35 + "line": 186, + "column": 31 } } }, @@ -64022,16 +64599,16 @@ "updateContext": null }, "value": "=", - "start": 5252, - "end": 5253, + "start": 5335, + "end": 5336, "loc": { "start": { - "line": 183, - "column": 36 + "line": 186, + "column": 32 }, "end": { - "line": 183, - "column": 37 + "line": 186, + "column": 33 } } }, @@ -64048,16 +64625,16 @@ "binop": null }, "value": "Math", - "start": 5254, - "end": 5258, + "start": 5337, + "end": 5341, "loc": { "start": { - "line": 183, - "column": 38 + "line": 186, + "column": 34 }, "end": { - "line": 183, - "column": 42 + "line": 186, + "column": 38 } } }, @@ -64074,16 +64651,16 @@ "binop": null, "updateContext": null }, - "start": 5258, - "end": 5259, + "start": 5341, + "end": 5342, "loc": { "start": { - "line": 183, - "column": 42 + "line": 186, + "column": 38 }, "end": { - "line": 183, - "column": 43 + "line": 186, + "column": 39 } } }, @@ -64100,16 +64677,16 @@ "binop": null }, "value": "abs", - "start": 5259, - "end": 5262, + "start": 5342, + "end": 5345, "loc": { "start": { - "line": 183, - "column": 43 + "line": 186, + "column": 39 }, "end": { - "line": 183, - "column": 46 + "line": 186, + "column": 42 } } }, @@ -64125,16 +64702,16 @@ "postfix": false, "binop": null }, - "start": 5262, - "end": 5263, + "start": 5345, + "end": 5346, "loc": { "start": { - "line": 183, - "column": 46 + "line": 186, + "column": 42 }, "end": { - "line": 183, - "column": 47 + "line": 186, + "column": 43 } } }, @@ -64151,16 +64728,16 @@ "binop": null }, "value": "mouseDownPicked", - "start": 5263, - "end": 5278, + "start": 5346, + "end": 5361, "loc": { "start": { - "line": 183, - "column": 47 + "line": 186, + "column": 43 }, "end": { - "line": 183, - "column": 62 + "line": 186, + "column": 58 } } }, @@ -64177,16 +64754,16 @@ "binop": null, "updateContext": null }, - "start": 5279, - "end": 5280, + "start": 5362, + "end": 5363, "loc": { "start": { - "line": 183, - "column": 63 + "line": 186, + "column": 59 }, "end": { - "line": 183, - "column": 64 + "line": 186, + "column": 60 } } }, @@ -64203,16 +64780,16 @@ "binop": null }, "value": "math", - "start": 5281, - "end": 5285, + "start": 5364, + "end": 5368, "loc": { "start": { - "line": 183, - "column": 65 + "line": 186, + "column": 61 }, "end": { - "line": 183, - "column": 69 + "line": 186, + "column": 65 } } }, @@ -64229,16 +64806,16 @@ "binop": null, "updateContext": null }, - "start": 5285, - "end": 5286, + "start": 5368, + "end": 5369, "loc": { "start": { - "line": 183, - "column": 69 + "line": 186, + "column": 65 }, "end": { - "line": 183, - "column": 70 + "line": 186, + "column": 66 } } }, @@ -64255,16 +64832,16 @@ "binop": null }, "value": "lenVec3", - "start": 5286, - "end": 5293, + "start": 5369, + "end": 5376, "loc": { "start": { - "line": 183, - "column": 70 + "line": 186, + "column": 66 }, "end": { - "line": 183, - "column": 77 + "line": 186, + "column": 73 } } }, @@ -64280,16 +64857,16 @@ "postfix": false, "binop": null }, - "start": 5293, - "end": 5294, + "start": 5376, + "end": 5377, "loc": { "start": { - "line": 183, - "column": 77 + "line": 186, + "column": 73 }, "end": { - "line": 183, - "column": 78 + "line": 186, + "column": 74 } } }, @@ -64306,16 +64883,16 @@ "binop": null }, "value": "math", - "start": 5294, - "end": 5298, + "start": 5377, + "end": 5381, "loc": { "start": { - "line": 183, - "column": 78 + "line": 186, + "column": 74 }, "end": { - "line": 183, - "column": 82 + "line": 186, + "column": 78 } } }, @@ -64332,16 +64909,16 @@ "binop": null, "updateContext": null }, - "start": 5298, - "end": 5299, + "start": 5381, + "end": 5382, "loc": { "start": { - "line": 183, - "column": 82 + "line": 186, + "column": 78 }, "end": { - "line": 183, - "column": 83 + "line": 186, + "column": 79 } } }, @@ -64358,16 +64935,16 @@ "binop": null }, "value": "subVec3", - "start": 5299, - "end": 5306, + "start": 5382, + "end": 5389, "loc": { "start": { - "line": 183, - "column": 83 + "line": 186, + "column": 79 }, "end": { - "line": 183, - "column": 90 + "line": 186, + "column": 86 } } }, @@ -64383,16 +64960,16 @@ "postfix": false, "binop": null }, - "start": 5306, - "end": 5307, + "start": 5389, + "end": 5390, "loc": { "start": { - "line": 183, - "column": 90 + "line": 186, + "column": 86 }, "end": { - "line": 183, - "column": 91 + "line": 186, + "column": 87 } } }, @@ -64409,16 +64986,16 @@ "binop": null }, "value": "pickedWorldPos", - "start": 5307, - "end": 5321, + "start": 5390, + "end": 5404, "loc": { "start": { - "line": 183, - "column": 91 + "line": 186, + "column": 87 }, "end": { - "line": 183, - "column": 105 + "line": 186, + "column": 101 } } }, @@ -64435,16 +65012,16 @@ "binop": null, "updateContext": null }, - "start": 5321, - "end": 5322, + "start": 5404, + "end": 5405, "loc": { "start": { - "line": 183, - "column": 105 + "line": 186, + "column": 101 }, "end": { - "line": 183, - "column": 106 + "line": 186, + "column": 102 } } }, @@ -64461,16 +65038,16 @@ "binop": null }, "value": "scene", - "start": 5323, - "end": 5328, + "start": 5406, + "end": 5411, "loc": { "start": { - "line": 183, - "column": 107 + "line": 186, + "column": 103 }, "end": { - "line": 183, - "column": 112 + "line": 186, + "column": 108 } } }, @@ -64487,16 +65064,16 @@ "binop": null, "updateContext": null }, - "start": 5328, - "end": 5329, + "start": 5411, + "end": 5412, "loc": { "start": { - "line": 183, - "column": 112 + "line": 186, + "column": 108 }, "end": { - "line": 183, - "column": 113 + "line": 186, + "column": 109 } } }, @@ -64513,16 +65090,16 @@ "binop": null }, "value": "camera", - "start": 5329, - "end": 5335, + "start": 5412, + "end": 5418, "loc": { "start": { - "line": 183, - "column": 113 + "line": 186, + "column": 109 }, "end": { - "line": 183, - "column": 119 + "line": 186, + "column": 115 } } }, @@ -64539,16 +65116,16 @@ "binop": null, "updateContext": null }, - "start": 5335, - "end": 5336, + "start": 5418, + "end": 5419, "loc": { "start": { - "line": 183, - "column": 119 + "line": 186, + "column": 115 }, "end": { - "line": 183, - "column": 120 + "line": 186, + "column": 116 } } }, @@ -64565,16 +65142,16 @@ "binop": null }, "value": "eye", - "start": 5336, - "end": 5339, + "start": 5419, + "end": 5422, "loc": { "start": { - "line": 183, - "column": 120 + "line": 186, + "column": 116 }, "end": { - "line": 183, - "column": 123 + "line": 186, + "column": 119 } } }, @@ -64591,16 +65168,16 @@ "binop": null, "updateContext": null }, - "start": 5339, - "end": 5340, + "start": 5422, + "end": 5423, "loc": { "start": { - "line": 183, - "column": 123 + "line": 186, + "column": 119 }, "end": { - "line": 183, - "column": 124 + "line": 186, + "column": 120 } } }, @@ -64617,16 +65194,16 @@ "binop": null, "updateContext": null }, - "start": 5341, - "end": 5342, + "start": 5424, + "end": 5425, "loc": { "start": { - "line": 183, - "column": 125 + "line": 186, + "column": 121 }, "end": { - "line": 183, - "column": 126 + "line": 186, + "column": 122 } } }, @@ -64643,16 +65220,16 @@ "binop": null, "updateContext": null }, - "start": 5342, - "end": 5343, + "start": 5425, + "end": 5426, "loc": { "start": { - "line": 183, - "column": 126 + "line": 186, + "column": 122 }, "end": { - "line": 183, - "column": 127 + "line": 186, + "column": 123 } } }, @@ -64668,16 +65245,16 @@ "postfix": false, "binop": null }, - "start": 5343, - "end": 5344, + "start": 5426, + "end": 5427, "loc": { "start": { - "line": 183, - "column": 127 + "line": 186, + "column": 123 }, "end": { - "line": 183, - "column": 128 + "line": 186, + "column": 124 } } }, @@ -64693,16 +65270,16 @@ "postfix": false, "binop": null }, - "start": 5344, - "end": 5345, + "start": 5427, + "end": 5428, "loc": { "start": { - "line": 183, - "column": 128 + "line": 186, + "column": 124 }, "end": { - "line": 183, - "column": 129 + "line": 186, + "column": 125 } } }, @@ -64719,16 +65296,16 @@ "binop": null, "updateContext": null }, - "start": 5346, - "end": 5347, + "start": 5429, + "end": 5430, "loc": { "start": { - "line": 183, - "column": 130 + "line": 186, + "column": 126 }, "end": { - "line": 183, - "column": 131 + "line": 186, + "column": 127 } } }, @@ -64745,16 +65322,16 @@ "binop": null }, "value": "scene", - "start": 5348, - "end": 5353, + "start": 5431, + "end": 5436, "loc": { "start": { - "line": 183, - "column": 132 + "line": 186, + "column": 128 }, "end": { - "line": 183, - "column": 137 + "line": 186, + "column": 133 } } }, @@ -64771,16 +65348,16 @@ "binop": null, "updateContext": null }, - "start": 5353, - "end": 5354, + "start": 5436, + "end": 5437, "loc": { "start": { - "line": 183, - "column": 137 + "line": 186, + "column": 133 }, "end": { - "line": 183, - "column": 138 + "line": 186, + "column": 134 } } }, @@ -64797,16 +65374,16 @@ "binop": null }, "value": "camera", - "start": 5354, - "end": 5360, + "start": 5437, + "end": 5443, "loc": { "start": { - "line": 183, - "column": 138 + "line": 186, + "column": 134 }, "end": { - "line": 183, - "column": 144 + "line": 186, + "column": 140 } } }, @@ -64823,16 +65400,16 @@ "binop": null, "updateContext": null }, - "start": 5360, - "end": 5361, + "start": 5443, + "end": 5444, "loc": { "start": { - "line": 183, - "column": 144 + "line": 186, + "column": 140 }, "end": { - "line": 183, - "column": 145 + "line": 186, + "column": 141 } } }, @@ -64849,16 +65426,16 @@ "binop": null }, "value": "eyeLookDist", - "start": 5361, - "end": 5372, + "start": 5444, + "end": 5455, "loc": { "start": { - "line": 183, - "column": 145 + "line": 186, + "column": 141 }, "end": { - "line": 183, - "column": 156 + "line": 186, + "column": 152 } } }, @@ -64874,16 +65451,16 @@ "postfix": false, "binop": null }, - "start": 5372, - "end": 5373, + "start": 5455, + "end": 5456, "loc": { "start": { - "line": 183, - "column": 156 + "line": 186, + "column": 152 }, "end": { - "line": 183, - "column": 157 + "line": 186, + "column": 153 } } }, @@ -64900,16 +65477,16 @@ "binop": null, "updateContext": null }, - "start": 5373, - "end": 5374, + "start": 5456, + "end": 5457, "loc": { "start": { - "line": 183, - "column": 157 + "line": 186, + "column": 153 }, "end": { - "line": 183, - "column": 158 + "line": 186, + "column": 154 } } }, @@ -64928,16 +65505,16 @@ "updateContext": null }, "value": "const", - "start": 5399, - "end": 5404, + "start": 5478, + "end": 5483, "loc": { "start": { - "line": 184, - "column": 24 + "line": 187, + "column": 20 }, "end": { - "line": 184, - "column": 29 + "line": 187, + "column": 25 } } }, @@ -64954,16 +65531,16 @@ "binop": null }, "value": "targetDistance", - "start": 5405, - "end": 5419, + "start": 5484, + "end": 5498, "loc": { "start": { - "line": 184, - "column": 30 + "line": 187, + "column": 26 }, "end": { - "line": 184, - "column": 44 + "line": 187, + "column": 40 } } }, @@ -64981,16 +65558,16 @@ "updateContext": null }, "value": "=", - "start": 5420, - "end": 5421, + "start": 5499, + "end": 5500, "loc": { "start": { - "line": 184, - "column": 45 + "line": 187, + "column": 41 }, "end": { - "line": 184, - "column": 46 + "line": 187, + "column": 42 } } }, @@ -65007,16 +65584,16 @@ "binop": null }, "value": "depth", - "start": 5422, - "end": 5427, + "start": 5501, + "end": 5506, "loc": { "start": { - "line": 184, - "column": 47 + "line": 187, + "column": 43 }, "end": { - "line": 184, - "column": 52 + "line": 187, + "column": 48 } } }, @@ -65034,16 +65611,16 @@ "updateContext": null }, "value": "*", - "start": 5428, - "end": 5429, + "start": 5507, + "end": 5508, "loc": { "start": { - "line": 184, - "column": 53 + "line": 187, + "column": 49 }, "end": { - "line": 184, - "column": 54 + "line": 187, + "column": 50 } } }, @@ -65060,16 +65637,16 @@ "binop": null }, "value": "Math", - "start": 5430, - "end": 5434, + "start": 5509, + "end": 5513, "loc": { "start": { - "line": 184, - "column": 55 + "line": 187, + "column": 51 }, "end": { - "line": 184, - "column": 59 + "line": 187, + "column": 55 } } }, @@ -65086,16 +65663,16 @@ "binop": null, "updateContext": null }, - "start": 5434, - "end": 5435, + "start": 5513, + "end": 5514, "loc": { "start": { - "line": 184, - "column": 59 + "line": 187, + "column": 55 }, "end": { - "line": 184, - "column": 60 + "line": 187, + "column": 56 } } }, @@ -65112,16 +65689,16 @@ "binop": null }, "value": "tan", - "start": 5435, - "end": 5438, + "start": 5514, + "end": 5517, "loc": { "start": { - "line": 184, - "column": 60 + "line": 187, + "column": 56 }, "end": { - "line": 184, - "column": 63 + "line": 187, + "column": 59 } } }, @@ -65137,16 +65714,16 @@ "postfix": false, "binop": null }, - "start": 5438, - "end": 5439, + "start": 5517, + "end": 5518, "loc": { "start": { - "line": 184, - "column": 63 + "line": 187, + "column": 59 }, "end": { - "line": 184, - "column": 64 + "line": 187, + "column": 60 } } }, @@ -65162,16 +65739,16 @@ "postfix": false, "binop": null }, - "start": 5439, - "end": 5440, + "start": 5518, + "end": 5519, "loc": { "start": { - "line": 184, - "column": 64 + "line": 187, + "column": 60 }, "end": { - "line": 184, - "column": 65 + "line": 187, + "column": 61 } } }, @@ -65188,16 +65765,16 @@ "binop": null }, "value": "camera", - "start": 5440, - "end": 5446, + "start": 5519, + "end": 5525, "loc": { "start": { - "line": 184, - "column": 65 + "line": 187, + "column": 61 }, "end": { - "line": 184, - "column": 71 + "line": 187, + "column": 67 } } }, @@ -65214,16 +65791,16 @@ "binop": null, "updateContext": null }, - "start": 5446, - "end": 5447, + "start": 5525, + "end": 5526, "loc": { "start": { - "line": 184, - "column": 71 + "line": 187, + "column": 67 }, "end": { - "line": 184, - "column": 72 + "line": 187, + "column": 68 } } }, @@ -65240,16 +65817,16 @@ "binop": null }, "value": "perspective", - "start": 5447, - "end": 5458, + "start": 5526, + "end": 5537, "loc": { "start": { - "line": 184, - "column": 72 + "line": 187, + "column": 68 }, "end": { - "line": 184, - "column": 83 + "line": 187, + "column": 79 } } }, @@ -65266,16 +65843,16 @@ "binop": null, "updateContext": null }, - "start": 5458, - "end": 5459, + "start": 5537, + "end": 5538, "loc": { "start": { - "line": 184, - "column": 83 + "line": 187, + "column": 79 }, "end": { - "line": 184, - "column": 84 + "line": 187, + "column": 80 } } }, @@ -65292,16 +65869,16 @@ "binop": null }, "value": "fov", - "start": 5459, - "end": 5462, + "start": 5538, + "end": 5541, "loc": { "start": { - "line": 184, - "column": 84 + "line": 187, + "column": 80 }, "end": { - "line": 184, - "column": 87 + "line": 187, + "column": 83 } } }, @@ -65319,16 +65896,16 @@ "updateContext": null }, "value": "/", - "start": 5463, - "end": 5464, + "start": 5542, + "end": 5543, "loc": { "start": { - "line": 184, - "column": 88 + "line": 187, + "column": 84 }, "end": { - "line": 184, - "column": 89 + "line": 187, + "column": 85 } } }, @@ -65346,16 +65923,16 @@ "updateContext": null }, "value": 2, - "start": 5465, - "end": 5466, + "start": 5544, + "end": 5545, "loc": { "start": { - "line": 184, - "column": 90 + "line": 187, + "column": 86 }, "end": { - "line": 184, - "column": 91 + "line": 187, + "column": 87 } } }, @@ -65371,16 +65948,16 @@ "postfix": false, "binop": null }, - "start": 5466, - "end": 5467, + "start": 5545, + "end": 5546, "loc": { "start": { - "line": 184, - "column": 91 + "line": 187, + "column": 87 }, "end": { - "line": 184, - "column": 92 + "line": 187, + "column": 88 } } }, @@ -65398,16 +65975,16 @@ "updateContext": null }, "value": "*", - "start": 5468, - "end": 5469, + "start": 5547, + "end": 5548, "loc": { "start": { - "line": 184, - "column": 93 + "line": 187, + "column": 89 }, "end": { - "line": 184, - "column": 94 + "line": 187, + "column": 90 } } }, @@ -65424,16 +66001,16 @@ "binop": null }, "value": "Math", - "start": 5470, - "end": 5474, + "start": 5549, + "end": 5553, "loc": { "start": { - "line": 184, - "column": 95 + "line": 187, + "column": 91 }, "end": { - "line": 184, - "column": 99 + "line": 187, + "column": 95 } } }, @@ -65450,16 +66027,16 @@ "binop": null, "updateContext": null }, - "start": 5474, - "end": 5475, + "start": 5553, + "end": 5554, "loc": { "start": { - "line": 184, - "column": 99 + "line": 187, + "column": 95 }, "end": { - "line": 184, - "column": 100 + "line": 187, + "column": 96 } } }, @@ -65476,16 +66053,16 @@ "binop": null }, "value": "PI", - "start": 5475, - "end": 5477, + "start": 5554, + "end": 5556, "loc": { "start": { - "line": 184, - "column": 100 + "line": 187, + "column": 96 }, "end": { - "line": 184, - "column": 102 + "line": 187, + "column": 98 } } }, @@ -65503,16 +66080,16 @@ "updateContext": null }, "value": "/", - "start": 5478, - "end": 5479, + "start": 5557, + "end": 5558, "loc": { "start": { - "line": 184, - "column": 103 + "line": 187, + "column": 99 }, "end": { - "line": 184, - "column": 104 + "line": 187, + "column": 100 } } }, @@ -65530,16 +66107,16 @@ "updateContext": null }, "value": 180, - "start": 5480, - "end": 5485, + "start": 5559, + "end": 5564, "loc": { "start": { - "line": 184, - "column": 105 + "line": 187, + "column": 101 }, "end": { - "line": 184, - "column": 110 + "line": 187, + "column": 106 } } }, @@ -65555,16 +66132,16 @@ "postfix": false, "binop": null }, - "start": 5485, - "end": 5486, + "start": 5564, + "end": 5565, "loc": { "start": { - "line": 184, - "column": 110 + "line": 187, + "column": 106 }, "end": { - "line": 184, - "column": 111 + "line": 187, + "column": 107 } } }, @@ -65581,16 +66158,16 @@ "binop": null, "updateContext": null }, - "start": 5486, - "end": 5487, + "start": 5565, + "end": 5566, "loc": { "start": { - "line": 184, - "column": 111 + "line": 187, + "column": 107 }, "end": { - "line": 184, - "column": 112 + "line": 187, + "column": 108 } } }, @@ -65607,16 +66184,16 @@ "binop": null }, "value": "updates", - "start": 5513, - "end": 5520, + "start": 5588, + "end": 5595, "loc": { "start": { - "line": 186, - "column": 24 + "line": 189, + "column": 20 }, "end": { - "line": 186, - "column": 31 + "line": 189, + "column": 27 } } }, @@ -65633,16 +66210,16 @@ "binop": null, "updateContext": null }, - "start": 5520, - "end": 5521, + "start": 5595, + "end": 5596, "loc": { "start": { - "line": 186, - "column": 31 + "line": 189, + "column": 27 }, "end": { - "line": 186, - "column": 32 + "line": 189, + "column": 28 } } }, @@ -65659,16 +66236,16 @@ "binop": null }, "value": "panDeltaX", - "start": 5521, - "end": 5530, + "start": 5596, + "end": 5605, "loc": { "start": { - "line": 186, - "column": 32 + "line": 189, + "column": 28 }, "end": { - "line": 186, - "column": 41 + "line": 189, + "column": 37 } } }, @@ -65686,16 +66263,16 @@ "updateContext": null }, "value": "+=", - "start": 5531, - "end": 5533, + "start": 5606, + "end": 5608, "loc": { "start": { - "line": 186, - "column": 42 + "line": 189, + "column": 38 }, "end": { - "line": 186, - "column": 44 + "line": 189, + "column": 40 } } }, @@ -65711,16 +66288,16 @@ "postfix": false, "binop": null }, - "start": 5534, - "end": 5535, + "start": 5609, + "end": 5610, "loc": { "start": { - "line": 186, - "column": 45 + "line": 189, + "column": 41 }, "end": { - "line": 186, - "column": 46 + "line": 189, + "column": 42 } } }, @@ -65738,16 +66315,16 @@ "updateContext": null }, "value": 1.5, - "start": 5535, - "end": 5538, + "start": 5610, + "end": 5613, "loc": { "start": { - "line": 186, - "column": 46 + "line": 189, + "column": 42 }, "end": { - "line": 186, - "column": 49 + "line": 189, + "column": 45 } } }, @@ -65765,16 +66342,16 @@ "updateContext": null }, "value": "*", - "start": 5539, - "end": 5540, + "start": 5614, + "end": 5615, "loc": { "start": { - "line": 186, - "column": 50 + "line": 189, + "column": 46 }, "end": { - "line": 186, - "column": 51 + "line": 189, + "column": 47 } } }, @@ -65791,16 +66368,16 @@ "binop": null }, "value": "xPanDelta", - "start": 5541, - "end": 5550, + "start": 5616, + "end": 5625, "loc": { "start": { - "line": 186, - "column": 52 + "line": 189, + "column": 48 }, "end": { - "line": 186, - "column": 61 + "line": 189, + "column": 57 } } }, @@ -65818,16 +66395,16 @@ "updateContext": null }, "value": "*", - "start": 5551, - "end": 5552, + "start": 5626, + "end": 5627, "loc": { "start": { - "line": 186, - "column": 62 + "line": 189, + "column": 58 }, "end": { - "line": 186, - "column": 63 + "line": 189, + "column": 59 } } }, @@ -65844,16 +66421,16 @@ "binop": null }, "value": "targetDistance", - "start": 5553, - "end": 5567, + "start": 5628, + "end": 5642, "loc": { "start": { - "line": 186, - "column": 64 + "line": 189, + "column": 60 }, "end": { - "line": 186, - "column": 78 + "line": 189, + "column": 74 } } }, @@ -65871,16 +66448,16 @@ "updateContext": null }, "value": "/", - "start": 5568, - "end": 5569, + "start": 5643, + "end": 5644, "loc": { "start": { - "line": 186, - "column": 79 + "line": 189, + "column": 75 }, "end": { - "line": 186, - "column": 80 + "line": 189, + "column": 76 } } }, @@ -65897,16 +66474,16 @@ "binop": null }, "value": "canvasHeight", - "start": 5570, - "end": 5582, + "start": 5645, + "end": 5657, "loc": { "start": { - "line": 186, - "column": 81 + "line": 189, + "column": 77 }, "end": { - "line": 186, - "column": 93 + "line": 189, + "column": 89 } } }, @@ -65922,16 +66499,16 @@ "postfix": false, "binop": null }, - "start": 5582, - "end": 5583, + "start": 5657, + "end": 5658, "loc": { "start": { - "line": 186, - "column": 93 + "line": 189, + "column": 89 }, "end": { - "line": 186, - "column": 94 + "line": 189, + "column": 90 } } }, @@ -65948,16 +66525,16 @@ "binop": null, "updateContext": null }, - "start": 5583, - "end": 5584, + "start": 5658, + "end": 5659, "loc": { "start": { - "line": 186, - "column": 94 + "line": 189, + "column": 90 }, "end": { - "line": 186, - "column": 95 + "line": 189, + "column": 91 } } }, @@ -65974,16 +66551,16 @@ "binop": null }, "value": "updates", - "start": 5609, - "end": 5616, + "start": 5680, + "end": 5687, "loc": { "start": { - "line": 187, - "column": 24 + "line": 190, + "column": 20 }, "end": { - "line": 187, - "column": 31 + "line": 190, + "column": 27 } } }, @@ -66000,16 +66577,16 @@ "binop": null, "updateContext": null }, - "start": 5616, - "end": 5617, + "start": 5687, + "end": 5688, "loc": { "start": { - "line": 187, - "column": 31 + "line": 190, + "column": 27 }, "end": { - "line": 187, - "column": 32 + "line": 190, + "column": 28 } } }, @@ -66026,16 +66603,16 @@ "binop": null }, "value": "panDeltaY", - "start": 5617, - "end": 5626, + "start": 5688, + "end": 5697, "loc": { "start": { - "line": 187, - "column": 32 + "line": 190, + "column": 28 }, "end": { - "line": 187, - "column": 41 + "line": 190, + "column": 37 } } }, @@ -66053,16 +66630,16 @@ "updateContext": null }, "value": "+=", - "start": 5627, - "end": 5629, + "start": 5698, + "end": 5700, "loc": { "start": { - "line": 187, - "column": 42 + "line": 190, + "column": 38 }, "end": { - "line": 187, - "column": 44 + "line": 190, + "column": 40 } } }, @@ -66078,16 +66655,16 @@ "postfix": false, "binop": null }, - "start": 5630, - "end": 5631, + "start": 5701, + "end": 5702, "loc": { "start": { - "line": 187, - "column": 45 + "line": 190, + "column": 41 }, "end": { - "line": 187, - "column": 46 + "line": 190, + "column": 42 } } }, @@ -66105,16 +66682,16 @@ "updateContext": null }, "value": 1.5, - "start": 5631, - "end": 5634, + "start": 5702, + "end": 5705, "loc": { "start": { - "line": 187, - "column": 46 + "line": 190, + "column": 42 }, "end": { - "line": 187, - "column": 49 + "line": 190, + "column": 45 } } }, @@ -66132,16 +66709,16 @@ "updateContext": null }, "value": "*", - "start": 5635, - "end": 5636, + "start": 5706, + "end": 5707, "loc": { "start": { - "line": 187, - "column": 50 + "line": 190, + "column": 46 }, "end": { - "line": 187, - "column": 51 + "line": 190, + "column": 47 } } }, @@ -66158,16 +66735,16 @@ "binop": null }, "value": "yPanDelta", - "start": 5637, - "end": 5646, + "start": 5708, + "end": 5717, "loc": { "start": { - "line": 187, - "column": 52 + "line": 190, + "column": 48 }, "end": { - "line": 187, - "column": 61 + "line": 190, + "column": 57 } } }, @@ -66185,16 +66762,16 @@ "updateContext": null }, "value": "*", - "start": 5647, - "end": 5648, + "start": 5718, + "end": 5719, "loc": { "start": { - "line": 187, - "column": 62 + "line": 190, + "column": 58 }, "end": { - "line": 187, - "column": 63 + "line": 190, + "column": 59 } } }, @@ -66211,16 +66788,16 @@ "binop": null }, "value": "targetDistance", - "start": 5649, - "end": 5663, + "start": 5720, + "end": 5734, "loc": { "start": { - "line": 187, - "column": 64 + "line": 190, + "column": 60 }, "end": { - "line": 187, - "column": 78 + "line": 190, + "column": 74 } } }, @@ -66238,16 +66815,16 @@ "updateContext": null }, "value": "/", - "start": 5664, - "end": 5665, + "start": 5735, + "end": 5736, "loc": { "start": { - "line": 187, - "column": 79 + "line": 190, + "column": 75 }, "end": { - "line": 187, - "column": 80 + "line": 190, + "column": 76 } } }, @@ -66264,16 +66841,16 @@ "binop": null }, "value": "canvasHeight", - "start": 5666, - "end": 5678, + "start": 5737, + "end": 5749, "loc": { "start": { - "line": 187, - "column": 81 + "line": 190, + "column": 77 }, "end": { - "line": 187, - "column": 93 + "line": 190, + "column": 89 } } }, @@ -66289,16 +66866,16 @@ "postfix": false, "binop": null }, - "start": 5678, - "end": 5679, + "start": 5749, + "end": 5750, "loc": { "start": { - "line": 187, - "column": 93 + "line": 190, + "column": 89 }, "end": { - "line": 187, - "column": 94 + "line": 190, + "column": 90 } } }, @@ -66315,16 +66892,16 @@ "binop": null, "updateContext": null }, - "start": 5679, - "end": 5680, + "start": 5750, + "end": 5751, "loc": { "start": { - "line": 187, - "column": 94 + "line": 190, + "column": 90 }, "end": { - "line": 187, - "column": 95 + "line": 190, + "column": 91 } } }, @@ -66340,16 +66917,16 @@ "postfix": false, "binop": null }, - "start": 5702, - "end": 5703, + "start": 5769, + "end": 5770, "loc": { "start": { - "line": 189, - "column": 20 + "line": 192, + "column": 16 }, "end": { - "line": 189, - "column": 21 + "line": 192, + "column": 17 } } }, @@ -66368,16 +66945,16 @@ "updateContext": null }, "value": "else", - "start": 5704, - "end": 5708, + "start": 5771, + "end": 5775, "loc": { "start": { - "line": 189, - "column": 22 + "line": 192, + "column": 18 }, "end": { - "line": 189, - "column": 26 + "line": 192, + "column": 22 } } }, @@ -66393,16 +66970,16 @@ "postfix": false, "binop": null }, - "start": 5709, - "end": 5710, + "start": 5776, + "end": 5777, "loc": { "start": { - "line": 189, - "column": 27 + "line": 192, + "column": 23 }, "end": { - "line": 189, - "column": 28 + "line": 192, + "column": 24 } } }, @@ -66419,16 +66996,16 @@ "binop": null }, "value": "updates", - "start": 5736, - "end": 5743, + "start": 5799, + "end": 5806, "loc": { "start": { - "line": 191, - "column": 24 + "line": 194, + "column": 20 }, "end": { - "line": 191, - "column": 31 + "line": 194, + "column": 27 } } }, @@ -66445,16 +67022,16 @@ "binop": null, "updateContext": null }, - "start": 5743, - "end": 5744, + "start": 5806, + "end": 5807, "loc": { "start": { - "line": 191, - "column": 31 + "line": 194, + "column": 27 }, "end": { - "line": 191, - "column": 32 + "line": 194, + "column": 28 } } }, @@ -66471,16 +67048,16 @@ "binop": null }, "value": "panDeltaX", - "start": 5744, - "end": 5753, + "start": 5807, + "end": 5816, "loc": { "start": { - "line": 191, - "column": 32 + "line": 194, + "column": 28 }, "end": { - "line": 191, - "column": 41 + "line": 194, + "column": 37 } } }, @@ -66498,16 +67075,16 @@ "updateContext": null }, "value": "+=", - "start": 5754, - "end": 5756, + "start": 5817, + "end": 5819, "loc": { "start": { - "line": 191, - "column": 42 + "line": 194, + "column": 38 }, "end": { - "line": 191, - "column": 44 + "line": 194, + "column": 40 } } }, @@ -66525,16 +67102,16 @@ "updateContext": null }, "value": 0.5, - "start": 5757, - "end": 5760, + "start": 5820, + "end": 5823, "loc": { "start": { - "line": 191, - "column": 45 + "line": 194, + "column": 41 }, "end": { - "line": 191, - "column": 48 + "line": 194, + "column": 44 } } }, @@ -66552,16 +67129,16 @@ "updateContext": null }, "value": "*", - "start": 5761, - "end": 5762, + "start": 5824, + "end": 5825, "loc": { "start": { - "line": 191, - "column": 49 + "line": 194, + "column": 45 }, "end": { - "line": 191, - "column": 50 + "line": 194, + "column": 46 } } }, @@ -66578,16 +67155,16 @@ "binop": null }, "value": "camera", - "start": 5763, - "end": 5769, + "start": 5826, + "end": 5832, "loc": { "start": { - "line": 191, - "column": 51 + "line": 194, + "column": 47 }, "end": { - "line": 191, - "column": 57 + "line": 194, + "column": 53 } } }, @@ -66604,16 +67181,16 @@ "binop": null, "updateContext": null }, - "start": 5769, - "end": 5770, + "start": 5832, + "end": 5833, "loc": { "start": { - "line": 191, - "column": 57 + "line": 194, + "column": 53 }, "end": { - "line": 191, - "column": 58 + "line": 194, + "column": 54 } } }, @@ -66630,16 +67207,16 @@ "binop": null }, "value": "ortho", - "start": 5770, - "end": 5775, + "start": 5833, + "end": 5838, "loc": { "start": { - "line": 191, - "column": 58 + "line": 194, + "column": 54 }, "end": { - "line": 191, - "column": 63 + "line": 194, + "column": 59 } } }, @@ -66656,16 +67233,16 @@ "binop": null, "updateContext": null }, - "start": 5775, - "end": 5776, + "start": 5838, + "end": 5839, "loc": { "start": { - "line": 191, - "column": 63 + "line": 194, + "column": 59 }, "end": { - "line": 191, - "column": 64 + "line": 194, + "column": 60 } } }, @@ -66682,16 +67259,16 @@ "binop": null }, "value": "scale", - "start": 5776, - "end": 5781, + "start": 5839, + "end": 5844, "loc": { "start": { - "line": 191, - "column": 64 + "line": 194, + "column": 60 }, "end": { - "line": 191, - "column": 69 + "line": 194, + "column": 65 } } }, @@ -66709,16 +67286,16 @@ "updateContext": null }, "value": "*", - "start": 5782, - "end": 5783, + "start": 5845, + "end": 5846, "loc": { "start": { - "line": 191, - "column": 70 + "line": 194, + "column": 66 }, "end": { - "line": 191, - "column": 71 + "line": 194, + "column": 67 } } }, @@ -66734,16 +67311,16 @@ "postfix": false, "binop": null }, - "start": 5784, - "end": 5785, + "start": 5847, + "end": 5848, "loc": { "start": { - "line": 191, - "column": 72 + "line": 194, + "column": 68 }, "end": { - "line": 191, - "column": 73 + "line": 194, + "column": 69 } } }, @@ -66760,16 +67337,16 @@ "binop": null }, "value": "xPanDelta", - "start": 5785, - "end": 5794, + "start": 5848, + "end": 5857, "loc": { "start": { - "line": 191, - "column": 73 + "line": 194, + "column": 69 }, "end": { - "line": 191, - "column": 82 + "line": 194, + "column": 78 } } }, @@ -66787,16 +67364,16 @@ "updateContext": null }, "value": "/", - "start": 5795, - "end": 5796, + "start": 5858, + "end": 5859, "loc": { "start": { - "line": 191, - "column": 83 + "line": 194, + "column": 79 }, "end": { - "line": 191, - "column": 84 + "line": 194, + "column": 80 } } }, @@ -66813,16 +67390,16 @@ "binop": null }, "value": "canvasHeight", - "start": 5797, - "end": 5809, + "start": 5860, + "end": 5872, "loc": { "start": { - "line": 191, - "column": 85 + "line": 194, + "column": 81 }, "end": { - "line": 191, - "column": 97 + "line": 194, + "column": 93 } } }, @@ -66838,16 +67415,16 @@ "postfix": false, "binop": null }, - "start": 5809, - "end": 5810, + "start": 5872, + "end": 5873, "loc": { "start": { - "line": 191, - "column": 97 + "line": 194, + "column": 93 }, "end": { - "line": 191, - "column": 98 + "line": 194, + "column": 94 } } }, @@ -66864,16 +67441,16 @@ "binop": null, "updateContext": null }, - "start": 5810, - "end": 5811, + "start": 5873, + "end": 5874, "loc": { "start": { - "line": 191, - "column": 98 + "line": 194, + "column": 94 }, "end": { - "line": 191, - "column": 99 + "line": 194, + "column": 95 } } }, @@ -66890,16 +67467,16 @@ "binop": null }, "value": "updates", - "start": 5836, - "end": 5843, + "start": 5895, + "end": 5902, "loc": { "start": { - "line": 192, - "column": 24 + "line": 195, + "column": 20 }, "end": { - "line": 192, - "column": 31 + "line": 195, + "column": 27 } } }, @@ -66916,16 +67493,16 @@ "binop": null, "updateContext": null }, - "start": 5843, - "end": 5844, + "start": 5902, + "end": 5903, "loc": { "start": { - "line": 192, - "column": 31 + "line": 195, + "column": 27 }, "end": { - "line": 192, - "column": 32 + "line": 195, + "column": 28 } } }, @@ -66942,16 +67519,16 @@ "binop": null }, "value": "panDeltaY", - "start": 5844, - "end": 5853, + "start": 5903, + "end": 5912, "loc": { "start": { - "line": 192, - "column": 32 + "line": 195, + "column": 28 }, "end": { - "line": 192, - "column": 41 + "line": 195, + "column": 37 } } }, @@ -66969,16 +67546,16 @@ "updateContext": null }, "value": "+=", - "start": 5854, - "end": 5856, + "start": 5913, + "end": 5915, "loc": { "start": { - "line": 192, - "column": 42 + "line": 195, + "column": 38 }, "end": { - "line": 192, - "column": 44 + "line": 195, + "column": 40 } } }, @@ -66996,16 +67573,16 @@ "updateContext": null }, "value": 0.5, - "start": 5857, - "end": 5860, + "start": 5916, + "end": 5919, "loc": { "start": { - "line": 192, - "column": 45 + "line": 195, + "column": 41 }, "end": { - "line": 192, - "column": 48 + "line": 195, + "column": 44 } } }, @@ -67023,16 +67600,16 @@ "updateContext": null }, "value": "*", - "start": 5861, - "end": 5862, + "start": 5920, + "end": 5921, "loc": { "start": { - "line": 192, - "column": 49 + "line": 195, + "column": 45 }, "end": { - "line": 192, - "column": 50 + "line": 195, + "column": 46 } } }, @@ -67049,16 +67626,16 @@ "binop": null }, "value": "camera", - "start": 5863, - "end": 5869, + "start": 5922, + "end": 5928, "loc": { "start": { - "line": 192, - "column": 51 + "line": 195, + "column": 47 }, "end": { - "line": 192, - "column": 57 + "line": 195, + "column": 53 } } }, @@ -67075,16 +67652,16 @@ "binop": null, "updateContext": null }, - "start": 5869, - "end": 5870, + "start": 5928, + "end": 5929, "loc": { "start": { - "line": 192, - "column": 57 + "line": 195, + "column": 53 }, "end": { - "line": 192, - "column": 58 + "line": 195, + "column": 54 } } }, @@ -67101,16 +67678,16 @@ "binop": null }, "value": "ortho", - "start": 5870, - "end": 5875, + "start": 5929, + "end": 5934, "loc": { "start": { - "line": 192, - "column": 58 + "line": 195, + "column": 54 }, "end": { - "line": 192, - "column": 63 + "line": 195, + "column": 59 } } }, @@ -67127,16 +67704,16 @@ "binop": null, "updateContext": null }, - "start": 5875, - "end": 5876, + "start": 5934, + "end": 5935, "loc": { "start": { - "line": 192, - "column": 63 + "line": 195, + "column": 59 }, "end": { - "line": 192, - "column": 64 + "line": 195, + "column": 60 } } }, @@ -67153,16 +67730,16 @@ "binop": null }, "value": "scale", - "start": 5876, - "end": 5881, + "start": 5935, + "end": 5940, "loc": { "start": { - "line": 192, - "column": 64 + "line": 195, + "column": 60 }, "end": { - "line": 192, - "column": 69 + "line": 195, + "column": 65 } } }, @@ -67180,16 +67757,16 @@ "updateContext": null }, "value": "*", - "start": 5882, - "end": 5883, + "start": 5941, + "end": 5942, "loc": { "start": { - "line": 192, - "column": 70 + "line": 195, + "column": 66 }, "end": { - "line": 192, - "column": 71 + "line": 195, + "column": 67 } } }, @@ -67205,16 +67782,16 @@ "postfix": false, "binop": null }, - "start": 5884, - "end": 5885, + "start": 5943, + "end": 5944, "loc": { "start": { - "line": 192, - "column": 72 + "line": 195, + "column": 68 }, "end": { - "line": 192, - "column": 73 + "line": 195, + "column": 69 } } }, @@ -67231,16 +67808,16 @@ "binop": null }, "value": "yPanDelta", - "start": 5885, - "end": 5894, + "start": 5944, + "end": 5953, "loc": { "start": { - "line": 192, - "column": 73 + "line": 195, + "column": 69 }, "end": { - "line": 192, - "column": 82 + "line": 195, + "column": 78 } } }, @@ -67258,16 +67835,16 @@ "updateContext": null }, "value": "/", - "start": 5895, - "end": 5896, + "start": 5954, + "end": 5955, "loc": { "start": { - "line": 192, - "column": 83 + "line": 195, + "column": 79 }, "end": { - "line": 192, - "column": 84 + "line": 195, + "column": 80 } } }, @@ -67284,16 +67861,16 @@ "binop": null }, "value": "canvasHeight", - "start": 5897, - "end": 5909, + "start": 5956, + "end": 5968, "loc": { "start": { - "line": 192, - "column": 85 + "line": 195, + "column": 81 }, "end": { - "line": 192, - "column": 97 + "line": 195, + "column": 93 } } }, @@ -67309,16 +67886,16 @@ "postfix": false, "binop": null }, - "start": 5909, - "end": 5910, + "start": 5968, + "end": 5969, "loc": { "start": { - "line": 192, - "column": 97 + "line": 195, + "column": 93 }, "end": { - "line": 192, - "column": 98 + "line": 195, + "column": 94 } } }, @@ -67335,16 +67912,16 @@ "binop": null, "updateContext": null }, - "start": 5910, - "end": 5911, + "start": 5969, + "end": 5970, "loc": { "start": { - "line": 192, - "column": 98 + "line": 195, + "column": 94 }, "end": { - "line": 192, - "column": 99 + "line": 195, + "column": 95 } } }, @@ -67360,16 +67937,16 @@ "postfix": false, "binop": null }, - "start": 5932, - "end": 5933, + "start": 5987, + "end": 5988, "loc": { "start": { - "line": 193, - "column": 20 + "line": 196, + "column": 16 }, "end": { - "line": 193, - "column": 21 + "line": 196, + "column": 17 } } }, @@ -67385,16 +67962,16 @@ "postfix": false, "binop": null }, - "start": 5951, - "end": 5952, + "start": 6002, + "end": 6003, "loc": { "start": { - "line": 195, - "column": 16 + "line": 198, + "column": 12 }, "end": { - "line": 195, - "column": 17 + "line": 198, + "column": 13 } } }, @@ -67413,16 +67990,16 @@ "updateContext": null }, "value": "else", - "start": 5953, - "end": 5957, + "start": 6004, + "end": 6008, "loc": { "start": { - "line": 195, - "column": 18 + "line": 198, + "column": 14 }, "end": { - "line": 195, - "column": 22 + "line": 198, + "column": 18 } } }, @@ -67441,16 +68018,16 @@ "updateContext": null }, "value": "if", - "start": 5958, - "end": 5960, + "start": 6009, + "end": 6011, "loc": { "start": { - "line": 195, - "column": 23 + "line": 198, + "column": 19 }, "end": { - "line": 195, - "column": 25 + "line": 198, + "column": 21 } } }, @@ -67466,16 +68043,69 @@ "postfix": false, "binop": null }, - "start": 5961, - "end": 5962, + "start": 6012, + "end": 6013, "loc": { "start": { - "line": 195, - "column": 26 + "line": 198, + "column": 22 }, "end": { - "line": 195, - "column": 27 + "line": 198, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mouseDownLeft", + "start": 6013, + "end": 6026, + "loc": { + "start": { + "line": 198, + "column": 23 + }, + "end": { + "line": 198, + "column": 36 + } + } + }, + { + "type": { + "label": "&&", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 2, + "updateContext": null + }, + "value": "&&", + "start": 6027, + "end": 6029, + "loc": { + "start": { + "line": 198, + "column": 37 + }, + "end": { + "line": 198, + "column": 39 } } }, @@ -67493,16 +68123,16 @@ "updateContext": null }, "value": "!", - "start": 5962, - "end": 5963, + "start": 6030, + "end": 6031, "loc": { "start": { - "line": 195, - "column": 27 + "line": 198, + "column": 40 }, "end": { - "line": 195, - "column": 28 + "line": 198, + "column": 41 } } }, @@ -67519,16 +68149,16 @@ "binop": null }, "value": "mouseDownMiddle", - "start": 5963, - "end": 5978, + "start": 6031, + "end": 6046, "loc": { "start": { - "line": 195, - "column": 28 + "line": 198, + "column": 41 }, "end": { - "line": 195, - "column": 43 + "line": 198, + "column": 56 } } }, @@ -67546,16 +68176,16 @@ "updateContext": null }, "value": "&&", - "start": 5979, - "end": 5981, + "start": 6047, + "end": 6049, "loc": { "start": { - "line": 195, - "column": 44 + "line": 198, + "column": 57 }, "end": { - "line": 195, - "column": 46 + "line": 198, + "column": 59 } } }, @@ -67573,16 +68203,16 @@ "updateContext": null }, "value": "!", - "start": 5982, - "end": 5983, + "start": 6050, + "end": 6051, "loc": { "start": { - "line": 195, - "column": 47 + "line": 198, + "column": 60 }, "end": { - "line": 195, - "column": 48 + "line": 198, + "column": 61 } } }, @@ -67599,16 +68229,16 @@ "binop": null }, "value": "mouseDownRight", - "start": 5983, - "end": 5997, + "start": 6051, + "end": 6065, "loc": { "start": { - "line": 195, - "column": 48 + "line": 198, + "column": 61 }, "end": { - "line": 195, - "column": 62 + "line": 198, + "column": 75 } } }, @@ -67624,16 +68254,16 @@ "postfix": false, "binop": null }, - "start": 5997, - "end": 5998, + "start": 6065, + "end": 6066, "loc": { "start": { - "line": 195, - "column": 62 + "line": 198, + "column": 75 }, "end": { - "line": 195, - "column": 63 + "line": 198, + "column": 76 } } }, @@ -67649,16 +68279,16 @@ "postfix": false, "binop": null }, - "start": 5999, - "end": 6000, + "start": 6067, + "end": 6068, "loc": { "start": { - "line": 195, - "column": 64 + "line": 198, + "column": 77 }, "end": { - "line": 195, - "column": 65 + "line": 198, + "column": 78 } } }, @@ -67677,16 +68307,16 @@ "updateContext": null }, "value": "if", - "start": 6022, - "end": 6024, + "start": 6086, + "end": 6088, "loc": { "start": { - "line": 197, - "column": 20 + "line": 200, + "column": 16 }, "end": { - "line": 197, - "column": 22 + "line": 200, + "column": 18 } } }, @@ -67702,16 +68332,16 @@ "postfix": false, "binop": null }, - "start": 6025, - "end": 6026, + "start": 6089, + "end": 6090, "loc": { "start": { - "line": 197, - "column": 23 + "line": 200, + "column": 19 }, "end": { - "line": 197, - "column": 24 + "line": 200, + "column": 20 } } }, @@ -67729,16 +68359,16 @@ "updateContext": null }, "value": "!", - "start": 6026, - "end": 6027, + "start": 6090, + "end": 6091, "loc": { "start": { - "line": 197, - "column": 24 + "line": 200, + "column": 20 }, "end": { - "line": 197, - "column": 25 + "line": 200, + "column": 21 } } }, @@ -67755,16 +68385,16 @@ "binop": null }, "value": "configs", - "start": 6027, - "end": 6034, + "start": 6091, + "end": 6098, "loc": { "start": { - "line": 197, - "column": 25 + "line": 200, + "column": 21 }, "end": { - "line": 197, - "column": 32 + "line": 200, + "column": 28 } } }, @@ -67781,16 +68411,16 @@ "binop": null, "updateContext": null }, - "start": 6034, - "end": 6035, + "start": 6098, + "end": 6099, "loc": { "start": { - "line": 197, - "column": 32 + "line": 200, + "column": 28 }, "end": { - "line": 197, - "column": 33 + "line": 200, + "column": 29 } } }, @@ -67807,16 +68437,16 @@ "binop": null }, "value": "planView", - "start": 6035, - "end": 6043, + "start": 6099, + "end": 6107, "loc": { "start": { - "line": 197, - "column": 33 + "line": 200, + "column": 29 }, "end": { - "line": 197, - "column": 41 + "line": 200, + "column": 37 } } }, @@ -67832,16 +68462,16 @@ "postfix": false, "binop": null }, - "start": 6043, - "end": 6044, + "start": 6107, + "end": 6108, "loc": { "start": { - "line": 197, - "column": 41 + "line": 200, + "column": 37 }, "end": { - "line": 197, - "column": 42 + "line": 200, + "column": 38 } } }, @@ -67857,32 +68487,32 @@ "postfix": false, "binop": null }, - "start": 6045, - "end": 6046, + "start": 6109, + "end": 6110, "loc": { "start": { - "line": 197, - "column": 43 + "line": 200, + "column": 39 }, "end": { - "line": 197, - "column": 44 + "line": 200, + "column": 40 } } }, { "type": "CommentLine", "value": " No rotating in plan-view mode", - "start": 6047, - "end": 6079, + "start": 6111, + "end": 6143, "loc": { "start": { - "line": 197, - "column": 45 + "line": 200, + "column": 41 }, "end": { - "line": 197, - "column": 77 + "line": 200, + "column": 73 } } }, @@ -67901,16 +68531,16 @@ "updateContext": null }, "value": "if", - "start": 6105, - "end": 6107, + "start": 6165, + "end": 6167, "loc": { "start": { - "line": 199, - "column": 24 + "line": 202, + "column": 20 }, "end": { - "line": 199, - "column": 26 + "line": 202, + "column": 22 } } }, @@ -67926,16 +68556,16 @@ "postfix": false, "binop": null }, - "start": 6108, - "end": 6109, + "start": 6168, + "end": 6169, "loc": { "start": { - "line": 199, - "column": 27 + "line": 202, + "column": 23 }, "end": { - "line": 199, - "column": 28 + "line": 202, + "column": 24 } } }, @@ -67952,16 +68582,16 @@ "binop": null }, "value": "configs", - "start": 6109, - "end": 6116, + "start": 6169, + "end": 6176, "loc": { "start": { - "line": 199, - "column": 28 + "line": 202, + "column": 24 }, "end": { - "line": 199, - "column": 35 + "line": 202, + "column": 31 } } }, @@ -67978,16 +68608,16 @@ "binop": null, "updateContext": null }, - "start": 6116, - "end": 6117, + "start": 6176, + "end": 6177, "loc": { "start": { - "line": 199, - "column": 35 + "line": 202, + "column": 31 }, "end": { - "line": 199, - "column": 36 + "line": 202, + "column": 32 } } }, @@ -68004,16 +68634,16 @@ "binop": null }, "value": "firstPerson", - "start": 6117, - "end": 6128, + "start": 6177, + "end": 6188, "loc": { "start": { - "line": 199, - "column": 36 + "line": 202, + "column": 32 }, "end": { - "line": 199, - "column": 47 + "line": 202, + "column": 43 } } }, @@ -68029,16 +68659,16 @@ "postfix": false, "binop": null }, - "start": 6128, - "end": 6129, + "start": 6188, + "end": 6189, "loc": { "start": { - "line": 199, - "column": 47 + "line": 202, + "column": 43 }, "end": { - "line": 199, - "column": 48 + "line": 202, + "column": 44 } } }, @@ -68054,16 +68684,16 @@ "postfix": false, "binop": null }, - "start": 6130, - "end": 6131, + "start": 6190, + "end": 6191, "loc": { "start": { - "line": 199, - "column": 49 + "line": 202, + "column": 45 }, "end": { - "line": 199, - "column": 50 + "line": 202, + "column": 46 } } }, @@ -68080,16 +68710,16 @@ "binop": null }, "value": "updates", - "start": 6160, - "end": 6167, + "start": 6216, + "end": 6223, "loc": { "start": { - "line": 200, - "column": 28 + "line": 203, + "column": 24 }, "end": { - "line": 200, - "column": 35 + "line": 203, + "column": 31 } } }, @@ -68106,16 +68736,16 @@ "binop": null, "updateContext": null }, - "start": 6167, - "end": 6168, + "start": 6223, + "end": 6224, "loc": { "start": { - "line": 200, - "column": 35 + "line": 203, + "column": 31 }, "end": { - "line": 200, - "column": 36 + "line": 203, + "column": 32 } } }, @@ -68132,16 +68762,16 @@ "binop": null }, "value": "rotateDeltaY", - "start": 6168, - "end": 6180, + "start": 6224, + "end": 6236, "loc": { "start": { - "line": 200, - "column": 36 + "line": 203, + "column": 32 }, "end": { - "line": 200, - "column": 48 + "line": 203, + "column": 44 } } }, @@ -68159,16 +68789,16 @@ "updateContext": null }, "value": "-=", - "start": 6181, - "end": 6183, + "start": 6237, + "end": 6239, "loc": { "start": { - "line": 200, - "column": 49 + "line": 203, + "column": 45 }, "end": { - "line": 200, - "column": 51 + "line": 203, + "column": 47 } } }, @@ -68184,16 +68814,16 @@ "postfix": false, "binop": null }, - "start": 6184, - "end": 6185, + "start": 6240, + "end": 6241, "loc": { "start": { - "line": 200, - "column": 52 + "line": 203, + "column": 48 }, "end": { - "line": 200, - "column": 53 + "line": 203, + "column": 49 } } }, @@ -68209,16 +68839,16 @@ "postfix": false, "binop": null }, - "start": 6185, - "end": 6186, + "start": 6241, + "end": 6242, "loc": { "start": { - "line": 200, - "column": 53 + "line": 203, + "column": 49 }, "end": { - "line": 200, - "column": 54 + "line": 203, + "column": 50 } } }, @@ -68235,16 +68865,16 @@ "binop": null }, "value": "x", - "start": 6186, - "end": 6187, + "start": 6242, + "end": 6243, "loc": { "start": { - "line": 200, - "column": 54 + "line": 203, + "column": 50 }, "end": { - "line": 200, - "column": 55 + "line": 203, + "column": 51 } } }, @@ -68262,16 +68892,16 @@ "updateContext": null }, "value": "-", - "start": 6188, - "end": 6189, + "start": 6244, + "end": 6245, "loc": { "start": { - "line": 200, - "column": 56 + "line": 203, + "column": 52 }, "end": { - "line": 200, - "column": 57 + "line": 203, + "column": 53 } } }, @@ -68288,16 +68918,16 @@ "binop": null }, "value": "lastX", - "start": 6190, - "end": 6195, + "start": 6246, + "end": 6251, "loc": { "start": { - "line": 200, - "column": 58 + "line": 203, + "column": 54 }, "end": { - "line": 200, - "column": 63 + "line": 203, + "column": 59 } } }, @@ -68313,16 +68943,16 @@ "postfix": false, "binop": null }, - "start": 6195, - "end": 6196, + "start": 6251, + "end": 6252, "loc": { "start": { - "line": 200, - "column": 63 + "line": 203, + "column": 59 }, "end": { - "line": 200, - "column": 64 + "line": 203, + "column": 60 } } }, @@ -68340,16 +68970,16 @@ "updateContext": null }, "value": "/", - "start": 6197, - "end": 6198, + "start": 6253, + "end": 6254, "loc": { "start": { - "line": 200, - "column": 65 + "line": 203, + "column": 61 }, "end": { - "line": 200, - "column": 66 + "line": 203, + "column": 62 } } }, @@ -68366,16 +68996,16 @@ "binop": null }, "value": "canvasWidth", - "start": 6199, - "end": 6210, + "start": 6255, + "end": 6266, "loc": { "start": { - "line": 200, - "column": 67 + "line": 203, + "column": 63 }, "end": { - "line": 200, - "column": 78 + "line": 203, + "column": 74 } } }, @@ -68391,16 +69021,16 @@ "postfix": false, "binop": null }, - "start": 6210, - "end": 6211, + "start": 6266, + "end": 6267, "loc": { "start": { - "line": 200, - "column": 78 + "line": 203, + "column": 74 }, "end": { - "line": 200, - "column": 79 + "line": 203, + "column": 75 } } }, @@ -68418,16 +69048,16 @@ "updateContext": null }, "value": "*", - "start": 6212, - "end": 6213, + "start": 6268, + "end": 6269, "loc": { "start": { - "line": 200, - "column": 80 + "line": 203, + "column": 76 }, "end": { - "line": 200, - "column": 81 + "line": 203, + "column": 77 } } }, @@ -68444,16 +69074,16 @@ "binop": null }, "value": "configs", - "start": 6214, - "end": 6221, + "start": 6270, + "end": 6277, "loc": { "start": { - "line": 200, - "column": 82 + "line": 203, + "column": 78 }, "end": { - "line": 200, - "column": 89 + "line": 203, + "column": 85 } } }, @@ -68470,16 +69100,16 @@ "binop": null, "updateContext": null }, - "start": 6221, - "end": 6222, + "start": 6277, + "end": 6278, "loc": { "start": { - "line": 200, - "column": 89 + "line": 203, + "column": 85 }, "end": { - "line": 200, - "column": 90 + "line": 203, + "column": 86 } } }, @@ -68496,16 +69126,16 @@ "binop": null }, "value": "dragRotationRate", - "start": 6222, - "end": 6238, + "start": 6278, + "end": 6294, "loc": { "start": { - "line": 200, - "column": 90 + "line": 203, + "column": 86 }, "end": { - "line": 200, - "column": 106 + "line": 203, + "column": 102 } } }, @@ -68523,16 +69153,16 @@ "updateContext": null }, "value": "/", - "start": 6239, - "end": 6240, + "start": 6295, + "end": 6296, "loc": { "start": { - "line": 200, - "column": 107 + "line": 203, + "column": 103 }, "end": { - "line": 200, - "column": 108 + "line": 203, + "column": 104 } } }, @@ -68550,16 +69180,16 @@ "updateContext": null }, "value": 2, - "start": 6241, - "end": 6242, + "start": 6297, + "end": 6298, "loc": { "start": { - "line": 200, - "column": 109 + "line": 203, + "column": 105 }, "end": { - "line": 200, - "column": 110 + "line": 203, + "column": 106 } } }, @@ -68576,16 +69206,16 @@ "binop": null, "updateContext": null }, - "start": 6242, - "end": 6243, + "start": 6298, + "end": 6299, "loc": { "start": { - "line": 200, - "column": 110 + "line": 203, + "column": 106 }, "end": { - "line": 200, - "column": 111 + "line": 203, + "column": 107 } } }, @@ -68602,16 +69232,16 @@ "binop": null }, "value": "updates", - "start": 6272, - "end": 6279, + "start": 6324, + "end": 6331, "loc": { "start": { - "line": 201, - "column": 28 + "line": 204, + "column": 24 }, "end": { - "line": 201, - "column": 35 + "line": 204, + "column": 31 } } }, @@ -68628,16 +69258,16 @@ "binop": null, "updateContext": null }, - "start": 6279, - "end": 6280, + "start": 6331, + "end": 6332, "loc": { "start": { - "line": 201, - "column": 35 + "line": 204, + "column": 31 }, "end": { - "line": 201, - "column": 36 + "line": 204, + "column": 32 } } }, @@ -68654,16 +69284,16 @@ "binop": null }, "value": "rotateDeltaX", - "start": 6280, - "end": 6292, + "start": 6332, + "end": 6344, "loc": { "start": { - "line": 201, - "column": 36 + "line": 204, + "column": 32 }, "end": { - "line": 201, - "column": 48 + "line": 204, + "column": 44 } } }, @@ -68681,16 +69311,16 @@ "updateContext": null }, "value": "+=", - "start": 6293, - "end": 6295, + "start": 6345, + "end": 6347, "loc": { "start": { - "line": 201, - "column": 49 + "line": 204, + "column": 45 }, "end": { - "line": 201, - "column": 51 + "line": 204, + "column": 47 } } }, @@ -68706,16 +69336,16 @@ "postfix": false, "binop": null }, - "start": 6296, - "end": 6297, + "start": 6348, + "end": 6349, "loc": { "start": { - "line": 201, - "column": 52 + "line": 204, + "column": 48 }, "end": { - "line": 201, - "column": 53 + "line": 204, + "column": 49 } } }, @@ -68731,16 +69361,16 @@ "postfix": false, "binop": null }, - "start": 6297, - "end": 6298, + "start": 6349, + "end": 6350, "loc": { "start": { - "line": 201, - "column": 53 + "line": 204, + "column": 49 }, "end": { - "line": 201, - "column": 54 + "line": 204, + "column": 50 } } }, @@ -68757,16 +69387,16 @@ "binop": null }, "value": "y", - "start": 6298, - "end": 6299, + "start": 6350, + "end": 6351, "loc": { "start": { - "line": 201, - "column": 54 + "line": 204, + "column": 50 }, "end": { - "line": 201, - "column": 55 + "line": 204, + "column": 51 } } }, @@ -68784,16 +69414,16 @@ "updateContext": null }, "value": "-", - "start": 6300, - "end": 6301, + "start": 6352, + "end": 6353, "loc": { "start": { - "line": 201, - "column": 56 + "line": 204, + "column": 52 }, "end": { - "line": 201, - "column": 57 + "line": 204, + "column": 53 } } }, @@ -68810,16 +69440,16 @@ "binop": null }, "value": "lastY", - "start": 6302, - "end": 6307, + "start": 6354, + "end": 6359, "loc": { "start": { - "line": 201, - "column": 58 + "line": 204, + "column": 54 }, "end": { - "line": 201, - "column": 63 + "line": 204, + "column": 59 } } }, @@ -68835,16 +69465,16 @@ "postfix": false, "binop": null }, - "start": 6307, - "end": 6308, + "start": 6359, + "end": 6360, "loc": { "start": { - "line": 201, - "column": 63 + "line": 204, + "column": 59 }, "end": { - "line": 201, - "column": 64 + "line": 204, + "column": 60 } } }, @@ -68862,16 +69492,16 @@ "updateContext": null }, "value": "/", - "start": 6309, - "end": 6310, + "start": 6361, + "end": 6362, "loc": { "start": { - "line": 201, - "column": 65 + "line": 204, + "column": 61 }, "end": { - "line": 201, - "column": 66 + "line": 204, + "column": 62 } } }, @@ -68888,16 +69518,16 @@ "binop": null }, "value": "canvasHeight", - "start": 6311, - "end": 6323, + "start": 6363, + "end": 6375, "loc": { "start": { - "line": 201, - "column": 67 + "line": 204, + "column": 63 }, "end": { - "line": 201, - "column": 79 + "line": 204, + "column": 75 } } }, @@ -68913,16 +69543,16 @@ "postfix": false, "binop": null }, - "start": 6323, - "end": 6324, + "start": 6375, + "end": 6376, "loc": { "start": { - "line": 201, - "column": 79 + "line": 204, + "column": 75 }, "end": { - "line": 201, - "column": 80 + "line": 204, + "column": 76 } } }, @@ -68940,16 +69570,16 @@ "updateContext": null }, "value": "*", - "start": 6325, - "end": 6326, + "start": 6377, + "end": 6378, "loc": { "start": { - "line": 201, - "column": 81 + "line": 204, + "column": 77 }, "end": { - "line": 201, - "column": 82 + "line": 204, + "column": 78 } } }, @@ -68965,16 +69595,16 @@ "postfix": false, "binop": null }, - "start": 6327, - "end": 6328, + "start": 6379, + "end": 6380, "loc": { "start": { - "line": 201, - "column": 83 + "line": 204, + "column": 79 }, "end": { - "line": 201, - "column": 84 + "line": 204, + "column": 80 } } }, @@ -68991,16 +69621,16 @@ "binop": null }, "value": "configs", - "start": 6328, - "end": 6335, + "start": 6380, + "end": 6387, "loc": { "start": { - "line": 201, - "column": 84 + "line": 204, + "column": 80 }, "end": { - "line": 201, - "column": 91 + "line": 204, + "column": 87 } } }, @@ -69017,16 +69647,16 @@ "binop": null, "updateContext": null }, - "start": 6335, - "end": 6336, + "start": 6387, + "end": 6388, "loc": { "start": { - "line": 201, - "column": 91 + "line": 204, + "column": 87 }, "end": { - "line": 201, - "column": 92 + "line": 204, + "column": 88 } } }, @@ -69043,16 +69673,16 @@ "binop": null }, "value": "dragRotationRate", - "start": 6336, - "end": 6352, + "start": 6388, + "end": 6404, "loc": { "start": { - "line": 201, - "column": 92 + "line": 204, + "column": 88 }, "end": { - "line": 201, - "column": 108 + "line": 204, + "column": 104 } } }, @@ -69070,16 +69700,16 @@ "updateContext": null }, "value": "/", - "start": 6353, - "end": 6354, + "start": 6405, + "end": 6406, "loc": { "start": { - "line": 201, - "column": 109 + "line": 204, + "column": 105 }, "end": { - "line": 201, - "column": 110 + "line": 204, + "column": 106 } } }, @@ -69097,16 +69727,16 @@ "updateContext": null }, "value": 4, - "start": 6355, - "end": 6356, + "start": 6407, + "end": 6408, "loc": { "start": { - "line": 201, - "column": 111 + "line": 204, + "column": 107 }, "end": { - "line": 201, - "column": 112 + "line": 204, + "column": 108 } } }, @@ -69122,16 +69752,16 @@ "postfix": false, "binop": null }, - "start": 6356, - "end": 6357, + "start": 6408, + "end": 6409, "loc": { "start": { - "line": 201, - "column": 112 + "line": 204, + "column": 108 }, "end": { - "line": 201, - "column": 113 + "line": 204, + "column": 109 } } }, @@ -69148,16 +69778,16 @@ "binop": null, "updateContext": null }, - "start": 6357, - "end": 6358, + "start": 6409, + "end": 6410, "loc": { "start": { - "line": 201, - "column": 113 + "line": 204, + "column": 109 }, "end": { - "line": 201, - "column": 114 + "line": 204, + "column": 110 } } }, @@ -69173,16 +69803,16 @@ "postfix": false, "binop": null }, - "start": 6384, - "end": 6385, + "start": 6432, + "end": 6433, "loc": { "start": { - "line": 203, - "column": 24 + "line": 206, + "column": 20 }, "end": { - "line": 203, - "column": 25 + "line": 206, + "column": 21 } } }, @@ -69201,16 +69831,16 @@ "updateContext": null }, "value": "else", - "start": 6386, - "end": 6390, + "start": 6434, + "end": 6438, "loc": { "start": { - "line": 203, - "column": 26 + "line": 206, + "column": 22 }, "end": { - "line": 203, - "column": 30 + "line": 206, + "column": 26 } } }, @@ -69226,16 +69856,16 @@ "postfix": false, "binop": null }, - "start": 6391, - "end": 6392, + "start": 6439, + "end": 6440, "loc": { "start": { - "line": 203, - "column": 31 + "line": 206, + "column": 27 }, "end": { - "line": 203, - "column": 32 + "line": 206, + "column": 28 } } }, @@ -69252,16 +69882,16 @@ "binop": null }, "value": "updates", - "start": 6421, - "end": 6428, + "start": 6465, + "end": 6472, "loc": { "start": { - "line": 204, - "column": 28 + "line": 207, + "column": 24 }, "end": { - "line": 204, - "column": 35 + "line": 207, + "column": 31 } } }, @@ -69278,16 +69908,16 @@ "binop": null, "updateContext": null }, - "start": 6428, - "end": 6429, + "start": 6472, + "end": 6473, "loc": { "start": { - "line": 204, - "column": 35 + "line": 207, + "column": 31 }, "end": { - "line": 204, - "column": 36 + "line": 207, + "column": 32 } } }, @@ -69304,16 +69934,16 @@ "binop": null }, "value": "rotateDeltaY", - "start": 6429, - "end": 6441, + "start": 6473, + "end": 6485, "loc": { "start": { - "line": 204, - "column": 36 + "line": 207, + "column": 32 }, "end": { - "line": 204, - "column": 48 + "line": 207, + "column": 44 } } }, @@ -69331,16 +69961,16 @@ "updateContext": null }, "value": "-=", - "start": 6442, - "end": 6444, + "start": 6486, + "end": 6488, "loc": { "start": { - "line": 204, - "column": 49 + "line": 207, + "column": 45 }, "end": { - "line": 204, - "column": 51 + "line": 207, + "column": 47 } } }, @@ -69356,16 +69986,16 @@ "postfix": false, "binop": null }, - "start": 6445, - "end": 6446, + "start": 6489, + "end": 6490, "loc": { "start": { - "line": 204, - "column": 52 + "line": 207, + "column": 48 }, "end": { - "line": 204, - "column": 53 + "line": 207, + "column": 49 } } }, @@ -69381,16 +70011,16 @@ "postfix": false, "binop": null }, - "start": 6446, - "end": 6447, + "start": 6490, + "end": 6491, "loc": { "start": { - "line": 204, - "column": 53 + "line": 207, + "column": 49 }, "end": { - "line": 204, - "column": 54 + "line": 207, + "column": 50 } } }, @@ -69407,16 +70037,16 @@ "binop": null }, "value": "x", - "start": 6447, - "end": 6448, + "start": 6491, + "end": 6492, "loc": { "start": { - "line": 204, - "column": 54 + "line": 207, + "column": 50 }, "end": { - "line": 204, - "column": 55 + "line": 207, + "column": 51 } } }, @@ -69434,16 +70064,16 @@ "updateContext": null }, "value": "-", - "start": 6449, - "end": 6450, + "start": 6493, + "end": 6494, "loc": { "start": { - "line": 204, - "column": 56 + "line": 207, + "column": 52 }, "end": { - "line": 204, - "column": 57 + "line": 207, + "column": 53 } } }, @@ -69460,16 +70090,16 @@ "binop": null }, "value": "lastX", - "start": 6451, - "end": 6456, + "start": 6495, + "end": 6500, "loc": { "start": { - "line": 204, - "column": 58 + "line": 207, + "column": 54 }, "end": { - "line": 204, - "column": 63 + "line": 207, + "column": 59 } } }, @@ -69485,16 +70115,16 @@ "postfix": false, "binop": null }, - "start": 6456, - "end": 6457, + "start": 6500, + "end": 6501, "loc": { "start": { - "line": 204, - "column": 63 + "line": 207, + "column": 59 }, "end": { - "line": 204, - "column": 64 + "line": 207, + "column": 60 } } }, @@ -69512,16 +70142,16 @@ "updateContext": null }, "value": "/", - "start": 6458, - "end": 6459, + "start": 6502, + "end": 6503, "loc": { "start": { - "line": 204, - "column": 65 + "line": 207, + "column": 61 }, "end": { - "line": 204, - "column": 66 + "line": 207, + "column": 62 } } }, @@ -69538,16 +70168,16 @@ "binop": null }, "value": "canvasWidth", - "start": 6460, - "end": 6471, + "start": 6504, + "end": 6515, "loc": { "start": { - "line": 204, - "column": 67 + "line": 207, + "column": 63 }, "end": { - "line": 204, - "column": 78 + "line": 207, + "column": 74 } } }, @@ -69563,16 +70193,16 @@ "postfix": false, "binop": null }, - "start": 6471, - "end": 6472, + "start": 6515, + "end": 6516, "loc": { "start": { - "line": 204, - "column": 78 + "line": 207, + "column": 74 }, "end": { - "line": 204, - "column": 79 + "line": 207, + "column": 75 } } }, @@ -69590,16 +70220,16 @@ "updateContext": null }, "value": "*", - "start": 6473, - "end": 6474, + "start": 6517, + "end": 6518, "loc": { "start": { - "line": 204, - "column": 80 + "line": 207, + "column": 76 }, "end": { - "line": 204, - "column": 81 + "line": 207, + "column": 77 } } }, @@ -69615,16 +70245,16 @@ "postfix": false, "binop": null }, - "start": 6475, - "end": 6476, + "start": 6519, + "end": 6520, "loc": { "start": { - "line": 204, - "column": 82 + "line": 207, + "column": 78 }, "end": { - "line": 204, - "column": 83 + "line": 207, + "column": 79 } } }, @@ -69641,16 +70271,16 @@ "binop": null }, "value": "configs", - "start": 6476, - "end": 6483, + "start": 6520, + "end": 6527, "loc": { "start": { - "line": 204, - "column": 83 + "line": 207, + "column": 79 }, "end": { - "line": 204, - "column": 90 + "line": 207, + "column": 86 } } }, @@ -69667,16 +70297,16 @@ "binop": null, "updateContext": null }, - "start": 6483, - "end": 6484, + "start": 6527, + "end": 6528, "loc": { "start": { - "line": 204, - "column": 90 + "line": 207, + "column": 86 }, "end": { - "line": 204, - "column": 91 + "line": 207, + "column": 87 } } }, @@ -69693,16 +70323,16 @@ "binop": null }, "value": "dragRotationRate", - "start": 6484, - "end": 6500, + "start": 6528, + "end": 6544, "loc": { "start": { - "line": 204, - "column": 91 + "line": 207, + "column": 87 }, "end": { - "line": 204, - "column": 107 + "line": 207, + "column": 103 } } }, @@ -69720,16 +70350,16 @@ "updateContext": null }, "value": "*", - "start": 6501, - "end": 6502, + "start": 6545, + "end": 6546, "loc": { "start": { - "line": 204, - "column": 108 + "line": 207, + "column": 104 }, "end": { - "line": 204, - "column": 109 + "line": 207, + "column": 105 } } }, @@ -69747,16 +70377,16 @@ "updateContext": null }, "value": 1.5, - "start": 6503, - "end": 6506, + "start": 6547, + "end": 6550, "loc": { "start": { - "line": 204, - "column": 110 + "line": 207, + "column": 106 }, "end": { - "line": 204, - "column": 113 + "line": 207, + "column": 109 } } }, @@ -69772,16 +70402,16 @@ "postfix": false, "binop": null }, - "start": 6506, - "end": 6507, + "start": 6550, + "end": 6551, "loc": { "start": { - "line": 204, - "column": 113 + "line": 207, + "column": 109 }, "end": { - "line": 204, - "column": 114 + "line": 207, + "column": 110 } } }, @@ -69798,16 +70428,16 @@ "binop": null, "updateContext": null }, - "start": 6507, - "end": 6508, + "start": 6551, + "end": 6552, "loc": { "start": { - "line": 204, - "column": 114 + "line": 207, + "column": 110 }, "end": { - "line": 204, - "column": 115 + "line": 207, + "column": 111 } } }, @@ -69824,16 +70454,16 @@ "binop": null }, "value": "updates", - "start": 6537, - "end": 6544, + "start": 6577, + "end": 6584, "loc": { "start": { - "line": 205, - "column": 28 + "line": 208, + "column": 24 }, "end": { - "line": 205, - "column": 35 + "line": 208, + "column": 31 } } }, @@ -69850,16 +70480,16 @@ "binop": null, "updateContext": null }, - "start": 6544, - "end": 6545, + "start": 6584, + "end": 6585, "loc": { "start": { - "line": 205, - "column": 35 + "line": 208, + "column": 31 }, "end": { - "line": 205, - "column": 36 + "line": 208, + "column": 32 } } }, @@ -69876,16 +70506,16 @@ "binop": null }, "value": "rotateDeltaX", - "start": 6545, - "end": 6557, + "start": 6585, + "end": 6597, "loc": { "start": { - "line": 205, - "column": 36 + "line": 208, + "column": 32 }, "end": { - "line": 205, - "column": 48 + "line": 208, + "column": 44 } } }, @@ -69903,16 +70533,16 @@ "updateContext": null }, "value": "+=", - "start": 6558, - "end": 6560, + "start": 6598, + "end": 6600, "loc": { "start": { - "line": 205, - "column": 49 + "line": 208, + "column": 45 }, "end": { - "line": 205, - "column": 51 + "line": 208, + "column": 47 } } }, @@ -69928,16 +70558,16 @@ "postfix": false, "binop": null }, - "start": 6561, - "end": 6562, + "start": 6601, + "end": 6602, "loc": { "start": { - "line": 205, - "column": 52 + "line": 208, + "column": 48 }, "end": { - "line": 205, - "column": 53 + "line": 208, + "column": 49 } } }, @@ -69953,16 +70583,16 @@ "postfix": false, "binop": null }, - "start": 6562, - "end": 6563, + "start": 6602, + "end": 6603, "loc": { "start": { - "line": 205, - "column": 53 + "line": 208, + "column": 49 }, "end": { - "line": 205, - "column": 54 + "line": 208, + "column": 50 } } }, @@ -69979,16 +70609,16 @@ "binop": null }, "value": "y", - "start": 6563, - "end": 6564, + "start": 6603, + "end": 6604, "loc": { "start": { - "line": 205, - "column": 54 + "line": 208, + "column": 50 }, "end": { - "line": 205, - "column": 55 + "line": 208, + "column": 51 } } }, @@ -70006,16 +70636,16 @@ "updateContext": null }, "value": "-", - "start": 6565, - "end": 6566, + "start": 6605, + "end": 6606, "loc": { "start": { - "line": 205, - "column": 56 + "line": 208, + "column": 52 }, "end": { - "line": 205, - "column": 57 + "line": 208, + "column": 53 } } }, @@ -70032,16 +70662,16 @@ "binop": null }, "value": "lastY", - "start": 6567, - "end": 6572, + "start": 6607, + "end": 6612, "loc": { "start": { - "line": 205, - "column": 58 + "line": 208, + "column": 54 }, "end": { - "line": 205, - "column": 63 + "line": 208, + "column": 59 } } }, @@ -70057,16 +70687,16 @@ "postfix": false, "binop": null }, - "start": 6572, - "end": 6573, + "start": 6612, + "end": 6613, "loc": { "start": { - "line": 205, - "column": 63 + "line": 208, + "column": 59 }, "end": { - "line": 205, - "column": 64 + "line": 208, + "column": 60 } } }, @@ -70084,16 +70714,16 @@ "updateContext": null }, "value": "/", - "start": 6574, - "end": 6575, + "start": 6614, + "end": 6615, "loc": { "start": { - "line": 205, - "column": 65 + "line": 208, + "column": 61 }, "end": { - "line": 205, - "column": 66 + "line": 208, + "column": 62 } } }, @@ -70110,16 +70740,16 @@ "binop": null }, "value": "canvasHeight", - "start": 6576, - "end": 6588, + "start": 6616, + "end": 6628, "loc": { "start": { - "line": 205, - "column": 67 + "line": 208, + "column": 63 }, "end": { - "line": 205, - "column": 79 + "line": 208, + "column": 75 } } }, @@ -70135,16 +70765,16 @@ "postfix": false, "binop": null }, - "start": 6588, - "end": 6589, + "start": 6628, + "end": 6629, "loc": { "start": { - "line": 205, - "column": 79 + "line": 208, + "column": 75 }, "end": { - "line": 205, - "column": 80 + "line": 208, + "column": 76 } } }, @@ -70162,16 +70792,16 @@ "updateContext": null }, "value": "*", - "start": 6590, - "end": 6591, + "start": 6630, + "end": 6631, "loc": { "start": { - "line": 205, - "column": 81 + "line": 208, + "column": 77 }, "end": { - "line": 205, - "column": 82 + "line": 208, + "column": 78 } } }, @@ -70187,16 +70817,16 @@ "postfix": false, "binop": null }, - "start": 6592, - "end": 6593, + "start": 6632, + "end": 6633, "loc": { "start": { - "line": 205, - "column": 83 + "line": 208, + "column": 79 }, "end": { - "line": 205, - "column": 84 + "line": 208, + "column": 80 } } }, @@ -70213,16 +70843,16 @@ "binop": null }, "value": "configs", - "start": 6593, - "end": 6600, + "start": 6633, + "end": 6640, "loc": { "start": { - "line": 205, - "column": 84 + "line": 208, + "column": 80 }, "end": { - "line": 205, - "column": 91 + "line": 208, + "column": 87 } } }, @@ -70239,16 +70869,16 @@ "binop": null, "updateContext": null }, - "start": 6600, - "end": 6601, + "start": 6640, + "end": 6641, "loc": { "start": { - "line": 205, - "column": 91 + "line": 208, + "column": 87 }, "end": { - "line": 205, - "column": 92 + "line": 208, + "column": 88 } } }, @@ -70265,16 +70895,16 @@ "binop": null }, "value": "dragRotationRate", - "start": 6601, - "end": 6617, + "start": 6641, + "end": 6657, "loc": { "start": { - "line": 205, - "column": 92 + "line": 208, + "column": 88 }, "end": { - "line": 205, - "column": 108 + "line": 208, + "column": 104 } } }, @@ -70292,16 +70922,16 @@ "updateContext": null }, "value": "*", - "start": 6618, - "end": 6619, + "start": 6658, + "end": 6659, "loc": { "start": { - "line": 205, - "column": 109 + "line": 208, + "column": 105 }, "end": { - "line": 205, - "column": 110 + "line": 208, + "column": 106 } } }, @@ -70319,16 +70949,16 @@ "updateContext": null }, "value": 1.5, - "start": 6620, - "end": 6623, + "start": 6660, + "end": 6663, "loc": { "start": { - "line": 205, - "column": 111 + "line": 208, + "column": 107 }, "end": { - "line": 205, - "column": 114 + "line": 208, + "column": 110 } } }, @@ -70344,16 +70974,16 @@ "postfix": false, "binop": null }, - "start": 6623, - "end": 6624, + "start": 6663, + "end": 6664, "loc": { "start": { - "line": 205, - "column": 114 + "line": 208, + "column": 110 }, "end": { - "line": 205, - "column": 115 + "line": 208, + "column": 111 } } }, @@ -70370,16 +71000,16 @@ "binop": null, "updateContext": null }, - "start": 6624, - "end": 6625, + "start": 6664, + "end": 6665, "loc": { "start": { - "line": 205, - "column": 115 + "line": 208, + "column": 111 }, "end": { - "line": 205, - "column": 116 + "line": 208, + "column": 112 } } }, @@ -70395,16 +71025,16 @@ "postfix": false, "binop": null }, - "start": 6650, - "end": 6651, + "start": 6686, + "end": 6687, "loc": { "start": { - "line": 206, - "column": 24 + "line": 209, + "column": 20 }, "end": { - "line": 206, - "column": 25 + "line": 209, + "column": 21 } } }, @@ -70420,16 +71050,16 @@ "postfix": false, "binop": null }, - "start": 6672, - "end": 6673, + "start": 6704, + "end": 6705, "loc": { "start": { - "line": 207, - "column": 20 + "line": 210, + "column": 16 }, "end": { - "line": 207, - "column": 21 + "line": 210, + "column": 17 } } }, @@ -70445,16 +71075,16 @@ "postfix": false, "binop": null }, - "start": 6690, - "end": 6691, + "start": 6718, + "end": 6719, "loc": { "start": { - "line": 208, - "column": 16 + "line": 211, + "column": 12 }, "end": { - "line": 208, - "column": 17 + "line": 211, + "column": 13 } } }, @@ -70471,16 +71101,16 @@ "binop": null }, "value": "lastX", - "start": 6709, - "end": 6714, + "start": 6733, + "end": 6738, "loc": { "start": { - "line": 210, - "column": 16 + "line": 213, + "column": 12 }, "end": { - "line": 210, - "column": 21 + "line": 213, + "column": 17 } } }, @@ -70498,16 +71128,16 @@ "updateContext": null }, "value": "=", - "start": 6715, - "end": 6716, + "start": 6739, + "end": 6740, "loc": { "start": { - "line": 210, - "column": 22 + "line": 213, + "column": 18 }, "end": { - "line": 210, - "column": 23 + "line": 213, + "column": 19 } } }, @@ -70524,16 +71154,16 @@ "binop": null }, "value": "x", - "start": 6717, - "end": 6718, + "start": 6741, + "end": 6742, "loc": { "start": { - "line": 210, - "column": 24 + "line": 213, + "column": 20 }, "end": { - "line": 210, - "column": 25 + "line": 213, + "column": 21 } } }, @@ -70550,16 +71180,16 @@ "binop": null, "updateContext": null }, - "start": 6718, - "end": 6719, + "start": 6742, + "end": 6743, "loc": { "start": { - "line": 210, - "column": 25 + "line": 213, + "column": 21 }, "end": { - "line": 210, - "column": 26 + "line": 213, + "column": 22 } } }, @@ -70576,16 +71206,16 @@ "binop": null }, "value": "lastY", - "start": 6736, - "end": 6741, + "start": 6756, + "end": 6761, "loc": { "start": { - "line": 211, - "column": 16 + "line": 214, + "column": 12 }, "end": { - "line": 211, - "column": 21 + "line": 214, + "column": 17 } } }, @@ -70603,16 +71233,16 @@ "updateContext": null }, "value": "=", - "start": 6742, - "end": 6743, + "start": 6762, + "end": 6763, "loc": { "start": { - "line": 211, - "column": 22 + "line": 214, + "column": 18 }, "end": { - "line": 211, - "column": 23 + "line": 214, + "column": 19 } } }, @@ -70629,92 +71259,16 @@ "binop": null }, "value": "y", - "start": 6744, - "end": 6745, - "loc": { - "start": { - "line": 211, - "column": 24 - }, - "end": { - "line": 211, - "column": 25 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 6745, - "end": 6746, - "loc": { - "start": { - "line": 211, - "column": 25 - }, - "end": { - "line": 211, - "column": 26 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 6759, - "end": 6760, - "loc": { - "start": { - "line": 212, - "column": 12 - }, - "end": { - "line": 212, - "column": 13 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 6760, - "end": 6761, + "start": 6764, + "end": 6765, "loc": { "start": { - "line": 212, - "column": 13 + "line": 214, + "column": 20 }, "end": { - "line": 212, - "column": 14 + "line": 214, + "column": 21 } } }, @@ -70731,16 +71285,16 @@ "binop": null, "updateContext": null }, - "start": 6761, - "end": 6762, + "start": 6765, + "end": 6766, "loc": { "start": { - "line": 212, - "column": 14 + "line": 214, + "column": 21 }, "end": { - "line": 212, - "column": 15 + "line": 214, + "column": 22 } } }, @@ -70756,15 +71310,15 @@ "postfix": false, "binop": null }, - "start": 6771, - "end": 6772, + "start": 6775, + "end": 6776, "loc": { "start": { - "line": 213, + "line": 215, "column": 8 }, "end": { - "line": 213, + "line": 215, "column": 9 } } @@ -70781,15 +71335,15 @@ "postfix": false, "binop": null }, - "start": 6772, - "end": 6773, + "start": 6776, + "end": 6777, "loc": { "start": { - "line": 213, + "line": 215, "column": 9 }, "end": { - "line": 213, + "line": 215, "column": 10 } } @@ -70807,15 +71361,15 @@ "binop": null, "updateContext": null }, - "start": 6773, - "end": 6774, + "start": 6777, + "end": 6778, "loc": { "start": { - "line": 213, + "line": 215, "column": 10 }, "end": { - "line": 213, + "line": 215, "column": 11 } } @@ -70833,15 +71387,15 @@ "binop": null }, "value": "canvas", - "start": 6784, - "end": 6790, + "start": 6788, + "end": 6794, "loc": { "start": { - "line": 215, + "line": 217, "column": 8 }, "end": { - "line": 215, + "line": 217, "column": 14 } } @@ -70859,15 +71413,15 @@ "binop": null, "updateContext": null }, - "start": 6790, - "end": 6791, + "start": 6794, + "end": 6795, "loc": { "start": { - "line": 215, + "line": 217, "column": 14 }, "end": { - "line": 215, + "line": 217, "column": 15 } } @@ -70885,15 +71439,15 @@ "binop": null }, "value": "addEventListener", - "start": 6791, - "end": 6807, + "start": 6795, + "end": 6811, "loc": { "start": { - "line": 215, + "line": 217, "column": 15 }, "end": { - "line": 215, + "line": 217, "column": 31 } } @@ -70910,15 +71464,15 @@ "postfix": false, "binop": null }, - "start": 6807, - "end": 6808, + "start": 6811, + "end": 6812, "loc": { "start": { - "line": 215, + "line": 217, "column": 31 }, "end": { - "line": 215, + "line": 217, "column": 32 } } @@ -70937,15 +71491,15 @@ "updateContext": null }, "value": "mousemove", - "start": 6808, - "end": 6819, + "start": 6812, + "end": 6823, "loc": { "start": { - "line": 215, + "line": 217, "column": 32 }, "end": { - "line": 215, + "line": 217, "column": 43 } } @@ -70963,15 +71517,15 @@ "binop": null, "updateContext": null }, - "start": 6819, - "end": 6820, + "start": 6823, + "end": 6824, "loc": { "start": { - "line": 215, + "line": 217, "column": 43 }, "end": { - "line": 215, + "line": 217, "column": 44 } } @@ -70991,15 +71545,15 @@ "updateContext": null }, "value": "this", - "start": 6821, - "end": 6825, + "start": 6825, + "end": 6829, "loc": { "start": { - "line": 215, + "line": 217, "column": 45 }, "end": { - "line": 215, + "line": 217, "column": 49 } } @@ -71017,15 +71571,15 @@ "binop": null, "updateContext": null }, - "start": 6825, - "end": 6826, + "start": 6829, + "end": 6830, "loc": { "start": { - "line": 215, + "line": 217, "column": 49 }, "end": { - "line": 215, + "line": 217, "column": 50 } } @@ -71043,15 +71597,15 @@ "binop": null }, "value": "_canvasMouseMoveHandler", - "start": 6826, - "end": 6849, + "start": 6830, + "end": 6853, "loc": { "start": { - "line": 215, + "line": 217, "column": 50 }, "end": { - "line": 215, + "line": 217, "column": 73 } } @@ -71070,15 +71624,15 @@ "updateContext": null }, "value": "=", - "start": 6850, - "end": 6851, + "start": 6854, + "end": 6855, "loc": { "start": { - "line": 215, + "line": 217, "column": 74 }, "end": { - "line": 215, + "line": 217, "column": 75 } } @@ -71095,15 +71649,15 @@ "postfix": false, "binop": null }, - "start": 6852, - "end": 6853, + "start": 6856, + "end": 6857, "loc": { "start": { - "line": 215, + "line": 217, "column": 76 }, "end": { - "line": 215, + "line": 217, "column": 77 } } @@ -71121,15 +71675,15 @@ "binop": null }, "value": "e", - "start": 6853, - "end": 6854, + "start": 6857, + "end": 6858, "loc": { "start": { - "line": 215, + "line": 217, "column": 77 }, "end": { - "line": 215, + "line": 217, "column": 78 } } @@ -71146,15 +71700,15 @@ "postfix": false, "binop": null }, - "start": 6854, - "end": 6855, + "start": 6858, + "end": 6859, "loc": { "start": { - "line": 215, + "line": 217, "column": 78 }, "end": { - "line": 215, + "line": 217, "column": 79 } } @@ -71172,15 +71726,15 @@ "binop": null, "updateContext": null }, - "start": 6856, - "end": 6858, + "start": 6860, + "end": 6862, "loc": { "start": { - "line": 215, + "line": 217, "column": 80 }, "end": { - "line": 215, + "line": 217, "column": 82 } } @@ -71197,15 +71751,15 @@ "postfix": false, "binop": null }, - "start": 6859, - "end": 6860, + "start": 6863, + "end": 6864, "loc": { "start": { - "line": 215, + "line": 217, "column": 83 }, "end": { - "line": 215, + "line": 217, "column": 84 } } @@ -71225,15 +71779,15 @@ "updateContext": null }, "value": "if", - "start": 6874, - "end": 6876, + "start": 6878, + "end": 6880, "loc": { "start": { - "line": 217, + "line": 219, "column": 12 }, "end": { - "line": 217, + "line": 219, "column": 14 } } @@ -71250,15 +71804,15 @@ "postfix": false, "binop": null }, - "start": 6877, - "end": 6878, + "start": 6881, + "end": 6882, "loc": { "start": { - "line": 217, + "line": 219, "column": 15 }, "end": { - "line": 217, + "line": 219, "column": 16 } } @@ -71277,15 +71831,15 @@ "updateContext": null }, "value": "!", - "start": 6878, - "end": 6879, + "start": 6882, + "end": 6883, "loc": { "start": { - "line": 217, + "line": 219, "column": 16 }, "end": { - "line": 217, + "line": 219, "column": 17 } } @@ -71302,15 +71856,15 @@ "postfix": false, "binop": null }, - "start": 6879, - "end": 6880, + "start": 6883, + "end": 6884, "loc": { "start": { - "line": 217, + "line": 219, "column": 17 }, "end": { - "line": 217, + "line": 219, "column": 18 } } @@ -71328,15 +71882,15 @@ "binop": null }, "value": "configs", - "start": 6880, - "end": 6887, + "start": 6884, + "end": 6891, "loc": { "start": { - "line": 217, + "line": 219, "column": 18 }, "end": { - "line": 217, + "line": 219, "column": 25 } } @@ -71354,15 +71908,15 @@ "binop": null, "updateContext": null }, - "start": 6887, - "end": 6888, + "start": 6891, + "end": 6892, "loc": { "start": { - "line": 217, + "line": 219, "column": 25 }, "end": { - "line": 217, + "line": 219, "column": 26 } } @@ -71380,15 +71934,15 @@ "binop": null }, "value": "active", - "start": 6888, - "end": 6894, + "start": 6892, + "end": 6898, "loc": { "start": { - "line": 217, + "line": 219, "column": 26 }, "end": { - "line": 217, + "line": 219, "column": 32 } } @@ -71407,15 +71961,15 @@ "updateContext": null }, "value": "&&", - "start": 6895, - "end": 6897, + "start": 6899, + "end": 6901, "loc": { "start": { - "line": 217, + "line": 219, "column": 33 }, "end": { - "line": 217, + "line": 219, "column": 35 } } @@ -71433,15 +71987,15 @@ "binop": null }, "value": "configs", - "start": 6898, - "end": 6905, + "start": 6902, + "end": 6909, "loc": { "start": { - "line": 217, + "line": 219, "column": 36 }, "end": { - "line": 217, + "line": 219, "column": 43 } } @@ -71459,15 +72013,15 @@ "binop": null, "updateContext": null }, - "start": 6905, - "end": 6906, + "start": 6909, + "end": 6910, "loc": { "start": { - "line": 217, + "line": 219, "column": 43 }, "end": { - "line": 217, + "line": 219, "column": 44 } } @@ -71485,15 +72039,15 @@ "binop": null }, "value": "pointerEnabled", - "start": 6906, - "end": 6920, + "start": 6910, + "end": 6924, "loc": { "start": { - "line": 217, + "line": 219, "column": 44 }, "end": { - "line": 217, + "line": 219, "column": 58 } } @@ -71510,15 +72064,15 @@ "postfix": false, "binop": null }, - "start": 6920, - "end": 6921, + "start": 6924, + "end": 6925, "loc": { "start": { - "line": 217, + "line": 219, "column": 58 }, "end": { - "line": 217, + "line": 219, "column": 59 } } @@ -71535,15 +72089,15 @@ "postfix": false, "binop": null }, - "start": 6921, - "end": 6922, + "start": 6925, + "end": 6926, "loc": { "start": { - "line": 217, + "line": 219, "column": 59 }, "end": { - "line": 217, + "line": 219, "column": 60 } } @@ -71560,15 +72114,15 @@ "postfix": false, "binop": null }, - "start": 6923, - "end": 6924, + "start": 6927, + "end": 6928, "loc": { "start": { - "line": 217, + "line": 219, "column": 61 }, "end": { - "line": 217, + "line": 219, "column": 62 } } @@ -71588,15 +72142,15 @@ "updateContext": null }, "value": "return", - "start": 6941, - "end": 6947, + "start": 6945, + "end": 6951, "loc": { "start": { - "line": 218, + "line": 220, "column": 16 }, "end": { - "line": 218, + "line": 220, "column": 22 } } @@ -71614,15 +72168,15 @@ "binop": null, "updateContext": null }, - "start": 6947, - "end": 6948, + "start": 6951, + "end": 6952, "loc": { "start": { - "line": 218, + "line": 220, "column": 22 }, "end": { - "line": 218, + "line": 220, "column": 23 } } @@ -71639,15 +72193,15 @@ "postfix": false, "binop": null }, - "start": 6961, - "end": 6962, + "start": 6965, + "end": 6966, "loc": { "start": { - "line": 219, + "line": 221, "column": 12 }, "end": { - "line": 219, + "line": 221, "column": 13 } } @@ -71667,15 +72221,15 @@ "updateContext": null }, "value": "if", - "start": 6976, - "end": 6978, + "start": 6980, + "end": 6982, "loc": { "start": { - "line": 221, + "line": 223, "column": 12 }, "end": { - "line": 221, + "line": 223, "column": 14 } } @@ -71692,15 +72246,15 @@ "postfix": false, "binop": null }, - "start": 6979, - "end": 6980, + "start": 6983, + "end": 6984, "loc": { "start": { - "line": 221, + "line": 223, "column": 15 }, "end": { - "line": 221, + "line": 223, "column": 16 } } @@ -71719,15 +72273,15 @@ "updateContext": null }, "value": "!", - "start": 6980, - "end": 6981, + "start": 6984, + "end": 6985, "loc": { "start": { - "line": 221, + "line": 223, "column": 16 }, "end": { - "line": 221, + "line": 223, "column": 17 } } @@ -71745,15 +72299,15 @@ "binop": null }, "value": "states", - "start": 6981, - "end": 6987, + "start": 6985, + "end": 6991, "loc": { "start": { - "line": 221, + "line": 223, "column": 17 }, "end": { - "line": 221, + "line": 223, "column": 23 } } @@ -71771,15 +72325,15 @@ "binop": null, "updateContext": null }, - "start": 6987, - "end": 6988, + "start": 6991, + "end": 6992, "loc": { "start": { - "line": 221, + "line": 223, "column": 23 }, "end": { - "line": 221, + "line": 223, "column": 24 } } @@ -71797,15 +72351,15 @@ "binop": null }, "value": "mouseover", - "start": 6988, - "end": 6997, + "start": 6992, + "end": 7001, "loc": { "start": { - "line": 221, + "line": 223, "column": 24 }, "end": { - "line": 221, + "line": 223, "column": 33 } } @@ -71822,15 +72376,15 @@ "postfix": false, "binop": null }, - "start": 6997, - "end": 6998, + "start": 7001, + "end": 7002, "loc": { "start": { - "line": 221, + "line": 223, "column": 33 }, "end": { - "line": 221, + "line": 223, "column": 34 } } @@ -71847,15 +72401,15 @@ "postfix": false, "binop": null }, - "start": 6999, - "end": 7000, + "start": 7003, + "end": 7004, "loc": { "start": { - "line": 221, + "line": 223, "column": 35 }, "end": { - "line": 221, + "line": 223, "column": 36 } } @@ -71875,15 +72429,15 @@ "updateContext": null }, "value": "return", - "start": 7017, - "end": 7023, + "start": 7021, + "end": 7027, "loc": { "start": { - "line": 222, + "line": 224, "column": 16 }, "end": { - "line": 222, + "line": 224, "column": 22 } } @@ -71901,15 +72455,15 @@ "binop": null, "updateContext": null }, - "start": 7023, - "end": 7024, + "start": 7027, + "end": 7028, "loc": { "start": { - "line": 222, + "line": 224, "column": 22 }, "end": { - "line": 222, + "line": 224, "column": 23 } } @@ -71926,34 +72480,8 @@ "postfix": false, "binop": null }, - "start": 7037, - "end": 7038, - "loc": { - "start": { - "line": 223, - "column": 12 - }, - "end": { - "line": 223, - "column": 13 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "updates", - "start": 7052, - "end": 7059, + "start": 7041, + "end": 7042, "loc": { "start": { "line": 225, @@ -71961,140 +72489,7 @@ }, "end": { "line": 225, - "column": 19 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 7059, - "end": 7060, - "loc": { - "start": { - "line": 225, - "column": 19 - }, - "end": { - "line": 225, - "column": 20 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "inputFromMouse", - "start": 7060, - "end": 7074, - "loc": { - "start": { - "line": 225, - "column": 20 - }, - "end": { - "line": 225, - "column": 34 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 7075, - "end": 7076, - "loc": { - "start": { - "line": 225, - "column": 35 - }, - "end": { - "line": 225, - "column": 36 - } - } - }, - { - "type": { - "label": "true", - "keyword": "true", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "true", - "start": 7077, - "end": 7081, - "loc": { - "start": { - "line": 225, - "column": 37 - }, - "end": { - "line": 225, - "column": 41 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 7081, - "end": 7082, - "loc": { - "start": { - "line": 225, - "column": 41 - }, - "end": { - "line": 225, - "column": 42 + "column": 13 } } }, @@ -72110,9 +72505,9 @@ "postfix": false, "binop": null }, - "value": "mouseMovedSinceLastWheel", - "start": 7096, - "end": 7120, + "value": "mouseMovedOnCanvasSinceLastWheel", + "start": 7056, + "end": 7088, "loc": { "start": { "line": 227, @@ -72120,7 +72515,7 @@ }, "end": { "line": 227, - "column": 36 + "column": 44 } } }, @@ -72138,16 +72533,16 @@ "updateContext": null }, "value": "=", - "start": 7121, - "end": 7122, + "start": 7089, + "end": 7090, "loc": { "start": { "line": 227, - "column": 37 + "column": 45 }, "end": { "line": 227, - "column": 38 + "column": 46 } } }, @@ -72166,16 +72561,16 @@ "updateContext": null }, "value": "true", - "start": 7123, - "end": 7127, + "start": 7091, + "end": 7095, "loc": { "start": { "line": 227, - "column": 39 + "column": 47 }, "end": { "line": 227, - "column": 43 + "column": 51 } } }, @@ -72192,16 +72587,16 @@ "binop": null, "updateContext": null }, - "start": 7127, - "end": 7128, + "start": 7095, + "end": 7096, "loc": { "start": { "line": 227, - "column": 43 + "column": 51 }, "end": { "line": 227, - "column": 44 + "column": 52 } } }, @@ -72217,15 +72612,15 @@ "postfix": false, "binop": null }, - "start": 7138, - "end": 7139, + "start": 7105, + "end": 7106, "loc": { "start": { - "line": 229, + "line": 228, "column": 8 }, "end": { - "line": 229, + "line": 228, "column": 9 } } @@ -72242,15 +72637,15 @@ "postfix": false, "binop": null }, - "start": 7139, - "end": 7140, + "start": 7106, + "end": 7107, "loc": { "start": { - "line": 229, + "line": 228, "column": 9 }, "end": { - "line": 229, + "line": 228, "column": 10 } } @@ -72268,15 +72663,15 @@ "binop": null, "updateContext": null }, - "start": 7140, - "end": 7141, + "start": 7107, + "end": 7108, "loc": { "start": { - "line": 229, + "line": 228, "column": 10 }, "end": { - "line": 229, + "line": 228, "column": 11 } } @@ -72294,15 +72689,15 @@ "binop": null }, "value": "document", - "start": 7151, - "end": 7159, + "start": 7118, + "end": 7126, "loc": { "start": { - "line": 231, + "line": 230, "column": 8 }, "end": { - "line": 231, + "line": 230, "column": 16 } } @@ -72320,15 +72715,15 @@ "binop": null, "updateContext": null }, - "start": 7159, - "end": 7160, + "start": 7126, + "end": 7127, "loc": { "start": { - "line": 231, + "line": 230, "column": 16 }, "end": { - "line": 231, + "line": 230, "column": 17 } } @@ -72346,15 +72741,15 @@ "binop": null }, "value": "addEventListener", - "start": 7160, - "end": 7176, + "start": 7127, + "end": 7143, "loc": { "start": { - "line": 231, + "line": 230, "column": 17 }, "end": { - "line": 231, + "line": 230, "column": 33 } } @@ -72371,15 +72766,15 @@ "postfix": false, "binop": null }, - "start": 7176, - "end": 7177, + "start": 7143, + "end": 7144, "loc": { "start": { - "line": 231, + "line": 230, "column": 33 }, "end": { - "line": 231, + "line": 230, "column": 34 } } @@ -72398,15 +72793,15 @@ "updateContext": null }, "value": "mouseup", - "start": 7177, - "end": 7186, + "start": 7144, + "end": 7153, "loc": { "start": { - "line": 231, + "line": 230, "column": 34 }, "end": { - "line": 231, + "line": 230, "column": 43 } } @@ -72424,15 +72819,15 @@ "binop": null, "updateContext": null }, - "start": 7186, - "end": 7187, + "start": 7153, + "end": 7154, "loc": { "start": { - "line": 231, + "line": 230, "column": 43 }, "end": { - "line": 231, + "line": 230, "column": 44 } } @@ -72452,15 +72847,15 @@ "updateContext": null }, "value": "this", - "start": 7188, - "end": 7192, + "start": 7155, + "end": 7159, "loc": { "start": { - "line": 231, + "line": 230, "column": 45 }, "end": { - "line": 231, + "line": 230, "column": 49 } } @@ -72478,15 +72873,15 @@ "binop": null, "updateContext": null }, - "start": 7192, - "end": 7193, + "start": 7159, + "end": 7160, "loc": { "start": { - "line": 231, + "line": 230, "column": 49 }, "end": { - "line": 231, + "line": 230, "column": 50 } } @@ -72504,15 +72899,15 @@ "binop": null }, "value": "_documentMouseUpHandler", - "start": 7193, - "end": 7216, + "start": 7160, + "end": 7183, "loc": { "start": { - "line": 231, + "line": 230, "column": 50 }, "end": { - "line": 231, + "line": 230, "column": 73 } } @@ -72531,15 +72926,15 @@ "updateContext": null }, "value": "=", - "start": 7217, - "end": 7218, + "start": 7184, + "end": 7185, "loc": { "start": { - "line": 231, + "line": 230, "column": 74 }, "end": { - "line": 231, + "line": 230, "column": 75 } } @@ -72556,15 +72951,15 @@ "postfix": false, "binop": null }, - "start": 7219, - "end": 7220, + "start": 7186, + "end": 7187, "loc": { "start": { - "line": 231, + "line": 230, "column": 76 }, "end": { - "line": 231, + "line": 230, "column": 77 } } @@ -72582,15 +72977,15 @@ "binop": null }, "value": "e", - "start": 7220, - "end": 7221, + "start": 7187, + "end": 7188, "loc": { "start": { - "line": 231, + "line": 230, "column": 77 }, "end": { - "line": 231, + "line": 230, "column": 78 } } @@ -72607,15 +73002,15 @@ "postfix": false, "binop": null }, - "start": 7221, - "end": 7222, + "start": 7188, + "end": 7189, "loc": { "start": { - "line": 231, + "line": 230, "column": 78 }, "end": { - "line": 231, + "line": 230, "column": 79 } } @@ -72633,15 +73028,15 @@ "binop": null, "updateContext": null }, - "start": 7223, - "end": 7225, + "start": 7190, + "end": 7192, "loc": { "start": { - "line": 231, + "line": 230, "column": 80 }, "end": { - "line": 231, + "line": 230, "column": 82 } } @@ -72658,15 +73053,15 @@ "postfix": false, "binop": null }, - "start": 7226, - "end": 7227, + "start": 7193, + "end": 7194, "loc": { "start": { - "line": 231, + "line": 230, "column": 83 }, "end": { - "line": 231, + "line": 230, "column": 84 } } @@ -72686,15 +73081,15 @@ "updateContext": null }, "value": "if", - "start": 7240, - "end": 7242, + "start": 7207, + "end": 7209, "loc": { "start": { - "line": 232, + "line": 231, "column": 12 }, "end": { - "line": 232, + "line": 231, "column": 14 } } @@ -72711,15 +73106,15 @@ "postfix": false, "binop": null }, - "start": 7243, - "end": 7244, + "start": 7210, + "end": 7211, "loc": { "start": { - "line": 232, + "line": 231, "column": 15 }, "end": { - "line": 232, + "line": 231, "column": 16 } } @@ -72738,15 +73133,15 @@ "updateContext": null }, "value": "!", - "start": 7244, - "end": 7245, + "start": 7211, + "end": 7212, "loc": { "start": { - "line": 232, + "line": 231, "column": 16 }, "end": { - "line": 232, + "line": 231, "column": 17 } } @@ -72763,15 +73158,15 @@ "postfix": false, "binop": null }, - "start": 7245, - "end": 7246, + "start": 7212, + "end": 7213, "loc": { "start": { - "line": 232, + "line": 231, "column": 17 }, "end": { - "line": 232, + "line": 231, "column": 18 } } @@ -72789,15 +73184,15 @@ "binop": null }, "value": "configs", - "start": 7246, - "end": 7253, + "start": 7213, + "end": 7220, "loc": { "start": { - "line": 232, + "line": 231, "column": 18 }, "end": { - "line": 232, + "line": 231, "column": 25 } } @@ -72815,15 +73210,15 @@ "binop": null, "updateContext": null }, - "start": 7253, - "end": 7254, + "start": 7220, + "end": 7221, "loc": { "start": { - "line": 232, + "line": 231, "column": 25 }, "end": { - "line": 232, + "line": 231, "column": 26 } } @@ -72841,15 +73236,15 @@ "binop": null }, "value": "active", - "start": 7254, - "end": 7260, + "start": 7221, + "end": 7227, "loc": { "start": { - "line": 232, + "line": 231, "column": 26 }, "end": { - "line": 232, + "line": 231, "column": 32 } } @@ -72868,15 +73263,15 @@ "updateContext": null }, "value": "&&", - "start": 7261, - "end": 7263, + "start": 7228, + "end": 7230, "loc": { "start": { - "line": 232, + "line": 231, "column": 33 }, "end": { - "line": 232, + "line": 231, "column": 35 } } @@ -72894,15 +73289,15 @@ "binop": null }, "value": "configs", - "start": 7264, - "end": 7271, + "start": 7231, + "end": 7238, "loc": { "start": { - "line": 232, + "line": 231, "column": 36 }, "end": { - "line": 232, + "line": 231, "column": 43 } } @@ -72920,15 +73315,15 @@ "binop": null, "updateContext": null }, - "start": 7271, - "end": 7272, + "start": 7238, + "end": 7239, "loc": { "start": { - "line": 232, + "line": 231, "column": 43 }, "end": { - "line": 232, + "line": 231, "column": 44 } } @@ -72946,15 +73341,15 @@ "binop": null }, "value": "pointerEnabled", - "start": 7272, - "end": 7286, + "start": 7239, + "end": 7253, "loc": { "start": { - "line": 232, + "line": 231, "column": 44 }, "end": { - "line": 232, + "line": 231, "column": 58 } } @@ -72971,15 +73366,15 @@ "postfix": false, "binop": null }, - "start": 7286, - "end": 7287, + "start": 7253, + "end": 7254, "loc": { "start": { - "line": 232, + "line": 231, "column": 58 }, "end": { - "line": 232, + "line": 231, "column": 59 } } @@ -72996,15 +73391,15 @@ "postfix": false, "binop": null }, - "start": 7287, - "end": 7288, + "start": 7254, + "end": 7255, "loc": { "start": { - "line": 232, + "line": 231, "column": 59 }, "end": { - "line": 232, + "line": 231, "column": 60 } } @@ -73021,15 +73416,15 @@ "postfix": false, "binop": null }, - "start": 7289, - "end": 7290, + "start": 7256, + "end": 7257, "loc": { "start": { - "line": 232, + "line": 231, "column": 61 }, "end": { - "line": 232, + "line": 231, "column": 62 } } @@ -73049,15 +73444,15 @@ "updateContext": null }, "value": "return", - "start": 7307, - "end": 7313, + "start": 7274, + "end": 7280, "loc": { "start": { - "line": 233, + "line": 232, "column": 16 }, "end": { - "line": 233, + "line": 232, "column": 22 } } @@ -73075,15 +73470,15 @@ "binop": null, "updateContext": null }, - "start": 7313, - "end": 7314, + "start": 7280, + "end": 7281, "loc": { "start": { - "line": 233, + "line": 232, "column": 22 }, "end": { - "line": 233, + "line": 232, "column": 23 } } @@ -73100,15 +73495,15 @@ "postfix": false, "binop": null }, - "start": 7327, - "end": 7328, + "start": 7294, + "end": 7295, "loc": { "start": { - "line": 234, + "line": 233, "column": 12 }, "end": { - "line": 234, + "line": 233, "column": 13 } } @@ -73128,15 +73523,15 @@ "updateContext": null }, "value": "switch", - "start": 7341, - "end": 7347, + "start": 7308, + "end": 7314, "loc": { "start": { - "line": 235, + "line": 234, "column": 12 }, "end": { - "line": 235, + "line": 234, "column": 18 } } @@ -73153,15 +73548,15 @@ "postfix": false, "binop": null }, - "start": 7348, - "end": 7349, + "start": 7315, + "end": 7316, "loc": { "start": { - "line": 235, + "line": 234, "column": 19 }, "end": { - "line": 235, + "line": 234, "column": 20 } } @@ -73179,15 +73574,15 @@ "binop": null }, "value": "e", - "start": 7349, - "end": 7350, + "start": 7316, + "end": 7317, "loc": { "start": { - "line": 235, + "line": 234, "column": 20 }, "end": { - "line": 235, + "line": 234, "column": 21 } } @@ -73205,15 +73600,15 @@ "binop": null, "updateContext": null }, - "start": 7350, - "end": 7351, + "start": 7317, + "end": 7318, "loc": { "start": { - "line": 235, + "line": 234, "column": 21 }, "end": { - "line": 235, + "line": 234, "column": 22 } } @@ -73231,15 +73626,15 @@ "binop": null }, "value": "which", - "start": 7351, - "end": 7356, + "start": 7318, + "end": 7323, "loc": { "start": { - "line": 235, + "line": 234, "column": 22 }, "end": { - "line": 235, + "line": 234, "column": 27 } } @@ -73256,15 +73651,15 @@ "postfix": false, "binop": null }, - "start": 7356, - "end": 7357, + "start": 7323, + "end": 7324, "loc": { "start": { - "line": 235, + "line": 234, "column": 27 }, "end": { - "line": 235, + "line": 234, "column": 28 } } @@ -73281,15 +73676,15 @@ "postfix": false, "binop": null }, - "start": 7358, - "end": 7359, + "start": 7325, + "end": 7326, "loc": { "start": { - "line": 235, + "line": 234, "column": 29 }, "end": { - "line": 235, + "line": 234, "column": 30 } } @@ -73309,15 +73704,15 @@ "updateContext": null }, "value": "case", - "start": 7376, - "end": 7380, + "start": 7343, + "end": 7347, "loc": { "start": { - "line": 236, + "line": 235, "column": 16 }, "end": { - "line": 236, + "line": 235, "column": 20 } } @@ -73336,15 +73731,15 @@ "updateContext": null }, "value": 1, - "start": 7381, - "end": 7382, + "start": 7348, + "end": 7349, "loc": { "start": { - "line": 236, + "line": 235, "column": 21 }, "end": { - "line": 236, + "line": 235, "column": 22 } } @@ -73362,15 +73757,15 @@ "binop": null, "updateContext": null }, - "start": 7382, - "end": 7383, + "start": 7349, + "end": 7350, "loc": { "start": { - "line": 236, + "line": 235, "column": 22 }, "end": { - "line": 236, + "line": 235, "column": 23 } } @@ -73378,15 +73773,15 @@ { "type": "CommentLine", "value": " Left button", - "start": 7384, - "end": 7398, + "start": 7351, + "end": 7365, "loc": { "start": { - "line": 236, + "line": 235, "column": 24 }, "end": { - "line": 236, + "line": 235, "column": 38 } } @@ -73404,15 +73799,15 @@ "binop": null }, "value": "mouseDownLeft", - "start": 7419, - "end": 7432, + "start": 7386, + "end": 7399, "loc": { "start": { - "line": 237, + "line": 236, "column": 20 }, "end": { - "line": 237, + "line": 236, "column": 33 } } @@ -73431,15 +73826,15 @@ "updateContext": null }, "value": "=", - "start": 7433, - "end": 7434, + "start": 7400, + "end": 7401, "loc": { "start": { - "line": 237, + "line": 236, "column": 34 }, "end": { - "line": 237, + "line": 236, "column": 35 } } @@ -73459,8 +73854,87 @@ "updateContext": null }, "value": "false", - "start": 7435, - "end": 7440, + "start": 7402, + "end": 7407, + "loc": { + "start": { + "line": 236, + "column": 36 + }, + "end": { + "line": 236, + "column": 41 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7407, + "end": 7408, + "loc": { + "start": { + "line": 236, + "column": 41 + }, + "end": { + "line": 236, + "column": 42 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mouseDownMiddle", + "start": 7429, + "end": 7444, + "loc": { + "start": { + "line": 237, + "column": 20 + }, + "end": { + "line": 237, + "column": 35 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 7445, + "end": 7446, "loc": { "start": { "line": 237, @@ -73468,7 +73942,35 @@ }, "end": { "line": 237, - "column": 41 + "column": 37 + } + } + }, + { + "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": 7447, + "end": 7452, + "loc": { + "start": { + "line": 237, + "column": 38 + }, + "end": { + "line": 237, + "column": 43 } } }, @@ -73485,16 +73987,123 @@ "binop": null, "updateContext": null }, - "start": 7440, - "end": 7441, + "start": 7452, + "end": 7453, "loc": { "start": { "line": 237, - "column": 41 + "column": 43 }, "end": { "line": 237, + "column": 44 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "mouseDownRight", + "start": 7474, + "end": 7488, + "loc": { + "start": { + "line": 238, + "column": 20 + }, + "end": { + "line": 238, + "column": 34 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 7489, + "end": 7490, + "loc": { + "start": { + "line": 238, + "column": 35 + }, + "end": { + "line": 238, + "column": 36 + } + } + }, + { + "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": 7491, + "end": 7496, + "loc": { + "start": { + "line": 238, + "column": 37 + }, + "end": { + "line": 238, + "column": 42 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7496, + "end": 7497, + "loc": { + "start": { + "line": 238, "column": 42 + }, + "end": { + "line": 238, + "column": 43 } } }, @@ -73513,15 +74122,15 @@ "updateContext": null }, "value": "break", - "start": 7462, - "end": 7467, + "start": 7518, + "end": 7523, "loc": { "start": { - "line": 238, + "line": 239, "column": 20 }, "end": { - "line": 238, + "line": 239, "column": 25 } } @@ -73539,15 +74148,15 @@ "binop": null, "updateContext": null }, - "start": 7467, - "end": 7468, + "start": 7523, + "end": 7524, "loc": { "start": { - "line": 238, + "line": 239, "column": 25 }, "end": { - "line": 238, + "line": 239, "column": 26 } } @@ -73567,15 +74176,15 @@ "updateContext": null }, "value": "case", - "start": 7485, - "end": 7489, + "start": 7541, + "end": 7545, "loc": { "start": { - "line": 239, + "line": 240, "column": 16 }, "end": { - "line": 239, + "line": 240, "column": 20 } } @@ -73594,15 +74203,15 @@ "updateContext": null }, "value": 2, - "start": 7490, - "end": 7491, + "start": 7546, + "end": 7547, "loc": { "start": { - "line": 239, + "line": 240, "column": 21 }, "end": { - "line": 239, + "line": 240, "column": 22 } } @@ -73620,15 +74229,15 @@ "binop": null, "updateContext": null }, - "start": 7491, - "end": 7492, + "start": 7547, + "end": 7548, "loc": { "start": { - "line": 239, + "line": 240, "column": 22 }, "end": { - "line": 239, + "line": 240, "column": 23 } } @@ -73636,15 +74245,15 @@ { "type": "CommentLine", "value": " Middle/both buttons", - "start": 7493, - "end": 7515, + "start": 7549, + "end": 7571, "loc": { "start": { - "line": 239, + "line": 240, "column": 24 }, "end": { - "line": 239, + "line": 240, "column": 46 } } @@ -73661,17 +74270,17 @@ "postfix": false, "binop": null }, - "value": "mouseDownMiddle", - "start": 7536, - "end": 7551, + "value": "mouseDownLeft", + "start": 7592, + "end": 7605, "loc": { "start": { - "line": 240, + "line": 241, "column": 20 }, "end": { - "line": 240, - "column": 35 + "line": 241, + "column": 33 } } }, @@ -73689,16 +74298,16 @@ "updateContext": null }, "value": "=", - "start": 7552, - "end": 7553, + "start": 7606, + "end": 7607, "loc": { "start": { - "line": 240, - "column": 36 + "line": 241, + "column": 34 }, "end": { - "line": 240, - "column": 37 + "line": 241, + "column": 35 } } }, @@ -73717,16 +74326,16 @@ "updateContext": null }, "value": "false", - "start": 7554, - "end": 7559, + "start": 7608, + "end": 7613, "loc": { "start": { - "line": 240, - "column": 38 + "line": 241, + "column": 36 }, "end": { - "line": 240, - "column": 43 + "line": 241, + "column": 41 } } }, @@ -73743,104 +74352,76 @@ "binop": null, "updateContext": null }, - "start": 7559, - "end": 7560, - "loc": { - "start": { - "line": 240, - "column": 43 - }, - "end": { - "line": 240, - "column": 44 - } - } - }, - { - "type": { - "label": "break", - "keyword": "break", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "break", - "start": 7581, - "end": 7586, + "start": 7613, + "end": 7614, "loc": { "start": { "line": 241, - "column": 20 + "column": 41 }, "end": { "line": 241, - "column": 25 + "column": 42 } } }, { "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": 7586, - "end": 7587, + "value": "mouseDownMiddle", + "start": 7635, + "end": 7650, "loc": { "start": { - "line": 241, - "column": 25 + "line": 242, + "column": 20 }, "end": { - "line": 241, - "column": 26 + "line": 242, + "column": 35 } } }, { "type": { - "label": "case", - "keyword": "case", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "case", - "start": 7604, - "end": 7608, + "value": "=", + "start": 7651, + "end": 7652, "loc": { "start": { "line": 242, - "column": 16 + "column": 36 }, "end": { "line": 242, - "column": 20 + "column": 37 } } }, { "type": { - "label": "num", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -73851,23 +74432,23 @@ "binop": null, "updateContext": null }, - "value": 3, - "start": 7609, - "end": 7610, + "value": "false", + "start": 7653, + "end": 7658, "loc": { "start": { "line": 242, - "column": 21 + "column": 38 }, "end": { "line": 242, - "column": 22 + "column": 43 } } }, { "type": { - "label": ":", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -73878,32 +74459,16 @@ "binop": null, "updateContext": null }, - "start": 7610, - "end": 7611, + "start": 7658, + "end": 7659, "loc": { "start": { "line": 242, - "column": 22 - }, - "end": { - "line": 242, - "column": 23 - } - } - }, - { - "type": "CommentLine", - "value": " Right button", - "start": 7612, - "end": 7627, - "loc": { - "start": { - "line": 242, - "column": 24 + "column": 43 }, "end": { "line": 242, - "column": 39 + "column": 44 } } }, @@ -73920,8 +74485,8 @@ "binop": null }, "value": "mouseDownRight", - "start": 7648, - "end": 7662, + "start": 7680, + "end": 7694, "loc": { "start": { "line": 243, @@ -73947,8 +74512,8 @@ "updateContext": null }, "value": "=", - "start": 7663, - "end": 7664, + "start": 7695, + "end": 7696, "loc": { "start": { "line": 243, @@ -73975,8 +74540,8 @@ "updateContext": null }, "value": "false", - "start": 7665, - "end": 7670, + "start": 7697, + "end": 7702, "loc": { "start": { "line": 243, @@ -74001,8 +74566,8 @@ "binop": null, "updateContext": null }, - "start": 7670, - "end": 7671, + "start": 7702, + "end": 7703, "loc": { "start": { "line": 243, @@ -74029,8 +74594,8 @@ "updateContext": null }, "value": "break", - "start": 7692, - "end": 7697, + "start": 7724, + "end": 7729, "loc": { "start": { "line": 244, @@ -74055,8 +74620,8 @@ "binop": null, "updateContext": null }, - "start": 7697, - "end": 7698, + "start": 7729, + "end": 7730, "loc": { "start": { "line": 244, @@ -74070,8 +74635,8 @@ }, { "type": { - "label": "default", - "keyword": "default", + "label": "case", + "keyword": "case", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -74082,9 +74647,9 @@ "binop": null, "updateContext": null }, - "value": "default", - "start": 7715, - "end": 7722, + "value": "case", + "start": 7747, + "end": 7751, "loc": { "start": { "line": 245, @@ -74092,7 +74657,34 @@ }, "end": { "line": 245, - "column": 23 + "column": 20 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 3, + "start": 7752, + "end": 7753, + "loc": { + "start": { + "line": 245, + "column": 21 + }, + "end": { + "line": 245, + "column": 22 } } }, @@ -74109,36 +74701,50 @@ "binop": null, "updateContext": null }, - "start": 7722, - "end": 7723, + "start": 7753, + "end": 7754, "loc": { "start": { "line": 245, - "column": 23 + "column": 22 }, "end": { + "line": 245, + "column": 23 + } + } + }, + { + "type": "CommentLine", + "value": " Right button", + "start": 7755, + "end": 7770, + "loc": { + "start": { "line": 245, "column": 24 + }, + "end": { + "line": 245, + "column": 39 } } }, { "type": { - "label": "break", - "keyword": "break", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "break", - "start": 7744, - "end": 7749, + "value": "mouseDownLeft", + "start": 7791, + "end": 7804, "loc": { "start": { "line": 246, @@ -74146,58 +74752,88 @@ }, "end": { "line": 246, - "column": 25 + "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": 7749, - "end": 7750, + "value": "=", + "start": 7805, + "end": 7806, "loc": { "start": { "line": 246, - "column": 25 + "column": 34 }, "end": { "line": 246, - "column": 26 + "column": 35 } } }, { "type": { - "label": "}", + "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": 7807, + "end": 7812, + "loc": { + "start": { + "line": 246, + "column": 36 + }, + "end": { + "line": 246, + "column": 41 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 7763, - "end": 7764, + "start": 7812, + "end": 7813, "loc": { "start": { - "line": 247, - "column": 12 + "line": 246, + "column": 41 }, "end": { - "line": 247, - "column": 13 + "line": 246, + "column": 42 } } }, @@ -74213,17 +74849,17 @@ "postfix": false, "binop": null }, - "value": "xRotateDelta", - "start": 7777, - "end": 7789, + "value": "mouseDownMiddle", + "start": 7834, + "end": 7849, "loc": { "start": { - "line": 248, - "column": 12 + "line": 247, + "column": 20 }, "end": { - "line": 248, - "column": 24 + "line": 247, + "column": 35 } } }, @@ -74241,22 +74877,23 @@ "updateContext": null }, "value": "=", - "start": 7790, - "end": 7791, + "start": 7850, + "end": 7851, "loc": { "start": { - "line": 248, - "column": 25 + "line": 247, + "column": 36 }, "end": { - "line": 248, - "column": 26 + "line": 247, + "column": 37 } } }, { "type": { - "label": "num", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -74267,17 +74904,17 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 7792, - "end": 7793, + "value": "false", + "start": 7852, + "end": 7857, "loc": { "start": { - "line": 248, - "column": 27 + "line": 247, + "column": 38 }, "end": { - "line": 248, - "column": 28 + "line": 247, + "column": 43 } } }, @@ -74294,16 +74931,16 @@ "binop": null, "updateContext": null }, - "start": 7793, - "end": 7794, + "start": 7857, + "end": 7858, "loc": { "start": { - "line": 248, - "column": 28 + "line": 247, + "column": 43 }, "end": { - "line": 248, - "column": 29 + "line": 247, + "column": 44 } } }, @@ -74319,17 +74956,17 @@ "postfix": false, "binop": null }, - "value": "yRotateDelta", - "start": 7807, - "end": 7819, + "value": "mouseDownRight", + "start": 7879, + "end": 7893, "loc": { "start": { - "line": 249, - "column": 12 + "line": 248, + "column": 20 }, "end": { - "line": 249, - "column": 24 + "line": 248, + "column": 34 } } }, @@ -74347,22 +74984,23 @@ "updateContext": null }, "value": "=", - "start": 7820, - "end": 7821, + "start": 7894, + "end": 7895, "loc": { "start": { - "line": 249, - "column": 25 + "line": 248, + "column": 35 }, "end": { - "line": 249, - "column": 26 + "line": 248, + "column": 36 } } }, { "type": { - "label": "num", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -74373,17 +75011,17 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 7822, - "end": 7823, + "value": "false", + "start": 7896, + "end": 7901, "loc": { "start": { - "line": 249, - "column": 27 + "line": 248, + "column": 37 }, "end": { - "line": 249, - "column": 28 + "line": 248, + "column": 42 } } }, @@ -74400,25 +75038,25 @@ "binop": null, "updateContext": null }, - "start": 7823, - "end": 7824, + "start": 7901, + "end": 7902, "loc": { "start": { - "line": 249, - "column": 28 + "line": 248, + "column": 42 }, "end": { - "line": 249, - "column": 29 + "line": 248, + "column": 43 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "break", + "keyword": "break", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -74427,24 +75065,24 @@ "binop": null, "updateContext": null }, - "value": "this", - "start": 7837, - "end": 7841, + "value": "break", + "start": 7923, + "end": 7928, "loc": { "start": { - "line": 250, - "column": 12 + "line": 249, + "column": 20 }, "end": { - "line": 250, - "column": 16 + "line": 249, + "column": 25 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -74454,61 +75092,62 @@ "binop": null, "updateContext": null }, - "start": 7841, - "end": 7842, + "start": 7928, + "end": 7929, "loc": { "start": { - "line": 250, - "column": 16 + "line": 249, + "column": 25 }, "end": { - "line": 250, - "column": 17 + "line": 249, + "column": 26 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "default", + "keyword": "default", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_down", - "start": 7842, - "end": 7847, + "value": "default", + "start": 7946, + "end": 7953, "loc": { "start": { "line": 250, - "column": 17 + "column": 16 }, "end": { "line": 250, - "column": 22 + "column": 23 } } }, { "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": 7848, - "end": 7849, + "start": 7953, + "end": 7954, "loc": { "start": { "line": 250, @@ -74522,10 +75161,10 @@ }, { "type": { - "label": "false", - "keyword": "false", + "label": "break", + "keyword": "break", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -74534,17 +75173,17 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 7850, - "end": 7855, + "value": "break", + "start": 7975, + "end": 7980, "loc": { "start": { - "line": 250, - "column": 25 + "line": 251, + "column": 20 }, "end": { - "line": 250, - "column": 30 + "line": 251, + "column": 25 } } }, @@ -74561,24 +75200,24 @@ "binop": null, "updateContext": null }, - "start": 7855, - "end": 7856, + "start": 7980, + "end": 7981, "loc": { "start": { - "line": 250, - "column": 30 + "line": 251, + "column": 25 }, "end": { - "line": 250, - "column": 31 + "line": 251, + "column": 26 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -74586,9 +75225,8 @@ "postfix": false, "binop": null }, - "value": "document", - "start": 7870, - "end": 7878, + "start": 7994, + "end": 7995, "loc": { "start": { "line": 252, @@ -74596,33 +75234,7 @@ }, "end": { "line": 252, - "column": 20 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 7878, - "end": 7879, - "loc": { - "start": { - "line": 252, - "column": 20 - }, - "end": { - "line": 252, - "column": 21 + "column": 13 } } }, @@ -74638,48 +75250,50 @@ "postfix": false, "binop": null }, - "value": "removeEventListener", - "start": 7879, - "end": 7898, + "value": "xRotateDelta", + "start": 8008, + "end": 8020, "loc": { "start": { - "line": 252, - "column": 21 + "line": 253, + "column": 12 }, "end": { - "line": 252, - "column": 40 + "line": 253, + "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": 7898, - "end": 7899, + "value": "=", + "start": 8021, + "end": 8022, "loc": { "start": { - "line": 252, - "column": 40 + "line": 253, + "column": 25 }, "end": { - "line": 252, - "column": 41 + "line": 253, + "column": 26 } } }, { "type": { - "label": "string", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -74690,23 +75304,23 @@ "binop": null, "updateContext": null }, - "value": "mousemove", - "start": 7899, - "end": 7910, + "value": 0, + "start": 8023, + "end": 8024, "loc": { "start": { - "line": 252, - "column": 41 + "line": 253, + "column": 27 }, "end": { - "line": 252, - "column": 52 + "line": 253, + "column": 28 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -74717,23 +75331,22 @@ "binop": null, "updateContext": null }, - "start": 7910, - "end": 7911, + "start": 8024, + "end": 8025, "loc": { "start": { - "line": 252, - "column": 52 + "line": 253, + "column": 28 }, "end": { - "line": 252, - "column": 53 + "line": 253, + "column": 29 } } }, { "type": { - "label": "this", - "keyword": "this", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -74741,52 +75354,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "this", - "start": 7912, - "end": 7916, + "value": "yRotateDelta", + "start": 8038, + "end": 8050, "loc": { "start": { - "line": 252, - "column": 54 + "line": 254, + "column": 12 }, "end": { - "line": 252, - "column": 58 + "line": 254, + "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": 7916, - "end": 7917, + "value": "=", + "start": 8051, + "end": 8052, "loc": { "start": { - "line": 252, - "column": 58 + "line": 254, + "column": 25 }, "end": { - "line": 252, - "column": 59 + "line": 254, + "column": 26 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -74794,44 +75407,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "value": "_documentMouseMoveHandler", - "start": 7917, - "end": 7942, - "loc": { - "start": { - "line": 252, - "column": 59 - }, - "end": { - "line": 252, - "column": 84 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 7942, - "end": 7943, + "value": 0, + "start": 8053, + "end": 8054, "loc": { "start": { - "line": 252, - "column": 84 + "line": 254, + "column": 27 }, "end": { - "line": 252, - "column": 85 + "line": 254, + "column": 28 } } }, @@ -74848,16 +75437,16 @@ "binop": null, "updateContext": null }, - "start": 7943, - "end": 7944, + "start": 8054, + "end": 8055, "loc": { "start": { - "line": 252, - "column": 85 + "line": 254, + "column": 28 }, "end": { - "line": 252, - "column": 86 + "line": 254, + "column": 29 } } }, @@ -74873,15 +75462,15 @@ "postfix": false, "binop": null }, - "start": 7953, - "end": 7954, + "start": 8064, + "end": 8065, "loc": { "start": { - "line": 253, + "line": 255, "column": 8 }, "end": { - "line": 253, + "line": 255, "column": 9 } } @@ -74898,15 +75487,15 @@ "postfix": false, "binop": null }, - "start": 7954, - "end": 7955, + "start": 8065, + "end": 8066, "loc": { "start": { - "line": 253, + "line": 255, "column": 9 }, "end": { - "line": 253, + "line": 255, "column": 10 } } @@ -74924,15 +75513,15 @@ "binop": null, "updateContext": null }, - "start": 7955, - "end": 7956, + "start": 8066, + "end": 8067, "loc": { "start": { - "line": 253, + "line": 255, "column": 10 }, "end": { - "line": 253, + "line": 255, "column": 11 } } @@ -74950,15 +75539,15 @@ "binop": null }, "value": "canvas", - "start": 7966, - "end": 7972, + "start": 8077, + "end": 8083, "loc": { "start": { - "line": 255, + "line": 257, "column": 8 }, "end": { - "line": 255, + "line": 257, "column": 14 } } @@ -74976,15 +75565,15 @@ "binop": null, "updateContext": null }, - "start": 7972, - "end": 7973, + "start": 8083, + "end": 8084, "loc": { "start": { - "line": 255, + "line": 257, "column": 14 }, "end": { - "line": 255, + "line": 257, "column": 15 } } @@ -75002,15 +75591,15 @@ "binop": null }, "value": "addEventListener", - "start": 7973, - "end": 7989, + "start": 8084, + "end": 8100, "loc": { "start": { - "line": 255, + "line": 257, "column": 15 }, "end": { - "line": 255, + "line": 257, "column": 31 } } @@ -75027,15 +75616,15 @@ "postfix": false, "binop": null }, - "start": 7989, - "end": 7990, + "start": 8100, + "end": 8101, "loc": { "start": { - "line": 255, + "line": 257, "column": 31 }, "end": { - "line": 255, + "line": 257, "column": 32 } } @@ -75054,15 +75643,15 @@ "updateContext": null }, "value": "mouseup", - "start": 7990, - "end": 7999, + "start": 8101, + "end": 8110, "loc": { "start": { - "line": 255, + "line": 257, "column": 32 }, "end": { - "line": 255, + "line": 257, "column": 41 } } @@ -75080,15 +75669,15 @@ "binop": null, "updateContext": null }, - "start": 7999, - "end": 8000, + "start": 8110, + "end": 8111, "loc": { "start": { - "line": 255, + "line": 257, "column": 41 }, "end": { - "line": 255, + "line": 257, "column": 42 } } @@ -75108,15 +75697,15 @@ "updateContext": null }, "value": "this", - "start": 8001, - "end": 8005, + "start": 8112, + "end": 8116, "loc": { "start": { - "line": 255, + "line": 257, "column": 43 }, "end": { - "line": 255, + "line": 257, "column": 47 } } @@ -75134,15 +75723,15 @@ "binop": null, "updateContext": null }, - "start": 8005, - "end": 8006, + "start": 8116, + "end": 8117, "loc": { "start": { - "line": 255, + "line": 257, "column": 47 }, "end": { - "line": 255, + "line": 257, "column": 48 } } @@ -75160,15 +75749,15 @@ "binop": null }, "value": "_mouseUpHandler", - "start": 8006, - "end": 8021, + "start": 8117, + "end": 8132, "loc": { "start": { - "line": 255, + "line": 257, "column": 48 }, "end": { - "line": 255, + "line": 257, "column": 63 } } @@ -75187,15 +75776,15 @@ "updateContext": null }, "value": "=", - "start": 8022, - "end": 8023, + "start": 8133, + "end": 8134, "loc": { "start": { - "line": 255, + "line": 257, "column": 64 }, "end": { - "line": 255, + "line": 257, "column": 65 } } @@ -75212,15 +75801,15 @@ "postfix": false, "binop": null }, - "start": 8024, - "end": 8025, + "start": 8135, + "end": 8136, "loc": { "start": { - "line": 255, + "line": 257, "column": 66 }, "end": { - "line": 255, + "line": 257, "column": 67 } } @@ -75238,15 +75827,15 @@ "binop": null }, "value": "e", - "start": 8025, - "end": 8026, + "start": 8136, + "end": 8137, "loc": { "start": { - "line": 255, + "line": 257, "column": 67 }, "end": { - "line": 255, + "line": 257, "column": 68 } } @@ -75263,15 +75852,15 @@ "postfix": false, "binop": null }, - "start": 8026, - "end": 8027, + "start": 8137, + "end": 8138, "loc": { "start": { - "line": 255, + "line": 257, "column": 68 }, "end": { - "line": 255, + "line": 257, "column": 69 } } @@ -75289,15 +75878,15 @@ "binop": null, "updateContext": null }, - "start": 8028, - "end": 8030, + "start": 8139, + "end": 8141, "loc": { "start": { - "line": 255, + "line": 257, "column": 70 }, "end": { - "line": 255, + "line": 257, "column": 72 } } @@ -75314,15 +75903,15 @@ "postfix": false, "binop": null }, - "start": 8031, - "end": 8032, + "start": 8142, + "end": 8143, "loc": { "start": { - "line": 255, + "line": 257, "column": 73 }, "end": { - "line": 255, + "line": 257, "column": 74 } } @@ -75342,15 +75931,15 @@ "updateContext": null }, "value": "if", - "start": 8045, - "end": 8047, + "start": 8156, + "end": 8158, "loc": { "start": { - "line": 256, + "line": 258, "column": 12 }, "end": { - "line": 256, + "line": 258, "column": 14 } } @@ -75367,15 +75956,15 @@ "postfix": false, "binop": null }, - "start": 8048, - "end": 8049, + "start": 8159, + "end": 8160, "loc": { "start": { - "line": 256, + "line": 258, "column": 15 }, "end": { - "line": 256, + "line": 258, "column": 16 } } @@ -75394,15 +75983,15 @@ "updateContext": null }, "value": "!", - "start": 8049, - "end": 8050, + "start": 8160, + "end": 8161, "loc": { "start": { - "line": 256, + "line": 258, "column": 16 }, "end": { - "line": 256, + "line": 258, "column": 17 } } @@ -75419,15 +76008,15 @@ "postfix": false, "binop": null }, - "start": 8050, - "end": 8051, + "start": 8161, + "end": 8162, "loc": { "start": { - "line": 256, + "line": 258, "column": 17 }, "end": { - "line": 256, + "line": 258, "column": 18 } } @@ -75445,15 +76034,15 @@ "binop": null }, "value": "configs", - "start": 8051, - "end": 8058, + "start": 8162, + "end": 8169, "loc": { "start": { - "line": 256, + "line": 258, "column": 18 }, "end": { - "line": 256, + "line": 258, "column": 25 } } @@ -75471,15 +76060,15 @@ "binop": null, "updateContext": null }, - "start": 8058, - "end": 8059, + "start": 8169, + "end": 8170, "loc": { "start": { - "line": 256, + "line": 258, "column": 25 }, "end": { - "line": 256, + "line": 258, "column": 26 } } @@ -75497,15 +76086,15 @@ "binop": null }, "value": "active", - "start": 8059, - "end": 8065, + "start": 8170, + "end": 8176, "loc": { "start": { - "line": 256, + "line": 258, "column": 26 }, "end": { - "line": 256, + "line": 258, "column": 32 } } @@ -75524,15 +76113,15 @@ "updateContext": null }, "value": "&&", - "start": 8066, - "end": 8068, + "start": 8177, + "end": 8179, "loc": { "start": { - "line": 256, + "line": 258, "column": 33 }, "end": { - "line": 256, + "line": 258, "column": 35 } } @@ -75550,15 +76139,15 @@ "binop": null }, "value": "configs", - "start": 8069, - "end": 8076, + "start": 8180, + "end": 8187, "loc": { "start": { - "line": 256, + "line": 258, "column": 36 }, "end": { - "line": 256, + "line": 258, "column": 43 } } @@ -75576,15 +76165,15 @@ "binop": null, "updateContext": null }, - "start": 8076, - "end": 8077, + "start": 8187, + "end": 8188, "loc": { "start": { - "line": 256, + "line": 258, "column": 43 }, "end": { - "line": 256, + "line": 258, "column": 44 } } @@ -75602,15 +76191,15 @@ "binop": null }, "value": "pointerEnabled", - "start": 8077, - "end": 8091, + "start": 8188, + "end": 8202, "loc": { "start": { - "line": 256, + "line": 258, "column": 44 }, "end": { - "line": 256, + "line": 258, "column": 58 } } @@ -75627,15 +76216,15 @@ "postfix": false, "binop": null }, - "start": 8091, - "end": 8092, + "start": 8202, + "end": 8203, "loc": { "start": { - "line": 256, + "line": 258, "column": 58 }, "end": { - "line": 256, + "line": 258, "column": 59 } } @@ -75652,15 +76241,15 @@ "postfix": false, "binop": null }, - "start": 8092, - "end": 8093, + "start": 8203, + "end": 8204, "loc": { "start": { - "line": 256, + "line": 258, "column": 59 }, "end": { - "line": 256, + "line": 258, "column": 60 } } @@ -75677,15 +76266,15 @@ "postfix": false, "binop": null }, - "start": 8094, - "end": 8095, + "start": 8205, + "end": 8206, "loc": { "start": { - "line": 256, + "line": 258, "column": 61 }, "end": { - "line": 256, + "line": 258, "column": 62 } } @@ -75705,15 +76294,15 @@ "updateContext": null }, "value": "return", - "start": 8112, - "end": 8118, + "start": 8223, + "end": 8229, "loc": { "start": { - "line": 257, + "line": 259, "column": 16 }, "end": { - "line": 257, + "line": 259, "column": 22 } } @@ -75731,15 +76320,15 @@ "binop": null, "updateContext": null }, - "start": 8118, - "end": 8119, + "start": 8229, + "end": 8230, "loc": { "start": { - "line": 257, + "line": 259, "column": 22 }, "end": { - "line": 257, + "line": 259, "column": 23 } } @@ -75756,15 +76345,15 @@ "postfix": false, "binop": null }, - "start": 8132, - "end": 8133, + "start": 8243, + "end": 8244, "loc": { "start": { - "line": 258, + "line": 260, "column": 12 }, "end": { - "line": 258, + "line": 260, "column": 13 } } @@ -75784,15 +76373,15 @@ "updateContext": null }, "value": "switch", - "start": 8146, - "end": 8152, + "start": 8257, + "end": 8263, "loc": { "start": { - "line": 259, + "line": 261, "column": 12 }, "end": { - "line": 259, + "line": 261, "column": 18 } } @@ -75809,15 +76398,15 @@ "postfix": false, "binop": null }, - "start": 8153, - "end": 8154, + "start": 8264, + "end": 8265, "loc": { "start": { - "line": 259, + "line": 261, "column": 19 }, "end": { - "line": 259, + "line": 261, "column": 20 } } @@ -75835,15 +76424,15 @@ "binop": null }, "value": "e", - "start": 8154, - "end": 8155, + "start": 8265, + "end": 8266, "loc": { "start": { - "line": 259, + "line": 261, "column": 20 }, "end": { - "line": 259, + "line": 261, "column": 21 } } @@ -75861,15 +76450,15 @@ "binop": null, "updateContext": null }, - "start": 8155, - "end": 8156, + "start": 8266, + "end": 8267, "loc": { "start": { - "line": 259, + "line": 261, "column": 21 }, "end": { - "line": 259, + "line": 261, "column": 22 } } @@ -75887,15 +76476,15 @@ "binop": null }, "value": "which", - "start": 8156, - "end": 8161, + "start": 8267, + "end": 8272, "loc": { "start": { - "line": 259, + "line": 261, "column": 22 }, "end": { - "line": 259, + "line": 261, "column": 27 } } @@ -75912,15 +76501,15 @@ "postfix": false, "binop": null }, - "start": 8161, - "end": 8162, + "start": 8272, + "end": 8273, "loc": { "start": { - "line": 259, + "line": 261, "column": 27 }, "end": { - "line": 259, + "line": 261, "column": 28 } } @@ -75937,15 +76526,15 @@ "postfix": false, "binop": null }, - "start": 8163, - "end": 8164, + "start": 8274, + "end": 8275, "loc": { "start": { - "line": 259, + "line": 261, "column": 29 }, "end": { - "line": 259, + "line": 261, "column": 30 } } @@ -75965,15 +76554,15 @@ "updateContext": null }, "value": "case", - "start": 8181, - "end": 8185, + "start": 8292, + "end": 8296, "loc": { "start": { - "line": 260, + "line": 262, "column": 16 }, "end": { - "line": 260, + "line": 262, "column": 20 } } @@ -75992,15 +76581,15 @@ "updateContext": null }, "value": 3, - "start": 8186, - "end": 8187, + "start": 8297, + "end": 8298, "loc": { "start": { - "line": 260, + "line": 262, "column": 21 }, "end": { - "line": 260, + "line": 262, "column": 22 } } @@ -76018,15 +76607,15 @@ "binop": null, "updateContext": null }, - "start": 8187, - "end": 8188, + "start": 8298, + "end": 8299, "loc": { "start": { - "line": 260, + "line": 262, "column": 22 }, "end": { - "line": 260, + "line": 262, "column": 23 } } @@ -76034,15 +76623,15 @@ { "type": "CommentLine", "value": " Right button", - "start": 8189, - "end": 8204, + "start": 8300, + "end": 8315, "loc": { "start": { - "line": 260, + "line": 262, "column": 24 }, "end": { - "line": 260, + "line": 262, "column": 39 } } @@ -76060,15 +76649,15 @@ "binop": null }, "value": "getCanvasPosFromEvent", - "start": 8225, - "end": 8246, + "start": 8336, + "end": 8357, "loc": { "start": { - "line": 261, + "line": 263, "column": 20 }, "end": { - "line": 261, + "line": 263, "column": 41 } } @@ -76085,15 +76674,15 @@ "postfix": false, "binop": null }, - "start": 8246, - "end": 8247, + "start": 8357, + "end": 8358, "loc": { "start": { - "line": 261, + "line": 263, "column": 41 }, "end": { - "line": 261, + "line": 263, "column": 42 } } @@ -76111,15 +76700,15 @@ "binop": null }, "value": "e", - "start": 8247, - "end": 8248, + "start": 8358, + "end": 8359, "loc": { "start": { - "line": 261, + "line": 263, "column": 42 }, "end": { - "line": 261, + "line": 263, "column": 43 } } @@ -76137,15 +76726,15 @@ "binop": null, "updateContext": null }, - "start": 8248, - "end": 8249, + "start": 8359, + "end": 8360, "loc": { "start": { - "line": 261, + "line": 263, "column": 43 }, "end": { - "line": 261, + "line": 263, "column": 44 } } @@ -76163,15 +76752,15 @@ "binop": null }, "value": "canvasPos", - "start": 8250, - "end": 8259, + "start": 8361, + "end": 8370, "loc": { "start": { - "line": 261, + "line": 263, "column": 45 }, "end": { - "line": 261, + "line": 263, "column": 54 } } @@ -76188,15 +76777,15 @@ "postfix": false, "binop": null }, - "start": 8259, - "end": 8260, + "start": 8370, + "end": 8371, "loc": { "start": { - "line": 261, + "line": 263, "column": 54 }, "end": { - "line": 261, + "line": 263, "column": 55 } } @@ -76214,15 +76803,15 @@ "binop": null, "updateContext": null }, - "start": 8260, - "end": 8261, + "start": 8371, + "end": 8372, "loc": { "start": { - "line": 261, + "line": 263, "column": 55 }, "end": { - "line": 261, + "line": 263, "column": 56 } } @@ -76242,15 +76831,15 @@ "updateContext": null }, "value": "const", - "start": 8282, - "end": 8287, + "start": 8393, + "end": 8398, "loc": { "start": { - "line": 262, + "line": 264, "column": 20 }, "end": { - "line": 262, + "line": 264, "column": 25 } } @@ -76268,15 +76857,15 @@ "binop": null }, "value": "x", - "start": 8288, - "end": 8289, + "start": 8399, + "end": 8400, "loc": { "start": { - "line": 262, + "line": 264, "column": 26 }, "end": { - "line": 262, + "line": 264, "column": 27 } } @@ -76295,15 +76884,15 @@ "updateContext": null }, "value": "=", - "start": 8290, - "end": 8291, + "start": 8401, + "end": 8402, "loc": { "start": { - "line": 262, + "line": 264, "column": 28 }, "end": { - "line": 262, + "line": 264, "column": 29 } } @@ -76321,15 +76910,15 @@ "binop": null }, "value": "canvasPos", - "start": 8292, - "end": 8301, + "start": 8403, + "end": 8412, "loc": { "start": { - "line": 262, + "line": 264, "column": 30 }, "end": { - "line": 262, + "line": 264, "column": 39 } } @@ -76347,15 +76936,15 @@ "binop": null, "updateContext": null }, - "start": 8301, - "end": 8302, + "start": 8412, + "end": 8413, "loc": { "start": { - "line": 262, + "line": 264, "column": 39 }, "end": { - "line": 262, + "line": 264, "column": 40 } } @@ -76374,15 +76963,15 @@ "updateContext": null }, "value": 0, - "start": 8302, - "end": 8303, + "start": 8413, + "end": 8414, "loc": { "start": { - "line": 262, + "line": 264, "column": 40 }, "end": { - "line": 262, + "line": 264, "column": 41 } } @@ -76400,15 +76989,15 @@ "binop": null, "updateContext": null }, - "start": 8303, - "end": 8304, + "start": 8414, + "end": 8415, "loc": { "start": { - "line": 262, + "line": 264, "column": 41 }, "end": { - "line": 262, + "line": 264, "column": 42 } } @@ -76426,15 +77015,15 @@ "binop": null, "updateContext": null }, - "start": 8304, - "end": 8305, + "start": 8415, + "end": 8416, "loc": { "start": { - "line": 262, + "line": 264, "column": 42 }, "end": { - "line": 262, + "line": 264, "column": 43 } } @@ -76454,15 +77043,15 @@ "updateContext": null }, "value": "const", - "start": 8326, - "end": 8331, + "start": 8437, + "end": 8442, "loc": { "start": { - "line": 263, + "line": 265, "column": 20 }, "end": { - "line": 263, + "line": 265, "column": 25 } } @@ -76480,15 +77069,15 @@ "binop": null }, "value": "y", - "start": 8332, - "end": 8333, + "start": 8443, + "end": 8444, "loc": { "start": { - "line": 263, + "line": 265, "column": 26 }, "end": { - "line": 263, + "line": 265, "column": 27 } } @@ -76507,15 +77096,15 @@ "updateContext": null }, "value": "=", - "start": 8334, - "end": 8335, + "start": 8445, + "end": 8446, "loc": { "start": { - "line": 263, + "line": 265, "column": 28 }, "end": { - "line": 263, + "line": 265, "column": 29 } } @@ -76533,15 +77122,15 @@ "binop": null }, "value": "canvasPos", - "start": 8336, - "end": 8345, + "start": 8447, + "end": 8456, "loc": { "start": { - "line": 263, + "line": 265, "column": 30 }, "end": { - "line": 263, + "line": 265, "column": 39 } } @@ -76559,15 +77148,15 @@ "binop": null, "updateContext": null }, - "start": 8345, - "end": 8346, + "start": 8456, + "end": 8457, "loc": { "start": { - "line": 263, + "line": 265, "column": 39 }, "end": { - "line": 263, + "line": 265, "column": 40 } } @@ -76586,15 +77175,15 @@ "updateContext": null }, "value": 1, - "start": 8346, - "end": 8347, + "start": 8457, + "end": 8458, "loc": { "start": { - "line": 263, + "line": 265, "column": 40 }, "end": { - "line": 263, + "line": 265, "column": 41 } } @@ -76612,15 +77201,15 @@ "binop": null, "updateContext": null }, - "start": 8347, - "end": 8348, + "start": 8458, + "end": 8459, "loc": { "start": { - "line": 263, + "line": 265, "column": 41 }, "end": { - "line": 263, + "line": 265, "column": 42 } } @@ -76638,15 +77227,15 @@ "binop": null, "updateContext": null }, - "start": 8348, - "end": 8349, + "start": 8459, + "end": 8460, "loc": { "start": { - "line": 263, + "line": 265, "column": 42 }, "end": { - "line": 263, + "line": 265, "column": 43 } } @@ -76666,15 +77255,15 @@ "updateContext": null }, "value": "if", - "start": 8370, - "end": 8372, + "start": 8481, + "end": 8483, "loc": { "start": { - "line": 264, + "line": 266, "column": 20 }, "end": { - "line": 264, + "line": 266, "column": 22 } } @@ -76691,15 +77280,15 @@ "postfix": false, "binop": null }, - "start": 8373, - "end": 8374, + "start": 8484, + "end": 8485, "loc": { "start": { - "line": 264, + "line": 266, "column": 23 }, "end": { - "line": 264, + "line": 266, "column": 24 } } @@ -76717,15 +77306,15 @@ "binop": null }, "value": "Math", - "start": 8374, - "end": 8378, + "start": 8485, + "end": 8489, "loc": { "start": { - "line": 264, + "line": 266, "column": 24 }, "end": { - "line": 264, + "line": 266, "column": 28 } } @@ -76743,15 +77332,15 @@ "binop": null, "updateContext": null }, - "start": 8378, - "end": 8379, + "start": 8489, + "end": 8490, "loc": { "start": { - "line": 264, + "line": 266, "column": 28 }, "end": { - "line": 264, + "line": 266, "column": 29 } } @@ -76769,15 +77358,15 @@ "binop": null }, "value": "abs", - "start": 8379, - "end": 8382, + "start": 8490, + "end": 8493, "loc": { "start": { - "line": 264, + "line": 266, "column": 29 }, "end": { - "line": 264, + "line": 266, "column": 32 } } @@ -76794,15 +77383,15 @@ "postfix": false, "binop": null }, - "start": 8382, - "end": 8383, + "start": 8493, + "end": 8494, "loc": { "start": { - "line": 264, + "line": 266, "column": 32 }, "end": { - "line": 264, + "line": 266, "column": 33 } } @@ -76820,15 +77409,15 @@ "binop": null }, "value": "x", - "start": 8383, - "end": 8384, + "start": 8494, + "end": 8495, "loc": { "start": { - "line": 264, + "line": 266, "column": 33 }, "end": { - "line": 264, + "line": 266, "column": 34 } } @@ -76847,15 +77436,15 @@ "updateContext": null }, "value": "-", - "start": 8385, - "end": 8386, + "start": 8496, + "end": 8497, "loc": { "start": { - "line": 264, + "line": 266, "column": 35 }, "end": { - "line": 264, + "line": 266, "column": 36 } } @@ -76873,15 +77462,15 @@ "binop": null }, "value": "lastXDown", - "start": 8387, - "end": 8396, + "start": 8498, + "end": 8507, "loc": { "start": { - "line": 264, + "line": 266, "column": 37 }, "end": { - "line": 264, + "line": 266, "column": 46 } } @@ -76898,15 +77487,15 @@ "postfix": false, "binop": null }, - "start": 8396, - "end": 8397, + "start": 8507, + "end": 8508, "loc": { "start": { - "line": 264, + "line": 266, "column": 46 }, "end": { - "line": 264, + "line": 266, "column": 47 } } @@ -76925,15 +77514,15 @@ "updateContext": null }, "value": "<", - "start": 8398, - "end": 8399, + "start": 8509, + "end": 8510, "loc": { "start": { - "line": 264, + "line": 266, "column": 48 }, "end": { - "line": 264, + "line": 266, "column": 49 } } @@ -76952,15 +77541,15 @@ "updateContext": null }, "value": 3, - "start": 8400, - "end": 8401, + "start": 8511, + "end": 8512, "loc": { "start": { - "line": 264, + "line": 266, "column": 50 }, "end": { - "line": 264, + "line": 266, "column": 51 } } @@ -76979,15 +77568,15 @@ "updateContext": null }, "value": "&&", - "start": 8402, - "end": 8404, + "start": 8513, + "end": 8515, "loc": { "start": { - "line": 264, + "line": 266, "column": 52 }, "end": { - "line": 264, + "line": 266, "column": 54 } } @@ -77005,15 +77594,15 @@ "binop": null }, "value": "Math", - "start": 8405, - "end": 8409, + "start": 8516, + "end": 8520, "loc": { "start": { - "line": 264, + "line": 266, "column": 55 }, "end": { - "line": 264, + "line": 266, "column": 59 } } @@ -77031,15 +77620,15 @@ "binop": null, "updateContext": null }, - "start": 8409, - "end": 8410, + "start": 8520, + "end": 8521, "loc": { "start": { - "line": 264, + "line": 266, "column": 59 }, "end": { - "line": 264, + "line": 266, "column": 60 } } @@ -77057,15 +77646,15 @@ "binop": null }, "value": "abs", - "start": 8410, - "end": 8413, + "start": 8521, + "end": 8524, "loc": { "start": { - "line": 264, + "line": 266, "column": 60 }, "end": { - "line": 264, + "line": 266, "column": 63 } } @@ -77082,15 +77671,15 @@ "postfix": false, "binop": null }, - "start": 8413, - "end": 8414, + "start": 8524, + "end": 8525, "loc": { "start": { - "line": 264, + "line": 266, "column": 63 }, "end": { - "line": 264, + "line": 266, "column": 64 } } @@ -77108,15 +77697,15 @@ "binop": null }, "value": "y", - "start": 8414, - "end": 8415, + "start": 8525, + "end": 8526, "loc": { "start": { - "line": 264, + "line": 266, "column": 64 }, "end": { - "line": 264, + "line": 266, "column": 65 } } @@ -77135,15 +77724,15 @@ "updateContext": null }, "value": "-", - "start": 8416, - "end": 8417, + "start": 8527, + "end": 8528, "loc": { "start": { - "line": 264, + "line": 266, "column": 66 }, "end": { - "line": 264, + "line": 266, "column": 67 } } @@ -77161,15 +77750,15 @@ "binop": null }, "value": "lastYDown", - "start": 8418, - "end": 8427, + "start": 8529, + "end": 8538, "loc": { "start": { - "line": 264, + "line": 266, "column": 68 }, "end": { - "line": 264, + "line": 266, "column": 77 } } @@ -77186,15 +77775,15 @@ "postfix": false, "binop": null }, - "start": 8427, - "end": 8428, + "start": 8538, + "end": 8539, "loc": { "start": { - "line": 264, + "line": 266, "column": 77 }, "end": { - "line": 264, + "line": 266, "column": 78 } } @@ -77213,15 +77802,15 @@ "updateContext": null }, "value": "<", - "start": 8429, - "end": 8430, + "start": 8540, + "end": 8541, "loc": { "start": { - "line": 264, + "line": 266, "column": 79 }, "end": { - "line": 264, + "line": 266, "column": 80 } } @@ -77240,15 +77829,15 @@ "updateContext": null }, "value": 3, - "start": 8431, - "end": 8432, + "start": 8542, + "end": 8543, "loc": { "start": { - "line": 264, + "line": 266, "column": 81 }, "end": { - "line": 264, + "line": 266, "column": 82 } } @@ -77265,15 +77854,15 @@ "postfix": false, "binop": null }, - "start": 8432, - "end": 8433, + "start": 8543, + "end": 8544, "loc": { "start": { - "line": 264, + "line": 266, "column": 82 }, "end": { - "line": 264, + "line": 266, "column": 83 } } @@ -77290,15 +77879,15 @@ "postfix": false, "binop": null }, - "start": 8434, - "end": 8435, + "start": 8545, + "end": 8546, "loc": { "start": { - "line": 264, + "line": 266, "column": 84 }, "end": { - "line": 264, + "line": 266, "column": 85 } } @@ -77316,15 +77905,15 @@ "binop": null }, "value": "controllers", - "start": 8460, - "end": 8471, + "start": 8571, + "end": 8582, "loc": { "start": { - "line": 265, + "line": 267, "column": 24 }, "end": { - "line": 265, + "line": 267, "column": 35 } } @@ -77342,15 +77931,15 @@ "binop": null, "updateContext": null }, - "start": 8471, - "end": 8472, + "start": 8582, + "end": 8583, "loc": { "start": { - "line": 265, + "line": 267, "column": 35 }, "end": { - "line": 265, + "line": 267, "column": 36 } } @@ -77368,15 +77957,15 @@ "binop": null }, "value": "cameraControl", - "start": 8472, - "end": 8485, + "start": 8583, + "end": 8596, "loc": { "start": { - "line": 265, + "line": 267, "column": 36 }, "end": { - "line": 265, + "line": 267, "column": 49 } } @@ -77394,15 +77983,15 @@ "binop": null, "updateContext": null }, - "start": 8485, - "end": 8486, + "start": 8596, + "end": 8597, "loc": { "start": { - "line": 265, + "line": 267, "column": 49 }, "end": { - "line": 265, + "line": 267, "column": 50 } } @@ -77420,15 +78009,15 @@ "binop": null }, "value": "fire", - "start": 8486, - "end": 8490, + "start": 8597, + "end": 8601, "loc": { "start": { - "line": 265, + "line": 267, "column": 50 }, "end": { - "line": 265, + "line": 267, "column": 54 } } @@ -77445,15 +78034,15 @@ "postfix": false, "binop": null }, - "start": 8490, - "end": 8491, + "start": 8601, + "end": 8602, "loc": { "start": { - "line": 265, + "line": 267, "column": 54 }, "end": { - "line": 265, + "line": 267, "column": 55 } } @@ -77472,15 +78061,15 @@ "updateContext": null }, "value": "rightClick", - "start": 8491, - "end": 8503, + "start": 8602, + "end": 8614, "loc": { "start": { - "line": 265, + "line": 267, "column": 55 }, "end": { - "line": 265, + "line": 267, "column": 67 } } @@ -77498,15 +78087,15 @@ "binop": null, "updateContext": null }, - "start": 8503, - "end": 8504, + "start": 8614, + "end": 8615, "loc": { "start": { - "line": 265, + "line": 267, "column": 67 }, "end": { - "line": 265, + "line": 267, "column": 68 } } @@ -77523,15 +78112,15 @@ "postfix": false, "binop": null }, - "start": 8505, - "end": 8506, + "start": 8616, + "end": 8617, "loc": { "start": { - "line": 265, + "line": 267, "column": 69 }, "end": { - "line": 265, + "line": 267, "column": 70 } } @@ -77539,15 +78128,15 @@ { "type": "CommentLine", "value": " For context menus", - "start": 8507, - "end": 8527, + "start": 8618, + "end": 8638, "loc": { "start": { - "line": 265, + "line": 267, "column": 71 }, "end": { - "line": 265, + "line": 267, "column": 91 } } @@ -77565,15 +78154,15 @@ "binop": null }, "value": "canvasPos", - "start": 8556, - "end": 8565, + "start": 8667, + "end": 8676, "loc": { "start": { - "line": 266, + "line": 268, "column": 28 }, "end": { - "line": 266, + "line": 268, "column": 37 } } @@ -77591,15 +78180,15 @@ "binop": null, "updateContext": null }, - "start": 8565, - "end": 8566, + "start": 8676, + "end": 8677, "loc": { "start": { - "line": 266, + "line": 268, "column": 37 }, "end": { - "line": 266, + "line": 268, "column": 38 } } @@ -77617,15 +78206,15 @@ "binop": null }, "value": "canvasPos", - "start": 8567, - "end": 8576, + "start": 8678, + "end": 8687, "loc": { "start": { - "line": 266, + "line": 268, "column": 39 }, "end": { - "line": 266, + "line": 268, "column": 48 } } @@ -77643,15 +78232,15 @@ "binop": null, "updateContext": null }, - "start": 8576, - "end": 8577, + "start": 8687, + "end": 8688, "loc": { "start": { - "line": 266, + "line": 268, "column": 48 }, "end": { - "line": 266, + "line": 268, "column": 49 } } @@ -77669,15 +78258,15 @@ "binop": null }, "value": "event", - "start": 8606, - "end": 8611, + "start": 8717, + "end": 8722, "loc": { "start": { - "line": 267, + "line": 269, "column": 28 }, "end": { - "line": 267, + "line": 269, "column": 33 } } @@ -77695,15 +78284,15 @@ "binop": null, "updateContext": null }, - "start": 8611, - "end": 8612, + "start": 8722, + "end": 8723, "loc": { "start": { - "line": 267, + "line": 269, "column": 33 }, "end": { - "line": 267, + "line": 269, "column": 34 } } @@ -77721,15 +78310,15 @@ "binop": null }, "value": "e", - "start": 8613, - "end": 8614, + "start": 8724, + "end": 8725, "loc": { "start": { - "line": 267, + "line": 269, "column": 35 }, "end": { - "line": 267, + "line": 269, "column": 36 } } @@ -77746,15 +78335,15 @@ "postfix": false, "binop": null }, - "start": 8639, - "end": 8640, + "start": 8750, + "end": 8751, "loc": { "start": { - "line": 268, + "line": 270, "column": 24 }, "end": { - "line": 268, + "line": 270, "column": 25 } } @@ -77772,15 +78361,15 @@ "binop": null, "updateContext": null }, - "start": 8640, - "end": 8641, + "start": 8751, + "end": 8752, "loc": { "start": { - "line": 268, + "line": 270, "column": 25 }, "end": { - "line": 268, + "line": 270, "column": 26 } } @@ -77800,15 +78389,15 @@ "updateContext": null }, "value": "true", - "start": 8642, - "end": 8646, + "start": 8753, + "end": 8757, "loc": { "start": { - "line": 268, + "line": 270, "column": 27 }, "end": { - "line": 268, + "line": 270, "column": 31 } } @@ -77825,15 +78414,15 @@ "postfix": false, "binop": null }, - "start": 8646, - "end": 8647, + "start": 8757, + "end": 8758, "loc": { "start": { - "line": 268, + "line": 270, "column": 31 }, "end": { - "line": 268, + "line": 270, "column": 32 } } @@ -77851,15 +78440,15 @@ "binop": null, "updateContext": null }, - "start": 8647, - "end": 8648, + "start": 8758, + "end": 8759, "loc": { "start": { - "line": 268, + "line": 270, "column": 32 }, "end": { - "line": 268, + "line": 270, "column": 33 } } @@ -77876,15 +78465,15 @@ "postfix": false, "binop": null }, - "start": 8669, - "end": 8670, + "start": 8780, + "end": 8781, "loc": { "start": { - "line": 269, + "line": 271, "column": 20 }, "end": { - "line": 269, + "line": 271, "column": 21 } } @@ -77904,15 +78493,15 @@ "updateContext": null }, "value": "break", - "start": 8691, - "end": 8696, + "start": 8802, + "end": 8807, "loc": { "start": { - "line": 270, + "line": 272, "column": 20 }, "end": { - "line": 270, + "line": 272, "column": 25 } } @@ -77930,15 +78519,15 @@ "binop": null, "updateContext": null }, - "start": 8696, - "end": 8697, + "start": 8807, + "end": 8808, "loc": { "start": { - "line": 270, + "line": 272, "column": 25 }, "end": { - "line": 270, + "line": 272, "column": 26 } } @@ -77958,15 +78547,15 @@ "updateContext": null }, "value": "default", - "start": 8714, - "end": 8721, + "start": 8825, + "end": 8832, "loc": { "start": { - "line": 271, + "line": 273, "column": 16 }, "end": { - "line": 271, + "line": 273, "column": 23 } } @@ -77984,15 +78573,15 @@ "binop": null, "updateContext": null }, - "start": 8721, - "end": 8722, + "start": 8832, + "end": 8833, "loc": { "start": { - "line": 271, + "line": 273, "column": 23 }, "end": { - "line": 271, + "line": 273, "column": 24 } } @@ -78012,15 +78601,15 @@ "updateContext": null }, "value": "break", - "start": 8743, - "end": 8748, + "start": 8854, + "end": 8859, "loc": { "start": { - "line": 272, + "line": 274, "column": 20 }, "end": { - "line": 272, + "line": 274, "column": 25 } } @@ -78038,15 +78627,15 @@ "binop": null, "updateContext": null }, - "start": 8748, - "end": 8749, + "start": 8859, + "end": 8860, "loc": { "start": { - "line": 272, + "line": 274, "column": 25 }, "end": { - "line": 272, + "line": 274, "column": 26 } } @@ -78063,15 +78652,15 @@ "postfix": false, "binop": null }, - "start": 8762, - "end": 8763, + "start": 8873, + "end": 8874, "loc": { "start": { - "line": 273, + "line": 275, "column": 12 }, "end": { - "line": 273, + "line": 275, "column": 13 } } @@ -78089,15 +78678,15 @@ "binop": null }, "value": "canvas", - "start": 8776, - "end": 8782, + "start": 8887, + "end": 8893, "loc": { "start": { - "line": 274, + "line": 276, "column": 12 }, "end": { - "line": 274, + "line": 276, "column": 18 } } @@ -78115,15 +78704,15 @@ "binop": null, "updateContext": null }, - "start": 8782, - "end": 8783, + "start": 8893, + "end": 8894, "loc": { "start": { - "line": 274, + "line": 276, "column": 18 }, "end": { - "line": 274, + "line": 276, "column": 19 } } @@ -78141,15 +78730,15 @@ "binop": null }, "value": "style", - "start": 8783, - "end": 8788, + "start": 8894, + "end": 8899, "loc": { "start": { - "line": 274, + "line": 276, "column": 19 }, "end": { - "line": 274, + "line": 276, "column": 24 } } @@ -78167,15 +78756,15 @@ "binop": null, "updateContext": null }, - "start": 8788, - "end": 8789, + "start": 8899, + "end": 8900, "loc": { "start": { - "line": 274, + "line": 276, "column": 24 }, "end": { - "line": 274, + "line": 276, "column": 25 } } @@ -78193,15 +78782,15 @@ "binop": null }, "value": "removeProperty", - "start": 8789, - "end": 8803, + "start": 8900, + "end": 8914, "loc": { "start": { - "line": 274, + "line": 276, "column": 25 }, "end": { - "line": 274, + "line": 276, "column": 39 } } @@ -78218,15 +78807,15 @@ "postfix": false, "binop": null }, - "start": 8803, - "end": 8804, + "start": 8914, + "end": 8915, "loc": { "start": { - "line": 274, + "line": 276, "column": 39 }, "end": { - "line": 274, + "line": 276, "column": 40 } } @@ -78245,15 +78834,15 @@ "updateContext": null }, "value": "cursor", - "start": 8804, - "end": 8812, + "start": 8915, + "end": 8923, "loc": { "start": { - "line": 274, + "line": 276, "column": 40 }, "end": { - "line": 274, + "line": 276, "column": 48 } } @@ -78270,15 +78859,15 @@ "postfix": false, "binop": null }, - "start": 8812, - "end": 8813, + "start": 8923, + "end": 8924, "loc": { "start": { - "line": 274, + "line": 276, "column": 48 }, "end": { - "line": 274, + "line": 276, "column": 49 } } @@ -78296,15 +78885,15 @@ "binop": null, "updateContext": null }, - "start": 8813, - "end": 8814, + "start": 8924, + "end": 8925, "loc": { "start": { - "line": 274, + "line": 276, "column": 49 }, "end": { - "line": 274, + "line": 276, "column": 50 } } @@ -78321,15 +78910,15 @@ "postfix": false, "binop": null }, - "start": 8823, - "end": 8824, + "start": 8934, + "end": 8935, "loc": { "start": { - "line": 275, + "line": 277, "column": 8 }, "end": { - "line": 275, + "line": 277, "column": 9 } } @@ -78346,15 +78935,15 @@ "postfix": false, "binop": null }, - "start": 8824, - "end": 8825, + "start": 8935, + "end": 8936, "loc": { "start": { - "line": 275, + "line": 277, "column": 9 }, "end": { - "line": 275, + "line": 277, "column": 10 } } @@ -78372,15 +78961,15 @@ "binop": null, "updateContext": null }, - "start": 8825, - "end": 8826, + "start": 8936, + "end": 8937, "loc": { "start": { - "line": 275, + "line": 277, "column": 10 }, "end": { - "line": 275, + "line": 277, "column": 11 } } @@ -78398,15 +78987,15 @@ "binop": null }, "value": "canvas", - "start": 8836, - "end": 8842, + "start": 8947, + "end": 8953, "loc": { "start": { - "line": 277, + "line": 279, "column": 8 }, "end": { - "line": 277, + "line": 279, "column": 14 } } @@ -78424,15 +79013,15 @@ "binop": null, "updateContext": null }, - "start": 8842, - "end": 8843, + "start": 8953, + "end": 8954, "loc": { "start": { - "line": 277, + "line": 279, "column": 14 }, "end": { - "line": 277, + "line": 279, "column": 15 } } @@ -78450,15 +79039,15 @@ "binop": null }, "value": "addEventListener", - "start": 8843, - "end": 8859, + "start": 8954, + "end": 8970, "loc": { "start": { - "line": 277, + "line": 279, "column": 15 }, "end": { - "line": 277, + "line": 279, "column": 31 } } @@ -78475,15 +79064,15 @@ "postfix": false, "binop": null }, - "start": 8859, - "end": 8860, + "start": 8970, + "end": 8971, "loc": { "start": { - "line": 277, + "line": 279, "column": 31 }, "end": { - "line": 277, + "line": 279, "column": 32 } } @@ -78502,15 +79091,15 @@ "updateContext": null }, "value": "mouseenter", - "start": 8860, - "end": 8872, + "start": 8971, + "end": 8983, "loc": { "start": { - "line": 277, + "line": 279, "column": 32 }, "end": { - "line": 277, + "line": 279, "column": 44 } } @@ -78528,15 +79117,15 @@ "binop": null, "updateContext": null }, - "start": 8872, - "end": 8873, + "start": 8983, + "end": 8984, "loc": { "start": { - "line": 277, + "line": 279, "column": 44 }, "end": { - "line": 277, + "line": 279, "column": 45 } } @@ -78556,15 +79145,15 @@ "updateContext": null }, "value": "this", - "start": 8874, - "end": 8878, + "start": 8985, + "end": 8989, "loc": { "start": { - "line": 277, + "line": 279, "column": 46 }, "end": { - "line": 277, + "line": 279, "column": 50 } } @@ -78582,15 +79171,15 @@ "binop": null, "updateContext": null }, - "start": 8878, - "end": 8879, + "start": 8989, + "end": 8990, "loc": { "start": { - "line": 277, + "line": 279, "column": 50 }, "end": { - "line": 277, + "line": 279, "column": 51 } } @@ -78608,15 +79197,15 @@ "binop": null }, "value": "_mouseEnterHandler", - "start": 8879, - "end": 8897, + "start": 8990, + "end": 9008, "loc": { "start": { - "line": 277, + "line": 279, "column": 51 }, "end": { - "line": 277, + "line": 279, "column": 69 } } @@ -78635,15 +79224,15 @@ "updateContext": null }, "value": "=", - "start": 8898, - "end": 8899, + "start": 9009, + "end": 9010, "loc": { "start": { - "line": 277, + "line": 279, "column": 70 }, "end": { - "line": 277, + "line": 279, "column": 71 } } @@ -78660,15 +79249,15 @@ "postfix": false, "binop": null }, - "start": 8900, - "end": 8901, + "start": 9011, + "end": 9012, "loc": { "start": { - "line": 277, + "line": 279, "column": 72 }, "end": { - "line": 277, + "line": 279, "column": 73 } } @@ -78685,15 +79274,15 @@ "postfix": false, "binop": null }, - "start": 8901, - "end": 8902, + "start": 9012, + "end": 9013, "loc": { "start": { - "line": 277, + "line": 279, "column": 73 }, "end": { - "line": 277, + "line": 279, "column": 74 } } @@ -78711,15 +79300,15 @@ "binop": null, "updateContext": null }, - "start": 8903, - "end": 8905, + "start": 9014, + "end": 9016, "loc": { "start": { - "line": 277, + "line": 279, "column": 75 }, "end": { - "line": 277, + "line": 279, "column": 77 } } @@ -78736,15 +79325,15 @@ "postfix": false, "binop": null }, - "start": 8906, - "end": 8907, + "start": 9017, + "end": 9018, "loc": { "start": { - "line": 277, + "line": 279, "column": 78 }, "end": { - "line": 277, + "line": 279, "column": 79 } } @@ -78764,15 +79353,15 @@ "updateContext": null }, "value": "if", - "start": 8920, - "end": 8922, + "start": 9031, + "end": 9033, "loc": { "start": { - "line": 278, + "line": 280, "column": 12 }, "end": { - "line": 278, + "line": 280, "column": 14 } } @@ -78789,15 +79378,15 @@ "postfix": false, "binop": null }, - "start": 8923, - "end": 8924, + "start": 9034, + "end": 9035, "loc": { "start": { - "line": 278, + "line": 280, "column": 15 }, "end": { - "line": 278, + "line": 280, "column": 16 } } @@ -78816,15 +79405,15 @@ "updateContext": null }, "value": "!", - "start": 8924, - "end": 8925, + "start": 9035, + "end": 9036, "loc": { "start": { - "line": 278, + "line": 280, "column": 16 }, "end": { - "line": 278, + "line": 280, "column": 17 } } @@ -78841,15 +79430,15 @@ "postfix": false, "binop": null }, - "start": 8925, - "end": 8926, + "start": 9036, + "end": 9037, "loc": { "start": { - "line": 278, + "line": 280, "column": 17 }, "end": { - "line": 278, + "line": 280, "column": 18 } } @@ -78867,15 +79456,15 @@ "binop": null }, "value": "configs", - "start": 8926, - "end": 8933, + "start": 9037, + "end": 9044, "loc": { "start": { - "line": 278, + "line": 280, "column": 18 }, "end": { - "line": 278, + "line": 280, "column": 25 } } @@ -78893,15 +79482,15 @@ "binop": null, "updateContext": null }, - "start": 8933, - "end": 8934, + "start": 9044, + "end": 9045, "loc": { "start": { - "line": 278, + "line": 280, "column": 25 }, "end": { - "line": 278, + "line": 280, "column": 26 } } @@ -78919,15 +79508,15 @@ "binop": null }, "value": "active", - "start": 8934, - "end": 8940, + "start": 9045, + "end": 9051, "loc": { "start": { - "line": 278, + "line": 280, "column": 26 }, "end": { - "line": 278, + "line": 280, "column": 32 } } @@ -78946,15 +79535,15 @@ "updateContext": null }, "value": "&&", - "start": 8941, - "end": 8943, + "start": 9052, + "end": 9054, "loc": { "start": { - "line": 278, + "line": 280, "column": 33 }, "end": { - "line": 278, + "line": 280, "column": 35 } } @@ -78972,15 +79561,15 @@ "binop": null }, "value": "configs", - "start": 8944, - "end": 8951, + "start": 9055, + "end": 9062, "loc": { "start": { - "line": 278, + "line": 280, "column": 36 }, "end": { - "line": 278, + "line": 280, "column": 43 } } @@ -78998,15 +79587,15 @@ "binop": null, "updateContext": null }, - "start": 8951, - "end": 8952, + "start": 9062, + "end": 9063, "loc": { "start": { - "line": 278, + "line": 280, "column": 43 }, "end": { - "line": 278, + "line": 280, "column": 44 } } @@ -79024,15 +79613,15 @@ "binop": null }, "value": "pointerEnabled", - "start": 8952, - "end": 8966, + "start": 9063, + "end": 9077, "loc": { "start": { - "line": 278, + "line": 280, "column": 44 }, "end": { - "line": 278, + "line": 280, "column": 58 } } @@ -79049,15 +79638,15 @@ "postfix": false, "binop": null }, - "start": 8966, - "end": 8967, + "start": 9077, + "end": 9078, "loc": { "start": { - "line": 278, + "line": 280, "column": 58 }, "end": { - "line": 278, + "line": 280, "column": 59 } } @@ -79074,15 +79663,15 @@ "postfix": false, "binop": null }, - "start": 8967, - "end": 8968, + "start": 9078, + "end": 9079, "loc": { "start": { - "line": 278, + "line": 280, "column": 59 }, "end": { - "line": 278, + "line": 280, "column": 60 } } @@ -79099,15 +79688,15 @@ "postfix": false, "binop": null }, - "start": 8969, - "end": 8970, + "start": 9080, + "end": 9081, "loc": { "start": { - "line": 278, + "line": 280, "column": 61 }, "end": { - "line": 278, + "line": 280, "column": 62 } } @@ -79127,15 +79716,15 @@ "updateContext": null }, "value": "return", - "start": 8987, - "end": 8993, + "start": 9098, + "end": 9104, "loc": { "start": { - "line": 279, + "line": 281, "column": 16 }, "end": { - "line": 279, + "line": 281, "column": 22 } } @@ -79153,15 +79742,15 @@ "binop": null, "updateContext": null }, - "start": 8993, - "end": 8994, + "start": 9104, + "end": 9105, "loc": { "start": { - "line": 279, + "line": 281, "column": 22 }, "end": { - "line": 279, + "line": 281, "column": 23 } } @@ -79178,15 +79767,15 @@ "postfix": false, "binop": null }, - "start": 9007, - "end": 9008, + "start": 9118, + "end": 9119, "loc": { "start": { - "line": 280, + "line": 282, "column": 12 }, "end": { - "line": 280, + "line": 282, "column": 13 } } @@ -79204,15 +79793,15 @@ "binop": null }, "value": "xRotateDelta", - "start": 9021, - "end": 9033, + "start": 9132, + "end": 9144, "loc": { "start": { - "line": 281, + "line": 283, "column": 12 }, "end": { - "line": 281, + "line": 283, "column": 24 } } @@ -79231,15 +79820,15 @@ "updateContext": null }, "value": "=", - "start": 9034, - "end": 9035, + "start": 9145, + "end": 9146, "loc": { "start": { - "line": 281, + "line": 283, "column": 25 }, "end": { - "line": 281, + "line": 283, "column": 26 } } @@ -79258,15 +79847,15 @@ "updateContext": null }, "value": 0, - "start": 9036, - "end": 9037, + "start": 9147, + "end": 9148, "loc": { "start": { - "line": 281, + "line": 283, "column": 27 }, "end": { - "line": 281, + "line": 283, "column": 28 } } @@ -79284,15 +79873,15 @@ "binop": null, "updateContext": null }, - "start": 9037, - "end": 9038, + "start": 9148, + "end": 9149, "loc": { "start": { - "line": 281, + "line": 283, "column": 28 }, "end": { - "line": 281, + "line": 283, "column": 29 } } @@ -79310,15 +79899,15 @@ "binop": null }, "value": "yRotateDelta", - "start": 9051, - "end": 9063, + "start": 9162, + "end": 9174, "loc": { "start": { - "line": 282, + "line": 284, "column": 12 }, "end": { - "line": 282, + "line": 284, "column": 24 } } @@ -79337,15 +79926,15 @@ "updateContext": null }, "value": "=", - "start": 9064, - "end": 9065, + "start": 9175, + "end": 9176, "loc": { "start": { - "line": 282, + "line": 284, "column": 25 }, "end": { - "line": 282, + "line": 284, "column": 26 } } @@ -79364,177 +79953,16 @@ "updateContext": null }, "value": 0, - "start": 9066, - "end": 9067, - "loc": { - "start": { - "line": 282, - "column": 27 - }, - "end": { - "line": 282, - "column": 28 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 9067, - "end": 9068, - "loc": { - "start": { - "line": 282, - "column": 28 - }, - "end": { - "line": 282, - "column": 29 - } - } - }, - { - "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": 9082, - "end": 9086, - "loc": { - "start": { - "line": 284, - "column": 12 - }, - "end": { - "line": 284, - "column": 16 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 9086, - "end": 9087, - "loc": { - "start": { - "line": 284, - "column": 16 - }, - "end": { - "line": 284, - "column": 17 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "_down", - "start": 9087, - "end": 9092, - "loc": { - "start": { - "line": 284, - "column": 17 - }, - "end": { - "line": 284, - "column": 22 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 9093, - "end": 9094, - "loc": { - "start": { - "line": 284, - "column": 23 - }, - "end": { - "line": 284, - "column": 24 - } - } - }, - { - "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": 9095, - "end": 9100, + "start": 9177, + "end": 9178, "loc": { "start": { "line": 284, - "column": 25 + "column": 27 }, "end": { "line": 284, - "column": 30 + "column": 28 } } }, @@ -79551,16 +79979,16 @@ "binop": null, "updateContext": null }, - "start": 9100, - "end": 9101, + "start": 9178, + "end": 9179, "loc": { "start": { "line": 284, - "column": 30 + "column": 28 }, "end": { "line": 284, - "column": 31 + "column": 29 } } }, @@ -79576,8 +80004,8 @@ "postfix": false, "binop": null }, - "start": 9110, - "end": 9111, + "start": 9188, + "end": 9189, "loc": { "start": { "line": 285, @@ -79601,8 +80029,8 @@ "postfix": false, "binop": null }, - "start": 9111, - "end": 9112, + "start": 9189, + "end": 9190, "loc": { "start": { "line": 285, @@ -79627,8 +80055,8 @@ "binop": null, "updateContext": null }, - "start": 9112, - "end": 9113, + "start": 9190, + "end": 9191, "loc": { "start": { "line": 285, @@ -79655,8 +80083,8 @@ "updateContext": null }, "value": "const", - "start": 9123, - "end": 9128, + "start": 9201, + "end": 9206, "loc": { "start": { "line": 287, @@ -79681,8 +80109,8 @@ "binop": null }, "value": "maxElapsed", - "start": 9129, - "end": 9139, + "start": 9207, + "end": 9217, "loc": { "start": { "line": 287, @@ -79708,8 +80136,8 @@ "updateContext": null }, "value": "=", - "start": 9140, - "end": 9141, + "start": 9218, + "end": 9219, "loc": { "start": { "line": 287, @@ -79735,8 +80163,8 @@ "updateContext": null }, "value": 1, - "start": 9142, - "end": 9143, + "start": 9220, + "end": 9221, "loc": { "start": { "line": 287, @@ -79762,8 +80190,8 @@ "updateContext": null }, "value": "/", - "start": 9144, - "end": 9145, + "start": 9222, + "end": 9223, "loc": { "start": { "line": 287, @@ -79789,8 +80217,8 @@ "updateContext": null }, "value": 20, - "start": 9146, - "end": 9148, + "start": 9224, + "end": 9226, "loc": { "start": { "line": 287, @@ -79815,8 +80243,8 @@ "binop": null, "updateContext": null }, - "start": 9148, - "end": 9149, + "start": 9226, + "end": 9227, "loc": { "start": { "line": 287, @@ -79843,8 +80271,8 @@ "updateContext": null }, "value": "const", - "start": 9158, - "end": 9163, + "start": 9236, + "end": 9241, "loc": { "start": { "line": 288, @@ -79869,8 +80297,8 @@ "binop": null }, "value": "minElapsed", - "start": 9164, - "end": 9174, + "start": 9242, + "end": 9252, "loc": { "start": { "line": 288, @@ -79896,8 +80324,8 @@ "updateContext": null }, "value": "=", - "start": 9175, - "end": 9176, + "start": 9253, + "end": 9254, "loc": { "start": { "line": 288, @@ -79923,8 +80351,8 @@ "updateContext": null }, "value": 1, - "start": 9177, - "end": 9178, + "start": 9255, + "end": 9256, "loc": { "start": { "line": 288, @@ -79950,8 +80378,8 @@ "updateContext": null }, "value": "/", - "start": 9179, - "end": 9180, + "start": 9257, + "end": 9258, "loc": { "start": { "line": 288, @@ -79977,8 +80405,8 @@ "updateContext": null }, "value": 60, - "start": 9181, - "end": 9183, + "start": 9259, + "end": 9261, "loc": { "start": { "line": 288, @@ -80003,8 +80431,8 @@ "binop": null, "updateContext": null }, - "start": 9183, - "end": 9184, + "start": 9261, + "end": 9262, "loc": { "start": { "line": 288, @@ -80031,8 +80459,8 @@ "updateContext": null }, "value": "let", - "start": 9194, - "end": 9197, + "start": 9272, + "end": 9275, "loc": { "start": { "line": 290, @@ -80057,8 +80485,8 @@ "binop": null }, "value": "secsNowLast", - "start": 9198, - "end": 9209, + "start": 9276, + "end": 9287, "loc": { "start": { "line": 290, @@ -80084,8 +80512,8 @@ "updateContext": null }, "value": "=", - "start": 9210, - "end": 9211, + "start": 9288, + "end": 9289, "loc": { "start": { "line": 290, @@ -80112,8 +80540,8 @@ "updateContext": null }, "value": "null", - "start": 9212, - "end": 9216, + "start": 9290, + "end": 9294, "loc": { "start": { "line": 290, @@ -80138,8 +80566,8 @@ "binop": null, "updateContext": null }, - "start": 9216, - "end": 9217, + "start": 9294, + "end": 9295, "loc": { "start": { "line": 290, @@ -80164,8 +80592,8 @@ "binop": null }, "value": "canvas", - "start": 9227, - "end": 9233, + "start": 9305, + "end": 9311, "loc": { "start": { "line": 292, @@ -80190,8 +80618,8 @@ "binop": null, "updateContext": null }, - "start": 9233, - "end": 9234, + "start": 9311, + "end": 9312, "loc": { "start": { "line": 292, @@ -80216,8 +80644,8 @@ "binop": null }, "value": "addEventListener", - "start": 9234, - "end": 9250, + "start": 9312, + "end": 9328, "loc": { "start": { "line": 292, @@ -80241,8 +80669,8 @@ "postfix": false, "binop": null }, - "start": 9250, - "end": 9251, + "start": 9328, + "end": 9329, "loc": { "start": { "line": 292, @@ -80268,8 +80696,8 @@ "updateContext": null }, "value": "wheel", - "start": 9251, - "end": 9258, + "start": 9329, + "end": 9336, "loc": { "start": { "line": 292, @@ -80294,8 +80722,8 @@ "binop": null, "updateContext": null }, - "start": 9258, - "end": 9259, + "start": 9336, + "end": 9337, "loc": { "start": { "line": 292, @@ -80322,8 +80750,8 @@ "updateContext": null }, "value": "this", - "start": 9260, - "end": 9264, + "start": 9338, + "end": 9342, "loc": { "start": { "line": 292, @@ -80348,8 +80776,8 @@ "binop": null, "updateContext": null }, - "start": 9264, - "end": 9265, + "start": 9342, + "end": 9343, "loc": { "start": { "line": 292, @@ -80374,8 +80802,8 @@ "binop": null }, "value": "_mouseWheelHandler", - "start": 9265, - "end": 9283, + "start": 9343, + "end": 9361, "loc": { "start": { "line": 292, @@ -80401,8 +80829,8 @@ "updateContext": null }, "value": "=", - "start": 9284, - "end": 9285, + "start": 9362, + "end": 9363, "loc": { "start": { "line": 292, @@ -80426,8 +80854,8 @@ "postfix": false, "binop": null }, - "start": 9286, - "end": 9287, + "start": 9364, + "end": 9365, "loc": { "start": { "line": 292, @@ -80452,8 +80880,8 @@ "binop": null }, "value": "e", - "start": 9287, - "end": 9288, + "start": 9365, + "end": 9366, "loc": { "start": { "line": 292, @@ -80477,8 +80905,8 @@ "postfix": false, "binop": null }, - "start": 9288, - "end": 9289, + "start": 9366, + "end": 9367, "loc": { "start": { "line": 292, @@ -80503,8 +80931,8 @@ "binop": null, "updateContext": null }, - "start": 9290, - "end": 9292, + "start": 9368, + "end": 9370, "loc": { "start": { "line": 292, @@ -80528,8 +80956,8 @@ "postfix": false, "binop": null }, - "start": 9293, - "end": 9294, + "start": 9371, + "end": 9372, "loc": { "start": { "line": 292, @@ -80556,8 +80984,8 @@ "updateContext": null }, "value": "if", - "start": 9307, - "end": 9309, + "start": 9385, + "end": 9387, "loc": { "start": { "line": 293, @@ -80581,8 +81009,8 @@ "postfix": false, "binop": null }, - "start": 9310, - "end": 9311, + "start": 9388, + "end": 9389, "loc": { "start": { "line": 293, @@ -80608,8 +81036,8 @@ "updateContext": null }, "value": "!", - "start": 9311, - "end": 9312, + "start": 9389, + "end": 9390, "loc": { "start": { "line": 293, @@ -80633,8 +81061,8 @@ "postfix": false, "binop": null }, - "start": 9312, - "end": 9313, + "start": 9390, + "end": 9391, "loc": { "start": { "line": 293, @@ -80659,8 +81087,8 @@ "binop": null }, "value": "configs", - "start": 9313, - "end": 9320, + "start": 9391, + "end": 9398, "loc": { "start": { "line": 293, @@ -80685,8 +81113,8 @@ "binop": null, "updateContext": null }, - "start": 9320, - "end": 9321, + "start": 9398, + "end": 9399, "loc": { "start": { "line": 293, @@ -80711,8 +81139,8 @@ "binop": null }, "value": "active", - "start": 9321, - "end": 9327, + "start": 9399, + "end": 9405, "loc": { "start": { "line": 293, @@ -80738,8 +81166,8 @@ "updateContext": null }, "value": "&&", - "start": 9328, - "end": 9330, + "start": 9406, + "end": 9408, "loc": { "start": { "line": 293, @@ -80764,8 +81192,8 @@ "binop": null }, "value": "configs", - "start": 9331, - "end": 9338, + "start": 9409, + "end": 9416, "loc": { "start": { "line": 293, @@ -80790,8 +81218,8 @@ "binop": null, "updateContext": null }, - "start": 9338, - "end": 9339, + "start": 9416, + "end": 9417, "loc": { "start": { "line": 293, @@ -80816,8 +81244,8 @@ "binop": null }, "value": "pointerEnabled", - "start": 9339, - "end": 9353, + "start": 9417, + "end": 9431, "loc": { "start": { "line": 293, @@ -80841,8 +81269,8 @@ "postfix": false, "binop": null }, - "start": 9353, - "end": 9354, + "start": 9431, + "end": 9432, "loc": { "start": { "line": 293, @@ -80866,8 +81294,8 @@ "postfix": false, "binop": null }, - "start": 9354, - "end": 9355, + "start": 9432, + "end": 9433, "loc": { "start": { "line": 293, @@ -80891,8 +81319,8 @@ "postfix": false, "binop": null }, - "start": 9356, - "end": 9357, + "start": 9434, + "end": 9435, "loc": { "start": { "line": 293, @@ -80919,8 +81347,8 @@ "updateContext": null }, "value": "return", - "start": 9374, - "end": 9380, + "start": 9452, + "end": 9458, "loc": { "start": { "line": 294, @@ -80945,8 +81373,8 @@ "binop": null, "updateContext": null }, - "start": 9380, - "end": 9381, + "start": 9458, + "end": 9459, "loc": { "start": { "line": 294, @@ -80970,8 +81398,8 @@ "postfix": false, "binop": null }, - "start": 9394, - "end": 9395, + "start": 9472, + "end": 9473, "loc": { "start": { "line": 295, @@ -80998,8 +81426,8 @@ "updateContext": null }, "value": "const", - "start": 9408, - "end": 9413, + "start": 9486, + "end": 9491, "loc": { "start": { "line": 296, @@ -81024,8 +81452,8 @@ "binop": null }, "value": "secsNow", - "start": 9414, - "end": 9421, + "start": 9492, + "end": 9499, "loc": { "start": { "line": 296, @@ -81051,8 +81479,8 @@ "updateContext": null }, "value": "=", - "start": 9422, - "end": 9423, + "start": 9500, + "end": 9501, "loc": { "start": { "line": 296, @@ -81077,8 +81505,8 @@ "binop": null }, "value": "performance", - "start": 9424, - "end": 9435, + "start": 9502, + "end": 9513, "loc": { "start": { "line": 296, @@ -81103,8 +81531,8 @@ "binop": null, "updateContext": null }, - "start": 9435, - "end": 9436, + "start": 9513, + "end": 9514, "loc": { "start": { "line": 296, @@ -81129,8 +81557,8 @@ "binop": null }, "value": "now", - "start": 9436, - "end": 9439, + "start": 9514, + "end": 9517, "loc": { "start": { "line": 296, @@ -81154,8 +81582,8 @@ "postfix": false, "binop": null }, - "start": 9439, - "end": 9440, + "start": 9517, + "end": 9518, "loc": { "start": { "line": 296, @@ -81179,8 +81607,8 @@ "postfix": false, "binop": null }, - "start": 9440, - "end": 9441, + "start": 9518, + "end": 9519, "loc": { "start": { "line": 296, @@ -81206,8 +81634,8 @@ "updateContext": null }, "value": "/", - "start": 9442, - "end": 9443, + "start": 9520, + "end": 9521, "loc": { "start": { "line": 296, @@ -81233,8 +81661,8 @@ "updateContext": null }, "value": 1000, - "start": 9444, - "end": 9450, + "start": 9522, + "end": 9528, "loc": { "start": { "line": 296, @@ -81259,8 +81687,8 @@ "binop": null, "updateContext": null }, - "start": 9450, - "end": 9451, + "start": 9528, + "end": 9529, "loc": { "start": { "line": 296, @@ -81287,8 +81715,8 @@ "updateContext": null }, "value": "var", - "start": 9464, - "end": 9467, + "start": 9542, + "end": 9545, "loc": { "start": { "line": 297, @@ -81313,8 +81741,8 @@ "binop": null }, "value": "secsElapsed", - "start": 9468, - "end": 9479, + "start": 9546, + "end": 9557, "loc": { "start": { "line": 297, @@ -81340,8 +81768,8 @@ "updateContext": null }, "value": "=", - "start": 9480, - "end": 9481, + "start": 9558, + "end": 9559, "loc": { "start": { "line": 297, @@ -81365,8 +81793,8 @@ "postfix": false, "binop": null }, - "start": 9482, - "end": 9483, + "start": 9560, + "end": 9561, "loc": { "start": { "line": 297, @@ -81391,8 +81819,8 @@ "binop": null }, "value": "secsNowLast", - "start": 9483, - "end": 9494, + "start": 9561, + "end": 9572, "loc": { "start": { "line": 297, @@ -81418,8 +81846,8 @@ "updateContext": null }, "value": "!==", - "start": 9495, - "end": 9498, + "start": 9573, + "end": 9576, "loc": { "start": { "line": 297, @@ -81446,8 +81874,8 @@ "updateContext": null }, "value": "null", - "start": 9499, - "end": 9503, + "start": 9577, + "end": 9581, "loc": { "start": { "line": 297, @@ -81471,8 +81899,8 @@ "postfix": false, "binop": null }, - "start": 9503, - "end": 9504, + "start": 9581, + "end": 9582, "loc": { "start": { "line": 297, @@ -81497,8 +81925,8 @@ "binop": null, "updateContext": null }, - "start": 9505, - "end": 9506, + "start": 9583, + "end": 9584, "loc": { "start": { "line": 297, @@ -81522,8 +81950,8 @@ "postfix": false, "binop": null }, - "start": 9507, - "end": 9508, + "start": 9585, + "end": 9586, "loc": { "start": { "line": 297, @@ -81548,8 +81976,8 @@ "binop": null }, "value": "secsNow", - "start": 9508, - "end": 9515, + "start": 9586, + "end": 9593, "loc": { "start": { "line": 297, @@ -81575,8 +82003,8 @@ "updateContext": null }, "value": "-", - "start": 9516, - "end": 9517, + "start": 9594, + "end": 9595, "loc": { "start": { "line": 297, @@ -81601,8 +82029,8 @@ "binop": null }, "value": "secsNowLast", - "start": 9518, - "end": 9529, + "start": 9596, + "end": 9607, "loc": { "start": { "line": 297, @@ -81626,8 +82054,8 @@ "postfix": false, "binop": null }, - "start": 9529, - "end": 9530, + "start": 9607, + "end": 9608, "loc": { "start": { "line": 297, @@ -81652,8 +82080,8 @@ "binop": null, "updateContext": null }, - "start": 9531, - "end": 9532, + "start": 9609, + "end": 9610, "loc": { "start": { "line": 297, @@ -81679,8 +82107,8 @@ "updateContext": null }, "value": 0, - "start": 9533, - "end": 9534, + "start": 9611, + "end": 9612, "loc": { "start": { "line": 297, @@ -81705,8 +82133,8 @@ "binop": null, "updateContext": null }, - "start": 9534, - "end": 9535, + "start": 9612, + "end": 9613, "loc": { "start": { "line": 297, @@ -81731,8 +82159,8 @@ "binop": null }, "value": "secsNowLast", - "start": 9548, - "end": 9559, + "start": 9626, + "end": 9637, "loc": { "start": { "line": 298, @@ -81758,8 +82186,8 @@ "updateContext": null }, "value": "=", - "start": 9560, - "end": 9561, + "start": 9638, + "end": 9639, "loc": { "start": { "line": 298, @@ -81784,8 +82212,8 @@ "binop": null }, "value": "secsNow", - "start": 9562, - "end": 9569, + "start": 9640, + "end": 9647, "loc": { "start": { "line": 298, @@ -81810,8 +82238,8 @@ "binop": null, "updateContext": null }, - "start": 9569, - "end": 9570, + "start": 9647, + "end": 9648, "loc": { "start": { "line": 298, @@ -81838,8 +82266,8 @@ "updateContext": null }, "value": "if", - "start": 9583, - "end": 9585, + "start": 9661, + "end": 9663, "loc": { "start": { "line": 299, @@ -81863,8 +82291,8 @@ "postfix": false, "binop": null }, - "start": 9586, - "end": 9587, + "start": 9664, + "end": 9665, "loc": { "start": { "line": 299, @@ -81889,8 +82317,8 @@ "binop": null }, "value": "secsElapsed", - "start": 9587, - "end": 9598, + "start": 9665, + "end": 9676, "loc": { "start": { "line": 299, @@ -81916,8 +82344,8 @@ "updateContext": null }, "value": ">", - "start": 9599, - "end": 9600, + "start": 9677, + "end": 9678, "loc": { "start": { "line": 299, @@ -81942,8 +82370,8 @@ "binop": null }, "value": "maxElapsed", - "start": 9601, - "end": 9611, + "start": 9679, + "end": 9689, "loc": { "start": { "line": 299, @@ -81967,8 +82395,8 @@ "postfix": false, "binop": null }, - "start": 9611, - "end": 9612, + "start": 9689, + "end": 9690, "loc": { "start": { "line": 299, @@ -81992,8 +82420,8 @@ "postfix": false, "binop": null }, - "start": 9613, - "end": 9614, + "start": 9691, + "end": 9692, "loc": { "start": { "line": 299, @@ -82018,8 +82446,8 @@ "binop": null }, "value": "secsElapsed", - "start": 9631, - "end": 9642, + "start": 9709, + "end": 9720, "loc": { "start": { "line": 300, @@ -82045,8 +82473,8 @@ "updateContext": null }, "value": "=", - "start": 9643, - "end": 9644, + "start": 9721, + "end": 9722, "loc": { "start": { "line": 300, @@ -82071,8 +82499,8 @@ "binop": null }, "value": "maxElapsed", - "start": 9645, - "end": 9655, + "start": 9723, + "end": 9733, "loc": { "start": { "line": 300, @@ -82097,8 +82525,8 @@ "binop": null, "updateContext": null }, - "start": 9655, - "end": 9656, + "start": 9733, + "end": 9734, "loc": { "start": { "line": 300, @@ -82122,8 +82550,8 @@ "postfix": false, "binop": null }, - "start": 9669, - "end": 9670, + "start": 9747, + "end": 9748, "loc": { "start": { "line": 301, @@ -82150,8 +82578,8 @@ "updateContext": null }, "value": "if", - "start": 9683, - "end": 9685, + "start": 9761, + "end": 9763, "loc": { "start": { "line": 302, @@ -82175,8 +82603,8 @@ "postfix": false, "binop": null }, - "start": 9686, - "end": 9687, + "start": 9764, + "end": 9765, "loc": { "start": { "line": 302, @@ -82201,8 +82629,8 @@ "binop": null }, "value": "secsElapsed", - "start": 9687, - "end": 9698, + "start": 9765, + "end": 9776, "loc": { "start": { "line": 302, @@ -82228,8 +82656,8 @@ "updateContext": null }, "value": "<", - "start": 9699, - "end": 9700, + "start": 9777, + "end": 9778, "loc": { "start": { "line": 302, @@ -82254,8 +82682,8 @@ "binop": null }, "value": "minElapsed", - "start": 9701, - "end": 9711, + "start": 9779, + "end": 9789, "loc": { "start": { "line": 302, @@ -82279,8 +82707,8 @@ "postfix": false, "binop": null }, - "start": 9711, - "end": 9712, + "start": 9789, + "end": 9790, "loc": { "start": { "line": 302, @@ -82304,8 +82732,8 @@ "postfix": false, "binop": null }, - "start": 9713, - "end": 9714, + "start": 9791, + "end": 9792, "loc": { "start": { "line": 302, @@ -82330,8 +82758,8 @@ "binop": null }, "value": "secsElapsed", - "start": 9731, - "end": 9742, + "start": 9809, + "end": 9820, "loc": { "start": { "line": 303, @@ -82357,8 +82785,8 @@ "updateContext": null }, "value": "=", - "start": 9743, - "end": 9744, + "start": 9821, + "end": 9822, "loc": { "start": { "line": 303, @@ -82383,8 +82811,8 @@ "binop": null }, "value": "minElapsed", - "start": 9745, - "end": 9755, + "start": 9823, + "end": 9833, "loc": { "start": { "line": 303, @@ -82409,8 +82837,8 @@ "binop": null, "updateContext": null }, - "start": 9755, - "end": 9756, + "start": 9833, + "end": 9834, "loc": { "start": { "line": 303, @@ -82434,8 +82862,8 @@ "postfix": false, "binop": null }, - "start": 9769, - "end": 9770, + "start": 9847, + "end": 9848, "loc": { "start": { "line": 304, @@ -82462,8 +82890,8 @@ "updateContext": null }, "value": "const", - "start": 9783, - "end": 9788, + "start": 9861, + "end": 9866, "loc": { "start": { "line": 305, @@ -82488,8 +82916,8 @@ "binop": null }, "value": "delta", - "start": 9789, - "end": 9794, + "start": 9867, + "end": 9872, "loc": { "start": { "line": 305, @@ -82515,8 +82943,8 @@ "updateContext": null }, "value": "=", - "start": 9795, - "end": 9796, + "start": 9873, + "end": 9874, "loc": { "start": { "line": 305, @@ -82541,8 +82969,8 @@ "binop": null }, "value": "Math", - "start": 9797, - "end": 9801, + "start": 9875, + "end": 9879, "loc": { "start": { "line": 305, @@ -82567,8 +82995,8 @@ "binop": null, "updateContext": null }, - "start": 9801, - "end": 9802, + "start": 9879, + "end": 9880, "loc": { "start": { "line": 305, @@ -82593,8 +83021,8 @@ "binop": null }, "value": "max", - "start": 9802, - "end": 9805, + "start": 9880, + "end": 9883, "loc": { "start": { "line": 305, @@ -82618,8 +83046,8 @@ "postfix": false, "binop": null }, - "start": 9805, - "end": 9806, + "start": 9883, + "end": 9884, "loc": { "start": { "line": 305, @@ -82645,8 +83073,8 @@ "updateContext": null }, "value": "-", - "start": 9806, - "end": 9807, + "start": 9884, + "end": 9885, "loc": { "start": { "line": 305, @@ -82672,8 +83100,8 @@ "updateContext": null }, "value": 1, - "start": 9807, - "end": 9808, + "start": 9885, + "end": 9886, "loc": { "start": { "line": 305, @@ -82698,8 +83126,8 @@ "binop": null, "updateContext": null }, - "start": 9808, - "end": 9809, + "start": 9886, + "end": 9887, "loc": { "start": { "line": 305, @@ -82724,8 +83152,8 @@ "binop": null }, "value": "Math", - "start": 9810, - "end": 9814, + "start": 9888, + "end": 9892, "loc": { "start": { "line": 305, @@ -82750,8 +83178,8 @@ "binop": null, "updateContext": null }, - "start": 9814, - "end": 9815, + "start": 9892, + "end": 9893, "loc": { "start": { "line": 305, @@ -82776,8 +83204,8 @@ "binop": null }, "value": "min", - "start": 9815, - "end": 9818, + "start": 9893, + "end": 9896, "loc": { "start": { "line": 305, @@ -82801,8 +83229,8 @@ "postfix": false, "binop": null }, - "start": 9818, - "end": 9819, + "start": 9896, + "end": 9897, "loc": { "start": { "line": 305, @@ -82828,8 +83256,8 @@ "updateContext": null }, "value": 1, - "start": 9819, - "end": 9820, + "start": 9897, + "end": 9898, "loc": { "start": { "line": 305, @@ -82854,8 +83282,8 @@ "binop": null, "updateContext": null }, - "start": 9820, - "end": 9821, + "start": 9898, + "end": 9899, "loc": { "start": { "line": 305, @@ -82881,8 +83309,8 @@ "updateContext": null }, "value": "-", - "start": 9822, - "end": 9823, + "start": 9900, + "end": 9901, "loc": { "start": { "line": 305, @@ -82907,8 +83335,8 @@ "binop": null }, "value": "e", - "start": 9823, - "end": 9824, + "start": 9901, + "end": 9902, "loc": { "start": { "line": 305, @@ -82933,8 +83361,8 @@ "binop": null, "updateContext": null }, - "start": 9824, - "end": 9825, + "start": 9902, + "end": 9903, "loc": { "start": { "line": 305, @@ -82959,8 +83387,8 @@ "binop": null }, "value": "deltaY", - "start": 9825, - "end": 9831, + "start": 9903, + "end": 9909, "loc": { "start": { "line": 305, @@ -82986,8 +83414,8 @@ "updateContext": null }, "value": "*", - "start": 9832, - "end": 9833, + "start": 9910, + "end": 9911, "loc": { "start": { "line": 305, @@ -83013,8 +83441,8 @@ "updateContext": null }, "value": 40, - "start": 9834, - "end": 9836, + "start": 9912, + "end": 9914, "loc": { "start": { "line": 305, @@ -83038,8 +83466,8 @@ "postfix": false, "binop": null }, - "start": 9836, - "end": 9837, + "start": 9914, + "end": 9915, "loc": { "start": { "line": 305, @@ -83063,8 +83491,8 @@ "postfix": false, "binop": null }, - "start": 9837, - "end": 9838, + "start": 9915, + "end": 9916, "loc": { "start": { "line": 305, @@ -83089,8 +83517,8 @@ "binop": null, "updateContext": null }, - "start": 9838, - "end": 9839, + "start": 9916, + "end": 9917, "loc": { "start": { "line": 305, @@ -83117,8 +83545,8 @@ "updateContext": null }, "value": "if", - "start": 9852, - "end": 9854, + "start": 9930, + "end": 9932, "loc": { "start": { "line": 306, @@ -83142,8 +83570,8 @@ "postfix": false, "binop": null }, - "start": 9855, - "end": 9856, + "start": 9933, + "end": 9934, "loc": { "start": { "line": 306, @@ -83168,8 +83596,8 @@ "binop": null }, "value": "delta", - "start": 9856, - "end": 9861, + "start": 9934, + "end": 9939, "loc": { "start": { "line": 306, @@ -83195,8 +83623,8 @@ "updateContext": null }, "value": "===", - "start": 9862, - "end": 9865, + "start": 9940, + "end": 9943, "loc": { "start": { "line": 306, @@ -83222,8 +83650,8 @@ "updateContext": null }, "value": 0, - "start": 9866, - "end": 9867, + "start": 9944, + "end": 9945, "loc": { "start": { "line": 306, @@ -83247,8 +83675,8 @@ "postfix": false, "binop": null }, - "start": 9867, - "end": 9868, + "start": 9945, + "end": 9946, "loc": { "start": { "line": 306, @@ -83272,8 +83700,8 @@ "postfix": false, "binop": null }, - "start": 9869, - "end": 9870, + "start": 9947, + "end": 9948, "loc": { "start": { "line": 306, @@ -83300,8 +83728,8 @@ "updateContext": null }, "value": "return", - "start": 9887, - "end": 9893, + "start": 9965, + "end": 9971, "loc": { "start": { "line": 307, @@ -83326,8 +83754,8 @@ "binop": null, "updateContext": null }, - "start": 9893, - "end": 9894, + "start": 9971, + "end": 9972, "loc": { "start": { "line": 307, @@ -83351,8 +83779,8 @@ "postfix": false, "binop": null }, - "start": 9907, - "end": 9908, + "start": 9985, + "end": 9986, "loc": { "start": { "line": 308, @@ -83379,8 +83807,8 @@ "updateContext": null }, "value": "const", - "start": 9921, - "end": 9926, + "start": 9999, + "end": 10004, "loc": { "start": { "line": 309, @@ -83405,8 +83833,8 @@ "binop": null }, "value": "normalizedDelta", - "start": 9927, - "end": 9942, + "start": 10005, + "end": 10020, "loc": { "start": { "line": 309, @@ -83432,8 +83860,8 @@ "updateContext": null }, "value": "=", - "start": 9943, - "end": 9944, + "start": 10021, + "end": 10022, "loc": { "start": { "line": 309, @@ -83458,8 +83886,8 @@ "binop": null }, "value": "delta", - "start": 9945, - "end": 9950, + "start": 10023, + "end": 10028, "loc": { "start": { "line": 309, @@ -83485,8 +83913,8 @@ "updateContext": null }, "value": "/", - "start": 9951, - "end": 9952, + "start": 10029, + "end": 10030, "loc": { "start": { "line": 309, @@ -83511,8 +83939,8 @@ "binop": null }, "value": "Math", - "start": 9953, - "end": 9957, + "start": 10031, + "end": 10035, "loc": { "start": { "line": 309, @@ -83537,8 +83965,8 @@ "binop": null, "updateContext": null }, - "start": 9957, - "end": 9958, + "start": 10035, + "end": 10036, "loc": { "start": { "line": 309, @@ -83563,8 +83991,8 @@ "binop": null }, "value": "abs", - "start": 9958, - "end": 9961, + "start": 10036, + "end": 10039, "loc": { "start": { "line": 309, @@ -83588,8 +84016,8 @@ "postfix": false, "binop": null }, - "start": 9961, - "end": 9962, + "start": 10039, + "end": 10040, "loc": { "start": { "line": 309, @@ -83614,8 +84042,8 @@ "binop": null }, "value": "delta", - "start": 9962, - "end": 9967, + "start": 10040, + "end": 10045, "loc": { "start": { "line": 309, @@ -83639,8 +84067,8 @@ "postfix": false, "binop": null }, - "start": 9967, - "end": 9968, + "start": 10045, + "end": 10046, "loc": { "start": { "line": 309, @@ -83665,8 +84093,8 @@ "binop": null, "updateContext": null }, - "start": 9968, - "end": 9969, + "start": 10046, + "end": 10047, "loc": { "start": { "line": 309, @@ -83691,8 +84119,8 @@ "binop": null }, "value": "updates", - "start": 9982, - "end": 9989, + "start": 10060, + "end": 10067, "loc": { "start": { "line": 310, @@ -83717,8 +84145,8 @@ "binop": null, "updateContext": null }, - "start": 9989, - "end": 9990, + "start": 10067, + "end": 10068, "loc": { "start": { "line": 310, @@ -83743,8 +84171,8 @@ "binop": null }, "value": "dollyDelta", - "start": 9990, - "end": 10000, + "start": 10068, + "end": 10078, "loc": { "start": { "line": 310, @@ -83770,8 +84198,8 @@ "updateContext": null }, "value": "+=", - "start": 10001, - "end": 10003, + "start": 10079, + "end": 10081, "loc": { "start": { "line": 310, @@ -83797,8 +84225,8 @@ "updateContext": null }, "value": "-", - "start": 10004, - "end": 10005, + "start": 10082, + "end": 10083, "loc": { "start": { "line": 310, @@ -83823,8 +84251,8 @@ "binop": null }, "value": "normalizedDelta", - "start": 10005, - "end": 10020, + "start": 10083, + "end": 10098, "loc": { "start": { "line": 310, @@ -83850,8 +84278,8 @@ "updateContext": null }, "value": "*", - "start": 10021, - "end": 10022, + "start": 10099, + "end": 10100, "loc": { "start": { "line": 310, @@ -83876,8 +84304,8 @@ "binop": null }, "value": "secsElapsed", - "start": 10023, - "end": 10034, + "start": 10101, + "end": 10112, "loc": { "start": { "line": 310, @@ -83903,8 +84331,8 @@ "updateContext": null }, "value": "*", - "start": 10035, - "end": 10036, + "start": 10113, + "end": 10114, "loc": { "start": { "line": 310, @@ -83929,8 +84357,8 @@ "binop": null }, "value": "configs", - "start": 10037, - "end": 10044, + "start": 10115, + "end": 10122, "loc": { "start": { "line": 310, @@ -83955,8 +84383,8 @@ "binop": null, "updateContext": null }, - "start": 10044, - "end": 10045, + "start": 10122, + "end": 10123, "loc": { "start": { "line": 310, @@ -83981,8 +84409,8 @@ "binop": null }, "value": "mouseWheelDollyRate", - "start": 10045, - "end": 10064, + "start": 10123, + "end": 10142, "loc": { "start": { "line": 310, @@ -84007,8 +84435,8 @@ "binop": null, "updateContext": null }, - "start": 10064, - "end": 10065, + "start": 10142, + "end": 10143, "loc": { "start": { "line": 310, @@ -84035,8 +84463,8 @@ "updateContext": null }, "value": "if", - "start": 10079, - "end": 10081, + "start": 10157, + "end": 10159, "loc": { "start": { "line": 312, @@ -84060,8 +84488,8 @@ "postfix": false, "binop": null }, - "start": 10082, - "end": 10083, + "start": 10160, + "end": 10161, "loc": { "start": { "line": 312, @@ -84085,9 +84513,9 @@ "postfix": false, "binop": null }, - "value": "mouseMovedSinceLastWheel", - "start": 10083, - "end": 10107, + "value": "mouseMovedOnCanvasSinceLastWheel", + "start": 10161, + "end": 10193, "loc": { "start": { "line": 312, @@ -84095,7 +84523,7 @@ }, "end": { "line": 312, - "column": 40 + "column": 48 } } }, @@ -84111,16 +84539,16 @@ "postfix": false, "binop": null }, - "start": 10107, - "end": 10108, + "start": 10193, + "end": 10194, "loc": { "start": { "line": 312, - "column": 40 + "column": 48 }, "end": { "line": 312, - "column": 41 + "column": 49 } } }, @@ -84136,16 +84564,16 @@ "postfix": false, "binop": null }, - "start": 10109, - "end": 10110, + "start": 10195, + "end": 10196, "loc": { "start": { "line": 312, - "column": 42 + "column": 50 }, "end": { "line": 312, - "column": 43 + "column": 51 } } }, @@ -84162,8 +84590,8 @@ "binop": null }, "value": "states", - "start": 10127, - "end": 10133, + "start": 10213, + "end": 10219, "loc": { "start": { "line": 313, @@ -84188,8 +84616,8 @@ "binop": null, "updateContext": null }, - "start": 10133, - "end": 10134, + "start": 10219, + "end": 10220, "loc": { "start": { "line": 313, @@ -84214,8 +84642,8 @@ "binop": null }, "value": "followPointerDirty", - "start": 10134, - "end": 10152, + "start": 10220, + "end": 10238, "loc": { "start": { "line": 313, @@ -84241,8 +84669,8 @@ "updateContext": null }, "value": "=", - "start": 10153, - "end": 10154, + "start": 10239, + "end": 10240, "loc": { "start": { "line": 313, @@ -84269,8 +84697,8 @@ "updateContext": null }, "value": "true", - "start": 10155, - "end": 10159, + "start": 10241, + "end": 10245, "loc": { "start": { "line": 313, @@ -84295,8 +84723,8 @@ "binop": null, "updateContext": null }, - "start": 10159, - "end": 10160, + "start": 10245, + "end": 10246, "loc": { "start": { "line": 313, @@ -84320,9 +84748,9 @@ "postfix": false, "binop": null }, - "value": "mouseMovedSinceLastWheel", - "start": 10177, - "end": 10201, + "value": "mouseMovedOnCanvasSinceLastWheel", + "start": 10263, + "end": 10295, "loc": { "start": { "line": 314, @@ -84330,7 +84758,7 @@ }, "end": { "line": 314, - "column": 40 + "column": 48 } } }, @@ -84348,16 +84776,16 @@ "updateContext": null }, "value": "=", - "start": 10202, - "end": 10203, + "start": 10296, + "end": 10297, "loc": { "start": { "line": 314, - "column": 41 + "column": 49 }, "end": { "line": 314, - "column": 42 + "column": 50 } } }, @@ -84376,16 +84804,16 @@ "updateContext": null }, "value": "false", - "start": 10204, - "end": 10209, + "start": 10298, + "end": 10303, "loc": { "start": { "line": 314, - "column": 43 + "column": 51 }, "end": { "line": 314, - "column": 48 + "column": 56 } } }, @@ -84402,16 +84830,16 @@ "binop": null, "updateContext": null }, - "start": 10209, - "end": 10210, + "start": 10303, + "end": 10304, "loc": { "start": { "line": 314, - "column": 48 + "column": 56 }, "end": { "line": 314, - "column": 49 + "column": 57 } } }, @@ -84427,8 +84855,8 @@ "postfix": false, "binop": null }, - "start": 10223, - "end": 10224, + "start": 10317, + "end": 10318, "loc": { "start": { "line": 315, @@ -84453,8 +84881,8 @@ "binop": null }, "value": "e", - "start": 10238, - "end": 10239, + "start": 10332, + "end": 10333, "loc": { "start": { "line": 317, @@ -84479,8 +84907,8 @@ "binop": null, "updateContext": null }, - "start": 10239, - "end": 10240, + "start": 10333, + "end": 10334, "loc": { "start": { "line": 317, @@ -84505,8 +84933,8 @@ "binop": null }, "value": "preventDefault", - "start": 10240, - "end": 10254, + "start": 10334, + "end": 10348, "loc": { "start": { "line": 317, @@ -84530,8 +84958,8 @@ "postfix": false, "binop": null }, - "start": 10254, - "end": 10255, + "start": 10348, + "end": 10349, "loc": { "start": { "line": 317, @@ -84555,8 +84983,8 @@ "postfix": false, "binop": null }, - "start": 10255, - "end": 10256, + "start": 10349, + "end": 10350, "loc": { "start": { "line": 317, @@ -84581,8 +85009,8 @@ "binop": null, "updateContext": null }, - "start": 10256, - "end": 10257, + "start": 10350, + "end": 10351, "loc": { "start": { "line": 317, @@ -84606,8 +85034,8 @@ "postfix": false, "binop": null }, - "start": 10266, - "end": 10267, + "start": 10360, + "end": 10361, "loc": { "start": { "line": 318, @@ -84631,8 +85059,8 @@ "postfix": false, "binop": null }, - "start": 10267, - "end": 10268, + "start": 10361, + "end": 10362, "loc": { "start": { "line": 318, @@ -84657,8 +85085,8 @@ "binop": null, "updateContext": null }, - "start": 10268, - "end": 10269, + "start": 10362, + "end": 10363, "loc": { "start": { "line": 318, @@ -84682,8 +85110,8 @@ "postfix": false, "binop": null }, - "start": 10274, - "end": 10275, + "start": 10368, + "end": 10369, "loc": { "start": { "line": 319, @@ -84708,8 +85136,8 @@ "binop": null }, "value": "reset", - "start": 10281, - "end": 10286, + "start": 10375, + "end": 10380, "loc": { "start": { "line": 321, @@ -84733,8 +85161,8 @@ "postfix": false, "binop": null }, - "start": 10286, - "end": 10287, + "start": 10380, + "end": 10381, "loc": { "start": { "line": 321, @@ -84758,8 +85186,8 @@ "postfix": false, "binop": null }, - "start": 10287, - "end": 10288, + "start": 10381, + "end": 10382, "loc": { "start": { "line": 321, @@ -84783,8 +85211,8 @@ "postfix": false, "binop": null }, - "start": 10289, - "end": 10290, + "start": 10383, + "end": 10384, "loc": { "start": { "line": 321, @@ -84796,167 +85224,6 @@ } } }, - { - "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": 10299, - "end": 10303, - "loc": { - "start": { - "line": 322, - "column": 8 - }, - "end": { - "line": 322, - "column": 12 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 10303, - "end": 10304, - "loc": { - "start": { - "line": 322, - "column": 12 - }, - "end": { - "line": 322, - "column": 13 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "_down", - "start": 10304, - "end": 10309, - "loc": { - "start": { - "line": 322, - "column": 13 - }, - "end": { - "line": 322, - "column": 18 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 10310, - "end": 10311, - "loc": { - "start": { - "line": 322, - "column": 19 - }, - "end": { - "line": 322, - "column": 20 - } - } - }, - { - "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": 10312, - "end": 10317, - "loc": { - "start": { - "line": 322, - "column": 21 - }, - "end": { - "line": 322, - "column": 26 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 10317, - "end": 10318, - "loc": { - "start": { - "line": 322, - "column": 26 - }, - "end": { - "line": 322, - "column": 27 - } - } - }, { "type": { "label": "}", @@ -84969,15 +85236,15 @@ "postfix": false, "binop": null }, - "start": 10323, - "end": 10324, + "start": 10389, + "end": 10390, "loc": { "start": { - "line": 323, + "line": 322, "column": 4 }, "end": { - "line": 323, + "line": 322, "column": 5 } } @@ -84995,15 +85262,15 @@ "binop": null }, "value": "destroy", - "start": 10330, - "end": 10337, + "start": 10396, + "end": 10403, "loc": { "start": { - "line": 325, + "line": 324, "column": 4 }, "end": { - "line": 325, + "line": 324, "column": 11 } } @@ -85020,15 +85287,15 @@ "postfix": false, "binop": null }, - "start": 10337, - "end": 10338, + "start": 10403, + "end": 10404, "loc": { "start": { - "line": 325, + "line": 324, "column": 11 }, "end": { - "line": 325, + "line": 324, "column": 12 } } @@ -85045,15 +85312,15 @@ "postfix": false, "binop": null }, - "start": 10338, - "end": 10339, + "start": 10404, + "end": 10405, "loc": { "start": { - "line": 325, + "line": 324, "column": 12 }, "end": { - "line": 325, + "line": 324, "column": 13 } } @@ -85070,15 +85337,15 @@ "postfix": false, "binop": null }, - "start": 10340, - "end": 10341, + "start": 10406, + "end": 10407, "loc": { "start": { - "line": 325, + "line": 324, "column": 14 }, "end": { - "line": 325, + "line": 324, "column": 15 } } @@ -85098,15 +85365,15 @@ "updateContext": null }, "value": "const", - "start": 10351, - "end": 10356, + "start": 10417, + "end": 10422, "loc": { "start": { - "line": 327, + "line": 326, "column": 8 }, "end": { - "line": 327, + "line": 326, "column": 13 } } @@ -85124,15 +85391,15 @@ "binop": null }, "value": "canvas", - "start": 10357, - "end": 10363, + "start": 10423, + "end": 10429, "loc": { "start": { - "line": 327, + "line": 326, "column": 14 }, "end": { - "line": 327, + "line": 326, "column": 20 } } @@ -85151,15 +85418,15 @@ "updateContext": null }, "value": "=", - "start": 10364, - "end": 10365, + "start": 10430, + "end": 10431, "loc": { "start": { - "line": 327, + "line": 326, "column": 21 }, "end": { - "line": 327, + "line": 326, "column": 22 } } @@ -85179,15 +85446,15 @@ "updateContext": null }, "value": "this", - "start": 10366, - "end": 10370, + "start": 10432, + "end": 10436, "loc": { "start": { - "line": 327, + "line": 326, "column": 23 }, "end": { - "line": 327, + "line": 326, "column": 27 } } @@ -85205,15 +85472,15 @@ "binop": null, "updateContext": null }, - "start": 10370, - "end": 10371, + "start": 10436, + "end": 10437, "loc": { "start": { - "line": 327, + "line": 326, "column": 27 }, "end": { - "line": 327, + "line": 326, "column": 28 } } @@ -85231,15 +85498,15 @@ "binop": null }, "value": "_scene", - "start": 10371, - "end": 10377, + "start": 10437, + "end": 10443, "loc": { "start": { - "line": 327, + "line": 326, "column": 28 }, "end": { - "line": 327, + "line": 326, "column": 34 } } @@ -85257,15 +85524,15 @@ "binop": null, "updateContext": null }, - "start": 10377, - "end": 10378, + "start": 10443, + "end": 10444, "loc": { "start": { - "line": 327, + "line": 326, "column": 34 }, "end": { - "line": 327, + "line": 326, "column": 35 } } @@ -85283,15 +85550,15 @@ "binop": null }, "value": "canvas", - "start": 10378, - "end": 10384, + "start": 10444, + "end": 10450, "loc": { "start": { - "line": 327, + "line": 326, "column": 35 }, "end": { - "line": 327, + "line": 326, "column": 41 } } @@ -85309,15 +85576,15 @@ "binop": null, "updateContext": null }, - "start": 10384, - "end": 10385, + "start": 10450, + "end": 10451, "loc": { "start": { - "line": 327, + "line": 326, "column": 41 }, "end": { - "line": 327, + "line": 326, "column": 42 } } @@ -85335,15 +85602,15 @@ "binop": null }, "value": "canvas", - "start": 10385, - "end": 10391, + "start": 10451, + "end": 10457, "loc": { "start": { - "line": 327, + "line": 326, "column": 42 }, "end": { - "line": 327, + "line": 326, "column": 48 } } @@ -85361,15 +85628,15 @@ "binop": null, "updateContext": null }, - "start": 10391, - "end": 10392, + "start": 10457, + "end": 10458, "loc": { "start": { - "line": 327, + "line": 326, "column": 48 }, "end": { - "line": 327, + "line": 326, "column": 49 } } @@ -85387,15 +85654,15 @@ "binop": null }, "value": "document", - "start": 10402, - "end": 10410, + "start": 10468, + "end": 10476, "loc": { "start": { - "line": 329, + "line": 328, "column": 8 }, "end": { - "line": 329, + "line": 328, "column": 16 } } @@ -85413,15 +85680,15 @@ "binop": null, "updateContext": null }, - "start": 10410, - "end": 10411, + "start": 10476, + "end": 10477, "loc": { "start": { - "line": 329, + "line": 328, "column": 16 }, "end": { - "line": 329, + "line": 328, "column": 17 } } @@ -85439,15 +85706,15 @@ "binop": null }, "value": "removeEventListener", - "start": 10411, - "end": 10430, + "start": 10477, + "end": 10496, "loc": { "start": { - "line": 329, + "line": 328, "column": 17 }, "end": { - "line": 329, + "line": 328, "column": 36 } } @@ -85464,15 +85731,15 @@ "postfix": false, "binop": null }, - "start": 10430, - "end": 10431, + "start": 10496, + "end": 10497, "loc": { "start": { - "line": 329, + "line": 328, "column": 36 }, "end": { - "line": 329, + "line": 328, "column": 37 } } @@ -85491,15 +85758,15 @@ "updateContext": null }, "value": "keydown", - "start": 10431, - "end": 10440, + "start": 10497, + "end": 10506, "loc": { "start": { - "line": 329, + "line": 328, "column": 37 }, "end": { - "line": 329, + "line": 328, "column": 46 } } @@ -85517,15 +85784,15 @@ "binop": null, "updateContext": null }, - "start": 10440, - "end": 10441, + "start": 10506, + "end": 10507, "loc": { "start": { - "line": 329, + "line": 328, "column": 46 }, "end": { - "line": 329, + "line": 328, "column": 47 } } @@ -85545,15 +85812,15 @@ "updateContext": null }, "value": "this", - "start": 10442, - "end": 10446, + "start": 10508, + "end": 10512, "loc": { "start": { - "line": 329, + "line": 328, "column": 48 }, "end": { - "line": 329, + "line": 328, "column": 52 } } @@ -85571,15 +85838,15 @@ "binop": null, "updateContext": null }, - "start": 10446, - "end": 10447, + "start": 10512, + "end": 10513, "loc": { "start": { - "line": 329, + "line": 328, "column": 52 }, "end": { - "line": 329, + "line": 328, "column": 53 } } @@ -85597,15 +85864,15 @@ "binop": null }, "value": "_documentKeyDownHandler", - "start": 10447, - "end": 10470, + "start": 10513, + "end": 10536, "loc": { "start": { - "line": 329, + "line": 328, "column": 53 }, "end": { - "line": 329, + "line": 328, "column": 76 } } @@ -85622,15 +85889,15 @@ "postfix": false, "binop": null }, - "start": 10470, - "end": 10471, + "start": 10536, + "end": 10537, "loc": { "start": { - "line": 329, + "line": 328, "column": 76 }, "end": { - "line": 329, + "line": 328, "column": 77 } } @@ -85648,15 +85915,15 @@ "binop": null, "updateContext": null }, - "start": 10471, - "end": 10472, + "start": 10537, + "end": 10538, "loc": { "start": { - "line": 329, + "line": 328, "column": 77 }, "end": { - "line": 329, + "line": 328, "column": 78 } } @@ -85674,15 +85941,15 @@ "binop": null }, "value": "document", - "start": 10481, - "end": 10489, + "start": 10547, + "end": 10555, "loc": { "start": { - "line": 330, + "line": 329, "column": 8 }, "end": { - "line": 330, + "line": 329, "column": 16 } } @@ -85700,15 +85967,15 @@ "binop": null, "updateContext": null }, - "start": 10489, - "end": 10490, + "start": 10555, + "end": 10556, "loc": { "start": { - "line": 330, + "line": 329, "column": 16 }, "end": { - "line": 330, + "line": 329, "column": 17 } } @@ -85726,15 +85993,15 @@ "binop": null }, "value": "removeEventListener", - "start": 10490, - "end": 10509, + "start": 10556, + "end": 10575, "loc": { "start": { - "line": 330, + "line": 329, "column": 17 }, "end": { - "line": 330, + "line": 329, "column": 36 } } @@ -85751,15 +86018,15 @@ "postfix": false, "binop": null }, - "start": 10509, - "end": 10510, + "start": 10575, + "end": 10576, "loc": { "start": { - "line": 330, + "line": 329, "column": 36 }, "end": { - "line": 330, + "line": 329, "column": 37 } } @@ -85778,15 +86045,15 @@ "updateContext": null }, "value": "keyup", - "start": 10510, - "end": 10517, + "start": 10576, + "end": 10583, "loc": { "start": { - "line": 330, + "line": 329, "column": 37 }, "end": { - "line": 330, + "line": 329, "column": 44 } } @@ -85804,15 +86071,15 @@ "binop": null, "updateContext": null }, - "start": 10517, - "end": 10518, + "start": 10583, + "end": 10584, "loc": { "start": { - "line": 330, + "line": 329, "column": 44 }, "end": { - "line": 330, + "line": 329, "column": 45 } } @@ -85832,15 +86099,15 @@ "updateContext": null }, "value": "this", - "start": 10519, - "end": 10523, + "start": 10585, + "end": 10589, "loc": { "start": { - "line": 330, + "line": 329, "column": 46 }, "end": { - "line": 330, + "line": 329, "column": 50 } } @@ -85858,15 +86125,15 @@ "binop": null, "updateContext": null }, - "start": 10523, - "end": 10524, + "start": 10589, + "end": 10590, "loc": { "start": { - "line": 330, + "line": 329, "column": 50 }, "end": { - "line": 330, + "line": 329, "column": 51 } } @@ -85884,15 +86151,15 @@ "binop": null }, "value": "_documentKeyUpHandler", - "start": 10524, - "end": 10545, + "start": 10590, + "end": 10611, "loc": { "start": { - "line": 330, + "line": 329, "column": 51 }, "end": { - "line": 330, + "line": 329, "column": 72 } } @@ -85909,15 +86176,15 @@ "postfix": false, "binop": null }, - "start": 10545, - "end": 10546, + "start": 10611, + "end": 10612, "loc": { "start": { - "line": 330, + "line": 329, "column": 72 }, "end": { - "line": 330, + "line": 329, "column": 73 } } @@ -85935,15 +86202,15 @@ "binop": null, "updateContext": null }, - "start": 10546, - "end": 10547, + "start": 10612, + "end": 10613, "loc": { "start": { - "line": 330, + "line": 329, "column": 73 }, "end": { - "line": 330, + "line": 329, "column": 74 } } @@ -85961,15 +86228,15 @@ "binop": null }, "value": "canvas", - "start": 10556, - "end": 10562, + "start": 10622, + "end": 10628, "loc": { "start": { - "line": 331, + "line": 330, "column": 8 }, "end": { - "line": 331, + "line": 330, "column": 14 } } @@ -85987,15 +86254,15 @@ "binop": null, "updateContext": null }, - "start": 10562, - "end": 10563, + "start": 10628, + "end": 10629, "loc": { "start": { - "line": 331, + "line": 330, "column": 14 }, "end": { - "line": 331, + "line": 330, "column": 15 } } @@ -86013,15 +86280,15 @@ "binop": null }, "value": "removeEventListener", - "start": 10563, - "end": 10582, + "start": 10629, + "end": 10648, "loc": { "start": { - "line": 331, + "line": 330, "column": 15 }, "end": { - "line": 331, + "line": 330, "column": 34 } } @@ -86038,15 +86305,15 @@ "postfix": false, "binop": null }, - "start": 10582, - "end": 10583, + "start": 10648, + "end": 10649, "loc": { "start": { - "line": 331, + "line": 330, "column": 34 }, "end": { - "line": 331, + "line": 330, "column": 35 } } @@ -86065,15 +86332,15 @@ "updateContext": null }, "value": "mousedown", - "start": 10583, - "end": 10594, + "start": 10649, + "end": 10660, "loc": { "start": { - "line": 331, + "line": 330, "column": 35 }, "end": { - "line": 331, + "line": 330, "column": 46 } } @@ -86091,15 +86358,15 @@ "binop": null, "updateContext": null }, - "start": 10594, - "end": 10595, + "start": 10660, + "end": 10661, "loc": { "start": { - "line": 331, + "line": 330, "column": 46 }, "end": { - "line": 331, + "line": 330, "column": 47 } } @@ -86119,15 +86386,15 @@ "updateContext": null }, "value": "this", - "start": 10596, - "end": 10600, + "start": 10662, + "end": 10666, "loc": { "start": { - "line": 331, + "line": 330, "column": 48 }, "end": { - "line": 331, + "line": 330, "column": 52 } } @@ -86145,15 +86412,15 @@ "binop": null, "updateContext": null }, - "start": 10600, - "end": 10601, + "start": 10666, + "end": 10667, "loc": { "start": { - "line": 331, + "line": 330, "column": 52 }, "end": { - "line": 331, + "line": 330, "column": 53 } } @@ -86171,15 +86438,15 @@ "binop": null }, "value": "_mouseDownHandler", - "start": 10601, - "end": 10618, + "start": 10667, + "end": 10684, "loc": { "start": { - "line": 331, + "line": 330, "column": 53 }, "end": { - "line": 331, + "line": 330, "column": 70 } } @@ -86196,15 +86463,15 @@ "postfix": false, "binop": null }, - "start": 10618, - "end": 10619, + "start": 10684, + "end": 10685, "loc": { "start": { - "line": 331, + "line": 330, "column": 70 }, "end": { - "line": 331, + "line": 330, "column": 71 } } @@ -86222,15 +86489,15 @@ "binop": null, "updateContext": null }, - "start": 10619, - "end": 10620, + "start": 10685, + "end": 10686, "loc": { "start": { - "line": 331, + "line": 330, "column": 71 }, "end": { - "line": 331, + "line": 330, "column": 72 } } @@ -86248,15 +86515,15 @@ "binop": null }, "value": "document", - "start": 10629, - "end": 10637, + "start": 10695, + "end": 10703, "loc": { "start": { - "line": 332, + "line": 331, "column": 8 }, "end": { - "line": 332, + "line": 331, "column": 16 } } @@ -86274,15 +86541,15 @@ "binop": null, "updateContext": null }, - "start": 10637, - "end": 10638, + "start": 10703, + "end": 10704, "loc": { "start": { - "line": 332, + "line": 331, "column": 16 }, "end": { - "line": 332, + "line": 331, "column": 17 } } @@ -86300,15 +86567,15 @@ "binop": null }, "value": "removeEventListener", - "start": 10638, - "end": 10657, + "start": 10704, + "end": 10723, "loc": { "start": { - "line": 332, + "line": 331, "column": 17 }, "end": { - "line": 332, + "line": 331, "column": 36 } } @@ -86325,15 +86592,15 @@ "postfix": false, "binop": null }, - "start": 10657, - "end": 10658, + "start": 10723, + "end": 10724, "loc": { "start": { - "line": 332, + "line": 331, "column": 36 }, "end": { - "line": 332, + "line": 331, "column": 37 } } @@ -86352,15 +86619,15 @@ "updateContext": null }, "value": "mousemove", - "start": 10658, - "end": 10669, + "start": 10724, + "end": 10735, "loc": { "start": { - "line": 332, + "line": 331, "column": 37 }, "end": { - "line": 332, + "line": 331, "column": 48 } } @@ -86378,15 +86645,15 @@ "binop": null, "updateContext": null }, - "start": 10669, - "end": 10670, + "start": 10735, + "end": 10736, "loc": { "start": { - "line": 332, + "line": 331, "column": 48 }, "end": { - "line": 332, + "line": 331, "column": 49 } } @@ -86406,15 +86673,15 @@ "updateContext": null }, "value": "this", - "start": 10671, - "end": 10675, + "start": 10737, + "end": 10741, "loc": { "start": { - "line": 332, + "line": 331, "column": 50 }, "end": { - "line": 332, + "line": 331, "column": 54 } } @@ -86432,15 +86699,15 @@ "binop": null, "updateContext": null }, - "start": 10675, - "end": 10676, + "start": 10741, + "end": 10742, "loc": { "start": { - "line": 332, + "line": 331, "column": 54 }, "end": { - "line": 332, + "line": 331, "column": 55 } } @@ -86458,15 +86725,15 @@ "binop": null }, "value": "_documentMouseMoveHandler", - "start": 10676, - "end": 10701, + "start": 10742, + "end": 10767, "loc": { "start": { - "line": 332, + "line": 331, "column": 55 }, "end": { - "line": 332, + "line": 331, "column": 80 } } @@ -86483,15 +86750,15 @@ "postfix": false, "binop": null }, - "start": 10701, - "end": 10702, + "start": 10767, + "end": 10768, "loc": { "start": { - "line": 332, + "line": 331, "column": 80 }, "end": { - "line": 332, + "line": 331, "column": 81 } } @@ -86509,15 +86776,15 @@ "binop": null, "updateContext": null }, - "start": 10702, - "end": 10703, + "start": 10768, + "end": 10769, "loc": { "start": { - "line": 332, + "line": 331, "column": 81 }, "end": { - "line": 332, + "line": 331, "column": 82 } } @@ -86535,15 +86802,15 @@ "binop": null }, "value": "canvas", - "start": 10712, - "end": 10718, + "start": 10778, + "end": 10784, "loc": { "start": { - "line": 333, + "line": 332, "column": 8 }, "end": { - "line": 333, + "line": 332, "column": 14 } } @@ -86561,15 +86828,15 @@ "binop": null, "updateContext": null }, - "start": 10718, - "end": 10719, + "start": 10784, + "end": 10785, "loc": { "start": { - "line": 333, + "line": 332, "column": 14 }, "end": { - "line": 333, + "line": 332, "column": 15 } } @@ -86587,15 +86854,15 @@ "binop": null }, "value": "removeEventListener", - "start": 10719, - "end": 10738, + "start": 10785, + "end": 10804, "loc": { "start": { - "line": 333, + "line": 332, "column": 15 }, "end": { - "line": 333, + "line": 332, "column": 34 } } @@ -86612,15 +86879,15 @@ "postfix": false, "binop": null }, - "start": 10738, - "end": 10739, + "start": 10804, + "end": 10805, "loc": { "start": { - "line": 333, + "line": 332, "column": 34 }, "end": { - "line": 333, + "line": 332, "column": 35 } } @@ -86639,15 +86906,15 @@ "updateContext": null }, "value": "mousemove", - "start": 10739, - "end": 10750, + "start": 10805, + "end": 10816, "loc": { "start": { - "line": 333, + "line": 332, "column": 35 }, "end": { - "line": 333, + "line": 332, "column": 46 } } @@ -86665,15 +86932,15 @@ "binop": null, "updateContext": null }, - "start": 10750, - "end": 10751, + "start": 10816, + "end": 10817, "loc": { "start": { - "line": 333, + "line": 332, "column": 46 }, "end": { - "line": 333, + "line": 332, "column": 47 } } @@ -86693,15 +86960,15 @@ "updateContext": null }, "value": "this", - "start": 10752, - "end": 10756, + "start": 10818, + "end": 10822, "loc": { "start": { - "line": 333, + "line": 332, "column": 48 }, "end": { - "line": 333, + "line": 332, "column": 52 } } @@ -86719,15 +86986,15 @@ "binop": null, "updateContext": null }, - "start": 10756, - "end": 10757, + "start": 10822, + "end": 10823, "loc": { "start": { - "line": 333, + "line": 332, "column": 52 }, "end": { - "line": 333, + "line": 332, "column": 53 } } @@ -86745,15 +87012,15 @@ "binop": null }, "value": "_canvasMouseMoveHandler", - "start": 10757, - "end": 10780, + "start": 10823, + "end": 10846, "loc": { "start": { - "line": 333, + "line": 332, "column": 53 }, "end": { - "line": 333, + "line": 332, "column": 76 } } @@ -86770,15 +87037,15 @@ "postfix": false, "binop": null }, - "start": 10780, - "end": 10781, + "start": 10846, + "end": 10847, "loc": { "start": { - "line": 333, + "line": 332, "column": 76 }, "end": { - "line": 333, + "line": 332, "column": 77 } } @@ -86796,15 +87063,15 @@ "binop": null, "updateContext": null }, - "start": 10781, - "end": 10782, + "start": 10847, + "end": 10848, "loc": { "start": { - "line": 333, + "line": 332, "column": 77 }, "end": { - "line": 333, + "line": 332, "column": 78 } } @@ -86822,15 +87089,15 @@ "binop": null }, "value": "document", - "start": 10791, - "end": 10799, + "start": 10857, + "end": 10865, "loc": { "start": { - "line": 334, + "line": 333, "column": 8 }, "end": { - "line": 334, + "line": 333, "column": 16 } } @@ -86848,15 +87115,15 @@ "binop": null, "updateContext": null }, - "start": 10799, - "end": 10800, + "start": 10865, + "end": 10866, "loc": { "start": { - "line": 334, + "line": 333, "column": 16 }, "end": { - "line": 334, + "line": 333, "column": 17 } } @@ -86874,15 +87141,15 @@ "binop": null }, "value": "removeEventListener", - "start": 10800, - "end": 10819, + "start": 10866, + "end": 10885, "loc": { "start": { - "line": 334, + "line": 333, "column": 17 }, "end": { - "line": 334, + "line": 333, "column": 36 } } @@ -86899,15 +87166,15 @@ "postfix": false, "binop": null }, - "start": 10819, - "end": 10820, + "start": 10885, + "end": 10886, "loc": { "start": { - "line": 334, + "line": 333, "column": 36 }, "end": { - "line": 334, + "line": 333, "column": 37 } } @@ -86926,15 +87193,15 @@ "updateContext": null }, "value": "mouseup", - "start": 10820, - "end": 10829, + "start": 10886, + "end": 10895, "loc": { "start": { - "line": 334, + "line": 333, "column": 37 }, "end": { - "line": 334, + "line": 333, "column": 46 } } @@ -86952,15 +87219,15 @@ "binop": null, "updateContext": null }, - "start": 10829, - "end": 10830, + "start": 10895, + "end": 10896, "loc": { "start": { - "line": 334, + "line": 333, "column": 46 }, "end": { - "line": 334, + "line": 333, "column": 47 } } @@ -86980,15 +87247,15 @@ "updateContext": null }, "value": "this", - "start": 10831, - "end": 10835, + "start": 10897, + "end": 10901, "loc": { "start": { - "line": 334, + "line": 333, "column": 48 }, "end": { - "line": 334, + "line": 333, "column": 52 } } @@ -87006,15 +87273,15 @@ "binop": null, "updateContext": null }, - "start": 10835, - "end": 10836, + "start": 10901, + "end": 10902, "loc": { "start": { - "line": 334, + "line": 333, "column": 52 }, "end": { - "line": 334, + "line": 333, "column": 53 } } @@ -87032,15 +87299,15 @@ "binop": null }, "value": "_documentMouseUpHandler", - "start": 10836, - "end": 10859, + "start": 10902, + "end": 10925, "loc": { "start": { - "line": 334, + "line": 333, "column": 53 }, "end": { - "line": 334, + "line": 333, "column": 76 } } @@ -87057,15 +87324,15 @@ "postfix": false, "binop": null }, - "start": 10859, - "end": 10860, + "start": 10925, + "end": 10926, "loc": { "start": { - "line": 334, + "line": 333, "column": 76 }, "end": { - "line": 334, + "line": 333, "column": 77 } } @@ -87083,15 +87350,15 @@ "binop": null, "updateContext": null }, - "start": 10860, - "end": 10861, + "start": 10926, + "end": 10927, "loc": { "start": { - "line": 334, + "line": 333, "column": 77 }, "end": { - "line": 334, + "line": 333, "column": 78 } } @@ -87109,15 +87376,15 @@ "binop": null }, "value": "canvas", - "start": 10870, - "end": 10876, + "start": 10936, + "end": 10942, "loc": { "start": { - "line": 335, + "line": 334, "column": 8 }, "end": { - "line": 335, + "line": 334, "column": 14 } } @@ -87135,15 +87402,15 @@ "binop": null, "updateContext": null }, - "start": 10876, - "end": 10877, + "start": 10942, + "end": 10943, "loc": { "start": { - "line": 335, + "line": 334, "column": 14 }, "end": { - "line": 335, + "line": 334, "column": 15 } } @@ -87161,15 +87428,15 @@ "binop": null }, "value": "removeEventListener", - "start": 10877, - "end": 10896, + "start": 10943, + "end": 10962, "loc": { "start": { - "line": 335, + "line": 334, "column": 15 }, "end": { - "line": 335, + "line": 334, "column": 34 } } @@ -87186,15 +87453,15 @@ "postfix": false, "binop": null }, - "start": 10896, - "end": 10897, + "start": 10962, + "end": 10963, "loc": { "start": { - "line": 335, + "line": 334, "column": 34 }, "end": { - "line": 335, + "line": 334, "column": 35 } } @@ -87213,15 +87480,15 @@ "updateContext": null }, "value": "mouseup", - "start": 10897, - "end": 10906, + "start": 10963, + "end": 10972, "loc": { "start": { - "line": 335, + "line": 334, "column": 35 }, "end": { - "line": 335, + "line": 334, "column": 44 } } @@ -87239,15 +87506,15 @@ "binop": null, "updateContext": null }, - "start": 10906, - "end": 10907, + "start": 10972, + "end": 10973, "loc": { "start": { - "line": 335, + "line": 334, "column": 44 }, "end": { - "line": 335, + "line": 334, "column": 45 } } @@ -87267,15 +87534,15 @@ "updateContext": null }, "value": "this", - "start": 10908, - "end": 10912, + "start": 10974, + "end": 10978, "loc": { "start": { - "line": 335, + "line": 334, "column": 46 }, "end": { - "line": 335, + "line": 334, "column": 50 } } @@ -87293,15 +87560,15 @@ "binop": null, "updateContext": null }, - "start": 10912, - "end": 10913, + "start": 10978, + "end": 10979, "loc": { "start": { - "line": 335, + "line": 334, "column": 50 }, "end": { - "line": 335, + "line": 334, "column": 51 } } @@ -87319,15 +87586,15 @@ "binop": null }, "value": "_mouseUpHandler", - "start": 10913, - "end": 10928, + "start": 10979, + "end": 10994, "loc": { "start": { - "line": 335, + "line": 334, "column": 51 }, "end": { - "line": 335, + "line": 334, "column": 66 } } @@ -87344,15 +87611,15 @@ "postfix": false, "binop": null }, - "start": 10928, - "end": 10929, + "start": 10994, + "end": 10995, "loc": { "start": { - "line": 335, + "line": 334, "column": 66 }, "end": { - "line": 335, + "line": 334, "column": 67 } } @@ -87370,15 +87637,15 @@ "binop": null, "updateContext": null }, - "start": 10929, - "end": 10930, + "start": 10995, + "end": 10996, "loc": { "start": { - "line": 335, + "line": 334, "column": 67 }, "end": { - "line": 335, + "line": 334, "column": 68 } } @@ -87396,15 +87663,15 @@ "binop": null }, "value": "canvas", - "start": 10939, - "end": 10945, + "start": 11005, + "end": 11011, "loc": { "start": { - "line": 336, + "line": 335, "column": 8 }, "end": { - "line": 336, + "line": 335, "column": 14 } } @@ -87422,15 +87689,15 @@ "binop": null, "updateContext": null }, - "start": 10945, - "end": 10946, + "start": 11011, + "end": 11012, "loc": { "start": { - "line": 336, + "line": 335, "column": 14 }, "end": { - "line": 336, + "line": 335, "column": 15 } } @@ -87448,15 +87715,15 @@ "binop": null }, "value": "removeEventListener", - "start": 10946, - "end": 10965, + "start": 11012, + "end": 11031, "loc": { "start": { - "line": 336, + "line": 335, "column": 15 }, "end": { - "line": 336, + "line": 335, "column": 34 } } @@ -87473,15 +87740,15 @@ "postfix": false, "binop": null }, - "start": 10965, - "end": 10966, + "start": 11031, + "end": 11032, "loc": { "start": { - "line": 336, + "line": 335, "column": 34 }, "end": { - "line": 336, + "line": 335, "column": 35 } } @@ -87500,15 +87767,15 @@ "updateContext": null }, "value": "mouseenter", - "start": 10966, - "end": 10978, + "start": 11032, + "end": 11044, "loc": { "start": { - "line": 336, + "line": 335, "column": 35 }, "end": { - "line": 336, + "line": 335, "column": 47 } } @@ -87526,15 +87793,15 @@ "binop": null, "updateContext": null }, - "start": 10978, - "end": 10979, + "start": 11044, + "end": 11045, "loc": { "start": { - "line": 336, + "line": 335, "column": 47 }, "end": { - "line": 336, + "line": 335, "column": 48 } } @@ -87554,15 +87821,15 @@ "updateContext": null }, "value": "this", - "start": 10980, - "end": 10984, + "start": 11046, + "end": 11050, "loc": { "start": { - "line": 336, + "line": 335, "column": 49 }, "end": { - "line": 336, + "line": 335, "column": 53 } } @@ -87580,15 +87847,15 @@ "binop": null, "updateContext": null }, - "start": 10984, - "end": 10985, + "start": 11050, + "end": 11051, "loc": { "start": { - "line": 336, + "line": 335, "column": 53 }, "end": { - "line": 336, + "line": 335, "column": 54 } } @@ -87606,15 +87873,15 @@ "binop": null }, "value": "_mouseEnterHandler", - "start": 10985, - "end": 11003, + "start": 11051, + "end": 11069, "loc": { "start": { - "line": 336, + "line": 335, "column": 54 }, "end": { - "line": 336, + "line": 335, "column": 72 } } @@ -87631,15 +87898,15 @@ "postfix": false, "binop": null }, - "start": 11003, - "end": 11004, + "start": 11069, + "end": 11070, "loc": { "start": { - "line": 336, + "line": 335, "column": 72 }, "end": { - "line": 336, + "line": 335, "column": 73 } } @@ -87657,15 +87924,15 @@ "binop": null, "updateContext": null }, - "start": 11004, - "end": 11005, + "start": 11070, + "end": 11071, "loc": { "start": { - "line": 336, + "line": 335, "column": 73 }, "end": { - "line": 336, + "line": 335, "column": 74 } } @@ -87683,15 +87950,15 @@ "binop": null }, "value": "canvas", - "start": 11014, - "end": 11020, + "start": 11080, + "end": 11086, "loc": { "start": { - "line": 337, + "line": 336, "column": 8 }, "end": { - "line": 337, + "line": 336, "column": 14 } } @@ -87709,15 +87976,15 @@ "binop": null, "updateContext": null }, - "start": 11020, - "end": 11021, + "start": 11086, + "end": 11087, "loc": { "start": { - "line": 337, + "line": 336, "column": 14 }, "end": { - "line": 337, + "line": 336, "column": 15 } } @@ -87735,15 +88002,15 @@ "binop": null }, "value": "removeEventListener", - "start": 11021, - "end": 11040, + "start": 11087, + "end": 11106, "loc": { "start": { - "line": 337, + "line": 336, "column": 15 }, "end": { - "line": 337, + "line": 336, "column": 34 } } @@ -87760,15 +88027,15 @@ "postfix": false, "binop": null }, - "start": 11040, - "end": 11041, + "start": 11106, + "end": 11107, "loc": { "start": { - "line": 337, + "line": 336, "column": 34 }, "end": { - "line": 337, + "line": 336, "column": 35 } } @@ -87787,15 +88054,15 @@ "updateContext": null }, "value": "wheel", - "start": 11041, - "end": 11048, + "start": 11107, + "end": 11114, "loc": { "start": { - "line": 337, + "line": 336, "column": 35 }, "end": { - "line": 337, + "line": 336, "column": 42 } } @@ -87813,15 +88080,15 @@ "binop": null, "updateContext": null }, - "start": 11048, - "end": 11049, + "start": 11114, + "end": 11115, "loc": { "start": { - "line": 337, + "line": 336, "column": 42 }, "end": { - "line": 337, + "line": 336, "column": 43 } } @@ -87841,15 +88108,15 @@ "updateContext": null }, "value": "this", - "start": 11050, - "end": 11054, + "start": 11116, + "end": 11120, "loc": { "start": { - "line": 337, + "line": 336, "column": 44 }, "end": { - "line": 337, + "line": 336, "column": 48 } } @@ -87867,15 +88134,15 @@ "binop": null, "updateContext": null }, - "start": 11054, - "end": 11055, + "start": 11120, + "end": 11121, "loc": { "start": { - "line": 337, + "line": 336, "column": 48 }, "end": { - "line": 337, + "line": 336, "column": 49 } } @@ -87893,15 +88160,15 @@ "binop": null }, "value": "_mouseWheelHandler", - "start": 11055, - "end": 11073, + "start": 11121, + "end": 11139, "loc": { "start": { - "line": 337, + "line": 336, "column": 49 }, "end": { - "line": 337, + "line": 336, "column": 67 } } @@ -87918,15 +88185,15 @@ "postfix": false, "binop": null }, - "start": 11073, - "end": 11074, + "start": 11139, + "end": 11140, "loc": { "start": { - "line": 337, + "line": 336, "column": 67 }, "end": { - "line": 337, + "line": 336, "column": 68 } } @@ -87944,15 +88211,15 @@ "binop": null, "updateContext": null }, - "start": 11074, - "end": 11075, + "start": 11140, + "end": 11141, "loc": { "start": { - "line": 337, + "line": 336, "column": 68 }, "end": { - "line": 337, + "line": 336, "column": 69 } } @@ -87969,15 +88236,15 @@ "postfix": false, "binop": null }, - "start": 11080, - "end": 11081, + "start": 11146, + "end": 11147, "loc": { "start": { - "line": 338, + "line": 337, "column": 4 }, "end": { - "line": 338, + "line": 337, "column": 5 } } @@ -87994,15 +88261,15 @@ "postfix": false, "binop": null }, - "start": 11082, - "end": 11083, + "start": 11148, + "end": 11149, "loc": { "start": { - "line": 339, + "line": 338, "column": 0 }, "end": { - "line": 339, + "line": 338, "column": 1 } } @@ -88022,15 +88289,15 @@ "updateContext": null }, "value": "export", - "start": 11085, - "end": 11091, + "start": 11151, + "end": 11157, "loc": { "start": { - "line": 341, + "line": 340, "column": 0 }, "end": { - "line": 341, + "line": 340, "column": 6 } } @@ -88047,15 +88314,15 @@ "postfix": false, "binop": null }, - "start": 11092, - "end": 11093, + "start": 11158, + "end": 11159, "loc": { "start": { - "line": 341, + "line": 340, "column": 7 }, "end": { - "line": 341, + "line": 340, "column": 8 } } @@ -88073,15 +88340,15 @@ "binop": null }, "value": "MousePanRotateDollyHandler", - "start": 11093, - "end": 11119, + "start": 11159, + "end": 11185, "loc": { "start": { - "line": 341, + "line": 340, "column": 8 }, "end": { - "line": 341, + "line": 340, "column": 34 } } @@ -88098,15 +88365,15 @@ "postfix": false, "binop": null }, - "start": 11119, - "end": 11120, + "start": 11185, + "end": 11186, "loc": { "start": { - "line": 341, + "line": 340, "column": 34 }, "end": { - "line": 341, + "line": 340, "column": 35 } } @@ -88124,15 +88391,15 @@ "binop": null, "updateContext": null }, - "start": 11120, - "end": 11121, + "start": 11186, + "end": 11187, "loc": { "start": { - "line": 341, + "line": 340, "column": 35 }, "end": { - "line": 341, + "line": 340, "column": 36 } } @@ -88150,15 +88417,15 @@ "binop": null, "updateContext": null }, - "start": 11122, - "end": 11122, + "start": 11188, + "end": 11188, "loc": { "start": { - "line": 342, + "line": 341, "column": 0 }, "end": { - "line": 342, + "line": 341, "column": 0 } } diff --git a/docs/ast/source/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js.json b/docs/ast/source/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js.json index bd16d7b7b6..2ba609890f 100644 --- a/docs/ast/source/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js.json +++ b/docs/ast/source/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js.json @@ -1,7 +1,7 @@ { "type": "File", "start": 0, - "end": 12948, + "end": 12969, "loc": { "start": { "line": 1, @@ -15,7 +15,7 @@ "program": { "type": "Program", "start": 0, - "end": 12948, + "end": 12969, "loc": { "start": { "line": 1, @@ -135,7 +135,7 @@ { "type": "Identifier", "start": 65, - "end": 12918, + "end": 12939, "loc": { "start": { "line": 6, @@ -168,7 +168,7 @@ "body": { "type": "ClassBody", "start": 88, - "end": 12918, + "end": 12939, "loc": { "start": { "line": 6, @@ -183,7 +183,7 @@ { "type": "ClassMethod", "start": 95, - "end": 12201, + "end": 12222, "loc": { "start": { "line": 8, @@ -308,7 +308,7 @@ "body": { "type": "BlockStatement", "start": 153, - "end": 12201, + "end": 12222, "loc": { "start": { "line": 8, @@ -1302,7 +1302,7 @@ { "type": "VariableDeclaration", "start": 583, - "end": 1501, + "end": 1522, "loc": { "start": { "line": 25, @@ -1317,7 +1317,7 @@ { "type": "VariableDeclarator", "start": 589, - "end": 1500, + "end": 1521, "loc": { "start": { "line": 25, @@ -1348,7 +1348,7 @@ "init": { "type": "ArrowFunctionExpression", "start": 603, - "end": 1500, + "end": 1521, "loc": { "start": { "line": 25, @@ -1385,7 +1385,7 @@ "body": { "type": "BlockStatement", "start": 619, - "end": 1500, + "end": 1521, "loc": { "start": { "line": 25, @@ -1666,7 +1666,7 @@ { "type": "VariableDeclaration", "start": 763, - "end": 825, + "end": 846, "loc": { "start": { "line": 30, @@ -1674,14 +1674,14 @@ }, "end": { "line": 30, - "column": 74 + "column": 95 } }, "declarations": [ { "type": "VariableDeclarator", "start": 769, - "end": 824, + "end": 845, "loc": { "start": { "line": 30, @@ -1689,7 +1689,7 @@ }, "end": { "line": 30, - "column": 73 + "column": 94 } }, "id": { @@ -1712,7 +1712,7 @@ "init": { "type": "ConditionalExpression", "start": 776, - "end": 824, + "end": 845, "loc": { "start": { "line": 30, @@ -1720,13 +1720,13 @@ }, "end": { "line": 30, - "column": 73 + "column": 94 } }, "test": { - "type": "Identifier", + "type": "LogicalExpression", "start": 776, - "end": 786, + "end": 807, "loc": { "start": { "line": 30, @@ -1734,52 +1734,118 @@ }, "end": { "line": 30, - "column": 35 + "column": 56 + } + }, + "left": { + "type": "Identifier", + "start": 776, + "end": 786, + "loc": { + "start": { + "line": 30, + "column": 25 + }, + "end": { + "line": 30, + "column": 35 + }, + "identifierName": "pickResult" }, - "identifierName": "pickResult" + "name": "pickResult" }, - "name": "pickResult" + "operator": "&&", + "right": { + "type": "MemberExpression", + "start": 790, + "end": 807, + "loc": { + "start": { + "line": 30, + "column": 39 + }, + "end": { + "line": 30, + "column": 56 + } + }, + "object": { + "type": "Identifier", + "start": 790, + "end": 800, + "loc": { + "start": { + "line": 30, + "column": 39 + }, + "end": { + "line": 30, + "column": 49 + }, + "identifierName": "pickResult" + }, + "name": "pickResult" + }, + "property": { + "type": "Identifier", + "start": 801, + "end": 807, + "loc": { + "start": { + "line": 30, + "column": 50 + }, + "end": { + "line": 30, + "column": 56 + }, + "identifierName": "entity" + }, + "name": "entity" + }, + "computed": false + } }, "consequent": { "type": "MemberExpression", - "start": 789, - "end": 811, + "start": 810, + "end": 832, "loc": { "start": { "line": 30, - "column": 38 + "column": 59 }, "end": { "line": 30, - "column": 60 + "column": 81 } }, "object": { "type": "MemberExpression", - "start": 789, - "end": 806, + "start": 810, + "end": 827, "loc": { "start": { "line": 30, - "column": 38 + "column": 59 }, "end": { "line": 30, - "column": 55 + "column": 76 } }, "object": { "type": "Identifier", - "start": 789, - "end": 799, + "start": 810, + "end": 820, "loc": { "start": { "line": 30, - "column": 38 + "column": 59 }, "end": { "line": 30, - "column": 48 + "column": 69 }, "identifierName": "pickResult" }, @@ -1787,16 +1853,16 @@ }, "property": { "type": "Identifier", - "start": 800, - "end": 806, + "start": 821, + "end": 827, "loc": { "start": { "line": 30, - "column": 49 + "column": 70 }, "end": { "line": 30, - "column": 55 + "column": 76 }, "identifierName": "entity" }, @@ -1806,16 +1872,16 @@ }, "property": { "type": "Identifier", - "start": 807, - "end": 811, + "start": 828, + "end": 832, "loc": { "start": { "line": 30, - "column": 56 + "column": 77 }, "end": { "line": 30, - "column": 60 + "column": 81 }, "identifierName": "aabb" }, @@ -1825,30 +1891,30 @@ }, "alternate": { "type": "MemberExpression", - "start": 814, - "end": 824, + "start": 835, + "end": 845, "loc": { "start": { "line": 30, - "column": 63 + "column": 84 }, "end": { "line": 30, - "column": 73 + "column": 94 } }, "object": { "type": "Identifier", - "start": 814, - "end": 819, + "start": 835, + "end": 840, "loc": { "start": { "line": 30, - "column": 63 + "column": 84 }, "end": { "line": 30, - "column": 68 + "column": 89 }, "identifierName": "scene" }, @@ -1856,16 +1922,16 @@ }, "property": { "type": "Identifier", - "start": 820, - "end": 824, + "start": 841, + "end": 845, "loc": { "start": { "line": 30, - "column": 69 + "column": 90 }, "end": { "line": 30, - "column": 73 + "column": 94 }, "identifierName": "aabb" }, @@ -1880,8 +1946,8 @@ }, { "type": "IfStatement", - "start": 838, - "end": 1490, + "start": 859, + "end": 1511, "loc": { "start": { "line": 31, @@ -1894,8 +1960,8 @@ }, "test": { "type": "Identifier", - "start": 842, - "end": 845, + "start": 863, + "end": 866, "loc": { "start": { "line": 31, @@ -1911,8 +1977,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 847, - "end": 1332, + "start": 868, + "end": 1353, "loc": { "start": { "line": 31, @@ -1926,8 +1992,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 918, - "end": 946, + "start": 939, + "end": 967, "loc": { "start": { "line": 32, @@ -1941,8 +2007,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 924, - "end": 945, + "start": 945, + "end": 966, "loc": { "start": { "line": 32, @@ -1955,8 +2021,8 @@ }, "id": { "type": "Identifier", - "start": 924, - "end": 930, + "start": 945, + "end": 951, "loc": { "start": { "line": 32, @@ -1973,8 +2039,8 @@ }, "init": { "type": "MemberExpression", - "start": 933, - "end": 945, + "start": 954, + "end": 966, "loc": { "start": { "line": 32, @@ -1987,8 +2053,8 @@ }, "object": { "type": "Identifier", - "start": 933, - "end": 938, + "start": 954, + "end": 959, "loc": { "start": { "line": 32, @@ -2004,8 +2070,8 @@ }, "property": { "type": "Identifier", - "start": 939, - "end": 945, + "start": 960, + "end": 966, "loc": { "start": { "line": 32, @@ -2029,8 +2095,8 @@ { "type": "CommentLine", "value": " Fly to look at point, don't change eye->look dist", - "start": 849, - "end": 901, + "start": 870, + "end": 922, "loc": { "start": { "line": 31, @@ -2046,8 +2112,8 @@ }, { "type": "VariableDeclaration", - "start": 963, - "end": 1018, + "start": 984, + "end": 1039, "loc": { "start": { "line": 33, @@ -2061,8 +2127,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 969, - "end": 1017, + "start": 990, + "end": 1038, "loc": { "start": { "line": 33, @@ -2075,8 +2141,8 @@ }, "id": { "type": "Identifier", - "start": 969, - "end": 973, + "start": 990, + "end": 994, "loc": { "start": { "line": 33, @@ -2092,8 +2158,8 @@ }, "init": { "type": "CallExpression", - "start": 976, - "end": 1017, + "start": 997, + "end": 1038, "loc": { "start": { "line": 33, @@ -2106,8 +2172,8 @@ }, "callee": { "type": "MemberExpression", - "start": 976, - "end": 988, + "start": 997, + "end": 1009, "loc": { "start": { "line": 33, @@ -2120,8 +2186,8 @@ }, "object": { "type": "Identifier", - "start": 976, - "end": 980, + "start": 997, + "end": 1001, "loc": { "start": { "line": 33, @@ -2137,8 +2203,8 @@ }, "property": { "type": "Identifier", - "start": 981, - "end": 988, + "start": 1002, + "end": 1009, "loc": { "start": { "line": 33, @@ -2157,8 +2223,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 989, - "end": 999, + "start": 1010, + "end": 1020, "loc": { "start": { "line": 33, @@ -2171,8 +2237,8 @@ }, "object": { "type": "Identifier", - "start": 989, - "end": 995, + "start": 1010, + "end": 1016, "loc": { "start": { "line": 33, @@ -2188,8 +2254,8 @@ }, "property": { "type": "Identifier", - "start": 996, - "end": 999, + "start": 1017, + "end": 1020, "loc": { "start": { "line": 33, @@ -2207,8 +2273,8 @@ }, { "type": "MemberExpression", - "start": 1001, - "end": 1012, + "start": 1022, + "end": 1033, "loc": { "start": { "line": 33, @@ -2221,8 +2287,8 @@ }, "object": { "type": "Identifier", - "start": 1001, - "end": 1007, + "start": 1022, + "end": 1028, "loc": { "start": { "line": 33, @@ -2238,8 +2304,8 @@ }, "property": { "type": "Identifier", - "start": 1008, - "end": 1012, + "start": 1029, + "end": 1033, "loc": { "start": { "line": 33, @@ -2257,8 +2323,8 @@ }, { "type": "ArrayExpression", - "start": 1014, - "end": 1016, + "start": 1035, + "end": 1037, "loc": { "start": { "line": 33, @@ -2279,8 +2345,8 @@ }, { "type": "ExpressionStatement", - "start": 1035, - "end": 1254, + "start": 1056, + "end": 1275, "loc": { "start": { "line": 34, @@ -2293,8 +2359,8 @@ }, "expression": { "type": "CallExpression", - "start": 1035, - "end": 1253, + "start": 1056, + "end": 1274, "loc": { "start": { "line": 34, @@ -2307,8 +2373,8 @@ }, "callee": { "type": "MemberExpression", - "start": 1035, - "end": 1065, + "start": 1056, + "end": 1086, "loc": { "start": { "line": 34, @@ -2321,8 +2387,8 @@ }, "object": { "type": "MemberExpression", - "start": 1035, - "end": 1059, + "start": 1056, + "end": 1080, "loc": { "start": { "line": 34, @@ -2335,8 +2401,8 @@ }, "object": { "type": "Identifier", - "start": 1035, - "end": 1046, + "start": 1056, + "end": 1067, "loc": { "start": { "line": 34, @@ -2352,8 +2418,8 @@ }, "property": { "type": "Identifier", - "start": 1047, - "end": 1059, + "start": 1068, + "end": 1080, "loc": { "start": { "line": 34, @@ -2371,8 +2437,8 @@ }, "property": { "type": "Identifier", - "start": 1060, - "end": 1065, + "start": 1081, + "end": 1086, "loc": { "start": { "line": 34, @@ -2391,8 +2457,8 @@ "arguments": [ { "type": "ObjectExpression", - "start": 1066, - "end": 1252, + "start": 1087, + "end": 1273, "loc": { "start": { "line": 34, @@ -2406,8 +2472,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 1224, - "end": 1234, + "start": 1245, + "end": 1255, "loc": { "start": { "line": 38, @@ -2423,8 +2489,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 1224, - "end": 1228, + "start": 1245, + "end": 1249, "loc": { "start": { "line": 38, @@ -2441,8 +2507,8 @@ }, "value": { "type": "Identifier", - "start": 1230, - "end": 1234, + "start": 1251, + "end": 1255, "loc": { "start": { "line": 38, @@ -2460,8 +2526,8 @@ { "type": "CommentLine", "value": " look: pos,", - "start": 1088, - "end": 1101, + "start": 1109, + "end": 1122, "loc": { "start": { "line": 35, @@ -2476,8 +2542,8 @@ { "type": "CommentLine", "value": " eye: xeokit.math.addVec3(pos, diff, []),", - "start": 1122, - "end": 1165, + "start": 1143, + "end": 1186, "loc": { "start": { "line": 36, @@ -2492,8 +2558,8 @@ { "type": "CommentLine", "value": " up: camera.up,", - "start": 1186, - "end": 1203, + "start": 1207, + "end": 1224, "loc": { "start": { "line": 37, @@ -2515,8 +2581,8 @@ { "type": "CommentLine", "value": " TODO: Option to back off to fit AABB in view", - "start": 1271, - "end": 1318, + "start": 1292, + "end": 1339, "loc": { "start": { "line": 40, @@ -2535,8 +2601,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 1338, - "end": 1490, + "start": 1359, + "end": 1511, "loc": { "start": { "line": 41, @@ -2550,8 +2616,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 1393, - "end": 1476, + "start": 1414, + "end": 1497, "loc": { "start": { "line": 42, @@ -2564,8 +2630,8 @@ }, "expression": { "type": "CallExpression", - "start": 1393, - "end": 1475, + "start": 1414, + "end": 1496, "loc": { "start": { "line": 42, @@ -2578,8 +2644,8 @@ }, "callee": { "type": "MemberExpression", - "start": 1393, - "end": 1423, + "start": 1414, + "end": 1444, "loc": { "start": { "line": 42, @@ -2592,8 +2658,8 @@ }, "object": { "type": "MemberExpression", - "start": 1393, - "end": 1417, + "start": 1414, + "end": 1438, "loc": { "start": { "line": 42, @@ -2606,8 +2672,8 @@ }, "object": { "type": "Identifier", - "start": 1393, - "end": 1404, + "start": 1414, + "end": 1425, "loc": { "start": { "line": 42, @@ -2624,8 +2690,8 @@ }, "property": { "type": "Identifier", - "start": 1405, - "end": 1417, + "start": 1426, + "end": 1438, "loc": { "start": { "line": 42, @@ -2644,8 +2710,8 @@ }, "property": { "type": "Identifier", - "start": 1418, - "end": 1423, + "start": 1439, + "end": 1444, "loc": { "start": { "line": 42, @@ -2665,8 +2731,8 @@ "arguments": [ { "type": "ObjectExpression", - "start": 1424, - "end": 1474, + "start": 1445, + "end": 1495, "loc": { "start": { "line": 42, @@ -2680,8 +2746,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 1446, - "end": 1456, + "start": 1467, + "end": 1477, "loc": { "start": { "line": 43, @@ -2697,8 +2763,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 1446, - "end": 1450, + "start": 1467, + "end": 1471, "loc": { "start": { "line": 43, @@ -2714,8 +2780,8 @@ }, "value": { "type": "Identifier", - "start": 1452, - "end": 1456, + "start": 1473, + "end": 1477, "loc": { "start": { "line": 43, @@ -2739,8 +2805,8 @@ { "type": "CommentLine", "value": " Fly to fit target boundary in view", - "start": 1339, - "end": 1376, + "start": 1360, + "end": 1397, "loc": { "start": { "line": 41, @@ -2768,8 +2834,8 @@ }, { "type": "ExpressionStatement", - "start": 1511, - "end": 3978, + "start": 1532, + "end": 3999, "loc": { "start": { "line": 48, @@ -2782,8 +2848,8 @@ }, "expression": { "type": "CallExpression", - "start": 1511, - "end": 3977, + "start": 1532, + "end": 3998, "loc": { "start": { "line": 48, @@ -2796,8 +2862,8 @@ }, "callee": { "type": "MemberExpression", - "start": 1511, - "end": 1534, + "start": 1532, + "end": 1555, "loc": { "start": { "line": 48, @@ -2810,8 +2876,8 @@ }, "object": { "type": "Identifier", - "start": 1511, - "end": 1517, + "start": 1532, + "end": 1538, "loc": { "start": { "line": 48, @@ -2827,8 +2893,8 @@ }, "property": { "type": "Identifier", - "start": 1518, - "end": 1534, + "start": 1539, + "end": 1555, "loc": { "start": { "line": 48, @@ -2847,8 +2913,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 1535, - "end": 1546, + "start": 1556, + "end": 1567, "loc": { "start": { "line": 48, @@ -2867,8 +2933,8 @@ }, { "type": "AssignmentExpression", - "start": 1548, - "end": 3976, + "start": 1569, + "end": 3997, "loc": { "start": { "line": 48, @@ -2882,8 +2948,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 1548, - "end": 1576, + "start": 1569, + "end": 1597, "loc": { "start": { "line": 48, @@ -2896,8 +2962,8 @@ }, "object": { "type": "ThisExpression", - "start": 1548, - "end": 1552, + "start": 1569, + "end": 1573, "loc": { "start": { "line": 48, @@ -2911,8 +2977,8 @@ }, "property": { "type": "Identifier", - "start": 1553, - "end": 1576, + "start": 1574, + "end": 1597, "loc": { "start": { "line": 48, @@ -2930,8 +2996,8 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 1579, - "end": 3976, + "start": 1600, + "end": 3997, "loc": { "start": { "line": 48, @@ -2949,8 +3015,8 @@ "params": [ { "type": "Identifier", - "start": 1580, - "end": 1581, + "start": 1601, + "end": 1602, "loc": { "start": { "line": 48, @@ -2967,8 +3033,8 @@ ], "body": { "type": "BlockStatement", - "start": 1586, - "end": 3976, + "start": 1607, + "end": 3997, "loc": { "start": { "line": 48, @@ -2982,8 +3048,8 @@ "body": [ { "type": "IfStatement", - "start": 1601, - "end": 1689, + "start": 1622, + "end": 1710, "loc": { "start": { "line": 50, @@ -2996,8 +3062,8 @@ }, "test": { "type": "UnaryExpression", - "start": 1605, - "end": 1648, + "start": 1626, + "end": 1669, "loc": { "start": { "line": 50, @@ -3012,8 +3078,8 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 1607, - "end": 1647, + "start": 1628, + "end": 1668, "loc": { "start": { "line": 50, @@ -3026,8 +3092,8 @@ }, "left": { "type": "MemberExpression", - "start": 1607, - "end": 1621, + "start": 1628, + "end": 1642, "loc": { "start": { "line": 50, @@ -3040,8 +3106,8 @@ }, "object": { "type": "Identifier", - "start": 1607, - "end": 1614, + "start": 1628, + "end": 1635, "loc": { "start": { "line": 50, @@ -3057,8 +3123,8 @@ }, "property": { "type": "Identifier", - "start": 1615, - "end": 1621, + "start": 1636, + "end": 1642, "loc": { "start": { "line": 50, @@ -3077,8 +3143,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 1625, - "end": 1647, + "start": 1646, + "end": 1668, "loc": { "start": { "line": 50, @@ -3091,8 +3157,8 @@ }, "object": { "type": "Identifier", - "start": 1625, - "end": 1632, + "start": 1646, + "end": 1653, "loc": { "start": { "line": 50, @@ -3108,8 +3174,8 @@ }, "property": { "type": "Identifier", - "start": 1633, - "end": 1647, + "start": 1654, + "end": 1668, "loc": { "start": { "line": 50, @@ -3127,7 +3193,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 1606 + "parenStart": 1627 } }, "extra": { @@ -3136,8 +3202,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 1650, - "end": 1689, + "start": 1671, + "end": 1710, "loc": { "start": { "line": 50, @@ -3151,8 +3217,8 @@ "body": [ { "type": "ReturnStatement", - "start": 1668, - "end": 1675, + "start": 1689, + "end": 1696, "loc": { "start": { "line": 51, @@ -3172,8 +3238,8 @@ }, { "type": "IfStatement", - "start": 1703, - "end": 1769, + "start": 1724, + "end": 1790, "loc": { "start": { "line": 54, @@ -3186,8 +3252,8 @@ }, "test": { "type": "LogicalExpression", - "start": 1707, - "end": 1728, + "start": 1728, + "end": 1749, "loc": { "start": { "line": 54, @@ -3200,8 +3266,8 @@ }, "left": { "type": "Identifier", - "start": 1707, - "end": 1715, + "start": 1728, + "end": 1736, "loc": { "start": { "line": 54, @@ -3218,8 +3284,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 1719, - "end": 1728, + "start": 1740, + "end": 1749, "loc": { "start": { "line": 54, @@ -3236,8 +3302,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 1730, - "end": 1769, + "start": 1751, + "end": 1790, "loc": { "start": { "line": 54, @@ -3251,8 +3317,8 @@ "body": [ { "type": "ReturnStatement", - "start": 1748, - "end": 1755, + "start": 1769, + "end": 1776, "loc": { "start": { "line": 55, @@ -3272,8 +3338,8 @@ }, { "type": "VariableDeclaration", - "start": 1783, - "end": 1832, + "start": 1804, + "end": 1853, "loc": { "start": { "line": 58, @@ -3287,8 +3353,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 1789, - "end": 1831, + "start": 1810, + "end": 1852, "loc": { "start": { "line": 58, @@ -3301,8 +3367,8 @@ }, "id": { "type": "Identifier", - "start": 1789, - "end": 1798, + "start": 1810, + "end": 1819, "loc": { "start": { "line": 58, @@ -3318,8 +3384,8 @@ }, "init": { "type": "CallExpression", - "start": 1801, - "end": 1831, + "start": 1822, + "end": 1852, "loc": { "start": { "line": 58, @@ -3332,8 +3398,8 @@ }, "callee": { "type": "MemberExpression", - "start": 1801, - "end": 1822, + "start": 1822, + "end": 1843, "loc": { "start": { "line": 58, @@ -3346,8 +3412,8 @@ }, "object": { "type": "Identifier", - "start": 1801, - "end": 1814, + "start": 1822, + "end": 1835, "loc": { "start": { "line": 58, @@ -3363,8 +3429,8 @@ }, "property": { "type": "Identifier", - "start": 1815, - "end": 1822, + "start": 1836, + "end": 1843, "loc": { "start": { "line": 58, @@ -3383,8 +3449,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 1823, - "end": 1830, + "start": 1844, + "end": 1851, "loc": { "start": { "line": 58, @@ -3409,8 +3475,8 @@ }, { "type": "VariableDeclaration", - "start": 1845, - "end": 1900, + "start": 1866, + "end": 1921, "loc": { "start": { "line": 59, @@ -3424,8 +3490,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 1851, - "end": 1899, + "start": 1872, + "end": 1920, "loc": { "start": { "line": 59, @@ -3438,8 +3504,8 @@ }, "id": { "type": "Identifier", - "start": 1851, - "end": 1863, + "start": 1872, + "end": 1884, "loc": { "start": { "line": 59, @@ -3455,8 +3521,8 @@ }, "init": { "type": "CallExpression", - "start": 1866, - "end": 1899, + "start": 1887, + "end": 1920, "loc": { "start": { "line": 59, @@ -3469,8 +3535,8 @@ }, "callee": { "type": "MemberExpression", - "start": 1866, - "end": 1887, + "start": 1887, + "end": 1908, "loc": { "start": { "line": 59, @@ -3483,8 +3549,8 @@ }, "object": { "type": "Identifier", - "start": 1866, - "end": 1879, + "start": 1887, + "end": 1900, "loc": { "start": { "line": 59, @@ -3500,8 +3566,8 @@ }, "property": { "type": "Identifier", - "start": 1880, - "end": 1887, + "start": 1901, + "end": 1908, "loc": { "start": { "line": 59, @@ -3520,8 +3586,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 1888, - "end": 1898, + "start": 1909, + "end": 1919, "loc": { "start": { "line": 59, @@ -3546,8 +3612,8 @@ }, { "type": "VariableDeclaration", - "start": 1913, - "end": 1968, + "start": 1934, + "end": 1989, "loc": { "start": { "line": 60, @@ -3561,8 +3627,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 1919, - "end": 1967, + "start": 1940, + "end": 1988, "loc": { "start": { "line": 60, @@ -3575,8 +3641,8 @@ }, "id": { "type": "Identifier", - "start": 1919, - "end": 1931, + "start": 1940, + "end": 1952, "loc": { "start": { "line": 60, @@ -3592,8 +3658,8 @@ }, "init": { "type": "CallExpression", - "start": 1934, - "end": 1967, + "start": 1955, + "end": 1988, "loc": { "start": { "line": 60, @@ -3606,8 +3672,8 @@ }, "callee": { "type": "MemberExpression", - "start": 1934, - "end": 1955, + "start": 1955, + "end": 1976, "loc": { "start": { "line": 60, @@ -3620,8 +3686,8 @@ }, "object": { "type": "Identifier", - "start": 1934, - "end": 1947, + "start": 1955, + "end": 1968, "loc": { "start": { "line": 60, @@ -3637,8 +3703,8 @@ }, "property": { "type": "Identifier", - "start": 1948, - "end": 1955, + "start": 1969, + "end": 1976, "loc": { "start": { "line": 60, @@ -3657,8 +3723,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 1956, - "end": 1966, + "start": 1977, + "end": 1987, "loc": { "start": { "line": 60, @@ -3683,8 +3749,8 @@ }, { "type": "VariableDeclaration", - "start": 1981, - "end": 2044, + "start": 2002, + "end": 2065, "loc": { "start": { "line": 61, @@ -3698,8 +3764,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 1987, - "end": 2043, + "start": 2008, + "end": 2064, "loc": { "start": { "line": 61, @@ -3712,8 +3778,8 @@ }, "id": { "type": "Identifier", - "start": 1987, - "end": 2003, + "start": 2008, + "end": 2024, "loc": { "start": { "line": 61, @@ -3729,8 +3795,8 @@ }, "init": { "type": "CallExpression", - "start": 2006, - "end": 2043, + "start": 2027, + "end": 2064, "loc": { "start": { "line": 61, @@ -3743,8 +3809,8 @@ }, "callee": { "type": "MemberExpression", - "start": 2006, - "end": 2027, + "start": 2027, + "end": 2048, "loc": { "start": { "line": 61, @@ -3757,8 +3823,8 @@ }, "object": { "type": "Identifier", - "start": 2006, - "end": 2019, + "start": 2027, + "end": 2040, "loc": { "start": { "line": 61, @@ -3774,8 +3840,8 @@ }, "property": { "type": "Identifier", - "start": 2020, - "end": 2027, + "start": 2041, + "end": 2048, "loc": { "start": { "line": 61, @@ -3794,8 +3860,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 2028, - "end": 2042, + "start": 2049, + "end": 2063, "loc": { "start": { "line": 61, @@ -3820,8 +3886,8 @@ }, { "type": "IfStatement", - "start": 2058, - "end": 3966, + "start": 2079, + "end": 3987, "loc": { "start": { "line": 63, @@ -3834,8 +3900,8 @@ }, "test": { "type": "LogicalExpression", - "start": 2062, - "end": 2123, + "start": 2083, + "end": 2144, "loc": { "start": { "line": 63, @@ -3848,8 +3914,8 @@ }, "left": { "type": "LogicalExpression", - "start": 2062, - "end": 2103, + "start": 2083, + "end": 2124, "loc": { "start": { "line": 63, @@ -3862,8 +3928,8 @@ }, "left": { "type": "LogicalExpression", - "start": 2062, - "end": 2087, + "start": 2083, + "end": 2108, "loc": { "start": { "line": 63, @@ -3876,8 +3942,8 @@ }, "left": { "type": "Identifier", - "start": 2062, - "end": 2071, + "start": 2083, + "end": 2092, "loc": { "start": { "line": 63, @@ -3894,8 +3960,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 2075, - "end": 2087, + "start": 2096, + "end": 2108, "loc": { "start": { "line": 63, @@ -3913,8 +3979,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 2091, - "end": 2103, + "start": 2112, + "end": 2124, "loc": { "start": { "line": 63, @@ -3932,8 +3998,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 2107, - "end": 2123, + "start": 2128, + "end": 2144, "loc": { "start": { "line": 63, @@ -3950,8 +4016,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 2125, - "end": 3966, + "start": 2146, + "end": 3987, "loc": { "start": { "line": 63, @@ -3965,8 +4031,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 2144, - "end": 2199, + "start": 2165, + "end": 2220, "loc": { "start": { "line": 65, @@ -3979,8 +4045,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 2144, - "end": 2198, + "start": 2165, + "end": 2219, "loc": { "start": { "line": 65, @@ -3994,8 +4060,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 2144, - "end": 2172, + "start": 2165, + "end": 2193, "loc": { "start": { "line": 65, @@ -4008,8 +4074,8 @@ }, "object": { "type": "Identifier", - "start": 2144, - "end": 2158, + "start": 2165, + "end": 2179, "loc": { "start": { "line": 65, @@ -4025,8 +4091,8 @@ }, "property": { "type": "Identifier", - "start": 2159, - "end": 2172, + "start": 2180, + "end": 2193, "loc": { "start": { "line": 65, @@ -4044,8 +4110,8 @@ }, "right": { "type": "MemberExpression", - "start": 2175, - "end": 2198, + "start": 2196, + "end": 2219, "loc": { "start": { "line": 65, @@ -4058,8 +4124,8 @@ }, "object": { "type": "Identifier", - "start": 2175, - "end": 2181, + "start": 2196, + "end": 2202, "loc": { "start": { "line": 65, @@ -4075,8 +4141,8 @@ }, "property": { "type": "Identifier", - "start": 2182, - "end": 2198, + "start": 2203, + "end": 2219, "loc": { "start": { "line": 65, @@ -4096,8 +4162,8 @@ }, { "type": "ExpressionStatement", - "start": 2216, - "end": 2257, + "start": 2237, + "end": 2278, "loc": { "start": { "line": 66, @@ -4110,8 +4176,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 2216, - "end": 2256, + "start": 2237, + "end": 2277, "loc": { "start": { "line": 66, @@ -4125,8 +4191,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 2216, - "end": 2249, + "start": 2237, + "end": 2270, "loc": { "start": { "line": 66, @@ -4139,8 +4205,8 @@ }, "object": { "type": "Identifier", - "start": 2216, - "end": 2230, + "start": 2237, + "end": 2251, "loc": { "start": { "line": 66, @@ -4156,8 +4222,8 @@ }, "property": { "type": "Identifier", - "start": 2231, - "end": 2249, + "start": 2252, + "end": 2270, "loc": { "start": { "line": 66, @@ -4175,8 +4241,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 2252, - "end": 2256, + "start": 2273, + "end": 2277, "loc": { "start": { "line": 66, @@ -4193,8 +4259,8 @@ }, { "type": "ExpressionStatement", - "start": 2274, - "end": 2328, + "start": 2295, + "end": 2349, "loc": { "start": { "line": 67, @@ -4207,8 +4273,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 2274, - "end": 2327, + "start": 2295, + "end": 2348, "loc": { "start": { "line": 67, @@ -4222,8 +4288,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 2274, - "end": 2308, + "start": 2295, + "end": 2329, "loc": { "start": { "line": 67, @@ -4236,8 +4302,8 @@ }, "object": { "type": "Identifier", - "start": 2274, - "end": 2288, + "start": 2295, + "end": 2309, "loc": { "start": { "line": 67, @@ -4253,8 +4319,8 @@ }, "property": { "type": "Identifier", - "start": 2289, - "end": 2308, + "start": 2310, + "end": 2329, "loc": { "start": { "line": 67, @@ -4272,8 +4338,8 @@ }, "right": { "type": "Identifier", - "start": 2311, - "end": 2327, + "start": 2332, + "end": 2348, "loc": { "start": { "line": 67, @@ -4291,8 +4357,8 @@ }, { "type": "ExpressionStatement", - "start": 2346, - "end": 2370, + "start": 2367, + "end": 2391, "loc": { "start": { "line": 69, @@ -4305,8 +4371,8 @@ }, "expression": { "type": "CallExpression", - "start": 2346, - "end": 2369, + "start": 2367, + "end": 2390, "loc": { "start": { "line": 69, @@ -4319,8 +4385,8 @@ }, "callee": { "type": "MemberExpression", - "start": 2346, - "end": 2367, + "start": 2367, + "end": 2388, "loc": { "start": { "line": 69, @@ -4333,8 +4399,8 @@ }, "object": { "type": "Identifier", - "start": 2346, - "end": 2360, + "start": 2367, + "end": 2381, "loc": { "start": { "line": 69, @@ -4350,8 +4416,8 @@ }, "property": { "type": "Identifier", - "start": 2361, - "end": 2367, + "start": 2382, + "end": 2388, "loc": { "start": { "line": 69, @@ -4372,8 +4438,8 @@ }, { "type": "IfStatement", - "start": 2388, - "end": 3952, + "start": 2409, + "end": 3973, "loc": { "start": { "line": 71, @@ -4386,8 +4452,8 @@ }, "test": { "type": "MemberExpression", - "start": 2392, - "end": 2417, + "start": 2413, + "end": 2438, "loc": { "start": { "line": 71, @@ -4400,8 +4466,8 @@ }, "object": { "type": "Identifier", - "start": 2392, - "end": 2406, + "start": 2413, + "end": 2427, "loc": { "start": { "line": 71, @@ -4417,8 +4483,8 @@ }, "property": { "type": "Identifier", - "start": 2407, - "end": 2417, + "start": 2428, + "end": 2438, "loc": { "start": { "line": 71, @@ -4436,8 +4502,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 2419, - "end": 3404, + "start": 2440, + "end": 3425, "loc": { "start": { "line": 71, @@ -4451,8 +4517,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 2442, - "end": 2501, + "start": 2463, + "end": 2522, "loc": { "start": { "line": 73, @@ -4466,8 +4532,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 2448, - "end": 2500, + "start": 2469, + "end": 2521, "loc": { "start": { "line": 73, @@ -4480,8 +4546,8 @@ }, "id": { "type": "Identifier", - "start": 2448, - "end": 2462, + "start": 2469, + "end": 2483, "loc": { "start": { "line": 73, @@ -4497,8 +4563,8 @@ }, "init": { "type": "MemberExpression", - "start": 2465, - "end": 2500, + "start": 2486, + "end": 2521, "loc": { "start": { "line": 73, @@ -4511,8 +4577,8 @@ }, "object": { "type": "MemberExpression", - "start": 2465, - "end": 2497, + "start": 2486, + "end": 2518, "loc": { "start": { "line": 73, @@ -4525,8 +4591,8 @@ }, "object": { "type": "MemberExpression", - "start": 2465, - "end": 2490, + "start": 2486, + "end": 2511, "loc": { "start": { "line": 73, @@ -4539,8 +4605,8 @@ }, "object": { "type": "Identifier", - "start": 2465, - "end": 2479, + "start": 2486, + "end": 2500, "loc": { "start": { "line": 73, @@ -4556,8 +4622,8 @@ }, "property": { "type": "Identifier", - "start": 2480, - "end": 2490, + "start": 2501, + "end": 2511, "loc": { "start": { "line": 73, @@ -4575,8 +4641,8 @@ }, "property": { "type": "Identifier", - "start": 2491, - "end": 2497, + "start": 2512, + "end": 2518, "loc": { "start": { "line": 73, @@ -4594,8 +4660,8 @@ }, "property": { "type": "Identifier", - "start": 2498, - "end": 2500, + "start": 2519, + "end": 2521, "loc": { "start": { "line": 73, @@ -4617,8 +4683,8 @@ }, { "type": "IfStatement", - "start": 2523, - "end": 3087, + "start": 2544, + "end": 3108, "loc": { "start": { "line": 75, @@ -4631,8 +4697,8 @@ }, "test": { "type": "BinaryExpression", - "start": 2527, - "end": 2570, + "start": 2548, + "end": 2591, "loc": { "start": { "line": 75, @@ -4645,8 +4711,8 @@ }, "left": { "type": "MemberExpression", - "start": 2527, - "end": 2551, + "start": 2548, + "end": 2572, "loc": { "start": { "line": 75, @@ -4659,8 +4725,8 @@ }, "object": { "type": "ThisExpression", - "start": 2527, - "end": 2531, + "start": 2548, + "end": 2552, "loc": { "start": { "line": 75, @@ -4674,8 +4740,8 @@ }, "property": { "type": "Identifier", - "start": 2532, - "end": 2551, + "start": 2553, + "end": 2572, "loc": { "start": { "line": 75, @@ -4694,8 +4760,8 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 2556, - "end": 2570, + "start": 2577, + "end": 2591, "loc": { "start": { "line": 75, @@ -4712,8 +4778,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 2572, - "end": 3087, + "start": 2593, + "end": 3108, "loc": { "start": { "line": 75, @@ -4727,8 +4793,8 @@ "body": [ { "type": "IfStatement", - "start": 2599, - "end": 2875, + "start": 2620, + "end": 2896, "loc": { "start": { "line": 77, @@ -4741,8 +4807,8 @@ }, "test": { "type": "BinaryExpression", - "start": 2603, - "end": 2641, + "start": 2624, + "end": 2662, "loc": { "start": { "line": 77, @@ -4755,8 +4821,8 @@ }, "left": { "type": "MemberExpression", - "start": 2603, - "end": 2627, + "start": 2624, + "end": 2648, "loc": { "start": { "line": 77, @@ -4769,8 +4835,8 @@ }, "object": { "type": "ThisExpression", - "start": 2603, - "end": 2607, + "start": 2624, + "end": 2628, "loc": { "start": { "line": 77, @@ -4784,8 +4850,8 @@ }, "property": { "type": "Identifier", - "start": 2608, - "end": 2627, + "start": 2629, + "end": 2648, "loc": { "start": { "line": 77, @@ -4804,8 +4870,8 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 2632, - "end": 2641, + "start": 2653, + "end": 2662, "loc": { "start": { "line": 77, @@ -4822,8 +4888,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 2643, - "end": 2875, + "start": 2664, + "end": 2896, "loc": { "start": { "line": 77, @@ -4837,8 +4903,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 2674, - "end": 2849, + "start": 2695, + "end": 2870, "loc": { "start": { "line": 79, @@ -4851,8 +4917,8 @@ }, "expression": { "type": "CallExpression", - "start": 2674, - "end": 2848, + "start": 2695, + "end": 2869, "loc": { "start": { "line": 79, @@ -4865,8 +4931,8 @@ }, "callee": { "type": "MemberExpression", - "start": 2674, - "end": 2692, + "start": 2695, + "end": 2713, "loc": { "start": { "line": 79, @@ -4879,8 +4945,8 @@ }, "object": { "type": "Identifier", - "start": 2674, - "end": 2687, + "start": 2695, + "end": 2708, "loc": { "start": { "line": 79, @@ -4896,8 +4962,8 @@ }, "property": { "type": "Identifier", - "start": 2688, - "end": 2692, + "start": 2709, + "end": 2713, "loc": { "start": { "line": 79, @@ -4916,8 +4982,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 2693, - "end": 2703, + "start": 2714, + "end": 2724, "loc": { "start": { "line": 79, @@ -4936,8 +5002,8 @@ }, { "type": "ObjectExpression", - "start": 2705, - "end": 2841, + "start": 2726, + "end": 2862, "loc": { "start": { "line": 79, @@ -4951,8 +5017,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 2764, - "end": 2811, + "start": 2785, + "end": 2832, "loc": { "start": { "line": 80, @@ -4968,8 +5034,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 2764, - "end": 2770, + "start": 2785, + "end": 2791, "loc": { "start": { "line": 80, @@ -4986,8 +5052,8 @@ }, "value": { "type": "MemberExpression", - "start": 2772, - "end": 2811, + "start": 2793, + "end": 2832, "loc": { "start": { "line": 80, @@ -5000,8 +5066,8 @@ }, "object": { "type": "MemberExpression", - "start": 2772, - "end": 2785, + "start": 2793, + "end": 2806, "loc": { "start": { "line": 80, @@ -5014,8 +5080,8 @@ }, "object": { "type": "Identifier", - "start": 2772, - "end": 2777, + "start": 2793, + "end": 2798, "loc": { "start": { "line": 80, @@ -5031,8 +5097,8 @@ }, "property": { "type": "Identifier", - "start": 2778, - "end": 2785, + "start": 2799, + "end": 2806, "loc": { "start": { "line": 80, @@ -5050,8 +5116,8 @@ }, "property": { "type": "MemberExpression", - "start": 2786, - "end": 2810, + "start": 2807, + "end": 2831, "loc": { "start": { "line": 80, @@ -5064,8 +5130,8 @@ }, "object": { "type": "ThisExpression", - "start": 2786, - "end": 2790, + "start": 2807, + "end": 2811, "loc": { "start": { "line": 80, @@ -5079,8 +5145,8 @@ }, "property": { "type": "Identifier", - "start": 2791, - "end": 2810, + "start": 2812, + "end": 2831, "loc": { "start": { "line": 80, @@ -5102,8 +5168,8 @@ { "type": "CommentLine", "value": " Hovered off an entity", - "start": 2707, - "end": 2731, + "start": 2728, + "end": 2752, "loc": { "start": { "line": 79, @@ -5121,8 +5187,8 @@ }, { "type": "BooleanLiteral", - "start": 2843, - "end": 2847, + "start": 2864, + "end": 2868, "loc": { "start": { "line": 81, @@ -5145,8 +5211,8 @@ }, { "type": "ExpressionStatement", - "start": 2901, - "end": 2967, + "start": 2922, + "end": 2988, "loc": { "start": { "line": 84, @@ -5159,8 +5225,8 @@ }, "expression": { "type": "CallExpression", - "start": 2901, - "end": 2966, + "start": 2922, + "end": 2987, "loc": { "start": { "line": 84, @@ -5173,8 +5239,8 @@ }, "callee": { "type": "MemberExpression", - "start": 2901, - "end": 2919, + "start": 2922, + "end": 2940, "loc": { "start": { "line": 84, @@ -5187,8 +5253,8 @@ }, "object": { "type": "Identifier", - "start": 2901, - "end": 2914, + "start": 2922, + "end": 2935, "loc": { "start": { "line": 84, @@ -5204,8 +5270,8 @@ }, "property": { "type": "Identifier", - "start": 2915, - "end": 2919, + "start": 2936, + "end": 2940, "loc": { "start": { "line": 84, @@ -5224,8 +5290,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 2920, - "end": 2932, + "start": 2941, + "end": 2953, "loc": { "start": { "line": 84, @@ -5244,8 +5310,8 @@ }, { "type": "MemberExpression", - "start": 2934, - "end": 2959, + "start": 2955, + "end": 2980, "loc": { "start": { "line": 84, @@ -5258,8 +5324,8 @@ }, "object": { "type": "Identifier", - "start": 2934, - "end": 2948, + "start": 2955, + "end": 2969, "loc": { "start": { "line": 84, @@ -5275,8 +5341,8 @@ }, "property": { "type": "Identifier", - "start": 2949, - "end": 2959, + "start": 2970, + "end": 2980, "loc": { "start": { "line": 84, @@ -5294,8 +5360,8 @@ }, { "type": "BooleanLiteral", - "start": 2961, - "end": 2965, + "start": 2982, + "end": 2986, "loc": { "start": { "line": 84, @@ -5314,8 +5380,8 @@ { "type": "CommentLine", "value": " Hovering over a new entity", - "start": 2968, - "end": 2997, + "start": 2989, + "end": 3018, "loc": { "start": { "line": 84, @@ -5331,8 +5397,8 @@ }, { "type": "ExpressionStatement", - "start": 3023, - "end": 3065, + "start": 3044, + "end": 3086, "loc": { "start": { "line": 86, @@ -5345,8 +5411,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 3023, - "end": 3064, + "start": 3044, + "end": 3085, "loc": { "start": { "line": 86, @@ -5360,8 +5426,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 3023, - "end": 3047, + "start": 3044, + "end": 3068, "loc": { "start": { "line": 86, @@ -5374,8 +5440,8 @@ }, "object": { "type": "ThisExpression", - "start": 3023, - "end": 3027, + "start": 3044, + "end": 3048, "loc": { "start": { "line": 86, @@ -5390,8 +5456,8 @@ }, "property": { "type": "Identifier", - "start": 3028, - "end": 3047, + "start": 3049, + "end": 3068, "loc": { "start": { "line": 86, @@ -5410,8 +5476,8 @@ }, "right": { "type": "Identifier", - "start": 3050, - "end": 3064, + "start": 3071, + "end": 3085, "loc": { "start": { "line": 86, @@ -5431,8 +5497,8 @@ { "type": "CommentLine", "value": " Hovering over a new entity", - "start": 2968, - "end": 2997, + "start": 2989, + "end": 3018, "loc": { "start": { "line": 84, @@ -5453,8 +5519,8 @@ }, { "type": "ExpressionStatement", - "start": 3109, - "end": 3170, + "start": 3130, + "end": 3191, "loc": { "start": { "line": 89, @@ -5467,8 +5533,8 @@ }, "expression": { "type": "CallExpression", - "start": 3109, - "end": 3169, + "start": 3130, + "end": 3190, "loc": { "start": { "line": 89, @@ -5481,8 +5547,8 @@ }, "callee": { "type": "MemberExpression", - "start": 3109, - "end": 3127, + "start": 3130, + "end": 3148, "loc": { "start": { "line": 89, @@ -5495,8 +5561,8 @@ }, "object": { "type": "Identifier", - "start": 3109, - "end": 3122, + "start": 3130, + "end": 3143, "loc": { "start": { "line": 89, @@ -5512,8 +5578,8 @@ }, "property": { "type": "Identifier", - "start": 3123, - "end": 3127, + "start": 3144, + "end": 3148, "loc": { "start": { "line": 89, @@ -5532,8 +5598,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 3128, - "end": 3135, + "start": 3149, + "end": 3156, "loc": { "start": { "line": 89, @@ -5552,8 +5618,8 @@ }, { "type": "MemberExpression", - "start": 3137, - "end": 3162, + "start": 3158, + "end": 3183, "loc": { "start": { "line": 89, @@ -5566,8 +5632,8 @@ }, "object": { "type": "Identifier", - "start": 3137, - "end": 3151, + "start": 3158, + "end": 3172, "loc": { "start": { "line": 89, @@ -5583,8 +5649,8 @@ }, "property": { "type": "Identifier", - "start": 3152, - "end": 3162, + "start": 3173, + "end": 3183, "loc": { "start": { "line": 89, @@ -5602,8 +5668,8 @@ }, { "type": "BooleanLiteral", - "start": 3164, - "end": 3168, + "start": 3185, + "end": 3189, "loc": { "start": { "line": 89, @@ -5621,8 +5687,8 @@ }, { "type": "IfStatement", - "start": 3192, - "end": 3385, + "start": 3213, + "end": 3406, "loc": { "start": { "line": 91, @@ -5635,8 +5701,8 @@ }, "test": { "type": "MemberExpression", - "start": 3196, - "end": 3230, + "start": 3217, + "end": 3251, "loc": { "start": { "line": 91, @@ -5649,8 +5715,8 @@ }, "object": { "type": "MemberExpression", - "start": 3196, - "end": 3221, + "start": 3217, + "end": 3242, "loc": { "start": { "line": 91, @@ -5663,8 +5729,8 @@ }, "object": { "type": "Identifier", - "start": 3196, - "end": 3210, + "start": 3217, + "end": 3231, "loc": { "start": { "line": 91, @@ -5680,8 +5746,8 @@ }, "property": { "type": "Identifier", - "start": 3211, - "end": 3221, + "start": 3232, + "end": 3242, "loc": { "start": { "line": 91, @@ -5699,8 +5765,8 @@ }, "property": { "type": "Identifier", - "start": 3222, - "end": 3230, + "start": 3243, + "end": 3251, "loc": { "start": { "line": 91, @@ -5718,8 +5784,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 3232, - "end": 3385, + "start": 3253, + "end": 3406, "loc": { "start": { "line": 91, @@ -5733,8 +5799,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 3295, - "end": 3363, + "start": 3316, + "end": 3384, "loc": { "start": { "line": 92, @@ -5747,8 +5813,8 @@ }, "expression": { "type": "CallExpression", - "start": 3295, - "end": 3362, + "start": 3316, + "end": 3383, "loc": { "start": { "line": 92, @@ -5761,8 +5827,8 @@ }, "callee": { "type": "MemberExpression", - "start": 3295, - "end": 3313, + "start": 3316, + "end": 3334, "loc": { "start": { "line": 92, @@ -5775,8 +5841,8 @@ }, "object": { "type": "Identifier", - "start": 3295, - "end": 3308, + "start": 3316, + "end": 3329, "loc": { "start": { "line": 92, @@ -5793,8 +5859,8 @@ }, "property": { "type": "Identifier", - "start": 3309, - "end": 3313, + "start": 3330, + "end": 3334, "loc": { "start": { "line": 92, @@ -5814,8 +5880,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 3314, - "end": 3328, + "start": 3335, + "end": 3349, "loc": { "start": { "line": 92, @@ -5834,8 +5900,8 @@ }, { "type": "MemberExpression", - "start": 3330, - "end": 3355, + "start": 3351, + "end": 3376, "loc": { "start": { "line": 92, @@ -5848,8 +5914,8 @@ }, "object": { "type": "Identifier", - "start": 3330, - "end": 3344, + "start": 3351, + "end": 3365, "loc": { "start": { "line": 92, @@ -5865,8 +5931,8 @@ }, "property": { "type": "Identifier", - "start": 3345, - "end": 3355, + "start": 3366, + "end": 3376, "loc": { "start": { "line": 92, @@ -5884,8 +5950,8 @@ }, { "type": "BooleanLiteral", - "start": 3357, - "end": 3361, + "start": 3378, + "end": 3382, "loc": { "start": { "line": 92, @@ -5905,8 +5971,8 @@ { "type": "CommentLine", "value": " Hovering the surface of an entity", - "start": 3234, - "end": 3270, + "start": 3255, + "end": 3291, "loc": { "start": { "line": 91, @@ -5930,8 +5996,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 3410, - "end": 3952, + "start": 3431, + "end": 3973, "loc": { "start": { "line": 95, @@ -5945,8 +6011,8 @@ "body": [ { "type": "IfStatement", - "start": 3433, - "end": 3756, + "start": 3454, + "end": 3777, "loc": { "start": { "line": 97, @@ -5959,8 +6025,8 @@ }, "test": { "type": "BinaryExpression", - "start": 3437, - "end": 3475, + "start": 3458, + "end": 3496, "loc": { "start": { "line": 97, @@ -5973,8 +6039,8 @@ }, "left": { "type": "MemberExpression", - "start": 3437, - "end": 3461, + "start": 3458, + "end": 3482, "loc": { "start": { "line": 97, @@ -5987,8 +6053,8 @@ }, "object": { "type": "ThisExpression", - "start": 3437, - "end": 3441, + "start": 3458, + "end": 3462, "loc": { "start": { "line": 97, @@ -6002,8 +6068,8 @@ }, "property": { "type": "Identifier", - "start": 3442, - "end": 3461, + "start": 3463, + "end": 3482, "loc": { "start": { "line": 97, @@ -6022,8 +6088,8 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 3466, - "end": 3475, + "start": 3487, + "end": 3496, "loc": { "start": { "line": 97, @@ -6040,8 +6106,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 3477, - "end": 3756, + "start": 3498, + "end": 3777, "loc": { "start": { "line": 97, @@ -6055,8 +6121,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 3504, - "end": 3671, + "start": 3525, + "end": 3692, "loc": { "start": { "line": 99, @@ -6069,8 +6135,8 @@ }, "expression": { "type": "CallExpression", - "start": 3504, - "end": 3670, + "start": 3525, + "end": 3691, "loc": { "start": { "line": 99, @@ -6083,8 +6149,8 @@ }, "callee": { "type": "MemberExpression", - "start": 3504, - "end": 3522, + "start": 3525, + "end": 3543, "loc": { "start": { "line": 99, @@ -6097,8 +6163,8 @@ }, "object": { "type": "Identifier", - "start": 3504, - "end": 3517, + "start": 3525, + "end": 3538, "loc": { "start": { "line": 99, @@ -6114,8 +6180,8 @@ }, "property": { "type": "Identifier", - "start": 3518, - "end": 3522, + "start": 3539, + "end": 3543, "loc": { "start": { "line": 99, @@ -6134,8 +6200,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 3523, - "end": 3533, + "start": 3544, + "end": 3554, "loc": { "start": { "line": 99, @@ -6154,8 +6220,8 @@ }, { "type": "ObjectExpression", - "start": 3535, - "end": 3663, + "start": 3556, + "end": 3684, "loc": { "start": { "line": 99, @@ -6169,8 +6235,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 3590, - "end": 3637, + "start": 3611, + "end": 3658, "loc": { "start": { "line": 100, @@ -6186,8 +6252,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 3590, - "end": 3596, + "start": 3611, + "end": 3617, "loc": { "start": { "line": 100, @@ -6204,8 +6270,8 @@ }, "value": { "type": "MemberExpression", - "start": 3598, - "end": 3637, + "start": 3619, + "end": 3658, "loc": { "start": { "line": 100, @@ -6218,8 +6284,8 @@ }, "object": { "type": "MemberExpression", - "start": 3598, - "end": 3611, + "start": 3619, + "end": 3632, "loc": { "start": { "line": 100, @@ -6232,8 +6298,8 @@ }, "object": { "type": "Identifier", - "start": 3598, - "end": 3603, + "start": 3619, + "end": 3624, "loc": { "start": { "line": 100, @@ -6249,8 +6315,8 @@ }, "property": { "type": "Identifier", - "start": 3604, - "end": 3611, + "start": 3625, + "end": 3632, "loc": { "start": { "line": 100, @@ -6268,8 +6334,8 @@ }, "property": { "type": "MemberExpression", - "start": 3612, - "end": 3636, + "start": 3633, + "end": 3657, "loc": { "start": { "line": 100, @@ -6282,8 +6348,8 @@ }, "object": { "type": "ThisExpression", - "start": 3612, - "end": 3616, + "start": 3633, + "end": 3637, "loc": { "start": { "line": 100, @@ -6297,8 +6363,8 @@ }, "property": { "type": "Identifier", - "start": 3617, - "end": 3636, + "start": 3638, + "end": 3657, "loc": { "start": { "line": 100, @@ -6320,8 +6386,8 @@ { "type": "CommentLine", "value": " Hovered off an entity", - "start": 3537, - "end": 3561, + "start": 3558, + "end": 3582, "loc": { "start": { "line": 99, @@ -6339,8 +6405,8 @@ }, { "type": "BooleanLiteral", - "start": 3665, - "end": 3669, + "start": 3686, + "end": 3690, "loc": { "start": { "line": 101, @@ -6358,8 +6424,8 @@ }, { "type": "ExpressionStatement", - "start": 3697, - "end": 3734, + "start": 3718, + "end": 3755, "loc": { "start": { "line": 103, @@ -6372,8 +6438,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 3697, - "end": 3733, + "start": 3718, + "end": 3754, "loc": { "start": { "line": 103, @@ -6387,8 +6453,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 3697, - "end": 3721, + "start": 3718, + "end": 3742, "loc": { "start": { "line": 103, @@ -6401,8 +6467,8 @@ }, "object": { "type": "ThisExpression", - "start": 3697, - "end": 3701, + "start": 3718, + "end": 3722, "loc": { "start": { "line": 103, @@ -6416,8 +6482,8 @@ }, "property": { "type": "Identifier", - "start": 3702, - "end": 3721, + "start": 3723, + "end": 3742, "loc": { "start": { "line": 103, @@ -6435,8 +6501,8 @@ }, "right": { "type": "Identifier", - "start": 3724, - "end": 3733, + "start": 3745, + "end": 3754, "loc": { "start": { "line": 103, @@ -6459,8 +6525,8 @@ }, { "type": "ExpressionStatement", - "start": 3778, - "end": 3934, + "start": 3799, + "end": 3955, "loc": { "start": { "line": 106, @@ -6473,8 +6539,8 @@ }, "expression": { "type": "CallExpression", - "start": 3778, - "end": 3933, + "start": 3799, + "end": 3954, "loc": { "start": { "line": 106, @@ -6487,8 +6553,8 @@ }, "callee": { "type": "MemberExpression", - "start": 3778, - "end": 3796, + "start": 3799, + "end": 3817, "loc": { "start": { "line": 106, @@ -6501,8 +6567,8 @@ }, "object": { "type": "Identifier", - "start": 3778, - "end": 3791, + "start": 3799, + "end": 3812, "loc": { "start": { "line": 106, @@ -6518,8 +6584,8 @@ }, "property": { "type": "Identifier", - "start": 3792, - "end": 3796, + "start": 3813, + "end": 3817, "loc": { "start": { "line": 106, @@ -6538,8 +6604,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 3797, - "end": 3807, + "start": 3818, + "end": 3828, "loc": { "start": { "line": 106, @@ -6558,8 +6624,8 @@ }, { "type": "ObjectExpression", - "start": 3809, - "end": 3926, + "start": 3830, + "end": 3947, "loc": { "start": { "line": 106, @@ -6573,8 +6639,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 3865, - "end": 3904, + "start": 3886, + "end": 3925, "loc": { "start": { "line": 107, @@ -6590,8 +6656,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 3865, - "end": 3874, + "start": 3886, + "end": 3895, "loc": { "start": { "line": 107, @@ -6608,8 +6674,8 @@ }, "value": { "type": "MemberExpression", - "start": 3876, - "end": 3904, + "start": 3897, + "end": 3925, "loc": { "start": { "line": 107, @@ -6622,8 +6688,8 @@ }, "object": { "type": "Identifier", - "start": 3876, - "end": 3890, + "start": 3897, + "end": 3911, "loc": { "start": { "line": 107, @@ -6639,8 +6705,8 @@ }, "property": { "type": "Identifier", - "start": 3891, - "end": 3904, + "start": 3912, + "end": 3925, "loc": { "start": { "line": 107, @@ -6660,8 +6726,8 @@ { "type": "CommentLine", "value": " Not hovering on any entity", - "start": 3811, - "end": 3840, + "start": 3832, + "end": 3861, "loc": { "start": { "line": 106, @@ -6679,8 +6745,8 @@ }, { "type": "BooleanLiteral", - "start": 3928, - "end": 3932, + "start": 3949, + "end": 3953, "loc": { "start": { "line": 108, @@ -6715,8 +6781,8 @@ }, { "type": "ExpressionStatement", - "start": 3988, - "end": 5715, + "start": 4009, + "end": 5736, "loc": { "start": { "line": 113, @@ -6729,8 +6795,8 @@ }, "expression": { "type": "CallExpression", - "start": 3988, - "end": 5714, + "start": 4009, + "end": 5735, "loc": { "start": { "line": 113, @@ -6743,8 +6809,8 @@ }, "callee": { "type": "MemberExpression", - "start": 3988, - "end": 4011, + "start": 4009, + "end": 4032, "loc": { "start": { "line": 113, @@ -6757,8 +6823,8 @@ }, "object": { "type": "Identifier", - "start": 3988, - "end": 3994, + "start": 4009, + "end": 4015, "loc": { "start": { "line": 113, @@ -6774,8 +6840,8 @@ }, "property": { "type": "Identifier", - "start": 3995, - "end": 4011, + "start": 4016, + "end": 4032, "loc": { "start": { "line": 113, @@ -6794,8 +6860,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 4012, - "end": 4023, + "start": 4033, + "end": 4044, "loc": { "start": { "line": 113, @@ -6814,8 +6880,8 @@ }, { "type": "AssignmentExpression", - "start": 4025, - "end": 5713, + "start": 4046, + "end": 5734, "loc": { "start": { "line": 113, @@ -6829,8 +6895,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 4025, - "end": 4053, + "start": 4046, + "end": 4074, "loc": { "start": { "line": 113, @@ -6843,8 +6909,8 @@ }, "object": { "type": "ThisExpression", - "start": 4025, - "end": 4029, + "start": 4046, + "end": 4050, "loc": { "start": { "line": 113, @@ -6858,8 +6924,8 @@ }, "property": { "type": "Identifier", - "start": 4030, - "end": 4053, + "start": 4051, + "end": 4074, "loc": { "start": { "line": 113, @@ -6877,8 +6943,8 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 4056, - "end": 5713, + "start": 4077, + "end": 5734, "loc": { "start": { "line": 113, @@ -6896,8 +6962,8 @@ "params": [ { "type": "Identifier", - "start": 4057, - "end": 4058, + "start": 4078, + "end": 4079, "loc": { "start": { "line": 113, @@ -6914,8 +6980,8 @@ ], "body": { "type": "BlockStatement", - "start": 4063, - "end": 5713, + "start": 4084, + "end": 5734, "loc": { "start": { "line": 113, @@ -6929,8 +6995,8 @@ "body": [ { "type": "IfStatement", - "start": 4078, - "end": 4145, + "start": 4099, + "end": 4166, "loc": { "start": { "line": 115, @@ -6943,8 +7009,8 @@ }, "test": { "type": "BinaryExpression", - "start": 4082, - "end": 4095, + "start": 4103, + "end": 4116, "loc": { "start": { "line": 115, @@ -6957,8 +7023,8 @@ }, "left": { "type": "MemberExpression", - "start": 4082, - "end": 4089, + "start": 4103, + "end": 4110, "loc": { "start": { "line": 115, @@ -6971,8 +7037,8 @@ }, "object": { "type": "Identifier", - "start": 4082, - "end": 4083, + "start": 4103, + "end": 4104, "loc": { "start": { "line": 115, @@ -6988,8 +7054,8 @@ }, "property": { "type": "Identifier", - "start": 4084, - "end": 4089, + "start": 4105, + "end": 4110, "loc": { "start": { "line": 115, @@ -7008,8 +7074,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 4094, - "end": 4095, + "start": 4115, + "end": 4116, "loc": { "start": { "line": 115, @@ -7029,8 +7095,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 4097, - "end": 4145, + "start": 4118, + "end": 4166, "loc": { "start": { "line": 115, @@ -7044,8 +7110,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 4115, - "end": 4131, + "start": 4136, + "end": 4152, "loc": { "start": { "line": 116, @@ -7058,8 +7124,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4115, - "end": 4130, + "start": 4136, + "end": 4151, "loc": { "start": { "line": 116, @@ -7073,8 +7139,8 @@ "operator": "=", "left": { "type": "Identifier", - "start": 4115, - "end": 4123, + "start": 4136, + "end": 4144, "loc": { "start": { "line": 116, @@ -7090,8 +7156,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 4126, - "end": 4130, + "start": 4147, + "end": 4151, "loc": { "start": { "line": 116, @@ -7113,8 +7179,8 @@ }, { "type": "IfStatement", - "start": 4159, - "end": 4227, + "start": 4180, + "end": 4248, "loc": { "start": { "line": 119, @@ -7127,8 +7193,8 @@ }, "test": { "type": "BinaryExpression", - "start": 4163, - "end": 4176, + "start": 4184, + "end": 4197, "loc": { "start": { "line": 119, @@ -7141,8 +7207,8 @@ }, "left": { "type": "MemberExpression", - "start": 4163, - "end": 4170, + "start": 4184, + "end": 4191, "loc": { "start": { "line": 119, @@ -7155,8 +7221,8 @@ }, "object": { "type": "Identifier", - "start": 4163, - "end": 4164, + "start": 4184, + "end": 4185, "loc": { "start": { "line": 119, @@ -7172,8 +7238,8 @@ }, "property": { "type": "Identifier", - "start": 4165, - "end": 4170, + "start": 4186, + "end": 4191, "loc": { "start": { "line": 119, @@ -7192,8 +7258,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 4175, - "end": 4176, + "start": 4196, + "end": 4197, "loc": { "start": { "line": 119, @@ -7213,8 +7279,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 4178, - "end": 4227, + "start": 4199, + "end": 4248, "loc": { "start": { "line": 119, @@ -7228,8 +7294,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 4196, - "end": 4213, + "start": 4217, + "end": 4234, "loc": { "start": { "line": 120, @@ -7242,8 +7308,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4196, - "end": 4212, + "start": 4217, + "end": 4233, "loc": { "start": { "line": 120, @@ -7257,8 +7323,8 @@ "operator": "=", "left": { "type": "Identifier", - "start": 4196, - "end": 4205, + "start": 4217, + "end": 4226, "loc": { "start": { "line": 120, @@ -7274,8 +7340,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 4208, - "end": 4212, + "start": 4229, + "end": 4233, "loc": { "start": { "line": 120, @@ -7297,8 +7363,8 @@ }, { "type": "VariableDeclaration", - "start": 4241, - "end": 4280, + "start": 4262, + "end": 4301, "loc": { "start": { "line": 123, @@ -7312,8 +7378,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 4247, - "end": 4279, + "start": 4268, + "end": 4300, "loc": { "start": { "line": 123, @@ -7326,8 +7392,8 @@ }, "id": { "type": "Identifier", - "start": 4247, - "end": 4261, + "start": 4268, + "end": 4282, "loc": { "start": { "line": 123, @@ -7343,8 +7409,8 @@ }, "init": { "type": "BinaryExpression", - "start": 4265, - "end": 4278, + "start": 4286, + "end": 4299, "loc": { "start": { "line": 123, @@ -7357,8 +7423,8 @@ }, "left": { "type": "MemberExpression", - "start": 4265, - "end": 4272, + "start": 4286, + "end": 4293, "loc": { "start": { "line": 123, @@ -7371,8 +7437,8 @@ }, "object": { "type": "Identifier", - "start": 4265, - "end": 4266, + "start": 4286, + "end": 4287, "loc": { "start": { "line": 123, @@ -7388,8 +7454,8 @@ }, "property": { "type": "Identifier", - "start": 4267, - "end": 4272, + "start": 4288, + "end": 4293, "loc": { "start": { "line": 123, @@ -7408,8 +7474,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 4277, - "end": 4278, + "start": 4298, + "end": 4299, "loc": { "start": { "line": 123, @@ -7428,7 +7494,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 4264 + "parenStart": 4285 } } } @@ -7437,8 +7503,8 @@ }, { "type": "IfStatement", - "start": 4294, - "end": 4354, + "start": 4315, + "end": 4375, "loc": { "start": { "line": 125, @@ -7451,8 +7517,8 @@ }, "test": { "type": "UnaryExpression", - "start": 4298, - "end": 4313, + "start": 4319, + "end": 4334, "loc": { "start": { "line": 125, @@ -7467,8 +7533,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 4299, - "end": 4313, + "start": 4320, + "end": 4334, "loc": { "start": { "line": 125, @@ -7488,8 +7554,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 4315, - "end": 4354, + "start": 4336, + "end": 4375, "loc": { "start": { "line": 125, @@ -7503,8 +7569,8 @@ "body": [ { "type": "ReturnStatement", - "start": 4333, - "end": 4340, + "start": 4354, + "end": 4361, "loc": { "start": { "line": 126, @@ -7524,8 +7590,8 @@ }, { "type": "IfStatement", - "start": 4368, - "end": 4456, + "start": 4389, + "end": 4477, "loc": { "start": { "line": 129, @@ -7538,8 +7604,8 @@ }, "test": { "type": "UnaryExpression", - "start": 4372, - "end": 4415, + "start": 4393, + "end": 4436, "loc": { "start": { "line": 129, @@ -7554,8 +7620,8 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 4374, - "end": 4414, + "start": 4395, + "end": 4435, "loc": { "start": { "line": 129, @@ -7568,8 +7634,8 @@ }, "left": { "type": "MemberExpression", - "start": 4374, - "end": 4388, + "start": 4395, + "end": 4409, "loc": { "start": { "line": 129, @@ -7582,8 +7648,8 @@ }, "object": { "type": "Identifier", - "start": 4374, - "end": 4381, + "start": 4395, + "end": 4402, "loc": { "start": { "line": 129, @@ -7599,8 +7665,8 @@ }, "property": { "type": "Identifier", - "start": 4382, - "end": 4388, + "start": 4403, + "end": 4409, "loc": { "start": { "line": 129, @@ -7619,8 +7685,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 4392, - "end": 4414, + "start": 4413, + "end": 4435, "loc": { "start": { "line": 129, @@ -7633,8 +7699,8 @@ }, "object": { "type": "Identifier", - "start": 4392, - "end": 4399, + "start": 4413, + "end": 4420, "loc": { "start": { "line": 129, @@ -7650,8 +7716,8 @@ }, "property": { "type": "Identifier", - "start": 4400, - "end": 4414, + "start": 4421, + "end": 4435, "loc": { "start": { "line": 129, @@ -7669,7 +7735,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 4373 + "parenStart": 4394 } }, "extra": { @@ -7678,8 +7744,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 4417, - "end": 4456, + "start": 4438, + "end": 4477, "loc": { "start": { "line": 129, @@ -7693,8 +7759,8 @@ "body": [ { "type": "ReturnStatement", - "start": 4435, - "end": 4442, + "start": 4456, + "end": 4463, "loc": { "start": { "line": 130, @@ -7716,8 +7782,8 @@ { "type": "CommentLine", "value": " Left mouse button down to start pivoting", - "start": 4470, - "end": 4513, + "start": 4491, + "end": 4534, "loc": { "start": { "line": 133, @@ -7733,8 +7799,8 @@ }, { "type": "ExpressionStatement", - "start": 4527, - "end": 4563, + "start": 4548, + "end": 4584, "loc": { "start": { "line": 135, @@ -7747,8 +7813,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4527, - "end": 4562, + "start": 4548, + "end": 4583, "loc": { "start": { "line": 135, @@ -7762,8 +7828,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 4527, - "end": 4550, + "start": 4548, + "end": 4571, "loc": { "start": { "line": 135, @@ -7776,8 +7842,8 @@ }, "object": { "type": "Identifier", - "start": 4527, - "end": 4533, + "start": 4548, + "end": 4554, "loc": { "start": { "line": 135, @@ -7794,8 +7860,8 @@ }, "property": { "type": "Identifier", - "start": 4534, - "end": 4550, + "start": 4555, + "end": 4571, "loc": { "start": { "line": 135, @@ -7814,8 +7880,8 @@ }, "right": { "type": "MemberExpression", - "start": 4553, - "end": 4562, + "start": 4574, + "end": 4583, "loc": { "start": { "line": 135, @@ -7828,8 +7894,8 @@ }, "object": { "type": "Identifier", - "start": 4553, - "end": 4554, + "start": 4574, + "end": 4575, "loc": { "start": { "line": 135, @@ -7845,8 +7911,8 @@ }, "property": { "type": "Identifier", - "start": 4555, - "end": 4562, + "start": 4576, + "end": 4583, "loc": { "start": { "line": 135, @@ -7868,8 +7934,8 @@ { "type": "CommentLine", "value": " Left mouse button down to start pivoting", - "start": 4470, - "end": 4513, + "start": 4491, + "end": 4534, "loc": { "start": { "line": 133, @@ -7885,8 +7951,8 @@ }, { "type": "ExpressionStatement", - "start": 4576, - "end": 4612, + "start": 4597, + "end": 4633, "loc": { "start": { "line": 136, @@ -7899,8 +7965,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4576, - "end": 4611, + "start": 4597, + "end": 4632, "loc": { "start": { "line": 136, @@ -7914,8 +7980,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 4576, - "end": 4599, + "start": 4597, + "end": 4620, "loc": { "start": { "line": 136, @@ -7928,8 +7994,8 @@ }, "object": { "type": "Identifier", - "start": 4576, - "end": 4582, + "start": 4597, + "end": 4603, "loc": { "start": { "line": 136, @@ -7945,8 +8011,8 @@ }, "property": { "type": "Identifier", - "start": 4583, - "end": 4599, + "start": 4604, + "end": 4620, "loc": { "start": { "line": 136, @@ -7964,8 +8030,8 @@ }, "right": { "type": "MemberExpression", - "start": 4602, - "end": 4611, + "start": 4623, + "end": 4632, "loc": { "start": { "line": 136, @@ -7978,8 +8044,8 @@ }, "object": { "type": "Identifier", - "start": 4602, - "end": 4603, + "start": 4623, + "end": 4624, "loc": { "start": { "line": 136, @@ -7995,8 +8061,8 @@ }, "property": { "type": "Identifier", - "start": 4604, - "end": 4611, + "start": 4625, + "end": 4632, "loc": { "start": { "line": 136, @@ -8016,8 +8082,8 @@ }, { "type": "ExpressionStatement", - "start": 4625, - "end": 4678, + "start": 4646, + "end": 4699, "loc": { "start": { "line": 137, @@ -8030,8 +8096,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4625, - "end": 4677, + "start": 4646, + "end": 4698, "loc": { "start": { "line": 137, @@ -8045,8 +8111,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 4625, - "end": 4648, + "start": 4646, + "end": 4669, "loc": { "start": { "line": 137, @@ -8059,8 +8125,8 @@ }, "object": { "type": "Identifier", - "start": 4625, - "end": 4631, + "start": 4646, + "end": 4652, "loc": { "start": { "line": 137, @@ -8076,8 +8142,8 @@ }, "property": { "type": "Identifier", - "start": 4632, - "end": 4648, + "start": 4653, + "end": 4669, "loc": { "start": { "line": 137, @@ -8095,8 +8161,8 @@ }, "right": { "type": "MemberExpression", - "start": 4651, - "end": 4677, + "start": 4672, + "end": 4698, "loc": { "start": { "line": 137, @@ -8109,8 +8175,8 @@ }, "object": { "type": "MemberExpression", - "start": 4651, - "end": 4674, + "start": 4672, + "end": 4695, "loc": { "start": { "line": 137, @@ -8123,8 +8189,8 @@ }, "object": { "type": "Identifier", - "start": 4651, - "end": 4657, + "start": 4672, + "end": 4678, "loc": { "start": { "line": 137, @@ -8140,8 +8206,8 @@ }, "property": { "type": "Identifier", - "start": 4658, - "end": 4674, + "start": 4679, + "end": 4695, "loc": { "start": { "line": 137, @@ -8159,8 +8225,8 @@ }, "property": { "type": "NumericLiteral", - "start": 4675, - "end": 4676, + "start": 4696, + "end": 4697, "loc": { "start": { "line": 137, @@ -8183,8 +8249,8 @@ }, { "type": "ExpressionStatement", - "start": 4691, - "end": 4744, + "start": 4712, + "end": 4765, "loc": { "start": { "line": 138, @@ -8197,8 +8263,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4691, - "end": 4743, + "start": 4712, + "end": 4764, "loc": { "start": { "line": 138, @@ -8212,8 +8278,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 4691, - "end": 4714, + "start": 4712, + "end": 4735, "loc": { "start": { "line": 138, @@ -8226,8 +8292,8 @@ }, "object": { "type": "Identifier", - "start": 4691, - "end": 4697, + "start": 4712, + "end": 4718, "loc": { "start": { "line": 138, @@ -8243,8 +8309,8 @@ }, "property": { "type": "Identifier", - "start": 4698, - "end": 4714, + "start": 4719, + "end": 4735, "loc": { "start": { "line": 138, @@ -8262,8 +8328,8 @@ }, "right": { "type": "MemberExpression", - "start": 4717, - "end": 4743, + "start": 4738, + "end": 4764, "loc": { "start": { "line": 138, @@ -8276,8 +8342,8 @@ }, "object": { "type": "MemberExpression", - "start": 4717, - "end": 4740, + "start": 4738, + "end": 4761, "loc": { "start": { "line": 138, @@ -8290,8 +8356,8 @@ }, "object": { "type": "Identifier", - "start": 4717, - "end": 4723, + "start": 4738, + "end": 4744, "loc": { "start": { "line": 138, @@ -8307,8 +8373,8 @@ }, "property": { "type": "Identifier", - "start": 4724, - "end": 4740, + "start": 4745, + "end": 4761, "loc": { "start": { "line": 138, @@ -8326,8 +8392,8 @@ }, "property": { "type": "NumericLiteral", - "start": 4741, - "end": 4742, + "start": 4762, + "end": 4763, "loc": { "start": { "line": 138, @@ -8350,8 +8416,8 @@ }, { "type": "IfStatement", - "start": 4758, - "end": 5703, + "start": 4779, + "end": 5724, "loc": { "start": { "line": 140, @@ -8364,8 +8430,8 @@ }, "test": { "type": "LogicalExpression", - "start": 4762, - "end": 4809, + "start": 4783, + "end": 4830, "loc": { "start": { "line": 140, @@ -8378,8 +8444,8 @@ }, "left": { "type": "UnaryExpression", - "start": 4763, - "end": 4783, + "start": 4784, + "end": 4804, "loc": { "start": { "line": 140, @@ -8394,8 +8460,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 4764, - "end": 4783, + "start": 4785, + "end": 4804, "loc": { "start": { "line": 140, @@ -8408,8 +8474,8 @@ }, "object": { "type": "Identifier", - "start": 4764, - "end": 4771, + "start": 4785, + "end": 4792, "loc": { "start": { "line": 140, @@ -8425,8 +8491,8 @@ }, "property": { "type": "Identifier", - "start": 4772, - "end": 4783, + "start": 4793, + "end": 4804, "loc": { "start": { "line": 140, @@ -8445,14 +8511,14 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 4762 + "parenStart": 4783 } }, "operator": "&&", "right": { "type": "MemberExpression", - "start": 4788, - "end": 4809, + "start": 4809, + "end": 4830, "loc": { "start": { "line": 140, @@ -8465,8 +8531,8 @@ }, "object": { "type": "Identifier", - "start": 4788, - "end": 4795, + "start": 4809, + "end": 4816, "loc": { "start": { "line": 140, @@ -8482,8 +8548,8 @@ }, "property": { "type": "Identifier", - "start": 4796, - "end": 4809, + "start": 4817, + "end": 4830, "loc": { "start": { "line": 140, @@ -8502,8 +8568,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 4811, - "end": 5703, + "start": 4832, + "end": 5724, "loc": { "start": { "line": 140, @@ -8517,8 +8583,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 4830, - "end": 4885, + "start": 4851, + "end": 4906, "loc": { "start": { "line": 142, @@ -8531,8 +8597,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4830, - "end": 4884, + "start": 4851, + "end": 4905, "loc": { "start": { "line": 142, @@ -8546,8 +8612,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 4830, - "end": 4858, + "start": 4851, + "end": 4879, "loc": { "start": { "line": 142, @@ -8560,8 +8626,8 @@ }, "object": { "type": "Identifier", - "start": 4830, - "end": 4844, + "start": 4851, + "end": 4865, "loc": { "start": { "line": 142, @@ -8577,8 +8643,8 @@ }, "property": { "type": "Identifier", - "start": 4845, - "end": 4858, + "start": 4866, + "end": 4879, "loc": { "start": { "line": 142, @@ -8596,8 +8662,8 @@ }, "right": { "type": "MemberExpression", - "start": 4861, - "end": 4884, + "start": 4882, + "end": 4905, "loc": { "start": { "line": 142, @@ -8610,8 +8676,8 @@ }, "object": { "type": "Identifier", - "start": 4861, - "end": 4867, + "start": 4882, + "end": 4888, "loc": { "start": { "line": 142, @@ -8627,8 +8693,8 @@ }, "property": { "type": "Identifier", - "start": 4868, - "end": 4884, + "start": 4889, + "end": 4905, "loc": { "start": { "line": 142, @@ -8648,8 +8714,8 @@ }, { "type": "ExpressionStatement", - "start": 4902, - "end": 4944, + "start": 4923, + "end": 4965, "loc": { "start": { "line": 143, @@ -8662,8 +8728,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4902, - "end": 4943, + "start": 4923, + "end": 4964, "loc": { "start": { "line": 143, @@ -8677,8 +8743,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 4902, - "end": 4936, + "start": 4923, + "end": 4957, "loc": { "start": { "line": 143, @@ -8691,8 +8757,8 @@ }, "object": { "type": "Identifier", - "start": 4902, - "end": 4916, + "start": 4923, + "end": 4937, "loc": { "start": { "line": 143, @@ -8708,8 +8774,8 @@ }, "property": { "type": "Identifier", - "start": 4917, - "end": 4936, + "start": 4938, + "end": 4957, "loc": { "start": { "line": 143, @@ -8727,8 +8793,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 4939, - "end": 4943, + "start": 4960, + "end": 4964, "loc": { "start": { "line": 143, @@ -8745,8 +8811,8 @@ }, { "type": "ExpressionStatement", - "start": 4962, - "end": 4986, + "start": 4983, + "end": 5007, "loc": { "start": { "line": 145, @@ -8759,8 +8825,8 @@ }, "expression": { "type": "CallExpression", - "start": 4962, - "end": 4985, + "start": 4983, + "end": 5006, "loc": { "start": { "line": 145, @@ -8773,8 +8839,8 @@ }, "callee": { "type": "MemberExpression", - "start": 4962, - "end": 4983, + "start": 4983, + "end": 5004, "loc": { "start": { "line": 145, @@ -8787,8 +8853,8 @@ }, "object": { "type": "Identifier", - "start": 4962, - "end": 4976, + "start": 4983, + "end": 4997, "loc": { "start": { "line": 145, @@ -8804,8 +8870,8 @@ }, "property": { "type": "Identifier", - "start": 4977, - "end": 4983, + "start": 4998, + "end": 5004, "loc": { "start": { "line": 145, @@ -8826,8 +8892,8 @@ }, { "type": "IfStatement", - "start": 5004, - "end": 5689, + "start": 5025, + "end": 5710, "loc": { "start": { "line": 147, @@ -8840,8 +8906,8 @@ }, "test": { "type": "BinaryExpression", - "start": 5008, - "end": 5021, + "start": 5029, + "end": 5042, "loc": { "start": { "line": 147, @@ -8854,8 +8920,8 @@ }, "left": { "type": "MemberExpression", - "start": 5008, - "end": 5015, + "start": 5029, + "end": 5036, "loc": { "start": { "line": 147, @@ -8868,8 +8934,8 @@ }, "object": { "type": "Identifier", - "start": 5008, - "end": 5009, + "start": 5029, + "end": 5030, "loc": { "start": { "line": 147, @@ -8885,8 +8951,8 @@ }, "property": { "type": "Identifier", - "start": 5010, - "end": 5015, + "start": 5031, + "end": 5036, "loc": { "start": { "line": 147, @@ -8905,8 +8971,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 5020, - "end": 5021, + "start": 5041, + "end": 5042, "loc": { "start": { "line": 147, @@ -8926,8 +8992,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 5023, - "end": 5689, + "start": 5044, + "end": 5710, "loc": { "start": { "line": 147, @@ -8941,8 +9007,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 5059, - "end": 5104, + "start": 5080, + "end": 5125, "loc": { "start": { "line": 148, @@ -8956,8 +9022,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 5065, - "end": 5103, + "start": 5086, + "end": 5124, "loc": { "start": { "line": 148, @@ -8970,8 +9036,8 @@ }, "id": { "type": "Identifier", - "start": 5065, - "end": 5075, + "start": 5086, + "end": 5096, "loc": { "start": { "line": 148, @@ -8988,8 +9054,8 @@ }, "init": { "type": "MemberExpression", - "start": 5078, - "end": 5103, + "start": 5099, + "end": 5124, "loc": { "start": { "line": 148, @@ -9002,8 +9068,8 @@ }, "object": { "type": "Identifier", - "start": 5078, - "end": 5092, + "start": 5099, + "end": 5113, "loc": { "start": { "line": 148, @@ -9019,8 +9085,8 @@ }, "property": { "type": "Identifier", - "start": 5093, - "end": 5103, + "start": 5114, + "end": 5124, "loc": { "start": { "line": 148, @@ -9044,8 +9110,8 @@ { "type": "CommentLine", "value": " Left button", - "start": 5024, - "end": 5038, + "start": 5045, + "end": 5059, "loc": { "start": { "line": 147, @@ -9061,8 +9127,8 @@ }, { "type": "IfStatement", - "start": 5125, - "end": 5671, + "start": 5146, + "end": 5692, "loc": { "start": { "line": 149, @@ -9075,8 +9141,8 @@ }, "test": { "type": "LogicalExpression", - "start": 5129, - "end": 5162, + "start": 5150, + "end": 5183, "loc": { "start": { "line": 149, @@ -9089,8 +9155,8 @@ }, "left": { "type": "Identifier", - "start": 5129, - "end": 5139, + "start": 5150, + "end": 5160, "loc": { "start": { "line": 149, @@ -9107,8 +9173,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 5143, - "end": 5162, + "start": 5164, + "end": 5183, "loc": { "start": { "line": 149, @@ -9121,8 +9187,8 @@ }, "object": { "type": "Identifier", - "start": 5143, - "end": 5153, + "start": 5164, + "end": 5174, "loc": { "start": { "line": 149, @@ -9138,8 +9204,8 @@ }, "property": { "type": "Identifier", - "start": 5154, - "end": 5162, + "start": 5175, + "end": 5183, "loc": { "start": { "line": 149, @@ -9158,8 +9224,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 5164, - "end": 5315, + "start": 5185, + "end": 5336, "loc": { "start": { "line": 149, @@ -9173,8 +9239,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 5190, - "end": 5239, + "start": 5211, + "end": 5260, "loc": { "start": { "line": 150, @@ -9187,8 +9253,8 @@ }, "expression": { "type": "CallExpression", - "start": 5190, - "end": 5238, + "start": 5211, + "end": 5259, "loc": { "start": { "line": 150, @@ -9201,8 +9267,8 @@ }, "callee": { "type": "MemberExpression", - "start": 5190, - "end": 5217, + "start": 5211, + "end": 5238, "loc": { "start": { "line": 150, @@ -9215,8 +9281,8 @@ }, "object": { "type": "Identifier", - "start": 5190, - "end": 5205, + "start": 5211, + "end": 5226, "loc": { "start": { "line": 150, @@ -9232,8 +9298,8 @@ }, "property": { "type": "Identifier", - "start": 5206, - "end": 5217, + "start": 5227, + "end": 5238, "loc": { "start": { "line": 150, @@ -9252,8 +9318,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 5218, - "end": 5237, + "start": 5239, + "end": 5258, "loc": { "start": { "line": 150, @@ -9266,8 +9332,8 @@ }, "object": { "type": "Identifier", - "start": 5218, - "end": 5228, + "start": 5239, + "end": 5249, "loc": { "start": { "line": 150, @@ -9283,8 +9349,8 @@ }, "property": { "type": "Identifier", - "start": 5229, - "end": 5237, + "start": 5250, + "end": 5258, "loc": { "start": { "line": 150, @@ -9305,8 +9371,8 @@ }, { "type": "ExpressionStatement", - "start": 5264, - "end": 5293, + "start": 5285, + "end": 5314, "loc": { "start": { "line": 151, @@ -9319,8 +9385,8 @@ }, "expression": { "type": "CallExpression", - "start": 5264, - "end": 5292, + "start": 5285, + "end": 5313, "loc": { "start": { "line": 151, @@ -9333,8 +9399,8 @@ }, "callee": { "type": "MemberExpression", - "start": 5264, - "end": 5290, + "start": 5285, + "end": 5311, "loc": { "start": { "line": 151, @@ -9347,8 +9413,8 @@ }, "object": { "type": "Identifier", - "start": 5264, - "end": 5279, + "start": 5285, + "end": 5300, "loc": { "start": { "line": 151, @@ -9364,8 +9430,8 @@ }, "property": { "type": "Identifier", - "start": 5280, - "end": 5290, + "start": 5301, + "end": 5311, "loc": { "start": { "line": 151, @@ -9389,8 +9455,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 5321, - "end": 5671, + "start": 5342, + "end": 5692, "loc": { "start": { "line": 152, @@ -9404,8 +9470,8 @@ "body": [ { "type": "IfStatement", - "start": 5347, - "end": 5595, + "start": 5368, + "end": 5616, "loc": { "start": { "line": 153, @@ -9418,8 +9484,8 @@ }, "test": { "type": "MemberExpression", - "start": 5351, - "end": 5369, + "start": 5372, + "end": 5390, "loc": { "start": { "line": 153, @@ -9432,8 +9498,8 @@ }, "object": { "type": "Identifier", - "start": 5351, - "end": 5358, + "start": 5372, + "end": 5379, "loc": { "start": { "line": 153, @@ -9449,8 +9515,8 @@ }, "property": { "type": "Identifier", - "start": 5359, - "end": 5369, + "start": 5380, + "end": 5390, "loc": { "start": { "line": 153, @@ -9468,8 +9534,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 5371, - "end": 5486, + "start": 5392, + "end": 5507, "loc": { "start": { "line": 153, @@ -9483,8 +9549,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 5401, - "end": 5460, + "start": 5422, + "end": 5481, "loc": { "start": { "line": 154, @@ -9497,8 +9563,8 @@ }, "expression": { "type": "CallExpression", - "start": 5401, - "end": 5459, + "start": 5422, + "end": 5480, "loc": { "start": { "line": 154, @@ -9511,8 +9577,8 @@ }, "callee": { "type": "MemberExpression", - "start": 5401, - "end": 5434, + "start": 5422, + "end": 5455, "loc": { "start": { "line": 154, @@ -9525,8 +9591,8 @@ }, "object": { "type": "Identifier", - "start": 5401, - "end": 5416, + "start": 5422, + "end": 5437, "loc": { "start": { "line": 154, @@ -9542,8 +9608,8 @@ }, "property": { "type": "Identifier", - "start": 5417, - "end": 5434, + "start": 5438, + "end": 5455, "loc": { "start": { "line": 154, @@ -9562,8 +9628,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 5435, - "end": 5458, + "start": 5456, + "end": 5479, "loc": { "start": { "line": 154, @@ -9576,8 +9642,8 @@ }, "object": { "type": "Identifier", - "start": 5435, - "end": 5441, + "start": 5456, + "end": 5462, "loc": { "start": { "line": 154, @@ -9593,8 +9659,8 @@ }, "property": { "type": "Identifier", - "start": 5442, - "end": 5458, + "start": 5463, + "end": 5479, "loc": { "start": { "line": 154, @@ -9618,8 +9684,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 5492, - "end": 5595, + "start": 5513, + "end": 5616, "loc": { "start": { "line": 155, @@ -9633,8 +9699,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 5522, - "end": 5569, + "start": 5543, + "end": 5590, "loc": { "start": { "line": 156, @@ -9647,8 +9713,8 @@ }, "expression": { "type": "CallExpression", - "start": 5522, - "end": 5568, + "start": 5543, + "end": 5589, "loc": { "start": { "line": 156, @@ -9661,8 +9727,8 @@ }, "callee": { "type": "MemberExpression", - "start": 5522, - "end": 5549, + "start": 5543, + "end": 5570, "loc": { "start": { "line": 156, @@ -9675,8 +9741,8 @@ }, "object": { "type": "Identifier", - "start": 5522, - "end": 5537, + "start": 5543, + "end": 5558, "loc": { "start": { "line": 156, @@ -9692,8 +9758,8 @@ }, "property": { "type": "Identifier", - "start": 5538, - "end": 5549, + "start": 5559, + "end": 5570, "loc": { "start": { "line": 156, @@ -9712,8 +9778,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 5550, - "end": 5567, + "start": 5571, + "end": 5588, "loc": { "start": { "line": 156, @@ -9726,8 +9792,8 @@ }, "object": { "type": "MemberExpression", - "start": 5550, - "end": 5562, + "start": 5571, + "end": 5583, "loc": { "start": { "line": 156, @@ -9740,8 +9806,8 @@ }, "object": { "type": "Identifier", - "start": 5550, - "end": 5555, + "start": 5571, + "end": 5576, "loc": { "start": { "line": 156, @@ -9757,8 +9823,8 @@ }, "property": { "type": "Identifier", - "start": 5556, - "end": 5562, + "start": 5577, + "end": 5583, "loc": { "start": { "line": 156, @@ -9776,8 +9842,8 @@ }, "property": { "type": "Identifier", - "start": 5563, - "end": 5567, + "start": 5584, + "end": 5588, "loc": { "start": { "line": 156, @@ -9802,8 +9868,8 @@ }, { "type": "ExpressionStatement", - "start": 5620, - "end": 5649, + "start": 5641, + "end": 5670, "loc": { "start": { "line": 158, @@ -9816,8 +9882,8 @@ }, "expression": { "type": "CallExpression", - "start": 5620, - "end": 5648, + "start": 5641, + "end": 5669, "loc": { "start": { "line": 158, @@ -9830,8 +9896,8 @@ }, "callee": { "type": "MemberExpression", - "start": 5620, - "end": 5646, + "start": 5641, + "end": 5667, "loc": { "start": { "line": 158, @@ -9844,8 +9910,8 @@ }, "object": { "type": "Identifier", - "start": 5620, - "end": 5635, + "start": 5641, + "end": 5656, "loc": { "start": { "line": 158, @@ -9861,8 +9927,8 @@ }, "property": { "type": "Identifier", - "start": 5636, - "end": 5646, + "start": 5657, + "end": 5667, "loc": { "start": { "line": 158, @@ -9905,8 +9971,8 @@ }, { "type": "ExpressionStatement", - "start": 5725, - "end": 5978, + "start": 5746, + "end": 5999, "loc": { "start": { "line": 164, @@ -9919,8 +9985,8 @@ }, "expression": { "type": "CallExpression", - "start": 5725, - "end": 5977, + "start": 5746, + "end": 5998, "loc": { "start": { "line": 164, @@ -9933,8 +9999,8 @@ }, "callee": { "type": "MemberExpression", - "start": 5725, - "end": 5750, + "start": 5746, + "end": 5771, "loc": { "start": { "line": 164, @@ -9947,8 +10013,8 @@ }, "object": { "type": "Identifier", - "start": 5725, - "end": 5733, + "start": 5746, + "end": 5754, "loc": { "start": { "line": 164, @@ -9964,8 +10030,8 @@ }, "property": { "type": "Identifier", - "start": 5734, - "end": 5750, + "start": 5755, + "end": 5771, "loc": { "start": { "line": 164, @@ -9984,8 +10050,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 5751, - "end": 5760, + "start": 5772, + "end": 5781, "loc": { "start": { "line": 164, @@ -10004,8 +10070,8 @@ }, { "type": "AssignmentExpression", - "start": 5762, - "end": 5976, + "start": 5783, + "end": 5997, "loc": { "start": { "line": 164, @@ -10019,8 +10085,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 5762, - "end": 5790, + "start": 5783, + "end": 5811, "loc": { "start": { "line": 164, @@ -10033,8 +10099,8 @@ }, "object": { "type": "ThisExpression", - "start": 5762, - "end": 5766, + "start": 5783, + "end": 5787, "loc": { "start": { "line": 164, @@ -10048,8 +10114,8 @@ }, "property": { "type": "Identifier", - "start": 5767, - "end": 5790, + "start": 5788, + "end": 5811, "loc": { "start": { "line": 164, @@ -10067,8 +10133,8 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 5793, - "end": 5976, + "start": 5814, + "end": 5997, "loc": { "start": { "line": 164, @@ -10086,8 +10152,8 @@ "params": [ { "type": "Identifier", - "start": 5794, - "end": 5795, + "start": 5815, + "end": 5816, "loc": { "start": { "line": 164, @@ -10104,8 +10170,8 @@ ], "body": { "type": "BlockStatement", - "start": 5800, - "end": 5976, + "start": 5821, + "end": 5997, "loc": { "start": { "line": 164, @@ -10119,8 +10185,8 @@ "body": [ { "type": "IfStatement", - "start": 5815, - "end": 5883, + "start": 5836, + "end": 5904, "loc": { "start": { "line": 166, @@ -10133,8 +10199,8 @@ }, "test": { "type": "BinaryExpression", - "start": 5819, - "end": 5832, + "start": 5840, + "end": 5853, "loc": { "start": { "line": 166, @@ -10147,8 +10213,8 @@ }, "left": { "type": "MemberExpression", - "start": 5819, - "end": 5826, + "start": 5840, + "end": 5847, "loc": { "start": { "line": 166, @@ -10161,8 +10227,8 @@ }, "object": { "type": "Identifier", - "start": 5819, - "end": 5820, + "start": 5840, + "end": 5841, "loc": { "start": { "line": 166, @@ -10178,8 +10244,8 @@ }, "property": { "type": "Identifier", - "start": 5821, - "end": 5826, + "start": 5842, + "end": 5847, "loc": { "start": { "line": 166, @@ -10198,8 +10264,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 5831, - "end": 5832, + "start": 5852, + "end": 5853, "loc": { "start": { "line": 166, @@ -10219,8 +10285,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 5834, - "end": 5883, + "start": 5855, + "end": 5904, "loc": { "start": { "line": 166, @@ -10234,8 +10300,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 5852, - "end": 5869, + "start": 5873, + "end": 5890, "loc": { "start": { "line": 167, @@ -10248,8 +10314,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 5852, - "end": 5868, + "start": 5873, + "end": 5889, "loc": { "start": { "line": 167, @@ -10263,8 +10329,8 @@ "operator": "=", "left": { "type": "Identifier", - "start": 5852, - "end": 5860, + "start": 5873, + "end": 5881, "loc": { "start": { "line": 167, @@ -10280,8 +10346,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 5863, - "end": 5868, + "start": 5884, + "end": 5889, "loc": { "start": { "line": 167, @@ -10303,8 +10369,8 @@ }, { "type": "IfStatement", - "start": 5897, - "end": 5966, + "start": 5918, + "end": 5987, "loc": { "start": { "line": 170, @@ -10317,8 +10383,8 @@ }, "test": { "type": "BinaryExpression", - "start": 5901, - "end": 5914, + "start": 5922, + "end": 5935, "loc": { "start": { "line": 170, @@ -10331,8 +10397,8 @@ }, "left": { "type": "MemberExpression", - "start": 5901, - "end": 5908, + "start": 5922, + "end": 5929, "loc": { "start": { "line": 170, @@ -10345,8 +10411,8 @@ }, "object": { "type": "Identifier", - "start": 5901, - "end": 5902, + "start": 5922, + "end": 5923, "loc": { "start": { "line": 170, @@ -10362,8 +10428,8 @@ }, "property": { "type": "Identifier", - "start": 5903, - "end": 5908, + "start": 5924, + "end": 5929, "loc": { "start": { "line": 170, @@ -10382,8 +10448,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 5913, - "end": 5914, + "start": 5934, + "end": 5935, "loc": { "start": { "line": 170, @@ -10403,8 +10469,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 5916, - "end": 5966, + "start": 5937, + "end": 5987, "loc": { "start": { "line": 170, @@ -10418,8 +10484,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 5934, - "end": 5952, + "start": 5955, + "end": 5973, "loc": { "start": { "line": 171, @@ -10432,8 +10498,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 5934, - "end": 5951, + "start": 5955, + "end": 5972, "loc": { "start": { "line": 171, @@ -10447,8 +10513,8 @@ "operator": "=", "left": { "type": "Identifier", - "start": 5934, - "end": 5943, + "start": 5955, + "end": 5964, "loc": { "start": { "line": 171, @@ -10464,8 +10530,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 5946, - "end": 5951, + "start": 5967, + "end": 5972, "loc": { "start": { "line": 171, @@ -10495,8 +10561,8 @@ }, { "type": "ExpressionStatement", - "start": 5988, - "end": 12195, + "start": 6009, + "end": 12216, "loc": { "start": { "line": 175, @@ -10509,8 +10575,8 @@ }, "expression": { "type": "CallExpression", - "start": 5988, - "end": 12194, + "start": 6009, + "end": 12215, "loc": { "start": { "line": 175, @@ -10523,8 +10589,8 @@ }, "callee": { "type": "MemberExpression", - "start": 5988, - "end": 6011, + "start": 6009, + "end": 6032, "loc": { "start": { "line": 175, @@ -10537,8 +10603,8 @@ }, "object": { "type": "Identifier", - "start": 5988, - "end": 5994, + "start": 6009, + "end": 6015, "loc": { "start": { "line": 175, @@ -10554,8 +10620,8 @@ }, "property": { "type": "Identifier", - "start": 5995, - "end": 6011, + "start": 6016, + "end": 6032, "loc": { "start": { "line": 175, @@ -10574,8 +10640,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 6012, - "end": 6021, + "start": 6033, + "end": 6042, "loc": { "start": { "line": 175, @@ -10594,8 +10660,8 @@ }, { "type": "AssignmentExpression", - "start": 6023, - "end": 12186, + "start": 6044, + "end": 12207, "loc": { "start": { "line": 175, @@ -10609,8 +10675,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 6023, - "end": 6049, + "start": 6044, + "end": 6070, "loc": { "start": { "line": 175, @@ -10623,8 +10689,8 @@ }, "object": { "type": "ThisExpression", - "start": 6023, - "end": 6027, + "start": 6044, + "end": 6048, "loc": { "start": { "line": 175, @@ -10638,8 +10704,8 @@ }, "property": { "type": "Identifier", - "start": 6028, - "end": 6049, + "start": 6049, + "end": 6070, "loc": { "start": { "line": 175, @@ -10657,8 +10723,8 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 6052, - "end": 12186, + "start": 6073, + "end": 12207, "loc": { "start": { "line": 175, @@ -10676,8 +10742,8 @@ "params": [ { "type": "Identifier", - "start": 6053, - "end": 6054, + "start": 6074, + "end": 6075, "loc": { "start": { "line": 175, @@ -10694,8 +10760,8 @@ ], "body": { "type": "BlockStatement", - "start": 6059, - "end": 12186, + "start": 6080, + "end": 12207, "loc": { "start": { "line": 175, @@ -10709,8 +10775,8 @@ "body": [ { "type": "IfStatement", - "start": 6074, - "end": 6162, + "start": 6095, + "end": 6183, "loc": { "start": { "line": 177, @@ -10723,8 +10789,8 @@ }, "test": { "type": "UnaryExpression", - "start": 6078, - "end": 6121, + "start": 6099, + "end": 6142, "loc": { "start": { "line": 177, @@ -10739,8 +10805,8 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 6080, - "end": 6120, + "start": 6101, + "end": 6141, "loc": { "start": { "line": 177, @@ -10753,8 +10819,8 @@ }, "left": { "type": "MemberExpression", - "start": 6080, - "end": 6094, + "start": 6101, + "end": 6115, "loc": { "start": { "line": 177, @@ -10767,8 +10833,8 @@ }, "object": { "type": "Identifier", - "start": 6080, - "end": 6087, + "start": 6101, + "end": 6108, "loc": { "start": { "line": 177, @@ -10784,8 +10850,8 @@ }, "property": { "type": "Identifier", - "start": 6088, - "end": 6094, + "start": 6109, + "end": 6115, "loc": { "start": { "line": 177, @@ -10804,8 +10870,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 6098, - "end": 6120, + "start": 6119, + "end": 6141, "loc": { "start": { "line": 177, @@ -10818,8 +10884,8 @@ }, "object": { "type": "Identifier", - "start": 6098, - "end": 6105, + "start": 6119, + "end": 6126, "loc": { "start": { "line": 177, @@ -10835,8 +10901,8 @@ }, "property": { "type": "Identifier", - "start": 6106, - "end": 6120, + "start": 6127, + "end": 6141, "loc": { "start": { "line": 177, @@ -10854,7 +10920,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 6079 + "parenStart": 6100 } }, "extra": { @@ -10863,8 +10929,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 6123, - "end": 6162, + "start": 6144, + "end": 6183, "loc": { "start": { "line": 177, @@ -10878,8 +10944,8 @@ "body": [ { "type": "ReturnStatement", - "start": 6141, - "end": 6148, + "start": 6162, + "end": 6169, "loc": { "start": { "line": 178, @@ -10899,8 +10965,8 @@ }, { "type": "VariableDeclaration", - "start": 6176, - "end": 6213, + "start": 6197, + "end": 6234, "loc": { "start": { "line": 181, @@ -10914,8 +10980,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 6182, - "end": 6212, + "start": 6203, + "end": 6233, "loc": { "start": { "line": 181, @@ -10928,8 +10994,8 @@ }, "id": { "type": "Identifier", - "start": 6182, - "end": 6194, + "start": 6203, + "end": 6215, "loc": { "start": { "line": 181, @@ -10945,8 +11011,8 @@ }, "init": { "type": "BinaryExpression", - "start": 6198, - "end": 6211, + "start": 6219, + "end": 6232, "loc": { "start": { "line": 181, @@ -10959,8 +11025,8 @@ }, "left": { "type": "MemberExpression", - "start": 6198, - "end": 6205, + "start": 6219, + "end": 6226, "loc": { "start": { "line": 181, @@ -10973,8 +11039,8 @@ }, "object": { "type": "Identifier", - "start": 6198, - "end": 6199, + "start": 6219, + "end": 6220, "loc": { "start": { "line": 181, @@ -10990,8 +11056,8 @@ }, "property": { "type": "Identifier", - "start": 6200, - "end": 6205, + "start": 6221, + "end": 6226, "loc": { "start": { "line": 181, @@ -11010,8 +11076,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 6210, - "end": 6211, + "start": 6231, + "end": 6232, "loc": { "start": { "line": 181, @@ -11030,7 +11096,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 6197 + "parenStart": 6218 } } } @@ -11039,8 +11105,8 @@ }, { "type": "IfStatement", - "start": 6227, - "end": 6285, + "start": 6248, + "end": 6306, "loc": { "start": { "line": 183, @@ -11053,8 +11119,8 @@ }, "test": { "type": "UnaryExpression", - "start": 6231, - "end": 6244, + "start": 6252, + "end": 6265, "loc": { "start": { "line": 183, @@ -11069,8 +11135,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 6232, - "end": 6244, + "start": 6253, + "end": 6265, "loc": { "start": { "line": 183, @@ -11090,8 +11156,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 6246, - "end": 6285, + "start": 6267, + "end": 6306, "loc": { "start": { "line": 183, @@ -11105,8 +11171,8 @@ "body": [ { "type": "ReturnStatement", - "start": 6264, - "end": 6271, + "start": 6285, + "end": 6292, "loc": { "start": { "line": 184, @@ -11128,8 +11194,8 @@ { "type": "CommentLine", "value": " Left mouse button up to possibly pick or double-pick", - "start": 6299, - "end": 6354, + "start": 6320, + "end": 6375, "loc": { "start": { "line": 187, @@ -11145,8 +11211,8 @@ }, { "type": "ExpressionStatement", - "start": 6368, - "end": 6396, + "start": 6389, + "end": 6417, "loc": { "start": { "line": 189, @@ -11159,8 +11225,8 @@ }, "expression": { "type": "CallExpression", - "start": 6368, - "end": 6395, + "start": 6389, + "end": 6416, "loc": { "start": { "line": 189, @@ -11173,8 +11239,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6368, - "end": 6393, + "start": 6389, + "end": 6414, "loc": { "start": { "line": 189, @@ -11187,8 +11253,8 @@ }, "object": { "type": "Identifier", - "start": 6368, - "end": 6383, + "start": 6389, + "end": 6404, "loc": { "start": { "line": 189, @@ -11205,8 +11271,8 @@ }, "property": { "type": "Identifier", - "start": 6384, - "end": 6393, + "start": 6405, + "end": 6414, "loc": { "start": { "line": 189, @@ -11230,8 +11296,8 @@ { "type": "CommentLine", "value": " Left mouse button up to possibly pick or double-pick", - "start": 6299, - "end": 6354, + "start": 6320, + "end": 6375, "loc": { "start": { "line": 187, @@ -11247,8 +11313,8 @@ }, { "type": "IfStatement", - "start": 6410, - "end": 6557, + "start": 6431, + "end": 6578, "loc": { "start": { "line": 191, @@ -11261,8 +11327,8 @@ }, "test": { "type": "LogicalExpression", - "start": 6414, - "end": 6516, + "start": 6435, + "end": 6537, "loc": { "start": { "line": 191, @@ -11275,8 +11341,8 @@ }, "left": { "type": "BinaryExpression", - "start": 6414, - "end": 6463, + "start": 6435, + "end": 6484, "loc": { "start": { "line": 191, @@ -11289,8 +11355,8 @@ }, "left": { "type": "CallExpression", - "start": 6414, - "end": 6459, + "start": 6435, + "end": 6480, "loc": { "start": { "line": 191, @@ -11303,8 +11369,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6414, - "end": 6422, + "start": 6435, + "end": 6443, "loc": { "start": { "line": 191, @@ -11317,8 +11383,8 @@ }, "object": { "type": "Identifier", - "start": 6414, - "end": 6418, + "start": 6435, + "end": 6439, "loc": { "start": { "line": 191, @@ -11334,8 +11400,8 @@ }, "property": { "type": "Identifier", - "start": 6419, - "end": 6422, + "start": 6440, + "end": 6443, "loc": { "start": { "line": 191, @@ -11354,8 +11420,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 6423, - "end": 6458, + "start": 6444, + "end": 6479, "loc": { "start": { "line": 191, @@ -11368,8 +11434,8 @@ }, "left": { "type": "MemberExpression", - "start": 6423, - "end": 6432, + "start": 6444, + "end": 6453, "loc": { "start": { "line": 191, @@ -11382,8 +11448,8 @@ }, "object": { "type": "Identifier", - "start": 6423, - "end": 6424, + "start": 6444, + "end": 6445, "loc": { "start": { "line": 191, @@ -11399,8 +11465,8 @@ }, "property": { "type": "Identifier", - "start": 6425, - "end": 6432, + "start": 6446, + "end": 6453, "loc": { "start": { "line": 191, @@ -11419,8 +11485,8 @@ "operator": "-", "right": { "type": "MemberExpression", - "start": 6435, - "end": 6458, + "start": 6456, + "end": 6479, "loc": { "start": { "line": 191, @@ -11433,8 +11499,8 @@ }, "object": { "type": "Identifier", - "start": 6435, - "end": 6441, + "start": 6456, + "end": 6462, "loc": { "start": { "line": 191, @@ -11450,8 +11516,8 @@ }, "property": { "type": "Identifier", - "start": 6442, - "end": 6458, + "start": 6463, + "end": 6479, "loc": { "start": { "line": 191, @@ -11473,8 +11539,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 6462, - "end": 6463, + "start": 6483, + "end": 6484, "loc": { "start": { "line": 191, @@ -11495,8 +11561,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 6467, - "end": 6516, + "start": 6488, + "end": 6537, "loc": { "start": { "line": 191, @@ -11509,8 +11575,8 @@ }, "left": { "type": "CallExpression", - "start": 6467, - "end": 6512, + "start": 6488, + "end": 6533, "loc": { "start": { "line": 191, @@ -11523,8 +11589,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6467, - "end": 6475, + "start": 6488, + "end": 6496, "loc": { "start": { "line": 191, @@ -11537,8 +11603,8 @@ }, "object": { "type": "Identifier", - "start": 6467, - "end": 6471, + "start": 6488, + "end": 6492, "loc": { "start": { "line": 191, @@ -11554,8 +11620,8 @@ }, "property": { "type": "Identifier", - "start": 6472, - "end": 6475, + "start": 6493, + "end": 6496, "loc": { "start": { "line": 191, @@ -11574,8 +11640,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 6476, - "end": 6511, + "start": 6497, + "end": 6532, "loc": { "start": { "line": 191, @@ -11588,8 +11654,8 @@ }, "left": { "type": "MemberExpression", - "start": 6476, - "end": 6485, + "start": 6497, + "end": 6506, "loc": { "start": { "line": 191, @@ -11602,8 +11668,8 @@ }, "object": { "type": "Identifier", - "start": 6476, - "end": 6477, + "start": 6497, + "end": 6498, "loc": { "start": { "line": 191, @@ -11619,8 +11685,8 @@ }, "property": { "type": "Identifier", - "start": 6478, - "end": 6485, + "start": 6499, + "end": 6506, "loc": { "start": { "line": 191, @@ -11639,8 +11705,8 @@ "operator": "-", "right": { "type": "MemberExpression", - "start": 6488, - "end": 6511, + "start": 6509, + "end": 6532, "loc": { "start": { "line": 191, @@ -11653,8 +11719,8 @@ }, "object": { "type": "Identifier", - "start": 6488, - "end": 6494, + "start": 6509, + "end": 6515, "loc": { "start": { "line": 191, @@ -11670,8 +11736,8 @@ }, "property": { "type": "Identifier", - "start": 6495, - "end": 6511, + "start": 6516, + "end": 6532, "loc": { "start": { "line": 191, @@ -11693,8 +11759,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 6515, - "end": 6516, + "start": 6536, + "end": 6537, "loc": { "start": { "line": 191, @@ -11715,8 +11781,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 6518, - "end": 6557, + "start": 6539, + "end": 6578, "loc": { "start": { "line": 191, @@ -11730,8 +11796,8 @@ "body": [ { "type": "ReturnStatement", - "start": 6536, - "end": 6543, + "start": 6557, + "end": 6564, "loc": { "start": { "line": 192, @@ -11751,8 +11817,8 @@ }, { "type": "VariableDeclaration", - "start": 6571, - "end": 6622, + "start": 6592, + "end": 6643, "loc": { "start": { "line": 195, @@ -11766,8 +11832,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 6577, - "end": 6621, + "start": 6598, + "end": 6642, "loc": { "start": { "line": 195, @@ -11780,8 +11846,8 @@ }, "id": { "type": "Identifier", - "start": 6577, - "end": 6587, + "start": 6598, + "end": 6608, "loc": { "start": { "line": 195, @@ -11797,8 +11863,8 @@ }, "init": { "type": "CallExpression", - "start": 6590, - "end": 6621, + "start": 6611, + "end": 6642, "loc": { "start": { "line": 195, @@ -11811,8 +11877,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6590, - "end": 6611, + "start": 6611, + "end": 6632, "loc": { "start": { "line": 195, @@ -11825,8 +11891,8 @@ }, "object": { "type": "Identifier", - "start": 6590, - "end": 6603, + "start": 6611, + "end": 6624, "loc": { "start": { "line": 195, @@ -11842,8 +11908,8 @@ }, "property": { "type": "Identifier", - "start": 6604, - "end": 6611, + "start": 6625, + "end": 6632, "loc": { "start": { "line": 195, @@ -11862,8 +11928,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 6612, - "end": 6620, + "start": 6633, + "end": 6641, "loc": { "start": { "line": 195, @@ -11888,8 +11954,8 @@ }, { "type": "VariableDeclaration", - "start": 6635, - "end": 6700, + "start": 6656, + "end": 6721, "loc": { "start": { "line": 196, @@ -11903,8 +11969,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 6641, - "end": 6699, + "start": 6662, + "end": 6720, "loc": { "start": { "line": 196, @@ -11917,8 +11983,8 @@ }, "id": { "type": "Identifier", - "start": 6641, - "end": 6658, + "start": 6662, + "end": 6679, "loc": { "start": { "line": 196, @@ -11934,8 +12000,8 @@ }, "init": { "type": "CallExpression", - "start": 6661, - "end": 6699, + "start": 6682, + "end": 6720, "loc": { "start": { "line": 196, @@ -11948,8 +12014,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6661, - "end": 6682, + "start": 6682, + "end": 6703, "loc": { "start": { "line": 196, @@ -11962,8 +12028,8 @@ }, "object": { "type": "Identifier", - "start": 6661, - "end": 6674, + "start": 6682, + "end": 6695, "loc": { "start": { "line": 196, @@ -11979,8 +12045,8 @@ }, "property": { "type": "Identifier", - "start": 6675, - "end": 6682, + "start": 6696, + "end": 6703, "loc": { "start": { "line": 196, @@ -11999,8 +12065,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 6683, - "end": 6698, + "start": 6704, + "end": 6719, "loc": { "start": { "line": 196, @@ -12025,8 +12091,8 @@ }, { "type": "VariableDeclaration", - "start": 6713, - "end": 6778, + "start": 6734, + "end": 6799, "loc": { "start": { "line": 197, @@ -12040,8 +12106,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 6719, - "end": 6777, + "start": 6740, + "end": 6798, "loc": { "start": { "line": 197, @@ -12054,8 +12120,8 @@ }, "id": { "type": "Identifier", - "start": 6719, - "end": 6736, + "start": 6740, + "end": 6757, "loc": { "start": { "line": 197, @@ -12071,8 +12137,8 @@ }, "init": { "type": "CallExpression", - "start": 6739, - "end": 6777, + "start": 6760, + "end": 6798, "loc": { "start": { "line": 197, @@ -12085,8 +12151,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6739, - "end": 6760, + "start": 6760, + "end": 6781, "loc": { "start": { "line": 197, @@ -12099,8 +12165,8 @@ }, "object": { "type": "Identifier", - "start": 6739, - "end": 6752, + "start": 6760, + "end": 6773, "loc": { "start": { "line": 197, @@ -12116,8 +12182,8 @@ }, "property": { "type": "Identifier", - "start": 6753, - "end": 6760, + "start": 6774, + "end": 6781, "loc": { "start": { "line": 197, @@ -12136,8 +12202,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 6761, - "end": 6776, + "start": 6782, + "end": 6797, "loc": { "start": { "line": 197, @@ -12162,8 +12228,8 @@ }, { "type": "VariableDeclaration", - "start": 6791, - "end": 6854, + "start": 6812, + "end": 6875, "loc": { "start": { "line": 198, @@ -12177,8 +12243,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 6797, - "end": 6853, + "start": 6818, + "end": 6874, "loc": { "start": { "line": 198, @@ -12191,8 +12257,8 @@ }, "id": { "type": "Identifier", - "start": 6797, - "end": 6813, + "start": 6818, + "end": 6834, "loc": { "start": { "line": 198, @@ -12208,8 +12274,8 @@ }, "init": { "type": "CallExpression", - "start": 6816, - "end": 6853, + "start": 6837, + "end": 6874, "loc": { "start": { "line": 198, @@ -12222,8 +12288,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6816, - "end": 6837, + "start": 6837, + "end": 6858, "loc": { "start": { "line": 198, @@ -12236,8 +12302,8 @@ }, "object": { "type": "Identifier", - "start": 6816, - "end": 6829, + "start": 6837, + "end": 6850, "loc": { "start": { "line": 198, @@ -12253,8 +12319,8 @@ }, "property": { "type": "Identifier", - "start": 6830, - "end": 6837, + "start": 6851, + "end": 6858, "loc": { "start": { "line": 198, @@ -12273,8 +12339,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 6838, - "end": 6852, + "start": 6859, + "end": 6873, "loc": { "start": { "line": 198, @@ -12299,8 +12365,8 @@ }, { "type": "VariableDeclaration", - "start": 6867, - "end": 6944, + "start": 6888, + "end": 6965, "loc": { "start": { "line": 199, @@ -12314,8 +12380,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 6873, - "end": 6943, + "start": 6894, + "end": 6964, "loc": { "start": { "line": 199, @@ -12328,8 +12394,8 @@ }, "id": { "type": "Identifier", - "start": 6873, - "end": 6896, + "start": 6894, + "end": 6917, "loc": { "start": { "line": 199, @@ -12345,8 +12411,8 @@ }, "init": { "type": "CallExpression", - "start": 6899, - "end": 6943, + "start": 6920, + "end": 6964, "loc": { "start": { "line": 199, @@ -12359,8 +12425,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6899, - "end": 6920, + "start": 6920, + "end": 6941, "loc": { "start": { "line": 199, @@ -12373,8 +12439,8 @@ }, "object": { "type": "Identifier", - "start": 6899, - "end": 6912, + "start": 6920, + "end": 6933, "loc": { "start": { "line": 199, @@ -12390,8 +12456,8 @@ }, "property": { "type": "Identifier", - "start": 6913, - "end": 6920, + "start": 6934, + "end": 6941, "loc": { "start": { "line": 199, @@ -12410,8 +12476,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 6921, - "end": 6942, + "start": 6942, + "end": 6963, "loc": { "start": { "line": 199, @@ -12436,8 +12502,8 @@ }, { "type": "VariableDeclaration", - "start": 6957, - "end": 7034, + "start": 6978, + "end": 7055, "loc": { "start": { "line": 200, @@ -12451,8 +12517,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 6963, - "end": 7033, + "start": 6984, + "end": 7054, "loc": { "start": { "line": 200, @@ -12465,8 +12531,8 @@ }, "id": { "type": "Identifier", - "start": 6963, - "end": 6986, + "start": 6984, + "end": 7007, "loc": { "start": { "line": 200, @@ -12482,8 +12548,8 @@ }, "init": { "type": "CallExpression", - "start": 6989, - "end": 7033, + "start": 7010, + "end": 7054, "loc": { "start": { "line": 200, @@ -12496,8 +12562,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6989, - "end": 7010, + "start": 7010, + "end": 7031, "loc": { "start": { "line": 200, @@ -12510,8 +12576,8 @@ }, "object": { "type": "Identifier", - "start": 6989, - "end": 7002, + "start": 7010, + "end": 7023, "loc": { "start": { "line": 200, @@ -12527,8 +12593,8 @@ }, "property": { "type": "Identifier", - "start": 7003, - "end": 7010, + "start": 7024, + "end": 7031, "loc": { "start": { "line": 200, @@ -12547,8 +12613,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 7011, - "end": 7032, + "start": 7032, + "end": 7053, "loc": { "start": { "line": 200, @@ -12573,8 +12639,8 @@ }, { "type": "IfStatement", - "start": 7048, - "end": 8253, + "start": 7069, + "end": 8274, "loc": { "start": { "line": 202, @@ -12587,8 +12653,8 @@ }, "test": { "type": "LogicalExpression", - "start": 7052, - "end": 7209, + "start": 7073, + "end": 7230, "loc": { "start": { "line": 202, @@ -12601,8 +12667,8 @@ }, "left": { "type": "LogicalExpression", - "start": 7052, - "end": 7163, + "start": 7073, + "end": 7184, "loc": { "start": { "line": 202, @@ -12615,8 +12681,8 @@ }, "left": { "type": "LogicalExpression", - "start": 7052, - "end": 7117, + "start": 7073, + "end": 7138, "loc": { "start": { "line": 202, @@ -12629,8 +12695,8 @@ }, "left": { "type": "UnaryExpression", - "start": 7053, - "end": 7077, + "start": 7074, + "end": 7098, "loc": { "start": { "line": 202, @@ -12645,8 +12711,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 7054, - "end": 7077, + "start": 7075, + "end": 7098, "loc": { "start": { "line": 202, @@ -12659,8 +12725,8 @@ }, "object": { "type": "Identifier", - "start": 7054, - "end": 7061, + "start": 7075, + "end": 7082, "loc": { "start": { "line": 202, @@ -12676,8 +12742,8 @@ }, "property": { "type": "Identifier", - "start": 7062, - "end": 7077, + "start": 7083, + "end": 7098, "loc": { "start": { "line": 202, @@ -12696,14 +12762,14 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 7052 + "parenStart": 7073 } }, "operator": "&&", "right": { "type": "UnaryExpression", - "start": 7099, - "end": 7116, + "start": 7120, + "end": 7137, "loc": { "start": { "line": 203, @@ -12718,8 +12784,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 7100, - "end": 7116, + "start": 7121, + "end": 7137, "loc": { "start": { "line": 203, @@ -12736,15 +12802,15 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 7098 + "parenStart": 7119 } } }, "operator": "&&", "right": { "type": "UnaryExpression", - "start": 7138, - "end": 7162, + "start": 7159, + "end": 7183, "loc": { "start": { "line": 204, @@ -12759,8 +12825,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 7139, - "end": 7162, + "start": 7160, + "end": 7183, "loc": { "start": { "line": 204, @@ -12777,15 +12843,15 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 7137 + "parenStart": 7158 } } }, "operator": "&&", "right": { "type": "UnaryExpression", - "start": 7184, - "end": 7208, + "start": 7205, + "end": 7229, "loc": { "start": { "line": 205, @@ -12800,8 +12866,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 7185, - "end": 7208, + "start": 7206, + "end": 7229, "loc": { "start": { "line": 205, @@ -12818,14 +12884,14 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 7183 + "parenStart": 7204 } } }, "consequent": { "type": "BlockStatement", - "start": 7211, - "end": 8253, + "start": 7232, + "end": 8274, "loc": { "start": { "line": 205, @@ -12839,8 +12905,8 @@ "body": [ { "type": "IfStatement", - "start": 7305, - "end": 8179, + "start": 7326, + "end": 8200, "loc": { "start": { "line": 209, @@ -12853,8 +12919,8 @@ }, "test": { "type": "LogicalExpression", - "start": 7309, - "end": 7361, + "start": 7330, + "end": 7382, "loc": { "start": { "line": 209, @@ -12867,8 +12933,8 @@ }, "left": { "type": "LogicalExpression", - "start": 7309, - "end": 7340, + "start": 7330, + "end": 7361, "loc": { "start": { "line": 209, @@ -12881,8 +12947,8 @@ }, "left": { "type": "Identifier", - "start": 7309, - "end": 7319, + "start": 7330, + "end": 7340, "loc": { "start": { "line": 209, @@ -12900,8 +12966,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 7323, - "end": 7340, + "start": 7344, + "end": 7361, "loc": { "start": { "line": 209, @@ -12920,8 +12986,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 7344, - "end": 7361, + "start": 7365, + "end": 7382, "loc": { "start": { "line": 209, @@ -12939,8 +13005,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 7363, - "end": 8179, + "start": 7384, + "end": 8200, "loc": { "start": { "line": 209, @@ -12954,8 +13020,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 7386, - "end": 7441, + "start": 7407, + "end": 7462, "loc": { "start": { "line": 211, @@ -12968,8 +13034,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 7386, - "end": 7440, + "start": 7407, + "end": 7461, "loc": { "start": { "line": 211, @@ -12983,8 +13049,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 7386, - "end": 7414, + "start": 7407, + "end": 7435, "loc": { "start": { "line": 211, @@ -12997,8 +13063,8 @@ }, "object": { "type": "Identifier", - "start": 7386, - "end": 7400, + "start": 7407, + "end": 7421, "loc": { "start": { "line": 211, @@ -13014,8 +13080,8 @@ }, "property": { "type": "Identifier", - "start": 7401, - "end": 7414, + "start": 7422, + "end": 7435, "loc": { "start": { "line": 211, @@ -13033,8 +13099,8 @@ }, "right": { "type": "MemberExpression", - "start": 7417, - "end": 7440, + "start": 7438, + "end": 7461, "loc": { "start": { "line": 211, @@ -13047,8 +13113,8 @@ }, "object": { "type": "Identifier", - "start": 7417, - "end": 7423, + "start": 7438, + "end": 7444, "loc": { "start": { "line": 211, @@ -13064,8 +13130,8 @@ }, "property": { "type": "Identifier", - "start": 7424, - "end": 7440, + "start": 7445, + "end": 7461, "loc": { "start": { "line": 211, @@ -13085,8 +13151,8 @@ }, { "type": "ExpressionStatement", - "start": 7462, - "end": 7503, + "start": 7483, + "end": 7524, "loc": { "start": { "line": 212, @@ -13099,8 +13165,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 7462, - "end": 7502, + "start": 7483, + "end": 7523, "loc": { "start": { "line": 212, @@ -13114,8 +13180,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 7462, - "end": 7495, + "start": 7483, + "end": 7516, "loc": { "start": { "line": 212, @@ -13128,8 +13194,8 @@ }, "object": { "type": "Identifier", - "start": 7462, - "end": 7476, + "start": 7483, + "end": 7497, "loc": { "start": { "line": 212, @@ -13145,8 +13211,8 @@ }, "property": { "type": "Identifier", - "start": 7477, - "end": 7495, + "start": 7498, + "end": 7516, "loc": { "start": { "line": 212, @@ -13164,8 +13230,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 7498, - "end": 7502, + "start": 7519, + "end": 7523, "loc": { "start": { "line": 212, @@ -13182,8 +13248,8 @@ }, { "type": "ExpressionStatement", - "start": 7524, - "end": 7579, + "start": 7545, + "end": 7600, "loc": { "start": { "line": 213, @@ -13196,8 +13262,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 7524, - "end": 7578, + "start": 7545, + "end": 7599, "loc": { "start": { "line": 213, @@ -13211,8 +13277,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 7524, - "end": 7558, + "start": 7545, + "end": 7579, "loc": { "start": { "line": 213, @@ -13225,8 +13291,8 @@ }, "object": { "type": "Identifier", - "start": 7524, - "end": 7538, + "start": 7545, + "end": 7559, "loc": { "start": { "line": 213, @@ -13242,8 +13308,8 @@ }, "property": { "type": "Identifier", - "start": 7539, - "end": 7558, + "start": 7560, + "end": 7579, "loc": { "start": { "line": 213, @@ -13261,8 +13327,8 @@ }, "right": { "type": "Identifier", - "start": 7561, - "end": 7578, + "start": 7582, + "end": 7599, "loc": { "start": { "line": 213, @@ -13280,8 +13346,8 @@ }, { "type": "ExpressionStatement", - "start": 7600, - "end": 7624, + "start": 7621, + "end": 7645, "loc": { "start": { "line": 214, @@ -13294,8 +13360,8 @@ }, "expression": { "type": "CallExpression", - "start": 7600, - "end": 7623, + "start": 7621, + "end": 7644, "loc": { "start": { "line": 214, @@ -13308,8 +13374,8 @@ }, "callee": { "type": "MemberExpression", - "start": 7600, - "end": 7621, + "start": 7621, + "end": 7642, "loc": { "start": { "line": 214, @@ -13322,8 +13388,8 @@ }, "object": { "type": "Identifier", - "start": 7600, - "end": 7614, + "start": 7621, + "end": 7635, "loc": { "start": { "line": 214, @@ -13339,8 +13405,8 @@ }, "property": { "type": "Identifier", - "start": 7615, - "end": 7621, + "start": 7636, + "end": 7642, "loc": { "start": { "line": 214, @@ -13361,8 +13427,8 @@ }, { "type": "IfStatement", - "start": 7646, - "end": 8161, + "start": 7667, + "end": 8182, "loc": { "start": { "line": 216, @@ -13375,8 +13441,8 @@ }, "test": { "type": "MemberExpression", - "start": 7650, - "end": 7675, + "start": 7671, + "end": 7696, "loc": { "start": { "line": 216, @@ -13389,8 +13455,8 @@ }, "object": { "type": "Identifier", - "start": 7650, - "end": 7664, + "start": 7671, + "end": 7685, "loc": { "start": { "line": 216, @@ -13406,8 +13472,8 @@ }, "property": { "type": "Identifier", - "start": 7665, - "end": 7675, + "start": 7686, + "end": 7696, "loc": { "start": { "line": 216, @@ -13425,8 +13491,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 7677, - "end": 7973, + "start": 7698, + "end": 7994, "loc": { "start": { "line": 216, @@ -13440,8 +13506,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 7704, - "end": 7766, + "start": 7725, + "end": 7787, "loc": { "start": { "line": 218, @@ -13454,8 +13520,8 @@ }, "expression": { "type": "CallExpression", - "start": 7704, - "end": 7765, + "start": 7725, + "end": 7786, "loc": { "start": { "line": 218, @@ -13468,8 +13534,8 @@ }, "callee": { "type": "MemberExpression", - "start": 7704, - "end": 7722, + "start": 7725, + "end": 7743, "loc": { "start": { "line": 218, @@ -13482,8 +13548,8 @@ }, "object": { "type": "Identifier", - "start": 7704, - "end": 7717, + "start": 7725, + "end": 7738, "loc": { "start": { "line": 218, @@ -13499,8 +13565,8 @@ }, "property": { "type": "Identifier", - "start": 7718, - "end": 7722, + "start": 7739, + "end": 7743, "loc": { "start": { "line": 218, @@ -13519,8 +13585,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 7723, - "end": 7731, + "start": 7744, + "end": 7752, "loc": { "start": { "line": 218, @@ -13539,8 +13605,8 @@ }, { "type": "MemberExpression", - "start": 7733, - "end": 7758, + "start": 7754, + "end": 7779, "loc": { "start": { "line": 218, @@ -13553,8 +13619,8 @@ }, "object": { "type": "Identifier", - "start": 7733, - "end": 7747, + "start": 7754, + "end": 7768, "loc": { "start": { "line": 218, @@ -13570,8 +13636,8 @@ }, "property": { "type": "Identifier", - "start": 7748, - "end": 7758, + "start": 7769, + "end": 7779, "loc": { "start": { "line": 218, @@ -13589,8 +13655,8 @@ }, { "type": "BooleanLiteral", - "start": 7760, - "end": 7764, + "start": 7781, + "end": 7785, "loc": { "start": { "line": 218, @@ -13608,8 +13674,8 @@ }, { "type": "IfStatement", - "start": 7792, - "end": 7951, + "start": 7813, + "end": 7972, "loc": { "start": { "line": 220, @@ -13622,8 +13688,8 @@ }, "test": { "type": "MemberExpression", - "start": 7796, - "end": 7824, + "start": 7817, + "end": 7845, "loc": { "start": { "line": 220, @@ -13636,8 +13702,8 @@ }, "object": { "type": "Identifier", - "start": 7796, - "end": 7810, + "start": 7817, + "end": 7831, "loc": { "start": { "line": 220, @@ -13653,8 +13719,8 @@ }, "property": { "type": "Identifier", - "start": 7811, - "end": 7824, + "start": 7832, + "end": 7845, "loc": { "start": { "line": 220, @@ -13672,8 +13738,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 7826, - "end": 7951, + "start": 7847, + "end": 7972, "loc": { "start": { "line": 220, @@ -13687,8 +13753,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 7856, - "end": 7925, + "start": 7877, + "end": 7946, "loc": { "start": { "line": 221, @@ -13701,8 +13767,8 @@ }, "expression": { "type": "CallExpression", - "start": 7856, - "end": 7924, + "start": 7877, + "end": 7945, "loc": { "start": { "line": 221, @@ -13715,8 +13781,8 @@ }, "callee": { "type": "MemberExpression", - "start": 7856, - "end": 7874, + "start": 7877, + "end": 7895, "loc": { "start": { "line": 221, @@ -13729,8 +13795,8 @@ }, "object": { "type": "Identifier", - "start": 7856, - "end": 7869, + "start": 7877, + "end": 7890, "loc": { "start": { "line": 221, @@ -13746,8 +13812,8 @@ }, "property": { "type": "Identifier", - "start": 7870, - "end": 7874, + "start": 7891, + "end": 7895, "loc": { "start": { "line": 221, @@ -13766,8 +13832,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 7875, - "end": 7890, + "start": 7896, + "end": 7911, "loc": { "start": { "line": 221, @@ -13786,8 +13852,8 @@ }, { "type": "MemberExpression", - "start": 7892, - "end": 7917, + "start": 7913, + "end": 7938, "loc": { "start": { "line": 221, @@ -13800,8 +13866,8 @@ }, "object": { "type": "Identifier", - "start": 7892, - "end": 7906, + "start": 7913, + "end": 7927, "loc": { "start": { "line": 221, @@ -13817,8 +13883,8 @@ }, "property": { "type": "Identifier", - "start": 7907, - "end": 7917, + "start": 7928, + "end": 7938, "loc": { "start": { "line": 221, @@ -13836,8 +13902,8 @@ }, { "type": "BooleanLiteral", - "start": 7919, - "end": 7923, + "start": 7940, + "end": 7944, "loc": { "start": { "line": 221, @@ -13863,8 +13929,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 7979, - "end": 8161, + "start": 8000, + "end": 8182, "loc": { "start": { "line": 223, @@ -13878,8 +13944,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 8005, - "end": 8139, + "start": 8026, + "end": 8160, "loc": { "start": { "line": 224, @@ -13892,8 +13958,8 @@ }, "expression": { "type": "CallExpression", - "start": 8005, - "end": 8138, + "start": 8026, + "end": 8159, "loc": { "start": { "line": 224, @@ -13906,8 +13972,8 @@ }, "callee": { "type": "MemberExpression", - "start": 8005, - "end": 8023, + "start": 8026, + "end": 8044, "loc": { "start": { "line": 224, @@ -13920,8 +13986,8 @@ }, "object": { "type": "Identifier", - "start": 8005, - "end": 8018, + "start": 8026, + "end": 8039, "loc": { "start": { "line": 224, @@ -13937,8 +14003,8 @@ }, "property": { "type": "Identifier", - "start": 8019, - "end": 8023, + "start": 8040, + "end": 8044, "loc": { "start": { "line": 224, @@ -13957,8 +14023,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 8024, - "end": 8039, + "start": 8045, + "end": 8060, "loc": { "start": { "line": 224, @@ -13977,8 +14043,8 @@ }, { "type": "ObjectExpression", - "start": 8041, - "end": 8131, + "start": 8062, + "end": 8152, "loc": { "start": { "line": 224, @@ -13992,8 +14058,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 8071, - "end": 8105, + "start": 8092, + "end": 8126, "loc": { "start": { "line": 225, @@ -14009,8 +14075,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8071, - "end": 8080, + "start": 8092, + "end": 8101, "loc": { "start": { "line": 225, @@ -14026,8 +14092,8 @@ }, "value": { "type": "MemberExpression", - "start": 8082, - "end": 8105, + "start": 8103, + "end": 8126, "loc": { "start": { "line": 225, @@ -14040,8 +14106,8 @@ }, "object": { "type": "Identifier", - "start": 8082, - "end": 8088, + "start": 8103, + "end": 8109, "loc": { "start": { "line": 225, @@ -14057,8 +14123,8 @@ }, "property": { "type": "Identifier", - "start": 8089, - "end": 8105, + "start": 8110, + "end": 8126, "loc": { "start": { "line": 225, @@ -14079,8 +14145,8 @@ }, { "type": "BooleanLiteral", - "start": 8133, - "end": 8137, + "start": 8154, + "end": 8158, "loc": { "start": { "line": 226, @@ -14108,8 +14174,8 @@ { "type": "CommentLine", "value": " Avoid the single/double click differentiation timeout", - "start": 7230, - "end": 7287, + "start": 7251, + "end": 7308, "loc": { "start": { "line": 207, @@ -14125,8 +14191,8 @@ }, { "type": "ExpressionStatement", - "start": 8197, - "end": 8214, + "start": 8218, + "end": 8235, "loc": { "start": { "line": 230, @@ -14139,8 +14205,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 8197, - "end": 8213, + "start": 8218, + "end": 8234, "loc": { "start": { "line": 230, @@ -14154,8 +14220,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 8197, - "end": 8209, + "start": 8218, + "end": 8230, "loc": { "start": { "line": 230, @@ -14168,8 +14234,8 @@ }, "object": { "type": "ThisExpression", - "start": 8197, - "end": 8201, + "start": 8218, + "end": 8222, "loc": { "start": { "line": 230, @@ -14183,8 +14249,8 @@ }, "property": { "type": "Identifier", - "start": 8202, - "end": 8209, + "start": 8223, + "end": 8230, "loc": { "start": { "line": 230, @@ -14202,8 +14268,8 @@ }, "right": { "type": "NumericLiteral", - "start": 8212, - "end": 8213, + "start": 8233, + "end": 8234, "loc": { "start": { "line": 230, @@ -14224,8 +14290,8 @@ }, { "type": "ReturnStatement", - "start": 8232, - "end": 8239, + "start": 8253, + "end": 8260, "loc": { "start": { "line": 232, @@ -14245,8 +14311,8 @@ }, { "type": "ExpressionStatement", - "start": 8267, - "end": 8282, + "start": 8288, + "end": 8303, "loc": { "start": { "line": 235, @@ -14259,8 +14325,8 @@ }, "expression": { "type": "UpdateExpression", - "start": 8267, - "end": 8281, + "start": 8288, + "end": 8302, "loc": { "start": { "line": 235, @@ -14275,8 +14341,8 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 8267, - "end": 8279, + "start": 8288, + "end": 8300, "loc": { "start": { "line": 235, @@ -14289,8 +14355,8 @@ }, "object": { "type": "ThisExpression", - "start": 8267, - "end": 8271, + "start": 8288, + "end": 8292, "loc": { "start": { "line": 235, @@ -14304,8 +14370,8 @@ }, "property": { "type": "Identifier", - "start": 8272, - "end": 8279, + "start": 8293, + "end": 8300, "loc": { "start": { "line": 235, @@ -14325,8 +14391,8 @@ }, { "type": "IfStatement", - "start": 8296, - "end": 12176, + "start": 8317, + "end": 12197, "loc": { "start": { "line": 237, @@ -14339,8 +14405,8 @@ }, "test": { "type": "BinaryExpression", - "start": 8300, - "end": 8318, + "start": 8321, + "end": 8339, "loc": { "start": { "line": 237, @@ -14353,8 +14419,8 @@ }, "left": { "type": "MemberExpression", - "start": 8300, - "end": 8312, + "start": 8321, + "end": 8333, "loc": { "start": { "line": 237, @@ -14367,8 +14433,8 @@ }, "object": { "type": "ThisExpression", - "start": 8300, - "end": 8304, + "start": 8321, + "end": 8325, "loc": { "start": { "line": 237, @@ -14382,8 +14448,8 @@ }, "property": { "type": "Identifier", - "start": 8305, - "end": 8312, + "start": 8326, + "end": 8333, "loc": { "start": { "line": 237, @@ -14402,8 +14468,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 8317, - "end": 8318, + "start": 8338, + "end": 8339, "loc": { "start": { "line": 237, @@ -14423,8 +14489,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 8320, - "end": 9735, + "start": 8341, + "end": 9756, "loc": { "start": { "line": 237, @@ -14438,8 +14504,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 8354, - "end": 9684, + "start": 8375, + "end": 9705, "loc": { "start": { "line": 239, @@ -14452,8 +14518,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 8354, - "end": 9683, + "start": 8375, + "end": 9704, "loc": { "start": { "line": 239, @@ -14467,8 +14533,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 8354, - "end": 8367, + "start": 8375, + "end": 8388, "loc": { "start": { "line": 239, @@ -14481,8 +14547,8 @@ }, "object": { "type": "ThisExpression", - "start": 8354, - "end": 8358, + "start": 8375, + "end": 8379, "loc": { "start": { "line": 239, @@ -14497,8 +14563,8 @@ }, "property": { "type": "Identifier", - "start": 8359, - "end": 8367, + "start": 8380, + "end": 8388, "loc": { "start": { "line": 239, @@ -14517,8 +14583,8 @@ }, "right": { "type": "CallExpression", - "start": 8370, - "end": 9683, + "start": 8391, + "end": 9704, "loc": { "start": { "line": 239, @@ -14531,8 +14597,8 @@ }, "callee": { "type": "Identifier", - "start": 8370, - "end": 8380, + "start": 8391, + "end": 8401, "loc": { "start": { "line": 239, @@ -14549,8 +14615,8 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 8381, - "end": 9677, + "start": 8402, + "end": 9698, "loc": { "start": { "line": 239, @@ -14568,8 +14634,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 8387, - "end": 9677, + "start": 8408, + "end": 9698, "loc": { "start": { "line": 239, @@ -14583,8 +14649,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 8410, - "end": 8465, + "start": 8431, + "end": 8486, "loc": { "start": { "line": 241, @@ -14597,8 +14663,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 8410, - "end": 8464, + "start": 8431, + "end": 8485, "loc": { "start": { "line": 241, @@ -14612,8 +14678,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 8410, - "end": 8438, + "start": 8431, + "end": 8459, "loc": { "start": { "line": 241, @@ -14626,8 +14692,8 @@ }, "object": { "type": "Identifier", - "start": 8410, - "end": 8424, + "start": 8431, + "end": 8445, "loc": { "start": { "line": 241, @@ -14643,8 +14709,8 @@ }, "property": { "type": "Identifier", - "start": 8425, - "end": 8438, + "start": 8446, + "end": 8459, "loc": { "start": { "line": 241, @@ -14662,8 +14728,8 @@ }, "right": { "type": "MemberExpression", - "start": 8441, - "end": 8464, + "start": 8462, + "end": 8485, "loc": { "start": { "line": 241, @@ -14676,8 +14742,8 @@ }, "object": { "type": "Identifier", - "start": 8441, - "end": 8447, + "start": 8462, + "end": 8468, "loc": { "start": { "line": 241, @@ -14693,8 +14759,8 @@ }, "property": { "type": "Identifier", - "start": 8448, - "end": 8464, + "start": 8469, + "end": 8485, "loc": { "start": { "line": 241, @@ -14714,8 +14780,8 @@ }, { "type": "ExpressionStatement", - "start": 8486, - "end": 8546, + "start": 8507, + "end": 8567, "loc": { "start": { "line": 242, @@ -14728,8 +14794,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 8486, - "end": 8545, + "start": 8507, + "end": 8566, "loc": { "start": { "line": 242, @@ -14743,8 +14809,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 8486, - "end": 8519, + "start": 8507, + "end": 8540, "loc": { "start": { "line": 242, @@ -14757,8 +14823,8 @@ }, "object": { "type": "Identifier", - "start": 8486, - "end": 8500, + "start": 8507, + "end": 8521, "loc": { "start": { "line": 242, @@ -14774,8 +14840,8 @@ }, "property": { "type": "Identifier", - "start": 8501, - "end": 8519, + "start": 8522, + "end": 8540, "loc": { "start": { "line": 242, @@ -14793,8 +14859,8 @@ }, "right": { "type": "MemberExpression", - "start": 8522, - "end": 8545, + "start": 8543, + "end": 8566, "loc": { "start": { "line": 242, @@ -14807,8 +14873,8 @@ }, "object": { "type": "Identifier", - "start": 8522, - "end": 8529, + "start": 8543, + "end": 8550, "loc": { "start": { "line": 242, @@ -14824,8 +14890,8 @@ }, "property": { "type": "Identifier", - "start": 8530, - "end": 8545, + "start": 8551, + "end": 8566, "loc": { "start": { "line": 242, @@ -14845,8 +14911,8 @@ }, { "type": "ExpressionStatement", - "start": 8567, - "end": 8622, + "start": 8588, + "end": 8643, "loc": { "start": { "line": 243, @@ -14859,8 +14925,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 8567, - "end": 8621, + "start": 8588, + "end": 8642, "loc": { "start": { "line": 243, @@ -14874,8 +14940,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 8567, - "end": 8601, + "start": 8588, + "end": 8622, "loc": { "start": { "line": 243, @@ -14888,8 +14954,8 @@ }, "object": { "type": "Identifier", - "start": 8567, - "end": 8581, + "start": 8588, + "end": 8602, "loc": { "start": { "line": 243, @@ -14905,8 +14971,8 @@ }, "property": { "type": "Identifier", - "start": 8582, - "end": 8601, + "start": 8603, + "end": 8622, "loc": { "start": { "line": 243, @@ -14924,8 +14990,8 @@ }, "right": { "type": "Identifier", - "start": 8604, - "end": 8621, + "start": 8625, + "end": 8642, "loc": { "start": { "line": 243, @@ -14943,8 +15009,8 @@ }, { "type": "ExpressionStatement", - "start": 8643, - "end": 8667, + "start": 8664, + "end": 8688, "loc": { "start": { "line": 244, @@ -14957,8 +15023,8 @@ }, "expression": { "type": "CallExpression", - "start": 8643, - "end": 8666, + "start": 8664, + "end": 8687, "loc": { "start": { "line": 244, @@ -14971,8 +15037,8 @@ }, "callee": { "type": "MemberExpression", - "start": 8643, - "end": 8664, + "start": 8664, + "end": 8685, "loc": { "start": { "line": 244, @@ -14985,8 +15051,8 @@ }, "object": { "type": "Identifier", - "start": 8643, - "end": 8657, + "start": 8664, + "end": 8678, "loc": { "start": { "line": 244, @@ -15002,8 +15068,8 @@ }, "property": { "type": "Identifier", - "start": 8658, - "end": 8664, + "start": 8679, + "end": 8685, "loc": { "start": { "line": 244, @@ -15024,8 +15090,8 @@ }, { "type": "IfStatement", - "start": 8689, - "end": 9619, + "start": 8710, + "end": 9640, "loc": { "start": { "line": 246, @@ -15038,8 +15104,8 @@ }, "test": { "type": "MemberExpression", - "start": 8693, - "end": 8718, + "start": 8714, + "end": 8739, "loc": { "start": { "line": 246, @@ -15052,8 +15118,8 @@ }, "object": { "type": "Identifier", - "start": 8693, - "end": 8707, + "start": 8714, + "end": 8728, "loc": { "start": { "line": 246, @@ -15069,8 +15135,8 @@ }, "property": { "type": "Identifier", - "start": 8708, - "end": 8718, + "start": 8729, + "end": 8739, "loc": { "start": { "line": 246, @@ -15088,8 +15154,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 8720, - "end": 9431, + "start": 8741, + "end": 9452, "loc": { "start": { "line": 246, @@ -15103,8 +15169,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 8747, - "end": 8809, + "start": 8768, + "end": 8830, "loc": { "start": { "line": 248, @@ -15117,8 +15183,8 @@ }, "expression": { "type": "CallExpression", - "start": 8747, - "end": 8808, + "start": 8768, + "end": 8829, "loc": { "start": { "line": 248, @@ -15131,8 +15197,8 @@ }, "callee": { "type": "MemberExpression", - "start": 8747, - "end": 8765, + "start": 8768, + "end": 8786, "loc": { "start": { "line": 248, @@ -15145,8 +15211,8 @@ }, "object": { "type": "Identifier", - "start": 8747, - "end": 8760, + "start": 8768, + "end": 8781, "loc": { "start": { "line": 248, @@ -15162,8 +15228,8 @@ }, "property": { "type": "Identifier", - "start": 8761, - "end": 8765, + "start": 8782, + "end": 8786, "loc": { "start": { "line": 248, @@ -15182,8 +15248,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 8766, - "end": 8774, + "start": 8787, + "end": 8795, "loc": { "start": { "line": 248, @@ -15202,8 +15268,8 @@ }, { "type": "MemberExpression", - "start": 8776, - "end": 8801, + "start": 8797, + "end": 8822, "loc": { "start": { "line": 248, @@ -15216,8 +15282,8 @@ }, "object": { "type": "Identifier", - "start": 8776, - "end": 8790, + "start": 8797, + "end": 8811, "loc": { "start": { "line": 248, @@ -15233,8 +15299,8 @@ }, "property": { "type": "Identifier", - "start": 8791, - "end": 8801, + "start": 8812, + "end": 8822, "loc": { "start": { "line": 248, @@ -15252,8 +15318,8 @@ }, { "type": "BooleanLiteral", - "start": 8803, - "end": 8807, + "start": 8824, + "end": 8828, "loc": { "start": { "line": 248, @@ -15271,8 +15337,8 @@ }, { "type": "IfStatement", - "start": 8835, - "end": 9409, + "start": 8856, + "end": 9430, "loc": { "start": { "line": 250, @@ -15285,8 +15351,8 @@ }, "test": { "type": "MemberExpression", - "start": 8839, - "end": 8867, + "start": 8860, + "end": 8888, "loc": { "start": { "line": 250, @@ -15299,8 +15365,8 @@ }, "object": { "type": "Identifier", - "start": 8839, - "end": 8853, + "start": 8860, + "end": 8874, "loc": { "start": { "line": 250, @@ -15316,8 +15382,8 @@ }, "property": { "type": "Identifier", - "start": 8854, - "end": 8867, + "start": 8875, + "end": 8888, "loc": { "start": { "line": 250, @@ -15335,8 +15401,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 8869, - "end": 9409, + "start": 8890, + "end": 9430, "loc": { "start": { "line": 250, @@ -15350,8 +15416,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 8900, - "end": 8969, + "start": 8921, + "end": 8990, "loc": { "start": { "line": 252, @@ -15364,8 +15430,8 @@ }, "expression": { "type": "CallExpression", - "start": 8900, - "end": 8968, + "start": 8921, + "end": 8989, "loc": { "start": { "line": 252, @@ -15378,8 +15444,8 @@ }, "callee": { "type": "MemberExpression", - "start": 8900, - "end": 8918, + "start": 8921, + "end": 8939, "loc": { "start": { "line": 252, @@ -15392,8 +15458,8 @@ }, "object": { "type": "Identifier", - "start": 8900, - "end": 8913, + "start": 8921, + "end": 8934, "loc": { "start": { "line": 252, @@ -15409,8 +15475,8 @@ }, "property": { "type": "Identifier", - "start": 8914, - "end": 8918, + "start": 8935, + "end": 8939, "loc": { "start": { "line": 252, @@ -15429,8 +15495,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 8919, - "end": 8934, + "start": 8940, + "end": 8955, "loc": { "start": { "line": 252, @@ -15449,8 +15515,8 @@ }, { "type": "MemberExpression", - "start": 8936, - "end": 8961, + "start": 8957, + "end": 8982, "loc": { "start": { "line": 252, @@ -15463,8 +15529,8 @@ }, "object": { "type": "Identifier", - "start": 8936, - "end": 8950, + "start": 8957, + "end": 8971, "loc": { "start": { "line": 252, @@ -15480,8 +15546,8 @@ }, "property": { "type": "Identifier", - "start": 8951, - "end": 8961, + "start": 8972, + "end": 8982, "loc": { "start": { "line": 252, @@ -15499,8 +15565,8 @@ }, { "type": "BooleanLiteral", - "start": 8963, - "end": 8967, + "start": 8984, + "end": 8988, "loc": { "start": { "line": 252, @@ -15518,8 +15584,8 @@ }, { "type": "IfStatement", - "start": 8999, - "end": 9383, + "start": 9020, + "end": 9404, "loc": { "start": { "line": 254, @@ -15532,8 +15598,8 @@ }, "test": { "type": "LogicalExpression", - "start": 9003, - "end": 9050, + "start": 9024, + "end": 9071, "loc": { "start": { "line": 254, @@ -15546,8 +15612,8 @@ }, "left": { "type": "UnaryExpression", - "start": 9004, - "end": 9024, + "start": 9025, + "end": 9045, "loc": { "start": { "line": 254, @@ -15562,8 +15628,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 9005, - "end": 9024, + "start": 9026, + "end": 9045, "loc": { "start": { "line": 254, @@ -15576,8 +15642,8 @@ }, "object": { "type": "Identifier", - "start": 9005, - "end": 9012, + "start": 9026, + "end": 9033, "loc": { "start": { "line": 254, @@ -15593,8 +15659,8 @@ }, "property": { "type": "Identifier", - "start": 9013, - "end": 9024, + "start": 9034, + "end": 9045, "loc": { "start": { "line": 254, @@ -15613,14 +15679,14 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 9003 + "parenStart": 9024 } }, "operator": "&&", "right": { "type": "MemberExpression", - "start": 9029, - "end": 9050, + "start": 9050, + "end": 9071, "loc": { "start": { "line": 254, @@ -15633,8 +15699,8 @@ }, "object": { "type": "Identifier", - "start": 9029, - "end": 9036, + "start": 9050, + "end": 9057, "loc": { "start": { "line": 254, @@ -15650,8 +15716,8 @@ }, "property": { "type": "Identifier", - "start": 9037, - "end": 9050, + "start": 9058, + "end": 9071, "loc": { "start": { "line": 254, @@ -15670,8 +15736,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9052, - "end": 9383, + "start": 9073, + "end": 9404, "loc": { "start": { "line": 254, @@ -15685,8 +15751,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9086, - "end": 9162, + "start": 9107, + "end": 9183, "loc": { "start": { "line": 255, @@ -15699,8 +15765,8 @@ }, "expression": { "type": "CallExpression", - "start": 9086, - "end": 9161, + "start": 9107, + "end": 9182, "loc": { "start": { "line": 255, @@ -15713,8 +15779,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9086, - "end": 9125, + "start": 9107, + "end": 9146, "loc": { "start": { "line": 255, @@ -15727,8 +15793,8 @@ }, "object": { "type": "MemberExpression", - "start": 9086, - "end": 9113, + "start": 9107, + "end": 9134, "loc": { "start": { "line": 255, @@ -15741,8 +15807,8 @@ }, "object": { "type": "Identifier", - "start": 9086, - "end": 9097, + "start": 9107, + "end": 9118, "loc": { "start": { "line": 255, @@ -15758,8 +15824,8 @@ }, "property": { "type": "Identifier", - "start": 9098, - "end": 9113, + "start": 9119, + "end": 9134, "loc": { "start": { "line": 255, @@ -15777,8 +15843,8 @@ }, "property": { "type": "Identifier", - "start": 9114, - "end": 9125, + "start": 9135, + "end": 9146, "loc": { "start": { "line": 255, @@ -15797,8 +15863,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 9126, - "end": 9160, + "start": 9147, + "end": 9181, "loc": { "start": { "line": 255, @@ -15811,8 +15877,8 @@ }, "object": { "type": "MemberExpression", - "start": 9126, - "end": 9151, + "start": 9147, + "end": 9172, "loc": { "start": { "line": 255, @@ -15825,8 +15891,8 @@ }, "object": { "type": "Identifier", - "start": 9126, - "end": 9140, + "start": 9147, + "end": 9161, "loc": { "start": { "line": 255, @@ -15842,8 +15908,8 @@ }, "property": { "type": "Identifier", - "start": 9141, - "end": 9151, + "start": 9162, + "end": 9172, "loc": { "start": { "line": 255, @@ -15861,8 +15927,8 @@ }, "property": { "type": "Identifier", - "start": 9152, - "end": 9160, + "start": 9173, + "end": 9181, "loc": { "start": { "line": 255, @@ -15883,8 +15949,8 @@ }, { "type": "IfStatement", - "start": 9195, - "end": 9353, + "start": 9216, + "end": 9374, "loc": { "start": { "line": 256, @@ -15897,8 +15963,8 @@ }, "test": { "type": "CallExpression", - "start": 9199, - "end": 9239, + "start": 9220, + "end": 9260, "loc": { "start": { "line": 256, @@ -15911,8 +15977,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9199, - "end": 9237, + "start": 9220, + "end": 9258, "loc": { "start": { "line": 256, @@ -15925,8 +15991,8 @@ }, "object": { "type": "MemberExpression", - "start": 9199, - "end": 9226, + "start": 9220, + "end": 9247, "loc": { "start": { "line": 256, @@ -15939,8 +16005,8 @@ }, "object": { "type": "Identifier", - "start": 9199, - "end": 9210, + "start": 9220, + "end": 9231, "loc": { "start": { "line": 256, @@ -15956,8 +16022,8 @@ }, "property": { "type": "Identifier", - "start": 9211, - "end": 9226, + "start": 9232, + "end": 9247, "loc": { "start": { "line": 256, @@ -15975,8 +16041,8 @@ }, "property": { "type": "Identifier", - "start": 9227, - "end": 9237, + "start": 9248, + "end": 9258, "loc": { "start": { "line": 256, @@ -15996,8 +16062,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9241, - "end": 9353, + "start": 9262, + "end": 9374, "loc": { "start": { "line": 256, @@ -16011,8 +16077,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9279, - "end": 9319, + "start": 9300, + "end": 9340, "loc": { "start": { "line": 257, @@ -16025,8 +16091,8 @@ }, "expression": { "type": "CallExpression", - "start": 9279, - "end": 9318, + "start": 9300, + "end": 9339, "loc": { "start": { "line": 257, @@ -16039,8 +16105,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9279, - "end": 9316, + "start": 9300, + "end": 9337, "loc": { "start": { "line": 257, @@ -16053,8 +16119,8 @@ }, "object": { "type": "MemberExpression", - "start": 9279, - "end": 9306, + "start": 9300, + "end": 9327, "loc": { "start": { "line": 257, @@ -16067,8 +16133,8 @@ }, "object": { "type": "Identifier", - "start": 9279, - "end": 9290, + "start": 9300, + "end": 9311, "loc": { "start": { "line": 257, @@ -16084,8 +16150,8 @@ }, "property": { "type": "Identifier", - "start": 9291, - "end": 9306, + "start": 9312, + "end": 9327, "loc": { "start": { "line": 257, @@ -16103,8 +16169,8 @@ }, "property": { "type": "Identifier", - "start": 9307, - "end": 9316, + "start": 9328, + "end": 9337, "loc": { "start": { "line": 257, @@ -16143,8 +16209,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 9437, - "end": 9619, + "start": 9458, + "end": 9640, "loc": { "start": { "line": 261, @@ -16158,8 +16224,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9463, - "end": 9597, + "start": 9484, + "end": 9618, "loc": { "start": { "line": 262, @@ -16172,8 +16238,8 @@ }, "expression": { "type": "CallExpression", - "start": 9463, - "end": 9596, + "start": 9484, + "end": 9617, "loc": { "start": { "line": 262, @@ -16186,8 +16252,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9463, - "end": 9481, + "start": 9484, + "end": 9502, "loc": { "start": { "line": 262, @@ -16200,8 +16266,8 @@ }, "object": { "type": "Identifier", - "start": 9463, - "end": 9476, + "start": 9484, + "end": 9497, "loc": { "start": { "line": 262, @@ -16217,8 +16283,8 @@ }, "property": { "type": "Identifier", - "start": 9477, - "end": 9481, + "start": 9498, + "end": 9502, "loc": { "start": { "line": 262, @@ -16237,8 +16303,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 9482, - "end": 9497, + "start": 9503, + "end": 9518, "loc": { "start": { "line": 262, @@ -16257,8 +16323,8 @@ }, { "type": "ObjectExpression", - "start": 9499, - "end": 9589, + "start": 9520, + "end": 9610, "loc": { "start": { "line": 262, @@ -16272,8 +16338,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 9529, - "end": 9563, + "start": 9550, + "end": 9584, "loc": { "start": { "line": 263, @@ -16289,8 +16355,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9529, - "end": 9538, + "start": 9550, + "end": 9559, "loc": { "start": { "line": 263, @@ -16306,8 +16372,8 @@ }, "value": { "type": "MemberExpression", - "start": 9540, - "end": 9563, + "start": 9561, + "end": 9584, "loc": { "start": { "line": 263, @@ -16320,8 +16386,8 @@ }, "object": { "type": "Identifier", - "start": 9540, - "end": 9546, + "start": 9561, + "end": 9567, "loc": { "start": { "line": 263, @@ -16337,8 +16403,8 @@ }, "property": { "type": "Identifier", - "start": 9547, - "end": 9563, + "start": 9568, + "end": 9584, "loc": { "start": { "line": 263, @@ -16359,8 +16425,8 @@ }, { "type": "BooleanLiteral", - "start": 9591, - "end": 9595, + "start": 9612, + "end": 9616, "loc": { "start": { "line": 264, @@ -16382,8 +16448,8 @@ }, { "type": "ExpressionStatement", - "start": 9641, - "end": 9658, + "start": 9662, + "end": 9679, "loc": { "start": { "line": 267, @@ -16396,8 +16462,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9641, - "end": 9657, + "start": 9662, + "end": 9678, "loc": { "start": { "line": 267, @@ -16411,8 +16477,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 9641, - "end": 9653, + "start": 9662, + "end": 9674, "loc": { "start": { "line": 267, @@ -16425,8 +16491,8 @@ }, "object": { "type": "ThisExpression", - "start": 9641, - "end": 9645, + "start": 9662, + "end": 9666, "loc": { "start": { "line": 267, @@ -16440,8 +16506,8 @@ }, "property": { "type": "Identifier", - "start": 9646, - "end": 9653, + "start": 9667, + "end": 9674, "loc": { "start": { "line": 267, @@ -16459,8 +16525,8 @@ }, "right": { "type": "NumericLiteral", - "start": 9656, - "end": 9657, + "start": 9677, + "end": 9678, "loc": { "start": { "line": 267, @@ -16485,8 +16551,8 @@ }, { "type": "NumericLiteral", - "start": 9679, - "end": 9682, + "start": 9700, + "end": 9703, "loc": { "start": { "line": 269, @@ -16511,8 +16577,8 @@ { "type": "CommentLine", "value": " First click", - "start": 8322, - "end": 8336, + "start": 8343, + "end": 8357, "loc": { "start": { "line": 237, @@ -16529,8 +16595,8 @@ { "type": "CommentLine", "value": " FIXME: Too short for track pads", - "start": 9686, - "end": 9720, + "start": 9707, + "end": 9741, "loc": { "start": { "line": 269, @@ -16549,8 +16615,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 9741, - "end": 12176, + "start": 9762, + "end": 12197, "loc": { "start": { "line": 271, @@ -16564,8 +16630,8 @@ "body": [ { "type": "IfStatement", - "start": 9776, - "end": 9921, + "start": 9797, + "end": 9942, "loc": { "start": { "line": 273, @@ -16578,8 +16644,8 @@ }, "test": { "type": "BinaryExpression", - "start": 9780, - "end": 9802, + "start": 9801, + "end": 9823, "loc": { "start": { "line": 273, @@ -16592,8 +16658,8 @@ }, "left": { "type": "MemberExpression", - "start": 9780, - "end": 9793, + "start": 9801, + "end": 9814, "loc": { "start": { "line": 273, @@ -16606,8 +16672,8 @@ }, "object": { "type": "ThisExpression", - "start": 9780, - "end": 9784, + "start": 9801, + "end": 9805, "loc": { "start": { "line": 273, @@ -16622,8 +16688,8 @@ }, "property": { "type": "Identifier", - "start": 9785, - "end": 9793, + "start": 9806, + "end": 9814, "loc": { "start": { "line": 273, @@ -16643,8 +16709,8 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 9798, - "end": 9802, + "start": 9819, + "end": 9823, "loc": { "start": { "line": 273, @@ -16660,8 +16726,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9804, - "end": 9921, + "start": 9825, + "end": 9942, "loc": { "start": { "line": 273, @@ -16675,8 +16741,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9826, - "end": 9861, + "start": 9847, + "end": 9882, "loc": { "start": { "line": 274, @@ -16689,8 +16755,8 @@ }, "expression": { "type": "CallExpression", - "start": 9826, - "end": 9860, + "start": 9847, + "end": 9881, "loc": { "start": { "line": 274, @@ -16703,8 +16769,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9826, - "end": 9845, + "start": 9847, + "end": 9866, "loc": { "start": { "line": 274, @@ -16717,8 +16783,8 @@ }, "object": { "type": "Identifier", - "start": 9826, - "end": 9832, + "start": 9847, + "end": 9853, "loc": { "start": { "line": 274, @@ -16734,8 +16800,8 @@ }, "property": { "type": "Identifier", - "start": 9833, - "end": 9845, + "start": 9854, + "end": 9866, "loc": { "start": { "line": 274, @@ -16754,8 +16820,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 9846, - "end": 9859, + "start": 9867, + "end": 9880, "loc": { "start": { "line": 274, @@ -16768,8 +16834,8 @@ }, "object": { "type": "ThisExpression", - "start": 9846, - "end": 9850, + "start": 9867, + "end": 9871, "loc": { "start": { "line": 274, @@ -16783,8 +16849,8 @@ }, "property": { "type": "Identifier", - "start": 9851, - "end": 9859, + "start": 9872, + "end": 9880, "loc": { "start": { "line": 274, @@ -16805,8 +16871,8 @@ }, { "type": "ExpressionStatement", - "start": 9882, - "end": 9903, + "start": 9903, + "end": 9924, "loc": { "start": { "line": 275, @@ -16819,8 +16885,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9882, - "end": 9902, + "start": 9903, + "end": 9923, "loc": { "start": { "line": 275, @@ -16834,8 +16900,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 9882, - "end": 9895, + "start": 9903, + "end": 9916, "loc": { "start": { "line": 275, @@ -16848,8 +16914,8 @@ }, "object": { "type": "ThisExpression", - "start": 9882, - "end": 9886, + "start": 9903, + "end": 9907, "loc": { "start": { "line": 275, @@ -16863,8 +16929,8 @@ }, "property": { "type": "Identifier", - "start": 9887, - "end": 9895, + "start": 9908, + "end": 9916, "loc": { "start": { "line": 275, @@ -16882,8 +16948,8 @@ }, "right": { "type": "NullLiteral", - "start": 9898, - "end": 9902, + "start": 9919, + "end": 9923, "loc": { "start": { "line": 275, @@ -16905,8 +16971,8 @@ { "type": "CommentLine", "value": " Second click", - "start": 9743, - "end": 9758, + "start": 9764, + "end": 9779, "loc": { "start": { "line": 271, @@ -16922,8 +16988,8 @@ }, { "type": "ExpressionStatement", - "start": 9939, - "end": 9994, + "start": 9960, + "end": 10015, "loc": { "start": { "line": 278, @@ -16936,8 +17002,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9939, - "end": 9993, + "start": 9960, + "end": 10014, "loc": { "start": { "line": 278, @@ -16951,8 +17017,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 9939, - "end": 9967, + "start": 9960, + "end": 9988, "loc": { "start": { "line": 278, @@ -16965,8 +17031,8 @@ }, "object": { "type": "Identifier", - "start": 9939, - "end": 9953, + "start": 9960, + "end": 9974, "loc": { "start": { "line": 278, @@ -16982,8 +17048,8 @@ }, "property": { "type": "Identifier", - "start": 9954, - "end": 9967, + "start": 9975, + "end": 9988, "loc": { "start": { "line": 278, @@ -17001,8 +17067,8 @@ }, "right": { "type": "MemberExpression", - "start": 9970, - "end": 9993, + "start": 9991, + "end": 10014, "loc": { "start": { "line": 278, @@ -17015,8 +17081,8 @@ }, "object": { "type": "Identifier", - "start": 9970, - "end": 9976, + "start": 9991, + "end": 9997, "loc": { "start": { "line": 278, @@ -17032,8 +17098,8 @@ }, "property": { "type": "Identifier", - "start": 9977, - "end": 9993, + "start": 9998, + "end": 10014, "loc": { "start": { "line": 278, @@ -17053,8 +17119,8 @@ }, { "type": "ExpressionStatement", - "start": 10011, - "end": 10118, + "start": 10032, + "end": 10139, "loc": { "start": { "line": 279, @@ -17067,8 +17133,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 10011, - "end": 10117, + "start": 10032, + "end": 10138, "loc": { "start": { "line": 279, @@ -17082,8 +17148,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 10011, - "end": 10044, + "start": 10032, + "end": 10065, "loc": { "start": { "line": 279, @@ -17096,8 +17162,8 @@ }, "object": { "type": "Identifier", - "start": 10011, - "end": 10025, + "start": 10032, + "end": 10046, "loc": { "start": { "line": 279, @@ -17113,8 +17179,8 @@ }, "property": { "type": "Identifier", - "start": 10026, - "end": 10044, + "start": 10047, + "end": 10065, "loc": { "start": { "line": 279, @@ -17132,8 +17198,8 @@ }, "right": { "type": "LogicalExpression", - "start": 10047, - "end": 10117, + "start": 10068, + "end": 10138, "loc": { "start": { "line": 279, @@ -17146,8 +17212,8 @@ }, "left": { "type": "LogicalExpression", - "start": 10047, - "end": 10090, + "start": 10068, + "end": 10111, "loc": { "start": { "line": 279, @@ -17160,8 +17226,8 @@ }, "left": { "type": "MemberExpression", - "start": 10047, - "end": 10070, + "start": 10068, + "end": 10091, "loc": { "start": { "line": 279, @@ -17174,8 +17240,8 @@ }, "object": { "type": "Identifier", - "start": 10047, - "end": 10054, + "start": 10068, + "end": 10075, "loc": { "start": { "line": 279, @@ -17191,8 +17257,8 @@ }, "property": { "type": "Identifier", - "start": 10055, - "end": 10070, + "start": 10076, + "end": 10091, "loc": { "start": { "line": 279, @@ -17211,8 +17277,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 10074, - "end": 10090, + "start": 10095, + "end": 10111, "loc": { "start": { "line": 279, @@ -17230,8 +17296,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 10094, - "end": 10117, + "start": 10115, + "end": 10138, "loc": { "start": { "line": 279, @@ -17250,8 +17316,8 @@ }, { "type": "ExpressionStatement", - "start": 10135, - "end": 10233, + "start": 10156, + "end": 10254, "loc": { "start": { "line": 280, @@ -17264,8 +17330,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 10135, - "end": 10232, + "start": 10156, + "end": 10253, "loc": { "start": { "line": 280, @@ -17279,8 +17345,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 10135, - "end": 10169, + "start": 10156, + "end": 10190, "loc": { "start": { "line": 280, @@ -17293,8 +17359,8 @@ }, "object": { "type": "Identifier", - "start": 10135, - "end": 10149, + "start": 10156, + "end": 10170, "loc": { "start": { "line": 280, @@ -17310,8 +17376,8 @@ }, "property": { "type": "Identifier", - "start": 10150, - "end": 10169, + "start": 10171, + "end": 10190, "loc": { "start": { "line": 280, @@ -17329,8 +17395,8 @@ }, "right": { "type": "LogicalExpression", - "start": 10172, - "end": 10232, + "start": 10193, + "end": 10253, "loc": { "start": { "line": 280, @@ -17343,8 +17409,8 @@ }, "left": { "type": "MemberExpression", - "start": 10172, - "end": 10205, + "start": 10193, + "end": 10226, "loc": { "start": { "line": 280, @@ -17357,8 +17423,8 @@ }, "object": { "type": "Identifier", - "start": 10172, - "end": 10186, + "start": 10193, + "end": 10207, "loc": { "start": { "line": 280, @@ -17374,8 +17440,8 @@ }, "property": { "type": "Identifier", - "start": 10187, - "end": 10205, + "start": 10208, + "end": 10226, "loc": { "start": { "line": 280, @@ -17394,8 +17460,8 @@ "operator": "&&", "right": { "type": "Identifier", - "start": 10209, - "end": 10232, + "start": 10230, + "end": 10253, "loc": { "start": { "line": 280, @@ -17414,8 +17480,8 @@ }, { "type": "ExpressionStatement", - "start": 10250, - "end": 10274, + "start": 10271, + "end": 10295, "loc": { "start": { "line": 281, @@ -17428,8 +17494,8 @@ }, "expression": { "type": "CallExpression", - "start": 10250, - "end": 10273, + "start": 10271, + "end": 10294, "loc": { "start": { "line": 281, @@ -17442,8 +17508,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10250, - "end": 10271, + "start": 10271, + "end": 10292, "loc": { "start": { "line": 281, @@ -17456,8 +17522,8 @@ }, "object": { "type": "Identifier", - "start": 10250, - "end": 10264, + "start": 10271, + "end": 10285, "loc": { "start": { "line": 281, @@ -17473,8 +17539,8 @@ }, "property": { "type": "Identifier", - "start": 10265, - "end": 10271, + "start": 10286, + "end": 10292, "loc": { "start": { "line": 281, @@ -17495,8 +17561,8 @@ }, { "type": "IfStatement", - "start": 10292, - "end": 12127, + "start": 10313, + "end": 12148, "loc": { "start": { "line": 283, @@ -17509,8 +17575,8 @@ }, "test": { "type": "MemberExpression", - "start": 10296, - "end": 10321, + "start": 10317, + "end": 10342, "loc": { "start": { "line": 283, @@ -17523,8 +17589,8 @@ }, "object": { "type": "Identifier", - "start": 10296, - "end": 10310, + "start": 10317, + "end": 10331, "loc": { "start": { "line": 283, @@ -17540,8 +17606,8 @@ }, "property": { "type": "Identifier", - "start": 10311, - "end": 10321, + "start": 10332, + "end": 10342, "loc": { "start": { "line": 283, @@ -17559,8 +17625,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 10323, - "end": 11320, + "start": 10344, + "end": 11341, "loc": { "start": { "line": 283, @@ -17574,8 +17640,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 10346, - "end": 10414, + "start": 10367, + "end": 10435, "loc": { "start": { "line": 285, @@ -17588,8 +17654,8 @@ }, "expression": { "type": "CallExpression", - "start": 10346, - "end": 10413, + "start": 10367, + "end": 10434, "loc": { "start": { "line": 285, @@ -17602,8 +17668,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10346, - "end": 10364, + "start": 10367, + "end": 10385, "loc": { "start": { "line": 285, @@ -17616,8 +17682,8 @@ }, "object": { "type": "Identifier", - "start": 10346, - "end": 10359, + "start": 10367, + "end": 10380, "loc": { "start": { "line": 285, @@ -17633,8 +17699,8 @@ }, "property": { "type": "Identifier", - "start": 10360, - "end": 10364, + "start": 10381, + "end": 10385, "loc": { "start": { "line": 285, @@ -17653,8 +17719,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 10365, - "end": 10379, + "start": 10386, + "end": 10400, "loc": { "start": { "line": 285, @@ -17673,8 +17739,8 @@ }, { "type": "MemberExpression", - "start": 10381, - "end": 10406, + "start": 10402, + "end": 10427, "loc": { "start": { "line": 285, @@ -17687,8 +17753,8 @@ }, "object": { "type": "Identifier", - "start": 10381, - "end": 10395, + "start": 10402, + "end": 10416, "loc": { "start": { "line": 285, @@ -17704,8 +17770,8 @@ }, "property": { "type": "Identifier", - "start": 10396, - "end": 10406, + "start": 10417, + "end": 10427, "loc": { "start": { "line": 285, @@ -17723,8 +17789,8 @@ }, { "type": "BooleanLiteral", - "start": 10408, - "end": 10412, + "start": 10429, + "end": 10433, "loc": { "start": { "line": 285, @@ -17742,8 +17808,8 @@ }, { "type": "IfStatement", - "start": 10436, - "end": 10593, + "start": 10457, + "end": 10614, "loc": { "start": { "line": 287, @@ -17756,8 +17822,8 @@ }, "test": { "type": "MemberExpression", - "start": 10440, - "end": 10468, + "start": 10461, + "end": 10489, "loc": { "start": { "line": 287, @@ -17770,8 +17836,8 @@ }, "object": { "type": "Identifier", - "start": 10440, - "end": 10454, + "start": 10461, + "end": 10475, "loc": { "start": { "line": 287, @@ -17787,8 +17853,8 @@ }, "property": { "type": "Identifier", - "start": 10455, - "end": 10468, + "start": 10476, + "end": 10489, "loc": { "start": { "line": 287, @@ -17806,8 +17872,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 10470, - "end": 10593, + "start": 10491, + "end": 10614, "loc": { "start": { "line": 287, @@ -17821,8 +17887,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 10496, - "end": 10571, + "start": 10517, + "end": 10592, "loc": { "start": { "line": 288, @@ -17835,8 +17901,8 @@ }, "expression": { "type": "CallExpression", - "start": 10496, - "end": 10570, + "start": 10517, + "end": 10591, "loc": { "start": { "line": 288, @@ -17849,8 +17915,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10496, - "end": 10514, + "start": 10517, + "end": 10535, "loc": { "start": { "line": 288, @@ -17863,8 +17929,8 @@ }, "object": { "type": "Identifier", - "start": 10496, - "end": 10509, + "start": 10517, + "end": 10530, "loc": { "start": { "line": 288, @@ -17880,8 +17946,8 @@ }, "property": { "type": "Identifier", - "start": 10510, - "end": 10514, + "start": 10531, + "end": 10535, "loc": { "start": { "line": 288, @@ -17900,8 +17966,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 10515, - "end": 10536, + "start": 10536, + "end": 10557, "loc": { "start": { "line": 288, @@ -17920,8 +17986,8 @@ }, { "type": "MemberExpression", - "start": 10538, - "end": 10563, + "start": 10559, + "end": 10584, "loc": { "start": { "line": 288, @@ -17934,8 +18000,8 @@ }, "object": { "type": "Identifier", - "start": 10538, - "end": 10552, + "start": 10559, + "end": 10573, "loc": { "start": { "line": 288, @@ -17951,8 +18017,8 @@ }, "property": { "type": "Identifier", - "start": 10553, - "end": 10563, + "start": 10574, + "end": 10584, "loc": { "start": { "line": 288, @@ -17970,8 +18036,8 @@ }, { "type": "BooleanLiteral", - "start": 10565, - "end": 10569, + "start": 10586, + "end": 10590, "loc": { "start": { "line": 288, @@ -17994,8 +18060,8 @@ }, { "type": "IfStatement", - "start": 10615, - "end": 11301, + "start": 10636, + "end": 11322, "loc": { "start": { "line": 291, @@ -18008,8 +18074,8 @@ }, "test": { "type": "MemberExpression", - "start": 10619, - "end": 10642, + "start": 10640, + "end": 10663, "loc": { "start": { "line": 291, @@ -18022,8 +18088,8 @@ }, "object": { "type": "Identifier", - "start": 10619, - "end": 10626, + "start": 10640, + "end": 10647, "loc": { "start": { "line": 291, @@ -18039,8 +18105,8 @@ }, "property": { "type": "Identifier", - "start": 10627, - "end": 10642, + "start": 10648, + "end": 10663, "loc": { "start": { "line": 291, @@ -18058,8 +18124,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 10644, - "end": 11301, + "start": 10665, + "end": 11322, "loc": { "start": { "line": 291, @@ -18073,8 +18139,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 10671, - "end": 10710, + "start": 10692, + "end": 10731, "loc": { "start": { "line": 293, @@ -18087,8 +18153,8 @@ }, "expression": { "type": "CallExpression", - "start": 10671, - "end": 10709, + "start": 10692, + "end": 10730, "loc": { "start": { "line": 293, @@ -18101,8 +18167,8 @@ }, "callee": { "type": "Identifier", - "start": 10671, - "end": 10682, + "start": 10692, + "end": 10703, "loc": { "start": { "line": 293, @@ -18119,8 +18185,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 10683, - "end": 10708, + "start": 10704, + "end": 10729, "loc": { "start": { "line": 293, @@ -18133,8 +18199,8 @@ }, "object": { "type": "Identifier", - "start": 10683, - "end": 10697, + "start": 10704, + "end": 10718, "loc": { "start": { "line": 293, @@ -18150,8 +18216,8 @@ }, "property": { "type": "Identifier", - "start": 10698, - "end": 10708, + "start": 10719, + "end": 10729, "loc": { "start": { "line": 293, @@ -18172,8 +18238,8 @@ }, { "type": "IfStatement", - "start": 10736, - "end": 11279, + "start": 10757, + "end": 11300, "loc": { "start": { "line": 295, @@ -18186,8 +18252,8 @@ }, "test": { "type": "LogicalExpression", - "start": 10740, - "end": 10787, + "start": 10761, + "end": 10808, "loc": { "start": { "line": 295, @@ -18200,8 +18266,8 @@ }, "left": { "type": "UnaryExpression", - "start": 10741, - "end": 10761, + "start": 10762, + "end": 10782, "loc": { "start": { "line": 295, @@ -18216,8 +18282,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 10742, - "end": 10761, + "start": 10763, + "end": 10782, "loc": { "start": { "line": 295, @@ -18230,8 +18296,8 @@ }, "object": { "type": "Identifier", - "start": 10742, - "end": 10749, + "start": 10763, + "end": 10770, "loc": { "start": { "line": 295, @@ -18247,8 +18313,8 @@ }, "property": { "type": "Identifier", - "start": 10750, - "end": 10761, + "start": 10771, + "end": 10782, "loc": { "start": { "line": 295, @@ -18267,14 +18333,14 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 10740 + "parenStart": 10761 } }, "operator": "&&", "right": { "type": "MemberExpression", - "start": 10766, - "end": 10787, + "start": 10787, + "end": 10808, "loc": { "start": { "line": 295, @@ -18287,8 +18353,8 @@ }, "object": { "type": "Identifier", - "start": 10766, - "end": 10773, + "start": 10787, + "end": 10794, "loc": { "start": { "line": 295, @@ -18304,8 +18370,8 @@ }, "property": { "type": "Identifier", - "start": 10774, - "end": 10787, + "start": 10795, + "end": 10808, "loc": { "start": { "line": 295, @@ -18324,8 +18390,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 10789, - "end": 11279, + "start": 10810, + "end": 11300, "loc": { "start": { "line": 295, @@ -18339,8 +18405,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 10820, - "end": 10883, + "start": 10841, + "end": 10904, "loc": { "start": { "line": 297, @@ -18354,8 +18420,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 10826, - "end": 10882, + "start": 10847, + "end": 10903, "loc": { "start": { "line": 297, @@ -18368,8 +18434,8 @@ }, "id": { "type": "Identifier", - "start": 10826, - "end": 10842, + "start": 10847, + "end": 10863, "loc": { "start": { "line": 297, @@ -18385,8 +18451,8 @@ }, "init": { "type": "MemberExpression", - "start": 10845, - "end": 10882, + "start": 10866, + "end": 10903, "loc": { "start": { "line": 297, @@ -18399,8 +18465,8 @@ }, "object": { "type": "MemberExpression", - "start": 10845, - "end": 10877, + "start": 10866, + "end": 10898, "loc": { "start": { "line": 297, @@ -18413,8 +18479,8 @@ }, "object": { "type": "MemberExpression", - "start": 10845, - "end": 10870, + "start": 10866, + "end": 10891, "loc": { "start": { "line": 297, @@ -18427,8 +18493,8 @@ }, "object": { "type": "Identifier", - "start": 10845, - "end": 10859, + "start": 10866, + "end": 10880, "loc": { "start": { "line": 297, @@ -18444,8 +18510,8 @@ }, "property": { "type": "Identifier", - "start": 10860, - "end": 10870, + "start": 10881, + "end": 10891, "loc": { "start": { "line": 297, @@ -18463,8 +18529,8 @@ }, "property": { "type": "Identifier", - "start": 10871, - "end": 10877, + "start": 10892, + "end": 10898, "loc": { "start": { "line": 297, @@ -18482,8 +18548,8 @@ }, "property": { "type": "Identifier", - "start": 10878, - "end": 10882, + "start": 10899, + "end": 10903, "loc": { "start": { "line": 297, @@ -18505,8 +18571,8 @@ }, { "type": "VariableDeclaration", - "start": 10912, - "end": 10980, + "start": 10933, + "end": 11001, "loc": { "start": { "line": 298, @@ -18520,8 +18586,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 10918, - "end": 10979, + "start": 10939, + "end": 11000, "loc": { "start": { "line": 298, @@ -18534,8 +18600,8 @@ }, "id": { "type": "Identifier", - "start": 10918, - "end": 10939, + "start": 10939, + "end": 10960, "loc": { "start": { "line": 298, @@ -18551,8 +18617,8 @@ }, "init": { "type": "CallExpression", - "start": 10942, - "end": 10979, + "start": 10963, + "end": 11000, "loc": { "start": { "line": 298, @@ -18565,8 +18631,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10942, - "end": 10961, + "start": 10963, + "end": 10982, "loc": { "start": { "line": 298, @@ -18579,8 +18645,8 @@ }, "object": { "type": "Identifier", - "start": 10942, - "end": 10946, + "start": 10963, + "end": 10967, "loc": { "start": { "line": 298, @@ -18596,8 +18662,8 @@ }, "property": { "type": "Identifier", - "start": 10947, - "end": 10961, + "start": 10968, + "end": 10982, "loc": { "start": { "line": 298, @@ -18616,8 +18682,8 @@ "arguments": [ { "type": "Identifier", - "start": 10962, - "end": 10978, + "start": 10983, + "end": 10999, "loc": { "start": { "line": 298, @@ -18639,8 +18705,8 @@ }, { "type": "ExpressionStatement", - "start": 11010, - "end": 11073, + "start": 11031, + "end": 11094, "loc": { "start": { "line": 300, @@ -18653,8 +18719,8 @@ }, "expression": { "type": "CallExpression", - "start": 11010, - "end": 11072, + "start": 11031, + "end": 11093, "loc": { "start": { "line": 300, @@ -18667,8 +18733,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11010, - "end": 11049, + "start": 11031, + "end": 11070, "loc": { "start": { "line": 300, @@ -18681,8 +18747,8 @@ }, "object": { "type": "MemberExpression", - "start": 11010, - "end": 11037, + "start": 11031, + "end": 11058, "loc": { "start": { "line": 300, @@ -18695,8 +18761,8 @@ }, "object": { "type": "Identifier", - "start": 11010, - "end": 11021, + "start": 11031, + "end": 11042, "loc": { "start": { "line": 300, @@ -18712,8 +18778,8 @@ }, "property": { "type": "Identifier", - "start": 11022, - "end": 11037, + "start": 11043, + "end": 11058, "loc": { "start": { "line": 300, @@ -18731,8 +18797,8 @@ }, "property": { "type": "Identifier", - "start": 11038, - "end": 11049, + "start": 11059, + "end": 11070, "loc": { "start": { "line": 300, @@ -18751,8 +18817,8 @@ "arguments": [ { "type": "Identifier", - "start": 11050, - "end": 11071, + "start": 11071, + "end": 11092, "loc": { "start": { "line": 300, @@ -18771,8 +18837,8 @@ }, { "type": "IfStatement", - "start": 11103, - "end": 11253, + "start": 11124, + "end": 11274, "loc": { "start": { "line": 302, @@ -18785,8 +18851,8 @@ }, "test": { "type": "CallExpression", - "start": 11107, - "end": 11147, + "start": 11128, + "end": 11168, "loc": { "start": { "line": 302, @@ -18799,8 +18865,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11107, - "end": 11145, + "start": 11128, + "end": 11166, "loc": { "start": { "line": 302, @@ -18813,8 +18879,8 @@ }, "object": { "type": "MemberExpression", - "start": 11107, - "end": 11134, + "start": 11128, + "end": 11155, "loc": { "start": { "line": 302, @@ -18827,8 +18893,8 @@ }, "object": { "type": "Identifier", - "start": 11107, - "end": 11118, + "start": 11128, + "end": 11139, "loc": { "start": { "line": 302, @@ -18844,8 +18910,8 @@ }, "property": { "type": "Identifier", - "start": 11119, - "end": 11134, + "start": 11140, + "end": 11155, "loc": { "start": { "line": 302, @@ -18863,8 +18929,8 @@ }, "property": { "type": "Identifier", - "start": 11135, - "end": 11145, + "start": 11156, + "end": 11166, "loc": { "start": { "line": 302, @@ -18884,8 +18950,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 11149, - "end": 11253, + "start": 11170, + "end": 11274, "loc": { "start": { "line": 302, @@ -18899,8 +18965,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 11183, - "end": 11223, + "start": 11204, + "end": 11244, "loc": { "start": { "line": 303, @@ -18913,8 +18979,8 @@ }, "expression": { "type": "CallExpression", - "start": 11183, - "end": 11222, + "start": 11204, + "end": 11243, "loc": { "start": { "line": 303, @@ -18927,8 +18993,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11183, - "end": 11220, + "start": 11204, + "end": 11241, "loc": { "start": { "line": 303, @@ -18941,8 +19007,8 @@ }, "object": { "type": "MemberExpression", - "start": 11183, - "end": 11210, + "start": 11204, + "end": 11231, "loc": { "start": { "line": 303, @@ -18955,8 +19021,8 @@ }, "object": { "type": "Identifier", - "start": 11183, - "end": 11194, + "start": 11204, + "end": 11215, "loc": { "start": { "line": 303, @@ -18972,8 +19038,8 @@ }, "property": { "type": "Identifier", - "start": 11195, - "end": 11210, + "start": 11216, + "end": 11231, "loc": { "start": { "line": 303, @@ -18991,8 +19057,8 @@ }, "property": { "type": "Identifier", - "start": 11211, - "end": 11220, + "start": 11232, + "end": 11241, "loc": { "start": { "line": 303, @@ -19031,8 +19097,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 11326, - "end": 12127, + "start": 11347, + "end": 12148, "loc": { "start": { "line": 308, @@ -19046,8 +19112,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 11349, - "end": 11481, + "start": 11370, + "end": 11502, "loc": { "start": { "line": 310, @@ -19060,8 +19126,8 @@ }, "expression": { "type": "CallExpression", - "start": 11349, - "end": 11480, + "start": 11370, + "end": 11501, "loc": { "start": { "line": 310, @@ -19074,8 +19140,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11349, - "end": 11367, + "start": 11370, + "end": 11388, "loc": { "start": { "line": 310, @@ -19088,8 +19154,8 @@ }, "object": { "type": "Identifier", - "start": 11349, - "end": 11362, + "start": 11370, + "end": 11383, "loc": { "start": { "line": 310, @@ -19105,8 +19171,8 @@ }, "property": { "type": "Identifier", - "start": 11363, - "end": 11367, + "start": 11384, + "end": 11388, "loc": { "start": { "line": 310, @@ -19125,8 +19191,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 11368, - "end": 11389, + "start": 11389, + "end": 11410, "loc": { "start": { "line": 310, @@ -19145,8 +19211,8 @@ }, { "type": "ObjectExpression", - "start": 11391, - "end": 11473, + "start": 11412, + "end": 11494, "loc": { "start": { "line": 310, @@ -19160,8 +19226,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 11417, - "end": 11451, + "start": 11438, + "end": 11472, "loc": { "start": { "line": 311, @@ -19177,8 +19243,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 11417, - "end": 11426, + "start": 11438, + "end": 11447, "loc": { "start": { "line": 311, @@ -19194,8 +19260,8 @@ }, "value": { "type": "MemberExpression", - "start": 11428, - "end": 11451, + "start": 11449, + "end": 11472, "loc": { "start": { "line": 311, @@ -19208,8 +19274,8 @@ }, "object": { "type": "Identifier", - "start": 11428, - "end": 11434, + "start": 11449, + "end": 11455, "loc": { "start": { "line": 311, @@ -19225,8 +19291,8 @@ }, "property": { "type": "Identifier", - "start": 11435, - "end": 11451, + "start": 11456, + "end": 11472, "loc": { "start": { "line": 311, @@ -19247,8 +19313,8 @@ }, { "type": "BooleanLiteral", - "start": 11475, - "end": 11479, + "start": 11496, + "end": 11500, "loc": { "start": { "line": 312, @@ -19266,8 +19332,8 @@ }, { "type": "IfStatement", - "start": 11503, - "end": 12109, + "start": 11524, + "end": 12130, "loc": { "start": { "line": 314, @@ -19280,8 +19346,8 @@ }, "test": { "type": "MemberExpression", - "start": 11507, - "end": 11530, + "start": 11528, + "end": 11551, "loc": { "start": { "line": 314, @@ -19294,8 +19360,8 @@ }, "object": { "type": "Identifier", - "start": 11507, - "end": 11514, + "start": 11528, + "end": 11535, "loc": { "start": { "line": 314, @@ -19311,8 +19377,8 @@ }, "property": { "type": "Identifier", - "start": 11515, - "end": 11530, + "start": 11536, + "end": 11551, "loc": { "start": { "line": 314, @@ -19330,8 +19396,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 11532, - "end": 12109, + "start": 11553, + "end": 12130, "loc": { "start": { "line": 314, @@ -19345,8 +19411,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 11559, - "end": 11573, + "start": 11580, + "end": 11594, "loc": { "start": { "line": 316, @@ -19359,8 +19425,8 @@ }, "expression": { "type": "CallExpression", - "start": 11559, - "end": 11572, + "start": 11580, + "end": 11593, "loc": { "start": { "line": 316, @@ -19373,8 +19439,8 @@ }, "callee": { "type": "Identifier", - "start": 11559, - "end": 11570, + "start": 11580, + "end": 11591, "loc": { "start": { "line": 316, @@ -19393,8 +19459,8 @@ }, { "type": "IfStatement", - "start": 11599, - "end": 12087, + "start": 11620, + "end": 12108, "loc": { "start": { "line": 318, @@ -19407,8 +19473,8 @@ }, "test": { "type": "LogicalExpression", - "start": 11603, - "end": 11650, + "start": 11624, + "end": 11671, "loc": { "start": { "line": 318, @@ -19421,8 +19487,8 @@ }, "left": { "type": "UnaryExpression", - "start": 11604, - "end": 11624, + "start": 11625, + "end": 11645, "loc": { "start": { "line": 318, @@ -19437,8 +19503,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 11605, - "end": 11624, + "start": 11626, + "end": 11645, "loc": { "start": { "line": 318, @@ -19451,8 +19517,8 @@ }, "object": { "type": "Identifier", - "start": 11605, - "end": 11612, + "start": 11626, + "end": 11633, "loc": { "start": { "line": 318, @@ -19468,8 +19534,8 @@ }, "property": { "type": "Identifier", - "start": 11613, - "end": 11624, + "start": 11634, + "end": 11645, "loc": { "start": { "line": 318, @@ -19488,14 +19554,14 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 11603 + "parenStart": 11624 } }, "operator": "&&", "right": { "type": "MemberExpression", - "start": 11629, - "end": 11650, + "start": 11650, + "end": 11671, "loc": { "start": { "line": 318, @@ -19508,8 +19574,8 @@ }, "object": { "type": "Identifier", - "start": 11629, - "end": 11636, + "start": 11650, + "end": 11657, "loc": { "start": { "line": 318, @@ -19525,8 +19591,8 @@ }, "property": { "type": "Identifier", - "start": 11637, - "end": 11650, + "start": 11658, + "end": 11671, "loc": { "start": { "line": 318, @@ -19545,8 +19611,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 11652, - "end": 12087, + "start": 11673, + "end": 12108, "loc": { "start": { "line": 318, @@ -19560,8 +19626,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 11683, - "end": 11712, + "start": 11704, + "end": 11733, "loc": { "start": { "line": 320, @@ -19575,8 +19641,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 11689, - "end": 11711, + "start": 11710, + "end": 11732, "loc": { "start": { "line": 320, @@ -19589,8 +19655,8 @@ }, "id": { "type": "Identifier", - "start": 11689, - "end": 11698, + "start": 11710, + "end": 11719, "loc": { "start": { "line": 320, @@ -19606,8 +19672,8 @@ }, "init": { "type": "MemberExpression", - "start": 11701, - "end": 11711, + "start": 11722, + "end": 11732, "loc": { "start": { "line": 320, @@ -19620,8 +19686,8 @@ }, "object": { "type": "Identifier", - "start": 11701, - "end": 11706, + "start": 11722, + "end": 11727, "loc": { "start": { "line": 320, @@ -19637,8 +19703,8 @@ }, "property": { "type": "Identifier", - "start": 11707, - "end": 11711, + "start": 11728, + "end": 11732, "loc": { "start": { "line": 320, @@ -19660,8 +19726,8 @@ }, { "type": "VariableDeclaration", - "start": 11741, - "end": 11795, + "start": 11762, + "end": 11816, "loc": { "start": { "line": 321, @@ -19675,8 +19741,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 11747, - "end": 11794, + "start": 11768, + "end": 11815, "loc": { "start": { "line": 321, @@ -19689,8 +19755,8 @@ }, "id": { "type": "Identifier", - "start": 11747, - "end": 11761, + "start": 11768, + "end": 11782, "loc": { "start": { "line": 321, @@ -19706,8 +19772,8 @@ }, "init": { "type": "CallExpression", - "start": 11764, - "end": 11794, + "start": 11785, + "end": 11815, "loc": { "start": { "line": 321, @@ -19720,8 +19786,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11764, - "end": 11783, + "start": 11785, + "end": 11804, "loc": { "start": { "line": 321, @@ -19734,8 +19800,8 @@ }, "object": { "type": "Identifier", - "start": 11764, - "end": 11768, + "start": 11785, + "end": 11789, "loc": { "start": { "line": 321, @@ -19751,8 +19817,8 @@ }, "property": { "type": "Identifier", - "start": 11769, - "end": 11783, + "start": 11790, + "end": 11804, "loc": { "start": { "line": 321, @@ -19771,8 +19837,8 @@ "arguments": [ { "type": "Identifier", - "start": 11784, - "end": 11793, + "start": 11805, + "end": 11814, "loc": { "start": { "line": 321, @@ -19794,8 +19860,8 @@ }, { "type": "ExpressionStatement", - "start": 11825, - "end": 11881, + "start": 11846, + "end": 11902, "loc": { "start": { "line": 323, @@ -19808,8 +19874,8 @@ }, "expression": { "type": "CallExpression", - "start": 11825, - "end": 11880, + "start": 11846, + "end": 11901, "loc": { "start": { "line": 323, @@ -19822,8 +19888,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11825, - "end": 11864, + "start": 11846, + "end": 11885, "loc": { "start": { "line": 323, @@ -19836,8 +19902,8 @@ }, "object": { "type": "MemberExpression", - "start": 11825, - "end": 11852, + "start": 11846, + "end": 11873, "loc": { "start": { "line": 323, @@ -19850,8 +19916,8 @@ }, "object": { "type": "Identifier", - "start": 11825, - "end": 11836, + "start": 11846, + "end": 11857, "loc": { "start": { "line": 323, @@ -19867,8 +19933,8 @@ }, "property": { "type": "Identifier", - "start": 11837, - "end": 11852, + "start": 11858, + "end": 11873, "loc": { "start": { "line": 323, @@ -19886,8 +19952,8 @@ }, "property": { "type": "Identifier", - "start": 11853, - "end": 11864, + "start": 11874, + "end": 11885, "loc": { "start": { "line": 323, @@ -19906,8 +19972,8 @@ "arguments": [ { "type": "Identifier", - "start": 11865, - "end": 11879, + "start": 11886, + "end": 11900, "loc": { "start": { "line": 323, @@ -19926,8 +19992,8 @@ }, { "type": "IfStatement", - "start": 11911, - "end": 12061, + "start": 11932, + "end": 12082, "loc": { "start": { "line": 325, @@ -19940,8 +20006,8 @@ }, "test": { "type": "CallExpression", - "start": 11915, - "end": 11955, + "start": 11936, + "end": 11976, "loc": { "start": { "line": 325, @@ -19954,8 +20020,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11915, - "end": 11953, + "start": 11936, + "end": 11974, "loc": { "start": { "line": 325, @@ -19968,8 +20034,8 @@ }, "object": { "type": "MemberExpression", - "start": 11915, - "end": 11942, + "start": 11936, + "end": 11963, "loc": { "start": { "line": 325, @@ -19982,8 +20048,8 @@ }, "object": { "type": "Identifier", - "start": 11915, - "end": 11926, + "start": 11936, + "end": 11947, "loc": { "start": { "line": 325, @@ -19999,8 +20065,8 @@ }, "property": { "type": "Identifier", - "start": 11927, - "end": 11942, + "start": 11948, + "end": 11963, "loc": { "start": { "line": 325, @@ -20018,8 +20084,8 @@ }, "property": { "type": "Identifier", - "start": 11943, - "end": 11953, + "start": 11964, + "end": 11974, "loc": { "start": { "line": 325, @@ -20039,8 +20105,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 11957, - "end": 12061, + "start": 11978, + "end": 12082, "loc": { "start": { "line": 325, @@ -20054,8 +20120,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 11991, - "end": 12031, + "start": 12012, + "end": 12052, "loc": { "start": { "line": 326, @@ -20068,8 +20134,8 @@ }, "expression": { "type": "CallExpression", - "start": 11991, - "end": 12030, + "start": 12012, + "end": 12051, "loc": { "start": { "line": 326, @@ -20082,8 +20148,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11991, - "end": 12028, + "start": 12012, + "end": 12049, "loc": { "start": { "line": 326, @@ -20096,8 +20162,8 @@ }, "object": { "type": "MemberExpression", - "start": 11991, - "end": 12018, + "start": 12012, + "end": 12039, "loc": { "start": { "line": 326, @@ -20110,8 +20176,8 @@ }, "object": { "type": "Identifier", - "start": 11991, - "end": 12002, + "start": 12012, + "end": 12023, "loc": { "start": { "line": 326, @@ -20127,8 +20193,8 @@ }, "property": { "type": "Identifier", - "start": 12003, - "end": 12018, + "start": 12024, + "end": 12039, "loc": { "start": { "line": 326, @@ -20146,8 +20212,8 @@ }, "property": { "type": "Identifier", - "start": 12019, - "end": 12028, + "start": 12040, + "end": 12049, "loc": { "start": { "line": 326, @@ -20187,8 +20253,8 @@ }, { "type": "ExpressionStatement", - "start": 12145, - "end": 12162, + "start": 12166, + "end": 12183, "loc": { "start": { "line": 332, @@ -20201,8 +20267,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 12145, - "end": 12161, + "start": 12166, + "end": 12182, "loc": { "start": { "line": 332, @@ -20216,8 +20282,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 12145, - "end": 12157, + "start": 12166, + "end": 12178, "loc": { "start": { "line": 332, @@ -20230,8 +20296,8 @@ }, "object": { "type": "ThisExpression", - "start": 12145, - "end": 12149, + "start": 12166, + "end": 12170, "loc": { "start": { "line": 332, @@ -20245,8 +20311,8 @@ }, "property": { "type": "Identifier", - "start": 12150, - "end": 12157, + "start": 12171, + "end": 12178, "loc": { "start": { "line": 332, @@ -20264,8 +20330,8 @@ }, "right": { "type": "NumericLiteral", - "start": 12160, - "end": 12161, + "start": 12181, + "end": 12182, "loc": { "start": { "line": 332, @@ -20295,8 +20361,8 @@ }, { "type": "BooleanLiteral", - "start": 12188, - "end": 12193, + "start": 12209, + "end": 12214, "loc": { "start": { "line": 334, @@ -20318,8 +20384,8 @@ }, { "type": "ClassMethod", - "start": 12207, - "end": 12410, + "start": 12228, + "end": 12431, "loc": { "start": { "line": 337, @@ -20334,8 +20400,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 12207, - "end": 12212, + "start": 12228, + "end": 12233, "loc": { "start": { "line": 337, @@ -20357,8 +20423,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 12215, - "end": 12410, + "start": 12236, + "end": 12431, "loc": { "start": { "line": 337, @@ -20372,8 +20438,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 12225, - "end": 12242, + "start": 12246, + "end": 12263, "loc": { "start": { "line": 338, @@ -20386,8 +20452,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 12225, - "end": 12241, + "start": 12246, + "end": 12262, "loc": { "start": { "line": 338, @@ -20401,8 +20467,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 12225, - "end": 12237, + "start": 12246, + "end": 12258, "loc": { "start": { "line": 338, @@ -20415,8 +20481,8 @@ }, "object": { "type": "ThisExpression", - "start": 12225, - "end": 12229, + "start": 12246, + "end": 12250, "loc": { "start": { "line": 338, @@ -20430,8 +20496,8 @@ }, "property": { "type": "Identifier", - "start": 12230, - "end": 12237, + "start": 12251, + "end": 12258, "loc": { "start": { "line": 338, @@ -20449,8 +20515,8 @@ }, "right": { "type": "NumericLiteral", - "start": 12240, - "end": 12241, + "start": 12261, + "end": 12262, "loc": { "start": { "line": 338, @@ -20471,8 +20537,8 @@ }, { "type": "ExpressionStatement", - "start": 12251, - "end": 12283, + "start": 12272, + "end": 12304, "loc": { "start": { "line": 339, @@ -20485,8 +20551,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 12251, - "end": 12282, + "start": 12272, + "end": 12303, "loc": { "start": { "line": 339, @@ -20500,8 +20566,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 12251, - "end": 12275, + "start": 12272, + "end": 12296, "loc": { "start": { "line": 339, @@ -20514,8 +20580,8 @@ }, "object": { "type": "ThisExpression", - "start": 12251, - "end": 12255, + "start": 12272, + "end": 12276, "loc": { "start": { "line": 339, @@ -20529,8 +20595,8 @@ }, "property": { "type": "Identifier", - "start": 12256, - "end": 12275, + "start": 12277, + "end": 12296, "loc": { "start": { "line": 339, @@ -20548,8 +20614,8 @@ }, "right": { "type": "NullLiteral", - "start": 12278, - "end": 12282, + "start": 12299, + "end": 12303, "loc": { "start": { "line": 339, @@ -20565,8 +20631,8 @@ }, { "type": "IfStatement", - "start": 12292, - "end": 12404, + "start": 12313, + "end": 12425, "loc": { "start": { "line": 340, @@ -20579,8 +20645,8 @@ }, "test": { "type": "MemberExpression", - "start": 12296, - "end": 12309, + "start": 12317, + "end": 12330, "loc": { "start": { "line": 340, @@ -20593,8 +20659,8 @@ }, "object": { "type": "ThisExpression", - "start": 12296, - "end": 12300, + "start": 12317, + "end": 12321, "loc": { "start": { "line": 340, @@ -20608,8 +20674,8 @@ }, "property": { "type": "Identifier", - "start": 12301, - "end": 12309, + "start": 12322, + "end": 12330, "loc": { "start": { "line": 340, @@ -20627,8 +20693,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 12311, - "end": 12404, + "start": 12332, + "end": 12425, "loc": { "start": { "line": 340, @@ -20642,8 +20708,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 12325, - "end": 12360, + "start": 12346, + "end": 12381, "loc": { "start": { "line": 341, @@ -20656,8 +20722,8 @@ }, "expression": { "type": "CallExpression", - "start": 12325, - "end": 12359, + "start": 12346, + "end": 12380, "loc": { "start": { "line": 341, @@ -20670,8 +20736,8 @@ }, "callee": { "type": "MemberExpression", - "start": 12325, - "end": 12344, + "start": 12346, + "end": 12365, "loc": { "start": { "line": 341, @@ -20684,8 +20750,8 @@ }, "object": { "type": "Identifier", - "start": 12325, - "end": 12331, + "start": 12346, + "end": 12352, "loc": { "start": { "line": 341, @@ -20701,8 +20767,8 @@ }, "property": { "type": "Identifier", - "start": 12332, - "end": 12344, + "start": 12353, + "end": 12365, "loc": { "start": { "line": 341, @@ -20721,8 +20787,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 12345, - "end": 12358, + "start": 12366, + "end": 12379, "loc": { "start": { "line": 341, @@ -20735,8 +20801,8 @@ }, "object": { "type": "ThisExpression", - "start": 12345, - "end": 12349, + "start": 12366, + "end": 12370, "loc": { "start": { "line": 341, @@ -20750,8 +20816,8 @@ }, "property": { "type": "Identifier", - "start": 12350, - "end": 12358, + "start": 12371, + "end": 12379, "loc": { "start": { "line": 341, @@ -20772,8 +20838,8 @@ }, { "type": "ExpressionStatement", - "start": 12373, - "end": 12394, + "start": 12394, + "end": 12415, "loc": { "start": { "line": 342, @@ -20786,8 +20852,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 12373, - "end": 12393, + "start": 12394, + "end": 12414, "loc": { "start": { "line": 342, @@ -20801,8 +20867,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 12373, - "end": 12386, + "start": 12394, + "end": 12407, "loc": { "start": { "line": 342, @@ -20815,8 +20881,8 @@ }, "object": { "type": "ThisExpression", - "start": 12373, - "end": 12377, + "start": 12394, + "end": 12398, "loc": { "start": { "line": 342, @@ -20830,8 +20896,8 @@ }, "property": { "type": "Identifier", - "start": 12378, - "end": 12386, + "start": 12399, + "end": 12407, "loc": { "start": { "line": 342, @@ -20849,8 +20915,8 @@ }, "right": { "type": "NullLiteral", - "start": 12389, - "end": 12393, + "start": 12410, + "end": 12414, "loc": { "start": { "line": 342, @@ -20875,8 +20941,8 @@ }, { "type": "ClassMethod", - "start": 12416, - "end": 12916, + "start": 12437, + "end": 12937, "loc": { "start": { "line": 346, @@ -20891,8 +20957,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 12416, - "end": 12423, + "start": 12437, + "end": 12444, "loc": { "start": { "line": 346, @@ -20914,8 +20980,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 12426, - "end": 12916, + "start": 12447, + "end": 12937, "loc": { "start": { "line": 346, @@ -20929,8 +20995,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 12436, - "end": 12477, + "start": 12457, + "end": 12498, "loc": { "start": { "line": 347, @@ -20944,8 +21010,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 12442, - "end": 12476, + "start": 12463, + "end": 12497, "loc": { "start": { "line": 347, @@ -20958,8 +21024,8 @@ }, "id": { "type": "Identifier", - "start": 12442, - "end": 12448, + "start": 12463, + "end": 12469, "loc": { "start": { "line": 347, @@ -20975,8 +21041,8 @@ }, "init": { "type": "MemberExpression", - "start": 12451, - "end": 12476, + "start": 12472, + "end": 12497, "loc": { "start": { "line": 347, @@ -20989,8 +21055,8 @@ }, "object": { "type": "MemberExpression", - "start": 12451, - "end": 12469, + "start": 12472, + "end": 12490, "loc": { "start": { "line": 347, @@ -21003,8 +21069,8 @@ }, "object": { "type": "MemberExpression", - "start": 12451, - "end": 12462, + "start": 12472, + "end": 12483, "loc": { "start": { "line": 347, @@ -21017,8 +21083,8 @@ }, "object": { "type": "ThisExpression", - "start": 12451, - "end": 12455, + "start": 12472, + "end": 12476, "loc": { "start": { "line": 347, @@ -21032,8 +21098,8 @@ }, "property": { "type": "Identifier", - "start": 12456, - "end": 12462, + "start": 12477, + "end": 12483, "loc": { "start": { "line": 347, @@ -21051,8 +21117,8 @@ }, "property": { "type": "Identifier", - "start": 12463, - "end": 12469, + "start": 12484, + "end": 12490, "loc": { "start": { "line": 347, @@ -21070,8 +21136,8 @@ }, "property": { "type": "Identifier", - "start": 12470, - "end": 12476, + "start": 12491, + "end": 12497, "loc": { "start": { "line": 347, @@ -21093,8 +21159,8 @@ }, { "type": "ExpressionStatement", - "start": 12486, - "end": 12556, + "start": 12507, + "end": 12577, "loc": { "start": { "line": 348, @@ -21107,8 +21173,8 @@ }, "expression": { "type": "CallExpression", - "start": 12486, - "end": 12555, + "start": 12507, + "end": 12576, "loc": { "start": { "line": 348, @@ -21121,8 +21187,8 @@ }, "callee": { "type": "MemberExpression", - "start": 12486, - "end": 12512, + "start": 12507, + "end": 12533, "loc": { "start": { "line": 348, @@ -21135,8 +21201,8 @@ }, "object": { "type": "Identifier", - "start": 12486, - "end": 12492, + "start": 12507, + "end": 12513, "loc": { "start": { "line": 348, @@ -21152,8 +21218,8 @@ }, "property": { "type": "Identifier", - "start": 12493, - "end": 12512, + "start": 12514, + "end": 12533, "loc": { "start": { "line": 348, @@ -21172,8 +21238,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 12513, - "end": 12524, + "start": 12534, + "end": 12545, "loc": { "start": { "line": 348, @@ -21192,8 +21258,8 @@ }, { "type": "MemberExpression", - "start": 12526, - "end": 12554, + "start": 12547, + "end": 12575, "loc": { "start": { "line": 348, @@ -21206,8 +21272,8 @@ }, "object": { "type": "ThisExpression", - "start": 12526, - "end": 12530, + "start": 12547, + "end": 12551, "loc": { "start": { "line": 348, @@ -21221,8 +21287,8 @@ }, "property": { "type": "Identifier", - "start": 12531, - "end": 12554, + "start": 12552, + "end": 12575, "loc": { "start": { "line": 348, @@ -21243,8 +21309,8 @@ }, { "type": "ExpressionStatement", - "start": 12565, - "end": 12635, + "start": 12586, + "end": 12656, "loc": { "start": { "line": 349, @@ -21257,8 +21323,8 @@ }, "expression": { "type": "CallExpression", - "start": 12565, - "end": 12634, + "start": 12586, + "end": 12655, "loc": { "start": { "line": 349, @@ -21271,8 +21337,8 @@ }, "callee": { "type": "MemberExpression", - "start": 12565, - "end": 12591, + "start": 12586, + "end": 12612, "loc": { "start": { "line": 349, @@ -21285,8 +21351,8 @@ }, "object": { "type": "Identifier", - "start": 12565, - "end": 12571, + "start": 12586, + "end": 12592, "loc": { "start": { "line": 349, @@ -21302,8 +21368,8 @@ }, "property": { "type": "Identifier", - "start": 12572, - "end": 12591, + "start": 12593, + "end": 12612, "loc": { "start": { "line": 349, @@ -21322,8 +21388,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 12592, - "end": 12603, + "start": 12613, + "end": 12624, "loc": { "start": { "line": 349, @@ -21342,8 +21408,8 @@ }, { "type": "MemberExpression", - "start": 12605, - "end": 12633, + "start": 12626, + "end": 12654, "loc": { "start": { "line": 349, @@ -21356,8 +21422,8 @@ }, "object": { "type": "ThisExpression", - "start": 12605, - "end": 12609, + "start": 12626, + "end": 12630, "loc": { "start": { "line": 349, @@ -21371,8 +21437,8 @@ }, "property": { "type": "Identifier", - "start": 12610, - "end": 12633, + "start": 12631, + "end": 12654, "loc": { "start": { "line": 349, @@ -21393,8 +21459,8 @@ }, { "type": "ExpressionStatement", - "start": 12644, - "end": 12714, + "start": 12665, + "end": 12735, "loc": { "start": { "line": 350, @@ -21407,8 +21473,8 @@ }, "expression": { "type": "CallExpression", - "start": 12644, - "end": 12713, + "start": 12665, + "end": 12734, "loc": { "start": { "line": 350, @@ -21421,8 +21487,8 @@ }, "callee": { "type": "MemberExpression", - "start": 12644, - "end": 12672, + "start": 12665, + "end": 12693, "loc": { "start": { "line": 350, @@ -21435,8 +21501,8 @@ }, "object": { "type": "Identifier", - "start": 12644, - "end": 12652, + "start": 12665, + "end": 12673, "loc": { "start": { "line": 350, @@ -21452,8 +21518,8 @@ }, "property": { "type": "Identifier", - "start": 12653, - "end": 12672, + "start": 12674, + "end": 12693, "loc": { "start": { "line": 350, @@ -21472,8 +21538,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 12673, - "end": 12682, + "start": 12694, + "end": 12703, "loc": { "start": { "line": 350, @@ -21492,8 +21558,8 @@ }, { "type": "MemberExpression", - "start": 12684, - "end": 12712, + "start": 12705, + "end": 12733, "loc": { "start": { "line": 350, @@ -21506,8 +21572,8 @@ }, "object": { "type": "ThisExpression", - "start": 12684, - "end": 12688, + "start": 12705, + "end": 12709, "loc": { "start": { "line": 350, @@ -21521,8 +21587,8 @@ }, "property": { "type": "Identifier", - "start": 12689, - "end": 12712, + "start": 12710, + "end": 12733, "loc": { "start": { "line": 350, @@ -21543,8 +21609,8 @@ }, { "type": "ExpressionStatement", - "start": 12723, - "end": 12789, + "start": 12744, + "end": 12810, "loc": { "start": { "line": 351, @@ -21557,8 +21623,8 @@ }, "expression": { "type": "CallExpression", - "start": 12723, - "end": 12788, + "start": 12744, + "end": 12809, "loc": { "start": { "line": 351, @@ -21571,8 +21637,8 @@ }, "callee": { "type": "MemberExpression", - "start": 12723, - "end": 12749, + "start": 12744, + "end": 12770, "loc": { "start": { "line": 351, @@ -21585,8 +21651,8 @@ }, "object": { "type": "Identifier", - "start": 12723, - "end": 12729, + "start": 12744, + "end": 12750, "loc": { "start": { "line": 351, @@ -21602,8 +21668,8 @@ }, "property": { "type": "Identifier", - "start": 12730, - "end": 12749, + "start": 12751, + "end": 12770, "loc": { "start": { "line": 351, @@ -21622,8 +21688,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 12750, - "end": 12759, + "start": 12771, + "end": 12780, "loc": { "start": { "line": 351, @@ -21642,8 +21708,8 @@ }, { "type": "MemberExpression", - "start": 12761, - "end": 12787, + "start": 12782, + "end": 12808, "loc": { "start": { "line": 351, @@ -21656,8 +21722,8 @@ }, "object": { "type": "ThisExpression", - "start": 12761, - "end": 12765, + "start": 12782, + "end": 12786, "loc": { "start": { "line": 351, @@ -21671,8 +21737,8 @@ }, "property": { "type": "Identifier", - "start": 12766, - "end": 12787, + "start": 12787, + "end": 12808, "loc": { "start": { "line": 351, @@ -21693,8 +21759,8 @@ }, { "type": "IfStatement", - "start": 12798, - "end": 12910, + "start": 12819, + "end": 12931, "loc": { "start": { "line": 352, @@ -21707,8 +21773,8 @@ }, "test": { "type": "MemberExpression", - "start": 12802, - "end": 12815, + "start": 12823, + "end": 12836, "loc": { "start": { "line": 352, @@ -21721,8 +21787,8 @@ }, "object": { "type": "ThisExpression", - "start": 12802, - "end": 12806, + "start": 12823, + "end": 12827, "loc": { "start": { "line": 352, @@ -21736,8 +21802,8 @@ }, "property": { "type": "Identifier", - "start": 12807, - "end": 12815, + "start": 12828, + "end": 12836, "loc": { "start": { "line": 352, @@ -21755,8 +21821,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 12817, - "end": 12910, + "start": 12838, + "end": 12931, "loc": { "start": { "line": 352, @@ -21770,8 +21836,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 12831, - "end": 12866, + "start": 12852, + "end": 12887, "loc": { "start": { "line": 353, @@ -21784,8 +21850,8 @@ }, "expression": { "type": "CallExpression", - "start": 12831, - "end": 12865, + "start": 12852, + "end": 12886, "loc": { "start": { "line": 353, @@ -21798,8 +21864,8 @@ }, "callee": { "type": "MemberExpression", - "start": 12831, - "end": 12850, + "start": 12852, + "end": 12871, "loc": { "start": { "line": 353, @@ -21812,8 +21878,8 @@ }, "object": { "type": "Identifier", - "start": 12831, - "end": 12837, + "start": 12852, + "end": 12858, "loc": { "start": { "line": 353, @@ -21829,8 +21895,8 @@ }, "property": { "type": "Identifier", - "start": 12838, - "end": 12850, + "start": 12859, + "end": 12871, "loc": { "start": { "line": 353, @@ -21849,8 +21915,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 12851, - "end": 12864, + "start": 12872, + "end": 12885, "loc": { "start": { "line": 353, @@ -21863,8 +21929,8 @@ }, "object": { "type": "ThisExpression", - "start": 12851, - "end": 12855, + "start": 12872, + "end": 12876, "loc": { "start": { "line": 353, @@ -21878,8 +21944,8 @@ }, "property": { "type": "Identifier", - "start": 12856, - "end": 12864, + "start": 12877, + "end": 12885, "loc": { "start": { "line": 353, @@ -21900,8 +21966,8 @@ }, { "type": "ExpressionStatement", - "start": 12879, - "end": 12900, + "start": 12900, + "end": 12921, "loc": { "start": { "line": 354, @@ -21914,8 +21980,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 12879, - "end": 12899, + "start": 12900, + "end": 12920, "loc": { "start": { "line": 354, @@ -21929,8 +21995,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 12879, - "end": 12892, + "start": 12900, + "end": 12913, "loc": { "start": { "line": 354, @@ -21943,8 +22009,8 @@ }, "object": { "type": "ThisExpression", - "start": 12879, - "end": 12883, + "start": 12900, + "end": 12904, "loc": { "start": { "line": 354, @@ -21958,8 +22024,8 @@ }, "property": { "type": "Identifier", - "start": 12884, - "end": 12892, + "start": 12905, + "end": 12913, "loc": { "start": { "line": 354, @@ -21977,8 +22043,8 @@ }, "right": { "type": "NullLiteral", - "start": 12895, - "end": 12899, + "start": 12916, + "end": 12920, "loc": { "start": { "line": 354, @@ -22009,8 +22075,8 @@ }, { "type": "ExportNamedDeclaration", - "start": 12922, - "end": 12948, + "start": 12943, + "end": 12969, "loc": { "start": { "line": 361, @@ -22025,8 +22091,8 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 12930, - "end": 12946, + "start": 12951, + "end": 12967, "loc": { "start": { "line": 361, @@ -22039,8 +22105,8 @@ }, "local": { "type": "Identifier", - "start": 12930, - "end": 12946, + "start": 12951, + "end": 12967, "loc": { "start": { "line": 361, @@ -22056,8 +22122,8 @@ }, "exported": { "type": "Identifier", - "start": 12930, - "end": 12946, + "start": 12951, + "end": 12967, "loc": { "start": { "line": 361, @@ -22077,8 +22143,8 @@ }, { "type": "ExportNamedDeclaration", - "start": 12922, - "end": 12948, + "start": 12943, + "end": 12969, "loc": { "start": { "line": 361, @@ -22092,7 +22158,7 @@ "declaration": { "type": "ClassDeclaration", "start": 65, - "end": 12918, + "end": 12939, "loc": { "start": { "line": 6, @@ -22125,7 +22191,7 @@ "body": { "type": "ClassBody", "start": 88, - "end": 12918, + "end": 12939, "loc": { "start": { "line": 6, @@ -22140,7 +22206,7 @@ { "type": "ClassMethod", "start": 95, - "end": 12201, + "end": 12222, "loc": { "start": { "line": 8, @@ -22265,7 +22331,7 @@ "body": { "type": "BlockStatement", "start": 153, - "end": 12201, + "end": 12222, "loc": { "start": { "line": 8, @@ -23259,7 +23325,7 @@ { "type": "VariableDeclaration", "start": 583, - "end": 1501, + "end": 1522, "loc": { "start": { "line": 25, @@ -23274,7 +23340,7 @@ { "type": "VariableDeclarator", "start": 589, - "end": 1500, + "end": 1521, "loc": { "start": { "line": 25, @@ -23305,7 +23371,7 @@ "init": { "type": "ArrowFunctionExpression", "start": 603, - "end": 1500, + "end": 1521, "loc": { "start": { "line": 25, @@ -23342,7 +23408,7 @@ "body": { "type": "BlockStatement", "start": 619, - "end": 1500, + "end": 1521, "loc": { "start": { "line": 25, @@ -23623,7 +23689,7 @@ { "type": "VariableDeclaration", "start": 763, - "end": 825, + "end": 846, "loc": { "start": { "line": 30, @@ -23631,14 +23697,14 @@ }, "end": { "line": 30, - "column": 74 + "column": 95 } }, "declarations": [ { "type": "VariableDeclarator", "start": 769, - "end": 824, + "end": 845, "loc": { "start": { "line": 30, @@ -23646,7 +23712,7 @@ }, "end": { "line": 30, - "column": 73 + "column": 94 } }, "id": { @@ -23669,7 +23735,7 @@ "init": { "type": "ConditionalExpression", "start": 776, - "end": 824, + "end": 845, "loc": { "start": { "line": 30, @@ -23677,13 +23743,13 @@ }, "end": { "line": 30, - "column": 73 + "column": 94 } }, "test": { - "type": "Identifier", + "type": "LogicalExpression", "start": 776, - "end": 786, + "end": 807, "loc": { "start": { "line": 30, @@ -23691,52 +23757,118 @@ }, "end": { "line": 30, - "column": 35 + "column": 56 + } + }, + "left": { + "type": "Identifier", + "start": 776, + "end": 786, + "loc": { + "start": { + "line": 30, + "column": 25 + }, + "end": { + "line": 30, + "column": 35 + }, + "identifierName": "pickResult" }, - "identifierName": "pickResult" + "name": "pickResult" }, - "name": "pickResult" + "operator": "&&", + "right": { + "type": "MemberExpression", + "start": 790, + "end": 807, + "loc": { + "start": { + "line": 30, + "column": 39 + }, + "end": { + "line": 30, + "column": 56 + } + }, + "object": { + "type": "Identifier", + "start": 790, + "end": 800, + "loc": { + "start": { + "line": 30, + "column": 39 + }, + "end": { + "line": 30, + "column": 49 + }, + "identifierName": "pickResult" + }, + "name": "pickResult" + }, + "property": { + "type": "Identifier", + "start": 801, + "end": 807, + "loc": { + "start": { + "line": 30, + "column": 50 + }, + "end": { + "line": 30, + "column": 56 + }, + "identifierName": "entity" + }, + "name": "entity" + }, + "computed": false + } }, "consequent": { "type": "MemberExpression", - "start": 789, - "end": 811, + "start": 810, + "end": 832, "loc": { "start": { "line": 30, - "column": 38 + "column": 59 }, "end": { "line": 30, - "column": 60 + "column": 81 } }, "object": { "type": "MemberExpression", - "start": 789, - "end": 806, + "start": 810, + "end": 827, "loc": { "start": { "line": 30, - "column": 38 + "column": 59 }, "end": { "line": 30, - "column": 55 + "column": 76 } }, "object": { "type": "Identifier", - "start": 789, - "end": 799, + "start": 810, + "end": 820, "loc": { "start": { "line": 30, - "column": 38 + "column": 59 }, "end": { "line": 30, - "column": 48 + "column": 69 }, "identifierName": "pickResult" }, @@ -23744,16 +23876,16 @@ }, "property": { "type": "Identifier", - "start": 800, - "end": 806, + "start": 821, + "end": 827, "loc": { "start": { "line": 30, - "column": 49 + "column": 70 }, "end": { "line": 30, - "column": 55 + "column": 76 }, "identifierName": "entity" }, @@ -23763,16 +23895,16 @@ }, "property": { "type": "Identifier", - "start": 807, - "end": 811, + "start": 828, + "end": 832, "loc": { "start": { "line": 30, - "column": 56 + "column": 77 }, "end": { "line": 30, - "column": 60 + "column": 81 }, "identifierName": "aabb" }, @@ -23782,30 +23914,30 @@ }, "alternate": { "type": "MemberExpression", - "start": 814, - "end": 824, + "start": 835, + "end": 845, "loc": { "start": { "line": 30, - "column": 63 + "column": 84 }, "end": { "line": 30, - "column": 73 + "column": 94 } }, "object": { "type": "Identifier", - "start": 814, - "end": 819, + "start": 835, + "end": 840, "loc": { "start": { "line": 30, - "column": 63 + "column": 84 }, "end": { "line": 30, - "column": 68 + "column": 89 }, "identifierName": "scene" }, @@ -23813,16 +23945,16 @@ }, "property": { "type": "Identifier", - "start": 820, - "end": 824, + "start": 841, + "end": 845, "loc": { "start": { "line": 30, - "column": 69 + "column": 90 }, "end": { "line": 30, - "column": 73 + "column": 94 }, "identifierName": "aabb" }, @@ -23837,8 +23969,8 @@ }, { "type": "IfStatement", - "start": 838, - "end": 1490, + "start": 859, + "end": 1511, "loc": { "start": { "line": 31, @@ -23851,8 +23983,8 @@ }, "test": { "type": "Identifier", - "start": 842, - "end": 845, + "start": 863, + "end": 866, "loc": { "start": { "line": 31, @@ -23868,8 +24000,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 847, - "end": 1332, + "start": 868, + "end": 1353, "loc": { "start": { "line": 31, @@ -23883,8 +24015,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 918, - "end": 946, + "start": 939, + "end": 967, "loc": { "start": { "line": 32, @@ -23898,8 +24030,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 924, - "end": 945, + "start": 945, + "end": 966, "loc": { "start": { "line": 32, @@ -23912,8 +24044,8 @@ }, "id": { "type": "Identifier", - "start": 924, - "end": 930, + "start": 945, + "end": 951, "loc": { "start": { "line": 32, @@ -23930,8 +24062,8 @@ }, "init": { "type": "MemberExpression", - "start": 933, - "end": 945, + "start": 954, + "end": 966, "loc": { "start": { "line": 32, @@ -23944,8 +24076,8 @@ }, "object": { "type": "Identifier", - "start": 933, - "end": 938, + "start": 954, + "end": 959, "loc": { "start": { "line": 32, @@ -23961,8 +24093,8 @@ }, "property": { "type": "Identifier", - "start": 939, - "end": 945, + "start": 960, + "end": 966, "loc": { "start": { "line": 32, @@ -23986,8 +24118,8 @@ { "type": "CommentLine", "value": " Fly to look at point, don't change eye->look dist", - "start": 849, - "end": 901, + "start": 870, + "end": 922, "loc": { "start": { "line": 31, @@ -24003,8 +24135,8 @@ }, { "type": "VariableDeclaration", - "start": 963, - "end": 1018, + "start": 984, + "end": 1039, "loc": { "start": { "line": 33, @@ -24018,8 +24150,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 969, - "end": 1017, + "start": 990, + "end": 1038, "loc": { "start": { "line": 33, @@ -24032,8 +24164,8 @@ }, "id": { "type": "Identifier", - "start": 969, - "end": 973, + "start": 990, + "end": 994, "loc": { "start": { "line": 33, @@ -24049,8 +24181,8 @@ }, "init": { "type": "CallExpression", - "start": 976, - "end": 1017, + "start": 997, + "end": 1038, "loc": { "start": { "line": 33, @@ -24063,8 +24195,8 @@ }, "callee": { "type": "MemberExpression", - "start": 976, - "end": 988, + "start": 997, + "end": 1009, "loc": { "start": { "line": 33, @@ -24077,8 +24209,8 @@ }, "object": { "type": "Identifier", - "start": 976, - "end": 980, + "start": 997, + "end": 1001, "loc": { "start": { "line": 33, @@ -24094,8 +24226,8 @@ }, "property": { "type": "Identifier", - "start": 981, - "end": 988, + "start": 1002, + "end": 1009, "loc": { "start": { "line": 33, @@ -24114,8 +24246,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 989, - "end": 999, + "start": 1010, + "end": 1020, "loc": { "start": { "line": 33, @@ -24128,8 +24260,8 @@ }, "object": { "type": "Identifier", - "start": 989, - "end": 995, + "start": 1010, + "end": 1016, "loc": { "start": { "line": 33, @@ -24145,8 +24277,8 @@ }, "property": { "type": "Identifier", - "start": 996, - "end": 999, + "start": 1017, + "end": 1020, "loc": { "start": { "line": 33, @@ -24164,8 +24296,8 @@ }, { "type": "MemberExpression", - "start": 1001, - "end": 1012, + "start": 1022, + "end": 1033, "loc": { "start": { "line": 33, @@ -24178,8 +24310,8 @@ }, "object": { "type": "Identifier", - "start": 1001, - "end": 1007, + "start": 1022, + "end": 1028, "loc": { "start": { "line": 33, @@ -24195,8 +24327,8 @@ }, "property": { "type": "Identifier", - "start": 1008, - "end": 1012, + "start": 1029, + "end": 1033, "loc": { "start": { "line": 33, @@ -24214,8 +24346,8 @@ }, { "type": "ArrayExpression", - "start": 1014, - "end": 1016, + "start": 1035, + "end": 1037, "loc": { "start": { "line": 33, @@ -24236,8 +24368,8 @@ }, { "type": "ExpressionStatement", - "start": 1035, - "end": 1254, + "start": 1056, + "end": 1275, "loc": { "start": { "line": 34, @@ -24250,8 +24382,8 @@ }, "expression": { "type": "CallExpression", - "start": 1035, - "end": 1253, + "start": 1056, + "end": 1274, "loc": { "start": { "line": 34, @@ -24264,8 +24396,8 @@ }, "callee": { "type": "MemberExpression", - "start": 1035, - "end": 1065, + "start": 1056, + "end": 1086, "loc": { "start": { "line": 34, @@ -24278,8 +24410,8 @@ }, "object": { "type": "MemberExpression", - "start": 1035, - "end": 1059, + "start": 1056, + "end": 1080, "loc": { "start": { "line": 34, @@ -24292,8 +24424,8 @@ }, "object": { "type": "Identifier", - "start": 1035, - "end": 1046, + "start": 1056, + "end": 1067, "loc": { "start": { "line": 34, @@ -24309,8 +24441,8 @@ }, "property": { "type": "Identifier", - "start": 1047, - "end": 1059, + "start": 1068, + "end": 1080, "loc": { "start": { "line": 34, @@ -24328,8 +24460,8 @@ }, "property": { "type": "Identifier", - "start": 1060, - "end": 1065, + "start": 1081, + "end": 1086, "loc": { "start": { "line": 34, @@ -24348,8 +24480,8 @@ "arguments": [ { "type": "ObjectExpression", - "start": 1066, - "end": 1252, + "start": 1087, + "end": 1273, "loc": { "start": { "line": 34, @@ -24363,8 +24495,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 1224, - "end": 1234, + "start": 1245, + "end": 1255, "loc": { "start": { "line": 38, @@ -24380,8 +24512,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 1224, - "end": 1228, + "start": 1245, + "end": 1249, "loc": { "start": { "line": 38, @@ -24398,8 +24530,8 @@ }, "value": { "type": "Identifier", - "start": 1230, - "end": 1234, + "start": 1251, + "end": 1255, "loc": { "start": { "line": 38, @@ -24417,8 +24549,8 @@ { "type": "CommentLine", "value": " look: pos,", - "start": 1088, - "end": 1101, + "start": 1109, + "end": 1122, "loc": { "start": { "line": 35, @@ -24433,8 +24565,8 @@ { "type": "CommentLine", "value": " eye: xeokit.math.addVec3(pos, diff, []),", - "start": 1122, - "end": 1165, + "start": 1143, + "end": 1186, "loc": { "start": { "line": 36, @@ -24449,8 +24581,8 @@ { "type": "CommentLine", "value": " up: camera.up,", - "start": 1186, - "end": 1203, + "start": 1207, + "end": 1224, "loc": { "start": { "line": 37, @@ -24472,8 +24604,8 @@ { "type": "CommentLine", "value": " TODO: Option to back off to fit AABB in view", - "start": 1271, - "end": 1318, + "start": 1292, + "end": 1339, "loc": { "start": { "line": 40, @@ -24492,8 +24624,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 1338, - "end": 1490, + "start": 1359, + "end": 1511, "loc": { "start": { "line": 41, @@ -24507,8 +24639,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 1393, - "end": 1476, + "start": 1414, + "end": 1497, "loc": { "start": { "line": 42, @@ -24521,8 +24653,8 @@ }, "expression": { "type": "CallExpression", - "start": 1393, - "end": 1475, + "start": 1414, + "end": 1496, "loc": { "start": { "line": 42, @@ -24535,8 +24667,8 @@ }, "callee": { "type": "MemberExpression", - "start": 1393, - "end": 1423, + "start": 1414, + "end": 1444, "loc": { "start": { "line": 42, @@ -24549,8 +24681,8 @@ }, "object": { "type": "MemberExpression", - "start": 1393, - "end": 1417, + "start": 1414, + "end": 1438, "loc": { "start": { "line": 42, @@ -24563,8 +24695,8 @@ }, "object": { "type": "Identifier", - "start": 1393, - "end": 1404, + "start": 1414, + "end": 1425, "loc": { "start": { "line": 42, @@ -24581,8 +24713,8 @@ }, "property": { "type": "Identifier", - "start": 1405, - "end": 1417, + "start": 1426, + "end": 1438, "loc": { "start": { "line": 42, @@ -24601,8 +24733,8 @@ }, "property": { "type": "Identifier", - "start": 1418, - "end": 1423, + "start": 1439, + "end": 1444, "loc": { "start": { "line": 42, @@ -24622,8 +24754,8 @@ "arguments": [ { "type": "ObjectExpression", - "start": 1424, - "end": 1474, + "start": 1445, + "end": 1495, "loc": { "start": { "line": 42, @@ -24637,8 +24769,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 1446, - "end": 1456, + "start": 1467, + "end": 1477, "loc": { "start": { "line": 43, @@ -24654,8 +24786,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 1446, - "end": 1450, + "start": 1467, + "end": 1471, "loc": { "start": { "line": 43, @@ -24671,8 +24803,8 @@ }, "value": { "type": "Identifier", - "start": 1452, - "end": 1456, + "start": 1473, + "end": 1477, "loc": { "start": { "line": 43, @@ -24696,8 +24828,8 @@ { "type": "CommentLine", "value": " Fly to fit target boundary in view", - "start": 1339, - "end": 1376, + "start": 1360, + "end": 1397, "loc": { "start": { "line": 41, @@ -24725,8 +24857,8 @@ }, { "type": "ExpressionStatement", - "start": 1511, - "end": 3978, + "start": 1532, + "end": 3999, "loc": { "start": { "line": 48, @@ -24739,8 +24871,8 @@ }, "expression": { "type": "CallExpression", - "start": 1511, - "end": 3977, + "start": 1532, + "end": 3998, "loc": { "start": { "line": 48, @@ -24753,8 +24885,8 @@ }, "callee": { "type": "MemberExpression", - "start": 1511, - "end": 1534, + "start": 1532, + "end": 1555, "loc": { "start": { "line": 48, @@ -24767,8 +24899,8 @@ }, "object": { "type": "Identifier", - "start": 1511, - "end": 1517, + "start": 1532, + "end": 1538, "loc": { "start": { "line": 48, @@ -24784,8 +24916,8 @@ }, "property": { "type": "Identifier", - "start": 1518, - "end": 1534, + "start": 1539, + "end": 1555, "loc": { "start": { "line": 48, @@ -24804,8 +24936,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 1535, - "end": 1546, + "start": 1556, + "end": 1567, "loc": { "start": { "line": 48, @@ -24824,8 +24956,8 @@ }, { "type": "AssignmentExpression", - "start": 1548, - "end": 3976, + "start": 1569, + "end": 3997, "loc": { "start": { "line": 48, @@ -24839,8 +24971,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 1548, - "end": 1576, + "start": 1569, + "end": 1597, "loc": { "start": { "line": 48, @@ -24853,8 +24985,8 @@ }, "object": { "type": "ThisExpression", - "start": 1548, - "end": 1552, + "start": 1569, + "end": 1573, "loc": { "start": { "line": 48, @@ -24868,8 +25000,8 @@ }, "property": { "type": "Identifier", - "start": 1553, - "end": 1576, + "start": 1574, + "end": 1597, "loc": { "start": { "line": 48, @@ -24887,8 +25019,8 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 1579, - "end": 3976, + "start": 1600, + "end": 3997, "loc": { "start": { "line": 48, @@ -24906,8 +25038,8 @@ "params": [ { "type": "Identifier", - "start": 1580, - "end": 1581, + "start": 1601, + "end": 1602, "loc": { "start": { "line": 48, @@ -24924,8 +25056,8 @@ ], "body": { "type": "BlockStatement", - "start": 1586, - "end": 3976, + "start": 1607, + "end": 3997, "loc": { "start": { "line": 48, @@ -24939,8 +25071,8 @@ "body": [ { "type": "IfStatement", - "start": 1601, - "end": 1689, + "start": 1622, + "end": 1710, "loc": { "start": { "line": 50, @@ -24953,8 +25085,8 @@ }, "test": { "type": "UnaryExpression", - "start": 1605, - "end": 1648, + "start": 1626, + "end": 1669, "loc": { "start": { "line": 50, @@ -24969,8 +25101,8 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 1607, - "end": 1647, + "start": 1628, + "end": 1668, "loc": { "start": { "line": 50, @@ -24983,8 +25115,8 @@ }, "left": { "type": "MemberExpression", - "start": 1607, - "end": 1621, + "start": 1628, + "end": 1642, "loc": { "start": { "line": 50, @@ -24997,8 +25129,8 @@ }, "object": { "type": "Identifier", - "start": 1607, - "end": 1614, + "start": 1628, + "end": 1635, "loc": { "start": { "line": 50, @@ -25014,8 +25146,8 @@ }, "property": { "type": "Identifier", - "start": 1615, - "end": 1621, + "start": 1636, + "end": 1642, "loc": { "start": { "line": 50, @@ -25034,8 +25166,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 1625, - "end": 1647, + "start": 1646, + "end": 1668, "loc": { "start": { "line": 50, @@ -25048,8 +25180,8 @@ }, "object": { "type": "Identifier", - "start": 1625, - "end": 1632, + "start": 1646, + "end": 1653, "loc": { "start": { "line": 50, @@ -25065,8 +25197,8 @@ }, "property": { "type": "Identifier", - "start": 1633, - "end": 1647, + "start": 1654, + "end": 1668, "loc": { "start": { "line": 50, @@ -25084,7 +25216,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 1606 + "parenStart": 1627 } }, "extra": { @@ -25093,8 +25225,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 1650, - "end": 1689, + "start": 1671, + "end": 1710, "loc": { "start": { "line": 50, @@ -25108,8 +25240,8 @@ "body": [ { "type": "ReturnStatement", - "start": 1668, - "end": 1675, + "start": 1689, + "end": 1696, "loc": { "start": { "line": 51, @@ -25129,8 +25261,8 @@ }, { "type": "IfStatement", - "start": 1703, - "end": 1769, + "start": 1724, + "end": 1790, "loc": { "start": { "line": 54, @@ -25143,8 +25275,8 @@ }, "test": { "type": "LogicalExpression", - "start": 1707, - "end": 1728, + "start": 1728, + "end": 1749, "loc": { "start": { "line": 54, @@ -25157,8 +25289,8 @@ }, "left": { "type": "Identifier", - "start": 1707, - "end": 1715, + "start": 1728, + "end": 1736, "loc": { "start": { "line": 54, @@ -25175,8 +25307,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 1719, - "end": 1728, + "start": 1740, + "end": 1749, "loc": { "start": { "line": 54, @@ -25193,8 +25325,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 1730, - "end": 1769, + "start": 1751, + "end": 1790, "loc": { "start": { "line": 54, @@ -25208,8 +25340,8 @@ "body": [ { "type": "ReturnStatement", - "start": 1748, - "end": 1755, + "start": 1769, + "end": 1776, "loc": { "start": { "line": 55, @@ -25229,8 +25361,8 @@ }, { "type": "VariableDeclaration", - "start": 1783, - "end": 1832, + "start": 1804, + "end": 1853, "loc": { "start": { "line": 58, @@ -25244,8 +25376,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 1789, - "end": 1831, + "start": 1810, + "end": 1852, "loc": { "start": { "line": 58, @@ -25258,8 +25390,8 @@ }, "id": { "type": "Identifier", - "start": 1789, - "end": 1798, + "start": 1810, + "end": 1819, "loc": { "start": { "line": 58, @@ -25275,8 +25407,8 @@ }, "init": { "type": "CallExpression", - "start": 1801, - "end": 1831, + "start": 1822, + "end": 1852, "loc": { "start": { "line": 58, @@ -25289,8 +25421,8 @@ }, "callee": { "type": "MemberExpression", - "start": 1801, - "end": 1822, + "start": 1822, + "end": 1843, "loc": { "start": { "line": 58, @@ -25303,8 +25435,8 @@ }, "object": { "type": "Identifier", - "start": 1801, - "end": 1814, + "start": 1822, + "end": 1835, "loc": { "start": { "line": 58, @@ -25320,8 +25452,8 @@ }, "property": { "type": "Identifier", - "start": 1815, - "end": 1822, + "start": 1836, + "end": 1843, "loc": { "start": { "line": 58, @@ -25340,8 +25472,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 1823, - "end": 1830, + "start": 1844, + "end": 1851, "loc": { "start": { "line": 58, @@ -25366,8 +25498,8 @@ }, { "type": "VariableDeclaration", - "start": 1845, - "end": 1900, + "start": 1866, + "end": 1921, "loc": { "start": { "line": 59, @@ -25381,8 +25513,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 1851, - "end": 1899, + "start": 1872, + "end": 1920, "loc": { "start": { "line": 59, @@ -25395,8 +25527,8 @@ }, "id": { "type": "Identifier", - "start": 1851, - "end": 1863, + "start": 1872, + "end": 1884, "loc": { "start": { "line": 59, @@ -25412,8 +25544,8 @@ }, "init": { "type": "CallExpression", - "start": 1866, - "end": 1899, + "start": 1887, + "end": 1920, "loc": { "start": { "line": 59, @@ -25426,8 +25558,8 @@ }, "callee": { "type": "MemberExpression", - "start": 1866, - "end": 1887, + "start": 1887, + "end": 1908, "loc": { "start": { "line": 59, @@ -25440,8 +25572,8 @@ }, "object": { "type": "Identifier", - "start": 1866, - "end": 1879, + "start": 1887, + "end": 1900, "loc": { "start": { "line": 59, @@ -25457,8 +25589,8 @@ }, "property": { "type": "Identifier", - "start": 1880, - "end": 1887, + "start": 1901, + "end": 1908, "loc": { "start": { "line": 59, @@ -25477,8 +25609,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 1888, - "end": 1898, + "start": 1909, + "end": 1919, "loc": { "start": { "line": 59, @@ -25503,8 +25635,8 @@ }, { "type": "VariableDeclaration", - "start": 1913, - "end": 1968, + "start": 1934, + "end": 1989, "loc": { "start": { "line": 60, @@ -25518,8 +25650,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 1919, - "end": 1967, + "start": 1940, + "end": 1988, "loc": { "start": { "line": 60, @@ -25532,8 +25664,8 @@ }, "id": { "type": "Identifier", - "start": 1919, - "end": 1931, + "start": 1940, + "end": 1952, "loc": { "start": { "line": 60, @@ -25549,8 +25681,8 @@ }, "init": { "type": "CallExpression", - "start": 1934, - "end": 1967, + "start": 1955, + "end": 1988, "loc": { "start": { "line": 60, @@ -25563,8 +25695,8 @@ }, "callee": { "type": "MemberExpression", - "start": 1934, - "end": 1955, + "start": 1955, + "end": 1976, "loc": { "start": { "line": 60, @@ -25577,8 +25709,8 @@ }, "object": { "type": "Identifier", - "start": 1934, - "end": 1947, + "start": 1955, + "end": 1968, "loc": { "start": { "line": 60, @@ -25594,8 +25726,8 @@ }, "property": { "type": "Identifier", - "start": 1948, - "end": 1955, + "start": 1969, + "end": 1976, "loc": { "start": { "line": 60, @@ -25614,8 +25746,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 1956, - "end": 1966, + "start": 1977, + "end": 1987, "loc": { "start": { "line": 60, @@ -25640,8 +25772,8 @@ }, { "type": "VariableDeclaration", - "start": 1981, - "end": 2044, + "start": 2002, + "end": 2065, "loc": { "start": { "line": 61, @@ -25655,8 +25787,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 1987, - "end": 2043, + "start": 2008, + "end": 2064, "loc": { "start": { "line": 61, @@ -25669,8 +25801,8 @@ }, "id": { "type": "Identifier", - "start": 1987, - "end": 2003, + "start": 2008, + "end": 2024, "loc": { "start": { "line": 61, @@ -25686,8 +25818,8 @@ }, "init": { "type": "CallExpression", - "start": 2006, - "end": 2043, + "start": 2027, + "end": 2064, "loc": { "start": { "line": 61, @@ -25700,8 +25832,8 @@ }, "callee": { "type": "MemberExpression", - "start": 2006, - "end": 2027, + "start": 2027, + "end": 2048, "loc": { "start": { "line": 61, @@ -25714,8 +25846,8 @@ }, "object": { "type": "Identifier", - "start": 2006, - "end": 2019, + "start": 2027, + "end": 2040, "loc": { "start": { "line": 61, @@ -25731,8 +25863,8 @@ }, "property": { "type": "Identifier", - "start": 2020, - "end": 2027, + "start": 2041, + "end": 2048, "loc": { "start": { "line": 61, @@ -25751,8 +25883,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 2028, - "end": 2042, + "start": 2049, + "end": 2063, "loc": { "start": { "line": 61, @@ -25777,8 +25909,8 @@ }, { "type": "IfStatement", - "start": 2058, - "end": 3966, + "start": 2079, + "end": 3987, "loc": { "start": { "line": 63, @@ -25791,8 +25923,8 @@ }, "test": { "type": "LogicalExpression", - "start": 2062, - "end": 2123, + "start": 2083, + "end": 2144, "loc": { "start": { "line": 63, @@ -25805,8 +25937,8 @@ }, "left": { "type": "LogicalExpression", - "start": 2062, - "end": 2103, + "start": 2083, + "end": 2124, "loc": { "start": { "line": 63, @@ -25819,8 +25951,8 @@ }, "left": { "type": "LogicalExpression", - "start": 2062, - "end": 2087, + "start": 2083, + "end": 2108, "loc": { "start": { "line": 63, @@ -25833,8 +25965,8 @@ }, "left": { "type": "Identifier", - "start": 2062, - "end": 2071, + "start": 2083, + "end": 2092, "loc": { "start": { "line": 63, @@ -25851,8 +25983,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 2075, - "end": 2087, + "start": 2096, + "end": 2108, "loc": { "start": { "line": 63, @@ -25870,8 +26002,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 2091, - "end": 2103, + "start": 2112, + "end": 2124, "loc": { "start": { "line": 63, @@ -25889,8 +26021,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 2107, - "end": 2123, + "start": 2128, + "end": 2144, "loc": { "start": { "line": 63, @@ -25907,8 +26039,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 2125, - "end": 3966, + "start": 2146, + "end": 3987, "loc": { "start": { "line": 63, @@ -25922,8 +26054,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 2144, - "end": 2199, + "start": 2165, + "end": 2220, "loc": { "start": { "line": 65, @@ -25936,8 +26068,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 2144, - "end": 2198, + "start": 2165, + "end": 2219, "loc": { "start": { "line": 65, @@ -25951,8 +26083,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 2144, - "end": 2172, + "start": 2165, + "end": 2193, "loc": { "start": { "line": 65, @@ -25965,8 +26097,8 @@ }, "object": { "type": "Identifier", - "start": 2144, - "end": 2158, + "start": 2165, + "end": 2179, "loc": { "start": { "line": 65, @@ -25982,8 +26114,8 @@ }, "property": { "type": "Identifier", - "start": 2159, - "end": 2172, + "start": 2180, + "end": 2193, "loc": { "start": { "line": 65, @@ -26001,8 +26133,8 @@ }, "right": { "type": "MemberExpression", - "start": 2175, - "end": 2198, + "start": 2196, + "end": 2219, "loc": { "start": { "line": 65, @@ -26015,8 +26147,8 @@ }, "object": { "type": "Identifier", - "start": 2175, - "end": 2181, + "start": 2196, + "end": 2202, "loc": { "start": { "line": 65, @@ -26032,8 +26164,8 @@ }, "property": { "type": "Identifier", - "start": 2182, - "end": 2198, + "start": 2203, + "end": 2219, "loc": { "start": { "line": 65, @@ -26053,8 +26185,8 @@ }, { "type": "ExpressionStatement", - "start": 2216, - "end": 2257, + "start": 2237, + "end": 2278, "loc": { "start": { "line": 66, @@ -26067,8 +26199,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 2216, - "end": 2256, + "start": 2237, + "end": 2277, "loc": { "start": { "line": 66, @@ -26082,8 +26214,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 2216, - "end": 2249, + "start": 2237, + "end": 2270, "loc": { "start": { "line": 66, @@ -26096,8 +26228,8 @@ }, "object": { "type": "Identifier", - "start": 2216, - "end": 2230, + "start": 2237, + "end": 2251, "loc": { "start": { "line": 66, @@ -26113,8 +26245,8 @@ }, "property": { "type": "Identifier", - "start": 2231, - "end": 2249, + "start": 2252, + "end": 2270, "loc": { "start": { "line": 66, @@ -26132,8 +26264,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 2252, - "end": 2256, + "start": 2273, + "end": 2277, "loc": { "start": { "line": 66, @@ -26150,8 +26282,8 @@ }, { "type": "ExpressionStatement", - "start": 2274, - "end": 2328, + "start": 2295, + "end": 2349, "loc": { "start": { "line": 67, @@ -26164,8 +26296,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 2274, - "end": 2327, + "start": 2295, + "end": 2348, "loc": { "start": { "line": 67, @@ -26179,8 +26311,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 2274, - "end": 2308, + "start": 2295, + "end": 2329, "loc": { "start": { "line": 67, @@ -26193,8 +26325,8 @@ }, "object": { "type": "Identifier", - "start": 2274, - "end": 2288, + "start": 2295, + "end": 2309, "loc": { "start": { "line": 67, @@ -26210,8 +26342,8 @@ }, "property": { "type": "Identifier", - "start": 2289, - "end": 2308, + "start": 2310, + "end": 2329, "loc": { "start": { "line": 67, @@ -26229,8 +26361,8 @@ }, "right": { "type": "Identifier", - "start": 2311, - "end": 2327, + "start": 2332, + "end": 2348, "loc": { "start": { "line": 67, @@ -26248,8 +26380,8 @@ }, { "type": "ExpressionStatement", - "start": 2346, - "end": 2370, + "start": 2367, + "end": 2391, "loc": { "start": { "line": 69, @@ -26262,8 +26394,8 @@ }, "expression": { "type": "CallExpression", - "start": 2346, - "end": 2369, + "start": 2367, + "end": 2390, "loc": { "start": { "line": 69, @@ -26276,8 +26408,8 @@ }, "callee": { "type": "MemberExpression", - "start": 2346, - "end": 2367, + "start": 2367, + "end": 2388, "loc": { "start": { "line": 69, @@ -26290,8 +26422,8 @@ }, "object": { "type": "Identifier", - "start": 2346, - "end": 2360, + "start": 2367, + "end": 2381, "loc": { "start": { "line": 69, @@ -26307,8 +26439,8 @@ }, "property": { "type": "Identifier", - "start": 2361, - "end": 2367, + "start": 2382, + "end": 2388, "loc": { "start": { "line": 69, @@ -26329,8 +26461,8 @@ }, { "type": "IfStatement", - "start": 2388, - "end": 3952, + "start": 2409, + "end": 3973, "loc": { "start": { "line": 71, @@ -26343,8 +26475,8 @@ }, "test": { "type": "MemberExpression", - "start": 2392, - "end": 2417, + "start": 2413, + "end": 2438, "loc": { "start": { "line": 71, @@ -26357,8 +26489,8 @@ }, "object": { "type": "Identifier", - "start": 2392, - "end": 2406, + "start": 2413, + "end": 2427, "loc": { "start": { "line": 71, @@ -26374,8 +26506,8 @@ }, "property": { "type": "Identifier", - "start": 2407, - "end": 2417, + "start": 2428, + "end": 2438, "loc": { "start": { "line": 71, @@ -26393,8 +26525,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 2419, - "end": 3404, + "start": 2440, + "end": 3425, "loc": { "start": { "line": 71, @@ -26408,8 +26540,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 2442, - "end": 2501, + "start": 2463, + "end": 2522, "loc": { "start": { "line": 73, @@ -26423,8 +26555,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 2448, - "end": 2500, + "start": 2469, + "end": 2521, "loc": { "start": { "line": 73, @@ -26437,8 +26569,8 @@ }, "id": { "type": "Identifier", - "start": 2448, - "end": 2462, + "start": 2469, + "end": 2483, "loc": { "start": { "line": 73, @@ -26454,8 +26586,8 @@ }, "init": { "type": "MemberExpression", - "start": 2465, - "end": 2500, + "start": 2486, + "end": 2521, "loc": { "start": { "line": 73, @@ -26468,8 +26600,8 @@ }, "object": { "type": "MemberExpression", - "start": 2465, - "end": 2497, + "start": 2486, + "end": 2518, "loc": { "start": { "line": 73, @@ -26482,8 +26614,8 @@ }, "object": { "type": "MemberExpression", - "start": 2465, - "end": 2490, + "start": 2486, + "end": 2511, "loc": { "start": { "line": 73, @@ -26496,8 +26628,8 @@ }, "object": { "type": "Identifier", - "start": 2465, - "end": 2479, + "start": 2486, + "end": 2500, "loc": { "start": { "line": 73, @@ -26513,8 +26645,8 @@ }, "property": { "type": "Identifier", - "start": 2480, - "end": 2490, + "start": 2501, + "end": 2511, "loc": { "start": { "line": 73, @@ -26532,8 +26664,8 @@ }, "property": { "type": "Identifier", - "start": 2491, - "end": 2497, + "start": 2512, + "end": 2518, "loc": { "start": { "line": 73, @@ -26551,8 +26683,8 @@ }, "property": { "type": "Identifier", - "start": 2498, - "end": 2500, + "start": 2519, + "end": 2521, "loc": { "start": { "line": 73, @@ -26574,8 +26706,8 @@ }, { "type": "IfStatement", - "start": 2523, - "end": 3087, + "start": 2544, + "end": 3108, "loc": { "start": { "line": 75, @@ -26588,8 +26720,8 @@ }, "test": { "type": "BinaryExpression", - "start": 2527, - "end": 2570, + "start": 2548, + "end": 2591, "loc": { "start": { "line": 75, @@ -26602,8 +26734,8 @@ }, "left": { "type": "MemberExpression", - "start": 2527, - "end": 2551, + "start": 2548, + "end": 2572, "loc": { "start": { "line": 75, @@ -26616,8 +26748,8 @@ }, "object": { "type": "ThisExpression", - "start": 2527, - "end": 2531, + "start": 2548, + "end": 2552, "loc": { "start": { "line": 75, @@ -26631,8 +26763,8 @@ }, "property": { "type": "Identifier", - "start": 2532, - "end": 2551, + "start": 2553, + "end": 2572, "loc": { "start": { "line": 75, @@ -26651,8 +26783,8 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 2556, - "end": 2570, + "start": 2577, + "end": 2591, "loc": { "start": { "line": 75, @@ -26669,8 +26801,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 2572, - "end": 3087, + "start": 2593, + "end": 3108, "loc": { "start": { "line": 75, @@ -26684,8 +26816,8 @@ "body": [ { "type": "IfStatement", - "start": 2599, - "end": 2875, + "start": 2620, + "end": 2896, "loc": { "start": { "line": 77, @@ -26698,8 +26830,8 @@ }, "test": { "type": "BinaryExpression", - "start": 2603, - "end": 2641, + "start": 2624, + "end": 2662, "loc": { "start": { "line": 77, @@ -26712,8 +26844,8 @@ }, "left": { "type": "MemberExpression", - "start": 2603, - "end": 2627, + "start": 2624, + "end": 2648, "loc": { "start": { "line": 77, @@ -26726,8 +26858,8 @@ }, "object": { "type": "ThisExpression", - "start": 2603, - "end": 2607, + "start": 2624, + "end": 2628, "loc": { "start": { "line": 77, @@ -26741,8 +26873,8 @@ }, "property": { "type": "Identifier", - "start": 2608, - "end": 2627, + "start": 2629, + "end": 2648, "loc": { "start": { "line": 77, @@ -26761,8 +26893,8 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 2632, - "end": 2641, + "start": 2653, + "end": 2662, "loc": { "start": { "line": 77, @@ -26779,8 +26911,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 2643, - "end": 2875, + "start": 2664, + "end": 2896, "loc": { "start": { "line": 77, @@ -26794,8 +26926,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 2674, - "end": 2849, + "start": 2695, + "end": 2870, "loc": { "start": { "line": 79, @@ -26808,8 +26940,8 @@ }, "expression": { "type": "CallExpression", - "start": 2674, - "end": 2848, + "start": 2695, + "end": 2869, "loc": { "start": { "line": 79, @@ -26822,8 +26954,8 @@ }, "callee": { "type": "MemberExpression", - "start": 2674, - "end": 2692, + "start": 2695, + "end": 2713, "loc": { "start": { "line": 79, @@ -26836,8 +26968,8 @@ }, "object": { "type": "Identifier", - "start": 2674, - "end": 2687, + "start": 2695, + "end": 2708, "loc": { "start": { "line": 79, @@ -26853,8 +26985,8 @@ }, "property": { "type": "Identifier", - "start": 2688, - "end": 2692, + "start": 2709, + "end": 2713, "loc": { "start": { "line": 79, @@ -26873,8 +27005,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 2693, - "end": 2703, + "start": 2714, + "end": 2724, "loc": { "start": { "line": 79, @@ -26893,8 +27025,8 @@ }, { "type": "ObjectExpression", - "start": 2705, - "end": 2841, + "start": 2726, + "end": 2862, "loc": { "start": { "line": 79, @@ -26908,8 +27040,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 2764, - "end": 2811, + "start": 2785, + "end": 2832, "loc": { "start": { "line": 80, @@ -26925,8 +27057,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 2764, - "end": 2770, + "start": 2785, + "end": 2791, "loc": { "start": { "line": 80, @@ -26943,8 +27075,8 @@ }, "value": { "type": "MemberExpression", - "start": 2772, - "end": 2811, + "start": 2793, + "end": 2832, "loc": { "start": { "line": 80, @@ -26957,8 +27089,8 @@ }, "object": { "type": "MemberExpression", - "start": 2772, - "end": 2785, + "start": 2793, + "end": 2806, "loc": { "start": { "line": 80, @@ -26971,8 +27103,8 @@ }, "object": { "type": "Identifier", - "start": 2772, - "end": 2777, + "start": 2793, + "end": 2798, "loc": { "start": { "line": 80, @@ -26988,8 +27120,8 @@ }, "property": { "type": "Identifier", - "start": 2778, - "end": 2785, + "start": 2799, + "end": 2806, "loc": { "start": { "line": 80, @@ -27007,8 +27139,8 @@ }, "property": { "type": "MemberExpression", - "start": 2786, - "end": 2810, + "start": 2807, + "end": 2831, "loc": { "start": { "line": 80, @@ -27021,8 +27153,8 @@ }, "object": { "type": "ThisExpression", - "start": 2786, - "end": 2790, + "start": 2807, + "end": 2811, "loc": { "start": { "line": 80, @@ -27036,8 +27168,8 @@ }, "property": { "type": "Identifier", - "start": 2791, - "end": 2810, + "start": 2812, + "end": 2831, "loc": { "start": { "line": 80, @@ -27059,8 +27191,8 @@ { "type": "CommentLine", "value": " Hovered off an entity", - "start": 2707, - "end": 2731, + "start": 2728, + "end": 2752, "loc": { "start": { "line": 79, @@ -27078,8 +27210,8 @@ }, { "type": "BooleanLiteral", - "start": 2843, - "end": 2847, + "start": 2864, + "end": 2868, "loc": { "start": { "line": 81, @@ -27102,8 +27234,8 @@ }, { "type": "ExpressionStatement", - "start": 2901, - "end": 2967, + "start": 2922, + "end": 2988, "loc": { "start": { "line": 84, @@ -27116,8 +27248,8 @@ }, "expression": { "type": "CallExpression", - "start": 2901, - "end": 2966, + "start": 2922, + "end": 2987, "loc": { "start": { "line": 84, @@ -27130,8 +27262,8 @@ }, "callee": { "type": "MemberExpression", - "start": 2901, - "end": 2919, + "start": 2922, + "end": 2940, "loc": { "start": { "line": 84, @@ -27144,8 +27276,8 @@ }, "object": { "type": "Identifier", - "start": 2901, - "end": 2914, + "start": 2922, + "end": 2935, "loc": { "start": { "line": 84, @@ -27161,8 +27293,8 @@ }, "property": { "type": "Identifier", - "start": 2915, - "end": 2919, + "start": 2936, + "end": 2940, "loc": { "start": { "line": 84, @@ -27181,8 +27313,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 2920, - "end": 2932, + "start": 2941, + "end": 2953, "loc": { "start": { "line": 84, @@ -27201,8 +27333,8 @@ }, { "type": "MemberExpression", - "start": 2934, - "end": 2959, + "start": 2955, + "end": 2980, "loc": { "start": { "line": 84, @@ -27215,8 +27347,8 @@ }, "object": { "type": "Identifier", - "start": 2934, - "end": 2948, + "start": 2955, + "end": 2969, "loc": { "start": { "line": 84, @@ -27232,8 +27364,8 @@ }, "property": { "type": "Identifier", - "start": 2949, - "end": 2959, + "start": 2970, + "end": 2980, "loc": { "start": { "line": 84, @@ -27251,8 +27383,8 @@ }, { "type": "BooleanLiteral", - "start": 2961, - "end": 2965, + "start": 2982, + "end": 2986, "loc": { "start": { "line": 84, @@ -27271,8 +27403,8 @@ { "type": "CommentLine", "value": " Hovering over a new entity", - "start": 2968, - "end": 2997, + "start": 2989, + "end": 3018, "loc": { "start": { "line": 84, @@ -27288,8 +27420,8 @@ }, { "type": "ExpressionStatement", - "start": 3023, - "end": 3065, + "start": 3044, + "end": 3086, "loc": { "start": { "line": 86, @@ -27302,8 +27434,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 3023, - "end": 3064, + "start": 3044, + "end": 3085, "loc": { "start": { "line": 86, @@ -27317,8 +27449,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 3023, - "end": 3047, + "start": 3044, + "end": 3068, "loc": { "start": { "line": 86, @@ -27331,8 +27463,8 @@ }, "object": { "type": "ThisExpression", - "start": 3023, - "end": 3027, + "start": 3044, + "end": 3048, "loc": { "start": { "line": 86, @@ -27347,8 +27479,8 @@ }, "property": { "type": "Identifier", - "start": 3028, - "end": 3047, + "start": 3049, + "end": 3068, "loc": { "start": { "line": 86, @@ -27367,8 +27499,8 @@ }, "right": { "type": "Identifier", - "start": 3050, - "end": 3064, + "start": 3071, + "end": 3085, "loc": { "start": { "line": 86, @@ -27388,8 +27520,8 @@ { "type": "CommentLine", "value": " Hovering over a new entity", - "start": 2968, - "end": 2997, + "start": 2989, + "end": 3018, "loc": { "start": { "line": 84, @@ -27410,8 +27542,8 @@ }, { "type": "ExpressionStatement", - "start": 3109, - "end": 3170, + "start": 3130, + "end": 3191, "loc": { "start": { "line": 89, @@ -27424,8 +27556,8 @@ }, "expression": { "type": "CallExpression", - "start": 3109, - "end": 3169, + "start": 3130, + "end": 3190, "loc": { "start": { "line": 89, @@ -27438,8 +27570,8 @@ }, "callee": { "type": "MemberExpression", - "start": 3109, - "end": 3127, + "start": 3130, + "end": 3148, "loc": { "start": { "line": 89, @@ -27452,8 +27584,8 @@ }, "object": { "type": "Identifier", - "start": 3109, - "end": 3122, + "start": 3130, + "end": 3143, "loc": { "start": { "line": 89, @@ -27469,8 +27601,8 @@ }, "property": { "type": "Identifier", - "start": 3123, - "end": 3127, + "start": 3144, + "end": 3148, "loc": { "start": { "line": 89, @@ -27489,8 +27621,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 3128, - "end": 3135, + "start": 3149, + "end": 3156, "loc": { "start": { "line": 89, @@ -27509,8 +27641,8 @@ }, { "type": "MemberExpression", - "start": 3137, - "end": 3162, + "start": 3158, + "end": 3183, "loc": { "start": { "line": 89, @@ -27523,8 +27655,8 @@ }, "object": { "type": "Identifier", - "start": 3137, - "end": 3151, + "start": 3158, + "end": 3172, "loc": { "start": { "line": 89, @@ -27540,8 +27672,8 @@ }, "property": { "type": "Identifier", - "start": 3152, - "end": 3162, + "start": 3173, + "end": 3183, "loc": { "start": { "line": 89, @@ -27559,8 +27691,8 @@ }, { "type": "BooleanLiteral", - "start": 3164, - "end": 3168, + "start": 3185, + "end": 3189, "loc": { "start": { "line": 89, @@ -27578,8 +27710,8 @@ }, { "type": "IfStatement", - "start": 3192, - "end": 3385, + "start": 3213, + "end": 3406, "loc": { "start": { "line": 91, @@ -27592,8 +27724,8 @@ }, "test": { "type": "MemberExpression", - "start": 3196, - "end": 3230, + "start": 3217, + "end": 3251, "loc": { "start": { "line": 91, @@ -27606,8 +27738,8 @@ }, "object": { "type": "MemberExpression", - "start": 3196, - "end": 3221, + "start": 3217, + "end": 3242, "loc": { "start": { "line": 91, @@ -27620,8 +27752,8 @@ }, "object": { "type": "Identifier", - "start": 3196, - "end": 3210, + "start": 3217, + "end": 3231, "loc": { "start": { "line": 91, @@ -27637,8 +27769,8 @@ }, "property": { "type": "Identifier", - "start": 3211, - "end": 3221, + "start": 3232, + "end": 3242, "loc": { "start": { "line": 91, @@ -27656,8 +27788,8 @@ }, "property": { "type": "Identifier", - "start": 3222, - "end": 3230, + "start": 3243, + "end": 3251, "loc": { "start": { "line": 91, @@ -27675,8 +27807,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 3232, - "end": 3385, + "start": 3253, + "end": 3406, "loc": { "start": { "line": 91, @@ -27690,8 +27822,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 3295, - "end": 3363, + "start": 3316, + "end": 3384, "loc": { "start": { "line": 92, @@ -27704,8 +27836,8 @@ }, "expression": { "type": "CallExpression", - "start": 3295, - "end": 3362, + "start": 3316, + "end": 3383, "loc": { "start": { "line": 92, @@ -27718,8 +27850,8 @@ }, "callee": { "type": "MemberExpression", - "start": 3295, - "end": 3313, + "start": 3316, + "end": 3334, "loc": { "start": { "line": 92, @@ -27732,8 +27864,8 @@ }, "object": { "type": "Identifier", - "start": 3295, - "end": 3308, + "start": 3316, + "end": 3329, "loc": { "start": { "line": 92, @@ -27750,8 +27882,8 @@ }, "property": { "type": "Identifier", - "start": 3309, - "end": 3313, + "start": 3330, + "end": 3334, "loc": { "start": { "line": 92, @@ -27771,8 +27903,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 3314, - "end": 3328, + "start": 3335, + "end": 3349, "loc": { "start": { "line": 92, @@ -27791,8 +27923,8 @@ }, { "type": "MemberExpression", - "start": 3330, - "end": 3355, + "start": 3351, + "end": 3376, "loc": { "start": { "line": 92, @@ -27805,8 +27937,8 @@ }, "object": { "type": "Identifier", - "start": 3330, - "end": 3344, + "start": 3351, + "end": 3365, "loc": { "start": { "line": 92, @@ -27822,8 +27954,8 @@ }, "property": { "type": "Identifier", - "start": 3345, - "end": 3355, + "start": 3366, + "end": 3376, "loc": { "start": { "line": 92, @@ -27841,8 +27973,8 @@ }, { "type": "BooleanLiteral", - "start": 3357, - "end": 3361, + "start": 3378, + "end": 3382, "loc": { "start": { "line": 92, @@ -27862,8 +27994,8 @@ { "type": "CommentLine", "value": " Hovering the surface of an entity", - "start": 3234, - "end": 3270, + "start": 3255, + "end": 3291, "loc": { "start": { "line": 91, @@ -27887,8 +28019,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 3410, - "end": 3952, + "start": 3431, + "end": 3973, "loc": { "start": { "line": 95, @@ -27902,8 +28034,8 @@ "body": [ { "type": "IfStatement", - "start": 3433, - "end": 3756, + "start": 3454, + "end": 3777, "loc": { "start": { "line": 97, @@ -27916,8 +28048,8 @@ }, "test": { "type": "BinaryExpression", - "start": 3437, - "end": 3475, + "start": 3458, + "end": 3496, "loc": { "start": { "line": 97, @@ -27930,8 +28062,8 @@ }, "left": { "type": "MemberExpression", - "start": 3437, - "end": 3461, + "start": 3458, + "end": 3482, "loc": { "start": { "line": 97, @@ -27944,8 +28076,8 @@ }, "object": { "type": "ThisExpression", - "start": 3437, - "end": 3441, + "start": 3458, + "end": 3462, "loc": { "start": { "line": 97, @@ -27959,8 +28091,8 @@ }, "property": { "type": "Identifier", - "start": 3442, - "end": 3461, + "start": 3463, + "end": 3482, "loc": { "start": { "line": 97, @@ -27979,8 +28111,8 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 3466, - "end": 3475, + "start": 3487, + "end": 3496, "loc": { "start": { "line": 97, @@ -27997,8 +28129,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 3477, - "end": 3756, + "start": 3498, + "end": 3777, "loc": { "start": { "line": 97, @@ -28012,8 +28144,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 3504, - "end": 3671, + "start": 3525, + "end": 3692, "loc": { "start": { "line": 99, @@ -28026,8 +28158,8 @@ }, "expression": { "type": "CallExpression", - "start": 3504, - "end": 3670, + "start": 3525, + "end": 3691, "loc": { "start": { "line": 99, @@ -28040,8 +28172,8 @@ }, "callee": { "type": "MemberExpression", - "start": 3504, - "end": 3522, + "start": 3525, + "end": 3543, "loc": { "start": { "line": 99, @@ -28054,8 +28186,8 @@ }, "object": { "type": "Identifier", - "start": 3504, - "end": 3517, + "start": 3525, + "end": 3538, "loc": { "start": { "line": 99, @@ -28071,8 +28203,8 @@ }, "property": { "type": "Identifier", - "start": 3518, - "end": 3522, + "start": 3539, + "end": 3543, "loc": { "start": { "line": 99, @@ -28091,8 +28223,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 3523, - "end": 3533, + "start": 3544, + "end": 3554, "loc": { "start": { "line": 99, @@ -28111,8 +28243,8 @@ }, { "type": "ObjectExpression", - "start": 3535, - "end": 3663, + "start": 3556, + "end": 3684, "loc": { "start": { "line": 99, @@ -28126,8 +28258,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 3590, - "end": 3637, + "start": 3611, + "end": 3658, "loc": { "start": { "line": 100, @@ -28143,8 +28275,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 3590, - "end": 3596, + "start": 3611, + "end": 3617, "loc": { "start": { "line": 100, @@ -28161,8 +28293,8 @@ }, "value": { "type": "MemberExpression", - "start": 3598, - "end": 3637, + "start": 3619, + "end": 3658, "loc": { "start": { "line": 100, @@ -28175,8 +28307,8 @@ }, "object": { "type": "MemberExpression", - "start": 3598, - "end": 3611, + "start": 3619, + "end": 3632, "loc": { "start": { "line": 100, @@ -28189,8 +28321,8 @@ }, "object": { "type": "Identifier", - "start": 3598, - "end": 3603, + "start": 3619, + "end": 3624, "loc": { "start": { "line": 100, @@ -28206,8 +28338,8 @@ }, "property": { "type": "Identifier", - "start": 3604, - "end": 3611, + "start": 3625, + "end": 3632, "loc": { "start": { "line": 100, @@ -28225,8 +28357,8 @@ }, "property": { "type": "MemberExpression", - "start": 3612, - "end": 3636, + "start": 3633, + "end": 3657, "loc": { "start": { "line": 100, @@ -28239,8 +28371,8 @@ }, "object": { "type": "ThisExpression", - "start": 3612, - "end": 3616, + "start": 3633, + "end": 3637, "loc": { "start": { "line": 100, @@ -28254,8 +28386,8 @@ }, "property": { "type": "Identifier", - "start": 3617, - "end": 3636, + "start": 3638, + "end": 3657, "loc": { "start": { "line": 100, @@ -28277,8 +28409,8 @@ { "type": "CommentLine", "value": " Hovered off an entity", - "start": 3537, - "end": 3561, + "start": 3558, + "end": 3582, "loc": { "start": { "line": 99, @@ -28296,8 +28428,8 @@ }, { "type": "BooleanLiteral", - "start": 3665, - "end": 3669, + "start": 3686, + "end": 3690, "loc": { "start": { "line": 101, @@ -28315,8 +28447,8 @@ }, { "type": "ExpressionStatement", - "start": 3697, - "end": 3734, + "start": 3718, + "end": 3755, "loc": { "start": { "line": 103, @@ -28329,8 +28461,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 3697, - "end": 3733, + "start": 3718, + "end": 3754, "loc": { "start": { "line": 103, @@ -28344,8 +28476,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 3697, - "end": 3721, + "start": 3718, + "end": 3742, "loc": { "start": { "line": 103, @@ -28358,8 +28490,8 @@ }, "object": { "type": "ThisExpression", - "start": 3697, - "end": 3701, + "start": 3718, + "end": 3722, "loc": { "start": { "line": 103, @@ -28373,8 +28505,8 @@ }, "property": { "type": "Identifier", - "start": 3702, - "end": 3721, + "start": 3723, + "end": 3742, "loc": { "start": { "line": 103, @@ -28392,8 +28524,8 @@ }, "right": { "type": "Identifier", - "start": 3724, - "end": 3733, + "start": 3745, + "end": 3754, "loc": { "start": { "line": 103, @@ -28416,8 +28548,8 @@ }, { "type": "ExpressionStatement", - "start": 3778, - "end": 3934, + "start": 3799, + "end": 3955, "loc": { "start": { "line": 106, @@ -28430,8 +28562,8 @@ }, "expression": { "type": "CallExpression", - "start": 3778, - "end": 3933, + "start": 3799, + "end": 3954, "loc": { "start": { "line": 106, @@ -28444,8 +28576,8 @@ }, "callee": { "type": "MemberExpression", - "start": 3778, - "end": 3796, + "start": 3799, + "end": 3817, "loc": { "start": { "line": 106, @@ -28458,8 +28590,8 @@ }, "object": { "type": "Identifier", - "start": 3778, - "end": 3791, + "start": 3799, + "end": 3812, "loc": { "start": { "line": 106, @@ -28475,8 +28607,8 @@ }, "property": { "type": "Identifier", - "start": 3792, - "end": 3796, + "start": 3813, + "end": 3817, "loc": { "start": { "line": 106, @@ -28495,8 +28627,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 3797, - "end": 3807, + "start": 3818, + "end": 3828, "loc": { "start": { "line": 106, @@ -28515,8 +28647,8 @@ }, { "type": "ObjectExpression", - "start": 3809, - "end": 3926, + "start": 3830, + "end": 3947, "loc": { "start": { "line": 106, @@ -28530,8 +28662,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 3865, - "end": 3904, + "start": 3886, + "end": 3925, "loc": { "start": { "line": 107, @@ -28547,8 +28679,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 3865, - "end": 3874, + "start": 3886, + "end": 3895, "loc": { "start": { "line": 107, @@ -28565,8 +28697,8 @@ }, "value": { "type": "MemberExpression", - "start": 3876, - "end": 3904, + "start": 3897, + "end": 3925, "loc": { "start": { "line": 107, @@ -28579,8 +28711,8 @@ }, "object": { "type": "Identifier", - "start": 3876, - "end": 3890, + "start": 3897, + "end": 3911, "loc": { "start": { "line": 107, @@ -28596,8 +28728,8 @@ }, "property": { "type": "Identifier", - "start": 3891, - "end": 3904, + "start": 3912, + "end": 3925, "loc": { "start": { "line": 107, @@ -28617,8 +28749,8 @@ { "type": "CommentLine", "value": " Not hovering on any entity", - "start": 3811, - "end": 3840, + "start": 3832, + "end": 3861, "loc": { "start": { "line": 106, @@ -28636,8 +28768,8 @@ }, { "type": "BooleanLiteral", - "start": 3928, - "end": 3932, + "start": 3949, + "end": 3953, "loc": { "start": { "line": 108, @@ -28672,8 +28804,8 @@ }, { "type": "ExpressionStatement", - "start": 3988, - "end": 5715, + "start": 4009, + "end": 5736, "loc": { "start": { "line": 113, @@ -28686,8 +28818,8 @@ }, "expression": { "type": "CallExpression", - "start": 3988, - "end": 5714, + "start": 4009, + "end": 5735, "loc": { "start": { "line": 113, @@ -28700,8 +28832,8 @@ }, "callee": { "type": "MemberExpression", - "start": 3988, - "end": 4011, + "start": 4009, + "end": 4032, "loc": { "start": { "line": 113, @@ -28714,8 +28846,8 @@ }, "object": { "type": "Identifier", - "start": 3988, - "end": 3994, + "start": 4009, + "end": 4015, "loc": { "start": { "line": 113, @@ -28731,8 +28863,8 @@ }, "property": { "type": "Identifier", - "start": 3995, - "end": 4011, + "start": 4016, + "end": 4032, "loc": { "start": { "line": 113, @@ -28751,8 +28883,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 4012, - "end": 4023, + "start": 4033, + "end": 4044, "loc": { "start": { "line": 113, @@ -28771,8 +28903,8 @@ }, { "type": "AssignmentExpression", - "start": 4025, - "end": 5713, + "start": 4046, + "end": 5734, "loc": { "start": { "line": 113, @@ -28786,8 +28918,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 4025, - "end": 4053, + "start": 4046, + "end": 4074, "loc": { "start": { "line": 113, @@ -28800,8 +28932,8 @@ }, "object": { "type": "ThisExpression", - "start": 4025, - "end": 4029, + "start": 4046, + "end": 4050, "loc": { "start": { "line": 113, @@ -28815,8 +28947,8 @@ }, "property": { "type": "Identifier", - "start": 4030, - "end": 4053, + "start": 4051, + "end": 4074, "loc": { "start": { "line": 113, @@ -28834,8 +28966,8 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 4056, - "end": 5713, + "start": 4077, + "end": 5734, "loc": { "start": { "line": 113, @@ -28853,8 +28985,8 @@ "params": [ { "type": "Identifier", - "start": 4057, - "end": 4058, + "start": 4078, + "end": 4079, "loc": { "start": { "line": 113, @@ -28871,8 +29003,8 @@ ], "body": { "type": "BlockStatement", - "start": 4063, - "end": 5713, + "start": 4084, + "end": 5734, "loc": { "start": { "line": 113, @@ -28886,8 +29018,8 @@ "body": [ { "type": "IfStatement", - "start": 4078, - "end": 4145, + "start": 4099, + "end": 4166, "loc": { "start": { "line": 115, @@ -28900,8 +29032,8 @@ }, "test": { "type": "BinaryExpression", - "start": 4082, - "end": 4095, + "start": 4103, + "end": 4116, "loc": { "start": { "line": 115, @@ -28914,8 +29046,8 @@ }, "left": { "type": "MemberExpression", - "start": 4082, - "end": 4089, + "start": 4103, + "end": 4110, "loc": { "start": { "line": 115, @@ -28928,8 +29060,8 @@ }, "object": { "type": "Identifier", - "start": 4082, - "end": 4083, + "start": 4103, + "end": 4104, "loc": { "start": { "line": 115, @@ -28945,8 +29077,8 @@ }, "property": { "type": "Identifier", - "start": 4084, - "end": 4089, + "start": 4105, + "end": 4110, "loc": { "start": { "line": 115, @@ -28965,8 +29097,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 4094, - "end": 4095, + "start": 4115, + "end": 4116, "loc": { "start": { "line": 115, @@ -28986,8 +29118,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 4097, - "end": 4145, + "start": 4118, + "end": 4166, "loc": { "start": { "line": 115, @@ -29001,8 +29133,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 4115, - "end": 4131, + "start": 4136, + "end": 4152, "loc": { "start": { "line": 116, @@ -29015,8 +29147,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4115, - "end": 4130, + "start": 4136, + "end": 4151, "loc": { "start": { "line": 116, @@ -29030,8 +29162,8 @@ "operator": "=", "left": { "type": "Identifier", - "start": 4115, - "end": 4123, + "start": 4136, + "end": 4144, "loc": { "start": { "line": 116, @@ -29047,8 +29179,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 4126, - "end": 4130, + "start": 4147, + "end": 4151, "loc": { "start": { "line": 116, @@ -29070,8 +29202,8 @@ }, { "type": "IfStatement", - "start": 4159, - "end": 4227, + "start": 4180, + "end": 4248, "loc": { "start": { "line": 119, @@ -29084,8 +29216,8 @@ }, "test": { "type": "BinaryExpression", - "start": 4163, - "end": 4176, + "start": 4184, + "end": 4197, "loc": { "start": { "line": 119, @@ -29098,8 +29230,8 @@ }, "left": { "type": "MemberExpression", - "start": 4163, - "end": 4170, + "start": 4184, + "end": 4191, "loc": { "start": { "line": 119, @@ -29112,8 +29244,8 @@ }, "object": { "type": "Identifier", - "start": 4163, - "end": 4164, + "start": 4184, + "end": 4185, "loc": { "start": { "line": 119, @@ -29129,8 +29261,8 @@ }, "property": { "type": "Identifier", - "start": 4165, - "end": 4170, + "start": 4186, + "end": 4191, "loc": { "start": { "line": 119, @@ -29149,8 +29281,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 4175, - "end": 4176, + "start": 4196, + "end": 4197, "loc": { "start": { "line": 119, @@ -29170,8 +29302,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 4178, - "end": 4227, + "start": 4199, + "end": 4248, "loc": { "start": { "line": 119, @@ -29185,8 +29317,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 4196, - "end": 4213, + "start": 4217, + "end": 4234, "loc": { "start": { "line": 120, @@ -29199,8 +29331,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4196, - "end": 4212, + "start": 4217, + "end": 4233, "loc": { "start": { "line": 120, @@ -29214,8 +29346,8 @@ "operator": "=", "left": { "type": "Identifier", - "start": 4196, - "end": 4205, + "start": 4217, + "end": 4226, "loc": { "start": { "line": 120, @@ -29231,8 +29363,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 4208, - "end": 4212, + "start": 4229, + "end": 4233, "loc": { "start": { "line": 120, @@ -29254,8 +29386,8 @@ }, { "type": "VariableDeclaration", - "start": 4241, - "end": 4280, + "start": 4262, + "end": 4301, "loc": { "start": { "line": 123, @@ -29269,8 +29401,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 4247, - "end": 4279, + "start": 4268, + "end": 4300, "loc": { "start": { "line": 123, @@ -29283,8 +29415,8 @@ }, "id": { "type": "Identifier", - "start": 4247, - "end": 4261, + "start": 4268, + "end": 4282, "loc": { "start": { "line": 123, @@ -29300,8 +29432,8 @@ }, "init": { "type": "BinaryExpression", - "start": 4265, - "end": 4278, + "start": 4286, + "end": 4299, "loc": { "start": { "line": 123, @@ -29314,8 +29446,8 @@ }, "left": { "type": "MemberExpression", - "start": 4265, - "end": 4272, + "start": 4286, + "end": 4293, "loc": { "start": { "line": 123, @@ -29328,8 +29460,8 @@ }, "object": { "type": "Identifier", - "start": 4265, - "end": 4266, + "start": 4286, + "end": 4287, "loc": { "start": { "line": 123, @@ -29345,8 +29477,8 @@ }, "property": { "type": "Identifier", - "start": 4267, - "end": 4272, + "start": 4288, + "end": 4293, "loc": { "start": { "line": 123, @@ -29365,8 +29497,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 4277, - "end": 4278, + "start": 4298, + "end": 4299, "loc": { "start": { "line": 123, @@ -29385,7 +29517,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 4264 + "parenStart": 4285 } } } @@ -29394,8 +29526,8 @@ }, { "type": "IfStatement", - "start": 4294, - "end": 4354, + "start": 4315, + "end": 4375, "loc": { "start": { "line": 125, @@ -29408,8 +29540,8 @@ }, "test": { "type": "UnaryExpression", - "start": 4298, - "end": 4313, + "start": 4319, + "end": 4334, "loc": { "start": { "line": 125, @@ -29424,8 +29556,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 4299, - "end": 4313, + "start": 4320, + "end": 4334, "loc": { "start": { "line": 125, @@ -29445,8 +29577,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 4315, - "end": 4354, + "start": 4336, + "end": 4375, "loc": { "start": { "line": 125, @@ -29460,8 +29592,8 @@ "body": [ { "type": "ReturnStatement", - "start": 4333, - "end": 4340, + "start": 4354, + "end": 4361, "loc": { "start": { "line": 126, @@ -29481,8 +29613,8 @@ }, { "type": "IfStatement", - "start": 4368, - "end": 4456, + "start": 4389, + "end": 4477, "loc": { "start": { "line": 129, @@ -29495,8 +29627,8 @@ }, "test": { "type": "UnaryExpression", - "start": 4372, - "end": 4415, + "start": 4393, + "end": 4436, "loc": { "start": { "line": 129, @@ -29511,8 +29643,8 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 4374, - "end": 4414, + "start": 4395, + "end": 4435, "loc": { "start": { "line": 129, @@ -29525,8 +29657,8 @@ }, "left": { "type": "MemberExpression", - "start": 4374, - "end": 4388, + "start": 4395, + "end": 4409, "loc": { "start": { "line": 129, @@ -29539,8 +29671,8 @@ }, "object": { "type": "Identifier", - "start": 4374, - "end": 4381, + "start": 4395, + "end": 4402, "loc": { "start": { "line": 129, @@ -29556,8 +29688,8 @@ }, "property": { "type": "Identifier", - "start": 4382, - "end": 4388, + "start": 4403, + "end": 4409, "loc": { "start": { "line": 129, @@ -29576,8 +29708,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 4392, - "end": 4414, + "start": 4413, + "end": 4435, "loc": { "start": { "line": 129, @@ -29590,8 +29722,8 @@ }, "object": { "type": "Identifier", - "start": 4392, - "end": 4399, + "start": 4413, + "end": 4420, "loc": { "start": { "line": 129, @@ -29607,8 +29739,8 @@ }, "property": { "type": "Identifier", - "start": 4400, - "end": 4414, + "start": 4421, + "end": 4435, "loc": { "start": { "line": 129, @@ -29626,7 +29758,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 4373 + "parenStart": 4394 } }, "extra": { @@ -29635,8 +29767,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 4417, - "end": 4456, + "start": 4438, + "end": 4477, "loc": { "start": { "line": 129, @@ -29650,8 +29782,8 @@ "body": [ { "type": "ReturnStatement", - "start": 4435, - "end": 4442, + "start": 4456, + "end": 4463, "loc": { "start": { "line": 130, @@ -29673,8 +29805,8 @@ { "type": "CommentLine", "value": " Left mouse button down to start pivoting", - "start": 4470, - "end": 4513, + "start": 4491, + "end": 4534, "loc": { "start": { "line": 133, @@ -29690,8 +29822,8 @@ }, { "type": "ExpressionStatement", - "start": 4527, - "end": 4563, + "start": 4548, + "end": 4584, "loc": { "start": { "line": 135, @@ -29704,8 +29836,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4527, - "end": 4562, + "start": 4548, + "end": 4583, "loc": { "start": { "line": 135, @@ -29719,8 +29851,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 4527, - "end": 4550, + "start": 4548, + "end": 4571, "loc": { "start": { "line": 135, @@ -29733,8 +29865,8 @@ }, "object": { "type": "Identifier", - "start": 4527, - "end": 4533, + "start": 4548, + "end": 4554, "loc": { "start": { "line": 135, @@ -29751,8 +29883,8 @@ }, "property": { "type": "Identifier", - "start": 4534, - "end": 4550, + "start": 4555, + "end": 4571, "loc": { "start": { "line": 135, @@ -29771,8 +29903,8 @@ }, "right": { "type": "MemberExpression", - "start": 4553, - "end": 4562, + "start": 4574, + "end": 4583, "loc": { "start": { "line": 135, @@ -29785,8 +29917,8 @@ }, "object": { "type": "Identifier", - "start": 4553, - "end": 4554, + "start": 4574, + "end": 4575, "loc": { "start": { "line": 135, @@ -29802,8 +29934,8 @@ }, "property": { "type": "Identifier", - "start": 4555, - "end": 4562, + "start": 4576, + "end": 4583, "loc": { "start": { "line": 135, @@ -29825,8 +29957,8 @@ { "type": "CommentLine", "value": " Left mouse button down to start pivoting", - "start": 4470, - "end": 4513, + "start": 4491, + "end": 4534, "loc": { "start": { "line": 133, @@ -29842,8 +29974,8 @@ }, { "type": "ExpressionStatement", - "start": 4576, - "end": 4612, + "start": 4597, + "end": 4633, "loc": { "start": { "line": 136, @@ -29856,8 +29988,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4576, - "end": 4611, + "start": 4597, + "end": 4632, "loc": { "start": { "line": 136, @@ -29871,8 +30003,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 4576, - "end": 4599, + "start": 4597, + "end": 4620, "loc": { "start": { "line": 136, @@ -29885,8 +30017,8 @@ }, "object": { "type": "Identifier", - "start": 4576, - "end": 4582, + "start": 4597, + "end": 4603, "loc": { "start": { "line": 136, @@ -29902,8 +30034,8 @@ }, "property": { "type": "Identifier", - "start": 4583, - "end": 4599, + "start": 4604, + "end": 4620, "loc": { "start": { "line": 136, @@ -29921,8 +30053,8 @@ }, "right": { "type": "MemberExpression", - "start": 4602, - "end": 4611, + "start": 4623, + "end": 4632, "loc": { "start": { "line": 136, @@ -29935,8 +30067,8 @@ }, "object": { "type": "Identifier", - "start": 4602, - "end": 4603, + "start": 4623, + "end": 4624, "loc": { "start": { "line": 136, @@ -29952,8 +30084,8 @@ }, "property": { "type": "Identifier", - "start": 4604, - "end": 4611, + "start": 4625, + "end": 4632, "loc": { "start": { "line": 136, @@ -29973,8 +30105,8 @@ }, { "type": "ExpressionStatement", - "start": 4625, - "end": 4678, + "start": 4646, + "end": 4699, "loc": { "start": { "line": 137, @@ -29987,8 +30119,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4625, - "end": 4677, + "start": 4646, + "end": 4698, "loc": { "start": { "line": 137, @@ -30002,8 +30134,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 4625, - "end": 4648, + "start": 4646, + "end": 4669, "loc": { "start": { "line": 137, @@ -30016,8 +30148,8 @@ }, "object": { "type": "Identifier", - "start": 4625, - "end": 4631, + "start": 4646, + "end": 4652, "loc": { "start": { "line": 137, @@ -30033,8 +30165,8 @@ }, "property": { "type": "Identifier", - "start": 4632, - "end": 4648, + "start": 4653, + "end": 4669, "loc": { "start": { "line": 137, @@ -30052,8 +30184,8 @@ }, "right": { "type": "MemberExpression", - "start": 4651, - "end": 4677, + "start": 4672, + "end": 4698, "loc": { "start": { "line": 137, @@ -30066,8 +30198,8 @@ }, "object": { "type": "MemberExpression", - "start": 4651, - "end": 4674, + "start": 4672, + "end": 4695, "loc": { "start": { "line": 137, @@ -30080,8 +30212,8 @@ }, "object": { "type": "Identifier", - "start": 4651, - "end": 4657, + "start": 4672, + "end": 4678, "loc": { "start": { "line": 137, @@ -30097,8 +30229,8 @@ }, "property": { "type": "Identifier", - "start": 4658, - "end": 4674, + "start": 4679, + "end": 4695, "loc": { "start": { "line": 137, @@ -30116,8 +30248,8 @@ }, "property": { "type": "NumericLiteral", - "start": 4675, - "end": 4676, + "start": 4696, + "end": 4697, "loc": { "start": { "line": 137, @@ -30140,8 +30272,8 @@ }, { "type": "ExpressionStatement", - "start": 4691, - "end": 4744, + "start": 4712, + "end": 4765, "loc": { "start": { "line": 138, @@ -30154,8 +30286,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4691, - "end": 4743, + "start": 4712, + "end": 4764, "loc": { "start": { "line": 138, @@ -30169,8 +30301,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 4691, - "end": 4714, + "start": 4712, + "end": 4735, "loc": { "start": { "line": 138, @@ -30183,8 +30315,8 @@ }, "object": { "type": "Identifier", - "start": 4691, - "end": 4697, + "start": 4712, + "end": 4718, "loc": { "start": { "line": 138, @@ -30200,8 +30332,8 @@ }, "property": { "type": "Identifier", - "start": 4698, - "end": 4714, + "start": 4719, + "end": 4735, "loc": { "start": { "line": 138, @@ -30219,8 +30351,8 @@ }, "right": { "type": "MemberExpression", - "start": 4717, - "end": 4743, + "start": 4738, + "end": 4764, "loc": { "start": { "line": 138, @@ -30233,8 +30365,8 @@ }, "object": { "type": "MemberExpression", - "start": 4717, - "end": 4740, + "start": 4738, + "end": 4761, "loc": { "start": { "line": 138, @@ -30247,8 +30379,8 @@ }, "object": { "type": "Identifier", - "start": 4717, - "end": 4723, + "start": 4738, + "end": 4744, "loc": { "start": { "line": 138, @@ -30264,8 +30396,8 @@ }, "property": { "type": "Identifier", - "start": 4724, - "end": 4740, + "start": 4745, + "end": 4761, "loc": { "start": { "line": 138, @@ -30283,8 +30415,8 @@ }, "property": { "type": "NumericLiteral", - "start": 4741, - "end": 4742, + "start": 4762, + "end": 4763, "loc": { "start": { "line": 138, @@ -30307,8 +30439,8 @@ }, { "type": "IfStatement", - "start": 4758, - "end": 5703, + "start": 4779, + "end": 5724, "loc": { "start": { "line": 140, @@ -30321,8 +30453,8 @@ }, "test": { "type": "LogicalExpression", - "start": 4762, - "end": 4809, + "start": 4783, + "end": 4830, "loc": { "start": { "line": 140, @@ -30335,8 +30467,8 @@ }, "left": { "type": "UnaryExpression", - "start": 4763, - "end": 4783, + "start": 4784, + "end": 4804, "loc": { "start": { "line": 140, @@ -30351,8 +30483,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 4764, - "end": 4783, + "start": 4785, + "end": 4804, "loc": { "start": { "line": 140, @@ -30365,8 +30497,8 @@ }, "object": { "type": "Identifier", - "start": 4764, - "end": 4771, + "start": 4785, + "end": 4792, "loc": { "start": { "line": 140, @@ -30382,8 +30514,8 @@ }, "property": { "type": "Identifier", - "start": 4772, - "end": 4783, + "start": 4793, + "end": 4804, "loc": { "start": { "line": 140, @@ -30402,14 +30534,14 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 4762 + "parenStart": 4783 } }, "operator": "&&", "right": { "type": "MemberExpression", - "start": 4788, - "end": 4809, + "start": 4809, + "end": 4830, "loc": { "start": { "line": 140, @@ -30422,8 +30554,8 @@ }, "object": { "type": "Identifier", - "start": 4788, - "end": 4795, + "start": 4809, + "end": 4816, "loc": { "start": { "line": 140, @@ -30439,8 +30571,8 @@ }, "property": { "type": "Identifier", - "start": 4796, - "end": 4809, + "start": 4817, + "end": 4830, "loc": { "start": { "line": 140, @@ -30459,8 +30591,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 4811, - "end": 5703, + "start": 4832, + "end": 5724, "loc": { "start": { "line": 140, @@ -30474,8 +30606,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 4830, - "end": 4885, + "start": 4851, + "end": 4906, "loc": { "start": { "line": 142, @@ -30488,8 +30620,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4830, - "end": 4884, + "start": 4851, + "end": 4905, "loc": { "start": { "line": 142, @@ -30503,8 +30635,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 4830, - "end": 4858, + "start": 4851, + "end": 4879, "loc": { "start": { "line": 142, @@ -30517,8 +30649,8 @@ }, "object": { "type": "Identifier", - "start": 4830, - "end": 4844, + "start": 4851, + "end": 4865, "loc": { "start": { "line": 142, @@ -30534,8 +30666,8 @@ }, "property": { "type": "Identifier", - "start": 4845, - "end": 4858, + "start": 4866, + "end": 4879, "loc": { "start": { "line": 142, @@ -30553,8 +30685,8 @@ }, "right": { "type": "MemberExpression", - "start": 4861, - "end": 4884, + "start": 4882, + "end": 4905, "loc": { "start": { "line": 142, @@ -30567,8 +30699,8 @@ }, "object": { "type": "Identifier", - "start": 4861, - "end": 4867, + "start": 4882, + "end": 4888, "loc": { "start": { "line": 142, @@ -30584,8 +30716,8 @@ }, "property": { "type": "Identifier", - "start": 4868, - "end": 4884, + "start": 4889, + "end": 4905, "loc": { "start": { "line": 142, @@ -30605,8 +30737,8 @@ }, { "type": "ExpressionStatement", - "start": 4902, - "end": 4944, + "start": 4923, + "end": 4965, "loc": { "start": { "line": 143, @@ -30619,8 +30751,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 4902, - "end": 4943, + "start": 4923, + "end": 4964, "loc": { "start": { "line": 143, @@ -30634,8 +30766,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 4902, - "end": 4936, + "start": 4923, + "end": 4957, "loc": { "start": { "line": 143, @@ -30648,8 +30780,8 @@ }, "object": { "type": "Identifier", - "start": 4902, - "end": 4916, + "start": 4923, + "end": 4937, "loc": { "start": { "line": 143, @@ -30665,8 +30797,8 @@ }, "property": { "type": "Identifier", - "start": 4917, - "end": 4936, + "start": 4938, + "end": 4957, "loc": { "start": { "line": 143, @@ -30684,8 +30816,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 4939, - "end": 4943, + "start": 4960, + "end": 4964, "loc": { "start": { "line": 143, @@ -30702,8 +30834,8 @@ }, { "type": "ExpressionStatement", - "start": 4962, - "end": 4986, + "start": 4983, + "end": 5007, "loc": { "start": { "line": 145, @@ -30716,8 +30848,8 @@ }, "expression": { "type": "CallExpression", - "start": 4962, - "end": 4985, + "start": 4983, + "end": 5006, "loc": { "start": { "line": 145, @@ -30730,8 +30862,8 @@ }, "callee": { "type": "MemberExpression", - "start": 4962, - "end": 4983, + "start": 4983, + "end": 5004, "loc": { "start": { "line": 145, @@ -30744,8 +30876,8 @@ }, "object": { "type": "Identifier", - "start": 4962, - "end": 4976, + "start": 4983, + "end": 4997, "loc": { "start": { "line": 145, @@ -30761,8 +30893,8 @@ }, "property": { "type": "Identifier", - "start": 4977, - "end": 4983, + "start": 4998, + "end": 5004, "loc": { "start": { "line": 145, @@ -30783,8 +30915,8 @@ }, { "type": "IfStatement", - "start": 5004, - "end": 5689, + "start": 5025, + "end": 5710, "loc": { "start": { "line": 147, @@ -30797,8 +30929,8 @@ }, "test": { "type": "BinaryExpression", - "start": 5008, - "end": 5021, + "start": 5029, + "end": 5042, "loc": { "start": { "line": 147, @@ -30811,8 +30943,8 @@ }, "left": { "type": "MemberExpression", - "start": 5008, - "end": 5015, + "start": 5029, + "end": 5036, "loc": { "start": { "line": 147, @@ -30825,8 +30957,8 @@ }, "object": { "type": "Identifier", - "start": 5008, - "end": 5009, + "start": 5029, + "end": 5030, "loc": { "start": { "line": 147, @@ -30842,8 +30974,8 @@ }, "property": { "type": "Identifier", - "start": 5010, - "end": 5015, + "start": 5031, + "end": 5036, "loc": { "start": { "line": 147, @@ -30862,8 +30994,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 5020, - "end": 5021, + "start": 5041, + "end": 5042, "loc": { "start": { "line": 147, @@ -30883,8 +31015,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 5023, - "end": 5689, + "start": 5044, + "end": 5710, "loc": { "start": { "line": 147, @@ -30898,8 +31030,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 5059, - "end": 5104, + "start": 5080, + "end": 5125, "loc": { "start": { "line": 148, @@ -30913,8 +31045,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 5065, - "end": 5103, + "start": 5086, + "end": 5124, "loc": { "start": { "line": 148, @@ -30927,8 +31059,8 @@ }, "id": { "type": "Identifier", - "start": 5065, - "end": 5075, + "start": 5086, + "end": 5096, "loc": { "start": { "line": 148, @@ -30945,8 +31077,8 @@ }, "init": { "type": "MemberExpression", - "start": 5078, - "end": 5103, + "start": 5099, + "end": 5124, "loc": { "start": { "line": 148, @@ -30959,8 +31091,8 @@ }, "object": { "type": "Identifier", - "start": 5078, - "end": 5092, + "start": 5099, + "end": 5113, "loc": { "start": { "line": 148, @@ -30976,8 +31108,8 @@ }, "property": { "type": "Identifier", - "start": 5093, - "end": 5103, + "start": 5114, + "end": 5124, "loc": { "start": { "line": 148, @@ -31001,8 +31133,8 @@ { "type": "CommentLine", "value": " Left button", - "start": 5024, - "end": 5038, + "start": 5045, + "end": 5059, "loc": { "start": { "line": 147, @@ -31018,8 +31150,8 @@ }, { "type": "IfStatement", - "start": 5125, - "end": 5671, + "start": 5146, + "end": 5692, "loc": { "start": { "line": 149, @@ -31032,8 +31164,8 @@ }, "test": { "type": "LogicalExpression", - "start": 5129, - "end": 5162, + "start": 5150, + "end": 5183, "loc": { "start": { "line": 149, @@ -31046,8 +31178,8 @@ }, "left": { "type": "Identifier", - "start": 5129, - "end": 5139, + "start": 5150, + "end": 5160, "loc": { "start": { "line": 149, @@ -31064,8 +31196,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 5143, - "end": 5162, + "start": 5164, + "end": 5183, "loc": { "start": { "line": 149, @@ -31078,8 +31210,8 @@ }, "object": { "type": "Identifier", - "start": 5143, - "end": 5153, + "start": 5164, + "end": 5174, "loc": { "start": { "line": 149, @@ -31095,8 +31227,8 @@ }, "property": { "type": "Identifier", - "start": 5154, - "end": 5162, + "start": 5175, + "end": 5183, "loc": { "start": { "line": 149, @@ -31115,8 +31247,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 5164, - "end": 5315, + "start": 5185, + "end": 5336, "loc": { "start": { "line": 149, @@ -31130,8 +31262,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 5190, - "end": 5239, + "start": 5211, + "end": 5260, "loc": { "start": { "line": 150, @@ -31144,8 +31276,8 @@ }, "expression": { "type": "CallExpression", - "start": 5190, - "end": 5238, + "start": 5211, + "end": 5259, "loc": { "start": { "line": 150, @@ -31158,8 +31290,8 @@ }, "callee": { "type": "MemberExpression", - "start": 5190, - "end": 5217, + "start": 5211, + "end": 5238, "loc": { "start": { "line": 150, @@ -31172,8 +31304,8 @@ }, "object": { "type": "Identifier", - "start": 5190, - "end": 5205, + "start": 5211, + "end": 5226, "loc": { "start": { "line": 150, @@ -31189,8 +31321,8 @@ }, "property": { "type": "Identifier", - "start": 5206, - "end": 5217, + "start": 5227, + "end": 5238, "loc": { "start": { "line": 150, @@ -31209,8 +31341,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 5218, - "end": 5237, + "start": 5239, + "end": 5258, "loc": { "start": { "line": 150, @@ -31223,8 +31355,8 @@ }, "object": { "type": "Identifier", - "start": 5218, - "end": 5228, + "start": 5239, + "end": 5249, "loc": { "start": { "line": 150, @@ -31240,8 +31372,8 @@ }, "property": { "type": "Identifier", - "start": 5229, - "end": 5237, + "start": 5250, + "end": 5258, "loc": { "start": { "line": 150, @@ -31262,8 +31394,8 @@ }, { "type": "ExpressionStatement", - "start": 5264, - "end": 5293, + "start": 5285, + "end": 5314, "loc": { "start": { "line": 151, @@ -31276,8 +31408,8 @@ }, "expression": { "type": "CallExpression", - "start": 5264, - "end": 5292, + "start": 5285, + "end": 5313, "loc": { "start": { "line": 151, @@ -31290,8 +31422,8 @@ }, "callee": { "type": "MemberExpression", - "start": 5264, - "end": 5290, + "start": 5285, + "end": 5311, "loc": { "start": { "line": 151, @@ -31304,8 +31436,8 @@ }, "object": { "type": "Identifier", - "start": 5264, - "end": 5279, + "start": 5285, + "end": 5300, "loc": { "start": { "line": 151, @@ -31321,8 +31453,8 @@ }, "property": { "type": "Identifier", - "start": 5280, - "end": 5290, + "start": 5301, + "end": 5311, "loc": { "start": { "line": 151, @@ -31346,8 +31478,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 5321, - "end": 5671, + "start": 5342, + "end": 5692, "loc": { "start": { "line": 152, @@ -31361,8 +31493,8 @@ "body": [ { "type": "IfStatement", - "start": 5347, - "end": 5595, + "start": 5368, + "end": 5616, "loc": { "start": { "line": 153, @@ -31375,8 +31507,8 @@ }, "test": { "type": "MemberExpression", - "start": 5351, - "end": 5369, + "start": 5372, + "end": 5390, "loc": { "start": { "line": 153, @@ -31389,8 +31521,8 @@ }, "object": { "type": "Identifier", - "start": 5351, - "end": 5358, + "start": 5372, + "end": 5379, "loc": { "start": { "line": 153, @@ -31406,8 +31538,8 @@ }, "property": { "type": "Identifier", - "start": 5359, - "end": 5369, + "start": 5380, + "end": 5390, "loc": { "start": { "line": 153, @@ -31425,8 +31557,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 5371, - "end": 5486, + "start": 5392, + "end": 5507, "loc": { "start": { "line": 153, @@ -31440,8 +31572,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 5401, - "end": 5460, + "start": 5422, + "end": 5481, "loc": { "start": { "line": 154, @@ -31454,8 +31586,8 @@ }, "expression": { "type": "CallExpression", - "start": 5401, - "end": 5459, + "start": 5422, + "end": 5480, "loc": { "start": { "line": 154, @@ -31468,8 +31600,8 @@ }, "callee": { "type": "MemberExpression", - "start": 5401, - "end": 5434, + "start": 5422, + "end": 5455, "loc": { "start": { "line": 154, @@ -31482,8 +31614,8 @@ }, "object": { "type": "Identifier", - "start": 5401, - "end": 5416, + "start": 5422, + "end": 5437, "loc": { "start": { "line": 154, @@ -31499,8 +31631,8 @@ }, "property": { "type": "Identifier", - "start": 5417, - "end": 5434, + "start": 5438, + "end": 5455, "loc": { "start": { "line": 154, @@ -31519,8 +31651,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 5435, - "end": 5458, + "start": 5456, + "end": 5479, "loc": { "start": { "line": 154, @@ -31533,8 +31665,8 @@ }, "object": { "type": "Identifier", - "start": 5435, - "end": 5441, + "start": 5456, + "end": 5462, "loc": { "start": { "line": 154, @@ -31550,8 +31682,8 @@ }, "property": { "type": "Identifier", - "start": 5442, - "end": 5458, + "start": 5463, + "end": 5479, "loc": { "start": { "line": 154, @@ -31575,8 +31707,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 5492, - "end": 5595, + "start": 5513, + "end": 5616, "loc": { "start": { "line": 155, @@ -31590,8 +31722,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 5522, - "end": 5569, + "start": 5543, + "end": 5590, "loc": { "start": { "line": 156, @@ -31604,8 +31736,8 @@ }, "expression": { "type": "CallExpression", - "start": 5522, - "end": 5568, + "start": 5543, + "end": 5589, "loc": { "start": { "line": 156, @@ -31618,8 +31750,8 @@ }, "callee": { "type": "MemberExpression", - "start": 5522, - "end": 5549, + "start": 5543, + "end": 5570, "loc": { "start": { "line": 156, @@ -31632,8 +31764,8 @@ }, "object": { "type": "Identifier", - "start": 5522, - "end": 5537, + "start": 5543, + "end": 5558, "loc": { "start": { "line": 156, @@ -31649,8 +31781,8 @@ }, "property": { "type": "Identifier", - "start": 5538, - "end": 5549, + "start": 5559, + "end": 5570, "loc": { "start": { "line": 156, @@ -31669,8 +31801,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 5550, - "end": 5567, + "start": 5571, + "end": 5588, "loc": { "start": { "line": 156, @@ -31683,8 +31815,8 @@ }, "object": { "type": "MemberExpression", - "start": 5550, - "end": 5562, + "start": 5571, + "end": 5583, "loc": { "start": { "line": 156, @@ -31697,8 +31829,8 @@ }, "object": { "type": "Identifier", - "start": 5550, - "end": 5555, + "start": 5571, + "end": 5576, "loc": { "start": { "line": 156, @@ -31714,8 +31846,8 @@ }, "property": { "type": "Identifier", - "start": 5556, - "end": 5562, + "start": 5577, + "end": 5583, "loc": { "start": { "line": 156, @@ -31733,8 +31865,8 @@ }, "property": { "type": "Identifier", - "start": 5563, - "end": 5567, + "start": 5584, + "end": 5588, "loc": { "start": { "line": 156, @@ -31759,8 +31891,8 @@ }, { "type": "ExpressionStatement", - "start": 5620, - "end": 5649, + "start": 5641, + "end": 5670, "loc": { "start": { "line": 158, @@ -31773,8 +31905,8 @@ }, "expression": { "type": "CallExpression", - "start": 5620, - "end": 5648, + "start": 5641, + "end": 5669, "loc": { "start": { "line": 158, @@ -31787,8 +31919,8 @@ }, "callee": { "type": "MemberExpression", - "start": 5620, - "end": 5646, + "start": 5641, + "end": 5667, "loc": { "start": { "line": 158, @@ -31801,8 +31933,8 @@ }, "object": { "type": "Identifier", - "start": 5620, - "end": 5635, + "start": 5641, + "end": 5656, "loc": { "start": { "line": 158, @@ -31818,8 +31950,8 @@ }, "property": { "type": "Identifier", - "start": 5636, - "end": 5646, + "start": 5657, + "end": 5667, "loc": { "start": { "line": 158, @@ -31862,8 +31994,8 @@ }, { "type": "ExpressionStatement", - "start": 5725, - "end": 5978, + "start": 5746, + "end": 5999, "loc": { "start": { "line": 164, @@ -31876,8 +32008,8 @@ }, "expression": { "type": "CallExpression", - "start": 5725, - "end": 5977, + "start": 5746, + "end": 5998, "loc": { "start": { "line": 164, @@ -31890,8 +32022,8 @@ }, "callee": { "type": "MemberExpression", - "start": 5725, - "end": 5750, + "start": 5746, + "end": 5771, "loc": { "start": { "line": 164, @@ -31904,8 +32036,8 @@ }, "object": { "type": "Identifier", - "start": 5725, - "end": 5733, + "start": 5746, + "end": 5754, "loc": { "start": { "line": 164, @@ -31921,8 +32053,8 @@ }, "property": { "type": "Identifier", - "start": 5734, - "end": 5750, + "start": 5755, + "end": 5771, "loc": { "start": { "line": 164, @@ -31941,8 +32073,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 5751, - "end": 5760, + "start": 5772, + "end": 5781, "loc": { "start": { "line": 164, @@ -31961,8 +32093,8 @@ }, { "type": "AssignmentExpression", - "start": 5762, - "end": 5976, + "start": 5783, + "end": 5997, "loc": { "start": { "line": 164, @@ -31976,8 +32108,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 5762, - "end": 5790, + "start": 5783, + "end": 5811, "loc": { "start": { "line": 164, @@ -31990,8 +32122,8 @@ }, "object": { "type": "ThisExpression", - "start": 5762, - "end": 5766, + "start": 5783, + "end": 5787, "loc": { "start": { "line": 164, @@ -32005,8 +32137,8 @@ }, "property": { "type": "Identifier", - "start": 5767, - "end": 5790, + "start": 5788, + "end": 5811, "loc": { "start": { "line": 164, @@ -32024,8 +32156,8 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 5793, - "end": 5976, + "start": 5814, + "end": 5997, "loc": { "start": { "line": 164, @@ -32043,8 +32175,8 @@ "params": [ { "type": "Identifier", - "start": 5794, - "end": 5795, + "start": 5815, + "end": 5816, "loc": { "start": { "line": 164, @@ -32061,8 +32193,8 @@ ], "body": { "type": "BlockStatement", - "start": 5800, - "end": 5976, + "start": 5821, + "end": 5997, "loc": { "start": { "line": 164, @@ -32076,8 +32208,8 @@ "body": [ { "type": "IfStatement", - "start": 5815, - "end": 5883, + "start": 5836, + "end": 5904, "loc": { "start": { "line": 166, @@ -32090,8 +32222,8 @@ }, "test": { "type": "BinaryExpression", - "start": 5819, - "end": 5832, + "start": 5840, + "end": 5853, "loc": { "start": { "line": 166, @@ -32104,8 +32236,8 @@ }, "left": { "type": "MemberExpression", - "start": 5819, - "end": 5826, + "start": 5840, + "end": 5847, "loc": { "start": { "line": 166, @@ -32118,8 +32250,8 @@ }, "object": { "type": "Identifier", - "start": 5819, - "end": 5820, + "start": 5840, + "end": 5841, "loc": { "start": { "line": 166, @@ -32135,8 +32267,8 @@ }, "property": { "type": "Identifier", - "start": 5821, - "end": 5826, + "start": 5842, + "end": 5847, "loc": { "start": { "line": 166, @@ -32155,8 +32287,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 5831, - "end": 5832, + "start": 5852, + "end": 5853, "loc": { "start": { "line": 166, @@ -32176,8 +32308,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 5834, - "end": 5883, + "start": 5855, + "end": 5904, "loc": { "start": { "line": 166, @@ -32191,8 +32323,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 5852, - "end": 5869, + "start": 5873, + "end": 5890, "loc": { "start": { "line": 167, @@ -32205,8 +32337,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 5852, - "end": 5868, + "start": 5873, + "end": 5889, "loc": { "start": { "line": 167, @@ -32220,8 +32352,8 @@ "operator": "=", "left": { "type": "Identifier", - "start": 5852, - "end": 5860, + "start": 5873, + "end": 5881, "loc": { "start": { "line": 167, @@ -32237,8 +32369,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 5863, - "end": 5868, + "start": 5884, + "end": 5889, "loc": { "start": { "line": 167, @@ -32260,8 +32392,8 @@ }, { "type": "IfStatement", - "start": 5897, - "end": 5966, + "start": 5918, + "end": 5987, "loc": { "start": { "line": 170, @@ -32274,8 +32406,8 @@ }, "test": { "type": "BinaryExpression", - "start": 5901, - "end": 5914, + "start": 5922, + "end": 5935, "loc": { "start": { "line": 170, @@ -32288,8 +32420,8 @@ }, "left": { "type": "MemberExpression", - "start": 5901, - "end": 5908, + "start": 5922, + "end": 5929, "loc": { "start": { "line": 170, @@ -32302,8 +32434,8 @@ }, "object": { "type": "Identifier", - "start": 5901, - "end": 5902, + "start": 5922, + "end": 5923, "loc": { "start": { "line": 170, @@ -32319,8 +32451,8 @@ }, "property": { "type": "Identifier", - "start": 5903, - "end": 5908, + "start": 5924, + "end": 5929, "loc": { "start": { "line": 170, @@ -32339,8 +32471,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 5913, - "end": 5914, + "start": 5934, + "end": 5935, "loc": { "start": { "line": 170, @@ -32360,8 +32492,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 5916, - "end": 5966, + "start": 5937, + "end": 5987, "loc": { "start": { "line": 170, @@ -32375,8 +32507,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 5934, - "end": 5952, + "start": 5955, + "end": 5973, "loc": { "start": { "line": 171, @@ -32389,8 +32521,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 5934, - "end": 5951, + "start": 5955, + "end": 5972, "loc": { "start": { "line": 171, @@ -32404,8 +32536,8 @@ "operator": "=", "left": { "type": "Identifier", - "start": 5934, - "end": 5943, + "start": 5955, + "end": 5964, "loc": { "start": { "line": 171, @@ -32421,8 +32553,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 5946, - "end": 5951, + "start": 5967, + "end": 5972, "loc": { "start": { "line": 171, @@ -32452,8 +32584,8 @@ }, { "type": "ExpressionStatement", - "start": 5988, - "end": 12195, + "start": 6009, + "end": 12216, "loc": { "start": { "line": 175, @@ -32466,8 +32598,8 @@ }, "expression": { "type": "CallExpression", - "start": 5988, - "end": 12194, + "start": 6009, + "end": 12215, "loc": { "start": { "line": 175, @@ -32480,8 +32612,8 @@ }, "callee": { "type": "MemberExpression", - "start": 5988, - "end": 6011, + "start": 6009, + "end": 6032, "loc": { "start": { "line": 175, @@ -32494,8 +32626,8 @@ }, "object": { "type": "Identifier", - "start": 5988, - "end": 5994, + "start": 6009, + "end": 6015, "loc": { "start": { "line": 175, @@ -32511,8 +32643,8 @@ }, "property": { "type": "Identifier", - "start": 5995, - "end": 6011, + "start": 6016, + "end": 6032, "loc": { "start": { "line": 175, @@ -32531,8 +32663,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 6012, - "end": 6021, + "start": 6033, + "end": 6042, "loc": { "start": { "line": 175, @@ -32551,8 +32683,8 @@ }, { "type": "AssignmentExpression", - "start": 6023, - "end": 12186, + "start": 6044, + "end": 12207, "loc": { "start": { "line": 175, @@ -32566,8 +32698,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 6023, - "end": 6049, + "start": 6044, + "end": 6070, "loc": { "start": { "line": 175, @@ -32580,8 +32712,8 @@ }, "object": { "type": "ThisExpression", - "start": 6023, - "end": 6027, + "start": 6044, + "end": 6048, "loc": { "start": { "line": 175, @@ -32595,8 +32727,8 @@ }, "property": { "type": "Identifier", - "start": 6028, - "end": 6049, + "start": 6049, + "end": 6070, "loc": { "start": { "line": 175, @@ -32614,8 +32746,8 @@ }, "right": { "type": "ArrowFunctionExpression", - "start": 6052, - "end": 12186, + "start": 6073, + "end": 12207, "loc": { "start": { "line": 175, @@ -32633,8 +32765,8 @@ "params": [ { "type": "Identifier", - "start": 6053, - "end": 6054, + "start": 6074, + "end": 6075, "loc": { "start": { "line": 175, @@ -32651,8 +32783,8 @@ ], "body": { "type": "BlockStatement", - "start": 6059, - "end": 12186, + "start": 6080, + "end": 12207, "loc": { "start": { "line": 175, @@ -32666,8 +32798,8 @@ "body": [ { "type": "IfStatement", - "start": 6074, - "end": 6162, + "start": 6095, + "end": 6183, "loc": { "start": { "line": 177, @@ -32680,8 +32812,8 @@ }, "test": { "type": "UnaryExpression", - "start": 6078, - "end": 6121, + "start": 6099, + "end": 6142, "loc": { "start": { "line": 177, @@ -32696,8 +32828,8 @@ "prefix": true, "argument": { "type": "LogicalExpression", - "start": 6080, - "end": 6120, + "start": 6101, + "end": 6141, "loc": { "start": { "line": 177, @@ -32710,8 +32842,8 @@ }, "left": { "type": "MemberExpression", - "start": 6080, - "end": 6094, + "start": 6101, + "end": 6115, "loc": { "start": { "line": 177, @@ -32724,8 +32856,8 @@ }, "object": { "type": "Identifier", - "start": 6080, - "end": 6087, + "start": 6101, + "end": 6108, "loc": { "start": { "line": 177, @@ -32741,8 +32873,8 @@ }, "property": { "type": "Identifier", - "start": 6088, - "end": 6094, + "start": 6109, + "end": 6115, "loc": { "start": { "line": 177, @@ -32761,8 +32893,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 6098, - "end": 6120, + "start": 6119, + "end": 6141, "loc": { "start": { "line": 177, @@ -32775,8 +32907,8 @@ }, "object": { "type": "Identifier", - "start": 6098, - "end": 6105, + "start": 6119, + "end": 6126, "loc": { "start": { "line": 177, @@ -32792,8 +32924,8 @@ }, "property": { "type": "Identifier", - "start": 6106, - "end": 6120, + "start": 6127, + "end": 6141, "loc": { "start": { "line": 177, @@ -32811,7 +32943,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 6079 + "parenStart": 6100 } }, "extra": { @@ -32820,8 +32952,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 6123, - "end": 6162, + "start": 6144, + "end": 6183, "loc": { "start": { "line": 177, @@ -32835,8 +32967,8 @@ "body": [ { "type": "ReturnStatement", - "start": 6141, - "end": 6148, + "start": 6162, + "end": 6169, "loc": { "start": { "line": 178, @@ -32856,8 +32988,8 @@ }, { "type": "VariableDeclaration", - "start": 6176, - "end": 6213, + "start": 6197, + "end": 6234, "loc": { "start": { "line": 181, @@ -32871,8 +33003,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 6182, - "end": 6212, + "start": 6203, + "end": 6233, "loc": { "start": { "line": 181, @@ -32885,8 +33017,8 @@ }, "id": { "type": "Identifier", - "start": 6182, - "end": 6194, + "start": 6203, + "end": 6215, "loc": { "start": { "line": 181, @@ -32902,8 +33034,8 @@ }, "init": { "type": "BinaryExpression", - "start": 6198, - "end": 6211, + "start": 6219, + "end": 6232, "loc": { "start": { "line": 181, @@ -32916,8 +33048,8 @@ }, "left": { "type": "MemberExpression", - "start": 6198, - "end": 6205, + "start": 6219, + "end": 6226, "loc": { "start": { "line": 181, @@ -32930,8 +33062,8 @@ }, "object": { "type": "Identifier", - "start": 6198, - "end": 6199, + "start": 6219, + "end": 6220, "loc": { "start": { "line": 181, @@ -32947,8 +33079,8 @@ }, "property": { "type": "Identifier", - "start": 6200, - "end": 6205, + "start": 6221, + "end": 6226, "loc": { "start": { "line": 181, @@ -32967,8 +33099,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 6210, - "end": 6211, + "start": 6231, + "end": 6232, "loc": { "start": { "line": 181, @@ -32987,7 +33119,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 6197 + "parenStart": 6218 } } } @@ -32996,8 +33128,8 @@ }, { "type": "IfStatement", - "start": 6227, - "end": 6285, + "start": 6248, + "end": 6306, "loc": { "start": { "line": 183, @@ -33010,8 +33142,8 @@ }, "test": { "type": "UnaryExpression", - "start": 6231, - "end": 6244, + "start": 6252, + "end": 6265, "loc": { "start": { "line": 183, @@ -33026,8 +33158,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 6232, - "end": 6244, + "start": 6253, + "end": 6265, "loc": { "start": { "line": 183, @@ -33047,8 +33179,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 6246, - "end": 6285, + "start": 6267, + "end": 6306, "loc": { "start": { "line": 183, @@ -33062,8 +33194,8 @@ "body": [ { "type": "ReturnStatement", - "start": 6264, - "end": 6271, + "start": 6285, + "end": 6292, "loc": { "start": { "line": 184, @@ -33085,8 +33217,8 @@ { "type": "CommentLine", "value": " Left mouse button up to possibly pick or double-pick", - "start": 6299, - "end": 6354, + "start": 6320, + "end": 6375, "loc": { "start": { "line": 187, @@ -33102,8 +33234,8 @@ }, { "type": "ExpressionStatement", - "start": 6368, - "end": 6396, + "start": 6389, + "end": 6417, "loc": { "start": { "line": 189, @@ -33116,8 +33248,8 @@ }, "expression": { "type": "CallExpression", - "start": 6368, - "end": 6395, + "start": 6389, + "end": 6416, "loc": { "start": { "line": 189, @@ -33130,8 +33262,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6368, - "end": 6393, + "start": 6389, + "end": 6414, "loc": { "start": { "line": 189, @@ -33144,8 +33276,8 @@ }, "object": { "type": "Identifier", - "start": 6368, - "end": 6383, + "start": 6389, + "end": 6404, "loc": { "start": { "line": 189, @@ -33162,8 +33294,8 @@ }, "property": { "type": "Identifier", - "start": 6384, - "end": 6393, + "start": 6405, + "end": 6414, "loc": { "start": { "line": 189, @@ -33187,8 +33319,8 @@ { "type": "CommentLine", "value": " Left mouse button up to possibly pick or double-pick", - "start": 6299, - "end": 6354, + "start": 6320, + "end": 6375, "loc": { "start": { "line": 187, @@ -33204,8 +33336,8 @@ }, { "type": "IfStatement", - "start": 6410, - "end": 6557, + "start": 6431, + "end": 6578, "loc": { "start": { "line": 191, @@ -33218,8 +33350,8 @@ }, "test": { "type": "LogicalExpression", - "start": 6414, - "end": 6516, + "start": 6435, + "end": 6537, "loc": { "start": { "line": 191, @@ -33232,8 +33364,8 @@ }, "left": { "type": "BinaryExpression", - "start": 6414, - "end": 6463, + "start": 6435, + "end": 6484, "loc": { "start": { "line": 191, @@ -33246,8 +33378,8 @@ }, "left": { "type": "CallExpression", - "start": 6414, - "end": 6459, + "start": 6435, + "end": 6480, "loc": { "start": { "line": 191, @@ -33260,8 +33392,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6414, - "end": 6422, + "start": 6435, + "end": 6443, "loc": { "start": { "line": 191, @@ -33274,8 +33406,8 @@ }, "object": { "type": "Identifier", - "start": 6414, - "end": 6418, + "start": 6435, + "end": 6439, "loc": { "start": { "line": 191, @@ -33291,8 +33423,8 @@ }, "property": { "type": "Identifier", - "start": 6419, - "end": 6422, + "start": 6440, + "end": 6443, "loc": { "start": { "line": 191, @@ -33311,8 +33443,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 6423, - "end": 6458, + "start": 6444, + "end": 6479, "loc": { "start": { "line": 191, @@ -33325,8 +33457,8 @@ }, "left": { "type": "MemberExpression", - "start": 6423, - "end": 6432, + "start": 6444, + "end": 6453, "loc": { "start": { "line": 191, @@ -33339,8 +33471,8 @@ }, "object": { "type": "Identifier", - "start": 6423, - "end": 6424, + "start": 6444, + "end": 6445, "loc": { "start": { "line": 191, @@ -33356,8 +33488,8 @@ }, "property": { "type": "Identifier", - "start": 6425, - "end": 6432, + "start": 6446, + "end": 6453, "loc": { "start": { "line": 191, @@ -33376,8 +33508,8 @@ "operator": "-", "right": { "type": "MemberExpression", - "start": 6435, - "end": 6458, + "start": 6456, + "end": 6479, "loc": { "start": { "line": 191, @@ -33390,8 +33522,8 @@ }, "object": { "type": "Identifier", - "start": 6435, - "end": 6441, + "start": 6456, + "end": 6462, "loc": { "start": { "line": 191, @@ -33407,8 +33539,8 @@ }, "property": { "type": "Identifier", - "start": 6442, - "end": 6458, + "start": 6463, + "end": 6479, "loc": { "start": { "line": 191, @@ -33430,8 +33562,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 6462, - "end": 6463, + "start": 6483, + "end": 6484, "loc": { "start": { "line": 191, @@ -33452,8 +33584,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 6467, - "end": 6516, + "start": 6488, + "end": 6537, "loc": { "start": { "line": 191, @@ -33466,8 +33598,8 @@ }, "left": { "type": "CallExpression", - "start": 6467, - "end": 6512, + "start": 6488, + "end": 6533, "loc": { "start": { "line": 191, @@ -33480,8 +33612,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6467, - "end": 6475, + "start": 6488, + "end": 6496, "loc": { "start": { "line": 191, @@ -33494,8 +33626,8 @@ }, "object": { "type": "Identifier", - "start": 6467, - "end": 6471, + "start": 6488, + "end": 6492, "loc": { "start": { "line": 191, @@ -33511,8 +33643,8 @@ }, "property": { "type": "Identifier", - "start": 6472, - "end": 6475, + "start": 6493, + "end": 6496, "loc": { "start": { "line": 191, @@ -33531,8 +33663,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 6476, - "end": 6511, + "start": 6497, + "end": 6532, "loc": { "start": { "line": 191, @@ -33545,8 +33677,8 @@ }, "left": { "type": "MemberExpression", - "start": 6476, - "end": 6485, + "start": 6497, + "end": 6506, "loc": { "start": { "line": 191, @@ -33559,8 +33691,8 @@ }, "object": { "type": "Identifier", - "start": 6476, - "end": 6477, + "start": 6497, + "end": 6498, "loc": { "start": { "line": 191, @@ -33576,8 +33708,8 @@ }, "property": { "type": "Identifier", - "start": 6478, - "end": 6485, + "start": 6499, + "end": 6506, "loc": { "start": { "line": 191, @@ -33596,8 +33728,8 @@ "operator": "-", "right": { "type": "MemberExpression", - "start": 6488, - "end": 6511, + "start": 6509, + "end": 6532, "loc": { "start": { "line": 191, @@ -33610,8 +33742,8 @@ }, "object": { "type": "Identifier", - "start": 6488, - "end": 6494, + "start": 6509, + "end": 6515, "loc": { "start": { "line": 191, @@ -33627,8 +33759,8 @@ }, "property": { "type": "Identifier", - "start": 6495, - "end": 6511, + "start": 6516, + "end": 6532, "loc": { "start": { "line": 191, @@ -33650,8 +33782,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 6515, - "end": 6516, + "start": 6536, + "end": 6537, "loc": { "start": { "line": 191, @@ -33672,8 +33804,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 6518, - "end": 6557, + "start": 6539, + "end": 6578, "loc": { "start": { "line": 191, @@ -33687,8 +33819,8 @@ "body": [ { "type": "ReturnStatement", - "start": 6536, - "end": 6543, + "start": 6557, + "end": 6564, "loc": { "start": { "line": 192, @@ -33708,8 +33840,8 @@ }, { "type": "VariableDeclaration", - "start": 6571, - "end": 6622, + "start": 6592, + "end": 6643, "loc": { "start": { "line": 195, @@ -33723,8 +33855,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 6577, - "end": 6621, + "start": 6598, + "end": 6642, "loc": { "start": { "line": 195, @@ -33737,8 +33869,8 @@ }, "id": { "type": "Identifier", - "start": 6577, - "end": 6587, + "start": 6598, + "end": 6608, "loc": { "start": { "line": 195, @@ -33754,8 +33886,8 @@ }, "init": { "type": "CallExpression", - "start": 6590, - "end": 6621, + "start": 6611, + "end": 6642, "loc": { "start": { "line": 195, @@ -33768,8 +33900,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6590, - "end": 6611, + "start": 6611, + "end": 6632, "loc": { "start": { "line": 195, @@ -33782,8 +33914,8 @@ }, "object": { "type": "Identifier", - "start": 6590, - "end": 6603, + "start": 6611, + "end": 6624, "loc": { "start": { "line": 195, @@ -33799,8 +33931,8 @@ }, "property": { "type": "Identifier", - "start": 6604, - "end": 6611, + "start": 6625, + "end": 6632, "loc": { "start": { "line": 195, @@ -33819,8 +33951,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 6612, - "end": 6620, + "start": 6633, + "end": 6641, "loc": { "start": { "line": 195, @@ -33845,8 +33977,8 @@ }, { "type": "VariableDeclaration", - "start": 6635, - "end": 6700, + "start": 6656, + "end": 6721, "loc": { "start": { "line": 196, @@ -33860,8 +33992,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 6641, - "end": 6699, + "start": 6662, + "end": 6720, "loc": { "start": { "line": 196, @@ -33874,8 +34006,8 @@ }, "id": { "type": "Identifier", - "start": 6641, - "end": 6658, + "start": 6662, + "end": 6679, "loc": { "start": { "line": 196, @@ -33891,8 +34023,8 @@ }, "init": { "type": "CallExpression", - "start": 6661, - "end": 6699, + "start": 6682, + "end": 6720, "loc": { "start": { "line": 196, @@ -33905,8 +34037,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6661, - "end": 6682, + "start": 6682, + "end": 6703, "loc": { "start": { "line": 196, @@ -33919,8 +34051,8 @@ }, "object": { "type": "Identifier", - "start": 6661, - "end": 6674, + "start": 6682, + "end": 6695, "loc": { "start": { "line": 196, @@ -33936,8 +34068,8 @@ }, "property": { "type": "Identifier", - "start": 6675, - "end": 6682, + "start": 6696, + "end": 6703, "loc": { "start": { "line": 196, @@ -33956,8 +34088,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 6683, - "end": 6698, + "start": 6704, + "end": 6719, "loc": { "start": { "line": 196, @@ -33982,8 +34114,8 @@ }, { "type": "VariableDeclaration", - "start": 6713, - "end": 6778, + "start": 6734, + "end": 6799, "loc": { "start": { "line": 197, @@ -33997,8 +34129,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 6719, - "end": 6777, + "start": 6740, + "end": 6798, "loc": { "start": { "line": 197, @@ -34011,8 +34143,8 @@ }, "id": { "type": "Identifier", - "start": 6719, - "end": 6736, + "start": 6740, + "end": 6757, "loc": { "start": { "line": 197, @@ -34028,8 +34160,8 @@ }, "init": { "type": "CallExpression", - "start": 6739, - "end": 6777, + "start": 6760, + "end": 6798, "loc": { "start": { "line": 197, @@ -34042,8 +34174,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6739, - "end": 6760, + "start": 6760, + "end": 6781, "loc": { "start": { "line": 197, @@ -34056,8 +34188,8 @@ }, "object": { "type": "Identifier", - "start": 6739, - "end": 6752, + "start": 6760, + "end": 6773, "loc": { "start": { "line": 197, @@ -34073,8 +34205,8 @@ }, "property": { "type": "Identifier", - "start": 6753, - "end": 6760, + "start": 6774, + "end": 6781, "loc": { "start": { "line": 197, @@ -34093,8 +34225,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 6761, - "end": 6776, + "start": 6782, + "end": 6797, "loc": { "start": { "line": 197, @@ -34119,8 +34251,8 @@ }, { "type": "VariableDeclaration", - "start": 6791, - "end": 6854, + "start": 6812, + "end": 6875, "loc": { "start": { "line": 198, @@ -34134,8 +34266,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 6797, - "end": 6853, + "start": 6818, + "end": 6874, "loc": { "start": { "line": 198, @@ -34148,8 +34280,8 @@ }, "id": { "type": "Identifier", - "start": 6797, - "end": 6813, + "start": 6818, + "end": 6834, "loc": { "start": { "line": 198, @@ -34165,8 +34297,8 @@ }, "init": { "type": "CallExpression", - "start": 6816, - "end": 6853, + "start": 6837, + "end": 6874, "loc": { "start": { "line": 198, @@ -34179,8 +34311,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6816, - "end": 6837, + "start": 6837, + "end": 6858, "loc": { "start": { "line": 198, @@ -34193,8 +34325,8 @@ }, "object": { "type": "Identifier", - "start": 6816, - "end": 6829, + "start": 6837, + "end": 6850, "loc": { "start": { "line": 198, @@ -34210,8 +34342,8 @@ }, "property": { "type": "Identifier", - "start": 6830, - "end": 6837, + "start": 6851, + "end": 6858, "loc": { "start": { "line": 198, @@ -34230,8 +34362,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 6838, - "end": 6852, + "start": 6859, + "end": 6873, "loc": { "start": { "line": 198, @@ -34256,8 +34388,8 @@ }, { "type": "VariableDeclaration", - "start": 6867, - "end": 6944, + "start": 6888, + "end": 6965, "loc": { "start": { "line": 199, @@ -34271,8 +34403,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 6873, - "end": 6943, + "start": 6894, + "end": 6964, "loc": { "start": { "line": 199, @@ -34285,8 +34417,8 @@ }, "id": { "type": "Identifier", - "start": 6873, - "end": 6896, + "start": 6894, + "end": 6917, "loc": { "start": { "line": 199, @@ -34302,8 +34434,8 @@ }, "init": { "type": "CallExpression", - "start": 6899, - "end": 6943, + "start": 6920, + "end": 6964, "loc": { "start": { "line": 199, @@ -34316,8 +34448,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6899, - "end": 6920, + "start": 6920, + "end": 6941, "loc": { "start": { "line": 199, @@ -34330,8 +34462,8 @@ }, "object": { "type": "Identifier", - "start": 6899, - "end": 6912, + "start": 6920, + "end": 6933, "loc": { "start": { "line": 199, @@ -34347,8 +34479,8 @@ }, "property": { "type": "Identifier", - "start": 6913, - "end": 6920, + "start": 6934, + "end": 6941, "loc": { "start": { "line": 199, @@ -34367,8 +34499,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 6921, - "end": 6942, + "start": 6942, + "end": 6963, "loc": { "start": { "line": 199, @@ -34393,8 +34525,8 @@ }, { "type": "VariableDeclaration", - "start": 6957, - "end": 7034, + "start": 6978, + "end": 7055, "loc": { "start": { "line": 200, @@ -34408,8 +34540,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 6963, - "end": 7033, + "start": 6984, + "end": 7054, "loc": { "start": { "line": 200, @@ -34422,8 +34554,8 @@ }, "id": { "type": "Identifier", - "start": 6963, - "end": 6986, + "start": 6984, + "end": 7007, "loc": { "start": { "line": 200, @@ -34439,8 +34571,8 @@ }, "init": { "type": "CallExpression", - "start": 6989, - "end": 7033, + "start": 7010, + "end": 7054, "loc": { "start": { "line": 200, @@ -34453,8 +34585,8 @@ }, "callee": { "type": "MemberExpression", - "start": 6989, - "end": 7010, + "start": 7010, + "end": 7031, "loc": { "start": { "line": 200, @@ -34467,8 +34599,8 @@ }, "object": { "type": "Identifier", - "start": 6989, - "end": 7002, + "start": 7010, + "end": 7023, "loc": { "start": { "line": 200, @@ -34484,8 +34616,8 @@ }, "property": { "type": "Identifier", - "start": 7003, - "end": 7010, + "start": 7024, + "end": 7031, "loc": { "start": { "line": 200, @@ -34504,8 +34636,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 7011, - "end": 7032, + "start": 7032, + "end": 7053, "loc": { "start": { "line": 200, @@ -34530,8 +34662,8 @@ }, { "type": "IfStatement", - "start": 7048, - "end": 8253, + "start": 7069, + "end": 8274, "loc": { "start": { "line": 202, @@ -34544,8 +34676,8 @@ }, "test": { "type": "LogicalExpression", - "start": 7052, - "end": 7209, + "start": 7073, + "end": 7230, "loc": { "start": { "line": 202, @@ -34558,8 +34690,8 @@ }, "left": { "type": "LogicalExpression", - "start": 7052, - "end": 7163, + "start": 7073, + "end": 7184, "loc": { "start": { "line": 202, @@ -34572,8 +34704,8 @@ }, "left": { "type": "LogicalExpression", - "start": 7052, - "end": 7117, + "start": 7073, + "end": 7138, "loc": { "start": { "line": 202, @@ -34586,8 +34718,8 @@ }, "left": { "type": "UnaryExpression", - "start": 7053, - "end": 7077, + "start": 7074, + "end": 7098, "loc": { "start": { "line": 202, @@ -34602,8 +34734,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 7054, - "end": 7077, + "start": 7075, + "end": 7098, "loc": { "start": { "line": 202, @@ -34616,8 +34748,8 @@ }, "object": { "type": "Identifier", - "start": 7054, - "end": 7061, + "start": 7075, + "end": 7082, "loc": { "start": { "line": 202, @@ -34633,8 +34765,8 @@ }, "property": { "type": "Identifier", - "start": 7062, - "end": 7077, + "start": 7083, + "end": 7098, "loc": { "start": { "line": 202, @@ -34653,14 +34785,14 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 7052 + "parenStart": 7073 } }, "operator": "&&", "right": { "type": "UnaryExpression", - "start": 7099, - "end": 7116, + "start": 7120, + "end": 7137, "loc": { "start": { "line": 203, @@ -34675,8 +34807,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 7100, - "end": 7116, + "start": 7121, + "end": 7137, "loc": { "start": { "line": 203, @@ -34693,15 +34825,15 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 7098 + "parenStart": 7119 } } }, "operator": "&&", "right": { "type": "UnaryExpression", - "start": 7138, - "end": 7162, + "start": 7159, + "end": 7183, "loc": { "start": { "line": 204, @@ -34716,8 +34848,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 7139, - "end": 7162, + "start": 7160, + "end": 7183, "loc": { "start": { "line": 204, @@ -34734,15 +34866,15 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 7137 + "parenStart": 7158 } } }, "operator": "&&", "right": { "type": "UnaryExpression", - "start": 7184, - "end": 7208, + "start": 7205, + "end": 7229, "loc": { "start": { "line": 205, @@ -34757,8 +34889,8 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 7185, - "end": 7208, + "start": 7206, + "end": 7229, "loc": { "start": { "line": 205, @@ -34775,14 +34907,14 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 7183 + "parenStart": 7204 } } }, "consequent": { "type": "BlockStatement", - "start": 7211, - "end": 8253, + "start": 7232, + "end": 8274, "loc": { "start": { "line": 205, @@ -34796,8 +34928,8 @@ "body": [ { "type": "IfStatement", - "start": 7305, - "end": 8179, + "start": 7326, + "end": 8200, "loc": { "start": { "line": 209, @@ -34810,8 +34942,8 @@ }, "test": { "type": "LogicalExpression", - "start": 7309, - "end": 7361, + "start": 7330, + "end": 7382, "loc": { "start": { "line": 209, @@ -34824,8 +34956,8 @@ }, "left": { "type": "LogicalExpression", - "start": 7309, - "end": 7340, + "start": 7330, + "end": 7361, "loc": { "start": { "line": 209, @@ -34838,8 +34970,8 @@ }, "left": { "type": "Identifier", - "start": 7309, - "end": 7319, + "start": 7330, + "end": 7340, "loc": { "start": { "line": 209, @@ -34857,8 +34989,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 7323, - "end": 7340, + "start": 7344, + "end": 7361, "loc": { "start": { "line": 209, @@ -34877,8 +35009,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 7344, - "end": 7361, + "start": 7365, + "end": 7382, "loc": { "start": { "line": 209, @@ -34896,8 +35028,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 7363, - "end": 8179, + "start": 7384, + "end": 8200, "loc": { "start": { "line": 209, @@ -34911,8 +35043,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 7386, - "end": 7441, + "start": 7407, + "end": 7462, "loc": { "start": { "line": 211, @@ -34925,8 +35057,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 7386, - "end": 7440, + "start": 7407, + "end": 7461, "loc": { "start": { "line": 211, @@ -34940,8 +35072,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 7386, - "end": 7414, + "start": 7407, + "end": 7435, "loc": { "start": { "line": 211, @@ -34954,8 +35086,8 @@ }, "object": { "type": "Identifier", - "start": 7386, - "end": 7400, + "start": 7407, + "end": 7421, "loc": { "start": { "line": 211, @@ -34971,8 +35103,8 @@ }, "property": { "type": "Identifier", - "start": 7401, - "end": 7414, + "start": 7422, + "end": 7435, "loc": { "start": { "line": 211, @@ -34990,8 +35122,8 @@ }, "right": { "type": "MemberExpression", - "start": 7417, - "end": 7440, + "start": 7438, + "end": 7461, "loc": { "start": { "line": 211, @@ -35004,8 +35136,8 @@ }, "object": { "type": "Identifier", - "start": 7417, - "end": 7423, + "start": 7438, + "end": 7444, "loc": { "start": { "line": 211, @@ -35021,8 +35153,8 @@ }, "property": { "type": "Identifier", - "start": 7424, - "end": 7440, + "start": 7445, + "end": 7461, "loc": { "start": { "line": 211, @@ -35042,8 +35174,8 @@ }, { "type": "ExpressionStatement", - "start": 7462, - "end": 7503, + "start": 7483, + "end": 7524, "loc": { "start": { "line": 212, @@ -35056,8 +35188,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 7462, - "end": 7502, + "start": 7483, + "end": 7523, "loc": { "start": { "line": 212, @@ -35071,8 +35203,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 7462, - "end": 7495, + "start": 7483, + "end": 7516, "loc": { "start": { "line": 212, @@ -35085,8 +35217,8 @@ }, "object": { "type": "Identifier", - "start": 7462, - "end": 7476, + "start": 7483, + "end": 7497, "loc": { "start": { "line": 212, @@ -35102,8 +35234,8 @@ }, "property": { "type": "Identifier", - "start": 7477, - "end": 7495, + "start": 7498, + "end": 7516, "loc": { "start": { "line": 212, @@ -35121,8 +35253,8 @@ }, "right": { "type": "BooleanLiteral", - "start": 7498, - "end": 7502, + "start": 7519, + "end": 7523, "loc": { "start": { "line": 212, @@ -35139,8 +35271,8 @@ }, { "type": "ExpressionStatement", - "start": 7524, - "end": 7579, + "start": 7545, + "end": 7600, "loc": { "start": { "line": 213, @@ -35153,8 +35285,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 7524, - "end": 7578, + "start": 7545, + "end": 7599, "loc": { "start": { "line": 213, @@ -35168,8 +35300,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 7524, - "end": 7558, + "start": 7545, + "end": 7579, "loc": { "start": { "line": 213, @@ -35182,8 +35314,8 @@ }, "object": { "type": "Identifier", - "start": 7524, - "end": 7538, + "start": 7545, + "end": 7559, "loc": { "start": { "line": 213, @@ -35199,8 +35331,8 @@ }, "property": { "type": "Identifier", - "start": 7539, - "end": 7558, + "start": 7560, + "end": 7579, "loc": { "start": { "line": 213, @@ -35218,8 +35350,8 @@ }, "right": { "type": "Identifier", - "start": 7561, - "end": 7578, + "start": 7582, + "end": 7599, "loc": { "start": { "line": 213, @@ -35237,8 +35369,8 @@ }, { "type": "ExpressionStatement", - "start": 7600, - "end": 7624, + "start": 7621, + "end": 7645, "loc": { "start": { "line": 214, @@ -35251,8 +35383,8 @@ }, "expression": { "type": "CallExpression", - "start": 7600, - "end": 7623, + "start": 7621, + "end": 7644, "loc": { "start": { "line": 214, @@ -35265,8 +35397,8 @@ }, "callee": { "type": "MemberExpression", - "start": 7600, - "end": 7621, + "start": 7621, + "end": 7642, "loc": { "start": { "line": 214, @@ -35279,8 +35411,8 @@ }, "object": { "type": "Identifier", - "start": 7600, - "end": 7614, + "start": 7621, + "end": 7635, "loc": { "start": { "line": 214, @@ -35296,8 +35428,8 @@ }, "property": { "type": "Identifier", - "start": 7615, - "end": 7621, + "start": 7636, + "end": 7642, "loc": { "start": { "line": 214, @@ -35318,8 +35450,8 @@ }, { "type": "IfStatement", - "start": 7646, - "end": 8161, + "start": 7667, + "end": 8182, "loc": { "start": { "line": 216, @@ -35332,8 +35464,8 @@ }, "test": { "type": "MemberExpression", - "start": 7650, - "end": 7675, + "start": 7671, + "end": 7696, "loc": { "start": { "line": 216, @@ -35346,8 +35478,8 @@ }, "object": { "type": "Identifier", - "start": 7650, - "end": 7664, + "start": 7671, + "end": 7685, "loc": { "start": { "line": 216, @@ -35363,8 +35495,8 @@ }, "property": { "type": "Identifier", - "start": 7665, - "end": 7675, + "start": 7686, + "end": 7696, "loc": { "start": { "line": 216, @@ -35382,8 +35514,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 7677, - "end": 7973, + "start": 7698, + "end": 7994, "loc": { "start": { "line": 216, @@ -35397,8 +35529,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 7704, - "end": 7766, + "start": 7725, + "end": 7787, "loc": { "start": { "line": 218, @@ -35411,8 +35543,8 @@ }, "expression": { "type": "CallExpression", - "start": 7704, - "end": 7765, + "start": 7725, + "end": 7786, "loc": { "start": { "line": 218, @@ -35425,8 +35557,8 @@ }, "callee": { "type": "MemberExpression", - "start": 7704, - "end": 7722, + "start": 7725, + "end": 7743, "loc": { "start": { "line": 218, @@ -35439,8 +35571,8 @@ }, "object": { "type": "Identifier", - "start": 7704, - "end": 7717, + "start": 7725, + "end": 7738, "loc": { "start": { "line": 218, @@ -35456,8 +35588,8 @@ }, "property": { "type": "Identifier", - "start": 7718, - "end": 7722, + "start": 7739, + "end": 7743, "loc": { "start": { "line": 218, @@ -35476,8 +35608,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 7723, - "end": 7731, + "start": 7744, + "end": 7752, "loc": { "start": { "line": 218, @@ -35496,8 +35628,8 @@ }, { "type": "MemberExpression", - "start": 7733, - "end": 7758, + "start": 7754, + "end": 7779, "loc": { "start": { "line": 218, @@ -35510,8 +35642,8 @@ }, "object": { "type": "Identifier", - "start": 7733, - "end": 7747, + "start": 7754, + "end": 7768, "loc": { "start": { "line": 218, @@ -35527,8 +35659,8 @@ }, "property": { "type": "Identifier", - "start": 7748, - "end": 7758, + "start": 7769, + "end": 7779, "loc": { "start": { "line": 218, @@ -35546,8 +35678,8 @@ }, { "type": "BooleanLiteral", - "start": 7760, - "end": 7764, + "start": 7781, + "end": 7785, "loc": { "start": { "line": 218, @@ -35565,8 +35697,8 @@ }, { "type": "IfStatement", - "start": 7792, - "end": 7951, + "start": 7813, + "end": 7972, "loc": { "start": { "line": 220, @@ -35579,8 +35711,8 @@ }, "test": { "type": "MemberExpression", - "start": 7796, - "end": 7824, + "start": 7817, + "end": 7845, "loc": { "start": { "line": 220, @@ -35593,8 +35725,8 @@ }, "object": { "type": "Identifier", - "start": 7796, - "end": 7810, + "start": 7817, + "end": 7831, "loc": { "start": { "line": 220, @@ -35610,8 +35742,8 @@ }, "property": { "type": "Identifier", - "start": 7811, - "end": 7824, + "start": 7832, + "end": 7845, "loc": { "start": { "line": 220, @@ -35629,8 +35761,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 7826, - "end": 7951, + "start": 7847, + "end": 7972, "loc": { "start": { "line": 220, @@ -35644,8 +35776,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 7856, - "end": 7925, + "start": 7877, + "end": 7946, "loc": { "start": { "line": 221, @@ -35658,8 +35790,8 @@ }, "expression": { "type": "CallExpression", - "start": 7856, - "end": 7924, + "start": 7877, + "end": 7945, "loc": { "start": { "line": 221, @@ -35672,8 +35804,8 @@ }, "callee": { "type": "MemberExpression", - "start": 7856, - "end": 7874, + "start": 7877, + "end": 7895, "loc": { "start": { "line": 221, @@ -35686,8 +35818,8 @@ }, "object": { "type": "Identifier", - "start": 7856, - "end": 7869, + "start": 7877, + "end": 7890, "loc": { "start": { "line": 221, @@ -35703,8 +35835,8 @@ }, "property": { "type": "Identifier", - "start": 7870, - "end": 7874, + "start": 7891, + "end": 7895, "loc": { "start": { "line": 221, @@ -35723,8 +35855,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 7875, - "end": 7890, + "start": 7896, + "end": 7911, "loc": { "start": { "line": 221, @@ -35743,8 +35875,8 @@ }, { "type": "MemberExpression", - "start": 7892, - "end": 7917, + "start": 7913, + "end": 7938, "loc": { "start": { "line": 221, @@ -35757,8 +35889,8 @@ }, "object": { "type": "Identifier", - "start": 7892, - "end": 7906, + "start": 7913, + "end": 7927, "loc": { "start": { "line": 221, @@ -35774,8 +35906,8 @@ }, "property": { "type": "Identifier", - "start": 7907, - "end": 7917, + "start": 7928, + "end": 7938, "loc": { "start": { "line": 221, @@ -35793,8 +35925,8 @@ }, { "type": "BooleanLiteral", - "start": 7919, - "end": 7923, + "start": 7940, + "end": 7944, "loc": { "start": { "line": 221, @@ -35820,8 +35952,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 7979, - "end": 8161, + "start": 8000, + "end": 8182, "loc": { "start": { "line": 223, @@ -35835,8 +35967,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 8005, - "end": 8139, + "start": 8026, + "end": 8160, "loc": { "start": { "line": 224, @@ -35849,8 +35981,8 @@ }, "expression": { "type": "CallExpression", - "start": 8005, - "end": 8138, + "start": 8026, + "end": 8159, "loc": { "start": { "line": 224, @@ -35863,8 +35995,8 @@ }, "callee": { "type": "MemberExpression", - "start": 8005, - "end": 8023, + "start": 8026, + "end": 8044, "loc": { "start": { "line": 224, @@ -35877,8 +36009,8 @@ }, "object": { "type": "Identifier", - "start": 8005, - "end": 8018, + "start": 8026, + "end": 8039, "loc": { "start": { "line": 224, @@ -35894,8 +36026,8 @@ }, "property": { "type": "Identifier", - "start": 8019, - "end": 8023, + "start": 8040, + "end": 8044, "loc": { "start": { "line": 224, @@ -35914,8 +36046,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 8024, - "end": 8039, + "start": 8045, + "end": 8060, "loc": { "start": { "line": 224, @@ -35934,8 +36066,8 @@ }, { "type": "ObjectExpression", - "start": 8041, - "end": 8131, + "start": 8062, + "end": 8152, "loc": { "start": { "line": 224, @@ -35949,8 +36081,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 8071, - "end": 8105, + "start": 8092, + "end": 8126, "loc": { "start": { "line": 225, @@ -35966,8 +36098,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 8071, - "end": 8080, + "start": 8092, + "end": 8101, "loc": { "start": { "line": 225, @@ -35983,8 +36115,8 @@ }, "value": { "type": "MemberExpression", - "start": 8082, - "end": 8105, + "start": 8103, + "end": 8126, "loc": { "start": { "line": 225, @@ -35997,8 +36129,8 @@ }, "object": { "type": "Identifier", - "start": 8082, - "end": 8088, + "start": 8103, + "end": 8109, "loc": { "start": { "line": 225, @@ -36014,8 +36146,8 @@ }, "property": { "type": "Identifier", - "start": 8089, - "end": 8105, + "start": 8110, + "end": 8126, "loc": { "start": { "line": 225, @@ -36036,8 +36168,8 @@ }, { "type": "BooleanLiteral", - "start": 8133, - "end": 8137, + "start": 8154, + "end": 8158, "loc": { "start": { "line": 226, @@ -36065,8 +36197,8 @@ { "type": "CommentLine", "value": " Avoid the single/double click differentiation timeout", - "start": 7230, - "end": 7287, + "start": 7251, + "end": 7308, "loc": { "start": { "line": 207, @@ -36082,8 +36214,8 @@ }, { "type": "ExpressionStatement", - "start": 8197, - "end": 8214, + "start": 8218, + "end": 8235, "loc": { "start": { "line": 230, @@ -36096,8 +36228,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 8197, - "end": 8213, + "start": 8218, + "end": 8234, "loc": { "start": { "line": 230, @@ -36111,8 +36243,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 8197, - "end": 8209, + "start": 8218, + "end": 8230, "loc": { "start": { "line": 230, @@ -36125,8 +36257,8 @@ }, "object": { "type": "ThisExpression", - "start": 8197, - "end": 8201, + "start": 8218, + "end": 8222, "loc": { "start": { "line": 230, @@ -36140,8 +36272,8 @@ }, "property": { "type": "Identifier", - "start": 8202, - "end": 8209, + "start": 8223, + "end": 8230, "loc": { "start": { "line": 230, @@ -36159,8 +36291,8 @@ }, "right": { "type": "NumericLiteral", - "start": 8212, - "end": 8213, + "start": 8233, + "end": 8234, "loc": { "start": { "line": 230, @@ -36181,8 +36313,8 @@ }, { "type": "ReturnStatement", - "start": 8232, - "end": 8239, + "start": 8253, + "end": 8260, "loc": { "start": { "line": 232, @@ -36202,8 +36334,8 @@ }, { "type": "ExpressionStatement", - "start": 8267, - "end": 8282, + "start": 8288, + "end": 8303, "loc": { "start": { "line": 235, @@ -36216,8 +36348,8 @@ }, "expression": { "type": "UpdateExpression", - "start": 8267, - "end": 8281, + "start": 8288, + "end": 8302, "loc": { "start": { "line": 235, @@ -36232,8 +36364,8 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 8267, - "end": 8279, + "start": 8288, + "end": 8300, "loc": { "start": { "line": 235, @@ -36246,8 +36378,8 @@ }, "object": { "type": "ThisExpression", - "start": 8267, - "end": 8271, + "start": 8288, + "end": 8292, "loc": { "start": { "line": 235, @@ -36261,8 +36393,8 @@ }, "property": { "type": "Identifier", - "start": 8272, - "end": 8279, + "start": 8293, + "end": 8300, "loc": { "start": { "line": 235, @@ -36282,8 +36414,8 @@ }, { "type": "IfStatement", - "start": 8296, - "end": 12176, + "start": 8317, + "end": 12197, "loc": { "start": { "line": 237, @@ -36296,8 +36428,8 @@ }, "test": { "type": "BinaryExpression", - "start": 8300, - "end": 8318, + "start": 8321, + "end": 8339, "loc": { "start": { "line": 237, @@ -36310,8 +36442,8 @@ }, "left": { "type": "MemberExpression", - "start": 8300, - "end": 8312, + "start": 8321, + "end": 8333, "loc": { "start": { "line": 237, @@ -36324,8 +36456,8 @@ }, "object": { "type": "ThisExpression", - "start": 8300, - "end": 8304, + "start": 8321, + "end": 8325, "loc": { "start": { "line": 237, @@ -36339,8 +36471,8 @@ }, "property": { "type": "Identifier", - "start": 8305, - "end": 8312, + "start": 8326, + "end": 8333, "loc": { "start": { "line": 237, @@ -36359,8 +36491,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 8317, - "end": 8318, + "start": 8338, + "end": 8339, "loc": { "start": { "line": 237, @@ -36380,8 +36512,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 8320, - "end": 9735, + "start": 8341, + "end": 9756, "loc": { "start": { "line": 237, @@ -36395,8 +36527,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 8354, - "end": 9684, + "start": 8375, + "end": 9705, "loc": { "start": { "line": 239, @@ -36409,8 +36541,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 8354, - "end": 9683, + "start": 8375, + "end": 9704, "loc": { "start": { "line": 239, @@ -36424,8 +36556,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 8354, - "end": 8367, + "start": 8375, + "end": 8388, "loc": { "start": { "line": 239, @@ -36438,8 +36570,8 @@ }, "object": { "type": "ThisExpression", - "start": 8354, - "end": 8358, + "start": 8375, + "end": 8379, "loc": { "start": { "line": 239, @@ -36454,8 +36586,8 @@ }, "property": { "type": "Identifier", - "start": 8359, - "end": 8367, + "start": 8380, + "end": 8388, "loc": { "start": { "line": 239, @@ -36474,8 +36606,8 @@ }, "right": { "type": "CallExpression", - "start": 8370, - "end": 9683, + "start": 8391, + "end": 9704, "loc": { "start": { "line": 239, @@ -36488,8 +36620,8 @@ }, "callee": { "type": "Identifier", - "start": 8370, - "end": 8380, + "start": 8391, + "end": 8401, "loc": { "start": { "line": 239, @@ -36506,8 +36638,8 @@ "arguments": [ { "type": "ArrowFunctionExpression", - "start": 8381, - "end": 9677, + "start": 8402, + "end": 9698, "loc": { "start": { "line": 239, @@ -36525,8 +36657,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 8387, - "end": 9677, + "start": 8408, + "end": 9698, "loc": { "start": { "line": 239, @@ -36540,8 +36672,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 8410, - "end": 8465, + "start": 8431, + "end": 8486, "loc": { "start": { "line": 241, @@ -36554,8 +36686,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 8410, - "end": 8464, + "start": 8431, + "end": 8485, "loc": { "start": { "line": 241, @@ -36569,8 +36701,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 8410, - "end": 8438, + "start": 8431, + "end": 8459, "loc": { "start": { "line": 241, @@ -36583,8 +36715,8 @@ }, "object": { "type": "Identifier", - "start": 8410, - "end": 8424, + "start": 8431, + "end": 8445, "loc": { "start": { "line": 241, @@ -36600,8 +36732,8 @@ }, "property": { "type": "Identifier", - "start": 8425, - "end": 8438, + "start": 8446, + "end": 8459, "loc": { "start": { "line": 241, @@ -36619,8 +36751,8 @@ }, "right": { "type": "MemberExpression", - "start": 8441, - "end": 8464, + "start": 8462, + "end": 8485, "loc": { "start": { "line": 241, @@ -36633,8 +36765,8 @@ }, "object": { "type": "Identifier", - "start": 8441, - "end": 8447, + "start": 8462, + "end": 8468, "loc": { "start": { "line": 241, @@ -36650,8 +36782,8 @@ }, "property": { "type": "Identifier", - "start": 8448, - "end": 8464, + "start": 8469, + "end": 8485, "loc": { "start": { "line": 241, @@ -36671,8 +36803,8 @@ }, { "type": "ExpressionStatement", - "start": 8486, - "end": 8546, + "start": 8507, + "end": 8567, "loc": { "start": { "line": 242, @@ -36685,8 +36817,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 8486, - "end": 8545, + "start": 8507, + "end": 8566, "loc": { "start": { "line": 242, @@ -36700,8 +36832,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 8486, - "end": 8519, + "start": 8507, + "end": 8540, "loc": { "start": { "line": 242, @@ -36714,8 +36846,8 @@ }, "object": { "type": "Identifier", - "start": 8486, - "end": 8500, + "start": 8507, + "end": 8521, "loc": { "start": { "line": 242, @@ -36731,8 +36863,8 @@ }, "property": { "type": "Identifier", - "start": 8501, - "end": 8519, + "start": 8522, + "end": 8540, "loc": { "start": { "line": 242, @@ -36750,8 +36882,8 @@ }, "right": { "type": "MemberExpression", - "start": 8522, - "end": 8545, + "start": 8543, + "end": 8566, "loc": { "start": { "line": 242, @@ -36764,8 +36896,8 @@ }, "object": { "type": "Identifier", - "start": 8522, - "end": 8529, + "start": 8543, + "end": 8550, "loc": { "start": { "line": 242, @@ -36781,8 +36913,8 @@ }, "property": { "type": "Identifier", - "start": 8530, - "end": 8545, + "start": 8551, + "end": 8566, "loc": { "start": { "line": 242, @@ -36802,8 +36934,8 @@ }, { "type": "ExpressionStatement", - "start": 8567, - "end": 8622, + "start": 8588, + "end": 8643, "loc": { "start": { "line": 243, @@ -36816,8 +36948,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 8567, - "end": 8621, + "start": 8588, + "end": 8642, "loc": { "start": { "line": 243, @@ -36831,8 +36963,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 8567, - "end": 8601, + "start": 8588, + "end": 8622, "loc": { "start": { "line": 243, @@ -36845,8 +36977,8 @@ }, "object": { "type": "Identifier", - "start": 8567, - "end": 8581, + "start": 8588, + "end": 8602, "loc": { "start": { "line": 243, @@ -36862,8 +36994,8 @@ }, "property": { "type": "Identifier", - "start": 8582, - "end": 8601, + "start": 8603, + "end": 8622, "loc": { "start": { "line": 243, @@ -36881,8 +37013,8 @@ }, "right": { "type": "Identifier", - "start": 8604, - "end": 8621, + "start": 8625, + "end": 8642, "loc": { "start": { "line": 243, @@ -36900,8 +37032,8 @@ }, { "type": "ExpressionStatement", - "start": 8643, - "end": 8667, + "start": 8664, + "end": 8688, "loc": { "start": { "line": 244, @@ -36914,8 +37046,8 @@ }, "expression": { "type": "CallExpression", - "start": 8643, - "end": 8666, + "start": 8664, + "end": 8687, "loc": { "start": { "line": 244, @@ -36928,8 +37060,8 @@ }, "callee": { "type": "MemberExpression", - "start": 8643, - "end": 8664, + "start": 8664, + "end": 8685, "loc": { "start": { "line": 244, @@ -36942,8 +37074,8 @@ }, "object": { "type": "Identifier", - "start": 8643, - "end": 8657, + "start": 8664, + "end": 8678, "loc": { "start": { "line": 244, @@ -36959,8 +37091,8 @@ }, "property": { "type": "Identifier", - "start": 8658, - "end": 8664, + "start": 8679, + "end": 8685, "loc": { "start": { "line": 244, @@ -36981,8 +37113,8 @@ }, { "type": "IfStatement", - "start": 8689, - "end": 9619, + "start": 8710, + "end": 9640, "loc": { "start": { "line": 246, @@ -36995,8 +37127,8 @@ }, "test": { "type": "MemberExpression", - "start": 8693, - "end": 8718, + "start": 8714, + "end": 8739, "loc": { "start": { "line": 246, @@ -37009,8 +37141,8 @@ }, "object": { "type": "Identifier", - "start": 8693, - "end": 8707, + "start": 8714, + "end": 8728, "loc": { "start": { "line": 246, @@ -37026,8 +37158,8 @@ }, "property": { "type": "Identifier", - "start": 8708, - "end": 8718, + "start": 8729, + "end": 8739, "loc": { "start": { "line": 246, @@ -37045,8 +37177,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 8720, - "end": 9431, + "start": 8741, + "end": 9452, "loc": { "start": { "line": 246, @@ -37060,8 +37192,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 8747, - "end": 8809, + "start": 8768, + "end": 8830, "loc": { "start": { "line": 248, @@ -37074,8 +37206,8 @@ }, "expression": { "type": "CallExpression", - "start": 8747, - "end": 8808, + "start": 8768, + "end": 8829, "loc": { "start": { "line": 248, @@ -37088,8 +37220,8 @@ }, "callee": { "type": "MemberExpression", - "start": 8747, - "end": 8765, + "start": 8768, + "end": 8786, "loc": { "start": { "line": 248, @@ -37102,8 +37234,8 @@ }, "object": { "type": "Identifier", - "start": 8747, - "end": 8760, + "start": 8768, + "end": 8781, "loc": { "start": { "line": 248, @@ -37119,8 +37251,8 @@ }, "property": { "type": "Identifier", - "start": 8761, - "end": 8765, + "start": 8782, + "end": 8786, "loc": { "start": { "line": 248, @@ -37139,8 +37271,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 8766, - "end": 8774, + "start": 8787, + "end": 8795, "loc": { "start": { "line": 248, @@ -37159,8 +37291,8 @@ }, { "type": "MemberExpression", - "start": 8776, - "end": 8801, + "start": 8797, + "end": 8822, "loc": { "start": { "line": 248, @@ -37173,8 +37305,8 @@ }, "object": { "type": "Identifier", - "start": 8776, - "end": 8790, + "start": 8797, + "end": 8811, "loc": { "start": { "line": 248, @@ -37190,8 +37322,8 @@ }, "property": { "type": "Identifier", - "start": 8791, - "end": 8801, + "start": 8812, + "end": 8822, "loc": { "start": { "line": 248, @@ -37209,8 +37341,8 @@ }, { "type": "BooleanLiteral", - "start": 8803, - "end": 8807, + "start": 8824, + "end": 8828, "loc": { "start": { "line": 248, @@ -37228,8 +37360,8 @@ }, { "type": "IfStatement", - "start": 8835, - "end": 9409, + "start": 8856, + "end": 9430, "loc": { "start": { "line": 250, @@ -37242,8 +37374,8 @@ }, "test": { "type": "MemberExpression", - "start": 8839, - "end": 8867, + "start": 8860, + "end": 8888, "loc": { "start": { "line": 250, @@ -37256,8 +37388,8 @@ }, "object": { "type": "Identifier", - "start": 8839, - "end": 8853, + "start": 8860, + "end": 8874, "loc": { "start": { "line": 250, @@ -37273,8 +37405,8 @@ }, "property": { "type": "Identifier", - "start": 8854, - "end": 8867, + "start": 8875, + "end": 8888, "loc": { "start": { "line": 250, @@ -37292,8 +37424,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 8869, - "end": 9409, + "start": 8890, + "end": 9430, "loc": { "start": { "line": 250, @@ -37307,8 +37439,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 8900, - "end": 8969, + "start": 8921, + "end": 8990, "loc": { "start": { "line": 252, @@ -37321,8 +37453,8 @@ }, "expression": { "type": "CallExpression", - "start": 8900, - "end": 8968, + "start": 8921, + "end": 8989, "loc": { "start": { "line": 252, @@ -37335,8 +37467,8 @@ }, "callee": { "type": "MemberExpression", - "start": 8900, - "end": 8918, + "start": 8921, + "end": 8939, "loc": { "start": { "line": 252, @@ -37349,8 +37481,8 @@ }, "object": { "type": "Identifier", - "start": 8900, - "end": 8913, + "start": 8921, + "end": 8934, "loc": { "start": { "line": 252, @@ -37366,8 +37498,8 @@ }, "property": { "type": "Identifier", - "start": 8914, - "end": 8918, + "start": 8935, + "end": 8939, "loc": { "start": { "line": 252, @@ -37386,8 +37518,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 8919, - "end": 8934, + "start": 8940, + "end": 8955, "loc": { "start": { "line": 252, @@ -37406,8 +37538,8 @@ }, { "type": "MemberExpression", - "start": 8936, - "end": 8961, + "start": 8957, + "end": 8982, "loc": { "start": { "line": 252, @@ -37420,8 +37552,8 @@ }, "object": { "type": "Identifier", - "start": 8936, - "end": 8950, + "start": 8957, + "end": 8971, "loc": { "start": { "line": 252, @@ -37437,8 +37569,8 @@ }, "property": { "type": "Identifier", - "start": 8951, - "end": 8961, + "start": 8972, + "end": 8982, "loc": { "start": { "line": 252, @@ -37456,8 +37588,8 @@ }, { "type": "BooleanLiteral", - "start": 8963, - "end": 8967, + "start": 8984, + "end": 8988, "loc": { "start": { "line": 252, @@ -37475,8 +37607,8 @@ }, { "type": "IfStatement", - "start": 8999, - "end": 9383, + "start": 9020, + "end": 9404, "loc": { "start": { "line": 254, @@ -37489,8 +37621,8 @@ }, "test": { "type": "LogicalExpression", - "start": 9003, - "end": 9050, + "start": 9024, + "end": 9071, "loc": { "start": { "line": 254, @@ -37503,8 +37635,8 @@ }, "left": { "type": "UnaryExpression", - "start": 9004, - "end": 9024, + "start": 9025, + "end": 9045, "loc": { "start": { "line": 254, @@ -37519,8 +37651,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 9005, - "end": 9024, + "start": 9026, + "end": 9045, "loc": { "start": { "line": 254, @@ -37533,8 +37665,8 @@ }, "object": { "type": "Identifier", - "start": 9005, - "end": 9012, + "start": 9026, + "end": 9033, "loc": { "start": { "line": 254, @@ -37550,8 +37682,8 @@ }, "property": { "type": "Identifier", - "start": 9013, - "end": 9024, + "start": 9034, + "end": 9045, "loc": { "start": { "line": 254, @@ -37570,14 +37702,14 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 9003 + "parenStart": 9024 } }, "operator": "&&", "right": { "type": "MemberExpression", - "start": 9029, - "end": 9050, + "start": 9050, + "end": 9071, "loc": { "start": { "line": 254, @@ -37590,8 +37722,8 @@ }, "object": { "type": "Identifier", - "start": 9029, - "end": 9036, + "start": 9050, + "end": 9057, "loc": { "start": { "line": 254, @@ -37607,8 +37739,8 @@ }, "property": { "type": "Identifier", - "start": 9037, - "end": 9050, + "start": 9058, + "end": 9071, "loc": { "start": { "line": 254, @@ -37627,8 +37759,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9052, - "end": 9383, + "start": 9073, + "end": 9404, "loc": { "start": { "line": 254, @@ -37642,8 +37774,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9086, - "end": 9162, + "start": 9107, + "end": 9183, "loc": { "start": { "line": 255, @@ -37656,8 +37788,8 @@ }, "expression": { "type": "CallExpression", - "start": 9086, - "end": 9161, + "start": 9107, + "end": 9182, "loc": { "start": { "line": 255, @@ -37670,8 +37802,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9086, - "end": 9125, + "start": 9107, + "end": 9146, "loc": { "start": { "line": 255, @@ -37684,8 +37816,8 @@ }, "object": { "type": "MemberExpression", - "start": 9086, - "end": 9113, + "start": 9107, + "end": 9134, "loc": { "start": { "line": 255, @@ -37698,8 +37830,8 @@ }, "object": { "type": "Identifier", - "start": 9086, - "end": 9097, + "start": 9107, + "end": 9118, "loc": { "start": { "line": 255, @@ -37715,8 +37847,8 @@ }, "property": { "type": "Identifier", - "start": 9098, - "end": 9113, + "start": 9119, + "end": 9134, "loc": { "start": { "line": 255, @@ -37734,8 +37866,8 @@ }, "property": { "type": "Identifier", - "start": 9114, - "end": 9125, + "start": 9135, + "end": 9146, "loc": { "start": { "line": 255, @@ -37754,8 +37886,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 9126, - "end": 9160, + "start": 9147, + "end": 9181, "loc": { "start": { "line": 255, @@ -37768,8 +37900,8 @@ }, "object": { "type": "MemberExpression", - "start": 9126, - "end": 9151, + "start": 9147, + "end": 9172, "loc": { "start": { "line": 255, @@ -37782,8 +37914,8 @@ }, "object": { "type": "Identifier", - "start": 9126, - "end": 9140, + "start": 9147, + "end": 9161, "loc": { "start": { "line": 255, @@ -37799,8 +37931,8 @@ }, "property": { "type": "Identifier", - "start": 9141, - "end": 9151, + "start": 9162, + "end": 9172, "loc": { "start": { "line": 255, @@ -37818,8 +37950,8 @@ }, "property": { "type": "Identifier", - "start": 9152, - "end": 9160, + "start": 9173, + "end": 9181, "loc": { "start": { "line": 255, @@ -37840,8 +37972,8 @@ }, { "type": "IfStatement", - "start": 9195, - "end": 9353, + "start": 9216, + "end": 9374, "loc": { "start": { "line": 256, @@ -37854,8 +37986,8 @@ }, "test": { "type": "CallExpression", - "start": 9199, - "end": 9239, + "start": 9220, + "end": 9260, "loc": { "start": { "line": 256, @@ -37868,8 +38000,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9199, - "end": 9237, + "start": 9220, + "end": 9258, "loc": { "start": { "line": 256, @@ -37882,8 +38014,8 @@ }, "object": { "type": "MemberExpression", - "start": 9199, - "end": 9226, + "start": 9220, + "end": 9247, "loc": { "start": { "line": 256, @@ -37896,8 +38028,8 @@ }, "object": { "type": "Identifier", - "start": 9199, - "end": 9210, + "start": 9220, + "end": 9231, "loc": { "start": { "line": 256, @@ -37913,8 +38045,8 @@ }, "property": { "type": "Identifier", - "start": 9211, - "end": 9226, + "start": 9232, + "end": 9247, "loc": { "start": { "line": 256, @@ -37932,8 +38064,8 @@ }, "property": { "type": "Identifier", - "start": 9227, - "end": 9237, + "start": 9248, + "end": 9258, "loc": { "start": { "line": 256, @@ -37953,8 +38085,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9241, - "end": 9353, + "start": 9262, + "end": 9374, "loc": { "start": { "line": 256, @@ -37968,8 +38100,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9279, - "end": 9319, + "start": 9300, + "end": 9340, "loc": { "start": { "line": 257, @@ -37982,8 +38114,8 @@ }, "expression": { "type": "CallExpression", - "start": 9279, - "end": 9318, + "start": 9300, + "end": 9339, "loc": { "start": { "line": 257, @@ -37996,8 +38128,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9279, - "end": 9316, + "start": 9300, + "end": 9337, "loc": { "start": { "line": 257, @@ -38010,8 +38142,8 @@ }, "object": { "type": "MemberExpression", - "start": 9279, - "end": 9306, + "start": 9300, + "end": 9327, "loc": { "start": { "line": 257, @@ -38024,8 +38156,8 @@ }, "object": { "type": "Identifier", - "start": 9279, - "end": 9290, + "start": 9300, + "end": 9311, "loc": { "start": { "line": 257, @@ -38041,8 +38173,8 @@ }, "property": { "type": "Identifier", - "start": 9291, - "end": 9306, + "start": 9312, + "end": 9327, "loc": { "start": { "line": 257, @@ -38060,8 +38192,8 @@ }, "property": { "type": "Identifier", - "start": 9307, - "end": 9316, + "start": 9328, + "end": 9337, "loc": { "start": { "line": 257, @@ -38100,8 +38232,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 9437, - "end": 9619, + "start": 9458, + "end": 9640, "loc": { "start": { "line": 261, @@ -38115,8 +38247,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9463, - "end": 9597, + "start": 9484, + "end": 9618, "loc": { "start": { "line": 262, @@ -38129,8 +38261,8 @@ }, "expression": { "type": "CallExpression", - "start": 9463, - "end": 9596, + "start": 9484, + "end": 9617, "loc": { "start": { "line": 262, @@ -38143,8 +38275,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9463, - "end": 9481, + "start": 9484, + "end": 9502, "loc": { "start": { "line": 262, @@ -38157,8 +38289,8 @@ }, "object": { "type": "Identifier", - "start": 9463, - "end": 9476, + "start": 9484, + "end": 9497, "loc": { "start": { "line": 262, @@ -38174,8 +38306,8 @@ }, "property": { "type": "Identifier", - "start": 9477, - "end": 9481, + "start": 9498, + "end": 9502, "loc": { "start": { "line": 262, @@ -38194,8 +38326,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 9482, - "end": 9497, + "start": 9503, + "end": 9518, "loc": { "start": { "line": 262, @@ -38214,8 +38346,8 @@ }, { "type": "ObjectExpression", - "start": 9499, - "end": 9589, + "start": 9520, + "end": 9610, "loc": { "start": { "line": 262, @@ -38229,8 +38361,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 9529, - "end": 9563, + "start": 9550, + "end": 9584, "loc": { "start": { "line": 263, @@ -38246,8 +38378,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 9529, - "end": 9538, + "start": 9550, + "end": 9559, "loc": { "start": { "line": 263, @@ -38263,8 +38395,8 @@ }, "value": { "type": "MemberExpression", - "start": 9540, - "end": 9563, + "start": 9561, + "end": 9584, "loc": { "start": { "line": 263, @@ -38277,8 +38409,8 @@ }, "object": { "type": "Identifier", - "start": 9540, - "end": 9546, + "start": 9561, + "end": 9567, "loc": { "start": { "line": 263, @@ -38294,8 +38426,8 @@ }, "property": { "type": "Identifier", - "start": 9547, - "end": 9563, + "start": 9568, + "end": 9584, "loc": { "start": { "line": 263, @@ -38316,8 +38448,8 @@ }, { "type": "BooleanLiteral", - "start": 9591, - "end": 9595, + "start": 9612, + "end": 9616, "loc": { "start": { "line": 264, @@ -38339,8 +38471,8 @@ }, { "type": "ExpressionStatement", - "start": 9641, - "end": 9658, + "start": 9662, + "end": 9679, "loc": { "start": { "line": 267, @@ -38353,8 +38485,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9641, - "end": 9657, + "start": 9662, + "end": 9678, "loc": { "start": { "line": 267, @@ -38368,8 +38500,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 9641, - "end": 9653, + "start": 9662, + "end": 9674, "loc": { "start": { "line": 267, @@ -38382,8 +38514,8 @@ }, "object": { "type": "ThisExpression", - "start": 9641, - "end": 9645, + "start": 9662, + "end": 9666, "loc": { "start": { "line": 267, @@ -38397,8 +38529,8 @@ }, "property": { "type": "Identifier", - "start": 9646, - "end": 9653, + "start": 9667, + "end": 9674, "loc": { "start": { "line": 267, @@ -38416,8 +38548,8 @@ }, "right": { "type": "NumericLiteral", - "start": 9656, - "end": 9657, + "start": 9677, + "end": 9678, "loc": { "start": { "line": 267, @@ -38442,8 +38574,8 @@ }, { "type": "NumericLiteral", - "start": 9679, - "end": 9682, + "start": 9700, + "end": 9703, "loc": { "start": { "line": 269, @@ -38468,8 +38600,8 @@ { "type": "CommentLine", "value": " First click", - "start": 8322, - "end": 8336, + "start": 8343, + "end": 8357, "loc": { "start": { "line": 237, @@ -38486,8 +38618,8 @@ { "type": "CommentLine", "value": " FIXME: Too short for track pads", - "start": 9686, - "end": 9720, + "start": 9707, + "end": 9741, "loc": { "start": { "line": 269, @@ -38506,8 +38638,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 9741, - "end": 12176, + "start": 9762, + "end": 12197, "loc": { "start": { "line": 271, @@ -38521,8 +38653,8 @@ "body": [ { "type": "IfStatement", - "start": 9776, - "end": 9921, + "start": 9797, + "end": 9942, "loc": { "start": { "line": 273, @@ -38535,8 +38667,8 @@ }, "test": { "type": "BinaryExpression", - "start": 9780, - "end": 9802, + "start": 9801, + "end": 9823, "loc": { "start": { "line": 273, @@ -38549,8 +38681,8 @@ }, "left": { "type": "MemberExpression", - "start": 9780, - "end": 9793, + "start": 9801, + "end": 9814, "loc": { "start": { "line": 273, @@ -38563,8 +38695,8 @@ }, "object": { "type": "ThisExpression", - "start": 9780, - "end": 9784, + "start": 9801, + "end": 9805, "loc": { "start": { "line": 273, @@ -38579,8 +38711,8 @@ }, "property": { "type": "Identifier", - "start": 9785, - "end": 9793, + "start": 9806, + "end": 9814, "loc": { "start": { "line": 273, @@ -38600,8 +38732,8 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 9798, - "end": 9802, + "start": 9819, + "end": 9823, "loc": { "start": { "line": 273, @@ -38617,8 +38749,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 9804, - "end": 9921, + "start": 9825, + "end": 9942, "loc": { "start": { "line": 273, @@ -38632,8 +38764,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 9826, - "end": 9861, + "start": 9847, + "end": 9882, "loc": { "start": { "line": 274, @@ -38646,8 +38778,8 @@ }, "expression": { "type": "CallExpression", - "start": 9826, - "end": 9860, + "start": 9847, + "end": 9881, "loc": { "start": { "line": 274, @@ -38660,8 +38792,8 @@ }, "callee": { "type": "MemberExpression", - "start": 9826, - "end": 9845, + "start": 9847, + "end": 9866, "loc": { "start": { "line": 274, @@ -38674,8 +38806,8 @@ }, "object": { "type": "Identifier", - "start": 9826, - "end": 9832, + "start": 9847, + "end": 9853, "loc": { "start": { "line": 274, @@ -38691,8 +38823,8 @@ }, "property": { "type": "Identifier", - "start": 9833, - "end": 9845, + "start": 9854, + "end": 9866, "loc": { "start": { "line": 274, @@ -38711,8 +38843,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 9846, - "end": 9859, + "start": 9867, + "end": 9880, "loc": { "start": { "line": 274, @@ -38725,8 +38857,8 @@ }, "object": { "type": "ThisExpression", - "start": 9846, - "end": 9850, + "start": 9867, + "end": 9871, "loc": { "start": { "line": 274, @@ -38740,8 +38872,8 @@ }, "property": { "type": "Identifier", - "start": 9851, - "end": 9859, + "start": 9872, + "end": 9880, "loc": { "start": { "line": 274, @@ -38762,8 +38894,8 @@ }, { "type": "ExpressionStatement", - "start": 9882, - "end": 9903, + "start": 9903, + "end": 9924, "loc": { "start": { "line": 275, @@ -38776,8 +38908,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9882, - "end": 9902, + "start": 9903, + "end": 9923, "loc": { "start": { "line": 275, @@ -38791,8 +38923,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 9882, - "end": 9895, + "start": 9903, + "end": 9916, "loc": { "start": { "line": 275, @@ -38805,8 +38937,8 @@ }, "object": { "type": "ThisExpression", - "start": 9882, - "end": 9886, + "start": 9903, + "end": 9907, "loc": { "start": { "line": 275, @@ -38820,8 +38952,8 @@ }, "property": { "type": "Identifier", - "start": 9887, - "end": 9895, + "start": 9908, + "end": 9916, "loc": { "start": { "line": 275, @@ -38839,8 +38971,8 @@ }, "right": { "type": "NullLiteral", - "start": 9898, - "end": 9902, + "start": 9919, + "end": 9923, "loc": { "start": { "line": 275, @@ -38862,8 +38994,8 @@ { "type": "CommentLine", "value": " Second click", - "start": 9743, - "end": 9758, + "start": 9764, + "end": 9779, "loc": { "start": { "line": 271, @@ -38879,8 +39011,8 @@ }, { "type": "ExpressionStatement", - "start": 9939, - "end": 9994, + "start": 9960, + "end": 10015, "loc": { "start": { "line": 278, @@ -38893,8 +39025,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 9939, - "end": 9993, + "start": 9960, + "end": 10014, "loc": { "start": { "line": 278, @@ -38908,8 +39040,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 9939, - "end": 9967, + "start": 9960, + "end": 9988, "loc": { "start": { "line": 278, @@ -38922,8 +39054,8 @@ }, "object": { "type": "Identifier", - "start": 9939, - "end": 9953, + "start": 9960, + "end": 9974, "loc": { "start": { "line": 278, @@ -38939,8 +39071,8 @@ }, "property": { "type": "Identifier", - "start": 9954, - "end": 9967, + "start": 9975, + "end": 9988, "loc": { "start": { "line": 278, @@ -38958,8 +39090,8 @@ }, "right": { "type": "MemberExpression", - "start": 9970, - "end": 9993, + "start": 9991, + "end": 10014, "loc": { "start": { "line": 278, @@ -38972,8 +39104,8 @@ }, "object": { "type": "Identifier", - "start": 9970, - "end": 9976, + "start": 9991, + "end": 9997, "loc": { "start": { "line": 278, @@ -38989,8 +39121,8 @@ }, "property": { "type": "Identifier", - "start": 9977, - "end": 9993, + "start": 9998, + "end": 10014, "loc": { "start": { "line": 278, @@ -39010,8 +39142,8 @@ }, { "type": "ExpressionStatement", - "start": 10011, - "end": 10118, + "start": 10032, + "end": 10139, "loc": { "start": { "line": 279, @@ -39024,8 +39156,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 10011, - "end": 10117, + "start": 10032, + "end": 10138, "loc": { "start": { "line": 279, @@ -39039,8 +39171,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 10011, - "end": 10044, + "start": 10032, + "end": 10065, "loc": { "start": { "line": 279, @@ -39053,8 +39185,8 @@ }, "object": { "type": "Identifier", - "start": 10011, - "end": 10025, + "start": 10032, + "end": 10046, "loc": { "start": { "line": 279, @@ -39070,8 +39202,8 @@ }, "property": { "type": "Identifier", - "start": 10026, - "end": 10044, + "start": 10047, + "end": 10065, "loc": { "start": { "line": 279, @@ -39089,8 +39221,8 @@ }, "right": { "type": "LogicalExpression", - "start": 10047, - "end": 10117, + "start": 10068, + "end": 10138, "loc": { "start": { "line": 279, @@ -39103,8 +39235,8 @@ }, "left": { "type": "LogicalExpression", - "start": 10047, - "end": 10090, + "start": 10068, + "end": 10111, "loc": { "start": { "line": 279, @@ -39117,8 +39249,8 @@ }, "left": { "type": "MemberExpression", - "start": 10047, - "end": 10070, + "start": 10068, + "end": 10091, "loc": { "start": { "line": 279, @@ -39131,8 +39263,8 @@ }, "object": { "type": "Identifier", - "start": 10047, - "end": 10054, + "start": 10068, + "end": 10075, "loc": { "start": { "line": 279, @@ -39148,8 +39280,8 @@ }, "property": { "type": "Identifier", - "start": 10055, - "end": 10070, + "start": 10076, + "end": 10091, "loc": { "start": { "line": 279, @@ -39168,8 +39300,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 10074, - "end": 10090, + "start": 10095, + "end": 10111, "loc": { "start": { "line": 279, @@ -39187,8 +39319,8 @@ "operator": "||", "right": { "type": "Identifier", - "start": 10094, - "end": 10117, + "start": 10115, + "end": 10138, "loc": { "start": { "line": 279, @@ -39207,8 +39339,8 @@ }, { "type": "ExpressionStatement", - "start": 10135, - "end": 10233, + "start": 10156, + "end": 10254, "loc": { "start": { "line": 280, @@ -39221,8 +39353,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 10135, - "end": 10232, + "start": 10156, + "end": 10253, "loc": { "start": { "line": 280, @@ -39236,8 +39368,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 10135, - "end": 10169, + "start": 10156, + "end": 10190, "loc": { "start": { "line": 280, @@ -39250,8 +39382,8 @@ }, "object": { "type": "Identifier", - "start": 10135, - "end": 10149, + "start": 10156, + "end": 10170, "loc": { "start": { "line": 280, @@ -39267,8 +39399,8 @@ }, "property": { "type": "Identifier", - "start": 10150, - "end": 10169, + "start": 10171, + "end": 10190, "loc": { "start": { "line": 280, @@ -39286,8 +39418,8 @@ }, "right": { "type": "LogicalExpression", - "start": 10172, - "end": 10232, + "start": 10193, + "end": 10253, "loc": { "start": { "line": 280, @@ -39300,8 +39432,8 @@ }, "left": { "type": "MemberExpression", - "start": 10172, - "end": 10205, + "start": 10193, + "end": 10226, "loc": { "start": { "line": 280, @@ -39314,8 +39446,8 @@ }, "object": { "type": "Identifier", - "start": 10172, - "end": 10186, + "start": 10193, + "end": 10207, "loc": { "start": { "line": 280, @@ -39331,8 +39463,8 @@ }, "property": { "type": "Identifier", - "start": 10187, - "end": 10205, + "start": 10208, + "end": 10226, "loc": { "start": { "line": 280, @@ -39351,8 +39483,8 @@ "operator": "&&", "right": { "type": "Identifier", - "start": 10209, - "end": 10232, + "start": 10230, + "end": 10253, "loc": { "start": { "line": 280, @@ -39371,8 +39503,8 @@ }, { "type": "ExpressionStatement", - "start": 10250, - "end": 10274, + "start": 10271, + "end": 10295, "loc": { "start": { "line": 281, @@ -39385,8 +39517,8 @@ }, "expression": { "type": "CallExpression", - "start": 10250, - "end": 10273, + "start": 10271, + "end": 10294, "loc": { "start": { "line": 281, @@ -39399,8 +39531,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10250, - "end": 10271, + "start": 10271, + "end": 10292, "loc": { "start": { "line": 281, @@ -39413,8 +39545,8 @@ }, "object": { "type": "Identifier", - "start": 10250, - "end": 10264, + "start": 10271, + "end": 10285, "loc": { "start": { "line": 281, @@ -39430,8 +39562,8 @@ }, "property": { "type": "Identifier", - "start": 10265, - "end": 10271, + "start": 10286, + "end": 10292, "loc": { "start": { "line": 281, @@ -39452,8 +39584,8 @@ }, { "type": "IfStatement", - "start": 10292, - "end": 12127, + "start": 10313, + "end": 12148, "loc": { "start": { "line": 283, @@ -39466,8 +39598,8 @@ }, "test": { "type": "MemberExpression", - "start": 10296, - "end": 10321, + "start": 10317, + "end": 10342, "loc": { "start": { "line": 283, @@ -39480,8 +39612,8 @@ }, "object": { "type": "Identifier", - "start": 10296, - "end": 10310, + "start": 10317, + "end": 10331, "loc": { "start": { "line": 283, @@ -39497,8 +39629,8 @@ }, "property": { "type": "Identifier", - "start": 10311, - "end": 10321, + "start": 10332, + "end": 10342, "loc": { "start": { "line": 283, @@ -39516,8 +39648,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 10323, - "end": 11320, + "start": 10344, + "end": 11341, "loc": { "start": { "line": 283, @@ -39531,8 +39663,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 10346, - "end": 10414, + "start": 10367, + "end": 10435, "loc": { "start": { "line": 285, @@ -39545,8 +39677,8 @@ }, "expression": { "type": "CallExpression", - "start": 10346, - "end": 10413, + "start": 10367, + "end": 10434, "loc": { "start": { "line": 285, @@ -39559,8 +39691,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10346, - "end": 10364, + "start": 10367, + "end": 10385, "loc": { "start": { "line": 285, @@ -39573,8 +39705,8 @@ }, "object": { "type": "Identifier", - "start": 10346, - "end": 10359, + "start": 10367, + "end": 10380, "loc": { "start": { "line": 285, @@ -39590,8 +39722,8 @@ }, "property": { "type": "Identifier", - "start": 10360, - "end": 10364, + "start": 10381, + "end": 10385, "loc": { "start": { "line": 285, @@ -39610,8 +39742,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 10365, - "end": 10379, + "start": 10386, + "end": 10400, "loc": { "start": { "line": 285, @@ -39630,8 +39762,8 @@ }, { "type": "MemberExpression", - "start": 10381, - "end": 10406, + "start": 10402, + "end": 10427, "loc": { "start": { "line": 285, @@ -39644,8 +39776,8 @@ }, "object": { "type": "Identifier", - "start": 10381, - "end": 10395, + "start": 10402, + "end": 10416, "loc": { "start": { "line": 285, @@ -39661,8 +39793,8 @@ }, "property": { "type": "Identifier", - "start": 10396, - "end": 10406, + "start": 10417, + "end": 10427, "loc": { "start": { "line": 285, @@ -39680,8 +39812,8 @@ }, { "type": "BooleanLiteral", - "start": 10408, - "end": 10412, + "start": 10429, + "end": 10433, "loc": { "start": { "line": 285, @@ -39699,8 +39831,8 @@ }, { "type": "IfStatement", - "start": 10436, - "end": 10593, + "start": 10457, + "end": 10614, "loc": { "start": { "line": 287, @@ -39713,8 +39845,8 @@ }, "test": { "type": "MemberExpression", - "start": 10440, - "end": 10468, + "start": 10461, + "end": 10489, "loc": { "start": { "line": 287, @@ -39727,8 +39859,8 @@ }, "object": { "type": "Identifier", - "start": 10440, - "end": 10454, + "start": 10461, + "end": 10475, "loc": { "start": { "line": 287, @@ -39744,8 +39876,8 @@ }, "property": { "type": "Identifier", - "start": 10455, - "end": 10468, + "start": 10476, + "end": 10489, "loc": { "start": { "line": 287, @@ -39763,8 +39895,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 10470, - "end": 10593, + "start": 10491, + "end": 10614, "loc": { "start": { "line": 287, @@ -39778,8 +39910,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 10496, - "end": 10571, + "start": 10517, + "end": 10592, "loc": { "start": { "line": 288, @@ -39792,8 +39924,8 @@ }, "expression": { "type": "CallExpression", - "start": 10496, - "end": 10570, + "start": 10517, + "end": 10591, "loc": { "start": { "line": 288, @@ -39806,8 +39938,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10496, - "end": 10514, + "start": 10517, + "end": 10535, "loc": { "start": { "line": 288, @@ -39820,8 +39952,8 @@ }, "object": { "type": "Identifier", - "start": 10496, - "end": 10509, + "start": 10517, + "end": 10530, "loc": { "start": { "line": 288, @@ -39837,8 +39969,8 @@ }, "property": { "type": "Identifier", - "start": 10510, - "end": 10514, + "start": 10531, + "end": 10535, "loc": { "start": { "line": 288, @@ -39857,8 +39989,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 10515, - "end": 10536, + "start": 10536, + "end": 10557, "loc": { "start": { "line": 288, @@ -39877,8 +40009,8 @@ }, { "type": "MemberExpression", - "start": 10538, - "end": 10563, + "start": 10559, + "end": 10584, "loc": { "start": { "line": 288, @@ -39891,8 +40023,8 @@ }, "object": { "type": "Identifier", - "start": 10538, - "end": 10552, + "start": 10559, + "end": 10573, "loc": { "start": { "line": 288, @@ -39908,8 +40040,8 @@ }, "property": { "type": "Identifier", - "start": 10553, - "end": 10563, + "start": 10574, + "end": 10584, "loc": { "start": { "line": 288, @@ -39927,8 +40059,8 @@ }, { "type": "BooleanLiteral", - "start": 10565, - "end": 10569, + "start": 10586, + "end": 10590, "loc": { "start": { "line": 288, @@ -39951,8 +40083,8 @@ }, { "type": "IfStatement", - "start": 10615, - "end": 11301, + "start": 10636, + "end": 11322, "loc": { "start": { "line": 291, @@ -39965,8 +40097,8 @@ }, "test": { "type": "MemberExpression", - "start": 10619, - "end": 10642, + "start": 10640, + "end": 10663, "loc": { "start": { "line": 291, @@ -39979,8 +40111,8 @@ }, "object": { "type": "Identifier", - "start": 10619, - "end": 10626, + "start": 10640, + "end": 10647, "loc": { "start": { "line": 291, @@ -39996,8 +40128,8 @@ }, "property": { "type": "Identifier", - "start": 10627, - "end": 10642, + "start": 10648, + "end": 10663, "loc": { "start": { "line": 291, @@ -40015,8 +40147,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 10644, - "end": 11301, + "start": 10665, + "end": 11322, "loc": { "start": { "line": 291, @@ -40030,8 +40162,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 10671, - "end": 10710, + "start": 10692, + "end": 10731, "loc": { "start": { "line": 293, @@ -40044,8 +40176,8 @@ }, "expression": { "type": "CallExpression", - "start": 10671, - "end": 10709, + "start": 10692, + "end": 10730, "loc": { "start": { "line": 293, @@ -40058,8 +40190,8 @@ }, "callee": { "type": "Identifier", - "start": 10671, - "end": 10682, + "start": 10692, + "end": 10703, "loc": { "start": { "line": 293, @@ -40076,8 +40208,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 10683, - "end": 10708, + "start": 10704, + "end": 10729, "loc": { "start": { "line": 293, @@ -40090,8 +40222,8 @@ }, "object": { "type": "Identifier", - "start": 10683, - "end": 10697, + "start": 10704, + "end": 10718, "loc": { "start": { "line": 293, @@ -40107,8 +40239,8 @@ }, "property": { "type": "Identifier", - "start": 10698, - "end": 10708, + "start": 10719, + "end": 10729, "loc": { "start": { "line": 293, @@ -40129,8 +40261,8 @@ }, { "type": "IfStatement", - "start": 10736, - "end": 11279, + "start": 10757, + "end": 11300, "loc": { "start": { "line": 295, @@ -40143,8 +40275,8 @@ }, "test": { "type": "LogicalExpression", - "start": 10740, - "end": 10787, + "start": 10761, + "end": 10808, "loc": { "start": { "line": 295, @@ -40157,8 +40289,8 @@ }, "left": { "type": "UnaryExpression", - "start": 10741, - "end": 10761, + "start": 10762, + "end": 10782, "loc": { "start": { "line": 295, @@ -40173,8 +40305,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 10742, - "end": 10761, + "start": 10763, + "end": 10782, "loc": { "start": { "line": 295, @@ -40187,8 +40319,8 @@ }, "object": { "type": "Identifier", - "start": 10742, - "end": 10749, + "start": 10763, + "end": 10770, "loc": { "start": { "line": 295, @@ -40204,8 +40336,8 @@ }, "property": { "type": "Identifier", - "start": 10750, - "end": 10761, + "start": 10771, + "end": 10782, "loc": { "start": { "line": 295, @@ -40224,14 +40356,14 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 10740 + "parenStart": 10761 } }, "operator": "&&", "right": { "type": "MemberExpression", - "start": 10766, - "end": 10787, + "start": 10787, + "end": 10808, "loc": { "start": { "line": 295, @@ -40244,8 +40376,8 @@ }, "object": { "type": "Identifier", - "start": 10766, - "end": 10773, + "start": 10787, + "end": 10794, "loc": { "start": { "line": 295, @@ -40261,8 +40393,8 @@ }, "property": { "type": "Identifier", - "start": 10774, - "end": 10787, + "start": 10795, + "end": 10808, "loc": { "start": { "line": 295, @@ -40281,8 +40413,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 10789, - "end": 11279, + "start": 10810, + "end": 11300, "loc": { "start": { "line": 295, @@ -40296,8 +40428,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 10820, - "end": 10883, + "start": 10841, + "end": 10904, "loc": { "start": { "line": 297, @@ -40311,8 +40443,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 10826, - "end": 10882, + "start": 10847, + "end": 10903, "loc": { "start": { "line": 297, @@ -40325,8 +40457,8 @@ }, "id": { "type": "Identifier", - "start": 10826, - "end": 10842, + "start": 10847, + "end": 10863, "loc": { "start": { "line": 297, @@ -40342,8 +40474,8 @@ }, "init": { "type": "MemberExpression", - "start": 10845, - "end": 10882, + "start": 10866, + "end": 10903, "loc": { "start": { "line": 297, @@ -40356,8 +40488,8 @@ }, "object": { "type": "MemberExpression", - "start": 10845, - "end": 10877, + "start": 10866, + "end": 10898, "loc": { "start": { "line": 297, @@ -40370,8 +40502,8 @@ }, "object": { "type": "MemberExpression", - "start": 10845, - "end": 10870, + "start": 10866, + "end": 10891, "loc": { "start": { "line": 297, @@ -40384,8 +40516,8 @@ }, "object": { "type": "Identifier", - "start": 10845, - "end": 10859, + "start": 10866, + "end": 10880, "loc": { "start": { "line": 297, @@ -40401,8 +40533,8 @@ }, "property": { "type": "Identifier", - "start": 10860, - "end": 10870, + "start": 10881, + "end": 10891, "loc": { "start": { "line": 297, @@ -40420,8 +40552,8 @@ }, "property": { "type": "Identifier", - "start": 10871, - "end": 10877, + "start": 10892, + "end": 10898, "loc": { "start": { "line": 297, @@ -40439,8 +40571,8 @@ }, "property": { "type": "Identifier", - "start": 10878, - "end": 10882, + "start": 10899, + "end": 10903, "loc": { "start": { "line": 297, @@ -40462,8 +40594,8 @@ }, { "type": "VariableDeclaration", - "start": 10912, - "end": 10980, + "start": 10933, + "end": 11001, "loc": { "start": { "line": 298, @@ -40477,8 +40609,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 10918, - "end": 10979, + "start": 10939, + "end": 11000, "loc": { "start": { "line": 298, @@ -40491,8 +40623,8 @@ }, "id": { "type": "Identifier", - "start": 10918, - "end": 10939, + "start": 10939, + "end": 10960, "loc": { "start": { "line": 298, @@ -40508,8 +40640,8 @@ }, "init": { "type": "CallExpression", - "start": 10942, - "end": 10979, + "start": 10963, + "end": 11000, "loc": { "start": { "line": 298, @@ -40522,8 +40654,8 @@ }, "callee": { "type": "MemberExpression", - "start": 10942, - "end": 10961, + "start": 10963, + "end": 10982, "loc": { "start": { "line": 298, @@ -40536,8 +40668,8 @@ }, "object": { "type": "Identifier", - "start": 10942, - "end": 10946, + "start": 10963, + "end": 10967, "loc": { "start": { "line": 298, @@ -40553,8 +40685,8 @@ }, "property": { "type": "Identifier", - "start": 10947, - "end": 10961, + "start": 10968, + "end": 10982, "loc": { "start": { "line": 298, @@ -40573,8 +40705,8 @@ "arguments": [ { "type": "Identifier", - "start": 10962, - "end": 10978, + "start": 10983, + "end": 10999, "loc": { "start": { "line": 298, @@ -40596,8 +40728,8 @@ }, { "type": "ExpressionStatement", - "start": 11010, - "end": 11073, + "start": 11031, + "end": 11094, "loc": { "start": { "line": 300, @@ -40610,8 +40742,8 @@ }, "expression": { "type": "CallExpression", - "start": 11010, - "end": 11072, + "start": 11031, + "end": 11093, "loc": { "start": { "line": 300, @@ -40624,8 +40756,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11010, - "end": 11049, + "start": 11031, + "end": 11070, "loc": { "start": { "line": 300, @@ -40638,8 +40770,8 @@ }, "object": { "type": "MemberExpression", - "start": 11010, - "end": 11037, + "start": 11031, + "end": 11058, "loc": { "start": { "line": 300, @@ -40652,8 +40784,8 @@ }, "object": { "type": "Identifier", - "start": 11010, - "end": 11021, + "start": 11031, + "end": 11042, "loc": { "start": { "line": 300, @@ -40669,8 +40801,8 @@ }, "property": { "type": "Identifier", - "start": 11022, - "end": 11037, + "start": 11043, + "end": 11058, "loc": { "start": { "line": 300, @@ -40688,8 +40820,8 @@ }, "property": { "type": "Identifier", - "start": 11038, - "end": 11049, + "start": 11059, + "end": 11070, "loc": { "start": { "line": 300, @@ -40708,8 +40840,8 @@ "arguments": [ { "type": "Identifier", - "start": 11050, - "end": 11071, + "start": 11071, + "end": 11092, "loc": { "start": { "line": 300, @@ -40728,8 +40860,8 @@ }, { "type": "IfStatement", - "start": 11103, - "end": 11253, + "start": 11124, + "end": 11274, "loc": { "start": { "line": 302, @@ -40742,8 +40874,8 @@ }, "test": { "type": "CallExpression", - "start": 11107, - "end": 11147, + "start": 11128, + "end": 11168, "loc": { "start": { "line": 302, @@ -40756,8 +40888,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11107, - "end": 11145, + "start": 11128, + "end": 11166, "loc": { "start": { "line": 302, @@ -40770,8 +40902,8 @@ }, "object": { "type": "MemberExpression", - "start": 11107, - "end": 11134, + "start": 11128, + "end": 11155, "loc": { "start": { "line": 302, @@ -40784,8 +40916,8 @@ }, "object": { "type": "Identifier", - "start": 11107, - "end": 11118, + "start": 11128, + "end": 11139, "loc": { "start": { "line": 302, @@ -40801,8 +40933,8 @@ }, "property": { "type": "Identifier", - "start": 11119, - "end": 11134, + "start": 11140, + "end": 11155, "loc": { "start": { "line": 302, @@ -40820,8 +40952,8 @@ }, "property": { "type": "Identifier", - "start": 11135, - "end": 11145, + "start": 11156, + "end": 11166, "loc": { "start": { "line": 302, @@ -40841,8 +40973,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 11149, - "end": 11253, + "start": 11170, + "end": 11274, "loc": { "start": { "line": 302, @@ -40856,8 +40988,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 11183, - "end": 11223, + "start": 11204, + "end": 11244, "loc": { "start": { "line": 303, @@ -40870,8 +41002,8 @@ }, "expression": { "type": "CallExpression", - "start": 11183, - "end": 11222, + "start": 11204, + "end": 11243, "loc": { "start": { "line": 303, @@ -40884,8 +41016,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11183, - "end": 11220, + "start": 11204, + "end": 11241, "loc": { "start": { "line": 303, @@ -40898,8 +41030,8 @@ }, "object": { "type": "MemberExpression", - "start": 11183, - "end": 11210, + "start": 11204, + "end": 11231, "loc": { "start": { "line": 303, @@ -40912,8 +41044,8 @@ }, "object": { "type": "Identifier", - "start": 11183, - "end": 11194, + "start": 11204, + "end": 11215, "loc": { "start": { "line": 303, @@ -40929,8 +41061,8 @@ }, "property": { "type": "Identifier", - "start": 11195, - "end": 11210, + "start": 11216, + "end": 11231, "loc": { "start": { "line": 303, @@ -40948,8 +41080,8 @@ }, "property": { "type": "Identifier", - "start": 11211, - "end": 11220, + "start": 11232, + "end": 11241, "loc": { "start": { "line": 303, @@ -40988,8 +41120,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 11326, - "end": 12127, + "start": 11347, + "end": 12148, "loc": { "start": { "line": 308, @@ -41003,8 +41135,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 11349, - "end": 11481, + "start": 11370, + "end": 11502, "loc": { "start": { "line": 310, @@ -41017,8 +41149,8 @@ }, "expression": { "type": "CallExpression", - "start": 11349, - "end": 11480, + "start": 11370, + "end": 11501, "loc": { "start": { "line": 310, @@ -41031,8 +41163,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11349, - "end": 11367, + "start": 11370, + "end": 11388, "loc": { "start": { "line": 310, @@ -41045,8 +41177,8 @@ }, "object": { "type": "Identifier", - "start": 11349, - "end": 11362, + "start": 11370, + "end": 11383, "loc": { "start": { "line": 310, @@ -41062,8 +41194,8 @@ }, "property": { "type": "Identifier", - "start": 11363, - "end": 11367, + "start": 11384, + "end": 11388, "loc": { "start": { "line": 310, @@ -41082,8 +41214,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 11368, - "end": 11389, + "start": 11389, + "end": 11410, "loc": { "start": { "line": 310, @@ -41102,8 +41234,8 @@ }, { "type": "ObjectExpression", - "start": 11391, - "end": 11473, + "start": 11412, + "end": 11494, "loc": { "start": { "line": 310, @@ -41117,8 +41249,8 @@ "properties": [ { "type": "ObjectProperty", - "start": 11417, - "end": 11451, + "start": 11438, + "end": 11472, "loc": { "start": { "line": 311, @@ -41134,8 +41266,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 11417, - "end": 11426, + "start": 11438, + "end": 11447, "loc": { "start": { "line": 311, @@ -41151,8 +41283,8 @@ }, "value": { "type": "MemberExpression", - "start": 11428, - "end": 11451, + "start": 11449, + "end": 11472, "loc": { "start": { "line": 311, @@ -41165,8 +41297,8 @@ }, "object": { "type": "Identifier", - "start": 11428, - "end": 11434, + "start": 11449, + "end": 11455, "loc": { "start": { "line": 311, @@ -41182,8 +41314,8 @@ }, "property": { "type": "Identifier", - "start": 11435, - "end": 11451, + "start": 11456, + "end": 11472, "loc": { "start": { "line": 311, @@ -41204,8 +41336,8 @@ }, { "type": "BooleanLiteral", - "start": 11475, - "end": 11479, + "start": 11496, + "end": 11500, "loc": { "start": { "line": 312, @@ -41223,8 +41355,8 @@ }, { "type": "IfStatement", - "start": 11503, - "end": 12109, + "start": 11524, + "end": 12130, "loc": { "start": { "line": 314, @@ -41237,8 +41369,8 @@ }, "test": { "type": "MemberExpression", - "start": 11507, - "end": 11530, + "start": 11528, + "end": 11551, "loc": { "start": { "line": 314, @@ -41251,8 +41383,8 @@ }, "object": { "type": "Identifier", - "start": 11507, - "end": 11514, + "start": 11528, + "end": 11535, "loc": { "start": { "line": 314, @@ -41268,8 +41400,8 @@ }, "property": { "type": "Identifier", - "start": 11515, - "end": 11530, + "start": 11536, + "end": 11551, "loc": { "start": { "line": 314, @@ -41287,8 +41419,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 11532, - "end": 12109, + "start": 11553, + "end": 12130, "loc": { "start": { "line": 314, @@ -41302,8 +41434,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 11559, - "end": 11573, + "start": 11580, + "end": 11594, "loc": { "start": { "line": 316, @@ -41316,8 +41448,8 @@ }, "expression": { "type": "CallExpression", - "start": 11559, - "end": 11572, + "start": 11580, + "end": 11593, "loc": { "start": { "line": 316, @@ -41330,8 +41462,8 @@ }, "callee": { "type": "Identifier", - "start": 11559, - "end": 11570, + "start": 11580, + "end": 11591, "loc": { "start": { "line": 316, @@ -41350,8 +41482,8 @@ }, { "type": "IfStatement", - "start": 11599, - "end": 12087, + "start": 11620, + "end": 12108, "loc": { "start": { "line": 318, @@ -41364,8 +41496,8 @@ }, "test": { "type": "LogicalExpression", - "start": 11603, - "end": 11650, + "start": 11624, + "end": 11671, "loc": { "start": { "line": 318, @@ -41378,8 +41510,8 @@ }, "left": { "type": "UnaryExpression", - "start": 11604, - "end": 11624, + "start": 11625, + "end": 11645, "loc": { "start": { "line": 318, @@ -41394,8 +41526,8 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 11605, - "end": 11624, + "start": 11626, + "end": 11645, "loc": { "start": { "line": 318, @@ -41408,8 +41540,8 @@ }, "object": { "type": "Identifier", - "start": 11605, - "end": 11612, + "start": 11626, + "end": 11633, "loc": { "start": { "line": 318, @@ -41425,8 +41557,8 @@ }, "property": { "type": "Identifier", - "start": 11613, - "end": 11624, + "start": 11634, + "end": 11645, "loc": { "start": { "line": 318, @@ -41445,14 +41577,14 @@ "extra": { "parenthesizedArgument": false, "parenthesized": true, - "parenStart": 11603 + "parenStart": 11624 } }, "operator": "&&", "right": { "type": "MemberExpression", - "start": 11629, - "end": 11650, + "start": 11650, + "end": 11671, "loc": { "start": { "line": 318, @@ -41465,8 +41597,8 @@ }, "object": { "type": "Identifier", - "start": 11629, - "end": 11636, + "start": 11650, + "end": 11657, "loc": { "start": { "line": 318, @@ -41482,8 +41614,8 @@ }, "property": { "type": "Identifier", - "start": 11637, - "end": 11650, + "start": 11658, + "end": 11671, "loc": { "start": { "line": 318, @@ -41502,8 +41634,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 11652, - "end": 12087, + "start": 11673, + "end": 12108, "loc": { "start": { "line": 318, @@ -41517,8 +41649,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 11683, - "end": 11712, + "start": 11704, + "end": 11733, "loc": { "start": { "line": 320, @@ -41532,8 +41664,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 11689, - "end": 11711, + "start": 11710, + "end": 11732, "loc": { "start": { "line": 320, @@ -41546,8 +41678,8 @@ }, "id": { "type": "Identifier", - "start": 11689, - "end": 11698, + "start": 11710, + "end": 11719, "loc": { "start": { "line": 320, @@ -41563,8 +41695,8 @@ }, "init": { "type": "MemberExpression", - "start": 11701, - "end": 11711, + "start": 11722, + "end": 11732, "loc": { "start": { "line": 320, @@ -41577,8 +41709,8 @@ }, "object": { "type": "Identifier", - "start": 11701, - "end": 11706, + "start": 11722, + "end": 11727, "loc": { "start": { "line": 320, @@ -41594,8 +41726,8 @@ }, "property": { "type": "Identifier", - "start": 11707, - "end": 11711, + "start": 11728, + "end": 11732, "loc": { "start": { "line": 320, @@ -41617,8 +41749,8 @@ }, { "type": "VariableDeclaration", - "start": 11741, - "end": 11795, + "start": 11762, + "end": 11816, "loc": { "start": { "line": 321, @@ -41632,8 +41764,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 11747, - "end": 11794, + "start": 11768, + "end": 11815, "loc": { "start": { "line": 321, @@ -41646,8 +41778,8 @@ }, "id": { "type": "Identifier", - "start": 11747, - "end": 11761, + "start": 11768, + "end": 11782, "loc": { "start": { "line": 321, @@ -41663,8 +41795,8 @@ }, "init": { "type": "CallExpression", - "start": 11764, - "end": 11794, + "start": 11785, + "end": 11815, "loc": { "start": { "line": 321, @@ -41677,8 +41809,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11764, - "end": 11783, + "start": 11785, + "end": 11804, "loc": { "start": { "line": 321, @@ -41691,8 +41823,8 @@ }, "object": { "type": "Identifier", - "start": 11764, - "end": 11768, + "start": 11785, + "end": 11789, "loc": { "start": { "line": 321, @@ -41708,8 +41840,8 @@ }, "property": { "type": "Identifier", - "start": 11769, - "end": 11783, + "start": 11790, + "end": 11804, "loc": { "start": { "line": 321, @@ -41728,8 +41860,8 @@ "arguments": [ { "type": "Identifier", - "start": 11784, - "end": 11793, + "start": 11805, + "end": 11814, "loc": { "start": { "line": 321, @@ -41751,8 +41883,8 @@ }, { "type": "ExpressionStatement", - "start": 11825, - "end": 11881, + "start": 11846, + "end": 11902, "loc": { "start": { "line": 323, @@ -41765,8 +41897,8 @@ }, "expression": { "type": "CallExpression", - "start": 11825, - "end": 11880, + "start": 11846, + "end": 11901, "loc": { "start": { "line": 323, @@ -41779,8 +41911,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11825, - "end": 11864, + "start": 11846, + "end": 11885, "loc": { "start": { "line": 323, @@ -41793,8 +41925,8 @@ }, "object": { "type": "MemberExpression", - "start": 11825, - "end": 11852, + "start": 11846, + "end": 11873, "loc": { "start": { "line": 323, @@ -41807,8 +41939,8 @@ }, "object": { "type": "Identifier", - "start": 11825, - "end": 11836, + "start": 11846, + "end": 11857, "loc": { "start": { "line": 323, @@ -41824,8 +41956,8 @@ }, "property": { "type": "Identifier", - "start": 11837, - "end": 11852, + "start": 11858, + "end": 11873, "loc": { "start": { "line": 323, @@ -41843,8 +41975,8 @@ }, "property": { "type": "Identifier", - "start": 11853, - "end": 11864, + "start": 11874, + "end": 11885, "loc": { "start": { "line": 323, @@ -41863,8 +41995,8 @@ "arguments": [ { "type": "Identifier", - "start": 11865, - "end": 11879, + "start": 11886, + "end": 11900, "loc": { "start": { "line": 323, @@ -41883,8 +42015,8 @@ }, { "type": "IfStatement", - "start": 11911, - "end": 12061, + "start": 11932, + "end": 12082, "loc": { "start": { "line": 325, @@ -41897,8 +42029,8 @@ }, "test": { "type": "CallExpression", - "start": 11915, - "end": 11955, + "start": 11936, + "end": 11976, "loc": { "start": { "line": 325, @@ -41911,8 +42043,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11915, - "end": 11953, + "start": 11936, + "end": 11974, "loc": { "start": { "line": 325, @@ -41925,8 +42057,8 @@ }, "object": { "type": "MemberExpression", - "start": 11915, - "end": 11942, + "start": 11936, + "end": 11963, "loc": { "start": { "line": 325, @@ -41939,8 +42071,8 @@ }, "object": { "type": "Identifier", - "start": 11915, - "end": 11926, + "start": 11936, + "end": 11947, "loc": { "start": { "line": 325, @@ -41956,8 +42088,8 @@ }, "property": { "type": "Identifier", - "start": 11927, - "end": 11942, + "start": 11948, + "end": 11963, "loc": { "start": { "line": 325, @@ -41975,8 +42107,8 @@ }, "property": { "type": "Identifier", - "start": 11943, - "end": 11953, + "start": 11964, + "end": 11974, "loc": { "start": { "line": 325, @@ -41996,8 +42128,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 11957, - "end": 12061, + "start": 11978, + "end": 12082, "loc": { "start": { "line": 325, @@ -42011,8 +42143,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 11991, - "end": 12031, + "start": 12012, + "end": 12052, "loc": { "start": { "line": 326, @@ -42025,8 +42157,8 @@ }, "expression": { "type": "CallExpression", - "start": 11991, - "end": 12030, + "start": 12012, + "end": 12051, "loc": { "start": { "line": 326, @@ -42039,8 +42171,8 @@ }, "callee": { "type": "MemberExpression", - "start": 11991, - "end": 12028, + "start": 12012, + "end": 12049, "loc": { "start": { "line": 326, @@ -42053,8 +42185,8 @@ }, "object": { "type": "MemberExpression", - "start": 11991, - "end": 12018, + "start": 12012, + "end": 12039, "loc": { "start": { "line": 326, @@ -42067,8 +42199,8 @@ }, "object": { "type": "Identifier", - "start": 11991, - "end": 12002, + "start": 12012, + "end": 12023, "loc": { "start": { "line": 326, @@ -42084,8 +42216,8 @@ }, "property": { "type": "Identifier", - "start": 12003, - "end": 12018, + "start": 12024, + "end": 12039, "loc": { "start": { "line": 326, @@ -42103,8 +42235,8 @@ }, "property": { "type": "Identifier", - "start": 12019, - "end": 12028, + "start": 12040, + "end": 12049, "loc": { "start": { "line": 326, @@ -42144,8 +42276,8 @@ }, { "type": "ExpressionStatement", - "start": 12145, - "end": 12162, + "start": 12166, + "end": 12183, "loc": { "start": { "line": 332, @@ -42158,8 +42290,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 12145, - "end": 12161, + "start": 12166, + "end": 12182, "loc": { "start": { "line": 332, @@ -42173,8 +42305,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 12145, - "end": 12157, + "start": 12166, + "end": 12178, "loc": { "start": { "line": 332, @@ -42187,8 +42319,8 @@ }, "object": { "type": "ThisExpression", - "start": 12145, - "end": 12149, + "start": 12166, + "end": 12170, "loc": { "start": { "line": 332, @@ -42202,8 +42334,8 @@ }, "property": { "type": "Identifier", - "start": 12150, - "end": 12157, + "start": 12171, + "end": 12178, "loc": { "start": { "line": 332, @@ -42221,8 +42353,8 @@ }, "right": { "type": "NumericLiteral", - "start": 12160, - "end": 12161, + "start": 12181, + "end": 12182, "loc": { "start": { "line": 332, @@ -42252,8 +42384,8 @@ }, { "type": "BooleanLiteral", - "start": 12188, - "end": 12193, + "start": 12209, + "end": 12214, "loc": { "start": { "line": 334, @@ -42275,8 +42407,8 @@ }, { "type": "ClassMethod", - "start": 12207, - "end": 12410, + "start": 12228, + "end": 12431, "loc": { "start": { "line": 337, @@ -42291,8 +42423,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 12207, - "end": 12212, + "start": 12228, + "end": 12233, "loc": { "start": { "line": 337, @@ -42314,8 +42446,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 12215, - "end": 12410, + "start": 12236, + "end": 12431, "loc": { "start": { "line": 337, @@ -42329,8 +42461,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 12225, - "end": 12242, + "start": 12246, + "end": 12263, "loc": { "start": { "line": 338, @@ -42343,8 +42475,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 12225, - "end": 12241, + "start": 12246, + "end": 12262, "loc": { "start": { "line": 338, @@ -42358,8 +42490,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 12225, - "end": 12237, + "start": 12246, + "end": 12258, "loc": { "start": { "line": 338, @@ -42372,8 +42504,8 @@ }, "object": { "type": "ThisExpression", - "start": 12225, - "end": 12229, + "start": 12246, + "end": 12250, "loc": { "start": { "line": 338, @@ -42387,8 +42519,8 @@ }, "property": { "type": "Identifier", - "start": 12230, - "end": 12237, + "start": 12251, + "end": 12258, "loc": { "start": { "line": 338, @@ -42406,8 +42538,8 @@ }, "right": { "type": "NumericLiteral", - "start": 12240, - "end": 12241, + "start": 12261, + "end": 12262, "loc": { "start": { "line": 338, @@ -42428,8 +42560,8 @@ }, { "type": "ExpressionStatement", - "start": 12251, - "end": 12283, + "start": 12272, + "end": 12304, "loc": { "start": { "line": 339, @@ -42442,8 +42574,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 12251, - "end": 12282, + "start": 12272, + "end": 12303, "loc": { "start": { "line": 339, @@ -42457,8 +42589,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 12251, - "end": 12275, + "start": 12272, + "end": 12296, "loc": { "start": { "line": 339, @@ -42471,8 +42603,8 @@ }, "object": { "type": "ThisExpression", - "start": 12251, - "end": 12255, + "start": 12272, + "end": 12276, "loc": { "start": { "line": 339, @@ -42486,8 +42618,8 @@ }, "property": { "type": "Identifier", - "start": 12256, - "end": 12275, + "start": 12277, + "end": 12296, "loc": { "start": { "line": 339, @@ -42505,8 +42637,8 @@ }, "right": { "type": "NullLiteral", - "start": 12278, - "end": 12282, + "start": 12299, + "end": 12303, "loc": { "start": { "line": 339, @@ -42522,8 +42654,8 @@ }, { "type": "IfStatement", - "start": 12292, - "end": 12404, + "start": 12313, + "end": 12425, "loc": { "start": { "line": 340, @@ -42536,8 +42668,8 @@ }, "test": { "type": "MemberExpression", - "start": 12296, - "end": 12309, + "start": 12317, + "end": 12330, "loc": { "start": { "line": 340, @@ -42550,8 +42682,8 @@ }, "object": { "type": "ThisExpression", - "start": 12296, - "end": 12300, + "start": 12317, + "end": 12321, "loc": { "start": { "line": 340, @@ -42565,8 +42697,8 @@ }, "property": { "type": "Identifier", - "start": 12301, - "end": 12309, + "start": 12322, + "end": 12330, "loc": { "start": { "line": 340, @@ -42584,8 +42716,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 12311, - "end": 12404, + "start": 12332, + "end": 12425, "loc": { "start": { "line": 340, @@ -42599,8 +42731,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 12325, - "end": 12360, + "start": 12346, + "end": 12381, "loc": { "start": { "line": 341, @@ -42613,8 +42745,8 @@ }, "expression": { "type": "CallExpression", - "start": 12325, - "end": 12359, + "start": 12346, + "end": 12380, "loc": { "start": { "line": 341, @@ -42627,8 +42759,8 @@ }, "callee": { "type": "MemberExpression", - "start": 12325, - "end": 12344, + "start": 12346, + "end": 12365, "loc": { "start": { "line": 341, @@ -42641,8 +42773,8 @@ }, "object": { "type": "Identifier", - "start": 12325, - "end": 12331, + "start": 12346, + "end": 12352, "loc": { "start": { "line": 341, @@ -42658,8 +42790,8 @@ }, "property": { "type": "Identifier", - "start": 12332, - "end": 12344, + "start": 12353, + "end": 12365, "loc": { "start": { "line": 341, @@ -42678,8 +42810,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 12345, - "end": 12358, + "start": 12366, + "end": 12379, "loc": { "start": { "line": 341, @@ -42692,8 +42824,8 @@ }, "object": { "type": "ThisExpression", - "start": 12345, - "end": 12349, + "start": 12366, + "end": 12370, "loc": { "start": { "line": 341, @@ -42707,8 +42839,8 @@ }, "property": { "type": "Identifier", - "start": 12350, - "end": 12358, + "start": 12371, + "end": 12379, "loc": { "start": { "line": 341, @@ -42729,8 +42861,8 @@ }, { "type": "ExpressionStatement", - "start": 12373, - "end": 12394, + "start": 12394, + "end": 12415, "loc": { "start": { "line": 342, @@ -42743,8 +42875,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 12373, - "end": 12393, + "start": 12394, + "end": 12414, "loc": { "start": { "line": 342, @@ -42758,8 +42890,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 12373, - "end": 12386, + "start": 12394, + "end": 12407, "loc": { "start": { "line": 342, @@ -42772,8 +42904,8 @@ }, "object": { "type": "ThisExpression", - "start": 12373, - "end": 12377, + "start": 12394, + "end": 12398, "loc": { "start": { "line": 342, @@ -42787,8 +42919,8 @@ }, "property": { "type": "Identifier", - "start": 12378, - "end": 12386, + "start": 12399, + "end": 12407, "loc": { "start": { "line": 342, @@ -42806,8 +42938,8 @@ }, "right": { "type": "NullLiteral", - "start": 12389, - "end": 12393, + "start": 12410, + "end": 12414, "loc": { "start": { "line": 342, @@ -42832,8 +42964,8 @@ }, { "type": "ClassMethod", - "start": 12416, - "end": 12916, + "start": 12437, + "end": 12937, "loc": { "start": { "line": 346, @@ -42848,8 +42980,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 12416, - "end": 12423, + "start": 12437, + "end": 12444, "loc": { "start": { "line": 346, @@ -42871,8 +43003,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 12426, - "end": 12916, + "start": 12447, + "end": 12937, "loc": { "start": { "line": 346, @@ -42886,8 +43018,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 12436, - "end": 12477, + "start": 12457, + "end": 12498, "loc": { "start": { "line": 347, @@ -42901,8 +43033,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 12442, - "end": 12476, + "start": 12463, + "end": 12497, "loc": { "start": { "line": 347, @@ -42915,8 +43047,8 @@ }, "id": { "type": "Identifier", - "start": 12442, - "end": 12448, + "start": 12463, + "end": 12469, "loc": { "start": { "line": 347, @@ -42932,8 +43064,8 @@ }, "init": { "type": "MemberExpression", - "start": 12451, - "end": 12476, + "start": 12472, + "end": 12497, "loc": { "start": { "line": 347, @@ -42946,8 +43078,8 @@ }, "object": { "type": "MemberExpression", - "start": 12451, - "end": 12469, + "start": 12472, + "end": 12490, "loc": { "start": { "line": 347, @@ -42960,8 +43092,8 @@ }, "object": { "type": "MemberExpression", - "start": 12451, - "end": 12462, + "start": 12472, + "end": 12483, "loc": { "start": { "line": 347, @@ -42974,8 +43106,8 @@ }, "object": { "type": "ThisExpression", - "start": 12451, - "end": 12455, + "start": 12472, + "end": 12476, "loc": { "start": { "line": 347, @@ -42989,8 +43121,8 @@ }, "property": { "type": "Identifier", - "start": 12456, - "end": 12462, + "start": 12477, + "end": 12483, "loc": { "start": { "line": 347, @@ -43008,8 +43140,8 @@ }, "property": { "type": "Identifier", - "start": 12463, - "end": 12469, + "start": 12484, + "end": 12490, "loc": { "start": { "line": 347, @@ -43027,8 +43159,8 @@ }, "property": { "type": "Identifier", - "start": 12470, - "end": 12476, + "start": 12491, + "end": 12497, "loc": { "start": { "line": 347, @@ -43050,8 +43182,8 @@ }, { "type": "ExpressionStatement", - "start": 12486, - "end": 12556, + "start": 12507, + "end": 12577, "loc": { "start": { "line": 348, @@ -43064,8 +43196,8 @@ }, "expression": { "type": "CallExpression", - "start": 12486, - "end": 12555, + "start": 12507, + "end": 12576, "loc": { "start": { "line": 348, @@ -43078,8 +43210,8 @@ }, "callee": { "type": "MemberExpression", - "start": 12486, - "end": 12512, + "start": 12507, + "end": 12533, "loc": { "start": { "line": 348, @@ -43092,8 +43224,8 @@ }, "object": { "type": "Identifier", - "start": 12486, - "end": 12492, + "start": 12507, + "end": 12513, "loc": { "start": { "line": 348, @@ -43109,8 +43241,8 @@ }, "property": { "type": "Identifier", - "start": 12493, - "end": 12512, + "start": 12514, + "end": 12533, "loc": { "start": { "line": 348, @@ -43129,8 +43261,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 12513, - "end": 12524, + "start": 12534, + "end": 12545, "loc": { "start": { "line": 348, @@ -43149,8 +43281,8 @@ }, { "type": "MemberExpression", - "start": 12526, - "end": 12554, + "start": 12547, + "end": 12575, "loc": { "start": { "line": 348, @@ -43163,8 +43295,8 @@ }, "object": { "type": "ThisExpression", - "start": 12526, - "end": 12530, + "start": 12547, + "end": 12551, "loc": { "start": { "line": 348, @@ -43178,8 +43310,8 @@ }, "property": { "type": "Identifier", - "start": 12531, - "end": 12554, + "start": 12552, + "end": 12575, "loc": { "start": { "line": 348, @@ -43200,8 +43332,8 @@ }, { "type": "ExpressionStatement", - "start": 12565, - "end": 12635, + "start": 12586, + "end": 12656, "loc": { "start": { "line": 349, @@ -43214,8 +43346,8 @@ }, "expression": { "type": "CallExpression", - "start": 12565, - "end": 12634, + "start": 12586, + "end": 12655, "loc": { "start": { "line": 349, @@ -43228,8 +43360,8 @@ }, "callee": { "type": "MemberExpression", - "start": 12565, - "end": 12591, + "start": 12586, + "end": 12612, "loc": { "start": { "line": 349, @@ -43242,8 +43374,8 @@ }, "object": { "type": "Identifier", - "start": 12565, - "end": 12571, + "start": 12586, + "end": 12592, "loc": { "start": { "line": 349, @@ -43259,8 +43391,8 @@ }, "property": { "type": "Identifier", - "start": 12572, - "end": 12591, + "start": 12593, + "end": 12612, "loc": { "start": { "line": 349, @@ -43279,8 +43411,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 12592, - "end": 12603, + "start": 12613, + "end": 12624, "loc": { "start": { "line": 349, @@ -43299,8 +43431,8 @@ }, { "type": "MemberExpression", - "start": 12605, - "end": 12633, + "start": 12626, + "end": 12654, "loc": { "start": { "line": 349, @@ -43313,8 +43445,8 @@ }, "object": { "type": "ThisExpression", - "start": 12605, - "end": 12609, + "start": 12626, + "end": 12630, "loc": { "start": { "line": 349, @@ -43328,8 +43460,8 @@ }, "property": { "type": "Identifier", - "start": 12610, - "end": 12633, + "start": 12631, + "end": 12654, "loc": { "start": { "line": 349, @@ -43350,8 +43482,8 @@ }, { "type": "ExpressionStatement", - "start": 12644, - "end": 12714, + "start": 12665, + "end": 12735, "loc": { "start": { "line": 350, @@ -43364,8 +43496,8 @@ }, "expression": { "type": "CallExpression", - "start": 12644, - "end": 12713, + "start": 12665, + "end": 12734, "loc": { "start": { "line": 350, @@ -43378,8 +43510,8 @@ }, "callee": { "type": "MemberExpression", - "start": 12644, - "end": 12672, + "start": 12665, + "end": 12693, "loc": { "start": { "line": 350, @@ -43392,8 +43524,8 @@ }, "object": { "type": "Identifier", - "start": 12644, - "end": 12652, + "start": 12665, + "end": 12673, "loc": { "start": { "line": 350, @@ -43409,8 +43541,8 @@ }, "property": { "type": "Identifier", - "start": 12653, - "end": 12672, + "start": 12674, + "end": 12693, "loc": { "start": { "line": 350, @@ -43429,8 +43561,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 12673, - "end": 12682, + "start": 12694, + "end": 12703, "loc": { "start": { "line": 350, @@ -43449,8 +43581,8 @@ }, { "type": "MemberExpression", - "start": 12684, - "end": 12712, + "start": 12705, + "end": 12733, "loc": { "start": { "line": 350, @@ -43463,8 +43595,8 @@ }, "object": { "type": "ThisExpression", - "start": 12684, - "end": 12688, + "start": 12705, + "end": 12709, "loc": { "start": { "line": 350, @@ -43478,8 +43610,8 @@ }, "property": { "type": "Identifier", - "start": 12689, - "end": 12712, + "start": 12710, + "end": 12733, "loc": { "start": { "line": 350, @@ -43500,8 +43632,8 @@ }, { "type": "ExpressionStatement", - "start": 12723, - "end": 12789, + "start": 12744, + "end": 12810, "loc": { "start": { "line": 351, @@ -43514,8 +43646,8 @@ }, "expression": { "type": "CallExpression", - "start": 12723, - "end": 12788, + "start": 12744, + "end": 12809, "loc": { "start": { "line": 351, @@ -43528,8 +43660,8 @@ }, "callee": { "type": "MemberExpression", - "start": 12723, - "end": 12749, + "start": 12744, + "end": 12770, "loc": { "start": { "line": 351, @@ -43542,8 +43674,8 @@ }, "object": { "type": "Identifier", - "start": 12723, - "end": 12729, + "start": 12744, + "end": 12750, "loc": { "start": { "line": 351, @@ -43559,8 +43691,8 @@ }, "property": { "type": "Identifier", - "start": 12730, - "end": 12749, + "start": 12751, + "end": 12770, "loc": { "start": { "line": 351, @@ -43579,8 +43711,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 12750, - "end": 12759, + "start": 12771, + "end": 12780, "loc": { "start": { "line": 351, @@ -43599,8 +43731,8 @@ }, { "type": "MemberExpression", - "start": 12761, - "end": 12787, + "start": 12782, + "end": 12808, "loc": { "start": { "line": 351, @@ -43613,8 +43745,8 @@ }, "object": { "type": "ThisExpression", - "start": 12761, - "end": 12765, + "start": 12782, + "end": 12786, "loc": { "start": { "line": 351, @@ -43628,8 +43760,8 @@ }, "property": { "type": "Identifier", - "start": 12766, - "end": 12787, + "start": 12787, + "end": 12808, "loc": { "start": { "line": 351, @@ -43650,8 +43782,8 @@ }, { "type": "IfStatement", - "start": 12798, - "end": 12910, + "start": 12819, + "end": 12931, "loc": { "start": { "line": 352, @@ -43664,8 +43796,8 @@ }, "test": { "type": "MemberExpression", - "start": 12802, - "end": 12815, + "start": 12823, + "end": 12836, "loc": { "start": { "line": 352, @@ -43678,8 +43810,8 @@ }, "object": { "type": "ThisExpression", - "start": 12802, - "end": 12806, + "start": 12823, + "end": 12827, "loc": { "start": { "line": 352, @@ -43693,8 +43825,8 @@ }, "property": { "type": "Identifier", - "start": 12807, - "end": 12815, + "start": 12828, + "end": 12836, "loc": { "start": { "line": 352, @@ -43712,8 +43844,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 12817, - "end": 12910, + "start": 12838, + "end": 12931, "loc": { "start": { "line": 352, @@ -43727,8 +43859,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 12831, - "end": 12866, + "start": 12852, + "end": 12887, "loc": { "start": { "line": 353, @@ -43741,8 +43873,8 @@ }, "expression": { "type": "CallExpression", - "start": 12831, - "end": 12865, + "start": 12852, + "end": 12886, "loc": { "start": { "line": 353, @@ -43755,8 +43887,8 @@ }, "callee": { "type": "MemberExpression", - "start": 12831, - "end": 12850, + "start": 12852, + "end": 12871, "loc": { "start": { "line": 353, @@ -43769,8 +43901,8 @@ }, "object": { "type": "Identifier", - "start": 12831, - "end": 12837, + "start": 12852, + "end": 12858, "loc": { "start": { "line": 353, @@ -43786,8 +43918,8 @@ }, "property": { "type": "Identifier", - "start": 12838, - "end": 12850, + "start": 12859, + "end": 12871, "loc": { "start": { "line": 353, @@ -43806,8 +43938,8 @@ "arguments": [ { "type": "MemberExpression", - "start": 12851, - "end": 12864, + "start": 12872, + "end": 12885, "loc": { "start": { "line": 353, @@ -43820,8 +43952,8 @@ }, "object": { "type": "ThisExpression", - "start": 12851, - "end": 12855, + "start": 12872, + "end": 12876, "loc": { "start": { "line": 353, @@ -43835,8 +43967,8 @@ }, "property": { "type": "Identifier", - "start": 12856, - "end": 12864, + "start": 12877, + "end": 12885, "loc": { "start": { "line": 353, @@ -43857,8 +43989,8 @@ }, { "type": "ExpressionStatement", - "start": 12879, - "end": 12900, + "start": 12900, + "end": 12921, "loc": { "start": { "line": 354, @@ -43871,8 +44003,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 12879, - "end": 12899, + "start": 12900, + "end": 12920, "loc": { "start": { "line": 354, @@ -43886,8 +44018,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 12879, - "end": 12892, + "start": 12900, + "end": 12913, "loc": { "start": { "line": 354, @@ -43900,8 +44032,8 @@ }, "object": { "type": "ThisExpression", - "start": 12879, - "end": 12883, + "start": 12900, + "end": 12904, "loc": { "start": { "line": 354, @@ -43915,8 +44047,8 @@ }, "property": { "type": "Identifier", - "start": 12884, - "end": 12892, + "start": 12905, + "end": 12913, "loc": { "start": { "line": 354, @@ -43934,8 +44066,8 @@ }, "right": { "type": "NullLiteral", - "start": 12895, - "end": 12899, + "start": 12916, + "end": 12920, "loc": { "start": { "line": 354, @@ -44008,8 +44140,8 @@ { "type": "CommentLine", "value": " Fly to look at point, don't change eye->look dist", - "start": 849, - "end": 901, + "start": 870, + "end": 922, "loc": { "start": { "line": 31, @@ -44024,8 +44156,8 @@ { "type": "CommentLine", "value": " look: pos,", - "start": 1088, - "end": 1101, + "start": 1109, + "end": 1122, "loc": { "start": { "line": 35, @@ -44040,8 +44172,8 @@ { "type": "CommentLine", "value": " eye: xeokit.math.addVec3(pos, diff, []),", - "start": 1122, - "end": 1165, + "start": 1143, + "end": 1186, "loc": { "start": { "line": 36, @@ -44056,8 +44188,8 @@ { "type": "CommentLine", "value": " up: camera.up,", - "start": 1186, - "end": 1203, + "start": 1207, + "end": 1224, "loc": { "start": { "line": 37, @@ -44072,8 +44204,8 @@ { "type": "CommentLine", "value": " TODO: Option to back off to fit AABB in view", - "start": 1271, - "end": 1318, + "start": 1292, + "end": 1339, "loc": { "start": { "line": 40, @@ -44088,8 +44220,8 @@ { "type": "CommentLine", "value": " Fly to fit target boundary in view", - "start": 1339, - "end": 1376, + "start": 1360, + "end": 1397, "loc": { "start": { "line": 41, @@ -44104,8 +44236,8 @@ { "type": "CommentLine", "value": " Hovered off an entity", - "start": 2707, - "end": 2731, + "start": 2728, + "end": 2752, "loc": { "start": { "line": 79, @@ -44120,8 +44252,8 @@ { "type": "CommentLine", "value": " Hovering over a new entity", - "start": 2968, - "end": 2997, + "start": 2989, + "end": 3018, "loc": { "start": { "line": 84, @@ -44136,8 +44268,8 @@ { "type": "CommentLine", "value": " Hovering the surface of an entity", - "start": 3234, - "end": 3270, + "start": 3255, + "end": 3291, "loc": { "start": { "line": 91, @@ -44152,8 +44284,8 @@ { "type": "CommentLine", "value": " Hovered off an entity", - "start": 3537, - "end": 3561, + "start": 3558, + "end": 3582, "loc": { "start": { "line": 99, @@ -44168,8 +44300,8 @@ { "type": "CommentLine", "value": " Not hovering on any entity", - "start": 3811, - "end": 3840, + "start": 3832, + "end": 3861, "loc": { "start": { "line": 106, @@ -44184,8 +44316,8 @@ { "type": "CommentLine", "value": " Left mouse button down to start pivoting", - "start": 4470, - "end": 4513, + "start": 4491, + "end": 4534, "loc": { "start": { "line": 133, @@ -44200,8 +44332,8 @@ { "type": "CommentLine", "value": " Left button", - "start": 5024, - "end": 5038, + "start": 5045, + "end": 5059, "loc": { "start": { "line": 147, @@ -44216,8 +44348,8 @@ { "type": "CommentLine", "value": " Left mouse button up to possibly pick or double-pick", - "start": 6299, - "end": 6354, + "start": 6320, + "end": 6375, "loc": { "start": { "line": 187, @@ -44232,8 +44364,8 @@ { "type": "CommentLine", "value": " Avoid the single/double click differentiation timeout", - "start": 7230, - "end": 7287, + "start": 7251, + "end": 7308, "loc": { "start": { "line": 207, @@ -44248,8 +44380,8 @@ { "type": "CommentLine", "value": " First click", - "start": 8322, - "end": 8336, + "start": 8343, + "end": 8357, "loc": { "start": { "line": 237, @@ -44264,8 +44396,8 @@ { "type": "CommentLine", "value": " FIXME: Too short for track pads", - "start": 9686, - "end": 9720, + "start": 9707, + "end": 9741, "loc": { "start": { "line": 269, @@ -44280,8 +44412,8 @@ { "type": "CommentLine", "value": " Second click", - "start": 9743, - "end": 9758, + "start": 9764, + "end": 9779, "loc": { "start": { "line": 271, @@ -47452,7 +47584,7 @@ }, { "type": { - "label": "?", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -47460,11 +47592,12 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, + "value": "&&", "start": 787, - "end": 788, + "end": 789, "loc": { "start": { "line": 30, @@ -47472,7 +47605,7 @@ }, "end": { "line": 30, - "column": 37 + "column": 38 } } }, @@ -47489,16 +47622,16 @@ "binop": null }, "value": "pickResult", - "start": 789, - "end": 799, + "start": 790, + "end": 800, "loc": { "start": { "line": 30, - "column": 38 + "column": 39 }, "end": { "line": 30, - "column": 48 + "column": 49 } } }, @@ -47515,16 +47648,16 @@ "binop": null, "updateContext": null }, - "start": 799, - "end": 800, + "start": 800, + "end": 801, "loc": { "start": { "line": 30, - "column": 48 + "column": 49 }, "end": { "line": 30, - "column": 49 + "column": 50 } } }, @@ -47541,16 +47674,68 @@ "binop": null }, "value": "entity", - "start": 800, - "end": 806, + "start": 801, + "end": 807, "loc": { "start": { "line": 30, - "column": 49 + "column": 50 }, "end": { "line": 30, - "column": 55 + "column": 56 + } + } + }, + { + "type": { + "label": "?", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 808, + "end": 809, + "loc": { + "start": { + "line": 30, + "column": 57 + }, + "end": { + "line": 30, + "column": 58 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "pickResult", + "start": 810, + "end": 820, + "loc": { + "start": { + "line": 30, + "column": 59 + }, + "end": { + "line": 30, + "column": 69 } } }, @@ -47567,16 +47752,68 @@ "binop": null, "updateContext": null }, - "start": 806, - "end": 807, + "start": 820, + "end": 821, "loc": { "start": { "line": 30, - "column": 55 + "column": 69 }, "end": { "line": 30, - "column": 56 + "column": 70 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "entity", + "start": 821, + "end": 827, + "loc": { + "start": { + "line": 30, + "column": 70 + }, + "end": { + "line": 30, + "column": 76 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 827, + "end": 828, + "loc": { + "start": { + "line": 30, + "column": 76 + }, + "end": { + "line": 30, + "column": 77 } } }, @@ -47593,16 +47830,16 @@ "binop": null }, "value": "aabb", - "start": 807, - "end": 811, + "start": 828, + "end": 832, "loc": { "start": { "line": 30, - "column": 56 + "column": 77 }, "end": { "line": 30, - "column": 60 + "column": 81 } } }, @@ -47619,16 +47856,16 @@ "binop": null, "updateContext": null }, - "start": 812, - "end": 813, + "start": 833, + "end": 834, "loc": { "start": { "line": 30, - "column": 61 + "column": 82 }, "end": { "line": 30, - "column": 62 + "column": 83 } } }, @@ -47645,16 +47882,16 @@ "binop": null }, "value": "scene", - "start": 814, - "end": 819, + "start": 835, + "end": 840, "loc": { "start": { "line": 30, - "column": 63 + "column": 84 }, "end": { "line": 30, - "column": 68 + "column": 89 } } }, @@ -47671,16 +47908,16 @@ "binop": null, "updateContext": null }, - "start": 819, - "end": 820, + "start": 840, + "end": 841, "loc": { "start": { "line": 30, - "column": 68 + "column": 89 }, "end": { "line": 30, - "column": 69 + "column": 90 } } }, @@ -47697,16 +47934,16 @@ "binop": null }, "value": "aabb", - "start": 820, - "end": 824, + "start": 841, + "end": 845, "loc": { "start": { "line": 30, - "column": 69 + "column": 90 }, "end": { "line": 30, - "column": 73 + "column": 94 } } }, @@ -47723,16 +47960,16 @@ "binop": null, "updateContext": null }, - "start": 824, - "end": 825, + "start": 845, + "end": 846, "loc": { "start": { "line": 30, - "column": 73 + "column": 94 }, "end": { "line": 30, - "column": 74 + "column": 95 } } }, @@ -47751,8 +47988,8 @@ "updateContext": null }, "value": "if", - "start": 838, - "end": 840, + "start": 859, + "end": 861, "loc": { "start": { "line": 31, @@ -47776,8 +48013,8 @@ "postfix": false, "binop": null }, - "start": 841, - "end": 842, + "start": 862, + "end": 863, "loc": { "start": { "line": 31, @@ -47802,8 +48039,8 @@ "binop": null }, "value": "pos", - "start": 842, - "end": 845, + "start": 863, + "end": 866, "loc": { "start": { "line": 31, @@ -47827,8 +48064,8 @@ "postfix": false, "binop": null }, - "start": 845, - "end": 846, + "start": 866, + "end": 867, "loc": { "start": { "line": 31, @@ -47852,8 +48089,8 @@ "postfix": false, "binop": null }, - "start": 847, - "end": 848, + "start": 868, + "end": 869, "loc": { "start": { "line": 31, @@ -47868,8 +48105,8 @@ { "type": "CommentLine", "value": " Fly to look at point, don't change eye->look dist", - "start": 849, - "end": 901, + "start": 870, + "end": 922, "loc": { "start": { "line": 31, @@ -47896,8 +48133,8 @@ "updateContext": null }, "value": "const", - "start": 918, - "end": 923, + "start": 939, + "end": 944, "loc": { "start": { "line": 32, @@ -47922,8 +48159,8 @@ "binop": null }, "value": "camera", - "start": 924, - "end": 930, + "start": 945, + "end": 951, "loc": { "start": { "line": 32, @@ -47949,8 +48186,8 @@ "updateContext": null }, "value": "=", - "start": 931, - "end": 932, + "start": 952, + "end": 953, "loc": { "start": { "line": 32, @@ -47975,8 +48212,8 @@ "binop": null }, "value": "scene", - "start": 933, - "end": 938, + "start": 954, + "end": 959, "loc": { "start": { "line": 32, @@ -48001,8 +48238,8 @@ "binop": null, "updateContext": null }, - "start": 938, - "end": 939, + "start": 959, + "end": 960, "loc": { "start": { "line": 32, @@ -48027,8 +48264,8 @@ "binop": null }, "value": "camera", - "start": 939, - "end": 945, + "start": 960, + "end": 966, "loc": { "start": { "line": 32, @@ -48053,8 +48290,8 @@ "binop": null, "updateContext": null }, - "start": 945, - "end": 946, + "start": 966, + "end": 967, "loc": { "start": { "line": 32, @@ -48081,8 +48318,8 @@ "updateContext": null }, "value": "const", - "start": 963, - "end": 968, + "start": 984, + "end": 989, "loc": { "start": { "line": 33, @@ -48107,8 +48344,8 @@ "binop": null }, "value": "diff", - "start": 969, - "end": 973, + "start": 990, + "end": 994, "loc": { "start": { "line": 33, @@ -48134,8 +48371,8 @@ "updateContext": null }, "value": "=", - "start": 974, - "end": 975, + "start": 995, + "end": 996, "loc": { "start": { "line": 33, @@ -48160,8 +48397,8 @@ "binop": null }, "value": "math", - "start": 976, - "end": 980, + "start": 997, + "end": 1001, "loc": { "start": { "line": 33, @@ -48186,8 +48423,8 @@ "binop": null, "updateContext": null }, - "start": 980, - "end": 981, + "start": 1001, + "end": 1002, "loc": { "start": { "line": 33, @@ -48212,8 +48449,8 @@ "binop": null }, "value": "subVec3", - "start": 981, - "end": 988, + "start": 1002, + "end": 1009, "loc": { "start": { "line": 33, @@ -48237,8 +48474,8 @@ "postfix": false, "binop": null }, - "start": 988, - "end": 989, + "start": 1009, + "end": 1010, "loc": { "start": { "line": 33, @@ -48263,8 +48500,8 @@ "binop": null }, "value": "camera", - "start": 989, - "end": 995, + "start": 1010, + "end": 1016, "loc": { "start": { "line": 33, @@ -48289,8 +48526,8 @@ "binop": null, "updateContext": null }, - "start": 995, - "end": 996, + "start": 1016, + "end": 1017, "loc": { "start": { "line": 33, @@ -48315,8 +48552,8 @@ "binop": null }, "value": "eye", - "start": 996, - "end": 999, + "start": 1017, + "end": 1020, "loc": { "start": { "line": 33, @@ -48341,8 +48578,8 @@ "binop": null, "updateContext": null }, - "start": 999, - "end": 1000, + "start": 1020, + "end": 1021, "loc": { "start": { "line": 33, @@ -48367,8 +48604,8 @@ "binop": null }, "value": "camera", - "start": 1001, - "end": 1007, + "start": 1022, + "end": 1028, "loc": { "start": { "line": 33, @@ -48393,8 +48630,8 @@ "binop": null, "updateContext": null }, - "start": 1007, - "end": 1008, + "start": 1028, + "end": 1029, "loc": { "start": { "line": 33, @@ -48419,8 +48656,8 @@ "binop": null }, "value": "look", - "start": 1008, - "end": 1012, + "start": 1029, + "end": 1033, "loc": { "start": { "line": 33, @@ -48445,8 +48682,8 @@ "binop": null, "updateContext": null }, - "start": 1012, - "end": 1013, + "start": 1033, + "end": 1034, "loc": { "start": { "line": 33, @@ -48471,8 +48708,8 @@ "binop": null, "updateContext": null }, - "start": 1014, - "end": 1015, + "start": 1035, + "end": 1036, "loc": { "start": { "line": 33, @@ -48497,8 +48734,8 @@ "binop": null, "updateContext": null }, - "start": 1015, - "end": 1016, + "start": 1036, + "end": 1037, "loc": { "start": { "line": 33, @@ -48522,8 +48759,8 @@ "postfix": false, "binop": null }, - "start": 1016, - "end": 1017, + "start": 1037, + "end": 1038, "loc": { "start": { "line": 33, @@ -48548,8 +48785,8 @@ "binop": null, "updateContext": null }, - "start": 1017, - "end": 1018, + "start": 1038, + "end": 1039, "loc": { "start": { "line": 33, @@ -48574,8 +48811,8 @@ "binop": null }, "value": "controllers", - "start": 1035, - "end": 1046, + "start": 1056, + "end": 1067, "loc": { "start": { "line": 34, @@ -48600,8 +48837,8 @@ "binop": null, "updateContext": null }, - "start": 1046, - "end": 1047, + "start": 1067, + "end": 1068, "loc": { "start": { "line": 34, @@ -48626,8 +48863,8 @@ "binop": null }, "value": "cameraFlight", - "start": 1047, - "end": 1059, + "start": 1068, + "end": 1080, "loc": { "start": { "line": 34, @@ -48652,8 +48889,8 @@ "binop": null, "updateContext": null }, - "start": 1059, - "end": 1060, + "start": 1080, + "end": 1081, "loc": { "start": { "line": 34, @@ -48678,8 +48915,8 @@ "binop": null }, "value": "flyTo", - "start": 1060, - "end": 1065, + "start": 1081, + "end": 1086, "loc": { "start": { "line": 34, @@ -48703,8 +48940,8 @@ "postfix": false, "binop": null }, - "start": 1065, - "end": 1066, + "start": 1086, + "end": 1087, "loc": { "start": { "line": 34, @@ -48728,8 +48965,8 @@ "postfix": false, "binop": null }, - "start": 1066, - "end": 1067, + "start": 1087, + "end": 1088, "loc": { "start": { "line": 34, @@ -48744,8 +48981,8 @@ { "type": "CommentLine", "value": " look: pos,", - "start": 1088, - "end": 1101, + "start": 1109, + "end": 1122, "loc": { "start": { "line": 35, @@ -48760,8 +48997,8 @@ { "type": "CommentLine", "value": " eye: xeokit.math.addVec3(pos, diff, []),", - "start": 1122, - "end": 1165, + "start": 1143, + "end": 1186, "loc": { "start": { "line": 36, @@ -48776,8 +49013,8 @@ { "type": "CommentLine", "value": " up: camera.up,", - "start": 1186, - "end": 1203, + "start": 1207, + "end": 1224, "loc": { "start": { "line": 37, @@ -48802,8 +49039,8 @@ "binop": null }, "value": "aabb", - "start": 1224, - "end": 1228, + "start": 1245, + "end": 1249, "loc": { "start": { "line": 38, @@ -48828,8 +49065,8 @@ "binop": null, "updateContext": null }, - "start": 1228, - "end": 1229, + "start": 1249, + "end": 1250, "loc": { "start": { "line": 38, @@ -48854,8 +49091,8 @@ "binop": null }, "value": "aabb", - "start": 1230, - "end": 1234, + "start": 1251, + "end": 1255, "loc": { "start": { "line": 38, @@ -48879,8 +49116,8 @@ "postfix": false, "binop": null }, - "start": 1251, - "end": 1252, + "start": 1272, + "end": 1273, "loc": { "start": { "line": 39, @@ -48904,8 +49141,8 @@ "postfix": false, "binop": null }, - "start": 1252, - "end": 1253, + "start": 1273, + "end": 1274, "loc": { "start": { "line": 39, @@ -48930,8 +49167,8 @@ "binop": null, "updateContext": null }, - "start": 1253, - "end": 1254, + "start": 1274, + "end": 1275, "loc": { "start": { "line": 39, @@ -48946,8 +49183,8 @@ { "type": "CommentLine", "value": " TODO: Option to back off to fit AABB in view", - "start": 1271, - "end": 1318, + "start": 1292, + "end": 1339, "loc": { "start": { "line": 40, @@ -48971,8 +49208,8 @@ "postfix": false, "binop": null }, - "start": 1331, - "end": 1332, + "start": 1352, + "end": 1353, "loc": { "start": { "line": 41, @@ -48999,8 +49236,8 @@ "updateContext": null }, "value": "else", - "start": 1333, - "end": 1337, + "start": 1354, + "end": 1358, "loc": { "start": { "line": 41, @@ -49024,8 +49261,8 @@ "postfix": false, "binop": null }, - "start": 1338, - "end": 1339, + "start": 1359, + "end": 1360, "loc": { "start": { "line": 41, @@ -49040,8 +49277,8 @@ { "type": "CommentLine", "value": " Fly to fit target boundary in view", - "start": 1339, - "end": 1376, + "start": 1360, + "end": 1397, "loc": { "start": { "line": 41, @@ -49066,8 +49303,8 @@ "binop": null }, "value": "controllers", - "start": 1393, - "end": 1404, + "start": 1414, + "end": 1425, "loc": { "start": { "line": 42, @@ -49092,8 +49329,8 @@ "binop": null, "updateContext": null }, - "start": 1404, - "end": 1405, + "start": 1425, + "end": 1426, "loc": { "start": { "line": 42, @@ -49118,8 +49355,8 @@ "binop": null }, "value": "cameraFlight", - "start": 1405, - "end": 1417, + "start": 1426, + "end": 1438, "loc": { "start": { "line": 42, @@ -49144,8 +49381,8 @@ "binop": null, "updateContext": null }, - "start": 1417, - "end": 1418, + "start": 1438, + "end": 1439, "loc": { "start": { "line": 42, @@ -49170,8 +49407,8 @@ "binop": null }, "value": "flyTo", - "start": 1418, - "end": 1423, + "start": 1439, + "end": 1444, "loc": { "start": { "line": 42, @@ -49195,8 +49432,8 @@ "postfix": false, "binop": null }, - "start": 1423, - "end": 1424, + "start": 1444, + "end": 1445, "loc": { "start": { "line": 42, @@ -49220,8 +49457,8 @@ "postfix": false, "binop": null }, - "start": 1424, - "end": 1425, + "start": 1445, + "end": 1446, "loc": { "start": { "line": 42, @@ -49246,8 +49483,8 @@ "binop": null }, "value": "aabb", - "start": 1446, - "end": 1450, + "start": 1467, + "end": 1471, "loc": { "start": { "line": 43, @@ -49272,8 +49509,8 @@ "binop": null, "updateContext": null }, - "start": 1450, - "end": 1451, + "start": 1471, + "end": 1472, "loc": { "start": { "line": 43, @@ -49298,8 +49535,8 @@ "binop": null }, "value": "aabb", - "start": 1452, - "end": 1456, + "start": 1473, + "end": 1477, "loc": { "start": { "line": 43, @@ -49323,8 +49560,8 @@ "postfix": false, "binop": null }, - "start": 1473, - "end": 1474, + "start": 1494, + "end": 1495, "loc": { "start": { "line": 44, @@ -49348,8 +49585,8 @@ "postfix": false, "binop": null }, - "start": 1474, - "end": 1475, + "start": 1495, + "end": 1496, "loc": { "start": { "line": 44, @@ -49374,8 +49611,8 @@ "binop": null, "updateContext": null }, - "start": 1475, - "end": 1476, + "start": 1496, + "end": 1497, "loc": { "start": { "line": 44, @@ -49399,8 +49636,8 @@ "postfix": false, "binop": null }, - "start": 1489, - "end": 1490, + "start": 1510, + "end": 1511, "loc": { "start": { "line": 45, @@ -49424,8 +49661,8 @@ "postfix": false, "binop": null }, - "start": 1499, - "end": 1500, + "start": 1520, + "end": 1521, "loc": { "start": { "line": 46, @@ -49450,8 +49687,8 @@ "binop": null, "updateContext": null }, - "start": 1500, - "end": 1501, + "start": 1521, + "end": 1522, "loc": { "start": { "line": 46, @@ -49476,8 +49713,8 @@ "binop": null }, "value": "canvas", - "start": 1511, - "end": 1517, + "start": 1532, + "end": 1538, "loc": { "start": { "line": 48, @@ -49502,8 +49739,8 @@ "binop": null, "updateContext": null }, - "start": 1517, - "end": 1518, + "start": 1538, + "end": 1539, "loc": { "start": { "line": 48, @@ -49528,8 +49765,8 @@ "binop": null }, "value": "addEventListener", - "start": 1518, - "end": 1534, + "start": 1539, + "end": 1555, "loc": { "start": { "line": 48, @@ -49553,8 +49790,8 @@ "postfix": false, "binop": null }, - "start": 1534, - "end": 1535, + "start": 1555, + "end": 1556, "loc": { "start": { "line": 48, @@ -49580,8 +49817,8 @@ "updateContext": null }, "value": "mousemove", - "start": 1535, - "end": 1546, + "start": 1556, + "end": 1567, "loc": { "start": { "line": 48, @@ -49606,8 +49843,8 @@ "binop": null, "updateContext": null }, - "start": 1546, - "end": 1547, + "start": 1567, + "end": 1568, "loc": { "start": { "line": 48, @@ -49634,8 +49871,8 @@ "updateContext": null }, "value": "this", - "start": 1548, - "end": 1552, + "start": 1569, + "end": 1573, "loc": { "start": { "line": 48, @@ -49660,8 +49897,8 @@ "binop": null, "updateContext": null }, - "start": 1552, - "end": 1553, + "start": 1573, + "end": 1574, "loc": { "start": { "line": 48, @@ -49686,8 +49923,8 @@ "binop": null }, "value": "_canvasMouseMoveHandler", - "start": 1553, - "end": 1576, + "start": 1574, + "end": 1597, "loc": { "start": { "line": 48, @@ -49713,8 +49950,8 @@ "updateContext": null }, "value": "=", - "start": 1577, - "end": 1578, + "start": 1598, + "end": 1599, "loc": { "start": { "line": 48, @@ -49738,8 +49975,8 @@ "postfix": false, "binop": null }, - "start": 1579, - "end": 1580, + "start": 1600, + "end": 1601, "loc": { "start": { "line": 48, @@ -49764,8 +50001,8 @@ "binop": null }, "value": "e", - "start": 1580, - "end": 1581, + "start": 1601, + "end": 1602, "loc": { "start": { "line": 48, @@ -49789,8 +50026,8 @@ "postfix": false, "binop": null }, - "start": 1581, - "end": 1582, + "start": 1602, + "end": 1603, "loc": { "start": { "line": 48, @@ -49815,8 +50052,8 @@ "binop": null, "updateContext": null }, - "start": 1583, - "end": 1585, + "start": 1604, + "end": 1606, "loc": { "start": { "line": 48, @@ -49840,8 +50077,8 @@ "postfix": false, "binop": null }, - "start": 1586, - "end": 1587, + "start": 1607, + "end": 1608, "loc": { "start": { "line": 48, @@ -49868,8 +50105,8 @@ "updateContext": null }, "value": "if", - "start": 1601, - "end": 1603, + "start": 1622, + "end": 1624, "loc": { "start": { "line": 50, @@ -49893,8 +50130,8 @@ "postfix": false, "binop": null }, - "start": 1604, - "end": 1605, + "start": 1625, + "end": 1626, "loc": { "start": { "line": 50, @@ -49920,8 +50157,8 @@ "updateContext": null }, "value": "!", - "start": 1605, - "end": 1606, + "start": 1626, + "end": 1627, "loc": { "start": { "line": 50, @@ -49945,8 +50182,8 @@ "postfix": false, "binop": null }, - "start": 1606, - "end": 1607, + "start": 1627, + "end": 1628, "loc": { "start": { "line": 50, @@ -49971,8 +50208,8 @@ "binop": null }, "value": "configs", - "start": 1607, - "end": 1614, + "start": 1628, + "end": 1635, "loc": { "start": { "line": 50, @@ -49997,8 +50234,8 @@ "binop": null, "updateContext": null }, - "start": 1614, - "end": 1615, + "start": 1635, + "end": 1636, "loc": { "start": { "line": 50, @@ -50023,8 +50260,8 @@ "binop": null }, "value": "active", - "start": 1615, - "end": 1621, + "start": 1636, + "end": 1642, "loc": { "start": { "line": 50, @@ -50050,8 +50287,8 @@ "updateContext": null }, "value": "&&", - "start": 1622, - "end": 1624, + "start": 1643, + "end": 1645, "loc": { "start": { "line": 50, @@ -50076,8 +50313,8 @@ "binop": null }, "value": "configs", - "start": 1625, - "end": 1632, + "start": 1646, + "end": 1653, "loc": { "start": { "line": 50, @@ -50102,8 +50339,8 @@ "binop": null, "updateContext": null }, - "start": 1632, - "end": 1633, + "start": 1653, + "end": 1654, "loc": { "start": { "line": 50, @@ -50128,8 +50365,8 @@ "binop": null }, "value": "pointerEnabled", - "start": 1633, - "end": 1647, + "start": 1654, + "end": 1668, "loc": { "start": { "line": 50, @@ -50153,8 +50390,8 @@ "postfix": false, "binop": null }, - "start": 1647, - "end": 1648, + "start": 1668, + "end": 1669, "loc": { "start": { "line": 50, @@ -50178,8 +50415,8 @@ "postfix": false, "binop": null }, - "start": 1648, - "end": 1649, + "start": 1669, + "end": 1670, "loc": { "start": { "line": 50, @@ -50203,8 +50440,8 @@ "postfix": false, "binop": null }, - "start": 1650, - "end": 1651, + "start": 1671, + "end": 1672, "loc": { "start": { "line": 50, @@ -50231,8 +50468,8 @@ "updateContext": null }, "value": "return", - "start": 1668, - "end": 1674, + "start": 1689, + "end": 1695, "loc": { "start": { "line": 51, @@ -50257,8 +50494,8 @@ "binop": null, "updateContext": null }, - "start": 1674, - "end": 1675, + "start": 1695, + "end": 1696, "loc": { "start": { "line": 51, @@ -50282,8 +50519,8 @@ "postfix": false, "binop": null }, - "start": 1688, - "end": 1689, + "start": 1709, + "end": 1710, "loc": { "start": { "line": 52, @@ -50310,8 +50547,8 @@ "updateContext": null }, "value": "if", - "start": 1703, - "end": 1705, + "start": 1724, + "end": 1726, "loc": { "start": { "line": 54, @@ -50335,8 +50572,8 @@ "postfix": false, "binop": null }, - "start": 1706, - "end": 1707, + "start": 1727, + "end": 1728, "loc": { "start": { "line": 54, @@ -50361,8 +50598,8 @@ "binop": null }, "value": "leftDown", - "start": 1707, - "end": 1715, + "start": 1728, + "end": 1736, "loc": { "start": { "line": 54, @@ -50388,8 +50625,8 @@ "updateContext": null }, "value": "||", - "start": 1716, - "end": 1718, + "start": 1737, + "end": 1739, "loc": { "start": { "line": 54, @@ -50414,8 +50651,8 @@ "binop": null }, "value": "rightDown", - "start": 1719, - "end": 1728, + "start": 1740, + "end": 1749, "loc": { "start": { "line": 54, @@ -50439,8 +50676,8 @@ "postfix": false, "binop": null }, - "start": 1728, - "end": 1729, + "start": 1749, + "end": 1750, "loc": { "start": { "line": 54, @@ -50464,8 +50701,8 @@ "postfix": false, "binop": null }, - "start": 1730, - "end": 1731, + "start": 1751, + "end": 1752, "loc": { "start": { "line": 54, @@ -50492,8 +50729,8 @@ "updateContext": null }, "value": "return", - "start": 1748, - "end": 1754, + "start": 1769, + "end": 1775, "loc": { "start": { "line": 55, @@ -50518,8 +50755,8 @@ "binop": null, "updateContext": null }, - "start": 1754, - "end": 1755, + "start": 1775, + "end": 1776, "loc": { "start": { "line": 55, @@ -50543,8 +50780,8 @@ "postfix": false, "binop": null }, - "start": 1768, - "end": 1769, + "start": 1789, + "end": 1790, "loc": { "start": { "line": 56, @@ -50571,8 +50808,8 @@ "updateContext": null }, "value": "const", - "start": 1783, - "end": 1788, + "start": 1804, + "end": 1809, "loc": { "start": { "line": 58, @@ -50597,8 +50834,8 @@ "binop": null }, "value": "hoverSubs", - "start": 1789, - "end": 1798, + "start": 1810, + "end": 1819, "loc": { "start": { "line": 58, @@ -50624,8 +50861,8 @@ "updateContext": null }, "value": "=", - "start": 1799, - "end": 1800, + "start": 1820, + "end": 1821, "loc": { "start": { "line": 58, @@ -50650,8 +50887,8 @@ "binop": null }, "value": "cameraControl", - "start": 1801, - "end": 1814, + "start": 1822, + "end": 1835, "loc": { "start": { "line": 58, @@ -50676,8 +50913,8 @@ "binop": null, "updateContext": null }, - "start": 1814, - "end": 1815, + "start": 1835, + "end": 1836, "loc": { "start": { "line": 58, @@ -50702,8 +50939,8 @@ "binop": null }, "value": "hasSubs", - "start": 1815, - "end": 1822, + "start": 1836, + "end": 1843, "loc": { "start": { "line": 58, @@ -50727,8 +50964,8 @@ "postfix": false, "binop": null }, - "start": 1822, - "end": 1823, + "start": 1843, + "end": 1844, "loc": { "start": { "line": 58, @@ -50754,8 +50991,8 @@ "updateContext": null }, "value": "hover", - "start": 1823, - "end": 1830, + "start": 1844, + "end": 1851, "loc": { "start": { "line": 58, @@ -50779,8 +51016,8 @@ "postfix": false, "binop": null }, - "start": 1830, - "end": 1831, + "start": 1851, + "end": 1852, "loc": { "start": { "line": 58, @@ -50805,8 +51042,8 @@ "binop": null, "updateContext": null }, - "start": 1831, - "end": 1832, + "start": 1852, + "end": 1853, "loc": { "start": { "line": 58, @@ -50833,8 +51070,8 @@ "updateContext": null }, "value": "const", - "start": 1845, - "end": 1850, + "start": 1866, + "end": 1871, "loc": { "start": { "line": 59, @@ -50859,8 +51096,8 @@ "binop": null }, "value": "hoverOutSubs", - "start": 1851, - "end": 1863, + "start": 1872, + "end": 1884, "loc": { "start": { "line": 59, @@ -50886,8 +51123,8 @@ "updateContext": null }, "value": "=", - "start": 1864, - "end": 1865, + "start": 1885, + "end": 1886, "loc": { "start": { "line": 59, @@ -50912,8 +51149,8 @@ "binop": null }, "value": "cameraControl", - "start": 1866, - "end": 1879, + "start": 1887, + "end": 1900, "loc": { "start": { "line": 59, @@ -50938,8 +51175,8 @@ "binop": null, "updateContext": null }, - "start": 1879, - "end": 1880, + "start": 1900, + "end": 1901, "loc": { "start": { "line": 59, @@ -50964,8 +51201,8 @@ "binop": null }, "value": "hasSubs", - "start": 1880, - "end": 1887, + "start": 1901, + "end": 1908, "loc": { "start": { "line": 59, @@ -50989,8 +51226,8 @@ "postfix": false, "binop": null }, - "start": 1887, - "end": 1888, + "start": 1908, + "end": 1909, "loc": { "start": { "line": 59, @@ -51016,8 +51253,8 @@ "updateContext": null }, "value": "hoverOut", - "start": 1888, - "end": 1898, + "start": 1909, + "end": 1919, "loc": { "start": { "line": 59, @@ -51041,8 +51278,8 @@ "postfix": false, "binop": null }, - "start": 1898, - "end": 1899, + "start": 1919, + "end": 1920, "loc": { "start": { "line": 59, @@ -51067,8 +51304,8 @@ "binop": null, "updateContext": null }, - "start": 1899, - "end": 1900, + "start": 1920, + "end": 1921, "loc": { "start": { "line": 59, @@ -51095,8 +51332,8 @@ "updateContext": null }, "value": "const", - "start": 1913, - "end": 1918, + "start": 1934, + "end": 1939, "loc": { "start": { "line": 60, @@ -51121,8 +51358,8 @@ "binop": null }, "value": "hoverOffSubs", - "start": 1919, - "end": 1931, + "start": 1940, + "end": 1952, "loc": { "start": { "line": 60, @@ -51148,8 +51385,8 @@ "updateContext": null }, "value": "=", - "start": 1932, - "end": 1933, + "start": 1953, + "end": 1954, "loc": { "start": { "line": 60, @@ -51174,8 +51411,8 @@ "binop": null }, "value": "cameraControl", - "start": 1934, - "end": 1947, + "start": 1955, + "end": 1968, "loc": { "start": { "line": 60, @@ -51200,8 +51437,8 @@ "binop": null, "updateContext": null }, - "start": 1947, - "end": 1948, + "start": 1968, + "end": 1969, "loc": { "start": { "line": 60, @@ -51226,8 +51463,8 @@ "binop": null }, "value": "hasSubs", - "start": 1948, - "end": 1955, + "start": 1969, + "end": 1976, "loc": { "start": { "line": 60, @@ -51251,8 +51488,8 @@ "postfix": false, "binop": null }, - "start": 1955, - "end": 1956, + "start": 1976, + "end": 1977, "loc": { "start": { "line": 60, @@ -51278,8 +51515,8 @@ "updateContext": null }, "value": "hoverOff", - "start": 1956, - "end": 1966, + "start": 1977, + "end": 1987, "loc": { "start": { "line": 60, @@ -51303,8 +51540,8 @@ "postfix": false, "binop": null }, - "start": 1966, - "end": 1967, + "start": 1987, + "end": 1988, "loc": { "start": { "line": 60, @@ -51329,8 +51566,8 @@ "binop": null, "updateContext": null }, - "start": 1967, - "end": 1968, + "start": 1988, + "end": 1989, "loc": { "start": { "line": 60, @@ -51357,8 +51594,8 @@ "updateContext": null }, "value": "const", - "start": 1981, - "end": 1986, + "start": 2002, + "end": 2007, "loc": { "start": { "line": 61, @@ -51383,8 +51620,8 @@ "binop": null }, "value": "hoverSurfaceSubs", - "start": 1987, - "end": 2003, + "start": 2008, + "end": 2024, "loc": { "start": { "line": 61, @@ -51410,8 +51647,8 @@ "updateContext": null }, "value": "=", - "start": 2004, - "end": 2005, + "start": 2025, + "end": 2026, "loc": { "start": { "line": 61, @@ -51436,8 +51673,8 @@ "binop": null }, "value": "cameraControl", - "start": 2006, - "end": 2019, + "start": 2027, + "end": 2040, "loc": { "start": { "line": 61, @@ -51462,8 +51699,8 @@ "binop": null, "updateContext": null }, - "start": 2019, - "end": 2020, + "start": 2040, + "end": 2041, "loc": { "start": { "line": 61, @@ -51488,8 +51725,8 @@ "binop": null }, "value": "hasSubs", - "start": 2020, - "end": 2027, + "start": 2041, + "end": 2048, "loc": { "start": { "line": 61, @@ -51513,8 +51750,8 @@ "postfix": false, "binop": null }, - "start": 2027, - "end": 2028, + "start": 2048, + "end": 2049, "loc": { "start": { "line": 61, @@ -51540,8 +51777,8 @@ "updateContext": null }, "value": "hoverSurface", - "start": 2028, - "end": 2042, + "start": 2049, + "end": 2063, "loc": { "start": { "line": 61, @@ -51565,8 +51802,8 @@ "postfix": false, "binop": null }, - "start": 2042, - "end": 2043, + "start": 2063, + "end": 2064, "loc": { "start": { "line": 61, @@ -51591,8 +51828,8 @@ "binop": null, "updateContext": null }, - "start": 2043, - "end": 2044, + "start": 2064, + "end": 2065, "loc": { "start": { "line": 61, @@ -51619,8 +51856,8 @@ "updateContext": null }, "value": "if", - "start": 2058, - "end": 2060, + "start": 2079, + "end": 2081, "loc": { "start": { "line": 63, @@ -51644,8 +51881,8 @@ "postfix": false, "binop": null }, - "start": 2061, - "end": 2062, + "start": 2082, + "end": 2083, "loc": { "start": { "line": 63, @@ -51670,8 +51907,8 @@ "binop": null }, "value": "hoverSubs", - "start": 2062, - "end": 2071, + "start": 2083, + "end": 2092, "loc": { "start": { "line": 63, @@ -51697,8 +51934,8 @@ "updateContext": null }, "value": "||", - "start": 2072, - "end": 2074, + "start": 2093, + "end": 2095, "loc": { "start": { "line": 63, @@ -51723,8 +51960,8 @@ "binop": null }, "value": "hoverOutSubs", - "start": 2075, - "end": 2087, + "start": 2096, + "end": 2108, "loc": { "start": { "line": 63, @@ -51750,8 +51987,8 @@ "updateContext": null }, "value": "||", - "start": 2088, - "end": 2090, + "start": 2109, + "end": 2111, "loc": { "start": { "line": 63, @@ -51776,8 +52013,8 @@ "binop": null }, "value": "hoverOffSubs", - "start": 2091, - "end": 2103, + "start": 2112, + "end": 2124, "loc": { "start": { "line": 63, @@ -51803,8 +52040,8 @@ "updateContext": null }, "value": "||", - "start": 2104, - "end": 2106, + "start": 2125, + "end": 2127, "loc": { "start": { "line": 63, @@ -51829,8 +52066,8 @@ "binop": null }, "value": "hoverSurfaceSubs", - "start": 2107, - "end": 2123, + "start": 2128, + "end": 2144, "loc": { "start": { "line": 63, @@ -51854,8 +52091,8 @@ "postfix": false, "binop": null }, - "start": 2123, - "end": 2124, + "start": 2144, + "end": 2145, "loc": { "start": { "line": 63, @@ -51879,8 +52116,8 @@ "postfix": false, "binop": null }, - "start": 2125, - "end": 2126, + "start": 2146, + "end": 2147, "loc": { "start": { "line": 63, @@ -51905,8 +52142,8 @@ "binop": null }, "value": "pickController", - "start": 2144, - "end": 2158, + "start": 2165, + "end": 2179, "loc": { "start": { "line": 65, @@ -51931,8 +52168,8 @@ "binop": null, "updateContext": null }, - "start": 2158, - "end": 2159, + "start": 2179, + "end": 2180, "loc": { "start": { "line": 65, @@ -51957,8 +52194,8 @@ "binop": null }, "value": "pickCursorPos", - "start": 2159, - "end": 2172, + "start": 2180, + "end": 2193, "loc": { "start": { "line": 65, @@ -51984,8 +52221,8 @@ "updateContext": null }, "value": "=", - "start": 2173, - "end": 2174, + "start": 2194, + "end": 2195, "loc": { "start": { "line": 65, @@ -52010,8 +52247,8 @@ "binop": null }, "value": "states", - "start": 2175, - "end": 2181, + "start": 2196, + "end": 2202, "loc": { "start": { "line": 65, @@ -52036,8 +52273,8 @@ "binop": null, "updateContext": null }, - "start": 2181, - "end": 2182, + "start": 2202, + "end": 2203, "loc": { "start": { "line": 65, @@ -52062,8 +52299,8 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 2182, - "end": 2198, + "start": 2203, + "end": 2219, "loc": { "start": { "line": 65, @@ -52088,8 +52325,8 @@ "binop": null, "updateContext": null }, - "start": 2198, - "end": 2199, + "start": 2219, + "end": 2220, "loc": { "start": { "line": 65, @@ -52114,8 +52351,8 @@ "binop": null }, "value": "pickController", - "start": 2216, - "end": 2230, + "start": 2237, + "end": 2251, "loc": { "start": { "line": 66, @@ -52140,8 +52377,8 @@ "binop": null, "updateContext": null }, - "start": 2230, - "end": 2231, + "start": 2251, + "end": 2252, "loc": { "start": { "line": 66, @@ -52166,8 +52403,8 @@ "binop": null }, "value": "schedulePickEntity", - "start": 2231, - "end": 2249, + "start": 2252, + "end": 2270, "loc": { "start": { "line": 66, @@ -52193,8 +52430,8 @@ "updateContext": null }, "value": "=", - "start": 2250, - "end": 2251, + "start": 2271, + "end": 2272, "loc": { "start": { "line": 66, @@ -52221,8 +52458,8 @@ "updateContext": null }, "value": "true", - "start": 2252, - "end": 2256, + "start": 2273, + "end": 2277, "loc": { "start": { "line": 66, @@ -52247,8 +52484,8 @@ "binop": null, "updateContext": null }, - "start": 2256, - "end": 2257, + "start": 2277, + "end": 2278, "loc": { "start": { "line": 66, @@ -52273,8 +52510,8 @@ "binop": null }, "value": "pickController", - "start": 2274, - "end": 2288, + "start": 2295, + "end": 2309, "loc": { "start": { "line": 67, @@ -52299,8 +52536,8 @@ "binop": null, "updateContext": null }, - "start": 2288, - "end": 2289, + "start": 2309, + "end": 2310, "loc": { "start": { "line": 67, @@ -52325,8 +52562,8 @@ "binop": null }, "value": "schedulePickSurface", - "start": 2289, - "end": 2308, + "start": 2310, + "end": 2329, "loc": { "start": { "line": 67, @@ -52352,8 +52589,8 @@ "updateContext": null }, "value": "=", - "start": 2309, - "end": 2310, + "start": 2330, + "end": 2331, "loc": { "start": { "line": 67, @@ -52378,8 +52615,8 @@ "binop": null }, "value": "hoverSurfaceSubs", - "start": 2311, - "end": 2327, + "start": 2332, + "end": 2348, "loc": { "start": { "line": 67, @@ -52404,8 +52641,8 @@ "binop": null, "updateContext": null }, - "start": 2327, - "end": 2328, + "start": 2348, + "end": 2349, "loc": { "start": { "line": 67, @@ -52430,8 +52667,8 @@ "binop": null }, "value": "pickController", - "start": 2346, - "end": 2360, + "start": 2367, + "end": 2381, "loc": { "start": { "line": 69, @@ -52456,8 +52693,8 @@ "binop": null, "updateContext": null }, - "start": 2360, - "end": 2361, + "start": 2381, + "end": 2382, "loc": { "start": { "line": 69, @@ -52482,8 +52719,8 @@ "binop": null }, "value": "update", - "start": 2361, - "end": 2367, + "start": 2382, + "end": 2388, "loc": { "start": { "line": 69, @@ -52507,8 +52744,8 @@ "postfix": false, "binop": null }, - "start": 2367, - "end": 2368, + "start": 2388, + "end": 2389, "loc": { "start": { "line": 69, @@ -52532,8 +52769,8 @@ "postfix": false, "binop": null }, - "start": 2368, - "end": 2369, + "start": 2389, + "end": 2390, "loc": { "start": { "line": 69, @@ -52558,8 +52795,8 @@ "binop": null, "updateContext": null }, - "start": 2369, - "end": 2370, + "start": 2390, + "end": 2391, "loc": { "start": { "line": 69, @@ -52586,8 +52823,8 @@ "updateContext": null }, "value": "if", - "start": 2388, - "end": 2390, + "start": 2409, + "end": 2411, "loc": { "start": { "line": 71, @@ -52611,8 +52848,8 @@ "postfix": false, "binop": null }, - "start": 2391, - "end": 2392, + "start": 2412, + "end": 2413, "loc": { "start": { "line": 71, @@ -52637,8 +52874,8 @@ "binop": null }, "value": "pickController", - "start": 2392, - "end": 2406, + "start": 2413, + "end": 2427, "loc": { "start": { "line": 71, @@ -52663,8 +52900,8 @@ "binop": null, "updateContext": null }, - "start": 2406, - "end": 2407, + "start": 2427, + "end": 2428, "loc": { "start": { "line": 71, @@ -52689,8 +52926,8 @@ "binop": null }, "value": "pickResult", - "start": 2407, - "end": 2417, + "start": 2428, + "end": 2438, "loc": { "start": { "line": 71, @@ -52714,8 +52951,8 @@ "postfix": false, "binop": null }, - "start": 2417, - "end": 2418, + "start": 2438, + "end": 2439, "loc": { "start": { "line": 71, @@ -52739,8 +52976,8 @@ "postfix": false, "binop": null }, - "start": 2419, - "end": 2420, + "start": 2440, + "end": 2441, "loc": { "start": { "line": 71, @@ -52767,8 +53004,8 @@ "updateContext": null }, "value": "const", - "start": 2442, - "end": 2447, + "start": 2463, + "end": 2468, "loc": { "start": { "line": 73, @@ -52793,8 +53030,8 @@ "binop": null }, "value": "pickedEntityId", - "start": 2448, - "end": 2462, + "start": 2469, + "end": 2483, "loc": { "start": { "line": 73, @@ -52820,8 +53057,8 @@ "updateContext": null }, "value": "=", - "start": 2463, - "end": 2464, + "start": 2484, + "end": 2485, "loc": { "start": { "line": 73, @@ -52846,8 +53083,8 @@ "binop": null }, "value": "pickController", - "start": 2465, - "end": 2479, + "start": 2486, + "end": 2500, "loc": { "start": { "line": 73, @@ -52872,8 +53109,8 @@ "binop": null, "updateContext": null }, - "start": 2479, - "end": 2480, + "start": 2500, + "end": 2501, "loc": { "start": { "line": 73, @@ -52898,8 +53135,8 @@ "binop": null }, "value": "pickResult", - "start": 2480, - "end": 2490, + "start": 2501, + "end": 2511, "loc": { "start": { "line": 73, @@ -52924,8 +53161,8 @@ "binop": null, "updateContext": null }, - "start": 2490, - "end": 2491, + "start": 2511, + "end": 2512, "loc": { "start": { "line": 73, @@ -52950,8 +53187,8 @@ "binop": null }, "value": "entity", - "start": 2491, - "end": 2497, + "start": 2512, + "end": 2518, "loc": { "start": { "line": 73, @@ -52976,8 +53213,8 @@ "binop": null, "updateContext": null }, - "start": 2497, - "end": 2498, + "start": 2518, + "end": 2519, "loc": { "start": { "line": 73, @@ -53002,8 +53239,8 @@ "binop": null }, "value": "id", - "start": 2498, - "end": 2500, + "start": 2519, + "end": 2521, "loc": { "start": { "line": 73, @@ -53028,8 +53265,8 @@ "binop": null, "updateContext": null }, - "start": 2500, - "end": 2501, + "start": 2521, + "end": 2522, "loc": { "start": { "line": 73, @@ -53056,8 +53293,8 @@ "updateContext": null }, "value": "if", - "start": 2523, - "end": 2525, + "start": 2544, + "end": 2546, "loc": { "start": { "line": 75, @@ -53081,8 +53318,8 @@ "postfix": false, "binop": null }, - "start": 2526, - "end": 2527, + "start": 2547, + "end": 2548, "loc": { "start": { "line": 75, @@ -53109,8 +53346,8 @@ "updateContext": null }, "value": "this", - "start": 2527, - "end": 2531, + "start": 2548, + "end": 2552, "loc": { "start": { "line": 75, @@ -53135,8 +53372,8 @@ "binop": null, "updateContext": null }, - "start": 2531, - "end": 2532, + "start": 2552, + "end": 2553, "loc": { "start": { "line": 75, @@ -53161,8 +53398,8 @@ "binop": null }, "value": "_lastPickedEntityId", - "start": 2532, - "end": 2551, + "start": 2553, + "end": 2572, "loc": { "start": { "line": 75, @@ -53188,8 +53425,8 @@ "updateContext": null }, "value": "!==", - "start": 2552, - "end": 2555, + "start": 2573, + "end": 2576, "loc": { "start": { "line": 75, @@ -53214,8 +53451,8 @@ "binop": null }, "value": "pickedEntityId", - "start": 2556, - "end": 2570, + "start": 2577, + "end": 2591, "loc": { "start": { "line": 75, @@ -53239,8 +53476,8 @@ "postfix": false, "binop": null }, - "start": 2570, - "end": 2571, + "start": 2591, + "end": 2592, "loc": { "start": { "line": 75, @@ -53264,8 +53501,8 @@ "postfix": false, "binop": null }, - "start": 2572, - "end": 2573, + "start": 2593, + "end": 2594, "loc": { "start": { "line": 75, @@ -53292,8 +53529,8 @@ "updateContext": null }, "value": "if", - "start": 2599, - "end": 2601, + "start": 2620, + "end": 2622, "loc": { "start": { "line": 77, @@ -53317,8 +53554,8 @@ "postfix": false, "binop": null }, - "start": 2602, - "end": 2603, + "start": 2623, + "end": 2624, "loc": { "start": { "line": 77, @@ -53345,8 +53582,8 @@ "updateContext": null }, "value": "this", - "start": 2603, - "end": 2607, + "start": 2624, + "end": 2628, "loc": { "start": { "line": 77, @@ -53371,8 +53608,8 @@ "binop": null, "updateContext": null }, - "start": 2607, - "end": 2608, + "start": 2628, + "end": 2629, "loc": { "start": { "line": 77, @@ -53397,8 +53634,8 @@ "binop": null }, "value": "_lastPickedEntityId", - "start": 2608, - "end": 2627, + "start": 2629, + "end": 2648, "loc": { "start": { "line": 77, @@ -53424,8 +53661,8 @@ "updateContext": null }, "value": "!==", - "start": 2628, - "end": 2631, + "start": 2649, + "end": 2652, "loc": { "start": { "line": 77, @@ -53450,8 +53687,8 @@ "binop": null }, "value": "undefined", - "start": 2632, - "end": 2641, + "start": 2653, + "end": 2662, "loc": { "start": { "line": 77, @@ -53475,8 +53712,8 @@ "postfix": false, "binop": null }, - "start": 2641, - "end": 2642, + "start": 2662, + "end": 2663, "loc": { "start": { "line": 77, @@ -53500,8 +53737,8 @@ "postfix": false, "binop": null }, - "start": 2643, - "end": 2644, + "start": 2664, + "end": 2665, "loc": { "start": { "line": 77, @@ -53526,8 +53763,8 @@ "binop": null }, "value": "cameraControl", - "start": 2674, - "end": 2687, + "start": 2695, + "end": 2708, "loc": { "start": { "line": 79, @@ -53552,8 +53789,8 @@ "binop": null, "updateContext": null }, - "start": 2687, - "end": 2688, + "start": 2708, + "end": 2709, "loc": { "start": { "line": 79, @@ -53578,8 +53815,8 @@ "binop": null }, "value": "fire", - "start": 2688, - "end": 2692, + "start": 2709, + "end": 2713, "loc": { "start": { "line": 79, @@ -53603,8 +53840,8 @@ "postfix": false, "binop": null }, - "start": 2692, - "end": 2693, + "start": 2713, + "end": 2714, "loc": { "start": { "line": 79, @@ -53630,8 +53867,8 @@ "updateContext": null }, "value": "hoverOut", - "start": 2693, - "end": 2703, + "start": 2714, + "end": 2724, "loc": { "start": { "line": 79, @@ -53656,8 +53893,8 @@ "binop": null, "updateContext": null }, - "start": 2703, - "end": 2704, + "start": 2724, + "end": 2725, "loc": { "start": { "line": 79, @@ -53681,8 +53918,8 @@ "postfix": false, "binop": null }, - "start": 2705, - "end": 2706, + "start": 2726, + "end": 2727, "loc": { "start": { "line": 79, @@ -53697,8 +53934,8 @@ { "type": "CommentLine", "value": " Hovered off an entity", - "start": 2707, - "end": 2731, + "start": 2728, + "end": 2752, "loc": { "start": { "line": 79, @@ -53723,8 +53960,8 @@ "binop": null }, "value": "entity", - "start": 2764, - "end": 2770, + "start": 2785, + "end": 2791, "loc": { "start": { "line": 80, @@ -53749,8 +53986,8 @@ "binop": null, "updateContext": null }, - "start": 2770, - "end": 2771, + "start": 2791, + "end": 2792, "loc": { "start": { "line": 80, @@ -53775,8 +54012,8 @@ "binop": null }, "value": "scene", - "start": 2772, - "end": 2777, + "start": 2793, + "end": 2798, "loc": { "start": { "line": 80, @@ -53801,8 +54038,8 @@ "binop": null, "updateContext": null }, - "start": 2777, - "end": 2778, + "start": 2798, + "end": 2799, "loc": { "start": { "line": 80, @@ -53827,8 +54064,8 @@ "binop": null }, "value": "objects", - "start": 2778, - "end": 2785, + "start": 2799, + "end": 2806, "loc": { "start": { "line": 80, @@ -53853,8 +54090,8 @@ "binop": null, "updateContext": null }, - "start": 2785, - "end": 2786, + "start": 2806, + "end": 2807, "loc": { "start": { "line": 80, @@ -53881,8 +54118,8 @@ "updateContext": null }, "value": "this", - "start": 2786, - "end": 2790, + "start": 2807, + "end": 2811, "loc": { "start": { "line": 80, @@ -53907,8 +54144,8 @@ "binop": null, "updateContext": null }, - "start": 2790, - "end": 2791, + "start": 2811, + "end": 2812, "loc": { "start": { "line": 80, @@ -53933,8 +54170,8 @@ "binop": null }, "value": "_lastPickedEntityId", - "start": 2791, - "end": 2810, + "start": 2812, + "end": 2831, "loc": { "start": { "line": 80, @@ -53959,8 +54196,8 @@ "binop": null, "updateContext": null }, - "start": 2810, - "end": 2811, + "start": 2831, + "end": 2832, "loc": { "start": { "line": 80, @@ -53984,8 +54221,8 @@ "postfix": false, "binop": null }, - "start": 2840, - "end": 2841, + "start": 2861, + "end": 2862, "loc": { "start": { "line": 81, @@ -54010,8 +54247,8 @@ "binop": null, "updateContext": null }, - "start": 2841, - "end": 2842, + "start": 2862, + "end": 2863, "loc": { "start": { "line": 81, @@ -54038,8 +54275,8 @@ "updateContext": null }, "value": "true", - "start": 2843, - "end": 2847, + "start": 2864, + "end": 2868, "loc": { "start": { "line": 81, @@ -54063,8 +54300,8 @@ "postfix": false, "binop": null }, - "start": 2847, - "end": 2848, + "start": 2868, + "end": 2869, "loc": { "start": { "line": 81, @@ -54089,8 +54326,8 @@ "binop": null, "updateContext": null }, - "start": 2848, - "end": 2849, + "start": 2869, + "end": 2870, "loc": { "start": { "line": 81, @@ -54114,8 +54351,8 @@ "postfix": false, "binop": null }, - "start": 2874, - "end": 2875, + "start": 2895, + "end": 2896, "loc": { "start": { "line": 82, @@ -54140,8 +54377,8 @@ "binop": null }, "value": "cameraControl", - "start": 2901, - "end": 2914, + "start": 2922, + "end": 2935, "loc": { "start": { "line": 84, @@ -54166,8 +54403,8 @@ "binop": null, "updateContext": null }, - "start": 2914, - "end": 2915, + "start": 2935, + "end": 2936, "loc": { "start": { "line": 84, @@ -54192,8 +54429,8 @@ "binop": null }, "value": "fire", - "start": 2915, - "end": 2919, + "start": 2936, + "end": 2940, "loc": { "start": { "line": 84, @@ -54217,8 +54454,8 @@ "postfix": false, "binop": null }, - "start": 2919, - "end": 2920, + "start": 2940, + "end": 2941, "loc": { "start": { "line": 84, @@ -54244,8 +54481,8 @@ "updateContext": null }, "value": "hoverEnter", - "start": 2920, - "end": 2932, + "start": 2941, + "end": 2953, "loc": { "start": { "line": 84, @@ -54270,8 +54507,8 @@ "binop": null, "updateContext": null }, - "start": 2932, - "end": 2933, + "start": 2953, + "end": 2954, "loc": { "start": { "line": 84, @@ -54296,8 +54533,8 @@ "binop": null }, "value": "pickController", - "start": 2934, - "end": 2948, + "start": 2955, + "end": 2969, "loc": { "start": { "line": 84, @@ -54322,8 +54559,8 @@ "binop": null, "updateContext": null }, - "start": 2948, - "end": 2949, + "start": 2969, + "end": 2970, "loc": { "start": { "line": 84, @@ -54348,8 +54585,8 @@ "binop": null }, "value": "pickResult", - "start": 2949, - "end": 2959, + "start": 2970, + "end": 2980, "loc": { "start": { "line": 84, @@ -54374,8 +54611,8 @@ "binop": null, "updateContext": null }, - "start": 2959, - "end": 2960, + "start": 2980, + "end": 2981, "loc": { "start": { "line": 84, @@ -54402,8 +54639,8 @@ "updateContext": null }, "value": "true", - "start": 2961, - "end": 2965, + "start": 2982, + "end": 2986, "loc": { "start": { "line": 84, @@ -54427,8 +54664,8 @@ "postfix": false, "binop": null }, - "start": 2965, - "end": 2966, + "start": 2986, + "end": 2987, "loc": { "start": { "line": 84, @@ -54453,8 +54690,8 @@ "binop": null, "updateContext": null }, - "start": 2966, - "end": 2967, + "start": 2987, + "end": 2988, "loc": { "start": { "line": 84, @@ -54469,8 +54706,8 @@ { "type": "CommentLine", "value": " Hovering over a new entity", - "start": 2968, - "end": 2997, + "start": 2989, + "end": 3018, "loc": { "start": { "line": 84, @@ -54497,8 +54734,8 @@ "updateContext": null }, "value": "this", - "start": 3023, - "end": 3027, + "start": 3044, + "end": 3048, "loc": { "start": { "line": 86, @@ -54523,8 +54760,8 @@ "binop": null, "updateContext": null }, - "start": 3027, - "end": 3028, + "start": 3048, + "end": 3049, "loc": { "start": { "line": 86, @@ -54549,8 +54786,8 @@ "binop": null }, "value": "_lastPickedEntityId", - "start": 3028, - "end": 3047, + "start": 3049, + "end": 3068, "loc": { "start": { "line": 86, @@ -54576,8 +54813,8 @@ "updateContext": null }, "value": "=", - "start": 3048, - "end": 3049, + "start": 3069, + "end": 3070, "loc": { "start": { "line": 86, @@ -54602,8 +54839,8 @@ "binop": null }, "value": "pickedEntityId", - "start": 3050, - "end": 3064, + "start": 3071, + "end": 3085, "loc": { "start": { "line": 86, @@ -54628,8 +54865,8 @@ "binop": null, "updateContext": null }, - "start": 3064, - "end": 3065, + "start": 3085, + "end": 3086, "loc": { "start": { "line": 86, @@ -54653,8 +54890,8 @@ "postfix": false, "binop": null }, - "start": 3086, - "end": 3087, + "start": 3107, + "end": 3108, "loc": { "start": { "line": 87, @@ -54679,8 +54916,8 @@ "binop": null }, "value": "cameraControl", - "start": 3109, - "end": 3122, + "start": 3130, + "end": 3143, "loc": { "start": { "line": 89, @@ -54705,8 +54942,8 @@ "binop": null, "updateContext": null }, - "start": 3122, - "end": 3123, + "start": 3143, + "end": 3144, "loc": { "start": { "line": 89, @@ -54731,8 +54968,8 @@ "binop": null }, "value": "fire", - "start": 3123, - "end": 3127, + "start": 3144, + "end": 3148, "loc": { "start": { "line": 89, @@ -54756,8 +54993,8 @@ "postfix": false, "binop": null }, - "start": 3127, - "end": 3128, + "start": 3148, + "end": 3149, "loc": { "start": { "line": 89, @@ -54783,8 +55020,8 @@ "updateContext": null }, "value": "hover", - "start": 3128, - "end": 3135, + "start": 3149, + "end": 3156, "loc": { "start": { "line": 89, @@ -54809,8 +55046,8 @@ "binop": null, "updateContext": null }, - "start": 3135, - "end": 3136, + "start": 3156, + "end": 3157, "loc": { "start": { "line": 89, @@ -54835,8 +55072,8 @@ "binop": null }, "value": "pickController", - "start": 3137, - "end": 3151, + "start": 3158, + "end": 3172, "loc": { "start": { "line": 89, @@ -54861,8 +55098,8 @@ "binop": null, "updateContext": null }, - "start": 3151, - "end": 3152, + "start": 3172, + "end": 3173, "loc": { "start": { "line": 89, @@ -54887,8 +55124,8 @@ "binop": null }, "value": "pickResult", - "start": 3152, - "end": 3162, + "start": 3173, + "end": 3183, "loc": { "start": { "line": 89, @@ -54913,8 +55150,8 @@ "binop": null, "updateContext": null }, - "start": 3162, - "end": 3163, + "start": 3183, + "end": 3184, "loc": { "start": { "line": 89, @@ -54941,8 +55178,8 @@ "updateContext": null }, "value": "true", - "start": 3164, - "end": 3168, + "start": 3185, + "end": 3189, "loc": { "start": { "line": 89, @@ -54966,8 +55203,8 @@ "postfix": false, "binop": null }, - "start": 3168, - "end": 3169, + "start": 3189, + "end": 3190, "loc": { "start": { "line": 89, @@ -54992,8 +55229,8 @@ "binop": null, "updateContext": null }, - "start": 3169, - "end": 3170, + "start": 3190, + "end": 3191, "loc": { "start": { "line": 89, @@ -55020,8 +55257,8 @@ "updateContext": null }, "value": "if", - "start": 3192, - "end": 3194, + "start": 3213, + "end": 3215, "loc": { "start": { "line": 91, @@ -55045,8 +55282,8 @@ "postfix": false, "binop": null }, - "start": 3195, - "end": 3196, + "start": 3216, + "end": 3217, "loc": { "start": { "line": 91, @@ -55071,8 +55308,8 @@ "binop": null }, "value": "pickController", - "start": 3196, - "end": 3210, + "start": 3217, + "end": 3231, "loc": { "start": { "line": 91, @@ -55097,8 +55334,8 @@ "binop": null, "updateContext": null }, - "start": 3210, - "end": 3211, + "start": 3231, + "end": 3232, "loc": { "start": { "line": 91, @@ -55123,8 +55360,8 @@ "binop": null }, "value": "pickResult", - "start": 3211, - "end": 3221, + "start": 3232, + "end": 3242, "loc": { "start": { "line": 91, @@ -55149,8 +55386,8 @@ "binop": null, "updateContext": null }, - "start": 3221, - "end": 3222, + "start": 3242, + "end": 3243, "loc": { "start": { "line": 91, @@ -55175,8 +55412,8 @@ "binop": null }, "value": "worldPos", - "start": 3222, - "end": 3230, + "start": 3243, + "end": 3251, "loc": { "start": { "line": 91, @@ -55200,8 +55437,8 @@ "postfix": false, "binop": null }, - "start": 3230, - "end": 3231, + "start": 3251, + "end": 3252, "loc": { "start": { "line": 91, @@ -55225,8 +55462,8 @@ "postfix": false, "binop": null }, - "start": 3232, - "end": 3233, + "start": 3253, + "end": 3254, "loc": { "start": { "line": 91, @@ -55241,8 +55478,8 @@ { "type": "CommentLine", "value": " Hovering the surface of an entity", - "start": 3234, - "end": 3270, + "start": 3255, + "end": 3291, "loc": { "start": { "line": 91, @@ -55267,8 +55504,8 @@ "binop": null }, "value": "cameraControl", - "start": 3295, - "end": 3308, + "start": 3316, + "end": 3329, "loc": { "start": { "line": 92, @@ -55293,8 +55530,8 @@ "binop": null, "updateContext": null }, - "start": 3308, - "end": 3309, + "start": 3329, + "end": 3330, "loc": { "start": { "line": 92, @@ -55319,8 +55556,8 @@ "binop": null }, "value": "fire", - "start": 3309, - "end": 3313, + "start": 3330, + "end": 3334, "loc": { "start": { "line": 92, @@ -55344,8 +55581,8 @@ "postfix": false, "binop": null }, - "start": 3313, - "end": 3314, + "start": 3334, + "end": 3335, "loc": { "start": { "line": 92, @@ -55371,8 +55608,8 @@ "updateContext": null }, "value": "hoverSurface", - "start": 3314, - "end": 3328, + "start": 3335, + "end": 3349, "loc": { "start": { "line": 92, @@ -55397,8 +55634,8 @@ "binop": null, "updateContext": null }, - "start": 3328, - "end": 3329, + "start": 3349, + "end": 3350, "loc": { "start": { "line": 92, @@ -55423,8 +55660,8 @@ "binop": null }, "value": "pickController", - "start": 3330, - "end": 3344, + "start": 3351, + "end": 3365, "loc": { "start": { "line": 92, @@ -55449,8 +55686,8 @@ "binop": null, "updateContext": null }, - "start": 3344, - "end": 3345, + "start": 3365, + "end": 3366, "loc": { "start": { "line": 92, @@ -55475,8 +55712,8 @@ "binop": null }, "value": "pickResult", - "start": 3345, - "end": 3355, + "start": 3366, + "end": 3376, "loc": { "start": { "line": 92, @@ -55501,8 +55738,8 @@ "binop": null, "updateContext": null }, - "start": 3355, - "end": 3356, + "start": 3376, + "end": 3377, "loc": { "start": { "line": 92, @@ -55529,8 +55766,8 @@ "updateContext": null }, "value": "true", - "start": 3357, - "end": 3361, + "start": 3378, + "end": 3382, "loc": { "start": { "line": 92, @@ -55554,8 +55791,8 @@ "postfix": false, "binop": null }, - "start": 3361, - "end": 3362, + "start": 3382, + "end": 3383, "loc": { "start": { "line": 92, @@ -55580,8 +55817,8 @@ "binop": null, "updateContext": null }, - "start": 3362, - "end": 3363, + "start": 3383, + "end": 3384, "loc": { "start": { "line": 92, @@ -55605,8 +55842,8 @@ "postfix": false, "binop": null }, - "start": 3384, - "end": 3385, + "start": 3405, + "end": 3406, "loc": { "start": { "line": 93, @@ -55630,8 +55867,8 @@ "postfix": false, "binop": null }, - "start": 3403, - "end": 3404, + "start": 3424, + "end": 3425, "loc": { "start": { "line": 95, @@ -55658,8 +55895,8 @@ "updateContext": null }, "value": "else", - "start": 3405, - "end": 3409, + "start": 3426, + "end": 3430, "loc": { "start": { "line": 95, @@ -55683,8 +55920,8 @@ "postfix": false, "binop": null }, - "start": 3410, - "end": 3411, + "start": 3431, + "end": 3432, "loc": { "start": { "line": 95, @@ -55711,8 +55948,8 @@ "updateContext": null }, "value": "if", - "start": 3433, - "end": 3435, + "start": 3454, + "end": 3456, "loc": { "start": { "line": 97, @@ -55736,8 +55973,8 @@ "postfix": false, "binop": null }, - "start": 3436, - "end": 3437, + "start": 3457, + "end": 3458, "loc": { "start": { "line": 97, @@ -55764,8 +56001,8 @@ "updateContext": null }, "value": "this", - "start": 3437, - "end": 3441, + "start": 3458, + "end": 3462, "loc": { "start": { "line": 97, @@ -55790,8 +56027,8 @@ "binop": null, "updateContext": null }, - "start": 3441, - "end": 3442, + "start": 3462, + "end": 3463, "loc": { "start": { "line": 97, @@ -55816,8 +56053,8 @@ "binop": null }, "value": "_lastPickedEntityId", - "start": 3442, - "end": 3461, + "start": 3463, + "end": 3482, "loc": { "start": { "line": 97, @@ -55843,8 +56080,8 @@ "updateContext": null }, "value": "!==", - "start": 3462, - "end": 3465, + "start": 3483, + "end": 3486, "loc": { "start": { "line": 97, @@ -55869,8 +56106,8 @@ "binop": null }, "value": "undefined", - "start": 3466, - "end": 3475, + "start": 3487, + "end": 3496, "loc": { "start": { "line": 97, @@ -55894,8 +56131,8 @@ "postfix": false, "binop": null }, - "start": 3475, - "end": 3476, + "start": 3496, + "end": 3497, "loc": { "start": { "line": 97, @@ -55919,8 +56156,8 @@ "postfix": false, "binop": null }, - "start": 3477, - "end": 3478, + "start": 3498, + "end": 3499, "loc": { "start": { "line": 97, @@ -55945,8 +56182,8 @@ "binop": null }, "value": "cameraControl", - "start": 3504, - "end": 3517, + "start": 3525, + "end": 3538, "loc": { "start": { "line": 99, @@ -55971,8 +56208,8 @@ "binop": null, "updateContext": null }, - "start": 3517, - "end": 3518, + "start": 3538, + "end": 3539, "loc": { "start": { "line": 99, @@ -55997,8 +56234,8 @@ "binop": null }, "value": "fire", - "start": 3518, - "end": 3522, + "start": 3539, + "end": 3543, "loc": { "start": { "line": 99, @@ -56022,8 +56259,8 @@ "postfix": false, "binop": null }, - "start": 3522, - "end": 3523, + "start": 3543, + "end": 3544, "loc": { "start": { "line": 99, @@ -56049,8 +56286,8 @@ "updateContext": null }, "value": "hoverOut", - "start": 3523, - "end": 3533, + "start": 3544, + "end": 3554, "loc": { "start": { "line": 99, @@ -56075,8 +56312,8 @@ "binop": null, "updateContext": null }, - "start": 3533, - "end": 3534, + "start": 3554, + "end": 3555, "loc": { "start": { "line": 99, @@ -56100,8 +56337,8 @@ "postfix": false, "binop": null }, - "start": 3535, - "end": 3536, + "start": 3556, + "end": 3557, "loc": { "start": { "line": 99, @@ -56116,8 +56353,8 @@ { "type": "CommentLine", "value": " Hovered off an entity", - "start": 3537, - "end": 3561, + "start": 3558, + "end": 3582, "loc": { "start": { "line": 99, @@ -56142,8 +56379,8 @@ "binop": null }, "value": "entity", - "start": 3590, - "end": 3596, + "start": 3611, + "end": 3617, "loc": { "start": { "line": 100, @@ -56168,8 +56405,8 @@ "binop": null, "updateContext": null }, - "start": 3596, - "end": 3597, + "start": 3617, + "end": 3618, "loc": { "start": { "line": 100, @@ -56194,8 +56431,8 @@ "binop": null }, "value": "scene", - "start": 3598, - "end": 3603, + "start": 3619, + "end": 3624, "loc": { "start": { "line": 100, @@ -56220,8 +56457,8 @@ "binop": null, "updateContext": null }, - "start": 3603, - "end": 3604, + "start": 3624, + "end": 3625, "loc": { "start": { "line": 100, @@ -56246,8 +56483,8 @@ "binop": null }, "value": "objects", - "start": 3604, - "end": 3611, + "start": 3625, + "end": 3632, "loc": { "start": { "line": 100, @@ -56272,8 +56509,8 @@ "binop": null, "updateContext": null }, - "start": 3611, - "end": 3612, + "start": 3632, + "end": 3633, "loc": { "start": { "line": 100, @@ -56300,8 +56537,8 @@ "updateContext": null }, "value": "this", - "start": 3612, - "end": 3616, + "start": 3633, + "end": 3637, "loc": { "start": { "line": 100, @@ -56326,8 +56563,8 @@ "binop": null, "updateContext": null }, - "start": 3616, - "end": 3617, + "start": 3637, + "end": 3638, "loc": { "start": { "line": 100, @@ -56352,8 +56589,8 @@ "binop": null }, "value": "_lastPickedEntityId", - "start": 3617, - "end": 3636, + "start": 3638, + "end": 3657, "loc": { "start": { "line": 100, @@ -56378,8 +56615,8 @@ "binop": null, "updateContext": null }, - "start": 3636, - "end": 3637, + "start": 3657, + "end": 3658, "loc": { "start": { "line": 100, @@ -56403,8 +56640,8 @@ "postfix": false, "binop": null }, - "start": 3662, - "end": 3663, + "start": 3683, + "end": 3684, "loc": { "start": { "line": 101, @@ -56429,8 +56666,8 @@ "binop": null, "updateContext": null }, - "start": 3663, - "end": 3664, + "start": 3684, + "end": 3685, "loc": { "start": { "line": 101, @@ -56457,8 +56694,8 @@ "updateContext": null }, "value": "true", - "start": 3665, - "end": 3669, + "start": 3686, + "end": 3690, "loc": { "start": { "line": 101, @@ -56482,8 +56719,8 @@ "postfix": false, "binop": null }, - "start": 3669, - "end": 3670, + "start": 3690, + "end": 3691, "loc": { "start": { "line": 101, @@ -56508,8 +56745,8 @@ "binop": null, "updateContext": null }, - "start": 3670, - "end": 3671, + "start": 3691, + "end": 3692, "loc": { "start": { "line": 101, @@ -56536,8 +56773,8 @@ "updateContext": null }, "value": "this", - "start": 3697, - "end": 3701, + "start": 3718, + "end": 3722, "loc": { "start": { "line": 103, @@ -56562,8 +56799,8 @@ "binop": null, "updateContext": null }, - "start": 3701, - "end": 3702, + "start": 3722, + "end": 3723, "loc": { "start": { "line": 103, @@ -56588,8 +56825,8 @@ "binop": null }, "value": "_lastPickedEntityId", - "start": 3702, - "end": 3721, + "start": 3723, + "end": 3742, "loc": { "start": { "line": 103, @@ -56615,8 +56852,8 @@ "updateContext": null }, "value": "=", - "start": 3722, - "end": 3723, + "start": 3743, + "end": 3744, "loc": { "start": { "line": 103, @@ -56641,8 +56878,8 @@ "binop": null }, "value": "undefined", - "start": 3724, - "end": 3733, + "start": 3745, + "end": 3754, "loc": { "start": { "line": 103, @@ -56667,8 +56904,8 @@ "binop": null, "updateContext": null }, - "start": 3733, - "end": 3734, + "start": 3754, + "end": 3755, "loc": { "start": { "line": 103, @@ -56692,8 +56929,8 @@ "postfix": false, "binop": null }, - "start": 3755, - "end": 3756, + "start": 3776, + "end": 3777, "loc": { "start": { "line": 104, @@ -56718,8 +56955,8 @@ "binop": null }, "value": "cameraControl", - "start": 3778, - "end": 3791, + "start": 3799, + "end": 3812, "loc": { "start": { "line": 106, @@ -56744,8 +56981,8 @@ "binop": null, "updateContext": null }, - "start": 3791, - "end": 3792, + "start": 3812, + "end": 3813, "loc": { "start": { "line": 106, @@ -56770,8 +57007,8 @@ "binop": null }, "value": "fire", - "start": 3792, - "end": 3796, + "start": 3813, + "end": 3817, "loc": { "start": { "line": 106, @@ -56795,8 +57032,8 @@ "postfix": false, "binop": null }, - "start": 3796, - "end": 3797, + "start": 3817, + "end": 3818, "loc": { "start": { "line": 106, @@ -56822,8 +57059,8 @@ "updateContext": null }, "value": "hoverOff", - "start": 3797, - "end": 3807, + "start": 3818, + "end": 3828, "loc": { "start": { "line": 106, @@ -56848,8 +57085,8 @@ "binop": null, "updateContext": null }, - "start": 3807, - "end": 3808, + "start": 3828, + "end": 3829, "loc": { "start": { "line": 106, @@ -56873,8 +57110,8 @@ "postfix": false, "binop": null }, - "start": 3809, - "end": 3810, + "start": 3830, + "end": 3831, "loc": { "start": { "line": 106, @@ -56889,8 +57126,8 @@ { "type": "CommentLine", "value": " Not hovering on any entity", - "start": 3811, - "end": 3840, + "start": 3832, + "end": 3861, "loc": { "start": { "line": 106, @@ -56915,8 +57152,8 @@ "binop": null }, "value": "canvasPos", - "start": 3865, - "end": 3874, + "start": 3886, + "end": 3895, "loc": { "start": { "line": 107, @@ -56941,8 +57178,8 @@ "binop": null, "updateContext": null }, - "start": 3874, - "end": 3875, + "start": 3895, + "end": 3896, "loc": { "start": { "line": 107, @@ -56967,8 +57204,8 @@ "binop": null }, "value": "pickController", - "start": 3876, - "end": 3890, + "start": 3897, + "end": 3911, "loc": { "start": { "line": 107, @@ -56993,8 +57230,8 @@ "binop": null, "updateContext": null }, - "start": 3890, - "end": 3891, + "start": 3911, + "end": 3912, "loc": { "start": { "line": 107, @@ -57019,8 +57256,8 @@ "binop": null }, "value": "pickCursorPos", - "start": 3891, - "end": 3904, + "start": 3912, + "end": 3925, "loc": { "start": { "line": 107, @@ -57044,8 +57281,8 @@ "postfix": false, "binop": null }, - "start": 3925, - "end": 3926, + "start": 3946, + "end": 3947, "loc": { "start": { "line": 108, @@ -57070,8 +57307,8 @@ "binop": null, "updateContext": null }, - "start": 3926, - "end": 3927, + "start": 3947, + "end": 3948, "loc": { "start": { "line": 108, @@ -57098,8 +57335,8 @@ "updateContext": null }, "value": "true", - "start": 3928, - "end": 3932, + "start": 3949, + "end": 3953, "loc": { "start": { "line": 108, @@ -57123,8 +57360,8 @@ "postfix": false, "binop": null }, - "start": 3932, - "end": 3933, + "start": 3953, + "end": 3954, "loc": { "start": { "line": 108, @@ -57149,8 +57386,8 @@ "binop": null, "updateContext": null }, - "start": 3933, - "end": 3934, + "start": 3954, + "end": 3955, "loc": { "start": { "line": 108, @@ -57174,8 +57411,8 @@ "postfix": false, "binop": null }, - "start": 3951, - "end": 3952, + "start": 3972, + "end": 3973, "loc": { "start": { "line": 109, @@ -57199,8 +57436,8 @@ "postfix": false, "binop": null }, - "start": 3965, - "end": 3966, + "start": 3986, + "end": 3987, "loc": { "start": { "line": 110, @@ -57224,8 +57461,8 @@ "postfix": false, "binop": null }, - "start": 3975, - "end": 3976, + "start": 3996, + "end": 3997, "loc": { "start": { "line": 111, @@ -57249,8 +57486,8 @@ "postfix": false, "binop": null }, - "start": 3976, - "end": 3977, + "start": 3997, + "end": 3998, "loc": { "start": { "line": 111, @@ -57275,8 +57512,8 @@ "binop": null, "updateContext": null }, - "start": 3977, - "end": 3978, + "start": 3998, + "end": 3999, "loc": { "start": { "line": 111, @@ -57301,8 +57538,8 @@ "binop": null }, "value": "canvas", - "start": 3988, - "end": 3994, + "start": 4009, + "end": 4015, "loc": { "start": { "line": 113, @@ -57327,8 +57564,8 @@ "binop": null, "updateContext": null }, - "start": 3994, - "end": 3995, + "start": 4015, + "end": 4016, "loc": { "start": { "line": 113, @@ -57353,8 +57590,8 @@ "binop": null }, "value": "addEventListener", - "start": 3995, - "end": 4011, + "start": 4016, + "end": 4032, "loc": { "start": { "line": 113, @@ -57378,8 +57615,8 @@ "postfix": false, "binop": null }, - "start": 4011, - "end": 4012, + "start": 4032, + "end": 4033, "loc": { "start": { "line": 113, @@ -57405,8 +57642,8 @@ "updateContext": null }, "value": "mousedown", - "start": 4012, - "end": 4023, + "start": 4033, + "end": 4044, "loc": { "start": { "line": 113, @@ -57431,8 +57668,8 @@ "binop": null, "updateContext": null }, - "start": 4023, - "end": 4024, + "start": 4044, + "end": 4045, "loc": { "start": { "line": 113, @@ -57459,8 +57696,8 @@ "updateContext": null }, "value": "this", - "start": 4025, - "end": 4029, + "start": 4046, + "end": 4050, "loc": { "start": { "line": 113, @@ -57485,8 +57722,8 @@ "binop": null, "updateContext": null }, - "start": 4029, - "end": 4030, + "start": 4050, + "end": 4051, "loc": { "start": { "line": 113, @@ -57511,8 +57748,8 @@ "binop": null }, "value": "_canvasMouseDownHandler", - "start": 4030, - "end": 4053, + "start": 4051, + "end": 4074, "loc": { "start": { "line": 113, @@ -57538,8 +57775,8 @@ "updateContext": null }, "value": "=", - "start": 4054, - "end": 4055, + "start": 4075, + "end": 4076, "loc": { "start": { "line": 113, @@ -57563,8 +57800,8 @@ "postfix": false, "binop": null }, - "start": 4056, - "end": 4057, + "start": 4077, + "end": 4078, "loc": { "start": { "line": 113, @@ -57589,8 +57826,8 @@ "binop": null }, "value": "e", - "start": 4057, - "end": 4058, + "start": 4078, + "end": 4079, "loc": { "start": { "line": 113, @@ -57614,8 +57851,8 @@ "postfix": false, "binop": null }, - "start": 4058, - "end": 4059, + "start": 4079, + "end": 4080, "loc": { "start": { "line": 113, @@ -57640,8 +57877,8 @@ "binop": null, "updateContext": null }, - "start": 4060, - "end": 4062, + "start": 4081, + "end": 4083, "loc": { "start": { "line": 113, @@ -57665,8 +57902,8 @@ "postfix": false, "binop": null }, - "start": 4063, - "end": 4064, + "start": 4084, + "end": 4085, "loc": { "start": { "line": 113, @@ -57693,8 +57930,8 @@ "updateContext": null }, "value": "if", - "start": 4078, - "end": 4080, + "start": 4099, + "end": 4101, "loc": { "start": { "line": 115, @@ -57718,8 +57955,8 @@ "postfix": false, "binop": null }, - "start": 4081, - "end": 4082, + "start": 4102, + "end": 4103, "loc": { "start": { "line": 115, @@ -57744,8 +57981,8 @@ "binop": null }, "value": "e", - "start": 4082, - "end": 4083, + "start": 4103, + "end": 4104, "loc": { "start": { "line": 115, @@ -57770,8 +58007,8 @@ "binop": null, "updateContext": null }, - "start": 4083, - "end": 4084, + "start": 4104, + "end": 4105, "loc": { "start": { "line": 115, @@ -57796,8 +58033,8 @@ "binop": null }, "value": "which", - "start": 4084, - "end": 4089, + "start": 4105, + "end": 4110, "loc": { "start": { "line": 115, @@ -57823,8 +58060,8 @@ "updateContext": null }, "value": "===", - "start": 4090, - "end": 4093, + "start": 4111, + "end": 4114, "loc": { "start": { "line": 115, @@ -57850,8 +58087,8 @@ "updateContext": null }, "value": 1, - "start": 4094, - "end": 4095, + "start": 4115, + "end": 4116, "loc": { "start": { "line": 115, @@ -57875,8 +58112,8 @@ "postfix": false, "binop": null }, - "start": 4095, - "end": 4096, + "start": 4116, + "end": 4117, "loc": { "start": { "line": 115, @@ -57900,8 +58137,8 @@ "postfix": false, "binop": null }, - "start": 4097, - "end": 4098, + "start": 4118, + "end": 4119, "loc": { "start": { "line": 115, @@ -57926,8 +58163,8 @@ "binop": null }, "value": "leftDown", - "start": 4115, - "end": 4123, + "start": 4136, + "end": 4144, "loc": { "start": { "line": 116, @@ -57953,8 +58190,8 @@ "updateContext": null }, "value": "=", - "start": 4124, - "end": 4125, + "start": 4145, + "end": 4146, "loc": { "start": { "line": 116, @@ -57981,8 +58218,8 @@ "updateContext": null }, "value": "true", - "start": 4126, - "end": 4130, + "start": 4147, + "end": 4151, "loc": { "start": { "line": 116, @@ -58007,8 +58244,8 @@ "binop": null, "updateContext": null }, - "start": 4130, - "end": 4131, + "start": 4151, + "end": 4152, "loc": { "start": { "line": 116, @@ -58032,8 +58269,8 @@ "postfix": false, "binop": null }, - "start": 4144, - "end": 4145, + "start": 4165, + "end": 4166, "loc": { "start": { "line": 117, @@ -58060,8 +58297,8 @@ "updateContext": null }, "value": "if", - "start": 4159, - "end": 4161, + "start": 4180, + "end": 4182, "loc": { "start": { "line": 119, @@ -58085,8 +58322,8 @@ "postfix": false, "binop": null }, - "start": 4162, - "end": 4163, + "start": 4183, + "end": 4184, "loc": { "start": { "line": 119, @@ -58111,8 +58348,8 @@ "binop": null }, "value": "e", - "start": 4163, - "end": 4164, + "start": 4184, + "end": 4185, "loc": { "start": { "line": 119, @@ -58137,8 +58374,8 @@ "binop": null, "updateContext": null }, - "start": 4164, - "end": 4165, + "start": 4185, + "end": 4186, "loc": { "start": { "line": 119, @@ -58163,8 +58400,8 @@ "binop": null }, "value": "which", - "start": 4165, - "end": 4170, + "start": 4186, + "end": 4191, "loc": { "start": { "line": 119, @@ -58190,8 +58427,8 @@ "updateContext": null }, "value": "===", - "start": 4171, - "end": 4174, + "start": 4192, + "end": 4195, "loc": { "start": { "line": 119, @@ -58217,8 +58454,8 @@ "updateContext": null }, "value": 3, - "start": 4175, - "end": 4176, + "start": 4196, + "end": 4197, "loc": { "start": { "line": 119, @@ -58242,8 +58479,8 @@ "postfix": false, "binop": null }, - "start": 4176, - "end": 4177, + "start": 4197, + "end": 4198, "loc": { "start": { "line": 119, @@ -58267,8 +58504,8 @@ "postfix": false, "binop": null }, - "start": 4178, - "end": 4179, + "start": 4199, + "end": 4200, "loc": { "start": { "line": 119, @@ -58293,8 +58530,8 @@ "binop": null }, "value": "rightDown", - "start": 4196, - "end": 4205, + "start": 4217, + "end": 4226, "loc": { "start": { "line": 120, @@ -58320,8 +58557,8 @@ "updateContext": null }, "value": "=", - "start": 4206, - "end": 4207, + "start": 4227, + "end": 4228, "loc": { "start": { "line": 120, @@ -58348,8 +58585,8 @@ "updateContext": null }, "value": "true", - "start": 4208, - "end": 4212, + "start": 4229, + "end": 4233, "loc": { "start": { "line": 120, @@ -58374,8 +58611,8 @@ "binop": null, "updateContext": null }, - "start": 4212, - "end": 4213, + "start": 4233, + "end": 4234, "loc": { "start": { "line": 120, @@ -58399,8 +58636,8 @@ "postfix": false, "binop": null }, - "start": 4226, - "end": 4227, + "start": 4247, + "end": 4248, "loc": { "start": { "line": 121, @@ -58427,8 +58664,8 @@ "updateContext": null }, "value": "const", - "start": 4241, - "end": 4246, + "start": 4262, + "end": 4267, "loc": { "start": { "line": 123, @@ -58453,8 +58690,8 @@ "binop": null }, "value": "leftButtonDown", - "start": 4247, - "end": 4261, + "start": 4268, + "end": 4282, "loc": { "start": { "line": 123, @@ -58480,8 +58717,8 @@ "updateContext": null }, "value": "=", - "start": 4262, - "end": 4263, + "start": 4283, + "end": 4284, "loc": { "start": { "line": 123, @@ -58505,8 +58742,8 @@ "postfix": false, "binop": null }, - "start": 4264, - "end": 4265, + "start": 4285, + "end": 4286, "loc": { "start": { "line": 123, @@ -58531,8 +58768,8 @@ "binop": null }, "value": "e", - "start": 4265, - "end": 4266, + "start": 4286, + "end": 4287, "loc": { "start": { "line": 123, @@ -58557,8 +58794,8 @@ "binop": null, "updateContext": null }, - "start": 4266, - "end": 4267, + "start": 4287, + "end": 4288, "loc": { "start": { "line": 123, @@ -58583,8 +58820,8 @@ "binop": null }, "value": "which", - "start": 4267, - "end": 4272, + "start": 4288, + "end": 4293, "loc": { "start": { "line": 123, @@ -58610,8 +58847,8 @@ "updateContext": null }, "value": "===", - "start": 4273, - "end": 4276, + "start": 4294, + "end": 4297, "loc": { "start": { "line": 123, @@ -58637,8 +58874,8 @@ "updateContext": null }, "value": 1, - "start": 4277, - "end": 4278, + "start": 4298, + "end": 4299, "loc": { "start": { "line": 123, @@ -58662,8 +58899,8 @@ "postfix": false, "binop": null }, - "start": 4278, - "end": 4279, + "start": 4299, + "end": 4300, "loc": { "start": { "line": 123, @@ -58688,8 +58925,8 @@ "binop": null, "updateContext": null }, - "start": 4279, - "end": 4280, + "start": 4300, + "end": 4301, "loc": { "start": { "line": 123, @@ -58716,8 +58953,8 @@ "updateContext": null }, "value": "if", - "start": 4294, - "end": 4296, + "start": 4315, + "end": 4317, "loc": { "start": { "line": 125, @@ -58741,8 +58978,8 @@ "postfix": false, "binop": null }, - "start": 4297, - "end": 4298, + "start": 4318, + "end": 4319, "loc": { "start": { "line": 125, @@ -58768,8 +59005,8 @@ "updateContext": null }, "value": "!", - "start": 4298, - "end": 4299, + "start": 4319, + "end": 4320, "loc": { "start": { "line": 125, @@ -58794,8 +59031,8 @@ "binop": null }, "value": "leftButtonDown", - "start": 4299, - "end": 4313, + "start": 4320, + "end": 4334, "loc": { "start": { "line": 125, @@ -58819,8 +59056,8 @@ "postfix": false, "binop": null }, - "start": 4313, - "end": 4314, + "start": 4334, + "end": 4335, "loc": { "start": { "line": 125, @@ -58844,8 +59081,8 @@ "postfix": false, "binop": null }, - "start": 4315, - "end": 4316, + "start": 4336, + "end": 4337, "loc": { "start": { "line": 125, @@ -58872,8 +59109,8 @@ "updateContext": null }, "value": "return", - "start": 4333, - "end": 4339, + "start": 4354, + "end": 4360, "loc": { "start": { "line": 126, @@ -58898,8 +59135,8 @@ "binop": null, "updateContext": null }, - "start": 4339, - "end": 4340, + "start": 4360, + "end": 4361, "loc": { "start": { "line": 126, @@ -58923,8 +59160,8 @@ "postfix": false, "binop": null }, - "start": 4353, - "end": 4354, + "start": 4374, + "end": 4375, "loc": { "start": { "line": 127, @@ -58951,8 +59188,8 @@ "updateContext": null }, "value": "if", - "start": 4368, - "end": 4370, + "start": 4389, + "end": 4391, "loc": { "start": { "line": 129, @@ -58976,8 +59213,8 @@ "postfix": false, "binop": null }, - "start": 4371, - "end": 4372, + "start": 4392, + "end": 4393, "loc": { "start": { "line": 129, @@ -59003,8 +59240,8 @@ "updateContext": null }, "value": "!", - "start": 4372, - "end": 4373, + "start": 4393, + "end": 4394, "loc": { "start": { "line": 129, @@ -59028,8 +59265,8 @@ "postfix": false, "binop": null }, - "start": 4373, - "end": 4374, + "start": 4394, + "end": 4395, "loc": { "start": { "line": 129, @@ -59054,8 +59291,8 @@ "binop": null }, "value": "configs", - "start": 4374, - "end": 4381, + "start": 4395, + "end": 4402, "loc": { "start": { "line": 129, @@ -59080,8 +59317,8 @@ "binop": null, "updateContext": null }, - "start": 4381, - "end": 4382, + "start": 4402, + "end": 4403, "loc": { "start": { "line": 129, @@ -59106,8 +59343,8 @@ "binop": null }, "value": "active", - "start": 4382, - "end": 4388, + "start": 4403, + "end": 4409, "loc": { "start": { "line": 129, @@ -59133,8 +59370,8 @@ "updateContext": null }, "value": "&&", - "start": 4389, - "end": 4391, + "start": 4410, + "end": 4412, "loc": { "start": { "line": 129, @@ -59159,8 +59396,8 @@ "binop": null }, "value": "configs", - "start": 4392, - "end": 4399, + "start": 4413, + "end": 4420, "loc": { "start": { "line": 129, @@ -59185,8 +59422,8 @@ "binop": null, "updateContext": null }, - "start": 4399, - "end": 4400, + "start": 4420, + "end": 4421, "loc": { "start": { "line": 129, @@ -59211,8 +59448,8 @@ "binop": null }, "value": "pointerEnabled", - "start": 4400, - "end": 4414, + "start": 4421, + "end": 4435, "loc": { "start": { "line": 129, @@ -59236,8 +59473,8 @@ "postfix": false, "binop": null }, - "start": 4414, - "end": 4415, + "start": 4435, + "end": 4436, "loc": { "start": { "line": 129, @@ -59261,8 +59498,8 @@ "postfix": false, "binop": null }, - "start": 4415, - "end": 4416, + "start": 4436, + "end": 4437, "loc": { "start": { "line": 129, @@ -59286,8 +59523,8 @@ "postfix": false, "binop": null }, - "start": 4417, - "end": 4418, + "start": 4438, + "end": 4439, "loc": { "start": { "line": 129, @@ -59314,8 +59551,8 @@ "updateContext": null }, "value": "return", - "start": 4435, - "end": 4441, + "start": 4456, + "end": 4462, "loc": { "start": { "line": 130, @@ -59340,8 +59577,8 @@ "binop": null, "updateContext": null }, - "start": 4441, - "end": 4442, + "start": 4462, + "end": 4463, "loc": { "start": { "line": 130, @@ -59365,8 +59602,8 @@ "postfix": false, "binop": null }, - "start": 4455, - "end": 4456, + "start": 4476, + "end": 4477, "loc": { "start": { "line": 131, @@ -59381,8 +59618,8 @@ { "type": "CommentLine", "value": " Left mouse button down to start pivoting", - "start": 4470, - "end": 4513, + "start": 4491, + "end": 4534, "loc": { "start": { "line": 133, @@ -59407,8 +59644,8 @@ "binop": null }, "value": "states", - "start": 4527, - "end": 4533, + "start": 4548, + "end": 4554, "loc": { "start": { "line": 135, @@ -59433,8 +59670,8 @@ "binop": null, "updateContext": null }, - "start": 4533, - "end": 4534, + "start": 4554, + "end": 4555, "loc": { "start": { "line": 135, @@ -59459,8 +59696,8 @@ "binop": null }, "value": "mouseDownClientX", - "start": 4534, - "end": 4550, + "start": 4555, + "end": 4571, "loc": { "start": { "line": 135, @@ -59486,8 +59723,8 @@ "updateContext": null }, "value": "=", - "start": 4551, - "end": 4552, + "start": 4572, + "end": 4573, "loc": { "start": { "line": 135, @@ -59512,8 +59749,8 @@ "binop": null }, "value": "e", - "start": 4553, - "end": 4554, + "start": 4574, + "end": 4575, "loc": { "start": { "line": 135, @@ -59538,8 +59775,8 @@ "binop": null, "updateContext": null }, - "start": 4554, - "end": 4555, + "start": 4575, + "end": 4576, "loc": { "start": { "line": 135, @@ -59564,8 +59801,8 @@ "binop": null }, "value": "clientX", - "start": 4555, - "end": 4562, + "start": 4576, + "end": 4583, "loc": { "start": { "line": 135, @@ -59590,8 +59827,8 @@ "binop": null, "updateContext": null }, - "start": 4562, - "end": 4563, + "start": 4583, + "end": 4584, "loc": { "start": { "line": 135, @@ -59616,8 +59853,8 @@ "binop": null }, "value": "states", - "start": 4576, - "end": 4582, + "start": 4597, + "end": 4603, "loc": { "start": { "line": 136, @@ -59642,8 +59879,8 @@ "binop": null, "updateContext": null }, - "start": 4582, - "end": 4583, + "start": 4603, + "end": 4604, "loc": { "start": { "line": 136, @@ -59668,8 +59905,8 @@ "binop": null }, "value": "mouseDownClientY", - "start": 4583, - "end": 4599, + "start": 4604, + "end": 4620, "loc": { "start": { "line": 136, @@ -59695,8 +59932,8 @@ "updateContext": null }, "value": "=", - "start": 4600, - "end": 4601, + "start": 4621, + "end": 4622, "loc": { "start": { "line": 136, @@ -59721,8 +59958,8 @@ "binop": null }, "value": "e", - "start": 4602, - "end": 4603, + "start": 4623, + "end": 4624, "loc": { "start": { "line": 136, @@ -59747,8 +59984,8 @@ "binop": null, "updateContext": null }, - "start": 4603, - "end": 4604, + "start": 4624, + "end": 4625, "loc": { "start": { "line": 136, @@ -59773,8 +60010,8 @@ "binop": null }, "value": "clientY", - "start": 4604, - "end": 4611, + "start": 4625, + "end": 4632, "loc": { "start": { "line": 136, @@ -59799,8 +60036,8 @@ "binop": null, "updateContext": null }, - "start": 4611, - "end": 4612, + "start": 4632, + "end": 4633, "loc": { "start": { "line": 136, @@ -59825,8 +60062,8 @@ "binop": null }, "value": "states", - "start": 4625, - "end": 4631, + "start": 4646, + "end": 4652, "loc": { "start": { "line": 137, @@ -59851,8 +60088,8 @@ "binop": null, "updateContext": null }, - "start": 4631, - "end": 4632, + "start": 4652, + "end": 4653, "loc": { "start": { "line": 137, @@ -59877,8 +60114,8 @@ "binop": null }, "value": "mouseDownCursorX", - "start": 4632, - "end": 4648, + "start": 4653, + "end": 4669, "loc": { "start": { "line": 137, @@ -59904,8 +60141,8 @@ "updateContext": null }, "value": "=", - "start": 4649, - "end": 4650, + "start": 4670, + "end": 4671, "loc": { "start": { "line": 137, @@ -59930,8 +60167,8 @@ "binop": null }, "value": "states", - "start": 4651, - "end": 4657, + "start": 4672, + "end": 4678, "loc": { "start": { "line": 137, @@ -59956,8 +60193,8 @@ "binop": null, "updateContext": null }, - "start": 4657, - "end": 4658, + "start": 4678, + "end": 4679, "loc": { "start": { "line": 137, @@ -59982,8 +60219,8 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 4658, - "end": 4674, + "start": 4679, + "end": 4695, "loc": { "start": { "line": 137, @@ -60008,8 +60245,8 @@ "binop": null, "updateContext": null }, - "start": 4674, - "end": 4675, + "start": 4695, + "end": 4696, "loc": { "start": { "line": 137, @@ -60035,8 +60272,8 @@ "updateContext": null }, "value": 0, - "start": 4675, - "end": 4676, + "start": 4696, + "end": 4697, "loc": { "start": { "line": 137, @@ -60061,8 +60298,8 @@ "binop": null, "updateContext": null }, - "start": 4676, - "end": 4677, + "start": 4697, + "end": 4698, "loc": { "start": { "line": 137, @@ -60087,8 +60324,8 @@ "binop": null, "updateContext": null }, - "start": 4677, - "end": 4678, + "start": 4698, + "end": 4699, "loc": { "start": { "line": 137, @@ -60113,8 +60350,8 @@ "binop": null }, "value": "states", - "start": 4691, - "end": 4697, + "start": 4712, + "end": 4718, "loc": { "start": { "line": 138, @@ -60139,8 +60376,8 @@ "binop": null, "updateContext": null }, - "start": 4697, - "end": 4698, + "start": 4718, + "end": 4719, "loc": { "start": { "line": 138, @@ -60165,8 +60402,8 @@ "binop": null }, "value": "mouseDownCursorY", - "start": 4698, - "end": 4714, + "start": 4719, + "end": 4735, "loc": { "start": { "line": 138, @@ -60192,8 +60429,8 @@ "updateContext": null }, "value": "=", - "start": 4715, - "end": 4716, + "start": 4736, + "end": 4737, "loc": { "start": { "line": 138, @@ -60218,8 +60455,8 @@ "binop": null }, "value": "states", - "start": 4717, - "end": 4723, + "start": 4738, + "end": 4744, "loc": { "start": { "line": 138, @@ -60244,8 +60481,8 @@ "binop": null, "updateContext": null }, - "start": 4723, - "end": 4724, + "start": 4744, + "end": 4745, "loc": { "start": { "line": 138, @@ -60270,8 +60507,8 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 4724, - "end": 4740, + "start": 4745, + "end": 4761, "loc": { "start": { "line": 138, @@ -60296,8 +60533,8 @@ "binop": null, "updateContext": null }, - "start": 4740, - "end": 4741, + "start": 4761, + "end": 4762, "loc": { "start": { "line": 138, @@ -60323,8 +60560,8 @@ "updateContext": null }, "value": 1, - "start": 4741, - "end": 4742, + "start": 4762, + "end": 4763, "loc": { "start": { "line": 138, @@ -60349,8 +60586,8 @@ "binop": null, "updateContext": null }, - "start": 4742, - "end": 4743, + "start": 4763, + "end": 4764, "loc": { "start": { "line": 138, @@ -60375,8 +60612,8 @@ "binop": null, "updateContext": null }, - "start": 4743, - "end": 4744, + "start": 4764, + "end": 4765, "loc": { "start": { "line": 138, @@ -60403,8 +60640,8 @@ "updateContext": null }, "value": "if", - "start": 4758, - "end": 4760, + "start": 4779, + "end": 4781, "loc": { "start": { "line": 140, @@ -60428,8 +60665,8 @@ "postfix": false, "binop": null }, - "start": 4761, - "end": 4762, + "start": 4782, + "end": 4783, "loc": { "start": { "line": 140, @@ -60453,8 +60690,8 @@ "postfix": false, "binop": null }, - "start": 4762, - "end": 4763, + "start": 4783, + "end": 4784, "loc": { "start": { "line": 140, @@ -60480,8 +60717,8 @@ "updateContext": null }, "value": "!", - "start": 4763, - "end": 4764, + "start": 4784, + "end": 4785, "loc": { "start": { "line": 140, @@ -60506,8 +60743,8 @@ "binop": null }, "value": "configs", - "start": 4764, - "end": 4771, + "start": 4785, + "end": 4792, "loc": { "start": { "line": 140, @@ -60532,8 +60769,8 @@ "binop": null, "updateContext": null }, - "start": 4771, - "end": 4772, + "start": 4792, + "end": 4793, "loc": { "start": { "line": 140, @@ -60558,8 +60795,8 @@ "binop": null }, "value": "firstPerson", - "start": 4772, - "end": 4783, + "start": 4793, + "end": 4804, "loc": { "start": { "line": 140, @@ -60583,8 +60820,8 @@ "postfix": false, "binop": null }, - "start": 4783, - "end": 4784, + "start": 4804, + "end": 4805, "loc": { "start": { "line": 140, @@ -60610,8 +60847,8 @@ "updateContext": null }, "value": "&&", - "start": 4785, - "end": 4787, + "start": 4806, + "end": 4808, "loc": { "start": { "line": 140, @@ -60636,8 +60873,8 @@ "binop": null }, "value": "configs", - "start": 4788, - "end": 4795, + "start": 4809, + "end": 4816, "loc": { "start": { "line": 140, @@ -60662,8 +60899,8 @@ "binop": null, "updateContext": null }, - "start": 4795, - "end": 4796, + "start": 4816, + "end": 4817, "loc": { "start": { "line": 140, @@ -60688,8 +60925,8 @@ "binop": null }, "value": "followPointer", - "start": 4796, - "end": 4809, + "start": 4817, + "end": 4830, "loc": { "start": { "line": 140, @@ -60713,8 +60950,8 @@ "postfix": false, "binop": null }, - "start": 4809, - "end": 4810, + "start": 4830, + "end": 4831, "loc": { "start": { "line": 140, @@ -60738,8 +60975,8 @@ "postfix": false, "binop": null }, - "start": 4811, - "end": 4812, + "start": 4832, + "end": 4833, "loc": { "start": { "line": 140, @@ -60764,8 +61001,8 @@ "binop": null }, "value": "pickController", - "start": 4830, - "end": 4844, + "start": 4851, + "end": 4865, "loc": { "start": { "line": 142, @@ -60790,8 +61027,8 @@ "binop": null, "updateContext": null }, - "start": 4844, - "end": 4845, + "start": 4865, + "end": 4866, "loc": { "start": { "line": 142, @@ -60816,8 +61053,8 @@ "binop": null }, "value": "pickCursorPos", - "start": 4845, - "end": 4858, + "start": 4866, + "end": 4879, "loc": { "start": { "line": 142, @@ -60843,8 +61080,8 @@ "updateContext": null }, "value": "=", - "start": 4859, - "end": 4860, + "start": 4880, + "end": 4881, "loc": { "start": { "line": 142, @@ -60869,8 +61106,8 @@ "binop": null }, "value": "states", - "start": 4861, - "end": 4867, + "start": 4882, + "end": 4888, "loc": { "start": { "line": 142, @@ -60895,8 +61132,8 @@ "binop": null, "updateContext": null }, - "start": 4867, - "end": 4868, + "start": 4888, + "end": 4889, "loc": { "start": { "line": 142, @@ -60921,8 +61158,8 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 4868, - "end": 4884, + "start": 4889, + "end": 4905, "loc": { "start": { "line": 142, @@ -60947,8 +61184,8 @@ "binop": null, "updateContext": null }, - "start": 4884, - "end": 4885, + "start": 4905, + "end": 4906, "loc": { "start": { "line": 142, @@ -60973,8 +61210,8 @@ "binop": null }, "value": "pickController", - "start": 4902, - "end": 4916, + "start": 4923, + "end": 4937, "loc": { "start": { "line": 143, @@ -60999,8 +61236,8 @@ "binop": null, "updateContext": null }, - "start": 4916, - "end": 4917, + "start": 4937, + "end": 4938, "loc": { "start": { "line": 143, @@ -61025,8 +61262,8 @@ "binop": null }, "value": "schedulePickSurface", - "start": 4917, - "end": 4936, + "start": 4938, + "end": 4957, "loc": { "start": { "line": 143, @@ -61052,8 +61289,8 @@ "updateContext": null }, "value": "=", - "start": 4937, - "end": 4938, + "start": 4958, + "end": 4959, "loc": { "start": { "line": 143, @@ -61080,8 +61317,8 @@ "updateContext": null }, "value": "true", - "start": 4939, - "end": 4943, + "start": 4960, + "end": 4964, "loc": { "start": { "line": 143, @@ -61106,8 +61343,8 @@ "binop": null, "updateContext": null }, - "start": 4943, - "end": 4944, + "start": 4964, + "end": 4965, "loc": { "start": { "line": 143, @@ -61132,8 +61369,8 @@ "binop": null }, "value": "pickController", - "start": 4962, - "end": 4976, + "start": 4983, + "end": 4997, "loc": { "start": { "line": 145, @@ -61158,8 +61395,8 @@ "binop": null, "updateContext": null }, - "start": 4976, - "end": 4977, + "start": 4997, + "end": 4998, "loc": { "start": { "line": 145, @@ -61184,8 +61421,8 @@ "binop": null }, "value": "update", - "start": 4977, - "end": 4983, + "start": 4998, + "end": 5004, "loc": { "start": { "line": 145, @@ -61209,8 +61446,8 @@ "postfix": false, "binop": null }, - "start": 4983, - "end": 4984, + "start": 5004, + "end": 5005, "loc": { "start": { "line": 145, @@ -61234,8 +61471,8 @@ "postfix": false, "binop": null }, - "start": 4984, - "end": 4985, + "start": 5005, + "end": 5006, "loc": { "start": { "line": 145, @@ -61260,8 +61497,8 @@ "binop": null, "updateContext": null }, - "start": 4985, - "end": 4986, + "start": 5006, + "end": 5007, "loc": { "start": { "line": 145, @@ -61288,8 +61525,8 @@ "updateContext": null }, "value": "if", - "start": 5004, - "end": 5006, + "start": 5025, + "end": 5027, "loc": { "start": { "line": 147, @@ -61313,8 +61550,8 @@ "postfix": false, "binop": null }, - "start": 5007, - "end": 5008, + "start": 5028, + "end": 5029, "loc": { "start": { "line": 147, @@ -61339,8 +61576,8 @@ "binop": null }, "value": "e", - "start": 5008, - "end": 5009, + "start": 5029, + "end": 5030, "loc": { "start": { "line": 147, @@ -61365,8 +61602,8 @@ "binop": null, "updateContext": null }, - "start": 5009, - "end": 5010, + "start": 5030, + "end": 5031, "loc": { "start": { "line": 147, @@ -61391,8 +61628,8 @@ "binop": null }, "value": "which", - "start": 5010, - "end": 5015, + "start": 5031, + "end": 5036, "loc": { "start": { "line": 147, @@ -61418,8 +61655,8 @@ "updateContext": null }, "value": "===", - "start": 5016, - "end": 5019, + "start": 5037, + "end": 5040, "loc": { "start": { "line": 147, @@ -61445,8 +61682,8 @@ "updateContext": null }, "value": 1, - "start": 5020, - "end": 5021, + "start": 5041, + "end": 5042, "loc": { "start": { "line": 147, @@ -61470,8 +61707,8 @@ "postfix": false, "binop": null }, - "start": 5021, - "end": 5022, + "start": 5042, + "end": 5043, "loc": { "start": { "line": 147, @@ -61495,8 +61732,8 @@ "postfix": false, "binop": null }, - "start": 5023, - "end": 5024, + "start": 5044, + "end": 5045, "loc": { "start": { "line": 147, @@ -61511,8 +61748,8 @@ { "type": "CommentLine", "value": " Left button", - "start": 5024, - "end": 5038, + "start": 5045, + "end": 5059, "loc": { "start": { "line": 147, @@ -61539,8 +61776,8 @@ "updateContext": null }, "value": "const", - "start": 5059, - "end": 5064, + "start": 5080, + "end": 5085, "loc": { "start": { "line": 148, @@ -61565,8 +61802,8 @@ "binop": null }, "value": "pickResult", - "start": 5065, - "end": 5075, + "start": 5086, + "end": 5096, "loc": { "start": { "line": 148, @@ -61592,8 +61829,8 @@ "updateContext": null }, "value": "=", - "start": 5076, - "end": 5077, + "start": 5097, + "end": 5098, "loc": { "start": { "line": 148, @@ -61618,8 +61855,8 @@ "binop": null }, "value": "pickController", - "start": 5078, - "end": 5092, + "start": 5099, + "end": 5113, "loc": { "start": { "line": 148, @@ -61644,8 +61881,8 @@ "binop": null, "updateContext": null }, - "start": 5092, - "end": 5093, + "start": 5113, + "end": 5114, "loc": { "start": { "line": 148, @@ -61670,8 +61907,8 @@ "binop": null }, "value": "pickResult", - "start": 5093, - "end": 5103, + "start": 5114, + "end": 5124, "loc": { "start": { "line": 148, @@ -61696,8 +61933,8 @@ "binop": null, "updateContext": null }, - "start": 5103, - "end": 5104, + "start": 5124, + "end": 5125, "loc": { "start": { "line": 148, @@ -61724,8 +61961,8 @@ "updateContext": null }, "value": "if", - "start": 5125, - "end": 5127, + "start": 5146, + "end": 5148, "loc": { "start": { "line": 149, @@ -61749,8 +61986,8 @@ "postfix": false, "binop": null }, - "start": 5128, - "end": 5129, + "start": 5149, + "end": 5150, "loc": { "start": { "line": 149, @@ -61775,8 +62012,8 @@ "binop": null }, "value": "pickResult", - "start": 5129, - "end": 5139, + "start": 5150, + "end": 5160, "loc": { "start": { "line": 149, @@ -61802,8 +62039,8 @@ "updateContext": null }, "value": "&&", - "start": 5140, - "end": 5142, + "start": 5161, + "end": 5163, "loc": { "start": { "line": 149, @@ -61828,8 +62065,8 @@ "binop": null }, "value": "pickResult", - "start": 5143, - "end": 5153, + "start": 5164, + "end": 5174, "loc": { "start": { "line": 149, @@ -61854,8 +62091,8 @@ "binop": null, "updateContext": null }, - "start": 5153, - "end": 5154, + "start": 5174, + "end": 5175, "loc": { "start": { "line": 149, @@ -61880,8 +62117,8 @@ "binop": null }, "value": "worldPos", - "start": 5154, - "end": 5162, + "start": 5175, + "end": 5183, "loc": { "start": { "line": 149, @@ -61905,8 +62142,8 @@ "postfix": false, "binop": null }, - "start": 5162, - "end": 5163, + "start": 5183, + "end": 5184, "loc": { "start": { "line": 149, @@ -61930,8 +62167,8 @@ "postfix": false, "binop": null }, - "start": 5164, - "end": 5165, + "start": 5185, + "end": 5186, "loc": { "start": { "line": 149, @@ -61956,8 +62193,8 @@ "binop": null }, "value": "pivotController", - "start": 5190, - "end": 5205, + "start": 5211, + "end": 5226, "loc": { "start": { "line": 150, @@ -61982,8 +62219,8 @@ "binop": null, "updateContext": null }, - "start": 5205, - "end": 5206, + "start": 5226, + "end": 5227, "loc": { "start": { "line": 150, @@ -62008,8 +62245,8 @@ "binop": null }, "value": "setPivotPos", - "start": 5206, - "end": 5217, + "start": 5227, + "end": 5238, "loc": { "start": { "line": 150, @@ -62033,8 +62270,8 @@ "postfix": false, "binop": null }, - "start": 5217, - "end": 5218, + "start": 5238, + "end": 5239, "loc": { "start": { "line": 150, @@ -62059,8 +62296,8 @@ "binop": null }, "value": "pickResult", - "start": 5218, - "end": 5228, + "start": 5239, + "end": 5249, "loc": { "start": { "line": 150, @@ -62085,8 +62322,8 @@ "binop": null, "updateContext": null }, - "start": 5228, - "end": 5229, + "start": 5249, + "end": 5250, "loc": { "start": { "line": 150, @@ -62111,8 +62348,8 @@ "binop": null }, "value": "worldPos", - "start": 5229, - "end": 5237, + "start": 5250, + "end": 5258, "loc": { "start": { "line": 150, @@ -62136,8 +62373,8 @@ "postfix": false, "binop": null }, - "start": 5237, - "end": 5238, + "start": 5258, + "end": 5259, "loc": { "start": { "line": 150, @@ -62162,8 +62399,8 @@ "binop": null, "updateContext": null }, - "start": 5238, - "end": 5239, + "start": 5259, + "end": 5260, "loc": { "start": { "line": 150, @@ -62188,8 +62425,8 @@ "binop": null }, "value": "pivotController", - "start": 5264, - "end": 5279, + "start": 5285, + "end": 5300, "loc": { "start": { "line": 151, @@ -62214,8 +62451,8 @@ "binop": null, "updateContext": null }, - "start": 5279, - "end": 5280, + "start": 5300, + "end": 5301, "loc": { "start": { "line": 151, @@ -62240,8 +62477,8 @@ "binop": null }, "value": "startPivot", - "start": 5280, - "end": 5290, + "start": 5301, + "end": 5311, "loc": { "start": { "line": 151, @@ -62265,8 +62502,8 @@ "postfix": false, "binop": null }, - "start": 5290, - "end": 5291, + "start": 5311, + "end": 5312, "loc": { "start": { "line": 151, @@ -62290,8 +62527,8 @@ "postfix": false, "binop": null }, - "start": 5291, - "end": 5292, + "start": 5312, + "end": 5313, "loc": { "start": { "line": 151, @@ -62316,8 +62553,8 @@ "binop": null, "updateContext": null }, - "start": 5292, - "end": 5293, + "start": 5313, + "end": 5314, "loc": { "start": { "line": 151, @@ -62341,8 +62578,8 @@ "postfix": false, "binop": null }, - "start": 5314, - "end": 5315, + "start": 5335, + "end": 5336, "loc": { "start": { "line": 152, @@ -62369,8 +62606,8 @@ "updateContext": null }, "value": "else", - "start": 5316, - "end": 5320, + "start": 5337, + "end": 5341, "loc": { "start": { "line": 152, @@ -62394,8 +62631,8 @@ "postfix": false, "binop": null }, - "start": 5321, - "end": 5322, + "start": 5342, + "end": 5343, "loc": { "start": { "line": 152, @@ -62422,8 +62659,8 @@ "updateContext": null }, "value": "if", - "start": 5347, - "end": 5349, + "start": 5368, + "end": 5370, "loc": { "start": { "line": 153, @@ -62447,8 +62684,8 @@ "postfix": false, "binop": null }, - "start": 5350, - "end": 5351, + "start": 5371, + "end": 5372, "loc": { "start": { "line": 153, @@ -62473,8 +62710,8 @@ "binop": null }, "value": "configs", - "start": 5351, - "end": 5358, + "start": 5372, + "end": 5379, "loc": { "start": { "line": 153, @@ -62499,8 +62736,8 @@ "binop": null, "updateContext": null }, - "start": 5358, - "end": 5359, + "start": 5379, + "end": 5380, "loc": { "start": { "line": 153, @@ -62525,8 +62762,8 @@ "binop": null }, "value": "smartPivot", - "start": 5359, - "end": 5369, + "start": 5380, + "end": 5390, "loc": { "start": { "line": 153, @@ -62550,8 +62787,8 @@ "postfix": false, "binop": null }, - "start": 5369, - "end": 5370, + "start": 5390, + "end": 5391, "loc": { "start": { "line": 153, @@ -62575,8 +62812,8 @@ "postfix": false, "binop": null }, - "start": 5371, - "end": 5372, + "start": 5392, + "end": 5393, "loc": { "start": { "line": 153, @@ -62601,8 +62838,8 @@ "binop": null }, "value": "pivotController", - "start": 5401, - "end": 5416, + "start": 5422, + "end": 5437, "loc": { "start": { "line": 154, @@ -62627,8 +62864,8 @@ "binop": null, "updateContext": null }, - "start": 5416, - "end": 5417, + "start": 5437, + "end": 5438, "loc": { "start": { "line": 154, @@ -62653,8 +62890,8 @@ "binop": null }, "value": "setCanvasPivotPos", - "start": 5417, - "end": 5434, + "start": 5438, + "end": 5455, "loc": { "start": { "line": 154, @@ -62678,8 +62915,8 @@ "postfix": false, "binop": null }, - "start": 5434, - "end": 5435, + "start": 5455, + "end": 5456, "loc": { "start": { "line": 154, @@ -62704,8 +62941,8 @@ "binop": null }, "value": "states", - "start": 5435, - "end": 5441, + "start": 5456, + "end": 5462, "loc": { "start": { "line": 154, @@ -62730,8 +62967,8 @@ "binop": null, "updateContext": null }, - "start": 5441, - "end": 5442, + "start": 5462, + "end": 5463, "loc": { "start": { "line": 154, @@ -62756,8 +62993,8 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 5442, - "end": 5458, + "start": 5463, + "end": 5479, "loc": { "start": { "line": 154, @@ -62781,8 +63018,8 @@ "postfix": false, "binop": null }, - "start": 5458, - "end": 5459, + "start": 5479, + "end": 5480, "loc": { "start": { "line": 154, @@ -62807,8 +63044,8 @@ "binop": null, "updateContext": null }, - "start": 5459, - "end": 5460, + "start": 5480, + "end": 5481, "loc": { "start": { "line": 154, @@ -62832,8 +63069,8 @@ "postfix": false, "binop": null }, - "start": 5485, - "end": 5486, + "start": 5506, + "end": 5507, "loc": { "start": { "line": 155, @@ -62860,8 +63097,8 @@ "updateContext": null }, "value": "else", - "start": 5487, - "end": 5491, + "start": 5508, + "end": 5512, "loc": { "start": { "line": 155, @@ -62885,8 +63122,8 @@ "postfix": false, "binop": null }, - "start": 5492, - "end": 5493, + "start": 5513, + "end": 5514, "loc": { "start": { "line": 155, @@ -62911,8 +63148,8 @@ "binop": null }, "value": "pivotController", - "start": 5522, - "end": 5537, + "start": 5543, + "end": 5558, "loc": { "start": { "line": 156, @@ -62937,8 +63174,8 @@ "binop": null, "updateContext": null }, - "start": 5537, - "end": 5538, + "start": 5558, + "end": 5559, "loc": { "start": { "line": 156, @@ -62963,8 +63200,8 @@ "binop": null }, "value": "setPivotPos", - "start": 5538, - "end": 5549, + "start": 5559, + "end": 5570, "loc": { "start": { "line": 156, @@ -62988,8 +63225,8 @@ "postfix": false, "binop": null }, - "start": 5549, - "end": 5550, + "start": 5570, + "end": 5571, "loc": { "start": { "line": 156, @@ -63014,8 +63251,8 @@ "binop": null }, "value": "scene", - "start": 5550, - "end": 5555, + "start": 5571, + "end": 5576, "loc": { "start": { "line": 156, @@ -63040,8 +63277,8 @@ "binop": null, "updateContext": null }, - "start": 5555, - "end": 5556, + "start": 5576, + "end": 5577, "loc": { "start": { "line": 156, @@ -63066,8 +63303,8 @@ "binop": null }, "value": "camera", - "start": 5556, - "end": 5562, + "start": 5577, + "end": 5583, "loc": { "start": { "line": 156, @@ -63092,8 +63329,8 @@ "binop": null, "updateContext": null }, - "start": 5562, - "end": 5563, + "start": 5583, + "end": 5584, "loc": { "start": { "line": 156, @@ -63118,8 +63355,8 @@ "binop": null }, "value": "look", - "start": 5563, - "end": 5567, + "start": 5584, + "end": 5588, "loc": { "start": { "line": 156, @@ -63143,8 +63380,8 @@ "postfix": false, "binop": null }, - "start": 5567, - "end": 5568, + "start": 5588, + "end": 5589, "loc": { "start": { "line": 156, @@ -63169,8 +63406,8 @@ "binop": null, "updateContext": null }, - "start": 5568, - "end": 5569, + "start": 5589, + "end": 5590, "loc": { "start": { "line": 156, @@ -63194,8 +63431,8 @@ "postfix": false, "binop": null }, - "start": 5594, - "end": 5595, + "start": 5615, + "end": 5616, "loc": { "start": { "line": 157, @@ -63220,8 +63457,8 @@ "binop": null }, "value": "pivotController", - "start": 5620, - "end": 5635, + "start": 5641, + "end": 5656, "loc": { "start": { "line": 158, @@ -63246,8 +63483,8 @@ "binop": null, "updateContext": null }, - "start": 5635, - "end": 5636, + "start": 5656, + "end": 5657, "loc": { "start": { "line": 158, @@ -63272,8 +63509,8 @@ "binop": null }, "value": "startPivot", - "start": 5636, - "end": 5646, + "start": 5657, + "end": 5667, "loc": { "start": { "line": 158, @@ -63297,8 +63534,8 @@ "postfix": false, "binop": null }, - "start": 5646, - "end": 5647, + "start": 5667, + "end": 5668, "loc": { "start": { "line": 158, @@ -63322,8 +63559,8 @@ "postfix": false, "binop": null }, - "start": 5647, - "end": 5648, + "start": 5668, + "end": 5669, "loc": { "start": { "line": 158, @@ -63348,8 +63585,8 @@ "binop": null, "updateContext": null }, - "start": 5648, - "end": 5649, + "start": 5669, + "end": 5670, "loc": { "start": { "line": 158, @@ -63373,8 +63610,8 @@ "postfix": false, "binop": null }, - "start": 5670, - "end": 5671, + "start": 5691, + "end": 5692, "loc": { "start": { "line": 159, @@ -63398,8 +63635,8 @@ "postfix": false, "binop": null }, - "start": 5688, - "end": 5689, + "start": 5709, + "end": 5710, "loc": { "start": { "line": 160, @@ -63423,8 +63660,8 @@ "postfix": false, "binop": null }, - "start": 5702, - "end": 5703, + "start": 5723, + "end": 5724, "loc": { "start": { "line": 161, @@ -63448,8 +63685,8 @@ "postfix": false, "binop": null }, - "start": 5712, - "end": 5713, + "start": 5733, + "end": 5734, "loc": { "start": { "line": 162, @@ -63473,8 +63710,8 @@ "postfix": false, "binop": null }, - "start": 5713, - "end": 5714, + "start": 5734, + "end": 5735, "loc": { "start": { "line": 162, @@ -63499,8 +63736,8 @@ "binop": null, "updateContext": null }, - "start": 5714, - "end": 5715, + "start": 5735, + "end": 5736, "loc": { "start": { "line": 162, @@ -63525,8 +63762,8 @@ "binop": null }, "value": "document", - "start": 5725, - "end": 5733, + "start": 5746, + "end": 5754, "loc": { "start": { "line": 164, @@ -63551,8 +63788,8 @@ "binop": null, "updateContext": null }, - "start": 5733, - "end": 5734, + "start": 5754, + "end": 5755, "loc": { "start": { "line": 164, @@ -63577,8 +63814,8 @@ "binop": null }, "value": "addEventListener", - "start": 5734, - "end": 5750, + "start": 5755, + "end": 5771, "loc": { "start": { "line": 164, @@ -63602,8 +63839,8 @@ "postfix": false, "binop": null }, - "start": 5750, - "end": 5751, + "start": 5771, + "end": 5772, "loc": { "start": { "line": 164, @@ -63629,8 +63866,8 @@ "updateContext": null }, "value": "mouseup", - "start": 5751, - "end": 5760, + "start": 5772, + "end": 5781, "loc": { "start": { "line": 164, @@ -63655,8 +63892,8 @@ "binop": null, "updateContext": null }, - "start": 5760, - "end": 5761, + "start": 5781, + "end": 5782, "loc": { "start": { "line": 164, @@ -63683,8 +63920,8 @@ "updateContext": null }, "value": "this", - "start": 5762, - "end": 5766, + "start": 5783, + "end": 5787, "loc": { "start": { "line": 164, @@ -63709,8 +63946,8 @@ "binop": null, "updateContext": null }, - "start": 5766, - "end": 5767, + "start": 5787, + "end": 5788, "loc": { "start": { "line": 164, @@ -63735,8 +63972,8 @@ "binop": null }, "value": "_documentMouseUpHandler", - "start": 5767, - "end": 5790, + "start": 5788, + "end": 5811, "loc": { "start": { "line": 164, @@ -63762,8 +63999,8 @@ "updateContext": null }, "value": "=", - "start": 5791, - "end": 5792, + "start": 5812, + "end": 5813, "loc": { "start": { "line": 164, @@ -63787,8 +64024,8 @@ "postfix": false, "binop": null }, - "start": 5793, - "end": 5794, + "start": 5814, + "end": 5815, "loc": { "start": { "line": 164, @@ -63813,8 +64050,8 @@ "binop": null }, "value": "e", - "start": 5794, - "end": 5795, + "start": 5815, + "end": 5816, "loc": { "start": { "line": 164, @@ -63838,8 +64075,8 @@ "postfix": false, "binop": null }, - "start": 5795, - "end": 5796, + "start": 5816, + "end": 5817, "loc": { "start": { "line": 164, @@ -63864,8 +64101,8 @@ "binop": null, "updateContext": null }, - "start": 5797, - "end": 5799, + "start": 5818, + "end": 5820, "loc": { "start": { "line": 164, @@ -63889,8 +64126,8 @@ "postfix": false, "binop": null }, - "start": 5800, - "end": 5801, + "start": 5821, + "end": 5822, "loc": { "start": { "line": 164, @@ -63917,8 +64154,8 @@ "updateContext": null }, "value": "if", - "start": 5815, - "end": 5817, + "start": 5836, + "end": 5838, "loc": { "start": { "line": 166, @@ -63942,8 +64179,8 @@ "postfix": false, "binop": null }, - "start": 5818, - "end": 5819, + "start": 5839, + "end": 5840, "loc": { "start": { "line": 166, @@ -63968,8 +64205,8 @@ "binop": null }, "value": "e", - "start": 5819, - "end": 5820, + "start": 5840, + "end": 5841, "loc": { "start": { "line": 166, @@ -63994,8 +64231,8 @@ "binop": null, "updateContext": null }, - "start": 5820, - "end": 5821, + "start": 5841, + "end": 5842, "loc": { "start": { "line": 166, @@ -64020,8 +64257,8 @@ "binop": null }, "value": "which", - "start": 5821, - "end": 5826, + "start": 5842, + "end": 5847, "loc": { "start": { "line": 166, @@ -64047,8 +64284,8 @@ "updateContext": null }, "value": "===", - "start": 5827, - "end": 5830, + "start": 5848, + "end": 5851, "loc": { "start": { "line": 166, @@ -64074,8 +64311,8 @@ "updateContext": null }, "value": 1, - "start": 5831, - "end": 5832, + "start": 5852, + "end": 5853, "loc": { "start": { "line": 166, @@ -64099,8 +64336,8 @@ "postfix": false, "binop": null }, - "start": 5832, - "end": 5833, + "start": 5853, + "end": 5854, "loc": { "start": { "line": 166, @@ -64124,8 +64361,8 @@ "postfix": false, "binop": null }, - "start": 5834, - "end": 5835, + "start": 5855, + "end": 5856, "loc": { "start": { "line": 166, @@ -64150,8 +64387,8 @@ "binop": null }, "value": "leftDown", - "start": 5852, - "end": 5860, + "start": 5873, + "end": 5881, "loc": { "start": { "line": 167, @@ -64177,8 +64414,8 @@ "updateContext": null }, "value": "=", - "start": 5861, - "end": 5862, + "start": 5882, + "end": 5883, "loc": { "start": { "line": 167, @@ -64205,8 +64442,8 @@ "updateContext": null }, "value": "false", - "start": 5863, - "end": 5868, + "start": 5884, + "end": 5889, "loc": { "start": { "line": 167, @@ -64231,8 +64468,8 @@ "binop": null, "updateContext": null }, - "start": 5868, - "end": 5869, + "start": 5889, + "end": 5890, "loc": { "start": { "line": 167, @@ -64256,8 +64493,8 @@ "postfix": false, "binop": null }, - "start": 5882, - "end": 5883, + "start": 5903, + "end": 5904, "loc": { "start": { "line": 168, @@ -64284,8 +64521,8 @@ "updateContext": null }, "value": "if", - "start": 5897, - "end": 5899, + "start": 5918, + "end": 5920, "loc": { "start": { "line": 170, @@ -64309,8 +64546,8 @@ "postfix": false, "binop": null }, - "start": 5900, - "end": 5901, + "start": 5921, + "end": 5922, "loc": { "start": { "line": 170, @@ -64335,8 +64572,8 @@ "binop": null }, "value": "e", - "start": 5901, - "end": 5902, + "start": 5922, + "end": 5923, "loc": { "start": { "line": 170, @@ -64361,8 +64598,8 @@ "binop": null, "updateContext": null }, - "start": 5902, - "end": 5903, + "start": 5923, + "end": 5924, "loc": { "start": { "line": 170, @@ -64387,8 +64624,8 @@ "binop": null }, "value": "which", - "start": 5903, - "end": 5908, + "start": 5924, + "end": 5929, "loc": { "start": { "line": 170, @@ -64414,8 +64651,8 @@ "updateContext": null }, "value": "===", - "start": 5909, - "end": 5912, + "start": 5930, + "end": 5933, "loc": { "start": { "line": 170, @@ -64441,8 +64678,8 @@ "updateContext": null }, "value": 3, - "start": 5913, - "end": 5914, + "start": 5934, + "end": 5935, "loc": { "start": { "line": 170, @@ -64466,8 +64703,8 @@ "postfix": false, "binop": null }, - "start": 5914, - "end": 5915, + "start": 5935, + "end": 5936, "loc": { "start": { "line": 170, @@ -64491,8 +64728,8 @@ "postfix": false, "binop": null }, - "start": 5916, - "end": 5917, + "start": 5937, + "end": 5938, "loc": { "start": { "line": 170, @@ -64517,8 +64754,8 @@ "binop": null }, "value": "rightDown", - "start": 5934, - "end": 5943, + "start": 5955, + "end": 5964, "loc": { "start": { "line": 171, @@ -64544,8 +64781,8 @@ "updateContext": null }, "value": "=", - "start": 5944, - "end": 5945, + "start": 5965, + "end": 5966, "loc": { "start": { "line": 171, @@ -64572,8 +64809,8 @@ "updateContext": null }, "value": "false", - "start": 5946, - "end": 5951, + "start": 5967, + "end": 5972, "loc": { "start": { "line": 171, @@ -64598,8 +64835,8 @@ "binop": null, "updateContext": null }, - "start": 5951, - "end": 5952, + "start": 5972, + "end": 5973, "loc": { "start": { "line": 171, @@ -64623,8 +64860,8 @@ "postfix": false, "binop": null }, - "start": 5965, - "end": 5966, + "start": 5986, + "end": 5987, "loc": { "start": { "line": 172, @@ -64648,8 +64885,8 @@ "postfix": false, "binop": null }, - "start": 5975, - "end": 5976, + "start": 5996, + "end": 5997, "loc": { "start": { "line": 173, @@ -64673,8 +64910,8 @@ "postfix": false, "binop": null }, - "start": 5976, - "end": 5977, + "start": 5997, + "end": 5998, "loc": { "start": { "line": 173, @@ -64699,8 +64936,8 @@ "binop": null, "updateContext": null }, - "start": 5977, - "end": 5978, + "start": 5998, + "end": 5999, "loc": { "start": { "line": 173, @@ -64725,8 +64962,8 @@ "binop": null }, "value": "canvas", - "start": 5988, - "end": 5994, + "start": 6009, + "end": 6015, "loc": { "start": { "line": 175, @@ -64751,8 +64988,8 @@ "binop": null, "updateContext": null }, - "start": 5994, - "end": 5995, + "start": 6015, + "end": 6016, "loc": { "start": { "line": 175, @@ -64777,8 +65014,8 @@ "binop": null }, "value": "addEventListener", - "start": 5995, - "end": 6011, + "start": 6016, + "end": 6032, "loc": { "start": { "line": 175, @@ -64802,8 +65039,8 @@ "postfix": false, "binop": null }, - "start": 6011, - "end": 6012, + "start": 6032, + "end": 6033, "loc": { "start": { "line": 175, @@ -64829,8 +65066,8 @@ "updateContext": null }, "value": "mouseup", - "start": 6012, - "end": 6021, + "start": 6033, + "end": 6042, "loc": { "start": { "line": 175, @@ -64855,8 +65092,8 @@ "binop": null, "updateContext": null }, - "start": 6021, - "end": 6022, + "start": 6042, + "end": 6043, "loc": { "start": { "line": 175, @@ -64883,8 +65120,8 @@ "updateContext": null }, "value": "this", - "start": 6023, - "end": 6027, + "start": 6044, + "end": 6048, "loc": { "start": { "line": 175, @@ -64909,8 +65146,8 @@ "binop": null, "updateContext": null }, - "start": 6027, - "end": 6028, + "start": 6048, + "end": 6049, "loc": { "start": { "line": 175, @@ -64935,8 +65172,8 @@ "binop": null }, "value": "_canvasMouseUpHandler", - "start": 6028, - "end": 6049, + "start": 6049, + "end": 6070, "loc": { "start": { "line": 175, @@ -64962,8 +65199,8 @@ "updateContext": null }, "value": "=", - "start": 6050, - "end": 6051, + "start": 6071, + "end": 6072, "loc": { "start": { "line": 175, @@ -64987,8 +65224,8 @@ "postfix": false, "binop": null }, - "start": 6052, - "end": 6053, + "start": 6073, + "end": 6074, "loc": { "start": { "line": 175, @@ -65013,8 +65250,8 @@ "binop": null }, "value": "e", - "start": 6053, - "end": 6054, + "start": 6074, + "end": 6075, "loc": { "start": { "line": 175, @@ -65038,8 +65275,8 @@ "postfix": false, "binop": null }, - "start": 6054, - "end": 6055, + "start": 6075, + "end": 6076, "loc": { "start": { "line": 175, @@ -65064,8 +65301,8 @@ "binop": null, "updateContext": null }, - "start": 6056, - "end": 6058, + "start": 6077, + "end": 6079, "loc": { "start": { "line": 175, @@ -65089,8 +65326,8 @@ "postfix": false, "binop": null }, - "start": 6059, - "end": 6060, + "start": 6080, + "end": 6081, "loc": { "start": { "line": 175, @@ -65117,8 +65354,8 @@ "updateContext": null }, "value": "if", - "start": 6074, - "end": 6076, + "start": 6095, + "end": 6097, "loc": { "start": { "line": 177, @@ -65142,8 +65379,8 @@ "postfix": false, "binop": null }, - "start": 6077, - "end": 6078, + "start": 6098, + "end": 6099, "loc": { "start": { "line": 177, @@ -65169,8 +65406,8 @@ "updateContext": null }, "value": "!", - "start": 6078, - "end": 6079, + "start": 6099, + "end": 6100, "loc": { "start": { "line": 177, @@ -65194,8 +65431,8 @@ "postfix": false, "binop": null }, - "start": 6079, - "end": 6080, + "start": 6100, + "end": 6101, "loc": { "start": { "line": 177, @@ -65220,8 +65457,8 @@ "binop": null }, "value": "configs", - "start": 6080, - "end": 6087, + "start": 6101, + "end": 6108, "loc": { "start": { "line": 177, @@ -65246,8 +65483,8 @@ "binop": null, "updateContext": null }, - "start": 6087, - "end": 6088, + "start": 6108, + "end": 6109, "loc": { "start": { "line": 177, @@ -65272,8 +65509,8 @@ "binop": null }, "value": "active", - "start": 6088, - "end": 6094, + "start": 6109, + "end": 6115, "loc": { "start": { "line": 177, @@ -65299,8 +65536,8 @@ "updateContext": null }, "value": "&&", - "start": 6095, - "end": 6097, + "start": 6116, + "end": 6118, "loc": { "start": { "line": 177, @@ -65325,8 +65562,8 @@ "binop": null }, "value": "configs", - "start": 6098, - "end": 6105, + "start": 6119, + "end": 6126, "loc": { "start": { "line": 177, @@ -65351,8 +65588,8 @@ "binop": null, "updateContext": null }, - "start": 6105, - "end": 6106, + "start": 6126, + "end": 6127, "loc": { "start": { "line": 177, @@ -65377,8 +65614,8 @@ "binop": null }, "value": "pointerEnabled", - "start": 6106, - "end": 6120, + "start": 6127, + "end": 6141, "loc": { "start": { "line": 177, @@ -65402,8 +65639,8 @@ "postfix": false, "binop": null }, - "start": 6120, - "end": 6121, + "start": 6141, + "end": 6142, "loc": { "start": { "line": 177, @@ -65427,8 +65664,8 @@ "postfix": false, "binop": null }, - "start": 6121, - "end": 6122, + "start": 6142, + "end": 6143, "loc": { "start": { "line": 177, @@ -65452,8 +65689,8 @@ "postfix": false, "binop": null }, - "start": 6123, - "end": 6124, + "start": 6144, + "end": 6145, "loc": { "start": { "line": 177, @@ -65480,8 +65717,8 @@ "updateContext": null }, "value": "return", - "start": 6141, - "end": 6147, + "start": 6162, + "end": 6168, "loc": { "start": { "line": 178, @@ -65506,8 +65743,8 @@ "binop": null, "updateContext": null }, - "start": 6147, - "end": 6148, + "start": 6168, + "end": 6169, "loc": { "start": { "line": 178, @@ -65531,8 +65768,8 @@ "postfix": false, "binop": null }, - "start": 6161, - "end": 6162, + "start": 6182, + "end": 6183, "loc": { "start": { "line": 179, @@ -65559,8 +65796,8 @@ "updateContext": null }, "value": "const", - "start": 6176, - "end": 6181, + "start": 6197, + "end": 6202, "loc": { "start": { "line": 181, @@ -65585,8 +65822,8 @@ "binop": null }, "value": "leftButtonUp", - "start": 6182, - "end": 6194, + "start": 6203, + "end": 6215, "loc": { "start": { "line": 181, @@ -65612,8 +65849,8 @@ "updateContext": null }, "value": "=", - "start": 6195, - "end": 6196, + "start": 6216, + "end": 6217, "loc": { "start": { "line": 181, @@ -65637,8 +65874,8 @@ "postfix": false, "binop": null }, - "start": 6197, - "end": 6198, + "start": 6218, + "end": 6219, "loc": { "start": { "line": 181, @@ -65663,8 +65900,8 @@ "binop": null }, "value": "e", - "start": 6198, - "end": 6199, + "start": 6219, + "end": 6220, "loc": { "start": { "line": 181, @@ -65689,8 +65926,8 @@ "binop": null, "updateContext": null }, - "start": 6199, - "end": 6200, + "start": 6220, + "end": 6221, "loc": { "start": { "line": 181, @@ -65715,8 +65952,8 @@ "binop": null }, "value": "which", - "start": 6200, - "end": 6205, + "start": 6221, + "end": 6226, "loc": { "start": { "line": 181, @@ -65742,8 +65979,8 @@ "updateContext": null }, "value": "===", - "start": 6206, - "end": 6209, + "start": 6227, + "end": 6230, "loc": { "start": { "line": 181, @@ -65769,8 +66006,8 @@ "updateContext": null }, "value": 1, - "start": 6210, - "end": 6211, + "start": 6231, + "end": 6232, "loc": { "start": { "line": 181, @@ -65794,8 +66031,8 @@ "postfix": false, "binop": null }, - "start": 6211, - "end": 6212, + "start": 6232, + "end": 6233, "loc": { "start": { "line": 181, @@ -65820,8 +66057,8 @@ "binop": null, "updateContext": null }, - "start": 6212, - "end": 6213, + "start": 6233, + "end": 6234, "loc": { "start": { "line": 181, @@ -65848,8 +66085,8 @@ "updateContext": null }, "value": "if", - "start": 6227, - "end": 6229, + "start": 6248, + "end": 6250, "loc": { "start": { "line": 183, @@ -65873,8 +66110,8 @@ "postfix": false, "binop": null }, - "start": 6230, - "end": 6231, + "start": 6251, + "end": 6252, "loc": { "start": { "line": 183, @@ -65900,8 +66137,8 @@ "updateContext": null }, "value": "!", - "start": 6231, - "end": 6232, + "start": 6252, + "end": 6253, "loc": { "start": { "line": 183, @@ -65926,8 +66163,8 @@ "binop": null }, "value": "leftButtonUp", - "start": 6232, - "end": 6244, + "start": 6253, + "end": 6265, "loc": { "start": { "line": 183, @@ -65951,8 +66188,8 @@ "postfix": false, "binop": null }, - "start": 6244, - "end": 6245, + "start": 6265, + "end": 6266, "loc": { "start": { "line": 183, @@ -65976,8 +66213,8 @@ "postfix": false, "binop": null }, - "start": 6246, - "end": 6247, + "start": 6267, + "end": 6268, "loc": { "start": { "line": 183, @@ -66004,8 +66241,8 @@ "updateContext": null }, "value": "return", - "start": 6264, - "end": 6270, + "start": 6285, + "end": 6291, "loc": { "start": { "line": 184, @@ -66030,8 +66267,8 @@ "binop": null, "updateContext": null }, - "start": 6270, - "end": 6271, + "start": 6291, + "end": 6292, "loc": { "start": { "line": 184, @@ -66055,8 +66292,8 @@ "postfix": false, "binop": null }, - "start": 6284, - "end": 6285, + "start": 6305, + "end": 6306, "loc": { "start": { "line": 185, @@ -66071,8 +66308,8 @@ { "type": "CommentLine", "value": " Left mouse button up to possibly pick or double-pick", - "start": 6299, - "end": 6354, + "start": 6320, + "end": 6375, "loc": { "start": { "line": 187, @@ -66097,8 +66334,8 @@ "binop": null }, "value": "pivotController", - "start": 6368, - "end": 6383, + "start": 6389, + "end": 6404, "loc": { "start": { "line": 189, @@ -66123,8 +66360,8 @@ "binop": null, "updateContext": null }, - "start": 6383, - "end": 6384, + "start": 6404, + "end": 6405, "loc": { "start": { "line": 189, @@ -66149,8 +66386,8 @@ "binop": null }, "value": "hidePivot", - "start": 6384, - "end": 6393, + "start": 6405, + "end": 6414, "loc": { "start": { "line": 189, @@ -66174,8 +66411,8 @@ "postfix": false, "binop": null }, - "start": 6393, - "end": 6394, + "start": 6414, + "end": 6415, "loc": { "start": { "line": 189, @@ -66199,8 +66436,8 @@ "postfix": false, "binop": null }, - "start": 6394, - "end": 6395, + "start": 6415, + "end": 6416, "loc": { "start": { "line": 189, @@ -66225,8 +66462,8 @@ "binop": null, "updateContext": null }, - "start": 6395, - "end": 6396, + "start": 6416, + "end": 6417, "loc": { "start": { "line": 189, @@ -66253,8 +66490,8 @@ "updateContext": null }, "value": "if", - "start": 6410, - "end": 6412, + "start": 6431, + "end": 6433, "loc": { "start": { "line": 191, @@ -66278,8 +66515,8 @@ "postfix": false, "binop": null }, - "start": 6413, - "end": 6414, + "start": 6434, + "end": 6435, "loc": { "start": { "line": 191, @@ -66304,8 +66541,8 @@ "binop": null }, "value": "Math", - "start": 6414, - "end": 6418, + "start": 6435, + "end": 6439, "loc": { "start": { "line": 191, @@ -66330,8 +66567,8 @@ "binop": null, "updateContext": null }, - "start": 6418, - "end": 6419, + "start": 6439, + "end": 6440, "loc": { "start": { "line": 191, @@ -66356,8 +66593,8 @@ "binop": null }, "value": "abs", - "start": 6419, - "end": 6422, + "start": 6440, + "end": 6443, "loc": { "start": { "line": 191, @@ -66381,8 +66618,8 @@ "postfix": false, "binop": null }, - "start": 6422, - "end": 6423, + "start": 6443, + "end": 6444, "loc": { "start": { "line": 191, @@ -66407,8 +66644,8 @@ "binop": null }, "value": "e", - "start": 6423, - "end": 6424, + "start": 6444, + "end": 6445, "loc": { "start": { "line": 191, @@ -66433,8 +66670,8 @@ "binop": null, "updateContext": null }, - "start": 6424, - "end": 6425, + "start": 6445, + "end": 6446, "loc": { "start": { "line": 191, @@ -66459,8 +66696,8 @@ "binop": null }, "value": "clientX", - "start": 6425, - "end": 6432, + "start": 6446, + "end": 6453, "loc": { "start": { "line": 191, @@ -66486,8 +66723,8 @@ "updateContext": null }, "value": "-", - "start": 6433, - "end": 6434, + "start": 6454, + "end": 6455, "loc": { "start": { "line": 191, @@ -66512,8 +66749,8 @@ "binop": null }, "value": "states", - "start": 6435, - "end": 6441, + "start": 6456, + "end": 6462, "loc": { "start": { "line": 191, @@ -66538,8 +66775,8 @@ "binop": null, "updateContext": null }, - "start": 6441, - "end": 6442, + "start": 6462, + "end": 6463, "loc": { "start": { "line": 191, @@ -66564,8 +66801,8 @@ "binop": null }, "value": "mouseDownClientX", - "start": 6442, - "end": 6458, + "start": 6463, + "end": 6479, "loc": { "start": { "line": 191, @@ -66589,8 +66826,8 @@ "postfix": false, "binop": null }, - "start": 6458, - "end": 6459, + "start": 6479, + "end": 6480, "loc": { "start": { "line": 191, @@ -66616,8 +66853,8 @@ "updateContext": null }, "value": ">", - "start": 6460, - "end": 6461, + "start": 6481, + "end": 6482, "loc": { "start": { "line": 191, @@ -66643,8 +66880,8 @@ "updateContext": null }, "value": 3, - "start": 6462, - "end": 6463, + "start": 6483, + "end": 6484, "loc": { "start": { "line": 191, @@ -66670,8 +66907,8 @@ "updateContext": null }, "value": "||", - "start": 6464, - "end": 6466, + "start": 6485, + "end": 6487, "loc": { "start": { "line": 191, @@ -66696,8 +66933,8 @@ "binop": null }, "value": "Math", - "start": 6467, - "end": 6471, + "start": 6488, + "end": 6492, "loc": { "start": { "line": 191, @@ -66722,8 +66959,8 @@ "binop": null, "updateContext": null }, - "start": 6471, - "end": 6472, + "start": 6492, + "end": 6493, "loc": { "start": { "line": 191, @@ -66748,8 +66985,8 @@ "binop": null }, "value": "abs", - "start": 6472, - "end": 6475, + "start": 6493, + "end": 6496, "loc": { "start": { "line": 191, @@ -66773,8 +67010,8 @@ "postfix": false, "binop": null }, - "start": 6475, - "end": 6476, + "start": 6496, + "end": 6497, "loc": { "start": { "line": 191, @@ -66799,8 +67036,8 @@ "binop": null }, "value": "e", - "start": 6476, - "end": 6477, + "start": 6497, + "end": 6498, "loc": { "start": { "line": 191, @@ -66825,8 +67062,8 @@ "binop": null, "updateContext": null }, - "start": 6477, - "end": 6478, + "start": 6498, + "end": 6499, "loc": { "start": { "line": 191, @@ -66851,8 +67088,8 @@ "binop": null }, "value": "clientY", - "start": 6478, - "end": 6485, + "start": 6499, + "end": 6506, "loc": { "start": { "line": 191, @@ -66878,8 +67115,8 @@ "updateContext": null }, "value": "-", - "start": 6486, - "end": 6487, + "start": 6507, + "end": 6508, "loc": { "start": { "line": 191, @@ -66904,8 +67141,8 @@ "binop": null }, "value": "states", - "start": 6488, - "end": 6494, + "start": 6509, + "end": 6515, "loc": { "start": { "line": 191, @@ -66930,8 +67167,8 @@ "binop": null, "updateContext": null }, - "start": 6494, - "end": 6495, + "start": 6515, + "end": 6516, "loc": { "start": { "line": 191, @@ -66956,8 +67193,8 @@ "binop": null }, "value": "mouseDownClientY", - "start": 6495, - "end": 6511, + "start": 6516, + "end": 6532, "loc": { "start": { "line": 191, @@ -66981,8 +67218,8 @@ "postfix": false, "binop": null }, - "start": 6511, - "end": 6512, + "start": 6532, + "end": 6533, "loc": { "start": { "line": 191, @@ -67008,8 +67245,8 @@ "updateContext": null }, "value": ">", - "start": 6513, - "end": 6514, + "start": 6534, + "end": 6535, "loc": { "start": { "line": 191, @@ -67035,8 +67272,8 @@ "updateContext": null }, "value": 3, - "start": 6515, - "end": 6516, + "start": 6536, + "end": 6537, "loc": { "start": { "line": 191, @@ -67060,8 +67297,8 @@ "postfix": false, "binop": null }, - "start": 6516, - "end": 6517, + "start": 6537, + "end": 6538, "loc": { "start": { "line": 191, @@ -67085,8 +67322,8 @@ "postfix": false, "binop": null }, - "start": 6518, - "end": 6519, + "start": 6539, + "end": 6540, "loc": { "start": { "line": 191, @@ -67113,8 +67350,8 @@ "updateContext": null }, "value": "return", - "start": 6536, - "end": 6542, + "start": 6557, + "end": 6563, "loc": { "start": { "line": 192, @@ -67139,8 +67376,8 @@ "binop": null, "updateContext": null }, - "start": 6542, - "end": 6543, + "start": 6563, + "end": 6564, "loc": { "start": { "line": 192, @@ -67164,8 +67401,8 @@ "postfix": false, "binop": null }, - "start": 6556, - "end": 6557, + "start": 6577, + "end": 6578, "loc": { "start": { "line": 193, @@ -67192,8 +67429,8 @@ "updateContext": null }, "value": "const", - "start": 6571, - "end": 6576, + "start": 6592, + "end": 6597, "loc": { "start": { "line": 195, @@ -67218,8 +67455,8 @@ "binop": null }, "value": "pickedSubs", - "start": 6577, - "end": 6587, + "start": 6598, + "end": 6608, "loc": { "start": { "line": 195, @@ -67245,8 +67482,8 @@ "updateContext": null }, "value": "=", - "start": 6588, - "end": 6589, + "start": 6609, + "end": 6610, "loc": { "start": { "line": 195, @@ -67271,8 +67508,8 @@ "binop": null }, "value": "cameraControl", - "start": 6590, - "end": 6603, + "start": 6611, + "end": 6624, "loc": { "start": { "line": 195, @@ -67297,8 +67534,8 @@ "binop": null, "updateContext": null }, - "start": 6603, - "end": 6604, + "start": 6624, + "end": 6625, "loc": { "start": { "line": 195, @@ -67323,8 +67560,8 @@ "binop": null }, "value": "hasSubs", - "start": 6604, - "end": 6611, + "start": 6625, + "end": 6632, "loc": { "start": { "line": 195, @@ -67348,8 +67585,8 @@ "postfix": false, "binop": null }, - "start": 6611, - "end": 6612, + "start": 6632, + "end": 6633, "loc": { "start": { "line": 195, @@ -67375,8 +67612,8 @@ "updateContext": null }, "value": "picked", - "start": 6612, - "end": 6620, + "start": 6633, + "end": 6641, "loc": { "start": { "line": 195, @@ -67400,8 +67637,8 @@ "postfix": false, "binop": null }, - "start": 6620, - "end": 6621, + "start": 6641, + "end": 6642, "loc": { "start": { "line": 195, @@ -67426,8 +67663,8 @@ "binop": null, "updateContext": null }, - "start": 6621, - "end": 6622, + "start": 6642, + "end": 6643, "loc": { "start": { "line": 195, @@ -67454,8 +67691,8 @@ "updateContext": null }, "value": "const", - "start": 6635, - "end": 6640, + "start": 6656, + "end": 6661, "loc": { "start": { "line": 196, @@ -67480,8 +67717,8 @@ "binop": null }, "value": "pickedNothingSubs", - "start": 6641, - "end": 6658, + "start": 6662, + "end": 6679, "loc": { "start": { "line": 196, @@ -67507,8 +67744,8 @@ "updateContext": null }, "value": "=", - "start": 6659, - "end": 6660, + "start": 6680, + "end": 6681, "loc": { "start": { "line": 196, @@ -67533,8 +67770,8 @@ "binop": null }, "value": "cameraControl", - "start": 6661, - "end": 6674, + "start": 6682, + "end": 6695, "loc": { "start": { "line": 196, @@ -67559,8 +67796,8 @@ "binop": null, "updateContext": null }, - "start": 6674, - "end": 6675, + "start": 6695, + "end": 6696, "loc": { "start": { "line": 196, @@ -67585,8 +67822,8 @@ "binop": null }, "value": "hasSubs", - "start": 6675, - "end": 6682, + "start": 6696, + "end": 6703, "loc": { "start": { "line": 196, @@ -67610,8 +67847,8 @@ "postfix": false, "binop": null }, - "start": 6682, - "end": 6683, + "start": 6703, + "end": 6704, "loc": { "start": { "line": 196, @@ -67637,8 +67874,8 @@ "updateContext": null }, "value": "pickedNothing", - "start": 6683, - "end": 6698, + "start": 6704, + "end": 6719, "loc": { "start": { "line": 196, @@ -67662,8 +67899,8 @@ "postfix": false, "binop": null }, - "start": 6698, - "end": 6699, + "start": 6719, + "end": 6720, "loc": { "start": { "line": 196, @@ -67688,8 +67925,8 @@ "binop": null, "updateContext": null }, - "start": 6699, - "end": 6700, + "start": 6720, + "end": 6721, "loc": { "start": { "line": 196, @@ -67716,8 +67953,8 @@ "updateContext": null }, "value": "const", - "start": 6713, - "end": 6718, + "start": 6734, + "end": 6739, "loc": { "start": { "line": 197, @@ -67742,8 +67979,8 @@ "binop": null }, "value": "pickedSurfaceSubs", - "start": 6719, - "end": 6736, + "start": 6740, + "end": 6757, "loc": { "start": { "line": 197, @@ -67769,8 +68006,8 @@ "updateContext": null }, "value": "=", - "start": 6737, - "end": 6738, + "start": 6758, + "end": 6759, "loc": { "start": { "line": 197, @@ -67795,8 +68032,8 @@ "binop": null }, "value": "cameraControl", - "start": 6739, - "end": 6752, + "start": 6760, + "end": 6773, "loc": { "start": { "line": 197, @@ -67821,8 +68058,8 @@ "binop": null, "updateContext": null }, - "start": 6752, - "end": 6753, + "start": 6773, + "end": 6774, "loc": { "start": { "line": 197, @@ -67847,8 +68084,8 @@ "binop": null }, "value": "hasSubs", - "start": 6753, - "end": 6760, + "start": 6774, + "end": 6781, "loc": { "start": { "line": 197, @@ -67872,8 +68109,8 @@ "postfix": false, "binop": null }, - "start": 6760, - "end": 6761, + "start": 6781, + "end": 6782, "loc": { "start": { "line": 197, @@ -67899,8 +68136,8 @@ "updateContext": null }, "value": "pickedSurface", - "start": 6761, - "end": 6776, + "start": 6782, + "end": 6797, "loc": { "start": { "line": 197, @@ -67924,8 +68161,8 @@ "postfix": false, "binop": null }, - "start": 6776, - "end": 6777, + "start": 6797, + "end": 6798, "loc": { "start": { "line": 197, @@ -67950,8 +68187,8 @@ "binop": null, "updateContext": null }, - "start": 6777, - "end": 6778, + "start": 6798, + "end": 6799, "loc": { "start": { "line": 197, @@ -67978,8 +68215,8 @@ "updateContext": null }, "value": "const", - "start": 6791, - "end": 6796, + "start": 6812, + "end": 6817, "loc": { "start": { "line": 198, @@ -68004,8 +68241,8 @@ "binop": null }, "value": "doublePickedSubs", - "start": 6797, - "end": 6813, + "start": 6818, + "end": 6834, "loc": { "start": { "line": 198, @@ -68031,8 +68268,8 @@ "updateContext": null }, "value": "=", - "start": 6814, - "end": 6815, + "start": 6835, + "end": 6836, "loc": { "start": { "line": 198, @@ -68057,8 +68294,8 @@ "binop": null }, "value": "cameraControl", - "start": 6816, - "end": 6829, + "start": 6837, + "end": 6850, "loc": { "start": { "line": 198, @@ -68083,8 +68320,8 @@ "binop": null, "updateContext": null }, - "start": 6829, - "end": 6830, + "start": 6850, + "end": 6851, "loc": { "start": { "line": 198, @@ -68109,8 +68346,8 @@ "binop": null }, "value": "hasSubs", - "start": 6830, - "end": 6837, + "start": 6851, + "end": 6858, "loc": { "start": { "line": 198, @@ -68134,8 +68371,8 @@ "postfix": false, "binop": null }, - "start": 6837, - "end": 6838, + "start": 6858, + "end": 6859, "loc": { "start": { "line": 198, @@ -68161,8 +68398,8 @@ "updateContext": null }, "value": "doublePicked", - "start": 6838, - "end": 6852, + "start": 6859, + "end": 6873, "loc": { "start": { "line": 198, @@ -68186,8 +68423,8 @@ "postfix": false, "binop": null }, - "start": 6852, - "end": 6853, + "start": 6873, + "end": 6874, "loc": { "start": { "line": 198, @@ -68212,8 +68449,8 @@ "binop": null, "updateContext": null }, - "start": 6853, - "end": 6854, + "start": 6874, + "end": 6875, "loc": { "start": { "line": 198, @@ -68240,8 +68477,8 @@ "updateContext": null }, "value": "const", - "start": 6867, - "end": 6872, + "start": 6888, + "end": 6893, "loc": { "start": { "line": 199, @@ -68266,8 +68503,8 @@ "binop": null }, "value": "doublePickedSurfaceSubs", - "start": 6873, - "end": 6896, + "start": 6894, + "end": 6917, "loc": { "start": { "line": 199, @@ -68293,8 +68530,8 @@ "updateContext": null }, "value": "=", - "start": 6897, - "end": 6898, + "start": 6918, + "end": 6919, "loc": { "start": { "line": 199, @@ -68319,8 +68556,8 @@ "binop": null }, "value": "cameraControl", - "start": 6899, - "end": 6912, + "start": 6920, + "end": 6933, "loc": { "start": { "line": 199, @@ -68345,8 +68582,8 @@ "binop": null, "updateContext": null }, - "start": 6912, - "end": 6913, + "start": 6933, + "end": 6934, "loc": { "start": { "line": 199, @@ -68371,8 +68608,8 @@ "binop": null }, "value": "hasSubs", - "start": 6913, - "end": 6920, + "start": 6934, + "end": 6941, "loc": { "start": { "line": 199, @@ -68396,8 +68633,8 @@ "postfix": false, "binop": null }, - "start": 6920, - "end": 6921, + "start": 6941, + "end": 6942, "loc": { "start": { "line": 199, @@ -68423,8 +68660,8 @@ "updateContext": null }, "value": "doublePickedSurface", - "start": 6921, - "end": 6942, + "start": 6942, + "end": 6963, "loc": { "start": { "line": 199, @@ -68448,8 +68685,8 @@ "postfix": false, "binop": null }, - "start": 6942, - "end": 6943, + "start": 6963, + "end": 6964, "loc": { "start": { "line": 199, @@ -68474,8 +68711,8 @@ "binop": null, "updateContext": null }, - "start": 6943, - "end": 6944, + "start": 6964, + "end": 6965, "loc": { "start": { "line": 199, @@ -68502,8 +68739,8 @@ "updateContext": null }, "value": "const", - "start": 6957, - "end": 6962, + "start": 6978, + "end": 6983, "loc": { "start": { "line": 200, @@ -68528,8 +68765,8 @@ "binop": null }, "value": "doublePickedNothingSubs", - "start": 6963, - "end": 6986, + "start": 6984, + "end": 7007, "loc": { "start": { "line": 200, @@ -68555,8 +68792,8 @@ "updateContext": null }, "value": "=", - "start": 6987, - "end": 6988, + "start": 7008, + "end": 7009, "loc": { "start": { "line": 200, @@ -68581,8 +68818,8 @@ "binop": null }, "value": "cameraControl", - "start": 6989, - "end": 7002, + "start": 7010, + "end": 7023, "loc": { "start": { "line": 200, @@ -68607,8 +68844,8 @@ "binop": null, "updateContext": null }, - "start": 7002, - "end": 7003, + "start": 7023, + "end": 7024, "loc": { "start": { "line": 200, @@ -68633,8 +68870,8 @@ "binop": null }, "value": "hasSubs", - "start": 7003, - "end": 7010, + "start": 7024, + "end": 7031, "loc": { "start": { "line": 200, @@ -68658,8 +68895,8 @@ "postfix": false, "binop": null }, - "start": 7010, - "end": 7011, + "start": 7031, + "end": 7032, "loc": { "start": { "line": 200, @@ -68685,8 +68922,8 @@ "updateContext": null }, "value": "doublePickedNothing", - "start": 7011, - "end": 7032, + "start": 7032, + "end": 7053, "loc": { "start": { "line": 200, @@ -68710,8 +68947,8 @@ "postfix": false, "binop": null }, - "start": 7032, - "end": 7033, + "start": 7053, + "end": 7054, "loc": { "start": { "line": 200, @@ -68736,8 +68973,8 @@ "binop": null, "updateContext": null }, - "start": 7033, - "end": 7034, + "start": 7054, + "end": 7055, "loc": { "start": { "line": 200, @@ -68764,8 +69001,8 @@ "updateContext": null }, "value": "if", - "start": 7048, - "end": 7050, + "start": 7069, + "end": 7071, "loc": { "start": { "line": 202, @@ -68789,8 +69026,8 @@ "postfix": false, "binop": null }, - "start": 7051, - "end": 7052, + "start": 7072, + "end": 7073, "loc": { "start": { "line": 202, @@ -68814,8 +69051,8 @@ "postfix": false, "binop": null }, - "start": 7052, - "end": 7053, + "start": 7073, + "end": 7074, "loc": { "start": { "line": 202, @@ -68841,8 +69078,8 @@ "updateContext": null }, "value": "!", - "start": 7053, - "end": 7054, + "start": 7074, + "end": 7075, "loc": { "start": { "line": 202, @@ -68867,8 +69104,8 @@ "binop": null }, "value": "configs", - "start": 7054, - "end": 7061, + "start": 7075, + "end": 7082, "loc": { "start": { "line": 202, @@ -68893,8 +69130,8 @@ "binop": null, "updateContext": null }, - "start": 7061, - "end": 7062, + "start": 7082, + "end": 7083, "loc": { "start": { "line": 202, @@ -68919,8 +69156,8 @@ "binop": null }, "value": "doublePickFlyTo", - "start": 7062, - "end": 7077, + "start": 7083, + "end": 7098, "loc": { "start": { "line": 202, @@ -68944,8 +69181,8 @@ "postfix": false, "binop": null }, - "start": 7077, - "end": 7078, + "start": 7098, + "end": 7099, "loc": { "start": { "line": 202, @@ -68971,8 +69208,8 @@ "updateContext": null }, "value": "&&", - "start": 7079, - "end": 7081, + "start": 7100, + "end": 7102, "loc": { "start": { "line": 202, @@ -68996,8 +69233,8 @@ "postfix": false, "binop": null }, - "start": 7098, - "end": 7099, + "start": 7119, + "end": 7120, "loc": { "start": { "line": 203, @@ -69023,8 +69260,8 @@ "updateContext": null }, "value": "!", - "start": 7099, - "end": 7100, + "start": 7120, + "end": 7121, "loc": { "start": { "line": 203, @@ -69049,8 +69286,8 @@ "binop": null }, "value": "doublePickedSubs", - "start": 7100, - "end": 7116, + "start": 7121, + "end": 7137, "loc": { "start": { "line": 203, @@ -69074,8 +69311,8 @@ "postfix": false, "binop": null }, - "start": 7116, - "end": 7117, + "start": 7137, + "end": 7138, "loc": { "start": { "line": 203, @@ -69101,8 +69338,8 @@ "updateContext": null }, "value": "&&", - "start": 7118, - "end": 7120, + "start": 7139, + "end": 7141, "loc": { "start": { "line": 203, @@ -69126,8 +69363,8 @@ "postfix": false, "binop": null }, - "start": 7137, - "end": 7138, + "start": 7158, + "end": 7159, "loc": { "start": { "line": 204, @@ -69153,8 +69390,8 @@ "updateContext": null }, "value": "!", - "start": 7138, - "end": 7139, + "start": 7159, + "end": 7160, "loc": { "start": { "line": 204, @@ -69179,8 +69416,8 @@ "binop": null }, "value": "doublePickedSurfaceSubs", - "start": 7139, - "end": 7162, + "start": 7160, + "end": 7183, "loc": { "start": { "line": 204, @@ -69204,8 +69441,8 @@ "postfix": false, "binop": null }, - "start": 7162, - "end": 7163, + "start": 7183, + "end": 7184, "loc": { "start": { "line": 204, @@ -69231,8 +69468,8 @@ "updateContext": null }, "value": "&&", - "start": 7164, - "end": 7166, + "start": 7185, + "end": 7187, "loc": { "start": { "line": 204, @@ -69256,8 +69493,8 @@ "postfix": false, "binop": null }, - "start": 7183, - "end": 7184, + "start": 7204, + "end": 7205, "loc": { "start": { "line": 205, @@ -69283,8 +69520,8 @@ "updateContext": null }, "value": "!", - "start": 7184, - "end": 7185, + "start": 7205, + "end": 7206, "loc": { "start": { "line": 205, @@ -69309,8 +69546,8 @@ "binop": null }, "value": "doublePickedNothingSubs", - "start": 7185, - "end": 7208, + "start": 7206, + "end": 7229, "loc": { "start": { "line": 205, @@ -69334,8 +69571,8 @@ "postfix": false, "binop": null }, - "start": 7208, - "end": 7209, + "start": 7229, + "end": 7230, "loc": { "start": { "line": 205, @@ -69359,8 +69596,8 @@ "postfix": false, "binop": null }, - "start": 7209, - "end": 7210, + "start": 7230, + "end": 7231, "loc": { "start": { "line": 205, @@ -69384,8 +69621,8 @@ "postfix": false, "binop": null }, - "start": 7211, - "end": 7212, + "start": 7232, + "end": 7233, "loc": { "start": { "line": 205, @@ -69400,8 +69637,8 @@ { "type": "CommentLine", "value": " Avoid the single/double click differentiation timeout", - "start": 7230, - "end": 7287, + "start": 7251, + "end": 7308, "loc": { "start": { "line": 207, @@ -69428,8 +69665,8 @@ "updateContext": null }, "value": "if", - "start": 7305, - "end": 7307, + "start": 7326, + "end": 7328, "loc": { "start": { "line": 209, @@ -69453,8 +69690,8 @@ "postfix": false, "binop": null }, - "start": 7308, - "end": 7309, + "start": 7329, + "end": 7330, "loc": { "start": { "line": 209, @@ -69479,8 +69716,8 @@ "binop": null }, "value": "pickedSubs", - "start": 7309, - "end": 7319, + "start": 7330, + "end": 7340, "loc": { "start": { "line": 209, @@ -69506,8 +69743,8 @@ "updateContext": null }, "value": "||", - "start": 7320, - "end": 7322, + "start": 7341, + "end": 7343, "loc": { "start": { "line": 209, @@ -69532,8 +69769,8 @@ "binop": null }, "value": "pickedNothingSubs", - "start": 7323, - "end": 7340, + "start": 7344, + "end": 7361, "loc": { "start": { "line": 209, @@ -69559,8 +69796,8 @@ "updateContext": null }, "value": "||", - "start": 7341, - "end": 7343, + "start": 7362, + "end": 7364, "loc": { "start": { "line": 209, @@ -69585,8 +69822,8 @@ "binop": null }, "value": "pickedSurfaceSubs", - "start": 7344, - "end": 7361, + "start": 7365, + "end": 7382, "loc": { "start": { "line": 209, @@ -69610,8 +69847,8 @@ "postfix": false, "binop": null }, - "start": 7361, - "end": 7362, + "start": 7382, + "end": 7383, "loc": { "start": { "line": 209, @@ -69635,8 +69872,8 @@ "postfix": false, "binop": null }, - "start": 7363, - "end": 7364, + "start": 7384, + "end": 7385, "loc": { "start": { "line": 209, @@ -69661,8 +69898,8 @@ "binop": null }, "value": "pickController", - "start": 7386, - "end": 7400, + "start": 7407, + "end": 7421, "loc": { "start": { "line": 211, @@ -69687,8 +69924,8 @@ "binop": null, "updateContext": null }, - "start": 7400, - "end": 7401, + "start": 7421, + "end": 7422, "loc": { "start": { "line": 211, @@ -69713,8 +69950,8 @@ "binop": null }, "value": "pickCursorPos", - "start": 7401, - "end": 7414, + "start": 7422, + "end": 7435, "loc": { "start": { "line": 211, @@ -69740,8 +69977,8 @@ "updateContext": null }, "value": "=", - "start": 7415, - "end": 7416, + "start": 7436, + "end": 7437, "loc": { "start": { "line": 211, @@ -69766,8 +70003,8 @@ "binop": null }, "value": "states", - "start": 7417, - "end": 7423, + "start": 7438, + "end": 7444, "loc": { "start": { "line": 211, @@ -69792,8 +70029,8 @@ "binop": null, "updateContext": null }, - "start": 7423, - "end": 7424, + "start": 7444, + "end": 7445, "loc": { "start": { "line": 211, @@ -69818,8 +70055,8 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 7424, - "end": 7440, + "start": 7445, + "end": 7461, "loc": { "start": { "line": 211, @@ -69844,8 +70081,8 @@ "binop": null, "updateContext": null }, - "start": 7440, - "end": 7441, + "start": 7461, + "end": 7462, "loc": { "start": { "line": 211, @@ -69870,8 +70107,8 @@ "binop": null }, "value": "pickController", - "start": 7462, - "end": 7476, + "start": 7483, + "end": 7497, "loc": { "start": { "line": 212, @@ -69896,8 +70133,8 @@ "binop": null, "updateContext": null }, - "start": 7476, - "end": 7477, + "start": 7497, + "end": 7498, "loc": { "start": { "line": 212, @@ -69922,8 +70159,8 @@ "binop": null }, "value": "schedulePickEntity", - "start": 7477, - "end": 7495, + "start": 7498, + "end": 7516, "loc": { "start": { "line": 212, @@ -69949,8 +70186,8 @@ "updateContext": null }, "value": "=", - "start": 7496, - "end": 7497, + "start": 7517, + "end": 7518, "loc": { "start": { "line": 212, @@ -69977,8 +70214,8 @@ "updateContext": null }, "value": "true", - "start": 7498, - "end": 7502, + "start": 7519, + "end": 7523, "loc": { "start": { "line": 212, @@ -70003,8 +70240,8 @@ "binop": null, "updateContext": null }, - "start": 7502, - "end": 7503, + "start": 7523, + "end": 7524, "loc": { "start": { "line": 212, @@ -70029,8 +70266,8 @@ "binop": null }, "value": "pickController", - "start": 7524, - "end": 7538, + "start": 7545, + "end": 7559, "loc": { "start": { "line": 213, @@ -70055,8 +70292,8 @@ "binop": null, "updateContext": null }, - "start": 7538, - "end": 7539, + "start": 7559, + "end": 7560, "loc": { "start": { "line": 213, @@ -70081,8 +70318,8 @@ "binop": null }, "value": "schedulePickSurface", - "start": 7539, - "end": 7558, + "start": 7560, + "end": 7579, "loc": { "start": { "line": 213, @@ -70108,8 +70345,8 @@ "updateContext": null }, "value": "=", - "start": 7559, - "end": 7560, + "start": 7580, + "end": 7581, "loc": { "start": { "line": 213, @@ -70134,8 +70371,8 @@ "binop": null }, "value": "pickedSurfaceSubs", - "start": 7561, - "end": 7578, + "start": 7582, + "end": 7599, "loc": { "start": { "line": 213, @@ -70160,8 +70397,8 @@ "binop": null, "updateContext": null }, - "start": 7578, - "end": 7579, + "start": 7599, + "end": 7600, "loc": { "start": { "line": 213, @@ -70186,8 +70423,8 @@ "binop": null }, "value": "pickController", - "start": 7600, - "end": 7614, + "start": 7621, + "end": 7635, "loc": { "start": { "line": 214, @@ -70212,8 +70449,8 @@ "binop": null, "updateContext": null }, - "start": 7614, - "end": 7615, + "start": 7635, + "end": 7636, "loc": { "start": { "line": 214, @@ -70238,8 +70475,8 @@ "binop": null }, "value": "update", - "start": 7615, - "end": 7621, + "start": 7636, + "end": 7642, "loc": { "start": { "line": 214, @@ -70263,8 +70500,8 @@ "postfix": false, "binop": null }, - "start": 7621, - "end": 7622, + "start": 7642, + "end": 7643, "loc": { "start": { "line": 214, @@ -70288,8 +70525,8 @@ "postfix": false, "binop": null }, - "start": 7622, - "end": 7623, + "start": 7643, + "end": 7644, "loc": { "start": { "line": 214, @@ -70314,8 +70551,8 @@ "binop": null, "updateContext": null }, - "start": 7623, - "end": 7624, + "start": 7644, + "end": 7645, "loc": { "start": { "line": 214, @@ -70342,8 +70579,8 @@ "updateContext": null }, "value": "if", - "start": 7646, - "end": 7648, + "start": 7667, + "end": 7669, "loc": { "start": { "line": 216, @@ -70367,8 +70604,8 @@ "postfix": false, "binop": null }, - "start": 7649, - "end": 7650, + "start": 7670, + "end": 7671, "loc": { "start": { "line": 216, @@ -70393,8 +70630,8 @@ "binop": null }, "value": "pickController", - "start": 7650, - "end": 7664, + "start": 7671, + "end": 7685, "loc": { "start": { "line": 216, @@ -70419,8 +70656,8 @@ "binop": null, "updateContext": null }, - "start": 7664, - "end": 7665, + "start": 7685, + "end": 7686, "loc": { "start": { "line": 216, @@ -70445,8 +70682,8 @@ "binop": null }, "value": "pickResult", - "start": 7665, - "end": 7675, + "start": 7686, + "end": 7696, "loc": { "start": { "line": 216, @@ -70470,8 +70707,8 @@ "postfix": false, "binop": null }, - "start": 7675, - "end": 7676, + "start": 7696, + "end": 7697, "loc": { "start": { "line": 216, @@ -70495,8 +70732,8 @@ "postfix": false, "binop": null }, - "start": 7677, - "end": 7678, + "start": 7698, + "end": 7699, "loc": { "start": { "line": 216, @@ -70521,8 +70758,8 @@ "binop": null }, "value": "cameraControl", - "start": 7704, - "end": 7717, + "start": 7725, + "end": 7738, "loc": { "start": { "line": 218, @@ -70547,8 +70784,8 @@ "binop": null, "updateContext": null }, - "start": 7717, - "end": 7718, + "start": 7738, + "end": 7739, "loc": { "start": { "line": 218, @@ -70573,8 +70810,8 @@ "binop": null }, "value": "fire", - "start": 7718, - "end": 7722, + "start": 7739, + "end": 7743, "loc": { "start": { "line": 218, @@ -70598,8 +70835,8 @@ "postfix": false, "binop": null }, - "start": 7722, - "end": 7723, + "start": 7743, + "end": 7744, "loc": { "start": { "line": 218, @@ -70625,8 +70862,8 @@ "updateContext": null }, "value": "picked", - "start": 7723, - "end": 7731, + "start": 7744, + "end": 7752, "loc": { "start": { "line": 218, @@ -70651,8 +70888,8 @@ "binop": null, "updateContext": null }, - "start": 7731, - "end": 7732, + "start": 7752, + "end": 7753, "loc": { "start": { "line": 218, @@ -70677,8 +70914,8 @@ "binop": null }, "value": "pickController", - "start": 7733, - "end": 7747, + "start": 7754, + "end": 7768, "loc": { "start": { "line": 218, @@ -70703,8 +70940,8 @@ "binop": null, "updateContext": null }, - "start": 7747, - "end": 7748, + "start": 7768, + "end": 7769, "loc": { "start": { "line": 218, @@ -70729,8 +70966,8 @@ "binop": null }, "value": "pickResult", - "start": 7748, - "end": 7758, + "start": 7769, + "end": 7779, "loc": { "start": { "line": 218, @@ -70755,8 +70992,8 @@ "binop": null, "updateContext": null }, - "start": 7758, - "end": 7759, + "start": 7779, + "end": 7780, "loc": { "start": { "line": 218, @@ -70783,8 +71020,8 @@ "updateContext": null }, "value": "true", - "start": 7760, - "end": 7764, + "start": 7781, + "end": 7785, "loc": { "start": { "line": 218, @@ -70808,8 +71045,8 @@ "postfix": false, "binop": null }, - "start": 7764, - "end": 7765, + "start": 7785, + "end": 7786, "loc": { "start": { "line": 218, @@ -70834,8 +71071,8 @@ "binop": null, "updateContext": null }, - "start": 7765, - "end": 7766, + "start": 7786, + "end": 7787, "loc": { "start": { "line": 218, @@ -70862,8 +71099,8 @@ "updateContext": null }, "value": "if", - "start": 7792, - "end": 7794, + "start": 7813, + "end": 7815, "loc": { "start": { "line": 220, @@ -70887,8 +71124,8 @@ "postfix": false, "binop": null }, - "start": 7795, - "end": 7796, + "start": 7816, + "end": 7817, "loc": { "start": { "line": 220, @@ -70913,8 +71150,8 @@ "binop": null }, "value": "pickController", - "start": 7796, - "end": 7810, + "start": 7817, + "end": 7831, "loc": { "start": { "line": 220, @@ -70939,8 +71176,8 @@ "binop": null, "updateContext": null }, - "start": 7810, - "end": 7811, + "start": 7831, + "end": 7832, "loc": { "start": { "line": 220, @@ -70965,8 +71202,8 @@ "binop": null }, "value": "pickedSurface", - "start": 7811, - "end": 7824, + "start": 7832, + "end": 7845, "loc": { "start": { "line": 220, @@ -70990,8 +71227,8 @@ "postfix": false, "binop": null }, - "start": 7824, - "end": 7825, + "start": 7845, + "end": 7846, "loc": { "start": { "line": 220, @@ -71015,8 +71252,8 @@ "postfix": false, "binop": null }, - "start": 7826, - "end": 7827, + "start": 7847, + "end": 7848, "loc": { "start": { "line": 220, @@ -71041,8 +71278,8 @@ "binop": null }, "value": "cameraControl", - "start": 7856, - "end": 7869, + "start": 7877, + "end": 7890, "loc": { "start": { "line": 221, @@ -71067,8 +71304,8 @@ "binop": null, "updateContext": null }, - "start": 7869, - "end": 7870, + "start": 7890, + "end": 7891, "loc": { "start": { "line": 221, @@ -71093,8 +71330,8 @@ "binop": null }, "value": "fire", - "start": 7870, - "end": 7874, + "start": 7891, + "end": 7895, "loc": { "start": { "line": 221, @@ -71118,8 +71355,8 @@ "postfix": false, "binop": null }, - "start": 7874, - "end": 7875, + "start": 7895, + "end": 7896, "loc": { "start": { "line": 221, @@ -71145,8 +71382,8 @@ "updateContext": null }, "value": "pickedSurface", - "start": 7875, - "end": 7890, + "start": 7896, + "end": 7911, "loc": { "start": { "line": 221, @@ -71171,8 +71408,8 @@ "binop": null, "updateContext": null }, - "start": 7890, - "end": 7891, + "start": 7911, + "end": 7912, "loc": { "start": { "line": 221, @@ -71197,8 +71434,8 @@ "binop": null }, "value": "pickController", - "start": 7892, - "end": 7906, + "start": 7913, + "end": 7927, "loc": { "start": { "line": 221, @@ -71223,8 +71460,8 @@ "binop": null, "updateContext": null }, - "start": 7906, - "end": 7907, + "start": 7927, + "end": 7928, "loc": { "start": { "line": 221, @@ -71249,8 +71486,8 @@ "binop": null }, "value": "pickResult", - "start": 7907, - "end": 7917, + "start": 7928, + "end": 7938, "loc": { "start": { "line": 221, @@ -71275,8 +71512,8 @@ "binop": null, "updateContext": null }, - "start": 7917, - "end": 7918, + "start": 7938, + "end": 7939, "loc": { "start": { "line": 221, @@ -71303,8 +71540,8 @@ "updateContext": null }, "value": "true", - "start": 7919, - "end": 7923, + "start": 7940, + "end": 7944, "loc": { "start": { "line": 221, @@ -71328,8 +71565,8 @@ "postfix": false, "binop": null }, - "start": 7923, - "end": 7924, + "start": 7944, + "end": 7945, "loc": { "start": { "line": 221, @@ -71354,8 +71591,8 @@ "binop": null, "updateContext": null }, - "start": 7924, - "end": 7925, + "start": 7945, + "end": 7946, "loc": { "start": { "line": 221, @@ -71379,8 +71616,8 @@ "postfix": false, "binop": null }, - "start": 7950, - "end": 7951, + "start": 7971, + "end": 7972, "loc": { "start": { "line": 222, @@ -71404,8 +71641,8 @@ "postfix": false, "binop": null }, - "start": 7972, - "end": 7973, + "start": 7993, + "end": 7994, "loc": { "start": { "line": 223, @@ -71432,8 +71669,8 @@ "updateContext": null }, "value": "else", - "start": 7974, - "end": 7978, + "start": 7995, + "end": 7999, "loc": { "start": { "line": 223, @@ -71457,8 +71694,8 @@ "postfix": false, "binop": null }, - "start": 7979, - "end": 7980, + "start": 8000, + "end": 8001, "loc": { "start": { "line": 223, @@ -71483,8 +71720,8 @@ "binop": null }, "value": "cameraControl", - "start": 8005, - "end": 8018, + "start": 8026, + "end": 8039, "loc": { "start": { "line": 224, @@ -71509,8 +71746,8 @@ "binop": null, "updateContext": null }, - "start": 8018, - "end": 8019, + "start": 8039, + "end": 8040, "loc": { "start": { "line": 224, @@ -71535,8 +71772,8 @@ "binop": null }, "value": "fire", - "start": 8019, - "end": 8023, + "start": 8040, + "end": 8044, "loc": { "start": { "line": 224, @@ -71560,8 +71797,8 @@ "postfix": false, "binop": null }, - "start": 8023, - "end": 8024, + "start": 8044, + "end": 8045, "loc": { "start": { "line": 224, @@ -71587,8 +71824,8 @@ "updateContext": null }, "value": "pickedNothing", - "start": 8024, - "end": 8039, + "start": 8045, + "end": 8060, "loc": { "start": { "line": 224, @@ -71613,8 +71850,8 @@ "binop": null, "updateContext": null }, - "start": 8039, - "end": 8040, + "start": 8060, + "end": 8061, "loc": { "start": { "line": 224, @@ -71638,8 +71875,8 @@ "postfix": false, "binop": null }, - "start": 8041, - "end": 8042, + "start": 8062, + "end": 8063, "loc": { "start": { "line": 224, @@ -71664,8 +71901,8 @@ "binop": null }, "value": "canvasPos", - "start": 8071, - "end": 8080, + "start": 8092, + "end": 8101, "loc": { "start": { "line": 225, @@ -71690,8 +71927,8 @@ "binop": null, "updateContext": null }, - "start": 8080, - "end": 8081, + "start": 8101, + "end": 8102, "loc": { "start": { "line": 225, @@ -71716,8 +71953,8 @@ "binop": null }, "value": "states", - "start": 8082, - "end": 8088, + "start": 8103, + "end": 8109, "loc": { "start": { "line": 225, @@ -71742,8 +71979,8 @@ "binop": null, "updateContext": null }, - "start": 8088, - "end": 8089, + "start": 8109, + "end": 8110, "loc": { "start": { "line": 225, @@ -71768,8 +72005,8 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 8089, - "end": 8105, + "start": 8110, + "end": 8126, "loc": { "start": { "line": 225, @@ -71793,8 +72030,8 @@ "postfix": false, "binop": null }, - "start": 8130, - "end": 8131, + "start": 8151, + "end": 8152, "loc": { "start": { "line": 226, @@ -71819,8 +72056,8 @@ "binop": null, "updateContext": null }, - "start": 8131, - "end": 8132, + "start": 8152, + "end": 8153, "loc": { "start": { "line": 226, @@ -71847,8 +72084,8 @@ "updateContext": null }, "value": "true", - "start": 8133, - "end": 8137, + "start": 8154, + "end": 8158, "loc": { "start": { "line": 226, @@ -71872,8 +72109,8 @@ "postfix": false, "binop": null }, - "start": 8137, - "end": 8138, + "start": 8158, + "end": 8159, "loc": { "start": { "line": 226, @@ -71898,8 +72135,8 @@ "binop": null, "updateContext": null }, - "start": 8138, - "end": 8139, + "start": 8159, + "end": 8160, "loc": { "start": { "line": 226, @@ -71923,8 +72160,8 @@ "postfix": false, "binop": null }, - "start": 8160, - "end": 8161, + "start": 8181, + "end": 8182, "loc": { "start": { "line": 227, @@ -71948,8 +72185,8 @@ "postfix": false, "binop": null }, - "start": 8178, - "end": 8179, + "start": 8199, + "end": 8200, "loc": { "start": { "line": 228, @@ -71976,8 +72213,8 @@ "updateContext": null }, "value": "this", - "start": 8197, - "end": 8201, + "start": 8218, + "end": 8222, "loc": { "start": { "line": 230, @@ -72002,8 +72239,8 @@ "binop": null, "updateContext": null }, - "start": 8201, - "end": 8202, + "start": 8222, + "end": 8223, "loc": { "start": { "line": 230, @@ -72028,8 +72265,8 @@ "binop": null }, "value": "_clicks", - "start": 8202, - "end": 8209, + "start": 8223, + "end": 8230, "loc": { "start": { "line": 230, @@ -72055,8 +72292,8 @@ "updateContext": null }, "value": "=", - "start": 8210, - "end": 8211, + "start": 8231, + "end": 8232, "loc": { "start": { "line": 230, @@ -72082,8 +72319,8 @@ "updateContext": null }, "value": 0, - "start": 8212, - "end": 8213, + "start": 8233, + "end": 8234, "loc": { "start": { "line": 230, @@ -72108,8 +72345,8 @@ "binop": null, "updateContext": null }, - "start": 8213, - "end": 8214, + "start": 8234, + "end": 8235, "loc": { "start": { "line": 230, @@ -72136,8 +72373,8 @@ "updateContext": null }, "value": "return", - "start": 8232, - "end": 8238, + "start": 8253, + "end": 8259, "loc": { "start": { "line": 232, @@ -72162,8 +72399,8 @@ "binop": null, "updateContext": null }, - "start": 8238, - "end": 8239, + "start": 8259, + "end": 8260, "loc": { "start": { "line": 232, @@ -72187,8 +72424,8 @@ "postfix": false, "binop": null }, - "start": 8252, - "end": 8253, + "start": 8273, + "end": 8274, "loc": { "start": { "line": 233, @@ -72215,8 +72452,8 @@ "updateContext": null }, "value": "this", - "start": 8267, - "end": 8271, + "start": 8288, + "end": 8292, "loc": { "start": { "line": 235, @@ -72241,8 +72478,8 @@ "binop": null, "updateContext": null }, - "start": 8271, - "end": 8272, + "start": 8292, + "end": 8293, "loc": { "start": { "line": 235, @@ -72267,8 +72504,8 @@ "binop": null }, "value": "_clicks", - "start": 8272, - "end": 8279, + "start": 8293, + "end": 8300, "loc": { "start": { "line": 235, @@ -72293,8 +72530,8 @@ "binop": null }, "value": "++", - "start": 8279, - "end": 8281, + "start": 8300, + "end": 8302, "loc": { "start": { "line": 235, @@ -72319,8 +72556,8 @@ "binop": null, "updateContext": null }, - "start": 8281, - "end": 8282, + "start": 8302, + "end": 8303, "loc": { "start": { "line": 235, @@ -72347,8 +72584,8 @@ "updateContext": null }, "value": "if", - "start": 8296, - "end": 8298, + "start": 8317, + "end": 8319, "loc": { "start": { "line": 237, @@ -72372,8 +72609,8 @@ "postfix": false, "binop": null }, - "start": 8299, - "end": 8300, + "start": 8320, + "end": 8321, "loc": { "start": { "line": 237, @@ -72400,8 +72637,8 @@ "updateContext": null }, "value": "this", - "start": 8300, - "end": 8304, + "start": 8321, + "end": 8325, "loc": { "start": { "line": 237, @@ -72426,8 +72663,8 @@ "binop": null, "updateContext": null }, - "start": 8304, - "end": 8305, + "start": 8325, + "end": 8326, "loc": { "start": { "line": 237, @@ -72452,8 +72689,8 @@ "binop": null }, "value": "_clicks", - "start": 8305, - "end": 8312, + "start": 8326, + "end": 8333, "loc": { "start": { "line": 237, @@ -72479,8 +72716,8 @@ "updateContext": null }, "value": "===", - "start": 8313, - "end": 8316, + "start": 8334, + "end": 8337, "loc": { "start": { "line": 237, @@ -72506,8 +72743,8 @@ "updateContext": null }, "value": 1, - "start": 8317, - "end": 8318, + "start": 8338, + "end": 8339, "loc": { "start": { "line": 237, @@ -72531,8 +72768,8 @@ "postfix": false, "binop": null }, - "start": 8318, - "end": 8319, + "start": 8339, + "end": 8340, "loc": { "start": { "line": 237, @@ -72556,8 +72793,8 @@ "postfix": false, "binop": null }, - "start": 8320, - "end": 8321, + "start": 8341, + "end": 8342, "loc": { "start": { "line": 237, @@ -72572,8 +72809,8 @@ { "type": "CommentLine", "value": " First click", - "start": 8322, - "end": 8336, + "start": 8343, + "end": 8357, "loc": { "start": { "line": 237, @@ -72600,8 +72837,8 @@ "updateContext": null }, "value": "this", - "start": 8354, - "end": 8358, + "start": 8375, + "end": 8379, "loc": { "start": { "line": 239, @@ -72626,8 +72863,8 @@ "binop": null, "updateContext": null }, - "start": 8358, - "end": 8359, + "start": 8379, + "end": 8380, "loc": { "start": { "line": 239, @@ -72652,8 +72889,8 @@ "binop": null }, "value": "_timeout", - "start": 8359, - "end": 8367, + "start": 8380, + "end": 8388, "loc": { "start": { "line": 239, @@ -72679,8 +72916,8 @@ "updateContext": null }, "value": "=", - "start": 8368, - "end": 8369, + "start": 8389, + "end": 8390, "loc": { "start": { "line": 239, @@ -72705,8 +72942,8 @@ "binop": null }, "value": "setTimeout", - "start": 8370, - "end": 8380, + "start": 8391, + "end": 8401, "loc": { "start": { "line": 239, @@ -72730,8 +72967,8 @@ "postfix": false, "binop": null }, - "start": 8380, - "end": 8381, + "start": 8401, + "end": 8402, "loc": { "start": { "line": 239, @@ -72755,8 +72992,8 @@ "postfix": false, "binop": null }, - "start": 8381, - "end": 8382, + "start": 8402, + "end": 8403, "loc": { "start": { "line": 239, @@ -72780,8 +73017,8 @@ "postfix": false, "binop": null }, - "start": 8382, - "end": 8383, + "start": 8403, + "end": 8404, "loc": { "start": { "line": 239, @@ -72806,8 +73043,8 @@ "binop": null, "updateContext": null }, - "start": 8384, - "end": 8386, + "start": 8405, + "end": 8407, "loc": { "start": { "line": 239, @@ -72831,8 +73068,8 @@ "postfix": false, "binop": null }, - "start": 8387, - "end": 8388, + "start": 8408, + "end": 8409, "loc": { "start": { "line": 239, @@ -72857,8 +73094,8 @@ "binop": null }, "value": "pickController", - "start": 8410, - "end": 8424, + "start": 8431, + "end": 8445, "loc": { "start": { "line": 241, @@ -72883,8 +73120,8 @@ "binop": null, "updateContext": null }, - "start": 8424, - "end": 8425, + "start": 8445, + "end": 8446, "loc": { "start": { "line": 241, @@ -72909,8 +73146,8 @@ "binop": null }, "value": "pickCursorPos", - "start": 8425, - "end": 8438, + "start": 8446, + "end": 8459, "loc": { "start": { "line": 241, @@ -72936,8 +73173,8 @@ "updateContext": null }, "value": "=", - "start": 8439, - "end": 8440, + "start": 8460, + "end": 8461, "loc": { "start": { "line": 241, @@ -72962,8 +73199,8 @@ "binop": null }, "value": "states", - "start": 8441, - "end": 8447, + "start": 8462, + "end": 8468, "loc": { "start": { "line": 241, @@ -72988,8 +73225,8 @@ "binop": null, "updateContext": null }, - "start": 8447, - "end": 8448, + "start": 8468, + "end": 8469, "loc": { "start": { "line": 241, @@ -73014,8 +73251,8 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 8448, - "end": 8464, + "start": 8469, + "end": 8485, "loc": { "start": { "line": 241, @@ -73040,8 +73277,8 @@ "binop": null, "updateContext": null }, - "start": 8464, - "end": 8465, + "start": 8485, + "end": 8486, "loc": { "start": { "line": 241, @@ -73066,8 +73303,8 @@ "binop": null }, "value": "pickController", - "start": 8486, - "end": 8500, + "start": 8507, + "end": 8521, "loc": { "start": { "line": 242, @@ -73092,8 +73329,8 @@ "binop": null, "updateContext": null }, - "start": 8500, - "end": 8501, + "start": 8521, + "end": 8522, "loc": { "start": { "line": 242, @@ -73118,8 +73355,8 @@ "binop": null }, "value": "schedulePickEntity", - "start": 8501, - "end": 8519, + "start": 8522, + "end": 8540, "loc": { "start": { "line": 242, @@ -73145,8 +73382,8 @@ "updateContext": null }, "value": "=", - "start": 8520, - "end": 8521, + "start": 8541, + "end": 8542, "loc": { "start": { "line": 242, @@ -73171,8 +73408,8 @@ "binop": null }, "value": "configs", - "start": 8522, - "end": 8529, + "start": 8543, + "end": 8550, "loc": { "start": { "line": 242, @@ -73197,8 +73434,8 @@ "binop": null, "updateContext": null }, - "start": 8529, - "end": 8530, + "start": 8550, + "end": 8551, "loc": { "start": { "line": 242, @@ -73223,8 +73460,8 @@ "binop": null }, "value": "doublePickFlyTo", - "start": 8530, - "end": 8545, + "start": 8551, + "end": 8566, "loc": { "start": { "line": 242, @@ -73249,8 +73486,8 @@ "binop": null, "updateContext": null }, - "start": 8545, - "end": 8546, + "start": 8566, + "end": 8567, "loc": { "start": { "line": 242, @@ -73275,8 +73512,8 @@ "binop": null }, "value": "pickController", - "start": 8567, - "end": 8581, + "start": 8588, + "end": 8602, "loc": { "start": { "line": 243, @@ -73301,8 +73538,8 @@ "binop": null, "updateContext": null }, - "start": 8581, - "end": 8582, + "start": 8602, + "end": 8603, "loc": { "start": { "line": 243, @@ -73327,8 +73564,8 @@ "binop": null }, "value": "schedulePickSurface", - "start": 8582, - "end": 8601, + "start": 8603, + "end": 8622, "loc": { "start": { "line": 243, @@ -73354,8 +73591,8 @@ "updateContext": null }, "value": "=", - "start": 8602, - "end": 8603, + "start": 8623, + "end": 8624, "loc": { "start": { "line": 243, @@ -73380,8 +73617,8 @@ "binop": null }, "value": "pickedSurfaceSubs", - "start": 8604, - "end": 8621, + "start": 8625, + "end": 8642, "loc": { "start": { "line": 243, @@ -73406,8 +73643,8 @@ "binop": null, "updateContext": null }, - "start": 8621, - "end": 8622, + "start": 8642, + "end": 8643, "loc": { "start": { "line": 243, @@ -73432,8 +73669,8 @@ "binop": null }, "value": "pickController", - "start": 8643, - "end": 8657, + "start": 8664, + "end": 8678, "loc": { "start": { "line": 244, @@ -73458,8 +73695,8 @@ "binop": null, "updateContext": null }, - "start": 8657, - "end": 8658, + "start": 8678, + "end": 8679, "loc": { "start": { "line": 244, @@ -73484,8 +73721,8 @@ "binop": null }, "value": "update", - "start": 8658, - "end": 8664, + "start": 8679, + "end": 8685, "loc": { "start": { "line": 244, @@ -73509,8 +73746,8 @@ "postfix": false, "binop": null }, - "start": 8664, - "end": 8665, + "start": 8685, + "end": 8686, "loc": { "start": { "line": 244, @@ -73534,8 +73771,8 @@ "postfix": false, "binop": null }, - "start": 8665, - "end": 8666, + "start": 8686, + "end": 8687, "loc": { "start": { "line": 244, @@ -73560,8 +73797,8 @@ "binop": null, "updateContext": null }, - "start": 8666, - "end": 8667, + "start": 8687, + "end": 8688, "loc": { "start": { "line": 244, @@ -73588,8 +73825,8 @@ "updateContext": null }, "value": "if", - "start": 8689, - "end": 8691, + "start": 8710, + "end": 8712, "loc": { "start": { "line": 246, @@ -73613,8 +73850,8 @@ "postfix": false, "binop": null }, - "start": 8692, - "end": 8693, + "start": 8713, + "end": 8714, "loc": { "start": { "line": 246, @@ -73639,8 +73876,8 @@ "binop": null }, "value": "pickController", - "start": 8693, - "end": 8707, + "start": 8714, + "end": 8728, "loc": { "start": { "line": 246, @@ -73665,8 +73902,8 @@ "binop": null, "updateContext": null }, - "start": 8707, - "end": 8708, + "start": 8728, + "end": 8729, "loc": { "start": { "line": 246, @@ -73691,8 +73928,8 @@ "binop": null }, "value": "pickResult", - "start": 8708, - "end": 8718, + "start": 8729, + "end": 8739, "loc": { "start": { "line": 246, @@ -73716,8 +73953,8 @@ "postfix": false, "binop": null }, - "start": 8718, - "end": 8719, + "start": 8739, + "end": 8740, "loc": { "start": { "line": 246, @@ -73741,8 +73978,8 @@ "postfix": false, "binop": null }, - "start": 8720, - "end": 8721, + "start": 8741, + "end": 8742, "loc": { "start": { "line": 246, @@ -73767,8 +74004,8 @@ "binop": null }, "value": "cameraControl", - "start": 8747, - "end": 8760, + "start": 8768, + "end": 8781, "loc": { "start": { "line": 248, @@ -73793,8 +74030,8 @@ "binop": null, "updateContext": null }, - "start": 8760, - "end": 8761, + "start": 8781, + "end": 8782, "loc": { "start": { "line": 248, @@ -73819,8 +74056,8 @@ "binop": null }, "value": "fire", - "start": 8761, - "end": 8765, + "start": 8782, + "end": 8786, "loc": { "start": { "line": 248, @@ -73844,8 +74081,8 @@ "postfix": false, "binop": null }, - "start": 8765, - "end": 8766, + "start": 8786, + "end": 8787, "loc": { "start": { "line": 248, @@ -73871,8 +74108,8 @@ "updateContext": null }, "value": "picked", - "start": 8766, - "end": 8774, + "start": 8787, + "end": 8795, "loc": { "start": { "line": 248, @@ -73897,8 +74134,8 @@ "binop": null, "updateContext": null }, - "start": 8774, - "end": 8775, + "start": 8795, + "end": 8796, "loc": { "start": { "line": 248, @@ -73923,8 +74160,8 @@ "binop": null }, "value": "pickController", - "start": 8776, - "end": 8790, + "start": 8797, + "end": 8811, "loc": { "start": { "line": 248, @@ -73949,8 +74186,8 @@ "binop": null, "updateContext": null }, - "start": 8790, - "end": 8791, + "start": 8811, + "end": 8812, "loc": { "start": { "line": 248, @@ -73975,8 +74212,8 @@ "binop": null }, "value": "pickResult", - "start": 8791, - "end": 8801, + "start": 8812, + "end": 8822, "loc": { "start": { "line": 248, @@ -74001,8 +74238,8 @@ "binop": null, "updateContext": null }, - "start": 8801, - "end": 8802, + "start": 8822, + "end": 8823, "loc": { "start": { "line": 248, @@ -74029,8 +74266,8 @@ "updateContext": null }, "value": "true", - "start": 8803, - "end": 8807, + "start": 8824, + "end": 8828, "loc": { "start": { "line": 248, @@ -74054,8 +74291,8 @@ "postfix": false, "binop": null }, - "start": 8807, - "end": 8808, + "start": 8828, + "end": 8829, "loc": { "start": { "line": 248, @@ -74080,8 +74317,8 @@ "binop": null, "updateContext": null }, - "start": 8808, - "end": 8809, + "start": 8829, + "end": 8830, "loc": { "start": { "line": 248, @@ -74108,8 +74345,8 @@ "updateContext": null }, "value": "if", - "start": 8835, - "end": 8837, + "start": 8856, + "end": 8858, "loc": { "start": { "line": 250, @@ -74133,8 +74370,8 @@ "postfix": false, "binop": null }, - "start": 8838, - "end": 8839, + "start": 8859, + "end": 8860, "loc": { "start": { "line": 250, @@ -74159,8 +74396,8 @@ "binop": null }, "value": "pickController", - "start": 8839, - "end": 8853, + "start": 8860, + "end": 8874, "loc": { "start": { "line": 250, @@ -74185,8 +74422,8 @@ "binop": null, "updateContext": null }, - "start": 8853, - "end": 8854, + "start": 8874, + "end": 8875, "loc": { "start": { "line": 250, @@ -74211,8 +74448,8 @@ "binop": null }, "value": "pickedSurface", - "start": 8854, - "end": 8867, + "start": 8875, + "end": 8888, "loc": { "start": { "line": 250, @@ -74236,8 +74473,8 @@ "postfix": false, "binop": null }, - "start": 8867, - "end": 8868, + "start": 8888, + "end": 8889, "loc": { "start": { "line": 250, @@ -74261,8 +74498,8 @@ "postfix": false, "binop": null }, - "start": 8869, - "end": 8870, + "start": 8890, + "end": 8891, "loc": { "start": { "line": 250, @@ -74287,8 +74524,8 @@ "binop": null }, "value": "cameraControl", - "start": 8900, - "end": 8913, + "start": 8921, + "end": 8934, "loc": { "start": { "line": 252, @@ -74313,8 +74550,8 @@ "binop": null, "updateContext": null }, - "start": 8913, - "end": 8914, + "start": 8934, + "end": 8935, "loc": { "start": { "line": 252, @@ -74339,8 +74576,8 @@ "binop": null }, "value": "fire", - "start": 8914, - "end": 8918, + "start": 8935, + "end": 8939, "loc": { "start": { "line": 252, @@ -74364,8 +74601,8 @@ "postfix": false, "binop": null }, - "start": 8918, - "end": 8919, + "start": 8939, + "end": 8940, "loc": { "start": { "line": 252, @@ -74391,8 +74628,8 @@ "updateContext": null }, "value": "pickedSurface", - "start": 8919, - "end": 8934, + "start": 8940, + "end": 8955, "loc": { "start": { "line": 252, @@ -74417,8 +74654,8 @@ "binop": null, "updateContext": null }, - "start": 8934, - "end": 8935, + "start": 8955, + "end": 8956, "loc": { "start": { "line": 252, @@ -74443,8 +74680,8 @@ "binop": null }, "value": "pickController", - "start": 8936, - "end": 8950, + "start": 8957, + "end": 8971, "loc": { "start": { "line": 252, @@ -74469,8 +74706,8 @@ "binop": null, "updateContext": null }, - "start": 8950, - "end": 8951, + "start": 8971, + "end": 8972, "loc": { "start": { "line": 252, @@ -74495,8 +74732,8 @@ "binop": null }, "value": "pickResult", - "start": 8951, - "end": 8961, + "start": 8972, + "end": 8982, "loc": { "start": { "line": 252, @@ -74521,8 +74758,8 @@ "binop": null, "updateContext": null }, - "start": 8961, - "end": 8962, + "start": 8982, + "end": 8983, "loc": { "start": { "line": 252, @@ -74549,8 +74786,8 @@ "updateContext": null }, "value": "true", - "start": 8963, - "end": 8967, + "start": 8984, + "end": 8988, "loc": { "start": { "line": 252, @@ -74574,8 +74811,8 @@ "postfix": false, "binop": null }, - "start": 8967, - "end": 8968, + "start": 8988, + "end": 8989, "loc": { "start": { "line": 252, @@ -74600,8 +74837,8 @@ "binop": null, "updateContext": null }, - "start": 8968, - "end": 8969, + "start": 8989, + "end": 8990, "loc": { "start": { "line": 252, @@ -74628,8 +74865,8 @@ "updateContext": null }, "value": "if", - "start": 8999, - "end": 9001, + "start": 9020, + "end": 9022, "loc": { "start": { "line": 254, @@ -74653,8 +74890,8 @@ "postfix": false, "binop": null }, - "start": 9002, - "end": 9003, + "start": 9023, + "end": 9024, "loc": { "start": { "line": 254, @@ -74678,8 +74915,8 @@ "postfix": false, "binop": null }, - "start": 9003, - "end": 9004, + "start": 9024, + "end": 9025, "loc": { "start": { "line": 254, @@ -74705,8 +74942,8 @@ "updateContext": null }, "value": "!", - "start": 9004, - "end": 9005, + "start": 9025, + "end": 9026, "loc": { "start": { "line": 254, @@ -74731,8 +74968,8 @@ "binop": null }, "value": "configs", - "start": 9005, - "end": 9012, + "start": 9026, + "end": 9033, "loc": { "start": { "line": 254, @@ -74757,8 +74994,8 @@ "binop": null, "updateContext": null }, - "start": 9012, - "end": 9013, + "start": 9033, + "end": 9034, "loc": { "start": { "line": 254, @@ -74783,8 +75020,8 @@ "binop": null }, "value": "firstPerson", - "start": 9013, - "end": 9024, + "start": 9034, + "end": 9045, "loc": { "start": { "line": 254, @@ -74808,8 +75045,8 @@ "postfix": false, "binop": null }, - "start": 9024, - "end": 9025, + "start": 9045, + "end": 9046, "loc": { "start": { "line": 254, @@ -74835,8 +75072,8 @@ "updateContext": null }, "value": "&&", - "start": 9026, - "end": 9028, + "start": 9047, + "end": 9049, "loc": { "start": { "line": 254, @@ -74861,8 +75098,8 @@ "binop": null }, "value": "configs", - "start": 9029, - "end": 9036, + "start": 9050, + "end": 9057, "loc": { "start": { "line": 254, @@ -74887,8 +75124,8 @@ "binop": null, "updateContext": null }, - "start": 9036, - "end": 9037, + "start": 9057, + "end": 9058, "loc": { "start": { "line": 254, @@ -74913,8 +75150,8 @@ "binop": null }, "value": "followPointer", - "start": 9037, - "end": 9050, + "start": 9058, + "end": 9071, "loc": { "start": { "line": 254, @@ -74938,8 +75175,8 @@ "postfix": false, "binop": null }, - "start": 9050, - "end": 9051, + "start": 9071, + "end": 9072, "loc": { "start": { "line": 254, @@ -74963,8 +75200,8 @@ "postfix": false, "binop": null }, - "start": 9052, - "end": 9053, + "start": 9073, + "end": 9074, "loc": { "start": { "line": 254, @@ -74989,8 +75226,8 @@ "binop": null }, "value": "controllers", - "start": 9086, - "end": 9097, + "start": 9107, + "end": 9118, "loc": { "start": { "line": 255, @@ -75015,8 +75252,8 @@ "binop": null, "updateContext": null }, - "start": 9097, - "end": 9098, + "start": 9118, + "end": 9119, "loc": { "start": { "line": 255, @@ -75041,8 +75278,8 @@ "binop": null }, "value": "pivotController", - "start": 9098, - "end": 9113, + "start": 9119, + "end": 9134, "loc": { "start": { "line": 255, @@ -75067,8 +75304,8 @@ "binop": null, "updateContext": null }, - "start": 9113, - "end": 9114, + "start": 9134, + "end": 9135, "loc": { "start": { "line": 255, @@ -75093,8 +75330,8 @@ "binop": null }, "value": "setPivotPos", - "start": 9114, - "end": 9125, + "start": 9135, + "end": 9146, "loc": { "start": { "line": 255, @@ -75118,8 +75355,8 @@ "postfix": false, "binop": null }, - "start": 9125, - "end": 9126, + "start": 9146, + "end": 9147, "loc": { "start": { "line": 255, @@ -75144,8 +75381,8 @@ "binop": null }, "value": "pickController", - "start": 9126, - "end": 9140, + "start": 9147, + "end": 9161, "loc": { "start": { "line": 255, @@ -75170,8 +75407,8 @@ "binop": null, "updateContext": null }, - "start": 9140, - "end": 9141, + "start": 9161, + "end": 9162, "loc": { "start": { "line": 255, @@ -75196,8 +75433,8 @@ "binop": null }, "value": "pickResult", - "start": 9141, - "end": 9151, + "start": 9162, + "end": 9172, "loc": { "start": { "line": 255, @@ -75222,8 +75459,8 @@ "binop": null, "updateContext": null }, - "start": 9151, - "end": 9152, + "start": 9172, + "end": 9173, "loc": { "start": { "line": 255, @@ -75248,8 +75485,8 @@ "binop": null }, "value": "worldPos", - "start": 9152, - "end": 9160, + "start": 9173, + "end": 9181, "loc": { "start": { "line": 255, @@ -75273,8 +75510,8 @@ "postfix": false, "binop": null }, - "start": 9160, - "end": 9161, + "start": 9181, + "end": 9182, "loc": { "start": { "line": 255, @@ -75299,8 +75536,8 @@ "binop": null, "updateContext": null }, - "start": 9161, - "end": 9162, + "start": 9182, + "end": 9183, "loc": { "start": { "line": 255, @@ -75327,8 +75564,8 @@ "updateContext": null }, "value": "if", - "start": 9195, - "end": 9197, + "start": 9216, + "end": 9218, "loc": { "start": { "line": 256, @@ -75352,8 +75589,8 @@ "postfix": false, "binop": null }, - "start": 9198, - "end": 9199, + "start": 9219, + "end": 9220, "loc": { "start": { "line": 256, @@ -75378,8 +75615,8 @@ "binop": null }, "value": "controllers", - "start": 9199, - "end": 9210, + "start": 9220, + "end": 9231, "loc": { "start": { "line": 256, @@ -75404,8 +75641,8 @@ "binop": null, "updateContext": null }, - "start": 9210, - "end": 9211, + "start": 9231, + "end": 9232, "loc": { "start": { "line": 256, @@ -75430,8 +75667,8 @@ "binop": null }, "value": "pivotController", - "start": 9211, - "end": 9226, + "start": 9232, + "end": 9247, "loc": { "start": { "line": 256, @@ -75456,8 +75693,8 @@ "binop": null, "updateContext": null }, - "start": 9226, - "end": 9227, + "start": 9247, + "end": 9248, "loc": { "start": { "line": 256, @@ -75482,8 +75719,8 @@ "binop": null }, "value": "startPivot", - "start": 9227, - "end": 9237, + "start": 9248, + "end": 9258, "loc": { "start": { "line": 256, @@ -75507,8 +75744,8 @@ "postfix": false, "binop": null }, - "start": 9237, - "end": 9238, + "start": 9258, + "end": 9259, "loc": { "start": { "line": 256, @@ -75532,8 +75769,8 @@ "postfix": false, "binop": null }, - "start": 9238, - "end": 9239, + "start": 9259, + "end": 9260, "loc": { "start": { "line": 256, @@ -75557,8 +75794,8 @@ "postfix": false, "binop": null }, - "start": 9239, - "end": 9240, + "start": 9260, + "end": 9261, "loc": { "start": { "line": 256, @@ -75582,8 +75819,8 @@ "postfix": false, "binop": null }, - "start": 9241, - "end": 9242, + "start": 9262, + "end": 9263, "loc": { "start": { "line": 256, @@ -75608,8 +75845,8 @@ "binop": null }, "value": "controllers", - "start": 9279, - "end": 9290, + "start": 9300, + "end": 9311, "loc": { "start": { "line": 257, @@ -75634,8 +75871,8 @@ "binop": null, "updateContext": null }, - "start": 9290, - "end": 9291, + "start": 9311, + "end": 9312, "loc": { "start": { "line": 257, @@ -75660,8 +75897,8 @@ "binop": null }, "value": "pivotController", - "start": 9291, - "end": 9306, + "start": 9312, + "end": 9327, "loc": { "start": { "line": 257, @@ -75686,8 +75923,8 @@ "binop": null, "updateContext": null }, - "start": 9306, - "end": 9307, + "start": 9327, + "end": 9328, "loc": { "start": { "line": 257, @@ -75712,8 +75949,8 @@ "binop": null }, "value": "showPivot", - "start": 9307, - "end": 9316, + "start": 9328, + "end": 9337, "loc": { "start": { "line": 257, @@ -75737,8 +75974,8 @@ "postfix": false, "binop": null }, - "start": 9316, - "end": 9317, + "start": 9337, + "end": 9338, "loc": { "start": { "line": 257, @@ -75762,8 +75999,8 @@ "postfix": false, "binop": null }, - "start": 9317, - "end": 9318, + "start": 9338, + "end": 9339, "loc": { "start": { "line": 257, @@ -75788,8 +76025,8 @@ "binop": null, "updateContext": null }, - "start": 9318, - "end": 9319, + "start": 9339, + "end": 9340, "loc": { "start": { "line": 257, @@ -75813,8 +76050,8 @@ "postfix": false, "binop": null }, - "start": 9352, - "end": 9353, + "start": 9373, + "end": 9374, "loc": { "start": { "line": 258, @@ -75838,8 +76075,8 @@ "postfix": false, "binop": null }, - "start": 9382, - "end": 9383, + "start": 9403, + "end": 9404, "loc": { "start": { "line": 259, @@ -75863,8 +76100,8 @@ "postfix": false, "binop": null }, - "start": 9408, - "end": 9409, + "start": 9429, + "end": 9430, "loc": { "start": { "line": 260, @@ -75888,8 +76125,8 @@ "postfix": false, "binop": null }, - "start": 9430, - "end": 9431, + "start": 9451, + "end": 9452, "loc": { "start": { "line": 261, @@ -75916,8 +76153,8 @@ "updateContext": null }, "value": "else", - "start": 9432, - "end": 9436, + "start": 9453, + "end": 9457, "loc": { "start": { "line": 261, @@ -75941,8 +76178,8 @@ "postfix": false, "binop": null }, - "start": 9437, - "end": 9438, + "start": 9458, + "end": 9459, "loc": { "start": { "line": 261, @@ -75967,8 +76204,8 @@ "binop": null }, "value": "cameraControl", - "start": 9463, - "end": 9476, + "start": 9484, + "end": 9497, "loc": { "start": { "line": 262, @@ -75993,8 +76230,8 @@ "binop": null, "updateContext": null }, - "start": 9476, - "end": 9477, + "start": 9497, + "end": 9498, "loc": { "start": { "line": 262, @@ -76019,8 +76256,8 @@ "binop": null }, "value": "fire", - "start": 9477, - "end": 9481, + "start": 9498, + "end": 9502, "loc": { "start": { "line": 262, @@ -76044,8 +76281,8 @@ "postfix": false, "binop": null }, - "start": 9481, - "end": 9482, + "start": 9502, + "end": 9503, "loc": { "start": { "line": 262, @@ -76071,8 +76308,8 @@ "updateContext": null }, "value": "pickedNothing", - "start": 9482, - "end": 9497, + "start": 9503, + "end": 9518, "loc": { "start": { "line": 262, @@ -76097,8 +76334,8 @@ "binop": null, "updateContext": null }, - "start": 9497, - "end": 9498, + "start": 9518, + "end": 9519, "loc": { "start": { "line": 262, @@ -76122,8 +76359,8 @@ "postfix": false, "binop": null }, - "start": 9499, - "end": 9500, + "start": 9520, + "end": 9521, "loc": { "start": { "line": 262, @@ -76148,8 +76385,8 @@ "binop": null }, "value": "canvasPos", - "start": 9529, - "end": 9538, + "start": 9550, + "end": 9559, "loc": { "start": { "line": 263, @@ -76174,8 +76411,8 @@ "binop": null, "updateContext": null }, - "start": 9538, - "end": 9539, + "start": 9559, + "end": 9560, "loc": { "start": { "line": 263, @@ -76200,8 +76437,8 @@ "binop": null }, "value": "states", - "start": 9540, - "end": 9546, + "start": 9561, + "end": 9567, "loc": { "start": { "line": 263, @@ -76226,8 +76463,8 @@ "binop": null, "updateContext": null }, - "start": 9546, - "end": 9547, + "start": 9567, + "end": 9568, "loc": { "start": { "line": 263, @@ -76252,8 +76489,8 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 9547, - "end": 9563, + "start": 9568, + "end": 9584, "loc": { "start": { "line": 263, @@ -76277,8 +76514,8 @@ "postfix": false, "binop": null }, - "start": 9588, - "end": 9589, + "start": 9609, + "end": 9610, "loc": { "start": { "line": 264, @@ -76303,8 +76540,8 @@ "binop": null, "updateContext": null }, - "start": 9589, - "end": 9590, + "start": 9610, + "end": 9611, "loc": { "start": { "line": 264, @@ -76331,8 +76568,8 @@ "updateContext": null }, "value": "true", - "start": 9591, - "end": 9595, + "start": 9612, + "end": 9616, "loc": { "start": { "line": 264, @@ -76356,8 +76593,8 @@ "postfix": false, "binop": null }, - "start": 9595, - "end": 9596, + "start": 9616, + "end": 9617, "loc": { "start": { "line": 264, @@ -76382,8 +76619,8 @@ "binop": null, "updateContext": null }, - "start": 9596, - "end": 9597, + "start": 9617, + "end": 9618, "loc": { "start": { "line": 264, @@ -76407,8 +76644,8 @@ "postfix": false, "binop": null }, - "start": 9618, - "end": 9619, + "start": 9639, + "end": 9640, "loc": { "start": { "line": 265, @@ -76435,8 +76672,8 @@ "updateContext": null }, "value": "this", - "start": 9641, - "end": 9645, + "start": 9662, + "end": 9666, "loc": { "start": { "line": 267, @@ -76461,8 +76698,8 @@ "binop": null, "updateContext": null }, - "start": 9645, - "end": 9646, + "start": 9666, + "end": 9667, "loc": { "start": { "line": 267, @@ -76487,8 +76724,8 @@ "binop": null }, "value": "_clicks", - "start": 9646, - "end": 9653, + "start": 9667, + "end": 9674, "loc": { "start": { "line": 267, @@ -76514,8 +76751,8 @@ "updateContext": null }, "value": "=", - "start": 9654, - "end": 9655, + "start": 9675, + "end": 9676, "loc": { "start": { "line": 267, @@ -76541,8 +76778,8 @@ "updateContext": null }, "value": 0, - "start": 9656, - "end": 9657, + "start": 9677, + "end": 9678, "loc": { "start": { "line": 267, @@ -76567,8 +76804,8 @@ "binop": null, "updateContext": null }, - "start": 9657, - "end": 9658, + "start": 9678, + "end": 9679, "loc": { "start": { "line": 267, @@ -76592,8 +76829,8 @@ "postfix": false, "binop": null }, - "start": 9676, - "end": 9677, + "start": 9697, + "end": 9698, "loc": { "start": { "line": 269, @@ -76618,8 +76855,8 @@ "binop": null, "updateContext": null }, - "start": 9677, - "end": 9678, + "start": 9698, + "end": 9699, "loc": { "start": { "line": 269, @@ -76645,8 +76882,8 @@ "updateContext": null }, "value": 250, - "start": 9679, - "end": 9682, + "start": 9700, + "end": 9703, "loc": { "start": { "line": 269, @@ -76670,8 +76907,8 @@ "postfix": false, "binop": null }, - "start": 9682, - "end": 9683, + "start": 9703, + "end": 9704, "loc": { "start": { "line": 269, @@ -76696,8 +76933,8 @@ "binop": null, "updateContext": null }, - "start": 9683, - "end": 9684, + "start": 9704, + "end": 9705, "loc": { "start": { "line": 269, @@ -76712,8 +76949,8 @@ { "type": "CommentLine", "value": " FIXME: Too short for track pads", - "start": 9686, - "end": 9720, + "start": 9707, + "end": 9741, "loc": { "start": { "line": 269, @@ -76737,8 +76974,8 @@ "postfix": false, "binop": null }, - "start": 9734, - "end": 9735, + "start": 9755, + "end": 9756, "loc": { "start": { "line": 271, @@ -76765,8 +77002,8 @@ "updateContext": null }, "value": "else", - "start": 9736, - "end": 9740, + "start": 9757, + "end": 9761, "loc": { "start": { "line": 271, @@ -76790,8 +77027,8 @@ "postfix": false, "binop": null }, - "start": 9741, - "end": 9742, + "start": 9762, + "end": 9763, "loc": { "start": { "line": 271, @@ -76806,8 +77043,8 @@ { "type": "CommentLine", "value": " Second click", - "start": 9743, - "end": 9758, + "start": 9764, + "end": 9779, "loc": { "start": { "line": 271, @@ -76834,8 +77071,8 @@ "updateContext": null }, "value": "if", - "start": 9776, - "end": 9778, + "start": 9797, + "end": 9799, "loc": { "start": { "line": 273, @@ -76859,8 +77096,8 @@ "postfix": false, "binop": null }, - "start": 9779, - "end": 9780, + "start": 9800, + "end": 9801, "loc": { "start": { "line": 273, @@ -76887,8 +77124,8 @@ "updateContext": null }, "value": "this", - "start": 9780, - "end": 9784, + "start": 9801, + "end": 9805, "loc": { "start": { "line": 273, @@ -76913,8 +77150,8 @@ "binop": null, "updateContext": null }, - "start": 9784, - "end": 9785, + "start": 9805, + "end": 9806, "loc": { "start": { "line": 273, @@ -76939,8 +77176,8 @@ "binop": null }, "value": "_timeout", - "start": 9785, - "end": 9793, + "start": 9806, + "end": 9814, "loc": { "start": { "line": 273, @@ -76966,8 +77203,8 @@ "updateContext": null }, "value": "!==", - "start": 9794, - "end": 9797, + "start": 9815, + "end": 9818, "loc": { "start": { "line": 273, @@ -76994,8 +77231,8 @@ "updateContext": null }, "value": "null", - "start": 9798, - "end": 9802, + "start": 9819, + "end": 9823, "loc": { "start": { "line": 273, @@ -77019,8 +77256,8 @@ "postfix": false, "binop": null }, - "start": 9802, - "end": 9803, + "start": 9823, + "end": 9824, "loc": { "start": { "line": 273, @@ -77044,8 +77281,8 @@ "postfix": false, "binop": null }, - "start": 9804, - "end": 9805, + "start": 9825, + "end": 9826, "loc": { "start": { "line": 273, @@ -77070,8 +77307,8 @@ "binop": null }, "value": "window", - "start": 9826, - "end": 9832, + "start": 9847, + "end": 9853, "loc": { "start": { "line": 274, @@ -77096,8 +77333,8 @@ "binop": null, "updateContext": null }, - "start": 9832, - "end": 9833, + "start": 9853, + "end": 9854, "loc": { "start": { "line": 274, @@ -77122,8 +77359,8 @@ "binop": null }, "value": "clearTimeout", - "start": 9833, - "end": 9845, + "start": 9854, + "end": 9866, "loc": { "start": { "line": 274, @@ -77147,8 +77384,8 @@ "postfix": false, "binop": null }, - "start": 9845, - "end": 9846, + "start": 9866, + "end": 9867, "loc": { "start": { "line": 274, @@ -77175,8 +77412,8 @@ "updateContext": null }, "value": "this", - "start": 9846, - "end": 9850, + "start": 9867, + "end": 9871, "loc": { "start": { "line": 274, @@ -77201,8 +77438,8 @@ "binop": null, "updateContext": null }, - "start": 9850, - "end": 9851, + "start": 9871, + "end": 9872, "loc": { "start": { "line": 274, @@ -77227,8 +77464,8 @@ "binop": null }, "value": "_timeout", - "start": 9851, - "end": 9859, + "start": 9872, + "end": 9880, "loc": { "start": { "line": 274, @@ -77252,8 +77489,8 @@ "postfix": false, "binop": null }, - "start": 9859, - "end": 9860, + "start": 9880, + "end": 9881, "loc": { "start": { "line": 274, @@ -77278,8 +77515,8 @@ "binop": null, "updateContext": null }, - "start": 9860, - "end": 9861, + "start": 9881, + "end": 9882, "loc": { "start": { "line": 274, @@ -77306,8 +77543,8 @@ "updateContext": null }, "value": "this", - "start": 9882, - "end": 9886, + "start": 9903, + "end": 9907, "loc": { "start": { "line": 275, @@ -77332,8 +77569,8 @@ "binop": null, "updateContext": null }, - "start": 9886, - "end": 9887, + "start": 9907, + "end": 9908, "loc": { "start": { "line": 275, @@ -77358,8 +77595,8 @@ "binop": null }, "value": "_timeout", - "start": 9887, - "end": 9895, + "start": 9908, + "end": 9916, "loc": { "start": { "line": 275, @@ -77385,8 +77622,8 @@ "updateContext": null }, "value": "=", - "start": 9896, - "end": 9897, + "start": 9917, + "end": 9918, "loc": { "start": { "line": 275, @@ -77413,8 +77650,8 @@ "updateContext": null }, "value": "null", - "start": 9898, - "end": 9902, + "start": 9919, + "end": 9923, "loc": { "start": { "line": 275, @@ -77439,8 +77676,8 @@ "binop": null, "updateContext": null }, - "start": 9902, - "end": 9903, + "start": 9923, + "end": 9924, "loc": { "start": { "line": 275, @@ -77464,8 +77701,8 @@ "postfix": false, "binop": null }, - "start": 9920, - "end": 9921, + "start": 9941, + "end": 9942, "loc": { "start": { "line": 276, @@ -77490,8 +77727,8 @@ "binop": null }, "value": "pickController", - "start": 9939, - "end": 9953, + "start": 9960, + "end": 9974, "loc": { "start": { "line": 278, @@ -77516,8 +77753,8 @@ "binop": null, "updateContext": null }, - "start": 9953, - "end": 9954, + "start": 9974, + "end": 9975, "loc": { "start": { "line": 278, @@ -77542,8 +77779,8 @@ "binop": null }, "value": "pickCursorPos", - "start": 9954, - "end": 9967, + "start": 9975, + "end": 9988, "loc": { "start": { "line": 278, @@ -77569,8 +77806,8 @@ "updateContext": null }, "value": "=", - "start": 9968, - "end": 9969, + "start": 9989, + "end": 9990, "loc": { "start": { "line": 278, @@ -77595,8 +77832,8 @@ "binop": null }, "value": "states", - "start": 9970, - "end": 9976, + "start": 9991, + "end": 9997, "loc": { "start": { "line": 278, @@ -77621,8 +77858,8 @@ "binop": null, "updateContext": null }, - "start": 9976, - "end": 9977, + "start": 9997, + "end": 9998, "loc": { "start": { "line": 278, @@ -77647,8 +77884,8 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 9977, - "end": 9993, + "start": 9998, + "end": 10014, "loc": { "start": { "line": 278, @@ -77673,8 +77910,8 @@ "binop": null, "updateContext": null }, - "start": 9993, - "end": 9994, + "start": 10014, + "end": 10015, "loc": { "start": { "line": 278, @@ -77699,8 +77936,8 @@ "binop": null }, "value": "pickController", - "start": 10011, - "end": 10025, + "start": 10032, + "end": 10046, "loc": { "start": { "line": 279, @@ -77725,8 +77962,8 @@ "binop": null, "updateContext": null }, - "start": 10025, - "end": 10026, + "start": 10046, + "end": 10047, "loc": { "start": { "line": 279, @@ -77751,8 +77988,8 @@ "binop": null }, "value": "schedulePickEntity", - "start": 10026, - "end": 10044, + "start": 10047, + "end": 10065, "loc": { "start": { "line": 279, @@ -77778,8 +78015,8 @@ "updateContext": null }, "value": "=", - "start": 10045, - "end": 10046, + "start": 10066, + "end": 10067, "loc": { "start": { "line": 279, @@ -77804,8 +78041,8 @@ "binop": null }, "value": "configs", - "start": 10047, - "end": 10054, + "start": 10068, + "end": 10075, "loc": { "start": { "line": 279, @@ -77830,8 +78067,8 @@ "binop": null, "updateContext": null }, - "start": 10054, - "end": 10055, + "start": 10075, + "end": 10076, "loc": { "start": { "line": 279, @@ -77856,8 +78093,8 @@ "binop": null }, "value": "doublePickFlyTo", - "start": 10055, - "end": 10070, + "start": 10076, + "end": 10091, "loc": { "start": { "line": 279, @@ -77883,8 +78120,8 @@ "updateContext": null }, "value": "||", - "start": 10071, - "end": 10073, + "start": 10092, + "end": 10094, "loc": { "start": { "line": 279, @@ -77909,8 +78146,8 @@ "binop": null }, "value": "doublePickedSubs", - "start": 10074, - "end": 10090, + "start": 10095, + "end": 10111, "loc": { "start": { "line": 279, @@ -77936,8 +78173,8 @@ "updateContext": null }, "value": "||", - "start": 10091, - "end": 10093, + "start": 10112, + "end": 10114, "loc": { "start": { "line": 279, @@ -77962,8 +78199,8 @@ "binop": null }, "value": "doublePickedSurfaceSubs", - "start": 10094, - "end": 10117, + "start": 10115, + "end": 10138, "loc": { "start": { "line": 279, @@ -77988,8 +78225,8 @@ "binop": null, "updateContext": null }, - "start": 10117, - "end": 10118, + "start": 10138, + "end": 10139, "loc": { "start": { "line": 279, @@ -78014,8 +78251,8 @@ "binop": null }, "value": "pickController", - "start": 10135, - "end": 10149, + "start": 10156, + "end": 10170, "loc": { "start": { "line": 280, @@ -78040,8 +78277,8 @@ "binop": null, "updateContext": null }, - "start": 10149, - "end": 10150, + "start": 10170, + "end": 10171, "loc": { "start": { "line": 280, @@ -78066,8 +78303,8 @@ "binop": null }, "value": "schedulePickSurface", - "start": 10150, - "end": 10169, + "start": 10171, + "end": 10190, "loc": { "start": { "line": 280, @@ -78093,8 +78330,8 @@ "updateContext": null }, "value": "=", - "start": 10170, - "end": 10171, + "start": 10191, + "end": 10192, "loc": { "start": { "line": 280, @@ -78119,8 +78356,8 @@ "binop": null }, "value": "pickController", - "start": 10172, - "end": 10186, + "start": 10193, + "end": 10207, "loc": { "start": { "line": 280, @@ -78145,8 +78382,8 @@ "binop": null, "updateContext": null }, - "start": 10186, - "end": 10187, + "start": 10207, + "end": 10208, "loc": { "start": { "line": 280, @@ -78171,8 +78408,8 @@ "binop": null }, "value": "schedulePickEntity", - "start": 10187, - "end": 10205, + "start": 10208, + "end": 10226, "loc": { "start": { "line": 280, @@ -78198,8 +78435,8 @@ "updateContext": null }, "value": "&&", - "start": 10206, - "end": 10208, + "start": 10227, + "end": 10229, "loc": { "start": { "line": 280, @@ -78224,8 +78461,8 @@ "binop": null }, "value": "doublePickedSurfaceSubs", - "start": 10209, - "end": 10232, + "start": 10230, + "end": 10253, "loc": { "start": { "line": 280, @@ -78250,8 +78487,8 @@ "binop": null, "updateContext": null }, - "start": 10232, - "end": 10233, + "start": 10253, + "end": 10254, "loc": { "start": { "line": 280, @@ -78276,8 +78513,8 @@ "binop": null }, "value": "pickController", - "start": 10250, - "end": 10264, + "start": 10271, + "end": 10285, "loc": { "start": { "line": 281, @@ -78302,8 +78539,8 @@ "binop": null, "updateContext": null }, - "start": 10264, - "end": 10265, + "start": 10285, + "end": 10286, "loc": { "start": { "line": 281, @@ -78328,8 +78565,8 @@ "binop": null }, "value": "update", - "start": 10265, - "end": 10271, + "start": 10286, + "end": 10292, "loc": { "start": { "line": 281, @@ -78353,8 +78590,8 @@ "postfix": false, "binop": null }, - "start": 10271, - "end": 10272, + "start": 10292, + "end": 10293, "loc": { "start": { "line": 281, @@ -78378,8 +78615,8 @@ "postfix": false, "binop": null }, - "start": 10272, - "end": 10273, + "start": 10293, + "end": 10294, "loc": { "start": { "line": 281, @@ -78404,8 +78641,8 @@ "binop": null, "updateContext": null }, - "start": 10273, - "end": 10274, + "start": 10294, + "end": 10295, "loc": { "start": { "line": 281, @@ -78432,8 +78669,8 @@ "updateContext": null }, "value": "if", - "start": 10292, - "end": 10294, + "start": 10313, + "end": 10315, "loc": { "start": { "line": 283, @@ -78457,8 +78694,8 @@ "postfix": false, "binop": null }, - "start": 10295, - "end": 10296, + "start": 10316, + "end": 10317, "loc": { "start": { "line": 283, @@ -78483,8 +78720,8 @@ "binop": null }, "value": "pickController", - "start": 10296, - "end": 10310, + "start": 10317, + "end": 10331, "loc": { "start": { "line": 283, @@ -78509,8 +78746,8 @@ "binop": null, "updateContext": null }, - "start": 10310, - "end": 10311, + "start": 10331, + "end": 10332, "loc": { "start": { "line": 283, @@ -78535,8 +78772,8 @@ "binop": null }, "value": "pickResult", - "start": 10311, - "end": 10321, + "start": 10332, + "end": 10342, "loc": { "start": { "line": 283, @@ -78560,8 +78797,8 @@ "postfix": false, "binop": null }, - "start": 10321, - "end": 10322, + "start": 10342, + "end": 10343, "loc": { "start": { "line": 283, @@ -78585,8 +78822,8 @@ "postfix": false, "binop": null }, - "start": 10323, - "end": 10324, + "start": 10344, + "end": 10345, "loc": { "start": { "line": 283, @@ -78611,8 +78848,8 @@ "binop": null }, "value": "cameraControl", - "start": 10346, - "end": 10359, + "start": 10367, + "end": 10380, "loc": { "start": { "line": 285, @@ -78637,8 +78874,8 @@ "binop": null, "updateContext": null }, - "start": 10359, - "end": 10360, + "start": 10380, + "end": 10381, "loc": { "start": { "line": 285, @@ -78663,8 +78900,8 @@ "binop": null }, "value": "fire", - "start": 10360, - "end": 10364, + "start": 10381, + "end": 10385, "loc": { "start": { "line": 285, @@ -78688,8 +78925,8 @@ "postfix": false, "binop": null }, - "start": 10364, - "end": 10365, + "start": 10385, + "end": 10386, "loc": { "start": { "line": 285, @@ -78715,8 +78952,8 @@ "updateContext": null }, "value": "doublePicked", - "start": 10365, - "end": 10379, + "start": 10386, + "end": 10400, "loc": { "start": { "line": 285, @@ -78741,8 +78978,8 @@ "binop": null, "updateContext": null }, - "start": 10379, - "end": 10380, + "start": 10400, + "end": 10401, "loc": { "start": { "line": 285, @@ -78767,8 +79004,8 @@ "binop": null }, "value": "pickController", - "start": 10381, - "end": 10395, + "start": 10402, + "end": 10416, "loc": { "start": { "line": 285, @@ -78793,8 +79030,8 @@ "binop": null, "updateContext": null }, - "start": 10395, - "end": 10396, + "start": 10416, + "end": 10417, "loc": { "start": { "line": 285, @@ -78819,8 +79056,8 @@ "binop": null }, "value": "pickResult", - "start": 10396, - "end": 10406, + "start": 10417, + "end": 10427, "loc": { "start": { "line": 285, @@ -78845,8 +79082,8 @@ "binop": null, "updateContext": null }, - "start": 10406, - "end": 10407, + "start": 10427, + "end": 10428, "loc": { "start": { "line": 285, @@ -78873,8 +79110,8 @@ "updateContext": null }, "value": "true", - "start": 10408, - "end": 10412, + "start": 10429, + "end": 10433, "loc": { "start": { "line": 285, @@ -78898,8 +79135,8 @@ "postfix": false, "binop": null }, - "start": 10412, - "end": 10413, + "start": 10433, + "end": 10434, "loc": { "start": { "line": 285, @@ -78924,8 +79161,8 @@ "binop": null, "updateContext": null }, - "start": 10413, - "end": 10414, + "start": 10434, + "end": 10435, "loc": { "start": { "line": 285, @@ -78952,8 +79189,8 @@ "updateContext": null }, "value": "if", - "start": 10436, - "end": 10438, + "start": 10457, + "end": 10459, "loc": { "start": { "line": 287, @@ -78977,8 +79214,8 @@ "postfix": false, "binop": null }, - "start": 10439, - "end": 10440, + "start": 10460, + "end": 10461, "loc": { "start": { "line": 287, @@ -79003,8 +79240,8 @@ "binop": null }, "value": "pickController", - "start": 10440, - "end": 10454, + "start": 10461, + "end": 10475, "loc": { "start": { "line": 287, @@ -79029,8 +79266,8 @@ "binop": null, "updateContext": null }, - "start": 10454, - "end": 10455, + "start": 10475, + "end": 10476, "loc": { "start": { "line": 287, @@ -79055,8 +79292,8 @@ "binop": null }, "value": "pickedSurface", - "start": 10455, - "end": 10468, + "start": 10476, + "end": 10489, "loc": { "start": { "line": 287, @@ -79080,8 +79317,8 @@ "postfix": false, "binop": null }, - "start": 10468, - "end": 10469, + "start": 10489, + "end": 10490, "loc": { "start": { "line": 287, @@ -79105,8 +79342,8 @@ "postfix": false, "binop": null }, - "start": 10470, - "end": 10471, + "start": 10491, + "end": 10492, "loc": { "start": { "line": 287, @@ -79131,8 +79368,8 @@ "binop": null }, "value": "cameraControl", - "start": 10496, - "end": 10509, + "start": 10517, + "end": 10530, "loc": { "start": { "line": 288, @@ -79157,8 +79394,8 @@ "binop": null, "updateContext": null }, - "start": 10509, - "end": 10510, + "start": 10530, + "end": 10531, "loc": { "start": { "line": 288, @@ -79183,8 +79420,8 @@ "binop": null }, "value": "fire", - "start": 10510, - "end": 10514, + "start": 10531, + "end": 10535, "loc": { "start": { "line": 288, @@ -79208,8 +79445,8 @@ "postfix": false, "binop": null }, - "start": 10514, - "end": 10515, + "start": 10535, + "end": 10536, "loc": { "start": { "line": 288, @@ -79235,8 +79472,8 @@ "updateContext": null }, "value": "doublePickedSurface", - "start": 10515, - "end": 10536, + "start": 10536, + "end": 10557, "loc": { "start": { "line": 288, @@ -79261,8 +79498,8 @@ "binop": null, "updateContext": null }, - "start": 10536, - "end": 10537, + "start": 10557, + "end": 10558, "loc": { "start": { "line": 288, @@ -79287,8 +79524,8 @@ "binop": null }, "value": "pickController", - "start": 10538, - "end": 10552, + "start": 10559, + "end": 10573, "loc": { "start": { "line": 288, @@ -79313,8 +79550,8 @@ "binop": null, "updateContext": null }, - "start": 10552, - "end": 10553, + "start": 10573, + "end": 10574, "loc": { "start": { "line": 288, @@ -79339,8 +79576,8 @@ "binop": null }, "value": "pickResult", - "start": 10553, - "end": 10563, + "start": 10574, + "end": 10584, "loc": { "start": { "line": 288, @@ -79365,8 +79602,8 @@ "binop": null, "updateContext": null }, - "start": 10563, - "end": 10564, + "start": 10584, + "end": 10585, "loc": { "start": { "line": 288, @@ -79393,8 +79630,8 @@ "updateContext": null }, "value": "true", - "start": 10565, - "end": 10569, + "start": 10586, + "end": 10590, "loc": { "start": { "line": 288, @@ -79418,8 +79655,8 @@ "postfix": false, "binop": null }, - "start": 10569, - "end": 10570, + "start": 10590, + "end": 10591, "loc": { "start": { "line": 288, @@ -79444,8 +79681,8 @@ "binop": null, "updateContext": null }, - "start": 10570, - "end": 10571, + "start": 10591, + "end": 10592, "loc": { "start": { "line": 288, @@ -79469,8 +79706,8 @@ "postfix": false, "binop": null }, - "start": 10592, - "end": 10593, + "start": 10613, + "end": 10614, "loc": { "start": { "line": 289, @@ -79497,8 +79734,8 @@ "updateContext": null }, "value": "if", - "start": 10615, - "end": 10617, + "start": 10636, + "end": 10638, "loc": { "start": { "line": 291, @@ -79522,8 +79759,8 @@ "postfix": false, "binop": null }, - "start": 10618, - "end": 10619, + "start": 10639, + "end": 10640, "loc": { "start": { "line": 291, @@ -79548,8 +79785,8 @@ "binop": null }, "value": "configs", - "start": 10619, - "end": 10626, + "start": 10640, + "end": 10647, "loc": { "start": { "line": 291, @@ -79574,8 +79811,8 @@ "binop": null, "updateContext": null }, - "start": 10626, - "end": 10627, + "start": 10647, + "end": 10648, "loc": { "start": { "line": 291, @@ -79600,8 +79837,8 @@ "binop": null }, "value": "doublePickFlyTo", - "start": 10627, - "end": 10642, + "start": 10648, + "end": 10663, "loc": { "start": { "line": 291, @@ -79625,8 +79862,8 @@ "postfix": false, "binop": null }, - "start": 10642, - "end": 10643, + "start": 10663, + "end": 10664, "loc": { "start": { "line": 291, @@ -79650,8 +79887,8 @@ "postfix": false, "binop": null }, - "start": 10644, - "end": 10645, + "start": 10665, + "end": 10666, "loc": { "start": { "line": 291, @@ -79676,8 +79913,8 @@ "binop": null }, "value": "flyCameraTo", - "start": 10671, - "end": 10682, + "start": 10692, + "end": 10703, "loc": { "start": { "line": 293, @@ -79701,8 +79938,8 @@ "postfix": false, "binop": null }, - "start": 10682, - "end": 10683, + "start": 10703, + "end": 10704, "loc": { "start": { "line": 293, @@ -79727,8 +79964,8 @@ "binop": null }, "value": "pickController", - "start": 10683, - "end": 10697, + "start": 10704, + "end": 10718, "loc": { "start": { "line": 293, @@ -79753,8 +79990,8 @@ "binop": null, "updateContext": null }, - "start": 10697, - "end": 10698, + "start": 10718, + "end": 10719, "loc": { "start": { "line": 293, @@ -79779,8 +80016,8 @@ "binop": null }, "value": "pickResult", - "start": 10698, - "end": 10708, + "start": 10719, + "end": 10729, "loc": { "start": { "line": 293, @@ -79804,8 +80041,8 @@ "postfix": false, "binop": null }, - "start": 10708, - "end": 10709, + "start": 10729, + "end": 10730, "loc": { "start": { "line": 293, @@ -79830,8 +80067,8 @@ "binop": null, "updateContext": null }, - "start": 10709, - "end": 10710, + "start": 10730, + "end": 10731, "loc": { "start": { "line": 293, @@ -79858,8 +80095,8 @@ "updateContext": null }, "value": "if", - "start": 10736, - "end": 10738, + "start": 10757, + "end": 10759, "loc": { "start": { "line": 295, @@ -79883,8 +80120,8 @@ "postfix": false, "binop": null }, - "start": 10739, - "end": 10740, + "start": 10760, + "end": 10761, "loc": { "start": { "line": 295, @@ -79908,8 +80145,8 @@ "postfix": false, "binop": null }, - "start": 10740, - "end": 10741, + "start": 10761, + "end": 10762, "loc": { "start": { "line": 295, @@ -79935,8 +80172,8 @@ "updateContext": null }, "value": "!", - "start": 10741, - "end": 10742, + "start": 10762, + "end": 10763, "loc": { "start": { "line": 295, @@ -79961,8 +80198,8 @@ "binop": null }, "value": "configs", - "start": 10742, - "end": 10749, + "start": 10763, + "end": 10770, "loc": { "start": { "line": 295, @@ -79987,8 +80224,8 @@ "binop": null, "updateContext": null }, - "start": 10749, - "end": 10750, + "start": 10770, + "end": 10771, "loc": { "start": { "line": 295, @@ -80013,8 +80250,8 @@ "binop": null }, "value": "firstPerson", - "start": 10750, - "end": 10761, + "start": 10771, + "end": 10782, "loc": { "start": { "line": 295, @@ -80038,8 +80275,8 @@ "postfix": false, "binop": null }, - "start": 10761, - "end": 10762, + "start": 10782, + "end": 10783, "loc": { "start": { "line": 295, @@ -80065,8 +80302,8 @@ "updateContext": null }, "value": "&&", - "start": 10763, - "end": 10765, + "start": 10784, + "end": 10786, "loc": { "start": { "line": 295, @@ -80091,8 +80328,8 @@ "binop": null }, "value": "configs", - "start": 10766, - "end": 10773, + "start": 10787, + "end": 10794, "loc": { "start": { "line": 295, @@ -80117,8 +80354,8 @@ "binop": null, "updateContext": null }, - "start": 10773, - "end": 10774, + "start": 10794, + "end": 10795, "loc": { "start": { "line": 295, @@ -80143,8 +80380,8 @@ "binop": null }, "value": "followPointer", - "start": 10774, - "end": 10787, + "start": 10795, + "end": 10808, "loc": { "start": { "line": 295, @@ -80168,8 +80405,8 @@ "postfix": false, "binop": null }, - "start": 10787, - "end": 10788, + "start": 10808, + "end": 10809, "loc": { "start": { "line": 295, @@ -80193,8 +80430,8 @@ "postfix": false, "binop": null }, - "start": 10789, - "end": 10790, + "start": 10810, + "end": 10811, "loc": { "start": { "line": 295, @@ -80221,8 +80458,8 @@ "updateContext": null }, "value": "const", - "start": 10820, - "end": 10825, + "start": 10841, + "end": 10846, "loc": { "start": { "line": 297, @@ -80247,8 +80484,8 @@ "binop": null }, "value": "pickedEntityAABB", - "start": 10826, - "end": 10842, + "start": 10847, + "end": 10863, "loc": { "start": { "line": 297, @@ -80274,8 +80511,8 @@ "updateContext": null }, "value": "=", - "start": 10843, - "end": 10844, + "start": 10864, + "end": 10865, "loc": { "start": { "line": 297, @@ -80300,8 +80537,8 @@ "binop": null }, "value": "pickController", - "start": 10845, - "end": 10859, + "start": 10866, + "end": 10880, "loc": { "start": { "line": 297, @@ -80326,8 +80563,8 @@ "binop": null, "updateContext": null }, - "start": 10859, - "end": 10860, + "start": 10880, + "end": 10881, "loc": { "start": { "line": 297, @@ -80352,8 +80589,8 @@ "binop": null }, "value": "pickResult", - "start": 10860, - "end": 10870, + "start": 10881, + "end": 10891, "loc": { "start": { "line": 297, @@ -80378,8 +80615,8 @@ "binop": null, "updateContext": null }, - "start": 10870, - "end": 10871, + "start": 10891, + "end": 10892, "loc": { "start": { "line": 297, @@ -80404,8 +80641,8 @@ "binop": null }, "value": "entity", - "start": 10871, - "end": 10877, + "start": 10892, + "end": 10898, "loc": { "start": { "line": 297, @@ -80430,8 +80667,8 @@ "binop": null, "updateContext": null }, - "start": 10877, - "end": 10878, + "start": 10898, + "end": 10899, "loc": { "start": { "line": 297, @@ -80456,8 +80693,8 @@ "binop": null }, "value": "aabb", - "start": 10878, - "end": 10882, + "start": 10899, + "end": 10903, "loc": { "start": { "line": 297, @@ -80482,8 +80719,8 @@ "binop": null, "updateContext": null }, - "start": 10882, - "end": 10883, + "start": 10903, + "end": 10904, "loc": { "start": { "line": 297, @@ -80510,8 +80747,8 @@ "updateContext": null }, "value": "const", - "start": 10912, - "end": 10917, + "start": 10933, + "end": 10938, "loc": { "start": { "line": 298, @@ -80536,8 +80773,8 @@ "binop": null }, "value": "pickedEntityCenterPos", - "start": 10918, - "end": 10939, + "start": 10939, + "end": 10960, "loc": { "start": { "line": 298, @@ -80563,8 +80800,8 @@ "updateContext": null }, "value": "=", - "start": 10940, - "end": 10941, + "start": 10961, + "end": 10962, "loc": { "start": { "line": 298, @@ -80589,8 +80826,8 @@ "binop": null }, "value": "math", - "start": 10942, - "end": 10946, + "start": 10963, + "end": 10967, "loc": { "start": { "line": 298, @@ -80615,8 +80852,8 @@ "binop": null, "updateContext": null }, - "start": 10946, - "end": 10947, + "start": 10967, + "end": 10968, "loc": { "start": { "line": 298, @@ -80641,8 +80878,8 @@ "binop": null }, "value": "getAABB3Center", - "start": 10947, - "end": 10961, + "start": 10968, + "end": 10982, "loc": { "start": { "line": 298, @@ -80666,8 +80903,8 @@ "postfix": false, "binop": null }, - "start": 10961, - "end": 10962, + "start": 10982, + "end": 10983, "loc": { "start": { "line": 298, @@ -80692,8 +80929,8 @@ "binop": null }, "value": "pickedEntityAABB", - "start": 10962, - "end": 10978, + "start": 10983, + "end": 10999, "loc": { "start": { "line": 298, @@ -80717,8 +80954,8 @@ "postfix": false, "binop": null }, - "start": 10978, - "end": 10979, + "start": 10999, + "end": 11000, "loc": { "start": { "line": 298, @@ -80743,8 +80980,8 @@ "binop": null, "updateContext": null }, - "start": 10979, - "end": 10980, + "start": 11000, + "end": 11001, "loc": { "start": { "line": 298, @@ -80769,8 +81006,8 @@ "binop": null }, "value": "controllers", - "start": 11010, - "end": 11021, + "start": 11031, + "end": 11042, "loc": { "start": { "line": 300, @@ -80795,8 +81032,8 @@ "binop": null, "updateContext": null }, - "start": 11021, - "end": 11022, + "start": 11042, + "end": 11043, "loc": { "start": { "line": 300, @@ -80821,8 +81058,8 @@ "binop": null }, "value": "pivotController", - "start": 11022, - "end": 11037, + "start": 11043, + "end": 11058, "loc": { "start": { "line": 300, @@ -80847,8 +81084,8 @@ "binop": null, "updateContext": null }, - "start": 11037, - "end": 11038, + "start": 11058, + "end": 11059, "loc": { "start": { "line": 300, @@ -80873,8 +81110,8 @@ "binop": null }, "value": "setPivotPos", - "start": 11038, - "end": 11049, + "start": 11059, + "end": 11070, "loc": { "start": { "line": 300, @@ -80898,8 +81135,8 @@ "postfix": false, "binop": null }, - "start": 11049, - "end": 11050, + "start": 11070, + "end": 11071, "loc": { "start": { "line": 300, @@ -80924,8 +81161,8 @@ "binop": null }, "value": "pickedEntityCenterPos", - "start": 11050, - "end": 11071, + "start": 11071, + "end": 11092, "loc": { "start": { "line": 300, @@ -80949,8 +81186,8 @@ "postfix": false, "binop": null }, - "start": 11071, - "end": 11072, + "start": 11092, + "end": 11093, "loc": { "start": { "line": 300, @@ -80975,8 +81212,8 @@ "binop": null, "updateContext": null }, - "start": 11072, - "end": 11073, + "start": 11093, + "end": 11094, "loc": { "start": { "line": 300, @@ -81003,8 +81240,8 @@ "updateContext": null }, "value": "if", - "start": 11103, - "end": 11105, + "start": 11124, + "end": 11126, "loc": { "start": { "line": 302, @@ -81028,8 +81265,8 @@ "postfix": false, "binop": null }, - "start": 11106, - "end": 11107, + "start": 11127, + "end": 11128, "loc": { "start": { "line": 302, @@ -81054,8 +81291,8 @@ "binop": null }, "value": "controllers", - "start": 11107, - "end": 11118, + "start": 11128, + "end": 11139, "loc": { "start": { "line": 302, @@ -81080,8 +81317,8 @@ "binop": null, "updateContext": null }, - "start": 11118, - "end": 11119, + "start": 11139, + "end": 11140, "loc": { "start": { "line": 302, @@ -81106,8 +81343,8 @@ "binop": null }, "value": "pivotController", - "start": 11119, - "end": 11134, + "start": 11140, + "end": 11155, "loc": { "start": { "line": 302, @@ -81132,8 +81369,8 @@ "binop": null, "updateContext": null }, - "start": 11134, - "end": 11135, + "start": 11155, + "end": 11156, "loc": { "start": { "line": 302, @@ -81158,8 +81395,8 @@ "binop": null }, "value": "startPivot", - "start": 11135, - "end": 11145, + "start": 11156, + "end": 11166, "loc": { "start": { "line": 302, @@ -81183,8 +81420,8 @@ "postfix": false, "binop": null }, - "start": 11145, - "end": 11146, + "start": 11166, + "end": 11167, "loc": { "start": { "line": 302, @@ -81208,8 +81445,8 @@ "postfix": false, "binop": null }, - "start": 11146, - "end": 11147, + "start": 11167, + "end": 11168, "loc": { "start": { "line": 302, @@ -81233,8 +81470,8 @@ "postfix": false, "binop": null }, - "start": 11147, - "end": 11148, + "start": 11168, + "end": 11169, "loc": { "start": { "line": 302, @@ -81258,8 +81495,8 @@ "postfix": false, "binop": null }, - "start": 11149, - "end": 11150, + "start": 11170, + "end": 11171, "loc": { "start": { "line": 302, @@ -81284,8 +81521,8 @@ "binop": null }, "value": "controllers", - "start": 11183, - "end": 11194, + "start": 11204, + "end": 11215, "loc": { "start": { "line": 303, @@ -81310,8 +81547,8 @@ "binop": null, "updateContext": null }, - "start": 11194, - "end": 11195, + "start": 11215, + "end": 11216, "loc": { "start": { "line": 303, @@ -81336,8 +81573,8 @@ "binop": null }, "value": "pivotController", - "start": 11195, - "end": 11210, + "start": 11216, + "end": 11231, "loc": { "start": { "line": 303, @@ -81362,8 +81599,8 @@ "binop": null, "updateContext": null }, - "start": 11210, - "end": 11211, + "start": 11231, + "end": 11232, "loc": { "start": { "line": 303, @@ -81388,8 +81625,8 @@ "binop": null }, "value": "showPivot", - "start": 11211, - "end": 11220, + "start": 11232, + "end": 11241, "loc": { "start": { "line": 303, @@ -81413,8 +81650,8 @@ "postfix": false, "binop": null }, - "start": 11220, - "end": 11221, + "start": 11241, + "end": 11242, "loc": { "start": { "line": 303, @@ -81438,8 +81675,8 @@ "postfix": false, "binop": null }, - "start": 11221, - "end": 11222, + "start": 11242, + "end": 11243, "loc": { "start": { "line": 303, @@ -81464,8 +81701,8 @@ "binop": null, "updateContext": null }, - "start": 11222, - "end": 11223, + "start": 11243, + "end": 11244, "loc": { "start": { "line": 303, @@ -81489,8 +81726,8 @@ "postfix": false, "binop": null }, - "start": 11252, - "end": 11253, + "start": 11273, + "end": 11274, "loc": { "start": { "line": 304, @@ -81514,8 +81751,8 @@ "postfix": false, "binop": null }, - "start": 11278, - "end": 11279, + "start": 11299, + "end": 11300, "loc": { "start": { "line": 305, @@ -81539,8 +81776,8 @@ "postfix": false, "binop": null }, - "start": 11300, - "end": 11301, + "start": 11321, + "end": 11322, "loc": { "start": { "line": 306, @@ -81564,8 +81801,8 @@ "postfix": false, "binop": null }, - "start": 11319, - "end": 11320, + "start": 11340, + "end": 11341, "loc": { "start": { "line": 308, @@ -81592,8 +81829,8 @@ "updateContext": null }, "value": "else", - "start": 11321, - "end": 11325, + "start": 11342, + "end": 11346, "loc": { "start": { "line": 308, @@ -81617,8 +81854,8 @@ "postfix": false, "binop": null }, - "start": 11326, - "end": 11327, + "start": 11347, + "end": 11348, "loc": { "start": { "line": 308, @@ -81643,8 +81880,8 @@ "binop": null }, "value": "cameraControl", - "start": 11349, - "end": 11362, + "start": 11370, + "end": 11383, "loc": { "start": { "line": 310, @@ -81669,8 +81906,8 @@ "binop": null, "updateContext": null }, - "start": 11362, - "end": 11363, + "start": 11383, + "end": 11384, "loc": { "start": { "line": 310, @@ -81695,8 +81932,8 @@ "binop": null }, "value": "fire", - "start": 11363, - "end": 11367, + "start": 11384, + "end": 11388, "loc": { "start": { "line": 310, @@ -81720,8 +81957,8 @@ "postfix": false, "binop": null }, - "start": 11367, - "end": 11368, + "start": 11388, + "end": 11389, "loc": { "start": { "line": 310, @@ -81747,8 +81984,8 @@ "updateContext": null }, "value": "doublePickedNothing", - "start": 11368, - "end": 11389, + "start": 11389, + "end": 11410, "loc": { "start": { "line": 310, @@ -81773,8 +82010,8 @@ "binop": null, "updateContext": null }, - "start": 11389, - "end": 11390, + "start": 11410, + "end": 11411, "loc": { "start": { "line": 310, @@ -81798,8 +82035,8 @@ "postfix": false, "binop": null }, - "start": 11391, - "end": 11392, + "start": 11412, + "end": 11413, "loc": { "start": { "line": 310, @@ -81824,8 +82061,8 @@ "binop": null }, "value": "canvasPos", - "start": 11417, - "end": 11426, + "start": 11438, + "end": 11447, "loc": { "start": { "line": 311, @@ -81850,8 +82087,8 @@ "binop": null, "updateContext": null }, - "start": 11426, - "end": 11427, + "start": 11447, + "end": 11448, "loc": { "start": { "line": 311, @@ -81876,8 +82113,8 @@ "binop": null }, "value": "states", - "start": 11428, - "end": 11434, + "start": 11449, + "end": 11455, "loc": { "start": { "line": 311, @@ -81902,8 +82139,8 @@ "binop": null, "updateContext": null }, - "start": 11434, - "end": 11435, + "start": 11455, + "end": 11456, "loc": { "start": { "line": 311, @@ -81928,8 +82165,8 @@ "binop": null }, "value": "pointerCanvasPos", - "start": 11435, - "end": 11451, + "start": 11456, + "end": 11472, "loc": { "start": { "line": 311, @@ -81953,8 +82190,8 @@ "postfix": false, "binop": null }, - "start": 11472, - "end": 11473, + "start": 11493, + "end": 11494, "loc": { "start": { "line": 312, @@ -81979,8 +82216,8 @@ "binop": null, "updateContext": null }, - "start": 11473, - "end": 11474, + "start": 11494, + "end": 11495, "loc": { "start": { "line": 312, @@ -82007,8 +82244,8 @@ "updateContext": null }, "value": "true", - "start": 11475, - "end": 11479, + "start": 11496, + "end": 11500, "loc": { "start": { "line": 312, @@ -82032,8 +82269,8 @@ "postfix": false, "binop": null }, - "start": 11479, - "end": 11480, + "start": 11500, + "end": 11501, "loc": { "start": { "line": 312, @@ -82058,8 +82295,8 @@ "binop": null, "updateContext": null }, - "start": 11480, - "end": 11481, + "start": 11501, + "end": 11502, "loc": { "start": { "line": 312, @@ -82086,8 +82323,8 @@ "updateContext": null }, "value": "if", - "start": 11503, - "end": 11505, + "start": 11524, + "end": 11526, "loc": { "start": { "line": 314, @@ -82111,8 +82348,8 @@ "postfix": false, "binop": null }, - "start": 11506, - "end": 11507, + "start": 11527, + "end": 11528, "loc": { "start": { "line": 314, @@ -82137,8 +82374,8 @@ "binop": null }, "value": "configs", - "start": 11507, - "end": 11514, + "start": 11528, + "end": 11535, "loc": { "start": { "line": 314, @@ -82163,8 +82400,8 @@ "binop": null, "updateContext": null }, - "start": 11514, - "end": 11515, + "start": 11535, + "end": 11536, "loc": { "start": { "line": 314, @@ -82189,8 +82426,8 @@ "binop": null }, "value": "doublePickFlyTo", - "start": 11515, - "end": 11530, + "start": 11536, + "end": 11551, "loc": { "start": { "line": 314, @@ -82214,8 +82451,8 @@ "postfix": false, "binop": null }, - "start": 11530, - "end": 11531, + "start": 11551, + "end": 11552, "loc": { "start": { "line": 314, @@ -82239,8 +82476,8 @@ "postfix": false, "binop": null }, - "start": 11532, - "end": 11533, + "start": 11553, + "end": 11554, "loc": { "start": { "line": 314, @@ -82265,8 +82502,8 @@ "binop": null }, "value": "flyCameraTo", - "start": 11559, - "end": 11570, + "start": 11580, + "end": 11591, "loc": { "start": { "line": 316, @@ -82290,8 +82527,8 @@ "postfix": false, "binop": null }, - "start": 11570, - "end": 11571, + "start": 11591, + "end": 11592, "loc": { "start": { "line": 316, @@ -82315,8 +82552,8 @@ "postfix": false, "binop": null }, - "start": 11571, - "end": 11572, + "start": 11592, + "end": 11593, "loc": { "start": { "line": 316, @@ -82341,8 +82578,8 @@ "binop": null, "updateContext": null }, - "start": 11572, - "end": 11573, + "start": 11593, + "end": 11594, "loc": { "start": { "line": 316, @@ -82369,8 +82606,8 @@ "updateContext": null }, "value": "if", - "start": 11599, - "end": 11601, + "start": 11620, + "end": 11622, "loc": { "start": { "line": 318, @@ -82394,8 +82631,8 @@ "postfix": false, "binop": null }, - "start": 11602, - "end": 11603, + "start": 11623, + "end": 11624, "loc": { "start": { "line": 318, @@ -82419,8 +82656,8 @@ "postfix": false, "binop": null }, - "start": 11603, - "end": 11604, + "start": 11624, + "end": 11625, "loc": { "start": { "line": 318, @@ -82446,8 +82683,8 @@ "updateContext": null }, "value": "!", - "start": 11604, - "end": 11605, + "start": 11625, + "end": 11626, "loc": { "start": { "line": 318, @@ -82472,8 +82709,8 @@ "binop": null }, "value": "configs", - "start": 11605, - "end": 11612, + "start": 11626, + "end": 11633, "loc": { "start": { "line": 318, @@ -82498,8 +82735,8 @@ "binop": null, "updateContext": null }, - "start": 11612, - "end": 11613, + "start": 11633, + "end": 11634, "loc": { "start": { "line": 318, @@ -82524,8 +82761,8 @@ "binop": null }, "value": "firstPerson", - "start": 11613, - "end": 11624, + "start": 11634, + "end": 11645, "loc": { "start": { "line": 318, @@ -82549,8 +82786,8 @@ "postfix": false, "binop": null }, - "start": 11624, - "end": 11625, + "start": 11645, + "end": 11646, "loc": { "start": { "line": 318, @@ -82576,8 +82813,8 @@ "updateContext": null }, "value": "&&", - "start": 11626, - "end": 11628, + "start": 11647, + "end": 11649, "loc": { "start": { "line": 318, @@ -82602,8 +82839,8 @@ "binop": null }, "value": "configs", - "start": 11629, - "end": 11636, + "start": 11650, + "end": 11657, "loc": { "start": { "line": 318, @@ -82628,8 +82865,8 @@ "binop": null, "updateContext": null }, - "start": 11636, - "end": 11637, + "start": 11657, + "end": 11658, "loc": { "start": { "line": 318, @@ -82654,8 +82891,8 @@ "binop": null }, "value": "followPointer", - "start": 11637, - "end": 11650, + "start": 11658, + "end": 11671, "loc": { "start": { "line": 318, @@ -82679,8 +82916,8 @@ "postfix": false, "binop": null }, - "start": 11650, - "end": 11651, + "start": 11671, + "end": 11672, "loc": { "start": { "line": 318, @@ -82704,8 +82941,8 @@ "postfix": false, "binop": null }, - "start": 11652, - "end": 11653, + "start": 11673, + "end": 11674, "loc": { "start": { "line": 318, @@ -82732,8 +82969,8 @@ "updateContext": null }, "value": "const", - "start": 11683, - "end": 11688, + "start": 11704, + "end": 11709, "loc": { "start": { "line": 320, @@ -82758,8 +82995,8 @@ "binop": null }, "value": "sceneAABB", - "start": 11689, - "end": 11698, + "start": 11710, + "end": 11719, "loc": { "start": { "line": 320, @@ -82785,8 +83022,8 @@ "updateContext": null }, "value": "=", - "start": 11699, - "end": 11700, + "start": 11720, + "end": 11721, "loc": { "start": { "line": 320, @@ -82811,8 +83048,8 @@ "binop": null }, "value": "scene", - "start": 11701, - "end": 11706, + "start": 11722, + "end": 11727, "loc": { "start": { "line": 320, @@ -82837,8 +83074,8 @@ "binop": null, "updateContext": null }, - "start": 11706, - "end": 11707, + "start": 11727, + "end": 11728, "loc": { "start": { "line": 320, @@ -82863,8 +83100,8 @@ "binop": null }, "value": "aabb", - "start": 11707, - "end": 11711, + "start": 11728, + "end": 11732, "loc": { "start": { "line": 320, @@ -82889,8 +83126,8 @@ "binop": null, "updateContext": null }, - "start": 11711, - "end": 11712, + "start": 11732, + "end": 11733, "loc": { "start": { "line": 320, @@ -82917,8 +83154,8 @@ "updateContext": null }, "value": "const", - "start": 11741, - "end": 11746, + "start": 11762, + "end": 11767, "loc": { "start": { "line": 321, @@ -82943,8 +83180,8 @@ "binop": null }, "value": "sceneCenterPos", - "start": 11747, - "end": 11761, + "start": 11768, + "end": 11782, "loc": { "start": { "line": 321, @@ -82970,8 +83207,8 @@ "updateContext": null }, "value": "=", - "start": 11762, - "end": 11763, + "start": 11783, + "end": 11784, "loc": { "start": { "line": 321, @@ -82996,8 +83233,8 @@ "binop": null }, "value": "math", - "start": 11764, - "end": 11768, + "start": 11785, + "end": 11789, "loc": { "start": { "line": 321, @@ -83022,8 +83259,8 @@ "binop": null, "updateContext": null }, - "start": 11768, - "end": 11769, + "start": 11789, + "end": 11790, "loc": { "start": { "line": 321, @@ -83048,8 +83285,8 @@ "binop": null }, "value": "getAABB3Center", - "start": 11769, - "end": 11783, + "start": 11790, + "end": 11804, "loc": { "start": { "line": 321, @@ -83073,8 +83310,8 @@ "postfix": false, "binop": null }, - "start": 11783, - "end": 11784, + "start": 11804, + "end": 11805, "loc": { "start": { "line": 321, @@ -83099,8 +83336,8 @@ "binop": null }, "value": "sceneAABB", - "start": 11784, - "end": 11793, + "start": 11805, + "end": 11814, "loc": { "start": { "line": 321, @@ -83124,8 +83361,8 @@ "postfix": false, "binop": null }, - "start": 11793, - "end": 11794, + "start": 11814, + "end": 11815, "loc": { "start": { "line": 321, @@ -83150,8 +83387,8 @@ "binop": null, "updateContext": null }, - "start": 11794, - "end": 11795, + "start": 11815, + "end": 11816, "loc": { "start": { "line": 321, @@ -83176,8 +83413,8 @@ "binop": null }, "value": "controllers", - "start": 11825, - "end": 11836, + "start": 11846, + "end": 11857, "loc": { "start": { "line": 323, @@ -83202,8 +83439,8 @@ "binop": null, "updateContext": null }, - "start": 11836, - "end": 11837, + "start": 11857, + "end": 11858, "loc": { "start": { "line": 323, @@ -83228,8 +83465,8 @@ "binop": null }, "value": "pivotController", - "start": 11837, - "end": 11852, + "start": 11858, + "end": 11873, "loc": { "start": { "line": 323, @@ -83254,8 +83491,8 @@ "binop": null, "updateContext": null }, - "start": 11852, - "end": 11853, + "start": 11873, + "end": 11874, "loc": { "start": { "line": 323, @@ -83280,8 +83517,8 @@ "binop": null }, "value": "setPivotPos", - "start": 11853, - "end": 11864, + "start": 11874, + "end": 11885, "loc": { "start": { "line": 323, @@ -83305,8 +83542,8 @@ "postfix": false, "binop": null }, - "start": 11864, - "end": 11865, + "start": 11885, + "end": 11886, "loc": { "start": { "line": 323, @@ -83331,8 +83568,8 @@ "binop": null }, "value": "sceneCenterPos", - "start": 11865, - "end": 11879, + "start": 11886, + "end": 11900, "loc": { "start": { "line": 323, @@ -83356,8 +83593,8 @@ "postfix": false, "binop": null }, - "start": 11879, - "end": 11880, + "start": 11900, + "end": 11901, "loc": { "start": { "line": 323, @@ -83382,8 +83619,8 @@ "binop": null, "updateContext": null }, - "start": 11880, - "end": 11881, + "start": 11901, + "end": 11902, "loc": { "start": { "line": 323, @@ -83410,8 +83647,8 @@ "updateContext": null }, "value": "if", - "start": 11911, - "end": 11913, + "start": 11932, + "end": 11934, "loc": { "start": { "line": 325, @@ -83435,8 +83672,8 @@ "postfix": false, "binop": null }, - "start": 11914, - "end": 11915, + "start": 11935, + "end": 11936, "loc": { "start": { "line": 325, @@ -83461,8 +83698,8 @@ "binop": null }, "value": "controllers", - "start": 11915, - "end": 11926, + "start": 11936, + "end": 11947, "loc": { "start": { "line": 325, @@ -83487,8 +83724,8 @@ "binop": null, "updateContext": null }, - "start": 11926, - "end": 11927, + "start": 11947, + "end": 11948, "loc": { "start": { "line": 325, @@ -83513,8 +83750,8 @@ "binop": null }, "value": "pivotController", - "start": 11927, - "end": 11942, + "start": 11948, + "end": 11963, "loc": { "start": { "line": 325, @@ -83539,8 +83776,8 @@ "binop": null, "updateContext": null }, - "start": 11942, - "end": 11943, + "start": 11963, + "end": 11964, "loc": { "start": { "line": 325, @@ -83565,8 +83802,8 @@ "binop": null }, "value": "startPivot", - "start": 11943, - "end": 11953, + "start": 11964, + "end": 11974, "loc": { "start": { "line": 325, @@ -83590,8 +83827,8 @@ "postfix": false, "binop": null }, - "start": 11953, - "end": 11954, + "start": 11974, + "end": 11975, "loc": { "start": { "line": 325, @@ -83615,8 +83852,8 @@ "postfix": false, "binop": null }, - "start": 11954, - "end": 11955, + "start": 11975, + "end": 11976, "loc": { "start": { "line": 325, @@ -83640,8 +83877,8 @@ "postfix": false, "binop": null }, - "start": 11955, - "end": 11956, + "start": 11976, + "end": 11977, "loc": { "start": { "line": 325, @@ -83665,8 +83902,8 @@ "postfix": false, "binop": null }, - "start": 11957, - "end": 11958, + "start": 11978, + "end": 11979, "loc": { "start": { "line": 325, @@ -83691,8 +83928,8 @@ "binop": null }, "value": "controllers", - "start": 11991, - "end": 12002, + "start": 12012, + "end": 12023, "loc": { "start": { "line": 326, @@ -83717,8 +83954,8 @@ "binop": null, "updateContext": null }, - "start": 12002, - "end": 12003, + "start": 12023, + "end": 12024, "loc": { "start": { "line": 326, @@ -83743,8 +83980,8 @@ "binop": null }, "value": "pivotController", - "start": 12003, - "end": 12018, + "start": 12024, + "end": 12039, "loc": { "start": { "line": 326, @@ -83769,8 +84006,8 @@ "binop": null, "updateContext": null }, - "start": 12018, - "end": 12019, + "start": 12039, + "end": 12040, "loc": { "start": { "line": 326, @@ -83795,8 +84032,8 @@ "binop": null }, "value": "showPivot", - "start": 12019, - "end": 12028, + "start": 12040, + "end": 12049, "loc": { "start": { "line": 326, @@ -83820,8 +84057,8 @@ "postfix": false, "binop": null }, - "start": 12028, - "end": 12029, + "start": 12049, + "end": 12050, "loc": { "start": { "line": 326, @@ -83845,8 +84082,8 @@ "postfix": false, "binop": null }, - "start": 12029, - "end": 12030, + "start": 12050, + "end": 12051, "loc": { "start": { "line": 326, @@ -83871,8 +84108,8 @@ "binop": null, "updateContext": null }, - "start": 12030, - "end": 12031, + "start": 12051, + "end": 12052, "loc": { "start": { "line": 326, @@ -83896,8 +84133,8 @@ "postfix": false, "binop": null }, - "start": 12060, - "end": 12061, + "start": 12081, + "end": 12082, "loc": { "start": { "line": 327, @@ -83921,8 +84158,8 @@ "postfix": false, "binop": null }, - "start": 12086, - "end": 12087, + "start": 12107, + "end": 12108, "loc": { "start": { "line": 328, @@ -83946,8 +84183,8 @@ "postfix": false, "binop": null }, - "start": 12108, - "end": 12109, + "start": 12129, + "end": 12130, "loc": { "start": { "line": 329, @@ -83971,8 +84208,8 @@ "postfix": false, "binop": null }, - "start": 12126, - "end": 12127, + "start": 12147, + "end": 12148, "loc": { "start": { "line": 330, @@ -83999,8 +84236,8 @@ "updateContext": null }, "value": "this", - "start": 12145, - "end": 12149, + "start": 12166, + "end": 12170, "loc": { "start": { "line": 332, @@ -84025,8 +84262,8 @@ "binop": null, "updateContext": null }, - "start": 12149, - "end": 12150, + "start": 12170, + "end": 12171, "loc": { "start": { "line": 332, @@ -84051,8 +84288,8 @@ "binop": null }, "value": "_clicks", - "start": 12150, - "end": 12157, + "start": 12171, + "end": 12178, "loc": { "start": { "line": 332, @@ -84078,8 +84315,8 @@ "updateContext": null }, "value": "=", - "start": 12158, - "end": 12159, + "start": 12179, + "end": 12180, "loc": { "start": { "line": 332, @@ -84105,8 +84342,8 @@ "updateContext": null }, "value": 0, - "start": 12160, - "end": 12161, + "start": 12181, + "end": 12182, "loc": { "start": { "line": 332, @@ -84131,8 +84368,8 @@ "binop": null, "updateContext": null }, - "start": 12161, - "end": 12162, + "start": 12182, + "end": 12183, "loc": { "start": { "line": 332, @@ -84156,8 +84393,8 @@ "postfix": false, "binop": null }, - "start": 12175, - "end": 12176, + "start": 12196, + "end": 12197, "loc": { "start": { "line": 333, @@ -84181,8 +84418,8 @@ "postfix": false, "binop": null }, - "start": 12185, - "end": 12186, + "start": 12206, + "end": 12207, "loc": { "start": { "line": 334, @@ -84207,8 +84444,8 @@ "binop": null, "updateContext": null }, - "start": 12186, - "end": 12187, + "start": 12207, + "end": 12208, "loc": { "start": { "line": 334, @@ -84235,8 +84472,8 @@ "updateContext": null }, "value": "false", - "start": 12188, - "end": 12193, + "start": 12209, + "end": 12214, "loc": { "start": { "line": 334, @@ -84260,8 +84497,8 @@ "postfix": false, "binop": null }, - "start": 12193, - "end": 12194, + "start": 12214, + "end": 12215, "loc": { "start": { "line": 334, @@ -84286,8 +84523,8 @@ "binop": null, "updateContext": null }, - "start": 12194, - "end": 12195, + "start": 12215, + "end": 12216, "loc": { "start": { "line": 334, @@ -84311,8 +84548,8 @@ "postfix": false, "binop": null }, - "start": 12200, - "end": 12201, + "start": 12221, + "end": 12222, "loc": { "start": { "line": 335, @@ -84337,8 +84574,8 @@ "binop": null }, "value": "reset", - "start": 12207, - "end": 12212, + "start": 12228, + "end": 12233, "loc": { "start": { "line": 337, @@ -84362,8 +84599,8 @@ "postfix": false, "binop": null }, - "start": 12212, - "end": 12213, + "start": 12233, + "end": 12234, "loc": { "start": { "line": 337, @@ -84387,8 +84624,8 @@ "postfix": false, "binop": null }, - "start": 12213, - "end": 12214, + "start": 12234, + "end": 12235, "loc": { "start": { "line": 337, @@ -84412,8 +84649,8 @@ "postfix": false, "binop": null }, - "start": 12215, - "end": 12216, + "start": 12236, + "end": 12237, "loc": { "start": { "line": 337, @@ -84440,8 +84677,8 @@ "updateContext": null }, "value": "this", - "start": 12225, - "end": 12229, + "start": 12246, + "end": 12250, "loc": { "start": { "line": 338, @@ -84466,8 +84703,8 @@ "binop": null, "updateContext": null }, - "start": 12229, - "end": 12230, + "start": 12250, + "end": 12251, "loc": { "start": { "line": 338, @@ -84492,8 +84729,8 @@ "binop": null }, "value": "_clicks", - "start": 12230, - "end": 12237, + "start": 12251, + "end": 12258, "loc": { "start": { "line": 338, @@ -84519,8 +84756,8 @@ "updateContext": null }, "value": "=", - "start": 12238, - "end": 12239, + "start": 12259, + "end": 12260, "loc": { "start": { "line": 338, @@ -84546,8 +84783,8 @@ "updateContext": null }, "value": 0, - "start": 12240, - "end": 12241, + "start": 12261, + "end": 12262, "loc": { "start": { "line": 338, @@ -84572,8 +84809,8 @@ "binop": null, "updateContext": null }, - "start": 12241, - "end": 12242, + "start": 12262, + "end": 12263, "loc": { "start": { "line": 338, @@ -84600,8 +84837,8 @@ "updateContext": null }, "value": "this", - "start": 12251, - "end": 12255, + "start": 12272, + "end": 12276, "loc": { "start": { "line": 339, @@ -84626,8 +84863,8 @@ "binop": null, "updateContext": null }, - "start": 12255, - "end": 12256, + "start": 12276, + "end": 12277, "loc": { "start": { "line": 339, @@ -84652,8 +84889,8 @@ "binop": null }, "value": "_lastPickedEntityId", - "start": 12256, - "end": 12275, + "start": 12277, + "end": 12296, "loc": { "start": { "line": 339, @@ -84679,8 +84916,8 @@ "updateContext": null }, "value": "=", - "start": 12276, - "end": 12277, + "start": 12297, + "end": 12298, "loc": { "start": { "line": 339, @@ -84707,8 +84944,8 @@ "updateContext": null }, "value": "null", - "start": 12278, - "end": 12282, + "start": 12299, + "end": 12303, "loc": { "start": { "line": 339, @@ -84733,8 +84970,8 @@ "binop": null, "updateContext": null }, - "start": 12282, - "end": 12283, + "start": 12303, + "end": 12304, "loc": { "start": { "line": 339, @@ -84761,8 +84998,8 @@ "updateContext": null }, "value": "if", - "start": 12292, - "end": 12294, + "start": 12313, + "end": 12315, "loc": { "start": { "line": 340, @@ -84786,8 +85023,8 @@ "postfix": false, "binop": null }, - "start": 12295, - "end": 12296, + "start": 12316, + "end": 12317, "loc": { "start": { "line": 340, @@ -84814,8 +85051,8 @@ "updateContext": null }, "value": "this", - "start": 12296, - "end": 12300, + "start": 12317, + "end": 12321, "loc": { "start": { "line": 340, @@ -84840,8 +85077,8 @@ "binop": null, "updateContext": null }, - "start": 12300, - "end": 12301, + "start": 12321, + "end": 12322, "loc": { "start": { "line": 340, @@ -84866,8 +85103,8 @@ "binop": null }, "value": "_timeout", - "start": 12301, - "end": 12309, + "start": 12322, + "end": 12330, "loc": { "start": { "line": 340, @@ -84891,8 +85128,8 @@ "postfix": false, "binop": null }, - "start": 12309, - "end": 12310, + "start": 12330, + "end": 12331, "loc": { "start": { "line": 340, @@ -84916,8 +85153,8 @@ "postfix": false, "binop": null }, - "start": 12311, - "end": 12312, + "start": 12332, + "end": 12333, "loc": { "start": { "line": 340, @@ -84942,8 +85179,8 @@ "binop": null }, "value": "window", - "start": 12325, - "end": 12331, + "start": 12346, + "end": 12352, "loc": { "start": { "line": 341, @@ -84968,8 +85205,8 @@ "binop": null, "updateContext": null }, - "start": 12331, - "end": 12332, + "start": 12352, + "end": 12353, "loc": { "start": { "line": 341, @@ -84994,8 +85231,8 @@ "binop": null }, "value": "clearTimeout", - "start": 12332, - "end": 12344, + "start": 12353, + "end": 12365, "loc": { "start": { "line": 341, @@ -85019,8 +85256,8 @@ "postfix": false, "binop": null }, - "start": 12344, - "end": 12345, + "start": 12365, + "end": 12366, "loc": { "start": { "line": 341, @@ -85047,8 +85284,8 @@ "updateContext": null }, "value": "this", - "start": 12345, - "end": 12349, + "start": 12366, + "end": 12370, "loc": { "start": { "line": 341, @@ -85073,8 +85310,8 @@ "binop": null, "updateContext": null }, - "start": 12349, - "end": 12350, + "start": 12370, + "end": 12371, "loc": { "start": { "line": 341, @@ -85099,8 +85336,8 @@ "binop": null }, "value": "_timeout", - "start": 12350, - "end": 12358, + "start": 12371, + "end": 12379, "loc": { "start": { "line": 341, @@ -85124,8 +85361,8 @@ "postfix": false, "binop": null }, - "start": 12358, - "end": 12359, + "start": 12379, + "end": 12380, "loc": { "start": { "line": 341, @@ -85150,8 +85387,8 @@ "binop": null, "updateContext": null }, - "start": 12359, - "end": 12360, + "start": 12380, + "end": 12381, "loc": { "start": { "line": 341, @@ -85178,8 +85415,8 @@ "updateContext": null }, "value": "this", - "start": 12373, - "end": 12377, + "start": 12394, + "end": 12398, "loc": { "start": { "line": 342, @@ -85204,8 +85441,8 @@ "binop": null, "updateContext": null }, - "start": 12377, - "end": 12378, + "start": 12398, + "end": 12399, "loc": { "start": { "line": 342, @@ -85230,8 +85467,8 @@ "binop": null }, "value": "_timeout", - "start": 12378, - "end": 12386, + "start": 12399, + "end": 12407, "loc": { "start": { "line": 342, @@ -85257,8 +85494,8 @@ "updateContext": null }, "value": "=", - "start": 12387, - "end": 12388, + "start": 12408, + "end": 12409, "loc": { "start": { "line": 342, @@ -85285,8 +85522,8 @@ "updateContext": null }, "value": "null", - "start": 12389, - "end": 12393, + "start": 12410, + "end": 12414, "loc": { "start": { "line": 342, @@ -85311,8 +85548,8 @@ "binop": null, "updateContext": null }, - "start": 12393, - "end": 12394, + "start": 12414, + "end": 12415, "loc": { "start": { "line": 342, @@ -85336,8 +85573,8 @@ "postfix": false, "binop": null }, - "start": 12403, - "end": 12404, + "start": 12424, + "end": 12425, "loc": { "start": { "line": 343, @@ -85361,8 +85598,8 @@ "postfix": false, "binop": null }, - "start": 12409, - "end": 12410, + "start": 12430, + "end": 12431, "loc": { "start": { "line": 344, @@ -85387,8 +85624,8 @@ "binop": null }, "value": "destroy", - "start": 12416, - "end": 12423, + "start": 12437, + "end": 12444, "loc": { "start": { "line": 346, @@ -85412,8 +85649,8 @@ "postfix": false, "binop": null }, - "start": 12423, - "end": 12424, + "start": 12444, + "end": 12445, "loc": { "start": { "line": 346, @@ -85437,8 +85674,8 @@ "postfix": false, "binop": null }, - "start": 12424, - "end": 12425, + "start": 12445, + "end": 12446, "loc": { "start": { "line": 346, @@ -85462,8 +85699,8 @@ "postfix": false, "binop": null }, - "start": 12426, - "end": 12427, + "start": 12447, + "end": 12448, "loc": { "start": { "line": 346, @@ -85490,8 +85727,8 @@ "updateContext": null }, "value": "const", - "start": 12436, - "end": 12441, + "start": 12457, + "end": 12462, "loc": { "start": { "line": 347, @@ -85516,8 +85753,8 @@ "binop": null }, "value": "canvas", - "start": 12442, - "end": 12448, + "start": 12463, + "end": 12469, "loc": { "start": { "line": 347, @@ -85543,8 +85780,8 @@ "updateContext": null }, "value": "=", - "start": 12449, - "end": 12450, + "start": 12470, + "end": 12471, "loc": { "start": { "line": 347, @@ -85571,8 +85808,8 @@ "updateContext": null }, "value": "this", - "start": 12451, - "end": 12455, + "start": 12472, + "end": 12476, "loc": { "start": { "line": 347, @@ -85597,8 +85834,8 @@ "binop": null, "updateContext": null }, - "start": 12455, - "end": 12456, + "start": 12476, + "end": 12477, "loc": { "start": { "line": 347, @@ -85623,8 +85860,8 @@ "binop": null }, "value": "_scene", - "start": 12456, - "end": 12462, + "start": 12477, + "end": 12483, "loc": { "start": { "line": 347, @@ -85649,8 +85886,8 @@ "binop": null, "updateContext": null }, - "start": 12462, - "end": 12463, + "start": 12483, + "end": 12484, "loc": { "start": { "line": 347, @@ -85675,8 +85912,8 @@ "binop": null }, "value": "canvas", - "start": 12463, - "end": 12469, + "start": 12484, + "end": 12490, "loc": { "start": { "line": 347, @@ -85701,8 +85938,8 @@ "binop": null, "updateContext": null }, - "start": 12469, - "end": 12470, + "start": 12490, + "end": 12491, "loc": { "start": { "line": 347, @@ -85727,8 +85964,8 @@ "binop": null }, "value": "canvas", - "start": 12470, - "end": 12476, + "start": 12491, + "end": 12497, "loc": { "start": { "line": 347, @@ -85753,8 +85990,8 @@ "binop": null, "updateContext": null }, - "start": 12476, - "end": 12477, + "start": 12497, + "end": 12498, "loc": { "start": { "line": 347, @@ -85779,8 +86016,8 @@ "binop": null }, "value": "canvas", - "start": 12486, - "end": 12492, + "start": 12507, + "end": 12513, "loc": { "start": { "line": 348, @@ -85805,8 +86042,8 @@ "binop": null, "updateContext": null }, - "start": 12492, - "end": 12493, + "start": 12513, + "end": 12514, "loc": { "start": { "line": 348, @@ -85831,8 +86068,8 @@ "binop": null }, "value": "removeEventListener", - "start": 12493, - "end": 12512, + "start": 12514, + "end": 12533, "loc": { "start": { "line": 348, @@ -85856,8 +86093,8 @@ "postfix": false, "binop": null }, - "start": 12512, - "end": 12513, + "start": 12533, + "end": 12534, "loc": { "start": { "line": 348, @@ -85883,8 +86120,8 @@ "updateContext": null }, "value": "mousemove", - "start": 12513, - "end": 12524, + "start": 12534, + "end": 12545, "loc": { "start": { "line": 348, @@ -85909,8 +86146,8 @@ "binop": null, "updateContext": null }, - "start": 12524, - "end": 12525, + "start": 12545, + "end": 12546, "loc": { "start": { "line": 348, @@ -85937,8 +86174,8 @@ "updateContext": null }, "value": "this", - "start": 12526, - "end": 12530, + "start": 12547, + "end": 12551, "loc": { "start": { "line": 348, @@ -85963,8 +86200,8 @@ "binop": null, "updateContext": null }, - "start": 12530, - "end": 12531, + "start": 12551, + "end": 12552, "loc": { "start": { "line": 348, @@ -85989,8 +86226,8 @@ "binop": null }, "value": "_canvasMouseMoveHandler", - "start": 12531, - "end": 12554, + "start": 12552, + "end": 12575, "loc": { "start": { "line": 348, @@ -86014,8 +86251,8 @@ "postfix": false, "binop": null }, - "start": 12554, - "end": 12555, + "start": 12575, + "end": 12576, "loc": { "start": { "line": 348, @@ -86040,8 +86277,8 @@ "binop": null, "updateContext": null }, - "start": 12555, - "end": 12556, + "start": 12576, + "end": 12577, "loc": { "start": { "line": 348, @@ -86066,8 +86303,8 @@ "binop": null }, "value": "canvas", - "start": 12565, - "end": 12571, + "start": 12586, + "end": 12592, "loc": { "start": { "line": 349, @@ -86092,8 +86329,8 @@ "binop": null, "updateContext": null }, - "start": 12571, - "end": 12572, + "start": 12592, + "end": 12593, "loc": { "start": { "line": 349, @@ -86118,8 +86355,8 @@ "binop": null }, "value": "removeEventListener", - "start": 12572, - "end": 12591, + "start": 12593, + "end": 12612, "loc": { "start": { "line": 349, @@ -86143,8 +86380,8 @@ "postfix": false, "binop": null }, - "start": 12591, - "end": 12592, + "start": 12612, + "end": 12613, "loc": { "start": { "line": 349, @@ -86170,8 +86407,8 @@ "updateContext": null }, "value": "mousedown", - "start": 12592, - "end": 12603, + "start": 12613, + "end": 12624, "loc": { "start": { "line": 349, @@ -86196,8 +86433,8 @@ "binop": null, "updateContext": null }, - "start": 12603, - "end": 12604, + "start": 12624, + "end": 12625, "loc": { "start": { "line": 349, @@ -86224,8 +86461,8 @@ "updateContext": null }, "value": "this", - "start": 12605, - "end": 12609, + "start": 12626, + "end": 12630, "loc": { "start": { "line": 349, @@ -86250,8 +86487,8 @@ "binop": null, "updateContext": null }, - "start": 12609, - "end": 12610, + "start": 12630, + "end": 12631, "loc": { "start": { "line": 349, @@ -86276,8 +86513,8 @@ "binop": null }, "value": "_canvasMouseDownHandler", - "start": 12610, - "end": 12633, + "start": 12631, + "end": 12654, "loc": { "start": { "line": 349, @@ -86301,8 +86538,8 @@ "postfix": false, "binop": null }, - "start": 12633, - "end": 12634, + "start": 12654, + "end": 12655, "loc": { "start": { "line": 349, @@ -86327,8 +86564,8 @@ "binop": null, "updateContext": null }, - "start": 12634, - "end": 12635, + "start": 12655, + "end": 12656, "loc": { "start": { "line": 349, @@ -86353,8 +86590,8 @@ "binop": null }, "value": "document", - "start": 12644, - "end": 12652, + "start": 12665, + "end": 12673, "loc": { "start": { "line": 350, @@ -86379,8 +86616,8 @@ "binop": null, "updateContext": null }, - "start": 12652, - "end": 12653, + "start": 12673, + "end": 12674, "loc": { "start": { "line": 350, @@ -86405,8 +86642,8 @@ "binop": null }, "value": "removeEventListener", - "start": 12653, - "end": 12672, + "start": 12674, + "end": 12693, "loc": { "start": { "line": 350, @@ -86430,8 +86667,8 @@ "postfix": false, "binop": null }, - "start": 12672, - "end": 12673, + "start": 12693, + "end": 12694, "loc": { "start": { "line": 350, @@ -86457,8 +86694,8 @@ "updateContext": null }, "value": "mouseup", - "start": 12673, - "end": 12682, + "start": 12694, + "end": 12703, "loc": { "start": { "line": 350, @@ -86483,8 +86720,8 @@ "binop": null, "updateContext": null }, - "start": 12682, - "end": 12683, + "start": 12703, + "end": 12704, "loc": { "start": { "line": 350, @@ -86511,8 +86748,8 @@ "updateContext": null }, "value": "this", - "start": 12684, - "end": 12688, + "start": 12705, + "end": 12709, "loc": { "start": { "line": 350, @@ -86537,8 +86774,8 @@ "binop": null, "updateContext": null }, - "start": 12688, - "end": 12689, + "start": 12709, + "end": 12710, "loc": { "start": { "line": 350, @@ -86563,8 +86800,8 @@ "binop": null }, "value": "_documentMouseUpHandler", - "start": 12689, - "end": 12712, + "start": 12710, + "end": 12733, "loc": { "start": { "line": 350, @@ -86588,8 +86825,8 @@ "postfix": false, "binop": null }, - "start": 12712, - "end": 12713, + "start": 12733, + "end": 12734, "loc": { "start": { "line": 350, @@ -86614,8 +86851,8 @@ "binop": null, "updateContext": null }, - "start": 12713, - "end": 12714, + "start": 12734, + "end": 12735, "loc": { "start": { "line": 350, @@ -86640,8 +86877,8 @@ "binop": null }, "value": "canvas", - "start": 12723, - "end": 12729, + "start": 12744, + "end": 12750, "loc": { "start": { "line": 351, @@ -86666,8 +86903,8 @@ "binop": null, "updateContext": null }, - "start": 12729, - "end": 12730, + "start": 12750, + "end": 12751, "loc": { "start": { "line": 351, @@ -86692,8 +86929,8 @@ "binop": null }, "value": "removeEventListener", - "start": 12730, - "end": 12749, + "start": 12751, + "end": 12770, "loc": { "start": { "line": 351, @@ -86717,8 +86954,8 @@ "postfix": false, "binop": null }, - "start": 12749, - "end": 12750, + "start": 12770, + "end": 12771, "loc": { "start": { "line": 351, @@ -86744,8 +86981,8 @@ "updateContext": null }, "value": "mouseup", - "start": 12750, - "end": 12759, + "start": 12771, + "end": 12780, "loc": { "start": { "line": 351, @@ -86770,8 +87007,8 @@ "binop": null, "updateContext": null }, - "start": 12759, - "end": 12760, + "start": 12780, + "end": 12781, "loc": { "start": { "line": 351, @@ -86798,8 +87035,8 @@ "updateContext": null }, "value": "this", - "start": 12761, - "end": 12765, + "start": 12782, + "end": 12786, "loc": { "start": { "line": 351, @@ -86824,8 +87061,8 @@ "binop": null, "updateContext": null }, - "start": 12765, - "end": 12766, + "start": 12786, + "end": 12787, "loc": { "start": { "line": 351, @@ -86850,8 +87087,8 @@ "binop": null }, "value": "_canvasMouseUpHandler", - "start": 12766, - "end": 12787, + "start": 12787, + "end": 12808, "loc": { "start": { "line": 351, @@ -86875,8 +87112,8 @@ "postfix": false, "binop": null }, - "start": 12787, - "end": 12788, + "start": 12808, + "end": 12809, "loc": { "start": { "line": 351, @@ -86901,8 +87138,8 @@ "binop": null, "updateContext": null }, - "start": 12788, - "end": 12789, + "start": 12809, + "end": 12810, "loc": { "start": { "line": 351, @@ -86929,8 +87166,8 @@ "updateContext": null }, "value": "if", - "start": 12798, - "end": 12800, + "start": 12819, + "end": 12821, "loc": { "start": { "line": 352, @@ -86954,8 +87191,8 @@ "postfix": false, "binop": null }, - "start": 12801, - "end": 12802, + "start": 12822, + "end": 12823, "loc": { "start": { "line": 352, @@ -86982,8 +87219,8 @@ "updateContext": null }, "value": "this", - "start": 12802, - "end": 12806, + "start": 12823, + "end": 12827, "loc": { "start": { "line": 352, @@ -87008,8 +87245,8 @@ "binop": null, "updateContext": null }, - "start": 12806, - "end": 12807, + "start": 12827, + "end": 12828, "loc": { "start": { "line": 352, @@ -87034,8 +87271,8 @@ "binop": null }, "value": "_timeout", - "start": 12807, - "end": 12815, + "start": 12828, + "end": 12836, "loc": { "start": { "line": 352, @@ -87059,8 +87296,8 @@ "postfix": false, "binop": null }, - "start": 12815, - "end": 12816, + "start": 12836, + "end": 12837, "loc": { "start": { "line": 352, @@ -87084,8 +87321,8 @@ "postfix": false, "binop": null }, - "start": 12817, - "end": 12818, + "start": 12838, + "end": 12839, "loc": { "start": { "line": 352, @@ -87110,8 +87347,8 @@ "binop": null }, "value": "window", - "start": 12831, - "end": 12837, + "start": 12852, + "end": 12858, "loc": { "start": { "line": 353, @@ -87136,8 +87373,8 @@ "binop": null, "updateContext": null }, - "start": 12837, - "end": 12838, + "start": 12858, + "end": 12859, "loc": { "start": { "line": 353, @@ -87162,8 +87399,8 @@ "binop": null }, "value": "clearTimeout", - "start": 12838, - "end": 12850, + "start": 12859, + "end": 12871, "loc": { "start": { "line": 353, @@ -87187,8 +87424,8 @@ "postfix": false, "binop": null }, - "start": 12850, - "end": 12851, + "start": 12871, + "end": 12872, "loc": { "start": { "line": 353, @@ -87215,8 +87452,8 @@ "updateContext": null }, "value": "this", - "start": 12851, - "end": 12855, + "start": 12872, + "end": 12876, "loc": { "start": { "line": 353, @@ -87241,8 +87478,8 @@ "binop": null, "updateContext": null }, - "start": 12855, - "end": 12856, + "start": 12876, + "end": 12877, "loc": { "start": { "line": 353, @@ -87267,8 +87504,8 @@ "binop": null }, "value": "_timeout", - "start": 12856, - "end": 12864, + "start": 12877, + "end": 12885, "loc": { "start": { "line": 353, @@ -87292,8 +87529,8 @@ "postfix": false, "binop": null }, - "start": 12864, - "end": 12865, + "start": 12885, + "end": 12886, "loc": { "start": { "line": 353, @@ -87318,8 +87555,8 @@ "binop": null, "updateContext": null }, - "start": 12865, - "end": 12866, + "start": 12886, + "end": 12887, "loc": { "start": { "line": 353, @@ -87346,8 +87583,8 @@ "updateContext": null }, "value": "this", - "start": 12879, - "end": 12883, + "start": 12900, + "end": 12904, "loc": { "start": { "line": 354, @@ -87372,8 +87609,8 @@ "binop": null, "updateContext": null }, - "start": 12883, - "end": 12884, + "start": 12904, + "end": 12905, "loc": { "start": { "line": 354, @@ -87398,8 +87635,8 @@ "binop": null }, "value": "_timeout", - "start": 12884, - "end": 12892, + "start": 12905, + "end": 12913, "loc": { "start": { "line": 354, @@ -87425,8 +87662,8 @@ "updateContext": null }, "value": "=", - "start": 12893, - "end": 12894, + "start": 12914, + "end": 12915, "loc": { "start": { "line": 354, @@ -87453,8 +87690,8 @@ "updateContext": null }, "value": "null", - "start": 12895, - "end": 12899, + "start": 12916, + "end": 12920, "loc": { "start": { "line": 354, @@ -87479,8 +87716,8 @@ "binop": null, "updateContext": null }, - "start": 12899, - "end": 12900, + "start": 12920, + "end": 12921, "loc": { "start": { "line": 354, @@ -87504,8 +87741,8 @@ "postfix": false, "binop": null }, - "start": 12909, - "end": 12910, + "start": 12930, + "end": 12931, "loc": { "start": { "line": 355, @@ -87529,8 +87766,8 @@ "postfix": false, "binop": null }, - "start": 12915, - "end": 12916, + "start": 12936, + "end": 12937, "loc": { "start": { "line": 356, @@ -87554,8 +87791,8 @@ "postfix": false, "binop": null }, - "start": 12917, - "end": 12918, + "start": 12938, + "end": 12939, "loc": { "start": { "line": 357, @@ -87582,8 +87819,8 @@ "updateContext": null }, "value": "export", - "start": 12922, - "end": 12928, + "start": 12943, + "end": 12949, "loc": { "start": { "line": 361, @@ -87607,8 +87844,8 @@ "postfix": false, "binop": null }, - "start": 12929, - "end": 12930, + "start": 12950, + "end": 12951, "loc": { "start": { "line": 361, @@ -87633,8 +87870,8 @@ "binop": null }, "value": "MousePickHandler", - "start": 12930, - "end": 12946, + "start": 12951, + "end": 12967, "loc": { "start": { "line": 361, @@ -87658,8 +87895,8 @@ "postfix": false, "binop": null }, - "start": 12946, - "end": 12947, + "start": 12967, + "end": 12968, "loc": { "start": { "line": 361, @@ -87684,8 +87921,8 @@ "binop": null, "updateContext": null }, - "start": 12947, - "end": 12948, + "start": 12968, + "end": 12969, "loc": { "start": { "line": 361, @@ -87710,8 +87947,8 @@ "binop": null, "updateContext": null }, - "start": 12948, - "end": 12948, + "start": 12969, + "end": 12969, "loc": { "start": { "line": 361, diff --git a/docs/ast/source/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js.json b/docs/ast/source/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js.json index 51e42e6ba9..93fbdf95d8 100644 --- a/docs/ast/source/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js.json +++ b/docs/ast/source/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js.json @@ -1,7 +1,7 @@ { "type": "File", "start": 0, - "end": 26149, + "end": 26292, "loc": { "start": { "line": 1, @@ -15,7 +15,7 @@ "program": { "type": "Program", "start": 0, - "end": 26149, + "end": 26292, "loc": { "start": { "line": 1, @@ -1587,7 +1587,7 @@ { "type": "Identifier", "start": 724, - "end": 26116, + "end": 26259, "loc": { "start": { "line": 20, @@ -1620,7 +1620,7 @@ "body": { "type": "ClassBody", "start": 752, - "end": 26116, + "end": 26259, "loc": { "start": { "line": 20, @@ -46836,7 +46836,7 @@ { "type": "ClassMethod", "start": 22619, - "end": 23035, + "end": 23048, "loc": { "start": { "line": 629, @@ -46875,7 +46875,7 @@ { "type": "Identifier", "start": 22642, - "end": 22650, + "end": 22653, "loc": { "start": { "line": 629, @@ -46883,7 +46883,24 @@ }, "end": { "line": 629, - "column": 35 + "column": 38 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 22655, + "end": 22663, + "loc": { + "start": { + "line": 629, + "column": 40 + }, + "end": { + "line": 629, + "column": 48 }, "identifierName": "frameCtx" }, @@ -46892,12 +46909,12 @@ ], "body": { "type": "BlockStatement", - "start": 22652, - "end": 23035, + "start": 22665, + "end": 23048, "loc": { "start": { "line": 629, - "column": 37 + "column": 50 }, "end": { "line": 636, @@ -46907,8 +46924,8 @@ "body": [ { "type": "IfStatement", - "start": 22662, - "end": 22828, + "start": 22675, + "end": 22841, "loc": { "start": { "line": 630, @@ -46921,8 +46938,8 @@ }, "test": { "type": "LogicalExpression", - "start": 22666, - "end": 22795, + "start": 22679, + "end": 22808, "loc": { "start": { "line": 630, @@ -46935,8 +46952,8 @@ }, "left": { "type": "LogicalExpression", - "start": 22666, - "end": 22755, + "start": 22679, + "end": 22768, "loc": { "start": { "line": 630, @@ -46949,8 +46966,8 @@ }, "left": { "type": "BinaryExpression", - "start": 22666, - "end": 22716, + "start": 22679, + "end": 22729, "loc": { "start": { "line": 630, @@ -46963,8 +46980,8 @@ }, "left": { "type": "MemberExpression", - "start": 22666, - "end": 22694, + "start": 22679, + "end": 22707, "loc": { "start": { "line": 630, @@ -46977,8 +46994,8 @@ }, "object": { "type": "ThisExpression", - "start": 22666, - "end": 22670, + "start": 22679, + "end": 22683, "loc": { "start": { "line": 630, @@ -46992,8 +47009,8 @@ }, "property": { "type": "Identifier", - "start": 22671, - "end": 22694, + "start": 22684, + "end": 22707, "loc": { "start": { "line": 630, @@ -47012,8 +47029,8 @@ "operator": "===", "right": { "type": "MemberExpression", - "start": 22699, - "end": 22716, + "start": 22712, + "end": 22729, "loc": { "start": { "line": 630, @@ -47026,8 +47043,8 @@ }, "object": { "type": "ThisExpression", - "start": 22699, - "end": 22703, + "start": 22712, + "end": 22716, "loc": { "start": { "line": 630, @@ -47041,8 +47058,8 @@ }, "property": { "type": "Identifier", - "start": 22704, - "end": 22716, + "start": 22717, + "end": 22729, "loc": { "start": { "line": 630, @@ -47062,8 +47079,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 22720, - "end": 22755, + "start": 22733, + "end": 22768, "loc": { "start": { "line": 630, @@ -47076,8 +47093,8 @@ }, "left": { "type": "MemberExpression", - "start": 22720, - "end": 22749, + "start": 22733, + "end": 22762, "loc": { "start": { "line": 630, @@ -47090,8 +47107,8 @@ }, "object": { "type": "ThisExpression", - "start": 22720, - "end": 22724, + "start": 22733, + "end": 22737, "loc": { "start": { "line": 630, @@ -47105,8 +47122,8 @@ }, "property": { "type": "Identifier", - "start": 22725, - "end": 22749, + "start": 22738, + "end": 22762, "loc": { "start": { "line": 630, @@ -47125,8 +47142,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 22754, - "end": 22755, + "start": 22767, + "end": 22768, "loc": { "start": { "line": 630, @@ -47148,8 +47165,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 22759, - "end": 22795, + "start": 22772, + "end": 22808, "loc": { "start": { "line": 630, @@ -47162,8 +47179,8 @@ }, "left": { "type": "MemberExpression", - "start": 22759, - "end": 22789, + "start": 22772, + "end": 22802, "loc": { "start": { "line": 630, @@ -47176,8 +47193,8 @@ }, "object": { "type": "ThisExpression", - "start": 22759, - "end": 22763, + "start": 22772, + "end": 22776, "loc": { "start": { "line": 630, @@ -47191,8 +47208,8 @@ }, "property": { "type": "Identifier", - "start": 22764, - "end": 22789, + "start": 22777, + "end": 22802, "loc": { "start": { "line": 630, @@ -47211,8 +47228,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 22794, - "end": 22795, + "start": 22807, + "end": 22808, "loc": { "start": { "line": 630, @@ -47233,8 +47250,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 22797, - "end": 22828, + "start": 22810, + "end": 22841, "loc": { "start": { "line": 630, @@ -47248,8 +47265,8 @@ "body": [ { "type": "ReturnStatement", - "start": 22811, - "end": 22818, + "start": 22824, + "end": 22831, "loc": { "start": { "line": 631, @@ -47269,8 +47286,8 @@ }, { "type": "IfStatement", - "start": 22837, - "end": 23029, + "start": 22850, + "end": 23042, "loc": { "start": { "line": 633, @@ -47283,8 +47300,8 @@ }, "test": { "type": "MemberExpression", - "start": 22841, - "end": 22891, + "start": 22854, + "end": 22904, "loc": { "start": { "line": 633, @@ -47297,8 +47314,8 @@ }, "object": { "type": "MemberExpression", - "start": 22841, - "end": 22872, + "start": 22854, + "end": 22885, "loc": { "start": { "line": 633, @@ -47311,8 +47328,8 @@ }, "object": { "type": "ThisExpression", - "start": 22841, - "end": 22845, + "start": 22854, + "end": 22858, "loc": { "start": { "line": 633, @@ -47326,8 +47343,8 @@ }, "property": { "type": "Identifier", - "start": 22846, - "end": 22872, + "start": 22859, + "end": 22885, "loc": { "start": { "line": 633, @@ -47345,8 +47362,8 @@ }, "property": { "type": "Identifier", - "start": 22873, - "end": 22891, + "start": 22886, + "end": 22904, "loc": { "start": { "line": 633, @@ -47364,8 +47381,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 22893, - "end": 23029, + "start": 22906, + "end": 23042, "loc": { "start": { "line": 633, @@ -47379,8 +47396,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 22907, - "end": 23019, + "start": 22920, + "end": 23032, "loc": { "start": { "line": 634, @@ -47393,8 +47410,8 @@ }, "expression": { "type": "CallExpression", - "start": 22907, - "end": 23018, + "start": 22920, + "end": 23031, "loc": { "start": { "line": 634, @@ -47407,8 +47424,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22907, - "end": 22967, + "start": 22920, + "end": 22980, "loc": { "start": { "line": 634, @@ -47421,8 +47438,8 @@ }, "object": { "type": "MemberExpression", - "start": 22907, - "end": 22957, + "start": 22920, + "end": 22970, "loc": { "start": { "line": 634, @@ -47435,8 +47452,8 @@ }, "object": { "type": "MemberExpression", - "start": 22907, - "end": 22938, + "start": 22920, + "end": 22951, "loc": { "start": { "line": 634, @@ -47449,8 +47466,8 @@ }, "object": { "type": "ThisExpression", - "start": 22907, - "end": 22911, + "start": 22920, + "end": 22924, "loc": { "start": { "line": 634, @@ -47464,8 +47481,8 @@ }, "property": { "type": "Identifier", - "start": 22912, - "end": 22938, + "start": 22925, + "end": 22951, "loc": { "start": { "line": 634, @@ -47483,8 +47500,8 @@ }, "property": { "type": "Identifier", - "start": 22939, - "end": 22957, + "start": 22952, + "end": 22970, "loc": { "start": { "line": 634, @@ -47502,8 +47519,8 @@ }, "property": { "type": "Identifier", - "start": 22958, - "end": 22967, + "start": 22971, + "end": 22980, "loc": { "start": { "line": 634, @@ -47522,8 +47539,8 @@ "arguments": [ { "type": "Identifier", - "start": 22968, - "end": 22976, + "start": 22981, + "end": 22989, "loc": { "start": { "line": 634, @@ -47539,8 +47556,8 @@ }, { "type": "ThisExpression", - "start": 22978, - "end": 22982, + "start": 22991, + "end": 22995, "loc": { "start": { "line": 634, @@ -47554,8 +47571,8 @@ }, { "type": "MemberExpression", - "start": 22984, - "end": 23017, + "start": 22997, + "end": 23030, "loc": { "start": { "line": 634, @@ -47568,8 +47585,8 @@ }, "object": { "type": "Identifier", - "start": 22984, - "end": 22997, + "start": 22997, + "end": 23010, "loc": { "start": { "line": 634, @@ -47585,8 +47602,8 @@ }, "property": { "type": "Identifier", - "start": 22998, - "end": 23017, + "start": 23011, + "end": 23030, "loc": { "start": { "line": 634, @@ -47618,8 +47635,8 @@ { "type": "CommentLine", "value": "-- EDGES RENDERING -----------------------------------------------------------------------------------------------", - "start": 23041, - "end": 23157, + "start": 23054, + "end": 23170, "loc": { "start": { "line": 638, @@ -47635,8 +47652,8 @@ }, { "type": "ClassMethod", - "start": 23163, - "end": 23201, + "start": 23176, + "end": 23227, "loc": { "start": { "line": 640, @@ -47651,8 +47668,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 23163, - "end": 23183, + "start": 23176, + "end": 23196, "loc": { "start": { "line": 640, @@ -47675,8 +47692,8 @@ "params": [ { "type": "Identifier", - "start": 23184, - "end": 23192, + "start": 23197, + "end": 23208, "loc": { "start": { "line": 640, @@ -47684,7 +47701,24 @@ }, "end": { "line": 640, - "column": 33 + "column": 36 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 23210, + "end": 23218, + "loc": { + "start": { + "line": 640, + "column": 38 + }, + "end": { + "line": 640, + "column": 46 }, "identifierName": "frameCtx" }, @@ -47693,12 +47727,12 @@ ], "body": { "type": "BlockStatement", - "start": 23194, - "end": 23201, + "start": 23220, + "end": 23227, "loc": { "start": { "line": 640, - "column": 35 + "column": 48 }, "end": { "line": 641, @@ -47712,8 +47746,8 @@ { "type": "CommentLine", "value": "-- EDGES RENDERING -----------------------------------------------------------------------------------------------", - "start": 23041, - "end": 23157, + "start": 23054, + "end": 23170, "loc": { "start": { "line": 638, @@ -47729,8 +47763,8 @@ }, { "type": "ClassMethod", - "start": 23207, - "end": 23250, + "start": 23233, + "end": 23289, "loc": { "start": { "line": 643, @@ -47745,8 +47779,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 23207, - "end": 23232, + "start": 23233, + "end": 23258, "loc": { "start": { "line": 643, @@ -47768,8 +47802,8 @@ "params": [ { "type": "Identifier", - "start": 23233, - "end": 23241, + "start": 23259, + "end": 23270, "loc": { "start": { "line": 643, @@ -47777,7 +47811,24 @@ }, "end": { "line": 643, - "column": 38 + "column": 41 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 23272, + "end": 23280, + "loc": { + "start": { + "line": 643, + "column": 43 + }, + "end": { + "line": 643, + "column": 51 }, "identifierName": "frameCtx" }, @@ -47786,12 +47837,12 @@ ], "body": { "type": "BlockStatement", - "start": 23243, - "end": 23250, + "start": 23282, + "end": 23289, "loc": { "start": { "line": 643, - "column": 40 + "column": 53 }, "end": { "line": 644, @@ -47804,8 +47855,8 @@ }, { "type": "ClassMethod", - "start": 23256, - "end": 23294, + "start": 23295, + "end": 23346, "loc": { "start": { "line": 646, @@ -47820,8 +47871,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 23256, - "end": 23276, + "start": 23295, + "end": 23315, "loc": { "start": { "line": 646, @@ -47843,8 +47894,8 @@ "params": [ { "type": "Identifier", - "start": 23277, - "end": 23285, + "start": 23316, + "end": 23327, "loc": { "start": { "line": 646, @@ -47852,7 +47903,24 @@ }, "end": { "line": 646, - "column": 33 + "column": 36 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 23329, + "end": 23337, + "loc": { + "start": { + "line": 646, + "column": 38 + }, + "end": { + "line": 646, + "column": 46 }, "identifierName": "frameCtx" }, @@ -47861,12 +47929,12 @@ ], "body": { "type": "BlockStatement", - "start": 23287, - "end": 23294, + "start": 23339, + "end": 23346, "loc": { "start": { "line": 646, - "column": 35 + "column": 48 }, "end": { "line": 647, @@ -47879,8 +47947,8 @@ }, { "type": "ClassMethod", - "start": 23300, - "end": 23335, + "start": 23352, + "end": 23400, "loc": { "start": { "line": 649, @@ -47895,8 +47963,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 23300, - "end": 23317, + "start": 23352, + "end": 23369, "loc": { "start": { "line": 649, @@ -47918,8 +47986,8 @@ "params": [ { "type": "Identifier", - "start": 23318, - "end": 23326, + "start": 23370, + "end": 23381, "loc": { "start": { "line": 649, @@ -47927,7 +47995,24 @@ }, "end": { "line": 649, - "column": 30 + "column": 33 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 23383, + "end": 23391, + "loc": { + "start": { + "line": 649, + "column": 35 + }, + "end": { + "line": 649, + "column": 43 }, "identifierName": "frameCtx" }, @@ -47936,12 +48021,12 @@ ], "body": { "type": "BlockStatement", - "start": 23328, - "end": 23335, + "start": 23393, + "end": 23400, "loc": { "start": { "line": 649, - "column": 32 + "column": 45 }, "end": { "line": 650, @@ -47954,8 +48039,8 @@ }, { "type": "ClassMethod", - "start": 23341, - "end": 23374, + "start": 23406, + "end": 23452, "loc": { "start": { "line": 652, @@ -47970,8 +48055,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 23341, - "end": 23356, + "start": 23406, + "end": 23421, "loc": { "start": { "line": 652, @@ -47993,8 +48078,8 @@ "params": [ { "type": "Identifier", - "start": 23357, - "end": 23365, + "start": 23422, + "end": 23433, "loc": { "start": { "line": 652, @@ -48002,7 +48087,24 @@ }, "end": { "line": 652, - "column": 28 + "column": 31 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 23435, + "end": 23443, + "loc": { + "start": { + "line": 652, + "column": 33 + }, + "end": { + "line": 652, + "column": 41 }, "identifierName": "frameCtx" }, @@ -48011,12 +48113,12 @@ ], "body": { "type": "BlockStatement", - "start": 23367, - "end": 23374, + "start": 23445, + "end": 23452, "loc": { "start": { "line": 652, - "column": 30 + "column": 43 }, "end": { "line": 653, @@ -48032,8 +48134,8 @@ { "type": "CommentLine", "value": " ---------------------- OCCLUSION CULL RENDERING -----------------------------------", - "start": 23380, - "end": 23466, + "start": 23458, + "end": 23544, "loc": { "start": { "line": 655, @@ -48049,8 +48151,8 @@ }, { "type": "ClassMethod", - "start": 23472, - "end": 23890, + "start": 23550, + "end": 23981, "loc": { "start": { "line": 657, @@ -48065,8 +48167,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 23472, - "end": 23485, + "start": 23550, + "end": 23563, "loc": { "start": { "line": 657, @@ -48089,8 +48191,8 @@ "params": [ { "type": "Identifier", - "start": 23486, - "end": 23494, + "start": 23564, + "end": 23575, "loc": { "start": { "line": 657, @@ -48098,7 +48200,24 @@ }, "end": { "line": 657, - "column": 26 + "column": 29 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 23577, + "end": 23585, + "loc": { + "start": { + "line": 657, + "column": 31 + }, + "end": { + "line": 657, + "column": 39 }, "identifierName": "frameCtx" }, @@ -48107,12 +48226,12 @@ ], "body": { "type": "BlockStatement", - "start": 23496, - "end": 23890, + "start": 23587, + "end": 23981, "loc": { "start": { "line": 657, - "column": 28 + "column": 41 }, "end": { "line": 665, @@ -48122,8 +48241,8 @@ "body": [ { "type": "IfStatement", - "start": 23506, - "end": 23632, + "start": 23597, + "end": 23723, "loc": { "start": { "line": 658, @@ -48136,8 +48255,8 @@ }, "test": { "type": "LogicalExpression", - "start": 23510, - "end": 23599, + "start": 23601, + "end": 23690, "loc": { "start": { "line": 658, @@ -48150,8 +48269,8 @@ }, "left": { "type": "BinaryExpression", - "start": 23510, - "end": 23560, + "start": 23601, + "end": 23651, "loc": { "start": { "line": 658, @@ -48164,8 +48283,8 @@ }, "left": { "type": "MemberExpression", - "start": 23510, - "end": 23538, + "start": 23601, + "end": 23629, "loc": { "start": { "line": 658, @@ -48178,8 +48297,8 @@ }, "object": { "type": "ThisExpression", - "start": 23510, - "end": 23514, + "start": 23601, + "end": 23605, "loc": { "start": { "line": 658, @@ -48193,8 +48312,8 @@ }, "property": { "type": "Identifier", - "start": 23515, - "end": 23538, + "start": 23606, + "end": 23629, "loc": { "start": { "line": 658, @@ -48213,8 +48332,8 @@ "operator": "===", "right": { "type": "MemberExpression", - "start": 23543, - "end": 23560, + "start": 23634, + "end": 23651, "loc": { "start": { "line": 658, @@ -48227,8 +48346,8 @@ }, "object": { "type": "ThisExpression", - "start": 23543, - "end": 23547, + "start": 23634, + "end": 23638, "loc": { "start": { "line": 658, @@ -48242,8 +48361,8 @@ }, "property": { "type": "Identifier", - "start": 23548, - "end": 23560, + "start": 23639, + "end": 23651, "loc": { "start": { "line": 658, @@ -48263,8 +48382,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 23564, - "end": 23599, + "start": 23655, + "end": 23690, "loc": { "start": { "line": 658, @@ -48277,8 +48396,8 @@ }, "left": { "type": "MemberExpression", - "start": 23564, - "end": 23593, + "start": 23655, + "end": 23684, "loc": { "start": { "line": 658, @@ -48291,8 +48410,8 @@ }, "object": { "type": "ThisExpression", - "start": 23564, - "end": 23568, + "start": 23655, + "end": 23659, "loc": { "start": { "line": 658, @@ -48306,8 +48425,8 @@ }, "property": { "type": "Identifier", - "start": 23569, - "end": 23593, + "start": 23660, + "end": 23684, "loc": { "start": { "line": 658, @@ -48326,8 +48445,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 23598, - "end": 23599, + "start": 23689, + "end": 23690, "loc": { "start": { "line": 658, @@ -48348,8 +48467,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 23601, - "end": 23632, + "start": 23692, + "end": 23723, "loc": { "start": { "line": 658, @@ -48363,8 +48482,8 @@ "body": [ { "type": "ReturnStatement", - "start": 23615, - "end": 23622, + "start": 23706, + "end": 23713, "loc": { "start": { "line": 659, @@ -48384,8 +48503,8 @@ }, { "type": "IfStatement", - "start": 23641, - "end": 23884, + "start": 23732, + "end": 23975, "loc": { "start": { "line": 661, @@ -48398,8 +48517,8 @@ }, "test": { "type": "MemberExpression", - "start": 23645, - "end": 23694, + "start": 23736, + "end": 23785, "loc": { "start": { "line": 661, @@ -48412,8 +48531,8 @@ }, "object": { "type": "MemberExpression", - "start": 23645, - "end": 23676, + "start": 23736, + "end": 23767, "loc": { "start": { "line": 661, @@ -48426,8 +48545,8 @@ }, "object": { "type": "ThisExpression", - "start": 23645, - "end": 23649, + "start": 23736, + "end": 23740, "loc": { "start": { "line": 661, @@ -48441,8 +48560,8 @@ }, "property": { "type": "Identifier", - "start": 23650, - "end": 23676, + "start": 23741, + "end": 23767, "loc": { "start": { "line": 661, @@ -48460,8 +48579,8 @@ }, "property": { "type": "Identifier", - "start": 23677, - "end": 23694, + "start": 23768, + "end": 23785, "loc": { "start": { "line": 661, @@ -48479,8 +48598,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 23696, - "end": 23884, + "start": 23787, + "end": 23975, "loc": { "start": { "line": 661, @@ -48494,8 +48613,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 23770, - "end": 23874, + "start": 23861, + "end": 23965, "loc": { "start": { "line": 663, @@ -48508,8 +48627,8 @@ }, "expression": { "type": "CallExpression", - "start": 23770, - "end": 23873, + "start": 23861, + "end": 23964, "loc": { "start": { "line": 663, @@ -48522,8 +48641,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23770, - "end": 23829, + "start": 23861, + "end": 23920, "loc": { "start": { "line": 663, @@ -48536,8 +48655,8 @@ }, "object": { "type": "MemberExpression", - "start": 23770, - "end": 23819, + "start": 23861, + "end": 23910, "loc": { "start": { "line": 663, @@ -48550,8 +48669,8 @@ }, "object": { "type": "MemberExpression", - "start": 23770, - "end": 23801, + "start": 23861, + "end": 23892, "loc": { "start": { "line": 663, @@ -48564,8 +48683,8 @@ }, "object": { "type": "ThisExpression", - "start": 23770, - "end": 23774, + "start": 23861, + "end": 23865, "loc": { "start": { "line": 663, @@ -48580,8 +48699,8 @@ }, "property": { "type": "Identifier", - "start": 23775, - "end": 23801, + "start": 23866, + "end": 23892, "loc": { "start": { "line": 663, @@ -48600,8 +48719,8 @@ }, "property": { "type": "Identifier", - "start": 23802, - "end": 23819, + "start": 23893, + "end": 23910, "loc": { "start": { "line": 663, @@ -48620,8 +48739,8 @@ }, "property": { "type": "Identifier", - "start": 23820, - "end": 23829, + "start": 23911, + "end": 23920, "loc": { "start": { "line": 663, @@ -48641,8 +48760,8 @@ "arguments": [ { "type": "Identifier", - "start": 23830, - "end": 23838, + "start": 23921, + "end": 23929, "loc": { "start": { "line": 663, @@ -48658,8 +48777,8 @@ }, { "type": "ThisExpression", - "start": 23840, - "end": 23844, + "start": 23931, + "end": 23935, "loc": { "start": { "line": 663, @@ -48673,8 +48792,8 @@ }, { "type": "MemberExpression", - "start": 23846, - "end": 23872, + "start": 23937, + "end": 23963, "loc": { "start": { "line": 663, @@ -48687,8 +48806,8 @@ }, "object": { "type": "Identifier", - "start": 23846, - "end": 23859, + "start": 23937, + "end": 23950, "loc": { "start": { "line": 663, @@ -48704,8 +48823,8 @@ }, "property": { "type": "Identifier", - "start": 23860, - "end": 23872, + "start": 23951, + "end": 23963, "loc": { "start": { "line": 663, @@ -48728,8 +48847,8 @@ { "type": "CommentLine", "value": " Only opaque, filled objects can be occluders", - "start": 23710, - "end": 23757, + "start": 23801, + "end": 23848, "loc": { "start": { "line": 662, @@ -48756,8 +48875,8 @@ { "type": "CommentLine", "value": " ---------------------- OCCLUSION CULL RENDERING -----------------------------------", - "start": 23380, - "end": 23466, + "start": 23458, + "end": 23544, "loc": { "start": { "line": 655, @@ -48774,8 +48893,8 @@ { "type": "CommentLine", "value": " ---------------------- SHADOW BUFFER RENDERING -----------------------------------", - "start": 23896, - "end": 23981, + "start": 23987, + "end": 24072, "loc": { "start": { "line": 667, @@ -48791,8 +48910,8 @@ }, { "type": "ClassMethod", - "start": 23987, - "end": 24015, + "start": 24078, + "end": 24119, "loc": { "start": { "line": 669, @@ -48807,8 +48926,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 23987, - "end": 23997, + "start": 24078, + "end": 24088, "loc": { "start": { "line": 669, @@ -48831,8 +48950,8 @@ "params": [ { "type": "Identifier", - "start": 23998, - "end": 24006, + "start": 24089, + "end": 24100, "loc": { "start": { "line": 669, @@ -48840,7 +48959,24 @@ }, "end": { "line": 669, - "column": 23 + "column": 26 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 24102, + "end": 24110, + "loc": { + "start": { + "line": 669, + "column": 28 + }, + "end": { + "line": 669, + "column": 36 }, "identifierName": "frameCtx" }, @@ -48849,12 +48985,12 @@ ], "body": { "type": "BlockStatement", - "start": 24008, - "end": 24015, + "start": 24112, + "end": 24119, "loc": { "start": { "line": 669, - "column": 25 + "column": 38 }, "end": { "line": 670, @@ -48870,8 +49006,8 @@ { "type": "CommentLine", "value": " ---------------------- SHADOW BUFFER RENDERING -----------------------------------", - "start": 23896, - "end": 23981, + "start": 23987, + "end": 24072, "loc": { "start": { "line": 667, @@ -48888,8 +49024,8 @@ { "type": "CommentLine", "value": "---- PICKING ----------------------------------------------------------------------------------------------------", - "start": 24021, - "end": 24136, + "start": 24125, + "end": 24240, "loc": { "start": { "line": 672, @@ -48905,8 +49041,8 @@ }, { "type": "ClassMethod", - "start": 24142, - "end": 24489, + "start": 24246, + "end": 24606, "loc": { "start": { "line": 674, @@ -48921,8 +49057,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 24142, - "end": 24154, + "start": 24246, + "end": 24258, "loc": { "start": { "line": 674, @@ -48945,8 +49081,8 @@ "params": [ { "type": "Identifier", - "start": 24155, - "end": 24163, + "start": 24259, + "end": 24270, "loc": { "start": { "line": 674, @@ -48954,7 +49090,24 @@ }, "end": { "line": 674, - "column": 25 + "column": 28 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 24272, + "end": 24280, + "loc": { + "start": { + "line": 674, + "column": 30 + }, + "end": { + "line": 674, + "column": 38 }, "identifierName": "frameCtx" }, @@ -48963,12 +49116,12 @@ ], "body": { "type": "BlockStatement", - "start": 24165, - "end": 24489, + "start": 24282, + "end": 24606, "loc": { "start": { "line": 674, - "column": 27 + "column": 40 }, "end": { "line": 681, @@ -48978,8 +49131,8 @@ "body": [ { "type": "IfStatement", - "start": 24175, - "end": 24301, + "start": 24292, + "end": 24418, "loc": { "start": { "line": 675, @@ -48992,8 +49145,8 @@ }, "test": { "type": "LogicalExpression", - "start": 24179, - "end": 24268, + "start": 24296, + "end": 24385, "loc": { "start": { "line": 675, @@ -49006,8 +49159,8 @@ }, "left": { "type": "BinaryExpression", - "start": 24179, - "end": 24229, + "start": 24296, + "end": 24346, "loc": { "start": { "line": 675, @@ -49020,8 +49173,8 @@ }, "left": { "type": "MemberExpression", - "start": 24179, - "end": 24207, + "start": 24296, + "end": 24324, "loc": { "start": { "line": 675, @@ -49034,8 +49187,8 @@ }, "object": { "type": "ThisExpression", - "start": 24179, - "end": 24183, + "start": 24296, + "end": 24300, "loc": { "start": { "line": 675, @@ -49049,8 +49202,8 @@ }, "property": { "type": "Identifier", - "start": 24184, - "end": 24207, + "start": 24301, + "end": 24324, "loc": { "start": { "line": 675, @@ -49069,8 +49222,8 @@ "operator": "===", "right": { "type": "MemberExpression", - "start": 24212, - "end": 24229, + "start": 24329, + "end": 24346, "loc": { "start": { "line": 675, @@ -49083,8 +49236,8 @@ }, "object": { "type": "ThisExpression", - "start": 24212, - "end": 24216, + "start": 24329, + "end": 24333, "loc": { "start": { "line": 675, @@ -49098,8 +49251,8 @@ }, "property": { "type": "Identifier", - "start": 24217, - "end": 24229, + "start": 24334, + "end": 24346, "loc": { "start": { "line": 675, @@ -49119,8 +49272,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 24233, - "end": 24268, + "start": 24350, + "end": 24385, "loc": { "start": { "line": 675, @@ -49133,8 +49286,8 @@ }, "left": { "type": "MemberExpression", - "start": 24233, - "end": 24262, + "start": 24350, + "end": 24379, "loc": { "start": { "line": 675, @@ -49147,8 +49300,8 @@ }, "object": { "type": "ThisExpression", - "start": 24233, - "end": 24237, + "start": 24350, + "end": 24354, "loc": { "start": { "line": 675, @@ -49162,8 +49315,8 @@ }, "property": { "type": "Identifier", - "start": 24238, - "end": 24262, + "start": 24355, + "end": 24379, "loc": { "start": { "line": 675, @@ -49182,8 +49335,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 24267, - "end": 24268, + "start": 24384, + "end": 24385, "loc": { "start": { "line": 675, @@ -49204,8 +49357,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 24270, - "end": 24301, + "start": 24387, + "end": 24418, "loc": { "start": { "line": 675, @@ -49219,8 +49372,8 @@ "body": [ { "type": "ReturnStatement", - "start": 24284, - "end": 24291, + "start": 24401, + "end": 24408, "loc": { "start": { "line": 676, @@ -49240,8 +49393,8 @@ }, { "type": "IfStatement", - "start": 24310, - "end": 24483, + "start": 24427, + "end": 24600, "loc": { "start": { "line": 678, @@ -49254,8 +49407,8 @@ }, "test": { "type": "MemberExpression", - "start": 24314, - "end": 24362, + "start": 24431, + "end": 24479, "loc": { "start": { "line": 678, @@ -49268,8 +49421,8 @@ }, "object": { "type": "MemberExpression", - "start": 24314, - "end": 24345, + "start": 24431, + "end": 24462, "loc": { "start": { "line": 678, @@ -49282,8 +49435,8 @@ }, "object": { "type": "ThisExpression", - "start": 24314, - "end": 24318, + "start": 24431, + "end": 24435, "loc": { "start": { "line": 678, @@ -49297,8 +49450,8 @@ }, "property": { "type": "Identifier", - "start": 24319, - "end": 24345, + "start": 24436, + "end": 24462, "loc": { "start": { "line": 678, @@ -49316,8 +49469,8 @@ }, "property": { "type": "Identifier", - "start": 24346, - "end": 24362, + "start": 24463, + "end": 24479, "loc": { "start": { "line": 678, @@ -49335,8 +49488,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 24364, - "end": 24483, + "start": 24481, + "end": 24600, "loc": { "start": { "line": 678, @@ -49350,8 +49503,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 24378, - "end": 24473, + "start": 24495, + "end": 24590, "loc": { "start": { "line": 679, @@ -49364,8 +49517,8 @@ }, "expression": { "type": "CallExpression", - "start": 24378, - "end": 24472, + "start": 24495, + "end": 24589, "loc": { "start": { "line": 679, @@ -49378,8 +49531,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24378, - "end": 24436, + "start": 24495, + "end": 24553, "loc": { "start": { "line": 679, @@ -49392,8 +49545,8 @@ }, "object": { "type": "MemberExpression", - "start": 24378, - "end": 24426, + "start": 24495, + "end": 24543, "loc": { "start": { "line": 679, @@ -49406,8 +49559,8 @@ }, "object": { "type": "MemberExpression", - "start": 24378, - "end": 24409, + "start": 24495, + "end": 24526, "loc": { "start": { "line": 679, @@ -49420,8 +49573,8 @@ }, "object": { "type": "ThisExpression", - "start": 24378, - "end": 24382, + "start": 24495, + "end": 24499, "loc": { "start": { "line": 679, @@ -49435,8 +49588,8 @@ }, "property": { "type": "Identifier", - "start": 24383, - "end": 24409, + "start": 24500, + "end": 24526, "loc": { "start": { "line": 679, @@ -49454,8 +49607,8 @@ }, "property": { "type": "Identifier", - "start": 24410, - "end": 24426, + "start": 24527, + "end": 24543, "loc": { "start": { "line": 679, @@ -49473,8 +49626,8 @@ }, "property": { "type": "Identifier", - "start": 24427, - "end": 24436, + "start": 24544, + "end": 24553, "loc": { "start": { "line": 679, @@ -49493,8 +49646,8 @@ "arguments": [ { "type": "Identifier", - "start": 24437, - "end": 24445, + "start": 24554, + "end": 24562, "loc": { "start": { "line": 679, @@ -49510,8 +49663,8 @@ }, { "type": "ThisExpression", - "start": 24447, - "end": 24451, + "start": 24564, + "end": 24568, "loc": { "start": { "line": 679, @@ -49525,8 +49678,8 @@ }, { "type": "MemberExpression", - "start": 24453, - "end": 24471, + "start": 24570, + "end": 24588, "loc": { "start": { "line": 679, @@ -49539,8 +49692,8 @@ }, "object": { "type": "Identifier", - "start": 24453, - "end": 24466, + "start": 24570, + "end": 24583, "loc": { "start": { "line": 679, @@ -49556,8 +49709,8 @@ }, "property": { "type": "Identifier", - "start": 24467, - "end": 24471, + "start": 24584, + "end": 24588, "loc": { "start": { "line": 679, @@ -49588,8 +49741,8 @@ { "type": "CommentLine", "value": "---- PICKING ----------------------------------------------------------------------------------------------------", - "start": 24021, - "end": 24136, + "start": 24125, + "end": 24240, "loc": { "start": { "line": 672, @@ -49605,8 +49758,8 @@ }, { "type": "ClassMethod", - "start": 24495, - "end": 24846, + "start": 24612, + "end": 24976, "loc": { "start": { "line": 683, @@ -49621,8 +49774,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 24495, - "end": 24509, + "start": 24612, + "end": 24626, "loc": { "start": { "line": 683, @@ -49644,8 +49797,8 @@ "params": [ { "type": "Identifier", - "start": 24510, - "end": 24518, + "start": 24627, + "end": 24638, "loc": { "start": { "line": 683, @@ -49653,7 +49806,24 @@ }, "end": { "line": 683, - "column": 27 + "column": 30 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 24640, + "end": 24648, + "loc": { + "start": { + "line": 683, + "column": 32 + }, + "end": { + "line": 683, + "column": 40 }, "identifierName": "frameCtx" }, @@ -49662,12 +49832,12 @@ ], "body": { "type": "BlockStatement", - "start": 24520, - "end": 24846, + "start": 24650, + "end": 24976, "loc": { "start": { "line": 683, - "column": 29 + "column": 42 }, "end": { "line": 690, @@ -49677,8 +49847,8 @@ "body": [ { "type": "IfStatement", - "start": 24530, - "end": 24656, + "start": 24660, + "end": 24786, "loc": { "start": { "line": 684, @@ -49691,8 +49861,8 @@ }, "test": { "type": "LogicalExpression", - "start": 24534, - "end": 24623, + "start": 24664, + "end": 24753, "loc": { "start": { "line": 684, @@ -49705,8 +49875,8 @@ }, "left": { "type": "BinaryExpression", - "start": 24534, - "end": 24584, + "start": 24664, + "end": 24714, "loc": { "start": { "line": 684, @@ -49719,8 +49889,8 @@ }, "left": { "type": "MemberExpression", - "start": 24534, - "end": 24562, + "start": 24664, + "end": 24692, "loc": { "start": { "line": 684, @@ -49733,8 +49903,8 @@ }, "object": { "type": "ThisExpression", - "start": 24534, - "end": 24538, + "start": 24664, + "end": 24668, "loc": { "start": { "line": 684, @@ -49748,8 +49918,8 @@ }, "property": { "type": "Identifier", - "start": 24539, - "end": 24562, + "start": 24669, + "end": 24692, "loc": { "start": { "line": 684, @@ -49768,8 +49938,8 @@ "operator": "===", "right": { "type": "MemberExpression", - "start": 24567, - "end": 24584, + "start": 24697, + "end": 24714, "loc": { "start": { "line": 684, @@ -49782,8 +49952,8 @@ }, "object": { "type": "ThisExpression", - "start": 24567, - "end": 24571, + "start": 24697, + "end": 24701, "loc": { "start": { "line": 684, @@ -49797,8 +49967,8 @@ }, "property": { "type": "Identifier", - "start": 24572, - "end": 24584, + "start": 24702, + "end": 24714, "loc": { "start": { "line": 684, @@ -49818,8 +49988,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 24588, - "end": 24623, + "start": 24718, + "end": 24753, "loc": { "start": { "line": 684, @@ -49832,8 +50002,8 @@ }, "left": { "type": "MemberExpression", - "start": 24588, - "end": 24617, + "start": 24718, + "end": 24747, "loc": { "start": { "line": 684, @@ -49846,8 +50016,8 @@ }, "object": { "type": "ThisExpression", - "start": 24588, - "end": 24592, + "start": 24718, + "end": 24722, "loc": { "start": { "line": 684, @@ -49861,8 +50031,8 @@ }, "property": { "type": "Identifier", - "start": 24593, - "end": 24617, + "start": 24723, + "end": 24747, "loc": { "start": { "line": 684, @@ -49881,8 +50051,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 24622, - "end": 24623, + "start": 24752, + "end": 24753, "loc": { "start": { "line": 684, @@ -49903,8 +50073,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 24625, - "end": 24656, + "start": 24755, + "end": 24786, "loc": { "start": { "line": 684, @@ -49918,8 +50088,8 @@ "body": [ { "type": "ReturnStatement", - "start": 24639, - "end": 24646, + "start": 24769, + "end": 24776, "loc": { "start": { "line": 685, @@ -49939,8 +50109,8 @@ }, { "type": "IfStatement", - "start": 24665, - "end": 24840, + "start": 24795, + "end": 24970, "loc": { "start": { "line": 687, @@ -49953,8 +50123,8 @@ }, "test": { "type": "MemberExpression", - "start": 24669, - "end": 24718, + "start": 24799, + "end": 24848, "loc": { "start": { "line": 687, @@ -49967,8 +50137,8 @@ }, "object": { "type": "MemberExpression", - "start": 24669, - "end": 24700, + "start": 24799, + "end": 24830, "loc": { "start": { "line": 687, @@ -49981,8 +50151,8 @@ }, "object": { "type": "ThisExpression", - "start": 24669, - "end": 24673, + "start": 24799, + "end": 24803, "loc": { "start": { "line": 687, @@ -49996,8 +50166,8 @@ }, "property": { "type": "Identifier", - "start": 24674, - "end": 24700, + "start": 24804, + "end": 24830, "loc": { "start": { "line": 687, @@ -50015,8 +50185,8 @@ }, "property": { "type": "Identifier", - "start": 24701, - "end": 24718, + "start": 24831, + "end": 24848, "loc": { "start": { "line": 687, @@ -50034,8 +50204,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 24720, - "end": 24840, + "start": 24850, + "end": 24970, "loc": { "start": { "line": 687, @@ -50049,8 +50219,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 24734, - "end": 24830, + "start": 24864, + "end": 24960, "loc": { "start": { "line": 688, @@ -50063,8 +50233,8 @@ }, "expression": { "type": "CallExpression", - "start": 24734, - "end": 24829, + "start": 24864, + "end": 24959, "loc": { "start": { "line": 688, @@ -50077,8 +50247,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24734, - "end": 24793, + "start": 24864, + "end": 24923, "loc": { "start": { "line": 688, @@ -50091,8 +50261,8 @@ }, "object": { "type": "MemberExpression", - "start": 24734, - "end": 24783, + "start": 24864, + "end": 24913, "loc": { "start": { "line": 688, @@ -50105,8 +50275,8 @@ }, "object": { "type": "MemberExpression", - "start": 24734, - "end": 24765, + "start": 24864, + "end": 24895, "loc": { "start": { "line": 688, @@ -50119,8 +50289,8 @@ }, "object": { "type": "ThisExpression", - "start": 24734, - "end": 24738, + "start": 24864, + "end": 24868, "loc": { "start": { "line": 688, @@ -50134,8 +50304,8 @@ }, "property": { "type": "Identifier", - "start": 24739, - "end": 24765, + "start": 24869, + "end": 24895, "loc": { "start": { "line": 688, @@ -50153,8 +50323,8 @@ }, "property": { "type": "Identifier", - "start": 24766, - "end": 24783, + "start": 24896, + "end": 24913, "loc": { "start": { "line": 688, @@ -50172,8 +50342,8 @@ }, "property": { "type": "Identifier", - "start": 24784, - "end": 24793, + "start": 24914, + "end": 24923, "loc": { "start": { "line": 688, @@ -50192,8 +50362,8 @@ "arguments": [ { "type": "Identifier", - "start": 24794, - "end": 24802, + "start": 24924, + "end": 24932, "loc": { "start": { "line": 688, @@ -50209,8 +50379,8 @@ }, { "type": "ThisExpression", - "start": 24804, - "end": 24808, + "start": 24934, + "end": 24938, "loc": { "start": { "line": 688, @@ -50224,8 +50394,8 @@ }, { "type": "MemberExpression", - "start": 24810, - "end": 24828, + "start": 24940, + "end": 24958, "loc": { "start": { "line": 688, @@ -50238,8 +50408,8 @@ }, "object": { "type": "Identifier", - "start": 24810, - "end": 24823, + "start": 24940, + "end": 24953, "loc": { "start": { "line": 688, @@ -50255,8 +50425,8 @@ }, "property": { "type": "Identifier", - "start": 24824, - "end": 24828, + "start": 24954, + "end": 24958, "loc": { "start": { "line": 688, @@ -50286,8 +50456,8 @@ }, { "type": "ClassMethod", - "start": 24852, - "end": 24885, + "start": 24982, + "end": 25028, "loc": { "start": { "line": 692, @@ -50302,8 +50472,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 24852, - "end": 24867, + "start": 24982, + "end": 24997, "loc": { "start": { "line": 692, @@ -50325,8 +50495,8 @@ "params": [ { "type": "Identifier", - "start": 24868, - "end": 24876, + "start": 24998, + "end": 25009, "loc": { "start": { "line": 692, @@ -50334,7 +50504,24 @@ }, "end": { "line": 692, - "column": 28 + "column": 31 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 25011, + "end": 25019, + "loc": { + "start": { + "line": 692, + "column": 33 + }, + "end": { + "line": 692, + "column": 41 }, "identifierName": "frameCtx" }, @@ -50343,12 +50530,12 @@ ], "body": { "type": "BlockStatement", - "start": 24878, - "end": 24885, + "start": 25021, + "end": 25028, "loc": { "start": { "line": 692, - "column": 30 + "column": 43 }, "end": { "line": 693, @@ -50361,8 +50548,8 @@ }, { "type": "ClassMethod", - "start": 24891, - "end": 26114, + "start": 25034, + "end": 26257, "loc": { "start": { "line": 695, @@ -50377,8 +50564,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 24891, - "end": 24898, + "start": 25034, + "end": 25041, "loc": { "start": { "line": 695, @@ -50400,8 +50587,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 24901, - "end": 26114, + "start": 25044, + "end": 26257, "loc": { "start": { "line": 695, @@ -50415,8 +50602,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 24911, - "end": 24937, + "start": 25054, + "end": 25080, "loc": { "start": { "line": 696, @@ -50430,8 +50617,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 24917, - "end": 24936, + "start": 25060, + "end": 25079, "loc": { "start": { "line": 696, @@ -50444,8 +50631,8 @@ }, "id": { "type": "Identifier", - "start": 24917, - "end": 24922, + "start": 25060, + "end": 25065, "loc": { "start": { "line": 696, @@ -50461,8 +50648,8 @@ }, "init": { "type": "MemberExpression", - "start": 24925, - "end": 24936, + "start": 25068, + "end": 25079, "loc": { "start": { "line": 696, @@ -50475,8 +50662,8 @@ }, "object": { "type": "ThisExpression", - "start": 24925, - "end": 24929, + "start": 25068, + "end": 25072, "loc": { "start": { "line": 696, @@ -50490,8 +50677,8 @@ }, "property": { "type": "Identifier", - "start": 24930, - "end": 24936, + "start": 25073, + "end": 25079, "loc": { "start": { "line": 696, @@ -50513,8 +50700,8 @@ }, { "type": "IfStatement", - "start": 24946, - "end": 25062, + "start": 25089, + "end": 25205, "loc": { "start": { "line": 697, @@ -50527,8 +50714,8 @@ }, "test": { "type": "MemberExpression", - "start": 24950, - "end": 24968, + "start": 25093, + "end": 25111, "loc": { "start": { "line": 697, @@ -50541,8 +50728,8 @@ }, "object": { "type": "Identifier", - "start": 24950, - "end": 24955, + "start": 25093, + "end": 25098, "loc": { "start": { "line": 697, @@ -50558,8 +50745,8 @@ }, "property": { "type": "Identifier", - "start": 24956, - "end": 24968, + "start": 25099, + "end": 25111, "loc": { "start": { "line": 697, @@ -50577,8 +50764,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 24970, - "end": 25062, + "start": 25113, + "end": 25205, "loc": { "start": { "line": 697, @@ -50592,8 +50779,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 24984, - "end": 25013, + "start": 25127, + "end": 25156, "loc": { "start": { "line": 698, @@ -50606,8 +50793,8 @@ }, "expression": { "type": "CallExpression", - "start": 24984, - "end": 25012, + "start": 25127, + "end": 25155, "loc": { "start": { "line": 698, @@ -50620,8 +50807,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24984, - "end": 25010, + "start": 25127, + "end": 25153, "loc": { "start": { "line": 698, @@ -50634,8 +50821,8 @@ }, "object": { "type": "MemberExpression", - "start": 24984, - "end": 25002, + "start": 25127, + "end": 25145, "loc": { "start": { "line": 698, @@ -50648,8 +50835,8 @@ }, "object": { "type": "Identifier", - "start": 24984, - "end": 24989, + "start": 25127, + "end": 25132, "loc": { "start": { "line": 698, @@ -50665,8 +50852,8 @@ }, "property": { "type": "Identifier", - "start": 24990, - "end": 25002, + "start": 25133, + "end": 25145, "loc": { "start": { "line": 698, @@ -50684,8 +50871,8 @@ }, "property": { "type": "Identifier", - "start": 25003, - "end": 25010, + "start": 25146, + "end": 25153, "loc": { "start": { "line": 698, @@ -50706,8 +50893,8 @@ }, { "type": "ExpressionStatement", - "start": 25026, - "end": 25052, + "start": 25169, + "end": 25195, "loc": { "start": { "line": 699, @@ -50720,8 +50907,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25026, - "end": 25051, + "start": 25169, + "end": 25194, "loc": { "start": { "line": 699, @@ -50735,8 +50922,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25026, - "end": 25044, + "start": 25169, + "end": 25187, "loc": { "start": { "line": 699, @@ -50749,8 +50936,8 @@ }, "object": { "type": "Identifier", - "start": 25026, - "end": 25031, + "start": 25169, + "end": 25174, "loc": { "start": { "line": 699, @@ -50766,8 +50953,8 @@ }, "property": { "type": "Identifier", - "start": 25032, - "end": 25044, + "start": 25175, + "end": 25187, "loc": { "start": { "line": 699, @@ -50785,8 +50972,8 @@ }, "right": { "type": "NullLiteral", - "start": 25047, - "end": 25051, + "start": 25190, + "end": 25194, "loc": { "start": { "line": 699, @@ -50807,8 +50994,8 @@ }, { "type": "IfStatement", - "start": 25071, - "end": 25178, + "start": 25214, + "end": 25321, "loc": { "start": { "line": 701, @@ -50821,8 +51008,8 @@ }, "test": { "type": "MemberExpression", - "start": 25075, - "end": 25090, + "start": 25218, + "end": 25233, "loc": { "start": { "line": 701, @@ -50835,8 +51022,8 @@ }, "object": { "type": "Identifier", - "start": 25075, - "end": 25080, + "start": 25218, + "end": 25223, "loc": { "start": { "line": 701, @@ -50852,8 +51039,8 @@ }, "property": { "type": "Identifier", - "start": 25081, - "end": 25090, + "start": 25224, + "end": 25233, "loc": { "start": { "line": 701, @@ -50871,8 +51058,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25092, - "end": 25178, + "start": 25235, + "end": 25321, "loc": { "start": { "line": 701, @@ -50886,8 +51073,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25106, - "end": 25132, + "start": 25249, + "end": 25275, "loc": { "start": { "line": 702, @@ -50900,8 +51087,8 @@ }, "expression": { "type": "CallExpression", - "start": 25106, - "end": 25131, + "start": 25249, + "end": 25274, "loc": { "start": { "line": 702, @@ -50914,8 +51101,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25106, - "end": 25129, + "start": 25249, + "end": 25272, "loc": { "start": { "line": 702, @@ -50928,8 +51115,8 @@ }, "object": { "type": "MemberExpression", - "start": 25106, - "end": 25121, + "start": 25249, + "end": 25264, "loc": { "start": { "line": 702, @@ -50942,8 +51129,8 @@ }, "object": { "type": "Identifier", - "start": 25106, - "end": 25111, + "start": 25249, + "end": 25254, "loc": { "start": { "line": 702, @@ -50959,8 +51146,8 @@ }, "property": { "type": "Identifier", - "start": 25112, - "end": 25121, + "start": 25255, + "end": 25264, "loc": { "start": { "line": 702, @@ -50978,8 +51165,8 @@ }, "property": { "type": "Identifier", - "start": 25122, - "end": 25129, + "start": 25265, + "end": 25272, "loc": { "start": { "line": 702, @@ -51000,8 +51187,8 @@ }, { "type": "ExpressionStatement", - "start": 25145, - "end": 25168, + "start": 25288, + "end": 25311, "loc": { "start": { "line": 703, @@ -51014,8 +51201,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25145, - "end": 25167, + "start": 25288, + "end": 25310, "loc": { "start": { "line": 703, @@ -51029,8 +51216,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25145, - "end": 25160, + "start": 25288, + "end": 25303, "loc": { "start": { "line": 703, @@ -51043,8 +51230,8 @@ }, "object": { "type": "Identifier", - "start": 25145, - "end": 25150, + "start": 25288, + "end": 25293, "loc": { "start": { "line": 703, @@ -51060,8 +51247,8 @@ }, "property": { "type": "Identifier", - "start": 25151, - "end": 25160, + "start": 25294, + "end": 25303, "loc": { "start": { "line": 703, @@ -51079,8 +51266,8 @@ }, "right": { "type": "NullLiteral", - "start": 25163, - "end": 25167, + "start": 25306, + "end": 25310, "loc": { "start": { "line": 703, @@ -51101,8 +51288,8 @@ }, { "type": "IfStatement", - "start": 25187, - "end": 25291, + "start": 25330, + "end": 25434, "loc": { "start": { "line": 705, @@ -51115,8 +51302,8 @@ }, "test": { "type": "MemberExpression", - "start": 25191, - "end": 25205, + "start": 25334, + "end": 25348, "loc": { "start": { "line": 705, @@ -51129,8 +51316,8 @@ }, "object": { "type": "Identifier", - "start": 25191, - "end": 25196, + "start": 25334, + "end": 25339, "loc": { "start": { "line": 705, @@ -51146,8 +51333,8 @@ }, "property": { "type": "Identifier", - "start": 25197, - "end": 25205, + "start": 25340, + "end": 25348, "loc": { "start": { "line": 705, @@ -51165,8 +51352,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25207, - "end": 25291, + "start": 25350, + "end": 25434, "loc": { "start": { "line": 705, @@ -51180,8 +51367,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25221, - "end": 25246, + "start": 25364, + "end": 25389, "loc": { "start": { "line": 706, @@ -51194,8 +51381,8 @@ }, "expression": { "type": "CallExpression", - "start": 25221, - "end": 25245, + "start": 25364, + "end": 25388, "loc": { "start": { "line": 706, @@ -51208,8 +51395,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25221, - "end": 25243, + "start": 25364, + "end": 25386, "loc": { "start": { "line": 706, @@ -51222,8 +51409,8 @@ }, "object": { "type": "MemberExpression", - "start": 25221, - "end": 25235, + "start": 25364, + "end": 25378, "loc": { "start": { "line": 706, @@ -51236,8 +51423,8 @@ }, "object": { "type": "Identifier", - "start": 25221, - "end": 25226, + "start": 25364, + "end": 25369, "loc": { "start": { "line": 706, @@ -51253,8 +51440,8 @@ }, "property": { "type": "Identifier", - "start": 25227, - "end": 25235, + "start": 25370, + "end": 25378, "loc": { "start": { "line": 706, @@ -51272,8 +51459,8 @@ }, "property": { "type": "Identifier", - "start": 25236, - "end": 25243, + "start": 25379, + "end": 25386, "loc": { "start": { "line": 706, @@ -51294,8 +51481,8 @@ }, { "type": "ExpressionStatement", - "start": 25259, - "end": 25281, + "start": 25402, + "end": 25424, "loc": { "start": { "line": 707, @@ -51308,8 +51495,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25259, - "end": 25280, + "start": 25402, + "end": 25423, "loc": { "start": { "line": 707, @@ -51323,8 +51510,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25259, - "end": 25273, + "start": 25402, + "end": 25416, "loc": { "start": { "line": 707, @@ -51337,8 +51524,8 @@ }, "object": { "type": "Identifier", - "start": 25259, - "end": 25264, + "start": 25402, + "end": 25407, "loc": { "start": { "line": 707, @@ -51354,8 +51541,8 @@ }, "property": { "type": "Identifier", - "start": 25265, - "end": 25273, + "start": 25408, + "end": 25416, "loc": { "start": { "line": 707, @@ -51373,8 +51560,8 @@ }, "right": { "type": "NullLiteral", - "start": 25276, - "end": 25280, + "start": 25419, + "end": 25423, "loc": { "start": { "line": 707, @@ -51395,8 +51582,8 @@ }, { "type": "IfStatement", - "start": 25300, - "end": 25407, + "start": 25443, + "end": 25550, "loc": { "start": { "line": 709, @@ -51409,8 +51596,8 @@ }, "test": { "type": "MemberExpression", - "start": 25304, - "end": 25319, + "start": 25447, + "end": 25462, "loc": { "start": { "line": 709, @@ -51423,8 +51610,8 @@ }, "object": { "type": "Identifier", - "start": 25304, - "end": 25309, + "start": 25447, + "end": 25452, "loc": { "start": { "line": 709, @@ -51440,8 +51627,8 @@ }, "property": { "type": "Identifier", - "start": 25310, - "end": 25319, + "start": 25453, + "end": 25462, "loc": { "start": { "line": 709, @@ -51459,8 +51646,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25321, - "end": 25407, + "start": 25464, + "end": 25550, "loc": { "start": { "line": 709, @@ -51474,8 +51661,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25335, - "end": 25361, + "start": 25478, + "end": 25504, "loc": { "start": { "line": 710, @@ -51488,8 +51675,8 @@ }, "expression": { "type": "CallExpression", - "start": 25335, - "end": 25360, + "start": 25478, + "end": 25503, "loc": { "start": { "line": 710, @@ -51502,8 +51689,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25335, - "end": 25358, + "start": 25478, + "end": 25501, "loc": { "start": { "line": 710, @@ -51516,8 +51703,8 @@ }, "object": { "type": "MemberExpression", - "start": 25335, - "end": 25350, + "start": 25478, + "end": 25493, "loc": { "start": { "line": 710, @@ -51530,8 +51717,8 @@ }, "object": { "type": "Identifier", - "start": 25335, - "end": 25340, + "start": 25478, + "end": 25483, "loc": { "start": { "line": 710, @@ -51547,8 +51734,8 @@ }, "property": { "type": "Identifier", - "start": 25341, - "end": 25350, + "start": 25484, + "end": 25493, "loc": { "start": { "line": 710, @@ -51566,8 +51753,8 @@ }, "property": { "type": "Identifier", - "start": 25351, - "end": 25358, + "start": 25494, + "end": 25501, "loc": { "start": { "line": 710, @@ -51588,8 +51775,8 @@ }, { "type": "ExpressionStatement", - "start": 25374, - "end": 25397, + "start": 25517, + "end": 25540, "loc": { "start": { "line": 711, @@ -51602,8 +51789,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25374, - "end": 25396, + "start": 25517, + "end": 25539, "loc": { "start": { "line": 711, @@ -51617,8 +51804,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25374, - "end": 25389, + "start": 25517, + "end": 25532, "loc": { "start": { "line": 711, @@ -51631,8 +51818,8 @@ }, "object": { "type": "Identifier", - "start": 25374, - "end": 25379, + "start": 25517, + "end": 25522, "loc": { "start": { "line": 711, @@ -51648,8 +51835,8 @@ }, "property": { "type": "Identifier", - "start": 25380, - "end": 25389, + "start": 25523, + "end": 25532, "loc": { "start": { "line": 711, @@ -51667,8 +51854,8 @@ }, "right": { "type": "NullLiteral", - "start": 25392, - "end": 25396, + "start": 25535, + "end": 25539, "loc": { "start": { "line": 711, @@ -51689,8 +51876,8 @@ }, { "type": "IfStatement", - "start": 25416, - "end": 25526, + "start": 25559, + "end": 25669, "loc": { "start": { "line": 713, @@ -51703,8 +51890,8 @@ }, "test": { "type": "MemberExpression", - "start": 25420, - "end": 25436, + "start": 25563, + "end": 25579, "loc": { "start": { "line": 713, @@ -51717,8 +51904,8 @@ }, "object": { "type": "Identifier", - "start": 25420, - "end": 25425, + "start": 25563, + "end": 25568, "loc": { "start": { "line": 713, @@ -51734,8 +51921,8 @@ }, "property": { "type": "Identifier", - "start": 25426, - "end": 25436, + "start": 25569, + "end": 25579, "loc": { "start": { "line": 713, @@ -51753,8 +51940,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25438, - "end": 25526, + "start": 25581, + "end": 25669, "loc": { "start": { "line": 713, @@ -51768,8 +51955,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25452, - "end": 25479, + "start": 25595, + "end": 25622, "loc": { "start": { "line": 714, @@ -51782,8 +51969,8 @@ }, "expression": { "type": "CallExpression", - "start": 25452, - "end": 25478, + "start": 25595, + "end": 25621, "loc": { "start": { "line": 714, @@ -51796,8 +51983,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25452, - "end": 25476, + "start": 25595, + "end": 25619, "loc": { "start": { "line": 714, @@ -51810,8 +51997,8 @@ }, "object": { "type": "MemberExpression", - "start": 25452, - "end": 25468, + "start": 25595, + "end": 25611, "loc": { "start": { "line": 714, @@ -51824,8 +52011,8 @@ }, "object": { "type": "Identifier", - "start": 25452, - "end": 25457, + "start": 25595, + "end": 25600, "loc": { "start": { "line": 714, @@ -51841,8 +52028,8 @@ }, "property": { "type": "Identifier", - "start": 25458, - "end": 25468, + "start": 25601, + "end": 25611, "loc": { "start": { "line": 714, @@ -51860,8 +52047,8 @@ }, "property": { "type": "Identifier", - "start": 25469, - "end": 25476, + "start": 25612, + "end": 25619, "loc": { "start": { "line": 714, @@ -51882,8 +52069,8 @@ }, { "type": "ExpressionStatement", - "start": 25492, - "end": 25516, + "start": 25635, + "end": 25659, "loc": { "start": { "line": 715, @@ -51896,8 +52083,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25492, - "end": 25515, + "start": 25635, + "end": 25658, "loc": { "start": { "line": 715, @@ -51911,8 +52098,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25492, - "end": 25508, + "start": 25635, + "end": 25651, "loc": { "start": { "line": 715, @@ -51925,8 +52112,8 @@ }, "object": { "type": "Identifier", - "start": 25492, - "end": 25497, + "start": 25635, + "end": 25640, "loc": { "start": { "line": 715, @@ -51942,8 +52129,8 @@ }, "property": { "type": "Identifier", - "start": 25498, - "end": 25508, + "start": 25641, + "end": 25651, "loc": { "start": { "line": 715, @@ -51961,8 +52148,8 @@ }, "right": { "type": "NullLiteral", - "start": 25511, - "end": 25515, + "start": 25654, + "end": 25658, "loc": { "start": { "line": 715, @@ -51983,8 +52170,8 @@ }, { "type": "IfStatement", - "start": 25535, - "end": 25669, + "start": 25678, + "end": 25812, "loc": { "start": { "line": 717, @@ -51997,8 +52184,8 @@ }, "test": { "type": "MemberExpression", - "start": 25539, - "end": 25563, + "start": 25682, + "end": 25706, "loc": { "start": { "line": 717, @@ -52011,8 +52198,8 @@ }, "object": { "type": "Identifier", - "start": 25539, - "end": 25544, + "start": 25682, + "end": 25687, "loc": { "start": { "line": 717, @@ -52028,8 +52215,8 @@ }, "property": { "type": "Identifier", - "start": 25545, - "end": 25563, + "start": 25688, + "end": 25706, "loc": { "start": { "line": 717, @@ -52047,8 +52234,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25565, - "end": 25669, + "start": 25708, + "end": 25812, "loc": { "start": { "line": 717, @@ -52062,8 +52249,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25579, - "end": 25614, + "start": 25722, + "end": 25757, "loc": { "start": { "line": 718, @@ -52076,8 +52263,8 @@ }, "expression": { "type": "CallExpression", - "start": 25579, - "end": 25613, + "start": 25722, + "end": 25756, "loc": { "start": { "line": 718, @@ -52090,8 +52277,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25579, - "end": 25611, + "start": 25722, + "end": 25754, "loc": { "start": { "line": 718, @@ -52104,8 +52291,8 @@ }, "object": { "type": "MemberExpression", - "start": 25579, - "end": 25603, + "start": 25722, + "end": 25746, "loc": { "start": { "line": 718, @@ -52118,8 +52305,8 @@ }, "object": { "type": "Identifier", - "start": 25579, - "end": 25584, + "start": 25722, + "end": 25727, "loc": { "start": { "line": 718, @@ -52135,8 +52322,8 @@ }, "property": { "type": "Identifier", - "start": 25585, - "end": 25603, + "start": 25728, + "end": 25746, "loc": { "start": { "line": 718, @@ -52154,8 +52341,8 @@ }, "property": { "type": "Identifier", - "start": 25604, - "end": 25611, + "start": 25747, + "end": 25754, "loc": { "start": { "line": 718, @@ -52176,8 +52363,8 @@ }, { "type": "ExpressionStatement", - "start": 25627, - "end": 25659, + "start": 25770, + "end": 25802, "loc": { "start": { "line": 719, @@ -52190,8 +52377,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25627, - "end": 25658, + "start": 25770, + "end": 25801, "loc": { "start": { "line": 719, @@ -52205,8 +52392,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25627, - "end": 25651, + "start": 25770, + "end": 25794, "loc": { "start": { "line": 719, @@ -52219,8 +52406,8 @@ }, "object": { "type": "Identifier", - "start": 25627, - "end": 25632, + "start": 25770, + "end": 25775, "loc": { "start": { "line": 719, @@ -52236,8 +52423,8 @@ }, "property": { "type": "Identifier", - "start": 25633, - "end": 25651, + "start": 25776, + "end": 25794, "loc": { "start": { "line": 719, @@ -52255,8 +52442,8 @@ }, "right": { "type": "NullLiteral", - "start": 25654, - "end": 25658, + "start": 25797, + "end": 25801, "loc": { "start": { "line": 719, @@ -52277,8 +52464,8 @@ }, { "type": "IfStatement", - "start": 25678, - "end": 25812, + "start": 25821, + "end": 25955, "loc": { "start": { "line": 721, @@ -52291,8 +52478,8 @@ }, "test": { "type": "MemberExpression", - "start": 25682, - "end": 25706, + "start": 25825, + "end": 25849, "loc": { "start": { "line": 721, @@ -52305,8 +52492,8 @@ }, "object": { "type": "Identifier", - "start": 25682, - "end": 25687, + "start": 25825, + "end": 25830, "loc": { "start": { "line": 721, @@ -52322,8 +52509,8 @@ }, "property": { "type": "Identifier", - "start": 25688, - "end": 25706, + "start": 25831, + "end": 25849, "loc": { "start": { "line": 721, @@ -52341,8 +52528,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25708, - "end": 25812, + "start": 25851, + "end": 25955, "loc": { "start": { "line": 721, @@ -52356,8 +52543,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25722, - "end": 25757, + "start": 25865, + "end": 25900, "loc": { "start": { "line": 722, @@ -52370,8 +52557,8 @@ }, "expression": { "type": "CallExpression", - "start": 25722, - "end": 25756, + "start": 25865, + "end": 25899, "loc": { "start": { "line": 722, @@ -52384,8 +52571,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25722, - "end": 25754, + "start": 25865, + "end": 25897, "loc": { "start": { "line": 722, @@ -52398,8 +52585,8 @@ }, "object": { "type": "MemberExpression", - "start": 25722, - "end": 25746, + "start": 25865, + "end": 25889, "loc": { "start": { "line": 722, @@ -52412,8 +52599,8 @@ }, "object": { "type": "Identifier", - "start": 25722, - "end": 25727, + "start": 25865, + "end": 25870, "loc": { "start": { "line": 722, @@ -52429,8 +52616,8 @@ }, "property": { "type": "Identifier", - "start": 25728, - "end": 25746, + "start": 25871, + "end": 25889, "loc": { "start": { "line": 722, @@ -52448,8 +52635,8 @@ }, "property": { "type": "Identifier", - "start": 25747, - "end": 25754, + "start": 25890, + "end": 25897, "loc": { "start": { "line": 722, @@ -52470,8 +52657,8 @@ }, { "type": "ExpressionStatement", - "start": 25770, - "end": 25802, + "start": 25913, + "end": 25945, "loc": { "start": { "line": 723, @@ -52484,8 +52671,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25770, - "end": 25801, + "start": 25913, + "end": 25944, "loc": { "start": { "line": 723, @@ -52499,8 +52686,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25770, - "end": 25794, + "start": 25913, + "end": 25937, "loc": { "start": { "line": 723, @@ -52513,8 +52700,8 @@ }, "object": { "type": "Identifier", - "start": 25770, - "end": 25775, + "start": 25913, + "end": 25918, "loc": { "start": { "line": 723, @@ -52530,8 +52717,8 @@ }, "property": { "type": "Identifier", - "start": 25776, - "end": 25794, + "start": 25919, + "end": 25937, "loc": { "start": { "line": 723, @@ -52549,8 +52736,8 @@ }, "right": { "type": "NullLiteral", - "start": 25797, - "end": 25801, + "start": 25940, + "end": 25944, "loc": { "start": { "line": 723, @@ -52571,8 +52758,8 @@ }, { "type": "IfStatement", - "start": 25821, - "end": 25955, + "start": 25964, + "end": 26098, "loc": { "start": { "line": 725, @@ -52585,8 +52772,8 @@ }, "test": { "type": "MemberExpression", - "start": 25825, - "end": 25849, + "start": 25968, + "end": 25992, "loc": { "start": { "line": 725, @@ -52599,8 +52786,8 @@ }, "object": { "type": "Identifier", - "start": 25825, - "end": 25830, + "start": 25968, + "end": 25973, "loc": { "start": { "line": 725, @@ -52616,8 +52803,8 @@ }, "property": { "type": "Identifier", - "start": 25831, - "end": 25849, + "start": 25974, + "end": 25992, "loc": { "start": { "line": 725, @@ -52635,8 +52822,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25851, - "end": 25955, + "start": 25994, + "end": 26098, "loc": { "start": { "line": 725, @@ -52650,8 +52837,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25865, - "end": 25900, + "start": 26008, + "end": 26043, "loc": { "start": { "line": 726, @@ -52664,8 +52851,8 @@ }, "expression": { "type": "CallExpression", - "start": 25865, - "end": 25899, + "start": 26008, + "end": 26042, "loc": { "start": { "line": 726, @@ -52678,8 +52865,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25865, - "end": 25897, + "start": 26008, + "end": 26040, "loc": { "start": { "line": 726, @@ -52692,8 +52879,8 @@ }, "object": { "type": "MemberExpression", - "start": 25865, - "end": 25889, + "start": 26008, + "end": 26032, "loc": { "start": { "line": 726, @@ -52706,8 +52893,8 @@ }, "object": { "type": "Identifier", - "start": 25865, - "end": 25870, + "start": 26008, + "end": 26013, "loc": { "start": { "line": 726, @@ -52723,8 +52910,8 @@ }, "property": { "type": "Identifier", - "start": 25871, - "end": 25889, + "start": 26014, + "end": 26032, "loc": { "start": { "line": 726, @@ -52742,8 +52929,8 @@ }, "property": { "type": "Identifier", - "start": 25890, - "end": 25897, + "start": 26033, + "end": 26040, "loc": { "start": { "line": 726, @@ -52764,8 +52951,8 @@ }, { "type": "ExpressionStatement", - "start": 25913, - "end": 25945, + "start": 26056, + "end": 26088, "loc": { "start": { "line": 727, @@ -52778,8 +52965,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25913, - "end": 25944, + "start": 26056, + "end": 26087, "loc": { "start": { "line": 727, @@ -52793,8 +52980,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25913, - "end": 25937, + "start": 26056, + "end": 26080, "loc": { "start": { "line": 727, @@ -52807,8 +52994,8 @@ }, "object": { "type": "Identifier", - "start": 25913, - "end": 25918, + "start": 26056, + "end": 26061, "loc": { "start": { "line": 727, @@ -52824,8 +53011,8 @@ }, "property": { "type": "Identifier", - "start": 25919, - "end": 25937, + "start": 26062, + "end": 26080, "loc": { "start": { "line": 727, @@ -52843,8 +53030,8 @@ }, "right": { "type": "NullLiteral", - "start": 25940, - "end": 25944, + "start": 26083, + "end": 26087, "loc": { "start": { "line": 727, @@ -52865,8 +53052,8 @@ }, { "type": "IfStatement", - "start": 25964, - "end": 26083, + "start": 26107, + "end": 26226, "loc": { "start": { "line": 729, @@ -52879,8 +53066,8 @@ }, "test": { "type": "MemberExpression", - "start": 25968, - "end": 25987, + "start": 26111, + "end": 26130, "loc": { "start": { "line": 729, @@ -52893,8 +53080,8 @@ }, "object": { "type": "Identifier", - "start": 25968, - "end": 25973, + "start": 26111, + "end": 26116, "loc": { "start": { "line": 729, @@ -52910,8 +53097,8 @@ }, "property": { "type": "Identifier", - "start": 25974, - "end": 25987, + "start": 26117, + "end": 26130, "loc": { "start": { "line": 729, @@ -52929,8 +53116,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25989, - "end": 26083, + "start": 26132, + "end": 26226, "loc": { "start": { "line": 729, @@ -52944,8 +53131,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 26003, - "end": 26033, + "start": 26146, + "end": 26176, "loc": { "start": { "line": 730, @@ -52958,8 +53145,8 @@ }, "expression": { "type": "CallExpression", - "start": 26003, - "end": 26032, + "start": 26146, + "end": 26175, "loc": { "start": { "line": 730, @@ -52972,8 +53159,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26003, - "end": 26030, + "start": 26146, + "end": 26173, "loc": { "start": { "line": 730, @@ -52986,8 +53173,8 @@ }, "object": { "type": "MemberExpression", - "start": 26003, - "end": 26022, + "start": 26146, + "end": 26165, "loc": { "start": { "line": 730, @@ -53000,8 +53187,8 @@ }, "object": { "type": "Identifier", - "start": 26003, - "end": 26008, + "start": 26146, + "end": 26151, "loc": { "start": { "line": 730, @@ -53017,8 +53204,8 @@ }, "property": { "type": "Identifier", - "start": 26009, - "end": 26022, + "start": 26152, + "end": 26165, "loc": { "start": { "line": 730, @@ -53036,8 +53223,8 @@ }, "property": { "type": "Identifier", - "start": 26023, - "end": 26030, + "start": 26166, + "end": 26173, "loc": { "start": { "line": 730, @@ -53058,8 +53245,8 @@ }, { "type": "ExpressionStatement", - "start": 26046, - "end": 26073, + "start": 26189, + "end": 26216, "loc": { "start": { "line": 731, @@ -53072,8 +53259,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 26046, - "end": 26072, + "start": 26189, + "end": 26215, "loc": { "start": { "line": 731, @@ -53087,8 +53274,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 26046, - "end": 26065, + "start": 26189, + "end": 26208, "loc": { "start": { "line": 731, @@ -53101,8 +53288,8 @@ }, "object": { "type": "Identifier", - "start": 26046, - "end": 26051, + "start": 26189, + "end": 26194, "loc": { "start": { "line": 731, @@ -53118,8 +53305,8 @@ }, "property": { "type": "Identifier", - "start": 26052, - "end": 26065, + "start": 26195, + "end": 26208, "loc": { "start": { "line": 731, @@ -53137,8 +53324,8 @@ }, "right": { "type": "NullLiteral", - "start": 26068, - "end": 26072, + "start": 26211, + "end": 26215, "loc": { "start": { "line": 731, @@ -53159,8 +53346,8 @@ }, { "type": "ExpressionStatement", - "start": 26092, - "end": 26108, + "start": 26235, + "end": 26251, "loc": { "start": { "line": 733, @@ -53173,8 +53360,8 @@ }, "expression": { "type": "CallExpression", - "start": 26092, - "end": 26107, + "start": 26235, + "end": 26250, "loc": { "start": { "line": 733, @@ -53187,8 +53374,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26092, - "end": 26105, + "start": 26235, + "end": 26248, "loc": { "start": { "line": 733, @@ -53201,8 +53388,8 @@ }, "object": { "type": "Identifier", - "start": 26092, - "end": 26097, + "start": 26235, + "end": 26240, "loc": { "start": { "line": 733, @@ -53218,8 +53405,8 @@ }, "property": { "type": "Identifier", - "start": 26098, - "end": 26105, + "start": 26241, + "end": 26248, "loc": { "start": { "line": 733, @@ -53250,8 +53437,8 @@ }, { "type": "ExportNamedDeclaration", - "start": 26118, - "end": 26149, + "start": 26261, + "end": 26292, "loc": { "start": { "line": 737, @@ -53266,8 +53453,8 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 26126, - "end": 26147, + "start": 26269, + "end": 26290, "loc": { "start": { "line": 737, @@ -53280,8 +53467,8 @@ }, "local": { "type": "Identifier", - "start": 26126, - "end": 26147, + "start": 26269, + "end": 26290, "loc": { "start": { "line": 737, @@ -53297,8 +53484,8 @@ }, "exported": { "type": "Identifier", - "start": 26126, - "end": 26147, + "start": 26269, + "end": 26290, "loc": { "start": { "line": 737, @@ -53318,8 +53505,8 @@ }, { "type": "ExportNamedDeclaration", - "start": 26118, - "end": 26149, + "start": 26261, + "end": 26292, "loc": { "start": { "line": 737, @@ -53333,7 +53520,7 @@ "declaration": { "type": "ClassDeclaration", "start": 724, - "end": 26116, + "end": 26259, "loc": { "start": { "line": 20, @@ -53366,7 +53553,7 @@ "body": { "type": "ClassBody", "start": 752, - "end": 26116, + "end": 26259, "loc": { "start": { "line": 20, @@ -98582,7 +98769,7 @@ { "type": "ClassMethod", "start": 22619, - "end": 23035, + "end": 23048, "loc": { "start": { "line": 629, @@ -98621,7 +98808,7 @@ { "type": "Identifier", "start": 22642, - "end": 22650, + "end": 22653, "loc": { "start": { "line": 629, @@ -98629,7 +98816,24 @@ }, "end": { "line": 629, - "column": 35 + "column": 38 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 22655, + "end": 22663, + "loc": { + "start": { + "line": 629, + "column": 40 + }, + "end": { + "line": 629, + "column": 48 }, "identifierName": "frameCtx" }, @@ -98638,12 +98842,12 @@ ], "body": { "type": "BlockStatement", - "start": 22652, - "end": 23035, + "start": 22665, + "end": 23048, "loc": { "start": { "line": 629, - "column": 37 + "column": 50 }, "end": { "line": 636, @@ -98653,8 +98857,8 @@ "body": [ { "type": "IfStatement", - "start": 22662, - "end": 22828, + "start": 22675, + "end": 22841, "loc": { "start": { "line": 630, @@ -98667,8 +98871,8 @@ }, "test": { "type": "LogicalExpression", - "start": 22666, - "end": 22795, + "start": 22679, + "end": 22808, "loc": { "start": { "line": 630, @@ -98681,8 +98885,8 @@ }, "left": { "type": "LogicalExpression", - "start": 22666, - "end": 22755, + "start": 22679, + "end": 22768, "loc": { "start": { "line": 630, @@ -98695,8 +98899,8 @@ }, "left": { "type": "BinaryExpression", - "start": 22666, - "end": 22716, + "start": 22679, + "end": 22729, "loc": { "start": { "line": 630, @@ -98709,8 +98913,8 @@ }, "left": { "type": "MemberExpression", - "start": 22666, - "end": 22694, + "start": 22679, + "end": 22707, "loc": { "start": { "line": 630, @@ -98723,8 +98927,8 @@ }, "object": { "type": "ThisExpression", - "start": 22666, - "end": 22670, + "start": 22679, + "end": 22683, "loc": { "start": { "line": 630, @@ -98738,8 +98942,8 @@ }, "property": { "type": "Identifier", - "start": 22671, - "end": 22694, + "start": 22684, + "end": 22707, "loc": { "start": { "line": 630, @@ -98758,8 +98962,8 @@ "operator": "===", "right": { "type": "MemberExpression", - "start": 22699, - "end": 22716, + "start": 22712, + "end": 22729, "loc": { "start": { "line": 630, @@ -98772,8 +98976,8 @@ }, "object": { "type": "ThisExpression", - "start": 22699, - "end": 22703, + "start": 22712, + "end": 22716, "loc": { "start": { "line": 630, @@ -98787,8 +98991,8 @@ }, "property": { "type": "Identifier", - "start": 22704, - "end": 22716, + "start": 22717, + "end": 22729, "loc": { "start": { "line": 630, @@ -98808,8 +99012,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 22720, - "end": 22755, + "start": 22733, + "end": 22768, "loc": { "start": { "line": 630, @@ -98822,8 +99026,8 @@ }, "left": { "type": "MemberExpression", - "start": 22720, - "end": 22749, + "start": 22733, + "end": 22762, "loc": { "start": { "line": 630, @@ -98836,8 +99040,8 @@ }, "object": { "type": "ThisExpression", - "start": 22720, - "end": 22724, + "start": 22733, + "end": 22737, "loc": { "start": { "line": 630, @@ -98851,8 +99055,8 @@ }, "property": { "type": "Identifier", - "start": 22725, - "end": 22749, + "start": 22738, + "end": 22762, "loc": { "start": { "line": 630, @@ -98871,8 +99075,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 22754, - "end": 22755, + "start": 22767, + "end": 22768, "loc": { "start": { "line": 630, @@ -98894,8 +99098,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 22759, - "end": 22795, + "start": 22772, + "end": 22808, "loc": { "start": { "line": 630, @@ -98908,8 +99112,8 @@ }, "left": { "type": "MemberExpression", - "start": 22759, - "end": 22789, + "start": 22772, + "end": 22802, "loc": { "start": { "line": 630, @@ -98922,8 +99126,8 @@ }, "object": { "type": "ThisExpression", - "start": 22759, - "end": 22763, + "start": 22772, + "end": 22776, "loc": { "start": { "line": 630, @@ -98937,8 +99141,8 @@ }, "property": { "type": "Identifier", - "start": 22764, - "end": 22789, + "start": 22777, + "end": 22802, "loc": { "start": { "line": 630, @@ -98957,8 +99161,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 22794, - "end": 22795, + "start": 22807, + "end": 22808, "loc": { "start": { "line": 630, @@ -98979,8 +99183,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 22797, - "end": 22828, + "start": 22810, + "end": 22841, "loc": { "start": { "line": 630, @@ -98994,8 +99198,8 @@ "body": [ { "type": "ReturnStatement", - "start": 22811, - "end": 22818, + "start": 22824, + "end": 22831, "loc": { "start": { "line": 631, @@ -99015,8 +99219,8 @@ }, { "type": "IfStatement", - "start": 22837, - "end": 23029, + "start": 22850, + "end": 23042, "loc": { "start": { "line": 633, @@ -99029,8 +99233,8 @@ }, "test": { "type": "MemberExpression", - "start": 22841, - "end": 22891, + "start": 22854, + "end": 22904, "loc": { "start": { "line": 633, @@ -99043,8 +99247,8 @@ }, "object": { "type": "MemberExpression", - "start": 22841, - "end": 22872, + "start": 22854, + "end": 22885, "loc": { "start": { "line": 633, @@ -99057,8 +99261,8 @@ }, "object": { "type": "ThisExpression", - "start": 22841, - "end": 22845, + "start": 22854, + "end": 22858, "loc": { "start": { "line": 633, @@ -99072,8 +99276,8 @@ }, "property": { "type": "Identifier", - "start": 22846, - "end": 22872, + "start": 22859, + "end": 22885, "loc": { "start": { "line": 633, @@ -99091,8 +99295,8 @@ }, "property": { "type": "Identifier", - "start": 22873, - "end": 22891, + "start": 22886, + "end": 22904, "loc": { "start": { "line": 633, @@ -99110,8 +99314,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 22893, - "end": 23029, + "start": 22906, + "end": 23042, "loc": { "start": { "line": 633, @@ -99125,8 +99329,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 22907, - "end": 23019, + "start": 22920, + "end": 23032, "loc": { "start": { "line": 634, @@ -99139,8 +99343,8 @@ }, "expression": { "type": "CallExpression", - "start": 22907, - "end": 23018, + "start": 22920, + "end": 23031, "loc": { "start": { "line": 634, @@ -99153,8 +99357,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22907, - "end": 22967, + "start": 22920, + "end": 22980, "loc": { "start": { "line": 634, @@ -99167,8 +99371,8 @@ }, "object": { "type": "MemberExpression", - "start": 22907, - "end": 22957, + "start": 22920, + "end": 22970, "loc": { "start": { "line": 634, @@ -99181,8 +99385,8 @@ }, "object": { "type": "MemberExpression", - "start": 22907, - "end": 22938, + "start": 22920, + "end": 22951, "loc": { "start": { "line": 634, @@ -99195,8 +99399,8 @@ }, "object": { "type": "ThisExpression", - "start": 22907, - "end": 22911, + "start": 22920, + "end": 22924, "loc": { "start": { "line": 634, @@ -99210,8 +99414,8 @@ }, "property": { "type": "Identifier", - "start": 22912, - "end": 22938, + "start": 22925, + "end": 22951, "loc": { "start": { "line": 634, @@ -99229,8 +99433,8 @@ }, "property": { "type": "Identifier", - "start": 22939, - "end": 22957, + "start": 22952, + "end": 22970, "loc": { "start": { "line": 634, @@ -99248,8 +99452,8 @@ }, "property": { "type": "Identifier", - "start": 22958, - "end": 22967, + "start": 22971, + "end": 22980, "loc": { "start": { "line": 634, @@ -99268,8 +99472,8 @@ "arguments": [ { "type": "Identifier", - "start": 22968, - "end": 22976, + "start": 22981, + "end": 22989, "loc": { "start": { "line": 634, @@ -99285,8 +99489,8 @@ }, { "type": "ThisExpression", - "start": 22978, - "end": 22982, + "start": 22991, + "end": 22995, "loc": { "start": { "line": 634, @@ -99300,8 +99504,8 @@ }, { "type": "MemberExpression", - "start": 22984, - "end": 23017, + "start": 22997, + "end": 23030, "loc": { "start": { "line": 634, @@ -99314,8 +99518,8 @@ }, "object": { "type": "Identifier", - "start": 22984, - "end": 22997, + "start": 22997, + "end": 23010, "loc": { "start": { "line": 634, @@ -99331,8 +99535,8 @@ }, "property": { "type": "Identifier", - "start": 22998, - "end": 23017, + "start": 23011, + "end": 23030, "loc": { "start": { "line": 634, @@ -99364,8 +99568,8 @@ { "type": "CommentLine", "value": "-- EDGES RENDERING -----------------------------------------------------------------------------------------------", - "start": 23041, - "end": 23157, + "start": 23054, + "end": 23170, "loc": { "start": { "line": 638, @@ -99381,8 +99585,8 @@ }, { "type": "ClassMethod", - "start": 23163, - "end": 23201, + "start": 23176, + "end": 23227, "loc": { "start": { "line": 640, @@ -99397,8 +99601,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 23163, - "end": 23183, + "start": 23176, + "end": 23196, "loc": { "start": { "line": 640, @@ -99421,8 +99625,8 @@ "params": [ { "type": "Identifier", - "start": 23184, - "end": 23192, + "start": 23197, + "end": 23208, "loc": { "start": { "line": 640, @@ -99430,7 +99634,24 @@ }, "end": { "line": 640, - "column": 33 + "column": 36 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 23210, + "end": 23218, + "loc": { + "start": { + "line": 640, + "column": 38 + }, + "end": { + "line": 640, + "column": 46 }, "identifierName": "frameCtx" }, @@ -99439,12 +99660,12 @@ ], "body": { "type": "BlockStatement", - "start": 23194, - "end": 23201, + "start": 23220, + "end": 23227, "loc": { "start": { "line": 640, - "column": 35 + "column": 48 }, "end": { "line": 641, @@ -99458,8 +99679,8 @@ { "type": "CommentLine", "value": "-- EDGES RENDERING -----------------------------------------------------------------------------------------------", - "start": 23041, - "end": 23157, + "start": 23054, + "end": 23170, "loc": { "start": { "line": 638, @@ -99475,8 +99696,8 @@ }, { "type": "ClassMethod", - "start": 23207, - "end": 23250, + "start": 23233, + "end": 23289, "loc": { "start": { "line": 643, @@ -99491,8 +99712,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 23207, - "end": 23232, + "start": 23233, + "end": 23258, "loc": { "start": { "line": 643, @@ -99514,8 +99735,8 @@ "params": [ { "type": "Identifier", - "start": 23233, - "end": 23241, + "start": 23259, + "end": 23270, "loc": { "start": { "line": 643, @@ -99523,7 +99744,24 @@ }, "end": { "line": 643, - "column": 38 + "column": 41 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 23272, + "end": 23280, + "loc": { + "start": { + "line": 643, + "column": 43 + }, + "end": { + "line": 643, + "column": 51 }, "identifierName": "frameCtx" }, @@ -99532,12 +99770,12 @@ ], "body": { "type": "BlockStatement", - "start": 23243, - "end": 23250, + "start": 23282, + "end": 23289, "loc": { "start": { "line": 643, - "column": 40 + "column": 53 }, "end": { "line": 644, @@ -99550,8 +99788,8 @@ }, { "type": "ClassMethod", - "start": 23256, - "end": 23294, + "start": 23295, + "end": 23346, "loc": { "start": { "line": 646, @@ -99566,8 +99804,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 23256, - "end": 23276, + "start": 23295, + "end": 23315, "loc": { "start": { "line": 646, @@ -99589,8 +99827,8 @@ "params": [ { "type": "Identifier", - "start": 23277, - "end": 23285, + "start": 23316, + "end": 23327, "loc": { "start": { "line": 646, @@ -99598,7 +99836,24 @@ }, "end": { "line": 646, - "column": 33 + "column": 36 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 23329, + "end": 23337, + "loc": { + "start": { + "line": 646, + "column": 38 + }, + "end": { + "line": 646, + "column": 46 }, "identifierName": "frameCtx" }, @@ -99607,12 +99862,12 @@ ], "body": { "type": "BlockStatement", - "start": 23287, - "end": 23294, + "start": 23339, + "end": 23346, "loc": { "start": { "line": 646, - "column": 35 + "column": 48 }, "end": { "line": 647, @@ -99625,8 +99880,8 @@ }, { "type": "ClassMethod", - "start": 23300, - "end": 23335, + "start": 23352, + "end": 23400, "loc": { "start": { "line": 649, @@ -99641,8 +99896,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 23300, - "end": 23317, + "start": 23352, + "end": 23369, "loc": { "start": { "line": 649, @@ -99664,8 +99919,8 @@ "params": [ { "type": "Identifier", - "start": 23318, - "end": 23326, + "start": 23370, + "end": 23381, "loc": { "start": { "line": 649, @@ -99673,7 +99928,24 @@ }, "end": { "line": 649, - "column": 30 + "column": 33 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 23383, + "end": 23391, + "loc": { + "start": { + "line": 649, + "column": 35 + }, + "end": { + "line": 649, + "column": 43 }, "identifierName": "frameCtx" }, @@ -99682,12 +99954,12 @@ ], "body": { "type": "BlockStatement", - "start": 23328, - "end": 23335, + "start": 23393, + "end": 23400, "loc": { "start": { "line": 649, - "column": 32 + "column": 45 }, "end": { "line": 650, @@ -99700,8 +99972,8 @@ }, { "type": "ClassMethod", - "start": 23341, - "end": 23374, + "start": 23406, + "end": 23452, "loc": { "start": { "line": 652, @@ -99716,8 +99988,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 23341, - "end": 23356, + "start": 23406, + "end": 23421, "loc": { "start": { "line": 652, @@ -99739,8 +100011,8 @@ "params": [ { "type": "Identifier", - "start": 23357, - "end": 23365, + "start": 23422, + "end": 23433, "loc": { "start": { "line": 652, @@ -99748,7 +100020,24 @@ }, "end": { "line": 652, - "column": 28 + "column": 31 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 23435, + "end": 23443, + "loc": { + "start": { + "line": 652, + "column": 33 + }, + "end": { + "line": 652, + "column": 41 }, "identifierName": "frameCtx" }, @@ -99757,12 +100046,12 @@ ], "body": { "type": "BlockStatement", - "start": 23367, - "end": 23374, + "start": 23445, + "end": 23452, "loc": { "start": { "line": 652, - "column": 30 + "column": 43 }, "end": { "line": 653, @@ -99778,8 +100067,8 @@ { "type": "CommentLine", "value": " ---------------------- OCCLUSION CULL RENDERING -----------------------------------", - "start": 23380, - "end": 23466, + "start": 23458, + "end": 23544, "loc": { "start": { "line": 655, @@ -99795,8 +100084,8 @@ }, { "type": "ClassMethod", - "start": 23472, - "end": 23890, + "start": 23550, + "end": 23981, "loc": { "start": { "line": 657, @@ -99811,8 +100100,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 23472, - "end": 23485, + "start": 23550, + "end": 23563, "loc": { "start": { "line": 657, @@ -99835,8 +100124,8 @@ "params": [ { "type": "Identifier", - "start": 23486, - "end": 23494, + "start": 23564, + "end": 23575, "loc": { "start": { "line": 657, @@ -99844,7 +100133,24 @@ }, "end": { "line": 657, - "column": 26 + "column": 29 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 23577, + "end": 23585, + "loc": { + "start": { + "line": 657, + "column": 31 + }, + "end": { + "line": 657, + "column": 39 }, "identifierName": "frameCtx" }, @@ -99853,12 +100159,12 @@ ], "body": { "type": "BlockStatement", - "start": 23496, - "end": 23890, + "start": 23587, + "end": 23981, "loc": { "start": { "line": 657, - "column": 28 + "column": 41 }, "end": { "line": 665, @@ -99868,8 +100174,8 @@ "body": [ { "type": "IfStatement", - "start": 23506, - "end": 23632, + "start": 23597, + "end": 23723, "loc": { "start": { "line": 658, @@ -99882,8 +100188,8 @@ }, "test": { "type": "LogicalExpression", - "start": 23510, - "end": 23599, + "start": 23601, + "end": 23690, "loc": { "start": { "line": 658, @@ -99896,8 +100202,8 @@ }, "left": { "type": "BinaryExpression", - "start": 23510, - "end": 23560, + "start": 23601, + "end": 23651, "loc": { "start": { "line": 658, @@ -99910,8 +100216,8 @@ }, "left": { "type": "MemberExpression", - "start": 23510, - "end": 23538, + "start": 23601, + "end": 23629, "loc": { "start": { "line": 658, @@ -99924,8 +100230,8 @@ }, "object": { "type": "ThisExpression", - "start": 23510, - "end": 23514, + "start": 23601, + "end": 23605, "loc": { "start": { "line": 658, @@ -99939,8 +100245,8 @@ }, "property": { "type": "Identifier", - "start": 23515, - "end": 23538, + "start": 23606, + "end": 23629, "loc": { "start": { "line": 658, @@ -99959,8 +100265,8 @@ "operator": "===", "right": { "type": "MemberExpression", - "start": 23543, - "end": 23560, + "start": 23634, + "end": 23651, "loc": { "start": { "line": 658, @@ -99973,8 +100279,8 @@ }, "object": { "type": "ThisExpression", - "start": 23543, - "end": 23547, + "start": 23634, + "end": 23638, "loc": { "start": { "line": 658, @@ -99988,8 +100294,8 @@ }, "property": { "type": "Identifier", - "start": 23548, - "end": 23560, + "start": 23639, + "end": 23651, "loc": { "start": { "line": 658, @@ -100009,8 +100315,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 23564, - "end": 23599, + "start": 23655, + "end": 23690, "loc": { "start": { "line": 658, @@ -100023,8 +100329,8 @@ }, "left": { "type": "MemberExpression", - "start": 23564, - "end": 23593, + "start": 23655, + "end": 23684, "loc": { "start": { "line": 658, @@ -100037,8 +100343,8 @@ }, "object": { "type": "ThisExpression", - "start": 23564, - "end": 23568, + "start": 23655, + "end": 23659, "loc": { "start": { "line": 658, @@ -100052,8 +100358,8 @@ }, "property": { "type": "Identifier", - "start": 23569, - "end": 23593, + "start": 23660, + "end": 23684, "loc": { "start": { "line": 658, @@ -100072,8 +100378,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 23598, - "end": 23599, + "start": 23689, + "end": 23690, "loc": { "start": { "line": 658, @@ -100094,8 +100400,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 23601, - "end": 23632, + "start": 23692, + "end": 23723, "loc": { "start": { "line": 658, @@ -100109,8 +100415,8 @@ "body": [ { "type": "ReturnStatement", - "start": 23615, - "end": 23622, + "start": 23706, + "end": 23713, "loc": { "start": { "line": 659, @@ -100130,8 +100436,8 @@ }, { "type": "IfStatement", - "start": 23641, - "end": 23884, + "start": 23732, + "end": 23975, "loc": { "start": { "line": 661, @@ -100144,8 +100450,8 @@ }, "test": { "type": "MemberExpression", - "start": 23645, - "end": 23694, + "start": 23736, + "end": 23785, "loc": { "start": { "line": 661, @@ -100158,8 +100464,8 @@ }, "object": { "type": "MemberExpression", - "start": 23645, - "end": 23676, + "start": 23736, + "end": 23767, "loc": { "start": { "line": 661, @@ -100172,8 +100478,8 @@ }, "object": { "type": "ThisExpression", - "start": 23645, - "end": 23649, + "start": 23736, + "end": 23740, "loc": { "start": { "line": 661, @@ -100187,8 +100493,8 @@ }, "property": { "type": "Identifier", - "start": 23650, - "end": 23676, + "start": 23741, + "end": 23767, "loc": { "start": { "line": 661, @@ -100206,8 +100512,8 @@ }, "property": { "type": "Identifier", - "start": 23677, - "end": 23694, + "start": 23768, + "end": 23785, "loc": { "start": { "line": 661, @@ -100225,8 +100531,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 23696, - "end": 23884, + "start": 23787, + "end": 23975, "loc": { "start": { "line": 661, @@ -100240,8 +100546,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 23770, - "end": 23874, + "start": 23861, + "end": 23965, "loc": { "start": { "line": 663, @@ -100254,8 +100560,8 @@ }, "expression": { "type": "CallExpression", - "start": 23770, - "end": 23873, + "start": 23861, + "end": 23964, "loc": { "start": { "line": 663, @@ -100268,8 +100574,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23770, - "end": 23829, + "start": 23861, + "end": 23920, "loc": { "start": { "line": 663, @@ -100282,8 +100588,8 @@ }, "object": { "type": "MemberExpression", - "start": 23770, - "end": 23819, + "start": 23861, + "end": 23910, "loc": { "start": { "line": 663, @@ -100296,8 +100602,8 @@ }, "object": { "type": "MemberExpression", - "start": 23770, - "end": 23801, + "start": 23861, + "end": 23892, "loc": { "start": { "line": 663, @@ -100310,8 +100616,8 @@ }, "object": { "type": "ThisExpression", - "start": 23770, - "end": 23774, + "start": 23861, + "end": 23865, "loc": { "start": { "line": 663, @@ -100326,8 +100632,8 @@ }, "property": { "type": "Identifier", - "start": 23775, - "end": 23801, + "start": 23866, + "end": 23892, "loc": { "start": { "line": 663, @@ -100346,8 +100652,8 @@ }, "property": { "type": "Identifier", - "start": 23802, - "end": 23819, + "start": 23893, + "end": 23910, "loc": { "start": { "line": 663, @@ -100366,8 +100672,8 @@ }, "property": { "type": "Identifier", - "start": 23820, - "end": 23829, + "start": 23911, + "end": 23920, "loc": { "start": { "line": 663, @@ -100387,8 +100693,8 @@ "arguments": [ { "type": "Identifier", - "start": 23830, - "end": 23838, + "start": 23921, + "end": 23929, "loc": { "start": { "line": 663, @@ -100404,8 +100710,8 @@ }, { "type": "ThisExpression", - "start": 23840, - "end": 23844, + "start": 23931, + "end": 23935, "loc": { "start": { "line": 663, @@ -100419,8 +100725,8 @@ }, { "type": "MemberExpression", - "start": 23846, - "end": 23872, + "start": 23937, + "end": 23963, "loc": { "start": { "line": 663, @@ -100433,8 +100739,8 @@ }, "object": { "type": "Identifier", - "start": 23846, - "end": 23859, + "start": 23937, + "end": 23950, "loc": { "start": { "line": 663, @@ -100450,8 +100756,8 @@ }, "property": { "type": "Identifier", - "start": 23860, - "end": 23872, + "start": 23951, + "end": 23963, "loc": { "start": { "line": 663, @@ -100474,8 +100780,8 @@ { "type": "CommentLine", "value": " Only opaque, filled objects can be occluders", - "start": 23710, - "end": 23757, + "start": 23801, + "end": 23848, "loc": { "start": { "line": 662, @@ -100502,8 +100808,8 @@ { "type": "CommentLine", "value": " ---------------------- OCCLUSION CULL RENDERING -----------------------------------", - "start": 23380, - "end": 23466, + "start": 23458, + "end": 23544, "loc": { "start": { "line": 655, @@ -100520,8 +100826,8 @@ { "type": "CommentLine", "value": " ---------------------- SHADOW BUFFER RENDERING -----------------------------------", - "start": 23896, - "end": 23981, + "start": 23987, + "end": 24072, "loc": { "start": { "line": 667, @@ -100537,8 +100843,8 @@ }, { "type": "ClassMethod", - "start": 23987, - "end": 24015, + "start": 24078, + "end": 24119, "loc": { "start": { "line": 669, @@ -100553,8 +100859,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 23987, - "end": 23997, + "start": 24078, + "end": 24088, "loc": { "start": { "line": 669, @@ -100577,8 +100883,8 @@ "params": [ { "type": "Identifier", - "start": 23998, - "end": 24006, + "start": 24089, + "end": 24100, "loc": { "start": { "line": 669, @@ -100586,7 +100892,24 @@ }, "end": { "line": 669, - "column": 23 + "column": 26 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 24102, + "end": 24110, + "loc": { + "start": { + "line": 669, + "column": 28 + }, + "end": { + "line": 669, + "column": 36 }, "identifierName": "frameCtx" }, @@ -100595,12 +100918,12 @@ ], "body": { "type": "BlockStatement", - "start": 24008, - "end": 24015, + "start": 24112, + "end": 24119, "loc": { "start": { "line": 669, - "column": 25 + "column": 38 }, "end": { "line": 670, @@ -100616,8 +100939,8 @@ { "type": "CommentLine", "value": " ---------------------- SHADOW BUFFER RENDERING -----------------------------------", - "start": 23896, - "end": 23981, + "start": 23987, + "end": 24072, "loc": { "start": { "line": 667, @@ -100634,8 +100957,8 @@ { "type": "CommentLine", "value": "---- PICKING ----------------------------------------------------------------------------------------------------", - "start": 24021, - "end": 24136, + "start": 24125, + "end": 24240, "loc": { "start": { "line": 672, @@ -100651,8 +100974,8 @@ }, { "type": "ClassMethod", - "start": 24142, - "end": 24489, + "start": 24246, + "end": 24606, "loc": { "start": { "line": 674, @@ -100667,8 +100990,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 24142, - "end": 24154, + "start": 24246, + "end": 24258, "loc": { "start": { "line": 674, @@ -100691,8 +101014,8 @@ "params": [ { "type": "Identifier", - "start": 24155, - "end": 24163, + "start": 24259, + "end": 24270, "loc": { "start": { "line": 674, @@ -100700,7 +101023,24 @@ }, "end": { "line": 674, - "column": 25 + "column": 28 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 24272, + "end": 24280, + "loc": { + "start": { + "line": 674, + "column": 30 + }, + "end": { + "line": 674, + "column": 38 }, "identifierName": "frameCtx" }, @@ -100709,12 +101049,12 @@ ], "body": { "type": "BlockStatement", - "start": 24165, - "end": 24489, + "start": 24282, + "end": 24606, "loc": { "start": { "line": 674, - "column": 27 + "column": 40 }, "end": { "line": 681, @@ -100724,8 +101064,8 @@ "body": [ { "type": "IfStatement", - "start": 24175, - "end": 24301, + "start": 24292, + "end": 24418, "loc": { "start": { "line": 675, @@ -100738,8 +101078,8 @@ }, "test": { "type": "LogicalExpression", - "start": 24179, - "end": 24268, + "start": 24296, + "end": 24385, "loc": { "start": { "line": 675, @@ -100752,8 +101092,8 @@ }, "left": { "type": "BinaryExpression", - "start": 24179, - "end": 24229, + "start": 24296, + "end": 24346, "loc": { "start": { "line": 675, @@ -100766,8 +101106,8 @@ }, "left": { "type": "MemberExpression", - "start": 24179, - "end": 24207, + "start": 24296, + "end": 24324, "loc": { "start": { "line": 675, @@ -100780,8 +101120,8 @@ }, "object": { "type": "ThisExpression", - "start": 24179, - "end": 24183, + "start": 24296, + "end": 24300, "loc": { "start": { "line": 675, @@ -100795,8 +101135,8 @@ }, "property": { "type": "Identifier", - "start": 24184, - "end": 24207, + "start": 24301, + "end": 24324, "loc": { "start": { "line": 675, @@ -100815,8 +101155,8 @@ "operator": "===", "right": { "type": "MemberExpression", - "start": 24212, - "end": 24229, + "start": 24329, + "end": 24346, "loc": { "start": { "line": 675, @@ -100829,8 +101169,8 @@ }, "object": { "type": "ThisExpression", - "start": 24212, - "end": 24216, + "start": 24329, + "end": 24333, "loc": { "start": { "line": 675, @@ -100844,8 +101184,8 @@ }, "property": { "type": "Identifier", - "start": 24217, - "end": 24229, + "start": 24334, + "end": 24346, "loc": { "start": { "line": 675, @@ -100865,8 +101205,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 24233, - "end": 24268, + "start": 24350, + "end": 24385, "loc": { "start": { "line": 675, @@ -100879,8 +101219,8 @@ }, "left": { "type": "MemberExpression", - "start": 24233, - "end": 24262, + "start": 24350, + "end": 24379, "loc": { "start": { "line": 675, @@ -100893,8 +101233,8 @@ }, "object": { "type": "ThisExpression", - "start": 24233, - "end": 24237, + "start": 24350, + "end": 24354, "loc": { "start": { "line": 675, @@ -100908,8 +101248,8 @@ }, "property": { "type": "Identifier", - "start": 24238, - "end": 24262, + "start": 24355, + "end": 24379, "loc": { "start": { "line": 675, @@ -100928,8 +101268,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 24267, - "end": 24268, + "start": 24384, + "end": 24385, "loc": { "start": { "line": 675, @@ -100950,8 +101290,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 24270, - "end": 24301, + "start": 24387, + "end": 24418, "loc": { "start": { "line": 675, @@ -100965,8 +101305,8 @@ "body": [ { "type": "ReturnStatement", - "start": 24284, - "end": 24291, + "start": 24401, + "end": 24408, "loc": { "start": { "line": 676, @@ -100986,8 +101326,8 @@ }, { "type": "IfStatement", - "start": 24310, - "end": 24483, + "start": 24427, + "end": 24600, "loc": { "start": { "line": 678, @@ -101000,8 +101340,8 @@ }, "test": { "type": "MemberExpression", - "start": 24314, - "end": 24362, + "start": 24431, + "end": 24479, "loc": { "start": { "line": 678, @@ -101014,8 +101354,8 @@ }, "object": { "type": "MemberExpression", - "start": 24314, - "end": 24345, + "start": 24431, + "end": 24462, "loc": { "start": { "line": 678, @@ -101028,8 +101368,8 @@ }, "object": { "type": "ThisExpression", - "start": 24314, - "end": 24318, + "start": 24431, + "end": 24435, "loc": { "start": { "line": 678, @@ -101043,8 +101383,8 @@ }, "property": { "type": "Identifier", - "start": 24319, - "end": 24345, + "start": 24436, + "end": 24462, "loc": { "start": { "line": 678, @@ -101062,8 +101402,8 @@ }, "property": { "type": "Identifier", - "start": 24346, - "end": 24362, + "start": 24463, + "end": 24479, "loc": { "start": { "line": 678, @@ -101081,8 +101421,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 24364, - "end": 24483, + "start": 24481, + "end": 24600, "loc": { "start": { "line": 678, @@ -101096,8 +101436,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 24378, - "end": 24473, + "start": 24495, + "end": 24590, "loc": { "start": { "line": 679, @@ -101110,8 +101450,8 @@ }, "expression": { "type": "CallExpression", - "start": 24378, - "end": 24472, + "start": 24495, + "end": 24589, "loc": { "start": { "line": 679, @@ -101124,8 +101464,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24378, - "end": 24436, + "start": 24495, + "end": 24553, "loc": { "start": { "line": 679, @@ -101138,8 +101478,8 @@ }, "object": { "type": "MemberExpression", - "start": 24378, - "end": 24426, + "start": 24495, + "end": 24543, "loc": { "start": { "line": 679, @@ -101152,8 +101492,8 @@ }, "object": { "type": "MemberExpression", - "start": 24378, - "end": 24409, + "start": 24495, + "end": 24526, "loc": { "start": { "line": 679, @@ -101166,8 +101506,8 @@ }, "object": { "type": "ThisExpression", - "start": 24378, - "end": 24382, + "start": 24495, + "end": 24499, "loc": { "start": { "line": 679, @@ -101181,8 +101521,8 @@ }, "property": { "type": "Identifier", - "start": 24383, - "end": 24409, + "start": 24500, + "end": 24526, "loc": { "start": { "line": 679, @@ -101200,8 +101540,8 @@ }, "property": { "type": "Identifier", - "start": 24410, - "end": 24426, + "start": 24527, + "end": 24543, "loc": { "start": { "line": 679, @@ -101219,8 +101559,8 @@ }, "property": { "type": "Identifier", - "start": 24427, - "end": 24436, + "start": 24544, + "end": 24553, "loc": { "start": { "line": 679, @@ -101239,8 +101579,8 @@ "arguments": [ { "type": "Identifier", - "start": 24437, - "end": 24445, + "start": 24554, + "end": 24562, "loc": { "start": { "line": 679, @@ -101256,8 +101596,8 @@ }, { "type": "ThisExpression", - "start": 24447, - "end": 24451, + "start": 24564, + "end": 24568, "loc": { "start": { "line": 679, @@ -101271,8 +101611,8 @@ }, { "type": "MemberExpression", - "start": 24453, - "end": 24471, + "start": 24570, + "end": 24588, "loc": { "start": { "line": 679, @@ -101285,8 +101625,8 @@ }, "object": { "type": "Identifier", - "start": 24453, - "end": 24466, + "start": 24570, + "end": 24583, "loc": { "start": { "line": 679, @@ -101302,8 +101642,8 @@ }, "property": { "type": "Identifier", - "start": 24467, - "end": 24471, + "start": 24584, + "end": 24588, "loc": { "start": { "line": 679, @@ -101334,8 +101674,8 @@ { "type": "CommentLine", "value": "---- PICKING ----------------------------------------------------------------------------------------------------", - "start": 24021, - "end": 24136, + "start": 24125, + "end": 24240, "loc": { "start": { "line": 672, @@ -101351,8 +101691,8 @@ }, { "type": "ClassMethod", - "start": 24495, - "end": 24846, + "start": 24612, + "end": 24976, "loc": { "start": { "line": 683, @@ -101367,8 +101707,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 24495, - "end": 24509, + "start": 24612, + "end": 24626, "loc": { "start": { "line": 683, @@ -101390,8 +101730,8 @@ "params": [ { "type": "Identifier", - "start": 24510, - "end": 24518, + "start": 24627, + "end": 24638, "loc": { "start": { "line": 683, @@ -101399,7 +101739,24 @@ }, "end": { "line": 683, - "column": 27 + "column": 30 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 24640, + "end": 24648, + "loc": { + "start": { + "line": 683, + "column": 32 + }, + "end": { + "line": 683, + "column": 40 }, "identifierName": "frameCtx" }, @@ -101408,12 +101765,12 @@ ], "body": { "type": "BlockStatement", - "start": 24520, - "end": 24846, + "start": 24650, + "end": 24976, "loc": { "start": { "line": 683, - "column": 29 + "column": 42 }, "end": { "line": 690, @@ -101423,8 +101780,8 @@ "body": [ { "type": "IfStatement", - "start": 24530, - "end": 24656, + "start": 24660, + "end": 24786, "loc": { "start": { "line": 684, @@ -101437,8 +101794,8 @@ }, "test": { "type": "LogicalExpression", - "start": 24534, - "end": 24623, + "start": 24664, + "end": 24753, "loc": { "start": { "line": 684, @@ -101451,8 +101808,8 @@ }, "left": { "type": "BinaryExpression", - "start": 24534, - "end": 24584, + "start": 24664, + "end": 24714, "loc": { "start": { "line": 684, @@ -101465,8 +101822,8 @@ }, "left": { "type": "MemberExpression", - "start": 24534, - "end": 24562, + "start": 24664, + "end": 24692, "loc": { "start": { "line": 684, @@ -101479,8 +101836,8 @@ }, "object": { "type": "ThisExpression", - "start": 24534, - "end": 24538, + "start": 24664, + "end": 24668, "loc": { "start": { "line": 684, @@ -101494,8 +101851,8 @@ }, "property": { "type": "Identifier", - "start": 24539, - "end": 24562, + "start": 24669, + "end": 24692, "loc": { "start": { "line": 684, @@ -101514,8 +101871,8 @@ "operator": "===", "right": { "type": "MemberExpression", - "start": 24567, - "end": 24584, + "start": 24697, + "end": 24714, "loc": { "start": { "line": 684, @@ -101528,8 +101885,8 @@ }, "object": { "type": "ThisExpression", - "start": 24567, - "end": 24571, + "start": 24697, + "end": 24701, "loc": { "start": { "line": 684, @@ -101543,8 +101900,8 @@ }, "property": { "type": "Identifier", - "start": 24572, - "end": 24584, + "start": 24702, + "end": 24714, "loc": { "start": { "line": 684, @@ -101564,8 +101921,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 24588, - "end": 24623, + "start": 24718, + "end": 24753, "loc": { "start": { "line": 684, @@ -101578,8 +101935,8 @@ }, "left": { "type": "MemberExpression", - "start": 24588, - "end": 24617, + "start": 24718, + "end": 24747, "loc": { "start": { "line": 684, @@ -101592,8 +101949,8 @@ }, "object": { "type": "ThisExpression", - "start": 24588, - "end": 24592, + "start": 24718, + "end": 24722, "loc": { "start": { "line": 684, @@ -101607,8 +101964,8 @@ }, "property": { "type": "Identifier", - "start": 24593, - "end": 24617, + "start": 24723, + "end": 24747, "loc": { "start": { "line": 684, @@ -101627,8 +101984,8 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 24622, - "end": 24623, + "start": 24752, + "end": 24753, "loc": { "start": { "line": 684, @@ -101649,8 +102006,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 24625, - "end": 24656, + "start": 24755, + "end": 24786, "loc": { "start": { "line": 684, @@ -101664,8 +102021,8 @@ "body": [ { "type": "ReturnStatement", - "start": 24639, - "end": 24646, + "start": 24769, + "end": 24776, "loc": { "start": { "line": 685, @@ -101685,8 +102042,8 @@ }, { "type": "IfStatement", - "start": 24665, - "end": 24840, + "start": 24795, + "end": 24970, "loc": { "start": { "line": 687, @@ -101699,8 +102056,8 @@ }, "test": { "type": "MemberExpression", - "start": 24669, - "end": 24718, + "start": 24799, + "end": 24848, "loc": { "start": { "line": 687, @@ -101713,8 +102070,8 @@ }, "object": { "type": "MemberExpression", - "start": 24669, - "end": 24700, + "start": 24799, + "end": 24830, "loc": { "start": { "line": 687, @@ -101727,8 +102084,8 @@ }, "object": { "type": "ThisExpression", - "start": 24669, - "end": 24673, + "start": 24799, + "end": 24803, "loc": { "start": { "line": 687, @@ -101742,8 +102099,8 @@ }, "property": { "type": "Identifier", - "start": 24674, - "end": 24700, + "start": 24804, + "end": 24830, "loc": { "start": { "line": 687, @@ -101761,8 +102118,8 @@ }, "property": { "type": "Identifier", - "start": 24701, - "end": 24718, + "start": 24831, + "end": 24848, "loc": { "start": { "line": 687, @@ -101780,8 +102137,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 24720, - "end": 24840, + "start": 24850, + "end": 24970, "loc": { "start": { "line": 687, @@ -101795,8 +102152,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 24734, - "end": 24830, + "start": 24864, + "end": 24960, "loc": { "start": { "line": 688, @@ -101809,8 +102166,8 @@ }, "expression": { "type": "CallExpression", - "start": 24734, - "end": 24829, + "start": 24864, + "end": 24959, "loc": { "start": { "line": 688, @@ -101823,8 +102180,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24734, - "end": 24793, + "start": 24864, + "end": 24923, "loc": { "start": { "line": 688, @@ -101837,8 +102194,8 @@ }, "object": { "type": "MemberExpression", - "start": 24734, - "end": 24783, + "start": 24864, + "end": 24913, "loc": { "start": { "line": 688, @@ -101851,8 +102208,8 @@ }, "object": { "type": "MemberExpression", - "start": 24734, - "end": 24765, + "start": 24864, + "end": 24895, "loc": { "start": { "line": 688, @@ -101865,8 +102222,8 @@ }, "object": { "type": "ThisExpression", - "start": 24734, - "end": 24738, + "start": 24864, + "end": 24868, "loc": { "start": { "line": 688, @@ -101880,8 +102237,8 @@ }, "property": { "type": "Identifier", - "start": 24739, - "end": 24765, + "start": 24869, + "end": 24895, "loc": { "start": { "line": 688, @@ -101899,8 +102256,8 @@ }, "property": { "type": "Identifier", - "start": 24766, - "end": 24783, + "start": 24896, + "end": 24913, "loc": { "start": { "line": 688, @@ -101918,8 +102275,8 @@ }, "property": { "type": "Identifier", - "start": 24784, - "end": 24793, + "start": 24914, + "end": 24923, "loc": { "start": { "line": 688, @@ -101938,8 +102295,8 @@ "arguments": [ { "type": "Identifier", - "start": 24794, - "end": 24802, + "start": 24924, + "end": 24932, "loc": { "start": { "line": 688, @@ -101955,8 +102312,8 @@ }, { "type": "ThisExpression", - "start": 24804, - "end": 24808, + "start": 24934, + "end": 24938, "loc": { "start": { "line": 688, @@ -101970,8 +102327,8 @@ }, { "type": "MemberExpression", - "start": 24810, - "end": 24828, + "start": 24940, + "end": 24958, "loc": { "start": { "line": 688, @@ -101984,8 +102341,8 @@ }, "object": { "type": "Identifier", - "start": 24810, - "end": 24823, + "start": 24940, + "end": 24953, "loc": { "start": { "line": 688, @@ -102001,8 +102358,8 @@ }, "property": { "type": "Identifier", - "start": 24824, - "end": 24828, + "start": 24954, + "end": 24958, "loc": { "start": { "line": 688, @@ -102032,8 +102389,8 @@ }, { "type": "ClassMethod", - "start": 24852, - "end": 24885, + "start": 24982, + "end": 25028, "loc": { "start": { "line": 692, @@ -102048,8 +102405,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 24852, - "end": 24867, + "start": 24982, + "end": 24997, "loc": { "start": { "line": 692, @@ -102071,8 +102428,8 @@ "params": [ { "type": "Identifier", - "start": 24868, - "end": 24876, + "start": 24998, + "end": 25009, "loc": { "start": { "line": 692, @@ -102080,7 +102437,24 @@ }, "end": { "line": 692, - "column": 28 + "column": 31 + }, + "identifierName": "renderFlags" + }, + "name": "renderFlags" + }, + { + "type": "Identifier", + "start": 25011, + "end": 25019, + "loc": { + "start": { + "line": 692, + "column": 33 + }, + "end": { + "line": 692, + "column": 41 }, "identifierName": "frameCtx" }, @@ -102089,12 +102463,12 @@ ], "body": { "type": "BlockStatement", - "start": 24878, - "end": 24885, + "start": 25021, + "end": 25028, "loc": { "start": { "line": 692, - "column": 30 + "column": 43 }, "end": { "line": 693, @@ -102107,8 +102481,8 @@ }, { "type": "ClassMethod", - "start": 24891, - "end": 26114, + "start": 25034, + "end": 26257, "loc": { "start": { "line": 695, @@ -102123,8 +102497,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 24891, - "end": 24898, + "start": 25034, + "end": 25041, "loc": { "start": { "line": 695, @@ -102146,8 +102520,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 24901, - "end": 26114, + "start": 25044, + "end": 26257, "loc": { "start": { "line": 695, @@ -102161,8 +102535,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 24911, - "end": 24937, + "start": 25054, + "end": 25080, "loc": { "start": { "line": 696, @@ -102176,8 +102550,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 24917, - "end": 24936, + "start": 25060, + "end": 25079, "loc": { "start": { "line": 696, @@ -102190,8 +102564,8 @@ }, "id": { "type": "Identifier", - "start": 24917, - "end": 24922, + "start": 25060, + "end": 25065, "loc": { "start": { "line": 696, @@ -102207,8 +102581,8 @@ }, "init": { "type": "MemberExpression", - "start": 24925, - "end": 24936, + "start": 25068, + "end": 25079, "loc": { "start": { "line": 696, @@ -102221,8 +102595,8 @@ }, "object": { "type": "ThisExpression", - "start": 24925, - "end": 24929, + "start": 25068, + "end": 25072, "loc": { "start": { "line": 696, @@ -102236,8 +102610,8 @@ }, "property": { "type": "Identifier", - "start": 24930, - "end": 24936, + "start": 25073, + "end": 25079, "loc": { "start": { "line": 696, @@ -102259,8 +102633,8 @@ }, { "type": "IfStatement", - "start": 24946, - "end": 25062, + "start": 25089, + "end": 25205, "loc": { "start": { "line": 697, @@ -102273,8 +102647,8 @@ }, "test": { "type": "MemberExpression", - "start": 24950, - "end": 24968, + "start": 25093, + "end": 25111, "loc": { "start": { "line": 697, @@ -102287,8 +102661,8 @@ }, "object": { "type": "Identifier", - "start": 24950, - "end": 24955, + "start": 25093, + "end": 25098, "loc": { "start": { "line": 697, @@ -102304,8 +102678,8 @@ }, "property": { "type": "Identifier", - "start": 24956, - "end": 24968, + "start": 25099, + "end": 25111, "loc": { "start": { "line": 697, @@ -102323,8 +102697,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 24970, - "end": 25062, + "start": 25113, + "end": 25205, "loc": { "start": { "line": 697, @@ -102338,8 +102712,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 24984, - "end": 25013, + "start": 25127, + "end": 25156, "loc": { "start": { "line": 698, @@ -102352,8 +102726,8 @@ }, "expression": { "type": "CallExpression", - "start": 24984, - "end": 25012, + "start": 25127, + "end": 25155, "loc": { "start": { "line": 698, @@ -102366,8 +102740,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24984, - "end": 25010, + "start": 25127, + "end": 25153, "loc": { "start": { "line": 698, @@ -102380,8 +102754,8 @@ }, "object": { "type": "MemberExpression", - "start": 24984, - "end": 25002, + "start": 25127, + "end": 25145, "loc": { "start": { "line": 698, @@ -102394,8 +102768,8 @@ }, "object": { "type": "Identifier", - "start": 24984, - "end": 24989, + "start": 25127, + "end": 25132, "loc": { "start": { "line": 698, @@ -102411,8 +102785,8 @@ }, "property": { "type": "Identifier", - "start": 24990, - "end": 25002, + "start": 25133, + "end": 25145, "loc": { "start": { "line": 698, @@ -102430,8 +102804,8 @@ }, "property": { "type": "Identifier", - "start": 25003, - "end": 25010, + "start": 25146, + "end": 25153, "loc": { "start": { "line": 698, @@ -102452,8 +102826,8 @@ }, { "type": "ExpressionStatement", - "start": 25026, - "end": 25052, + "start": 25169, + "end": 25195, "loc": { "start": { "line": 699, @@ -102466,8 +102840,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25026, - "end": 25051, + "start": 25169, + "end": 25194, "loc": { "start": { "line": 699, @@ -102481,8 +102855,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25026, - "end": 25044, + "start": 25169, + "end": 25187, "loc": { "start": { "line": 699, @@ -102495,8 +102869,8 @@ }, "object": { "type": "Identifier", - "start": 25026, - "end": 25031, + "start": 25169, + "end": 25174, "loc": { "start": { "line": 699, @@ -102512,8 +102886,8 @@ }, "property": { "type": "Identifier", - "start": 25032, - "end": 25044, + "start": 25175, + "end": 25187, "loc": { "start": { "line": 699, @@ -102531,8 +102905,8 @@ }, "right": { "type": "NullLiteral", - "start": 25047, - "end": 25051, + "start": 25190, + "end": 25194, "loc": { "start": { "line": 699, @@ -102553,8 +102927,8 @@ }, { "type": "IfStatement", - "start": 25071, - "end": 25178, + "start": 25214, + "end": 25321, "loc": { "start": { "line": 701, @@ -102567,8 +102941,8 @@ }, "test": { "type": "MemberExpression", - "start": 25075, - "end": 25090, + "start": 25218, + "end": 25233, "loc": { "start": { "line": 701, @@ -102581,8 +102955,8 @@ }, "object": { "type": "Identifier", - "start": 25075, - "end": 25080, + "start": 25218, + "end": 25223, "loc": { "start": { "line": 701, @@ -102598,8 +102972,8 @@ }, "property": { "type": "Identifier", - "start": 25081, - "end": 25090, + "start": 25224, + "end": 25233, "loc": { "start": { "line": 701, @@ -102617,8 +102991,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25092, - "end": 25178, + "start": 25235, + "end": 25321, "loc": { "start": { "line": 701, @@ -102632,8 +103006,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25106, - "end": 25132, + "start": 25249, + "end": 25275, "loc": { "start": { "line": 702, @@ -102646,8 +103020,8 @@ }, "expression": { "type": "CallExpression", - "start": 25106, - "end": 25131, + "start": 25249, + "end": 25274, "loc": { "start": { "line": 702, @@ -102660,8 +103034,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25106, - "end": 25129, + "start": 25249, + "end": 25272, "loc": { "start": { "line": 702, @@ -102674,8 +103048,8 @@ }, "object": { "type": "MemberExpression", - "start": 25106, - "end": 25121, + "start": 25249, + "end": 25264, "loc": { "start": { "line": 702, @@ -102688,8 +103062,8 @@ }, "object": { "type": "Identifier", - "start": 25106, - "end": 25111, + "start": 25249, + "end": 25254, "loc": { "start": { "line": 702, @@ -102705,8 +103079,8 @@ }, "property": { "type": "Identifier", - "start": 25112, - "end": 25121, + "start": 25255, + "end": 25264, "loc": { "start": { "line": 702, @@ -102724,8 +103098,8 @@ }, "property": { "type": "Identifier", - "start": 25122, - "end": 25129, + "start": 25265, + "end": 25272, "loc": { "start": { "line": 702, @@ -102746,8 +103120,8 @@ }, { "type": "ExpressionStatement", - "start": 25145, - "end": 25168, + "start": 25288, + "end": 25311, "loc": { "start": { "line": 703, @@ -102760,8 +103134,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25145, - "end": 25167, + "start": 25288, + "end": 25310, "loc": { "start": { "line": 703, @@ -102775,8 +103149,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25145, - "end": 25160, + "start": 25288, + "end": 25303, "loc": { "start": { "line": 703, @@ -102789,8 +103163,8 @@ }, "object": { "type": "Identifier", - "start": 25145, - "end": 25150, + "start": 25288, + "end": 25293, "loc": { "start": { "line": 703, @@ -102806,8 +103180,8 @@ }, "property": { "type": "Identifier", - "start": 25151, - "end": 25160, + "start": 25294, + "end": 25303, "loc": { "start": { "line": 703, @@ -102825,8 +103199,8 @@ }, "right": { "type": "NullLiteral", - "start": 25163, - "end": 25167, + "start": 25306, + "end": 25310, "loc": { "start": { "line": 703, @@ -102847,8 +103221,8 @@ }, { "type": "IfStatement", - "start": 25187, - "end": 25291, + "start": 25330, + "end": 25434, "loc": { "start": { "line": 705, @@ -102861,8 +103235,8 @@ }, "test": { "type": "MemberExpression", - "start": 25191, - "end": 25205, + "start": 25334, + "end": 25348, "loc": { "start": { "line": 705, @@ -102875,8 +103249,8 @@ }, "object": { "type": "Identifier", - "start": 25191, - "end": 25196, + "start": 25334, + "end": 25339, "loc": { "start": { "line": 705, @@ -102892,8 +103266,8 @@ }, "property": { "type": "Identifier", - "start": 25197, - "end": 25205, + "start": 25340, + "end": 25348, "loc": { "start": { "line": 705, @@ -102911,8 +103285,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25207, - "end": 25291, + "start": 25350, + "end": 25434, "loc": { "start": { "line": 705, @@ -102926,8 +103300,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25221, - "end": 25246, + "start": 25364, + "end": 25389, "loc": { "start": { "line": 706, @@ -102940,8 +103314,8 @@ }, "expression": { "type": "CallExpression", - "start": 25221, - "end": 25245, + "start": 25364, + "end": 25388, "loc": { "start": { "line": 706, @@ -102954,8 +103328,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25221, - "end": 25243, + "start": 25364, + "end": 25386, "loc": { "start": { "line": 706, @@ -102968,8 +103342,8 @@ }, "object": { "type": "MemberExpression", - "start": 25221, - "end": 25235, + "start": 25364, + "end": 25378, "loc": { "start": { "line": 706, @@ -102982,8 +103356,8 @@ }, "object": { "type": "Identifier", - "start": 25221, - "end": 25226, + "start": 25364, + "end": 25369, "loc": { "start": { "line": 706, @@ -102999,8 +103373,8 @@ }, "property": { "type": "Identifier", - "start": 25227, - "end": 25235, + "start": 25370, + "end": 25378, "loc": { "start": { "line": 706, @@ -103018,8 +103392,8 @@ }, "property": { "type": "Identifier", - "start": 25236, - "end": 25243, + "start": 25379, + "end": 25386, "loc": { "start": { "line": 706, @@ -103040,8 +103414,8 @@ }, { "type": "ExpressionStatement", - "start": 25259, - "end": 25281, + "start": 25402, + "end": 25424, "loc": { "start": { "line": 707, @@ -103054,8 +103428,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25259, - "end": 25280, + "start": 25402, + "end": 25423, "loc": { "start": { "line": 707, @@ -103069,8 +103443,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25259, - "end": 25273, + "start": 25402, + "end": 25416, "loc": { "start": { "line": 707, @@ -103083,8 +103457,8 @@ }, "object": { "type": "Identifier", - "start": 25259, - "end": 25264, + "start": 25402, + "end": 25407, "loc": { "start": { "line": 707, @@ -103100,8 +103474,8 @@ }, "property": { "type": "Identifier", - "start": 25265, - "end": 25273, + "start": 25408, + "end": 25416, "loc": { "start": { "line": 707, @@ -103119,8 +103493,8 @@ }, "right": { "type": "NullLiteral", - "start": 25276, - "end": 25280, + "start": 25419, + "end": 25423, "loc": { "start": { "line": 707, @@ -103141,8 +103515,8 @@ }, { "type": "IfStatement", - "start": 25300, - "end": 25407, + "start": 25443, + "end": 25550, "loc": { "start": { "line": 709, @@ -103155,8 +103529,8 @@ }, "test": { "type": "MemberExpression", - "start": 25304, - "end": 25319, + "start": 25447, + "end": 25462, "loc": { "start": { "line": 709, @@ -103169,8 +103543,8 @@ }, "object": { "type": "Identifier", - "start": 25304, - "end": 25309, + "start": 25447, + "end": 25452, "loc": { "start": { "line": 709, @@ -103186,8 +103560,8 @@ }, "property": { "type": "Identifier", - "start": 25310, - "end": 25319, + "start": 25453, + "end": 25462, "loc": { "start": { "line": 709, @@ -103205,8 +103579,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25321, - "end": 25407, + "start": 25464, + "end": 25550, "loc": { "start": { "line": 709, @@ -103220,8 +103594,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25335, - "end": 25361, + "start": 25478, + "end": 25504, "loc": { "start": { "line": 710, @@ -103234,8 +103608,8 @@ }, "expression": { "type": "CallExpression", - "start": 25335, - "end": 25360, + "start": 25478, + "end": 25503, "loc": { "start": { "line": 710, @@ -103248,8 +103622,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25335, - "end": 25358, + "start": 25478, + "end": 25501, "loc": { "start": { "line": 710, @@ -103262,8 +103636,8 @@ }, "object": { "type": "MemberExpression", - "start": 25335, - "end": 25350, + "start": 25478, + "end": 25493, "loc": { "start": { "line": 710, @@ -103276,8 +103650,8 @@ }, "object": { "type": "Identifier", - "start": 25335, - "end": 25340, + "start": 25478, + "end": 25483, "loc": { "start": { "line": 710, @@ -103293,8 +103667,8 @@ }, "property": { "type": "Identifier", - "start": 25341, - "end": 25350, + "start": 25484, + "end": 25493, "loc": { "start": { "line": 710, @@ -103312,8 +103686,8 @@ }, "property": { "type": "Identifier", - "start": 25351, - "end": 25358, + "start": 25494, + "end": 25501, "loc": { "start": { "line": 710, @@ -103334,8 +103708,8 @@ }, { "type": "ExpressionStatement", - "start": 25374, - "end": 25397, + "start": 25517, + "end": 25540, "loc": { "start": { "line": 711, @@ -103348,8 +103722,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25374, - "end": 25396, + "start": 25517, + "end": 25539, "loc": { "start": { "line": 711, @@ -103363,8 +103737,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25374, - "end": 25389, + "start": 25517, + "end": 25532, "loc": { "start": { "line": 711, @@ -103377,8 +103751,8 @@ }, "object": { "type": "Identifier", - "start": 25374, - "end": 25379, + "start": 25517, + "end": 25522, "loc": { "start": { "line": 711, @@ -103394,8 +103768,8 @@ }, "property": { "type": "Identifier", - "start": 25380, - "end": 25389, + "start": 25523, + "end": 25532, "loc": { "start": { "line": 711, @@ -103413,8 +103787,8 @@ }, "right": { "type": "NullLiteral", - "start": 25392, - "end": 25396, + "start": 25535, + "end": 25539, "loc": { "start": { "line": 711, @@ -103435,8 +103809,8 @@ }, { "type": "IfStatement", - "start": 25416, - "end": 25526, + "start": 25559, + "end": 25669, "loc": { "start": { "line": 713, @@ -103449,8 +103823,8 @@ }, "test": { "type": "MemberExpression", - "start": 25420, - "end": 25436, + "start": 25563, + "end": 25579, "loc": { "start": { "line": 713, @@ -103463,8 +103837,8 @@ }, "object": { "type": "Identifier", - "start": 25420, - "end": 25425, + "start": 25563, + "end": 25568, "loc": { "start": { "line": 713, @@ -103480,8 +103854,8 @@ }, "property": { "type": "Identifier", - "start": 25426, - "end": 25436, + "start": 25569, + "end": 25579, "loc": { "start": { "line": 713, @@ -103499,8 +103873,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25438, - "end": 25526, + "start": 25581, + "end": 25669, "loc": { "start": { "line": 713, @@ -103514,8 +103888,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25452, - "end": 25479, + "start": 25595, + "end": 25622, "loc": { "start": { "line": 714, @@ -103528,8 +103902,8 @@ }, "expression": { "type": "CallExpression", - "start": 25452, - "end": 25478, + "start": 25595, + "end": 25621, "loc": { "start": { "line": 714, @@ -103542,8 +103916,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25452, - "end": 25476, + "start": 25595, + "end": 25619, "loc": { "start": { "line": 714, @@ -103556,8 +103930,8 @@ }, "object": { "type": "MemberExpression", - "start": 25452, - "end": 25468, + "start": 25595, + "end": 25611, "loc": { "start": { "line": 714, @@ -103570,8 +103944,8 @@ }, "object": { "type": "Identifier", - "start": 25452, - "end": 25457, + "start": 25595, + "end": 25600, "loc": { "start": { "line": 714, @@ -103587,8 +103961,8 @@ }, "property": { "type": "Identifier", - "start": 25458, - "end": 25468, + "start": 25601, + "end": 25611, "loc": { "start": { "line": 714, @@ -103606,8 +103980,8 @@ }, "property": { "type": "Identifier", - "start": 25469, - "end": 25476, + "start": 25612, + "end": 25619, "loc": { "start": { "line": 714, @@ -103628,8 +104002,8 @@ }, { "type": "ExpressionStatement", - "start": 25492, - "end": 25516, + "start": 25635, + "end": 25659, "loc": { "start": { "line": 715, @@ -103642,8 +104016,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25492, - "end": 25515, + "start": 25635, + "end": 25658, "loc": { "start": { "line": 715, @@ -103657,8 +104031,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25492, - "end": 25508, + "start": 25635, + "end": 25651, "loc": { "start": { "line": 715, @@ -103671,8 +104045,8 @@ }, "object": { "type": "Identifier", - "start": 25492, - "end": 25497, + "start": 25635, + "end": 25640, "loc": { "start": { "line": 715, @@ -103688,8 +104062,8 @@ }, "property": { "type": "Identifier", - "start": 25498, - "end": 25508, + "start": 25641, + "end": 25651, "loc": { "start": { "line": 715, @@ -103707,8 +104081,8 @@ }, "right": { "type": "NullLiteral", - "start": 25511, - "end": 25515, + "start": 25654, + "end": 25658, "loc": { "start": { "line": 715, @@ -103729,8 +104103,8 @@ }, { "type": "IfStatement", - "start": 25535, - "end": 25669, + "start": 25678, + "end": 25812, "loc": { "start": { "line": 717, @@ -103743,8 +104117,8 @@ }, "test": { "type": "MemberExpression", - "start": 25539, - "end": 25563, + "start": 25682, + "end": 25706, "loc": { "start": { "line": 717, @@ -103757,8 +104131,8 @@ }, "object": { "type": "Identifier", - "start": 25539, - "end": 25544, + "start": 25682, + "end": 25687, "loc": { "start": { "line": 717, @@ -103774,8 +104148,8 @@ }, "property": { "type": "Identifier", - "start": 25545, - "end": 25563, + "start": 25688, + "end": 25706, "loc": { "start": { "line": 717, @@ -103793,8 +104167,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25565, - "end": 25669, + "start": 25708, + "end": 25812, "loc": { "start": { "line": 717, @@ -103808,8 +104182,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25579, - "end": 25614, + "start": 25722, + "end": 25757, "loc": { "start": { "line": 718, @@ -103822,8 +104196,8 @@ }, "expression": { "type": "CallExpression", - "start": 25579, - "end": 25613, + "start": 25722, + "end": 25756, "loc": { "start": { "line": 718, @@ -103836,8 +104210,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25579, - "end": 25611, + "start": 25722, + "end": 25754, "loc": { "start": { "line": 718, @@ -103850,8 +104224,8 @@ }, "object": { "type": "MemberExpression", - "start": 25579, - "end": 25603, + "start": 25722, + "end": 25746, "loc": { "start": { "line": 718, @@ -103864,8 +104238,8 @@ }, "object": { "type": "Identifier", - "start": 25579, - "end": 25584, + "start": 25722, + "end": 25727, "loc": { "start": { "line": 718, @@ -103881,8 +104255,8 @@ }, "property": { "type": "Identifier", - "start": 25585, - "end": 25603, + "start": 25728, + "end": 25746, "loc": { "start": { "line": 718, @@ -103900,8 +104274,8 @@ }, "property": { "type": "Identifier", - "start": 25604, - "end": 25611, + "start": 25747, + "end": 25754, "loc": { "start": { "line": 718, @@ -103922,8 +104296,8 @@ }, { "type": "ExpressionStatement", - "start": 25627, - "end": 25659, + "start": 25770, + "end": 25802, "loc": { "start": { "line": 719, @@ -103936,8 +104310,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25627, - "end": 25658, + "start": 25770, + "end": 25801, "loc": { "start": { "line": 719, @@ -103951,8 +104325,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25627, - "end": 25651, + "start": 25770, + "end": 25794, "loc": { "start": { "line": 719, @@ -103965,8 +104339,8 @@ }, "object": { "type": "Identifier", - "start": 25627, - "end": 25632, + "start": 25770, + "end": 25775, "loc": { "start": { "line": 719, @@ -103982,8 +104356,8 @@ }, "property": { "type": "Identifier", - "start": 25633, - "end": 25651, + "start": 25776, + "end": 25794, "loc": { "start": { "line": 719, @@ -104001,8 +104375,8 @@ }, "right": { "type": "NullLiteral", - "start": 25654, - "end": 25658, + "start": 25797, + "end": 25801, "loc": { "start": { "line": 719, @@ -104023,8 +104397,8 @@ }, { "type": "IfStatement", - "start": 25678, - "end": 25812, + "start": 25821, + "end": 25955, "loc": { "start": { "line": 721, @@ -104037,8 +104411,8 @@ }, "test": { "type": "MemberExpression", - "start": 25682, - "end": 25706, + "start": 25825, + "end": 25849, "loc": { "start": { "line": 721, @@ -104051,8 +104425,8 @@ }, "object": { "type": "Identifier", - "start": 25682, - "end": 25687, + "start": 25825, + "end": 25830, "loc": { "start": { "line": 721, @@ -104068,8 +104442,8 @@ }, "property": { "type": "Identifier", - "start": 25688, - "end": 25706, + "start": 25831, + "end": 25849, "loc": { "start": { "line": 721, @@ -104087,8 +104461,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25708, - "end": 25812, + "start": 25851, + "end": 25955, "loc": { "start": { "line": 721, @@ -104102,8 +104476,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25722, - "end": 25757, + "start": 25865, + "end": 25900, "loc": { "start": { "line": 722, @@ -104116,8 +104490,8 @@ }, "expression": { "type": "CallExpression", - "start": 25722, - "end": 25756, + "start": 25865, + "end": 25899, "loc": { "start": { "line": 722, @@ -104130,8 +104504,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25722, - "end": 25754, + "start": 25865, + "end": 25897, "loc": { "start": { "line": 722, @@ -104144,8 +104518,8 @@ }, "object": { "type": "MemberExpression", - "start": 25722, - "end": 25746, + "start": 25865, + "end": 25889, "loc": { "start": { "line": 722, @@ -104158,8 +104532,8 @@ }, "object": { "type": "Identifier", - "start": 25722, - "end": 25727, + "start": 25865, + "end": 25870, "loc": { "start": { "line": 722, @@ -104175,8 +104549,8 @@ }, "property": { "type": "Identifier", - "start": 25728, - "end": 25746, + "start": 25871, + "end": 25889, "loc": { "start": { "line": 722, @@ -104194,8 +104568,8 @@ }, "property": { "type": "Identifier", - "start": 25747, - "end": 25754, + "start": 25890, + "end": 25897, "loc": { "start": { "line": 722, @@ -104216,8 +104590,8 @@ }, { "type": "ExpressionStatement", - "start": 25770, - "end": 25802, + "start": 25913, + "end": 25945, "loc": { "start": { "line": 723, @@ -104230,8 +104604,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25770, - "end": 25801, + "start": 25913, + "end": 25944, "loc": { "start": { "line": 723, @@ -104245,8 +104619,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25770, - "end": 25794, + "start": 25913, + "end": 25937, "loc": { "start": { "line": 723, @@ -104259,8 +104633,8 @@ }, "object": { "type": "Identifier", - "start": 25770, - "end": 25775, + "start": 25913, + "end": 25918, "loc": { "start": { "line": 723, @@ -104276,8 +104650,8 @@ }, "property": { "type": "Identifier", - "start": 25776, - "end": 25794, + "start": 25919, + "end": 25937, "loc": { "start": { "line": 723, @@ -104295,8 +104669,8 @@ }, "right": { "type": "NullLiteral", - "start": 25797, - "end": 25801, + "start": 25940, + "end": 25944, "loc": { "start": { "line": 723, @@ -104317,8 +104691,8 @@ }, { "type": "IfStatement", - "start": 25821, - "end": 25955, + "start": 25964, + "end": 26098, "loc": { "start": { "line": 725, @@ -104331,8 +104705,8 @@ }, "test": { "type": "MemberExpression", - "start": 25825, - "end": 25849, + "start": 25968, + "end": 25992, "loc": { "start": { "line": 725, @@ -104345,8 +104719,8 @@ }, "object": { "type": "Identifier", - "start": 25825, - "end": 25830, + "start": 25968, + "end": 25973, "loc": { "start": { "line": 725, @@ -104362,8 +104736,8 @@ }, "property": { "type": "Identifier", - "start": 25831, - "end": 25849, + "start": 25974, + "end": 25992, "loc": { "start": { "line": 725, @@ -104381,8 +104755,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25851, - "end": 25955, + "start": 25994, + "end": 26098, "loc": { "start": { "line": 725, @@ -104396,8 +104770,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25865, - "end": 25900, + "start": 26008, + "end": 26043, "loc": { "start": { "line": 726, @@ -104410,8 +104784,8 @@ }, "expression": { "type": "CallExpression", - "start": 25865, - "end": 25899, + "start": 26008, + "end": 26042, "loc": { "start": { "line": 726, @@ -104424,8 +104798,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25865, - "end": 25897, + "start": 26008, + "end": 26040, "loc": { "start": { "line": 726, @@ -104438,8 +104812,8 @@ }, "object": { "type": "MemberExpression", - "start": 25865, - "end": 25889, + "start": 26008, + "end": 26032, "loc": { "start": { "line": 726, @@ -104452,8 +104826,8 @@ }, "object": { "type": "Identifier", - "start": 25865, - "end": 25870, + "start": 26008, + "end": 26013, "loc": { "start": { "line": 726, @@ -104469,8 +104843,8 @@ }, "property": { "type": "Identifier", - "start": 25871, - "end": 25889, + "start": 26014, + "end": 26032, "loc": { "start": { "line": 726, @@ -104488,8 +104862,8 @@ }, "property": { "type": "Identifier", - "start": 25890, - "end": 25897, + "start": 26033, + "end": 26040, "loc": { "start": { "line": 726, @@ -104510,8 +104884,8 @@ }, { "type": "ExpressionStatement", - "start": 25913, - "end": 25945, + "start": 26056, + "end": 26088, "loc": { "start": { "line": 727, @@ -104524,8 +104898,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 25913, - "end": 25944, + "start": 26056, + "end": 26087, "loc": { "start": { "line": 727, @@ -104539,8 +104913,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 25913, - "end": 25937, + "start": 26056, + "end": 26080, "loc": { "start": { "line": 727, @@ -104553,8 +104927,8 @@ }, "object": { "type": "Identifier", - "start": 25913, - "end": 25918, + "start": 26056, + "end": 26061, "loc": { "start": { "line": 727, @@ -104570,8 +104944,8 @@ }, "property": { "type": "Identifier", - "start": 25919, - "end": 25937, + "start": 26062, + "end": 26080, "loc": { "start": { "line": 727, @@ -104589,8 +104963,8 @@ }, "right": { "type": "NullLiteral", - "start": 25940, - "end": 25944, + "start": 26083, + "end": 26087, "loc": { "start": { "line": 727, @@ -104611,8 +104985,8 @@ }, { "type": "IfStatement", - "start": 25964, - "end": 26083, + "start": 26107, + "end": 26226, "loc": { "start": { "line": 729, @@ -104625,8 +104999,8 @@ }, "test": { "type": "MemberExpression", - "start": 25968, - "end": 25987, + "start": 26111, + "end": 26130, "loc": { "start": { "line": 729, @@ -104639,8 +105013,8 @@ }, "object": { "type": "Identifier", - "start": 25968, - "end": 25973, + "start": 26111, + "end": 26116, "loc": { "start": { "line": 729, @@ -104656,8 +105030,8 @@ }, "property": { "type": "Identifier", - "start": 25974, - "end": 25987, + "start": 26117, + "end": 26130, "loc": { "start": { "line": 729, @@ -104675,8 +105049,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25989, - "end": 26083, + "start": 26132, + "end": 26226, "loc": { "start": { "line": 729, @@ -104690,8 +105064,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 26003, - "end": 26033, + "start": 26146, + "end": 26176, "loc": { "start": { "line": 730, @@ -104704,8 +105078,8 @@ }, "expression": { "type": "CallExpression", - "start": 26003, - "end": 26032, + "start": 26146, + "end": 26175, "loc": { "start": { "line": 730, @@ -104718,8 +105092,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26003, - "end": 26030, + "start": 26146, + "end": 26173, "loc": { "start": { "line": 730, @@ -104732,8 +105106,8 @@ }, "object": { "type": "MemberExpression", - "start": 26003, - "end": 26022, + "start": 26146, + "end": 26165, "loc": { "start": { "line": 730, @@ -104746,8 +105120,8 @@ }, "object": { "type": "Identifier", - "start": 26003, - "end": 26008, + "start": 26146, + "end": 26151, "loc": { "start": { "line": 730, @@ -104763,8 +105137,8 @@ }, "property": { "type": "Identifier", - "start": 26009, - "end": 26022, + "start": 26152, + "end": 26165, "loc": { "start": { "line": 730, @@ -104782,8 +105156,8 @@ }, "property": { "type": "Identifier", - "start": 26023, - "end": 26030, + "start": 26166, + "end": 26173, "loc": { "start": { "line": 730, @@ -104804,8 +105178,8 @@ }, { "type": "ExpressionStatement", - "start": 26046, - "end": 26073, + "start": 26189, + "end": 26216, "loc": { "start": { "line": 731, @@ -104818,8 +105192,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 26046, - "end": 26072, + "start": 26189, + "end": 26215, "loc": { "start": { "line": 731, @@ -104833,8 +105207,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 26046, - "end": 26065, + "start": 26189, + "end": 26208, "loc": { "start": { "line": 731, @@ -104847,8 +105221,8 @@ }, "object": { "type": "Identifier", - "start": 26046, - "end": 26051, + "start": 26189, + "end": 26194, "loc": { "start": { "line": 731, @@ -104864,8 +105238,8 @@ }, "property": { "type": "Identifier", - "start": 26052, - "end": 26065, + "start": 26195, + "end": 26208, "loc": { "start": { "line": 731, @@ -104883,8 +105257,8 @@ }, "right": { "type": "NullLiteral", - "start": 26068, - "end": 26072, + "start": 26211, + "end": 26215, "loc": { "start": { "line": 731, @@ -104905,8 +105279,8 @@ }, { "type": "ExpressionStatement", - "start": 26092, - "end": 26108, + "start": 26235, + "end": 26251, "loc": { "start": { "line": 733, @@ -104919,8 +105293,8 @@ }, "expression": { "type": "CallExpression", - "start": 26092, - "end": 26107, + "start": 26235, + "end": 26250, "loc": { "start": { "line": 733, @@ -104933,8 +105307,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26092, - "end": 26105, + "start": 26235, + "end": 26248, "loc": { "start": { "line": 733, @@ -104947,8 +105321,8 @@ }, "object": { "type": "Identifier", - "start": 26092, - "end": 26097, + "start": 26235, + "end": 26240, "loc": { "start": { "line": 733, @@ -104964,8 +105338,8 @@ }, "property": { "type": "Identifier", - "start": 26098, - "end": 26105, + "start": 26241, + "end": 26248, "loc": { "start": { "line": 733, @@ -105966,8 +106340,8 @@ { "type": "CommentLine", "value": "-- EDGES RENDERING -----------------------------------------------------------------------------------------------", - "start": 23041, - "end": 23157, + "start": 23054, + "end": 23170, "loc": { "start": { "line": 638, @@ -105982,8 +106356,8 @@ { "type": "CommentLine", "value": " ---------------------- OCCLUSION CULL RENDERING -----------------------------------", - "start": 23380, - "end": 23466, + "start": 23458, + "end": 23544, "loc": { "start": { "line": 655, @@ -105998,8 +106372,8 @@ { "type": "CommentLine", "value": " Only opaque, filled objects can be occluders", - "start": 23710, - "end": 23757, + "start": 23801, + "end": 23848, "loc": { "start": { "line": 662, @@ -106014,8 +106388,8 @@ { "type": "CommentLine", "value": " ---------------------- SHADOW BUFFER RENDERING -----------------------------------", - "start": 23896, - "end": 23981, + "start": 23987, + "end": 24072, "loc": { "start": { "line": 667, @@ -106030,8 +106404,8 @@ { "type": "CommentLine", "value": "---- PICKING ----------------------------------------------------------------------------------------------------", - "start": 24021, - "end": 24136, + "start": 24125, + "end": 24240, "loc": { "start": { "line": 672, @@ -196563,9 +196937,9 @@ "postfix": false, "binop": null }, - "value": "frameCtx", + "value": "renderFlags", "start": 22642, - "end": 22650, + "end": 22653, "loc": { "start": { "line": 629, @@ -196573,7 +196947,59 @@ }, "end": { "line": 629, - "column": 35 + "column": 38 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 22653, + "end": 22654, + "loc": { + "start": { + "line": 629, + "column": 38 + }, + "end": { + "line": 629, + "column": 39 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "frameCtx", + "start": 22655, + "end": 22663, + "loc": { + "start": { + "line": 629, + "column": 40 + }, + "end": { + "line": 629, + "column": 48 } } }, @@ -196589,16 +197015,16 @@ "postfix": false, "binop": null }, - "start": 22650, - "end": 22651, + "start": 22663, + "end": 22664, "loc": { "start": { "line": 629, - "column": 35 + "column": 48 }, "end": { "line": 629, - "column": 36 + "column": 49 } } }, @@ -196614,16 +197040,16 @@ "postfix": false, "binop": null }, - "start": 22652, - "end": 22653, + "start": 22665, + "end": 22666, "loc": { "start": { "line": 629, - "column": 37 + "column": 50 }, "end": { "line": 629, - "column": 38 + "column": 51 } } }, @@ -196642,8 +197068,8 @@ "updateContext": null }, "value": "if", - "start": 22662, - "end": 22664, + "start": 22675, + "end": 22677, "loc": { "start": { "line": 630, @@ -196667,8 +197093,8 @@ "postfix": false, "binop": null }, - "start": 22665, - "end": 22666, + "start": 22678, + "end": 22679, "loc": { "start": { "line": 630, @@ -196695,8 +197121,8 @@ "updateContext": null }, "value": "this", - "start": 22666, - "end": 22670, + "start": 22679, + "end": 22683, "loc": { "start": { "line": 630, @@ -196721,8 +197147,8 @@ "binop": null, "updateContext": null }, - "start": 22670, - "end": 22671, + "start": 22683, + "end": 22684, "loc": { "start": { "line": 630, @@ -196747,8 +197173,8 @@ "binop": null }, "value": "_numCulledLayerPortions", - "start": 22671, - "end": 22694, + "start": 22684, + "end": 22707, "loc": { "start": { "line": 630, @@ -196774,8 +197200,8 @@ "updateContext": null }, "value": "===", - "start": 22695, - "end": 22698, + "start": 22708, + "end": 22711, "loc": { "start": { "line": 630, @@ -196802,8 +197228,8 @@ "updateContext": null }, "value": "this", - "start": 22699, - "end": 22703, + "start": 22712, + "end": 22716, "loc": { "start": { "line": 630, @@ -196828,8 +197254,8 @@ "binop": null, "updateContext": null }, - "start": 22703, - "end": 22704, + "start": 22716, + "end": 22717, "loc": { "start": { "line": 630, @@ -196854,8 +197280,8 @@ "binop": null }, "value": "_numPortions", - "start": 22704, - "end": 22716, + "start": 22717, + "end": 22729, "loc": { "start": { "line": 630, @@ -196881,8 +197307,8 @@ "updateContext": null }, "value": "||", - "start": 22717, - "end": 22719, + "start": 22730, + "end": 22732, "loc": { "start": { "line": 630, @@ -196909,8 +197335,8 @@ "updateContext": null }, "value": "this", - "start": 22720, - "end": 22724, + "start": 22733, + "end": 22737, "loc": { "start": { "line": 630, @@ -196935,8 +197361,8 @@ "binop": null, "updateContext": null }, - "start": 22724, - "end": 22725, + "start": 22737, + "end": 22738, "loc": { "start": { "line": 630, @@ -196961,8 +197387,8 @@ "binop": null }, "value": "_numVisibleLayerPortions", - "start": 22725, - "end": 22749, + "start": 22738, + "end": 22762, "loc": { "start": { "line": 630, @@ -196988,8 +197414,8 @@ "updateContext": null }, "value": "===", - "start": 22750, - "end": 22753, + "start": 22763, + "end": 22766, "loc": { "start": { "line": 630, @@ -197015,8 +197441,8 @@ "updateContext": null }, "value": 0, - "start": 22754, - "end": 22755, + "start": 22767, + "end": 22768, "loc": { "start": { "line": 630, @@ -197042,8 +197468,8 @@ "updateContext": null }, "value": "||", - "start": 22756, - "end": 22758, + "start": 22769, + "end": 22771, "loc": { "start": { "line": 630, @@ -197070,8 +197496,8 @@ "updateContext": null }, "value": "this", - "start": 22759, - "end": 22763, + "start": 22772, + "end": 22776, "loc": { "start": { "line": 630, @@ -197096,8 +197522,8 @@ "binop": null, "updateContext": null }, - "start": 22763, - "end": 22764, + "start": 22776, + "end": 22777, "loc": { "start": { "line": 630, @@ -197122,8 +197548,8 @@ "binop": null }, "value": "_numSelectedLayerPortions", - "start": 22764, - "end": 22789, + "start": 22777, + "end": 22802, "loc": { "start": { "line": 630, @@ -197149,8 +197575,8 @@ "updateContext": null }, "value": "===", - "start": 22790, - "end": 22793, + "start": 22803, + "end": 22806, "loc": { "start": { "line": 630, @@ -197176,8 +197602,8 @@ "updateContext": null }, "value": 0, - "start": 22794, - "end": 22795, + "start": 22807, + "end": 22808, "loc": { "start": { "line": 630, @@ -197201,8 +197627,8 @@ "postfix": false, "binop": null }, - "start": 22795, - "end": 22796, + "start": 22808, + "end": 22809, "loc": { "start": { "line": 630, @@ -197226,8 +197652,8 @@ "postfix": false, "binop": null }, - "start": 22797, - "end": 22798, + "start": 22810, + "end": 22811, "loc": { "start": { "line": 630, @@ -197254,8 +197680,8 @@ "updateContext": null }, "value": "return", - "start": 22811, - "end": 22817, + "start": 22824, + "end": 22830, "loc": { "start": { "line": 631, @@ -197280,8 +197706,8 @@ "binop": null, "updateContext": null }, - "start": 22817, - "end": 22818, + "start": 22830, + "end": 22831, "loc": { "start": { "line": 631, @@ -197305,8 +197731,8 @@ "postfix": false, "binop": null }, - "start": 22827, - "end": 22828, + "start": 22840, + "end": 22841, "loc": { "start": { "line": 632, @@ -197333,8 +197759,8 @@ "updateContext": null }, "value": "if", - "start": 22837, - "end": 22839, + "start": 22850, + "end": 22852, "loc": { "start": { "line": 633, @@ -197358,8 +197784,8 @@ "postfix": false, "binop": null }, - "start": 22840, - "end": 22841, + "start": 22853, + "end": 22854, "loc": { "start": { "line": 633, @@ -197386,8 +197812,8 @@ "updateContext": null }, "value": "this", - "start": 22841, - "end": 22845, + "start": 22854, + "end": 22858, "loc": { "start": { "line": 633, @@ -197412,8 +197838,8 @@ "binop": null, "updateContext": null }, - "start": 22845, - "end": 22846, + "start": 22858, + "end": 22859, "loc": { "start": { "line": 633, @@ -197438,8 +197864,8 @@ "binop": null }, "value": "_pointsInstancingRenderers", - "start": 22846, - "end": 22872, + "start": 22859, + "end": 22885, "loc": { "start": { "line": 633, @@ -197464,8 +197890,8 @@ "binop": null, "updateContext": null }, - "start": 22872, - "end": 22873, + "start": 22885, + "end": 22886, "loc": { "start": { "line": 633, @@ -197490,8 +197916,8 @@ "binop": null }, "value": "silhouetteRenderer", - "start": 22873, - "end": 22891, + "start": 22886, + "end": 22904, "loc": { "start": { "line": 633, @@ -197515,8 +197941,8 @@ "postfix": false, "binop": null }, - "start": 22891, - "end": 22892, + "start": 22904, + "end": 22905, "loc": { "start": { "line": 633, @@ -197540,8 +197966,8 @@ "postfix": false, "binop": null }, - "start": 22893, - "end": 22894, + "start": 22906, + "end": 22907, "loc": { "start": { "line": 633, @@ -197568,8 +197994,8 @@ "updateContext": null }, "value": "this", - "start": 22907, - "end": 22911, + "start": 22920, + "end": 22924, "loc": { "start": { "line": 634, @@ -197594,8 +198020,8 @@ "binop": null, "updateContext": null }, - "start": 22911, - "end": 22912, + "start": 22924, + "end": 22925, "loc": { "start": { "line": 634, @@ -197620,8 +198046,8 @@ "binop": null }, "value": "_pointsInstancingRenderers", - "start": 22912, - "end": 22938, + "start": 22925, + "end": 22951, "loc": { "start": { "line": 634, @@ -197646,8 +198072,8 @@ "binop": null, "updateContext": null }, - "start": 22938, - "end": 22939, + "start": 22951, + "end": 22952, "loc": { "start": { "line": 634, @@ -197672,8 +198098,8 @@ "binop": null }, "value": "silhouetteRenderer", - "start": 22939, - "end": 22957, + "start": 22952, + "end": 22970, "loc": { "start": { "line": 634, @@ -197698,8 +198124,8 @@ "binop": null, "updateContext": null }, - "start": 22957, - "end": 22958, + "start": 22970, + "end": 22971, "loc": { "start": { "line": 634, @@ -197724,8 +198150,8 @@ "binop": null }, "value": "drawLayer", - "start": 22958, - "end": 22967, + "start": 22971, + "end": 22980, "loc": { "start": { "line": 634, @@ -197749,8 +198175,8 @@ "postfix": false, "binop": null }, - "start": 22967, - "end": 22968, + "start": 22980, + "end": 22981, "loc": { "start": { "line": 634, @@ -197775,8 +198201,8 @@ "binop": null }, "value": "frameCtx", - "start": 22968, - "end": 22976, + "start": 22981, + "end": 22989, "loc": { "start": { "line": 634, @@ -197801,8 +198227,8 @@ "binop": null, "updateContext": null }, - "start": 22976, - "end": 22977, + "start": 22989, + "end": 22990, "loc": { "start": { "line": 634, @@ -197829,8 +198255,8 @@ "updateContext": null }, "value": "this", - "start": 22978, - "end": 22982, + "start": 22991, + "end": 22995, "loc": { "start": { "line": 634, @@ -197855,8 +198281,8 @@ "binop": null, "updateContext": null }, - "start": 22982, - "end": 22983, + "start": 22995, + "end": 22996, "loc": { "start": { "line": 634, @@ -197881,8 +198307,8 @@ "binop": null }, "value": "RENDER_PASSES", - "start": 22984, - "end": 22997, + "start": 22997, + "end": 23010, "loc": { "start": { "line": 634, @@ -197907,8 +198333,8 @@ "binop": null, "updateContext": null }, - "start": 22997, - "end": 22998, + "start": 23010, + "end": 23011, "loc": { "start": { "line": 634, @@ -197933,8 +198359,8 @@ "binop": null }, "value": "SILHOUETTE_SELECTED", - "start": 22998, - "end": 23017, + "start": 23011, + "end": 23030, "loc": { "start": { "line": 634, @@ -197958,8 +198384,8 @@ "postfix": false, "binop": null }, - "start": 23017, - "end": 23018, + "start": 23030, + "end": 23031, "loc": { "start": { "line": 634, @@ -197984,8 +198410,8 @@ "binop": null, "updateContext": null }, - "start": 23018, - "end": 23019, + "start": 23031, + "end": 23032, "loc": { "start": { "line": 634, @@ -198009,8 +198435,8 @@ "postfix": false, "binop": null }, - "start": 23028, - "end": 23029, + "start": 23041, + "end": 23042, "loc": { "start": { "line": 635, @@ -198034,8 +198460,8 @@ "postfix": false, "binop": null }, - "start": 23034, - "end": 23035, + "start": 23047, + "end": 23048, "loc": { "start": { "line": 636, @@ -198050,8 +198476,8 @@ { "type": "CommentLine", "value": "-- EDGES RENDERING -----------------------------------------------------------------------------------------------", - "start": 23041, - "end": 23157, + "start": 23054, + "end": 23170, "loc": { "start": { "line": 638, @@ -198076,8 +198502,8 @@ "binop": null }, "value": "drawEdgesColorOpaque", - "start": 23163, - "end": 23183, + "start": 23176, + "end": 23196, "loc": { "start": { "line": 640, @@ -198101,8 +198527,8 @@ "postfix": false, "binop": null }, - "start": 23183, - "end": 23184, + "start": 23196, + "end": 23197, "loc": { "start": { "line": 640, @@ -198126,9 +198552,9 @@ "postfix": false, "binop": null }, - "value": "frameCtx", - "start": 23184, - "end": 23192, + "value": "renderFlags", + "start": 23197, + "end": 23208, "loc": { "start": { "line": 640, @@ -198136,7 +198562,59 @@ }, "end": { "line": 640, - "column": 33 + "column": 36 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 23208, + "end": 23209, + "loc": { + "start": { + "line": 640, + "column": 36 + }, + "end": { + "line": 640, + "column": 37 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "frameCtx", + "start": 23210, + "end": 23218, + "loc": { + "start": { + "line": 640, + "column": 38 + }, + "end": { + "line": 640, + "column": 46 } } }, @@ -198152,16 +198630,16 @@ "postfix": false, "binop": null }, - "start": 23192, - "end": 23193, + "start": 23218, + "end": 23219, "loc": { "start": { "line": 640, - "column": 33 + "column": 46 }, "end": { "line": 640, - "column": 34 + "column": 47 } } }, @@ -198177,16 +198655,16 @@ "postfix": false, "binop": null }, - "start": 23194, - "end": 23195, + "start": 23220, + "end": 23221, "loc": { "start": { "line": 640, - "column": 35 + "column": 48 }, "end": { "line": 640, - "column": 36 + "column": 49 } } }, @@ -198202,8 +198680,8 @@ "postfix": false, "binop": null }, - "start": 23200, - "end": 23201, + "start": 23226, + "end": 23227, "loc": { "start": { "line": 641, @@ -198228,8 +198706,8 @@ "binop": null }, "value": "drawEdgesColorTransparent", - "start": 23207, - "end": 23232, + "start": 23233, + "end": 23258, "loc": { "start": { "line": 643, @@ -198253,8 +198731,8 @@ "postfix": false, "binop": null }, - "start": 23232, - "end": 23233, + "start": 23258, + "end": 23259, "loc": { "start": { "line": 643, @@ -198278,9 +198756,9 @@ "postfix": false, "binop": null }, - "value": "frameCtx", - "start": 23233, - "end": 23241, + "value": "renderFlags", + "start": 23259, + "end": 23270, "loc": { "start": { "line": 643, @@ -198288,7 +198766,59 @@ }, "end": { "line": 643, - "column": 38 + "column": 41 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 23270, + "end": 23271, + "loc": { + "start": { + "line": 643, + "column": 41 + }, + "end": { + "line": 643, + "column": 42 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "frameCtx", + "start": 23272, + "end": 23280, + "loc": { + "start": { + "line": 643, + "column": 43 + }, + "end": { + "line": 643, + "column": 51 } } }, @@ -198304,16 +198834,16 @@ "postfix": false, "binop": null }, - "start": 23241, - "end": 23242, + "start": 23280, + "end": 23281, "loc": { "start": { "line": 643, - "column": 38 + "column": 51 }, "end": { "line": 643, - "column": 39 + "column": 52 } } }, @@ -198329,16 +198859,16 @@ "postfix": false, "binop": null }, - "start": 23243, - "end": 23244, + "start": 23282, + "end": 23283, "loc": { "start": { "line": 643, - "column": 40 + "column": 53 }, "end": { "line": 643, - "column": 41 + "column": 54 } } }, @@ -198354,8 +198884,8 @@ "postfix": false, "binop": null }, - "start": 23249, - "end": 23250, + "start": 23288, + "end": 23289, "loc": { "start": { "line": 644, @@ -198380,8 +198910,8 @@ "binop": null }, "value": "drawEdgesHighlighted", - "start": 23256, - "end": 23276, + "start": 23295, + "end": 23315, "loc": { "start": { "line": 646, @@ -198405,8 +198935,8 @@ "postfix": false, "binop": null }, - "start": 23276, - "end": 23277, + "start": 23315, + "end": 23316, "loc": { "start": { "line": 646, @@ -198430,9 +198960,9 @@ "postfix": false, "binop": null }, - "value": "frameCtx", - "start": 23277, - "end": 23285, + "value": "renderFlags", + "start": 23316, + "end": 23327, "loc": { "start": { "line": 646, @@ -198440,7 +198970,59 @@ }, "end": { "line": 646, - "column": 33 + "column": 36 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 23327, + "end": 23328, + "loc": { + "start": { + "line": 646, + "column": 36 + }, + "end": { + "line": 646, + "column": 37 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "frameCtx", + "start": 23329, + "end": 23337, + "loc": { + "start": { + "line": 646, + "column": 38 + }, + "end": { + "line": 646, + "column": 46 } } }, @@ -198456,16 +199038,16 @@ "postfix": false, "binop": null }, - "start": 23285, - "end": 23286, + "start": 23337, + "end": 23338, "loc": { "start": { "line": 646, - "column": 33 + "column": 46 }, "end": { "line": 646, - "column": 34 + "column": 47 } } }, @@ -198481,16 +199063,16 @@ "postfix": false, "binop": null }, - "start": 23287, - "end": 23288, + "start": 23339, + "end": 23340, "loc": { "start": { "line": 646, - "column": 35 + "column": 48 }, "end": { "line": 646, - "column": 36 + "column": 49 } } }, @@ -198506,8 +199088,8 @@ "postfix": false, "binop": null }, - "start": 23293, - "end": 23294, + "start": 23345, + "end": 23346, "loc": { "start": { "line": 647, @@ -198532,8 +199114,8 @@ "binop": null }, "value": "drawEdgesSelected", - "start": 23300, - "end": 23317, + "start": 23352, + "end": 23369, "loc": { "start": { "line": 649, @@ -198557,8 +199139,8 @@ "postfix": false, "binop": null }, - "start": 23317, - "end": 23318, + "start": 23369, + "end": 23370, "loc": { "start": { "line": 649, @@ -198582,9 +199164,9 @@ "postfix": false, "binop": null }, - "value": "frameCtx", - "start": 23318, - "end": 23326, + "value": "renderFlags", + "start": 23370, + "end": 23381, "loc": { "start": { "line": 649, @@ -198592,7 +199174,59 @@ }, "end": { "line": 649, - "column": 30 + "column": 33 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 23381, + "end": 23382, + "loc": { + "start": { + "line": 649, + "column": 33 + }, + "end": { + "line": 649, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "frameCtx", + "start": 23383, + "end": 23391, + "loc": { + "start": { + "line": 649, + "column": 35 + }, + "end": { + "line": 649, + "column": 43 } } }, @@ -198608,16 +199242,16 @@ "postfix": false, "binop": null }, - "start": 23326, - "end": 23327, + "start": 23391, + "end": 23392, "loc": { "start": { "line": 649, - "column": 30 + "column": 43 }, "end": { "line": 649, - "column": 31 + "column": 44 } } }, @@ -198633,16 +199267,16 @@ "postfix": false, "binop": null }, - "start": 23328, - "end": 23329, + "start": 23393, + "end": 23394, "loc": { "start": { "line": 649, - "column": 32 + "column": 45 }, "end": { "line": 649, - "column": 33 + "column": 46 } } }, @@ -198658,8 +199292,8 @@ "postfix": false, "binop": null }, - "start": 23334, - "end": 23335, + "start": 23399, + "end": 23400, "loc": { "start": { "line": 650, @@ -198684,8 +199318,8 @@ "binop": null }, "value": "drawEdgesXRayed", - "start": 23341, - "end": 23356, + "start": 23406, + "end": 23421, "loc": { "start": { "line": 652, @@ -198709,8 +199343,8 @@ "postfix": false, "binop": null }, - "start": 23356, - "end": 23357, + "start": 23421, + "end": 23422, "loc": { "start": { "line": 652, @@ -198734,9 +199368,9 @@ "postfix": false, "binop": null }, - "value": "frameCtx", - "start": 23357, - "end": 23365, + "value": "renderFlags", + "start": 23422, + "end": 23433, "loc": { "start": { "line": 652, @@ -198744,7 +199378,59 @@ }, "end": { "line": 652, - "column": 28 + "column": 31 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 23433, + "end": 23434, + "loc": { + "start": { + "line": 652, + "column": 31 + }, + "end": { + "line": 652, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "frameCtx", + "start": 23435, + "end": 23443, + "loc": { + "start": { + "line": 652, + "column": 33 + }, + "end": { + "line": 652, + "column": 41 } } }, @@ -198760,16 +199446,16 @@ "postfix": false, "binop": null }, - "start": 23365, - "end": 23366, + "start": 23443, + "end": 23444, "loc": { "start": { "line": 652, - "column": 28 + "column": 41 }, "end": { "line": 652, - "column": 29 + "column": 42 } } }, @@ -198785,16 +199471,16 @@ "postfix": false, "binop": null }, - "start": 23367, - "end": 23368, + "start": 23445, + "end": 23446, "loc": { "start": { "line": 652, - "column": 30 + "column": 43 }, "end": { "line": 652, - "column": 31 + "column": 44 } } }, @@ -198810,8 +199496,8 @@ "postfix": false, "binop": null }, - "start": 23373, - "end": 23374, + "start": 23451, + "end": 23452, "loc": { "start": { "line": 653, @@ -198826,8 +199512,8 @@ { "type": "CommentLine", "value": " ---------------------- OCCLUSION CULL RENDERING -----------------------------------", - "start": 23380, - "end": 23466, + "start": 23458, + "end": 23544, "loc": { "start": { "line": 655, @@ -198852,8 +199538,8 @@ "binop": null }, "value": "drawOcclusion", - "start": 23472, - "end": 23485, + "start": 23550, + "end": 23563, "loc": { "start": { "line": 657, @@ -198877,8 +199563,8 @@ "postfix": false, "binop": null }, - "start": 23485, - "end": 23486, + "start": 23563, + "end": 23564, "loc": { "start": { "line": 657, @@ -198902,9 +199588,9 @@ "postfix": false, "binop": null }, - "value": "frameCtx", - "start": 23486, - "end": 23494, + "value": "renderFlags", + "start": 23564, + "end": 23575, "loc": { "start": { "line": 657, @@ -198912,7 +199598,59 @@ }, "end": { "line": 657, - "column": 26 + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 23575, + "end": 23576, + "loc": { + "start": { + "line": 657, + "column": 29 + }, + "end": { + "line": 657, + "column": 30 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "frameCtx", + "start": 23577, + "end": 23585, + "loc": { + "start": { + "line": 657, + "column": 31 + }, + "end": { + "line": 657, + "column": 39 } } }, @@ -198928,16 +199666,16 @@ "postfix": false, "binop": null }, - "start": 23494, - "end": 23495, + "start": 23585, + "end": 23586, "loc": { "start": { "line": 657, - "column": 26 + "column": 39 }, "end": { "line": 657, - "column": 27 + "column": 40 } } }, @@ -198953,16 +199691,16 @@ "postfix": false, "binop": null }, - "start": 23496, - "end": 23497, + "start": 23587, + "end": 23588, "loc": { "start": { "line": 657, - "column": 28 + "column": 41 }, "end": { "line": 657, - "column": 29 + "column": 42 } } }, @@ -198981,8 +199719,8 @@ "updateContext": null }, "value": "if", - "start": 23506, - "end": 23508, + "start": 23597, + "end": 23599, "loc": { "start": { "line": 658, @@ -199006,8 +199744,8 @@ "postfix": false, "binop": null }, - "start": 23509, - "end": 23510, + "start": 23600, + "end": 23601, "loc": { "start": { "line": 658, @@ -199034,8 +199772,8 @@ "updateContext": null }, "value": "this", - "start": 23510, - "end": 23514, + "start": 23601, + "end": 23605, "loc": { "start": { "line": 658, @@ -199060,8 +199798,8 @@ "binop": null, "updateContext": null }, - "start": 23514, - "end": 23515, + "start": 23605, + "end": 23606, "loc": { "start": { "line": 658, @@ -199086,8 +199824,8 @@ "binop": null }, "value": "_numCulledLayerPortions", - "start": 23515, - "end": 23538, + "start": 23606, + "end": 23629, "loc": { "start": { "line": 658, @@ -199113,8 +199851,8 @@ "updateContext": null }, "value": "===", - "start": 23539, - "end": 23542, + "start": 23630, + "end": 23633, "loc": { "start": { "line": 658, @@ -199141,8 +199879,8 @@ "updateContext": null }, "value": "this", - "start": 23543, - "end": 23547, + "start": 23634, + "end": 23638, "loc": { "start": { "line": 658, @@ -199167,8 +199905,8 @@ "binop": null, "updateContext": null }, - "start": 23547, - "end": 23548, + "start": 23638, + "end": 23639, "loc": { "start": { "line": 658, @@ -199193,8 +199931,8 @@ "binop": null }, "value": "_numPortions", - "start": 23548, - "end": 23560, + "start": 23639, + "end": 23651, "loc": { "start": { "line": 658, @@ -199220,8 +199958,8 @@ "updateContext": null }, "value": "||", - "start": 23561, - "end": 23563, + "start": 23652, + "end": 23654, "loc": { "start": { "line": 658, @@ -199248,8 +199986,8 @@ "updateContext": null }, "value": "this", - "start": 23564, - "end": 23568, + "start": 23655, + "end": 23659, "loc": { "start": { "line": 658, @@ -199274,8 +200012,8 @@ "binop": null, "updateContext": null }, - "start": 23568, - "end": 23569, + "start": 23659, + "end": 23660, "loc": { "start": { "line": 658, @@ -199300,8 +200038,8 @@ "binop": null }, "value": "_numVisibleLayerPortions", - "start": 23569, - "end": 23593, + "start": 23660, + "end": 23684, "loc": { "start": { "line": 658, @@ -199327,8 +200065,8 @@ "updateContext": null }, "value": "===", - "start": 23594, - "end": 23597, + "start": 23685, + "end": 23688, "loc": { "start": { "line": 658, @@ -199354,8 +200092,8 @@ "updateContext": null }, "value": 0, - "start": 23598, - "end": 23599, + "start": 23689, + "end": 23690, "loc": { "start": { "line": 658, @@ -199379,8 +200117,8 @@ "postfix": false, "binop": null }, - "start": 23599, - "end": 23600, + "start": 23690, + "end": 23691, "loc": { "start": { "line": 658, @@ -199404,8 +200142,8 @@ "postfix": false, "binop": null }, - "start": 23601, - "end": 23602, + "start": 23692, + "end": 23693, "loc": { "start": { "line": 658, @@ -199432,8 +200170,8 @@ "updateContext": null }, "value": "return", - "start": 23615, - "end": 23621, + "start": 23706, + "end": 23712, "loc": { "start": { "line": 659, @@ -199458,8 +200196,8 @@ "binop": null, "updateContext": null }, - "start": 23621, - "end": 23622, + "start": 23712, + "end": 23713, "loc": { "start": { "line": 659, @@ -199483,8 +200221,8 @@ "postfix": false, "binop": null }, - "start": 23631, - "end": 23632, + "start": 23722, + "end": 23723, "loc": { "start": { "line": 660, @@ -199511,8 +200249,8 @@ "updateContext": null }, "value": "if", - "start": 23641, - "end": 23643, + "start": 23732, + "end": 23734, "loc": { "start": { "line": 661, @@ -199536,8 +200274,8 @@ "postfix": false, "binop": null }, - "start": 23644, - "end": 23645, + "start": 23735, + "end": 23736, "loc": { "start": { "line": 661, @@ -199564,8 +200302,8 @@ "updateContext": null }, "value": "this", - "start": 23645, - "end": 23649, + "start": 23736, + "end": 23740, "loc": { "start": { "line": 661, @@ -199590,8 +200328,8 @@ "binop": null, "updateContext": null }, - "start": 23649, - "end": 23650, + "start": 23740, + "end": 23741, "loc": { "start": { "line": 661, @@ -199616,8 +200354,8 @@ "binop": null }, "value": "_pointsInstancingRenderers", - "start": 23650, - "end": 23676, + "start": 23741, + "end": 23767, "loc": { "start": { "line": 661, @@ -199642,8 +200380,8 @@ "binop": null, "updateContext": null }, - "start": 23676, - "end": 23677, + "start": 23767, + "end": 23768, "loc": { "start": { "line": 661, @@ -199668,8 +200406,8 @@ "binop": null }, "value": "occlusionRenderer", - "start": 23677, - "end": 23694, + "start": 23768, + "end": 23785, "loc": { "start": { "line": 661, @@ -199693,8 +200431,8 @@ "postfix": false, "binop": null }, - "start": 23694, - "end": 23695, + "start": 23785, + "end": 23786, "loc": { "start": { "line": 661, @@ -199718,8 +200456,8 @@ "postfix": false, "binop": null }, - "start": 23696, - "end": 23697, + "start": 23787, + "end": 23788, "loc": { "start": { "line": 661, @@ -199734,8 +200472,8 @@ { "type": "CommentLine", "value": " Only opaque, filled objects can be occluders", - "start": 23710, - "end": 23757, + "start": 23801, + "end": 23848, "loc": { "start": { "line": 662, @@ -199762,8 +200500,8 @@ "updateContext": null }, "value": "this", - "start": 23770, - "end": 23774, + "start": 23861, + "end": 23865, "loc": { "start": { "line": 663, @@ -199788,8 +200526,8 @@ "binop": null, "updateContext": null }, - "start": 23774, - "end": 23775, + "start": 23865, + "end": 23866, "loc": { "start": { "line": 663, @@ -199814,8 +200552,8 @@ "binop": null }, "value": "_pointsInstancingRenderers", - "start": 23775, - "end": 23801, + "start": 23866, + "end": 23892, "loc": { "start": { "line": 663, @@ -199840,8 +200578,8 @@ "binop": null, "updateContext": null }, - "start": 23801, - "end": 23802, + "start": 23892, + "end": 23893, "loc": { "start": { "line": 663, @@ -199866,8 +200604,8 @@ "binop": null }, "value": "occlusionRenderer", - "start": 23802, - "end": 23819, + "start": 23893, + "end": 23910, "loc": { "start": { "line": 663, @@ -199892,8 +200630,8 @@ "binop": null, "updateContext": null }, - "start": 23819, - "end": 23820, + "start": 23910, + "end": 23911, "loc": { "start": { "line": 663, @@ -199918,8 +200656,8 @@ "binop": null }, "value": "drawLayer", - "start": 23820, - "end": 23829, + "start": 23911, + "end": 23920, "loc": { "start": { "line": 663, @@ -199943,8 +200681,8 @@ "postfix": false, "binop": null }, - "start": 23829, - "end": 23830, + "start": 23920, + "end": 23921, "loc": { "start": { "line": 663, @@ -199969,8 +200707,8 @@ "binop": null }, "value": "frameCtx", - "start": 23830, - "end": 23838, + "start": 23921, + "end": 23929, "loc": { "start": { "line": 663, @@ -199995,8 +200733,8 @@ "binop": null, "updateContext": null }, - "start": 23838, - "end": 23839, + "start": 23929, + "end": 23930, "loc": { "start": { "line": 663, @@ -200023,8 +200761,8 @@ "updateContext": null }, "value": "this", - "start": 23840, - "end": 23844, + "start": 23931, + "end": 23935, "loc": { "start": { "line": 663, @@ -200049,8 +200787,8 @@ "binop": null, "updateContext": null }, - "start": 23844, - "end": 23845, + "start": 23935, + "end": 23936, "loc": { "start": { "line": 663, @@ -200075,8 +200813,8 @@ "binop": null }, "value": "RENDER_PASSES", - "start": 23846, - "end": 23859, + "start": 23937, + "end": 23950, "loc": { "start": { "line": 663, @@ -200101,8 +200839,8 @@ "binop": null, "updateContext": null }, - "start": 23859, - "end": 23860, + "start": 23950, + "end": 23951, "loc": { "start": { "line": 663, @@ -200127,8 +200865,8 @@ "binop": null }, "value": "COLOR_OPAQUE", - "start": 23860, - "end": 23872, + "start": 23951, + "end": 23963, "loc": { "start": { "line": 663, @@ -200152,8 +200890,8 @@ "postfix": false, "binop": null }, - "start": 23872, - "end": 23873, + "start": 23963, + "end": 23964, "loc": { "start": { "line": 663, @@ -200178,8 +200916,8 @@ "binop": null, "updateContext": null }, - "start": 23873, - "end": 23874, + "start": 23964, + "end": 23965, "loc": { "start": { "line": 663, @@ -200203,8 +200941,8 @@ "postfix": false, "binop": null }, - "start": 23883, - "end": 23884, + "start": 23974, + "end": 23975, "loc": { "start": { "line": 664, @@ -200228,8 +200966,8 @@ "postfix": false, "binop": null }, - "start": 23889, - "end": 23890, + "start": 23980, + "end": 23981, "loc": { "start": { "line": 665, @@ -200244,8 +200982,8 @@ { "type": "CommentLine", "value": " ---------------------- SHADOW BUFFER RENDERING -----------------------------------", - "start": 23896, - "end": 23981, + "start": 23987, + "end": 24072, "loc": { "start": { "line": 667, @@ -200270,8 +201008,8 @@ "binop": null }, "value": "drawShadow", - "start": 23987, - "end": 23997, + "start": 24078, + "end": 24088, "loc": { "start": { "line": 669, @@ -200295,8 +201033,8 @@ "postfix": false, "binop": null }, - "start": 23997, - "end": 23998, + "start": 24088, + "end": 24089, "loc": { "start": { "line": 669, @@ -200320,9 +201058,9 @@ "postfix": false, "binop": null }, - "value": "frameCtx", - "start": 23998, - "end": 24006, + "value": "renderFlags", + "start": 24089, + "end": 24100, "loc": { "start": { "line": 669, @@ -200330,7 +201068,59 @@ }, "end": { "line": 669, - "column": 23 + "column": 26 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 24100, + "end": 24101, + "loc": { + "start": { + "line": 669, + "column": 26 + }, + "end": { + "line": 669, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "frameCtx", + "start": 24102, + "end": 24110, + "loc": { + "start": { + "line": 669, + "column": 28 + }, + "end": { + "line": 669, + "column": 36 } } }, @@ -200346,16 +201136,16 @@ "postfix": false, "binop": null }, - "start": 24006, - "end": 24007, + "start": 24110, + "end": 24111, "loc": { "start": { "line": 669, - "column": 23 + "column": 36 }, "end": { "line": 669, - "column": 24 + "column": 37 } } }, @@ -200371,16 +201161,16 @@ "postfix": false, "binop": null }, - "start": 24008, - "end": 24009, + "start": 24112, + "end": 24113, "loc": { "start": { "line": 669, - "column": 25 + "column": 38 }, "end": { "line": 669, - "column": 26 + "column": 39 } } }, @@ -200396,8 +201186,8 @@ "postfix": false, "binop": null }, - "start": 24014, - "end": 24015, + "start": 24118, + "end": 24119, "loc": { "start": { "line": 670, @@ -200412,8 +201202,8 @@ { "type": "CommentLine", "value": "---- PICKING ----------------------------------------------------------------------------------------------------", - "start": 24021, - "end": 24136, + "start": 24125, + "end": 24240, "loc": { "start": { "line": 672, @@ -200438,8 +201228,8 @@ "binop": null }, "value": "drawPickMesh", - "start": 24142, - "end": 24154, + "start": 24246, + "end": 24258, "loc": { "start": { "line": 674, @@ -200463,8 +201253,8 @@ "postfix": false, "binop": null }, - "start": 24154, - "end": 24155, + "start": 24258, + "end": 24259, "loc": { "start": { "line": 674, @@ -200488,9 +201278,9 @@ "postfix": false, "binop": null }, - "value": "frameCtx", - "start": 24155, - "end": 24163, + "value": "renderFlags", + "start": 24259, + "end": 24270, "loc": { "start": { "line": 674, @@ -200498,7 +201288,59 @@ }, "end": { "line": 674, - "column": 25 + "column": 28 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 24270, + "end": 24271, + "loc": { + "start": { + "line": 674, + "column": 28 + }, + "end": { + "line": 674, + "column": 29 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "frameCtx", + "start": 24272, + "end": 24280, + "loc": { + "start": { + "line": 674, + "column": 30 + }, + "end": { + "line": 674, + "column": 38 } } }, @@ -200514,16 +201356,16 @@ "postfix": false, "binop": null }, - "start": 24163, - "end": 24164, + "start": 24280, + "end": 24281, "loc": { "start": { "line": 674, - "column": 25 + "column": 38 }, "end": { "line": 674, - "column": 26 + "column": 39 } } }, @@ -200539,16 +201381,16 @@ "postfix": false, "binop": null }, - "start": 24165, - "end": 24166, + "start": 24282, + "end": 24283, "loc": { "start": { "line": 674, - "column": 27 + "column": 40 }, "end": { "line": 674, - "column": 28 + "column": 41 } } }, @@ -200567,8 +201409,8 @@ "updateContext": null }, "value": "if", - "start": 24175, - "end": 24177, + "start": 24292, + "end": 24294, "loc": { "start": { "line": 675, @@ -200592,8 +201434,8 @@ "postfix": false, "binop": null }, - "start": 24178, - "end": 24179, + "start": 24295, + "end": 24296, "loc": { "start": { "line": 675, @@ -200620,8 +201462,8 @@ "updateContext": null }, "value": "this", - "start": 24179, - "end": 24183, + "start": 24296, + "end": 24300, "loc": { "start": { "line": 675, @@ -200646,8 +201488,8 @@ "binop": null, "updateContext": null }, - "start": 24183, - "end": 24184, + "start": 24300, + "end": 24301, "loc": { "start": { "line": 675, @@ -200672,8 +201514,8 @@ "binop": null }, "value": "_numCulledLayerPortions", - "start": 24184, - "end": 24207, + "start": 24301, + "end": 24324, "loc": { "start": { "line": 675, @@ -200699,8 +201541,8 @@ "updateContext": null }, "value": "===", - "start": 24208, - "end": 24211, + "start": 24325, + "end": 24328, "loc": { "start": { "line": 675, @@ -200727,8 +201569,8 @@ "updateContext": null }, "value": "this", - "start": 24212, - "end": 24216, + "start": 24329, + "end": 24333, "loc": { "start": { "line": 675, @@ -200753,8 +201595,8 @@ "binop": null, "updateContext": null }, - "start": 24216, - "end": 24217, + "start": 24333, + "end": 24334, "loc": { "start": { "line": 675, @@ -200779,8 +201621,8 @@ "binop": null }, "value": "_numPortions", - "start": 24217, - "end": 24229, + "start": 24334, + "end": 24346, "loc": { "start": { "line": 675, @@ -200806,8 +201648,8 @@ "updateContext": null }, "value": "||", - "start": 24230, - "end": 24232, + "start": 24347, + "end": 24349, "loc": { "start": { "line": 675, @@ -200834,8 +201676,8 @@ "updateContext": null }, "value": "this", - "start": 24233, - "end": 24237, + "start": 24350, + "end": 24354, "loc": { "start": { "line": 675, @@ -200860,8 +201702,8 @@ "binop": null, "updateContext": null }, - "start": 24237, - "end": 24238, + "start": 24354, + "end": 24355, "loc": { "start": { "line": 675, @@ -200886,8 +201728,8 @@ "binop": null }, "value": "_numVisibleLayerPortions", - "start": 24238, - "end": 24262, + "start": 24355, + "end": 24379, "loc": { "start": { "line": 675, @@ -200913,8 +201755,8 @@ "updateContext": null }, "value": "===", - "start": 24263, - "end": 24266, + "start": 24380, + "end": 24383, "loc": { "start": { "line": 675, @@ -200940,8 +201782,8 @@ "updateContext": null }, "value": 0, - "start": 24267, - "end": 24268, + "start": 24384, + "end": 24385, "loc": { "start": { "line": 675, @@ -200965,8 +201807,8 @@ "postfix": false, "binop": null }, - "start": 24268, - "end": 24269, + "start": 24385, + "end": 24386, "loc": { "start": { "line": 675, @@ -200990,8 +201832,8 @@ "postfix": false, "binop": null }, - "start": 24270, - "end": 24271, + "start": 24387, + "end": 24388, "loc": { "start": { "line": 675, @@ -201018,8 +201860,8 @@ "updateContext": null }, "value": "return", - "start": 24284, - "end": 24290, + "start": 24401, + "end": 24407, "loc": { "start": { "line": 676, @@ -201044,8 +201886,8 @@ "binop": null, "updateContext": null }, - "start": 24290, - "end": 24291, + "start": 24407, + "end": 24408, "loc": { "start": { "line": 676, @@ -201069,8 +201911,8 @@ "postfix": false, "binop": null }, - "start": 24300, - "end": 24301, + "start": 24417, + "end": 24418, "loc": { "start": { "line": 677, @@ -201097,8 +201939,8 @@ "updateContext": null }, "value": "if", - "start": 24310, - "end": 24312, + "start": 24427, + "end": 24429, "loc": { "start": { "line": 678, @@ -201122,8 +201964,8 @@ "postfix": false, "binop": null }, - "start": 24313, - "end": 24314, + "start": 24430, + "end": 24431, "loc": { "start": { "line": 678, @@ -201150,8 +201992,8 @@ "updateContext": null }, "value": "this", - "start": 24314, - "end": 24318, + "start": 24431, + "end": 24435, "loc": { "start": { "line": 678, @@ -201176,8 +202018,8 @@ "binop": null, "updateContext": null }, - "start": 24318, - "end": 24319, + "start": 24435, + "end": 24436, "loc": { "start": { "line": 678, @@ -201202,8 +202044,8 @@ "binop": null }, "value": "_pointsInstancingRenderers", - "start": 24319, - "end": 24345, + "start": 24436, + "end": 24462, "loc": { "start": { "line": 678, @@ -201228,8 +202070,8 @@ "binop": null, "updateContext": null }, - "start": 24345, - "end": 24346, + "start": 24462, + "end": 24463, "loc": { "start": { "line": 678, @@ -201254,8 +202096,8 @@ "binop": null }, "value": "pickMeshRenderer", - "start": 24346, - "end": 24362, + "start": 24463, + "end": 24479, "loc": { "start": { "line": 678, @@ -201279,8 +202121,8 @@ "postfix": false, "binop": null }, - "start": 24362, - "end": 24363, + "start": 24479, + "end": 24480, "loc": { "start": { "line": 678, @@ -201304,8 +202146,8 @@ "postfix": false, "binop": null }, - "start": 24364, - "end": 24365, + "start": 24481, + "end": 24482, "loc": { "start": { "line": 678, @@ -201332,8 +202174,8 @@ "updateContext": null }, "value": "this", - "start": 24378, - "end": 24382, + "start": 24495, + "end": 24499, "loc": { "start": { "line": 679, @@ -201358,8 +202200,8 @@ "binop": null, "updateContext": null }, - "start": 24382, - "end": 24383, + "start": 24499, + "end": 24500, "loc": { "start": { "line": 679, @@ -201384,8 +202226,8 @@ "binop": null }, "value": "_pointsInstancingRenderers", - "start": 24383, - "end": 24409, + "start": 24500, + "end": 24526, "loc": { "start": { "line": 679, @@ -201410,8 +202252,8 @@ "binop": null, "updateContext": null }, - "start": 24409, - "end": 24410, + "start": 24526, + "end": 24527, "loc": { "start": { "line": 679, @@ -201436,8 +202278,8 @@ "binop": null }, "value": "pickMeshRenderer", - "start": 24410, - "end": 24426, + "start": 24527, + "end": 24543, "loc": { "start": { "line": 679, @@ -201462,8 +202304,8 @@ "binop": null, "updateContext": null }, - "start": 24426, - "end": 24427, + "start": 24543, + "end": 24544, "loc": { "start": { "line": 679, @@ -201488,8 +202330,8 @@ "binop": null }, "value": "drawLayer", - "start": 24427, - "end": 24436, + "start": 24544, + "end": 24553, "loc": { "start": { "line": 679, @@ -201513,8 +202355,8 @@ "postfix": false, "binop": null }, - "start": 24436, - "end": 24437, + "start": 24553, + "end": 24554, "loc": { "start": { "line": 679, @@ -201539,8 +202381,8 @@ "binop": null }, "value": "frameCtx", - "start": 24437, - "end": 24445, + "start": 24554, + "end": 24562, "loc": { "start": { "line": 679, @@ -201565,8 +202407,8 @@ "binop": null, "updateContext": null }, - "start": 24445, - "end": 24446, + "start": 24562, + "end": 24563, "loc": { "start": { "line": 679, @@ -201593,8 +202435,8 @@ "updateContext": null }, "value": "this", - "start": 24447, - "end": 24451, + "start": 24564, + "end": 24568, "loc": { "start": { "line": 679, @@ -201619,8 +202461,8 @@ "binop": null, "updateContext": null }, - "start": 24451, - "end": 24452, + "start": 24568, + "end": 24569, "loc": { "start": { "line": 679, @@ -201645,8 +202487,8 @@ "binop": null }, "value": "RENDER_PASSES", - "start": 24453, - "end": 24466, + "start": 24570, + "end": 24583, "loc": { "start": { "line": 679, @@ -201671,8 +202513,8 @@ "binop": null, "updateContext": null }, - "start": 24466, - "end": 24467, + "start": 24583, + "end": 24584, "loc": { "start": { "line": 679, @@ -201697,8 +202539,8 @@ "binop": null }, "value": "PICK", - "start": 24467, - "end": 24471, + "start": 24584, + "end": 24588, "loc": { "start": { "line": 679, @@ -201722,8 +202564,8 @@ "postfix": false, "binop": null }, - "start": 24471, - "end": 24472, + "start": 24588, + "end": 24589, "loc": { "start": { "line": 679, @@ -201748,8 +202590,8 @@ "binop": null, "updateContext": null }, - "start": 24472, - "end": 24473, + "start": 24589, + "end": 24590, "loc": { "start": { "line": 679, @@ -201773,8 +202615,8 @@ "postfix": false, "binop": null }, - "start": 24482, - "end": 24483, + "start": 24599, + "end": 24600, "loc": { "start": { "line": 680, @@ -201798,8 +202640,8 @@ "postfix": false, "binop": null }, - "start": 24488, - "end": 24489, + "start": 24605, + "end": 24606, "loc": { "start": { "line": 681, @@ -201824,8 +202666,8 @@ "binop": null }, "value": "drawPickDepths", - "start": 24495, - "end": 24509, + "start": 24612, + "end": 24626, "loc": { "start": { "line": 683, @@ -201849,8 +202691,8 @@ "postfix": false, "binop": null }, - "start": 24509, - "end": 24510, + "start": 24626, + "end": 24627, "loc": { "start": { "line": 683, @@ -201874,9 +202716,9 @@ "postfix": false, "binop": null }, - "value": "frameCtx", - "start": 24510, - "end": 24518, + "value": "renderFlags", + "start": 24627, + "end": 24638, "loc": { "start": { "line": 683, @@ -201884,7 +202726,59 @@ }, "end": { "line": 683, - "column": 27 + "column": 30 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 24638, + "end": 24639, + "loc": { + "start": { + "line": 683, + "column": 30 + }, + "end": { + "line": 683, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "frameCtx", + "start": 24640, + "end": 24648, + "loc": { + "start": { + "line": 683, + "column": 32 + }, + "end": { + "line": 683, + "column": 40 } } }, @@ -201900,16 +202794,16 @@ "postfix": false, "binop": null }, - "start": 24518, - "end": 24519, + "start": 24648, + "end": 24649, "loc": { "start": { "line": 683, - "column": 27 + "column": 40 }, "end": { "line": 683, - "column": 28 + "column": 41 } } }, @@ -201925,16 +202819,16 @@ "postfix": false, "binop": null }, - "start": 24520, - "end": 24521, + "start": 24650, + "end": 24651, "loc": { "start": { "line": 683, - "column": 29 + "column": 42 }, "end": { "line": 683, - "column": 30 + "column": 43 } } }, @@ -201953,8 +202847,8 @@ "updateContext": null }, "value": "if", - "start": 24530, - "end": 24532, + "start": 24660, + "end": 24662, "loc": { "start": { "line": 684, @@ -201978,8 +202872,8 @@ "postfix": false, "binop": null }, - "start": 24533, - "end": 24534, + "start": 24663, + "end": 24664, "loc": { "start": { "line": 684, @@ -202006,8 +202900,8 @@ "updateContext": null }, "value": "this", - "start": 24534, - "end": 24538, + "start": 24664, + "end": 24668, "loc": { "start": { "line": 684, @@ -202032,8 +202926,8 @@ "binop": null, "updateContext": null }, - "start": 24538, - "end": 24539, + "start": 24668, + "end": 24669, "loc": { "start": { "line": 684, @@ -202058,8 +202952,8 @@ "binop": null }, "value": "_numCulledLayerPortions", - "start": 24539, - "end": 24562, + "start": 24669, + "end": 24692, "loc": { "start": { "line": 684, @@ -202085,8 +202979,8 @@ "updateContext": null }, "value": "===", - "start": 24563, - "end": 24566, + "start": 24693, + "end": 24696, "loc": { "start": { "line": 684, @@ -202113,8 +203007,8 @@ "updateContext": null }, "value": "this", - "start": 24567, - "end": 24571, + "start": 24697, + "end": 24701, "loc": { "start": { "line": 684, @@ -202139,8 +203033,8 @@ "binop": null, "updateContext": null }, - "start": 24571, - "end": 24572, + "start": 24701, + "end": 24702, "loc": { "start": { "line": 684, @@ -202165,8 +203059,8 @@ "binop": null }, "value": "_numPortions", - "start": 24572, - "end": 24584, + "start": 24702, + "end": 24714, "loc": { "start": { "line": 684, @@ -202192,8 +203086,8 @@ "updateContext": null }, "value": "||", - "start": 24585, - "end": 24587, + "start": 24715, + "end": 24717, "loc": { "start": { "line": 684, @@ -202220,8 +203114,8 @@ "updateContext": null }, "value": "this", - "start": 24588, - "end": 24592, + "start": 24718, + "end": 24722, "loc": { "start": { "line": 684, @@ -202246,8 +203140,8 @@ "binop": null, "updateContext": null }, - "start": 24592, - "end": 24593, + "start": 24722, + "end": 24723, "loc": { "start": { "line": 684, @@ -202272,8 +203166,8 @@ "binop": null }, "value": "_numVisibleLayerPortions", - "start": 24593, - "end": 24617, + "start": 24723, + "end": 24747, "loc": { "start": { "line": 684, @@ -202299,8 +203193,8 @@ "updateContext": null }, "value": "===", - "start": 24618, - "end": 24621, + "start": 24748, + "end": 24751, "loc": { "start": { "line": 684, @@ -202326,8 +203220,8 @@ "updateContext": null }, "value": 0, - "start": 24622, - "end": 24623, + "start": 24752, + "end": 24753, "loc": { "start": { "line": 684, @@ -202351,8 +203245,8 @@ "postfix": false, "binop": null }, - "start": 24623, - "end": 24624, + "start": 24753, + "end": 24754, "loc": { "start": { "line": 684, @@ -202376,8 +203270,8 @@ "postfix": false, "binop": null }, - "start": 24625, - "end": 24626, + "start": 24755, + "end": 24756, "loc": { "start": { "line": 684, @@ -202404,8 +203298,8 @@ "updateContext": null }, "value": "return", - "start": 24639, - "end": 24645, + "start": 24769, + "end": 24775, "loc": { "start": { "line": 685, @@ -202430,8 +203324,8 @@ "binop": null, "updateContext": null }, - "start": 24645, - "end": 24646, + "start": 24775, + "end": 24776, "loc": { "start": { "line": 685, @@ -202455,8 +203349,8 @@ "postfix": false, "binop": null }, - "start": 24655, - "end": 24656, + "start": 24785, + "end": 24786, "loc": { "start": { "line": 686, @@ -202483,8 +203377,8 @@ "updateContext": null }, "value": "if", - "start": 24665, - "end": 24667, + "start": 24795, + "end": 24797, "loc": { "start": { "line": 687, @@ -202508,8 +203402,8 @@ "postfix": false, "binop": null }, - "start": 24668, - "end": 24669, + "start": 24798, + "end": 24799, "loc": { "start": { "line": 687, @@ -202536,8 +203430,8 @@ "updateContext": null }, "value": "this", - "start": 24669, - "end": 24673, + "start": 24799, + "end": 24803, "loc": { "start": { "line": 687, @@ -202562,8 +203456,8 @@ "binop": null, "updateContext": null }, - "start": 24673, - "end": 24674, + "start": 24803, + "end": 24804, "loc": { "start": { "line": 687, @@ -202588,8 +203482,8 @@ "binop": null }, "value": "_pointsInstancingRenderers", - "start": 24674, - "end": 24700, + "start": 24804, + "end": 24830, "loc": { "start": { "line": 687, @@ -202614,8 +203508,8 @@ "binop": null, "updateContext": null }, - "start": 24700, - "end": 24701, + "start": 24830, + "end": 24831, "loc": { "start": { "line": 687, @@ -202640,8 +203534,8 @@ "binop": null }, "value": "pickDepthRenderer", - "start": 24701, - "end": 24718, + "start": 24831, + "end": 24848, "loc": { "start": { "line": 687, @@ -202665,8 +203559,8 @@ "postfix": false, "binop": null }, - "start": 24718, - "end": 24719, + "start": 24848, + "end": 24849, "loc": { "start": { "line": 687, @@ -202690,8 +203584,8 @@ "postfix": false, "binop": null }, - "start": 24720, - "end": 24721, + "start": 24850, + "end": 24851, "loc": { "start": { "line": 687, @@ -202718,8 +203612,8 @@ "updateContext": null }, "value": "this", - "start": 24734, - "end": 24738, + "start": 24864, + "end": 24868, "loc": { "start": { "line": 688, @@ -202744,8 +203638,8 @@ "binop": null, "updateContext": null }, - "start": 24738, - "end": 24739, + "start": 24868, + "end": 24869, "loc": { "start": { "line": 688, @@ -202770,8 +203664,8 @@ "binop": null }, "value": "_pointsInstancingRenderers", - "start": 24739, - "end": 24765, + "start": 24869, + "end": 24895, "loc": { "start": { "line": 688, @@ -202796,8 +203690,8 @@ "binop": null, "updateContext": null }, - "start": 24765, - "end": 24766, + "start": 24895, + "end": 24896, "loc": { "start": { "line": 688, @@ -202822,8 +203716,8 @@ "binop": null }, "value": "pickDepthRenderer", - "start": 24766, - "end": 24783, + "start": 24896, + "end": 24913, "loc": { "start": { "line": 688, @@ -202848,8 +203742,8 @@ "binop": null, "updateContext": null }, - "start": 24783, - "end": 24784, + "start": 24913, + "end": 24914, "loc": { "start": { "line": 688, @@ -202874,8 +203768,8 @@ "binop": null }, "value": "drawLayer", - "start": 24784, - "end": 24793, + "start": 24914, + "end": 24923, "loc": { "start": { "line": 688, @@ -202899,8 +203793,8 @@ "postfix": false, "binop": null }, - "start": 24793, - "end": 24794, + "start": 24923, + "end": 24924, "loc": { "start": { "line": 688, @@ -202925,8 +203819,8 @@ "binop": null }, "value": "frameCtx", - "start": 24794, - "end": 24802, + "start": 24924, + "end": 24932, "loc": { "start": { "line": 688, @@ -202951,8 +203845,8 @@ "binop": null, "updateContext": null }, - "start": 24802, - "end": 24803, + "start": 24932, + "end": 24933, "loc": { "start": { "line": 688, @@ -202979,8 +203873,8 @@ "updateContext": null }, "value": "this", - "start": 24804, - "end": 24808, + "start": 24934, + "end": 24938, "loc": { "start": { "line": 688, @@ -203005,8 +203899,8 @@ "binop": null, "updateContext": null }, - "start": 24808, - "end": 24809, + "start": 24938, + "end": 24939, "loc": { "start": { "line": 688, @@ -203031,8 +203925,8 @@ "binop": null }, "value": "RENDER_PASSES", - "start": 24810, - "end": 24823, + "start": 24940, + "end": 24953, "loc": { "start": { "line": 688, @@ -203057,8 +203951,8 @@ "binop": null, "updateContext": null }, - "start": 24823, - "end": 24824, + "start": 24953, + "end": 24954, "loc": { "start": { "line": 688, @@ -203083,8 +203977,8 @@ "binop": null }, "value": "PICK", - "start": 24824, - "end": 24828, + "start": 24954, + "end": 24958, "loc": { "start": { "line": 688, @@ -203108,8 +204002,8 @@ "postfix": false, "binop": null }, - "start": 24828, - "end": 24829, + "start": 24958, + "end": 24959, "loc": { "start": { "line": 688, @@ -203134,8 +204028,8 @@ "binop": null, "updateContext": null }, - "start": 24829, - "end": 24830, + "start": 24959, + "end": 24960, "loc": { "start": { "line": 688, @@ -203159,8 +204053,8 @@ "postfix": false, "binop": null }, - "start": 24839, - "end": 24840, + "start": 24969, + "end": 24970, "loc": { "start": { "line": 689, @@ -203184,8 +204078,8 @@ "postfix": false, "binop": null }, - "start": 24845, - "end": 24846, + "start": 24975, + "end": 24976, "loc": { "start": { "line": 690, @@ -203210,8 +204104,8 @@ "binop": null }, "value": "drawPickNormals", - "start": 24852, - "end": 24867, + "start": 24982, + "end": 24997, "loc": { "start": { "line": 692, @@ -203235,8 +204129,8 @@ "postfix": false, "binop": null }, - "start": 24867, - "end": 24868, + "start": 24997, + "end": 24998, "loc": { "start": { "line": 692, @@ -203260,9 +204154,9 @@ "postfix": false, "binop": null }, - "value": "frameCtx", - "start": 24868, - "end": 24876, + "value": "renderFlags", + "start": 24998, + "end": 25009, "loc": { "start": { "line": 692, @@ -203270,7 +204164,59 @@ }, "end": { "line": 692, - "column": 28 + "column": 31 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 25009, + "end": 25010, + "loc": { + "start": { + "line": 692, + "column": 31 + }, + "end": { + "line": 692, + "column": 32 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "frameCtx", + "start": 25011, + "end": 25019, + "loc": { + "start": { + "line": 692, + "column": 33 + }, + "end": { + "line": 692, + "column": 41 } } }, @@ -203286,16 +204232,16 @@ "postfix": false, "binop": null }, - "start": 24876, - "end": 24877, + "start": 25019, + "end": 25020, "loc": { "start": { "line": 692, - "column": 28 + "column": 41 }, "end": { "line": 692, - "column": 29 + "column": 42 } } }, @@ -203311,16 +204257,16 @@ "postfix": false, "binop": null }, - "start": 24878, - "end": 24879, + "start": 25021, + "end": 25022, "loc": { "start": { "line": 692, - "column": 30 + "column": 43 }, "end": { "line": 692, - "column": 31 + "column": 44 } } }, @@ -203336,8 +204282,8 @@ "postfix": false, "binop": null }, - "start": 24884, - "end": 24885, + "start": 25027, + "end": 25028, "loc": { "start": { "line": 693, @@ -203362,8 +204308,8 @@ "binop": null }, "value": "destroy", - "start": 24891, - "end": 24898, + "start": 25034, + "end": 25041, "loc": { "start": { "line": 695, @@ -203387,8 +204333,8 @@ "postfix": false, "binop": null }, - "start": 24898, - "end": 24899, + "start": 25041, + "end": 25042, "loc": { "start": { "line": 695, @@ -203412,8 +204358,8 @@ "postfix": false, "binop": null }, - "start": 24899, - "end": 24900, + "start": 25042, + "end": 25043, "loc": { "start": { "line": 695, @@ -203437,8 +204383,8 @@ "postfix": false, "binop": null }, - "start": 24901, - "end": 24902, + "start": 25044, + "end": 25045, "loc": { "start": { "line": 695, @@ -203465,8 +204411,8 @@ "updateContext": null }, "value": "const", - "start": 24911, - "end": 24916, + "start": 25054, + "end": 25059, "loc": { "start": { "line": 696, @@ -203491,8 +204437,8 @@ "binop": null }, "value": "state", - "start": 24917, - "end": 24922, + "start": 25060, + "end": 25065, "loc": { "start": { "line": 696, @@ -203518,8 +204464,8 @@ "updateContext": null }, "value": "=", - "start": 24923, - "end": 24924, + "start": 25066, + "end": 25067, "loc": { "start": { "line": 696, @@ -203546,8 +204492,8 @@ "updateContext": null }, "value": "this", - "start": 24925, - "end": 24929, + "start": 25068, + "end": 25072, "loc": { "start": { "line": 696, @@ -203572,8 +204518,8 @@ "binop": null, "updateContext": null }, - "start": 24929, - "end": 24930, + "start": 25072, + "end": 25073, "loc": { "start": { "line": 696, @@ -203598,8 +204544,8 @@ "binop": null }, "value": "_state", - "start": 24930, - "end": 24936, + "start": 25073, + "end": 25079, "loc": { "start": { "line": 696, @@ -203624,8 +204570,8 @@ "binop": null, "updateContext": null }, - "start": 24936, - "end": 24937, + "start": 25079, + "end": 25080, "loc": { "start": { "line": 696, @@ -203652,8 +204598,8 @@ "updateContext": null }, "value": "if", - "start": 24946, - "end": 24948, + "start": 25089, + "end": 25091, "loc": { "start": { "line": 697, @@ -203677,8 +204623,8 @@ "postfix": false, "binop": null }, - "start": 24949, - "end": 24950, + "start": 25092, + "end": 25093, "loc": { "start": { "line": 697, @@ -203703,8 +204649,8 @@ "binop": null }, "value": "state", - "start": 24950, - "end": 24955, + "start": 25093, + "end": 25098, "loc": { "start": { "line": 697, @@ -203729,8 +204675,8 @@ "binop": null, "updateContext": null }, - "start": 24955, - "end": 24956, + "start": 25098, + "end": 25099, "loc": { "start": { "line": 697, @@ -203755,8 +204701,8 @@ "binop": null }, "value": "positionsBuf", - "start": 24956, - "end": 24968, + "start": 25099, + "end": 25111, "loc": { "start": { "line": 697, @@ -203780,8 +204726,8 @@ "postfix": false, "binop": null }, - "start": 24968, - "end": 24969, + "start": 25111, + "end": 25112, "loc": { "start": { "line": 697, @@ -203805,8 +204751,8 @@ "postfix": false, "binop": null }, - "start": 24970, - "end": 24971, + "start": 25113, + "end": 25114, "loc": { "start": { "line": 697, @@ -203831,8 +204777,8 @@ "binop": null }, "value": "state", - "start": 24984, - "end": 24989, + "start": 25127, + "end": 25132, "loc": { "start": { "line": 698, @@ -203857,8 +204803,8 @@ "binop": null, "updateContext": null }, - "start": 24989, - "end": 24990, + "start": 25132, + "end": 25133, "loc": { "start": { "line": 698, @@ -203883,8 +204829,8 @@ "binop": null }, "value": "positionsBuf", - "start": 24990, - "end": 25002, + "start": 25133, + "end": 25145, "loc": { "start": { "line": 698, @@ -203909,8 +204855,8 @@ "binop": null, "updateContext": null }, - "start": 25002, - "end": 25003, + "start": 25145, + "end": 25146, "loc": { "start": { "line": 698, @@ -203935,8 +204881,8 @@ "binop": null }, "value": "destroy", - "start": 25003, - "end": 25010, + "start": 25146, + "end": 25153, "loc": { "start": { "line": 698, @@ -203960,8 +204906,8 @@ "postfix": false, "binop": null }, - "start": 25010, - "end": 25011, + "start": 25153, + "end": 25154, "loc": { "start": { "line": 698, @@ -203985,8 +204931,8 @@ "postfix": false, "binop": null }, - "start": 25011, - "end": 25012, + "start": 25154, + "end": 25155, "loc": { "start": { "line": 698, @@ -204011,8 +204957,8 @@ "binop": null, "updateContext": null }, - "start": 25012, - "end": 25013, + "start": 25155, + "end": 25156, "loc": { "start": { "line": 698, @@ -204037,8 +204983,8 @@ "binop": null }, "value": "state", - "start": 25026, - "end": 25031, + "start": 25169, + "end": 25174, "loc": { "start": { "line": 699, @@ -204063,8 +205009,8 @@ "binop": null, "updateContext": null }, - "start": 25031, - "end": 25032, + "start": 25174, + "end": 25175, "loc": { "start": { "line": 699, @@ -204089,8 +205035,8 @@ "binop": null }, "value": "positionsBuf", - "start": 25032, - "end": 25044, + "start": 25175, + "end": 25187, "loc": { "start": { "line": 699, @@ -204116,8 +205062,8 @@ "updateContext": null }, "value": "=", - "start": 25045, - "end": 25046, + "start": 25188, + "end": 25189, "loc": { "start": { "line": 699, @@ -204144,8 +205090,8 @@ "updateContext": null }, "value": "null", - "start": 25047, - "end": 25051, + "start": 25190, + "end": 25194, "loc": { "start": { "line": 699, @@ -204170,8 +205116,8 @@ "binop": null, "updateContext": null }, - "start": 25051, - "end": 25052, + "start": 25194, + "end": 25195, "loc": { "start": { "line": 699, @@ -204195,8 +205141,8 @@ "postfix": false, "binop": null }, - "start": 25061, - "end": 25062, + "start": 25204, + "end": 25205, "loc": { "start": { "line": 700, @@ -204223,8 +205169,8 @@ "updateContext": null }, "value": "if", - "start": 25071, - "end": 25073, + "start": 25214, + "end": 25216, "loc": { "start": { "line": 701, @@ -204248,8 +205194,8 @@ "postfix": false, "binop": null }, - "start": 25074, - "end": 25075, + "start": 25217, + "end": 25218, "loc": { "start": { "line": 701, @@ -204274,8 +205220,8 @@ "binop": null }, "value": "state", - "start": 25075, - "end": 25080, + "start": 25218, + "end": 25223, "loc": { "start": { "line": 701, @@ -204300,8 +205246,8 @@ "binop": null, "updateContext": null }, - "start": 25080, - "end": 25081, + "start": 25223, + "end": 25224, "loc": { "start": { "line": 701, @@ -204326,8 +205272,8 @@ "binop": null }, "value": "colorsBuf", - "start": 25081, - "end": 25090, + "start": 25224, + "end": 25233, "loc": { "start": { "line": 701, @@ -204351,8 +205297,8 @@ "postfix": false, "binop": null }, - "start": 25090, - "end": 25091, + "start": 25233, + "end": 25234, "loc": { "start": { "line": 701, @@ -204376,8 +205322,8 @@ "postfix": false, "binop": null }, - "start": 25092, - "end": 25093, + "start": 25235, + "end": 25236, "loc": { "start": { "line": 701, @@ -204402,8 +205348,8 @@ "binop": null }, "value": "state", - "start": 25106, - "end": 25111, + "start": 25249, + "end": 25254, "loc": { "start": { "line": 702, @@ -204428,8 +205374,8 @@ "binop": null, "updateContext": null }, - "start": 25111, - "end": 25112, + "start": 25254, + "end": 25255, "loc": { "start": { "line": 702, @@ -204454,8 +205400,8 @@ "binop": null }, "value": "colorsBuf", - "start": 25112, - "end": 25121, + "start": 25255, + "end": 25264, "loc": { "start": { "line": 702, @@ -204480,8 +205426,8 @@ "binop": null, "updateContext": null }, - "start": 25121, - "end": 25122, + "start": 25264, + "end": 25265, "loc": { "start": { "line": 702, @@ -204506,8 +205452,8 @@ "binop": null }, "value": "destroy", - "start": 25122, - "end": 25129, + "start": 25265, + "end": 25272, "loc": { "start": { "line": 702, @@ -204531,8 +205477,8 @@ "postfix": false, "binop": null }, - "start": 25129, - "end": 25130, + "start": 25272, + "end": 25273, "loc": { "start": { "line": 702, @@ -204556,8 +205502,8 @@ "postfix": false, "binop": null }, - "start": 25130, - "end": 25131, + "start": 25273, + "end": 25274, "loc": { "start": { "line": 702, @@ -204582,8 +205528,8 @@ "binop": null, "updateContext": null }, - "start": 25131, - "end": 25132, + "start": 25274, + "end": 25275, "loc": { "start": { "line": 702, @@ -204608,8 +205554,8 @@ "binop": null }, "value": "state", - "start": 25145, - "end": 25150, + "start": 25288, + "end": 25293, "loc": { "start": { "line": 703, @@ -204634,8 +205580,8 @@ "binop": null, "updateContext": null }, - "start": 25150, - "end": 25151, + "start": 25293, + "end": 25294, "loc": { "start": { "line": 703, @@ -204660,8 +205606,8 @@ "binop": null }, "value": "colorsBuf", - "start": 25151, - "end": 25160, + "start": 25294, + "end": 25303, "loc": { "start": { "line": 703, @@ -204687,8 +205633,8 @@ "updateContext": null }, "value": "=", - "start": 25161, - "end": 25162, + "start": 25304, + "end": 25305, "loc": { "start": { "line": 703, @@ -204715,8 +205661,8 @@ "updateContext": null }, "value": "null", - "start": 25163, - "end": 25167, + "start": 25306, + "end": 25310, "loc": { "start": { "line": 703, @@ -204741,8 +205687,8 @@ "binop": null, "updateContext": null }, - "start": 25167, - "end": 25168, + "start": 25310, + "end": 25311, "loc": { "start": { "line": 703, @@ -204766,8 +205712,8 @@ "postfix": false, "binop": null }, - "start": 25177, - "end": 25178, + "start": 25320, + "end": 25321, "loc": { "start": { "line": 704, @@ -204794,8 +205740,8 @@ "updateContext": null }, "value": "if", - "start": 25187, - "end": 25189, + "start": 25330, + "end": 25332, "loc": { "start": { "line": 705, @@ -204819,8 +205765,8 @@ "postfix": false, "binop": null }, - "start": 25190, - "end": 25191, + "start": 25333, + "end": 25334, "loc": { "start": { "line": 705, @@ -204845,8 +205791,8 @@ "binop": null }, "value": "state", - "start": 25191, - "end": 25196, + "start": 25334, + "end": 25339, "loc": { "start": { "line": 705, @@ -204871,8 +205817,8 @@ "binop": null, "updateContext": null }, - "start": 25196, - "end": 25197, + "start": 25339, + "end": 25340, "loc": { "start": { "line": 705, @@ -204897,8 +205843,8 @@ "binop": null }, "value": "flagsBuf", - "start": 25197, - "end": 25205, + "start": 25340, + "end": 25348, "loc": { "start": { "line": 705, @@ -204922,8 +205868,8 @@ "postfix": false, "binop": null }, - "start": 25205, - "end": 25206, + "start": 25348, + "end": 25349, "loc": { "start": { "line": 705, @@ -204947,8 +205893,8 @@ "postfix": false, "binop": null }, - "start": 25207, - "end": 25208, + "start": 25350, + "end": 25351, "loc": { "start": { "line": 705, @@ -204973,8 +205919,8 @@ "binop": null }, "value": "state", - "start": 25221, - "end": 25226, + "start": 25364, + "end": 25369, "loc": { "start": { "line": 706, @@ -204999,8 +205945,8 @@ "binop": null, "updateContext": null }, - "start": 25226, - "end": 25227, + "start": 25369, + "end": 25370, "loc": { "start": { "line": 706, @@ -205025,8 +205971,8 @@ "binop": null }, "value": "flagsBuf", - "start": 25227, - "end": 25235, + "start": 25370, + "end": 25378, "loc": { "start": { "line": 706, @@ -205051,8 +205997,8 @@ "binop": null, "updateContext": null }, - "start": 25235, - "end": 25236, + "start": 25378, + "end": 25379, "loc": { "start": { "line": 706, @@ -205077,8 +206023,8 @@ "binop": null }, "value": "destroy", - "start": 25236, - "end": 25243, + "start": 25379, + "end": 25386, "loc": { "start": { "line": 706, @@ -205102,8 +206048,8 @@ "postfix": false, "binop": null }, - "start": 25243, - "end": 25244, + "start": 25386, + "end": 25387, "loc": { "start": { "line": 706, @@ -205127,8 +206073,8 @@ "postfix": false, "binop": null }, - "start": 25244, - "end": 25245, + "start": 25387, + "end": 25388, "loc": { "start": { "line": 706, @@ -205153,8 +206099,8 @@ "binop": null, "updateContext": null }, - "start": 25245, - "end": 25246, + "start": 25388, + "end": 25389, "loc": { "start": { "line": 706, @@ -205179,8 +206125,8 @@ "binop": null }, "value": "state", - "start": 25259, - "end": 25264, + "start": 25402, + "end": 25407, "loc": { "start": { "line": 707, @@ -205205,8 +206151,8 @@ "binop": null, "updateContext": null }, - "start": 25264, - "end": 25265, + "start": 25407, + "end": 25408, "loc": { "start": { "line": 707, @@ -205231,8 +206177,8 @@ "binop": null }, "value": "flagsBuf", - "start": 25265, - "end": 25273, + "start": 25408, + "end": 25416, "loc": { "start": { "line": 707, @@ -205258,8 +206204,8 @@ "updateContext": null }, "value": "=", - "start": 25274, - "end": 25275, + "start": 25417, + "end": 25418, "loc": { "start": { "line": 707, @@ -205286,8 +206232,8 @@ "updateContext": null }, "value": "null", - "start": 25276, - "end": 25280, + "start": 25419, + "end": 25423, "loc": { "start": { "line": 707, @@ -205312,8 +206258,8 @@ "binop": null, "updateContext": null }, - "start": 25280, - "end": 25281, + "start": 25423, + "end": 25424, "loc": { "start": { "line": 707, @@ -205337,8 +206283,8 @@ "postfix": false, "binop": null }, - "start": 25290, - "end": 25291, + "start": 25433, + "end": 25434, "loc": { "start": { "line": 708, @@ -205365,8 +206311,8 @@ "updateContext": null }, "value": "if", - "start": 25300, - "end": 25302, + "start": 25443, + "end": 25445, "loc": { "start": { "line": 709, @@ -205390,8 +206336,8 @@ "postfix": false, "binop": null }, - "start": 25303, - "end": 25304, + "start": 25446, + "end": 25447, "loc": { "start": { "line": 709, @@ -205416,8 +206362,8 @@ "binop": null }, "value": "state", - "start": 25304, - "end": 25309, + "start": 25447, + "end": 25452, "loc": { "start": { "line": 709, @@ -205442,8 +206388,8 @@ "binop": null, "updateContext": null }, - "start": 25309, - "end": 25310, + "start": 25452, + "end": 25453, "loc": { "start": { "line": 709, @@ -205468,8 +206414,8 @@ "binop": null }, "value": "flags2Buf", - "start": 25310, - "end": 25319, + "start": 25453, + "end": 25462, "loc": { "start": { "line": 709, @@ -205493,8 +206439,8 @@ "postfix": false, "binop": null }, - "start": 25319, - "end": 25320, + "start": 25462, + "end": 25463, "loc": { "start": { "line": 709, @@ -205518,8 +206464,8 @@ "postfix": false, "binop": null }, - "start": 25321, - "end": 25322, + "start": 25464, + "end": 25465, "loc": { "start": { "line": 709, @@ -205544,8 +206490,8 @@ "binop": null }, "value": "state", - "start": 25335, - "end": 25340, + "start": 25478, + "end": 25483, "loc": { "start": { "line": 710, @@ -205570,8 +206516,8 @@ "binop": null, "updateContext": null }, - "start": 25340, - "end": 25341, + "start": 25483, + "end": 25484, "loc": { "start": { "line": 710, @@ -205596,8 +206542,8 @@ "binop": null }, "value": "flags2Buf", - "start": 25341, - "end": 25350, + "start": 25484, + "end": 25493, "loc": { "start": { "line": 710, @@ -205622,8 +206568,8 @@ "binop": null, "updateContext": null }, - "start": 25350, - "end": 25351, + "start": 25493, + "end": 25494, "loc": { "start": { "line": 710, @@ -205648,8 +206594,8 @@ "binop": null }, "value": "destroy", - "start": 25351, - "end": 25358, + "start": 25494, + "end": 25501, "loc": { "start": { "line": 710, @@ -205673,8 +206619,8 @@ "postfix": false, "binop": null }, - "start": 25358, - "end": 25359, + "start": 25501, + "end": 25502, "loc": { "start": { "line": 710, @@ -205698,8 +206644,8 @@ "postfix": false, "binop": null }, - "start": 25359, - "end": 25360, + "start": 25502, + "end": 25503, "loc": { "start": { "line": 710, @@ -205724,8 +206670,8 @@ "binop": null, "updateContext": null }, - "start": 25360, - "end": 25361, + "start": 25503, + "end": 25504, "loc": { "start": { "line": 710, @@ -205750,8 +206696,8 @@ "binop": null }, "value": "state", - "start": 25374, - "end": 25379, + "start": 25517, + "end": 25522, "loc": { "start": { "line": 711, @@ -205776,8 +206722,8 @@ "binop": null, "updateContext": null }, - "start": 25379, - "end": 25380, + "start": 25522, + "end": 25523, "loc": { "start": { "line": 711, @@ -205802,8 +206748,8 @@ "binop": null }, "value": "flags2Buf", - "start": 25380, - "end": 25389, + "start": 25523, + "end": 25532, "loc": { "start": { "line": 711, @@ -205829,8 +206775,8 @@ "updateContext": null }, "value": "=", - "start": 25390, - "end": 25391, + "start": 25533, + "end": 25534, "loc": { "start": { "line": 711, @@ -205857,8 +206803,8 @@ "updateContext": null }, "value": "null", - "start": 25392, - "end": 25396, + "start": 25535, + "end": 25539, "loc": { "start": { "line": 711, @@ -205883,8 +206829,8 @@ "binop": null, "updateContext": null }, - "start": 25396, - "end": 25397, + "start": 25539, + "end": 25540, "loc": { "start": { "line": 711, @@ -205908,8 +206854,8 @@ "postfix": false, "binop": null }, - "start": 25406, - "end": 25407, + "start": 25549, + "end": 25550, "loc": { "start": { "line": 712, @@ -205936,8 +206882,8 @@ "updateContext": null }, "value": "if", - "start": 25416, - "end": 25418, + "start": 25559, + "end": 25561, "loc": { "start": { "line": 713, @@ -205961,8 +206907,8 @@ "postfix": false, "binop": null }, - "start": 25419, - "end": 25420, + "start": 25562, + "end": 25563, "loc": { "start": { "line": 713, @@ -205987,8 +206933,8 @@ "binop": null }, "value": "state", - "start": 25420, - "end": 25425, + "start": 25563, + "end": 25568, "loc": { "start": { "line": 713, @@ -206013,8 +206959,8 @@ "binop": null, "updateContext": null }, - "start": 25425, - "end": 25426, + "start": 25568, + "end": 25569, "loc": { "start": { "line": 713, @@ -206039,8 +206985,8 @@ "binop": null }, "value": "offsetsBuf", - "start": 25426, - "end": 25436, + "start": 25569, + "end": 25579, "loc": { "start": { "line": 713, @@ -206064,8 +207010,8 @@ "postfix": false, "binop": null }, - "start": 25436, - "end": 25437, + "start": 25579, + "end": 25580, "loc": { "start": { "line": 713, @@ -206089,8 +207035,8 @@ "postfix": false, "binop": null }, - "start": 25438, - "end": 25439, + "start": 25581, + "end": 25582, "loc": { "start": { "line": 713, @@ -206115,8 +207061,8 @@ "binop": null }, "value": "state", - "start": 25452, - "end": 25457, + "start": 25595, + "end": 25600, "loc": { "start": { "line": 714, @@ -206141,8 +207087,8 @@ "binop": null, "updateContext": null }, - "start": 25457, - "end": 25458, + "start": 25600, + "end": 25601, "loc": { "start": { "line": 714, @@ -206167,8 +207113,8 @@ "binop": null }, "value": "offsetsBuf", - "start": 25458, - "end": 25468, + "start": 25601, + "end": 25611, "loc": { "start": { "line": 714, @@ -206193,8 +207139,8 @@ "binop": null, "updateContext": null }, - "start": 25468, - "end": 25469, + "start": 25611, + "end": 25612, "loc": { "start": { "line": 714, @@ -206219,8 +207165,8 @@ "binop": null }, "value": "destroy", - "start": 25469, - "end": 25476, + "start": 25612, + "end": 25619, "loc": { "start": { "line": 714, @@ -206244,8 +207190,8 @@ "postfix": false, "binop": null }, - "start": 25476, - "end": 25477, + "start": 25619, + "end": 25620, "loc": { "start": { "line": 714, @@ -206269,8 +207215,8 @@ "postfix": false, "binop": null }, - "start": 25477, - "end": 25478, + "start": 25620, + "end": 25621, "loc": { "start": { "line": 714, @@ -206295,8 +207241,8 @@ "binop": null, "updateContext": null }, - "start": 25478, - "end": 25479, + "start": 25621, + "end": 25622, "loc": { "start": { "line": 714, @@ -206321,8 +207267,8 @@ "binop": null }, "value": "state", - "start": 25492, - "end": 25497, + "start": 25635, + "end": 25640, "loc": { "start": { "line": 715, @@ -206347,8 +207293,8 @@ "binop": null, "updateContext": null }, - "start": 25497, - "end": 25498, + "start": 25640, + "end": 25641, "loc": { "start": { "line": 715, @@ -206373,8 +207319,8 @@ "binop": null }, "value": "offsetsBuf", - "start": 25498, - "end": 25508, + "start": 25641, + "end": 25651, "loc": { "start": { "line": 715, @@ -206400,8 +207346,8 @@ "updateContext": null }, "value": "=", - "start": 25509, - "end": 25510, + "start": 25652, + "end": 25653, "loc": { "start": { "line": 715, @@ -206428,8 +207374,8 @@ "updateContext": null }, "value": "null", - "start": 25511, - "end": 25515, + "start": 25654, + "end": 25658, "loc": { "start": { "line": 715, @@ -206454,8 +207400,8 @@ "binop": null, "updateContext": null }, - "start": 25515, - "end": 25516, + "start": 25658, + "end": 25659, "loc": { "start": { "line": 715, @@ -206479,8 +207425,8 @@ "postfix": false, "binop": null }, - "start": 25525, - "end": 25526, + "start": 25668, + "end": 25669, "loc": { "start": { "line": 716, @@ -206507,8 +207453,8 @@ "updateContext": null }, "value": "if", - "start": 25535, - "end": 25537, + "start": 25678, + "end": 25680, "loc": { "start": { "line": 717, @@ -206532,8 +207478,8 @@ "postfix": false, "binop": null }, - "start": 25538, - "end": 25539, + "start": 25681, + "end": 25682, "loc": { "start": { "line": 717, @@ -206558,8 +207504,8 @@ "binop": null }, "value": "state", - "start": 25539, - "end": 25544, + "start": 25682, + "end": 25687, "loc": { "start": { "line": 717, @@ -206584,8 +207530,8 @@ "binop": null, "updateContext": null }, - "start": 25544, - "end": 25545, + "start": 25687, + "end": 25688, "loc": { "start": { "line": 717, @@ -206610,8 +207556,8 @@ "binop": null }, "value": "modelMatrixCol0Buf", - "start": 25545, - "end": 25563, + "start": 25688, + "end": 25706, "loc": { "start": { "line": 717, @@ -206635,8 +207581,8 @@ "postfix": false, "binop": null }, - "start": 25563, - "end": 25564, + "start": 25706, + "end": 25707, "loc": { "start": { "line": 717, @@ -206660,8 +207606,8 @@ "postfix": false, "binop": null }, - "start": 25565, - "end": 25566, + "start": 25708, + "end": 25709, "loc": { "start": { "line": 717, @@ -206686,8 +207632,8 @@ "binop": null }, "value": "state", - "start": 25579, - "end": 25584, + "start": 25722, + "end": 25727, "loc": { "start": { "line": 718, @@ -206712,8 +207658,8 @@ "binop": null, "updateContext": null }, - "start": 25584, - "end": 25585, + "start": 25727, + "end": 25728, "loc": { "start": { "line": 718, @@ -206738,8 +207684,8 @@ "binop": null }, "value": "modelMatrixCol0Buf", - "start": 25585, - "end": 25603, + "start": 25728, + "end": 25746, "loc": { "start": { "line": 718, @@ -206764,8 +207710,8 @@ "binop": null, "updateContext": null }, - "start": 25603, - "end": 25604, + "start": 25746, + "end": 25747, "loc": { "start": { "line": 718, @@ -206790,8 +207736,8 @@ "binop": null }, "value": "destroy", - "start": 25604, - "end": 25611, + "start": 25747, + "end": 25754, "loc": { "start": { "line": 718, @@ -206815,8 +207761,8 @@ "postfix": false, "binop": null }, - "start": 25611, - "end": 25612, + "start": 25754, + "end": 25755, "loc": { "start": { "line": 718, @@ -206840,8 +207786,8 @@ "postfix": false, "binop": null }, - "start": 25612, - "end": 25613, + "start": 25755, + "end": 25756, "loc": { "start": { "line": 718, @@ -206866,8 +207812,8 @@ "binop": null, "updateContext": null }, - "start": 25613, - "end": 25614, + "start": 25756, + "end": 25757, "loc": { "start": { "line": 718, @@ -206892,8 +207838,8 @@ "binop": null }, "value": "state", - "start": 25627, - "end": 25632, + "start": 25770, + "end": 25775, "loc": { "start": { "line": 719, @@ -206918,8 +207864,8 @@ "binop": null, "updateContext": null }, - "start": 25632, - "end": 25633, + "start": 25775, + "end": 25776, "loc": { "start": { "line": 719, @@ -206944,8 +207890,8 @@ "binop": null }, "value": "modelMatrixCol0Buf", - "start": 25633, - "end": 25651, + "start": 25776, + "end": 25794, "loc": { "start": { "line": 719, @@ -206971,8 +207917,8 @@ "updateContext": null }, "value": "=", - "start": 25652, - "end": 25653, + "start": 25795, + "end": 25796, "loc": { "start": { "line": 719, @@ -206999,8 +207945,8 @@ "updateContext": null }, "value": "null", - "start": 25654, - "end": 25658, + "start": 25797, + "end": 25801, "loc": { "start": { "line": 719, @@ -207025,8 +207971,8 @@ "binop": null, "updateContext": null }, - "start": 25658, - "end": 25659, + "start": 25801, + "end": 25802, "loc": { "start": { "line": 719, @@ -207050,8 +207996,8 @@ "postfix": false, "binop": null }, - "start": 25668, - "end": 25669, + "start": 25811, + "end": 25812, "loc": { "start": { "line": 720, @@ -207078,8 +208024,8 @@ "updateContext": null }, "value": "if", - "start": 25678, - "end": 25680, + "start": 25821, + "end": 25823, "loc": { "start": { "line": 721, @@ -207103,8 +208049,8 @@ "postfix": false, "binop": null }, - "start": 25681, - "end": 25682, + "start": 25824, + "end": 25825, "loc": { "start": { "line": 721, @@ -207129,8 +208075,8 @@ "binop": null }, "value": "state", - "start": 25682, - "end": 25687, + "start": 25825, + "end": 25830, "loc": { "start": { "line": 721, @@ -207155,8 +208101,8 @@ "binop": null, "updateContext": null }, - "start": 25687, - "end": 25688, + "start": 25830, + "end": 25831, "loc": { "start": { "line": 721, @@ -207181,8 +208127,8 @@ "binop": null }, "value": "modelMatrixCol1Buf", - "start": 25688, - "end": 25706, + "start": 25831, + "end": 25849, "loc": { "start": { "line": 721, @@ -207206,8 +208152,8 @@ "postfix": false, "binop": null }, - "start": 25706, - "end": 25707, + "start": 25849, + "end": 25850, "loc": { "start": { "line": 721, @@ -207231,8 +208177,8 @@ "postfix": false, "binop": null }, - "start": 25708, - "end": 25709, + "start": 25851, + "end": 25852, "loc": { "start": { "line": 721, @@ -207257,8 +208203,8 @@ "binop": null }, "value": "state", - "start": 25722, - "end": 25727, + "start": 25865, + "end": 25870, "loc": { "start": { "line": 722, @@ -207283,8 +208229,8 @@ "binop": null, "updateContext": null }, - "start": 25727, - "end": 25728, + "start": 25870, + "end": 25871, "loc": { "start": { "line": 722, @@ -207309,8 +208255,8 @@ "binop": null }, "value": "modelMatrixCol1Buf", - "start": 25728, - "end": 25746, + "start": 25871, + "end": 25889, "loc": { "start": { "line": 722, @@ -207335,8 +208281,8 @@ "binop": null, "updateContext": null }, - "start": 25746, - "end": 25747, + "start": 25889, + "end": 25890, "loc": { "start": { "line": 722, @@ -207361,8 +208307,8 @@ "binop": null }, "value": "destroy", - "start": 25747, - "end": 25754, + "start": 25890, + "end": 25897, "loc": { "start": { "line": 722, @@ -207386,8 +208332,8 @@ "postfix": false, "binop": null }, - "start": 25754, - "end": 25755, + "start": 25897, + "end": 25898, "loc": { "start": { "line": 722, @@ -207411,8 +208357,8 @@ "postfix": false, "binop": null }, - "start": 25755, - "end": 25756, + "start": 25898, + "end": 25899, "loc": { "start": { "line": 722, @@ -207437,8 +208383,8 @@ "binop": null, "updateContext": null }, - "start": 25756, - "end": 25757, + "start": 25899, + "end": 25900, "loc": { "start": { "line": 722, @@ -207463,8 +208409,8 @@ "binop": null }, "value": "state", - "start": 25770, - "end": 25775, + "start": 25913, + "end": 25918, "loc": { "start": { "line": 723, @@ -207489,8 +208435,8 @@ "binop": null, "updateContext": null }, - "start": 25775, - "end": 25776, + "start": 25918, + "end": 25919, "loc": { "start": { "line": 723, @@ -207515,8 +208461,8 @@ "binop": null }, "value": "modelMatrixCol1Buf", - "start": 25776, - "end": 25794, + "start": 25919, + "end": 25937, "loc": { "start": { "line": 723, @@ -207542,8 +208488,8 @@ "updateContext": null }, "value": "=", - "start": 25795, - "end": 25796, + "start": 25938, + "end": 25939, "loc": { "start": { "line": 723, @@ -207570,8 +208516,8 @@ "updateContext": null }, "value": "null", - "start": 25797, - "end": 25801, + "start": 25940, + "end": 25944, "loc": { "start": { "line": 723, @@ -207596,8 +208542,8 @@ "binop": null, "updateContext": null }, - "start": 25801, - "end": 25802, + "start": 25944, + "end": 25945, "loc": { "start": { "line": 723, @@ -207621,8 +208567,8 @@ "postfix": false, "binop": null }, - "start": 25811, - "end": 25812, + "start": 25954, + "end": 25955, "loc": { "start": { "line": 724, @@ -207649,8 +208595,8 @@ "updateContext": null }, "value": "if", - "start": 25821, - "end": 25823, + "start": 25964, + "end": 25966, "loc": { "start": { "line": 725, @@ -207674,8 +208620,8 @@ "postfix": false, "binop": null }, - "start": 25824, - "end": 25825, + "start": 25967, + "end": 25968, "loc": { "start": { "line": 725, @@ -207700,8 +208646,8 @@ "binop": null }, "value": "state", - "start": 25825, - "end": 25830, + "start": 25968, + "end": 25973, "loc": { "start": { "line": 725, @@ -207726,8 +208672,8 @@ "binop": null, "updateContext": null }, - "start": 25830, - "end": 25831, + "start": 25973, + "end": 25974, "loc": { "start": { "line": 725, @@ -207752,8 +208698,8 @@ "binop": null }, "value": "modelMatrixCol2Buf", - "start": 25831, - "end": 25849, + "start": 25974, + "end": 25992, "loc": { "start": { "line": 725, @@ -207777,8 +208723,8 @@ "postfix": false, "binop": null }, - "start": 25849, - "end": 25850, + "start": 25992, + "end": 25993, "loc": { "start": { "line": 725, @@ -207802,8 +208748,8 @@ "postfix": false, "binop": null }, - "start": 25851, - "end": 25852, + "start": 25994, + "end": 25995, "loc": { "start": { "line": 725, @@ -207828,8 +208774,8 @@ "binop": null }, "value": "state", - "start": 25865, - "end": 25870, + "start": 26008, + "end": 26013, "loc": { "start": { "line": 726, @@ -207854,8 +208800,8 @@ "binop": null, "updateContext": null }, - "start": 25870, - "end": 25871, + "start": 26013, + "end": 26014, "loc": { "start": { "line": 726, @@ -207880,8 +208826,8 @@ "binop": null }, "value": "modelMatrixCol2Buf", - "start": 25871, - "end": 25889, + "start": 26014, + "end": 26032, "loc": { "start": { "line": 726, @@ -207906,8 +208852,8 @@ "binop": null, "updateContext": null }, - "start": 25889, - "end": 25890, + "start": 26032, + "end": 26033, "loc": { "start": { "line": 726, @@ -207932,8 +208878,8 @@ "binop": null }, "value": "destroy", - "start": 25890, - "end": 25897, + "start": 26033, + "end": 26040, "loc": { "start": { "line": 726, @@ -207957,8 +208903,8 @@ "postfix": false, "binop": null }, - "start": 25897, - "end": 25898, + "start": 26040, + "end": 26041, "loc": { "start": { "line": 726, @@ -207982,8 +208928,8 @@ "postfix": false, "binop": null }, - "start": 25898, - "end": 25899, + "start": 26041, + "end": 26042, "loc": { "start": { "line": 726, @@ -208008,8 +208954,8 @@ "binop": null, "updateContext": null }, - "start": 25899, - "end": 25900, + "start": 26042, + "end": 26043, "loc": { "start": { "line": 726, @@ -208034,8 +208980,8 @@ "binop": null }, "value": "state", - "start": 25913, - "end": 25918, + "start": 26056, + "end": 26061, "loc": { "start": { "line": 727, @@ -208060,8 +209006,8 @@ "binop": null, "updateContext": null }, - "start": 25918, - "end": 25919, + "start": 26061, + "end": 26062, "loc": { "start": { "line": 727, @@ -208086,8 +209032,8 @@ "binop": null }, "value": "modelMatrixCol2Buf", - "start": 25919, - "end": 25937, + "start": 26062, + "end": 26080, "loc": { "start": { "line": 727, @@ -208113,8 +209059,8 @@ "updateContext": null }, "value": "=", - "start": 25938, - "end": 25939, + "start": 26081, + "end": 26082, "loc": { "start": { "line": 727, @@ -208141,8 +209087,8 @@ "updateContext": null }, "value": "null", - "start": 25940, - "end": 25944, + "start": 26083, + "end": 26087, "loc": { "start": { "line": 727, @@ -208167,8 +209113,8 @@ "binop": null, "updateContext": null }, - "start": 25944, - "end": 25945, + "start": 26087, + "end": 26088, "loc": { "start": { "line": 727, @@ -208192,8 +209138,8 @@ "postfix": false, "binop": null }, - "start": 25954, - "end": 25955, + "start": 26097, + "end": 26098, "loc": { "start": { "line": 728, @@ -208220,8 +209166,8 @@ "updateContext": null }, "value": "if", - "start": 25964, - "end": 25966, + "start": 26107, + "end": 26109, "loc": { "start": { "line": 729, @@ -208245,8 +209191,8 @@ "postfix": false, "binop": null }, - "start": 25967, - "end": 25968, + "start": 26110, + "end": 26111, "loc": { "start": { "line": 729, @@ -208271,8 +209217,8 @@ "binop": null }, "value": "state", - "start": 25968, - "end": 25973, + "start": 26111, + "end": 26116, "loc": { "start": { "line": 729, @@ -208297,8 +209243,8 @@ "binop": null, "updateContext": null }, - "start": 25973, - "end": 25974, + "start": 26116, + "end": 26117, "loc": { "start": { "line": 729, @@ -208323,8 +209269,8 @@ "binop": null }, "value": "pickColorsBuf", - "start": 25974, - "end": 25987, + "start": 26117, + "end": 26130, "loc": { "start": { "line": 729, @@ -208348,8 +209294,8 @@ "postfix": false, "binop": null }, - "start": 25987, - "end": 25988, + "start": 26130, + "end": 26131, "loc": { "start": { "line": 729, @@ -208373,8 +209319,8 @@ "postfix": false, "binop": null }, - "start": 25989, - "end": 25990, + "start": 26132, + "end": 26133, "loc": { "start": { "line": 729, @@ -208399,8 +209345,8 @@ "binop": null }, "value": "state", - "start": 26003, - "end": 26008, + "start": 26146, + "end": 26151, "loc": { "start": { "line": 730, @@ -208425,8 +209371,8 @@ "binop": null, "updateContext": null }, - "start": 26008, - "end": 26009, + "start": 26151, + "end": 26152, "loc": { "start": { "line": 730, @@ -208451,8 +209397,8 @@ "binop": null }, "value": "pickColorsBuf", - "start": 26009, - "end": 26022, + "start": 26152, + "end": 26165, "loc": { "start": { "line": 730, @@ -208477,8 +209423,8 @@ "binop": null, "updateContext": null }, - "start": 26022, - "end": 26023, + "start": 26165, + "end": 26166, "loc": { "start": { "line": 730, @@ -208503,8 +209449,8 @@ "binop": null }, "value": "destroy", - "start": 26023, - "end": 26030, + "start": 26166, + "end": 26173, "loc": { "start": { "line": 730, @@ -208528,8 +209474,8 @@ "postfix": false, "binop": null }, - "start": 26030, - "end": 26031, + "start": 26173, + "end": 26174, "loc": { "start": { "line": 730, @@ -208553,8 +209499,8 @@ "postfix": false, "binop": null }, - "start": 26031, - "end": 26032, + "start": 26174, + "end": 26175, "loc": { "start": { "line": 730, @@ -208579,8 +209525,8 @@ "binop": null, "updateContext": null }, - "start": 26032, - "end": 26033, + "start": 26175, + "end": 26176, "loc": { "start": { "line": 730, @@ -208605,8 +209551,8 @@ "binop": null }, "value": "state", - "start": 26046, - "end": 26051, + "start": 26189, + "end": 26194, "loc": { "start": { "line": 731, @@ -208631,8 +209577,8 @@ "binop": null, "updateContext": null }, - "start": 26051, - "end": 26052, + "start": 26194, + "end": 26195, "loc": { "start": { "line": 731, @@ -208657,8 +209603,8 @@ "binop": null }, "value": "pickColorsBuf", - "start": 26052, - "end": 26065, + "start": 26195, + "end": 26208, "loc": { "start": { "line": 731, @@ -208684,8 +209630,8 @@ "updateContext": null }, "value": "=", - "start": 26066, - "end": 26067, + "start": 26209, + "end": 26210, "loc": { "start": { "line": 731, @@ -208712,8 +209658,8 @@ "updateContext": null }, "value": "null", - "start": 26068, - "end": 26072, + "start": 26211, + "end": 26215, "loc": { "start": { "line": 731, @@ -208738,8 +209684,8 @@ "binop": null, "updateContext": null }, - "start": 26072, - "end": 26073, + "start": 26215, + "end": 26216, "loc": { "start": { "line": 731, @@ -208763,8 +209709,8 @@ "postfix": false, "binop": null }, - "start": 26082, - "end": 26083, + "start": 26225, + "end": 26226, "loc": { "start": { "line": 732, @@ -208789,8 +209735,8 @@ "binop": null }, "value": "state", - "start": 26092, - "end": 26097, + "start": 26235, + "end": 26240, "loc": { "start": { "line": 733, @@ -208815,8 +209761,8 @@ "binop": null, "updateContext": null }, - "start": 26097, - "end": 26098, + "start": 26240, + "end": 26241, "loc": { "start": { "line": 733, @@ -208841,8 +209787,8 @@ "binop": null }, "value": "destroy", - "start": 26098, - "end": 26105, + "start": 26241, + "end": 26248, "loc": { "start": { "line": 733, @@ -208866,8 +209812,8 @@ "postfix": false, "binop": null }, - "start": 26105, - "end": 26106, + "start": 26248, + "end": 26249, "loc": { "start": { "line": 733, @@ -208891,8 +209837,8 @@ "postfix": false, "binop": null }, - "start": 26106, - "end": 26107, + "start": 26249, + "end": 26250, "loc": { "start": { "line": 733, @@ -208917,8 +209863,8 @@ "binop": null, "updateContext": null }, - "start": 26107, - "end": 26108, + "start": 26250, + "end": 26251, "loc": { "start": { "line": 733, @@ -208942,8 +209888,8 @@ "postfix": false, "binop": null }, - "start": 26113, - "end": 26114, + "start": 26256, + "end": 26257, "loc": { "start": { "line": 734, @@ -208967,8 +209913,8 @@ "postfix": false, "binop": null }, - "start": 26115, - "end": 26116, + "start": 26258, + "end": 26259, "loc": { "start": { "line": 735, @@ -208995,8 +209941,8 @@ "updateContext": null }, "value": "export", - "start": 26118, - "end": 26124, + "start": 26261, + "end": 26267, "loc": { "start": { "line": 737, @@ -209020,8 +209966,8 @@ "postfix": false, "binop": null }, - "start": 26125, - "end": 26126, + "start": 26268, + "end": 26269, "loc": { "start": { "line": 737, @@ -209046,8 +209992,8 @@ "binop": null }, "value": "PointsInstancingLayer", - "start": 26126, - "end": 26147, + "start": 26269, + "end": 26290, "loc": { "start": { "line": 737, @@ -209071,8 +210017,8 @@ "postfix": false, "binop": null }, - "start": 26147, - "end": 26148, + "start": 26290, + "end": 26291, "loc": { "start": { "line": 737, @@ -209097,8 +210043,8 @@ "binop": null, "updateContext": null }, - "start": 26148, - "end": 26149, + "start": 26291, + "end": 26292, "loc": { "start": { "line": 737, @@ -209123,8 +210069,8 @@ "binop": null, "updateContext": null }, - "start": 26149, - "end": 26149, + "start": 26292, + "end": 26292, "loc": { "start": { "line": 737, diff --git a/docs/ast/source/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js.json b/docs/ast/source/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js.json index 527f86caeb..a7950a8a8c 100644 --- a/docs/ast/source/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js.json +++ b/docs/ast/source/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js.json @@ -1,7 +1,7 @@ { "type": "File", "start": 0, - "end": 34497, + "end": 34507, "loc": { "start": { "line": 1, @@ -15,7 +15,7 @@ "program": { "type": "Program", "start": 0, - "end": 34497, + "end": 34507, "loc": { "start": { "line": 1, @@ -915,7 +915,7 @@ { "type": "Identifier", "start": 453, - "end": 34448, + "end": 34458, "loc": { "start": { "line": 18, @@ -948,7 +948,7 @@ "body": { "type": "ClassBody", "start": 497, - "end": 34448, + "end": 34458, "loc": { "start": { "line": 18, @@ -34825,7 +34825,7 @@ { "type": "ClassMethod", "start": 15561, - "end": 34251, + "end": 34261, "loc": { "start": { "line": 417, @@ -34864,7 +34864,7 @@ "body": { "type": "BlockStatement", "start": 15584, - "end": 34251, + "end": 34261, "loc": { "start": { "line": 417, @@ -53107,7 +53107,7 @@ { "type": "IfStatement", "start": 25999, - "end": 27537, + "end": 27536, "loc": { "start": { "line": 640, @@ -53375,7 +53375,7 @@ "consequent": { "type": "BlockStatement", "start": 26078, - "end": 27537, + "end": 27536, "loc": { "start": { "line": 640, @@ -54257,7 +54257,7 @@ { "type": "IfStatement", "start": 26714, - "end": 27499, + "end": 27498, "loc": { "start": { "line": 651, @@ -54390,7 +54390,7 @@ "consequent": { "type": "BlockStatement", "start": 26757, - "end": 27499, + "end": 27498, "loc": { "start": { "line": 651, @@ -54405,7 +54405,7 @@ { "type": "ExpressionStatement", "start": 26775, - "end": 26872, + "end": 26871, "loc": { "start": { "line": 652, @@ -54413,13 +54413,13 @@ }, "end": { "line": 652, - "column": 113 + "column": 112 } }, "expression": { "type": "CallExpression", "start": 26775, - "end": 26871, + "end": 26870, "loc": { "start": { "line": 652, @@ -54427,7 +54427,7 @@ }, "end": { "line": 652, - "column": 112 + "column": 111 } }, "callee": { @@ -54484,7 +54484,7 @@ { "type": "StringLiteral", "start": 26784, - "end": 26870, + "end": 26869, "loc": { "start": { "line": 652, @@ -54492,22 +54492,22 @@ }, "end": { "line": 652, - "column": 111 + "column": 110 } }, "extra": { - "rawValue": " vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);", - "raw": "\" vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);\"" + "rawValue": " vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);", + "raw": "\" vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);\"" }, - "value": " vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);" + "value": " vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);" } ] } }, { "type": "ExpressionStatement", - "start": 26889, - "end": 26985, + "start": 26888, + "end": 26984, "loc": { "start": { "line": 653, @@ -54520,8 +54520,8 @@ }, "expression": { "type": "CallExpression", - "start": 26889, - "end": 26984, + "start": 26888, + "end": 26983, "loc": { "start": { "line": 653, @@ -54534,8 +54534,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26889, - "end": 26897, + "start": 26888, + "end": 26896, "loc": { "start": { "line": 653, @@ -54548,8 +54548,8 @@ }, "object": { "type": "Identifier", - "start": 26889, - "end": 26892, + "start": 26888, + "end": 26891, "loc": { "start": { "line": 653, @@ -54565,8 +54565,8 @@ }, "property": { "type": "Identifier", - "start": 26893, - "end": 26897, + "start": 26892, + "end": 26896, "loc": { "start": { "line": 653, @@ -54585,8 +54585,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26898, - "end": 26983, + "start": 26897, + "end": 26982, "loc": { "start": { "line": 653, @@ -54608,8 +54608,8 @@ }, { "type": "ExpressionStatement", - "start": 27002, - "end": 27104, + "start": 27001, + "end": 27103, "loc": { "start": { "line": 654, @@ -54622,8 +54622,8 @@ }, "expression": { "type": "CallExpression", - "start": 27002, - "end": 27103, + "start": 27001, + "end": 27102, "loc": { "start": { "line": 654, @@ -54636,8 +54636,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27002, - "end": 27010, + "start": 27001, + "end": 27009, "loc": { "start": { "line": 654, @@ -54650,8 +54650,8 @@ }, "object": { "type": "Identifier", - "start": 27002, - "end": 27005, + "start": 27001, + "end": 27004, "loc": { "start": { "line": 654, @@ -54667,8 +54667,8 @@ }, "property": { "type": "Identifier", - "start": 27006, - "end": 27010, + "start": 27005, + "end": 27009, "loc": { "start": { "line": 654, @@ -54687,8 +54687,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27011, - "end": 27102, + "start": 27010, + "end": 27101, "loc": { "start": { "line": 654, @@ -54710,8 +54710,8 @@ }, { "type": "ExpressionStatement", - "start": 27121, - "end": 27235, + "start": 27120, + "end": 27234, "loc": { "start": { "line": 655, @@ -54724,8 +54724,8 @@ }, "expression": { "type": "CallExpression", - "start": 27121, - "end": 27234, + "start": 27120, + "end": 27233, "loc": { "start": { "line": 655, @@ -54738,8 +54738,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27121, - "end": 27129, + "start": 27120, + "end": 27128, "loc": { "start": { "line": 655, @@ -54752,8 +54752,8 @@ }, "object": { "type": "Identifier", - "start": 27121, - "end": 27124, + "start": 27120, + "end": 27123, "loc": { "start": { "line": 655, @@ -54769,8 +54769,8 @@ }, "property": { "type": "Identifier", - "start": 27125, - "end": 27129, + "start": 27124, + "end": 27128, "loc": { "start": { "line": 655, @@ -54789,8 +54789,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27130, - "end": 27233, + "start": 27129, + "end": 27232, "loc": { "start": { "line": 655, @@ -54812,8 +54812,8 @@ }, { "type": "ExpressionStatement", - "start": 27252, - "end": 27390, + "start": 27251, + "end": 27389, "loc": { "start": { "line": 656, @@ -54826,8 +54826,8 @@ }, "expression": { "type": "CallExpression", - "start": 27252, - "end": 27389, + "start": 27251, + "end": 27388, "loc": { "start": { "line": 656, @@ -54840,8 +54840,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27252, - "end": 27260, + "start": 27251, + "end": 27259, "loc": { "start": { "line": 656, @@ -54854,8 +54854,8 @@ }, "object": { "type": "Identifier", - "start": 27252, - "end": 27255, + "start": 27251, + "end": 27254, "loc": { "start": { "line": 656, @@ -54871,8 +54871,8 @@ }, "property": { "type": "Identifier", - "start": 27256, - "end": 27260, + "start": 27255, + "end": 27259, "loc": { "start": { "line": 656, @@ -54891,8 +54891,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27261, - "end": 27388, + "start": 27260, + "end": 27387, "loc": { "start": { "line": 656, @@ -54914,8 +54914,8 @@ }, { "type": "ExpressionStatement", - "start": 27407, - "end": 27485, + "start": 27406, + "end": 27484, "loc": { "start": { "line": 657, @@ -54928,8 +54928,8 @@ }, "expression": { "type": "CallExpression", - "start": 27407, - "end": 27484, + "start": 27406, + "end": 27483, "loc": { "start": { "line": 657, @@ -54942,8 +54942,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27407, - "end": 27415, + "start": 27406, + "end": 27414, "loc": { "start": { "line": 657, @@ -54956,8 +54956,8 @@ }, "object": { "type": "Identifier", - "start": 27407, - "end": 27410, + "start": 27406, + "end": 27409, "loc": { "start": { "line": 657, @@ -54973,8 +54973,8 @@ }, "property": { "type": "Identifier", - "start": 27411, - "end": 27415, + "start": 27410, + "end": 27414, "loc": { "start": { "line": 657, @@ -54993,8 +54993,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27416, - "end": 27483, + "start": 27415, + "end": 27482, "loc": { "start": { "line": 657, @@ -55021,8 +55021,8 @@ }, { "type": "ExpressionStatement", - "start": 27513, - "end": 27527, + "start": 27512, + "end": 27526, "loc": { "start": { "line": 660, @@ -55035,8 +55035,8 @@ }, "expression": { "type": "CallExpression", - "start": 27513, - "end": 27526, + "start": 27512, + "end": 27525, "loc": { "start": { "line": 660, @@ -55049,8 +55049,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27513, - "end": 27521, + "start": 27512, + "end": 27520, "loc": { "start": { "line": 660, @@ -55063,8 +55063,8 @@ }, "object": { "type": "Identifier", - "start": 27513, - "end": 27516, + "start": 27512, + "end": 27515, "loc": { "start": { "line": 660, @@ -55080,8 +55080,8 @@ }, "property": { "type": "Identifier", - "start": 27517, - "end": 27521, + "start": 27516, + "end": 27520, "loc": { "start": { "line": 660, @@ -55100,8 +55100,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27522, - "end": 27525, + "start": 27521, + "end": 27524, "loc": { "start": { "line": 660, @@ -55130,8 +55130,8 @@ { "type": "CommentLine", "value": " MAIN LIGHTING COMPUTATION FUNCTION", - "start": 27547, - "end": 27584, + "start": 27546, + "end": 27583, "loc": { "start": { "line": 663, @@ -55147,8 +55147,8 @@ }, { "type": "ExpressionStatement", - "start": 27594, - "end": 27763, + "start": 27593, + "end": 27762, "loc": { "start": { "line": 665, @@ -55161,8 +55161,8 @@ }, "expression": { "type": "CallExpression", - "start": 27594, - "end": 27762, + "start": 27593, + "end": 27761, "loc": { "start": { "line": 665, @@ -55175,8 +55175,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27594, - "end": 27602, + "start": 27593, + "end": 27601, "loc": { "start": { "line": 665, @@ -55189,8 +55189,8 @@ }, "object": { "type": "Identifier", - "start": 27594, - "end": 27597, + "start": 27593, + "end": 27596, "loc": { "start": { "line": 665, @@ -55207,8 +55207,8 @@ }, "property": { "type": "Identifier", - "start": 27598, - "end": 27602, + "start": 27597, + "end": 27601, "loc": { "start": { "line": 665, @@ -55228,8 +55228,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27603, - "end": 27761, + "start": 27602, + "end": 27760, "loc": { "start": { "line": 665, @@ -55253,8 +55253,8 @@ { "type": "CommentLine", "value": " MAIN LIGHTING COMPUTATION FUNCTION", - "start": 27547, - "end": 27584, + "start": 27546, + "end": 27583, "loc": { "start": { "line": 663, @@ -55270,8 +55270,8 @@ }, { "type": "ExpressionStatement", - "start": 27772, - "end": 27866, + "start": 27771, + "end": 27865, "loc": { "start": { "line": 666, @@ -55284,8 +55284,8 @@ }, "expression": { "type": "CallExpression", - "start": 27772, - "end": 27865, + "start": 27771, + "end": 27864, "loc": { "start": { "line": 666, @@ -55298,8 +55298,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27772, - "end": 27780, + "start": 27771, + "end": 27779, "loc": { "start": { "line": 666, @@ -55312,8 +55312,8 @@ }, "object": { "type": "Identifier", - "start": 27772, - "end": 27775, + "start": 27771, + "end": 27774, "loc": { "start": { "line": 666, @@ -55329,8 +55329,8 @@ }, "property": { "type": "Identifier", - "start": 27776, - "end": 27780, + "start": 27775, + "end": 27779, "loc": { "start": { "line": 666, @@ -55349,8 +55349,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27781, - "end": 27864, + "start": 27780, + "end": 27863, "loc": { "start": { "line": 666, @@ -55372,8 +55372,8 @@ }, { "type": "ExpressionStatement", - "start": 27875, - "end": 27942, + "start": 27874, + "end": 27941, "loc": { "start": { "line": 667, @@ -55386,8 +55386,8 @@ }, "expression": { "type": "CallExpression", - "start": 27875, - "end": 27941, + "start": 27874, + "end": 27940, "loc": { "start": { "line": 667, @@ -55400,8 +55400,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27875, - "end": 27883, + "start": 27874, + "end": 27882, "loc": { "start": { "line": 667, @@ -55414,8 +55414,8 @@ }, "object": { "type": "Identifier", - "start": 27875, - "end": 27878, + "start": 27874, + "end": 27877, "loc": { "start": { "line": 667, @@ -55431,8 +55431,8 @@ }, "property": { "type": "Identifier", - "start": 27879, - "end": 27883, + "start": 27878, + "end": 27882, "loc": { "start": { "line": 667, @@ -55451,8 +55451,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27884, - "end": 27940, + "start": 27883, + "end": 27939, "loc": { "start": { "line": 667, @@ -55474,8 +55474,8 @@ }, { "type": "ExpressionStatement", - "start": 27951, - "end": 28047, + "start": 27950, + "end": 28046, "loc": { "start": { "line": 668, @@ -55488,8 +55488,8 @@ }, "expression": { "type": "CallExpression", - "start": 27951, - "end": 28046, + "start": 27950, + "end": 28045, "loc": { "start": { "line": 668, @@ -55502,8 +55502,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27951, - "end": 27959, + "start": 27950, + "end": 27958, "loc": { "start": { "line": 668, @@ -55516,8 +55516,8 @@ }, "object": { "type": "Identifier", - "start": 27951, - "end": 27954, + "start": 27950, + "end": 27953, "loc": { "start": { "line": 668, @@ -55533,8 +55533,8 @@ }, "property": { "type": "Identifier", - "start": 27955, - "end": 27959, + "start": 27954, + "end": 27958, "loc": { "start": { "line": 668, @@ -55553,8 +55553,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27960, - "end": 28045, + "start": 27959, + "end": 28044, "loc": { "start": { "line": 668, @@ -55576,8 +55576,8 @@ }, { "type": "ExpressionStatement", - "start": 28056, - "end": 28207, + "start": 28055, + "end": 28206, "loc": { "start": { "line": 669, @@ -55590,8 +55590,8 @@ }, "expression": { "type": "CallExpression", - "start": 28056, - "end": 28206, + "start": 28055, + "end": 28205, "loc": { "start": { "line": 669, @@ -55604,8 +55604,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28056, - "end": 28064, + "start": 28055, + "end": 28063, "loc": { "start": { "line": 669, @@ -55618,8 +55618,8 @@ }, "object": { "type": "Identifier", - "start": 28056, - "end": 28059, + "start": 28055, + "end": 28058, "loc": { "start": { "line": 669, @@ -55635,8 +55635,8 @@ }, "property": { "type": "Identifier", - "start": 28060, - "end": 28064, + "start": 28059, + "end": 28063, "loc": { "start": { "line": 669, @@ -55655,8 +55655,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28065, - "end": 28205, + "start": 28064, + "end": 28204, "loc": { "start": { "line": 669, @@ -55678,8 +55678,8 @@ }, { "type": "ExpressionStatement", - "start": 28216, - "end": 28230, + "start": 28215, + "end": 28229, "loc": { "start": { "line": 670, @@ -55692,8 +55692,8 @@ }, "expression": { "type": "CallExpression", - "start": 28216, - "end": 28229, + "start": 28215, + "end": 28228, "loc": { "start": { "line": 670, @@ -55706,8 +55706,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28216, - "end": 28224, + "start": 28215, + "end": 28223, "loc": { "start": { "line": 670, @@ -55720,8 +55720,8 @@ }, "object": { "type": "Identifier", - "start": 28216, - "end": 28219, + "start": 28215, + "end": 28218, "loc": { "start": { "line": 670, @@ -55737,8 +55737,8 @@ }, "property": { "type": "Identifier", - "start": 28220, - "end": 28224, + "start": 28219, + "end": 28223, "loc": { "start": { "line": 670, @@ -55757,8 +55757,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28225, - "end": 28228, + "start": 28224, + "end": 28227, "loc": { "start": { "line": 670, @@ -55780,8 +55780,8 @@ }, { "type": "ExpressionStatement", - "start": 28240, - "end": 28270, + "start": 28239, + "end": 28269, "loc": { "start": { "line": 672, @@ -55794,8 +55794,8 @@ }, "expression": { "type": "CallExpression", - "start": 28240, - "end": 28269, + "start": 28239, + "end": 28268, "loc": { "start": { "line": 672, @@ -55808,8 +55808,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28240, - "end": 28248, + "start": 28239, + "end": 28247, "loc": { "start": { "line": 672, @@ -55822,8 +55822,8 @@ }, "object": { "type": "Identifier", - "start": 28240, - "end": 28243, + "start": 28239, + "end": 28242, "loc": { "start": { "line": 672, @@ -55839,8 +55839,8 @@ }, "property": { "type": "Identifier", - "start": 28244, - "end": 28248, + "start": 28243, + "end": 28247, "loc": { "start": { "line": 672, @@ -55859,8 +55859,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28249, - "end": 28268, + "start": 28248, + "end": 28267, "loc": { "start": { "line": 672, @@ -55882,8 +55882,8 @@ }, { "type": "IfStatement", - "start": 28280, - "end": 29598, + "start": 28279, + "end": 29597, "loc": { "start": { "line": 674, @@ -55896,8 +55896,8 @@ }, "test": { "type": "Identifier", - "start": 28284, - "end": 28292, + "start": 28283, + "end": 28291, "loc": { "start": { "line": 674, @@ -55913,8 +55913,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 28294, - "end": 29598, + "start": 28293, + "end": 29597, "loc": { "start": { "line": 674, @@ -55928,8 +55928,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 28308, - "end": 28365, + "start": 28307, + "end": 28364, "loc": { "start": { "line": 675, @@ -55942,8 +55942,8 @@ }, "expression": { "type": "CallExpression", - "start": 28308, - "end": 28364, + "start": 28307, + "end": 28363, "loc": { "start": { "line": 675, @@ -55956,8 +55956,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28308, - "end": 28316, + "start": 28307, + "end": 28315, "loc": { "start": { "line": 675, @@ -55970,8 +55970,8 @@ }, "object": { "type": "Identifier", - "start": 28308, - "end": 28311, + "start": 28307, + "end": 28310, "loc": { "start": { "line": 675, @@ -55987,8 +55987,8 @@ }, "property": { "type": "Identifier", - "start": 28312, - "end": 28316, + "start": 28311, + "end": 28315, "loc": { "start": { "line": 675, @@ -56007,8 +56007,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28317, - "end": 28363, + "start": 28316, + "end": 28362, "loc": { "start": { "line": 675, @@ -56030,8 +56030,8 @@ }, { "type": "ExpressionStatement", - "start": 28378, - "end": 28409, + "start": 28377, + "end": 28408, "loc": { "start": { "line": 676, @@ -56044,8 +56044,8 @@ }, "expression": { "type": "CallExpression", - "start": 28378, - "end": 28408, + "start": 28377, + "end": 28407, "loc": { "start": { "line": 676, @@ -56058,8 +56058,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28378, - "end": 28386, + "start": 28377, + "end": 28385, "loc": { "start": { "line": 676, @@ -56072,8 +56072,8 @@ }, "object": { "type": "Identifier", - "start": 28378, - "end": 28381, + "start": 28377, + "end": 28380, "loc": { "start": { "line": 676, @@ -56089,8 +56089,8 @@ }, "property": { "type": "Identifier", - "start": 28382, - "end": 28386, + "start": 28381, + "end": 28385, "loc": { "start": { "line": 676, @@ -56109,8 +56109,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28387, - "end": 28407, + "start": 28386, + "end": 28406, "loc": { "start": { "line": 676, @@ -56132,8 +56132,8 @@ }, { "type": "ExpressionStatement", - "start": 28422, - "end": 28454, + "start": 28421, + "end": 28453, "loc": { "start": { "line": 677, @@ -56146,8 +56146,8 @@ }, "expression": { "type": "CallExpression", - "start": 28422, - "end": 28453, + "start": 28421, + "end": 28452, "loc": { "start": { "line": 677, @@ -56160,8 +56160,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28422, - "end": 28430, + "start": 28421, + "end": 28429, "loc": { "start": { "line": 677, @@ -56174,8 +56174,8 @@ }, "object": { "type": "Identifier", - "start": 28422, - "end": 28425, + "start": 28421, + "end": 28424, "loc": { "start": { "line": 677, @@ -56191,8 +56191,8 @@ }, "property": { "type": "Identifier", - "start": 28426, - "end": 28430, + "start": 28425, + "end": 28429, "loc": { "start": { "line": 677, @@ -56211,8 +56211,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28431, - "end": 28452, + "start": 28430, + "end": 28451, "loc": { "start": { "line": 677, @@ -56234,8 +56234,8 @@ }, { "type": "ForStatement", - "start": 28467, - "end": 28801, + "start": 28466, + "end": 28800, "loc": { "start": { "line": 678, @@ -56248,8 +56248,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 28472, - "end": 28528, + "start": 28471, + "end": 28527, "loc": { "start": { "line": 678, @@ -56263,8 +56263,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 28476, - "end": 28481, + "start": 28475, + "end": 28480, "loc": { "start": { "line": 678, @@ -56277,8 +56277,8 @@ }, "id": { "type": "Identifier", - "start": 28476, - "end": 28477, + "start": 28475, + "end": 28476, "loc": { "start": { "line": 678, @@ -56294,8 +56294,8 @@ }, "init": { "type": "NumericLiteral", - "start": 28480, - "end": 28481, + "start": 28479, + "end": 28480, "loc": { "start": { "line": 678, @@ -56315,8 +56315,8 @@ }, { "type": "VariableDeclarator", - "start": 28483, - "end": 28528, + "start": 28482, + "end": 28527, "loc": { "start": { "line": 678, @@ -56329,8 +56329,8 @@ }, "id": { "type": "Identifier", - "start": 28483, - "end": 28486, + "start": 28482, + "end": 28485, "loc": { "start": { "line": 678, @@ -56346,8 +56346,8 @@ }, "init": { "type": "MemberExpression", - "start": 28489, - "end": 28528, + "start": 28488, + "end": 28527, "loc": { "start": { "line": 678, @@ -56360,8 +56360,8 @@ }, "object": { "type": "MemberExpression", - "start": 28489, - "end": 28521, + "start": 28488, + "end": 28520, "loc": { "start": { "line": 678, @@ -56374,8 +56374,8 @@ }, "object": { "type": "Identifier", - "start": 28489, - "end": 28507, + "start": 28488, + "end": 28506, "loc": { "start": { "line": 678, @@ -56391,8 +56391,8 @@ }, "property": { "type": "Identifier", - "start": 28508, - "end": 28521, + "start": 28507, + "end": 28520, "loc": { "start": { "line": 678, @@ -56410,8 +56410,8 @@ }, "property": { "type": "Identifier", - "start": 28522, - "end": 28528, + "start": 28521, + "end": 28527, "loc": { "start": { "line": 678, @@ -56433,8 +56433,8 @@ }, "test": { "type": "BinaryExpression", - "start": 28530, - "end": 28537, + "start": 28529, + "end": 28536, "loc": { "start": { "line": 678, @@ -56447,8 +56447,8 @@ }, "left": { "type": "Identifier", - "start": 28530, - "end": 28531, + "start": 28529, + "end": 28530, "loc": { "start": { "line": 678, @@ -56465,8 +56465,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 28534, - "end": 28537, + "start": 28533, + "end": 28536, "loc": { "start": { "line": 678, @@ -56483,8 +56483,8 @@ }, "update": { "type": "UpdateExpression", - "start": 28539, - "end": 28542, + "start": 28538, + "end": 28541, "loc": { "start": { "line": 678, @@ -56499,8 +56499,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 28539, - "end": 28540, + "start": 28538, + "end": 28539, "loc": { "start": { "line": 678, @@ -56517,8 +56517,8 @@ }, "body": { "type": "BlockStatement", - "start": 28544, - "end": 28801, + "start": 28543, + "end": 28800, "loc": { "start": { "line": 678, @@ -56532,8 +56532,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 28562, - "end": 28609, + "start": 28561, + "end": 28608, "loc": { "start": { "line": 679, @@ -56546,8 +56546,8 @@ }, "expression": { "type": "CallExpression", - "start": 28562, - "end": 28608, + "start": 28561, + "end": 28607, "loc": { "start": { "line": 679, @@ -56560,8 +56560,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28562, - "end": 28570, + "start": 28561, + "end": 28569, "loc": { "start": { "line": 679, @@ -56574,8 +56574,8 @@ }, "object": { "type": "Identifier", - "start": 28562, - "end": 28565, + "start": 28561, + "end": 28564, "loc": { "start": { "line": 679, @@ -56591,8 +56591,8 @@ }, "property": { "type": "Identifier", - "start": 28566, - "end": 28570, + "start": 28565, + "end": 28569, "loc": { "start": { "line": 679, @@ -56611,8 +56611,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 28571, - "end": 28607, + "start": 28570, + "end": 28606, "loc": { "start": { "line": 679, @@ -56625,8 +56625,8 @@ }, "left": { "type": "BinaryExpression", - "start": 28571, - "end": 28599, + "start": 28570, + "end": 28598, "loc": { "start": { "line": 679, @@ -56639,8 +56639,8 @@ }, "left": { "type": "StringLiteral", - "start": 28571, - "end": 28595, + "start": 28570, + "end": 28594, "loc": { "start": { "line": 679, @@ -56660,8 +56660,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 28598, - "end": 28599, + "start": 28597, + "end": 28598, "loc": { "start": { "line": 679, @@ -56679,8 +56679,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 28602, - "end": 28607, + "start": 28601, + "end": 28606, "loc": { "start": { "line": 679, @@ -56703,8 +56703,8 @@ }, { "type": "ExpressionStatement", - "start": 28626, - "end": 28756, + "start": 28625, + "end": 28755, "loc": { "start": { "line": 680, @@ -56717,8 +56717,8 @@ }, "expression": { "type": "CallExpression", - "start": 28626, - "end": 28755, + "start": 28625, + "end": 28754, "loc": { "start": { "line": 680, @@ -56731,8 +56731,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28626, - "end": 28634, + "start": 28625, + "end": 28633, "loc": { "start": { "line": 680, @@ -56745,8 +56745,8 @@ }, "object": { "type": "Identifier", - "start": 28626, - "end": 28629, + "start": 28625, + "end": 28628, "loc": { "start": { "line": 680, @@ -56762,8 +56762,8 @@ }, "property": { "type": "Identifier", - "start": 28630, - "end": 28634, + "start": 28629, + "end": 28633, "loc": { "start": { "line": 680, @@ -56782,8 +56782,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 28635, - "end": 28754, + "start": 28634, + "end": 28753, "loc": { "start": { "line": 680, @@ -56796,8 +56796,8 @@ }, "left": { "type": "BinaryExpression", - "start": 28635, - "end": 28729, + "start": 28634, + "end": 28728, "loc": { "start": { "line": 680, @@ -56810,8 +56810,8 @@ }, "left": { "type": "BinaryExpression", - "start": 28635, - "end": 28725, + "start": 28634, + "end": 28724, "loc": { "start": { "line": 680, @@ -56824,8 +56824,8 @@ }, "left": { "type": "BinaryExpression", - "start": 28635, - "end": 28678, + "start": 28634, + "end": 28677, "loc": { "start": { "line": 680, @@ -56838,8 +56838,8 @@ }, "left": { "type": "StringLiteral", - "start": 28635, - "end": 28674, + "start": 28634, + "end": 28673, "loc": { "start": { "line": 680, @@ -56859,8 +56859,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 28677, - "end": 28678, + "start": 28676, + "end": 28677, "loc": { "start": { "line": 680, @@ -56878,8 +56878,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 28681, - "end": 28725, + "start": 28680, + "end": 28724, "loc": { "start": { "line": 680, @@ -56900,8 +56900,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 28728, - "end": 28729, + "start": 28727, + "end": 28728, "loc": { "start": { "line": 680, @@ -56919,8 +56919,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 28732, - "end": 28754, + "start": 28731, + "end": 28753, "loc": { "start": { "line": 680, @@ -56943,8 +56943,8 @@ }, { "type": "ExpressionStatement", - "start": 28773, - "end": 28787, + "start": 28772, + "end": 28786, "loc": { "start": { "line": 681, @@ -56957,8 +56957,8 @@ }, "expression": { "type": "CallExpression", - "start": 28773, - "end": 28786, + "start": 28772, + "end": 28785, "loc": { "start": { "line": 681, @@ -56971,8 +56971,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28773, - "end": 28781, + "start": 28772, + "end": 28780, "loc": { "start": { "line": 681, @@ -56985,8 +56985,8 @@ }, "object": { "type": "Identifier", - "start": 28773, - "end": 28776, + "start": 28772, + "end": 28775, "loc": { "start": { "line": 681, @@ -57002,8 +57002,8 @@ }, "property": { "type": "Identifier", - "start": 28777, - "end": 28781, + "start": 28776, + "end": 28780, "loc": { "start": { "line": 681, @@ -57022,8 +57022,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28782, - "end": 28785, + "start": 28781, + "end": 28784, "loc": { "start": { "line": 681, @@ -57049,8 +57049,8 @@ }, { "type": "IfStatement", - "start": 28814, - "end": 29561, + "start": 28813, + "end": 29560, "loc": { "start": { "line": 683, @@ -57063,8 +57063,8 @@ }, "test": { "type": "Identifier", - "start": 28818, - "end": 28830, + "start": 28817, + "end": 28829, "loc": { "start": { "line": 683, @@ -57080,8 +57080,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 28832, - "end": 29414, + "start": 28831, + "end": 29413, "loc": { "start": { "line": 683, @@ -57095,8 +57095,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 28850, - "end": 28904, + "start": 28849, + "end": 28903, "loc": { "start": { "line": 684, @@ -57109,8 +57109,8 @@ }, "expression": { "type": "CallExpression", - "start": 28850, - "end": 28903, + "start": 28849, + "end": 28902, "loc": { "start": { "line": 684, @@ -57123,8 +57123,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28850, - "end": 28858, + "start": 28849, + "end": 28857, "loc": { "start": { "line": 684, @@ -57137,8 +57137,8 @@ }, "object": { "type": "Identifier", - "start": 28850, - "end": 28853, + "start": 28849, + "end": 28852, "loc": { "start": { "line": 684, @@ -57154,8 +57154,8 @@ }, "property": { "type": "Identifier", - "start": 28854, - "end": 28858, + "start": 28853, + "end": 28857, "loc": { "start": { "line": 684, @@ -57174,8 +57174,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28859, - "end": 28902, + "start": 28858, + "end": 28901, "loc": { "start": { "line": 684, @@ -57197,8 +57197,8 @@ }, { "type": "ExpressionStatement", - "start": 28921, - "end": 28948, + "start": 28920, + "end": 28947, "loc": { "start": { "line": 685, @@ -57211,8 +57211,8 @@ }, "expression": { "type": "CallExpression", - "start": 28921, - "end": 28947, + "start": 28920, + "end": 28946, "loc": { "start": { "line": 685, @@ -57225,8 +57225,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28921, - "end": 28929, + "start": 28920, + "end": 28928, "loc": { "start": { "line": 685, @@ -57239,8 +57239,8 @@ }, "object": { "type": "Identifier", - "start": 28921, - "end": 28924, + "start": 28920, + "end": 28923, "loc": { "start": { "line": 685, @@ -57256,8 +57256,8 @@ }, "property": { "type": "Identifier", - "start": 28925, - "end": 28929, + "start": 28924, + "end": 28928, "loc": { "start": { "line": 685, @@ -57276,8 +57276,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28930, - "end": 28946, + "start": 28929, + "end": 28945, "loc": { "start": { "line": 685, @@ -57299,8 +57299,8 @@ }, { "type": "ExpressionStatement", - "start": 28965, - "end": 28981, + "start": 28964, + "end": 28980, "loc": { "start": { "line": 686, @@ -57313,8 +57313,8 @@ }, "expression": { "type": "CallExpression", - "start": 28965, - "end": 28980, + "start": 28964, + "end": 28979, "loc": { "start": { "line": 686, @@ -57327,8 +57327,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28965, - "end": 28973, + "start": 28964, + "end": 28972, "loc": { "start": { "line": 686, @@ -57341,8 +57341,8 @@ }, "object": { "type": "Identifier", - "start": 28965, - "end": 28968, + "start": 28964, + "end": 28967, "loc": { "start": { "line": 686, @@ -57358,8 +57358,8 @@ }, "property": { "type": "Identifier", - "start": 28969, - "end": 28973, + "start": 28968, + "end": 28972, "loc": { "start": { "line": 686, @@ -57378,8 +57378,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28974, - "end": 28979, + "start": 28973, + "end": 28978, "loc": { "start": { "line": 686, @@ -57401,8 +57401,8 @@ }, { "type": "ExpressionStatement", - "start": 28998, - "end": 29031, + "start": 28997, + "end": 29030, "loc": { "start": { "line": 687, @@ -57415,8 +57415,8 @@ }, "expression": { "type": "CallExpression", - "start": 28998, - "end": 29030, + "start": 28997, + "end": 29029, "loc": { "start": { "line": 687, @@ -57429,8 +57429,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28998, - "end": 29006, + "start": 28997, + "end": 29005, "loc": { "start": { "line": 687, @@ -57443,8 +57443,8 @@ }, "object": { "type": "Identifier", - "start": 28998, - "end": 29001, + "start": 28997, + "end": 29000, "loc": { "start": { "line": 687, @@ -57460,8 +57460,8 @@ }, "property": { "type": "Identifier", - "start": 29002, - "end": 29006, + "start": 29001, + "end": 29005, "loc": { "start": { "line": 687, @@ -57480,8 +57480,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29007, - "end": 29029, + "start": 29006, + "end": 29028, "loc": { "start": { "line": 687, @@ -57503,8 +57503,8 @@ }, { "type": "ExpressionStatement", - "start": 29048, - "end": 29105, + "start": 29047, + "end": 29104, "loc": { "start": { "line": 688, @@ -57517,8 +57517,8 @@ }, "expression": { "type": "CallExpression", - "start": 29048, - "end": 29104, + "start": 29047, + "end": 29103, "loc": { "start": { "line": 688, @@ -57531,8 +57531,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29048, - "end": 29056, + "start": 29047, + "end": 29055, "loc": { "start": { "line": 688, @@ -57545,8 +57545,8 @@ }, "object": { "type": "Identifier", - "start": 29048, - "end": 29051, + "start": 29047, + "end": 29050, "loc": { "start": { "line": 688, @@ -57562,8 +57562,8 @@ }, "property": { "type": "Identifier", - "start": 29052, - "end": 29056, + "start": 29051, + "end": 29055, "loc": { "start": { "line": 688, @@ -57582,8 +57582,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29057, - "end": 29103, + "start": 29056, + "end": 29102, "loc": { "start": { "line": 688, @@ -57605,8 +57605,8 @@ }, { "type": "IfStatement", - "start": 29122, - "end": 29330, + "start": 29121, + "end": 29329, "loc": { "start": { "line": 689, @@ -57619,8 +57619,8 @@ }, "test": { "type": "LogicalExpression", - "start": 29126, - "end": 29214, + "start": 29125, + "end": 29213, "loc": { "start": { "line": 689, @@ -57633,8 +57633,8 @@ }, "left": { "type": "MemberExpression", - "start": 29126, - "end": 29161, + "start": 29125, + "end": 29160, "loc": { "start": { "line": 689, @@ -57647,8 +57647,8 @@ }, "object": { "type": "Identifier", - "start": 29126, - "end": 29131, + "start": 29125, + "end": 29130, "loc": { "start": { "line": 689, @@ -57664,8 +57664,8 @@ }, "property": { "type": "Identifier", - "start": 29132, - "end": 29161, + "start": 29131, + "end": 29160, "loc": { "start": { "line": 689, @@ -57684,8 +57684,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 29165, - "end": 29214, + "start": 29164, + "end": 29213, "loc": { "start": { "line": 689, @@ -57698,8 +57698,8 @@ }, "object": { "type": "MemberExpression", - "start": 29165, - "end": 29196, + "start": 29164, + "end": 29195, "loc": { "start": { "line": 689, @@ -57712,8 +57712,8 @@ }, "object": { "type": "Identifier", - "start": 29165, - "end": 29175, + "start": 29164, + "end": 29174, "loc": { "start": { "line": 689, @@ -57729,8 +57729,8 @@ }, "property": { "type": "Identifier", - "start": 29176, - "end": 29196, + "start": 29175, + "end": 29195, "loc": { "start": { "line": 689, @@ -57748,8 +57748,8 @@ }, "property": { "type": "StringLiteral", - "start": 29197, - "end": 29213, + "start": 29196, + "end": 29212, "loc": { "start": { "line": 689, @@ -57771,8 +57771,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 29216, - "end": 29330, + "start": 29215, + "end": 29329, "loc": { "start": { "line": 689, @@ -57786,8 +57786,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 29238, - "end": 29312, + "start": 29237, + "end": 29311, "loc": { "start": { "line": 690, @@ -57800,8 +57800,8 @@ }, "expression": { "type": "CallExpression", - "start": 29238, - "end": 29311, + "start": 29237, + "end": 29310, "loc": { "start": { "line": 690, @@ -57814,8 +57814,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29238, - "end": 29246, + "start": 29237, + "end": 29245, "loc": { "start": { "line": 690, @@ -57828,8 +57828,8 @@ }, "object": { "type": "Identifier", - "start": 29238, - "end": 29241, + "start": 29237, + "end": 29240, "loc": { "start": { "line": 690, @@ -57845,8 +57845,8 @@ }, "property": { "type": "Identifier", - "start": 29242, - "end": 29246, + "start": 29241, + "end": 29245, "loc": { "start": { "line": 690, @@ -57865,8 +57865,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29247, - "end": 29310, + "start": 29246, + "end": 29309, "loc": { "start": { "line": 690, @@ -57893,8 +57893,8 @@ }, { "type": "ExpressionStatement", - "start": 29347, - "end": 29369, + "start": 29346, + "end": 29368, "loc": { "start": { "line": 692, @@ -57907,8 +57907,8 @@ }, "expression": { "type": "CallExpression", - "start": 29347, - "end": 29368, + "start": 29346, + "end": 29367, "loc": { "start": { "line": 692, @@ -57921,8 +57921,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29347, - "end": 29355, + "start": 29346, + "end": 29354, "loc": { "start": { "line": 692, @@ -57935,8 +57935,8 @@ }, "object": { "type": "Identifier", - "start": 29347, - "end": 29350, + "start": 29346, + "end": 29349, "loc": { "start": { "line": 692, @@ -57952,8 +57952,8 @@ }, "property": { "type": "Identifier", - "start": 29351, - "end": 29355, + "start": 29350, + "end": 29354, "loc": { "start": { "line": 692, @@ -57972,8 +57972,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29356, - "end": 29367, + "start": 29355, + "end": 29366, "loc": { "start": { "line": 692, @@ -57995,8 +57995,8 @@ }, { "type": "ExpressionStatement", - "start": 29386, - "end": 29400, + "start": 29385, + "end": 29399, "loc": { "start": { "line": 693, @@ -58009,8 +58009,8 @@ }, "expression": { "type": "CallExpression", - "start": 29386, - "end": 29399, + "start": 29385, + "end": 29398, "loc": { "start": { "line": 693, @@ -58023,8 +58023,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29386, - "end": 29394, + "start": 29385, + "end": 29393, "loc": { "start": { "line": 693, @@ -58037,8 +58037,8 @@ }, "object": { "type": "Identifier", - "start": 29386, - "end": 29389, + "start": 29385, + "end": 29388, "loc": { "start": { "line": 693, @@ -58054,8 +58054,8 @@ }, "property": { "type": "Identifier", - "start": 29390, - "end": 29394, + "start": 29389, + "end": 29393, "loc": { "start": { "line": 693, @@ -58074,8 +58074,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29395, - "end": 29398, + "start": 29394, + "end": 29397, "loc": { "start": { "line": 693, @@ -58100,8 +58100,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 29420, - "end": 29561, + "start": 29419, + "end": 29560, "loc": { "start": { "line": 694, @@ -58115,8 +58115,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 29438, - "end": 29471, + "start": 29437, + "end": 29470, "loc": { "start": { "line": 695, @@ -58129,8 +58129,8 @@ }, "expression": { "type": "CallExpression", - "start": 29438, - "end": 29470, + "start": 29437, + "end": 29469, "loc": { "start": { "line": 695, @@ -58143,8 +58143,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29438, - "end": 29446, + "start": 29437, + "end": 29445, "loc": { "start": { "line": 695, @@ -58157,8 +58157,8 @@ }, "object": { "type": "Identifier", - "start": 29438, - "end": 29441, + "start": 29437, + "end": 29440, "loc": { "start": { "line": 695, @@ -58174,8 +58174,8 @@ }, "property": { "type": "Identifier", - "start": 29442, - "end": 29446, + "start": 29441, + "end": 29445, "loc": { "start": { "line": 695, @@ -58194,8 +58194,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29447, - "end": 29469, + "start": 29446, + "end": 29468, "loc": { "start": { "line": 695, @@ -58217,8 +58217,8 @@ }, { "type": "ExpressionStatement", - "start": 29488, - "end": 29514, + "start": 29487, + "end": 29513, "loc": { "start": { "line": 696, @@ -58231,8 +58231,8 @@ }, "expression": { "type": "CallExpression", - "start": 29488, - "end": 29514, + "start": 29487, + "end": 29513, "loc": { "start": { "line": 696, @@ -58245,8 +58245,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29488, - "end": 29496, + "start": 29487, + "end": 29495, "loc": { "start": { "line": 696, @@ -58259,8 +58259,8 @@ }, "object": { "type": "Identifier", - "start": 29488, - "end": 29491, + "start": 29487, + "end": 29490, "loc": { "start": { "line": 696, @@ -58276,8 +58276,8 @@ }, "property": { "type": "Identifier", - "start": 29492, - "end": 29496, + "start": 29491, + "end": 29495, "loc": { "start": { "line": 696, @@ -58296,8 +58296,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29497, - "end": 29513, + "start": 29496, + "end": 29512, "loc": { "start": { "line": 696, @@ -58319,8 +58319,8 @@ }, { "type": "ExpressionStatement", - "start": 29531, - "end": 29547, + "start": 29530, + "end": 29546, "loc": { "start": { "line": 697, @@ -58333,8 +58333,8 @@ }, "expression": { "type": "CallExpression", - "start": 29531, - "end": 29546, + "start": 29530, + "end": 29545, "loc": { "start": { "line": 697, @@ -58347,8 +58347,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29531, - "end": 29539, + "start": 29530, + "end": 29538, "loc": { "start": { "line": 697, @@ -58361,8 +58361,8 @@ }, "object": { "type": "Identifier", - "start": 29531, - "end": 29534, + "start": 29530, + "end": 29533, "loc": { "start": { "line": 697, @@ -58378,8 +58378,8 @@ }, "property": { "type": "Identifier", - "start": 29535, - "end": 29539, + "start": 29534, + "end": 29538, "loc": { "start": { "line": 697, @@ -58398,8 +58398,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29540, - "end": 29545, + "start": 29539, + "end": 29544, "loc": { "start": { "line": 697, @@ -58425,8 +58425,8 @@ }, { "type": "ExpressionStatement", - "start": 29574, - "end": 29588, + "start": 29573, + "end": 29587, "loc": { "start": { "line": 699, @@ -58439,8 +58439,8 @@ }, "expression": { "type": "CallExpression", - "start": 29574, - "end": 29587, + "start": 29573, + "end": 29586, "loc": { "start": { "line": 699, @@ -58453,8 +58453,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29574, - "end": 29582, + "start": 29573, + "end": 29581, "loc": { "start": { "line": 699, @@ -58467,8 +58467,8 @@ }, "object": { "type": "Identifier", - "start": 29574, - "end": 29577, + "start": 29573, + "end": 29576, "loc": { "start": { "line": 699, @@ -58484,8 +58484,8 @@ }, "property": { "type": "Identifier", - "start": 29578, - "end": 29582, + "start": 29577, + "end": 29581, "loc": { "start": { "line": 699, @@ -58504,8 +58504,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29583, - "end": 29586, + "start": 29582, + "end": 29585, "loc": { "start": { "line": 699, @@ -58532,8 +58532,8 @@ }, { "type": "ExpressionStatement", - "start": 29608, - "end": 29642, + "start": 29607, + "end": 29641, "loc": { "start": { "line": 702, @@ -58546,8 +58546,8 @@ }, "expression": { "type": "CallExpression", - "start": 29608, - "end": 29641, + "start": 29607, + "end": 29640, "loc": { "start": { "line": 702, @@ -58560,8 +58560,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29608, - "end": 29616, + "start": 29607, + "end": 29615, "loc": { "start": { "line": 702, @@ -58574,8 +58574,8 @@ }, "object": { "type": "Identifier", - "start": 29608, - "end": 29611, + "start": 29607, + "end": 29610, "loc": { "start": { "line": 702, @@ -58591,8 +58591,8 @@ }, "property": { "type": "Identifier", - "start": 29612, - "end": 29616, + "start": 29611, + "end": 29615, "loc": { "start": { "line": 702, @@ -58611,8 +58611,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29617, - "end": 29640, + "start": 29616, + "end": 29639, "loc": { "start": { "line": 702, @@ -58634,8 +58634,8 @@ }, { "type": "ExpressionStatement", - "start": 29651, - "end": 29688, + "start": 29650, + "end": 29687, "loc": { "start": { "line": 703, @@ -58648,8 +58648,8 @@ }, "expression": { "type": "CallExpression", - "start": 29651, - "end": 29687, + "start": 29650, + "end": 29686, "loc": { "start": { "line": 703, @@ -58662,8 +58662,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29651, - "end": 29659, + "start": 29650, + "end": 29658, "loc": { "start": { "line": 703, @@ -58676,8 +58676,8 @@ }, "object": { "type": "Identifier", - "start": 29651, - "end": 29654, + "start": 29650, + "end": 29653, "loc": { "start": { "line": 703, @@ -58693,8 +58693,8 @@ }, "property": { "type": "Identifier", - "start": 29655, - "end": 29659, + "start": 29654, + "end": 29658, "loc": { "start": { "line": 703, @@ -58713,8 +58713,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29660, - "end": 29686, + "start": 29659, + "end": 29685, "loc": { "start": { "line": 703, @@ -58736,8 +58736,8 @@ }, { "type": "ExpressionStatement", - "start": 29697, - "end": 29734, + "start": 29696, + "end": 29733, "loc": { "start": { "line": 704, @@ -58750,8 +58750,8 @@ }, "expression": { "type": "CallExpression", - "start": 29697, - "end": 29733, + "start": 29696, + "end": 29732, "loc": { "start": { "line": 704, @@ -58764,8 +58764,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29697, - "end": 29705, + "start": 29696, + "end": 29704, "loc": { "start": { "line": 704, @@ -58778,8 +58778,8 @@ }, "object": { "type": "Identifier", - "start": 29697, - "end": 29700, + "start": 29696, + "end": 29699, "loc": { "start": { "line": 704, @@ -58795,8 +58795,8 @@ }, "property": { "type": "Identifier", - "start": 29701, - "end": 29705, + "start": 29700, + "end": 29704, "loc": { "start": { "line": 704, @@ -58815,8 +58815,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29706, - "end": 29732, + "start": 29705, + "end": 29731, "loc": { "start": { "line": 704, @@ -58838,8 +58838,8 @@ }, { "type": "ExpressionStatement", - "start": 29743, - "end": 29841, + "start": 29742, + "end": 29840, "loc": { "start": { "line": 705, @@ -58852,8 +58852,8 @@ }, "expression": { "type": "CallExpression", - "start": 29743, - "end": 29840, + "start": 29742, + "end": 29839, "loc": { "start": { "line": 705, @@ -58866,8 +58866,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29743, - "end": 29751, + "start": 29742, + "end": 29750, "loc": { "start": { "line": 705, @@ -58880,8 +58880,8 @@ }, "object": { "type": "Identifier", - "start": 29743, - "end": 29746, + "start": 29742, + "end": 29745, "loc": { "start": { "line": 705, @@ -58897,8 +58897,8 @@ }, "property": { "type": "Identifier", - "start": 29747, - "end": 29751, + "start": 29746, + "end": 29750, "loc": { "start": { "line": 705, @@ -58917,8 +58917,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29752, - "end": 29839, + "start": 29751, + "end": 29838, "loc": { "start": { "line": 705, @@ -58940,8 +58940,8 @@ }, { "type": "ExpressionStatement", - "start": 29851, - "end": 29957, + "start": 29850, + "end": 29956, "loc": { "start": { "line": 707, @@ -58954,8 +58954,8 @@ }, "expression": { "type": "CallExpression", - "start": 29851, - "end": 29956, + "start": 29850, + "end": 29955, "loc": { "start": { "line": 707, @@ -58968,8 +58968,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29851, - "end": 29859, + "start": 29850, + "end": 29858, "loc": { "start": { "line": 707, @@ -58982,8 +58982,8 @@ }, "object": { "type": "Identifier", - "start": 29851, - "end": 29854, + "start": 29850, + "end": 29853, "loc": { "start": { "line": 707, @@ -58999,8 +58999,8 @@ }, "property": { "type": "Identifier", - "start": 29855, - "end": 29859, + "start": 29854, + "end": 29858, "loc": { "start": { "line": 707, @@ -59019,8 +59019,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29860, - "end": 29955, + "start": 29859, + "end": 29954, "loc": { "start": { "line": 707, @@ -59042,8 +59042,8 @@ }, { "type": "ExpressionStatement", - "start": 29966, - "end": 30017, + "start": 29965, + "end": 30016, "loc": { "start": { "line": 708, @@ -59056,8 +59056,8 @@ }, "expression": { "type": "CallExpression", - "start": 29966, - "end": 30016, + "start": 29965, + "end": 30015, "loc": { "start": { "line": 708, @@ -59070,8 +59070,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29966, - "end": 29974, + "start": 29965, + "end": 29973, "loc": { "start": { "line": 708, @@ -59084,8 +59084,8 @@ }, "object": { "type": "Identifier", - "start": 29966, - "end": 29969, + "start": 29965, + "end": 29968, "loc": { "start": { "line": 708, @@ -59101,8 +59101,8 @@ }, "property": { "type": "Identifier", - "start": 29970, - "end": 29974, + "start": 29969, + "end": 29973, "loc": { "start": { "line": 708, @@ -59121,8 +59121,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29975, - "end": 30015, + "start": 29974, + "end": 30014, "loc": { "start": { "line": 708, @@ -59144,8 +59144,8 @@ }, { "type": "ExpressionStatement", - "start": 30027, - "end": 30065, + "start": 30026, + "end": 30064, "loc": { "start": { "line": 710, @@ -59158,8 +59158,8 @@ }, "expression": { "type": "CallExpression", - "start": 30027, - "end": 30064, + "start": 30026, + "end": 30063, "loc": { "start": { "line": 710, @@ -59172,8 +59172,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30027, - "end": 30035, + "start": 30026, + "end": 30034, "loc": { "start": { "line": 710, @@ -59186,8 +59186,8 @@ }, "object": { "type": "Identifier", - "start": 30027, - "end": 30030, + "start": 30026, + "end": 30029, "loc": { "start": { "line": 710, @@ -59203,8 +59203,8 @@ }, "property": { "type": "Identifier", - "start": 30031, - "end": 30035, + "start": 30030, + "end": 30034, "loc": { "start": { "line": 710, @@ -59223,8 +59223,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30036, - "end": 30063, + "start": 30035, + "end": 30062, "loc": { "start": { "line": 710, @@ -59246,8 +59246,8 @@ }, { "type": "ExpressionStatement", - "start": 30074, - "end": 30110, + "start": 30073, + "end": 30109, "loc": { "start": { "line": 711, @@ -59260,8 +59260,8 @@ }, "expression": { "type": "CallExpression", - "start": 30074, - "end": 30109, + "start": 30073, + "end": 30108, "loc": { "start": { "line": 711, @@ -59274,8 +59274,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30074, - "end": 30082, + "start": 30073, + "end": 30081, "loc": { "start": { "line": 711, @@ -59288,8 +59288,8 @@ }, "object": { "type": "Identifier", - "start": 30074, - "end": 30077, + "start": 30073, + "end": 30076, "loc": { "start": { "line": 711, @@ -59305,8 +59305,8 @@ }, "property": { "type": "Identifier", - "start": 30078, - "end": 30082, + "start": 30077, + "end": 30081, "loc": { "start": { "line": 711, @@ -59325,8 +59325,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30083, - "end": 30108, + "start": 30082, + "end": 30107, "loc": { "start": { "line": 711, @@ -59348,8 +59348,8 @@ }, { "type": "ExpressionStatement", - "start": 30119, - "end": 30185, + "start": 30118, + "end": 30184, "loc": { "start": { "line": 712, @@ -59362,8 +59362,8 @@ }, "expression": { "type": "CallExpression", - "start": 30119, - "end": 30184, + "start": 30118, + "end": 30183, "loc": { "start": { "line": 712, @@ -59376,8 +59376,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30119, - "end": 30127, + "start": 30118, + "end": 30126, "loc": { "start": { "line": 712, @@ -59390,8 +59390,8 @@ }, "object": { "type": "Identifier", - "start": 30119, - "end": 30122, + "start": 30118, + "end": 30121, "loc": { "start": { "line": 712, @@ -59407,8 +59407,8 @@ }, "property": { "type": "Identifier", - "start": 30123, - "end": 30127, + "start": 30122, + "end": 30126, "loc": { "start": { "line": 712, @@ -59427,8 +59427,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30128, - "end": 30183, + "start": 30127, + "end": 30182, "loc": { "start": { "line": 712, @@ -59450,8 +59450,8 @@ }, { "type": "ExpressionStatement", - "start": 30194, - "end": 30261, + "start": 30193, + "end": 30260, "loc": { "start": { "line": 713, @@ -59464,8 +59464,8 @@ }, "expression": { "type": "CallExpression", - "start": 30194, - "end": 30260, + "start": 30193, + "end": 30259, "loc": { "start": { "line": 713, @@ -59478,8 +59478,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30194, - "end": 30202, + "start": 30193, + "end": 30201, "loc": { "start": { "line": 713, @@ -59492,8 +59492,8 @@ }, "object": { "type": "Identifier", - "start": 30194, - "end": 30197, + "start": 30193, + "end": 30196, "loc": { "start": { "line": 713, @@ -59509,8 +59509,8 @@ }, "property": { "type": "Identifier", - "start": 30198, - "end": 30202, + "start": 30197, + "end": 30201, "loc": { "start": { "line": 713, @@ -59529,8 +59529,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30203, - "end": 30259, + "start": 30202, + "end": 30258, "loc": { "start": { "line": 713, @@ -59552,8 +59552,8 @@ }, { "type": "ExpressionStatement", - "start": 30270, - "end": 30341, + "start": 30269, + "end": 30340, "loc": { "start": { "line": 714, @@ -59566,8 +59566,8 @@ }, "expression": { "type": "CallExpression", - "start": 30270, - "end": 30340, + "start": 30269, + "end": 30339, "loc": { "start": { "line": 714, @@ -59580,8 +59580,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30270, - "end": 30278, + "start": 30269, + "end": 30277, "loc": { "start": { "line": 714, @@ -59594,8 +59594,8 @@ }, "object": { "type": "Identifier", - "start": 30270, - "end": 30273, + "start": 30269, + "end": 30272, "loc": { "start": { "line": 714, @@ -59611,8 +59611,8 @@ }, "property": { "type": "Identifier", - "start": 30274, - "end": 30278, + "start": 30273, + "end": 30277, "loc": { "start": { "line": 714, @@ -59631,8 +59631,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30279, - "end": 30339, + "start": 30278, + "end": 30338, "loc": { "start": { "line": 714, @@ -59654,8 +59654,8 @@ }, { "type": "ExpressionStatement", - "start": 30351, - "end": 30454, + "start": 30350, + "end": 30453, "loc": { "start": { "line": 716, @@ -59668,8 +59668,8 @@ }, "expression": { "type": "CallExpression", - "start": 30351, - "end": 30453, + "start": 30350, + "end": 30452, "loc": { "start": { "line": 716, @@ -59682,8 +59682,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30351, - "end": 30359, + "start": 30350, + "end": 30358, "loc": { "start": { "line": 716, @@ -59696,8 +59696,8 @@ }, "object": { "type": "Identifier", - "start": 30351, - "end": 30354, + "start": 30350, + "end": 30353, "loc": { "start": { "line": 716, @@ -59713,8 +59713,8 @@ }, "property": { "type": "Identifier", - "start": 30355, - "end": 30359, + "start": 30354, + "end": 30358, "loc": { "start": { "line": 716, @@ -59733,8 +59733,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30360, - "end": 30452, + "start": 30359, + "end": 30451, "loc": { "start": { "line": 716, @@ -59756,8 +59756,8 @@ }, { "type": "ExpressionStatement", - "start": 30463, - "end": 30533, + "start": 30462, + "end": 30532, "loc": { "start": { "line": 717, @@ -59770,8 +59770,8 @@ }, "expression": { "type": "CallExpression", - "start": 30463, - "end": 30532, + "start": 30462, + "end": 30531, "loc": { "start": { "line": 717, @@ -59784,8 +59784,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30463, - "end": 30471, + "start": 30462, + "end": 30470, "loc": { "start": { "line": 717, @@ -59798,8 +59798,8 @@ }, "object": { "type": "Identifier", - "start": 30463, - "end": 30466, + "start": 30462, + "end": 30465, "loc": { "start": { "line": 717, @@ -59815,8 +59815,8 @@ }, "property": { "type": "Identifier", - "start": 30467, - "end": 30471, + "start": 30466, + "end": 30470, "loc": { "start": { "line": 717, @@ -59835,8 +59835,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30472, - "end": 30531, + "start": 30471, + "end": 30530, "loc": { "start": { "line": 717, @@ -59858,8 +59858,8 @@ }, { "type": "ExpressionStatement", - "start": 30542, - "end": 30638, + "start": 30541, + "end": 30637, "loc": { "start": { "line": 718, @@ -59872,8 +59872,8 @@ }, "expression": { "type": "CallExpression", - "start": 30542, - "end": 30637, + "start": 30541, + "end": 30636, "loc": { "start": { "line": 718, @@ -59886,8 +59886,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30542, - "end": 30550, + "start": 30541, + "end": 30549, "loc": { "start": { "line": 718, @@ -59900,8 +59900,8 @@ }, "object": { "type": "Identifier", - "start": 30542, - "end": 30545, + "start": 30541, + "end": 30544, "loc": { "start": { "line": 718, @@ -59917,8 +59917,8 @@ }, "property": { "type": "Identifier", - "start": 30546, - "end": 30550, + "start": 30545, + "end": 30549, "loc": { "start": { "line": 718, @@ -59937,8 +59937,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30551, - "end": 30636, + "start": 30550, + "end": 30635, "loc": { "start": { "line": 718, @@ -59960,8 +59960,8 @@ }, { "type": "ExpressionStatement", - "start": 30648, - "end": 30704, + "start": 30647, + "end": 30703, "loc": { "start": { "line": 720, @@ -59974,8 +59974,8 @@ }, "expression": { "type": "CallExpression", - "start": 30648, - "end": 30703, + "start": 30647, + "end": 30702, "loc": { "start": { "line": 720, @@ -59988,8 +59988,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30648, - "end": 30656, + "start": 30647, + "end": 30655, "loc": { "start": { "line": 720, @@ -60002,8 +60002,8 @@ }, "object": { "type": "Identifier", - "start": 30648, - "end": 30651, + "start": 30647, + "end": 30650, "loc": { "start": { "line": 720, @@ -60019,8 +60019,8 @@ }, "property": { "type": "Identifier", - "start": 30652, - "end": 30656, + "start": 30651, + "end": 30655, "loc": { "start": { "line": 720, @@ -60039,8 +60039,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30657, - "end": 30702, + "start": 30656, + "end": 30701, "loc": { "start": { "line": 720, @@ -60062,8 +60062,8 @@ }, { "type": "ExpressionStatement", - "start": 30713, - "end": 30764, + "start": 30712, + "end": 30774, "loc": { "start": { "line": 721, @@ -60071,13 +60071,13 @@ }, "end": { "line": 721, - "column": 59 + "column": 70 } }, "expression": { "type": "CallExpression", - "start": 30713, - "end": 30763, + "start": 30712, + "end": 30773, "loc": { "start": { "line": 721, @@ -60085,13 +60085,13 @@ }, "end": { "line": 721, - "column": 58 + "column": 69 } }, "callee": { "type": "MemberExpression", - "start": 30713, - "end": 30721, + "start": 30712, + "end": 30720, "loc": { "start": { "line": 721, @@ -60104,8 +60104,8 @@ }, "object": { "type": "Identifier", - "start": 30713, - "end": 30716, + "start": 30712, + "end": 30715, "loc": { "start": { "line": 721, @@ -60121,8 +60121,8 @@ }, "property": { "type": "Identifier", - "start": 30717, - "end": 30721, + "start": 30716, + "end": 30720, "loc": { "start": { "line": 721, @@ -60141,8 +60141,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30722, - "end": 30762, + "start": 30721, + "end": 30772, "loc": { "start": { "line": 721, @@ -60150,22 +60150,22 @@ }, "end": { "line": 721, - "column": 57 + "column": 68 } }, "extra": { - "rawValue": "geometry.viewNormal = -vViewNormal;", - "raw": "\"geometry.viewNormal = -vViewNormal;\"" + "rawValue": "geometry.viewNormal = -normalize(vViewNormal);", + "raw": "\"geometry.viewNormal = -normalize(vViewNormal);\"" }, - "value": "geometry.viewNormal = -vViewNormal;" + "value": "geometry.viewNormal = -normalize(vViewNormal);" } ] } }, { "type": "ExpressionStatement", - "start": 30773, - "end": 30840, + "start": 30783, + "end": 30850, "loc": { "start": { "line": 722, @@ -60178,8 +60178,8 @@ }, "expression": { "type": "CallExpression", - "start": 30773, - "end": 30839, + "start": 30783, + "end": 30849, "loc": { "start": { "line": 722, @@ -60192,8 +60192,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30773, - "end": 30781, + "start": 30783, + "end": 30791, "loc": { "start": { "line": 722, @@ -60206,8 +60206,8 @@ }, "object": { "type": "Identifier", - "start": 30773, - "end": 30776, + "start": 30783, + "end": 30786, "loc": { "start": { "line": 722, @@ -60223,8 +60223,8 @@ }, "property": { "type": "Identifier", - "start": 30777, - "end": 30781, + "start": 30787, + "end": 30791, "loc": { "start": { "line": 722, @@ -60243,8 +60243,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30782, - "end": 30838, + "start": 30792, + "end": 30848, "loc": { "start": { "line": 722, @@ -60266,8 +60266,8 @@ }, { "type": "IfStatement", - "start": 30850, - "end": 30974, + "start": 30860, + "end": 30984, "loc": { "start": { "line": 724, @@ -60280,8 +60280,8 @@ }, "test": { "type": "BinaryExpression", - "start": 30854, - "end": 30886, + "start": 30864, + "end": 30896, "loc": { "start": { "line": 724, @@ -60294,8 +60294,8 @@ }, "left": { "type": "MemberExpression", - "start": 30854, - "end": 30882, + "start": 30864, + "end": 30892, "loc": { "start": { "line": 724, @@ -60308,8 +60308,8 @@ }, "object": { "type": "MemberExpression", - "start": 30854, - "end": 30875, + "start": 30864, + "end": 30885, "loc": { "start": { "line": 724, @@ -60322,8 +60322,8 @@ }, "object": { "type": "Identifier", - "start": 30854, - "end": 30865, + "start": 30864, + "end": 30875, "loc": { "start": { "line": 724, @@ -60339,8 +60339,8 @@ }, "property": { "type": "Identifier", - "start": 30866, - "end": 30875, + "start": 30876, + "end": 30885, "loc": { "start": { "line": 724, @@ -60358,8 +60358,8 @@ }, "property": { "type": "Identifier", - "start": 30876, - "end": 30882, + "start": 30886, + "end": 30892, "loc": { "start": { "line": 724, @@ -60378,8 +60378,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 30885, - "end": 30886, + "start": 30895, + "end": 30896, "loc": { "start": { "line": 724, @@ -60399,8 +60399,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 30888, - "end": 30974, + "start": 30898, + "end": 30984, "loc": { "start": { "line": 724, @@ -60414,8 +60414,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 30902, - "end": 30964, + "start": 30912, + "end": 30974, "loc": { "start": { "line": 725, @@ -60428,8 +60428,8 @@ }, "expression": { "type": "CallExpression", - "start": 30902, - "end": 30963, + "start": 30912, + "end": 30973, "loc": { "start": { "line": 725, @@ -60442,8 +60442,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30902, - "end": 30910, + "start": 30912, + "end": 30920, "loc": { "start": { "line": 725, @@ -60456,8 +60456,8 @@ }, "object": { "type": "Identifier", - "start": 30902, - "end": 30905, + "start": 30912, + "end": 30915, "loc": { "start": { "line": 725, @@ -60473,8 +60473,8 @@ }, "property": { "type": "Identifier", - "start": 30906, - "end": 30910, + "start": 30916, + "end": 30920, "loc": { "start": { "line": 725, @@ -60493,8 +60493,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30911, - "end": 30962, + "start": 30921, + "end": 30972, "loc": { "start": { "line": 725, @@ -60521,8 +60521,8 @@ }, { "type": "IfStatement", - "start": 30984, - "end": 31159, + "start": 30994, + "end": 31169, "loc": { "start": { "line": 728, @@ -60535,8 +60535,8 @@ }, "test": { "type": "LogicalExpression", - "start": 30988, - "end": 31061, + "start": 30998, + "end": 31071, "loc": { "start": { "line": 728, @@ -60549,8 +60549,8 @@ }, "left": { "type": "BinaryExpression", - "start": 30988, - "end": 31020, + "start": 30998, + "end": 31030, "loc": { "start": { "line": 728, @@ -60563,8 +60563,8 @@ }, "left": { "type": "MemberExpression", - "start": 30988, - "end": 31016, + "start": 30998, + "end": 31026, "loc": { "start": { "line": 728, @@ -60577,8 +60577,8 @@ }, "object": { "type": "MemberExpression", - "start": 30988, - "end": 31009, + "start": 30998, + "end": 31019, "loc": { "start": { "line": 728, @@ -60591,8 +60591,8 @@ }, "object": { "type": "Identifier", - "start": 30988, - "end": 30999, + "start": 30998, + "end": 31009, "loc": { "start": { "line": 728, @@ -60608,8 +60608,8 @@ }, "property": { "type": "Identifier", - "start": 31000, - "end": 31009, + "start": 31010, + "end": 31019, "loc": { "start": { "line": 728, @@ -60627,8 +60627,8 @@ }, "property": { "type": "Identifier", - "start": 31010, - "end": 31016, + "start": 31020, + "end": 31026, "loc": { "start": { "line": 728, @@ -60647,8 +60647,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 31019, - "end": 31020, + "start": 31029, + "end": 31030, "loc": { "start": { "line": 728, @@ -60669,8 +60669,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 31024, - "end": 31061, + "start": 31034, + "end": 31071, "loc": { "start": { "line": 728, @@ -60683,8 +60683,8 @@ }, "left": { "type": "MemberExpression", - "start": 31024, - "end": 31057, + "start": 31034, + "end": 31067, "loc": { "start": { "line": 728, @@ -60697,8 +60697,8 @@ }, "object": { "type": "MemberExpression", - "start": 31024, - "end": 31050, + "start": 31034, + "end": 31060, "loc": { "start": { "line": 728, @@ -60711,8 +60711,8 @@ }, "object": { "type": "Identifier", - "start": 31024, - "end": 31035, + "start": 31034, + "end": 31045, "loc": { "start": { "line": 728, @@ -60728,8 +60728,8 @@ }, "property": { "type": "Identifier", - "start": 31036, - "end": 31050, + "start": 31046, + "end": 31060, "loc": { "start": { "line": 728, @@ -60747,8 +60747,8 @@ }, "property": { "type": "Identifier", - "start": 31051, - "end": 31057, + "start": 31061, + "end": 31067, "loc": { "start": { "line": 728, @@ -60767,8 +60767,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 31060, - "end": 31061, + "start": 31070, + "end": 31071, "loc": { "start": { "line": 728, @@ -60789,8 +60789,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 31063, - "end": 31159, + "start": 31073, + "end": 31169, "loc": { "start": { "line": 728, @@ -60804,8 +60804,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 31077, - "end": 31149, + "start": 31087, + "end": 31159, "loc": { "start": { "line": 729, @@ -60818,8 +60818,8 @@ }, "expression": { "type": "CallExpression", - "start": 31077, - "end": 31148, + "start": 31087, + "end": 31158, "loc": { "start": { "line": 729, @@ -60832,8 +60832,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31077, - "end": 31085, + "start": 31087, + "end": 31095, "loc": { "start": { "line": 729, @@ -60846,8 +60846,8 @@ }, "object": { "type": "Identifier", - "start": 31077, - "end": 31080, + "start": 31087, + "end": 31090, "loc": { "start": { "line": 729, @@ -60863,8 +60863,8 @@ }, "property": { "type": "Identifier", - "start": 31081, - "end": 31085, + "start": 31091, + "end": 31095, "loc": { "start": { "line": 729, @@ -60883,8 +60883,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31086, - "end": 31147, + "start": 31096, + "end": 31157, "loc": { "start": { "line": 729, @@ -60911,8 +60911,8 @@ }, { "type": "ForStatement", - "start": 31169, - "end": 32640, + "start": 31179, + "end": 32650, "loc": { "start": { "line": 732, @@ -60925,8 +60925,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 31174, - "end": 31216, + "start": 31184, + "end": 31226, "loc": { "start": { "line": 732, @@ -60940,8 +60940,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 31178, - "end": 31183, + "start": 31188, + "end": 31193, "loc": { "start": { "line": 732, @@ -60954,8 +60954,8 @@ }, "id": { "type": "Identifier", - "start": 31178, - "end": 31179, + "start": 31188, + "end": 31189, "loc": { "start": { "line": 732, @@ -60971,8 +60971,8 @@ }, "init": { "type": "NumericLiteral", - "start": 31182, - "end": 31183, + "start": 31192, + "end": 31193, "loc": { "start": { "line": 732, @@ -60992,8 +60992,8 @@ }, { "type": "VariableDeclarator", - "start": 31185, - "end": 31216, + "start": 31195, + "end": 31226, "loc": { "start": { "line": 732, @@ -61006,8 +61006,8 @@ }, "id": { "type": "Identifier", - "start": 31185, - "end": 31188, + "start": 31195, + "end": 31198, "loc": { "start": { "line": 732, @@ -61023,8 +61023,8 @@ }, "init": { "type": "MemberExpression", - "start": 31191, - "end": 31216, + "start": 31201, + "end": 31226, "loc": { "start": { "line": 732, @@ -61037,8 +61037,8 @@ }, "object": { "type": "MemberExpression", - "start": 31191, - "end": 31209, + "start": 31201, + "end": 31219, "loc": { "start": { "line": 732, @@ -61051,8 +61051,8 @@ }, "object": { "type": "Identifier", - "start": 31191, - "end": 31202, + "start": 31201, + "end": 31212, "loc": { "start": { "line": 732, @@ -61068,8 +61068,8 @@ }, "property": { "type": "Identifier", - "start": 31203, - "end": 31209, + "start": 31213, + "end": 31219, "loc": { "start": { "line": 732, @@ -61087,8 +61087,8 @@ }, "property": { "type": "Identifier", - "start": 31210, - "end": 31216, + "start": 31220, + "end": 31226, "loc": { "start": { "line": 732, @@ -61110,8 +61110,8 @@ }, "test": { "type": "BinaryExpression", - "start": 31218, - "end": 31225, + "start": 31228, + "end": 31235, "loc": { "start": { "line": 732, @@ -61124,8 +61124,8 @@ }, "left": { "type": "Identifier", - "start": 31218, - "end": 31219, + "start": 31228, + "end": 31229, "loc": { "start": { "line": 732, @@ -61142,8 +61142,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 31222, - "end": 31225, + "start": 31232, + "end": 31235, "loc": { "start": { "line": 732, @@ -61160,8 +61160,8 @@ }, "update": { "type": "UpdateExpression", - "start": 31227, - "end": 31230, + "start": 31237, + "end": 31240, "loc": { "start": { "line": 732, @@ -61176,8 +61176,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 31227, - "end": 31228, + "start": 31237, + "end": 31238, "loc": { "start": { "line": 732, @@ -61194,8 +61194,8 @@ }, "body": { "type": "BlockStatement", - "start": 31232, - "end": 32640, + "start": 31242, + "end": 32650, "loc": { "start": { "line": 732, @@ -61209,8 +61209,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 31246, - "end": 31282, + "start": 31256, + "end": 31292, "loc": { "start": { "line": 733, @@ -61224,8 +61224,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 31252, - "end": 31281, + "start": 31262, + "end": 31291, "loc": { "start": { "line": 733, @@ -61238,8 +61238,8 @@ }, "id": { "type": "Identifier", - "start": 31252, - "end": 31257, + "start": 31262, + "end": 31267, "loc": { "start": { "line": 733, @@ -61255,8 +61255,8 @@ }, "init": { "type": "MemberExpression", - "start": 31260, - "end": 31281, + "start": 31270, + "end": 31291, "loc": { "start": { "line": 733, @@ -61269,8 +61269,8 @@ }, "object": { "type": "MemberExpression", - "start": 31260, - "end": 31278, + "start": 31270, + "end": 31288, "loc": { "start": { "line": 733, @@ -61283,8 +61283,8 @@ }, "object": { "type": "Identifier", - "start": 31260, - "end": 31271, + "start": 31270, + "end": 31281, "loc": { "start": { "line": 733, @@ -61300,8 +61300,8 @@ }, "property": { "type": "Identifier", - "start": 31272, - "end": 31278, + "start": 31282, + "end": 31288, "loc": { "start": { "line": 733, @@ -61319,8 +61319,8 @@ }, "property": { "type": "Identifier", - "start": 31279, - "end": 31280, + "start": 31289, + "end": 31290, "loc": { "start": { "line": 733, @@ -61342,8 +61342,8 @@ }, { "type": "IfStatement", - "start": 31295, - "end": 31366, + "start": 31305, + "end": 31376, "loc": { "start": { "line": 734, @@ -61356,8 +61356,8 @@ }, "test": { "type": "BinaryExpression", - "start": 31299, - "end": 31323, + "start": 31309, + "end": 31333, "loc": { "start": { "line": 734, @@ -61370,8 +61370,8 @@ }, "left": { "type": "MemberExpression", - "start": 31299, - "end": 31309, + "start": 31309, + "end": 31319, "loc": { "start": { "line": 734, @@ -61384,8 +61384,8 @@ }, "object": { "type": "Identifier", - "start": 31299, - "end": 31304, + "start": 31309, + "end": 31314, "loc": { "start": { "line": 734, @@ -61401,8 +61401,8 @@ }, "property": { "type": "Identifier", - "start": 31305, - "end": 31309, + "start": 31315, + "end": 31319, "loc": { "start": { "line": 734, @@ -61421,8 +61421,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 31314, - "end": 31323, + "start": 31324, + "end": 31333, "loc": { "start": { "line": 734, @@ -61442,8 +61442,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 31325, - "end": 31366, + "start": 31335, + "end": 31376, "loc": { "start": { "line": 734, @@ -61457,8 +61457,8 @@ "body": [ { "type": "ContinueStatement", - "start": 31343, - "end": 31352, + "start": 31353, + "end": 31362, "loc": { "start": { "line": 735, @@ -61478,8 +61478,8 @@ }, { "type": "IfStatement", - "start": 31379, - "end": 32433, + "start": 31389, + "end": 32443, "loc": { "start": { "line": 737, @@ -61492,8 +61492,8 @@ }, "test": { "type": "BinaryExpression", - "start": 31383, - "end": 31403, + "start": 31393, + "end": 31413, "loc": { "start": { "line": 737, @@ -61506,8 +61506,8 @@ }, "left": { "type": "MemberExpression", - "start": 31383, - "end": 31393, + "start": 31393, + "end": 31403, "loc": { "start": { "line": 737, @@ -61520,8 +61520,8 @@ }, "object": { "type": "Identifier", - "start": 31383, - "end": 31388, + "start": 31393, + "end": 31398, "loc": { "start": { "line": 737, @@ -61537,8 +61537,8 @@ }, "property": { "type": "Identifier", - "start": 31389, - "end": 31393, + "start": 31399, + "end": 31403, "loc": { "start": { "line": 737, @@ -61557,8 +61557,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 31398, - "end": 31403, + "start": 31408, + "end": 31413, "loc": { "start": { "line": 737, @@ -61578,8 +61578,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 31405, - "end": 31703, + "start": 31415, + "end": 31713, "loc": { "start": { "line": 737, @@ -61593,8 +61593,8 @@ "body": [ { "type": "IfStatement", - "start": 31423, - "end": 31689, + "start": 31433, + "end": 31699, "loc": { "start": { "line": 738, @@ -61607,8 +61607,8 @@ }, "test": { "type": "BinaryExpression", - "start": 31427, - "end": 31449, + "start": 31437, + "end": 31459, "loc": { "start": { "line": 738, @@ -61621,8 +61621,8 @@ }, "left": { "type": "MemberExpression", - "start": 31427, - "end": 31438, + "start": 31437, + "end": 31448, "loc": { "start": { "line": 738, @@ -61635,8 +61635,8 @@ }, "object": { "type": "Identifier", - "start": 31427, - "end": 31432, + "start": 31437, + "end": 31442, "loc": { "start": { "line": 738, @@ -61652,8 +61652,8 @@ }, "property": { "type": "Identifier", - "start": 31433, - "end": 31438, + "start": 31443, + "end": 31448, "loc": { "start": { "line": 738, @@ -61672,8 +61672,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 31443, - "end": 31449, + "start": 31453, + "end": 31459, "loc": { "start": { "line": 738, @@ -61693,8 +61693,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 31451, - "end": 31552, + "start": 31461, + "end": 31562, "loc": { "start": { "line": 738, @@ -61708,8 +61708,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 31473, - "end": 31534, + "start": 31483, + "end": 31544, "loc": { "start": { "line": 739, @@ -61722,8 +61722,8 @@ }, "expression": { "type": "CallExpression", - "start": 31473, - "end": 31533, + "start": 31483, + "end": 31543, "loc": { "start": { "line": 739, @@ -61736,8 +61736,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31473, - "end": 31481, + "start": 31483, + "end": 31491, "loc": { "start": { "line": 739, @@ -61750,8 +61750,8 @@ }, "object": { "type": "Identifier", - "start": 31473, - "end": 31476, + "start": 31483, + "end": 31486, "loc": { "start": { "line": 739, @@ -61767,8 +61767,8 @@ }, "property": { "type": "Identifier", - "start": 31477, - "end": 31481, + "start": 31487, + "end": 31491, "loc": { "start": { "line": 739, @@ -61787,8 +61787,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 31482, - "end": 31532, + "start": 31492, + "end": 31542, "loc": { "start": { "line": 739, @@ -61801,8 +61801,8 @@ }, "left": { "type": "BinaryExpression", - "start": 31482, - "end": 31525, + "start": 31492, + "end": 31535, "loc": { "start": { "line": 739, @@ -61815,8 +61815,8 @@ }, "left": { "type": "StringLiteral", - "start": 31482, - "end": 31521, + "start": 31492, + "end": 31531, "loc": { "start": { "line": 739, @@ -61836,8 +61836,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 31524, - "end": 31525, + "start": 31534, + "end": 31535, "loc": { "start": { "line": 739, @@ -61855,8 +61855,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 31528, - "end": 31532, + "start": 31538, + "end": 31542, "loc": { "start": { "line": 739, @@ -61882,8 +61882,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 31558, - "end": 31689, + "start": 31568, + "end": 31699, "loc": { "start": { "line": 740, @@ -61897,8 +61897,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 31580, - "end": 31671, + "start": 31590, + "end": 31681, "loc": { "start": { "line": 741, @@ -61911,8 +61911,8 @@ }, "expression": { "type": "CallExpression", - "start": 31580, - "end": 31670, + "start": 31590, + "end": 31680, "loc": { "start": { "line": 741, @@ -61925,8 +61925,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31580, - "end": 31588, + "start": 31590, + "end": 31598, "loc": { "start": { "line": 741, @@ -61939,8 +61939,8 @@ }, "object": { "type": "Identifier", - "start": 31580, - "end": 31583, + "start": 31590, + "end": 31593, "loc": { "start": { "line": 741, @@ -61956,8 +61956,8 @@ }, "property": { "type": "Identifier", - "start": 31584, - "end": 31588, + "start": 31594, + "end": 31598, "loc": { "start": { "line": 741, @@ -61976,8 +61976,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 31589, - "end": 31669, + "start": 31599, + "end": 31679, "loc": { "start": { "line": 741, @@ -61990,8 +61990,8 @@ }, "left": { "type": "BinaryExpression", - "start": 31589, - "end": 31651, + "start": 31599, + "end": 31661, "loc": { "start": { "line": 741, @@ -62004,8 +62004,8 @@ }, "left": { "type": "StringLiteral", - "start": 31589, - "end": 31647, + "start": 31599, + "end": 31657, "loc": { "start": { "line": 741, @@ -62025,8 +62025,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 31650, - "end": 31651, + "start": 31660, + "end": 31661, "loc": { "start": { "line": 741, @@ -62044,8 +62044,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 31654, - "end": 31669, + "start": 31664, + "end": 31679, "loc": { "start": { "line": 741, @@ -62075,8 +62075,8 @@ }, "alternate": { "type": "IfStatement", - "start": 31709, - "end": 32433, + "start": 31719, + "end": 32443, "loc": { "start": { "line": 743, @@ -62089,8 +62089,8 @@ }, "test": { "type": "BinaryExpression", - "start": 31713, - "end": 31735, + "start": 31723, + "end": 31745, "loc": { "start": { "line": 743, @@ -62103,8 +62103,8 @@ }, "left": { "type": "MemberExpression", - "start": 31713, - "end": 31723, + "start": 31723, + "end": 31733, "loc": { "start": { "line": 743, @@ -62117,8 +62117,8 @@ }, "object": { "type": "Identifier", - "start": 31713, - "end": 31718, + "start": 31723, + "end": 31728, "loc": { "start": { "line": 743, @@ -62134,8 +62134,8 @@ }, "property": { "type": "Identifier", - "start": 31719, - "end": 31723, + "start": 31729, + "end": 31733, "loc": { "start": { "line": 743, @@ -62154,8 +62154,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 31728, - "end": 31735, + "start": 31738, + "end": 31745, "loc": { "start": { "line": 743, @@ -62175,8 +62175,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 31737, - "end": 32055, + "start": 31747, + "end": 32065, "loc": { "start": { "line": 743, @@ -62190,8 +62190,8 @@ "body": [ { "type": "IfStatement", - "start": 31755, - "end": 32041, + "start": 31765, + "end": 32051, "loc": { "start": { "line": 744, @@ -62204,8 +62204,8 @@ }, "test": { "type": "BinaryExpression", - "start": 31759, - "end": 31781, + "start": 31769, + "end": 31791, "loc": { "start": { "line": 744, @@ -62218,8 +62218,8 @@ }, "left": { "type": "MemberExpression", - "start": 31759, - "end": 31770, + "start": 31769, + "end": 31780, "loc": { "start": { "line": 744, @@ -62232,8 +62232,8 @@ }, "object": { "type": "Identifier", - "start": 31759, - "end": 31764, + "start": 31769, + "end": 31774, "loc": { "start": { "line": 744, @@ -62249,8 +62249,8 @@ }, "property": { "type": "Identifier", - "start": 31765, - "end": 31770, + "start": 31775, + "end": 31780, "loc": { "start": { "line": 744, @@ -62269,8 +62269,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 31775, - "end": 31781, + "start": 31785, + "end": 31791, "loc": { "start": { "line": 744, @@ -62290,8 +62290,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 31783, - "end": 31904, + "start": 31793, + "end": 31914, "loc": { "start": { "line": 744, @@ -62305,8 +62305,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 31805, - "end": 31886, + "start": 31815, + "end": 31896, "loc": { "start": { "line": 745, @@ -62319,8 +62319,8 @@ }, "expression": { "type": "CallExpression", - "start": 31805, - "end": 31885, + "start": 31815, + "end": 31895, "loc": { "start": { "line": 745, @@ -62333,8 +62333,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31805, - "end": 31813, + "start": 31815, + "end": 31823, "loc": { "start": { "line": 745, @@ -62347,8 +62347,8 @@ }, "object": { "type": "Identifier", - "start": 31805, - "end": 31808, + "start": 31815, + "end": 31818, "loc": { "start": { "line": 745, @@ -62364,8 +62364,8 @@ }, "property": { "type": "Identifier", - "start": 31809, - "end": 31813, + "start": 31819, + "end": 31823, "loc": { "start": { "line": 745, @@ -62384,8 +62384,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 31814, - "end": 31884, + "start": 31824, + "end": 31894, "loc": { "start": { "line": 745, @@ -62398,8 +62398,8 @@ }, "left": { "type": "BinaryExpression", - "start": 31814, - "end": 31857, + "start": 31824, + "end": 31867, "loc": { "start": { "line": 745, @@ -62412,8 +62412,8 @@ }, "left": { "type": "StringLiteral", - "start": 31814, - "end": 31853, + "start": 31824, + "end": 31863, "loc": { "start": { "line": 745, @@ -62433,8 +62433,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 31856, - "end": 31857, + "start": 31866, + "end": 31867, "loc": { "start": { "line": 745, @@ -62452,8 +62452,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 31860, - "end": 31884, + "start": 31870, + "end": 31894, "loc": { "start": { "line": 745, @@ -62479,8 +62479,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 31910, - "end": 32041, + "start": 31920, + "end": 32051, "loc": { "start": { "line": 746, @@ -62494,8 +62494,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 31932, - "end": 32023, + "start": 31942, + "end": 32033, "loc": { "start": { "line": 747, @@ -62508,8 +62508,8 @@ }, "expression": { "type": "CallExpression", - "start": 31932, - "end": 32022, + "start": 31942, + "end": 32032, "loc": { "start": { "line": 747, @@ -62522,8 +62522,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31932, - "end": 31940, + "start": 31942, + "end": 31950, "loc": { "start": { "line": 747, @@ -62536,8 +62536,8 @@ }, "object": { "type": "Identifier", - "start": 31932, - "end": 31935, + "start": 31942, + "end": 31945, "loc": { "start": { "line": 747, @@ -62553,8 +62553,8 @@ }, "property": { "type": "Identifier", - "start": 31936, - "end": 31940, + "start": 31946, + "end": 31950, "loc": { "start": { "line": 747, @@ -62573,8 +62573,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 31941, - "end": 32021, + "start": 31951, + "end": 32031, "loc": { "start": { "line": 747, @@ -62587,8 +62587,8 @@ }, "left": { "type": "BinaryExpression", - "start": 31941, - "end": 32003, + "start": 31951, + "end": 32013, "loc": { "start": { "line": 747, @@ -62601,8 +62601,8 @@ }, "left": { "type": "StringLiteral", - "start": 31941, - "end": 31999, + "start": 31951, + "end": 32009, "loc": { "start": { "line": 747, @@ -62622,8 +62622,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32002, - "end": 32003, + "start": 32012, + "end": 32013, "loc": { "start": { "line": 747, @@ -62641,8 +62641,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32006, - "end": 32021, + "start": 32016, + "end": 32031, "loc": { "start": { "line": 747, @@ -62672,8 +62672,8 @@ }, "alternate": { "type": "IfStatement", - "start": 32061, - "end": 32433, + "start": 32071, + "end": 32443, "loc": { "start": { "line": 749, @@ -62686,8 +62686,8 @@ }, "test": { "type": "BinaryExpression", - "start": 32065, - "end": 32086, + "start": 32075, + "end": 32096, "loc": { "start": { "line": 749, @@ -62700,8 +62700,8 @@ }, "left": { "type": "MemberExpression", - "start": 32065, - "end": 32075, + "start": 32075, + "end": 32085, "loc": { "start": { "line": 749, @@ -62714,8 +62714,8 @@ }, "object": { "type": "Identifier", - "start": 32065, - "end": 32070, + "start": 32075, + "end": 32080, "loc": { "start": { "line": 749, @@ -62731,8 +62731,8 @@ }, "property": { "type": "Identifier", - "start": 32071, - "end": 32075, + "start": 32081, + "end": 32085, "loc": { "start": { "line": 749, @@ -62751,8 +62751,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 32080, - "end": 32086, + "start": 32090, + "end": 32096, "loc": { "start": { "line": 749, @@ -62772,8 +62772,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 32088, - "end": 32386, + "start": 32098, + "end": 32396, "loc": { "start": { "line": 749, @@ -62787,8 +62787,8 @@ "body": [ { "type": "IfStatement", - "start": 32106, - "end": 32372, + "start": 32116, + "end": 32382, "loc": { "start": { "line": 750, @@ -62801,8 +62801,8 @@ }, "test": { "type": "BinaryExpression", - "start": 32110, - "end": 32132, + "start": 32120, + "end": 32142, "loc": { "start": { "line": 750, @@ -62815,8 +62815,8 @@ }, "left": { "type": "MemberExpression", - "start": 32110, - "end": 32121, + "start": 32120, + "end": 32131, "loc": { "start": { "line": 750, @@ -62829,8 +62829,8 @@ }, "object": { "type": "Identifier", - "start": 32110, - "end": 32115, + "start": 32120, + "end": 32125, "loc": { "start": { "line": 750, @@ -62846,8 +62846,8 @@ }, "property": { "type": "Identifier", - "start": 32116, - "end": 32121, + "start": 32126, + "end": 32131, "loc": { "start": { "line": 750, @@ -62866,8 +62866,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 32126, - "end": 32132, + "start": 32136, + "end": 32142, "loc": { "start": { "line": 750, @@ -62887,8 +62887,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 32134, - "end": 32235, + "start": 32144, + "end": 32245, "loc": { "start": { "line": 750, @@ -62902,8 +62902,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 32156, - "end": 32217, + "start": 32166, + "end": 32227, "loc": { "start": { "line": 751, @@ -62916,8 +62916,8 @@ }, "expression": { "type": "CallExpression", - "start": 32156, - "end": 32216, + "start": 32166, + "end": 32226, "loc": { "start": { "line": 751, @@ -62930,8 +62930,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32156, - "end": 32164, + "start": 32166, + "end": 32174, "loc": { "start": { "line": 751, @@ -62944,8 +62944,8 @@ }, "object": { "type": "Identifier", - "start": 32156, - "end": 32159, + "start": 32166, + "end": 32169, "loc": { "start": { "line": 751, @@ -62961,8 +62961,8 @@ }, "property": { "type": "Identifier", - "start": 32160, - "end": 32164, + "start": 32170, + "end": 32174, "loc": { "start": { "line": 751, @@ -62981,8 +62981,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 32165, - "end": 32215, + "start": 32175, + "end": 32225, "loc": { "start": { "line": 751, @@ -62995,8 +62995,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32165, - "end": 32208, + "start": 32175, + "end": 32218, "loc": { "start": { "line": 751, @@ -63009,8 +63009,8 @@ }, "left": { "type": "StringLiteral", - "start": 32165, - "end": 32204, + "start": 32175, + "end": 32214, "loc": { "start": { "line": 751, @@ -63030,8 +63030,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32207, - "end": 32208, + "start": 32217, + "end": 32218, "loc": { "start": { "line": 751, @@ -63049,8 +63049,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32211, - "end": 32215, + "start": 32221, + "end": 32225, "loc": { "start": { "line": 751, @@ -63076,8 +63076,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 32241, - "end": 32372, + "start": 32251, + "end": 32382, "loc": { "start": { "line": 752, @@ -63091,8 +63091,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 32263, - "end": 32354, + "start": 32273, + "end": 32364, "loc": { "start": { "line": 753, @@ -63105,8 +63105,8 @@ }, "expression": { "type": "CallExpression", - "start": 32263, - "end": 32353, + "start": 32273, + "end": 32363, "loc": { "start": { "line": 753, @@ -63119,8 +63119,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32263, - "end": 32271, + "start": 32273, + "end": 32281, "loc": { "start": { "line": 753, @@ -63133,8 +63133,8 @@ }, "object": { "type": "Identifier", - "start": 32263, - "end": 32266, + "start": 32273, + "end": 32276, "loc": { "start": { "line": 753, @@ -63150,8 +63150,8 @@ }, "property": { "type": "Identifier", - "start": 32267, - "end": 32271, + "start": 32277, + "end": 32281, "loc": { "start": { "line": 753, @@ -63170,8 +63170,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 32272, - "end": 32352, + "start": 32282, + "end": 32362, "loc": { "start": { "line": 753, @@ -63184,8 +63184,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32272, - "end": 32334, + "start": 32282, + "end": 32344, "loc": { "start": { "line": 753, @@ -63198,8 +63198,8 @@ }, "left": { "type": "StringLiteral", - "start": 32272, - "end": 32330, + "start": 32282, + "end": 32340, "loc": { "start": { "line": 753, @@ -63219,8 +63219,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32333, - "end": 32334, + "start": 32343, + "end": 32344, "loc": { "start": { "line": 753, @@ -63238,8 +63238,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32337, - "end": 32352, + "start": 32347, + "end": 32362, "loc": { "start": { "line": 753, @@ -63269,8 +63269,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 32392, - "end": 32433, + "start": 32402, + "end": 32443, "loc": { "start": { "line": 755, @@ -63284,8 +63284,8 @@ "body": [ { "type": "ContinueStatement", - "start": 32410, - "end": 32419, + "start": 32420, + "end": 32429, "loc": { "start": { "line": 756, @@ -63306,8 +63306,8 @@ }, { "type": "ExpressionStatement", - "start": 32447, - "end": 32523, + "start": 32457, + "end": 32533, "loc": { "start": { "line": 759, @@ -63320,8 +63320,8 @@ }, "expression": { "type": "CallExpression", - "start": 32447, - "end": 32522, + "start": 32457, + "end": 32532, "loc": { "start": { "line": 759, @@ -63334,8 +63334,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32447, - "end": 32455, + "start": 32457, + "end": 32465, "loc": { "start": { "line": 759, @@ -63348,8 +63348,8 @@ }, "object": { "type": "Identifier", - "start": 32447, - "end": 32450, + "start": 32457, + "end": 32460, "loc": { "start": { "line": 759, @@ -63365,8 +63365,8 @@ }, "property": { "type": "Identifier", - "start": 32451, - "end": 32455, + "start": 32461, + "end": 32465, "loc": { "start": { "line": 759, @@ -63385,8 +63385,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 32456, - "end": 32521, + "start": 32466, + "end": 32531, "loc": { "start": { "line": 759, @@ -63399,8 +63399,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32456, - "end": 32513, + "start": 32466, + "end": 32523, "loc": { "start": { "line": 759, @@ -63413,8 +63413,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32456, - "end": 32509, + "start": 32466, + "end": 32519, "loc": { "start": { "line": 759, @@ -63427,8 +63427,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32456, - "end": 32487, + "start": 32466, + "end": 32497, "loc": { "start": { "line": 759, @@ -63441,8 +63441,8 @@ }, "left": { "type": "StringLiteral", - "start": 32456, - "end": 32483, + "start": 32466, + "end": 32493, "loc": { "start": { "line": 759, @@ -63462,8 +63462,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32486, - "end": 32487, + "start": 32496, + "end": 32497, "loc": { "start": { "line": 759, @@ -63481,8 +63481,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32490, - "end": 32509, + "start": 32500, + "end": 32519, "loc": { "start": { "line": 759, @@ -63503,8 +63503,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32512, - "end": 32513, + "start": 32522, + "end": 32523, "loc": { "start": { "line": 759, @@ -63522,8 +63522,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32516, - "end": 32521, + "start": 32526, + "end": 32531, "loc": { "start": { "line": 759, @@ -63547,8 +63547,8 @@ { "type": "CommentLine", "value": " a is intensity", - "start": 32524, - "end": 32541, + "start": 32534, + "end": 32551, "loc": { "start": { "line": 759, @@ -63564,8 +63564,8 @@ }, { "type": "ExpressionStatement", - "start": 32555, - "end": 32630, + "start": 32565, + "end": 32640, "loc": { "start": { "line": 761, @@ -63578,8 +63578,8 @@ }, "expression": { "type": "CallExpression", - "start": 32555, - "end": 32629, + "start": 32565, + "end": 32639, "loc": { "start": { "line": 761, @@ -63592,8 +63592,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32555, - "end": 32563, + "start": 32565, + "end": 32573, "loc": { "start": { "line": 761, @@ -63606,8 +63606,8 @@ }, "object": { "type": "Identifier", - "start": 32555, - "end": 32558, + "start": 32565, + "end": 32568, "loc": { "start": { "line": 761, @@ -63624,8 +63624,8 @@ }, "property": { "type": "Identifier", - "start": 32559, - "end": 32563, + "start": 32569, + "end": 32573, "loc": { "start": { "line": 761, @@ -63645,8 +63645,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32564, - "end": 32628, + "start": 32574, + "end": 32638, "loc": { "start": { "line": 761, @@ -63670,8 +63670,8 @@ { "type": "CommentLine", "value": " a is intensity", - "start": 32524, - "end": 32541, + "start": 32534, + "end": 32551, "loc": { "start": { "line": 759, @@ -63691,8 +63691,8 @@ }, { "type": "ExpressionStatement", - "start": 32650, - "end": 32781, + "start": 32660, + "end": 32791, "loc": { "start": { "line": 764, @@ -63705,8 +63705,8 @@ }, "expression": { "type": "CallExpression", - "start": 32650, - "end": 32780, + "start": 32660, + "end": 32790, "loc": { "start": { "line": 764, @@ -63719,8 +63719,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32650, - "end": 32658, + "start": 32660, + "end": 32668, "loc": { "start": { "line": 764, @@ -63733,8 +63733,8 @@ }, "object": { "type": "Identifier", - "start": 32650, - "end": 32653, + "start": 32660, + "end": 32663, "loc": { "start": { "line": 764, @@ -63750,8 +63750,8 @@ }, "property": { "type": "Identifier", - "start": 32654, - "end": 32658, + "start": 32664, + "end": 32668, "loc": { "start": { "line": 764, @@ -63770,8 +63770,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32659, - "end": 32779, + "start": 32669, + "end": 32789, "loc": { "start": { "line": 764, @@ -63793,8 +63793,8 @@ }, { "type": "ExpressionStatement", - "start": 32791, - "end": 32819, + "start": 32801, + "end": 32829, "loc": { "start": { "line": 766, @@ -63807,8 +63807,8 @@ }, "expression": { "type": "CallExpression", - "start": 32791, - "end": 32818, + "start": 32801, + "end": 32828, "loc": { "start": { "line": 766, @@ -63821,8 +63821,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32791, - "end": 32799, + "start": 32801, + "end": 32809, "loc": { "start": { "line": 766, @@ -63835,8 +63835,8 @@ }, "object": { "type": "Identifier", - "start": 32791, - "end": 32794, + "start": 32801, + "end": 32804, "loc": { "start": { "line": 766, @@ -63852,8 +63852,8 @@ }, "property": { "type": "Identifier", - "start": 32795, - "end": 32799, + "start": 32805, + "end": 32809, "loc": { "start": { "line": 766, @@ -63872,8 +63872,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32800, - "end": 32817, + "start": 32810, + "end": 32827, "loc": { "start": { "line": 766, @@ -63895,8 +63895,8 @@ }, { "type": "IfStatement", - "start": 32829, - "end": 33839, + "start": 32839, + "end": 33849, "loc": { "start": { "line": 768, @@ -63909,8 +63909,8 @@ }, "test": { "type": "MemberExpression", - "start": 32833, - "end": 32846, + "start": 32843, + "end": 32856, "loc": { "start": { "line": 768, @@ -63923,8 +63923,8 @@ }, "object": { "type": "ThisExpression", - "start": 32833, - "end": 32837, + "start": 32843, + "end": 32847, "loc": { "start": { "line": 768, @@ -63938,8 +63938,8 @@ }, "property": { "type": "Identifier", - "start": 32838, - "end": 32846, + "start": 32848, + "end": 32856, "loc": { "start": { "line": 768, @@ -63957,8 +63957,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 32848, - "end": 33739, + "start": 32858, + "end": 33749, "loc": { "start": { "line": 768, @@ -63972,8 +63972,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 33094, - "end": 33150, + "start": 33104, + "end": 33160, "loc": { "start": { "line": 771, @@ -63986,8 +63986,8 @@ }, "expression": { "type": "CallExpression", - "start": 33094, - "end": 33149, + "start": 33104, + "end": 33159, "loc": { "start": { "line": 771, @@ -64000,8 +64000,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33094, - "end": 33102, + "start": 33104, + "end": 33112, "loc": { "start": { "line": 771, @@ -64014,8 +64014,8 @@ }, "object": { "type": "Identifier", - "start": 33094, - "end": 33097, + "start": 33104, + "end": 33107, "loc": { "start": { "line": 771, @@ -64032,8 +64032,8 @@ }, "property": { "type": "Identifier", - "start": 33098, - "end": 33102, + "start": 33108, + "end": 33112, "loc": { "start": { "line": 771, @@ -64053,8 +64053,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33103, - "end": 33148, + "start": 33113, + "end": 33158, "loc": { "start": { "line": 771, @@ -64078,8 +64078,8 @@ { "type": "CommentLine", "value": " Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top", - "start": 32862, - "end": 32965, + "start": 32872, + "end": 32975, "loc": { "start": { "line": 769, @@ -64094,8 +64094,8 @@ { "type": "CommentLine", "value": " Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject", - "start": 32978, - "end": 33081, + "start": 32988, + "end": 33091, "loc": { "start": { "line": 770, @@ -64111,8 +64111,8 @@ }, { "type": "ExpressionStatement", - "start": 33163, - "end": 33219, + "start": 33173, + "end": 33229, "loc": { "start": { "line": 772, @@ -64125,8 +64125,8 @@ }, "expression": { "type": "CallExpression", - "start": 33163, - "end": 33218, + "start": 33173, + "end": 33228, "loc": { "start": { "line": 772, @@ -64139,8 +64139,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33163, - "end": 33171, + "start": 33173, + "end": 33181, "loc": { "start": { "line": 772, @@ -64153,8 +64153,8 @@ }, "object": { "type": "Identifier", - "start": 33163, - "end": 33166, + "start": 33173, + "end": 33176, "loc": { "start": { "line": 772, @@ -64170,8 +64170,8 @@ }, "property": { "type": "Identifier", - "start": 33167, - "end": 33171, + "start": 33177, + "end": 33181, "loc": { "start": { "line": 772, @@ -64190,8 +64190,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33172, - "end": 33217, + "start": 33182, + "end": 33227, "loc": { "start": { "line": 772, @@ -64213,8 +64213,8 @@ }, { "type": "ExpressionStatement", - "start": 33232, - "end": 33288, + "start": 33242, + "end": 33298, "loc": { "start": { "line": 773, @@ -64227,8 +64227,8 @@ }, "expression": { "type": "CallExpression", - "start": 33232, - "end": 33287, + "start": 33242, + "end": 33297, "loc": { "start": { "line": 773, @@ -64241,8 +64241,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33232, - "end": 33240, + "start": 33242, + "end": 33250, "loc": { "start": { "line": 773, @@ -64255,8 +64255,8 @@ }, "object": { "type": "Identifier", - "start": 33232, - "end": 33235, + "start": 33242, + "end": 33245, "loc": { "start": { "line": 773, @@ -64272,8 +64272,8 @@ }, "property": { "type": "Identifier", - "start": 33236, - "end": 33240, + "start": 33246, + "end": 33250, "loc": { "start": { "line": 773, @@ -64292,8 +64292,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33241, - "end": 33286, + "start": 33251, + "end": 33296, "loc": { "start": { "line": 773, @@ -64315,8 +64315,8 @@ }, { "type": "ExpressionStatement", - "start": 33301, - "end": 33357, + "start": 33311, + "end": 33367, "loc": { "start": { "line": 774, @@ -64329,8 +64329,8 @@ }, "expression": { "type": "CallExpression", - "start": 33301, - "end": 33356, + "start": 33311, + "end": 33366, "loc": { "start": { "line": 774, @@ -64343,8 +64343,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33301, - "end": 33309, + "start": 33311, + "end": 33319, "loc": { "start": { "line": 774, @@ -64357,8 +64357,8 @@ }, "object": { "type": "Identifier", - "start": 33301, - "end": 33304, + "start": 33311, + "end": 33314, "loc": { "start": { "line": 774, @@ -64374,8 +64374,8 @@ }, "property": { "type": "Identifier", - "start": 33305, - "end": 33309, + "start": 33315, + "end": 33319, "loc": { "start": { "line": 774, @@ -64394,8 +64394,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33310, - "end": 33355, + "start": 33320, + "end": 33365, "loc": { "start": { "line": 774, @@ -64417,8 +64417,8 @@ }, { "type": "ExpressionStatement", - "start": 33370, - "end": 33482, + "start": 33380, + "end": 33492, "loc": { "start": { "line": 775, @@ -64431,8 +64431,8 @@ }, "expression": { "type": "CallExpression", - "start": 33370, - "end": 33481, + "start": 33380, + "end": 33491, "loc": { "start": { "line": 775, @@ -64445,8 +64445,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33370, - "end": 33378, + "start": 33380, + "end": 33388, "loc": { "start": { "line": 775, @@ -64459,8 +64459,8 @@ }, "object": { "type": "Identifier", - "start": 33370, - "end": 33373, + "start": 33380, + "end": 33383, "loc": { "start": { "line": 775, @@ -64476,8 +64476,8 @@ }, "property": { "type": "Identifier", - "start": 33374, - "end": 33378, + "start": 33384, + "end": 33388, "loc": { "start": { "line": 775, @@ -64496,8 +64496,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33379, - "end": 33480, + "start": 33389, + "end": 33490, "loc": { "start": { "line": 775, @@ -64519,8 +64519,8 @@ }, { "type": "ExpressionStatement", - "start": 33495, - "end": 33633, + "start": 33505, + "end": 33643, "loc": { "start": { "line": 776, @@ -64533,8 +64533,8 @@ }, "expression": { "type": "CallExpression", - "start": 33495, - "end": 33632, + "start": 33505, + "end": 33642, "loc": { "start": { "line": 776, @@ -64547,8 +64547,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33495, - "end": 33503, + "start": 33505, + "end": 33513, "loc": { "start": { "line": 776, @@ -64561,8 +64561,8 @@ }, "object": { "type": "Identifier", - "start": 33495, - "end": 33498, + "start": 33505, + "end": 33508, "loc": { "start": { "line": 776, @@ -64578,8 +64578,8 @@ }, "property": { "type": "Identifier", - "start": 33499, - "end": 33503, + "start": 33509, + "end": 33513, "loc": { "start": { "line": 776, @@ -64598,8 +64598,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33504, - "end": 33631, + "start": 33514, + "end": 33641, "loc": { "start": { "line": 776, @@ -64621,8 +64621,8 @@ }, { "type": "ExpressionStatement", - "start": 33646, - "end": 33729, + "start": 33656, + "end": 33739, "loc": { "start": { "line": 777, @@ -64635,8 +64635,8 @@ }, "expression": { "type": "CallExpression", - "start": 33646, - "end": 33728, + "start": 33656, + "end": 33738, "loc": { "start": { "line": 777, @@ -64649,8 +64649,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33646, - "end": 33654, + "start": 33656, + "end": 33664, "loc": { "start": { "line": 777, @@ -64663,8 +64663,8 @@ }, "object": { "type": "Identifier", - "start": 33646, - "end": 33649, + "start": 33656, + "end": 33659, "loc": { "start": { "line": 777, @@ -64680,8 +64680,8 @@ }, "property": { "type": "Identifier", - "start": 33650, - "end": 33654, + "start": 33660, + "end": 33664, "loc": { "start": { "line": 777, @@ -64700,8 +64700,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33655, - "end": 33727, + "start": 33665, + "end": 33737, "loc": { "start": { "line": 777, @@ -64726,8 +64726,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 33745, - "end": 33839, + "start": 33755, + "end": 33849, "loc": { "start": { "line": 778, @@ -64741,8 +64741,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 33759, - "end": 33829, + "start": 33769, + "end": 33839, "loc": { "start": { "line": 779, @@ -64755,8 +64755,8 @@ }, "expression": { "type": "CallExpression", - "start": 33759, - "end": 33828, + "start": 33769, + "end": 33838, "loc": { "start": { "line": 779, @@ -64769,8 +64769,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33759, - "end": 33767, + "start": 33769, + "end": 33777, "loc": { "start": { "line": 779, @@ -64783,8 +64783,8 @@ }, "object": { "type": "Identifier", - "start": 33759, - "end": 33762, + "start": 33769, + "end": 33772, "loc": { "start": { "line": 779, @@ -64800,8 +64800,8 @@ }, "property": { "type": "Identifier", - "start": 33763, - "end": 33767, + "start": 33773, + "end": 33777, "loc": { "start": { "line": 779, @@ -64820,8 +64820,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33768, - "end": 33827, + "start": 33778, + "end": 33837, "loc": { "start": { "line": 779, @@ -64847,8 +64847,8 @@ }, { "type": "IfStatement", - "start": 33849, - "end": 33953, + "start": 33859, + "end": 33963, "loc": { "start": { "line": 782, @@ -64861,8 +64861,8 @@ }, "test": { "type": "Identifier", - "start": 33853, - "end": 33864, + "start": 33863, + "end": 33874, "loc": { "start": { "line": 782, @@ -64878,8 +64878,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 33866, - "end": 33953, + "start": 33876, + "end": 33963, "loc": { "start": { "line": 782, @@ -64893,8 +64893,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 33880, - "end": 33943, + "start": 33890, + "end": 33953, "loc": { "start": { "line": 783, @@ -64907,8 +64907,8 @@ }, "expression": { "type": "CallExpression", - "start": 33880, - "end": 33942, + "start": 33890, + "end": 33952, "loc": { "start": { "line": 783, @@ -64921,8 +64921,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33880, - "end": 33888, + "start": 33890, + "end": 33898, "loc": { "start": { "line": 783, @@ -64935,8 +64935,8 @@ }, "object": { "type": "Identifier", - "start": 33880, - "end": 33883, + "start": 33890, + "end": 33893, "loc": { "start": { "line": 783, @@ -64952,8 +64952,8 @@ }, "property": { "type": "Identifier", - "start": 33884, - "end": 33888, + "start": 33894, + "end": 33898, "loc": { "start": { "line": 783, @@ -64972,8 +64972,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33889, - "end": 33941, + "start": 33899, + "end": 33951, "loc": { "start": { "line": 783, @@ -65000,8 +65000,8 @@ }, { "type": "ExpressionStatement", - "start": 33963, - "end": 34001, + "start": 33973, + "end": 34011, "loc": { "start": { "line": 786, @@ -65014,8 +65014,8 @@ }, "expression": { "type": "CallExpression", - "start": 33963, - "end": 34000, + "start": 33973, + "end": 34010, "loc": { "start": { "line": 786, @@ -65028,8 +65028,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33963, - "end": 33971, + "start": 33973, + "end": 33981, "loc": { "start": { "line": 786, @@ -65042,8 +65042,8 @@ }, "object": { "type": "Identifier", - "start": 33963, - "end": 33966, + "start": 33973, + "end": 33976, "loc": { "start": { "line": 786, @@ -65059,8 +65059,8 @@ }, "property": { "type": "Identifier", - "start": 33967, - "end": 33971, + "start": 33977, + "end": 33981, "loc": { "start": { "line": 786, @@ -65079,8 +65079,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33972, - "end": 33999, + "start": 33982, + "end": 34009, "loc": { "start": { "line": 786, @@ -65102,8 +65102,8 @@ }, { "type": "IfStatement", - "start": 34011, - "end": 34201, + "start": 34021, + "end": 34211, "loc": { "start": { "line": 788, @@ -65116,8 +65116,8 @@ }, "test": { "type": "LogicalExpression", - "start": 34015, - "end": 34103, + "start": 34025, + "end": 34113, "loc": { "start": { "line": 788, @@ -65130,8 +65130,8 @@ }, "left": { "type": "MemberExpression", - "start": 34015, - "end": 34050, + "start": 34025, + "end": 34060, "loc": { "start": { "line": 788, @@ -65144,8 +65144,8 @@ }, "object": { "type": "Identifier", - "start": 34015, - "end": 34020, + "start": 34025, + "end": 34030, "loc": { "start": { "line": 788, @@ -65161,8 +65161,8 @@ }, "property": { "type": "Identifier", - "start": 34021, - "end": 34050, + "start": 34031, + "end": 34060, "loc": { "start": { "line": 788, @@ -65181,8 +65181,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 34054, - "end": 34103, + "start": 34064, + "end": 34113, "loc": { "start": { "line": 788, @@ -65195,8 +65195,8 @@ }, "object": { "type": "MemberExpression", - "start": 34054, - "end": 34085, + "start": 34064, + "end": 34095, "loc": { "start": { "line": 788, @@ -65209,8 +65209,8 @@ }, "object": { "type": "Identifier", - "start": 34054, - "end": 34064, + "start": 34064, + "end": 34074, "loc": { "start": { "line": 788, @@ -65226,8 +65226,8 @@ }, "property": { "type": "Identifier", - "start": 34065, - "end": 34085, + "start": 34075, + "end": 34095, "loc": { "start": { "line": 788, @@ -65245,8 +65245,8 @@ }, "property": { "type": "StringLiteral", - "start": 34086, - "end": 34102, + "start": 34096, + "end": 34112, "loc": { "start": { "line": 788, @@ -65268,8 +65268,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 34105, - "end": 34201, + "start": 34115, + "end": 34211, "loc": { "start": { "line": 788, @@ -65283,8 +65283,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 34119, - "end": 34191, + "start": 34129, + "end": 34201, "loc": { "start": { "line": 789, @@ -65297,8 +65297,8 @@ }, "expression": { "type": "CallExpression", - "start": 34119, - "end": 34190, + "start": 34129, + "end": 34200, "loc": { "start": { "line": 789, @@ -65311,8 +65311,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34119, - "end": 34127, + "start": 34129, + "end": 34137, "loc": { "start": { "line": 789, @@ -65325,8 +65325,8 @@ }, "object": { "type": "Identifier", - "start": 34119, - "end": 34122, + "start": 34129, + "end": 34132, "loc": { "start": { "line": 789, @@ -65342,8 +65342,8 @@ }, "property": { "type": "Identifier", - "start": 34123, - "end": 34127, + "start": 34133, + "end": 34137, "loc": { "start": { "line": 789, @@ -65362,8 +65362,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34128, - "end": 34189, + "start": 34138, + "end": 34199, "loc": { "start": { "line": 789, @@ -65390,8 +65390,8 @@ }, { "type": "ExpressionStatement", - "start": 34211, - "end": 34225, + "start": 34221, + "end": 34235, "loc": { "start": { "line": 792, @@ -65404,8 +65404,8 @@ }, "expression": { "type": "CallExpression", - "start": 34211, - "end": 34224, + "start": 34221, + "end": 34234, "loc": { "start": { "line": 792, @@ -65418,8 +65418,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34211, - "end": 34219, + "start": 34221, + "end": 34229, "loc": { "start": { "line": 792, @@ -65432,8 +65432,8 @@ }, "object": { "type": "Identifier", - "start": 34211, - "end": 34214, + "start": 34221, + "end": 34224, "loc": { "start": { "line": 792, @@ -65449,8 +65449,8 @@ }, "property": { "type": "Identifier", - "start": 34215, - "end": 34219, + "start": 34225, + "end": 34229, "loc": { "start": { "line": 792, @@ -65469,8 +65469,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34220, - "end": 34223, + "start": 34230, + "end": 34233, "loc": { "start": { "line": 792, @@ -65492,8 +65492,8 @@ }, { "type": "ReturnStatement", - "start": 34234, - "end": 34245, + "start": 34244, + "end": 34255, "loc": { "start": { "line": 793, @@ -65506,8 +65506,8 @@ }, "argument": { "type": "Identifier", - "start": 34241, - "end": 34244, + "start": 34251, + "end": 34254, "loc": { "start": { "line": 793, @@ -65528,8 +65528,8 @@ }, { "type": "ClassMethod", - "start": 34257, - "end": 34317, + "start": 34267, + "end": 34327, "loc": { "start": { "line": 796, @@ -65544,8 +65544,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 34257, - "end": 34277, + "start": 34267, + "end": 34287, "loc": { "start": { "line": 796, @@ -65567,8 +65567,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 34280, - "end": 34317, + "start": 34290, + "end": 34327, "loc": { "start": { "line": 796, @@ -65582,8 +65582,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 34290, - "end": 34311, + "start": 34300, + "end": 34321, "loc": { "start": { "line": 797, @@ -65596,8 +65596,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 34290, - "end": 34310, + "start": 34300, + "end": 34320, "loc": { "start": { "line": 797, @@ -65611,8 +65611,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 34290, - "end": 34303, + "start": 34300, + "end": 34313, "loc": { "start": { "line": 797, @@ -65625,8 +65625,8 @@ }, "object": { "type": "ThisExpression", - "start": 34290, - "end": 34294, + "start": 34300, + "end": 34304, "loc": { "start": { "line": 797, @@ -65640,8 +65640,8 @@ }, "property": { "type": "Identifier", - "start": 34295, - "end": 34303, + "start": 34305, + "end": 34313, "loc": { "start": { "line": 797, @@ -65659,8 +65659,8 @@ }, "right": { "type": "NullLiteral", - "start": 34306, - "end": 34310, + "start": 34316, + "end": 34320, "loc": { "start": { "line": 797, @@ -65680,8 +65680,8 @@ }, { "type": "ClassMethod", - "start": 34323, - "end": 34446, + "start": 34333, + "end": 34456, "loc": { "start": { "line": 800, @@ -65696,8 +65696,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 34323, - "end": 34330, + "start": 34333, + "end": 34340, "loc": { "start": { "line": 800, @@ -65719,8 +65719,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 34333, - "end": 34446, + "start": 34343, + "end": 34456, "loc": { "start": { "line": 800, @@ -65734,8 +65734,8 @@ "body": [ { "type": "IfStatement", - "start": 34343, - "end": 34410, + "start": 34353, + "end": 34420, "loc": { "start": { "line": 801, @@ -65748,8 +65748,8 @@ }, "test": { "type": "MemberExpression", - "start": 34347, - "end": 34360, + "start": 34357, + "end": 34370, "loc": { "start": { "line": 801, @@ -65762,8 +65762,8 @@ }, "object": { "type": "ThisExpression", - "start": 34347, - "end": 34351, + "start": 34357, + "end": 34361, "loc": { "start": { "line": 801, @@ -65777,8 +65777,8 @@ }, "property": { "type": "Identifier", - "start": 34352, - "end": 34360, + "start": 34362, + "end": 34370, "loc": { "start": { "line": 801, @@ -65796,8 +65796,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 34362, - "end": 34410, + "start": 34372, + "end": 34420, "loc": { "start": { "line": 801, @@ -65811,8 +65811,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 34376, - "end": 34400, + "start": 34386, + "end": 34410, "loc": { "start": { "line": 802, @@ -65825,8 +65825,8 @@ }, "expression": { "type": "CallExpression", - "start": 34376, - "end": 34399, + "start": 34386, + "end": 34409, "loc": { "start": { "line": 802, @@ -65839,8 +65839,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34376, - "end": 34397, + "start": 34386, + "end": 34407, "loc": { "start": { "line": 802, @@ -65853,8 +65853,8 @@ }, "object": { "type": "MemberExpression", - "start": 34376, - "end": 34389, + "start": 34386, + "end": 34399, "loc": { "start": { "line": 802, @@ -65867,8 +65867,8 @@ }, "object": { "type": "ThisExpression", - "start": 34376, - "end": 34380, + "start": 34386, + "end": 34390, "loc": { "start": { "line": 802, @@ -65882,8 +65882,8 @@ }, "property": { "type": "Identifier", - "start": 34381, - "end": 34389, + "start": 34391, + "end": 34399, "loc": { "start": { "line": 802, @@ -65901,8 +65901,8 @@ }, "property": { "type": "Identifier", - "start": 34390, - "end": 34397, + "start": 34400, + "end": 34407, "loc": { "start": { "line": 802, @@ -65928,8 +65928,8 @@ }, { "type": "ExpressionStatement", - "start": 34419, - "end": 34440, + "start": 34429, + "end": 34450, "loc": { "start": { "line": 804, @@ -65942,8 +65942,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 34419, - "end": 34439, + "start": 34429, + "end": 34449, "loc": { "start": { "line": 804, @@ -65957,8 +65957,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 34419, - "end": 34432, + "start": 34429, + "end": 34442, "loc": { "start": { "line": 804, @@ -65971,8 +65971,8 @@ }, "object": { "type": "ThisExpression", - "start": 34419, - "end": 34423, + "start": 34429, + "end": 34433, "loc": { "start": { "line": 804, @@ -65986,8 +65986,8 @@ }, "property": { "type": "Identifier", - "start": 34424, - "end": 34432, + "start": 34434, + "end": 34442, "loc": { "start": { "line": 804, @@ -66005,8 +66005,8 @@ }, "right": { "type": "NullLiteral", - "start": 34435, - "end": 34439, + "start": 34445, + "end": 34449, "loc": { "start": { "line": 804, @@ -66032,8 +66032,8 @@ }, { "type": "ExportNamedDeclaration", - "start": 34450, - "end": 34497, + "start": 34460, + "end": 34507, "loc": { "start": { "line": 808, @@ -66048,8 +66048,8 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 34458, - "end": 34495, + "start": 34468, + "end": 34505, "loc": { "start": { "line": 808, @@ -66062,8 +66062,8 @@ }, "local": { "type": "Identifier", - "start": 34458, - "end": 34495, + "start": 34468, + "end": 34505, "loc": { "start": { "line": 808, @@ -66079,8 +66079,8 @@ }, "exported": { "type": "Identifier", - "start": 34458, - "end": 34495, + "start": 34468, + "end": 34505, "loc": { "start": { "line": 808, @@ -66100,8 +66100,8 @@ }, { "type": "ExportNamedDeclaration", - "start": 34450, - "end": 34497, + "start": 34460, + "end": 34507, "loc": { "start": { "line": 808, @@ -66115,7 +66115,7 @@ "declaration": { "type": "ClassDeclaration", "start": 453, - "end": 34448, + "end": 34458, "loc": { "start": { "line": 18, @@ -66148,7 +66148,7 @@ "body": { "type": "ClassBody", "start": 497, - "end": 34448, + "end": 34458, "loc": { "start": { "line": 18, @@ -100025,7 +100025,7 @@ { "type": "ClassMethod", "start": 15561, - "end": 34251, + "end": 34261, "loc": { "start": { "line": 417, @@ -100064,7 +100064,7 @@ "body": { "type": "BlockStatement", "start": 15584, - "end": 34251, + "end": 34261, "loc": { "start": { "line": 417, @@ -118307,7 +118307,7 @@ { "type": "IfStatement", "start": 25999, - "end": 27537, + "end": 27536, "loc": { "start": { "line": 640, @@ -118575,7 +118575,7 @@ "consequent": { "type": "BlockStatement", "start": 26078, - "end": 27537, + "end": 27536, "loc": { "start": { "line": 640, @@ -119457,7 +119457,7 @@ { "type": "IfStatement", "start": 26714, - "end": 27499, + "end": 27498, "loc": { "start": { "line": 651, @@ -119590,7 +119590,7 @@ "consequent": { "type": "BlockStatement", "start": 26757, - "end": 27499, + "end": 27498, "loc": { "start": { "line": 651, @@ -119605,7 +119605,7 @@ { "type": "ExpressionStatement", "start": 26775, - "end": 26872, + "end": 26871, "loc": { "start": { "line": 652, @@ -119613,13 +119613,13 @@ }, "end": { "line": 652, - "column": 113 + "column": 112 } }, "expression": { "type": "CallExpression", "start": 26775, - "end": 26871, + "end": 26870, "loc": { "start": { "line": 652, @@ -119627,7 +119627,7 @@ }, "end": { "line": 652, - "column": 112 + "column": 111 } }, "callee": { @@ -119684,7 +119684,7 @@ { "type": "StringLiteral", "start": 26784, - "end": 26870, + "end": 26869, "loc": { "start": { "line": 652, @@ -119692,22 +119692,22 @@ }, "end": { "line": 652, - "column": 111 + "column": 110 } }, "extra": { - "rawValue": " vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);", - "raw": "\" vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);\"" + "rawValue": " vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);", + "raw": "\" vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);\"" }, - "value": " vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);" + "value": " vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);" } ] } }, { "type": "ExpressionStatement", - "start": 26889, - "end": 26985, + "start": 26888, + "end": 26984, "loc": { "start": { "line": 653, @@ -119720,8 +119720,8 @@ }, "expression": { "type": "CallExpression", - "start": 26889, - "end": 26984, + "start": 26888, + "end": 26983, "loc": { "start": { "line": 653, @@ -119734,8 +119734,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26889, - "end": 26897, + "start": 26888, + "end": 26896, "loc": { "start": { "line": 653, @@ -119748,8 +119748,8 @@ }, "object": { "type": "Identifier", - "start": 26889, - "end": 26892, + "start": 26888, + "end": 26891, "loc": { "start": { "line": 653, @@ -119765,8 +119765,8 @@ }, "property": { "type": "Identifier", - "start": 26893, - "end": 26897, + "start": 26892, + "end": 26896, "loc": { "start": { "line": 653, @@ -119785,8 +119785,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26898, - "end": 26983, + "start": 26897, + "end": 26982, "loc": { "start": { "line": 653, @@ -119808,8 +119808,8 @@ }, { "type": "ExpressionStatement", - "start": 27002, - "end": 27104, + "start": 27001, + "end": 27103, "loc": { "start": { "line": 654, @@ -119822,8 +119822,8 @@ }, "expression": { "type": "CallExpression", - "start": 27002, - "end": 27103, + "start": 27001, + "end": 27102, "loc": { "start": { "line": 654, @@ -119836,8 +119836,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27002, - "end": 27010, + "start": 27001, + "end": 27009, "loc": { "start": { "line": 654, @@ -119850,8 +119850,8 @@ }, "object": { "type": "Identifier", - "start": 27002, - "end": 27005, + "start": 27001, + "end": 27004, "loc": { "start": { "line": 654, @@ -119867,8 +119867,8 @@ }, "property": { "type": "Identifier", - "start": 27006, - "end": 27010, + "start": 27005, + "end": 27009, "loc": { "start": { "line": 654, @@ -119887,8 +119887,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27011, - "end": 27102, + "start": 27010, + "end": 27101, "loc": { "start": { "line": 654, @@ -119910,8 +119910,8 @@ }, { "type": "ExpressionStatement", - "start": 27121, - "end": 27235, + "start": 27120, + "end": 27234, "loc": { "start": { "line": 655, @@ -119924,8 +119924,8 @@ }, "expression": { "type": "CallExpression", - "start": 27121, - "end": 27234, + "start": 27120, + "end": 27233, "loc": { "start": { "line": 655, @@ -119938,8 +119938,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27121, - "end": 27129, + "start": 27120, + "end": 27128, "loc": { "start": { "line": 655, @@ -119952,8 +119952,8 @@ }, "object": { "type": "Identifier", - "start": 27121, - "end": 27124, + "start": 27120, + "end": 27123, "loc": { "start": { "line": 655, @@ -119969,8 +119969,8 @@ }, "property": { "type": "Identifier", - "start": 27125, - "end": 27129, + "start": 27124, + "end": 27128, "loc": { "start": { "line": 655, @@ -119989,8 +119989,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27130, - "end": 27233, + "start": 27129, + "end": 27232, "loc": { "start": { "line": 655, @@ -120012,8 +120012,8 @@ }, { "type": "ExpressionStatement", - "start": 27252, - "end": 27390, + "start": 27251, + "end": 27389, "loc": { "start": { "line": 656, @@ -120026,8 +120026,8 @@ }, "expression": { "type": "CallExpression", - "start": 27252, - "end": 27389, + "start": 27251, + "end": 27388, "loc": { "start": { "line": 656, @@ -120040,8 +120040,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27252, - "end": 27260, + "start": 27251, + "end": 27259, "loc": { "start": { "line": 656, @@ -120054,8 +120054,8 @@ }, "object": { "type": "Identifier", - "start": 27252, - "end": 27255, + "start": 27251, + "end": 27254, "loc": { "start": { "line": 656, @@ -120071,8 +120071,8 @@ }, "property": { "type": "Identifier", - "start": 27256, - "end": 27260, + "start": 27255, + "end": 27259, "loc": { "start": { "line": 656, @@ -120091,8 +120091,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27261, - "end": 27388, + "start": 27260, + "end": 27387, "loc": { "start": { "line": 656, @@ -120114,8 +120114,8 @@ }, { "type": "ExpressionStatement", - "start": 27407, - "end": 27485, + "start": 27406, + "end": 27484, "loc": { "start": { "line": 657, @@ -120128,8 +120128,8 @@ }, "expression": { "type": "CallExpression", - "start": 27407, - "end": 27484, + "start": 27406, + "end": 27483, "loc": { "start": { "line": 657, @@ -120142,8 +120142,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27407, - "end": 27415, + "start": 27406, + "end": 27414, "loc": { "start": { "line": 657, @@ -120156,8 +120156,8 @@ }, "object": { "type": "Identifier", - "start": 27407, - "end": 27410, + "start": 27406, + "end": 27409, "loc": { "start": { "line": 657, @@ -120173,8 +120173,8 @@ }, "property": { "type": "Identifier", - "start": 27411, - "end": 27415, + "start": 27410, + "end": 27414, "loc": { "start": { "line": 657, @@ -120193,8 +120193,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27416, - "end": 27483, + "start": 27415, + "end": 27482, "loc": { "start": { "line": 657, @@ -120221,8 +120221,8 @@ }, { "type": "ExpressionStatement", - "start": 27513, - "end": 27527, + "start": 27512, + "end": 27526, "loc": { "start": { "line": 660, @@ -120235,8 +120235,8 @@ }, "expression": { "type": "CallExpression", - "start": 27513, - "end": 27526, + "start": 27512, + "end": 27525, "loc": { "start": { "line": 660, @@ -120249,8 +120249,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27513, - "end": 27521, + "start": 27512, + "end": 27520, "loc": { "start": { "line": 660, @@ -120263,8 +120263,8 @@ }, "object": { "type": "Identifier", - "start": 27513, - "end": 27516, + "start": 27512, + "end": 27515, "loc": { "start": { "line": 660, @@ -120280,8 +120280,8 @@ }, "property": { "type": "Identifier", - "start": 27517, - "end": 27521, + "start": 27516, + "end": 27520, "loc": { "start": { "line": 660, @@ -120300,8 +120300,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27522, - "end": 27525, + "start": 27521, + "end": 27524, "loc": { "start": { "line": 660, @@ -120330,8 +120330,8 @@ { "type": "CommentLine", "value": " MAIN LIGHTING COMPUTATION FUNCTION", - "start": 27547, - "end": 27584, + "start": 27546, + "end": 27583, "loc": { "start": { "line": 663, @@ -120347,8 +120347,8 @@ }, { "type": "ExpressionStatement", - "start": 27594, - "end": 27763, + "start": 27593, + "end": 27762, "loc": { "start": { "line": 665, @@ -120361,8 +120361,8 @@ }, "expression": { "type": "CallExpression", - "start": 27594, - "end": 27762, + "start": 27593, + "end": 27761, "loc": { "start": { "line": 665, @@ -120375,8 +120375,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27594, - "end": 27602, + "start": 27593, + "end": 27601, "loc": { "start": { "line": 665, @@ -120389,8 +120389,8 @@ }, "object": { "type": "Identifier", - "start": 27594, - "end": 27597, + "start": 27593, + "end": 27596, "loc": { "start": { "line": 665, @@ -120407,8 +120407,8 @@ }, "property": { "type": "Identifier", - "start": 27598, - "end": 27602, + "start": 27597, + "end": 27601, "loc": { "start": { "line": 665, @@ -120428,8 +120428,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27603, - "end": 27761, + "start": 27602, + "end": 27760, "loc": { "start": { "line": 665, @@ -120453,8 +120453,8 @@ { "type": "CommentLine", "value": " MAIN LIGHTING COMPUTATION FUNCTION", - "start": 27547, - "end": 27584, + "start": 27546, + "end": 27583, "loc": { "start": { "line": 663, @@ -120470,8 +120470,8 @@ }, { "type": "ExpressionStatement", - "start": 27772, - "end": 27866, + "start": 27771, + "end": 27865, "loc": { "start": { "line": 666, @@ -120484,8 +120484,8 @@ }, "expression": { "type": "CallExpression", - "start": 27772, - "end": 27865, + "start": 27771, + "end": 27864, "loc": { "start": { "line": 666, @@ -120498,8 +120498,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27772, - "end": 27780, + "start": 27771, + "end": 27779, "loc": { "start": { "line": 666, @@ -120512,8 +120512,8 @@ }, "object": { "type": "Identifier", - "start": 27772, - "end": 27775, + "start": 27771, + "end": 27774, "loc": { "start": { "line": 666, @@ -120529,8 +120529,8 @@ }, "property": { "type": "Identifier", - "start": 27776, - "end": 27780, + "start": 27775, + "end": 27779, "loc": { "start": { "line": 666, @@ -120549,8 +120549,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27781, - "end": 27864, + "start": 27780, + "end": 27863, "loc": { "start": { "line": 666, @@ -120572,8 +120572,8 @@ }, { "type": "ExpressionStatement", - "start": 27875, - "end": 27942, + "start": 27874, + "end": 27941, "loc": { "start": { "line": 667, @@ -120586,8 +120586,8 @@ }, "expression": { "type": "CallExpression", - "start": 27875, - "end": 27941, + "start": 27874, + "end": 27940, "loc": { "start": { "line": 667, @@ -120600,8 +120600,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27875, - "end": 27883, + "start": 27874, + "end": 27882, "loc": { "start": { "line": 667, @@ -120614,8 +120614,8 @@ }, "object": { "type": "Identifier", - "start": 27875, - "end": 27878, + "start": 27874, + "end": 27877, "loc": { "start": { "line": 667, @@ -120631,8 +120631,8 @@ }, "property": { "type": "Identifier", - "start": 27879, - "end": 27883, + "start": 27878, + "end": 27882, "loc": { "start": { "line": 667, @@ -120651,8 +120651,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27884, - "end": 27940, + "start": 27883, + "end": 27939, "loc": { "start": { "line": 667, @@ -120674,8 +120674,8 @@ }, { "type": "ExpressionStatement", - "start": 27951, - "end": 28047, + "start": 27950, + "end": 28046, "loc": { "start": { "line": 668, @@ -120688,8 +120688,8 @@ }, "expression": { "type": "CallExpression", - "start": 27951, - "end": 28046, + "start": 27950, + "end": 28045, "loc": { "start": { "line": 668, @@ -120702,8 +120702,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27951, - "end": 27959, + "start": 27950, + "end": 27958, "loc": { "start": { "line": 668, @@ -120716,8 +120716,8 @@ }, "object": { "type": "Identifier", - "start": 27951, - "end": 27954, + "start": 27950, + "end": 27953, "loc": { "start": { "line": 668, @@ -120733,8 +120733,8 @@ }, "property": { "type": "Identifier", - "start": 27955, - "end": 27959, + "start": 27954, + "end": 27958, "loc": { "start": { "line": 668, @@ -120753,8 +120753,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27960, - "end": 28045, + "start": 27959, + "end": 28044, "loc": { "start": { "line": 668, @@ -120776,8 +120776,8 @@ }, { "type": "ExpressionStatement", - "start": 28056, - "end": 28207, + "start": 28055, + "end": 28206, "loc": { "start": { "line": 669, @@ -120790,8 +120790,8 @@ }, "expression": { "type": "CallExpression", - "start": 28056, - "end": 28206, + "start": 28055, + "end": 28205, "loc": { "start": { "line": 669, @@ -120804,8 +120804,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28056, - "end": 28064, + "start": 28055, + "end": 28063, "loc": { "start": { "line": 669, @@ -120818,8 +120818,8 @@ }, "object": { "type": "Identifier", - "start": 28056, - "end": 28059, + "start": 28055, + "end": 28058, "loc": { "start": { "line": 669, @@ -120835,8 +120835,8 @@ }, "property": { "type": "Identifier", - "start": 28060, - "end": 28064, + "start": 28059, + "end": 28063, "loc": { "start": { "line": 669, @@ -120855,8 +120855,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28065, - "end": 28205, + "start": 28064, + "end": 28204, "loc": { "start": { "line": 669, @@ -120878,8 +120878,8 @@ }, { "type": "ExpressionStatement", - "start": 28216, - "end": 28230, + "start": 28215, + "end": 28229, "loc": { "start": { "line": 670, @@ -120892,8 +120892,8 @@ }, "expression": { "type": "CallExpression", - "start": 28216, - "end": 28229, + "start": 28215, + "end": 28228, "loc": { "start": { "line": 670, @@ -120906,8 +120906,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28216, - "end": 28224, + "start": 28215, + "end": 28223, "loc": { "start": { "line": 670, @@ -120920,8 +120920,8 @@ }, "object": { "type": "Identifier", - "start": 28216, - "end": 28219, + "start": 28215, + "end": 28218, "loc": { "start": { "line": 670, @@ -120937,8 +120937,8 @@ }, "property": { "type": "Identifier", - "start": 28220, - "end": 28224, + "start": 28219, + "end": 28223, "loc": { "start": { "line": 670, @@ -120957,8 +120957,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28225, - "end": 28228, + "start": 28224, + "end": 28227, "loc": { "start": { "line": 670, @@ -120980,8 +120980,8 @@ }, { "type": "ExpressionStatement", - "start": 28240, - "end": 28270, + "start": 28239, + "end": 28269, "loc": { "start": { "line": 672, @@ -120994,8 +120994,8 @@ }, "expression": { "type": "CallExpression", - "start": 28240, - "end": 28269, + "start": 28239, + "end": 28268, "loc": { "start": { "line": 672, @@ -121008,8 +121008,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28240, - "end": 28248, + "start": 28239, + "end": 28247, "loc": { "start": { "line": 672, @@ -121022,8 +121022,8 @@ }, "object": { "type": "Identifier", - "start": 28240, - "end": 28243, + "start": 28239, + "end": 28242, "loc": { "start": { "line": 672, @@ -121039,8 +121039,8 @@ }, "property": { "type": "Identifier", - "start": 28244, - "end": 28248, + "start": 28243, + "end": 28247, "loc": { "start": { "line": 672, @@ -121059,8 +121059,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28249, - "end": 28268, + "start": 28248, + "end": 28267, "loc": { "start": { "line": 672, @@ -121082,8 +121082,8 @@ }, { "type": "IfStatement", - "start": 28280, - "end": 29598, + "start": 28279, + "end": 29597, "loc": { "start": { "line": 674, @@ -121096,8 +121096,8 @@ }, "test": { "type": "Identifier", - "start": 28284, - "end": 28292, + "start": 28283, + "end": 28291, "loc": { "start": { "line": 674, @@ -121113,8 +121113,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 28294, - "end": 29598, + "start": 28293, + "end": 29597, "loc": { "start": { "line": 674, @@ -121128,8 +121128,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 28308, - "end": 28365, + "start": 28307, + "end": 28364, "loc": { "start": { "line": 675, @@ -121142,8 +121142,8 @@ }, "expression": { "type": "CallExpression", - "start": 28308, - "end": 28364, + "start": 28307, + "end": 28363, "loc": { "start": { "line": 675, @@ -121156,8 +121156,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28308, - "end": 28316, + "start": 28307, + "end": 28315, "loc": { "start": { "line": 675, @@ -121170,8 +121170,8 @@ }, "object": { "type": "Identifier", - "start": 28308, - "end": 28311, + "start": 28307, + "end": 28310, "loc": { "start": { "line": 675, @@ -121187,8 +121187,8 @@ }, "property": { "type": "Identifier", - "start": 28312, - "end": 28316, + "start": 28311, + "end": 28315, "loc": { "start": { "line": 675, @@ -121207,8 +121207,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28317, - "end": 28363, + "start": 28316, + "end": 28362, "loc": { "start": { "line": 675, @@ -121230,8 +121230,8 @@ }, { "type": "ExpressionStatement", - "start": 28378, - "end": 28409, + "start": 28377, + "end": 28408, "loc": { "start": { "line": 676, @@ -121244,8 +121244,8 @@ }, "expression": { "type": "CallExpression", - "start": 28378, - "end": 28408, + "start": 28377, + "end": 28407, "loc": { "start": { "line": 676, @@ -121258,8 +121258,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28378, - "end": 28386, + "start": 28377, + "end": 28385, "loc": { "start": { "line": 676, @@ -121272,8 +121272,8 @@ }, "object": { "type": "Identifier", - "start": 28378, - "end": 28381, + "start": 28377, + "end": 28380, "loc": { "start": { "line": 676, @@ -121289,8 +121289,8 @@ }, "property": { "type": "Identifier", - "start": 28382, - "end": 28386, + "start": 28381, + "end": 28385, "loc": { "start": { "line": 676, @@ -121309,8 +121309,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28387, - "end": 28407, + "start": 28386, + "end": 28406, "loc": { "start": { "line": 676, @@ -121332,8 +121332,8 @@ }, { "type": "ExpressionStatement", - "start": 28422, - "end": 28454, + "start": 28421, + "end": 28453, "loc": { "start": { "line": 677, @@ -121346,8 +121346,8 @@ }, "expression": { "type": "CallExpression", - "start": 28422, - "end": 28453, + "start": 28421, + "end": 28452, "loc": { "start": { "line": 677, @@ -121360,8 +121360,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28422, - "end": 28430, + "start": 28421, + "end": 28429, "loc": { "start": { "line": 677, @@ -121374,8 +121374,8 @@ }, "object": { "type": "Identifier", - "start": 28422, - "end": 28425, + "start": 28421, + "end": 28424, "loc": { "start": { "line": 677, @@ -121391,8 +121391,8 @@ }, "property": { "type": "Identifier", - "start": 28426, - "end": 28430, + "start": 28425, + "end": 28429, "loc": { "start": { "line": 677, @@ -121411,8 +121411,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28431, - "end": 28452, + "start": 28430, + "end": 28451, "loc": { "start": { "line": 677, @@ -121434,8 +121434,8 @@ }, { "type": "ForStatement", - "start": 28467, - "end": 28801, + "start": 28466, + "end": 28800, "loc": { "start": { "line": 678, @@ -121448,8 +121448,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 28472, - "end": 28528, + "start": 28471, + "end": 28527, "loc": { "start": { "line": 678, @@ -121463,8 +121463,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 28476, - "end": 28481, + "start": 28475, + "end": 28480, "loc": { "start": { "line": 678, @@ -121477,8 +121477,8 @@ }, "id": { "type": "Identifier", - "start": 28476, - "end": 28477, + "start": 28475, + "end": 28476, "loc": { "start": { "line": 678, @@ -121494,8 +121494,8 @@ }, "init": { "type": "NumericLiteral", - "start": 28480, - "end": 28481, + "start": 28479, + "end": 28480, "loc": { "start": { "line": 678, @@ -121515,8 +121515,8 @@ }, { "type": "VariableDeclarator", - "start": 28483, - "end": 28528, + "start": 28482, + "end": 28527, "loc": { "start": { "line": 678, @@ -121529,8 +121529,8 @@ }, "id": { "type": "Identifier", - "start": 28483, - "end": 28486, + "start": 28482, + "end": 28485, "loc": { "start": { "line": 678, @@ -121546,8 +121546,8 @@ }, "init": { "type": "MemberExpression", - "start": 28489, - "end": 28528, + "start": 28488, + "end": 28527, "loc": { "start": { "line": 678, @@ -121560,8 +121560,8 @@ }, "object": { "type": "MemberExpression", - "start": 28489, - "end": 28521, + "start": 28488, + "end": 28520, "loc": { "start": { "line": 678, @@ -121574,8 +121574,8 @@ }, "object": { "type": "Identifier", - "start": 28489, - "end": 28507, + "start": 28488, + "end": 28506, "loc": { "start": { "line": 678, @@ -121591,8 +121591,8 @@ }, "property": { "type": "Identifier", - "start": 28508, - "end": 28521, + "start": 28507, + "end": 28520, "loc": { "start": { "line": 678, @@ -121610,8 +121610,8 @@ }, "property": { "type": "Identifier", - "start": 28522, - "end": 28528, + "start": 28521, + "end": 28527, "loc": { "start": { "line": 678, @@ -121633,8 +121633,8 @@ }, "test": { "type": "BinaryExpression", - "start": 28530, - "end": 28537, + "start": 28529, + "end": 28536, "loc": { "start": { "line": 678, @@ -121647,8 +121647,8 @@ }, "left": { "type": "Identifier", - "start": 28530, - "end": 28531, + "start": 28529, + "end": 28530, "loc": { "start": { "line": 678, @@ -121665,8 +121665,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 28534, - "end": 28537, + "start": 28533, + "end": 28536, "loc": { "start": { "line": 678, @@ -121683,8 +121683,8 @@ }, "update": { "type": "UpdateExpression", - "start": 28539, - "end": 28542, + "start": 28538, + "end": 28541, "loc": { "start": { "line": 678, @@ -121699,8 +121699,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 28539, - "end": 28540, + "start": 28538, + "end": 28539, "loc": { "start": { "line": 678, @@ -121717,8 +121717,8 @@ }, "body": { "type": "BlockStatement", - "start": 28544, - "end": 28801, + "start": 28543, + "end": 28800, "loc": { "start": { "line": 678, @@ -121732,8 +121732,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 28562, - "end": 28609, + "start": 28561, + "end": 28608, "loc": { "start": { "line": 679, @@ -121746,8 +121746,8 @@ }, "expression": { "type": "CallExpression", - "start": 28562, - "end": 28608, + "start": 28561, + "end": 28607, "loc": { "start": { "line": 679, @@ -121760,8 +121760,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28562, - "end": 28570, + "start": 28561, + "end": 28569, "loc": { "start": { "line": 679, @@ -121774,8 +121774,8 @@ }, "object": { "type": "Identifier", - "start": 28562, - "end": 28565, + "start": 28561, + "end": 28564, "loc": { "start": { "line": 679, @@ -121791,8 +121791,8 @@ }, "property": { "type": "Identifier", - "start": 28566, - "end": 28570, + "start": 28565, + "end": 28569, "loc": { "start": { "line": 679, @@ -121811,8 +121811,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 28571, - "end": 28607, + "start": 28570, + "end": 28606, "loc": { "start": { "line": 679, @@ -121825,8 +121825,8 @@ }, "left": { "type": "BinaryExpression", - "start": 28571, - "end": 28599, + "start": 28570, + "end": 28598, "loc": { "start": { "line": 679, @@ -121839,8 +121839,8 @@ }, "left": { "type": "StringLiteral", - "start": 28571, - "end": 28595, + "start": 28570, + "end": 28594, "loc": { "start": { "line": 679, @@ -121860,8 +121860,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 28598, - "end": 28599, + "start": 28597, + "end": 28598, "loc": { "start": { "line": 679, @@ -121879,8 +121879,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 28602, - "end": 28607, + "start": 28601, + "end": 28606, "loc": { "start": { "line": 679, @@ -121903,8 +121903,8 @@ }, { "type": "ExpressionStatement", - "start": 28626, - "end": 28756, + "start": 28625, + "end": 28755, "loc": { "start": { "line": 680, @@ -121917,8 +121917,8 @@ }, "expression": { "type": "CallExpression", - "start": 28626, - "end": 28755, + "start": 28625, + "end": 28754, "loc": { "start": { "line": 680, @@ -121931,8 +121931,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28626, - "end": 28634, + "start": 28625, + "end": 28633, "loc": { "start": { "line": 680, @@ -121945,8 +121945,8 @@ }, "object": { "type": "Identifier", - "start": 28626, - "end": 28629, + "start": 28625, + "end": 28628, "loc": { "start": { "line": 680, @@ -121962,8 +121962,8 @@ }, "property": { "type": "Identifier", - "start": 28630, - "end": 28634, + "start": 28629, + "end": 28633, "loc": { "start": { "line": 680, @@ -121982,8 +121982,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 28635, - "end": 28754, + "start": 28634, + "end": 28753, "loc": { "start": { "line": 680, @@ -121996,8 +121996,8 @@ }, "left": { "type": "BinaryExpression", - "start": 28635, - "end": 28729, + "start": 28634, + "end": 28728, "loc": { "start": { "line": 680, @@ -122010,8 +122010,8 @@ }, "left": { "type": "BinaryExpression", - "start": 28635, - "end": 28725, + "start": 28634, + "end": 28724, "loc": { "start": { "line": 680, @@ -122024,8 +122024,8 @@ }, "left": { "type": "BinaryExpression", - "start": 28635, - "end": 28678, + "start": 28634, + "end": 28677, "loc": { "start": { "line": 680, @@ -122038,8 +122038,8 @@ }, "left": { "type": "StringLiteral", - "start": 28635, - "end": 28674, + "start": 28634, + "end": 28673, "loc": { "start": { "line": 680, @@ -122059,8 +122059,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 28677, - "end": 28678, + "start": 28676, + "end": 28677, "loc": { "start": { "line": 680, @@ -122078,8 +122078,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 28681, - "end": 28725, + "start": 28680, + "end": 28724, "loc": { "start": { "line": 680, @@ -122100,8 +122100,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 28728, - "end": 28729, + "start": 28727, + "end": 28728, "loc": { "start": { "line": 680, @@ -122119,8 +122119,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 28732, - "end": 28754, + "start": 28731, + "end": 28753, "loc": { "start": { "line": 680, @@ -122143,8 +122143,8 @@ }, { "type": "ExpressionStatement", - "start": 28773, - "end": 28787, + "start": 28772, + "end": 28786, "loc": { "start": { "line": 681, @@ -122157,8 +122157,8 @@ }, "expression": { "type": "CallExpression", - "start": 28773, - "end": 28786, + "start": 28772, + "end": 28785, "loc": { "start": { "line": 681, @@ -122171,8 +122171,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28773, - "end": 28781, + "start": 28772, + "end": 28780, "loc": { "start": { "line": 681, @@ -122185,8 +122185,8 @@ }, "object": { "type": "Identifier", - "start": 28773, - "end": 28776, + "start": 28772, + "end": 28775, "loc": { "start": { "line": 681, @@ -122202,8 +122202,8 @@ }, "property": { "type": "Identifier", - "start": 28777, - "end": 28781, + "start": 28776, + "end": 28780, "loc": { "start": { "line": 681, @@ -122222,8 +122222,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28782, - "end": 28785, + "start": 28781, + "end": 28784, "loc": { "start": { "line": 681, @@ -122249,8 +122249,8 @@ }, { "type": "IfStatement", - "start": 28814, - "end": 29561, + "start": 28813, + "end": 29560, "loc": { "start": { "line": 683, @@ -122263,8 +122263,8 @@ }, "test": { "type": "Identifier", - "start": 28818, - "end": 28830, + "start": 28817, + "end": 28829, "loc": { "start": { "line": 683, @@ -122280,8 +122280,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 28832, - "end": 29414, + "start": 28831, + "end": 29413, "loc": { "start": { "line": 683, @@ -122295,8 +122295,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 28850, - "end": 28904, + "start": 28849, + "end": 28903, "loc": { "start": { "line": 684, @@ -122309,8 +122309,8 @@ }, "expression": { "type": "CallExpression", - "start": 28850, - "end": 28903, + "start": 28849, + "end": 28902, "loc": { "start": { "line": 684, @@ -122323,8 +122323,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28850, - "end": 28858, + "start": 28849, + "end": 28857, "loc": { "start": { "line": 684, @@ -122337,8 +122337,8 @@ }, "object": { "type": "Identifier", - "start": 28850, - "end": 28853, + "start": 28849, + "end": 28852, "loc": { "start": { "line": 684, @@ -122354,8 +122354,8 @@ }, "property": { "type": "Identifier", - "start": 28854, - "end": 28858, + "start": 28853, + "end": 28857, "loc": { "start": { "line": 684, @@ -122374,8 +122374,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28859, - "end": 28902, + "start": 28858, + "end": 28901, "loc": { "start": { "line": 684, @@ -122397,8 +122397,8 @@ }, { "type": "ExpressionStatement", - "start": 28921, - "end": 28948, + "start": 28920, + "end": 28947, "loc": { "start": { "line": 685, @@ -122411,8 +122411,8 @@ }, "expression": { "type": "CallExpression", - "start": 28921, - "end": 28947, + "start": 28920, + "end": 28946, "loc": { "start": { "line": 685, @@ -122425,8 +122425,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28921, - "end": 28929, + "start": 28920, + "end": 28928, "loc": { "start": { "line": 685, @@ -122439,8 +122439,8 @@ }, "object": { "type": "Identifier", - "start": 28921, - "end": 28924, + "start": 28920, + "end": 28923, "loc": { "start": { "line": 685, @@ -122456,8 +122456,8 @@ }, "property": { "type": "Identifier", - "start": 28925, - "end": 28929, + "start": 28924, + "end": 28928, "loc": { "start": { "line": 685, @@ -122476,8 +122476,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28930, - "end": 28946, + "start": 28929, + "end": 28945, "loc": { "start": { "line": 685, @@ -122499,8 +122499,8 @@ }, { "type": "ExpressionStatement", - "start": 28965, - "end": 28981, + "start": 28964, + "end": 28980, "loc": { "start": { "line": 686, @@ -122513,8 +122513,8 @@ }, "expression": { "type": "CallExpression", - "start": 28965, - "end": 28980, + "start": 28964, + "end": 28979, "loc": { "start": { "line": 686, @@ -122527,8 +122527,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28965, - "end": 28973, + "start": 28964, + "end": 28972, "loc": { "start": { "line": 686, @@ -122541,8 +122541,8 @@ }, "object": { "type": "Identifier", - "start": 28965, - "end": 28968, + "start": 28964, + "end": 28967, "loc": { "start": { "line": 686, @@ -122558,8 +122558,8 @@ }, "property": { "type": "Identifier", - "start": 28969, - "end": 28973, + "start": 28968, + "end": 28972, "loc": { "start": { "line": 686, @@ -122578,8 +122578,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28974, - "end": 28979, + "start": 28973, + "end": 28978, "loc": { "start": { "line": 686, @@ -122601,8 +122601,8 @@ }, { "type": "ExpressionStatement", - "start": 28998, - "end": 29031, + "start": 28997, + "end": 29030, "loc": { "start": { "line": 687, @@ -122615,8 +122615,8 @@ }, "expression": { "type": "CallExpression", - "start": 28998, - "end": 29030, + "start": 28997, + "end": 29029, "loc": { "start": { "line": 687, @@ -122629,8 +122629,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28998, - "end": 29006, + "start": 28997, + "end": 29005, "loc": { "start": { "line": 687, @@ -122643,8 +122643,8 @@ }, "object": { "type": "Identifier", - "start": 28998, - "end": 29001, + "start": 28997, + "end": 29000, "loc": { "start": { "line": 687, @@ -122660,8 +122660,8 @@ }, "property": { "type": "Identifier", - "start": 29002, - "end": 29006, + "start": 29001, + "end": 29005, "loc": { "start": { "line": 687, @@ -122680,8 +122680,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29007, - "end": 29029, + "start": 29006, + "end": 29028, "loc": { "start": { "line": 687, @@ -122703,8 +122703,8 @@ }, { "type": "ExpressionStatement", - "start": 29048, - "end": 29105, + "start": 29047, + "end": 29104, "loc": { "start": { "line": 688, @@ -122717,8 +122717,8 @@ }, "expression": { "type": "CallExpression", - "start": 29048, - "end": 29104, + "start": 29047, + "end": 29103, "loc": { "start": { "line": 688, @@ -122731,8 +122731,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29048, - "end": 29056, + "start": 29047, + "end": 29055, "loc": { "start": { "line": 688, @@ -122745,8 +122745,8 @@ }, "object": { "type": "Identifier", - "start": 29048, - "end": 29051, + "start": 29047, + "end": 29050, "loc": { "start": { "line": 688, @@ -122762,8 +122762,8 @@ }, "property": { "type": "Identifier", - "start": 29052, - "end": 29056, + "start": 29051, + "end": 29055, "loc": { "start": { "line": 688, @@ -122782,8 +122782,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29057, - "end": 29103, + "start": 29056, + "end": 29102, "loc": { "start": { "line": 688, @@ -122805,8 +122805,8 @@ }, { "type": "IfStatement", - "start": 29122, - "end": 29330, + "start": 29121, + "end": 29329, "loc": { "start": { "line": 689, @@ -122819,8 +122819,8 @@ }, "test": { "type": "LogicalExpression", - "start": 29126, - "end": 29214, + "start": 29125, + "end": 29213, "loc": { "start": { "line": 689, @@ -122833,8 +122833,8 @@ }, "left": { "type": "MemberExpression", - "start": 29126, - "end": 29161, + "start": 29125, + "end": 29160, "loc": { "start": { "line": 689, @@ -122847,8 +122847,8 @@ }, "object": { "type": "Identifier", - "start": 29126, - "end": 29131, + "start": 29125, + "end": 29130, "loc": { "start": { "line": 689, @@ -122864,8 +122864,8 @@ }, "property": { "type": "Identifier", - "start": 29132, - "end": 29161, + "start": 29131, + "end": 29160, "loc": { "start": { "line": 689, @@ -122884,8 +122884,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 29165, - "end": 29214, + "start": 29164, + "end": 29213, "loc": { "start": { "line": 689, @@ -122898,8 +122898,8 @@ }, "object": { "type": "MemberExpression", - "start": 29165, - "end": 29196, + "start": 29164, + "end": 29195, "loc": { "start": { "line": 689, @@ -122912,8 +122912,8 @@ }, "object": { "type": "Identifier", - "start": 29165, - "end": 29175, + "start": 29164, + "end": 29174, "loc": { "start": { "line": 689, @@ -122929,8 +122929,8 @@ }, "property": { "type": "Identifier", - "start": 29176, - "end": 29196, + "start": 29175, + "end": 29195, "loc": { "start": { "line": 689, @@ -122948,8 +122948,8 @@ }, "property": { "type": "StringLiteral", - "start": 29197, - "end": 29213, + "start": 29196, + "end": 29212, "loc": { "start": { "line": 689, @@ -122971,8 +122971,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 29216, - "end": 29330, + "start": 29215, + "end": 29329, "loc": { "start": { "line": 689, @@ -122986,8 +122986,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 29238, - "end": 29312, + "start": 29237, + "end": 29311, "loc": { "start": { "line": 690, @@ -123000,8 +123000,8 @@ }, "expression": { "type": "CallExpression", - "start": 29238, - "end": 29311, + "start": 29237, + "end": 29310, "loc": { "start": { "line": 690, @@ -123014,8 +123014,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29238, - "end": 29246, + "start": 29237, + "end": 29245, "loc": { "start": { "line": 690, @@ -123028,8 +123028,8 @@ }, "object": { "type": "Identifier", - "start": 29238, - "end": 29241, + "start": 29237, + "end": 29240, "loc": { "start": { "line": 690, @@ -123045,8 +123045,8 @@ }, "property": { "type": "Identifier", - "start": 29242, - "end": 29246, + "start": 29241, + "end": 29245, "loc": { "start": { "line": 690, @@ -123065,8 +123065,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29247, - "end": 29310, + "start": 29246, + "end": 29309, "loc": { "start": { "line": 690, @@ -123093,8 +123093,8 @@ }, { "type": "ExpressionStatement", - "start": 29347, - "end": 29369, + "start": 29346, + "end": 29368, "loc": { "start": { "line": 692, @@ -123107,8 +123107,8 @@ }, "expression": { "type": "CallExpression", - "start": 29347, - "end": 29368, + "start": 29346, + "end": 29367, "loc": { "start": { "line": 692, @@ -123121,8 +123121,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29347, - "end": 29355, + "start": 29346, + "end": 29354, "loc": { "start": { "line": 692, @@ -123135,8 +123135,8 @@ }, "object": { "type": "Identifier", - "start": 29347, - "end": 29350, + "start": 29346, + "end": 29349, "loc": { "start": { "line": 692, @@ -123152,8 +123152,8 @@ }, "property": { "type": "Identifier", - "start": 29351, - "end": 29355, + "start": 29350, + "end": 29354, "loc": { "start": { "line": 692, @@ -123172,8 +123172,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29356, - "end": 29367, + "start": 29355, + "end": 29366, "loc": { "start": { "line": 692, @@ -123195,8 +123195,8 @@ }, { "type": "ExpressionStatement", - "start": 29386, - "end": 29400, + "start": 29385, + "end": 29399, "loc": { "start": { "line": 693, @@ -123209,8 +123209,8 @@ }, "expression": { "type": "CallExpression", - "start": 29386, - "end": 29399, + "start": 29385, + "end": 29398, "loc": { "start": { "line": 693, @@ -123223,8 +123223,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29386, - "end": 29394, + "start": 29385, + "end": 29393, "loc": { "start": { "line": 693, @@ -123237,8 +123237,8 @@ }, "object": { "type": "Identifier", - "start": 29386, - "end": 29389, + "start": 29385, + "end": 29388, "loc": { "start": { "line": 693, @@ -123254,8 +123254,8 @@ }, "property": { "type": "Identifier", - "start": 29390, - "end": 29394, + "start": 29389, + "end": 29393, "loc": { "start": { "line": 693, @@ -123274,8 +123274,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29395, - "end": 29398, + "start": 29394, + "end": 29397, "loc": { "start": { "line": 693, @@ -123300,8 +123300,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 29420, - "end": 29561, + "start": 29419, + "end": 29560, "loc": { "start": { "line": 694, @@ -123315,8 +123315,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 29438, - "end": 29471, + "start": 29437, + "end": 29470, "loc": { "start": { "line": 695, @@ -123329,8 +123329,8 @@ }, "expression": { "type": "CallExpression", - "start": 29438, - "end": 29470, + "start": 29437, + "end": 29469, "loc": { "start": { "line": 695, @@ -123343,8 +123343,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29438, - "end": 29446, + "start": 29437, + "end": 29445, "loc": { "start": { "line": 695, @@ -123357,8 +123357,8 @@ }, "object": { "type": "Identifier", - "start": 29438, - "end": 29441, + "start": 29437, + "end": 29440, "loc": { "start": { "line": 695, @@ -123374,8 +123374,8 @@ }, "property": { "type": "Identifier", - "start": 29442, - "end": 29446, + "start": 29441, + "end": 29445, "loc": { "start": { "line": 695, @@ -123394,8 +123394,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29447, - "end": 29469, + "start": 29446, + "end": 29468, "loc": { "start": { "line": 695, @@ -123417,8 +123417,8 @@ }, { "type": "ExpressionStatement", - "start": 29488, - "end": 29514, + "start": 29487, + "end": 29513, "loc": { "start": { "line": 696, @@ -123431,8 +123431,8 @@ }, "expression": { "type": "CallExpression", - "start": 29488, - "end": 29514, + "start": 29487, + "end": 29513, "loc": { "start": { "line": 696, @@ -123445,8 +123445,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29488, - "end": 29496, + "start": 29487, + "end": 29495, "loc": { "start": { "line": 696, @@ -123459,8 +123459,8 @@ }, "object": { "type": "Identifier", - "start": 29488, - "end": 29491, + "start": 29487, + "end": 29490, "loc": { "start": { "line": 696, @@ -123476,8 +123476,8 @@ }, "property": { "type": "Identifier", - "start": 29492, - "end": 29496, + "start": 29491, + "end": 29495, "loc": { "start": { "line": 696, @@ -123496,8 +123496,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29497, - "end": 29513, + "start": 29496, + "end": 29512, "loc": { "start": { "line": 696, @@ -123519,8 +123519,8 @@ }, { "type": "ExpressionStatement", - "start": 29531, - "end": 29547, + "start": 29530, + "end": 29546, "loc": { "start": { "line": 697, @@ -123533,8 +123533,8 @@ }, "expression": { "type": "CallExpression", - "start": 29531, - "end": 29546, + "start": 29530, + "end": 29545, "loc": { "start": { "line": 697, @@ -123547,8 +123547,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29531, - "end": 29539, + "start": 29530, + "end": 29538, "loc": { "start": { "line": 697, @@ -123561,8 +123561,8 @@ }, "object": { "type": "Identifier", - "start": 29531, - "end": 29534, + "start": 29530, + "end": 29533, "loc": { "start": { "line": 697, @@ -123578,8 +123578,8 @@ }, "property": { "type": "Identifier", - "start": 29535, - "end": 29539, + "start": 29534, + "end": 29538, "loc": { "start": { "line": 697, @@ -123598,8 +123598,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29540, - "end": 29545, + "start": 29539, + "end": 29544, "loc": { "start": { "line": 697, @@ -123625,8 +123625,8 @@ }, { "type": "ExpressionStatement", - "start": 29574, - "end": 29588, + "start": 29573, + "end": 29587, "loc": { "start": { "line": 699, @@ -123639,8 +123639,8 @@ }, "expression": { "type": "CallExpression", - "start": 29574, - "end": 29587, + "start": 29573, + "end": 29586, "loc": { "start": { "line": 699, @@ -123653,8 +123653,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29574, - "end": 29582, + "start": 29573, + "end": 29581, "loc": { "start": { "line": 699, @@ -123667,8 +123667,8 @@ }, "object": { "type": "Identifier", - "start": 29574, - "end": 29577, + "start": 29573, + "end": 29576, "loc": { "start": { "line": 699, @@ -123684,8 +123684,8 @@ }, "property": { "type": "Identifier", - "start": 29578, - "end": 29582, + "start": 29577, + "end": 29581, "loc": { "start": { "line": 699, @@ -123704,8 +123704,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29583, - "end": 29586, + "start": 29582, + "end": 29585, "loc": { "start": { "line": 699, @@ -123732,8 +123732,8 @@ }, { "type": "ExpressionStatement", - "start": 29608, - "end": 29642, + "start": 29607, + "end": 29641, "loc": { "start": { "line": 702, @@ -123746,8 +123746,8 @@ }, "expression": { "type": "CallExpression", - "start": 29608, - "end": 29641, + "start": 29607, + "end": 29640, "loc": { "start": { "line": 702, @@ -123760,8 +123760,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29608, - "end": 29616, + "start": 29607, + "end": 29615, "loc": { "start": { "line": 702, @@ -123774,8 +123774,8 @@ }, "object": { "type": "Identifier", - "start": 29608, - "end": 29611, + "start": 29607, + "end": 29610, "loc": { "start": { "line": 702, @@ -123791,8 +123791,8 @@ }, "property": { "type": "Identifier", - "start": 29612, - "end": 29616, + "start": 29611, + "end": 29615, "loc": { "start": { "line": 702, @@ -123811,8 +123811,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29617, - "end": 29640, + "start": 29616, + "end": 29639, "loc": { "start": { "line": 702, @@ -123834,8 +123834,8 @@ }, { "type": "ExpressionStatement", - "start": 29651, - "end": 29688, + "start": 29650, + "end": 29687, "loc": { "start": { "line": 703, @@ -123848,8 +123848,8 @@ }, "expression": { "type": "CallExpression", - "start": 29651, - "end": 29687, + "start": 29650, + "end": 29686, "loc": { "start": { "line": 703, @@ -123862,8 +123862,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29651, - "end": 29659, + "start": 29650, + "end": 29658, "loc": { "start": { "line": 703, @@ -123876,8 +123876,8 @@ }, "object": { "type": "Identifier", - "start": 29651, - "end": 29654, + "start": 29650, + "end": 29653, "loc": { "start": { "line": 703, @@ -123893,8 +123893,8 @@ }, "property": { "type": "Identifier", - "start": 29655, - "end": 29659, + "start": 29654, + "end": 29658, "loc": { "start": { "line": 703, @@ -123913,8 +123913,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29660, - "end": 29686, + "start": 29659, + "end": 29685, "loc": { "start": { "line": 703, @@ -123936,8 +123936,8 @@ }, { "type": "ExpressionStatement", - "start": 29697, - "end": 29734, + "start": 29696, + "end": 29733, "loc": { "start": { "line": 704, @@ -123950,8 +123950,8 @@ }, "expression": { "type": "CallExpression", - "start": 29697, - "end": 29733, + "start": 29696, + "end": 29732, "loc": { "start": { "line": 704, @@ -123964,8 +123964,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29697, - "end": 29705, + "start": 29696, + "end": 29704, "loc": { "start": { "line": 704, @@ -123978,8 +123978,8 @@ }, "object": { "type": "Identifier", - "start": 29697, - "end": 29700, + "start": 29696, + "end": 29699, "loc": { "start": { "line": 704, @@ -123995,8 +123995,8 @@ }, "property": { "type": "Identifier", - "start": 29701, - "end": 29705, + "start": 29700, + "end": 29704, "loc": { "start": { "line": 704, @@ -124015,8 +124015,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29706, - "end": 29732, + "start": 29705, + "end": 29731, "loc": { "start": { "line": 704, @@ -124038,8 +124038,8 @@ }, { "type": "ExpressionStatement", - "start": 29743, - "end": 29841, + "start": 29742, + "end": 29840, "loc": { "start": { "line": 705, @@ -124052,8 +124052,8 @@ }, "expression": { "type": "CallExpression", - "start": 29743, - "end": 29840, + "start": 29742, + "end": 29839, "loc": { "start": { "line": 705, @@ -124066,8 +124066,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29743, - "end": 29751, + "start": 29742, + "end": 29750, "loc": { "start": { "line": 705, @@ -124080,8 +124080,8 @@ }, "object": { "type": "Identifier", - "start": 29743, - "end": 29746, + "start": 29742, + "end": 29745, "loc": { "start": { "line": 705, @@ -124097,8 +124097,8 @@ }, "property": { "type": "Identifier", - "start": 29747, - "end": 29751, + "start": 29746, + "end": 29750, "loc": { "start": { "line": 705, @@ -124117,8 +124117,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29752, - "end": 29839, + "start": 29751, + "end": 29838, "loc": { "start": { "line": 705, @@ -124140,8 +124140,8 @@ }, { "type": "ExpressionStatement", - "start": 29851, - "end": 29957, + "start": 29850, + "end": 29956, "loc": { "start": { "line": 707, @@ -124154,8 +124154,8 @@ }, "expression": { "type": "CallExpression", - "start": 29851, - "end": 29956, + "start": 29850, + "end": 29955, "loc": { "start": { "line": 707, @@ -124168,8 +124168,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29851, - "end": 29859, + "start": 29850, + "end": 29858, "loc": { "start": { "line": 707, @@ -124182,8 +124182,8 @@ }, "object": { "type": "Identifier", - "start": 29851, - "end": 29854, + "start": 29850, + "end": 29853, "loc": { "start": { "line": 707, @@ -124199,8 +124199,8 @@ }, "property": { "type": "Identifier", - "start": 29855, - "end": 29859, + "start": 29854, + "end": 29858, "loc": { "start": { "line": 707, @@ -124219,8 +124219,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29860, - "end": 29955, + "start": 29859, + "end": 29954, "loc": { "start": { "line": 707, @@ -124242,8 +124242,8 @@ }, { "type": "ExpressionStatement", - "start": 29966, - "end": 30017, + "start": 29965, + "end": 30016, "loc": { "start": { "line": 708, @@ -124256,8 +124256,8 @@ }, "expression": { "type": "CallExpression", - "start": 29966, - "end": 30016, + "start": 29965, + "end": 30015, "loc": { "start": { "line": 708, @@ -124270,8 +124270,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29966, - "end": 29974, + "start": 29965, + "end": 29973, "loc": { "start": { "line": 708, @@ -124284,8 +124284,8 @@ }, "object": { "type": "Identifier", - "start": 29966, - "end": 29969, + "start": 29965, + "end": 29968, "loc": { "start": { "line": 708, @@ -124301,8 +124301,8 @@ }, "property": { "type": "Identifier", - "start": 29970, - "end": 29974, + "start": 29969, + "end": 29973, "loc": { "start": { "line": 708, @@ -124321,8 +124321,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29975, - "end": 30015, + "start": 29974, + "end": 30014, "loc": { "start": { "line": 708, @@ -124344,8 +124344,8 @@ }, { "type": "ExpressionStatement", - "start": 30027, - "end": 30065, + "start": 30026, + "end": 30064, "loc": { "start": { "line": 710, @@ -124358,8 +124358,8 @@ }, "expression": { "type": "CallExpression", - "start": 30027, - "end": 30064, + "start": 30026, + "end": 30063, "loc": { "start": { "line": 710, @@ -124372,8 +124372,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30027, - "end": 30035, + "start": 30026, + "end": 30034, "loc": { "start": { "line": 710, @@ -124386,8 +124386,8 @@ }, "object": { "type": "Identifier", - "start": 30027, - "end": 30030, + "start": 30026, + "end": 30029, "loc": { "start": { "line": 710, @@ -124403,8 +124403,8 @@ }, "property": { "type": "Identifier", - "start": 30031, - "end": 30035, + "start": 30030, + "end": 30034, "loc": { "start": { "line": 710, @@ -124423,8 +124423,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30036, - "end": 30063, + "start": 30035, + "end": 30062, "loc": { "start": { "line": 710, @@ -124446,8 +124446,8 @@ }, { "type": "ExpressionStatement", - "start": 30074, - "end": 30110, + "start": 30073, + "end": 30109, "loc": { "start": { "line": 711, @@ -124460,8 +124460,8 @@ }, "expression": { "type": "CallExpression", - "start": 30074, - "end": 30109, + "start": 30073, + "end": 30108, "loc": { "start": { "line": 711, @@ -124474,8 +124474,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30074, - "end": 30082, + "start": 30073, + "end": 30081, "loc": { "start": { "line": 711, @@ -124488,8 +124488,8 @@ }, "object": { "type": "Identifier", - "start": 30074, - "end": 30077, + "start": 30073, + "end": 30076, "loc": { "start": { "line": 711, @@ -124505,8 +124505,8 @@ }, "property": { "type": "Identifier", - "start": 30078, - "end": 30082, + "start": 30077, + "end": 30081, "loc": { "start": { "line": 711, @@ -124525,8 +124525,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30083, - "end": 30108, + "start": 30082, + "end": 30107, "loc": { "start": { "line": 711, @@ -124548,8 +124548,8 @@ }, { "type": "ExpressionStatement", - "start": 30119, - "end": 30185, + "start": 30118, + "end": 30184, "loc": { "start": { "line": 712, @@ -124562,8 +124562,8 @@ }, "expression": { "type": "CallExpression", - "start": 30119, - "end": 30184, + "start": 30118, + "end": 30183, "loc": { "start": { "line": 712, @@ -124576,8 +124576,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30119, - "end": 30127, + "start": 30118, + "end": 30126, "loc": { "start": { "line": 712, @@ -124590,8 +124590,8 @@ }, "object": { "type": "Identifier", - "start": 30119, - "end": 30122, + "start": 30118, + "end": 30121, "loc": { "start": { "line": 712, @@ -124607,8 +124607,8 @@ }, "property": { "type": "Identifier", - "start": 30123, - "end": 30127, + "start": 30122, + "end": 30126, "loc": { "start": { "line": 712, @@ -124627,8 +124627,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30128, - "end": 30183, + "start": 30127, + "end": 30182, "loc": { "start": { "line": 712, @@ -124650,8 +124650,8 @@ }, { "type": "ExpressionStatement", - "start": 30194, - "end": 30261, + "start": 30193, + "end": 30260, "loc": { "start": { "line": 713, @@ -124664,8 +124664,8 @@ }, "expression": { "type": "CallExpression", - "start": 30194, - "end": 30260, + "start": 30193, + "end": 30259, "loc": { "start": { "line": 713, @@ -124678,8 +124678,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30194, - "end": 30202, + "start": 30193, + "end": 30201, "loc": { "start": { "line": 713, @@ -124692,8 +124692,8 @@ }, "object": { "type": "Identifier", - "start": 30194, - "end": 30197, + "start": 30193, + "end": 30196, "loc": { "start": { "line": 713, @@ -124709,8 +124709,8 @@ }, "property": { "type": "Identifier", - "start": 30198, - "end": 30202, + "start": 30197, + "end": 30201, "loc": { "start": { "line": 713, @@ -124729,8 +124729,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30203, - "end": 30259, + "start": 30202, + "end": 30258, "loc": { "start": { "line": 713, @@ -124752,8 +124752,8 @@ }, { "type": "ExpressionStatement", - "start": 30270, - "end": 30341, + "start": 30269, + "end": 30340, "loc": { "start": { "line": 714, @@ -124766,8 +124766,8 @@ }, "expression": { "type": "CallExpression", - "start": 30270, - "end": 30340, + "start": 30269, + "end": 30339, "loc": { "start": { "line": 714, @@ -124780,8 +124780,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30270, - "end": 30278, + "start": 30269, + "end": 30277, "loc": { "start": { "line": 714, @@ -124794,8 +124794,8 @@ }, "object": { "type": "Identifier", - "start": 30270, - "end": 30273, + "start": 30269, + "end": 30272, "loc": { "start": { "line": 714, @@ -124811,8 +124811,8 @@ }, "property": { "type": "Identifier", - "start": 30274, - "end": 30278, + "start": 30273, + "end": 30277, "loc": { "start": { "line": 714, @@ -124831,8 +124831,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30279, - "end": 30339, + "start": 30278, + "end": 30338, "loc": { "start": { "line": 714, @@ -124854,8 +124854,8 @@ }, { "type": "ExpressionStatement", - "start": 30351, - "end": 30454, + "start": 30350, + "end": 30453, "loc": { "start": { "line": 716, @@ -124868,8 +124868,8 @@ }, "expression": { "type": "CallExpression", - "start": 30351, - "end": 30453, + "start": 30350, + "end": 30452, "loc": { "start": { "line": 716, @@ -124882,8 +124882,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30351, - "end": 30359, + "start": 30350, + "end": 30358, "loc": { "start": { "line": 716, @@ -124896,8 +124896,8 @@ }, "object": { "type": "Identifier", - "start": 30351, - "end": 30354, + "start": 30350, + "end": 30353, "loc": { "start": { "line": 716, @@ -124913,8 +124913,8 @@ }, "property": { "type": "Identifier", - "start": 30355, - "end": 30359, + "start": 30354, + "end": 30358, "loc": { "start": { "line": 716, @@ -124933,8 +124933,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30360, - "end": 30452, + "start": 30359, + "end": 30451, "loc": { "start": { "line": 716, @@ -124956,8 +124956,8 @@ }, { "type": "ExpressionStatement", - "start": 30463, - "end": 30533, + "start": 30462, + "end": 30532, "loc": { "start": { "line": 717, @@ -124970,8 +124970,8 @@ }, "expression": { "type": "CallExpression", - "start": 30463, - "end": 30532, + "start": 30462, + "end": 30531, "loc": { "start": { "line": 717, @@ -124984,8 +124984,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30463, - "end": 30471, + "start": 30462, + "end": 30470, "loc": { "start": { "line": 717, @@ -124998,8 +124998,8 @@ }, "object": { "type": "Identifier", - "start": 30463, - "end": 30466, + "start": 30462, + "end": 30465, "loc": { "start": { "line": 717, @@ -125015,8 +125015,8 @@ }, "property": { "type": "Identifier", - "start": 30467, - "end": 30471, + "start": 30466, + "end": 30470, "loc": { "start": { "line": 717, @@ -125035,8 +125035,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30472, - "end": 30531, + "start": 30471, + "end": 30530, "loc": { "start": { "line": 717, @@ -125058,8 +125058,8 @@ }, { "type": "ExpressionStatement", - "start": 30542, - "end": 30638, + "start": 30541, + "end": 30637, "loc": { "start": { "line": 718, @@ -125072,8 +125072,8 @@ }, "expression": { "type": "CallExpression", - "start": 30542, - "end": 30637, + "start": 30541, + "end": 30636, "loc": { "start": { "line": 718, @@ -125086,8 +125086,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30542, - "end": 30550, + "start": 30541, + "end": 30549, "loc": { "start": { "line": 718, @@ -125100,8 +125100,8 @@ }, "object": { "type": "Identifier", - "start": 30542, - "end": 30545, + "start": 30541, + "end": 30544, "loc": { "start": { "line": 718, @@ -125117,8 +125117,8 @@ }, "property": { "type": "Identifier", - "start": 30546, - "end": 30550, + "start": 30545, + "end": 30549, "loc": { "start": { "line": 718, @@ -125137,8 +125137,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30551, - "end": 30636, + "start": 30550, + "end": 30635, "loc": { "start": { "line": 718, @@ -125160,8 +125160,8 @@ }, { "type": "ExpressionStatement", - "start": 30648, - "end": 30704, + "start": 30647, + "end": 30703, "loc": { "start": { "line": 720, @@ -125174,8 +125174,8 @@ }, "expression": { "type": "CallExpression", - "start": 30648, - "end": 30703, + "start": 30647, + "end": 30702, "loc": { "start": { "line": 720, @@ -125188,8 +125188,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30648, - "end": 30656, + "start": 30647, + "end": 30655, "loc": { "start": { "line": 720, @@ -125202,8 +125202,8 @@ }, "object": { "type": "Identifier", - "start": 30648, - "end": 30651, + "start": 30647, + "end": 30650, "loc": { "start": { "line": 720, @@ -125219,8 +125219,8 @@ }, "property": { "type": "Identifier", - "start": 30652, - "end": 30656, + "start": 30651, + "end": 30655, "loc": { "start": { "line": 720, @@ -125239,8 +125239,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30657, - "end": 30702, + "start": 30656, + "end": 30701, "loc": { "start": { "line": 720, @@ -125262,8 +125262,8 @@ }, { "type": "ExpressionStatement", - "start": 30713, - "end": 30764, + "start": 30712, + "end": 30774, "loc": { "start": { "line": 721, @@ -125271,13 +125271,13 @@ }, "end": { "line": 721, - "column": 59 + "column": 70 } }, "expression": { "type": "CallExpression", - "start": 30713, - "end": 30763, + "start": 30712, + "end": 30773, "loc": { "start": { "line": 721, @@ -125285,13 +125285,13 @@ }, "end": { "line": 721, - "column": 58 + "column": 69 } }, "callee": { "type": "MemberExpression", - "start": 30713, - "end": 30721, + "start": 30712, + "end": 30720, "loc": { "start": { "line": 721, @@ -125304,8 +125304,8 @@ }, "object": { "type": "Identifier", - "start": 30713, - "end": 30716, + "start": 30712, + "end": 30715, "loc": { "start": { "line": 721, @@ -125321,8 +125321,8 @@ }, "property": { "type": "Identifier", - "start": 30717, - "end": 30721, + "start": 30716, + "end": 30720, "loc": { "start": { "line": 721, @@ -125341,8 +125341,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30722, - "end": 30762, + "start": 30721, + "end": 30772, "loc": { "start": { "line": 721, @@ -125350,22 +125350,22 @@ }, "end": { "line": 721, - "column": 57 + "column": 68 } }, "extra": { - "rawValue": "geometry.viewNormal = -vViewNormal;", - "raw": "\"geometry.viewNormal = -vViewNormal;\"" + "rawValue": "geometry.viewNormal = -normalize(vViewNormal);", + "raw": "\"geometry.viewNormal = -normalize(vViewNormal);\"" }, - "value": "geometry.viewNormal = -vViewNormal;" + "value": "geometry.viewNormal = -normalize(vViewNormal);" } ] } }, { "type": "ExpressionStatement", - "start": 30773, - "end": 30840, + "start": 30783, + "end": 30850, "loc": { "start": { "line": 722, @@ -125378,8 +125378,8 @@ }, "expression": { "type": "CallExpression", - "start": 30773, - "end": 30839, + "start": 30783, + "end": 30849, "loc": { "start": { "line": 722, @@ -125392,8 +125392,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30773, - "end": 30781, + "start": 30783, + "end": 30791, "loc": { "start": { "line": 722, @@ -125406,8 +125406,8 @@ }, "object": { "type": "Identifier", - "start": 30773, - "end": 30776, + "start": 30783, + "end": 30786, "loc": { "start": { "line": 722, @@ -125423,8 +125423,8 @@ }, "property": { "type": "Identifier", - "start": 30777, - "end": 30781, + "start": 30787, + "end": 30791, "loc": { "start": { "line": 722, @@ -125443,8 +125443,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30782, - "end": 30838, + "start": 30792, + "end": 30848, "loc": { "start": { "line": 722, @@ -125466,8 +125466,8 @@ }, { "type": "IfStatement", - "start": 30850, - "end": 30974, + "start": 30860, + "end": 30984, "loc": { "start": { "line": 724, @@ -125480,8 +125480,8 @@ }, "test": { "type": "BinaryExpression", - "start": 30854, - "end": 30886, + "start": 30864, + "end": 30896, "loc": { "start": { "line": 724, @@ -125494,8 +125494,8 @@ }, "left": { "type": "MemberExpression", - "start": 30854, - "end": 30882, + "start": 30864, + "end": 30892, "loc": { "start": { "line": 724, @@ -125508,8 +125508,8 @@ }, "object": { "type": "MemberExpression", - "start": 30854, - "end": 30875, + "start": 30864, + "end": 30885, "loc": { "start": { "line": 724, @@ -125522,8 +125522,8 @@ }, "object": { "type": "Identifier", - "start": 30854, - "end": 30865, + "start": 30864, + "end": 30875, "loc": { "start": { "line": 724, @@ -125539,8 +125539,8 @@ }, "property": { "type": "Identifier", - "start": 30866, - "end": 30875, + "start": 30876, + "end": 30885, "loc": { "start": { "line": 724, @@ -125558,8 +125558,8 @@ }, "property": { "type": "Identifier", - "start": 30876, - "end": 30882, + "start": 30886, + "end": 30892, "loc": { "start": { "line": 724, @@ -125578,8 +125578,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 30885, - "end": 30886, + "start": 30895, + "end": 30896, "loc": { "start": { "line": 724, @@ -125599,8 +125599,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 30888, - "end": 30974, + "start": 30898, + "end": 30984, "loc": { "start": { "line": 724, @@ -125614,8 +125614,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 30902, - "end": 30964, + "start": 30912, + "end": 30974, "loc": { "start": { "line": 725, @@ -125628,8 +125628,8 @@ }, "expression": { "type": "CallExpression", - "start": 30902, - "end": 30963, + "start": 30912, + "end": 30973, "loc": { "start": { "line": 725, @@ -125642,8 +125642,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30902, - "end": 30910, + "start": 30912, + "end": 30920, "loc": { "start": { "line": 725, @@ -125656,8 +125656,8 @@ }, "object": { "type": "Identifier", - "start": 30902, - "end": 30905, + "start": 30912, + "end": 30915, "loc": { "start": { "line": 725, @@ -125673,8 +125673,8 @@ }, "property": { "type": "Identifier", - "start": 30906, - "end": 30910, + "start": 30916, + "end": 30920, "loc": { "start": { "line": 725, @@ -125693,8 +125693,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30911, - "end": 30962, + "start": 30921, + "end": 30972, "loc": { "start": { "line": 725, @@ -125721,8 +125721,8 @@ }, { "type": "IfStatement", - "start": 30984, - "end": 31159, + "start": 30994, + "end": 31169, "loc": { "start": { "line": 728, @@ -125735,8 +125735,8 @@ }, "test": { "type": "LogicalExpression", - "start": 30988, - "end": 31061, + "start": 30998, + "end": 31071, "loc": { "start": { "line": 728, @@ -125749,8 +125749,8 @@ }, "left": { "type": "BinaryExpression", - "start": 30988, - "end": 31020, + "start": 30998, + "end": 31030, "loc": { "start": { "line": 728, @@ -125763,8 +125763,8 @@ }, "left": { "type": "MemberExpression", - "start": 30988, - "end": 31016, + "start": 30998, + "end": 31026, "loc": { "start": { "line": 728, @@ -125777,8 +125777,8 @@ }, "object": { "type": "MemberExpression", - "start": 30988, - "end": 31009, + "start": 30998, + "end": 31019, "loc": { "start": { "line": 728, @@ -125791,8 +125791,8 @@ }, "object": { "type": "Identifier", - "start": 30988, - "end": 30999, + "start": 30998, + "end": 31009, "loc": { "start": { "line": 728, @@ -125808,8 +125808,8 @@ }, "property": { "type": "Identifier", - "start": 31000, - "end": 31009, + "start": 31010, + "end": 31019, "loc": { "start": { "line": 728, @@ -125827,8 +125827,8 @@ }, "property": { "type": "Identifier", - "start": 31010, - "end": 31016, + "start": 31020, + "end": 31026, "loc": { "start": { "line": 728, @@ -125847,8 +125847,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 31019, - "end": 31020, + "start": 31029, + "end": 31030, "loc": { "start": { "line": 728, @@ -125869,8 +125869,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 31024, - "end": 31061, + "start": 31034, + "end": 31071, "loc": { "start": { "line": 728, @@ -125883,8 +125883,8 @@ }, "left": { "type": "MemberExpression", - "start": 31024, - "end": 31057, + "start": 31034, + "end": 31067, "loc": { "start": { "line": 728, @@ -125897,8 +125897,8 @@ }, "object": { "type": "MemberExpression", - "start": 31024, - "end": 31050, + "start": 31034, + "end": 31060, "loc": { "start": { "line": 728, @@ -125911,8 +125911,8 @@ }, "object": { "type": "Identifier", - "start": 31024, - "end": 31035, + "start": 31034, + "end": 31045, "loc": { "start": { "line": 728, @@ -125928,8 +125928,8 @@ }, "property": { "type": "Identifier", - "start": 31036, - "end": 31050, + "start": 31046, + "end": 31060, "loc": { "start": { "line": 728, @@ -125947,8 +125947,8 @@ }, "property": { "type": "Identifier", - "start": 31051, - "end": 31057, + "start": 31061, + "end": 31067, "loc": { "start": { "line": 728, @@ -125967,8 +125967,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 31060, - "end": 31061, + "start": 31070, + "end": 31071, "loc": { "start": { "line": 728, @@ -125989,8 +125989,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 31063, - "end": 31159, + "start": 31073, + "end": 31169, "loc": { "start": { "line": 728, @@ -126004,8 +126004,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 31077, - "end": 31149, + "start": 31087, + "end": 31159, "loc": { "start": { "line": 729, @@ -126018,8 +126018,8 @@ }, "expression": { "type": "CallExpression", - "start": 31077, - "end": 31148, + "start": 31087, + "end": 31158, "loc": { "start": { "line": 729, @@ -126032,8 +126032,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31077, - "end": 31085, + "start": 31087, + "end": 31095, "loc": { "start": { "line": 729, @@ -126046,8 +126046,8 @@ }, "object": { "type": "Identifier", - "start": 31077, - "end": 31080, + "start": 31087, + "end": 31090, "loc": { "start": { "line": 729, @@ -126063,8 +126063,8 @@ }, "property": { "type": "Identifier", - "start": 31081, - "end": 31085, + "start": 31091, + "end": 31095, "loc": { "start": { "line": 729, @@ -126083,8 +126083,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31086, - "end": 31147, + "start": 31096, + "end": 31157, "loc": { "start": { "line": 729, @@ -126111,8 +126111,8 @@ }, { "type": "ForStatement", - "start": 31169, - "end": 32640, + "start": 31179, + "end": 32650, "loc": { "start": { "line": 732, @@ -126125,8 +126125,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 31174, - "end": 31216, + "start": 31184, + "end": 31226, "loc": { "start": { "line": 732, @@ -126140,8 +126140,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 31178, - "end": 31183, + "start": 31188, + "end": 31193, "loc": { "start": { "line": 732, @@ -126154,8 +126154,8 @@ }, "id": { "type": "Identifier", - "start": 31178, - "end": 31179, + "start": 31188, + "end": 31189, "loc": { "start": { "line": 732, @@ -126171,8 +126171,8 @@ }, "init": { "type": "NumericLiteral", - "start": 31182, - "end": 31183, + "start": 31192, + "end": 31193, "loc": { "start": { "line": 732, @@ -126192,8 +126192,8 @@ }, { "type": "VariableDeclarator", - "start": 31185, - "end": 31216, + "start": 31195, + "end": 31226, "loc": { "start": { "line": 732, @@ -126206,8 +126206,8 @@ }, "id": { "type": "Identifier", - "start": 31185, - "end": 31188, + "start": 31195, + "end": 31198, "loc": { "start": { "line": 732, @@ -126223,8 +126223,8 @@ }, "init": { "type": "MemberExpression", - "start": 31191, - "end": 31216, + "start": 31201, + "end": 31226, "loc": { "start": { "line": 732, @@ -126237,8 +126237,8 @@ }, "object": { "type": "MemberExpression", - "start": 31191, - "end": 31209, + "start": 31201, + "end": 31219, "loc": { "start": { "line": 732, @@ -126251,8 +126251,8 @@ }, "object": { "type": "Identifier", - "start": 31191, - "end": 31202, + "start": 31201, + "end": 31212, "loc": { "start": { "line": 732, @@ -126268,8 +126268,8 @@ }, "property": { "type": "Identifier", - "start": 31203, - "end": 31209, + "start": 31213, + "end": 31219, "loc": { "start": { "line": 732, @@ -126287,8 +126287,8 @@ }, "property": { "type": "Identifier", - "start": 31210, - "end": 31216, + "start": 31220, + "end": 31226, "loc": { "start": { "line": 732, @@ -126310,8 +126310,8 @@ }, "test": { "type": "BinaryExpression", - "start": 31218, - "end": 31225, + "start": 31228, + "end": 31235, "loc": { "start": { "line": 732, @@ -126324,8 +126324,8 @@ }, "left": { "type": "Identifier", - "start": 31218, - "end": 31219, + "start": 31228, + "end": 31229, "loc": { "start": { "line": 732, @@ -126342,8 +126342,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 31222, - "end": 31225, + "start": 31232, + "end": 31235, "loc": { "start": { "line": 732, @@ -126360,8 +126360,8 @@ }, "update": { "type": "UpdateExpression", - "start": 31227, - "end": 31230, + "start": 31237, + "end": 31240, "loc": { "start": { "line": 732, @@ -126376,8 +126376,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 31227, - "end": 31228, + "start": 31237, + "end": 31238, "loc": { "start": { "line": 732, @@ -126394,8 +126394,8 @@ }, "body": { "type": "BlockStatement", - "start": 31232, - "end": 32640, + "start": 31242, + "end": 32650, "loc": { "start": { "line": 732, @@ -126409,8 +126409,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 31246, - "end": 31282, + "start": 31256, + "end": 31292, "loc": { "start": { "line": 733, @@ -126424,8 +126424,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 31252, - "end": 31281, + "start": 31262, + "end": 31291, "loc": { "start": { "line": 733, @@ -126438,8 +126438,8 @@ }, "id": { "type": "Identifier", - "start": 31252, - "end": 31257, + "start": 31262, + "end": 31267, "loc": { "start": { "line": 733, @@ -126455,8 +126455,8 @@ }, "init": { "type": "MemberExpression", - "start": 31260, - "end": 31281, + "start": 31270, + "end": 31291, "loc": { "start": { "line": 733, @@ -126469,8 +126469,8 @@ }, "object": { "type": "MemberExpression", - "start": 31260, - "end": 31278, + "start": 31270, + "end": 31288, "loc": { "start": { "line": 733, @@ -126483,8 +126483,8 @@ }, "object": { "type": "Identifier", - "start": 31260, - "end": 31271, + "start": 31270, + "end": 31281, "loc": { "start": { "line": 733, @@ -126500,8 +126500,8 @@ }, "property": { "type": "Identifier", - "start": 31272, - "end": 31278, + "start": 31282, + "end": 31288, "loc": { "start": { "line": 733, @@ -126519,8 +126519,8 @@ }, "property": { "type": "Identifier", - "start": 31279, - "end": 31280, + "start": 31289, + "end": 31290, "loc": { "start": { "line": 733, @@ -126542,8 +126542,8 @@ }, { "type": "IfStatement", - "start": 31295, - "end": 31366, + "start": 31305, + "end": 31376, "loc": { "start": { "line": 734, @@ -126556,8 +126556,8 @@ }, "test": { "type": "BinaryExpression", - "start": 31299, - "end": 31323, + "start": 31309, + "end": 31333, "loc": { "start": { "line": 734, @@ -126570,8 +126570,8 @@ }, "left": { "type": "MemberExpression", - "start": 31299, - "end": 31309, + "start": 31309, + "end": 31319, "loc": { "start": { "line": 734, @@ -126584,8 +126584,8 @@ }, "object": { "type": "Identifier", - "start": 31299, - "end": 31304, + "start": 31309, + "end": 31314, "loc": { "start": { "line": 734, @@ -126601,8 +126601,8 @@ }, "property": { "type": "Identifier", - "start": 31305, - "end": 31309, + "start": 31315, + "end": 31319, "loc": { "start": { "line": 734, @@ -126621,8 +126621,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 31314, - "end": 31323, + "start": 31324, + "end": 31333, "loc": { "start": { "line": 734, @@ -126642,8 +126642,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 31325, - "end": 31366, + "start": 31335, + "end": 31376, "loc": { "start": { "line": 734, @@ -126657,8 +126657,8 @@ "body": [ { "type": "ContinueStatement", - "start": 31343, - "end": 31352, + "start": 31353, + "end": 31362, "loc": { "start": { "line": 735, @@ -126678,8 +126678,8 @@ }, { "type": "IfStatement", - "start": 31379, - "end": 32433, + "start": 31389, + "end": 32443, "loc": { "start": { "line": 737, @@ -126692,8 +126692,8 @@ }, "test": { "type": "BinaryExpression", - "start": 31383, - "end": 31403, + "start": 31393, + "end": 31413, "loc": { "start": { "line": 737, @@ -126706,8 +126706,8 @@ }, "left": { "type": "MemberExpression", - "start": 31383, - "end": 31393, + "start": 31393, + "end": 31403, "loc": { "start": { "line": 737, @@ -126720,8 +126720,8 @@ }, "object": { "type": "Identifier", - "start": 31383, - "end": 31388, + "start": 31393, + "end": 31398, "loc": { "start": { "line": 737, @@ -126737,8 +126737,8 @@ }, "property": { "type": "Identifier", - "start": 31389, - "end": 31393, + "start": 31399, + "end": 31403, "loc": { "start": { "line": 737, @@ -126757,8 +126757,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 31398, - "end": 31403, + "start": 31408, + "end": 31413, "loc": { "start": { "line": 737, @@ -126778,8 +126778,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 31405, - "end": 31703, + "start": 31415, + "end": 31713, "loc": { "start": { "line": 737, @@ -126793,8 +126793,8 @@ "body": [ { "type": "IfStatement", - "start": 31423, - "end": 31689, + "start": 31433, + "end": 31699, "loc": { "start": { "line": 738, @@ -126807,8 +126807,8 @@ }, "test": { "type": "BinaryExpression", - "start": 31427, - "end": 31449, + "start": 31437, + "end": 31459, "loc": { "start": { "line": 738, @@ -126821,8 +126821,8 @@ }, "left": { "type": "MemberExpression", - "start": 31427, - "end": 31438, + "start": 31437, + "end": 31448, "loc": { "start": { "line": 738, @@ -126835,8 +126835,8 @@ }, "object": { "type": "Identifier", - "start": 31427, - "end": 31432, + "start": 31437, + "end": 31442, "loc": { "start": { "line": 738, @@ -126852,8 +126852,8 @@ }, "property": { "type": "Identifier", - "start": 31433, - "end": 31438, + "start": 31443, + "end": 31448, "loc": { "start": { "line": 738, @@ -126872,8 +126872,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 31443, - "end": 31449, + "start": 31453, + "end": 31459, "loc": { "start": { "line": 738, @@ -126893,8 +126893,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 31451, - "end": 31552, + "start": 31461, + "end": 31562, "loc": { "start": { "line": 738, @@ -126908,8 +126908,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 31473, - "end": 31534, + "start": 31483, + "end": 31544, "loc": { "start": { "line": 739, @@ -126922,8 +126922,8 @@ }, "expression": { "type": "CallExpression", - "start": 31473, - "end": 31533, + "start": 31483, + "end": 31543, "loc": { "start": { "line": 739, @@ -126936,8 +126936,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31473, - "end": 31481, + "start": 31483, + "end": 31491, "loc": { "start": { "line": 739, @@ -126950,8 +126950,8 @@ }, "object": { "type": "Identifier", - "start": 31473, - "end": 31476, + "start": 31483, + "end": 31486, "loc": { "start": { "line": 739, @@ -126967,8 +126967,8 @@ }, "property": { "type": "Identifier", - "start": 31477, - "end": 31481, + "start": 31487, + "end": 31491, "loc": { "start": { "line": 739, @@ -126987,8 +126987,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 31482, - "end": 31532, + "start": 31492, + "end": 31542, "loc": { "start": { "line": 739, @@ -127001,8 +127001,8 @@ }, "left": { "type": "BinaryExpression", - "start": 31482, - "end": 31525, + "start": 31492, + "end": 31535, "loc": { "start": { "line": 739, @@ -127015,8 +127015,8 @@ }, "left": { "type": "StringLiteral", - "start": 31482, - "end": 31521, + "start": 31492, + "end": 31531, "loc": { "start": { "line": 739, @@ -127036,8 +127036,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 31524, - "end": 31525, + "start": 31534, + "end": 31535, "loc": { "start": { "line": 739, @@ -127055,8 +127055,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 31528, - "end": 31532, + "start": 31538, + "end": 31542, "loc": { "start": { "line": 739, @@ -127082,8 +127082,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 31558, - "end": 31689, + "start": 31568, + "end": 31699, "loc": { "start": { "line": 740, @@ -127097,8 +127097,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 31580, - "end": 31671, + "start": 31590, + "end": 31681, "loc": { "start": { "line": 741, @@ -127111,8 +127111,8 @@ }, "expression": { "type": "CallExpression", - "start": 31580, - "end": 31670, + "start": 31590, + "end": 31680, "loc": { "start": { "line": 741, @@ -127125,8 +127125,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31580, - "end": 31588, + "start": 31590, + "end": 31598, "loc": { "start": { "line": 741, @@ -127139,8 +127139,8 @@ }, "object": { "type": "Identifier", - "start": 31580, - "end": 31583, + "start": 31590, + "end": 31593, "loc": { "start": { "line": 741, @@ -127156,8 +127156,8 @@ }, "property": { "type": "Identifier", - "start": 31584, - "end": 31588, + "start": 31594, + "end": 31598, "loc": { "start": { "line": 741, @@ -127176,8 +127176,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 31589, - "end": 31669, + "start": 31599, + "end": 31679, "loc": { "start": { "line": 741, @@ -127190,8 +127190,8 @@ }, "left": { "type": "BinaryExpression", - "start": 31589, - "end": 31651, + "start": 31599, + "end": 31661, "loc": { "start": { "line": 741, @@ -127204,8 +127204,8 @@ }, "left": { "type": "StringLiteral", - "start": 31589, - "end": 31647, + "start": 31599, + "end": 31657, "loc": { "start": { "line": 741, @@ -127225,8 +127225,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 31650, - "end": 31651, + "start": 31660, + "end": 31661, "loc": { "start": { "line": 741, @@ -127244,8 +127244,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 31654, - "end": 31669, + "start": 31664, + "end": 31679, "loc": { "start": { "line": 741, @@ -127275,8 +127275,8 @@ }, "alternate": { "type": "IfStatement", - "start": 31709, - "end": 32433, + "start": 31719, + "end": 32443, "loc": { "start": { "line": 743, @@ -127289,8 +127289,8 @@ }, "test": { "type": "BinaryExpression", - "start": 31713, - "end": 31735, + "start": 31723, + "end": 31745, "loc": { "start": { "line": 743, @@ -127303,8 +127303,8 @@ }, "left": { "type": "MemberExpression", - "start": 31713, - "end": 31723, + "start": 31723, + "end": 31733, "loc": { "start": { "line": 743, @@ -127317,8 +127317,8 @@ }, "object": { "type": "Identifier", - "start": 31713, - "end": 31718, + "start": 31723, + "end": 31728, "loc": { "start": { "line": 743, @@ -127334,8 +127334,8 @@ }, "property": { "type": "Identifier", - "start": 31719, - "end": 31723, + "start": 31729, + "end": 31733, "loc": { "start": { "line": 743, @@ -127354,8 +127354,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 31728, - "end": 31735, + "start": 31738, + "end": 31745, "loc": { "start": { "line": 743, @@ -127375,8 +127375,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 31737, - "end": 32055, + "start": 31747, + "end": 32065, "loc": { "start": { "line": 743, @@ -127390,8 +127390,8 @@ "body": [ { "type": "IfStatement", - "start": 31755, - "end": 32041, + "start": 31765, + "end": 32051, "loc": { "start": { "line": 744, @@ -127404,8 +127404,8 @@ }, "test": { "type": "BinaryExpression", - "start": 31759, - "end": 31781, + "start": 31769, + "end": 31791, "loc": { "start": { "line": 744, @@ -127418,8 +127418,8 @@ }, "left": { "type": "MemberExpression", - "start": 31759, - "end": 31770, + "start": 31769, + "end": 31780, "loc": { "start": { "line": 744, @@ -127432,8 +127432,8 @@ }, "object": { "type": "Identifier", - "start": 31759, - "end": 31764, + "start": 31769, + "end": 31774, "loc": { "start": { "line": 744, @@ -127449,8 +127449,8 @@ }, "property": { "type": "Identifier", - "start": 31765, - "end": 31770, + "start": 31775, + "end": 31780, "loc": { "start": { "line": 744, @@ -127469,8 +127469,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 31775, - "end": 31781, + "start": 31785, + "end": 31791, "loc": { "start": { "line": 744, @@ -127490,8 +127490,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 31783, - "end": 31904, + "start": 31793, + "end": 31914, "loc": { "start": { "line": 744, @@ -127505,8 +127505,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 31805, - "end": 31886, + "start": 31815, + "end": 31896, "loc": { "start": { "line": 745, @@ -127519,8 +127519,8 @@ }, "expression": { "type": "CallExpression", - "start": 31805, - "end": 31885, + "start": 31815, + "end": 31895, "loc": { "start": { "line": 745, @@ -127533,8 +127533,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31805, - "end": 31813, + "start": 31815, + "end": 31823, "loc": { "start": { "line": 745, @@ -127547,8 +127547,8 @@ }, "object": { "type": "Identifier", - "start": 31805, - "end": 31808, + "start": 31815, + "end": 31818, "loc": { "start": { "line": 745, @@ -127564,8 +127564,8 @@ }, "property": { "type": "Identifier", - "start": 31809, - "end": 31813, + "start": 31819, + "end": 31823, "loc": { "start": { "line": 745, @@ -127584,8 +127584,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 31814, - "end": 31884, + "start": 31824, + "end": 31894, "loc": { "start": { "line": 745, @@ -127598,8 +127598,8 @@ }, "left": { "type": "BinaryExpression", - "start": 31814, - "end": 31857, + "start": 31824, + "end": 31867, "loc": { "start": { "line": 745, @@ -127612,8 +127612,8 @@ }, "left": { "type": "StringLiteral", - "start": 31814, - "end": 31853, + "start": 31824, + "end": 31863, "loc": { "start": { "line": 745, @@ -127633,8 +127633,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 31856, - "end": 31857, + "start": 31866, + "end": 31867, "loc": { "start": { "line": 745, @@ -127652,8 +127652,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 31860, - "end": 31884, + "start": 31870, + "end": 31894, "loc": { "start": { "line": 745, @@ -127679,8 +127679,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 31910, - "end": 32041, + "start": 31920, + "end": 32051, "loc": { "start": { "line": 746, @@ -127694,8 +127694,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 31932, - "end": 32023, + "start": 31942, + "end": 32033, "loc": { "start": { "line": 747, @@ -127708,8 +127708,8 @@ }, "expression": { "type": "CallExpression", - "start": 31932, - "end": 32022, + "start": 31942, + "end": 32032, "loc": { "start": { "line": 747, @@ -127722,8 +127722,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31932, - "end": 31940, + "start": 31942, + "end": 31950, "loc": { "start": { "line": 747, @@ -127736,8 +127736,8 @@ }, "object": { "type": "Identifier", - "start": 31932, - "end": 31935, + "start": 31942, + "end": 31945, "loc": { "start": { "line": 747, @@ -127753,8 +127753,8 @@ }, "property": { "type": "Identifier", - "start": 31936, - "end": 31940, + "start": 31946, + "end": 31950, "loc": { "start": { "line": 747, @@ -127773,8 +127773,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 31941, - "end": 32021, + "start": 31951, + "end": 32031, "loc": { "start": { "line": 747, @@ -127787,8 +127787,8 @@ }, "left": { "type": "BinaryExpression", - "start": 31941, - "end": 32003, + "start": 31951, + "end": 32013, "loc": { "start": { "line": 747, @@ -127801,8 +127801,8 @@ }, "left": { "type": "StringLiteral", - "start": 31941, - "end": 31999, + "start": 31951, + "end": 32009, "loc": { "start": { "line": 747, @@ -127822,8 +127822,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32002, - "end": 32003, + "start": 32012, + "end": 32013, "loc": { "start": { "line": 747, @@ -127841,8 +127841,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32006, - "end": 32021, + "start": 32016, + "end": 32031, "loc": { "start": { "line": 747, @@ -127872,8 +127872,8 @@ }, "alternate": { "type": "IfStatement", - "start": 32061, - "end": 32433, + "start": 32071, + "end": 32443, "loc": { "start": { "line": 749, @@ -127886,8 +127886,8 @@ }, "test": { "type": "BinaryExpression", - "start": 32065, - "end": 32086, + "start": 32075, + "end": 32096, "loc": { "start": { "line": 749, @@ -127900,8 +127900,8 @@ }, "left": { "type": "MemberExpression", - "start": 32065, - "end": 32075, + "start": 32075, + "end": 32085, "loc": { "start": { "line": 749, @@ -127914,8 +127914,8 @@ }, "object": { "type": "Identifier", - "start": 32065, - "end": 32070, + "start": 32075, + "end": 32080, "loc": { "start": { "line": 749, @@ -127931,8 +127931,8 @@ }, "property": { "type": "Identifier", - "start": 32071, - "end": 32075, + "start": 32081, + "end": 32085, "loc": { "start": { "line": 749, @@ -127951,8 +127951,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 32080, - "end": 32086, + "start": 32090, + "end": 32096, "loc": { "start": { "line": 749, @@ -127972,8 +127972,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 32088, - "end": 32386, + "start": 32098, + "end": 32396, "loc": { "start": { "line": 749, @@ -127987,8 +127987,8 @@ "body": [ { "type": "IfStatement", - "start": 32106, - "end": 32372, + "start": 32116, + "end": 32382, "loc": { "start": { "line": 750, @@ -128001,8 +128001,8 @@ }, "test": { "type": "BinaryExpression", - "start": 32110, - "end": 32132, + "start": 32120, + "end": 32142, "loc": { "start": { "line": 750, @@ -128015,8 +128015,8 @@ }, "left": { "type": "MemberExpression", - "start": 32110, - "end": 32121, + "start": 32120, + "end": 32131, "loc": { "start": { "line": 750, @@ -128029,8 +128029,8 @@ }, "object": { "type": "Identifier", - "start": 32110, - "end": 32115, + "start": 32120, + "end": 32125, "loc": { "start": { "line": 750, @@ -128046,8 +128046,8 @@ }, "property": { "type": "Identifier", - "start": 32116, - "end": 32121, + "start": 32126, + "end": 32131, "loc": { "start": { "line": 750, @@ -128066,8 +128066,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 32126, - "end": 32132, + "start": 32136, + "end": 32142, "loc": { "start": { "line": 750, @@ -128087,8 +128087,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 32134, - "end": 32235, + "start": 32144, + "end": 32245, "loc": { "start": { "line": 750, @@ -128102,8 +128102,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 32156, - "end": 32217, + "start": 32166, + "end": 32227, "loc": { "start": { "line": 751, @@ -128116,8 +128116,8 @@ }, "expression": { "type": "CallExpression", - "start": 32156, - "end": 32216, + "start": 32166, + "end": 32226, "loc": { "start": { "line": 751, @@ -128130,8 +128130,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32156, - "end": 32164, + "start": 32166, + "end": 32174, "loc": { "start": { "line": 751, @@ -128144,8 +128144,8 @@ }, "object": { "type": "Identifier", - "start": 32156, - "end": 32159, + "start": 32166, + "end": 32169, "loc": { "start": { "line": 751, @@ -128161,8 +128161,8 @@ }, "property": { "type": "Identifier", - "start": 32160, - "end": 32164, + "start": 32170, + "end": 32174, "loc": { "start": { "line": 751, @@ -128181,8 +128181,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 32165, - "end": 32215, + "start": 32175, + "end": 32225, "loc": { "start": { "line": 751, @@ -128195,8 +128195,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32165, - "end": 32208, + "start": 32175, + "end": 32218, "loc": { "start": { "line": 751, @@ -128209,8 +128209,8 @@ }, "left": { "type": "StringLiteral", - "start": 32165, - "end": 32204, + "start": 32175, + "end": 32214, "loc": { "start": { "line": 751, @@ -128230,8 +128230,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32207, - "end": 32208, + "start": 32217, + "end": 32218, "loc": { "start": { "line": 751, @@ -128249,8 +128249,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32211, - "end": 32215, + "start": 32221, + "end": 32225, "loc": { "start": { "line": 751, @@ -128276,8 +128276,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 32241, - "end": 32372, + "start": 32251, + "end": 32382, "loc": { "start": { "line": 752, @@ -128291,8 +128291,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 32263, - "end": 32354, + "start": 32273, + "end": 32364, "loc": { "start": { "line": 753, @@ -128305,8 +128305,8 @@ }, "expression": { "type": "CallExpression", - "start": 32263, - "end": 32353, + "start": 32273, + "end": 32363, "loc": { "start": { "line": 753, @@ -128319,8 +128319,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32263, - "end": 32271, + "start": 32273, + "end": 32281, "loc": { "start": { "line": 753, @@ -128333,8 +128333,8 @@ }, "object": { "type": "Identifier", - "start": 32263, - "end": 32266, + "start": 32273, + "end": 32276, "loc": { "start": { "line": 753, @@ -128350,8 +128350,8 @@ }, "property": { "type": "Identifier", - "start": 32267, - "end": 32271, + "start": 32277, + "end": 32281, "loc": { "start": { "line": 753, @@ -128370,8 +128370,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 32272, - "end": 32352, + "start": 32282, + "end": 32362, "loc": { "start": { "line": 753, @@ -128384,8 +128384,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32272, - "end": 32334, + "start": 32282, + "end": 32344, "loc": { "start": { "line": 753, @@ -128398,8 +128398,8 @@ }, "left": { "type": "StringLiteral", - "start": 32272, - "end": 32330, + "start": 32282, + "end": 32340, "loc": { "start": { "line": 753, @@ -128419,8 +128419,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32333, - "end": 32334, + "start": 32343, + "end": 32344, "loc": { "start": { "line": 753, @@ -128438,8 +128438,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32337, - "end": 32352, + "start": 32347, + "end": 32362, "loc": { "start": { "line": 753, @@ -128469,8 +128469,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 32392, - "end": 32433, + "start": 32402, + "end": 32443, "loc": { "start": { "line": 755, @@ -128484,8 +128484,8 @@ "body": [ { "type": "ContinueStatement", - "start": 32410, - "end": 32419, + "start": 32420, + "end": 32429, "loc": { "start": { "line": 756, @@ -128506,8 +128506,8 @@ }, { "type": "ExpressionStatement", - "start": 32447, - "end": 32523, + "start": 32457, + "end": 32533, "loc": { "start": { "line": 759, @@ -128520,8 +128520,8 @@ }, "expression": { "type": "CallExpression", - "start": 32447, - "end": 32522, + "start": 32457, + "end": 32532, "loc": { "start": { "line": 759, @@ -128534,8 +128534,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32447, - "end": 32455, + "start": 32457, + "end": 32465, "loc": { "start": { "line": 759, @@ -128548,8 +128548,8 @@ }, "object": { "type": "Identifier", - "start": 32447, - "end": 32450, + "start": 32457, + "end": 32460, "loc": { "start": { "line": 759, @@ -128565,8 +128565,8 @@ }, "property": { "type": "Identifier", - "start": 32451, - "end": 32455, + "start": 32461, + "end": 32465, "loc": { "start": { "line": 759, @@ -128585,8 +128585,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 32456, - "end": 32521, + "start": 32466, + "end": 32531, "loc": { "start": { "line": 759, @@ -128599,8 +128599,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32456, - "end": 32513, + "start": 32466, + "end": 32523, "loc": { "start": { "line": 759, @@ -128613,8 +128613,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32456, - "end": 32509, + "start": 32466, + "end": 32519, "loc": { "start": { "line": 759, @@ -128627,8 +128627,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32456, - "end": 32487, + "start": 32466, + "end": 32497, "loc": { "start": { "line": 759, @@ -128641,8 +128641,8 @@ }, "left": { "type": "StringLiteral", - "start": 32456, - "end": 32483, + "start": 32466, + "end": 32493, "loc": { "start": { "line": 759, @@ -128662,8 +128662,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32486, - "end": 32487, + "start": 32496, + "end": 32497, "loc": { "start": { "line": 759, @@ -128681,8 +128681,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32490, - "end": 32509, + "start": 32500, + "end": 32519, "loc": { "start": { "line": 759, @@ -128703,8 +128703,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32512, - "end": 32513, + "start": 32522, + "end": 32523, "loc": { "start": { "line": 759, @@ -128722,8 +128722,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32516, - "end": 32521, + "start": 32526, + "end": 32531, "loc": { "start": { "line": 759, @@ -128747,8 +128747,8 @@ { "type": "CommentLine", "value": " a is intensity", - "start": 32524, - "end": 32541, + "start": 32534, + "end": 32551, "loc": { "start": { "line": 759, @@ -128764,8 +128764,8 @@ }, { "type": "ExpressionStatement", - "start": 32555, - "end": 32630, + "start": 32565, + "end": 32640, "loc": { "start": { "line": 761, @@ -128778,8 +128778,8 @@ }, "expression": { "type": "CallExpression", - "start": 32555, - "end": 32629, + "start": 32565, + "end": 32639, "loc": { "start": { "line": 761, @@ -128792,8 +128792,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32555, - "end": 32563, + "start": 32565, + "end": 32573, "loc": { "start": { "line": 761, @@ -128806,8 +128806,8 @@ }, "object": { "type": "Identifier", - "start": 32555, - "end": 32558, + "start": 32565, + "end": 32568, "loc": { "start": { "line": 761, @@ -128824,8 +128824,8 @@ }, "property": { "type": "Identifier", - "start": 32559, - "end": 32563, + "start": 32569, + "end": 32573, "loc": { "start": { "line": 761, @@ -128845,8 +128845,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32564, - "end": 32628, + "start": 32574, + "end": 32638, "loc": { "start": { "line": 761, @@ -128870,8 +128870,8 @@ { "type": "CommentLine", "value": " a is intensity", - "start": 32524, - "end": 32541, + "start": 32534, + "end": 32551, "loc": { "start": { "line": 759, @@ -128891,8 +128891,8 @@ }, { "type": "ExpressionStatement", - "start": 32650, - "end": 32781, + "start": 32660, + "end": 32791, "loc": { "start": { "line": 764, @@ -128905,8 +128905,8 @@ }, "expression": { "type": "CallExpression", - "start": 32650, - "end": 32780, + "start": 32660, + "end": 32790, "loc": { "start": { "line": 764, @@ -128919,8 +128919,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32650, - "end": 32658, + "start": 32660, + "end": 32668, "loc": { "start": { "line": 764, @@ -128933,8 +128933,8 @@ }, "object": { "type": "Identifier", - "start": 32650, - "end": 32653, + "start": 32660, + "end": 32663, "loc": { "start": { "line": 764, @@ -128950,8 +128950,8 @@ }, "property": { "type": "Identifier", - "start": 32654, - "end": 32658, + "start": 32664, + "end": 32668, "loc": { "start": { "line": 764, @@ -128970,8 +128970,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32659, - "end": 32779, + "start": 32669, + "end": 32789, "loc": { "start": { "line": 764, @@ -128993,8 +128993,8 @@ }, { "type": "ExpressionStatement", - "start": 32791, - "end": 32819, + "start": 32801, + "end": 32829, "loc": { "start": { "line": 766, @@ -129007,8 +129007,8 @@ }, "expression": { "type": "CallExpression", - "start": 32791, - "end": 32818, + "start": 32801, + "end": 32828, "loc": { "start": { "line": 766, @@ -129021,8 +129021,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32791, - "end": 32799, + "start": 32801, + "end": 32809, "loc": { "start": { "line": 766, @@ -129035,8 +129035,8 @@ }, "object": { "type": "Identifier", - "start": 32791, - "end": 32794, + "start": 32801, + "end": 32804, "loc": { "start": { "line": 766, @@ -129052,8 +129052,8 @@ }, "property": { "type": "Identifier", - "start": 32795, - "end": 32799, + "start": 32805, + "end": 32809, "loc": { "start": { "line": 766, @@ -129072,8 +129072,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32800, - "end": 32817, + "start": 32810, + "end": 32827, "loc": { "start": { "line": 766, @@ -129095,8 +129095,8 @@ }, { "type": "IfStatement", - "start": 32829, - "end": 33839, + "start": 32839, + "end": 33849, "loc": { "start": { "line": 768, @@ -129109,8 +129109,8 @@ }, "test": { "type": "MemberExpression", - "start": 32833, - "end": 32846, + "start": 32843, + "end": 32856, "loc": { "start": { "line": 768, @@ -129123,8 +129123,8 @@ }, "object": { "type": "ThisExpression", - "start": 32833, - "end": 32837, + "start": 32843, + "end": 32847, "loc": { "start": { "line": 768, @@ -129138,8 +129138,8 @@ }, "property": { "type": "Identifier", - "start": 32838, - "end": 32846, + "start": 32848, + "end": 32856, "loc": { "start": { "line": 768, @@ -129157,8 +129157,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 32848, - "end": 33739, + "start": 32858, + "end": 33749, "loc": { "start": { "line": 768, @@ -129172,8 +129172,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 33094, - "end": 33150, + "start": 33104, + "end": 33160, "loc": { "start": { "line": 771, @@ -129186,8 +129186,8 @@ }, "expression": { "type": "CallExpression", - "start": 33094, - "end": 33149, + "start": 33104, + "end": 33159, "loc": { "start": { "line": 771, @@ -129200,8 +129200,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33094, - "end": 33102, + "start": 33104, + "end": 33112, "loc": { "start": { "line": 771, @@ -129214,8 +129214,8 @@ }, "object": { "type": "Identifier", - "start": 33094, - "end": 33097, + "start": 33104, + "end": 33107, "loc": { "start": { "line": 771, @@ -129232,8 +129232,8 @@ }, "property": { "type": "Identifier", - "start": 33098, - "end": 33102, + "start": 33108, + "end": 33112, "loc": { "start": { "line": 771, @@ -129253,8 +129253,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33103, - "end": 33148, + "start": 33113, + "end": 33158, "loc": { "start": { "line": 771, @@ -129278,8 +129278,8 @@ { "type": "CommentLine", "value": " Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top", - "start": 32862, - "end": 32965, + "start": 32872, + "end": 32975, "loc": { "start": { "line": 769, @@ -129294,8 +129294,8 @@ { "type": "CommentLine", "value": " Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject", - "start": 32978, - "end": 33081, + "start": 32988, + "end": 33091, "loc": { "start": { "line": 770, @@ -129311,8 +129311,8 @@ }, { "type": "ExpressionStatement", - "start": 33163, - "end": 33219, + "start": 33173, + "end": 33229, "loc": { "start": { "line": 772, @@ -129325,8 +129325,8 @@ }, "expression": { "type": "CallExpression", - "start": 33163, - "end": 33218, + "start": 33173, + "end": 33228, "loc": { "start": { "line": 772, @@ -129339,8 +129339,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33163, - "end": 33171, + "start": 33173, + "end": 33181, "loc": { "start": { "line": 772, @@ -129353,8 +129353,8 @@ }, "object": { "type": "Identifier", - "start": 33163, - "end": 33166, + "start": 33173, + "end": 33176, "loc": { "start": { "line": 772, @@ -129370,8 +129370,8 @@ }, "property": { "type": "Identifier", - "start": 33167, - "end": 33171, + "start": 33177, + "end": 33181, "loc": { "start": { "line": 772, @@ -129390,8 +129390,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33172, - "end": 33217, + "start": 33182, + "end": 33227, "loc": { "start": { "line": 772, @@ -129413,8 +129413,8 @@ }, { "type": "ExpressionStatement", - "start": 33232, - "end": 33288, + "start": 33242, + "end": 33298, "loc": { "start": { "line": 773, @@ -129427,8 +129427,8 @@ }, "expression": { "type": "CallExpression", - "start": 33232, - "end": 33287, + "start": 33242, + "end": 33297, "loc": { "start": { "line": 773, @@ -129441,8 +129441,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33232, - "end": 33240, + "start": 33242, + "end": 33250, "loc": { "start": { "line": 773, @@ -129455,8 +129455,8 @@ }, "object": { "type": "Identifier", - "start": 33232, - "end": 33235, + "start": 33242, + "end": 33245, "loc": { "start": { "line": 773, @@ -129472,8 +129472,8 @@ }, "property": { "type": "Identifier", - "start": 33236, - "end": 33240, + "start": 33246, + "end": 33250, "loc": { "start": { "line": 773, @@ -129492,8 +129492,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33241, - "end": 33286, + "start": 33251, + "end": 33296, "loc": { "start": { "line": 773, @@ -129515,8 +129515,8 @@ }, { "type": "ExpressionStatement", - "start": 33301, - "end": 33357, + "start": 33311, + "end": 33367, "loc": { "start": { "line": 774, @@ -129529,8 +129529,8 @@ }, "expression": { "type": "CallExpression", - "start": 33301, - "end": 33356, + "start": 33311, + "end": 33366, "loc": { "start": { "line": 774, @@ -129543,8 +129543,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33301, - "end": 33309, + "start": 33311, + "end": 33319, "loc": { "start": { "line": 774, @@ -129557,8 +129557,8 @@ }, "object": { "type": "Identifier", - "start": 33301, - "end": 33304, + "start": 33311, + "end": 33314, "loc": { "start": { "line": 774, @@ -129574,8 +129574,8 @@ }, "property": { "type": "Identifier", - "start": 33305, - "end": 33309, + "start": 33315, + "end": 33319, "loc": { "start": { "line": 774, @@ -129594,8 +129594,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33310, - "end": 33355, + "start": 33320, + "end": 33365, "loc": { "start": { "line": 774, @@ -129617,8 +129617,8 @@ }, { "type": "ExpressionStatement", - "start": 33370, - "end": 33482, + "start": 33380, + "end": 33492, "loc": { "start": { "line": 775, @@ -129631,8 +129631,8 @@ }, "expression": { "type": "CallExpression", - "start": 33370, - "end": 33481, + "start": 33380, + "end": 33491, "loc": { "start": { "line": 775, @@ -129645,8 +129645,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33370, - "end": 33378, + "start": 33380, + "end": 33388, "loc": { "start": { "line": 775, @@ -129659,8 +129659,8 @@ }, "object": { "type": "Identifier", - "start": 33370, - "end": 33373, + "start": 33380, + "end": 33383, "loc": { "start": { "line": 775, @@ -129676,8 +129676,8 @@ }, "property": { "type": "Identifier", - "start": 33374, - "end": 33378, + "start": 33384, + "end": 33388, "loc": { "start": { "line": 775, @@ -129696,8 +129696,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33379, - "end": 33480, + "start": 33389, + "end": 33490, "loc": { "start": { "line": 775, @@ -129719,8 +129719,8 @@ }, { "type": "ExpressionStatement", - "start": 33495, - "end": 33633, + "start": 33505, + "end": 33643, "loc": { "start": { "line": 776, @@ -129733,8 +129733,8 @@ }, "expression": { "type": "CallExpression", - "start": 33495, - "end": 33632, + "start": 33505, + "end": 33642, "loc": { "start": { "line": 776, @@ -129747,8 +129747,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33495, - "end": 33503, + "start": 33505, + "end": 33513, "loc": { "start": { "line": 776, @@ -129761,8 +129761,8 @@ }, "object": { "type": "Identifier", - "start": 33495, - "end": 33498, + "start": 33505, + "end": 33508, "loc": { "start": { "line": 776, @@ -129778,8 +129778,8 @@ }, "property": { "type": "Identifier", - "start": 33499, - "end": 33503, + "start": 33509, + "end": 33513, "loc": { "start": { "line": 776, @@ -129798,8 +129798,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33504, - "end": 33631, + "start": 33514, + "end": 33641, "loc": { "start": { "line": 776, @@ -129821,8 +129821,8 @@ }, { "type": "ExpressionStatement", - "start": 33646, - "end": 33729, + "start": 33656, + "end": 33739, "loc": { "start": { "line": 777, @@ -129835,8 +129835,8 @@ }, "expression": { "type": "CallExpression", - "start": 33646, - "end": 33728, + "start": 33656, + "end": 33738, "loc": { "start": { "line": 777, @@ -129849,8 +129849,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33646, - "end": 33654, + "start": 33656, + "end": 33664, "loc": { "start": { "line": 777, @@ -129863,8 +129863,8 @@ }, "object": { "type": "Identifier", - "start": 33646, - "end": 33649, + "start": 33656, + "end": 33659, "loc": { "start": { "line": 777, @@ -129880,8 +129880,8 @@ }, "property": { "type": "Identifier", - "start": 33650, - "end": 33654, + "start": 33660, + "end": 33664, "loc": { "start": { "line": 777, @@ -129900,8 +129900,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33655, - "end": 33727, + "start": 33665, + "end": 33737, "loc": { "start": { "line": 777, @@ -129926,8 +129926,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 33745, - "end": 33839, + "start": 33755, + "end": 33849, "loc": { "start": { "line": 778, @@ -129941,8 +129941,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 33759, - "end": 33829, + "start": 33769, + "end": 33839, "loc": { "start": { "line": 779, @@ -129955,8 +129955,8 @@ }, "expression": { "type": "CallExpression", - "start": 33759, - "end": 33828, + "start": 33769, + "end": 33838, "loc": { "start": { "line": 779, @@ -129969,8 +129969,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33759, - "end": 33767, + "start": 33769, + "end": 33777, "loc": { "start": { "line": 779, @@ -129983,8 +129983,8 @@ }, "object": { "type": "Identifier", - "start": 33759, - "end": 33762, + "start": 33769, + "end": 33772, "loc": { "start": { "line": 779, @@ -130000,8 +130000,8 @@ }, "property": { "type": "Identifier", - "start": 33763, - "end": 33767, + "start": 33773, + "end": 33777, "loc": { "start": { "line": 779, @@ -130020,8 +130020,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33768, - "end": 33827, + "start": 33778, + "end": 33837, "loc": { "start": { "line": 779, @@ -130047,8 +130047,8 @@ }, { "type": "IfStatement", - "start": 33849, - "end": 33953, + "start": 33859, + "end": 33963, "loc": { "start": { "line": 782, @@ -130061,8 +130061,8 @@ }, "test": { "type": "Identifier", - "start": 33853, - "end": 33864, + "start": 33863, + "end": 33874, "loc": { "start": { "line": 782, @@ -130078,8 +130078,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 33866, - "end": 33953, + "start": 33876, + "end": 33963, "loc": { "start": { "line": 782, @@ -130093,8 +130093,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 33880, - "end": 33943, + "start": 33890, + "end": 33953, "loc": { "start": { "line": 783, @@ -130107,8 +130107,8 @@ }, "expression": { "type": "CallExpression", - "start": 33880, - "end": 33942, + "start": 33890, + "end": 33952, "loc": { "start": { "line": 783, @@ -130121,8 +130121,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33880, - "end": 33888, + "start": 33890, + "end": 33898, "loc": { "start": { "line": 783, @@ -130135,8 +130135,8 @@ }, "object": { "type": "Identifier", - "start": 33880, - "end": 33883, + "start": 33890, + "end": 33893, "loc": { "start": { "line": 783, @@ -130152,8 +130152,8 @@ }, "property": { "type": "Identifier", - "start": 33884, - "end": 33888, + "start": 33894, + "end": 33898, "loc": { "start": { "line": 783, @@ -130172,8 +130172,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33889, - "end": 33941, + "start": 33899, + "end": 33951, "loc": { "start": { "line": 783, @@ -130200,8 +130200,8 @@ }, { "type": "ExpressionStatement", - "start": 33963, - "end": 34001, + "start": 33973, + "end": 34011, "loc": { "start": { "line": 786, @@ -130214,8 +130214,8 @@ }, "expression": { "type": "CallExpression", - "start": 33963, - "end": 34000, + "start": 33973, + "end": 34010, "loc": { "start": { "line": 786, @@ -130228,8 +130228,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33963, - "end": 33971, + "start": 33973, + "end": 33981, "loc": { "start": { "line": 786, @@ -130242,8 +130242,8 @@ }, "object": { "type": "Identifier", - "start": 33963, - "end": 33966, + "start": 33973, + "end": 33976, "loc": { "start": { "line": 786, @@ -130259,8 +130259,8 @@ }, "property": { "type": "Identifier", - "start": 33967, - "end": 33971, + "start": 33977, + "end": 33981, "loc": { "start": { "line": 786, @@ -130279,8 +130279,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33972, - "end": 33999, + "start": 33982, + "end": 34009, "loc": { "start": { "line": 786, @@ -130302,8 +130302,8 @@ }, { "type": "IfStatement", - "start": 34011, - "end": 34201, + "start": 34021, + "end": 34211, "loc": { "start": { "line": 788, @@ -130316,8 +130316,8 @@ }, "test": { "type": "LogicalExpression", - "start": 34015, - "end": 34103, + "start": 34025, + "end": 34113, "loc": { "start": { "line": 788, @@ -130330,8 +130330,8 @@ }, "left": { "type": "MemberExpression", - "start": 34015, - "end": 34050, + "start": 34025, + "end": 34060, "loc": { "start": { "line": 788, @@ -130344,8 +130344,8 @@ }, "object": { "type": "Identifier", - "start": 34015, - "end": 34020, + "start": 34025, + "end": 34030, "loc": { "start": { "line": 788, @@ -130361,8 +130361,8 @@ }, "property": { "type": "Identifier", - "start": 34021, - "end": 34050, + "start": 34031, + "end": 34060, "loc": { "start": { "line": 788, @@ -130381,8 +130381,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 34054, - "end": 34103, + "start": 34064, + "end": 34113, "loc": { "start": { "line": 788, @@ -130395,8 +130395,8 @@ }, "object": { "type": "MemberExpression", - "start": 34054, - "end": 34085, + "start": 34064, + "end": 34095, "loc": { "start": { "line": 788, @@ -130409,8 +130409,8 @@ }, "object": { "type": "Identifier", - "start": 34054, - "end": 34064, + "start": 34064, + "end": 34074, "loc": { "start": { "line": 788, @@ -130426,8 +130426,8 @@ }, "property": { "type": "Identifier", - "start": 34065, - "end": 34085, + "start": 34075, + "end": 34095, "loc": { "start": { "line": 788, @@ -130445,8 +130445,8 @@ }, "property": { "type": "StringLiteral", - "start": 34086, - "end": 34102, + "start": 34096, + "end": 34112, "loc": { "start": { "line": 788, @@ -130468,8 +130468,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 34105, - "end": 34201, + "start": 34115, + "end": 34211, "loc": { "start": { "line": 788, @@ -130483,8 +130483,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 34119, - "end": 34191, + "start": 34129, + "end": 34201, "loc": { "start": { "line": 789, @@ -130497,8 +130497,8 @@ }, "expression": { "type": "CallExpression", - "start": 34119, - "end": 34190, + "start": 34129, + "end": 34200, "loc": { "start": { "line": 789, @@ -130511,8 +130511,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34119, - "end": 34127, + "start": 34129, + "end": 34137, "loc": { "start": { "line": 789, @@ -130525,8 +130525,8 @@ }, "object": { "type": "Identifier", - "start": 34119, - "end": 34122, + "start": 34129, + "end": 34132, "loc": { "start": { "line": 789, @@ -130542,8 +130542,8 @@ }, "property": { "type": "Identifier", - "start": 34123, - "end": 34127, + "start": 34133, + "end": 34137, "loc": { "start": { "line": 789, @@ -130562,8 +130562,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34128, - "end": 34189, + "start": 34138, + "end": 34199, "loc": { "start": { "line": 789, @@ -130590,8 +130590,8 @@ }, { "type": "ExpressionStatement", - "start": 34211, - "end": 34225, + "start": 34221, + "end": 34235, "loc": { "start": { "line": 792, @@ -130604,8 +130604,8 @@ }, "expression": { "type": "CallExpression", - "start": 34211, - "end": 34224, + "start": 34221, + "end": 34234, "loc": { "start": { "line": 792, @@ -130618,8 +130618,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34211, - "end": 34219, + "start": 34221, + "end": 34229, "loc": { "start": { "line": 792, @@ -130632,8 +130632,8 @@ }, "object": { "type": "Identifier", - "start": 34211, - "end": 34214, + "start": 34221, + "end": 34224, "loc": { "start": { "line": 792, @@ -130649,8 +130649,8 @@ }, "property": { "type": "Identifier", - "start": 34215, - "end": 34219, + "start": 34225, + "end": 34229, "loc": { "start": { "line": 792, @@ -130669,8 +130669,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34220, - "end": 34223, + "start": 34230, + "end": 34233, "loc": { "start": { "line": 792, @@ -130692,8 +130692,8 @@ }, { "type": "ReturnStatement", - "start": 34234, - "end": 34245, + "start": 34244, + "end": 34255, "loc": { "start": { "line": 793, @@ -130706,8 +130706,8 @@ }, "argument": { "type": "Identifier", - "start": 34241, - "end": 34244, + "start": 34251, + "end": 34254, "loc": { "start": { "line": 793, @@ -130728,8 +130728,8 @@ }, { "type": "ClassMethod", - "start": 34257, - "end": 34317, + "start": 34267, + "end": 34327, "loc": { "start": { "line": 796, @@ -130744,8 +130744,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 34257, - "end": 34277, + "start": 34267, + "end": 34287, "loc": { "start": { "line": 796, @@ -130767,8 +130767,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 34280, - "end": 34317, + "start": 34290, + "end": 34327, "loc": { "start": { "line": 796, @@ -130782,8 +130782,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 34290, - "end": 34311, + "start": 34300, + "end": 34321, "loc": { "start": { "line": 797, @@ -130796,8 +130796,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 34290, - "end": 34310, + "start": 34300, + "end": 34320, "loc": { "start": { "line": 797, @@ -130811,8 +130811,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 34290, - "end": 34303, + "start": 34300, + "end": 34313, "loc": { "start": { "line": 797, @@ -130825,8 +130825,8 @@ }, "object": { "type": "ThisExpression", - "start": 34290, - "end": 34294, + "start": 34300, + "end": 34304, "loc": { "start": { "line": 797, @@ -130840,8 +130840,8 @@ }, "property": { "type": "Identifier", - "start": 34295, - "end": 34303, + "start": 34305, + "end": 34313, "loc": { "start": { "line": 797, @@ -130859,8 +130859,8 @@ }, "right": { "type": "NullLiteral", - "start": 34306, - "end": 34310, + "start": 34316, + "end": 34320, "loc": { "start": { "line": 797, @@ -130880,8 +130880,8 @@ }, { "type": "ClassMethod", - "start": 34323, - "end": 34446, + "start": 34333, + "end": 34456, "loc": { "start": { "line": 800, @@ -130896,8 +130896,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 34323, - "end": 34330, + "start": 34333, + "end": 34340, "loc": { "start": { "line": 800, @@ -130919,8 +130919,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 34333, - "end": 34446, + "start": 34343, + "end": 34456, "loc": { "start": { "line": 800, @@ -130934,8 +130934,8 @@ "body": [ { "type": "IfStatement", - "start": 34343, - "end": 34410, + "start": 34353, + "end": 34420, "loc": { "start": { "line": 801, @@ -130948,8 +130948,8 @@ }, "test": { "type": "MemberExpression", - "start": 34347, - "end": 34360, + "start": 34357, + "end": 34370, "loc": { "start": { "line": 801, @@ -130962,8 +130962,8 @@ }, "object": { "type": "ThisExpression", - "start": 34347, - "end": 34351, + "start": 34357, + "end": 34361, "loc": { "start": { "line": 801, @@ -130977,8 +130977,8 @@ }, "property": { "type": "Identifier", - "start": 34352, - "end": 34360, + "start": 34362, + "end": 34370, "loc": { "start": { "line": 801, @@ -130996,8 +130996,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 34362, - "end": 34410, + "start": 34372, + "end": 34420, "loc": { "start": { "line": 801, @@ -131011,8 +131011,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 34376, - "end": 34400, + "start": 34386, + "end": 34410, "loc": { "start": { "line": 802, @@ -131025,8 +131025,8 @@ }, "expression": { "type": "CallExpression", - "start": 34376, - "end": 34399, + "start": 34386, + "end": 34409, "loc": { "start": { "line": 802, @@ -131039,8 +131039,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34376, - "end": 34397, + "start": 34386, + "end": 34407, "loc": { "start": { "line": 802, @@ -131053,8 +131053,8 @@ }, "object": { "type": "MemberExpression", - "start": 34376, - "end": 34389, + "start": 34386, + "end": 34399, "loc": { "start": { "line": 802, @@ -131067,8 +131067,8 @@ }, "object": { "type": "ThisExpression", - "start": 34376, - "end": 34380, + "start": 34386, + "end": 34390, "loc": { "start": { "line": 802, @@ -131082,8 +131082,8 @@ }, "property": { "type": "Identifier", - "start": 34381, - "end": 34389, + "start": 34391, + "end": 34399, "loc": { "start": { "line": 802, @@ -131101,8 +131101,8 @@ }, "property": { "type": "Identifier", - "start": 34390, - "end": 34397, + "start": 34400, + "end": 34407, "loc": { "start": { "line": 802, @@ -131128,8 +131128,8 @@ }, { "type": "ExpressionStatement", - "start": 34419, - "end": 34440, + "start": 34429, + "end": 34450, "loc": { "start": { "line": 804, @@ -131142,8 +131142,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 34419, - "end": 34439, + "start": 34429, + "end": 34449, "loc": { "start": { "line": 804, @@ -131157,8 +131157,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 34419, - "end": 34432, + "start": 34429, + "end": 34442, "loc": { "start": { "line": 804, @@ -131171,8 +131171,8 @@ }, "object": { "type": "ThisExpression", - "start": 34419, - "end": 34423, + "start": 34429, + "end": 34433, "loc": { "start": { "line": 804, @@ -131186,8 +131186,8 @@ }, "property": { "type": "Identifier", - "start": 34424, - "end": 34432, + "start": 34434, + "end": 34442, "loc": { "start": { "line": 804, @@ -131205,8 +131205,8 @@ }, "right": { "type": "NullLiteral", - "start": 34435, - "end": 34439, + "start": 34445, + "end": 34449, "loc": { "start": { "line": 804, @@ -131450,8 +131450,8 @@ { "type": "CommentLine", "value": " MAIN LIGHTING COMPUTATION FUNCTION", - "start": 27547, - "end": 27584, + "start": 27546, + "end": 27583, "loc": { "start": { "line": 663, @@ -131466,8 +131466,8 @@ { "type": "CommentLine", "value": " a is intensity", - "start": 32524, - "end": 32541, + "start": 32534, + "end": 32551, "loc": { "start": { "line": 759, @@ -131482,8 +131482,8 @@ { "type": "CommentLine", "value": " Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top", - "start": 32862, - "end": 32965, + "start": 32872, + "end": 32975, "loc": { "start": { "line": 769, @@ -131498,8 +131498,8 @@ { "type": "CommentLine", "value": " Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject", - "start": 32978, - "end": 33081, + "start": 32988, + "end": 33091, "loc": { "start": { "line": 770, @@ -234020,9 +234020,9 @@ "binop": null, "updateContext": null }, - "value": " vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);", + "value": " vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);", "start": 26784, - "end": 26870, + "end": 26869, "loc": { "start": { "line": 652, @@ -234030,7 +234030,7 @@ }, "end": { "line": 652, - "column": 111 + "column": 110 } } }, @@ -234046,16 +234046,16 @@ "postfix": false, "binop": null }, - "start": 26870, - "end": 26871, + "start": 26869, + "end": 26870, "loc": { "start": { "line": 652, - "column": 111 + "column": 110 }, "end": { "line": 652, - "column": 112 + "column": 111 } } }, @@ -234072,16 +234072,16 @@ "binop": null, "updateContext": null }, - "start": 26871, - "end": 26872, + "start": 26870, + "end": 26871, "loc": { "start": { "line": 652, - "column": 112 + "column": 111 }, "end": { "line": 652, - "column": 113 + "column": 112 } } }, @@ -234098,8 +234098,8 @@ "binop": null }, "value": "src", - "start": 26889, - "end": 26892, + "start": 26888, + "end": 26891, "loc": { "start": { "line": 653, @@ -234124,8 +234124,8 @@ "binop": null, "updateContext": null }, - "start": 26892, - "end": 26893, + "start": 26891, + "end": 26892, "loc": { "start": { "line": 653, @@ -234150,8 +234150,8 @@ "binop": null }, "value": "push", - "start": 26893, - "end": 26897, + "start": 26892, + "end": 26896, "loc": { "start": { "line": 653, @@ -234175,8 +234175,8 @@ "postfix": false, "binop": null }, - "start": 26897, - "end": 26898, + "start": 26896, + "end": 26897, "loc": { "start": { "line": 653, @@ -234202,8 +234202,8 @@ "updateContext": null }, "value": " reflectVec = inverseTransformDirection(reflectVec, viewMatrix);", - "start": 26898, - "end": 26983, + "start": 26897, + "end": 26982, "loc": { "start": { "line": 653, @@ -234227,8 +234227,8 @@ "postfix": false, "binop": null }, - "start": 26983, - "end": 26984, + "start": 26982, + "end": 26983, "loc": { "start": { "line": 653, @@ -234253,8 +234253,8 @@ "binop": null, "updateContext": null }, - "start": 26984, - "end": 26985, + "start": 26983, + "end": 26984, "loc": { "start": { "line": 653, @@ -234279,8 +234279,8 @@ "binop": null }, "value": "src", - "start": 27002, - "end": 27005, + "start": 27001, + "end": 27004, "loc": { "start": { "line": 654, @@ -234305,8 +234305,8 @@ "binop": null, "updateContext": null }, - "start": 27005, - "end": 27006, + "start": 27004, + "end": 27005, "loc": { "start": { "line": 654, @@ -234331,8 +234331,8 @@ "binop": null }, "value": "push", - "start": 27006, - "end": 27010, + "start": 27005, + "end": 27009, "loc": { "start": { "line": 654, @@ -234356,8 +234356,8 @@ "postfix": false, "binop": null }, - "start": 27010, - "end": 27011, + "start": 27009, + "end": 27010, "loc": { "start": { "line": 654, @@ -234383,8 +234383,8 @@ "updateContext": null }, "value": " float blinnExpFromRoughness = GGXRoughnessToBlinnExponent(material.specularRoughness);", - "start": 27011, - "end": 27102, + "start": 27010, + "end": 27101, "loc": { "start": { "line": 654, @@ -234408,8 +234408,8 @@ "postfix": false, "binop": null }, - "start": 27102, - "end": 27103, + "start": 27101, + "end": 27102, "loc": { "start": { "line": 654, @@ -234434,8 +234434,8 @@ "binop": null, "updateContext": null }, - "start": 27103, - "end": 27104, + "start": 27102, + "end": 27103, "loc": { "start": { "line": 654, @@ -234460,8 +234460,8 @@ "binop": null }, "value": "src", - "start": 27121, - "end": 27124, + "start": 27120, + "end": 27123, "loc": { "start": { "line": 655, @@ -234486,8 +234486,8 @@ "binop": null, "updateContext": null }, - "start": 27124, - "end": 27125, + "start": 27123, + "end": 27124, "loc": { "start": { "line": 655, @@ -234512,8 +234512,8 @@ "binop": null }, "value": "push", - "start": 27125, - "end": 27129, + "start": 27124, + "end": 27128, "loc": { "start": { "line": 655, @@ -234537,8 +234537,8 @@ "postfix": false, "binop": null }, - "start": 27129, - "end": 27130, + "start": 27128, + "end": 27129, "loc": { "start": { "line": 655, @@ -234564,8 +234564,8 @@ "updateContext": null }, "value": " vec3 radiance = getLightProbeIndirectRadiance(reflectVec, blinnExpFromRoughness, 8);", - "start": 27130, - "end": 27233, + "start": 27129, + "end": 27232, "loc": { "start": { "line": 655, @@ -234589,8 +234589,8 @@ "postfix": false, "binop": null }, - "start": 27233, - "end": 27234, + "start": 27232, + "end": 27233, "loc": { "start": { "line": 655, @@ -234615,8 +234615,8 @@ "binop": null, "updateContext": null }, - "start": 27234, - "end": 27235, + "start": 27233, + "end": 27234, "loc": { "start": { "line": 655, @@ -234641,8 +234641,8 @@ "binop": null }, "value": "src", - "start": 27252, - "end": 27255, + "start": 27251, + "end": 27254, "loc": { "start": { "line": 656, @@ -234667,8 +234667,8 @@ "binop": null, "updateContext": null }, - "start": 27255, - "end": 27256, + "start": 27254, + "end": 27255, "loc": { "start": { "line": 656, @@ -234693,8 +234693,8 @@ "binop": null }, "value": "push", - "start": 27256, - "end": 27260, + "start": 27255, + "end": 27259, "loc": { "start": { "line": 656, @@ -234718,8 +234718,8 @@ "postfix": false, "binop": null }, - "start": 27260, - "end": 27261, + "start": 27259, + "end": 27260, "loc": { "start": { "line": 656, @@ -234745,8 +234745,8 @@ "updateContext": null }, "value": " vec3 specularBRDFContrib = BRDF_Specular_GGX_Environment(geometry, material.specularColor, material.specularRoughness);", - "start": 27261, - "end": 27388, + "start": 27260, + "end": 27387, "loc": { "start": { "line": 656, @@ -234770,8 +234770,8 @@ "postfix": false, "binop": null }, - "start": 27388, - "end": 27389, + "start": 27387, + "end": 27388, "loc": { "start": { "line": 656, @@ -234796,8 +234796,8 @@ "binop": null, "updateContext": null }, - "start": 27389, - "end": 27390, + "start": 27388, + "end": 27389, "loc": { "start": { "line": 656, @@ -234822,8 +234822,8 @@ "binop": null }, "value": "src", - "start": 27407, - "end": 27410, + "start": 27406, + "end": 27409, "loc": { "start": { "line": 657, @@ -234848,8 +234848,8 @@ "binop": null, "updateContext": null }, - "start": 27410, - "end": 27411, + "start": 27409, + "end": 27410, "loc": { "start": { "line": 657, @@ -234874,8 +234874,8 @@ "binop": null }, "value": "push", - "start": 27411, - "end": 27415, + "start": 27410, + "end": 27414, "loc": { "start": { "line": 657, @@ -234899,8 +234899,8 @@ "postfix": false, "binop": null }, - "start": 27415, - "end": 27416, + "start": 27414, + "end": 27415, "loc": { "start": { "line": 657, @@ -234926,8 +234926,8 @@ "updateContext": null }, "value": " reflectedLight.specular += radiance * specularBRDFContrib;", - "start": 27416, - "end": 27483, + "start": 27415, + "end": 27482, "loc": { "start": { "line": 657, @@ -234951,8 +234951,8 @@ "postfix": false, "binop": null }, - "start": 27483, - "end": 27484, + "start": 27482, + "end": 27483, "loc": { "start": { "line": 657, @@ -234977,8 +234977,8 @@ "binop": null, "updateContext": null }, - "start": 27484, - "end": 27485, + "start": 27483, + "end": 27484, "loc": { "start": { "line": 657, @@ -235002,8 +235002,8 @@ "postfix": false, "binop": null }, - "start": 27498, - "end": 27499, + "start": 27497, + "end": 27498, "loc": { "start": { "line": 658, @@ -235028,8 +235028,8 @@ "binop": null }, "value": "src", - "start": 27513, - "end": 27516, + "start": 27512, + "end": 27515, "loc": { "start": { "line": 660, @@ -235054,8 +235054,8 @@ "binop": null, "updateContext": null }, - "start": 27516, - "end": 27517, + "start": 27515, + "end": 27516, "loc": { "start": { "line": 660, @@ -235080,8 +235080,8 @@ "binop": null }, "value": "push", - "start": 27517, - "end": 27521, + "start": 27516, + "end": 27520, "loc": { "start": { "line": 660, @@ -235105,8 +235105,8 @@ "postfix": false, "binop": null }, - "start": 27521, - "end": 27522, + "start": 27520, + "end": 27521, "loc": { "start": { "line": 660, @@ -235132,8 +235132,8 @@ "updateContext": null }, "value": "}", - "start": 27522, - "end": 27525, + "start": 27521, + "end": 27524, "loc": { "start": { "line": 660, @@ -235157,8 +235157,8 @@ "postfix": false, "binop": null }, - "start": 27525, - "end": 27526, + "start": 27524, + "end": 27525, "loc": { "start": { "line": 660, @@ -235183,8 +235183,8 @@ "binop": null, "updateContext": null }, - "start": 27526, - "end": 27527, + "start": 27525, + "end": 27526, "loc": { "start": { "line": 660, @@ -235208,8 +235208,8 @@ "postfix": false, "binop": null }, - "start": 27536, - "end": 27537, + "start": 27535, + "end": 27536, "loc": { "start": { "line": 661, @@ -235224,8 +235224,8 @@ { "type": "CommentLine", "value": " MAIN LIGHTING COMPUTATION FUNCTION", - "start": 27547, - "end": 27584, + "start": 27546, + "end": 27583, "loc": { "start": { "line": 663, @@ -235250,8 +235250,8 @@ "binop": null }, "value": "src", - "start": 27594, - "end": 27597, + "start": 27593, + "end": 27596, "loc": { "start": { "line": 665, @@ -235276,8 +235276,8 @@ "binop": null, "updateContext": null }, - "start": 27597, - "end": 27598, + "start": 27596, + "end": 27597, "loc": { "start": { "line": 665, @@ -235302,8 +235302,8 @@ "binop": null }, "value": "push", - "start": 27598, - "end": 27602, + "start": 27597, + "end": 27601, "loc": { "start": { "line": 665, @@ -235327,8 +235327,8 @@ "postfix": false, "binop": null }, - "start": 27602, - "end": 27603, + "start": 27601, + "end": 27602, "loc": { "start": { "line": 665, @@ -235354,8 +235354,8 @@ "updateContext": null }, "value": "void computePBRLighting(const in IncidentLight incidentLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {", - "start": 27603, - "end": 27761, + "start": 27602, + "end": 27760, "loc": { "start": { "line": 665, @@ -235379,8 +235379,8 @@ "postfix": false, "binop": null }, - "start": 27761, - "end": 27762, + "start": 27760, + "end": 27761, "loc": { "start": { "line": 665, @@ -235405,8 +235405,8 @@ "binop": null, "updateContext": null }, - "start": 27762, - "end": 27763, + "start": 27761, + "end": 27762, "loc": { "start": { "line": 665, @@ -235431,8 +235431,8 @@ "binop": null }, "value": "src", - "start": 27772, - "end": 27775, + "start": 27771, + "end": 27774, "loc": { "start": { "line": 666, @@ -235457,8 +235457,8 @@ "binop": null, "updateContext": null }, - "start": 27775, - "end": 27776, + "start": 27774, + "end": 27775, "loc": { "start": { "line": 666, @@ -235483,8 +235483,8 @@ "binop": null }, "value": "push", - "start": 27776, - "end": 27780, + "start": 27775, + "end": 27779, "loc": { "start": { "line": 666, @@ -235508,8 +235508,8 @@ "postfix": false, "binop": null }, - "start": 27780, - "end": 27781, + "start": 27779, + "end": 27780, "loc": { "start": { "line": 666, @@ -235535,8 +235535,8 @@ "updateContext": null }, "value": " float dotNL = saturate(dot(geometry.viewNormal, incidentLight.direction));", - "start": 27781, - "end": 27864, + "start": 27780, + "end": 27863, "loc": { "start": { "line": 666, @@ -235560,8 +235560,8 @@ "postfix": false, "binop": null }, - "start": 27864, - "end": 27865, + "start": 27863, + "end": 27864, "loc": { "start": { "line": 666, @@ -235586,8 +235586,8 @@ "binop": null, "updateContext": null }, - "start": 27865, - "end": 27866, + "start": 27864, + "end": 27865, "loc": { "start": { "line": 666, @@ -235612,8 +235612,8 @@ "binop": null }, "value": "src", - "start": 27875, - "end": 27878, + "start": 27874, + "end": 27877, "loc": { "start": { "line": 667, @@ -235638,8 +235638,8 @@ "binop": null, "updateContext": null }, - "start": 27878, - "end": 27879, + "start": 27877, + "end": 27878, "loc": { "start": { "line": 667, @@ -235664,8 +235664,8 @@ "binop": null }, "value": "push", - "start": 27879, - "end": 27883, + "start": 27878, + "end": 27882, "loc": { "start": { "line": 667, @@ -235689,8 +235689,8 @@ "postfix": false, "binop": null }, - "start": 27883, - "end": 27884, + "start": 27882, + "end": 27883, "loc": { "start": { "line": 667, @@ -235716,8 +235716,8 @@ "updateContext": null }, "value": " vec3 irradiance = dotNL * incidentLight.color * PI;", - "start": 27884, - "end": 27940, + "start": 27883, + "end": 27939, "loc": { "start": { "line": 667, @@ -235741,8 +235741,8 @@ "postfix": false, "binop": null }, - "start": 27940, - "end": 27941, + "start": 27939, + "end": 27940, "loc": { "start": { "line": 667, @@ -235767,8 +235767,8 @@ "binop": null, "updateContext": null }, - "start": 27941, - "end": 27942, + "start": 27940, + "end": 27941, "loc": { "start": { "line": 667, @@ -235793,8 +235793,8 @@ "binop": null }, "value": "src", - "start": 27951, - "end": 27954, + "start": 27950, + "end": 27953, "loc": { "start": { "line": 668, @@ -235819,8 +235819,8 @@ "binop": null, "updateContext": null }, - "start": 27954, - "end": 27955, + "start": 27953, + "end": 27954, "loc": { "start": { "line": 668, @@ -235845,8 +235845,8 @@ "binop": null }, "value": "push", - "start": 27955, - "end": 27959, + "start": 27954, + "end": 27958, "loc": { "start": { "line": 668, @@ -235870,8 +235870,8 @@ "postfix": false, "binop": null }, - "start": 27959, - "end": 27960, + "start": 27958, + "end": 27959, "loc": { "start": { "line": 668, @@ -235897,8 +235897,8 @@ "updateContext": null }, "value": " reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);", - "start": 27960, - "end": 28045, + "start": 27959, + "end": 28044, "loc": { "start": { "line": 668, @@ -235922,8 +235922,8 @@ "postfix": false, "binop": null }, - "start": 28045, - "end": 28046, + "start": 28044, + "end": 28045, "loc": { "start": { "line": 668, @@ -235948,8 +235948,8 @@ "binop": null, "updateContext": null }, - "start": 28046, - "end": 28047, + "start": 28045, + "end": 28046, "loc": { "start": { "line": 668, @@ -235974,8 +235974,8 @@ "binop": null }, "value": "src", - "start": 28056, - "end": 28059, + "start": 28055, + "end": 28058, "loc": { "start": { "line": 669, @@ -236000,8 +236000,8 @@ "binop": null, "updateContext": null }, - "start": 28059, - "end": 28060, + "start": 28058, + "end": 28059, "loc": { "start": { "line": 669, @@ -236026,8 +236026,8 @@ "binop": null }, "value": "push", - "start": 28060, - "end": 28064, + "start": 28059, + "end": 28063, "loc": { "start": { "line": 669, @@ -236051,8 +236051,8 @@ "postfix": false, "binop": null }, - "start": 28064, - "end": 28065, + "start": 28063, + "end": 28064, "loc": { "start": { "line": 669, @@ -236078,8 +236078,8 @@ "updateContext": null }, "value": " reflectedLight.specular += irradiance * BRDF_Specular_GGX(incidentLight, geometry, material.specularColor, material.specularRoughness);", - "start": 28065, - "end": 28205, + "start": 28064, + "end": 28204, "loc": { "start": { "line": 669, @@ -236103,8 +236103,8 @@ "postfix": false, "binop": null }, - "start": 28205, - "end": 28206, + "start": 28204, + "end": 28205, "loc": { "start": { "line": 669, @@ -236129,8 +236129,8 @@ "binop": null, "updateContext": null }, - "start": 28206, - "end": 28207, + "start": 28205, + "end": 28206, "loc": { "start": { "line": 669, @@ -236155,8 +236155,8 @@ "binop": null }, "value": "src", - "start": 28216, - "end": 28219, + "start": 28215, + "end": 28218, "loc": { "start": { "line": 670, @@ -236181,8 +236181,8 @@ "binop": null, "updateContext": null }, - "start": 28219, - "end": 28220, + "start": 28218, + "end": 28219, "loc": { "start": { "line": 670, @@ -236207,8 +236207,8 @@ "binop": null }, "value": "push", - "start": 28220, - "end": 28224, + "start": 28219, + "end": 28223, "loc": { "start": { "line": 670, @@ -236232,8 +236232,8 @@ "postfix": false, "binop": null }, - "start": 28224, - "end": 28225, + "start": 28223, + "end": 28224, "loc": { "start": { "line": 670, @@ -236259,8 +236259,8 @@ "updateContext": null }, "value": "}", - "start": 28225, - "end": 28228, + "start": 28224, + "end": 28227, "loc": { "start": { "line": 670, @@ -236284,8 +236284,8 @@ "postfix": false, "binop": null }, - "start": 28228, - "end": 28229, + "start": 28227, + "end": 28228, "loc": { "start": { "line": 670, @@ -236310,8 +236310,8 @@ "binop": null, "updateContext": null }, - "start": 28229, - "end": 28230, + "start": 28228, + "end": 28229, "loc": { "start": { "line": 670, @@ -236336,8 +236336,8 @@ "binop": null }, "value": "src", - "start": 28240, - "end": 28243, + "start": 28239, + "end": 28242, "loc": { "start": { "line": 672, @@ -236362,8 +236362,8 @@ "binop": null, "updateContext": null }, - "start": 28243, - "end": 28244, + "start": 28242, + "end": 28243, "loc": { "start": { "line": 672, @@ -236388,8 +236388,8 @@ "binop": null }, "value": "push", - "start": 28244, - "end": 28248, + "start": 28243, + "end": 28247, "loc": { "start": { "line": 672, @@ -236413,8 +236413,8 @@ "postfix": false, "binop": null }, - "start": 28248, - "end": 28249, + "start": 28247, + "end": 28248, "loc": { "start": { "line": 672, @@ -236440,8 +236440,8 @@ "updateContext": null }, "value": "void main(void) {", - "start": 28249, - "end": 28268, + "start": 28248, + "end": 28267, "loc": { "start": { "line": 672, @@ -236465,8 +236465,8 @@ "postfix": false, "binop": null }, - "start": 28268, - "end": 28269, + "start": 28267, + "end": 28268, "loc": { "start": { "line": 672, @@ -236491,8 +236491,8 @@ "binop": null, "updateContext": null }, - "start": 28269, - "end": 28270, + "start": 28268, + "end": 28269, "loc": { "start": { "line": 672, @@ -236519,8 +236519,8 @@ "updateContext": null }, "value": "if", - "start": 28280, - "end": 28282, + "start": 28279, + "end": 28281, "loc": { "start": { "line": 674, @@ -236544,8 +236544,8 @@ "postfix": false, "binop": null }, - "start": 28283, - "end": 28284, + "start": 28282, + "end": 28283, "loc": { "start": { "line": 674, @@ -236570,8 +236570,8 @@ "binop": null }, "value": "clipping", - "start": 28284, - "end": 28292, + "start": 28283, + "end": 28291, "loc": { "start": { "line": 674, @@ -236595,8 +236595,8 @@ "postfix": false, "binop": null }, - "start": 28292, - "end": 28293, + "start": 28291, + "end": 28292, "loc": { "start": { "line": 674, @@ -236620,8 +236620,8 @@ "postfix": false, "binop": null }, - "start": 28294, - "end": 28295, + "start": 28293, + "end": 28294, "loc": { "start": { "line": 674, @@ -236646,8 +236646,8 @@ "binop": null }, "value": "src", - "start": 28308, - "end": 28311, + "start": 28307, + "end": 28310, "loc": { "start": { "line": 675, @@ -236672,8 +236672,8 @@ "binop": null, "updateContext": null }, - "start": 28311, - "end": 28312, + "start": 28310, + "end": 28311, "loc": { "start": { "line": 675, @@ -236698,8 +236698,8 @@ "binop": null }, "value": "push", - "start": 28312, - "end": 28316, + "start": 28311, + "end": 28315, "loc": { "start": { "line": 675, @@ -236723,8 +236723,8 @@ "postfix": false, "binop": null }, - "start": 28316, - "end": 28317, + "start": 28315, + "end": 28316, "loc": { "start": { "line": 675, @@ -236750,8 +236750,8 @@ "updateContext": null }, "value": " bool clippable = (float(vFlags2.x) > 0.0);", - "start": 28317, - "end": 28363, + "start": 28316, + "end": 28362, "loc": { "start": { "line": 675, @@ -236775,8 +236775,8 @@ "postfix": false, "binop": null }, - "start": 28363, - "end": 28364, + "start": 28362, + "end": 28363, "loc": { "start": { "line": 675, @@ -236801,8 +236801,8 @@ "binop": null, "updateContext": null }, - "start": 28364, - "end": 28365, + "start": 28363, + "end": 28364, "loc": { "start": { "line": 675, @@ -236827,8 +236827,8 @@ "binop": null }, "value": "src", - "start": 28378, - "end": 28381, + "start": 28377, + "end": 28380, "loc": { "start": { "line": 676, @@ -236853,8 +236853,8 @@ "binop": null, "updateContext": null }, - "start": 28381, - "end": 28382, + "start": 28380, + "end": 28381, "loc": { "start": { "line": 676, @@ -236879,8 +236879,8 @@ "binop": null }, "value": "push", - "start": 28382, - "end": 28386, + "start": 28381, + "end": 28385, "loc": { "start": { "line": 676, @@ -236904,8 +236904,8 @@ "postfix": false, "binop": null }, - "start": 28386, - "end": 28387, + "start": 28385, + "end": 28386, "loc": { "start": { "line": 676, @@ -236931,8 +236931,8 @@ "updateContext": null }, "value": " if (clippable) {", - "start": 28387, - "end": 28407, + "start": 28386, + "end": 28406, "loc": { "start": { "line": 676, @@ -236956,8 +236956,8 @@ "postfix": false, "binop": null }, - "start": 28407, - "end": 28408, + "start": 28406, + "end": 28407, "loc": { "start": { "line": 676, @@ -236982,8 +236982,8 @@ "binop": null, "updateContext": null }, - "start": 28408, - "end": 28409, + "start": 28407, + "end": 28408, "loc": { "start": { "line": 676, @@ -237008,8 +237008,8 @@ "binop": null }, "value": "src", - "start": 28422, - "end": 28425, + "start": 28421, + "end": 28424, "loc": { "start": { "line": 677, @@ -237034,8 +237034,8 @@ "binop": null, "updateContext": null }, - "start": 28425, - "end": 28426, + "start": 28424, + "end": 28425, "loc": { "start": { "line": 677, @@ -237060,8 +237060,8 @@ "binop": null }, "value": "push", - "start": 28426, - "end": 28430, + "start": 28425, + "end": 28429, "loc": { "start": { "line": 677, @@ -237085,8 +237085,8 @@ "postfix": false, "binop": null }, - "start": 28430, - "end": 28431, + "start": 28429, + "end": 28430, "loc": { "start": { "line": 677, @@ -237112,8 +237112,8 @@ "updateContext": null }, "value": " float dist = 0.0;", - "start": 28431, - "end": 28452, + "start": 28430, + "end": 28451, "loc": { "start": { "line": 677, @@ -237137,8 +237137,8 @@ "postfix": false, "binop": null }, - "start": 28452, - "end": 28453, + "start": 28451, + "end": 28452, "loc": { "start": { "line": 677, @@ -237163,8 +237163,8 @@ "binop": null, "updateContext": null }, - "start": 28453, - "end": 28454, + "start": 28452, + "end": 28453, "loc": { "start": { "line": 677, @@ -237191,8 +237191,8 @@ "updateContext": null }, "value": "for", - "start": 28467, - "end": 28470, + "start": 28466, + "end": 28469, "loc": { "start": { "line": 678, @@ -237216,8 +237216,8 @@ "postfix": false, "binop": null }, - "start": 28471, - "end": 28472, + "start": 28470, + "end": 28471, "loc": { "start": { "line": 678, @@ -237244,8 +237244,8 @@ "updateContext": null }, "value": "let", - "start": 28472, - "end": 28475, + "start": 28471, + "end": 28474, "loc": { "start": { "line": 678, @@ -237270,8 +237270,8 @@ "binop": null }, "value": "i", - "start": 28476, - "end": 28477, + "start": 28475, + "end": 28476, "loc": { "start": { "line": 678, @@ -237297,8 +237297,8 @@ "updateContext": null }, "value": "=", - "start": 28478, - "end": 28479, + "start": 28477, + "end": 28478, "loc": { "start": { "line": 678, @@ -237324,8 +237324,8 @@ "updateContext": null }, "value": 0, - "start": 28480, - "end": 28481, + "start": 28479, + "end": 28480, "loc": { "start": { "line": 678, @@ -237350,8 +237350,8 @@ "binop": null, "updateContext": null }, - "start": 28481, - "end": 28482, + "start": 28480, + "end": 28481, "loc": { "start": { "line": 678, @@ -237376,8 +237376,8 @@ "binop": null }, "value": "len", - "start": 28483, - "end": 28486, + "start": 28482, + "end": 28485, "loc": { "start": { "line": 678, @@ -237403,8 +237403,8 @@ "updateContext": null }, "value": "=", - "start": 28487, - "end": 28488, + "start": 28486, + "end": 28487, "loc": { "start": { "line": 678, @@ -237429,8 +237429,8 @@ "binop": null }, "value": "sectionPlanesState", - "start": 28489, - "end": 28507, + "start": 28488, + "end": 28506, "loc": { "start": { "line": 678, @@ -237455,8 +237455,8 @@ "binop": null, "updateContext": null }, - "start": 28507, - "end": 28508, + "start": 28506, + "end": 28507, "loc": { "start": { "line": 678, @@ -237481,8 +237481,8 @@ "binop": null }, "value": "sectionPlanes", - "start": 28508, - "end": 28521, + "start": 28507, + "end": 28520, "loc": { "start": { "line": 678, @@ -237507,8 +237507,8 @@ "binop": null, "updateContext": null }, - "start": 28521, - "end": 28522, + "start": 28520, + "end": 28521, "loc": { "start": { "line": 678, @@ -237533,8 +237533,8 @@ "binop": null }, "value": "length", - "start": 28522, - "end": 28528, + "start": 28521, + "end": 28527, "loc": { "start": { "line": 678, @@ -237559,8 +237559,8 @@ "binop": null, "updateContext": null }, - "start": 28528, - "end": 28529, + "start": 28527, + "end": 28528, "loc": { "start": { "line": 678, @@ -237585,8 +237585,8 @@ "binop": null }, "value": "i", - "start": 28530, - "end": 28531, + "start": 28529, + "end": 28530, "loc": { "start": { "line": 678, @@ -237612,8 +237612,8 @@ "updateContext": null }, "value": "<", - "start": 28532, - "end": 28533, + "start": 28531, + "end": 28532, "loc": { "start": { "line": 678, @@ -237638,8 +237638,8 @@ "binop": null }, "value": "len", - "start": 28534, - "end": 28537, + "start": 28533, + "end": 28536, "loc": { "start": { "line": 678, @@ -237664,8 +237664,8 @@ "binop": null, "updateContext": null }, - "start": 28537, - "end": 28538, + "start": 28536, + "end": 28537, "loc": { "start": { "line": 678, @@ -237690,8 +237690,8 @@ "binop": null }, "value": "i", - "start": 28539, - "end": 28540, + "start": 28538, + "end": 28539, "loc": { "start": { "line": 678, @@ -237716,8 +237716,8 @@ "binop": null }, "value": "++", - "start": 28540, - "end": 28542, + "start": 28539, + "end": 28541, "loc": { "start": { "line": 678, @@ -237741,8 +237741,8 @@ "postfix": false, "binop": null }, - "start": 28542, - "end": 28543, + "start": 28541, + "end": 28542, "loc": { "start": { "line": 678, @@ -237766,8 +237766,8 @@ "postfix": false, "binop": null }, - "start": 28544, - "end": 28545, + "start": 28543, + "end": 28544, "loc": { "start": { "line": 678, @@ -237792,8 +237792,8 @@ "binop": null }, "value": "src", - "start": 28562, - "end": 28565, + "start": 28561, + "end": 28564, "loc": { "start": { "line": 679, @@ -237818,8 +237818,8 @@ "binop": null, "updateContext": null }, - "start": 28565, - "end": 28566, + "start": 28564, + "end": 28565, "loc": { "start": { "line": 679, @@ -237844,8 +237844,8 @@ "binop": null }, "value": "push", - "start": 28566, - "end": 28570, + "start": 28565, + "end": 28569, "loc": { "start": { "line": 679, @@ -237869,8 +237869,8 @@ "postfix": false, "binop": null }, - "start": 28570, - "end": 28571, + "start": 28569, + "end": 28570, "loc": { "start": { "line": 679, @@ -237896,8 +237896,8 @@ "updateContext": null }, "value": "if (sectionPlaneActive", - "start": 28571, - "end": 28595, + "start": 28570, + "end": 28594, "loc": { "start": { "line": 679, @@ -237923,8 +237923,8 @@ "updateContext": null }, "value": "+", - "start": 28596, - "end": 28597, + "start": 28595, + "end": 28596, "loc": { "start": { "line": 679, @@ -237949,8 +237949,8 @@ "binop": null }, "value": "i", - "start": 28598, - "end": 28599, + "start": 28597, + "end": 28598, "loc": { "start": { "line": 679, @@ -237976,8 +237976,8 @@ "updateContext": null }, "value": "+", - "start": 28600, - "end": 28601, + "start": 28599, + "end": 28600, "loc": { "start": { "line": 679, @@ -238003,8 +238003,8 @@ "updateContext": null }, "value": ") {", - "start": 28602, - "end": 28607, + "start": 28601, + "end": 28606, "loc": { "start": { "line": 679, @@ -238028,8 +238028,8 @@ "postfix": false, "binop": null }, - "start": 28607, - "end": 28608, + "start": 28606, + "end": 28607, "loc": { "start": { "line": 679, @@ -238054,8 +238054,8 @@ "binop": null, "updateContext": null }, - "start": 28608, - "end": 28609, + "start": 28607, + "end": 28608, "loc": { "start": { "line": 679, @@ -238080,8 +238080,8 @@ "binop": null }, "value": "src", - "start": 28626, - "end": 28629, + "start": 28625, + "end": 28628, "loc": { "start": { "line": 680, @@ -238106,8 +238106,8 @@ "binop": null, "updateContext": null }, - "start": 28629, - "end": 28630, + "start": 28628, + "end": 28629, "loc": { "start": { "line": 680, @@ -238132,8 +238132,8 @@ "binop": null }, "value": "push", - "start": 28630, - "end": 28634, + "start": 28629, + "end": 28633, "loc": { "start": { "line": 680, @@ -238157,8 +238157,8 @@ "postfix": false, "binop": null }, - "start": 28634, - "end": 28635, + "start": 28633, + "end": 28634, "loc": { "start": { "line": 680, @@ -238184,8 +238184,8 @@ "updateContext": null }, "value": " dist += clamp(dot(-sectionPlaneDir", - "start": 28635, - "end": 28674, + "start": 28634, + "end": 28673, "loc": { "start": { "line": 680, @@ -238211,8 +238211,8 @@ "updateContext": null }, "value": "+", - "start": 28675, - "end": 28676, + "start": 28674, + "end": 28675, "loc": { "start": { "line": 680, @@ -238237,8 +238237,8 @@ "binop": null }, "value": "i", - "start": 28677, - "end": 28678, + "start": 28676, + "end": 28677, "loc": { "start": { "line": 680, @@ -238264,8 +238264,8 @@ "updateContext": null }, "value": "+", - "start": 28679, - "end": 28680, + "start": 28678, + "end": 28679, "loc": { "start": { "line": 680, @@ -238291,8 +238291,8 @@ "updateContext": null }, "value": ".xyz, vWorldPosition.xyz - sectionPlanePos", - "start": 28681, - "end": 28725, + "start": 28680, + "end": 28724, "loc": { "start": { "line": 680, @@ -238318,8 +238318,8 @@ "updateContext": null }, "value": "+", - "start": 28726, - "end": 28727, + "start": 28725, + "end": 28726, "loc": { "start": { "line": 680, @@ -238344,8 +238344,8 @@ "binop": null }, "value": "i", - "start": 28728, - "end": 28729, + "start": 28727, + "end": 28728, "loc": { "start": { "line": 680, @@ -238371,8 +238371,8 @@ "updateContext": null }, "value": "+", - "start": 28730, - "end": 28731, + "start": 28729, + "end": 28730, "loc": { "start": { "line": 680, @@ -238398,8 +238398,8 @@ "updateContext": null }, "value": ".xyz), 0.0, 1000.0);", - "start": 28732, - "end": 28754, + "start": 28731, + "end": 28753, "loc": { "start": { "line": 680, @@ -238423,8 +238423,8 @@ "postfix": false, "binop": null }, - "start": 28754, - "end": 28755, + "start": 28753, + "end": 28754, "loc": { "start": { "line": 680, @@ -238449,8 +238449,8 @@ "binop": null, "updateContext": null }, - "start": 28755, - "end": 28756, + "start": 28754, + "end": 28755, "loc": { "start": { "line": 680, @@ -238475,8 +238475,8 @@ "binop": null }, "value": "src", - "start": 28773, - "end": 28776, + "start": 28772, + "end": 28775, "loc": { "start": { "line": 681, @@ -238501,8 +238501,8 @@ "binop": null, "updateContext": null }, - "start": 28776, - "end": 28777, + "start": 28775, + "end": 28776, "loc": { "start": { "line": 681, @@ -238527,8 +238527,8 @@ "binop": null }, "value": "push", - "start": 28777, - "end": 28781, + "start": 28776, + "end": 28780, "loc": { "start": { "line": 681, @@ -238552,8 +238552,8 @@ "postfix": false, "binop": null }, - "start": 28781, - "end": 28782, + "start": 28780, + "end": 28781, "loc": { "start": { "line": 681, @@ -238579,8 +238579,8 @@ "updateContext": null }, "value": "}", - "start": 28782, - "end": 28785, + "start": 28781, + "end": 28784, "loc": { "start": { "line": 681, @@ -238604,8 +238604,8 @@ "postfix": false, "binop": null }, - "start": 28785, - "end": 28786, + "start": 28784, + "end": 28785, "loc": { "start": { "line": 681, @@ -238630,8 +238630,8 @@ "binop": null, "updateContext": null }, - "start": 28786, - "end": 28787, + "start": 28785, + "end": 28786, "loc": { "start": { "line": 681, @@ -238655,8 +238655,8 @@ "postfix": false, "binop": null }, - "start": 28800, - "end": 28801, + "start": 28799, + "end": 28800, "loc": { "start": { "line": 682, @@ -238683,8 +238683,8 @@ "updateContext": null }, "value": "if", - "start": 28814, - "end": 28816, + "start": 28813, + "end": 28815, "loc": { "start": { "line": 683, @@ -238708,8 +238708,8 @@ "postfix": false, "binop": null }, - "start": 28817, - "end": 28818, + "start": 28816, + "end": 28817, "loc": { "start": { "line": 683, @@ -238734,8 +238734,8 @@ "binop": null }, "value": "clippingCaps", - "start": 28818, - "end": 28830, + "start": 28817, + "end": 28829, "loc": { "start": { "line": 683, @@ -238759,8 +238759,8 @@ "postfix": false, "binop": null }, - "start": 28830, - "end": 28831, + "start": 28829, + "end": 28830, "loc": { "start": { "line": 683, @@ -238784,8 +238784,8 @@ "postfix": false, "binop": null }, - "start": 28832, - "end": 28833, + "start": 28831, + "end": 28832, "loc": { "start": { "line": 683, @@ -238810,8 +238810,8 @@ "binop": null }, "value": "src", - "start": 28850, - "end": 28853, + "start": 28849, + "end": 28852, "loc": { "start": { "line": 684, @@ -238836,8 +238836,8 @@ "binop": null, "updateContext": null }, - "start": 28853, - "end": 28854, + "start": 28852, + "end": 28853, "loc": { "start": { "line": 684, @@ -238862,8 +238862,8 @@ "binop": null }, "value": "push", - "start": 28854, - "end": 28858, + "start": 28853, + "end": 28857, "loc": { "start": { "line": 684, @@ -238887,8 +238887,8 @@ "postfix": false, "binop": null }, - "start": 28858, - "end": 28859, + "start": 28857, + "end": 28858, "loc": { "start": { "line": 684, @@ -238914,8 +238914,8 @@ "updateContext": null }, "value": " if (dist > (0.002 * vClipPosition.w)) {", - "start": 28859, - "end": 28902, + "start": 28858, + "end": 28901, "loc": { "start": { "line": 684, @@ -238939,8 +238939,8 @@ "postfix": false, "binop": null }, - "start": 28902, - "end": 28903, + "start": 28901, + "end": 28902, "loc": { "start": { "line": 684, @@ -238965,8 +238965,8 @@ "binop": null, "updateContext": null }, - "start": 28903, - "end": 28904, + "start": 28902, + "end": 28903, "loc": { "start": { "line": 684, @@ -238991,8 +238991,8 @@ "binop": null }, "value": "src", - "start": 28921, - "end": 28924, + "start": 28920, + "end": 28923, "loc": { "start": { "line": 685, @@ -239017,8 +239017,8 @@ "binop": null, "updateContext": null }, - "start": 28924, - "end": 28925, + "start": 28923, + "end": 28924, "loc": { "start": { "line": 685, @@ -239043,8 +239043,8 @@ "binop": null }, "value": "push", - "start": 28925, - "end": 28929, + "start": 28924, + "end": 28928, "loc": { "start": { "line": 685, @@ -239068,8 +239068,8 @@ "postfix": false, "binop": null }, - "start": 28929, - "end": 28930, + "start": 28928, + "end": 28929, "loc": { "start": { "line": 685, @@ -239095,8 +239095,8 @@ "updateContext": null }, "value": " discard;", - "start": 28930, - "end": 28946, + "start": 28929, + "end": 28945, "loc": { "start": { "line": 685, @@ -239120,8 +239120,8 @@ "postfix": false, "binop": null }, - "start": 28946, - "end": 28947, + "start": 28945, + "end": 28946, "loc": { "start": { "line": 685, @@ -239146,8 +239146,8 @@ "binop": null, "updateContext": null }, - "start": 28947, - "end": 28948, + "start": 28946, + "end": 28947, "loc": { "start": { "line": 685, @@ -239172,8 +239172,8 @@ "binop": null }, "value": "src", - "start": 28965, - "end": 28968, + "start": 28964, + "end": 28967, "loc": { "start": { "line": 686, @@ -239198,8 +239198,8 @@ "binop": null, "updateContext": null }, - "start": 28968, - "end": 28969, + "start": 28967, + "end": 28968, "loc": { "start": { "line": 686, @@ -239224,8 +239224,8 @@ "binop": null }, "value": "push", - "start": 28969, - "end": 28973, + "start": 28968, + "end": 28972, "loc": { "start": { "line": 686, @@ -239249,8 +239249,8 @@ "postfix": false, "binop": null }, - "start": 28973, - "end": 28974, + "start": 28972, + "end": 28973, "loc": { "start": { "line": 686, @@ -239276,8 +239276,8 @@ "updateContext": null }, "value": " }", - "start": 28974, - "end": 28979, + "start": 28973, + "end": 28978, "loc": { "start": { "line": 686, @@ -239301,8 +239301,8 @@ "postfix": false, "binop": null }, - "start": 28979, - "end": 28980, + "start": 28978, + "end": 28979, "loc": { "start": { "line": 686, @@ -239327,8 +239327,8 @@ "binop": null, "updateContext": null }, - "start": 28980, - "end": 28981, + "start": 28979, + "end": 28980, "loc": { "start": { "line": 686, @@ -239353,8 +239353,8 @@ "binop": null }, "value": "src", - "start": 28998, - "end": 29001, + "start": 28997, + "end": 29000, "loc": { "start": { "line": 687, @@ -239379,8 +239379,8 @@ "binop": null, "updateContext": null }, - "start": 29001, - "end": 29002, + "start": 29000, + "end": 29001, "loc": { "start": { "line": 687, @@ -239405,8 +239405,8 @@ "binop": null }, "value": "push", - "start": 29002, - "end": 29006, + "start": 29001, + "end": 29005, "loc": { "start": { "line": 687, @@ -239430,8 +239430,8 @@ "postfix": false, "binop": null }, - "start": 29006, - "end": 29007, + "start": 29005, + "end": 29006, "loc": { "start": { "line": 687, @@ -239457,8 +239457,8 @@ "updateContext": null }, "value": " if (dist > 0.0) { ", - "start": 29007, - "end": 29029, + "start": 29006, + "end": 29028, "loc": { "start": { "line": 687, @@ -239482,8 +239482,8 @@ "postfix": false, "binop": null }, - "start": 29029, - "end": 29030, + "start": 29028, + "end": 29029, "loc": { "start": { "line": 687, @@ -239508,8 +239508,8 @@ "binop": null, "updateContext": null }, - "start": 29030, - "end": 29031, + "start": 29029, + "end": 29030, "loc": { "start": { "line": 687, @@ -239534,8 +239534,8 @@ "binop": null }, "value": "src", - "start": 29048, - "end": 29051, + "start": 29047, + "end": 29050, "loc": { "start": { "line": 688, @@ -239560,8 +239560,8 @@ "binop": null, "updateContext": null }, - "start": 29051, - "end": 29052, + "start": 29050, + "end": 29051, "loc": { "start": { "line": 688, @@ -239586,8 +239586,8 @@ "binop": null }, "value": "push", - "start": 29052, - "end": 29056, + "start": 29051, + "end": 29055, "loc": { "start": { "line": 688, @@ -239611,8 +239611,8 @@ "postfix": false, "binop": null }, - "start": 29056, - "end": 29057, + "start": 29055, + "end": 29056, "loc": { "start": { "line": 688, @@ -239638,8 +239638,8 @@ "updateContext": null }, "value": " gl_FragColor=vec4(1.0, 0.0, 0.0, 1.0);", - "start": 29057, - "end": 29103, + "start": 29056, + "end": 29102, "loc": { "start": { "line": 688, @@ -239663,8 +239663,8 @@ "postfix": false, "binop": null }, - "start": 29103, - "end": 29104, + "start": 29102, + "end": 29103, "loc": { "start": { "line": 688, @@ -239689,8 +239689,8 @@ "binop": null, "updateContext": null }, - "start": 29104, - "end": 29105, + "start": 29103, + "end": 29104, "loc": { "start": { "line": 688, @@ -239717,8 +239717,8 @@ "updateContext": null }, "value": "if", - "start": 29122, - "end": 29124, + "start": 29121, + "end": 29123, "loc": { "start": { "line": 689, @@ -239742,8 +239742,8 @@ "postfix": false, "binop": null }, - "start": 29125, - "end": 29126, + "start": 29124, + "end": 29125, "loc": { "start": { "line": 689, @@ -239768,8 +239768,8 @@ "binop": null }, "value": "scene", - "start": 29126, - "end": 29131, + "start": 29125, + "end": 29130, "loc": { "start": { "line": 689, @@ -239794,8 +239794,8 @@ "binop": null, "updateContext": null }, - "start": 29131, - "end": 29132, + "start": 29130, + "end": 29131, "loc": { "start": { "line": 689, @@ -239820,8 +239820,8 @@ "binop": null }, "value": "logarithmicDepthBufferEnabled", - "start": 29132, - "end": 29161, + "start": 29131, + "end": 29160, "loc": { "start": { "line": 689, @@ -239847,8 +239847,8 @@ "updateContext": null }, "value": "&&", - "start": 29162, - "end": 29164, + "start": 29161, + "end": 29163, "loc": { "start": { "line": 689, @@ -239873,8 +239873,8 @@ "binop": null }, "value": "WEBGL_INFO", - "start": 29165, - "end": 29175, + "start": 29164, + "end": 29174, "loc": { "start": { "line": 689, @@ -239899,8 +239899,8 @@ "binop": null, "updateContext": null }, - "start": 29175, - "end": 29176, + "start": 29174, + "end": 29175, "loc": { "start": { "line": 689, @@ -239925,8 +239925,8 @@ "binop": null }, "value": "SUPPORTED_EXTENSIONS", - "start": 29176, - "end": 29196, + "start": 29175, + "end": 29195, "loc": { "start": { "line": 689, @@ -239951,8 +239951,8 @@ "binop": null, "updateContext": null }, - "start": 29196, - "end": 29197, + "start": 29195, + "end": 29196, "loc": { "start": { "line": 689, @@ -239978,8 +239978,8 @@ "updateContext": null }, "value": "EXT_frag_depth", - "start": 29197, - "end": 29213, + "start": 29196, + "end": 29212, "loc": { "start": { "line": 689, @@ -240004,8 +240004,8 @@ "binop": null, "updateContext": null }, - "start": 29213, - "end": 29214, + "start": 29212, + "end": 29213, "loc": { "start": { "line": 689, @@ -240029,8 +240029,8 @@ "postfix": false, "binop": null }, - "start": 29214, - "end": 29215, + "start": 29213, + "end": 29214, "loc": { "start": { "line": 689, @@ -240054,8 +240054,8 @@ "postfix": false, "binop": null }, - "start": 29216, - "end": 29217, + "start": 29215, + "end": 29216, "loc": { "start": { "line": 689, @@ -240080,8 +240080,8 @@ "binop": null }, "value": "src", - "start": 29238, - "end": 29241, + "start": 29237, + "end": 29240, "loc": { "start": { "line": 690, @@ -240106,8 +240106,8 @@ "binop": null, "updateContext": null }, - "start": 29241, - "end": 29242, + "start": 29240, + "end": 29241, "loc": { "start": { "line": 690, @@ -240132,8 +240132,8 @@ "binop": null }, "value": "push", - "start": 29242, - "end": 29246, + "start": 29241, + "end": 29245, "loc": { "start": { "line": 690, @@ -240157,8 +240157,8 @@ "postfix": false, "binop": null }, - "start": 29246, - "end": 29247, + "start": 29245, + "end": 29246, "loc": { "start": { "line": 690, @@ -240184,8 +240184,8 @@ "updateContext": null }, "value": " gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;", - "start": 29247, - "end": 29310, + "start": 29246, + "end": 29309, "loc": { "start": { "line": 690, @@ -240209,8 +240209,8 @@ "postfix": false, "binop": null }, - "start": 29310, - "end": 29311, + "start": 29309, + "end": 29310, "loc": { "start": { "line": 690, @@ -240235,8 +240235,8 @@ "binop": null, "updateContext": null }, - "start": 29311, - "end": 29312, + "start": 29310, + "end": 29311, "loc": { "start": { "line": 690, @@ -240260,8 +240260,8 @@ "postfix": false, "binop": null }, - "start": 29329, - "end": 29330, + "start": 29328, + "end": 29329, "loc": { "start": { "line": 691, @@ -240286,8 +240286,8 @@ "binop": null }, "value": "src", - "start": 29347, - "end": 29350, + "start": 29346, + "end": 29349, "loc": { "start": { "line": 692, @@ -240312,8 +240312,8 @@ "binop": null, "updateContext": null }, - "start": 29350, - "end": 29351, + "start": 29349, + "end": 29350, "loc": { "start": { "line": 692, @@ -240338,8 +240338,8 @@ "binop": null }, "value": "push", - "start": 29351, - "end": 29355, + "start": 29350, + "end": 29354, "loc": { "start": { "line": 692, @@ -240363,8 +240363,8 @@ "postfix": false, "binop": null }, - "start": 29355, - "end": 29356, + "start": 29354, + "end": 29355, "loc": { "start": { "line": 692, @@ -240390,8 +240390,8 @@ "updateContext": null }, "value": " return;", - "start": 29356, - "end": 29367, + "start": 29355, + "end": 29366, "loc": { "start": { "line": 692, @@ -240415,8 +240415,8 @@ "postfix": false, "binop": null }, - "start": 29367, - "end": 29368, + "start": 29366, + "end": 29367, "loc": { "start": { "line": 692, @@ -240441,8 +240441,8 @@ "binop": null, "updateContext": null }, - "start": 29368, - "end": 29369, + "start": 29367, + "end": 29368, "loc": { "start": { "line": 692, @@ -240467,8 +240467,8 @@ "binop": null }, "value": "src", - "start": 29386, - "end": 29389, + "start": 29385, + "end": 29388, "loc": { "start": { "line": 693, @@ -240493,8 +240493,8 @@ "binop": null, "updateContext": null }, - "start": 29389, - "end": 29390, + "start": 29388, + "end": 29389, "loc": { "start": { "line": 693, @@ -240519,8 +240519,8 @@ "binop": null }, "value": "push", - "start": 29390, - "end": 29394, + "start": 29389, + "end": 29393, "loc": { "start": { "line": 693, @@ -240544,8 +240544,8 @@ "postfix": false, "binop": null }, - "start": 29394, - "end": 29395, + "start": 29393, + "end": 29394, "loc": { "start": { "line": 693, @@ -240571,8 +240571,8 @@ "updateContext": null }, "value": "}", - "start": 29395, - "end": 29398, + "start": 29394, + "end": 29397, "loc": { "start": { "line": 693, @@ -240596,8 +240596,8 @@ "postfix": false, "binop": null }, - "start": 29398, - "end": 29399, + "start": 29397, + "end": 29398, "loc": { "start": { "line": 693, @@ -240622,8 +240622,8 @@ "binop": null, "updateContext": null }, - "start": 29399, - "end": 29400, + "start": 29398, + "end": 29399, "loc": { "start": { "line": 693, @@ -240647,8 +240647,8 @@ "postfix": false, "binop": null }, - "start": 29413, - "end": 29414, + "start": 29412, + "end": 29413, "loc": { "start": { "line": 694, @@ -240675,8 +240675,8 @@ "updateContext": null }, "value": "else", - "start": 29415, - "end": 29419, + "start": 29414, + "end": 29418, "loc": { "start": { "line": 694, @@ -240700,8 +240700,8 @@ "postfix": false, "binop": null }, - "start": 29420, - "end": 29421, + "start": 29419, + "end": 29420, "loc": { "start": { "line": 694, @@ -240726,8 +240726,8 @@ "binop": null }, "value": "src", - "start": 29438, - "end": 29441, + "start": 29437, + "end": 29440, "loc": { "start": { "line": 695, @@ -240752,8 +240752,8 @@ "binop": null, "updateContext": null }, - "start": 29441, - "end": 29442, + "start": 29440, + "end": 29441, "loc": { "start": { "line": 695, @@ -240778,8 +240778,8 @@ "binop": null }, "value": "push", - "start": 29442, - "end": 29446, + "start": 29441, + "end": 29445, "loc": { "start": { "line": 695, @@ -240803,8 +240803,8 @@ "postfix": false, "binop": null }, - "start": 29446, - "end": 29447, + "start": 29445, + "end": 29446, "loc": { "start": { "line": 695, @@ -240830,8 +240830,8 @@ "updateContext": null }, "value": " if (dist > 0.0) { ", - "start": 29447, - "end": 29469, + "start": 29446, + "end": 29468, "loc": { "start": { "line": 695, @@ -240855,8 +240855,8 @@ "postfix": false, "binop": null }, - "start": 29469, - "end": 29470, + "start": 29468, + "end": 29469, "loc": { "start": { "line": 695, @@ -240881,8 +240881,8 @@ "binop": null, "updateContext": null }, - "start": 29470, - "end": 29471, + "start": 29469, + "end": 29470, "loc": { "start": { "line": 695, @@ -240907,8 +240907,8 @@ "binop": null }, "value": "src", - "start": 29488, - "end": 29491, + "start": 29487, + "end": 29490, "loc": { "start": { "line": 696, @@ -240933,8 +240933,8 @@ "binop": null, "updateContext": null }, - "start": 29491, - "end": 29492, + "start": 29490, + "end": 29491, "loc": { "start": { "line": 696, @@ -240959,8 +240959,8 @@ "binop": null }, "value": "push", - "start": 29492, - "end": 29496, + "start": 29491, + "end": 29495, "loc": { "start": { "line": 696, @@ -240984,8 +240984,8 @@ "postfix": false, "binop": null }, - "start": 29496, - "end": 29497, + "start": 29495, + "end": 29496, "loc": { "start": { "line": 696, @@ -241011,8 +241011,8 @@ "updateContext": null }, "value": " discard;", - "start": 29497, - "end": 29513, + "start": 29496, + "end": 29512, "loc": { "start": { "line": 696, @@ -241036,8 +241036,8 @@ "postfix": false, "binop": null }, - "start": 29513, - "end": 29514, + "start": 29512, + "end": 29513, "loc": { "start": { "line": 696, @@ -241062,8 +241062,8 @@ "binop": null }, "value": "src", - "start": 29531, - "end": 29534, + "start": 29530, + "end": 29533, "loc": { "start": { "line": 697, @@ -241088,8 +241088,8 @@ "binop": null, "updateContext": null }, - "start": 29534, - "end": 29535, + "start": 29533, + "end": 29534, "loc": { "start": { "line": 697, @@ -241114,8 +241114,8 @@ "binop": null }, "value": "push", - "start": 29535, - "end": 29539, + "start": 29534, + "end": 29538, "loc": { "start": { "line": 697, @@ -241139,8 +241139,8 @@ "postfix": false, "binop": null }, - "start": 29539, - "end": 29540, + "start": 29538, + "end": 29539, "loc": { "start": { "line": 697, @@ -241166,8 +241166,8 @@ "updateContext": null }, "value": " }", - "start": 29540, - "end": 29545, + "start": 29539, + "end": 29544, "loc": { "start": { "line": 697, @@ -241191,8 +241191,8 @@ "postfix": false, "binop": null }, - "start": 29545, - "end": 29546, + "start": 29544, + "end": 29545, "loc": { "start": { "line": 697, @@ -241217,8 +241217,8 @@ "binop": null, "updateContext": null }, - "start": 29546, - "end": 29547, + "start": 29545, + "end": 29546, "loc": { "start": { "line": 697, @@ -241242,8 +241242,8 @@ "postfix": false, "binop": null }, - "start": 29560, - "end": 29561, + "start": 29559, + "end": 29560, "loc": { "start": { "line": 698, @@ -241268,8 +241268,8 @@ "binop": null }, "value": "src", - "start": 29574, - "end": 29577, + "start": 29573, + "end": 29576, "loc": { "start": { "line": 699, @@ -241294,8 +241294,8 @@ "binop": null, "updateContext": null }, - "start": 29577, - "end": 29578, + "start": 29576, + "end": 29577, "loc": { "start": { "line": 699, @@ -241320,8 +241320,8 @@ "binop": null }, "value": "push", - "start": 29578, - "end": 29582, + "start": 29577, + "end": 29581, "loc": { "start": { "line": 699, @@ -241345,8 +241345,8 @@ "postfix": false, "binop": null }, - "start": 29582, - "end": 29583, + "start": 29581, + "end": 29582, "loc": { "start": { "line": 699, @@ -241372,8 +241372,8 @@ "updateContext": null }, "value": "}", - "start": 29583, - "end": 29586, + "start": 29582, + "end": 29585, "loc": { "start": { "line": 699, @@ -241397,8 +241397,8 @@ "postfix": false, "binop": null }, - "start": 29586, - "end": 29587, + "start": 29585, + "end": 29586, "loc": { "start": { "line": 699, @@ -241423,8 +241423,8 @@ "binop": null, "updateContext": null }, - "start": 29587, - "end": 29588, + "start": 29586, + "end": 29587, "loc": { "start": { "line": 699, @@ -241448,8 +241448,8 @@ "postfix": false, "binop": null }, - "start": 29597, - "end": 29598, + "start": 29596, + "end": 29597, "loc": { "start": { "line": 700, @@ -241474,8 +241474,8 @@ "binop": null }, "value": "src", - "start": 29608, - "end": 29611, + "start": 29607, + "end": 29610, "loc": { "start": { "line": 702, @@ -241500,8 +241500,8 @@ "binop": null, "updateContext": null }, - "start": 29611, - "end": 29612, + "start": 29610, + "end": 29611, "loc": { "start": { "line": 702, @@ -241526,8 +241526,8 @@ "binop": null }, "value": "push", - "start": 29612, - "end": 29616, + "start": 29611, + "end": 29615, "loc": { "start": { "line": 702, @@ -241551,8 +241551,8 @@ "postfix": false, "binop": null }, - "start": 29616, - "end": 29617, + "start": 29615, + "end": 29616, "loc": { "start": { "line": 702, @@ -241578,8 +241578,8 @@ "updateContext": null }, "value": "IncidentLight light;", - "start": 29617, - "end": 29640, + "start": 29616, + "end": 29639, "loc": { "start": { "line": 702, @@ -241603,8 +241603,8 @@ "postfix": false, "binop": null }, - "start": 29640, - "end": 29641, + "start": 29639, + "end": 29640, "loc": { "start": { "line": 702, @@ -241629,8 +241629,8 @@ "binop": null, "updateContext": null }, - "start": 29641, - "end": 29642, + "start": 29640, + "end": 29641, "loc": { "start": { "line": 702, @@ -241655,8 +241655,8 @@ "binop": null }, "value": "src", - "start": 29651, - "end": 29654, + "start": 29650, + "end": 29653, "loc": { "start": { "line": 703, @@ -241681,8 +241681,8 @@ "binop": null, "updateContext": null }, - "start": 29654, - "end": 29655, + "start": 29653, + "end": 29654, "loc": { "start": { "line": 703, @@ -241707,8 +241707,8 @@ "binop": null }, "value": "push", - "start": 29655, - "end": 29659, + "start": 29654, + "end": 29658, "loc": { "start": { "line": 703, @@ -241732,8 +241732,8 @@ "postfix": false, "binop": null }, - "start": 29659, - "end": 29660, + "start": 29658, + "end": 29659, "loc": { "start": { "line": 703, @@ -241759,8 +241759,8 @@ "updateContext": null }, "value": "Material material;", - "start": 29660, - "end": 29686, + "start": 29659, + "end": 29685, "loc": { "start": { "line": 703, @@ -241784,8 +241784,8 @@ "postfix": false, "binop": null }, - "start": 29686, - "end": 29687, + "start": 29685, + "end": 29686, "loc": { "start": { "line": 703, @@ -241810,8 +241810,8 @@ "binop": null, "updateContext": null }, - "start": 29687, - "end": 29688, + "start": 29686, + "end": 29687, "loc": { "start": { "line": 703, @@ -241836,8 +241836,8 @@ "binop": null }, "value": "src", - "start": 29697, - "end": 29700, + "start": 29696, + "end": 29699, "loc": { "start": { "line": 704, @@ -241862,8 +241862,8 @@ "binop": null, "updateContext": null }, - "start": 29700, - "end": 29701, + "start": 29699, + "end": 29700, "loc": { "start": { "line": 704, @@ -241888,8 +241888,8 @@ "binop": null }, "value": "push", - "start": 29701, - "end": 29705, + "start": 29700, + "end": 29704, "loc": { "start": { "line": 704, @@ -241913,8 +241913,8 @@ "postfix": false, "binop": null }, - "start": 29705, - "end": 29706, + "start": 29704, + "end": 29705, "loc": { "start": { "line": 704, @@ -241940,8 +241940,8 @@ "updateContext": null }, "value": "Geometry geometry;", - "start": 29706, - "end": 29732, + "start": 29705, + "end": 29731, "loc": { "start": { "line": 704, @@ -241965,8 +241965,8 @@ "postfix": false, "binop": null }, - "start": 29732, - "end": 29733, + "start": 29731, + "end": 29732, "loc": { "start": { "line": 704, @@ -241991,8 +241991,8 @@ "binop": null, "updateContext": null }, - "start": 29733, - "end": 29734, + "start": 29732, + "end": 29733, "loc": { "start": { "line": 704, @@ -242017,8 +242017,8 @@ "binop": null }, "value": "src", - "start": 29743, - "end": 29746, + "start": 29742, + "end": 29745, "loc": { "start": { "line": 705, @@ -242043,8 +242043,8 @@ "binop": null, "updateContext": null }, - "start": 29746, - "end": 29747, + "start": 29745, + "end": 29746, "loc": { "start": { "line": 705, @@ -242069,8 +242069,8 @@ "binop": null }, "value": "push", - "start": 29747, - "end": 29751, + "start": 29746, + "end": 29750, "loc": { "start": { "line": 705, @@ -242094,8 +242094,8 @@ "postfix": false, "binop": null }, - "start": 29751, - "end": 29752, + "start": 29750, + "end": 29751, "loc": { "start": { "line": 705, @@ -242121,8 +242121,8 @@ "updateContext": null }, "value": "ReflectedLight reflectedLight = ReflectedLight(vec3(0.0,0.0,0.0), vec3(0.0,0.0,0.0));", - "start": 29752, - "end": 29839, + "start": 29751, + "end": 29838, "loc": { "start": { "line": 705, @@ -242146,8 +242146,8 @@ "postfix": false, "binop": null }, - "start": 29839, - "end": 29840, + "start": 29838, + "end": 29839, "loc": { "start": { "line": 705, @@ -242172,8 +242172,8 @@ "binop": null, "updateContext": null }, - "start": 29840, - "end": 29841, + "start": 29839, + "end": 29840, "loc": { "start": { "line": 705, @@ -242198,8 +242198,8 @@ "binop": null }, "value": "src", - "start": 29851, - "end": 29854, + "start": 29850, + "end": 29853, "loc": { "start": { "line": 707, @@ -242224,8 +242224,8 @@ "binop": null, "updateContext": null }, - "start": 29854, - "end": 29855, + "start": 29853, + "end": 29854, "loc": { "start": { "line": 707, @@ -242250,8 +242250,8 @@ "binop": null }, "value": "push", - "start": 29855, - "end": 29859, + "start": 29854, + "end": 29858, "loc": { "start": { "line": 707, @@ -242275,8 +242275,8 @@ "postfix": false, "binop": null }, - "start": 29859, - "end": 29860, + "start": 29858, + "end": 29859, "loc": { "start": { "line": 707, @@ -242302,8 +242302,8 @@ "updateContext": null }, "value": "vec3 rgb = (vec3(float(vColor.r) / 255.0, float(vColor.g) / 255.0, float(vColor.b) / 255.0));", - "start": 29860, - "end": 29955, + "start": 29859, + "end": 29954, "loc": { "start": { "line": 707, @@ -242327,8 +242327,8 @@ "postfix": false, "binop": null }, - "start": 29955, - "end": 29956, + "start": 29954, + "end": 29955, "loc": { "start": { "line": 707, @@ -242353,8 +242353,8 @@ "binop": null, "updateContext": null }, - "start": 29956, - "end": 29957, + "start": 29955, + "end": 29956, "loc": { "start": { "line": 707, @@ -242379,8 +242379,8 @@ "binop": null }, "value": "src", - "start": 29966, - "end": 29969, + "start": 29965, + "end": 29968, "loc": { "start": { "line": 708, @@ -242405,8 +242405,8 @@ "binop": null, "updateContext": null }, - "start": 29969, - "end": 29970, + "start": 29968, + "end": 29969, "loc": { "start": { "line": 708, @@ -242431,8 +242431,8 @@ "binop": null }, "value": "push", - "start": 29970, - "end": 29974, + "start": 29969, + "end": 29973, "loc": { "start": { "line": 708, @@ -242456,8 +242456,8 @@ "postfix": false, "binop": null }, - "start": 29974, - "end": 29975, + "start": 29973, + "end": 29974, "loc": { "start": { "line": 708, @@ -242483,8 +242483,8 @@ "updateContext": null }, "value": "float alpha = float(vColor.a) / 255.0;", - "start": 29975, - "end": 30015, + "start": 29974, + "end": 30014, "loc": { "start": { "line": 708, @@ -242508,8 +242508,8 @@ "postfix": false, "binop": null }, - "start": 30015, - "end": 30016, + "start": 30014, + "end": 30015, "loc": { "start": { "line": 708, @@ -242534,8 +242534,8 @@ "binop": null, "updateContext": null }, - "start": 30016, - "end": 30017, + "start": 30015, + "end": 30016, "loc": { "start": { "line": 708, @@ -242560,8 +242560,8 @@ "binop": null }, "value": "src", - "start": 30027, - "end": 30030, + "start": 30026, + "end": 30029, "loc": { "start": { "line": 710, @@ -242586,8 +242586,8 @@ "binop": null, "updateContext": null }, - "start": 30030, - "end": 30031, + "start": 30029, + "end": 30030, "loc": { "start": { "line": 710, @@ -242612,8 +242612,8 @@ "binop": null }, "value": "push", - "start": 30031, - "end": 30035, + "start": 30030, + "end": 30034, "loc": { "start": { "line": 710, @@ -242637,8 +242637,8 @@ "postfix": false, "binop": null }, - "start": 30035, - "end": 30036, + "start": 30034, + "end": 30035, "loc": { "start": { "line": 710, @@ -242664,8 +242664,8 @@ "updateContext": null }, "value": "vec3 diffuseColor = rgb;", - "start": 30036, - "end": 30063, + "start": 30035, + "end": 30062, "loc": { "start": { "line": 710, @@ -242689,8 +242689,8 @@ "postfix": false, "binop": null }, - "start": 30063, - "end": 30064, + "start": 30062, + "end": 30063, "loc": { "start": { "line": 710, @@ -242715,8 +242715,8 @@ "binop": null, "updateContext": null }, - "start": 30064, - "end": 30065, + "start": 30063, + "end": 30064, "loc": { "start": { "line": 710, @@ -242741,8 +242741,8 @@ "binop": null }, "value": "src", - "start": 30074, - "end": 30077, + "start": 30073, + "end": 30076, "loc": { "start": { "line": 711, @@ -242767,8 +242767,8 @@ "binop": null, "updateContext": null }, - "start": 30077, - "end": 30078, + "start": 30076, + "end": 30077, "loc": { "start": { "line": 711, @@ -242793,8 +242793,8 @@ "binop": null }, "value": "push", - "start": 30078, - "end": 30082, + "start": 30077, + "end": 30081, "loc": { "start": { "line": 711, @@ -242818,8 +242818,8 @@ "postfix": false, "binop": null }, - "start": 30082, - "end": 30083, + "start": 30081, + "end": 30082, "loc": { "start": { "line": 711, @@ -242845,8 +242845,8 @@ "updateContext": null }, "value": "float specularF0 = 1.0;", - "start": 30083, - "end": 30108, + "start": 30082, + "end": 30107, "loc": { "start": { "line": 711, @@ -242870,8 +242870,8 @@ "postfix": false, "binop": null }, - "start": 30108, - "end": 30109, + "start": 30107, + "end": 30108, "loc": { "start": { "line": 711, @@ -242896,8 +242896,8 @@ "binop": null, "updateContext": null }, - "start": 30109, - "end": 30110, + "start": 30108, + "end": 30109, "loc": { "start": { "line": 711, @@ -242922,8 +242922,8 @@ "binop": null }, "value": "src", - "start": 30119, - "end": 30122, + "start": 30118, + "end": 30121, "loc": { "start": { "line": 712, @@ -242948,8 +242948,8 @@ "binop": null, "updateContext": null }, - "start": 30122, - "end": 30123, + "start": 30121, + "end": 30122, "loc": { "start": { "line": 712, @@ -242974,8 +242974,8 @@ "binop": null }, "value": "push", - "start": 30123, - "end": 30127, + "start": 30122, + "end": 30126, "loc": { "start": { "line": 712, @@ -242999,8 +242999,8 @@ "postfix": false, "binop": null }, - "start": 30127, - "end": 30128, + "start": 30126, + "end": 30127, "loc": { "start": { "line": 712, @@ -243026,8 +243026,8 @@ "updateContext": null }, "value": "float metallic = float(vMetallicRoughness.r) / 255.0;", - "start": 30128, - "end": 30183, + "start": 30127, + "end": 30182, "loc": { "start": { "line": 712, @@ -243051,8 +243051,8 @@ "postfix": false, "binop": null }, - "start": 30183, - "end": 30184, + "start": 30182, + "end": 30183, "loc": { "start": { "line": 712, @@ -243077,8 +243077,8 @@ "binop": null, "updateContext": null }, - "start": 30184, - "end": 30185, + "start": 30183, + "end": 30184, "loc": { "start": { "line": 712, @@ -243103,8 +243103,8 @@ "binop": null }, "value": "src", - "start": 30194, - "end": 30197, + "start": 30193, + "end": 30196, "loc": { "start": { "line": 713, @@ -243129,8 +243129,8 @@ "binop": null, "updateContext": null }, - "start": 30197, - "end": 30198, + "start": 30196, + "end": 30197, "loc": { "start": { "line": 713, @@ -243155,8 +243155,8 @@ "binop": null }, "value": "push", - "start": 30198, - "end": 30202, + "start": 30197, + "end": 30201, "loc": { "start": { "line": 713, @@ -243180,8 +243180,8 @@ "postfix": false, "binop": null }, - "start": 30202, - "end": 30203, + "start": 30201, + "end": 30202, "loc": { "start": { "line": 713, @@ -243207,8 +243207,8 @@ "updateContext": null }, "value": "float roughness = float(vMetallicRoughness.g) / 255.0;", - "start": 30203, - "end": 30259, + "start": 30202, + "end": 30258, "loc": { "start": { "line": 713, @@ -243232,8 +243232,8 @@ "postfix": false, "binop": null }, - "start": 30259, - "end": 30260, + "start": 30258, + "end": 30259, "loc": { "start": { "line": 713, @@ -243258,8 +243258,8 @@ "binop": null, "updateContext": null }, - "start": 30260, - "end": 30261, + "start": 30259, + "end": 30260, "loc": { "start": { "line": 713, @@ -243284,8 +243284,8 @@ "binop": null }, "value": "src", - "start": 30270, - "end": 30273, + "start": 30269, + "end": 30272, "loc": { "start": { "line": 714, @@ -243310,8 +243310,8 @@ "binop": null, "updateContext": null }, - "start": 30273, - "end": 30274, + "start": 30272, + "end": 30273, "loc": { "start": { "line": 714, @@ -243336,8 +243336,8 @@ "binop": null }, "value": "push", - "start": 30274, - "end": 30278, + "start": 30273, + "end": 30277, "loc": { "start": { "line": 714, @@ -243361,8 +243361,8 @@ "postfix": false, "binop": null }, - "start": 30278, - "end": 30279, + "start": 30277, + "end": 30278, "loc": { "start": { "line": 714, @@ -243388,8 +243388,8 @@ "updateContext": null }, "value": "float dielectricSpecular = 0.16 * specularF0 * specularF0;", - "start": 30279, - "end": 30339, + "start": 30278, + "end": 30338, "loc": { "start": { "line": 714, @@ -243413,8 +243413,8 @@ "postfix": false, "binop": null }, - "start": 30339, - "end": 30340, + "start": 30338, + "end": 30339, "loc": { "start": { "line": 714, @@ -243439,8 +243439,8 @@ "binop": null, "updateContext": null }, - "start": 30340, - "end": 30341, + "start": 30339, + "end": 30340, "loc": { "start": { "line": 714, @@ -243465,8 +243465,8 @@ "binop": null }, "value": "src", - "start": 30351, - "end": 30354, + "start": 30350, + "end": 30353, "loc": { "start": { "line": 716, @@ -243491,8 +243491,8 @@ "binop": null, "updateContext": null }, - "start": 30354, - "end": 30355, + "start": 30353, + "end": 30354, "loc": { "start": { "line": 716, @@ -243517,8 +243517,8 @@ "binop": null }, "value": "push", - "start": 30355, - "end": 30359, + "start": 30354, + "end": 30358, "loc": { "start": { "line": 716, @@ -243542,8 +243542,8 @@ "postfix": false, "binop": null }, - "start": 30359, - "end": 30360, + "start": 30358, + "end": 30359, "loc": { "start": { "line": 716, @@ -243569,8 +243569,8 @@ "updateContext": null }, "value": "material.diffuseColor = diffuseColor * (1.0 - dielectricSpecular) * (1.0 - metallic);", - "start": 30360, - "end": 30452, + "start": 30359, + "end": 30451, "loc": { "start": { "line": 716, @@ -243594,8 +243594,8 @@ "postfix": false, "binop": null }, - "start": 30452, - "end": 30453, + "start": 30451, + "end": 30452, "loc": { "start": { "line": 716, @@ -243620,8 +243620,8 @@ "binop": null, "updateContext": null }, - "start": 30453, - "end": 30454, + "start": 30452, + "end": 30453, "loc": { "start": { "line": 716, @@ -243646,8 +243646,8 @@ "binop": null }, "value": "src", - "start": 30463, - "end": 30466, + "start": 30462, + "end": 30465, "loc": { "start": { "line": 717, @@ -243672,8 +243672,8 @@ "binop": null, "updateContext": null }, - "start": 30466, - "end": 30467, + "start": 30465, + "end": 30466, "loc": { "start": { "line": 717, @@ -243698,8 +243698,8 @@ "binop": null }, "value": "push", - "start": 30467, - "end": 30471, + "start": 30466, + "end": 30470, "loc": { "start": { "line": 717, @@ -243723,8 +243723,8 @@ "postfix": false, "binop": null }, - "start": 30471, - "end": 30472, + "start": 30470, + "end": 30471, "loc": { "start": { "line": 717, @@ -243750,8 +243750,8 @@ "updateContext": null }, "value": "material.specularRoughness = clamp(roughness, 0.04, 1.0);", - "start": 30472, - "end": 30531, + "start": 30471, + "end": 30530, "loc": { "start": { "line": 717, @@ -243775,8 +243775,8 @@ "postfix": false, "binop": null }, - "start": 30531, - "end": 30532, + "start": 30530, + "end": 30531, "loc": { "start": { "line": 717, @@ -243801,8 +243801,8 @@ "binop": null, "updateContext": null }, - "start": 30532, - "end": 30533, + "start": 30531, + "end": 30532, "loc": { "start": { "line": 717, @@ -243827,8 +243827,8 @@ "binop": null }, "value": "src", - "start": 30542, - "end": 30545, + "start": 30541, + "end": 30544, "loc": { "start": { "line": 718, @@ -243853,8 +243853,8 @@ "binop": null, "updateContext": null }, - "start": 30545, - "end": 30546, + "start": 30544, + "end": 30545, "loc": { "start": { "line": 718, @@ -243879,8 +243879,8 @@ "binop": null }, "value": "push", - "start": 30546, - "end": 30550, + "start": 30545, + "end": 30549, "loc": { "start": { "line": 718, @@ -243904,8 +243904,8 @@ "postfix": false, "binop": null }, - "start": 30550, - "end": 30551, + "start": 30549, + "end": 30550, "loc": { "start": { "line": 718, @@ -243931,8 +243931,8 @@ "updateContext": null }, "value": "material.specularColor = mix(vec3(dielectricSpecular), diffuseColor, metallic);", - "start": 30551, - "end": 30636, + "start": 30550, + "end": 30635, "loc": { "start": { "line": 718, @@ -243956,8 +243956,8 @@ "postfix": false, "binop": null }, - "start": 30636, - "end": 30637, + "start": 30635, + "end": 30636, "loc": { "start": { "line": 718, @@ -243982,8 +243982,8 @@ "binop": null, "updateContext": null }, - "start": 30637, - "end": 30638, + "start": 30636, + "end": 30637, "loc": { "start": { "line": 718, @@ -244008,8 +244008,8 @@ "binop": null }, "value": "src", - "start": 30648, - "end": 30651, + "start": 30647, + "end": 30650, "loc": { "start": { "line": 720, @@ -244034,8 +244034,8 @@ "binop": null, "updateContext": null }, - "start": 30651, - "end": 30652, + "start": 30650, + "end": 30651, "loc": { "start": { "line": 720, @@ -244060,8 +244060,8 @@ "binop": null }, "value": "push", - "start": 30652, - "end": 30656, + "start": 30651, + "end": 30655, "loc": { "start": { "line": 720, @@ -244085,8 +244085,8 @@ "postfix": false, "binop": null }, - "start": 30656, - "end": 30657, + "start": 30655, + "end": 30656, "loc": { "start": { "line": 720, @@ -244112,8 +244112,8 @@ "updateContext": null }, "value": "geometry.position = vViewPosition.xyz;", - "start": 30657, - "end": 30702, + "start": 30656, + "end": 30701, "loc": { "start": { "line": 720, @@ -244137,8 +244137,8 @@ "postfix": false, "binop": null }, - "start": 30702, - "end": 30703, + "start": 30701, + "end": 30702, "loc": { "start": { "line": 720, @@ -244163,8 +244163,8 @@ "binop": null, "updateContext": null }, - "start": 30703, - "end": 30704, + "start": 30702, + "end": 30703, "loc": { "start": { "line": 720, @@ -244189,8 +244189,8 @@ "binop": null }, "value": "src", - "start": 30713, - "end": 30716, + "start": 30712, + "end": 30715, "loc": { "start": { "line": 721, @@ -244215,8 +244215,8 @@ "binop": null, "updateContext": null }, - "start": 30716, - "end": 30717, + "start": 30715, + "end": 30716, "loc": { "start": { "line": 721, @@ -244241,8 +244241,8 @@ "binop": null }, "value": "push", - "start": 30717, - "end": 30721, + "start": 30716, + "end": 30720, "loc": { "start": { "line": 721, @@ -244266,8 +244266,8 @@ "postfix": false, "binop": null }, - "start": 30721, - "end": 30722, + "start": 30720, + "end": 30721, "loc": { "start": { "line": 721, @@ -244292,9 +244292,9 @@ "binop": null, "updateContext": null }, - "value": "geometry.viewNormal = -vViewNormal;", - "start": 30722, - "end": 30762, + "value": "geometry.viewNormal = -normalize(vViewNormal);", + "start": 30721, + "end": 30772, "loc": { "start": { "line": 721, @@ -244302,7 +244302,7 @@ }, "end": { "line": 721, - "column": 57 + "column": 68 } } }, @@ -244318,16 +244318,16 @@ "postfix": false, "binop": null }, - "start": 30762, - "end": 30763, + "start": 30772, + "end": 30773, "loc": { "start": { "line": 721, - "column": 57 + "column": 68 }, "end": { "line": 721, - "column": 58 + "column": 69 } } }, @@ -244344,16 +244344,16 @@ "binop": null, "updateContext": null }, - "start": 30763, - "end": 30764, + "start": 30773, + "end": 30774, "loc": { "start": { "line": 721, - "column": 58 + "column": 69 }, "end": { "line": 721, - "column": 59 + "column": 70 } } }, @@ -244370,8 +244370,8 @@ "binop": null }, "value": "src", - "start": 30773, - "end": 30776, + "start": 30783, + "end": 30786, "loc": { "start": { "line": 722, @@ -244396,8 +244396,8 @@ "binop": null, "updateContext": null }, - "start": 30776, - "end": 30777, + "start": 30786, + "end": 30787, "loc": { "start": { "line": 722, @@ -244422,8 +244422,8 @@ "binop": null }, "value": "push", - "start": 30777, - "end": 30781, + "start": 30787, + "end": 30791, "loc": { "start": { "line": 722, @@ -244447,8 +244447,8 @@ "postfix": false, "binop": null }, - "start": 30781, - "end": 30782, + "start": 30791, + "end": 30792, "loc": { "start": { "line": 722, @@ -244474,8 +244474,8 @@ "updateContext": null }, "value": "geometry.viewEyeDir = normalize(vViewPosition.xyz);", - "start": 30782, - "end": 30838, + "start": 30792, + "end": 30848, "loc": { "start": { "line": 722, @@ -244499,8 +244499,8 @@ "postfix": false, "binop": null }, - "start": 30838, - "end": 30839, + "start": 30848, + "end": 30849, "loc": { "start": { "line": 722, @@ -244525,8 +244525,8 @@ "binop": null, "updateContext": null }, - "start": 30839, - "end": 30840, + "start": 30849, + "end": 30850, "loc": { "start": { "line": 722, @@ -244553,8 +244553,8 @@ "updateContext": null }, "value": "if", - "start": 30850, - "end": 30852, + "start": 30860, + "end": 30862, "loc": { "start": { "line": 724, @@ -244578,8 +244578,8 @@ "postfix": false, "binop": null }, - "start": 30853, - "end": 30854, + "start": 30863, + "end": 30864, "loc": { "start": { "line": 724, @@ -244604,8 +244604,8 @@ "binop": null }, "value": "lightsState", - "start": 30854, - "end": 30865, + "start": 30864, + "end": 30875, "loc": { "start": { "line": 724, @@ -244630,8 +244630,8 @@ "binop": null, "updateContext": null }, - "start": 30865, - "end": 30866, + "start": 30875, + "end": 30876, "loc": { "start": { "line": 724, @@ -244656,8 +244656,8 @@ "binop": null }, "value": "lightMaps", - "start": 30866, - "end": 30875, + "start": 30876, + "end": 30885, "loc": { "start": { "line": 724, @@ -244682,8 +244682,8 @@ "binop": null, "updateContext": null }, - "start": 30875, - "end": 30876, + "start": 30885, + "end": 30886, "loc": { "start": { "line": 724, @@ -244708,8 +244708,8 @@ "binop": null }, "value": "length", - "start": 30876, - "end": 30882, + "start": 30886, + "end": 30892, "loc": { "start": { "line": 724, @@ -244735,8 +244735,8 @@ "updateContext": null }, "value": ">", - "start": 30883, - "end": 30884, + "start": 30893, + "end": 30894, "loc": { "start": { "line": 724, @@ -244762,8 +244762,8 @@ "updateContext": null }, "value": 0, - "start": 30885, - "end": 30886, + "start": 30895, + "end": 30896, "loc": { "start": { "line": 724, @@ -244787,8 +244787,8 @@ "postfix": false, "binop": null }, - "start": 30886, - "end": 30887, + "start": 30896, + "end": 30897, "loc": { "start": { "line": 724, @@ -244812,8 +244812,8 @@ "postfix": false, "binop": null }, - "start": 30888, - "end": 30889, + "start": 30898, + "end": 30899, "loc": { "start": { "line": 724, @@ -244838,8 +244838,8 @@ "binop": null }, "value": "src", - "start": 30902, - "end": 30905, + "start": 30912, + "end": 30915, "loc": { "start": { "line": 725, @@ -244864,8 +244864,8 @@ "binop": null, "updateContext": null }, - "start": 30905, - "end": 30906, + "start": 30915, + "end": 30916, "loc": { "start": { "line": 725, @@ -244890,8 +244890,8 @@ "binop": null }, "value": "push", - "start": 30906, - "end": 30910, + "start": 30916, + "end": 30920, "loc": { "start": { "line": 725, @@ -244915,8 +244915,8 @@ "postfix": false, "binop": null }, - "start": 30910, - "end": 30911, + "start": 30920, + "end": 30921, "loc": { "start": { "line": 725, @@ -244942,8 +244942,8 @@ "updateContext": null }, "value": "geometry.worldNormal = normalize(vWorldNormal);", - "start": 30911, - "end": 30962, + "start": 30921, + "end": 30972, "loc": { "start": { "line": 725, @@ -244967,8 +244967,8 @@ "postfix": false, "binop": null }, - "start": 30962, - "end": 30963, + "start": 30972, + "end": 30973, "loc": { "start": { "line": 725, @@ -244993,8 +244993,8 @@ "binop": null, "updateContext": null }, - "start": 30963, - "end": 30964, + "start": 30973, + "end": 30974, "loc": { "start": { "line": 725, @@ -245018,8 +245018,8 @@ "postfix": false, "binop": null }, - "start": 30973, - "end": 30974, + "start": 30983, + "end": 30984, "loc": { "start": { "line": 726, @@ -245046,8 +245046,8 @@ "updateContext": null }, "value": "if", - "start": 30984, - "end": 30986, + "start": 30994, + "end": 30996, "loc": { "start": { "line": 728, @@ -245071,8 +245071,8 @@ "postfix": false, "binop": null }, - "start": 30987, - "end": 30988, + "start": 30997, + "end": 30998, "loc": { "start": { "line": 728, @@ -245097,8 +245097,8 @@ "binop": null }, "value": "lightsState", - "start": 30988, - "end": 30999, + "start": 30998, + "end": 31009, "loc": { "start": { "line": 728, @@ -245123,8 +245123,8 @@ "binop": null, "updateContext": null }, - "start": 30999, - "end": 31000, + "start": 31009, + "end": 31010, "loc": { "start": { "line": 728, @@ -245149,8 +245149,8 @@ "binop": null }, "value": "lightMaps", - "start": 31000, - "end": 31009, + "start": 31010, + "end": 31019, "loc": { "start": { "line": 728, @@ -245175,8 +245175,8 @@ "binop": null, "updateContext": null }, - "start": 31009, - "end": 31010, + "start": 31019, + "end": 31020, "loc": { "start": { "line": 728, @@ -245201,8 +245201,8 @@ "binop": null }, "value": "length", - "start": 31010, - "end": 31016, + "start": 31020, + "end": 31026, "loc": { "start": { "line": 728, @@ -245228,8 +245228,8 @@ "updateContext": null }, "value": ">", - "start": 31017, - "end": 31018, + "start": 31027, + "end": 31028, "loc": { "start": { "line": 728, @@ -245255,8 +245255,8 @@ "updateContext": null }, "value": 0, - "start": 31019, - "end": 31020, + "start": 31029, + "end": 31030, "loc": { "start": { "line": 728, @@ -245282,8 +245282,8 @@ "updateContext": null }, "value": "||", - "start": 31021, - "end": 31023, + "start": 31031, + "end": 31033, "loc": { "start": { "line": 728, @@ -245308,8 +245308,8 @@ "binop": null }, "value": "lightsState", - "start": 31024, - "end": 31035, + "start": 31034, + "end": 31045, "loc": { "start": { "line": 728, @@ -245334,8 +245334,8 @@ "binop": null, "updateContext": null }, - "start": 31035, - "end": 31036, + "start": 31045, + "end": 31046, "loc": { "start": { "line": 728, @@ -245360,8 +245360,8 @@ "binop": null }, "value": "reflectionMaps", - "start": 31036, - "end": 31050, + "start": 31046, + "end": 31060, "loc": { "start": { "line": 728, @@ -245386,8 +245386,8 @@ "binop": null, "updateContext": null }, - "start": 31050, - "end": 31051, + "start": 31060, + "end": 31061, "loc": { "start": { "line": 728, @@ -245412,8 +245412,8 @@ "binop": null }, "value": "length", - "start": 31051, - "end": 31057, + "start": 31061, + "end": 31067, "loc": { "start": { "line": 728, @@ -245439,8 +245439,8 @@ "updateContext": null }, "value": ">", - "start": 31058, - "end": 31059, + "start": 31068, + "end": 31069, "loc": { "start": { "line": 728, @@ -245466,8 +245466,8 @@ "updateContext": null }, "value": 0, - "start": 31060, - "end": 31061, + "start": 31070, + "end": 31071, "loc": { "start": { "line": 728, @@ -245491,8 +245491,8 @@ "postfix": false, "binop": null }, - "start": 31061, - "end": 31062, + "start": 31071, + "end": 31072, "loc": { "start": { "line": 728, @@ -245516,8 +245516,8 @@ "postfix": false, "binop": null }, - "start": 31063, - "end": 31064, + "start": 31073, + "end": 31074, "loc": { "start": { "line": 728, @@ -245542,8 +245542,8 @@ "binop": null }, "value": "src", - "start": 31077, - "end": 31080, + "start": 31087, + "end": 31090, "loc": { "start": { "line": 729, @@ -245568,8 +245568,8 @@ "binop": null, "updateContext": null }, - "start": 31080, - "end": 31081, + "start": 31090, + "end": 31091, "loc": { "start": { "line": 729, @@ -245594,8 +245594,8 @@ "binop": null }, "value": "push", - "start": 31081, - "end": 31085, + "start": 31091, + "end": 31095, "loc": { "start": { "line": 729, @@ -245619,8 +245619,8 @@ "postfix": false, "binop": null }, - "start": 31085, - "end": 31086, + "start": 31095, + "end": 31096, "loc": { "start": { "line": 729, @@ -245646,8 +245646,8 @@ "updateContext": null }, "value": "computePBRLightMapping(geometry, material, reflectedLight);", - "start": 31086, - "end": 31147, + "start": 31096, + "end": 31157, "loc": { "start": { "line": 729, @@ -245671,8 +245671,8 @@ "postfix": false, "binop": null }, - "start": 31147, - "end": 31148, + "start": 31157, + "end": 31158, "loc": { "start": { "line": 729, @@ -245697,8 +245697,8 @@ "binop": null, "updateContext": null }, - "start": 31148, - "end": 31149, + "start": 31158, + "end": 31159, "loc": { "start": { "line": 729, @@ -245722,8 +245722,8 @@ "postfix": false, "binop": null }, - "start": 31158, - "end": 31159, + "start": 31168, + "end": 31169, "loc": { "start": { "line": 730, @@ -245750,8 +245750,8 @@ "updateContext": null }, "value": "for", - "start": 31169, - "end": 31172, + "start": 31179, + "end": 31182, "loc": { "start": { "line": 732, @@ -245775,8 +245775,8 @@ "postfix": false, "binop": null }, - "start": 31173, - "end": 31174, + "start": 31183, + "end": 31184, "loc": { "start": { "line": 732, @@ -245803,8 +245803,8 @@ "updateContext": null }, "value": "let", - "start": 31174, - "end": 31177, + "start": 31184, + "end": 31187, "loc": { "start": { "line": 732, @@ -245829,8 +245829,8 @@ "binop": null }, "value": "i", - "start": 31178, - "end": 31179, + "start": 31188, + "end": 31189, "loc": { "start": { "line": 732, @@ -245856,8 +245856,8 @@ "updateContext": null }, "value": "=", - "start": 31180, - "end": 31181, + "start": 31190, + "end": 31191, "loc": { "start": { "line": 732, @@ -245883,8 +245883,8 @@ "updateContext": null }, "value": 0, - "start": 31182, - "end": 31183, + "start": 31192, + "end": 31193, "loc": { "start": { "line": 732, @@ -245909,8 +245909,8 @@ "binop": null, "updateContext": null }, - "start": 31183, - "end": 31184, + "start": 31193, + "end": 31194, "loc": { "start": { "line": 732, @@ -245935,8 +245935,8 @@ "binop": null }, "value": "len", - "start": 31185, - "end": 31188, + "start": 31195, + "end": 31198, "loc": { "start": { "line": 732, @@ -245962,8 +245962,8 @@ "updateContext": null }, "value": "=", - "start": 31189, - "end": 31190, + "start": 31199, + "end": 31200, "loc": { "start": { "line": 732, @@ -245988,8 +245988,8 @@ "binop": null }, "value": "lightsState", - "start": 31191, - "end": 31202, + "start": 31201, + "end": 31212, "loc": { "start": { "line": 732, @@ -246014,8 +246014,8 @@ "binop": null, "updateContext": null }, - "start": 31202, - "end": 31203, + "start": 31212, + "end": 31213, "loc": { "start": { "line": 732, @@ -246040,8 +246040,8 @@ "binop": null }, "value": "lights", - "start": 31203, - "end": 31209, + "start": 31213, + "end": 31219, "loc": { "start": { "line": 732, @@ -246066,8 +246066,8 @@ "binop": null, "updateContext": null }, - "start": 31209, - "end": 31210, + "start": 31219, + "end": 31220, "loc": { "start": { "line": 732, @@ -246092,8 +246092,8 @@ "binop": null }, "value": "length", - "start": 31210, - "end": 31216, + "start": 31220, + "end": 31226, "loc": { "start": { "line": 732, @@ -246118,8 +246118,8 @@ "binop": null, "updateContext": null }, - "start": 31216, - "end": 31217, + "start": 31226, + "end": 31227, "loc": { "start": { "line": 732, @@ -246144,8 +246144,8 @@ "binop": null }, "value": "i", - "start": 31218, - "end": 31219, + "start": 31228, + "end": 31229, "loc": { "start": { "line": 732, @@ -246171,8 +246171,8 @@ "updateContext": null }, "value": "<", - "start": 31220, - "end": 31221, + "start": 31230, + "end": 31231, "loc": { "start": { "line": 732, @@ -246197,8 +246197,8 @@ "binop": null }, "value": "len", - "start": 31222, - "end": 31225, + "start": 31232, + "end": 31235, "loc": { "start": { "line": 732, @@ -246223,8 +246223,8 @@ "binop": null, "updateContext": null }, - "start": 31225, - "end": 31226, + "start": 31235, + "end": 31236, "loc": { "start": { "line": 732, @@ -246249,8 +246249,8 @@ "binop": null }, "value": "i", - "start": 31227, - "end": 31228, + "start": 31237, + "end": 31238, "loc": { "start": { "line": 732, @@ -246275,8 +246275,8 @@ "binop": null }, "value": "++", - "start": 31228, - "end": 31230, + "start": 31238, + "end": 31240, "loc": { "start": { "line": 732, @@ -246300,8 +246300,8 @@ "postfix": false, "binop": null }, - "start": 31230, - "end": 31231, + "start": 31240, + "end": 31241, "loc": { "start": { "line": 732, @@ -246325,8 +246325,8 @@ "postfix": false, "binop": null }, - "start": 31232, - "end": 31233, + "start": 31242, + "end": 31243, "loc": { "start": { "line": 732, @@ -246353,8 +246353,8 @@ "updateContext": null }, "value": "const", - "start": 31246, - "end": 31251, + "start": 31256, + "end": 31261, "loc": { "start": { "line": 733, @@ -246379,8 +246379,8 @@ "binop": null }, "value": "light", - "start": 31252, - "end": 31257, + "start": 31262, + "end": 31267, "loc": { "start": { "line": 733, @@ -246406,8 +246406,8 @@ "updateContext": null }, "value": "=", - "start": 31258, - "end": 31259, + "start": 31268, + "end": 31269, "loc": { "start": { "line": 733, @@ -246432,8 +246432,8 @@ "binop": null }, "value": "lightsState", - "start": 31260, - "end": 31271, + "start": 31270, + "end": 31281, "loc": { "start": { "line": 733, @@ -246458,8 +246458,8 @@ "binop": null, "updateContext": null }, - "start": 31271, - "end": 31272, + "start": 31281, + "end": 31282, "loc": { "start": { "line": 733, @@ -246484,8 +246484,8 @@ "binop": null }, "value": "lights", - "start": 31272, - "end": 31278, + "start": 31282, + "end": 31288, "loc": { "start": { "line": 733, @@ -246510,8 +246510,8 @@ "binop": null, "updateContext": null }, - "start": 31278, - "end": 31279, + "start": 31288, + "end": 31289, "loc": { "start": { "line": 733, @@ -246536,8 +246536,8 @@ "binop": null }, "value": "i", - "start": 31279, - "end": 31280, + "start": 31289, + "end": 31290, "loc": { "start": { "line": 733, @@ -246562,8 +246562,8 @@ "binop": null, "updateContext": null }, - "start": 31280, - "end": 31281, + "start": 31290, + "end": 31291, "loc": { "start": { "line": 733, @@ -246588,8 +246588,8 @@ "binop": null, "updateContext": null }, - "start": 31281, - "end": 31282, + "start": 31291, + "end": 31292, "loc": { "start": { "line": 733, @@ -246616,8 +246616,8 @@ "updateContext": null }, "value": "if", - "start": 31295, - "end": 31297, + "start": 31305, + "end": 31307, "loc": { "start": { "line": 734, @@ -246641,8 +246641,8 @@ "postfix": false, "binop": null }, - "start": 31298, - "end": 31299, + "start": 31308, + "end": 31309, "loc": { "start": { "line": 734, @@ -246667,8 +246667,8 @@ "binop": null }, "value": "light", - "start": 31299, - "end": 31304, + "start": 31309, + "end": 31314, "loc": { "start": { "line": 734, @@ -246693,8 +246693,8 @@ "binop": null, "updateContext": null }, - "start": 31304, - "end": 31305, + "start": 31314, + "end": 31315, "loc": { "start": { "line": 734, @@ -246719,8 +246719,8 @@ "binop": null }, "value": "type", - "start": 31305, - "end": 31309, + "start": 31315, + "end": 31319, "loc": { "start": { "line": 734, @@ -246746,8 +246746,8 @@ "updateContext": null }, "value": "===", - "start": 31310, - "end": 31313, + "start": 31320, + "end": 31323, "loc": { "start": { "line": 734, @@ -246773,8 +246773,8 @@ "updateContext": null }, "value": "ambient", - "start": 31314, - "end": 31323, + "start": 31324, + "end": 31333, "loc": { "start": { "line": 734, @@ -246798,8 +246798,8 @@ "postfix": false, "binop": null }, - "start": 31323, - "end": 31324, + "start": 31333, + "end": 31334, "loc": { "start": { "line": 734, @@ -246823,8 +246823,8 @@ "postfix": false, "binop": null }, - "start": 31325, - "end": 31326, + "start": 31335, + "end": 31336, "loc": { "start": { "line": 734, @@ -246851,8 +246851,8 @@ "updateContext": null }, "value": "continue", - "start": 31343, - "end": 31351, + "start": 31353, + "end": 31361, "loc": { "start": { "line": 735, @@ -246877,8 +246877,8 @@ "binop": null, "updateContext": null }, - "start": 31351, - "end": 31352, + "start": 31361, + "end": 31362, "loc": { "start": { "line": 735, @@ -246902,8 +246902,8 @@ "postfix": false, "binop": null }, - "start": 31365, - "end": 31366, + "start": 31375, + "end": 31376, "loc": { "start": { "line": 736, @@ -246930,8 +246930,8 @@ "updateContext": null }, "value": "if", - "start": 31379, - "end": 31381, + "start": 31389, + "end": 31391, "loc": { "start": { "line": 737, @@ -246955,8 +246955,8 @@ "postfix": false, "binop": null }, - "start": 31382, - "end": 31383, + "start": 31392, + "end": 31393, "loc": { "start": { "line": 737, @@ -246981,8 +246981,8 @@ "binop": null }, "value": "light", - "start": 31383, - "end": 31388, + "start": 31393, + "end": 31398, "loc": { "start": { "line": 737, @@ -247007,8 +247007,8 @@ "binop": null, "updateContext": null }, - "start": 31388, - "end": 31389, + "start": 31398, + "end": 31399, "loc": { "start": { "line": 737, @@ -247033,8 +247033,8 @@ "binop": null }, "value": "type", - "start": 31389, - "end": 31393, + "start": 31399, + "end": 31403, "loc": { "start": { "line": 737, @@ -247060,8 +247060,8 @@ "updateContext": null }, "value": "===", - "start": 31394, - "end": 31397, + "start": 31404, + "end": 31407, "loc": { "start": { "line": 737, @@ -247087,8 +247087,8 @@ "updateContext": null }, "value": "dir", - "start": 31398, - "end": 31403, + "start": 31408, + "end": 31413, "loc": { "start": { "line": 737, @@ -247112,8 +247112,8 @@ "postfix": false, "binop": null }, - "start": 31403, - "end": 31404, + "start": 31413, + "end": 31414, "loc": { "start": { "line": 737, @@ -247137,8 +247137,8 @@ "postfix": false, "binop": null }, - "start": 31405, - "end": 31406, + "start": 31415, + "end": 31416, "loc": { "start": { "line": 737, @@ -247165,8 +247165,8 @@ "updateContext": null }, "value": "if", - "start": 31423, - "end": 31425, + "start": 31433, + "end": 31435, "loc": { "start": { "line": 738, @@ -247190,8 +247190,8 @@ "postfix": false, "binop": null }, - "start": 31426, - "end": 31427, + "start": 31436, + "end": 31437, "loc": { "start": { "line": 738, @@ -247216,8 +247216,8 @@ "binop": null }, "value": "light", - "start": 31427, - "end": 31432, + "start": 31437, + "end": 31442, "loc": { "start": { "line": 738, @@ -247242,8 +247242,8 @@ "binop": null, "updateContext": null }, - "start": 31432, - "end": 31433, + "start": 31442, + "end": 31443, "loc": { "start": { "line": 738, @@ -247268,8 +247268,8 @@ "binop": null }, "value": "space", - "start": 31433, - "end": 31438, + "start": 31443, + "end": 31448, "loc": { "start": { "line": 738, @@ -247295,8 +247295,8 @@ "updateContext": null }, "value": "===", - "start": 31439, - "end": 31442, + "start": 31449, + "end": 31452, "loc": { "start": { "line": 738, @@ -247322,8 +247322,8 @@ "updateContext": null }, "value": "view", - "start": 31443, - "end": 31449, + "start": 31453, + "end": 31459, "loc": { "start": { "line": 738, @@ -247347,8 +247347,8 @@ "postfix": false, "binop": null }, - "start": 31449, - "end": 31450, + "start": 31459, + "end": 31460, "loc": { "start": { "line": 738, @@ -247372,8 +247372,8 @@ "postfix": false, "binop": null }, - "start": 31451, - "end": 31452, + "start": 31461, + "end": 31462, "loc": { "start": { "line": 738, @@ -247398,8 +247398,8 @@ "binop": null }, "value": "src", - "start": 31473, - "end": 31476, + "start": 31483, + "end": 31486, "loc": { "start": { "line": 739, @@ -247424,8 +247424,8 @@ "binop": null, "updateContext": null }, - "start": 31476, - "end": 31477, + "start": 31486, + "end": 31487, "loc": { "start": { "line": 739, @@ -247450,8 +247450,8 @@ "binop": null }, "value": "push", - "start": 31477, - "end": 31481, + "start": 31487, + "end": 31491, "loc": { "start": { "line": 739, @@ -247475,8 +247475,8 @@ "postfix": false, "binop": null }, - "start": 31481, - "end": 31482, + "start": 31491, + "end": 31492, "loc": { "start": { "line": 739, @@ -247502,8 +247502,8 @@ "updateContext": null }, "value": "light.direction = normalize(lightDir", - "start": 31482, - "end": 31521, + "start": 31492, + "end": 31531, "loc": { "start": { "line": 739, @@ -247529,8 +247529,8 @@ "updateContext": null }, "value": "+", - "start": 31522, - "end": 31523, + "start": 31532, + "end": 31533, "loc": { "start": { "line": 739, @@ -247555,8 +247555,8 @@ "binop": null }, "value": "i", - "start": 31524, - "end": 31525, + "start": 31534, + "end": 31535, "loc": { "start": { "line": 739, @@ -247582,8 +247582,8 @@ "updateContext": null }, "value": "+", - "start": 31526, - "end": 31527, + "start": 31536, + "end": 31537, "loc": { "start": { "line": 739, @@ -247609,8 +247609,8 @@ "updateContext": null }, "value": ");", - "start": 31528, - "end": 31532, + "start": 31538, + "end": 31542, "loc": { "start": { "line": 739, @@ -247634,8 +247634,8 @@ "postfix": false, "binop": null }, - "start": 31532, - "end": 31533, + "start": 31542, + "end": 31543, "loc": { "start": { "line": 739, @@ -247660,8 +247660,8 @@ "binop": null, "updateContext": null }, - "start": 31533, - "end": 31534, + "start": 31543, + "end": 31544, "loc": { "start": { "line": 739, @@ -247685,8 +247685,8 @@ "postfix": false, "binop": null }, - "start": 31551, - "end": 31552, + "start": 31561, + "end": 31562, "loc": { "start": { "line": 740, @@ -247713,8 +247713,8 @@ "updateContext": null }, "value": "else", - "start": 31553, - "end": 31557, + "start": 31563, + "end": 31567, "loc": { "start": { "line": 740, @@ -247738,8 +247738,8 @@ "postfix": false, "binop": null }, - "start": 31558, - "end": 31559, + "start": 31568, + "end": 31569, "loc": { "start": { "line": 740, @@ -247764,8 +247764,8 @@ "binop": null }, "value": "src", - "start": 31580, - "end": 31583, + "start": 31590, + "end": 31593, "loc": { "start": { "line": 741, @@ -247790,8 +247790,8 @@ "binop": null, "updateContext": null }, - "start": 31583, - "end": 31584, + "start": 31593, + "end": 31594, "loc": { "start": { "line": 741, @@ -247816,8 +247816,8 @@ "binop": null }, "value": "push", - "start": 31584, - "end": 31588, + "start": 31594, + "end": 31598, "loc": { "start": { "line": 741, @@ -247841,8 +247841,8 @@ "postfix": false, "binop": null }, - "start": 31588, - "end": 31589, + "start": 31598, + "end": 31599, "loc": { "start": { "line": 741, @@ -247868,8 +247868,8 @@ "updateContext": null }, "value": "light.direction = normalize((viewMatrix * vec4(lightDir", - "start": 31589, - "end": 31647, + "start": 31599, + "end": 31657, "loc": { "start": { "line": 741, @@ -247895,8 +247895,8 @@ "updateContext": null }, "value": "+", - "start": 31648, - "end": 31649, + "start": 31658, + "end": 31659, "loc": { "start": { "line": 741, @@ -247921,8 +247921,8 @@ "binop": null }, "value": "i", - "start": 31650, - "end": 31651, + "start": 31660, + "end": 31661, "loc": { "start": { "line": 741, @@ -247948,8 +247948,8 @@ "updateContext": null }, "value": "+", - "start": 31652, - "end": 31653, + "start": 31662, + "end": 31663, "loc": { "start": { "line": 741, @@ -247975,8 +247975,8 @@ "updateContext": null }, "value": ", 0.0)).xyz);", - "start": 31654, - "end": 31669, + "start": 31664, + "end": 31679, "loc": { "start": { "line": 741, @@ -248000,8 +248000,8 @@ "postfix": false, "binop": null }, - "start": 31669, - "end": 31670, + "start": 31679, + "end": 31680, "loc": { "start": { "line": 741, @@ -248026,8 +248026,8 @@ "binop": null, "updateContext": null }, - "start": 31670, - "end": 31671, + "start": 31680, + "end": 31681, "loc": { "start": { "line": 741, @@ -248051,8 +248051,8 @@ "postfix": false, "binop": null }, - "start": 31688, - "end": 31689, + "start": 31698, + "end": 31699, "loc": { "start": { "line": 742, @@ -248076,8 +248076,8 @@ "postfix": false, "binop": null }, - "start": 31702, - "end": 31703, + "start": 31712, + "end": 31713, "loc": { "start": { "line": 743, @@ -248104,8 +248104,8 @@ "updateContext": null }, "value": "else", - "start": 31704, - "end": 31708, + "start": 31714, + "end": 31718, "loc": { "start": { "line": 743, @@ -248132,8 +248132,8 @@ "updateContext": null }, "value": "if", - "start": 31709, - "end": 31711, + "start": 31719, + "end": 31721, "loc": { "start": { "line": 743, @@ -248157,8 +248157,8 @@ "postfix": false, "binop": null }, - "start": 31712, - "end": 31713, + "start": 31722, + "end": 31723, "loc": { "start": { "line": 743, @@ -248183,8 +248183,8 @@ "binop": null }, "value": "light", - "start": 31713, - "end": 31718, + "start": 31723, + "end": 31728, "loc": { "start": { "line": 743, @@ -248209,8 +248209,8 @@ "binop": null, "updateContext": null }, - "start": 31718, - "end": 31719, + "start": 31728, + "end": 31729, "loc": { "start": { "line": 743, @@ -248235,8 +248235,8 @@ "binop": null }, "value": "type", - "start": 31719, - "end": 31723, + "start": 31729, + "end": 31733, "loc": { "start": { "line": 743, @@ -248262,8 +248262,8 @@ "updateContext": null }, "value": "===", - "start": 31724, - "end": 31727, + "start": 31734, + "end": 31737, "loc": { "start": { "line": 743, @@ -248289,8 +248289,8 @@ "updateContext": null }, "value": "point", - "start": 31728, - "end": 31735, + "start": 31738, + "end": 31745, "loc": { "start": { "line": 743, @@ -248314,8 +248314,8 @@ "postfix": false, "binop": null }, - "start": 31735, - "end": 31736, + "start": 31745, + "end": 31746, "loc": { "start": { "line": 743, @@ -248339,8 +248339,8 @@ "postfix": false, "binop": null }, - "start": 31737, - "end": 31738, + "start": 31747, + "end": 31748, "loc": { "start": { "line": 743, @@ -248367,8 +248367,8 @@ "updateContext": null }, "value": "if", - "start": 31755, - "end": 31757, + "start": 31765, + "end": 31767, "loc": { "start": { "line": 744, @@ -248392,8 +248392,8 @@ "postfix": false, "binop": null }, - "start": 31758, - "end": 31759, + "start": 31768, + "end": 31769, "loc": { "start": { "line": 744, @@ -248418,8 +248418,8 @@ "binop": null }, "value": "light", - "start": 31759, - "end": 31764, + "start": 31769, + "end": 31774, "loc": { "start": { "line": 744, @@ -248444,8 +248444,8 @@ "binop": null, "updateContext": null }, - "start": 31764, - "end": 31765, + "start": 31774, + "end": 31775, "loc": { "start": { "line": 744, @@ -248470,8 +248470,8 @@ "binop": null }, "value": "space", - "start": 31765, - "end": 31770, + "start": 31775, + "end": 31780, "loc": { "start": { "line": 744, @@ -248497,8 +248497,8 @@ "updateContext": null }, "value": "===", - "start": 31771, - "end": 31774, + "start": 31781, + "end": 31784, "loc": { "start": { "line": 744, @@ -248524,8 +248524,8 @@ "updateContext": null }, "value": "view", - "start": 31775, - "end": 31781, + "start": 31785, + "end": 31791, "loc": { "start": { "line": 744, @@ -248549,8 +248549,8 @@ "postfix": false, "binop": null }, - "start": 31781, - "end": 31782, + "start": 31791, + "end": 31792, "loc": { "start": { "line": 744, @@ -248574,8 +248574,8 @@ "postfix": false, "binop": null }, - "start": 31783, - "end": 31784, + "start": 31793, + "end": 31794, "loc": { "start": { "line": 744, @@ -248600,8 +248600,8 @@ "binop": null }, "value": "src", - "start": 31805, - "end": 31808, + "start": 31815, + "end": 31818, "loc": { "start": { "line": 745, @@ -248626,8 +248626,8 @@ "binop": null, "updateContext": null }, - "start": 31808, - "end": 31809, + "start": 31818, + "end": 31819, "loc": { "start": { "line": 745, @@ -248652,8 +248652,8 @@ "binop": null }, "value": "push", - "start": 31809, - "end": 31813, + "start": 31819, + "end": 31823, "loc": { "start": { "line": 745, @@ -248677,8 +248677,8 @@ "postfix": false, "binop": null }, - "start": 31813, - "end": 31814, + "start": 31823, + "end": 31824, "loc": { "start": { "line": 745, @@ -248704,8 +248704,8 @@ "updateContext": null }, "value": "light.direction = normalize(lightPos", - "start": 31814, - "end": 31853, + "start": 31824, + "end": 31863, "loc": { "start": { "line": 745, @@ -248731,8 +248731,8 @@ "updateContext": null }, "value": "+", - "start": 31854, - "end": 31855, + "start": 31864, + "end": 31865, "loc": { "start": { "line": 745, @@ -248757,8 +248757,8 @@ "binop": null }, "value": "i", - "start": 31856, - "end": 31857, + "start": 31866, + "end": 31867, "loc": { "start": { "line": 745, @@ -248784,8 +248784,8 @@ "updateContext": null }, "value": "+", - "start": 31858, - "end": 31859, + "start": 31868, + "end": 31869, "loc": { "start": { "line": 745, @@ -248811,8 +248811,8 @@ "updateContext": null }, "value": " - vViewPosition.xyz);", - "start": 31860, - "end": 31884, + "start": 31870, + "end": 31894, "loc": { "start": { "line": 745, @@ -248836,8 +248836,8 @@ "postfix": false, "binop": null }, - "start": 31884, - "end": 31885, + "start": 31894, + "end": 31895, "loc": { "start": { "line": 745, @@ -248862,8 +248862,8 @@ "binop": null, "updateContext": null }, - "start": 31885, - "end": 31886, + "start": 31895, + "end": 31896, "loc": { "start": { "line": 745, @@ -248887,8 +248887,8 @@ "postfix": false, "binop": null }, - "start": 31903, - "end": 31904, + "start": 31913, + "end": 31914, "loc": { "start": { "line": 746, @@ -248915,8 +248915,8 @@ "updateContext": null }, "value": "else", - "start": 31905, - "end": 31909, + "start": 31915, + "end": 31919, "loc": { "start": { "line": 746, @@ -248940,8 +248940,8 @@ "postfix": false, "binop": null }, - "start": 31910, - "end": 31911, + "start": 31920, + "end": 31921, "loc": { "start": { "line": 746, @@ -248966,8 +248966,8 @@ "binop": null }, "value": "src", - "start": 31932, - "end": 31935, + "start": 31942, + "end": 31945, "loc": { "start": { "line": 747, @@ -248992,8 +248992,8 @@ "binop": null, "updateContext": null }, - "start": 31935, - "end": 31936, + "start": 31945, + "end": 31946, "loc": { "start": { "line": 747, @@ -249018,8 +249018,8 @@ "binop": null }, "value": "push", - "start": 31936, - "end": 31940, + "start": 31946, + "end": 31950, "loc": { "start": { "line": 747, @@ -249043,8 +249043,8 @@ "postfix": false, "binop": null }, - "start": 31940, - "end": 31941, + "start": 31950, + "end": 31951, "loc": { "start": { "line": 747, @@ -249070,8 +249070,8 @@ "updateContext": null }, "value": "light.direction = normalize((viewMatrix * vec4(lightPos", - "start": 31941, - "end": 31999, + "start": 31951, + "end": 32009, "loc": { "start": { "line": 747, @@ -249097,8 +249097,8 @@ "updateContext": null }, "value": "+", - "start": 32000, - "end": 32001, + "start": 32010, + "end": 32011, "loc": { "start": { "line": 747, @@ -249123,8 +249123,8 @@ "binop": null }, "value": "i", - "start": 32002, - "end": 32003, + "start": 32012, + "end": 32013, "loc": { "start": { "line": 747, @@ -249150,8 +249150,8 @@ "updateContext": null }, "value": "+", - "start": 32004, - "end": 32005, + "start": 32014, + "end": 32015, "loc": { "start": { "line": 747, @@ -249177,8 +249177,8 @@ "updateContext": null }, "value": ", 0.0)).xyz);", - "start": 32006, - "end": 32021, + "start": 32016, + "end": 32031, "loc": { "start": { "line": 747, @@ -249202,8 +249202,8 @@ "postfix": false, "binop": null }, - "start": 32021, - "end": 32022, + "start": 32031, + "end": 32032, "loc": { "start": { "line": 747, @@ -249228,8 +249228,8 @@ "binop": null, "updateContext": null }, - "start": 32022, - "end": 32023, + "start": 32032, + "end": 32033, "loc": { "start": { "line": 747, @@ -249253,8 +249253,8 @@ "postfix": false, "binop": null }, - "start": 32040, - "end": 32041, + "start": 32050, + "end": 32051, "loc": { "start": { "line": 748, @@ -249278,8 +249278,8 @@ "postfix": false, "binop": null }, - "start": 32054, - "end": 32055, + "start": 32064, + "end": 32065, "loc": { "start": { "line": 749, @@ -249306,8 +249306,8 @@ "updateContext": null }, "value": "else", - "start": 32056, - "end": 32060, + "start": 32066, + "end": 32070, "loc": { "start": { "line": 749, @@ -249334,8 +249334,8 @@ "updateContext": null }, "value": "if", - "start": 32061, - "end": 32063, + "start": 32071, + "end": 32073, "loc": { "start": { "line": 749, @@ -249359,8 +249359,8 @@ "postfix": false, "binop": null }, - "start": 32064, - "end": 32065, + "start": 32074, + "end": 32075, "loc": { "start": { "line": 749, @@ -249385,8 +249385,8 @@ "binop": null }, "value": "light", - "start": 32065, - "end": 32070, + "start": 32075, + "end": 32080, "loc": { "start": { "line": 749, @@ -249411,8 +249411,8 @@ "binop": null, "updateContext": null }, - "start": 32070, - "end": 32071, + "start": 32080, + "end": 32081, "loc": { "start": { "line": 749, @@ -249437,8 +249437,8 @@ "binop": null }, "value": "type", - "start": 32071, - "end": 32075, + "start": 32081, + "end": 32085, "loc": { "start": { "line": 749, @@ -249464,8 +249464,8 @@ "updateContext": null }, "value": "===", - "start": 32076, - "end": 32079, + "start": 32086, + "end": 32089, "loc": { "start": { "line": 749, @@ -249491,8 +249491,8 @@ "updateContext": null }, "value": "spot", - "start": 32080, - "end": 32086, + "start": 32090, + "end": 32096, "loc": { "start": { "line": 749, @@ -249516,8 +249516,8 @@ "postfix": false, "binop": null }, - "start": 32086, - "end": 32087, + "start": 32096, + "end": 32097, "loc": { "start": { "line": 749, @@ -249541,8 +249541,8 @@ "postfix": false, "binop": null }, - "start": 32088, - "end": 32089, + "start": 32098, + "end": 32099, "loc": { "start": { "line": 749, @@ -249569,8 +249569,8 @@ "updateContext": null }, "value": "if", - "start": 32106, - "end": 32108, + "start": 32116, + "end": 32118, "loc": { "start": { "line": 750, @@ -249594,8 +249594,8 @@ "postfix": false, "binop": null }, - "start": 32109, - "end": 32110, + "start": 32119, + "end": 32120, "loc": { "start": { "line": 750, @@ -249620,8 +249620,8 @@ "binop": null }, "value": "light", - "start": 32110, - "end": 32115, + "start": 32120, + "end": 32125, "loc": { "start": { "line": 750, @@ -249646,8 +249646,8 @@ "binop": null, "updateContext": null }, - "start": 32115, - "end": 32116, + "start": 32125, + "end": 32126, "loc": { "start": { "line": 750, @@ -249672,8 +249672,8 @@ "binop": null }, "value": "space", - "start": 32116, - "end": 32121, + "start": 32126, + "end": 32131, "loc": { "start": { "line": 750, @@ -249699,8 +249699,8 @@ "updateContext": null }, "value": "===", - "start": 32122, - "end": 32125, + "start": 32132, + "end": 32135, "loc": { "start": { "line": 750, @@ -249726,8 +249726,8 @@ "updateContext": null }, "value": "view", - "start": 32126, - "end": 32132, + "start": 32136, + "end": 32142, "loc": { "start": { "line": 750, @@ -249751,8 +249751,8 @@ "postfix": false, "binop": null }, - "start": 32132, - "end": 32133, + "start": 32142, + "end": 32143, "loc": { "start": { "line": 750, @@ -249776,8 +249776,8 @@ "postfix": false, "binop": null }, - "start": 32134, - "end": 32135, + "start": 32144, + "end": 32145, "loc": { "start": { "line": 750, @@ -249802,8 +249802,8 @@ "binop": null }, "value": "src", - "start": 32156, - "end": 32159, + "start": 32166, + "end": 32169, "loc": { "start": { "line": 751, @@ -249828,8 +249828,8 @@ "binop": null, "updateContext": null }, - "start": 32159, - "end": 32160, + "start": 32169, + "end": 32170, "loc": { "start": { "line": 751, @@ -249854,8 +249854,8 @@ "binop": null }, "value": "push", - "start": 32160, - "end": 32164, + "start": 32170, + "end": 32174, "loc": { "start": { "line": 751, @@ -249879,8 +249879,8 @@ "postfix": false, "binop": null }, - "start": 32164, - "end": 32165, + "start": 32174, + "end": 32175, "loc": { "start": { "line": 751, @@ -249906,8 +249906,8 @@ "updateContext": null }, "value": "light.direction = normalize(lightDir", - "start": 32165, - "end": 32204, + "start": 32175, + "end": 32214, "loc": { "start": { "line": 751, @@ -249933,8 +249933,8 @@ "updateContext": null }, "value": "+", - "start": 32205, - "end": 32206, + "start": 32215, + "end": 32216, "loc": { "start": { "line": 751, @@ -249959,8 +249959,8 @@ "binop": null }, "value": "i", - "start": 32207, - "end": 32208, + "start": 32217, + "end": 32218, "loc": { "start": { "line": 751, @@ -249986,8 +249986,8 @@ "updateContext": null }, "value": "+", - "start": 32209, - "end": 32210, + "start": 32219, + "end": 32220, "loc": { "start": { "line": 751, @@ -250013,8 +250013,8 @@ "updateContext": null }, "value": ");", - "start": 32211, - "end": 32215, + "start": 32221, + "end": 32225, "loc": { "start": { "line": 751, @@ -250038,8 +250038,8 @@ "postfix": false, "binop": null }, - "start": 32215, - "end": 32216, + "start": 32225, + "end": 32226, "loc": { "start": { "line": 751, @@ -250064,8 +250064,8 @@ "binop": null, "updateContext": null }, - "start": 32216, - "end": 32217, + "start": 32226, + "end": 32227, "loc": { "start": { "line": 751, @@ -250089,8 +250089,8 @@ "postfix": false, "binop": null }, - "start": 32234, - "end": 32235, + "start": 32244, + "end": 32245, "loc": { "start": { "line": 752, @@ -250117,8 +250117,8 @@ "updateContext": null }, "value": "else", - "start": 32236, - "end": 32240, + "start": 32246, + "end": 32250, "loc": { "start": { "line": 752, @@ -250142,8 +250142,8 @@ "postfix": false, "binop": null }, - "start": 32241, - "end": 32242, + "start": 32251, + "end": 32252, "loc": { "start": { "line": 752, @@ -250168,8 +250168,8 @@ "binop": null }, "value": "src", - "start": 32263, - "end": 32266, + "start": 32273, + "end": 32276, "loc": { "start": { "line": 753, @@ -250194,8 +250194,8 @@ "binop": null, "updateContext": null }, - "start": 32266, - "end": 32267, + "start": 32276, + "end": 32277, "loc": { "start": { "line": 753, @@ -250220,8 +250220,8 @@ "binop": null }, "value": "push", - "start": 32267, - "end": 32271, + "start": 32277, + "end": 32281, "loc": { "start": { "line": 753, @@ -250245,8 +250245,8 @@ "postfix": false, "binop": null }, - "start": 32271, - "end": 32272, + "start": 32281, + "end": 32282, "loc": { "start": { "line": 753, @@ -250272,8 +250272,8 @@ "updateContext": null }, "value": "light.direction = normalize((viewMatrix * vec4(lightDir", - "start": 32272, - "end": 32330, + "start": 32282, + "end": 32340, "loc": { "start": { "line": 753, @@ -250299,8 +250299,8 @@ "updateContext": null }, "value": "+", - "start": 32331, - "end": 32332, + "start": 32341, + "end": 32342, "loc": { "start": { "line": 753, @@ -250325,8 +250325,8 @@ "binop": null }, "value": "i", - "start": 32333, - "end": 32334, + "start": 32343, + "end": 32344, "loc": { "start": { "line": 753, @@ -250352,8 +250352,8 @@ "updateContext": null }, "value": "+", - "start": 32335, - "end": 32336, + "start": 32345, + "end": 32346, "loc": { "start": { "line": 753, @@ -250379,8 +250379,8 @@ "updateContext": null }, "value": ", 0.0)).xyz);", - "start": 32337, - "end": 32352, + "start": 32347, + "end": 32362, "loc": { "start": { "line": 753, @@ -250404,8 +250404,8 @@ "postfix": false, "binop": null }, - "start": 32352, - "end": 32353, + "start": 32362, + "end": 32363, "loc": { "start": { "line": 753, @@ -250430,8 +250430,8 @@ "binop": null, "updateContext": null }, - "start": 32353, - "end": 32354, + "start": 32363, + "end": 32364, "loc": { "start": { "line": 753, @@ -250455,8 +250455,8 @@ "postfix": false, "binop": null }, - "start": 32371, - "end": 32372, + "start": 32381, + "end": 32382, "loc": { "start": { "line": 754, @@ -250480,8 +250480,8 @@ "postfix": false, "binop": null }, - "start": 32385, - "end": 32386, + "start": 32395, + "end": 32396, "loc": { "start": { "line": 755, @@ -250508,8 +250508,8 @@ "updateContext": null }, "value": "else", - "start": 32387, - "end": 32391, + "start": 32397, + "end": 32401, "loc": { "start": { "line": 755, @@ -250533,8 +250533,8 @@ "postfix": false, "binop": null }, - "start": 32392, - "end": 32393, + "start": 32402, + "end": 32403, "loc": { "start": { "line": 755, @@ -250561,8 +250561,8 @@ "updateContext": null }, "value": "continue", - "start": 32410, - "end": 32418, + "start": 32420, + "end": 32428, "loc": { "start": { "line": 756, @@ -250587,8 +250587,8 @@ "binop": null, "updateContext": null }, - "start": 32418, - "end": 32419, + "start": 32428, + "end": 32429, "loc": { "start": { "line": 756, @@ -250612,8 +250612,8 @@ "postfix": false, "binop": null }, - "start": 32432, - "end": 32433, + "start": 32442, + "end": 32443, "loc": { "start": { "line": 757, @@ -250638,8 +250638,8 @@ "binop": null }, "value": "src", - "start": 32447, - "end": 32450, + "start": 32457, + "end": 32460, "loc": { "start": { "line": 759, @@ -250664,8 +250664,8 @@ "binop": null, "updateContext": null }, - "start": 32450, - "end": 32451, + "start": 32460, + "end": 32461, "loc": { "start": { "line": 759, @@ -250690,8 +250690,8 @@ "binop": null }, "value": "push", - "start": 32451, - "end": 32455, + "start": 32461, + "end": 32465, "loc": { "start": { "line": 759, @@ -250715,8 +250715,8 @@ "postfix": false, "binop": null }, - "start": 32455, - "end": 32456, + "start": 32465, + "end": 32466, "loc": { "start": { "line": 759, @@ -250742,8 +250742,8 @@ "updateContext": null }, "value": "light.color = lightColor", - "start": 32456, - "end": 32483, + "start": 32466, + "end": 32493, "loc": { "start": { "line": 759, @@ -250769,8 +250769,8 @@ "updateContext": null }, "value": "+", - "start": 32484, - "end": 32485, + "start": 32494, + "end": 32495, "loc": { "start": { "line": 759, @@ -250795,8 +250795,8 @@ "binop": null }, "value": "i", - "start": 32486, - "end": 32487, + "start": 32496, + "end": 32497, "loc": { "start": { "line": 759, @@ -250822,8 +250822,8 @@ "updateContext": null }, "value": "+", - "start": 32488, - "end": 32489, + "start": 32498, + "end": 32499, "loc": { "start": { "line": 759, @@ -250849,8 +250849,8 @@ "updateContext": null }, "value": ".rgb * lightColor", - "start": 32490, - "end": 32509, + "start": 32500, + "end": 32519, "loc": { "start": { "line": 759, @@ -250876,8 +250876,8 @@ "updateContext": null }, "value": "+", - "start": 32510, - "end": 32511, + "start": 32520, + "end": 32521, "loc": { "start": { "line": 759, @@ -250902,8 +250902,8 @@ "binop": null }, "value": "i", - "start": 32512, - "end": 32513, + "start": 32522, + "end": 32523, "loc": { "start": { "line": 759, @@ -250929,8 +250929,8 @@ "updateContext": null }, "value": "+", - "start": 32514, - "end": 32515, + "start": 32524, + "end": 32525, "loc": { "start": { "line": 759, @@ -250956,8 +250956,8 @@ "updateContext": null }, "value": ".a;", - "start": 32516, - "end": 32521, + "start": 32526, + "end": 32531, "loc": { "start": { "line": 759, @@ -250981,8 +250981,8 @@ "postfix": false, "binop": null }, - "start": 32521, - "end": 32522, + "start": 32531, + "end": 32532, "loc": { "start": { "line": 759, @@ -251007,8 +251007,8 @@ "binop": null, "updateContext": null }, - "start": 32522, - "end": 32523, + "start": 32532, + "end": 32533, "loc": { "start": { "line": 759, @@ -251023,8 +251023,8 @@ { "type": "CommentLine", "value": " a is intensity", - "start": 32524, - "end": 32541, + "start": 32534, + "end": 32551, "loc": { "start": { "line": 759, @@ -251049,8 +251049,8 @@ "binop": null }, "value": "src", - "start": 32555, - "end": 32558, + "start": 32565, + "end": 32568, "loc": { "start": { "line": 761, @@ -251075,8 +251075,8 @@ "binop": null, "updateContext": null }, - "start": 32558, - "end": 32559, + "start": 32568, + "end": 32569, "loc": { "start": { "line": 761, @@ -251101,8 +251101,8 @@ "binop": null }, "value": "push", - "start": 32559, - "end": 32563, + "start": 32569, + "end": 32573, "loc": { "start": { "line": 761, @@ -251126,8 +251126,8 @@ "postfix": false, "binop": null }, - "start": 32563, - "end": 32564, + "start": 32573, + "end": 32574, "loc": { "start": { "line": 761, @@ -251153,8 +251153,8 @@ "updateContext": null }, "value": "computePBRLighting(light, geometry, material, reflectedLight);", - "start": 32564, - "end": 32628, + "start": 32574, + "end": 32638, "loc": { "start": { "line": 761, @@ -251178,8 +251178,8 @@ "postfix": false, "binop": null }, - "start": 32628, - "end": 32629, + "start": 32638, + "end": 32639, "loc": { "start": { "line": 761, @@ -251204,8 +251204,8 @@ "binop": null, "updateContext": null }, - "start": 32629, - "end": 32630, + "start": 32639, + "end": 32640, "loc": { "start": { "line": 761, @@ -251229,8 +251229,8 @@ "postfix": false, "binop": null }, - "start": 32639, - "end": 32640, + "start": 32649, + "end": 32650, "loc": { "start": { "line": 762, @@ -251255,8 +251255,8 @@ "binop": null }, "value": "src", - "start": 32650, - "end": 32653, + "start": 32660, + "end": 32663, "loc": { "start": { "line": 764, @@ -251281,8 +251281,8 @@ "binop": null, "updateContext": null }, - "start": 32653, - "end": 32654, + "start": 32663, + "end": 32664, "loc": { "start": { "line": 764, @@ -251307,8 +251307,8 @@ "binop": null }, "value": "push", - "start": 32654, - "end": 32658, + "start": 32664, + "end": 32668, "loc": { "start": { "line": 764, @@ -251332,8 +251332,8 @@ "postfix": false, "binop": null }, - "start": 32658, - "end": 32659, + "start": 32668, + "end": 32669, "loc": { "start": { "line": 764, @@ -251359,8 +251359,8 @@ "updateContext": null }, "value": "vec3 outgoingLight = (lightAmbient.rgb * lightAmbient.a * rgb) + (reflectedLight.diffuse) + (reflectedLight.specular);", - "start": 32659, - "end": 32779, + "start": 32669, + "end": 32789, "loc": { "start": { "line": 764, @@ -251384,8 +251384,8 @@ "postfix": false, "binop": null }, - "start": 32779, - "end": 32780, + "start": 32789, + "end": 32790, "loc": { "start": { "line": 764, @@ -251410,8 +251410,8 @@ "binop": null, "updateContext": null }, - "start": 32780, - "end": 32781, + "start": 32790, + "end": 32791, "loc": { "start": { "line": 764, @@ -251436,8 +251436,8 @@ "binop": null }, "value": "src", - "start": 32791, - "end": 32794, + "start": 32801, + "end": 32804, "loc": { "start": { "line": 766, @@ -251462,8 +251462,8 @@ "binop": null, "updateContext": null }, - "start": 32794, - "end": 32795, + "start": 32804, + "end": 32805, "loc": { "start": { "line": 766, @@ -251488,8 +251488,8 @@ "binop": null }, "value": "push", - "start": 32795, - "end": 32799, + "start": 32805, + "end": 32809, "loc": { "start": { "line": 766, @@ -251513,8 +251513,8 @@ "postfix": false, "binop": null }, - "start": 32799, - "end": 32800, + "start": 32809, + "end": 32810, "loc": { "start": { "line": 766, @@ -251540,8 +251540,8 @@ "updateContext": null }, "value": "vec4 fragColor;", - "start": 32800, - "end": 32817, + "start": 32810, + "end": 32827, "loc": { "start": { "line": 766, @@ -251565,8 +251565,8 @@ "postfix": false, "binop": null }, - "start": 32817, - "end": 32818, + "start": 32827, + "end": 32828, "loc": { "start": { "line": 766, @@ -251591,8 +251591,8 @@ "binop": null, "updateContext": null }, - "start": 32818, - "end": 32819, + "start": 32828, + "end": 32829, "loc": { "start": { "line": 766, @@ -251619,8 +251619,8 @@ "updateContext": null }, "value": "if", - "start": 32829, - "end": 32831, + "start": 32839, + "end": 32841, "loc": { "start": { "line": 768, @@ -251644,8 +251644,8 @@ "postfix": false, "binop": null }, - "start": 32832, - "end": 32833, + "start": 32842, + "end": 32843, "loc": { "start": { "line": 768, @@ -251672,8 +251672,8 @@ "updateContext": null }, "value": "this", - "start": 32833, - "end": 32837, + "start": 32843, + "end": 32847, "loc": { "start": { "line": 768, @@ -251698,8 +251698,8 @@ "binop": null, "updateContext": null }, - "start": 32837, - "end": 32838, + "start": 32847, + "end": 32848, "loc": { "start": { "line": 768, @@ -251724,8 +251724,8 @@ "binop": null }, "value": "_withSAO", - "start": 32838, - "end": 32846, + "start": 32848, + "end": 32856, "loc": { "start": { "line": 768, @@ -251749,8 +251749,8 @@ "postfix": false, "binop": null }, - "start": 32846, - "end": 32847, + "start": 32856, + "end": 32857, "loc": { "start": { "line": 768, @@ -251774,8 +251774,8 @@ "postfix": false, "binop": null }, - "start": 32848, - "end": 32849, + "start": 32858, + "end": 32859, "loc": { "start": { "line": 768, @@ -251790,8 +251790,8 @@ { "type": "CommentLine", "value": " Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top", - "start": 32862, - "end": 32965, + "start": 32872, + "end": 32975, "loc": { "start": { "line": 769, @@ -251806,8 +251806,8 @@ { "type": "CommentLine", "value": " Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject", - "start": 32978, - "end": 33081, + "start": 32988, + "end": 33091, "loc": { "start": { "line": 770, @@ -251832,8 +251832,8 @@ "binop": null }, "value": "src", - "start": 33094, - "end": 33097, + "start": 33104, + "end": 33107, "loc": { "start": { "line": 771, @@ -251858,8 +251858,8 @@ "binop": null, "updateContext": null }, - "start": 33097, - "end": 33098, + "start": 33107, + "end": 33108, "loc": { "start": { "line": 771, @@ -251884,8 +251884,8 @@ "binop": null }, "value": "push", - "start": 33098, - "end": 33102, + "start": 33108, + "end": 33112, "loc": { "start": { "line": 771, @@ -251909,8 +251909,8 @@ "postfix": false, "binop": null }, - "start": 33102, - "end": 33103, + "start": 33112, + "end": 33113, "loc": { "start": { "line": 771, @@ -251936,8 +251936,8 @@ "updateContext": null }, "value": " float viewportWidth = uSAOParams[0];", - "start": 33103, - "end": 33148, + "start": 33113, + "end": 33158, "loc": { "start": { "line": 771, @@ -251961,8 +251961,8 @@ "postfix": false, "binop": null }, - "start": 33148, - "end": 33149, + "start": 33158, + "end": 33159, "loc": { "start": { "line": 771, @@ -251987,8 +251987,8 @@ "binop": null, "updateContext": null }, - "start": 33149, - "end": 33150, + "start": 33159, + "end": 33160, "loc": { "start": { "line": 771, @@ -252013,8 +252013,8 @@ "binop": null }, "value": "src", - "start": 33163, - "end": 33166, + "start": 33173, + "end": 33176, "loc": { "start": { "line": 772, @@ -252039,8 +252039,8 @@ "binop": null, "updateContext": null }, - "start": 33166, - "end": 33167, + "start": 33176, + "end": 33177, "loc": { "start": { "line": 772, @@ -252065,8 +252065,8 @@ "binop": null }, "value": "push", - "start": 33167, - "end": 33171, + "start": 33177, + "end": 33181, "loc": { "start": { "line": 772, @@ -252090,8 +252090,8 @@ "postfix": false, "binop": null }, - "start": 33171, - "end": 33172, + "start": 33181, + "end": 33182, "loc": { "start": { "line": 772, @@ -252117,8 +252117,8 @@ "updateContext": null }, "value": " float viewportHeight = uSAOParams[1];", - "start": 33172, - "end": 33217, + "start": 33182, + "end": 33227, "loc": { "start": { "line": 772, @@ -252142,8 +252142,8 @@ "postfix": false, "binop": null }, - "start": 33217, - "end": 33218, + "start": 33227, + "end": 33228, "loc": { "start": { "line": 772, @@ -252168,8 +252168,8 @@ "binop": null, "updateContext": null }, - "start": 33218, - "end": 33219, + "start": 33228, + "end": 33229, "loc": { "start": { "line": 772, @@ -252194,8 +252194,8 @@ "binop": null }, "value": "src", - "start": 33232, - "end": 33235, + "start": 33242, + "end": 33245, "loc": { "start": { "line": 773, @@ -252220,8 +252220,8 @@ "binop": null, "updateContext": null }, - "start": 33235, - "end": 33236, + "start": 33245, + "end": 33246, "loc": { "start": { "line": 773, @@ -252246,8 +252246,8 @@ "binop": null }, "value": "push", - "start": 33236, - "end": 33240, + "start": 33246, + "end": 33250, "loc": { "start": { "line": 773, @@ -252271,8 +252271,8 @@ "postfix": false, "binop": null }, - "start": 33240, - "end": 33241, + "start": 33250, + "end": 33251, "loc": { "start": { "line": 773, @@ -252298,8 +252298,8 @@ "updateContext": null }, "value": " float blendCutoff = uSAOParams[2];", - "start": 33241, - "end": 33286, + "start": 33251, + "end": 33296, "loc": { "start": { "line": 773, @@ -252323,8 +252323,8 @@ "postfix": false, "binop": null }, - "start": 33286, - "end": 33287, + "start": 33296, + "end": 33297, "loc": { "start": { "line": 773, @@ -252349,8 +252349,8 @@ "binop": null, "updateContext": null }, - "start": 33287, - "end": 33288, + "start": 33297, + "end": 33298, "loc": { "start": { "line": 773, @@ -252375,8 +252375,8 @@ "binop": null }, "value": "src", - "start": 33301, - "end": 33304, + "start": 33311, + "end": 33314, "loc": { "start": { "line": 774, @@ -252401,8 +252401,8 @@ "binop": null, "updateContext": null }, - "start": 33304, - "end": 33305, + "start": 33314, + "end": 33315, "loc": { "start": { "line": 774, @@ -252427,8 +252427,8 @@ "binop": null }, "value": "push", - "start": 33305, - "end": 33309, + "start": 33315, + "end": 33319, "loc": { "start": { "line": 774, @@ -252452,8 +252452,8 @@ "postfix": false, "binop": null }, - "start": 33309, - "end": 33310, + "start": 33319, + "end": 33320, "loc": { "start": { "line": 774, @@ -252479,8 +252479,8 @@ "updateContext": null }, "value": " float blendFactor = uSAOParams[3];", - "start": 33310, - "end": 33355, + "start": 33320, + "end": 33365, "loc": { "start": { "line": 774, @@ -252504,8 +252504,8 @@ "postfix": false, "binop": null }, - "start": 33355, - "end": 33356, + "start": 33365, + "end": 33366, "loc": { "start": { "line": 774, @@ -252530,8 +252530,8 @@ "binop": null, "updateContext": null }, - "start": 33356, - "end": 33357, + "start": 33366, + "end": 33367, "loc": { "start": { "line": 774, @@ -252556,8 +252556,8 @@ "binop": null }, "value": "src", - "start": 33370, - "end": 33373, + "start": 33380, + "end": 33383, "loc": { "start": { "line": 775, @@ -252582,8 +252582,8 @@ "binop": null, "updateContext": null }, - "start": 33373, - "end": 33374, + "start": 33383, + "end": 33384, "loc": { "start": { "line": 775, @@ -252608,8 +252608,8 @@ "binop": null }, "value": "push", - "start": 33374, - "end": 33378, + "start": 33384, + "end": 33388, "loc": { "start": { "line": 775, @@ -252633,8 +252633,8 @@ "postfix": false, "binop": null }, - "start": 33378, - "end": 33379, + "start": 33388, + "end": 33389, "loc": { "start": { "line": 775, @@ -252660,8 +252660,8 @@ "updateContext": null }, "value": " vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);", - "start": 33379, - "end": 33480, + "start": 33389, + "end": 33490, "loc": { "start": { "line": 775, @@ -252685,8 +252685,8 @@ "postfix": false, "binop": null }, - "start": 33480, - "end": 33481, + "start": 33490, + "end": 33491, "loc": { "start": { "line": 775, @@ -252711,8 +252711,8 @@ "binop": null, "updateContext": null }, - "start": 33481, - "end": 33482, + "start": 33491, + "end": 33492, "loc": { "start": { "line": 775, @@ -252737,8 +252737,8 @@ "binop": null }, "value": "src", - "start": 33495, - "end": 33498, + "start": 33505, + "end": 33508, "loc": { "start": { "line": 776, @@ -252763,8 +252763,8 @@ "binop": null, "updateContext": null }, - "start": 33498, - "end": 33499, + "start": 33508, + "end": 33509, "loc": { "start": { "line": 776, @@ -252789,8 +252789,8 @@ "binop": null }, "value": "push", - "start": 33499, - "end": 33503, + "start": 33509, + "end": 33513, "loc": { "start": { "line": 776, @@ -252814,8 +252814,8 @@ "postfix": false, "binop": null }, - "start": 33503, - "end": 33504, + "start": 33513, + "end": 33514, "loc": { "start": { "line": 776, @@ -252841,8 +252841,8 @@ "updateContext": null }, "value": " float ambient = smoothstep(blendCutoff, 1.0, unpackRGBAToDepth(texture2D(uOcclusionTexture, uv))) * blendFactor;", - "start": 33504, - "end": 33631, + "start": 33514, + "end": 33641, "loc": { "start": { "line": 776, @@ -252866,8 +252866,8 @@ "postfix": false, "binop": null }, - "start": 33631, - "end": 33632, + "start": 33641, + "end": 33642, "loc": { "start": { "line": 776, @@ -252892,8 +252892,8 @@ "binop": null, "updateContext": null }, - "start": 33632, - "end": 33633, + "start": 33642, + "end": 33643, "loc": { "start": { "line": 776, @@ -252918,8 +252918,8 @@ "binop": null }, "value": "src", - "start": 33646, - "end": 33649, + "start": 33656, + "end": 33659, "loc": { "start": { "line": 777, @@ -252944,8 +252944,8 @@ "binop": null, "updateContext": null }, - "start": 33649, - "end": 33650, + "start": 33659, + "end": 33660, "loc": { "start": { "line": 777, @@ -252970,8 +252970,8 @@ "binop": null }, "value": "push", - "start": 33650, - "end": 33654, + "start": 33660, + "end": 33664, "loc": { "start": { "line": 777, @@ -252995,8 +252995,8 @@ "postfix": false, "binop": null }, - "start": 33654, - "end": 33655, + "start": 33664, + "end": 33665, "loc": { "start": { "line": 777, @@ -253022,8 +253022,8 @@ "updateContext": null }, "value": " fragColor = vec4(outgoingLight.rgb * ambient, alpha);", - "start": 33655, - "end": 33727, + "start": 33665, + "end": 33737, "loc": { "start": { "line": 777, @@ -253047,8 +253047,8 @@ "postfix": false, "binop": null }, - "start": 33727, - "end": 33728, + "start": 33737, + "end": 33738, "loc": { "start": { "line": 777, @@ -253073,8 +253073,8 @@ "binop": null, "updateContext": null }, - "start": 33728, - "end": 33729, + "start": 33738, + "end": 33739, "loc": { "start": { "line": 777, @@ -253098,8 +253098,8 @@ "postfix": false, "binop": null }, - "start": 33738, - "end": 33739, + "start": 33748, + "end": 33749, "loc": { "start": { "line": 778, @@ -253126,8 +253126,8 @@ "updateContext": null }, "value": "else", - "start": 33740, - "end": 33744, + "start": 33750, + "end": 33754, "loc": { "start": { "line": 778, @@ -253151,8 +253151,8 @@ "postfix": false, "binop": null }, - "start": 33745, - "end": 33746, + "start": 33755, + "end": 33756, "loc": { "start": { "line": 778, @@ -253177,8 +253177,8 @@ "binop": null }, "value": "src", - "start": 33759, - "end": 33762, + "start": 33769, + "end": 33772, "loc": { "start": { "line": 779, @@ -253203,8 +253203,8 @@ "binop": null, "updateContext": null }, - "start": 33762, - "end": 33763, + "start": 33772, + "end": 33773, "loc": { "start": { "line": 779, @@ -253229,8 +253229,8 @@ "binop": null }, "value": "push", - "start": 33763, - "end": 33767, + "start": 33773, + "end": 33777, "loc": { "start": { "line": 779, @@ -253254,8 +253254,8 @@ "postfix": false, "binop": null }, - "start": 33767, - "end": 33768, + "start": 33777, + "end": 33778, "loc": { "start": { "line": 779, @@ -253281,8 +253281,8 @@ "updateContext": null }, "value": " fragColor = vec4(outgoingLight.rgb, alpha);", - "start": 33768, - "end": 33827, + "start": 33778, + "end": 33837, "loc": { "start": { "line": 779, @@ -253306,8 +253306,8 @@ "postfix": false, "binop": null }, - "start": 33827, - "end": 33828, + "start": 33837, + "end": 33838, "loc": { "start": { "line": 779, @@ -253332,8 +253332,8 @@ "binop": null, "updateContext": null }, - "start": 33828, - "end": 33829, + "start": 33838, + "end": 33839, "loc": { "start": { "line": 779, @@ -253357,8 +253357,8 @@ "postfix": false, "binop": null }, - "start": 33838, - "end": 33839, + "start": 33848, + "end": 33849, "loc": { "start": { "line": 780, @@ -253385,8 +253385,8 @@ "updateContext": null }, "value": "if", - "start": 33849, - "end": 33851, + "start": 33859, + "end": 33861, "loc": { "start": { "line": 782, @@ -253410,8 +253410,8 @@ "postfix": false, "binop": null }, - "start": 33852, - "end": 33853, + "start": 33862, + "end": 33863, "loc": { "start": { "line": 782, @@ -253436,8 +253436,8 @@ "binop": null }, "value": "gammaOutput", - "start": 33853, - "end": 33864, + "start": 33863, + "end": 33874, "loc": { "start": { "line": 782, @@ -253461,8 +253461,8 @@ "postfix": false, "binop": null }, - "start": 33864, - "end": 33865, + "start": 33874, + "end": 33875, "loc": { "start": { "line": 782, @@ -253486,8 +253486,8 @@ "postfix": false, "binop": null }, - "start": 33866, - "end": 33867, + "start": 33876, + "end": 33877, "loc": { "start": { "line": 782, @@ -253512,8 +253512,8 @@ "binop": null }, "value": "src", - "start": 33880, - "end": 33883, + "start": 33890, + "end": 33893, "loc": { "start": { "line": 783, @@ -253538,8 +253538,8 @@ "binop": null, "updateContext": null }, - "start": 33883, - "end": 33884, + "start": 33893, + "end": 33894, "loc": { "start": { "line": 783, @@ -253564,8 +253564,8 @@ "binop": null }, "value": "push", - "start": 33884, - "end": 33888, + "start": 33894, + "end": 33898, "loc": { "start": { "line": 783, @@ -253589,8 +253589,8 @@ "postfix": false, "binop": null }, - "start": 33888, - "end": 33889, + "start": 33898, + "end": 33899, "loc": { "start": { "line": 783, @@ -253616,8 +253616,8 @@ "updateContext": null }, "value": "fragColor = linearToGamma(fragColor, gammaFactor);", - "start": 33889, - "end": 33941, + "start": 33899, + "end": 33951, "loc": { "start": { "line": 783, @@ -253641,8 +253641,8 @@ "postfix": false, "binop": null }, - "start": 33941, - "end": 33942, + "start": 33951, + "end": 33952, "loc": { "start": { "line": 783, @@ -253667,8 +253667,8 @@ "binop": null, "updateContext": null }, - "start": 33942, - "end": 33943, + "start": 33952, + "end": 33953, "loc": { "start": { "line": 783, @@ -253692,8 +253692,8 @@ "postfix": false, "binop": null }, - "start": 33952, - "end": 33953, + "start": 33962, + "end": 33963, "loc": { "start": { "line": 784, @@ -253718,8 +253718,8 @@ "binop": null }, "value": "src", - "start": 33963, - "end": 33966, + "start": 33973, + "end": 33976, "loc": { "start": { "line": 786, @@ -253744,8 +253744,8 @@ "binop": null, "updateContext": null }, - "start": 33966, - "end": 33967, + "start": 33976, + "end": 33977, "loc": { "start": { "line": 786, @@ -253770,8 +253770,8 @@ "binop": null }, "value": "push", - "start": 33967, - "end": 33971, + "start": 33977, + "end": 33981, "loc": { "start": { "line": 786, @@ -253795,8 +253795,8 @@ "postfix": false, "binop": null }, - "start": 33971, - "end": 33972, + "start": 33981, + "end": 33982, "loc": { "start": { "line": 786, @@ -253822,8 +253822,8 @@ "updateContext": null }, "value": "gl_FragColor = fragColor;", - "start": 33972, - "end": 33999, + "start": 33982, + "end": 34009, "loc": { "start": { "line": 786, @@ -253847,8 +253847,8 @@ "postfix": false, "binop": null }, - "start": 33999, - "end": 34000, + "start": 34009, + "end": 34010, "loc": { "start": { "line": 786, @@ -253873,8 +253873,8 @@ "binop": null, "updateContext": null }, - "start": 34000, - "end": 34001, + "start": 34010, + "end": 34011, "loc": { "start": { "line": 786, @@ -253901,8 +253901,8 @@ "updateContext": null }, "value": "if", - "start": 34011, - "end": 34013, + "start": 34021, + "end": 34023, "loc": { "start": { "line": 788, @@ -253926,8 +253926,8 @@ "postfix": false, "binop": null }, - "start": 34014, - "end": 34015, + "start": 34024, + "end": 34025, "loc": { "start": { "line": 788, @@ -253952,8 +253952,8 @@ "binop": null }, "value": "scene", - "start": 34015, - "end": 34020, + "start": 34025, + "end": 34030, "loc": { "start": { "line": 788, @@ -253978,8 +253978,8 @@ "binop": null, "updateContext": null }, - "start": 34020, - "end": 34021, + "start": 34030, + "end": 34031, "loc": { "start": { "line": 788, @@ -254004,8 +254004,8 @@ "binop": null }, "value": "logarithmicDepthBufferEnabled", - "start": 34021, - "end": 34050, + "start": 34031, + "end": 34060, "loc": { "start": { "line": 788, @@ -254031,8 +254031,8 @@ "updateContext": null }, "value": "&&", - "start": 34051, - "end": 34053, + "start": 34061, + "end": 34063, "loc": { "start": { "line": 788, @@ -254057,8 +254057,8 @@ "binop": null }, "value": "WEBGL_INFO", - "start": 34054, - "end": 34064, + "start": 34064, + "end": 34074, "loc": { "start": { "line": 788, @@ -254083,8 +254083,8 @@ "binop": null, "updateContext": null }, - "start": 34064, - "end": 34065, + "start": 34074, + "end": 34075, "loc": { "start": { "line": 788, @@ -254109,8 +254109,8 @@ "binop": null }, "value": "SUPPORTED_EXTENSIONS", - "start": 34065, - "end": 34085, + "start": 34075, + "end": 34095, "loc": { "start": { "line": 788, @@ -254135,8 +254135,8 @@ "binop": null, "updateContext": null }, - "start": 34085, - "end": 34086, + "start": 34095, + "end": 34096, "loc": { "start": { "line": 788, @@ -254162,8 +254162,8 @@ "updateContext": null }, "value": "EXT_frag_depth", - "start": 34086, - "end": 34102, + "start": 34096, + "end": 34112, "loc": { "start": { "line": 788, @@ -254188,8 +254188,8 @@ "binop": null, "updateContext": null }, - "start": 34102, - "end": 34103, + "start": 34112, + "end": 34113, "loc": { "start": { "line": 788, @@ -254213,8 +254213,8 @@ "postfix": false, "binop": null }, - "start": 34103, - "end": 34104, + "start": 34113, + "end": 34114, "loc": { "start": { "line": 788, @@ -254238,8 +254238,8 @@ "postfix": false, "binop": null }, - "start": 34105, - "end": 34106, + "start": 34115, + "end": 34116, "loc": { "start": { "line": 788, @@ -254264,8 +254264,8 @@ "binop": null }, "value": "src", - "start": 34119, - "end": 34122, + "start": 34129, + "end": 34132, "loc": { "start": { "line": 789, @@ -254290,8 +254290,8 @@ "binop": null, "updateContext": null }, - "start": 34122, - "end": 34123, + "start": 34132, + "end": 34133, "loc": { "start": { "line": 789, @@ -254316,8 +254316,8 @@ "binop": null }, "value": "push", - "start": 34123, - "end": 34127, + "start": 34133, + "end": 34137, "loc": { "start": { "line": 789, @@ -254341,8 +254341,8 @@ "postfix": false, "binop": null }, - "start": 34127, - "end": 34128, + "start": 34137, + "end": 34138, "loc": { "start": { "line": 789, @@ -254368,8 +254368,8 @@ "updateContext": null }, "value": "gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;", - "start": 34128, - "end": 34189, + "start": 34138, + "end": 34199, "loc": { "start": { "line": 789, @@ -254393,8 +254393,8 @@ "postfix": false, "binop": null }, - "start": 34189, - "end": 34190, + "start": 34199, + "end": 34200, "loc": { "start": { "line": 789, @@ -254419,8 +254419,8 @@ "binop": null, "updateContext": null }, - "start": 34190, - "end": 34191, + "start": 34200, + "end": 34201, "loc": { "start": { "line": 789, @@ -254444,8 +254444,8 @@ "postfix": false, "binop": null }, - "start": 34200, - "end": 34201, + "start": 34210, + "end": 34211, "loc": { "start": { "line": 790, @@ -254470,8 +254470,8 @@ "binop": null }, "value": "src", - "start": 34211, - "end": 34214, + "start": 34221, + "end": 34224, "loc": { "start": { "line": 792, @@ -254496,8 +254496,8 @@ "binop": null, "updateContext": null }, - "start": 34214, - "end": 34215, + "start": 34224, + "end": 34225, "loc": { "start": { "line": 792, @@ -254522,8 +254522,8 @@ "binop": null }, "value": "push", - "start": 34215, - "end": 34219, + "start": 34225, + "end": 34229, "loc": { "start": { "line": 792, @@ -254547,8 +254547,8 @@ "postfix": false, "binop": null }, - "start": 34219, - "end": 34220, + "start": 34229, + "end": 34230, "loc": { "start": { "line": 792, @@ -254574,8 +254574,8 @@ "updateContext": null }, "value": "}", - "start": 34220, - "end": 34223, + "start": 34230, + "end": 34233, "loc": { "start": { "line": 792, @@ -254599,8 +254599,8 @@ "postfix": false, "binop": null }, - "start": 34223, - "end": 34224, + "start": 34233, + "end": 34234, "loc": { "start": { "line": 792, @@ -254625,8 +254625,8 @@ "binop": null, "updateContext": null }, - "start": 34224, - "end": 34225, + "start": 34234, + "end": 34235, "loc": { "start": { "line": 792, @@ -254653,8 +254653,8 @@ "updateContext": null }, "value": "return", - "start": 34234, - "end": 34240, + "start": 34244, + "end": 34250, "loc": { "start": { "line": 793, @@ -254679,8 +254679,8 @@ "binop": null }, "value": "src", - "start": 34241, - "end": 34244, + "start": 34251, + "end": 34254, "loc": { "start": { "line": 793, @@ -254705,8 +254705,8 @@ "binop": null, "updateContext": null }, - "start": 34244, - "end": 34245, + "start": 34254, + "end": 34255, "loc": { "start": { "line": 793, @@ -254730,8 +254730,8 @@ "postfix": false, "binop": null }, - "start": 34250, - "end": 34251, + "start": 34260, + "end": 34261, "loc": { "start": { "line": 794, @@ -254756,8 +254756,8 @@ "binop": null }, "value": "webglContextRestored", - "start": 34257, - "end": 34277, + "start": 34267, + "end": 34287, "loc": { "start": { "line": 796, @@ -254781,8 +254781,8 @@ "postfix": false, "binop": null }, - "start": 34277, - "end": 34278, + "start": 34287, + "end": 34288, "loc": { "start": { "line": 796, @@ -254806,8 +254806,8 @@ "postfix": false, "binop": null }, - "start": 34278, - "end": 34279, + "start": 34288, + "end": 34289, "loc": { "start": { "line": 796, @@ -254831,8 +254831,8 @@ "postfix": false, "binop": null }, - "start": 34280, - "end": 34281, + "start": 34290, + "end": 34291, "loc": { "start": { "line": 796, @@ -254859,8 +254859,8 @@ "updateContext": null }, "value": "this", - "start": 34290, - "end": 34294, + "start": 34300, + "end": 34304, "loc": { "start": { "line": 797, @@ -254885,8 +254885,8 @@ "binop": null, "updateContext": null }, - "start": 34294, - "end": 34295, + "start": 34304, + "end": 34305, "loc": { "start": { "line": 797, @@ -254911,8 +254911,8 @@ "binop": null }, "value": "_program", - "start": 34295, - "end": 34303, + "start": 34305, + "end": 34313, "loc": { "start": { "line": 797, @@ -254938,8 +254938,8 @@ "updateContext": null }, "value": "=", - "start": 34304, - "end": 34305, + "start": 34314, + "end": 34315, "loc": { "start": { "line": 797, @@ -254966,8 +254966,8 @@ "updateContext": null }, "value": "null", - "start": 34306, - "end": 34310, + "start": 34316, + "end": 34320, "loc": { "start": { "line": 797, @@ -254992,8 +254992,8 @@ "binop": null, "updateContext": null }, - "start": 34310, - "end": 34311, + "start": 34320, + "end": 34321, "loc": { "start": { "line": 797, @@ -255017,8 +255017,8 @@ "postfix": false, "binop": null }, - "start": 34316, - "end": 34317, + "start": 34326, + "end": 34327, "loc": { "start": { "line": 798, @@ -255043,8 +255043,8 @@ "binop": null }, "value": "destroy", - "start": 34323, - "end": 34330, + "start": 34333, + "end": 34340, "loc": { "start": { "line": 800, @@ -255068,8 +255068,8 @@ "postfix": false, "binop": null }, - "start": 34330, - "end": 34331, + "start": 34340, + "end": 34341, "loc": { "start": { "line": 800, @@ -255093,8 +255093,8 @@ "postfix": false, "binop": null }, - "start": 34331, - "end": 34332, + "start": 34341, + "end": 34342, "loc": { "start": { "line": 800, @@ -255118,8 +255118,8 @@ "postfix": false, "binop": null }, - "start": 34333, - "end": 34334, + "start": 34343, + "end": 34344, "loc": { "start": { "line": 800, @@ -255146,8 +255146,8 @@ "updateContext": null }, "value": "if", - "start": 34343, - "end": 34345, + "start": 34353, + "end": 34355, "loc": { "start": { "line": 801, @@ -255171,8 +255171,8 @@ "postfix": false, "binop": null }, - "start": 34346, - "end": 34347, + "start": 34356, + "end": 34357, "loc": { "start": { "line": 801, @@ -255199,8 +255199,8 @@ "updateContext": null }, "value": "this", - "start": 34347, - "end": 34351, + "start": 34357, + "end": 34361, "loc": { "start": { "line": 801, @@ -255225,8 +255225,8 @@ "binop": null, "updateContext": null }, - "start": 34351, - "end": 34352, + "start": 34361, + "end": 34362, "loc": { "start": { "line": 801, @@ -255251,8 +255251,8 @@ "binop": null }, "value": "_program", - "start": 34352, - "end": 34360, + "start": 34362, + "end": 34370, "loc": { "start": { "line": 801, @@ -255276,8 +255276,8 @@ "postfix": false, "binop": null }, - "start": 34360, - "end": 34361, + "start": 34370, + "end": 34371, "loc": { "start": { "line": 801, @@ -255301,8 +255301,8 @@ "postfix": false, "binop": null }, - "start": 34362, - "end": 34363, + "start": 34372, + "end": 34373, "loc": { "start": { "line": 801, @@ -255329,8 +255329,8 @@ "updateContext": null }, "value": "this", - "start": 34376, - "end": 34380, + "start": 34386, + "end": 34390, "loc": { "start": { "line": 802, @@ -255355,8 +255355,8 @@ "binop": null, "updateContext": null }, - "start": 34380, - "end": 34381, + "start": 34390, + "end": 34391, "loc": { "start": { "line": 802, @@ -255381,8 +255381,8 @@ "binop": null }, "value": "_program", - "start": 34381, - "end": 34389, + "start": 34391, + "end": 34399, "loc": { "start": { "line": 802, @@ -255407,8 +255407,8 @@ "binop": null, "updateContext": null }, - "start": 34389, - "end": 34390, + "start": 34399, + "end": 34400, "loc": { "start": { "line": 802, @@ -255433,8 +255433,8 @@ "binop": null }, "value": "destroy", - "start": 34390, - "end": 34397, + "start": 34400, + "end": 34407, "loc": { "start": { "line": 802, @@ -255458,8 +255458,8 @@ "postfix": false, "binop": null }, - "start": 34397, - "end": 34398, + "start": 34407, + "end": 34408, "loc": { "start": { "line": 802, @@ -255483,8 +255483,8 @@ "postfix": false, "binop": null }, - "start": 34398, - "end": 34399, + "start": 34408, + "end": 34409, "loc": { "start": { "line": 802, @@ -255509,8 +255509,8 @@ "binop": null, "updateContext": null }, - "start": 34399, - "end": 34400, + "start": 34409, + "end": 34410, "loc": { "start": { "line": 802, @@ -255534,8 +255534,8 @@ "postfix": false, "binop": null }, - "start": 34409, - "end": 34410, + "start": 34419, + "end": 34420, "loc": { "start": { "line": 803, @@ -255562,8 +255562,8 @@ "updateContext": null }, "value": "this", - "start": 34419, - "end": 34423, + "start": 34429, + "end": 34433, "loc": { "start": { "line": 804, @@ -255588,8 +255588,8 @@ "binop": null, "updateContext": null }, - "start": 34423, - "end": 34424, + "start": 34433, + "end": 34434, "loc": { "start": { "line": 804, @@ -255614,8 +255614,8 @@ "binop": null }, "value": "_program", - "start": 34424, - "end": 34432, + "start": 34434, + "end": 34442, "loc": { "start": { "line": 804, @@ -255641,8 +255641,8 @@ "updateContext": null }, "value": "=", - "start": 34433, - "end": 34434, + "start": 34443, + "end": 34444, "loc": { "start": { "line": 804, @@ -255669,8 +255669,8 @@ "updateContext": null }, "value": "null", - "start": 34435, - "end": 34439, + "start": 34445, + "end": 34449, "loc": { "start": { "line": 804, @@ -255695,8 +255695,8 @@ "binop": null, "updateContext": null }, - "start": 34439, - "end": 34440, + "start": 34449, + "end": 34450, "loc": { "start": { "line": 804, @@ -255720,8 +255720,8 @@ "postfix": false, "binop": null }, - "start": 34445, - "end": 34446, + "start": 34455, + "end": 34456, "loc": { "start": { "line": 805, @@ -255745,8 +255745,8 @@ "postfix": false, "binop": null }, - "start": 34447, - "end": 34448, + "start": 34457, + "end": 34458, "loc": { "start": { "line": 806, @@ -255773,8 +255773,8 @@ "updateContext": null }, "value": "export", - "start": 34450, - "end": 34456, + "start": 34460, + "end": 34466, "loc": { "start": { "line": 808, @@ -255798,8 +255798,8 @@ "postfix": false, "binop": null }, - "start": 34457, - "end": 34458, + "start": 34467, + "end": 34468, "loc": { "start": { "line": 808, @@ -255824,8 +255824,8 @@ "binop": null }, "value": "TrianglesBatchingColorQualityRenderer", - "start": 34458, - "end": 34495, + "start": 34468, + "end": 34505, "loc": { "start": { "line": 808, @@ -255849,8 +255849,8 @@ "postfix": false, "binop": null }, - "start": 34495, - "end": 34496, + "start": 34505, + "end": 34506, "loc": { "start": { "line": 808, @@ -255875,8 +255875,8 @@ "binop": null, "updateContext": null }, - "start": 34496, - "end": 34497, + "start": 34506, + "end": 34507, "loc": { "start": { "line": 808, @@ -255901,8 +255901,8 @@ "binop": null, "updateContext": null }, - "start": 34497, - "end": 34497, + "start": 34507, + "end": 34507, "loc": { "start": { "line": 808, diff --git a/docs/ast/source/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js.json b/docs/ast/source/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js.json index e34956120d..0dca87d6cd 100644 --- a/docs/ast/source/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js.json +++ b/docs/ast/source/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js.json @@ -1,7 +1,7 @@ { "type": "File", "start": 0, - "end": 38051, + "end": 38050, "loc": { "start": { "line": 1, @@ -15,7 +15,7 @@ "program": { "type": "Program", "start": 0, - "end": 38051, + "end": 38050, "loc": { "start": { "line": 1, @@ -915,7 +915,7 @@ { "type": "Identifier", "start": 453, - "end": 38000, + "end": 37999, "loc": { "start": { "line": 18, @@ -948,7 +948,7 @@ "body": { "type": "ClassBody", "start": 499, - "end": 38000, + "end": 37999, "loc": { "start": { "line": 18, @@ -32955,7 +32955,7 @@ { "type": "ClassMethod", "start": 13974, - "end": 19074, + "end": 19063, "loc": { "start": { "line": 335, @@ -32994,7 +32994,7 @@ "body": { "type": "BlockStatement", "start": 13995, - "end": 19074, + "end": 19063, "loc": { "start": { "line": 335, @@ -39620,7 +39620,7 @@ { "type": "ExpressionStatement", "start": 17884, - "end": 17967, + "end": 17956, "loc": { "start": { "line": 429, @@ -39628,13 +39628,13 @@ }, "end": { "line": 429, - "column": 91 + "column": 80 } }, "expression": { "type": "CallExpression", "start": 17884, - "end": 17966, + "end": 17955, "loc": { "start": { "line": 429, @@ -39642,7 +39642,7 @@ }, "end": { "line": 429, - "column": 90 + "column": 79 } }, "callee": { @@ -39699,7 +39699,7 @@ { "type": "StringLiteral", "start": 17893, - "end": 17965, + "end": 17954, "loc": { "start": { "line": 429, @@ -39707,22 +39707,22 @@ }, "end": { "line": 429, - "column": 89 + "column": 78 } }, "extra": { - "rawValue": "vec3 viewNormal = normalize(vec4(viewNormalMatrix * worldNormal).xyz);", - "raw": "\"vec3 viewNormal = normalize(vec4(viewNormalMatrix * worldNormal).xyz);\"" + "rawValue": "vec3 viewNormal = vec4(viewNormalMatrix * worldNormal).xyz;", + "raw": "\"vec3 viewNormal = vec4(viewNormalMatrix * worldNormal).xyz;\"" }, - "value": "vec3 viewNormal = normalize(vec4(viewNormalMatrix * worldNormal).xyz);" + "value": "vec3 viewNormal = vec4(viewNormalMatrix * worldNormal).xyz;" } ] } }, { "type": "ExpressionStatement", - "start": 17977, - "end": 18031, + "start": 17966, + "end": 18020, "loc": { "start": { "line": 431, @@ -39735,8 +39735,8 @@ }, "expression": { "type": "CallExpression", - "start": 17977, - "end": 18030, + "start": 17966, + "end": 18019, "loc": { "start": { "line": 431, @@ -39749,8 +39749,8 @@ }, "callee": { "type": "MemberExpression", - "start": 17977, - "end": 17985, + "start": 17966, + "end": 17974, "loc": { "start": { "line": 431, @@ -39763,8 +39763,8 @@ }, "object": { "type": "Identifier", - "start": 17977, - "end": 17980, + "start": 17966, + "end": 17969, "loc": { "start": { "line": 431, @@ -39780,8 +39780,8 @@ }, "property": { "type": "Identifier", - "start": 17981, - "end": 17985, + "start": 17970, + "end": 17974, "loc": { "start": { "line": 431, @@ -39800,8 +39800,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 17986, - "end": 18029, + "start": 17975, + "end": 18018, "loc": { "start": { "line": 431, @@ -39823,8 +39823,8 @@ }, { "type": "IfStatement", - "start": 18040, - "end": 18409, + "start": 18029, + "end": 18398, "loc": { "start": { "line": 432, @@ -39837,8 +39837,8 @@ }, "test": { "type": "MemberExpression", - "start": 18044, - "end": 18079, + "start": 18033, + "end": 18068, "loc": { "start": { "line": 432, @@ -39851,8 +39851,8 @@ }, "object": { "type": "Identifier", - "start": 18044, - "end": 18049, + "start": 18033, + "end": 18038, "loc": { "start": { "line": 432, @@ -39868,8 +39868,8 @@ }, "property": { "type": "Identifier", - "start": 18050, - "end": 18079, + "start": 18039, + "end": 18068, "loc": { "start": { "line": 432, @@ -39887,8 +39887,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 18081, - "end": 18409, + "start": 18070, + "end": 18398, "loc": { "start": { "line": 432, @@ -39902,8 +39902,8 @@ "body": [ { "type": "IfStatement", - "start": 18095, - "end": 18399, + "start": 18084, + "end": 18388, "loc": { "start": { "line": 433, @@ -39916,8 +39916,8 @@ }, "test": { "type": "MemberExpression", - "start": 18099, - "end": 18148, + "start": 18088, + "end": 18137, "loc": { "start": { "line": 433, @@ -39930,8 +39930,8 @@ }, "object": { "type": "MemberExpression", - "start": 18099, - "end": 18130, + "start": 18088, + "end": 18119, "loc": { "start": { "line": 433, @@ -39944,8 +39944,8 @@ }, "object": { "type": "Identifier", - "start": 18099, - "end": 18109, + "start": 18088, + "end": 18098, "loc": { "start": { "line": 433, @@ -39961,8 +39961,8 @@ }, "property": { "type": "Identifier", - "start": 18110, - "end": 18130, + "start": 18099, + "end": 18119, "loc": { "start": { "line": 433, @@ -39980,8 +39980,8 @@ }, "property": { "type": "StringLiteral", - "start": 18131, - "end": 18147, + "start": 18120, + "end": 18136, "loc": { "start": { "line": 433, @@ -40002,8 +40002,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 18150, - "end": 18224, + "start": 18139, + "end": 18213, "loc": { "start": { "line": 433, @@ -40017,8 +40017,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 18168, - "end": 18210, + "start": 18157, + "end": 18199, "loc": { "start": { "line": 434, @@ -40031,8 +40031,8 @@ }, "expression": { "type": "CallExpression", - "start": 18168, - "end": 18209, + "start": 18157, + "end": 18198, "loc": { "start": { "line": 434, @@ -40045,8 +40045,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18168, - "end": 18176, + "start": 18157, + "end": 18165, "loc": { "start": { "line": 434, @@ -40059,8 +40059,8 @@ }, "object": { "type": "Identifier", - "start": 18168, - "end": 18171, + "start": 18157, + "end": 18160, "loc": { "start": { "line": 434, @@ -40076,8 +40076,8 @@ }, "property": { "type": "Identifier", - "start": 18172, - "end": 18176, + "start": 18161, + "end": 18165, "loc": { "start": { "line": 434, @@ -40096,8 +40096,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18177, - "end": 18208, + "start": 18166, + "end": 18197, "loc": { "start": { "line": 434, @@ -40122,8 +40122,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 18230, - "end": 18399, + "start": 18219, + "end": 18388, "loc": { "start": { "line": 435, @@ -40137,8 +40137,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 18248, - "end": 18332, + "start": 18237, + "end": 18321, "loc": { "start": { "line": 436, @@ -40151,8 +40151,8 @@ }, "expression": { "type": "CallExpression", - "start": 18248, - "end": 18331, + "start": 18237, + "end": 18320, "loc": { "start": { "line": 436, @@ -40165,8 +40165,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18248, - "end": 18256, + "start": 18237, + "end": 18245, "loc": { "start": { "line": 436, @@ -40179,8 +40179,8 @@ }, "object": { "type": "Identifier", - "start": 18248, - "end": 18251, + "start": 18237, + "end": 18240, "loc": { "start": { "line": 436, @@ -40196,8 +40196,8 @@ }, "property": { "type": "Identifier", - "start": 18252, - "end": 18256, + "start": 18241, + "end": 18245, "loc": { "start": { "line": 436, @@ -40216,8 +40216,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18257, - "end": 18330, + "start": 18246, + "end": 18319, "loc": { "start": { "line": 436, @@ -40239,8 +40239,8 @@ }, { "type": "ExpressionStatement", - "start": 18349, - "end": 18385, + "start": 18338, + "end": 18374, "loc": { "start": { "line": 437, @@ -40253,8 +40253,8 @@ }, "expression": { "type": "CallExpression", - "start": 18349, - "end": 18384, + "start": 18338, + "end": 18373, "loc": { "start": { "line": 437, @@ -40267,8 +40267,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18349, - "end": 18357, + "start": 18338, + "end": 18346, "loc": { "start": { "line": 437, @@ -40281,8 +40281,8 @@ }, "object": { "type": "Identifier", - "start": 18349, - "end": 18352, + "start": 18338, + "end": 18341, "loc": { "start": { "line": 437, @@ -40298,8 +40298,8 @@ }, "property": { "type": "Identifier", - "start": 18353, - "end": 18357, + "start": 18342, + "end": 18346, "loc": { "start": { "line": 437, @@ -40318,8 +40318,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18358, - "end": 18383, + "start": 18347, + "end": 18372, "loc": { "start": { "line": 437, @@ -40350,8 +40350,8 @@ }, { "type": "IfStatement", - "start": 18419, - "end": 18644, + "start": 18408, + "end": 18633, "loc": { "start": { "line": 441, @@ -40364,8 +40364,8 @@ }, "test": { "type": "Identifier", - "start": 18423, - "end": 18431, + "start": 18412, + "end": 18420, "loc": { "start": { "line": 441, @@ -40381,8 +40381,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 18433, - "end": 18644, + "start": 18422, + "end": 18633, "loc": { "start": { "line": 441, @@ -40396,8 +40396,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 18447, - "end": 18491, + "start": 18436, + "end": 18480, "loc": { "start": { "line": 442, @@ -40410,8 +40410,8 @@ }, "expression": { "type": "CallExpression", - "start": 18447, - "end": 18490, + "start": 18436, + "end": 18479, "loc": { "start": { "line": 442, @@ -40424,8 +40424,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18447, - "end": 18455, + "start": 18436, + "end": 18444, "loc": { "start": { "line": 442, @@ -40438,8 +40438,8 @@ }, "object": { "type": "Identifier", - "start": 18447, - "end": 18450, + "start": 18436, + "end": 18439, "loc": { "start": { "line": 442, @@ -40455,8 +40455,8 @@ }, "property": { "type": "Identifier", - "start": 18451, - "end": 18455, + "start": 18440, + "end": 18444, "loc": { "start": { "line": 442, @@ -40475,8 +40475,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18456, - "end": 18489, + "start": 18445, + "end": 18478, "loc": { "start": { "line": 442, @@ -40498,8 +40498,8 @@ }, { "type": "ExpressionStatement", - "start": 18504, - "end": 18534, + "start": 18493, + "end": 18523, "loc": { "start": { "line": 443, @@ -40512,8 +40512,8 @@ }, "expression": { "type": "CallExpression", - "start": 18504, - "end": 18533, + "start": 18493, + "end": 18522, "loc": { "start": { "line": 443, @@ -40526,8 +40526,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18504, - "end": 18512, + "start": 18493, + "end": 18501, "loc": { "start": { "line": 443, @@ -40540,8 +40540,8 @@ }, "object": { "type": "Identifier", - "start": 18504, - "end": 18507, + "start": 18493, + "end": 18496, "loc": { "start": { "line": 443, @@ -40557,8 +40557,8 @@ }, "property": { "type": "Identifier", - "start": 18508, - "end": 18512, + "start": 18497, + "end": 18501, "loc": { "start": { "line": 443, @@ -40577,8 +40577,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18513, - "end": 18532, + "start": 18502, + "end": 18521, "loc": { "start": { "line": 443, @@ -40600,8 +40600,8 @@ }, { "type": "IfStatement", - "start": 18547, - "end": 18634, + "start": 18536, + "end": 18623, "loc": { "start": { "line": 444, @@ -40614,8 +40614,8 @@ }, "test": { "type": "Identifier", - "start": 18551, - "end": 18563, + "start": 18540, + "end": 18552, "loc": { "start": { "line": 444, @@ -40631,8 +40631,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 18565, - "end": 18634, + "start": 18554, + "end": 18623, "loc": { "start": { "line": 444, @@ -40646,8 +40646,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 18583, - "end": 18620, + "start": 18572, + "end": 18609, "loc": { "start": { "line": 445, @@ -40660,8 +40660,8 @@ }, "expression": { "type": "CallExpression", - "start": 18583, - "end": 18619, + "start": 18572, + "end": 18608, "loc": { "start": { "line": 445, @@ -40674,8 +40674,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18583, - "end": 18591, + "start": 18572, + "end": 18580, "loc": { "start": { "line": 445, @@ -40688,8 +40688,8 @@ }, "object": { "type": "Identifier", - "start": 18583, - "end": 18586, + "start": 18572, + "end": 18575, "loc": { "start": { "line": 445, @@ -40705,8 +40705,8 @@ }, "property": { "type": "Identifier", - "start": 18587, - "end": 18591, + "start": 18576, + "end": 18580, "loc": { "start": { "line": 445, @@ -40725,8 +40725,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18592, - "end": 18618, + "start": 18581, + "end": 18607, "loc": { "start": { "line": 445, @@ -40758,8 +40758,8 @@ }, { "type": "ExpressionStatement", - "start": 18654, - "end": 18696, + "start": 18643, + "end": 18685, "loc": { "start": { "line": 449, @@ -40772,8 +40772,8 @@ }, "expression": { "type": "CallExpression", - "start": 18654, - "end": 18695, + "start": 18643, + "end": 18684, "loc": { "start": { "line": 449, @@ -40786,8 +40786,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18654, - "end": 18662, + "start": 18643, + "end": 18651, "loc": { "start": { "line": 449, @@ -40800,8 +40800,8 @@ }, "object": { "type": "Identifier", - "start": 18654, - "end": 18657, + "start": 18643, + "end": 18646, "loc": { "start": { "line": 449, @@ -40817,8 +40817,8 @@ }, "property": { "type": "Identifier", - "start": 18658, - "end": 18662, + "start": 18647, + "end": 18651, "loc": { "start": { "line": 449, @@ -40837,8 +40837,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18663, - "end": 18694, + "start": 18652, + "end": 18683, "loc": { "start": { "line": 449, @@ -40860,8 +40860,8 @@ }, { "type": "ExpressionStatement", - "start": 18705, - "end": 18743, + "start": 18694, + "end": 18732, "loc": { "start": { "line": 450, @@ -40874,8 +40874,8 @@ }, "expression": { "type": "CallExpression", - "start": 18705, - "end": 18742, + "start": 18694, + "end": 18731, "loc": { "start": { "line": 450, @@ -40888,8 +40888,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18705, - "end": 18713, + "start": 18694, + "end": 18702, "loc": { "start": { "line": 450, @@ -40902,8 +40902,8 @@ }, "object": { "type": "Identifier", - "start": 18705, - "end": 18708, + "start": 18694, + "end": 18697, "loc": { "start": { "line": 450, @@ -40919,8 +40919,8 @@ }, "property": { "type": "Identifier", - "start": 18709, - "end": 18713, + "start": 18698, + "end": 18702, "loc": { "start": { "line": 450, @@ -40939,8 +40939,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18714, - "end": 18741, + "start": 18703, + "end": 18730, "loc": { "start": { "line": 450, @@ -40962,8 +40962,8 @@ }, { "type": "ExpressionStatement", - "start": 18752, - "end": 18780, + "start": 18741, + "end": 18769, "loc": { "start": { "line": 451, @@ -40976,8 +40976,8 @@ }, "expression": { "type": "CallExpression", - "start": 18752, - "end": 18779, + "start": 18741, + "end": 18768, "loc": { "start": { "line": 451, @@ -40990,8 +40990,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18752, - "end": 18760, + "start": 18741, + "end": 18749, "loc": { "start": { "line": 451, @@ -41004,8 +41004,8 @@ }, "object": { "type": "Identifier", - "start": 18752, - "end": 18755, + "start": 18741, + "end": 18744, "loc": { "start": { "line": 451, @@ -41021,8 +41021,8 @@ }, "property": { "type": "Identifier", - "start": 18756, - "end": 18760, + "start": 18745, + "end": 18749, "loc": { "start": { "line": 451, @@ -41041,8 +41041,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18761, - "end": 18778, + "start": 18750, + "end": 18767, "loc": { "start": { "line": 451, @@ -41064,8 +41064,8 @@ }, { "type": "ExpressionStatement", - "start": 18789, - "end": 18841, + "start": 18778, + "end": 18830, "loc": { "start": { "line": 452, @@ -41078,8 +41078,8 @@ }, "expression": { "type": "CallExpression", - "start": 18789, - "end": 18840, + "start": 18778, + "end": 18829, "loc": { "start": { "line": 452, @@ -41092,8 +41092,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18789, - "end": 18797, + "start": 18778, + "end": 18786, "loc": { "start": { "line": 452, @@ -41106,8 +41106,8 @@ }, "object": { "type": "Identifier", - "start": 18789, - "end": 18792, + "start": 18778, + "end": 18781, "loc": { "start": { "line": 452, @@ -41123,8 +41123,8 @@ }, "property": { "type": "Identifier", - "start": 18793, - "end": 18797, + "start": 18782, + "end": 18786, "loc": { "start": { "line": 452, @@ -41143,8 +41143,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18798, - "end": 18839, + "start": 18787, + "end": 18828, "loc": { "start": { "line": 452, @@ -41166,8 +41166,8 @@ }, { "type": "IfStatement", - "start": 18851, - "end": 18957, + "start": 18840, + "end": 18946, "loc": { "start": { "line": 454, @@ -41180,8 +41180,8 @@ }, "test": { "type": "BinaryExpression", - "start": 18855, - "end": 18887, + "start": 18844, + "end": 18876, "loc": { "start": { "line": 454, @@ -41194,8 +41194,8 @@ }, "left": { "type": "MemberExpression", - "start": 18855, - "end": 18883, + "start": 18844, + "end": 18872, "loc": { "start": { "line": 454, @@ -41208,8 +41208,8 @@ }, "object": { "type": "MemberExpression", - "start": 18855, - "end": 18876, + "start": 18844, + "end": 18865, "loc": { "start": { "line": 454, @@ -41222,8 +41222,8 @@ }, "object": { "type": "Identifier", - "start": 18855, - "end": 18866, + "start": 18844, + "end": 18855, "loc": { "start": { "line": 454, @@ -41239,8 +41239,8 @@ }, "property": { "type": "Identifier", - "start": 18867, - "end": 18876, + "start": 18856, + "end": 18865, "loc": { "start": { "line": 454, @@ -41258,8 +41258,8 @@ }, "property": { "type": "Identifier", - "start": 18877, - "end": 18883, + "start": 18866, + "end": 18872, "loc": { "start": { "line": 454, @@ -41278,8 +41278,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 18886, - "end": 18887, + "start": 18875, + "end": 18876, "loc": { "start": { "line": 454, @@ -41299,8 +41299,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 18889, - "end": 18957, + "start": 18878, + "end": 18946, "loc": { "start": { "line": 454, @@ -41314,8 +41314,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 18903, - "end": 18947, + "start": 18892, + "end": 18936, "loc": { "start": { "line": 455, @@ -41328,8 +41328,8 @@ }, "expression": { "type": "CallExpression", - "start": 18903, - "end": 18946, + "start": 18892, + "end": 18935, "loc": { "start": { "line": 455, @@ -41342,8 +41342,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18903, - "end": 18911, + "start": 18892, + "end": 18900, "loc": { "start": { "line": 455, @@ -41356,8 +41356,8 @@ }, "object": { "type": "Identifier", - "start": 18903, - "end": 18906, + "start": 18892, + "end": 18895, "loc": { "start": { "line": 455, @@ -41373,8 +41373,8 @@ }, "property": { "type": "Identifier", - "start": 18907, - "end": 18911, + "start": 18896, + "end": 18900, "loc": { "start": { "line": 455, @@ -41393,8 +41393,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18912, - "end": 18945, + "start": 18901, + "end": 18934, "loc": { "start": { "line": 455, @@ -41421,8 +41421,8 @@ }, { "type": "ExpressionStatement", - "start": 18967, - "end": 19002, + "start": 18956, + "end": 18991, "loc": { "start": { "line": 458, @@ -41435,8 +41435,8 @@ }, "expression": { "type": "CallExpression", - "start": 18967, - "end": 19001, + "start": 18956, + "end": 18990, "loc": { "start": { "line": 458, @@ -41449,8 +41449,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18967, - "end": 18975, + "start": 18956, + "end": 18964, "loc": { "start": { "line": 458, @@ -41463,8 +41463,8 @@ }, "object": { "type": "Identifier", - "start": 18967, - "end": 18970, + "start": 18956, + "end": 18959, "loc": { "start": { "line": 458, @@ -41480,8 +41480,8 @@ }, "property": { "type": "Identifier", - "start": 18971, - "end": 18975, + "start": 18960, + "end": 18964, "loc": { "start": { "line": 458, @@ -41500,8 +41500,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18976, - "end": 19000, + "start": 18965, + "end": 18989, "loc": { "start": { "line": 458, @@ -41523,8 +41523,8 @@ }, { "type": "ExpressionStatement", - "start": 19011, - "end": 19025, + "start": 19000, + "end": 19014, "loc": { "start": { "line": 459, @@ -41537,8 +41537,8 @@ }, "expression": { "type": "CallExpression", - "start": 19011, - "end": 19024, + "start": 19000, + "end": 19013, "loc": { "start": { "line": 459, @@ -41551,8 +41551,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19011, - "end": 19019, + "start": 19000, + "end": 19008, "loc": { "start": { "line": 459, @@ -41565,8 +41565,8 @@ }, "object": { "type": "Identifier", - "start": 19011, - "end": 19014, + "start": 19000, + "end": 19003, "loc": { "start": { "line": 459, @@ -41582,8 +41582,8 @@ }, "property": { "type": "Identifier", - "start": 19015, - "end": 19019, + "start": 19004, + "end": 19008, "loc": { "start": { "line": 459, @@ -41602,8 +41602,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19020, - "end": 19023, + "start": 19009, + "end": 19012, "loc": { "start": { "line": 459, @@ -41625,8 +41625,8 @@ }, { "type": "ExpressionStatement", - "start": 19034, - "end": 19048, + "start": 19023, + "end": 19037, "loc": { "start": { "line": 460, @@ -41639,8 +41639,8 @@ }, "expression": { "type": "CallExpression", - "start": 19034, - "end": 19047, + "start": 19023, + "end": 19036, "loc": { "start": { "line": 460, @@ -41653,8 +41653,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19034, - "end": 19042, + "start": 19023, + "end": 19031, "loc": { "start": { "line": 460, @@ -41667,8 +41667,8 @@ }, "object": { "type": "Identifier", - "start": 19034, - "end": 19037, + "start": 19023, + "end": 19026, "loc": { "start": { "line": 460, @@ -41684,8 +41684,8 @@ }, "property": { "type": "Identifier", - "start": 19038, - "end": 19042, + "start": 19027, + "end": 19031, "loc": { "start": { "line": 460, @@ -41704,8 +41704,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19043, - "end": 19046, + "start": 19032, + "end": 19035, "loc": { "start": { "line": 460, @@ -41727,8 +41727,8 @@ }, { "type": "ReturnStatement", - "start": 19057, - "end": 19068, + "start": 19046, + "end": 19057, "loc": { "start": { "line": 461, @@ -41741,8 +41741,8 @@ }, "argument": { "type": "Identifier", - "start": 19064, - "end": 19067, + "start": 19053, + "end": 19056, "loc": { "start": { "line": 461, @@ -41763,8 +41763,8 @@ }, { "type": "ClassMethod", - "start": 19080, - "end": 37803, + "start": 19069, + "end": 37802, "loc": { "start": { "line": 464, @@ -41779,8 +41779,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 19080, - "end": 19100, + "start": 19069, + "end": 19089, "loc": { "start": { "line": 464, @@ -41802,8 +41802,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 19103, - "end": 37803, + "start": 19092, + "end": 37802, "loc": { "start": { "line": 464, @@ -41817,8 +41817,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 19114, - "end": 19140, + "start": 19103, + "end": 19129, "loc": { "start": { "line": 466, @@ -41832,8 +41832,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 19120, - "end": 19139, + "start": 19109, + "end": 19128, "loc": { "start": { "line": 466, @@ -41846,8 +41846,8 @@ }, "id": { "type": "Identifier", - "start": 19120, - "end": 19125, + "start": 19109, + "end": 19114, "loc": { "start": { "line": 466, @@ -41863,8 +41863,8 @@ }, "init": { "type": "MemberExpression", - "start": 19128, - "end": 19139, + "start": 19117, + "end": 19128, "loc": { "start": { "line": 466, @@ -41877,8 +41877,8 @@ }, "object": { "type": "ThisExpression", - "start": 19128, - "end": 19132, + "start": 19117, + "end": 19121, "loc": { "start": { "line": 466, @@ -41892,8 +41892,8 @@ }, "property": { "type": "Identifier", - "start": 19133, - "end": 19139, + "start": 19122, + "end": 19128, "loc": { "start": { "line": 466, @@ -41915,8 +41915,8 @@ }, { "type": "VariableDeclaration", - "start": 19149, - "end": 19187, + "start": 19138, + "end": 19176, "loc": { "start": { "line": 467, @@ -41930,8 +41930,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 19155, - "end": 19186, + "start": 19144, + "end": 19175, "loc": { "start": { "line": 467, @@ -41944,8 +41944,8 @@ }, "id": { "type": "Identifier", - "start": 19155, - "end": 19166, + "start": 19144, + "end": 19155, "loc": { "start": { "line": 467, @@ -41961,8 +41961,8 @@ }, "init": { "type": "MemberExpression", - "start": 19169, - "end": 19186, + "start": 19158, + "end": 19175, "loc": { "start": { "line": 467, @@ -41975,8 +41975,8 @@ }, "object": { "type": "Identifier", - "start": 19169, - "end": 19174, + "start": 19158, + "end": 19163, "loc": { "start": { "line": 467, @@ -41992,8 +41992,8 @@ }, "property": { "type": "Identifier", - "start": 19175, - "end": 19186, + "start": 19164, + "end": 19175, "loc": { "start": { "line": 467, @@ -42016,8 +42016,8 @@ { "type": "CommentLine", "value": " If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.", - "start": 19188, - "end": 19306, + "start": 19177, + "end": 19295, "loc": { "start": { "line": 467, @@ -42033,8 +42033,8 @@ }, { "type": "VariableDeclaration", - "start": 19315, - "end": 19368, + "start": 19304, + "end": 19357, "loc": { "start": { "line": 468, @@ -42048,8 +42048,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 19321, - "end": 19367, + "start": 19310, + "end": 19356, "loc": { "start": { "line": 468, @@ -42062,8 +42062,8 @@ }, "id": { "type": "Identifier", - "start": 19321, - "end": 19339, + "start": 19310, + "end": 19328, "loc": { "start": { "line": 468, @@ -42080,8 +42080,8 @@ }, "init": { "type": "MemberExpression", - "start": 19342, - "end": 19367, + "start": 19331, + "end": 19356, "loc": { "start": { "line": 468, @@ -42094,8 +42094,8 @@ }, "object": { "type": "Identifier", - "start": 19342, - "end": 19347, + "start": 19331, + "end": 19336, "loc": { "start": { "line": 468, @@ -42111,8 +42111,8 @@ }, "property": { "type": "Identifier", - "start": 19348, - "end": 19367, + "start": 19337, + "end": 19356, "loc": { "start": { "line": 468, @@ -42136,8 +42136,8 @@ { "type": "CommentLine", "value": " If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.", - "start": 19188, - "end": 19306, + "start": 19177, + "end": 19295, "loc": { "start": { "line": 467, @@ -42153,8 +42153,8 @@ }, { "type": "VariableDeclaration", - "start": 19377, - "end": 19416, + "start": 19366, + "end": 19405, "loc": { "start": { "line": 469, @@ -42168,8 +42168,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 19383, - "end": 19415, + "start": 19372, + "end": 19404, "loc": { "start": { "line": 469, @@ -42182,8 +42182,8 @@ }, "id": { "type": "Identifier", - "start": 19383, - "end": 19394, + "start": 19372, + "end": 19383, "loc": { "start": { "line": 469, @@ -42199,8 +42199,8 @@ }, "init": { "type": "MemberExpression", - "start": 19397, - "end": 19415, + "start": 19386, + "end": 19404, "loc": { "start": { "line": 469, @@ -42213,8 +42213,8 @@ }, "object": { "type": "Identifier", - "start": 19397, - "end": 19402, + "start": 19386, + "end": 19391, "loc": { "start": { "line": 469, @@ -42230,8 +42230,8 @@ }, "property": { "type": "Identifier", - "start": 19403, - "end": 19415, + "start": 19392, + "end": 19404, "loc": { "start": { "line": 469, @@ -42253,8 +42253,8 @@ }, { "type": "VariableDeclaration", - "start": 19425, - "end": 19486, + "start": 19414, + "end": 19475, "loc": { "start": { "line": 470, @@ -42268,8 +42268,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 19431, - "end": 19485, + "start": 19420, + "end": 19474, "loc": { "start": { "line": 470, @@ -42282,8 +42282,8 @@ }, "id": { "type": "Identifier", - "start": 19431, - "end": 19439, + "start": 19420, + "end": 19428, "loc": { "start": { "line": 470, @@ -42299,8 +42299,8 @@ }, "init": { "type": "BinaryExpression", - "start": 19442, - "end": 19485, + "start": 19431, + "end": 19474, "loc": { "start": { "line": 470, @@ -42313,8 +42313,8 @@ }, "left": { "type": "MemberExpression", - "start": 19442, - "end": 19481, + "start": 19431, + "end": 19470, "loc": { "start": { "line": 470, @@ -42327,8 +42327,8 @@ }, "object": { "type": "MemberExpression", - "start": 19442, - "end": 19474, + "start": 19431, + "end": 19463, "loc": { "start": { "line": 470, @@ -42341,8 +42341,8 @@ }, "object": { "type": "Identifier", - "start": 19442, - "end": 19460, + "start": 19431, + "end": 19449, "loc": { "start": { "line": 470, @@ -42358,8 +42358,8 @@ }, "property": { "type": "Identifier", - "start": 19461, - "end": 19474, + "start": 19450, + "end": 19463, "loc": { "start": { "line": 470, @@ -42377,8 +42377,8 @@ }, "property": { "type": "Identifier", - "start": 19475, - "end": 19481, + "start": 19464, + "end": 19470, "loc": { "start": { "line": 470, @@ -42397,8 +42397,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 19484, - "end": 19485, + "start": 19473, + "end": 19474, "loc": { "start": { "line": 470, @@ -42422,8 +42422,8 @@ }, { "type": "VariableDeclaration", - "start": 19495, - "end": 19548, + "start": 19484, + "end": 19537, "loc": { "start": { "line": 471, @@ -42437,8 +42437,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 19501, - "end": 19547, + "start": 19490, + "end": 19536, "loc": { "start": { "line": 471, @@ -42451,8 +42451,8 @@ }, "id": { "type": "Identifier", - "start": 19501, - "end": 19513, + "start": 19490, + "end": 19502, "loc": { "start": { "line": 471, @@ -42468,8 +42468,8 @@ }, "init": { "type": "MemberExpression", - "start": 19516, - "end": 19547, + "start": 19505, + "end": 19536, "loc": { "start": { "line": 471, @@ -42482,8 +42482,8 @@ }, "object": { "type": "Identifier", - "start": 19516, - "end": 19534, + "start": 19505, + "end": 19523, "loc": { "start": { "line": 471, @@ -42499,8 +42499,8 @@ }, "property": { "type": "Identifier", - "start": 19535, - "end": 19547, + "start": 19524, + "end": 19536, "loc": { "start": { "line": 471, @@ -42522,8 +42522,8 @@ }, { "type": "VariableDeclaration", - "start": 19557, - "end": 19572, + "start": 19546, + "end": 19561, "loc": { "start": { "line": 472, @@ -42537,8 +42537,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 19563, - "end": 19571, + "start": 19552, + "end": 19560, "loc": { "start": { "line": 472, @@ -42551,8 +42551,8 @@ }, "id": { "type": "Identifier", - "start": 19563, - "end": 19566, + "start": 19552, + "end": 19555, "loc": { "start": { "line": 472, @@ -42568,8 +42568,8 @@ }, "init": { "type": "ArrayExpression", - "start": 19569, - "end": 19571, + "start": 19558, + "end": 19560, "loc": { "start": { "line": 472, @@ -42588,8 +42588,8 @@ }, { "type": "ExpressionStatement", - "start": 19582, - "end": 19649, + "start": 19571, + "end": 19638, "loc": { "start": { "line": 474, @@ -42602,8 +42602,8 @@ }, "expression": { "type": "CallExpression", - "start": 19582, - "end": 19648, + "start": 19571, + "end": 19637, "loc": { "start": { "line": 474, @@ -42616,8 +42616,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19582, - "end": 19590, + "start": 19571, + "end": 19579, "loc": { "start": { "line": 474, @@ -42630,8 +42630,8 @@ }, "object": { "type": "Identifier", - "start": 19582, - "end": 19585, + "start": 19571, + "end": 19574, "loc": { "start": { "line": 474, @@ -42647,8 +42647,8 @@ }, "property": { "type": "Identifier", - "start": 19586, - "end": 19590, + "start": 19575, + "end": 19579, "loc": { "start": { "line": 474, @@ -42667,8 +42667,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19591, - "end": 19647, + "start": 19580, + "end": 19636, "loc": { "start": { "line": 474, @@ -42690,8 +42690,8 @@ }, { "type": "IfStatement", - "start": 19659, - "end": 19827, + "start": 19648, + "end": 19816, "loc": { "start": { "line": 476, @@ -42704,8 +42704,8 @@ }, "test": { "type": "LogicalExpression", - "start": 19663, - "end": 19751, + "start": 19652, + "end": 19740, "loc": { "start": { "line": 476, @@ -42718,8 +42718,8 @@ }, "left": { "type": "MemberExpression", - "start": 19663, - "end": 19698, + "start": 19652, + "end": 19687, "loc": { "start": { "line": 476, @@ -42732,8 +42732,8 @@ }, "object": { "type": "Identifier", - "start": 19663, - "end": 19668, + "start": 19652, + "end": 19657, "loc": { "start": { "line": 476, @@ -42749,8 +42749,8 @@ }, "property": { "type": "Identifier", - "start": 19669, - "end": 19698, + "start": 19658, + "end": 19687, "loc": { "start": { "line": 476, @@ -42769,8 +42769,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 19702, - "end": 19751, + "start": 19691, + "end": 19740, "loc": { "start": { "line": 476, @@ -42783,8 +42783,8 @@ }, "object": { "type": "MemberExpression", - "start": 19702, - "end": 19733, + "start": 19691, + "end": 19722, "loc": { "start": { "line": 476, @@ -42797,8 +42797,8 @@ }, "object": { "type": "Identifier", - "start": 19702, - "end": 19712, + "start": 19691, + "end": 19701, "loc": { "start": { "line": 476, @@ -42814,8 +42814,8 @@ }, "property": { "type": "Identifier", - "start": 19713, - "end": 19733, + "start": 19702, + "end": 19722, "loc": { "start": { "line": 476, @@ -42833,8 +42833,8 @@ }, "property": { "type": "StringLiteral", - "start": 19734, - "end": 19750, + "start": 19723, + "end": 19739, "loc": { "start": { "line": 476, @@ -42856,8 +42856,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 19753, - "end": 19827, + "start": 19742, + "end": 19816, "loc": { "start": { "line": 476, @@ -42871,8 +42871,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 19767, - "end": 19817, + "start": 19756, + "end": 19806, "loc": { "start": { "line": 477, @@ -42885,8 +42885,8 @@ }, "expression": { "type": "CallExpression", - "start": 19767, - "end": 19816, + "start": 19756, + "end": 19805, "loc": { "start": { "line": 477, @@ -42899,8 +42899,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19767, - "end": 19775, + "start": 19756, + "end": 19764, "loc": { "start": { "line": 477, @@ -42913,8 +42913,8 @@ }, "object": { "type": "Identifier", - "start": 19767, - "end": 19770, + "start": 19756, + "end": 19759, "loc": { "start": { "line": 477, @@ -42930,8 +42930,8 @@ }, "property": { "type": "Identifier", - "start": 19771, - "end": 19775, + "start": 19760, + "end": 19764, "loc": { "start": { "line": 477, @@ -42950,8 +42950,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19776, - "end": 19815, + "start": 19765, + "end": 19804, "loc": { "start": { "line": 477, @@ -42978,8 +42978,8 @@ }, { "type": "ExpressionStatement", - "start": 19837, - "end": 19883, + "start": 19826, + "end": 19872, "loc": { "start": { "line": 480, @@ -42992,8 +42992,8 @@ }, "expression": { "type": "CallExpression", - "start": 19837, - "end": 19882, + "start": 19826, + "end": 19871, "loc": { "start": { "line": 480, @@ -43006,8 +43006,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19837, - "end": 19845, + "start": 19826, + "end": 19834, "loc": { "start": { "line": 480, @@ -43020,8 +43020,8 @@ }, "object": { "type": "Identifier", - "start": 19837, - "end": 19840, + "start": 19826, + "end": 19829, "loc": { "start": { "line": 480, @@ -43037,8 +43037,8 @@ }, "property": { "type": "Identifier", - "start": 19841, - "end": 19845, + "start": 19830, + "end": 19834, "loc": { "start": { "line": 480, @@ -43057,8 +43057,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19846, - "end": 19881, + "start": 19835, + "end": 19870, "loc": { "start": { "line": 480, @@ -43080,8 +43080,8 @@ }, { "type": "ExpressionStatement", - "start": 19892, - "end": 19927, + "start": 19881, + "end": 19916, "loc": { "start": { "line": 481, @@ -43094,8 +43094,8 @@ }, "expression": { "type": "CallExpression", - "start": 19892, - "end": 19926, + "start": 19881, + "end": 19915, "loc": { "start": { "line": 481, @@ -43108,8 +43108,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19892, - "end": 19900, + "start": 19881, + "end": 19889, "loc": { "start": { "line": 481, @@ -43122,8 +43122,8 @@ }, "object": { "type": "Identifier", - "start": 19892, - "end": 19895, + "start": 19881, + "end": 19884, "loc": { "start": { "line": 481, @@ -43139,8 +43139,8 @@ }, "property": { "type": "Identifier", - "start": 19896, - "end": 19900, + "start": 19885, + "end": 19889, "loc": { "start": { "line": 481, @@ -43159,8 +43159,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19901, - "end": 19925, + "start": 19890, + "end": 19914, "loc": { "start": { "line": 481, @@ -43182,8 +43182,8 @@ }, { "type": "ExpressionStatement", - "start": 19936, - "end": 19969, + "start": 19925, + "end": 19958, "loc": { "start": { "line": 482, @@ -43196,8 +43196,8 @@ }, "expression": { "type": "CallExpression", - "start": 19936, - "end": 19968, + "start": 19925, + "end": 19957, "loc": { "start": { "line": 482, @@ -43210,8 +43210,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19936, - "end": 19944, + "start": 19925, + "end": 19933, "loc": { "start": { "line": 482, @@ -43224,8 +43224,8 @@ }, "object": { "type": "Identifier", - "start": 19936, - "end": 19939, + "start": 19925, + "end": 19928, "loc": { "start": { "line": 482, @@ -43241,8 +43241,8 @@ }, "property": { "type": "Identifier", - "start": 19940, - "end": 19944, + "start": 19929, + "end": 19933, "loc": { "start": { "line": 482, @@ -43261,8 +43261,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19945, - "end": 19967, + "start": 19934, + "end": 19956, "loc": { "start": { "line": 482, @@ -43284,8 +43284,8 @@ }, { "type": "ExpressionStatement", - "start": 19978, - "end": 19996, + "start": 19967, + "end": 19985, "loc": { "start": { "line": 483, @@ -43298,8 +43298,8 @@ }, "expression": { "type": "CallExpression", - "start": 19978, - "end": 19995, + "start": 19967, + "end": 19984, "loc": { "start": { "line": 483, @@ -43312,8 +43312,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19978, - "end": 19986, + "start": 19967, + "end": 19975, "loc": { "start": { "line": 483, @@ -43326,8 +43326,8 @@ }, "object": { "type": "Identifier", - "start": 19978, - "end": 19981, + "start": 19967, + "end": 19970, "loc": { "start": { "line": 483, @@ -43343,8 +43343,8 @@ }, "property": { "type": "Identifier", - "start": 19982, - "end": 19986, + "start": 19971, + "end": 19975, "loc": { "start": { "line": 483, @@ -43363,8 +43363,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19987, - "end": 19994, + "start": 19976, + "end": 19983, "loc": { "start": { "line": 483, @@ -43386,8 +43386,8 @@ }, { "type": "ExpressionStatement", - "start": 20005, - "end": 20042, + "start": 19994, + "end": 20031, "loc": { "start": { "line": 484, @@ -43400,8 +43400,8 @@ }, "expression": { "type": "CallExpression", - "start": 20005, - "end": 20041, + "start": 19994, + "end": 20030, "loc": { "start": { "line": 484, @@ -43414,8 +43414,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20005, - "end": 20013, + "start": 19994, + "end": 20002, "loc": { "start": { "line": 484, @@ -43428,8 +43428,8 @@ }, "object": { "type": "Identifier", - "start": 20005, - "end": 20008, + "start": 19994, + "end": 19997, "loc": { "start": { "line": 484, @@ -43445,8 +43445,8 @@ }, "property": { "type": "Identifier", - "start": 20009, - "end": 20013, + "start": 19998, + "end": 20002, "loc": { "start": { "line": 484, @@ -43465,8 +43465,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20014, - "end": 20040, + "start": 20003, + "end": 20029, "loc": { "start": { "line": 484, @@ -43488,8 +43488,8 @@ }, { "type": "ExpressionStatement", - "start": 20051, - "end": 20086, + "start": 20040, + "end": 20075, "loc": { "start": { "line": 485, @@ -43502,8 +43502,8 @@ }, "expression": { "type": "CallExpression", - "start": 20051, - "end": 20085, + "start": 20040, + "end": 20074, "loc": { "start": { "line": 485, @@ -43516,8 +43516,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20051, - "end": 20059, + "start": 20040, + "end": 20048, "loc": { "start": { "line": 485, @@ -43530,8 +43530,8 @@ }, "object": { "type": "Identifier", - "start": 20051, - "end": 20054, + "start": 20040, + "end": 20043, "loc": { "start": { "line": 485, @@ -43547,8 +43547,8 @@ }, "property": { "type": "Identifier", - "start": 20055, - "end": 20059, + "start": 20044, + "end": 20048, "loc": { "start": { "line": 485, @@ -43567,8 +43567,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20060, - "end": 20084, + "start": 20049, + "end": 20073, "loc": { "start": { "line": 485, @@ -43590,8 +43590,8 @@ }, { "type": "ExpressionStatement", - "start": 20095, - "end": 20114, + "start": 20084, + "end": 20103, "loc": { "start": { "line": 486, @@ -43604,8 +43604,8 @@ }, "expression": { "type": "CallExpression", - "start": 20095, - "end": 20113, + "start": 20084, + "end": 20102, "loc": { "start": { "line": 486, @@ -43618,8 +43618,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20095, - "end": 20103, + "start": 20084, + "end": 20092, "loc": { "start": { "line": 486, @@ -43632,8 +43632,8 @@ }, "object": { "type": "Identifier", - "start": 20095, - "end": 20098, + "start": 20084, + "end": 20087, "loc": { "start": { "line": 486, @@ -43649,8 +43649,8 @@ }, "property": { "type": "Identifier", - "start": 20099, - "end": 20103, + "start": 20088, + "end": 20092, "loc": { "start": { "line": 486, @@ -43669,8 +43669,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20104, - "end": 20112, + "start": 20093, + "end": 20101, "loc": { "start": { "line": 486, @@ -43692,8 +43692,8 @@ }, { "type": "IfStatement", - "start": 20124, - "end": 20372, + "start": 20113, + "end": 20361, "loc": { "start": { "line": 488, @@ -43706,8 +43706,8 @@ }, "test": { "type": "MemberExpression", - "start": 20128, - "end": 20163, + "start": 20117, + "end": 20152, "loc": { "start": { "line": 488, @@ -43720,8 +43720,8 @@ }, "object": { "type": "Identifier", - "start": 20128, - "end": 20133, + "start": 20117, + "end": 20122, "loc": { "start": { "line": 488, @@ -43737,8 +43737,8 @@ }, "property": { "type": "Identifier", - "start": 20134, - "end": 20163, + "start": 20123, + "end": 20152, "loc": { "start": { "line": 488, @@ -43756,8 +43756,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 20165, - "end": 20372, + "start": 20154, + "end": 20361, "loc": { "start": { "line": 488, @@ -43771,8 +43771,8 @@ "body": [ { "type": "IfStatement", - "start": 20179, - "end": 20362, + "start": 20168, + "end": 20351, "loc": { "start": { "line": 489, @@ -43785,8 +43785,8 @@ }, "test": { "type": "MemberExpression", - "start": 20183, - "end": 20232, + "start": 20172, + "end": 20221, "loc": { "start": { "line": 489, @@ -43799,8 +43799,8 @@ }, "object": { "type": "MemberExpression", - "start": 20183, - "end": 20214, + "start": 20172, + "end": 20203, "loc": { "start": { "line": 489, @@ -43813,8 +43813,8 @@ }, "object": { "type": "Identifier", - "start": 20183, - "end": 20193, + "start": 20172, + "end": 20182, "loc": { "start": { "line": 489, @@ -43830,8 +43830,8 @@ }, "property": { "type": "Identifier", - "start": 20194, - "end": 20214, + "start": 20183, + "end": 20203, "loc": { "start": { "line": 489, @@ -43849,8 +43849,8 @@ }, "property": { "type": "StringLiteral", - "start": 20215, - "end": 20231, + "start": 20204, + "end": 20220, "loc": { "start": { "line": 489, @@ -43871,8 +43871,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 20234, - "end": 20362, + "start": 20223, + "end": 20351, "loc": { "start": { "line": 489, @@ -43886,8 +43886,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 20252, - "end": 20293, + "start": 20241, + "end": 20282, "loc": { "start": { "line": 490, @@ -43900,8 +43900,8 @@ }, "expression": { "type": "CallExpression", - "start": 20252, - "end": 20292, + "start": 20241, + "end": 20281, "loc": { "start": { "line": 490, @@ -43914,8 +43914,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20252, - "end": 20260, + "start": 20241, + "end": 20249, "loc": { "start": { "line": 490, @@ -43928,8 +43928,8 @@ }, "object": { "type": "Identifier", - "start": 20252, - "end": 20255, + "start": 20241, + "end": 20244, "loc": { "start": { "line": 490, @@ -43945,8 +43945,8 @@ }, "property": { "type": "Identifier", - "start": 20256, - "end": 20260, + "start": 20245, + "end": 20249, "loc": { "start": { "line": 490, @@ -43965,8 +43965,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20261, - "end": 20291, + "start": 20250, + "end": 20280, "loc": { "start": { "line": 490, @@ -43988,8 +43988,8 @@ }, { "type": "ExpressionStatement", - "start": 20310, - "end": 20348, + "start": 20299, + "end": 20337, "loc": { "start": { "line": 491, @@ -44002,8 +44002,8 @@ }, "expression": { "type": "CallExpression", - "start": 20310, - "end": 20347, + "start": 20299, + "end": 20336, "loc": { "start": { "line": 491, @@ -44016,8 +44016,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20310, - "end": 20318, + "start": 20299, + "end": 20307, "loc": { "start": { "line": 491, @@ -44030,8 +44030,8 @@ }, "object": { "type": "Identifier", - "start": 20310, - "end": 20313, + "start": 20299, + "end": 20302, "loc": { "start": { "line": 491, @@ -44047,8 +44047,8 @@ }, "property": { "type": "Identifier", - "start": 20314, - "end": 20318, + "start": 20303, + "end": 20307, "loc": { "start": { "line": 491, @@ -44067,8 +44067,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20319, - "end": 20346, + "start": 20308, + "end": 20335, "loc": { "start": { "line": 491, @@ -44100,8 +44100,8 @@ }, { "type": "IfStatement", - "start": 20382, - "end": 21040, + "start": 20371, + "end": 21029, "loc": { "start": { "line": 495, @@ -44114,8 +44114,8 @@ }, "test": { "type": "MemberExpression", - "start": 20386, - "end": 20399, + "start": 20375, + "end": 20388, "loc": { "start": { "line": 495, @@ -44128,8 +44128,8 @@ }, "object": { "type": "ThisExpression", - "start": 20386, - "end": 20390, + "start": 20375, + "end": 20379, "loc": { "start": { "line": 495, @@ -44143,8 +44143,8 @@ }, "property": { "type": "Identifier", - "start": 20391, - "end": 20399, + "start": 20380, + "end": 20388, "loc": { "start": { "line": 495, @@ -44162,8 +44162,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 20401, - "end": 21040, + "start": 20390, + "end": 21029, "loc": { "start": { "line": 495, @@ -44177,8 +44177,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 20415, - "end": 20464, + "start": 20404, + "end": 20453, "loc": { "start": { "line": 496, @@ -44191,8 +44191,8 @@ }, "expression": { "type": "CallExpression", - "start": 20415, - "end": 20463, + "start": 20404, + "end": 20452, "loc": { "start": { "line": 496, @@ -44205,8 +44205,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20415, - "end": 20423, + "start": 20404, + "end": 20412, "loc": { "start": { "line": 496, @@ -44219,8 +44219,8 @@ }, "object": { "type": "Identifier", - "start": 20415, - "end": 20418, + "start": 20404, + "end": 20407, "loc": { "start": { "line": 496, @@ -44236,8 +44236,8 @@ }, "property": { "type": "Identifier", - "start": 20419, - "end": 20423, + "start": 20408, + "end": 20412, "loc": { "start": { "line": 496, @@ -44256,8 +44256,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20424, - "end": 20462, + "start": 20413, + "end": 20451, "loc": { "start": { "line": 496, @@ -44279,8 +44279,8 @@ }, { "type": "ExpressionStatement", - "start": 20477, - "end": 20519, + "start": 20466, + "end": 20508, "loc": { "start": { "line": 497, @@ -44293,8 +44293,8 @@ }, "expression": { "type": "CallExpression", - "start": 20477, - "end": 20518, + "start": 20466, + "end": 20507, "loc": { "start": { "line": 497, @@ -44307,8 +44307,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20477, - "end": 20485, + "start": 20466, + "end": 20474, "loc": { "start": { "line": 497, @@ -44321,8 +44321,8 @@ }, "object": { "type": "Identifier", - "start": 20477, - "end": 20480, + "start": 20466, + "end": 20469, "loc": { "start": { "line": 497, @@ -44338,8 +44338,8 @@ }, "property": { "type": "Identifier", - "start": 20481, - "end": 20485, + "start": 20470, + "end": 20474, "loc": { "start": { "line": 497, @@ -44358,8 +44358,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20486, - "end": 20517, + "start": 20475, + "end": 20506, "loc": { "start": { "line": 497, @@ -44381,8 +44381,8 @@ }, { "type": "ExpressionStatement", - "start": 20533, - "end": 20590, + "start": 20522, + "end": 20579, "loc": { "start": { "line": 499, @@ -44395,8 +44395,8 @@ }, "expression": { "type": "CallExpression", - "start": 20533, - "end": 20589, + "start": 20522, + "end": 20578, "loc": { "start": { "line": 499, @@ -44409,8 +44409,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20533, - "end": 20541, + "start": 20522, + "end": 20530, "loc": { "start": { "line": 499, @@ -44423,8 +44423,8 @@ }, "object": { "type": "Identifier", - "start": 20533, - "end": 20536, + "start": 20522, + "end": 20525, "loc": { "start": { "line": 499, @@ -44440,8 +44440,8 @@ }, "property": { "type": "Identifier", - "start": 20537, - "end": 20541, + "start": 20526, + "end": 20530, "loc": { "start": { "line": 499, @@ -44460,8 +44460,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20542, - "end": 20588, + "start": 20531, + "end": 20577, "loc": { "start": { "line": 499, @@ -44483,8 +44483,8 @@ }, { "type": "ExpressionStatement", - "start": 20603, - "end": 20664, + "start": 20592, + "end": 20653, "loc": { "start": { "line": 500, @@ -44497,8 +44497,8 @@ }, "expression": { "type": "CallExpression", - "start": 20603, - "end": 20663, + "start": 20592, + "end": 20652, "loc": { "start": { "line": 500, @@ -44511,8 +44511,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20603, - "end": 20611, + "start": 20592, + "end": 20600, "loc": { "start": { "line": 500, @@ -44525,8 +44525,8 @@ }, "object": { "type": "Identifier", - "start": 20603, - "end": 20606, + "start": 20592, + "end": 20595, "loc": { "start": { "line": 500, @@ -44542,8 +44542,8 @@ }, "property": { "type": "Identifier", - "start": 20607, - "end": 20611, + "start": 20596, + "end": 20600, "loc": { "start": { "line": 500, @@ -44562,8 +44562,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20612, - "end": 20662, + "start": 20601, + "end": 20651, "loc": { "start": { "line": 500, @@ -44585,8 +44585,8 @@ }, { "type": "ExpressionStatement", - "start": 20677, - "end": 20769, + "start": 20666, + "end": 20758, "loc": { "start": { "line": 501, @@ -44599,8 +44599,8 @@ }, "expression": { "type": "CallExpression", - "start": 20677, - "end": 20768, + "start": 20666, + "end": 20757, "loc": { "start": { "line": 501, @@ -44613,8 +44613,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20677, - "end": 20685, + "start": 20666, + "end": 20674, "loc": { "start": { "line": 501, @@ -44627,8 +44627,8 @@ }, "object": { "type": "Identifier", - "start": 20677, - "end": 20680, + "start": 20666, + "end": 20669, "loc": { "start": { "line": 501, @@ -44644,8 +44644,8 @@ }, "property": { "type": "Identifier", - "start": 20681, - "end": 20685, + "start": 20670, + "end": 20674, "loc": { "start": { "line": 501, @@ -44664,8 +44664,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20686, - "end": 20767, + "start": 20675, + "end": 20756, "loc": { "start": { "line": 501, @@ -44687,8 +44687,8 @@ }, { "type": "ExpressionStatement", - "start": 20782, - "end": 20871, + "start": 20771, + "end": 20860, "loc": { "start": { "line": 502, @@ -44701,8 +44701,8 @@ }, "expression": { "type": "CallExpression", - "start": 20782, - "end": 20870, + "start": 20771, + "end": 20859, "loc": { "start": { "line": 502, @@ -44715,8 +44715,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20782, - "end": 20790, + "start": 20771, + "end": 20779, "loc": { "start": { "line": 502, @@ -44729,8 +44729,8 @@ }, "object": { "type": "Identifier", - "start": 20782, - "end": 20785, + "start": 20771, + "end": 20774, "loc": { "start": { "line": 502, @@ -44746,8 +44746,8 @@ }, "property": { "type": "Identifier", - "start": 20786, - "end": 20790, + "start": 20775, + "end": 20779, "loc": { "start": { "line": 502, @@ -44766,8 +44766,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20791, - "end": 20869, + "start": 20780, + "end": 20858, "loc": { "start": { "line": 502, @@ -44789,8 +44789,8 @@ }, { "type": "ExpressionStatement", - "start": 20885, - "end": 20942, + "start": 20874, + "end": 20931, "loc": { "start": { "line": 504, @@ -44803,8 +44803,8 @@ }, "expression": { "type": "CallExpression", - "start": 20885, - "end": 20941, + "start": 20874, + "end": 20930, "loc": { "start": { "line": 504, @@ -44817,8 +44817,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20885, - "end": 20893, + "start": 20874, + "end": 20882, "loc": { "start": { "line": 504, @@ -44831,8 +44831,8 @@ }, "object": { "type": "Identifier", - "start": 20885, - "end": 20888, + "start": 20874, + "end": 20877, "loc": { "start": { "line": 504, @@ -44848,8 +44848,8 @@ }, "property": { "type": "Identifier", - "start": 20889, - "end": 20893, + "start": 20878, + "end": 20882, "loc": { "start": { "line": 504, @@ -44868,8 +44868,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20894, - "end": 20940, + "start": 20883, + "end": 20929, "loc": { "start": { "line": 504, @@ -44891,8 +44891,8 @@ }, { "type": "ExpressionStatement", - "start": 20955, - "end": 21003, + "start": 20944, + "end": 20992, "loc": { "start": { "line": 505, @@ -44905,8 +44905,8 @@ }, "expression": { "type": "CallExpression", - "start": 20955, - "end": 21002, + "start": 20944, + "end": 20991, "loc": { "start": { "line": 505, @@ -44919,8 +44919,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20955, - "end": 20963, + "start": 20944, + "end": 20952, "loc": { "start": { "line": 505, @@ -44933,8 +44933,8 @@ }, "object": { "type": "Identifier", - "start": 20955, - "end": 20958, + "start": 20944, + "end": 20947, "loc": { "start": { "line": 505, @@ -44950,8 +44950,8 @@ }, "property": { "type": "Identifier", - "start": 20959, - "end": 20963, + "start": 20948, + "end": 20952, "loc": { "start": { "line": 505, @@ -44970,8 +44970,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20964, - "end": 21001, + "start": 20953, + "end": 20990, "loc": { "start": { "line": 505, @@ -44993,8 +44993,8 @@ }, { "type": "ExpressionStatement", - "start": 21016, - "end": 21030, + "start": 21005, + "end": 21019, "loc": { "start": { "line": 506, @@ -45007,8 +45007,8 @@ }, "expression": { "type": "CallExpression", - "start": 21016, - "end": 21029, + "start": 21005, + "end": 21018, "loc": { "start": { "line": 506, @@ -45021,8 +45021,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21016, - "end": 21024, + "start": 21005, + "end": 21013, "loc": { "start": { "line": 506, @@ -45035,8 +45035,8 @@ }, "object": { "type": "Identifier", - "start": 21016, - "end": 21019, + "start": 21005, + "end": 21008, "loc": { "start": { "line": 506, @@ -45052,8 +45052,8 @@ }, "property": { "type": "Identifier", - "start": 21020, - "end": 21024, + "start": 21009, + "end": 21013, "loc": { "start": { "line": 506, @@ -45072,8 +45072,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 21025, - "end": 21028, + "start": 21014, + "end": 21017, "loc": { "start": { "line": 506, @@ -45100,8 +45100,8 @@ }, { "type": "IfStatement", - "start": 21050, - "end": 21164, + "start": 21039, + "end": 21153, "loc": { "start": { "line": 509, @@ -45114,8 +45114,8 @@ }, "test": { "type": "BinaryExpression", - "start": 21054, - "end": 21091, + "start": 21043, + "end": 21080, "loc": { "start": { "line": 509, @@ -45128,8 +45128,8 @@ }, "left": { "type": "MemberExpression", - "start": 21054, - "end": 21087, + "start": 21043, + "end": 21076, "loc": { "start": { "line": 509, @@ -45142,8 +45142,8 @@ }, "object": { "type": "MemberExpression", - "start": 21054, - "end": 21080, + "start": 21043, + "end": 21069, "loc": { "start": { "line": 509, @@ -45156,8 +45156,8 @@ }, "object": { "type": "Identifier", - "start": 21054, - "end": 21065, + "start": 21043, + "end": 21054, "loc": { "start": { "line": 509, @@ -45173,8 +45173,8 @@ }, "property": { "type": "Identifier", - "start": 21066, - "end": 21080, + "start": 21055, + "end": 21069, "loc": { "start": { "line": 509, @@ -45192,8 +45192,8 @@ }, "property": { "type": "Identifier", - "start": 21081, - "end": 21087, + "start": 21070, + "end": 21076, "loc": { "start": { "line": 509, @@ -45212,8 +45212,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 21090, - "end": 21091, + "start": 21079, + "end": 21080, "loc": { "start": { "line": 509, @@ -45233,8 +45233,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 21093, - "end": 21164, + "start": 21082, + "end": 21153, "loc": { "start": { "line": 509, @@ -45248,8 +45248,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 21107, - "end": 21154, + "start": 21096, + "end": 21143, "loc": { "start": { "line": 510, @@ -45262,8 +45262,8 @@ }, "expression": { "type": "CallExpression", - "start": 21107, - "end": 21153, + "start": 21096, + "end": 21142, "loc": { "start": { "line": 510, @@ -45276,8 +45276,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21107, - "end": 21115, + "start": 21096, + "end": 21104, "loc": { "start": { "line": 510, @@ -45290,8 +45290,8 @@ }, "object": { "type": "Identifier", - "start": 21107, - "end": 21110, + "start": 21096, + "end": 21099, "loc": { "start": { "line": 510, @@ -45307,8 +45307,8 @@ }, "property": { "type": "Identifier", - "start": 21111, - "end": 21115, + "start": 21100, + "end": 21104, "loc": { "start": { "line": 510, @@ -45327,8 +45327,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 21116, - "end": 21152, + "start": 21105, + "end": 21141, "loc": { "start": { "line": 510, @@ -45355,8 +45355,8 @@ }, { "type": "IfStatement", - "start": 21174, - "end": 21278, + "start": 21163, + "end": 21267, "loc": { "start": { "line": 513, @@ -45369,8 +45369,8 @@ }, "test": { "type": "BinaryExpression", - "start": 21178, - "end": 21210, + "start": 21167, + "end": 21199, "loc": { "start": { "line": 513, @@ -45383,8 +45383,8 @@ }, "left": { "type": "MemberExpression", - "start": 21178, - "end": 21206, + "start": 21167, + "end": 21195, "loc": { "start": { "line": 513, @@ -45397,8 +45397,8 @@ }, "object": { "type": "MemberExpression", - "start": 21178, - "end": 21199, + "start": 21167, + "end": 21188, "loc": { "start": { "line": 513, @@ -45411,8 +45411,8 @@ }, "object": { "type": "Identifier", - "start": 21178, - "end": 21189, + "start": 21167, + "end": 21178, "loc": { "start": { "line": 513, @@ -45428,8 +45428,8 @@ }, "property": { "type": "Identifier", - "start": 21190, - "end": 21199, + "start": 21179, + "end": 21188, "loc": { "start": { "line": 513, @@ -45447,8 +45447,8 @@ }, "property": { "type": "Identifier", - "start": 21200, - "end": 21206, + "start": 21189, + "end": 21195, "loc": { "start": { "line": 513, @@ -45467,8 +45467,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 21209, - "end": 21210, + "start": 21198, + "end": 21199, "loc": { "start": { "line": 513, @@ -45488,8 +45488,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 21212, - "end": 21278, + "start": 21201, + "end": 21267, "loc": { "start": { "line": 513, @@ -45503,8 +45503,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 21226, - "end": 21268, + "start": 21215, + "end": 21257, "loc": { "start": { "line": 514, @@ -45517,8 +45517,8 @@ }, "expression": { "type": "CallExpression", - "start": 21226, - "end": 21267, + "start": 21215, + "end": 21256, "loc": { "start": { "line": 514, @@ -45531,8 +45531,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21226, - "end": 21234, + "start": 21215, + "end": 21223, "loc": { "start": { "line": 514, @@ -45545,8 +45545,8 @@ }, "object": { "type": "Identifier", - "start": 21226, - "end": 21229, + "start": 21215, + "end": 21218, "loc": { "start": { "line": 514, @@ -45562,8 +45562,8 @@ }, "property": { "type": "Identifier", - "start": 21230, - "end": 21234, + "start": 21219, + "end": 21223, "loc": { "start": { "line": 514, @@ -45582,8 +45582,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 21235, - "end": 21266, + "start": 21224, + "end": 21255, "loc": { "start": { "line": 514, @@ -45610,8 +45610,8 @@ }, { "type": "ExpressionStatement", - "start": 21288, - "end": 21327, + "start": 21277, + "end": 21316, "loc": { "start": { "line": 517, @@ -45624,8 +45624,8 @@ }, "expression": { "type": "CallExpression", - "start": 21288, - "end": 21326, + "start": 21277, + "end": 21315, "loc": { "start": { "line": 517, @@ -45638,8 +45638,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21288, - "end": 21296, + "start": 21277, + "end": 21285, "loc": { "start": { "line": 517, @@ -45652,8 +45652,8 @@ }, "object": { "type": "Identifier", - "start": 21288, - "end": 21291, + "start": 21277, + "end": 21280, "loc": { "start": { "line": 517, @@ -45669,8 +45669,8 @@ }, "property": { "type": "Identifier", - "start": 21292, - "end": 21296, + "start": 21281, + "end": 21285, "loc": { "start": { "line": 517, @@ -45689,8 +45689,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 21297, - "end": 21325, + "start": 21286, + "end": 21314, "loc": { "start": { "line": 517, @@ -45712,8 +45712,8 @@ }, { "type": "ForStatement", - "start": 21337, - "end": 22012, + "start": 21326, + "end": 22001, "loc": { "start": { "line": 519, @@ -45726,8 +45726,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 21342, - "end": 21384, + "start": 21331, + "end": 21373, "loc": { "start": { "line": 519, @@ -45741,8 +45741,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 21346, - "end": 21351, + "start": 21335, + "end": 21340, "loc": { "start": { "line": 519, @@ -45755,8 +45755,8 @@ }, "id": { "type": "Identifier", - "start": 21346, - "end": 21347, + "start": 21335, + "end": 21336, "loc": { "start": { "line": 519, @@ -45772,8 +45772,8 @@ }, "init": { "type": "NumericLiteral", - "start": 21350, - "end": 21351, + "start": 21339, + "end": 21340, "loc": { "start": { "line": 519, @@ -45793,8 +45793,8 @@ }, { "type": "VariableDeclarator", - "start": 21353, - "end": 21384, + "start": 21342, + "end": 21373, "loc": { "start": { "line": 519, @@ -45807,8 +45807,8 @@ }, "id": { "type": "Identifier", - "start": 21353, - "end": 21356, + "start": 21342, + "end": 21345, "loc": { "start": { "line": 519, @@ -45824,8 +45824,8 @@ }, "init": { "type": "MemberExpression", - "start": 21359, - "end": 21384, + "start": 21348, + "end": 21373, "loc": { "start": { "line": 519, @@ -45838,8 +45838,8 @@ }, "object": { "type": "MemberExpression", - "start": 21359, - "end": 21377, + "start": 21348, + "end": 21366, "loc": { "start": { "line": 519, @@ -45852,8 +45852,8 @@ }, "object": { "type": "Identifier", - "start": 21359, - "end": 21370, + "start": 21348, + "end": 21359, "loc": { "start": { "line": 519, @@ -45869,8 +45869,8 @@ }, "property": { "type": "Identifier", - "start": 21371, - "end": 21377, + "start": 21360, + "end": 21366, "loc": { "start": { "line": 519, @@ -45888,8 +45888,8 @@ }, "property": { "type": "Identifier", - "start": 21378, - "end": 21384, + "start": 21367, + "end": 21373, "loc": { "start": { "line": 519, @@ -45911,8 +45911,8 @@ }, "test": { "type": "BinaryExpression", - "start": 21386, - "end": 21393, + "start": 21375, + "end": 21382, "loc": { "start": { "line": 519, @@ -45925,8 +45925,8 @@ }, "left": { "type": "Identifier", - "start": 21386, - "end": 21387, + "start": 21375, + "end": 21376, "loc": { "start": { "line": 519, @@ -45943,8 +45943,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 21390, - "end": 21393, + "start": 21379, + "end": 21382, "loc": { "start": { "line": 519, @@ -45961,8 +45961,8 @@ }, "update": { "type": "UpdateExpression", - "start": 21395, - "end": 21398, + "start": 21384, + "end": 21387, "loc": { "start": { "line": 519, @@ -45977,8 +45977,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 21395, - "end": 21396, + "start": 21384, + "end": 21385, "loc": { "start": { "line": 519, @@ -45995,8 +45995,8 @@ }, "body": { "type": "BlockStatement", - "start": 21400, - "end": 22012, + "start": 21389, + "end": 22001, "loc": { "start": { "line": 519, @@ -46010,8 +46010,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 21414, - "end": 21450, + "start": 21403, + "end": 21439, "loc": { "start": { "line": 520, @@ -46025,8 +46025,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 21420, - "end": 21449, + "start": 21409, + "end": 21438, "loc": { "start": { "line": 520, @@ -46039,8 +46039,8 @@ }, "id": { "type": "Identifier", - "start": 21420, - "end": 21425, + "start": 21409, + "end": 21414, "loc": { "start": { "line": 520, @@ -46056,8 +46056,8 @@ }, "init": { "type": "MemberExpression", - "start": 21428, - "end": 21449, + "start": 21417, + "end": 21438, "loc": { "start": { "line": 520, @@ -46070,8 +46070,8 @@ }, "object": { "type": "MemberExpression", - "start": 21428, - "end": 21446, + "start": 21417, + "end": 21435, "loc": { "start": { "line": 520, @@ -46084,8 +46084,8 @@ }, "object": { "type": "Identifier", - "start": 21428, - "end": 21439, + "start": 21417, + "end": 21428, "loc": { "start": { "line": 520, @@ -46101,8 +46101,8 @@ }, "property": { "type": "Identifier", - "start": 21440, - "end": 21446, + "start": 21429, + "end": 21435, "loc": { "start": { "line": 520, @@ -46120,8 +46120,8 @@ }, "property": { "type": "Identifier", - "start": 21447, - "end": 21448, + "start": 21436, + "end": 21437, "loc": { "start": { "line": 520, @@ -46143,8 +46143,8 @@ }, { "type": "IfStatement", - "start": 21463, - "end": 21534, + "start": 21452, + "end": 21523, "loc": { "start": { "line": 521, @@ -46157,8 +46157,8 @@ }, "test": { "type": "BinaryExpression", - "start": 21467, - "end": 21491, + "start": 21456, + "end": 21480, "loc": { "start": { "line": 521, @@ -46171,8 +46171,8 @@ }, "left": { "type": "MemberExpression", - "start": 21467, - "end": 21477, + "start": 21456, + "end": 21466, "loc": { "start": { "line": 521, @@ -46185,8 +46185,8 @@ }, "object": { "type": "Identifier", - "start": 21467, - "end": 21472, + "start": 21456, + "end": 21461, "loc": { "start": { "line": 521, @@ -46202,8 +46202,8 @@ }, "property": { "type": "Identifier", - "start": 21473, - "end": 21477, + "start": 21462, + "end": 21466, "loc": { "start": { "line": 521, @@ -46222,8 +46222,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 21482, - "end": 21491, + "start": 21471, + "end": 21480, "loc": { "start": { "line": 521, @@ -46243,8 +46243,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 21493, - "end": 21534, + "start": 21482, + "end": 21523, "loc": { "start": { "line": 521, @@ -46258,8 +46258,8 @@ "body": [ { "type": "ContinueStatement", - "start": 21511, - "end": 21520, + "start": 21500, + "end": 21509, "loc": { "start": { "line": 522, @@ -46279,8 +46279,8 @@ }, { "type": "ExpressionStatement", - "start": 21547, - "end": 21593, + "start": 21536, + "end": 21582, "loc": { "start": { "line": 524, @@ -46293,8 +46293,8 @@ }, "expression": { "type": "CallExpression", - "start": 21547, - "end": 21592, + "start": 21536, + "end": 21581, "loc": { "start": { "line": 524, @@ -46307,8 +46307,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21547, - "end": 21555, + "start": 21536, + "end": 21544, "loc": { "start": { "line": 524, @@ -46321,8 +46321,8 @@ }, "object": { "type": "Identifier", - "start": 21547, - "end": 21550, + "start": 21536, + "end": 21539, "loc": { "start": { "line": 524, @@ -46338,8 +46338,8 @@ }, "property": { "type": "Identifier", - "start": 21551, - "end": 21555, + "start": 21540, + "end": 21544, "loc": { "start": { "line": 524, @@ -46358,8 +46358,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 21556, - "end": 21591, + "start": 21545, + "end": 21580, "loc": { "start": { "line": 524, @@ -46372,8 +46372,8 @@ }, "left": { "type": "BinaryExpression", - "start": 21556, - "end": 21585, + "start": 21545, + "end": 21574, "loc": { "start": { "line": 524, @@ -46386,8 +46386,8 @@ }, "left": { "type": "StringLiteral", - "start": 21556, - "end": 21581, + "start": 21545, + "end": 21570, "loc": { "start": { "line": 524, @@ -46407,8 +46407,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 21584, - "end": 21585, + "start": 21573, + "end": 21574, "loc": { "start": { "line": 524, @@ -46426,8 +46426,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 21588, - "end": 21591, + "start": 21577, + "end": 21580, "loc": { "start": { "line": 524, @@ -46450,8 +46450,8 @@ }, { "type": "IfStatement", - "start": 21606, - "end": 21708, + "start": 21595, + "end": 21697, "loc": { "start": { "line": 525, @@ -46464,8 +46464,8 @@ }, "test": { "type": "BinaryExpression", - "start": 21610, - "end": 21630, + "start": 21599, + "end": 21619, "loc": { "start": { "line": 525, @@ -46478,8 +46478,8 @@ }, "left": { "type": "MemberExpression", - "start": 21610, - "end": 21620, + "start": 21599, + "end": 21609, "loc": { "start": { "line": 525, @@ -46492,8 +46492,8 @@ }, "object": { "type": "Identifier", - "start": 21610, - "end": 21615, + "start": 21599, + "end": 21604, "loc": { "start": { "line": 525, @@ -46509,8 +46509,8 @@ }, "property": { "type": "Identifier", - "start": 21616, - "end": 21620, + "start": 21605, + "end": 21609, "loc": { "start": { "line": 525, @@ -46529,8 +46529,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 21625, - "end": 21630, + "start": 21614, + "end": 21619, "loc": { "start": { "line": 525, @@ -46550,8 +46550,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 21632, - "end": 21708, + "start": 21621, + "end": 21697, "loc": { "start": { "line": 525, @@ -46565,8 +46565,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 21650, - "end": 21694, + "start": 21639, + "end": 21683, "loc": { "start": { "line": 526, @@ -46579,8 +46579,8 @@ }, "expression": { "type": "CallExpression", - "start": 21650, - "end": 21693, + "start": 21639, + "end": 21682, "loc": { "start": { "line": 526, @@ -46593,8 +46593,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21650, - "end": 21658, + "start": 21639, + "end": 21647, "loc": { "start": { "line": 526, @@ -46607,8 +46607,8 @@ }, "object": { "type": "Identifier", - "start": 21650, - "end": 21653, + "start": 21639, + "end": 21642, "loc": { "start": { "line": 526, @@ -46624,8 +46624,8 @@ }, "property": { "type": "Identifier", - "start": 21654, - "end": 21658, + "start": 21643, + "end": 21647, "loc": { "start": { "line": 526, @@ -46644,8 +46644,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 21659, - "end": 21692, + "start": 21648, + "end": 21681, "loc": { "start": { "line": 526, @@ -46658,8 +46658,8 @@ }, "left": { "type": "BinaryExpression", - "start": 21659, - "end": 21686, + "start": 21648, + "end": 21675, "loc": { "start": { "line": 526, @@ -46672,8 +46672,8 @@ }, "left": { "type": "StringLiteral", - "start": 21659, - "end": 21682, + "start": 21648, + "end": 21671, "loc": { "start": { "line": 526, @@ -46693,8 +46693,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 21685, - "end": 21686, + "start": 21674, + "end": 21675, "loc": { "start": { "line": 526, @@ -46712,8 +46712,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 21689, - "end": 21692, + "start": 21678, + "end": 21681, "loc": { "start": { "line": 526, @@ -46741,8 +46741,8 @@ }, { "type": "IfStatement", - "start": 21721, - "end": 21825, + "start": 21710, + "end": 21814, "loc": { "start": { "line": 528, @@ -46755,8 +46755,8 @@ }, "test": { "type": "BinaryExpression", - "start": 21725, - "end": 21747, + "start": 21714, + "end": 21736, "loc": { "start": { "line": 528, @@ -46769,8 +46769,8 @@ }, "left": { "type": "MemberExpression", - "start": 21725, - "end": 21735, + "start": 21714, + "end": 21724, "loc": { "start": { "line": 528, @@ -46783,8 +46783,8 @@ }, "object": { "type": "Identifier", - "start": 21725, - "end": 21730, + "start": 21714, + "end": 21719, "loc": { "start": { "line": 528, @@ -46800,8 +46800,8 @@ }, "property": { "type": "Identifier", - "start": 21731, - "end": 21735, + "start": 21720, + "end": 21724, "loc": { "start": { "line": 528, @@ -46820,8 +46820,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 21740, - "end": 21747, + "start": 21729, + "end": 21736, "loc": { "start": { "line": 528, @@ -46841,8 +46841,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 21749, - "end": 21825, + "start": 21738, + "end": 21814, "loc": { "start": { "line": 528, @@ -46856,8 +46856,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 21767, - "end": 21811, + "start": 21756, + "end": 21800, "loc": { "start": { "line": 529, @@ -46870,8 +46870,8 @@ }, "expression": { "type": "CallExpression", - "start": 21767, - "end": 21810, + "start": 21756, + "end": 21799, "loc": { "start": { "line": 529, @@ -46884,8 +46884,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21767, - "end": 21775, + "start": 21756, + "end": 21764, "loc": { "start": { "line": 529, @@ -46898,8 +46898,8 @@ }, "object": { "type": "Identifier", - "start": 21767, - "end": 21770, + "start": 21756, + "end": 21759, "loc": { "start": { "line": 529, @@ -46915,8 +46915,8 @@ }, "property": { "type": "Identifier", - "start": 21771, - "end": 21775, + "start": 21760, + "end": 21764, "loc": { "start": { "line": 529, @@ -46935,8 +46935,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 21776, - "end": 21809, + "start": 21765, + "end": 21798, "loc": { "start": { "line": 529, @@ -46949,8 +46949,8 @@ }, "left": { "type": "BinaryExpression", - "start": 21776, - "end": 21803, + "start": 21765, + "end": 21792, "loc": { "start": { "line": 529, @@ -46963,8 +46963,8 @@ }, "left": { "type": "StringLiteral", - "start": 21776, - "end": 21799, + "start": 21765, + "end": 21788, "loc": { "start": { "line": 529, @@ -46984,8 +46984,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 21802, - "end": 21803, + "start": 21791, + "end": 21792, "loc": { "start": { "line": 529, @@ -47003,8 +47003,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 21806, - "end": 21809, + "start": 21795, + "end": 21798, "loc": { "start": { "line": 529, @@ -47032,8 +47032,8 @@ }, { "type": "IfStatement", - "start": 21838, - "end": 22002, + "start": 21827, + "end": 21991, "loc": { "start": { "line": 531, @@ -47046,8 +47046,8 @@ }, "test": { "type": "BinaryExpression", - "start": 21842, - "end": 21863, + "start": 21831, + "end": 21852, "loc": { "start": { "line": 531, @@ -47060,8 +47060,8 @@ }, "left": { "type": "MemberExpression", - "start": 21842, - "end": 21852, + "start": 21831, + "end": 21841, "loc": { "start": { "line": 531, @@ -47074,8 +47074,8 @@ }, "object": { "type": "Identifier", - "start": 21842, - "end": 21847, + "start": 21831, + "end": 21836, "loc": { "start": { "line": 531, @@ -47091,8 +47091,8 @@ }, "property": { "type": "Identifier", - "start": 21848, - "end": 21852, + "start": 21837, + "end": 21841, "loc": { "start": { "line": 531, @@ -47111,8 +47111,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 21857, - "end": 21863, + "start": 21846, + "end": 21852, "loc": { "start": { "line": 531, @@ -47132,8 +47132,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 21865, - "end": 22002, + "start": 21854, + "end": 21991, "loc": { "start": { "line": 531, @@ -47147,8 +47147,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 21883, - "end": 21927, + "start": 21872, + "end": 21916, "loc": { "start": { "line": 532, @@ -47161,8 +47161,8 @@ }, "expression": { "type": "CallExpression", - "start": 21883, - "end": 21926, + "start": 21872, + "end": 21915, "loc": { "start": { "line": 532, @@ -47175,8 +47175,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21883, - "end": 21891, + "start": 21872, + "end": 21880, "loc": { "start": { "line": 532, @@ -47189,8 +47189,8 @@ }, "object": { "type": "Identifier", - "start": 21883, - "end": 21886, + "start": 21872, + "end": 21875, "loc": { "start": { "line": 532, @@ -47206,8 +47206,8 @@ }, "property": { "type": "Identifier", - "start": 21887, - "end": 21891, + "start": 21876, + "end": 21880, "loc": { "start": { "line": 532, @@ -47226,8 +47226,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 21892, - "end": 21925, + "start": 21881, + "end": 21914, "loc": { "start": { "line": 532, @@ -47240,8 +47240,8 @@ }, "left": { "type": "BinaryExpression", - "start": 21892, - "end": 21919, + "start": 21881, + "end": 21908, "loc": { "start": { "line": 532, @@ -47254,8 +47254,8 @@ }, "left": { "type": "StringLiteral", - "start": 21892, - "end": 21915, + "start": 21881, + "end": 21904, "loc": { "start": { "line": 532, @@ -47275,8 +47275,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 21918, - "end": 21919, + "start": 21907, + "end": 21908, "loc": { "start": { "line": 532, @@ -47294,8 +47294,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 21922, - "end": 21925, + "start": 21911, + "end": 21914, "loc": { "start": { "line": 532, @@ -47318,8 +47318,8 @@ }, { "type": "ExpressionStatement", - "start": 21944, - "end": 21988, + "start": 21933, + "end": 21977, "loc": { "start": { "line": 533, @@ -47332,8 +47332,8 @@ }, "expression": { "type": "CallExpression", - "start": 21944, - "end": 21987, + "start": 21933, + "end": 21976, "loc": { "start": { "line": 533, @@ -47346,8 +47346,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21944, - "end": 21952, + "start": 21933, + "end": 21941, "loc": { "start": { "line": 533, @@ -47360,8 +47360,8 @@ }, "object": { "type": "Identifier", - "start": 21944, - "end": 21947, + "start": 21933, + "end": 21936, "loc": { "start": { "line": 533, @@ -47377,8 +47377,8 @@ }, "property": { "type": "Identifier", - "start": 21948, - "end": 21952, + "start": 21937, + "end": 21941, "loc": { "start": { "line": 533, @@ -47397,8 +47397,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 21953, - "end": 21986, + "start": 21942, + "end": 21975, "loc": { "start": { "line": 533, @@ -47411,8 +47411,8 @@ }, "left": { "type": "BinaryExpression", - "start": 21953, - "end": 21980, + "start": 21942, + "end": 21969, "loc": { "start": { "line": 533, @@ -47425,8 +47425,8 @@ }, "left": { "type": "StringLiteral", - "start": 21953, - "end": 21976, + "start": 21942, + "end": 21965, "loc": { "start": { "line": 533, @@ -47446,8 +47446,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 21979, - "end": 21980, + "start": 21968, + "end": 21969, "loc": { "start": { "line": 533, @@ -47465,8 +47465,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 21983, - "end": 21986, + "start": 21972, + "end": 21975, "loc": { "start": { "line": 533, @@ -47498,8 +47498,8 @@ }, { "type": "ExpressionStatement", - "start": 22022, - "end": 22061, + "start": 22011, + "end": 22050, "loc": { "start": { "line": 537, @@ -47512,8 +47512,8 @@ }, "expression": { "type": "CallExpression", - "start": 22022, - "end": 22060, + "start": 22011, + "end": 22049, "loc": { "start": { "line": 537, @@ -47526,8 +47526,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22022, - "end": 22030, + "start": 22011, + "end": 22019, "loc": { "start": { "line": 537, @@ -47540,8 +47540,8 @@ }, "object": { "type": "Identifier", - "start": 22022, - "end": 22025, + "start": 22011, + "end": 22014, "loc": { "start": { "line": 537, @@ -47557,8 +47557,8 @@ }, "property": { "type": "Identifier", - "start": 22026, - "end": 22030, + "start": 22015, + "end": 22019, "loc": { "start": { "line": 537, @@ -47577,8 +47577,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22031, - "end": 22059, + "start": 22020, + "end": 22048, "loc": { "start": { "line": 537, @@ -47600,8 +47600,8 @@ }, { "type": "ExpressionStatement", - "start": 22070, - "end": 22121, + "start": 22059, + "end": 22110, "loc": { "start": { "line": 538, @@ -47614,8 +47614,8 @@ }, "expression": { "type": "CallExpression", - "start": 22070, - "end": 22120, + "start": 22059, + "end": 22109, "loc": { "start": { "line": 538, @@ -47628,8 +47628,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22070, - "end": 22078, + "start": 22059, + "end": 22067, "loc": { "start": { "line": 538, @@ -47642,8 +47642,8 @@ }, "object": { "type": "Identifier", - "start": 22070, - "end": 22073, + "start": 22059, + "end": 22062, "loc": { "start": { "line": 538, @@ -47659,8 +47659,8 @@ }, "property": { "type": "Identifier", - "start": 22074, - "end": 22078, + "start": 22063, + "end": 22067, "loc": { "start": { "line": 538, @@ -47679,8 +47679,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22079, - "end": 22119, + "start": 22068, + "end": 22108, "loc": { "start": { "line": 538, @@ -47702,8 +47702,8 @@ }, { "type": "ExpressionStatement", - "start": 22130, - "end": 22158, + "start": 22119, + "end": 22147, "loc": { "start": { "line": 539, @@ -47716,8 +47716,8 @@ }, "expression": { "type": "CallExpression", - "start": 22130, - "end": 22157, + "start": 22119, + "end": 22146, "loc": { "start": { "line": 539, @@ -47730,8 +47730,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22130, - "end": 22138, + "start": 22119, + "end": 22127, "loc": { "start": { "line": 539, @@ -47744,8 +47744,8 @@ }, "object": { "type": "Identifier", - "start": 22130, - "end": 22133, + "start": 22119, + "end": 22122, "loc": { "start": { "line": 539, @@ -47761,8 +47761,8 @@ }, "property": { "type": "Identifier", - "start": 22134, - "end": 22138, + "start": 22123, + "end": 22127, "loc": { "start": { "line": 539, @@ -47781,8 +47781,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22139, - "end": 22156, + "start": 22128, + "end": 22145, "loc": { "start": { "line": 539, @@ -47804,8 +47804,8 @@ }, { "type": "ExpressionStatement", - "start": 22167, - "end": 22181, + "start": 22156, + "end": 22170, "loc": { "start": { "line": 540, @@ -47818,8 +47818,8 @@ }, "expression": { "type": "CallExpression", - "start": 22167, - "end": 22180, + "start": 22156, + "end": 22169, "loc": { "start": { "line": 540, @@ -47832,8 +47832,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22167, - "end": 22175, + "start": 22156, + "end": 22164, "loc": { "start": { "line": 540, @@ -47846,8 +47846,8 @@ }, "object": { "type": "Identifier", - "start": 22167, - "end": 22170, + "start": 22156, + "end": 22159, "loc": { "start": { "line": 540, @@ -47863,8 +47863,8 @@ }, "property": { "type": "Identifier", - "start": 22171, - "end": 22175, + "start": 22160, + "end": 22164, "loc": { "start": { "line": 540, @@ -47883,8 +47883,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22176, - "end": 22179, + "start": 22165, + "end": 22168, "loc": { "start": { "line": 540, @@ -47906,8 +47906,8 @@ }, { "type": "ExpressionStatement", - "start": 22190, - "end": 22239, + "start": 22179, + "end": 22228, "loc": { "start": { "line": 541, @@ -47920,8 +47920,8 @@ }, "expression": { "type": "CallExpression", - "start": 22190, - "end": 22238, + "start": 22179, + "end": 22227, "loc": { "start": { "line": 541, @@ -47934,8 +47934,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22190, - "end": 22198, + "start": 22179, + "end": 22187, "loc": { "start": { "line": 541, @@ -47948,8 +47948,8 @@ }, "object": { "type": "Identifier", - "start": 22190, - "end": 22193, + "start": 22179, + "end": 22182, "loc": { "start": { "line": 541, @@ -47965,8 +47965,8 @@ }, "property": { "type": "Identifier", - "start": 22194, - "end": 22198, + "start": 22183, + "end": 22187, "loc": { "start": { "line": 541, @@ -47985,8 +47985,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22199, - "end": 22237, + "start": 22188, + "end": 22226, "loc": { "start": { "line": 541, @@ -48008,8 +48008,8 @@ }, { "type": "ExpressionStatement", - "start": 22248, - "end": 22441, + "start": 22237, + "end": 22430, "loc": { "start": { "line": 542, @@ -48022,8 +48022,8 @@ }, "expression": { "type": "CallExpression", - "start": 22248, - "end": 22440, + "start": 22237, + "end": 22429, "loc": { "start": { "line": 542, @@ -48036,8 +48036,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22248, - "end": 22256, + "start": 22237, + "end": 22245, "loc": { "start": { "line": 542, @@ -48050,8 +48050,8 @@ }, "object": { "type": "Identifier", - "start": 22248, - "end": 22251, + "start": 22237, + "end": 22240, "loc": { "start": { "line": 542, @@ -48067,8 +48067,8 @@ }, "property": { "type": "Identifier", - "start": 22252, - "end": 22256, + "start": 22241, + "end": 22245, "loc": { "start": { "line": 542, @@ -48087,8 +48087,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22257, - "end": 22439, + "start": 22246, + "end": 22428, "loc": { "start": { "line": 542, @@ -48110,8 +48110,8 @@ }, { "type": "ExpressionStatement", - "start": 22450, - "end": 22464, + "start": 22439, + "end": 22453, "loc": { "start": { "line": 543, @@ -48124,8 +48124,8 @@ }, "expression": { "type": "CallExpression", - "start": 22450, - "end": 22463, + "start": 22439, + "end": 22452, "loc": { "start": { "line": 543, @@ -48138,8 +48138,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22450, - "end": 22458, + "start": 22439, + "end": 22447, "loc": { "start": { "line": 543, @@ -48152,8 +48152,8 @@ }, "object": { "type": "Identifier", - "start": 22450, - "end": 22453, + "start": 22439, + "end": 22442, "loc": { "start": { "line": 543, @@ -48169,8 +48169,8 @@ }, "property": { "type": "Identifier", - "start": 22454, - "end": 22458, + "start": 22443, + "end": 22447, "loc": { "start": { "line": 543, @@ -48189,8 +48189,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22459, - "end": 22462, + "start": 22448, + "end": 22451, "loc": { "start": { "line": 543, @@ -48212,8 +48212,8 @@ }, { "type": "ExpressionStatement", - "start": 22473, - "end": 22522, + "start": 22462, + "end": 22511, "loc": { "start": { "line": 544, @@ -48226,8 +48226,8 @@ }, "expression": { "type": "CallExpression", - "start": 22473, - "end": 22521, + "start": 22462, + "end": 22510, "loc": { "start": { "line": 544, @@ -48240,8 +48240,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22473, - "end": 22481, + "start": 22462, + "end": 22470, "loc": { "start": { "line": 544, @@ -48254,8 +48254,8 @@ }, "object": { "type": "Identifier", - "start": 22473, - "end": 22476, + "start": 22462, + "end": 22465, "loc": { "start": { "line": 544, @@ -48271,8 +48271,8 @@ }, "property": { "type": "Identifier", - "start": 22477, - "end": 22481, + "start": 22466, + "end": 22470, "loc": { "start": { "line": 544, @@ -48291,8 +48291,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22482, - "end": 22520, + "start": 22471, + "end": 22509, "loc": { "start": { "line": 544, @@ -48314,8 +48314,8 @@ }, { "type": "ExpressionStatement", - "start": 22531, - "end": 22608, + "start": 22520, + "end": 22597, "loc": { "start": { "line": 545, @@ -48328,8 +48328,8 @@ }, "expression": { "type": "CallExpression", - "start": 22531, - "end": 22607, + "start": 22520, + "end": 22596, "loc": { "start": { "line": 545, @@ -48342,8 +48342,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22531, - "end": 22539, + "start": 22520, + "end": 22528, "loc": { "start": { "line": 545, @@ -48356,8 +48356,8 @@ }, "object": { "type": "Identifier", - "start": 22531, - "end": 22534, + "start": 22520, + "end": 22523, "loc": { "start": { "line": 545, @@ -48373,8 +48373,8 @@ }, "property": { "type": "Identifier", - "start": 22535, - "end": 22539, + "start": 22524, + "end": 22528, "loc": { "start": { "line": 545, @@ -48393,8 +48393,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22540, - "end": 22606, + "start": 22529, + "end": 22595, "loc": { "start": { "line": 545, @@ -48416,8 +48416,8 @@ }, { "type": "ExpressionStatement", - "start": 22617, - "end": 22631, + "start": 22606, + "end": 22620, "loc": { "start": { "line": 546, @@ -48430,8 +48430,8 @@ }, "expression": { "type": "CallExpression", - "start": 22617, - "end": 22630, + "start": 22606, + "end": 22619, "loc": { "start": { "line": 546, @@ -48444,8 +48444,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22617, - "end": 22625, + "start": 22606, + "end": 22614, "loc": { "start": { "line": 546, @@ -48458,8 +48458,8 @@ }, "object": { "type": "Identifier", - "start": 22617, - "end": 22620, + "start": 22606, + "end": 22609, "loc": { "start": { "line": 546, @@ -48475,8 +48475,8 @@ }, "property": { "type": "Identifier", - "start": 22621, - "end": 22625, + "start": 22610, + "end": 22614, "loc": { "start": { "line": 546, @@ -48495,8 +48495,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22626, - "end": 22629, + "start": 22615, + "end": 22618, "loc": { "start": { "line": 546, @@ -48518,8 +48518,8 @@ }, { "type": "IfStatement", - "start": 22640, - "end": 22876, + "start": 22629, + "end": 22865, "loc": { "start": { "line": 547, @@ -48532,8 +48532,8 @@ }, "test": { "type": "Identifier", - "start": 22644, - "end": 22655, + "start": 22633, + "end": 22644, "loc": { "start": { "line": 547, @@ -48549,8 +48549,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 22657, - "end": 22876, + "start": 22646, + "end": 22865, "loc": { "start": { "line": 547, @@ -48564,8 +48564,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 22671, - "end": 22743, + "start": 22660, + "end": 22732, "loc": { "start": { "line": 548, @@ -48578,8 +48578,8 @@ }, "expression": { "type": "CallExpression", - "start": 22671, - "end": 22742, + "start": 22660, + "end": 22731, "loc": { "start": { "line": 548, @@ -48592,8 +48592,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22671, - "end": 22679, + "start": 22660, + "end": 22668, "loc": { "start": { "line": 548, @@ -48606,8 +48606,8 @@ }, "object": { "type": "Identifier", - "start": 22671, - "end": 22674, + "start": 22660, + "end": 22663, "loc": { "start": { "line": 548, @@ -48623,8 +48623,8 @@ }, "property": { "type": "Identifier", - "start": 22675, - "end": 22679, + "start": 22664, + "end": 22668, "loc": { "start": { "line": 548, @@ -48643,8 +48643,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22680, - "end": 22741, + "start": 22669, + "end": 22730, "loc": { "start": { "line": 548, @@ -48666,8 +48666,8 @@ }, { "type": "ExpressionStatement", - "start": 22756, - "end": 22839, + "start": 22745, + "end": 22828, "loc": { "start": { "line": 549, @@ -48680,8 +48680,8 @@ }, "expression": { "type": "CallExpression", - "start": 22756, - "end": 22838, + "start": 22745, + "end": 22827, "loc": { "start": { "line": 549, @@ -48694,8 +48694,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22756, - "end": 22764, + "start": 22745, + "end": 22753, "loc": { "start": { "line": 549, @@ -48708,8 +48708,8 @@ }, "object": { "type": "Identifier", - "start": 22756, - "end": 22759, + "start": 22745, + "end": 22748, "loc": { "start": { "line": 549, @@ -48725,8 +48725,8 @@ }, "property": { "type": "Identifier", - "start": 22760, - "end": 22764, + "start": 22749, + "end": 22753, "loc": { "start": { "line": 549, @@ -48745,8 +48745,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22765, - "end": 22837, + "start": 22754, + "end": 22826, "loc": { "start": { "line": 549, @@ -48768,8 +48768,8 @@ }, { "type": "ExpressionStatement", - "start": 22852, - "end": 22866, + "start": 22841, + "end": 22855, "loc": { "start": { "line": 550, @@ -48782,8 +48782,8 @@ }, "expression": { "type": "CallExpression", - "start": 22852, - "end": 22865, + "start": 22841, + "end": 22854, "loc": { "start": { "line": 550, @@ -48796,8 +48796,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22852, - "end": 22860, + "start": 22841, + "end": 22849, "loc": { "start": { "line": 550, @@ -48810,8 +48810,8 @@ }, "object": { "type": "Identifier", - "start": 22852, - "end": 22855, + "start": 22841, + "end": 22844, "loc": { "start": { "line": 550, @@ -48827,8 +48827,8 @@ }, "property": { "type": "Identifier", - "start": 22856, - "end": 22860, + "start": 22845, + "end": 22849, "loc": { "start": { "line": 550, @@ -48847,8 +48847,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22861, - "end": 22864, + "start": 22850, + "end": 22853, "loc": { "start": { "line": 550, @@ -48875,8 +48875,8 @@ }, { "type": "IfStatement", - "start": 22886, - "end": 23427, + "start": 22875, + "end": 23416, "loc": { "start": { "line": 553, @@ -48889,8 +48889,8 @@ }, "test": { "type": "Identifier", - "start": 22890, - "end": 22898, + "start": 22879, + "end": 22887, "loc": { "start": { "line": 553, @@ -48906,8 +48906,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 22900, - "end": 23427, + "start": 22889, + "end": 23416, "loc": { "start": { "line": 553, @@ -48921,8 +48921,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 22914, - "end": 22955, + "start": 22903, + "end": 22944, "loc": { "start": { "line": 554, @@ -48935,8 +48935,8 @@ }, "expression": { "type": "CallExpression", - "start": 22914, - "end": 22954, + "start": 22903, + "end": 22943, "loc": { "start": { "line": 554, @@ -48949,8 +48949,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22914, - "end": 22922, + "start": 22903, + "end": 22911, "loc": { "start": { "line": 554, @@ -48963,8 +48963,8 @@ }, "object": { "type": "Identifier", - "start": 22914, - "end": 22917, + "start": 22903, + "end": 22906, "loc": { "start": { "line": 554, @@ -48980,8 +48980,8 @@ }, "property": { "type": "Identifier", - "start": 22918, - "end": 22922, + "start": 22907, + "end": 22911, "loc": { "start": { "line": 554, @@ -49000,8 +49000,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22923, - "end": 22953, + "start": 22912, + "end": 22942, "loc": { "start": { "line": 554, @@ -49023,8 +49023,8 @@ }, { "type": "ExpressionStatement", - "start": 22968, - "end": 23002, + "start": 22957, + "end": 22991, "loc": { "start": { "line": 555, @@ -49037,8 +49037,8 @@ }, "expression": { "type": "CallExpression", - "start": 22968, - "end": 23001, + "start": 22957, + "end": 22990, "loc": { "start": { "line": 555, @@ -49051,8 +49051,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22968, - "end": 22976, + "start": 22957, + "end": 22965, "loc": { "start": { "line": 555, @@ -49065,8 +49065,8 @@ }, "object": { "type": "Identifier", - "start": 22968, - "end": 22971, + "start": 22957, + "end": 22960, "loc": { "start": { "line": 555, @@ -49082,8 +49082,8 @@ }, "property": { "type": "Identifier", - "start": 22972, - "end": 22976, + "start": 22961, + "end": 22965, "loc": { "start": { "line": 555, @@ -49102,8 +49102,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22977, - "end": 23000, + "start": 22966, + "end": 22989, "loc": { "start": { "line": 555, @@ -49125,8 +49125,8 @@ }, { "type": "IfStatement", - "start": 23015, - "end": 23105, + "start": 23004, + "end": 23094, "loc": { "start": { "line": 556, @@ -49139,8 +49139,8 @@ }, "test": { "type": "Identifier", - "start": 23019, - "end": 23031, + "start": 23008, + "end": 23020, "loc": { "start": { "line": 556, @@ -49156,8 +49156,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 23033, - "end": 23105, + "start": 23022, + "end": 23094, "loc": { "start": { "line": 556, @@ -49171,8 +49171,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 23051, - "end": 23091, + "start": 23040, + "end": 23080, "loc": { "start": { "line": 557, @@ -49185,8 +49185,8 @@ }, "expression": { "type": "CallExpression", - "start": 23051, - "end": 23090, + "start": 23040, + "end": 23079, "loc": { "start": { "line": 557, @@ -49199,8 +49199,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23051, - "end": 23059, + "start": 23040, + "end": 23048, "loc": { "start": { "line": 557, @@ -49213,8 +49213,8 @@ }, "object": { "type": "Identifier", - "start": 23051, - "end": 23054, + "start": 23040, + "end": 23043, "loc": { "start": { "line": 557, @@ -49230,8 +49230,8 @@ }, "property": { "type": "Identifier", - "start": 23055, - "end": 23059, + "start": 23044, + "end": 23048, "loc": { "start": { "line": 557, @@ -49250,8 +49250,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23060, - "end": 23089, + "start": 23049, + "end": 23078, "loc": { "start": { "line": 557, @@ -49278,8 +49278,8 @@ }, { "type": "ForStatement", - "start": 23118, - "end": 23417, + "start": 23107, + "end": 23406, "loc": { "start": { "line": 559, @@ -49292,8 +49292,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 23123, - "end": 23179, + "start": 23112, + "end": 23168, "loc": { "start": { "line": 559, @@ -49307,8 +49307,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 23127, - "end": 23132, + "start": 23116, + "end": 23121, "loc": { "start": { "line": 559, @@ -49321,8 +49321,8 @@ }, "id": { "type": "Identifier", - "start": 23127, - "end": 23128, + "start": 23116, + "end": 23117, "loc": { "start": { "line": 559, @@ -49338,8 +49338,8 @@ }, "init": { "type": "NumericLiteral", - "start": 23131, - "end": 23132, + "start": 23120, + "end": 23121, "loc": { "start": { "line": 559, @@ -49359,8 +49359,8 @@ }, { "type": "VariableDeclarator", - "start": 23134, - "end": 23179, + "start": 23123, + "end": 23168, "loc": { "start": { "line": 559, @@ -49373,8 +49373,8 @@ }, "id": { "type": "Identifier", - "start": 23134, - "end": 23137, + "start": 23123, + "end": 23126, "loc": { "start": { "line": 559, @@ -49390,8 +49390,8 @@ }, "init": { "type": "MemberExpression", - "start": 23140, - "end": 23179, + "start": 23129, + "end": 23168, "loc": { "start": { "line": 559, @@ -49404,8 +49404,8 @@ }, "object": { "type": "MemberExpression", - "start": 23140, - "end": 23172, + "start": 23129, + "end": 23161, "loc": { "start": { "line": 559, @@ -49418,8 +49418,8 @@ }, "object": { "type": "Identifier", - "start": 23140, - "end": 23158, + "start": 23129, + "end": 23147, "loc": { "start": { "line": 559, @@ -49435,8 +49435,8 @@ }, "property": { "type": "Identifier", - "start": 23159, - "end": 23172, + "start": 23148, + "end": 23161, "loc": { "start": { "line": 559, @@ -49454,8 +49454,8 @@ }, "property": { "type": "Identifier", - "start": 23173, - "end": 23179, + "start": 23162, + "end": 23168, "loc": { "start": { "line": 559, @@ -49477,8 +49477,8 @@ }, "test": { "type": "BinaryExpression", - "start": 23181, - "end": 23188, + "start": 23170, + "end": 23177, "loc": { "start": { "line": 559, @@ -49491,8 +49491,8 @@ }, "left": { "type": "Identifier", - "start": 23181, - "end": 23182, + "start": 23170, + "end": 23171, "loc": { "start": { "line": 559, @@ -49509,8 +49509,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 23185, - "end": 23188, + "start": 23174, + "end": 23177, "loc": { "start": { "line": 559, @@ -49527,8 +49527,8 @@ }, "update": { "type": "UpdateExpression", - "start": 23190, - "end": 23193, + "start": 23179, + "end": 23182, "loc": { "start": { "line": 559, @@ -49543,8 +49543,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 23190, - "end": 23191, + "start": 23179, + "end": 23180, "loc": { "start": { "line": 559, @@ -49561,8 +49561,8 @@ }, "body": { "type": "BlockStatement", - "start": 23195, - "end": 23417, + "start": 23184, + "end": 23406, "loc": { "start": { "line": 559, @@ -49576,8 +49576,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 23213, - "end": 23267, + "start": 23202, + "end": 23256, "loc": { "start": { "line": 560, @@ -49590,8 +49590,8 @@ }, "expression": { "type": "CallExpression", - "start": 23213, - "end": 23266, + "start": 23202, + "end": 23255, "loc": { "start": { "line": 560, @@ -49604,8 +49604,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23213, - "end": 23221, + "start": 23202, + "end": 23210, "loc": { "start": { "line": 560, @@ -49618,8 +49618,8 @@ }, "object": { "type": "Identifier", - "start": 23213, - "end": 23216, + "start": 23202, + "end": 23205, "loc": { "start": { "line": 560, @@ -49635,8 +49635,8 @@ }, "property": { "type": "Identifier", - "start": 23217, - "end": 23221, + "start": 23206, + "end": 23210, "loc": { "start": { "line": 560, @@ -49655,8 +49655,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 23222, - "end": 23265, + "start": 23211, + "end": 23254, "loc": { "start": { "line": 560, @@ -49669,8 +49669,8 @@ }, "left": { "type": "BinaryExpression", - "start": 23222, - "end": 23259, + "start": 23211, + "end": 23248, "loc": { "start": { "line": 560, @@ -49683,8 +49683,8 @@ }, "left": { "type": "StringLiteral", - "start": 23222, - "end": 23255, + "start": 23211, + "end": 23244, "loc": { "start": { "line": 560, @@ -49704,8 +49704,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 23258, - "end": 23259, + "start": 23247, + "end": 23248, "loc": { "start": { "line": 560, @@ -49723,8 +49723,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 23262, - "end": 23265, + "start": 23251, + "end": 23254, "loc": { "start": { "line": 560, @@ -49747,8 +49747,8 @@ }, { "type": "ExpressionStatement", - "start": 23284, - "end": 23335, + "start": 23273, + "end": 23324, "loc": { "start": { "line": 561, @@ -49761,8 +49761,8 @@ }, "expression": { "type": "CallExpression", - "start": 23284, - "end": 23334, + "start": 23273, + "end": 23323, "loc": { "start": { "line": 561, @@ -49775,8 +49775,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23284, - "end": 23292, + "start": 23273, + "end": 23281, "loc": { "start": { "line": 561, @@ -49789,8 +49789,8 @@ }, "object": { "type": "Identifier", - "start": 23284, - "end": 23287, + "start": 23273, + "end": 23276, "loc": { "start": { "line": 561, @@ -49806,8 +49806,8 @@ }, "property": { "type": "Identifier", - "start": 23288, - "end": 23292, + "start": 23277, + "end": 23281, "loc": { "start": { "line": 561, @@ -49826,8 +49826,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 23293, - "end": 23333, + "start": 23282, + "end": 23322, "loc": { "start": { "line": 561, @@ -49840,8 +49840,8 @@ }, "left": { "type": "BinaryExpression", - "start": 23293, - "end": 23327, + "start": 23282, + "end": 23316, "loc": { "start": { "line": 561, @@ -49854,8 +49854,8 @@ }, "left": { "type": "StringLiteral", - "start": 23293, - "end": 23323, + "start": 23282, + "end": 23312, "loc": { "start": { "line": 561, @@ -49875,8 +49875,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 23326, - "end": 23327, + "start": 23315, + "end": 23316, "loc": { "start": { "line": 561, @@ -49894,8 +49894,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 23330, - "end": 23333, + "start": 23319, + "end": 23322, "loc": { "start": { "line": 561, @@ -49918,8 +49918,8 @@ }, { "type": "ExpressionStatement", - "start": 23352, - "end": 23403, + "start": 23341, + "end": 23392, "loc": { "start": { "line": 562, @@ -49932,8 +49932,8 @@ }, "expression": { "type": "CallExpression", - "start": 23352, - "end": 23402, + "start": 23341, + "end": 23391, "loc": { "start": { "line": 562, @@ -49946,8 +49946,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23352, - "end": 23360, + "start": 23341, + "end": 23349, "loc": { "start": { "line": 562, @@ -49960,8 +49960,8 @@ }, "object": { "type": "Identifier", - "start": 23352, - "end": 23355, + "start": 23341, + "end": 23344, "loc": { "start": { "line": 562, @@ -49977,8 +49977,8 @@ }, "property": { "type": "Identifier", - "start": 23356, - "end": 23360, + "start": 23345, + "end": 23349, "loc": { "start": { "line": 562, @@ -49997,8 +49997,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 23361, - "end": 23401, + "start": 23350, + "end": 23390, "loc": { "start": { "line": 562, @@ -50011,8 +50011,8 @@ }, "left": { "type": "BinaryExpression", - "start": 23361, - "end": 23395, + "start": 23350, + "end": 23384, "loc": { "start": { "line": 562, @@ -50025,8 +50025,8 @@ }, "left": { "type": "StringLiteral", - "start": 23361, - "end": 23391, + "start": 23350, + "end": 23380, "loc": { "start": { "line": 562, @@ -50046,8 +50046,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 23394, - "end": 23395, + "start": 23383, + "end": 23384, "loc": { "start": { "line": 562, @@ -50065,8 +50065,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 23398, - "end": 23401, + "start": 23387, + "end": 23390, "loc": { "start": { "line": 562, @@ -50098,8 +50098,8 @@ }, { "type": "ExpressionStatement", - "start": 23437, - "end": 23477, + "start": 23426, + "end": 23466, "loc": { "start": { "line": 566, @@ -50112,8 +50112,8 @@ }, "expression": { "type": "CallExpression", - "start": 23437, - "end": 23476, + "start": 23426, + "end": 23465, "loc": { "start": { "line": 566, @@ -50126,8 +50126,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23437, - "end": 23445, + "start": 23426, + "end": 23434, "loc": { "start": { "line": 566, @@ -50140,8 +50140,8 @@ }, "object": { "type": "Identifier", - "start": 23437, - "end": 23440, + "start": 23426, + "end": 23429, "loc": { "start": { "line": 566, @@ -50157,8 +50157,8 @@ }, "property": { "type": "Identifier", - "start": 23441, - "end": 23445, + "start": 23430, + "end": 23434, "loc": { "start": { "line": 566, @@ -50177,8 +50177,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23446, - "end": 23475, + "start": 23435, + "end": 23464, "loc": { "start": { "line": 566, @@ -50200,8 +50200,8 @@ }, { "type": "ExpressionStatement", - "start": 23486, - "end": 23524, + "start": 23475, + "end": 23513, "loc": { "start": { "line": 567, @@ -50214,8 +50214,8 @@ }, "expression": { "type": "CallExpression", - "start": 23486, - "end": 23523, + "start": 23475, + "end": 23512, "loc": { "start": { "line": 567, @@ -50228,8 +50228,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23486, - "end": 23494, + "start": 23475, + "end": 23483, "loc": { "start": { "line": 567, @@ -50242,8 +50242,8 @@ }, "object": { "type": "Identifier", - "start": 23486, - "end": 23489, + "start": 23475, + "end": 23478, "loc": { "start": { "line": 567, @@ -50259,8 +50259,8 @@ }, "property": { "type": "Identifier", - "start": 23490, - "end": 23494, + "start": 23479, + "end": 23483, "loc": { "start": { "line": 567, @@ -50279,8 +50279,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23495, - "end": 23522, + "start": 23484, + "end": 23511, "loc": { "start": { "line": 567, @@ -50302,8 +50302,8 @@ }, { "type": "ExpressionStatement", - "start": 23533, - "end": 23566, + "start": 23522, + "end": 23555, "loc": { "start": { "line": 568, @@ -50316,8 +50316,8 @@ }, "expression": { "type": "CallExpression", - "start": 23533, - "end": 23565, + "start": 23522, + "end": 23554, "loc": { "start": { "line": 568, @@ -50330,8 +50330,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23533, - "end": 23541, + "start": 23522, + "end": 23530, "loc": { "start": { "line": 568, @@ -50344,8 +50344,8 @@ }, "object": { "type": "Identifier", - "start": 23533, - "end": 23536, + "start": 23522, + "end": 23525, "loc": { "start": { "line": 568, @@ -50361,8 +50361,8 @@ }, "property": { "type": "Identifier", - "start": 23537, - "end": 23541, + "start": 23526, + "end": 23530, "loc": { "start": { "line": 568, @@ -50381,8 +50381,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23542, - "end": 23564, + "start": 23531, + "end": 23553, "loc": { "start": { "line": 568, @@ -50404,8 +50404,8 @@ }, { "type": "ExpressionStatement", - "start": 23575, - "end": 23620, + "start": 23564, + "end": 23609, "loc": { "start": { "line": 569, @@ -50418,8 +50418,8 @@ }, "expression": { "type": "CallExpression", - "start": 23575, - "end": 23619, + "start": 23564, + "end": 23608, "loc": { "start": { "line": 569, @@ -50432,8 +50432,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23575, - "end": 23583, + "start": 23564, + "end": 23572, "loc": { "start": { "line": 569, @@ -50446,8 +50446,8 @@ }, "object": { "type": "Identifier", - "start": 23575, - "end": 23578, + "start": 23564, + "end": 23567, "loc": { "start": { "line": 569, @@ -50463,8 +50463,8 @@ }, "property": { "type": "Identifier", - "start": 23579, - "end": 23583, + "start": 23568, + "end": 23572, "loc": { "start": { "line": 569, @@ -50483,8 +50483,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23584, - "end": 23618, + "start": 23573, + "end": 23607, "loc": { "start": { "line": 569, @@ -50506,8 +50506,8 @@ }, { "type": "IfStatement", - "start": 23630, - "end": 23731, + "start": 23619, + "end": 23720, "loc": { "start": { "line": 571, @@ -50520,8 +50520,8 @@ }, "test": { "type": "BinaryExpression", - "start": 23634, - "end": 23666, + "start": 23623, + "end": 23655, "loc": { "start": { "line": 571, @@ -50534,8 +50534,8 @@ }, "left": { "type": "MemberExpression", - "start": 23634, - "end": 23662, + "start": 23623, + "end": 23651, "loc": { "start": { "line": 571, @@ -50548,8 +50548,8 @@ }, "object": { "type": "MemberExpression", - "start": 23634, - "end": 23655, + "start": 23623, + "end": 23644, "loc": { "start": { "line": 571, @@ -50562,8 +50562,8 @@ }, "object": { "type": "Identifier", - "start": 23634, - "end": 23645, + "start": 23623, + "end": 23634, "loc": { "start": { "line": 571, @@ -50579,8 +50579,8 @@ }, "property": { "type": "Identifier", - "start": 23646, - "end": 23655, + "start": 23635, + "end": 23644, "loc": { "start": { "line": 571, @@ -50598,8 +50598,8 @@ }, "property": { "type": "Identifier", - "start": 23656, - "end": 23662, + "start": 23645, + "end": 23651, "loc": { "start": { "line": 571, @@ -50618,8 +50618,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 23665, - "end": 23666, + "start": 23654, + "end": 23655, "loc": { "start": { "line": 571, @@ -50639,8 +50639,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 23668, - "end": 23731, + "start": 23657, + "end": 23720, "loc": { "start": { "line": 571, @@ -50654,8 +50654,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 23682, - "end": 23721, + "start": 23671, + "end": 23710, "loc": { "start": { "line": 572, @@ -50668,8 +50668,8 @@ }, "expression": { "type": "CallExpression", - "start": 23682, - "end": 23720, + "start": 23671, + "end": 23709, "loc": { "start": { "line": 572, @@ -50682,8 +50682,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23682, - "end": 23690, + "start": 23671, + "end": 23679, "loc": { "start": { "line": 572, @@ -50696,8 +50696,8 @@ }, "object": { "type": "Identifier", - "start": 23682, - "end": 23685, + "start": 23671, + "end": 23674, "loc": { "start": { "line": 572, @@ -50713,8 +50713,8 @@ }, "property": { "type": "Identifier", - "start": 23686, - "end": 23690, + "start": 23675, + "end": 23679, "loc": { "start": { "line": 572, @@ -50733,8 +50733,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23691, - "end": 23719, + "start": 23680, + "end": 23708, "loc": { "start": { "line": 572, @@ -50761,8 +50761,8 @@ }, { "type": "ExpressionStatement", - "start": 23741, - "end": 23778, + "start": 23730, + "end": 23767, "loc": { "start": { "line": 575, @@ -50775,8 +50775,8 @@ }, "expression": { "type": "CallExpression", - "start": 23741, - "end": 23777, + "start": 23730, + "end": 23766, "loc": { "start": { "line": 575, @@ -50789,8 +50789,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23741, - "end": 23749, + "start": 23730, + "end": 23738, "loc": { "start": { "line": 575, @@ -50803,8 +50803,8 @@ }, "object": { "type": "Identifier", - "start": 23741, - "end": 23744, + "start": 23730, + "end": 23733, "loc": { "start": { "line": 575, @@ -50820,8 +50820,8 @@ }, "property": { "type": "Identifier", - "start": 23745, - "end": 23749, + "start": 23734, + "end": 23738, "loc": { "start": { "line": 575, @@ -50840,8 +50840,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23750, - "end": 23776, + "start": 23739, + "end": 23765, "loc": { "start": { "line": 575, @@ -50864,8 +50864,8 @@ { "type": "CommentLine", "value": " CONSTANT DEFINITIONS", - "start": 23788, - "end": 23811, + "start": 23777, + "end": 23800, "loc": { "start": { "line": 577, @@ -50881,8 +50881,8 @@ }, { "type": "ExpressionStatement", - "start": 23821, - "end": 23858, + "start": 23810, + "end": 23847, "loc": { "start": { "line": 579, @@ -50895,8 +50895,8 @@ }, "expression": { "type": "CallExpression", - "start": 23821, - "end": 23857, + "start": 23810, + "end": 23846, "loc": { "start": { "line": 579, @@ -50909,8 +50909,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23821, - "end": 23829, + "start": 23810, + "end": 23818, "loc": { "start": { "line": 579, @@ -50923,8 +50923,8 @@ }, "object": { "type": "Identifier", - "start": 23821, - "end": 23824, + "start": 23810, + "end": 23813, "loc": { "start": { "line": 579, @@ -50941,8 +50941,8 @@ }, "property": { "type": "Identifier", - "start": 23825, - "end": 23829, + "start": 23814, + "end": 23818, "loc": { "start": { "line": 579, @@ -50962,8 +50962,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23830, - "end": 23856, + "start": 23819, + "end": 23845, "loc": { "start": { "line": 579, @@ -50987,8 +50987,8 @@ { "type": "CommentLine", "value": " CONSTANT DEFINITIONS", - "start": 23788, - "end": 23811, + "start": 23777, + "end": 23800, "loc": { "start": { "line": 577, @@ -51004,8 +51004,8 @@ }, { "type": "ExpressionStatement", - "start": 23867, - "end": 23915, + "start": 23856, + "end": 23904, "loc": { "start": { "line": 580, @@ -51018,8 +51018,8 @@ }, "expression": { "type": "CallExpression", - "start": 23867, - "end": 23914, + "start": 23856, + "end": 23903, "loc": { "start": { "line": 580, @@ -51032,8 +51032,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23867, - "end": 23875, + "start": 23856, + "end": 23864, "loc": { "start": { "line": 580, @@ -51046,8 +51046,8 @@ }, "object": { "type": "Identifier", - "start": 23867, - "end": 23870, + "start": 23856, + "end": 23859, "loc": { "start": { "line": 580, @@ -51063,8 +51063,8 @@ }, "property": { "type": "Identifier", - "start": 23871, - "end": 23875, + "start": 23860, + "end": 23864, "loc": { "start": { "line": 580, @@ -51083,8 +51083,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23876, - "end": 23913, + "start": 23865, + "end": 23902, "loc": { "start": { "line": 580, @@ -51106,8 +51106,8 @@ }, { "type": "ExpressionStatement", - "start": 23924, - "end": 23970, + "start": 23913, + "end": 23959, "loc": { "start": { "line": 581, @@ -51120,8 +51120,8 @@ }, "expression": { "type": "CallExpression", - "start": 23924, - "end": 23969, + "start": 23913, + "end": 23958, "loc": { "start": { "line": 581, @@ -51134,8 +51134,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23924, - "end": 23932, + "start": 23913, + "end": 23921, "loc": { "start": { "line": 581, @@ -51148,8 +51148,8 @@ }, "object": { "type": "Identifier", - "start": 23924, - "end": 23927, + "start": 23913, + "end": 23916, "loc": { "start": { "line": 581, @@ -51165,8 +51165,8 @@ }, "property": { "type": "Identifier", - "start": 23928, - "end": 23932, + "start": 23917, + "end": 23921, "loc": { "start": { "line": 581, @@ -51185,8 +51185,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23933, - "end": 23968, + "start": 23922, + "end": 23957, "loc": { "start": { "line": 581, @@ -51208,8 +51208,8 @@ }, { "type": "ExpressionStatement", - "start": 23979, - "end": 24012, + "start": 23968, + "end": 24001, "loc": { "start": { "line": 582, @@ -51222,8 +51222,8 @@ }, "expression": { "type": "CallExpression", - "start": 23979, - "end": 24011, + "start": 23968, + "end": 24000, "loc": { "start": { "line": 582, @@ -51236,8 +51236,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23979, - "end": 23987, + "start": 23968, + "end": 23976, "loc": { "start": { "line": 582, @@ -51250,8 +51250,8 @@ }, "object": { "type": "Identifier", - "start": 23979, - "end": 23982, + "start": 23968, + "end": 23971, "loc": { "start": { "line": 582, @@ -51267,8 +51267,8 @@ }, "property": { "type": "Identifier", - "start": 23983, - "end": 23987, + "start": 23972, + "end": 23976, "loc": { "start": { "line": 582, @@ -51287,8 +51287,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23988, - "end": 24010, + "start": 23977, + "end": 23999, "loc": { "start": { "line": 582, @@ -51310,8 +51310,8 @@ }, { "type": "ExpressionStatement", - "start": 24022, - "end": 24075, + "start": 24011, + "end": 24064, "loc": { "start": { "line": 584, @@ -51324,8 +51324,8 @@ }, "expression": { "type": "CallExpression", - "start": 24022, - "end": 24074, + "start": 24011, + "end": 24063, "loc": { "start": { "line": 584, @@ -51338,8 +51338,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24022, - "end": 24030, + "start": 24011, + "end": 24019, "loc": { "start": { "line": 584, @@ -51352,8 +51352,8 @@ }, "object": { "type": "Identifier", - "start": 24022, - "end": 24025, + "start": 24011, + "end": 24014, "loc": { "start": { "line": 584, @@ -51369,8 +51369,8 @@ }, "property": { "type": "Identifier", - "start": 24026, - "end": 24030, + "start": 24015, + "end": 24019, "loc": { "start": { "line": 584, @@ -51389,8 +51389,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24031, - "end": 24073, + "start": 24020, + "end": 24062, "loc": { "start": { "line": 584, @@ -51413,8 +51413,8 @@ { "type": "CommentLine", "value": " UTILITY DEFINITIONS", - "start": 24085, - "end": 24107, + "start": 24074, + "end": 24096, "loc": { "start": { "line": 586, @@ -51430,8 +51430,8 @@ }, { "type": "ExpressionStatement", - "start": 24117, - "end": 24191, + "start": 24106, + "end": 24180, "loc": { "start": { "line": 588, @@ -51444,8 +51444,8 @@ }, "expression": { "type": "CallExpression", - "start": 24117, - "end": 24190, + "start": 24106, + "end": 24179, "loc": { "start": { "line": 588, @@ -51458,8 +51458,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24117, - "end": 24125, + "start": 24106, + "end": 24114, "loc": { "start": { "line": 588, @@ -51472,8 +51472,8 @@ }, "object": { "type": "Identifier", - "start": 24117, - "end": 24120, + "start": 24106, + "end": 24109, "loc": { "start": { "line": 588, @@ -51490,8 +51490,8 @@ }, "property": { "type": "Identifier", - "start": 24121, - "end": 24125, + "start": 24110, + "end": 24114, "loc": { "start": { "line": 588, @@ -51511,8 +51511,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24126, - "end": 24189, + "start": 24115, + "end": 24178, "loc": { "start": { "line": 588, @@ -51536,8 +51536,8 @@ { "type": "CommentLine", "value": " UTILITY DEFINITIONS", - "start": 24085, - "end": 24107, + "start": 24074, + "end": 24096, "loc": { "start": { "line": 586, @@ -51553,8 +51553,8 @@ }, { "type": "ExpressionStatement", - "start": 24200, - "end": 24270, + "start": 24189, + "end": 24259, "loc": { "start": { "line": 589, @@ -51567,8 +51567,8 @@ }, "expression": { "type": "CallExpression", - "start": 24200, - "end": 24269, + "start": 24189, + "end": 24258, "loc": { "start": { "line": 589, @@ -51581,8 +51581,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24200, - "end": 24208, + "start": 24189, + "end": 24197, "loc": { "start": { "line": 589, @@ -51595,8 +51595,8 @@ }, "object": { "type": "Identifier", - "start": 24200, - "end": 24203, + "start": 24189, + "end": 24192, "loc": { "start": { "line": 589, @@ -51612,8 +51612,8 @@ }, "property": { "type": "Identifier", - "start": 24204, - "end": 24208, + "start": 24193, + "end": 24197, "loc": { "start": { "line": 589, @@ -51632,8 +51632,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24209, - "end": 24268, + "start": 24198, + "end": 24257, "loc": { "start": { "line": 589, @@ -51655,8 +51655,8 @@ }, { "type": "ExpressionStatement", - "start": 24279, - "end": 24293, + "start": 24268, + "end": 24282, "loc": { "start": { "line": 590, @@ -51669,8 +51669,8 @@ }, "expression": { "type": "CallExpression", - "start": 24279, - "end": 24292, + "start": 24268, + "end": 24281, "loc": { "start": { "line": 590, @@ -51683,8 +51683,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24279, - "end": 24287, + "start": 24268, + "end": 24276, "loc": { "start": { "line": 590, @@ -51697,8 +51697,8 @@ }, "object": { "type": "Identifier", - "start": 24279, - "end": 24282, + "start": 24268, + "end": 24271, "loc": { "start": { "line": 590, @@ -51714,8 +51714,8 @@ }, "property": { "type": "Identifier", - "start": 24283, - "end": 24287, + "start": 24272, + "end": 24276, "loc": { "start": { "line": 590, @@ -51734,8 +51734,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24288, - "end": 24291, + "start": 24277, + "end": 24280, "loc": { "start": { "line": 590, @@ -51758,8 +51758,8 @@ { "type": "CommentLine", "value": " STRUCTURES", - "start": 24303, - "end": 24316, + "start": 24292, + "end": 24305, "loc": { "start": { "line": 592, @@ -51775,8 +51775,8 @@ }, { "type": "ExpressionStatement", - "start": 24326, - "end": 24361, + "start": 24315, + "end": 24350, "loc": { "start": { "line": 594, @@ -51789,8 +51789,8 @@ }, "expression": { "type": "CallExpression", - "start": 24326, - "end": 24360, + "start": 24315, + "end": 24349, "loc": { "start": { "line": 594, @@ -51803,8 +51803,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24326, - "end": 24334, + "start": 24315, + "end": 24323, "loc": { "start": { "line": 594, @@ -51817,8 +51817,8 @@ }, "object": { "type": "Identifier", - "start": 24326, - "end": 24329, + "start": 24315, + "end": 24318, "loc": { "start": { "line": 594, @@ -51835,8 +51835,8 @@ }, "property": { "type": "Identifier", - "start": 24330, - "end": 24334, + "start": 24319, + "end": 24323, "loc": { "start": { "line": 594, @@ -51856,8 +51856,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24335, - "end": 24359, + "start": 24324, + "end": 24348, "loc": { "start": { "line": 594, @@ -51881,8 +51881,8 @@ { "type": "CommentLine", "value": " STRUCTURES", - "start": 24303, - "end": 24316, + "start": 24292, + "end": 24305, "loc": { "start": { "line": 592, @@ -51898,8 +51898,8 @@ }, { "type": "ExpressionStatement", - "start": 24370, - "end": 24397, + "start": 24359, + "end": 24386, "loc": { "start": { "line": 595, @@ -51912,8 +51912,8 @@ }, "expression": { "type": "CallExpression", - "start": 24370, - "end": 24396, + "start": 24359, + "end": 24385, "loc": { "start": { "line": 595, @@ -51926,8 +51926,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24370, - "end": 24378, + "start": 24359, + "end": 24367, "loc": { "start": { "line": 595, @@ -51940,8 +51940,8 @@ }, "object": { "type": "Identifier", - "start": 24370, - "end": 24373, + "start": 24359, + "end": 24362, "loc": { "start": { "line": 595, @@ -51957,8 +51957,8 @@ }, "property": { "type": "Identifier", - "start": 24374, - "end": 24378, + "start": 24363, + "end": 24367, "loc": { "start": { "line": 595, @@ -51977,8 +51977,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24379, - "end": 24395, + "start": 24368, + "end": 24384, "loc": { "start": { "line": 595, @@ -52000,8 +52000,8 @@ }, { "type": "ExpressionStatement", - "start": 24406, - "end": 24437, + "start": 24395, + "end": 24426, "loc": { "start": { "line": 596, @@ -52014,8 +52014,8 @@ }, "expression": { "type": "CallExpression", - "start": 24406, - "end": 24436, + "start": 24395, + "end": 24425, "loc": { "start": { "line": 596, @@ -52028,8 +52028,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24406, - "end": 24414, + "start": 24395, + "end": 24403, "loc": { "start": { "line": 596, @@ -52042,8 +52042,8 @@ }, "object": { "type": "Identifier", - "start": 24406, - "end": 24409, + "start": 24395, + "end": 24398, "loc": { "start": { "line": 596, @@ -52059,8 +52059,8 @@ }, "property": { "type": "Identifier", - "start": 24410, - "end": 24414, + "start": 24399, + "end": 24403, "loc": { "start": { "line": 596, @@ -52079,8 +52079,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24415, - "end": 24435, + "start": 24404, + "end": 24424, "loc": { "start": { "line": 596, @@ -52102,8 +52102,8 @@ }, { "type": "ExpressionStatement", - "start": 24446, - "end": 24461, + "start": 24435, + "end": 24450, "loc": { "start": { "line": 597, @@ -52116,8 +52116,8 @@ }, "expression": { "type": "CallExpression", - "start": 24446, - "end": 24460, + "start": 24435, + "end": 24449, "loc": { "start": { "line": 597, @@ -52130,8 +52130,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24446, - "end": 24454, + "start": 24435, + "end": 24443, "loc": { "start": { "line": 597, @@ -52144,8 +52144,8 @@ }, "object": { "type": "Identifier", - "start": 24446, - "end": 24449, + "start": 24435, + "end": 24438, "loc": { "start": { "line": 597, @@ -52161,8 +52161,8 @@ }, "property": { "type": "Identifier", - "start": 24450, - "end": 24454, + "start": 24439, + "end": 24443, "loc": { "start": { "line": 597, @@ -52181,8 +52181,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24455, - "end": 24459, + "start": 24444, + "end": 24448, "loc": { "start": { "line": 597, @@ -52204,8 +52204,8 @@ }, { "type": "ExpressionStatement", - "start": 24471, - "end": 24507, + "start": 24460, + "end": 24496, "loc": { "start": { "line": 599, @@ -52218,8 +52218,8 @@ }, "expression": { "type": "CallExpression", - "start": 24471, - "end": 24506, + "start": 24460, + "end": 24495, "loc": { "start": { "line": 599, @@ -52232,8 +52232,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24471, - "end": 24479, + "start": 24460, + "end": 24468, "loc": { "start": { "line": 599, @@ -52246,8 +52246,8 @@ }, "object": { "type": "Identifier", - "start": 24471, - "end": 24474, + "start": 24460, + "end": 24463, "loc": { "start": { "line": 599, @@ -52263,8 +52263,8 @@ }, "property": { "type": "Identifier", - "start": 24475, - "end": 24479, + "start": 24464, + "end": 24468, "loc": { "start": { "line": 599, @@ -52283,8 +52283,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24480, - "end": 24505, + "start": 24469, + "end": 24494, "loc": { "start": { "line": 599, @@ -52306,8 +52306,8 @@ }, { "type": "ExpressionStatement", - "start": 24516, - "end": 24545, + "start": 24505, + "end": 24534, "loc": { "start": { "line": 600, @@ -52320,8 +52320,8 @@ }, "expression": { "type": "CallExpression", - "start": 24516, - "end": 24544, + "start": 24505, + "end": 24533, "loc": { "start": { "line": 600, @@ -52334,8 +52334,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24516, - "end": 24524, + "start": 24505, + "end": 24513, "loc": { "start": { "line": 600, @@ -52348,8 +52348,8 @@ }, "object": { "type": "Identifier", - "start": 24516, - "end": 24519, + "start": 24505, + "end": 24508, "loc": { "start": { "line": 600, @@ -52365,8 +52365,8 @@ }, "property": { "type": "Identifier", - "start": 24520, - "end": 24524, + "start": 24509, + "end": 24513, "loc": { "start": { "line": 600, @@ -52385,8 +52385,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24525, - "end": 24543, + "start": 24514, + "end": 24532, "loc": { "start": { "line": 600, @@ -52408,8 +52408,8 @@ }, { "type": "ExpressionStatement", - "start": 24554, - "end": 24584, + "start": 24543, + "end": 24573, "loc": { "start": { "line": 601, @@ -52422,8 +52422,8 @@ }, "expression": { "type": "CallExpression", - "start": 24554, - "end": 24583, + "start": 24543, + "end": 24572, "loc": { "start": { "line": 601, @@ -52436,8 +52436,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24554, - "end": 24562, + "start": 24543, + "end": 24551, "loc": { "start": { "line": 601, @@ -52450,8 +52450,8 @@ }, "object": { "type": "Identifier", - "start": 24554, - "end": 24557, + "start": 24543, + "end": 24546, "loc": { "start": { "line": 601, @@ -52467,8 +52467,8 @@ }, "property": { "type": "Identifier", - "start": 24558, - "end": 24562, + "start": 24547, + "end": 24551, "loc": { "start": { "line": 601, @@ -52487,8 +52487,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24563, - "end": 24582, + "start": 24552, + "end": 24571, "loc": { "start": { "line": 601, @@ -52510,8 +52510,8 @@ }, { "type": "ExpressionStatement", - "start": 24593, - "end": 24608, + "start": 24582, + "end": 24597, "loc": { "start": { "line": 602, @@ -52524,8 +52524,8 @@ }, "expression": { "type": "CallExpression", - "start": 24593, - "end": 24607, + "start": 24582, + "end": 24596, "loc": { "start": { "line": 602, @@ -52538,8 +52538,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24593, - "end": 24601, + "start": 24582, + "end": 24590, "loc": { "start": { "line": 602, @@ -52552,8 +52552,8 @@ }, "object": { "type": "Identifier", - "start": 24593, - "end": 24596, + "start": 24582, + "end": 24585, "loc": { "start": { "line": 602, @@ -52569,8 +52569,8 @@ }, "property": { "type": "Identifier", - "start": 24597, - "end": 24601, + "start": 24586, + "end": 24590, "loc": { "start": { "line": 602, @@ -52589,8 +52589,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24602, - "end": 24606, + "start": 24591, + "end": 24595, "loc": { "start": { "line": 602, @@ -52612,8 +52612,8 @@ }, { "type": "ExpressionStatement", - "start": 24618, - "end": 24648, + "start": 24607, + "end": 24637, "loc": { "start": { "line": 604, @@ -52626,8 +52626,8 @@ }, "expression": { "type": "CallExpression", - "start": 24618, - "end": 24647, + "start": 24607, + "end": 24636, "loc": { "start": { "line": 604, @@ -52640,8 +52640,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24618, - "end": 24626, + "start": 24607, + "end": 24615, "loc": { "start": { "line": 604, @@ -52654,8 +52654,8 @@ }, "object": { "type": "Identifier", - "start": 24618, - "end": 24621, + "start": 24607, + "end": 24610, "loc": { "start": { "line": 604, @@ -52671,8 +52671,8 @@ }, "property": { "type": "Identifier", - "start": 24622, - "end": 24626, + "start": 24611, + "end": 24615, "loc": { "start": { "line": 604, @@ -52691,8 +52691,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24627, - "end": 24646, + "start": 24616, + "end": 24635, "loc": { "start": { "line": 604, @@ -52714,8 +52714,8 @@ }, { "type": "ExpressionStatement", - "start": 24657, - "end": 24687, + "start": 24646, + "end": 24676, "loc": { "start": { "line": 605, @@ -52728,8 +52728,8 @@ }, "expression": { "type": "CallExpression", - "start": 24657, - "end": 24686, + "start": 24646, + "end": 24675, "loc": { "start": { "line": 605, @@ -52742,8 +52742,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24657, - "end": 24665, + "start": 24646, + "end": 24654, "loc": { "start": { "line": 605, @@ -52756,8 +52756,8 @@ }, "object": { "type": "Identifier", - "start": 24657, - "end": 24660, + "start": 24646, + "end": 24649, "loc": { "start": { "line": 605, @@ -52773,8 +52773,8 @@ }, "property": { "type": "Identifier", - "start": 24661, - "end": 24665, + "start": 24650, + "end": 24654, "loc": { "start": { "line": 605, @@ -52793,8 +52793,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24666, - "end": 24685, + "start": 24655, + "end": 24674, "loc": { "start": { "line": 605, @@ -52816,8 +52816,8 @@ }, { "type": "ExpressionStatement", - "start": 24696, - "end": 24728, + "start": 24685, + "end": 24717, "loc": { "start": { "line": 606, @@ -52830,8 +52830,8 @@ }, "expression": { "type": "CallExpression", - "start": 24696, - "end": 24727, + "start": 24685, + "end": 24716, "loc": { "start": { "line": 606, @@ -52844,8 +52844,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24696, - "end": 24704, + "start": 24685, + "end": 24693, "loc": { "start": { "line": 606, @@ -52858,8 +52858,8 @@ }, "object": { "type": "Identifier", - "start": 24696, - "end": 24699, + "start": 24685, + "end": 24688, "loc": { "start": { "line": 606, @@ -52875,8 +52875,8 @@ }, "property": { "type": "Identifier", - "start": 24700, - "end": 24704, + "start": 24689, + "end": 24693, "loc": { "start": { "line": 606, @@ -52895,8 +52895,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24705, - "end": 24726, + "start": 24694, + "end": 24715, "loc": { "start": { "line": 606, @@ -52918,8 +52918,8 @@ }, { "type": "ExpressionStatement", - "start": 24737, - "end": 24770, + "start": 24726, + "end": 24759, "loc": { "start": { "line": 607, @@ -52932,8 +52932,8 @@ }, "expression": { "type": "CallExpression", - "start": 24737, - "end": 24769, + "start": 24726, + "end": 24758, "loc": { "start": { "line": 607, @@ -52946,8 +52946,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24737, - "end": 24745, + "start": 24726, + "end": 24734, "loc": { "start": { "line": 607, @@ -52960,8 +52960,8 @@ }, "object": { "type": "Identifier", - "start": 24737, - "end": 24740, + "start": 24726, + "end": 24729, "loc": { "start": { "line": 607, @@ -52977,8 +52977,8 @@ }, "property": { "type": "Identifier", - "start": 24741, - "end": 24745, + "start": 24730, + "end": 24734, "loc": { "start": { "line": 607, @@ -52997,8 +52997,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24746, - "end": 24768, + "start": 24735, + "end": 24757, "loc": { "start": { "line": 607, @@ -53020,8 +53020,8 @@ }, { "type": "ExpressionStatement", - "start": 24779, - "end": 24811, + "start": 24768, + "end": 24800, "loc": { "start": { "line": 608, @@ -53034,8 +53034,8 @@ }, "expression": { "type": "CallExpression", - "start": 24779, - "end": 24810, + "start": 24768, + "end": 24799, "loc": { "start": { "line": 608, @@ -53048,8 +53048,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24779, - "end": 24787, + "start": 24768, + "end": 24776, "loc": { "start": { "line": 608, @@ -53062,8 +53062,8 @@ }, "object": { "type": "Identifier", - "start": 24779, - "end": 24782, + "start": 24768, + "end": 24771, "loc": { "start": { "line": 608, @@ -53079,8 +53079,8 @@ }, "property": { "type": "Identifier", - "start": 24783, - "end": 24787, + "start": 24772, + "end": 24776, "loc": { "start": { "line": 608, @@ -53099,8 +53099,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24788, - "end": 24809, + "start": 24777, + "end": 24798, "loc": { "start": { "line": 608, @@ -53122,8 +53122,8 @@ }, { "type": "ExpressionStatement", - "start": 24820, - "end": 24835, + "start": 24809, + "end": 24824, "loc": { "start": { "line": 609, @@ -53136,8 +53136,8 @@ }, "expression": { "type": "CallExpression", - "start": 24820, - "end": 24834, + "start": 24809, + "end": 24823, "loc": { "start": { "line": 609, @@ -53150,8 +53150,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24820, - "end": 24828, + "start": 24809, + "end": 24817, "loc": { "start": { "line": 609, @@ -53164,8 +53164,8 @@ }, "object": { "type": "Identifier", - "start": 24820, - "end": 24823, + "start": 24809, + "end": 24812, "loc": { "start": { "line": 609, @@ -53181,8 +53181,8 @@ }, "property": { "type": "Identifier", - "start": 24824, - "end": 24828, + "start": 24813, + "end": 24817, "loc": { "start": { "line": 609, @@ -53201,8 +53201,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24829, - "end": 24833, + "start": 24818, + "end": 24822, "loc": { "start": { "line": 609, @@ -53224,8 +53224,8 @@ }, { "type": "ExpressionStatement", - "start": 24845, - "end": 24875, + "start": 24834, + "end": 24864, "loc": { "start": { "line": 611, @@ -53238,8 +53238,8 @@ }, "expression": { "type": "CallExpression", - "start": 24845, - "end": 24874, + "start": 24834, + "end": 24863, "loc": { "start": { "line": 611, @@ -53252,8 +53252,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24845, - "end": 24853, + "start": 24834, + "end": 24842, "loc": { "start": { "line": 611, @@ -53266,8 +53266,8 @@ }, "object": { "type": "Identifier", - "start": 24845, - "end": 24848, + "start": 24834, + "end": 24837, "loc": { "start": { "line": 611, @@ -53283,8 +53283,8 @@ }, "property": { "type": "Identifier", - "start": 24849, - "end": 24853, + "start": 24838, + "end": 24842, "loc": { "start": { "line": 611, @@ -53303,8 +53303,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24854, - "end": 24873, + "start": 24843, + "end": 24862, "loc": { "start": { "line": 611, @@ -53326,8 +53326,8 @@ }, { "type": "ExpressionStatement", - "start": 24884, - "end": 24921, + "start": 24873, + "end": 24910, "loc": { "start": { "line": 612, @@ -53340,8 +53340,8 @@ }, "expression": { "type": "CallExpression", - "start": 24884, - "end": 24920, + "start": 24873, + "end": 24909, "loc": { "start": { "line": 612, @@ -53354,8 +53354,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24884, - "end": 24892, + "start": 24873, + "end": 24881, "loc": { "start": { "line": 612, @@ -53368,8 +53368,8 @@ }, "object": { "type": "Identifier", - "start": 24884, - "end": 24887, + "start": 24873, + "end": 24876, "loc": { "start": { "line": 612, @@ -53385,8 +53385,8 @@ }, "property": { "type": "Identifier", - "start": 24888, - "end": 24892, + "start": 24877, + "end": 24881, "loc": { "start": { "line": 612, @@ -53405,8 +53405,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24893, - "end": 24919, + "start": 24882, + "end": 24908, "loc": { "start": { "line": 612, @@ -53428,8 +53428,8 @@ }, { "type": "ExpressionStatement", - "start": 24930, - "end": 24972, + "start": 24919, + "end": 24961, "loc": { "start": { "line": 613, @@ -53442,8 +53442,8 @@ }, "expression": { "type": "CallExpression", - "start": 24930, - "end": 24971, + "start": 24919, + "end": 24960, "loc": { "start": { "line": 613, @@ -53456,8 +53456,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24930, - "end": 24938, + "start": 24919, + "end": 24927, "loc": { "start": { "line": 613, @@ -53470,8 +53470,8 @@ }, "object": { "type": "Identifier", - "start": 24930, - "end": 24933, + "start": 24919, + "end": 24922, "loc": { "start": { "line": 613, @@ -53487,8 +53487,8 @@ }, "property": { "type": "Identifier", - "start": 24934, - "end": 24938, + "start": 24923, + "end": 24927, "loc": { "start": { "line": 613, @@ -53507,8 +53507,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24939, - "end": 24970, + "start": 24928, + "end": 24959, "loc": { "start": { "line": 613, @@ -53530,8 +53530,8 @@ }, { "type": "ExpressionStatement", - "start": 24981, - "end": 25019, + "start": 24970, + "end": 25008, "loc": { "start": { "line": 614, @@ -53544,8 +53544,8 @@ }, "expression": { "type": "CallExpression", - "start": 24981, - "end": 25018, + "start": 24970, + "end": 25007, "loc": { "start": { "line": 614, @@ -53558,8 +53558,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24981, - "end": 24989, + "start": 24970, + "end": 24978, "loc": { "start": { "line": 614, @@ -53572,8 +53572,8 @@ }, "object": { "type": "Identifier", - "start": 24981, - "end": 24984, + "start": 24970, + "end": 24973, "loc": { "start": { "line": 614, @@ -53589,8 +53589,8 @@ }, "property": { "type": "Identifier", - "start": 24985, - "end": 24989, + "start": 24974, + "end": 24978, "loc": { "start": { "line": 614, @@ -53609,8 +53609,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24990, - "end": 25017, + "start": 24979, + "end": 25006, "loc": { "start": { "line": 614, @@ -53632,8 +53632,8 @@ }, { "type": "ExpressionStatement", - "start": 25028, - "end": 25058, + "start": 25017, + "end": 25047, "loc": { "start": { "line": 615, @@ -53646,8 +53646,8 @@ }, "expression": { "type": "CallExpression", - "start": 25028, - "end": 25057, + "start": 25017, + "end": 25046, "loc": { "start": { "line": 615, @@ -53660,8 +53660,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25028, - "end": 25036, + "start": 25017, + "end": 25025, "loc": { "start": { "line": 615, @@ -53674,8 +53674,8 @@ }, "object": { "type": "Identifier", - "start": 25028, - "end": 25031, + "start": 25017, + "end": 25020, "loc": { "start": { "line": 615, @@ -53691,8 +53691,8 @@ }, "property": { "type": "Identifier", - "start": 25032, - "end": 25036, + "start": 25021, + "end": 25025, "loc": { "start": { "line": 615, @@ -53711,8 +53711,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25037, - "end": 25056, + "start": 25026, + "end": 25045, "loc": { "start": { "line": 615, @@ -53735,8 +53735,8 @@ { "type": "CommentLine", "value": " Only used for Phong", - "start": 25059, - "end": 25081, + "start": 25048, + "end": 25070, "loc": { "start": { "line": 615, @@ -53752,8 +53752,8 @@ }, { "type": "ExpressionStatement", - "start": 25090, - "end": 25105, + "start": 25079, + "end": 25094, "loc": { "start": { "line": 616, @@ -53766,8 +53766,8 @@ }, "expression": { "type": "CallExpression", - "start": 25090, - "end": 25104, + "start": 25079, + "end": 25093, "loc": { "start": { "line": 616, @@ -53780,8 +53780,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25090, - "end": 25098, + "start": 25079, + "end": 25087, "loc": { "start": { "line": 616, @@ -53794,8 +53794,8 @@ }, "object": { "type": "Identifier", - "start": 25090, - "end": 25093, + "start": 25079, + "end": 25082, "loc": { "start": { "line": 616, @@ -53812,8 +53812,8 @@ }, "property": { "type": "Identifier", - "start": 25094, - "end": 25098, + "start": 25083, + "end": 25087, "loc": { "start": { "line": 616, @@ -53833,8 +53833,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25099, - "end": 25103, + "start": 25088, + "end": 25092, "loc": { "start": { "line": 616, @@ -53858,8 +53858,8 @@ { "type": "CommentLine", "value": " Only used for Phong", - "start": 25059, - "end": 25081, + "start": 25048, + "end": 25070, "loc": { "start": { "line": 615, @@ -53876,8 +53876,8 @@ { "type": "CommentLine", "value": " IRRADIANCE EVALUATION", - "start": 25115, - "end": 25139, + "start": 25104, + "end": 25128, "loc": { "start": { "line": 618, @@ -53893,8 +53893,8 @@ }, { "type": "ExpressionStatement", - "start": 25149, - "end": 25226, + "start": 25138, + "end": 25215, "loc": { "start": { "line": 620, @@ -53907,8 +53907,8 @@ }, "expression": { "type": "CallExpression", - "start": 25149, - "end": 25225, + "start": 25138, + "end": 25214, "loc": { "start": { "line": 620, @@ -53921,8 +53921,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25149, - "end": 25157, + "start": 25138, + "end": 25146, "loc": { "start": { "line": 620, @@ -53935,8 +53935,8 @@ }, "object": { "type": "Identifier", - "start": 25149, - "end": 25152, + "start": 25138, + "end": 25141, "loc": { "start": { "line": 620, @@ -53953,8 +53953,8 @@ }, "property": { "type": "Identifier", - "start": 25153, - "end": 25157, + "start": 25142, + "end": 25146, "loc": { "start": { "line": 620, @@ -53974,8 +53974,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25158, - "end": 25224, + "start": 25147, + "end": 25213, "loc": { "start": { "line": 620, @@ -53999,8 +53999,8 @@ { "type": "CommentLine", "value": " IRRADIANCE EVALUATION", - "start": 25115, - "end": 25139, + "start": 25104, + "end": 25128, "loc": { "start": { "line": 618, @@ -54016,8 +54016,8 @@ }, { "type": "ExpressionStatement", - "start": 25235, - "end": 25283, + "start": 25224, + "end": 25272, "loc": { "start": { "line": 621, @@ -54030,8 +54030,8 @@ }, "expression": { "type": "CallExpression", - "start": 25235, - "end": 25282, + "start": 25224, + "end": 25271, "loc": { "start": { "line": 621, @@ -54044,8 +54044,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25235, - "end": 25243, + "start": 25224, + "end": 25232, "loc": { "start": { "line": 621, @@ -54058,8 +54058,8 @@ }, "object": { "type": "Identifier", - "start": 25235, - "end": 25238, + "start": 25224, + "end": 25227, "loc": { "start": { "line": 621, @@ -54075,8 +54075,8 @@ }, "property": { "type": "Identifier", - "start": 25239, - "end": 25243, + "start": 25228, + "end": 25232, "loc": { "start": { "line": 621, @@ -54095,8 +54095,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25244, - "end": 25281, + "start": 25233, + "end": 25270, "loc": { "start": { "line": 621, @@ -54118,8 +54118,8 @@ }, { "type": "ExpressionStatement", - "start": 25292, - "end": 25337, + "start": 25281, + "end": 25326, "loc": { "start": { "line": 622, @@ -54132,8 +54132,8 @@ }, "expression": { "type": "CallExpression", - "start": 25292, - "end": 25336, + "start": 25281, + "end": 25325, "loc": { "start": { "line": 622, @@ -54146,8 +54146,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25292, - "end": 25300, + "start": 25281, + "end": 25289, "loc": { "start": { "line": 622, @@ -54160,8 +54160,8 @@ }, "object": { "type": "Identifier", - "start": 25292, - "end": 25295, + "start": 25281, + "end": 25284, "loc": { "start": { "line": 622, @@ -54177,8 +54177,8 @@ }, "property": { "type": "Identifier", - "start": 25296, - "end": 25300, + "start": 25285, + "end": 25289, "loc": { "start": { "line": 622, @@ -54197,8 +54197,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25301, - "end": 25335, + "start": 25290, + "end": 25324, "loc": { "start": { "line": 622, @@ -54220,8 +54220,8 @@ }, { "type": "ExpressionStatement", - "start": 25346, - "end": 25360, + "start": 25335, + "end": 25349, "loc": { "start": { "line": 623, @@ -54234,8 +54234,8 @@ }, "expression": { "type": "CallExpression", - "start": 25346, - "end": 25359, + "start": 25335, + "end": 25348, "loc": { "start": { "line": 623, @@ -54248,8 +54248,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25346, - "end": 25354, + "start": 25335, + "end": 25343, "loc": { "start": { "line": 623, @@ -54262,8 +54262,8 @@ }, "object": { "type": "Identifier", - "start": 25346, - "end": 25349, + "start": 25335, + "end": 25338, "loc": { "start": { "line": 623, @@ -54279,8 +54279,8 @@ }, "property": { "type": "Identifier", - "start": 25350, - "end": 25354, + "start": 25339, + "end": 25343, "loc": { "start": { "line": 623, @@ -54299,8 +54299,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25355, - "end": 25358, + "start": 25344, + "end": 25347, "loc": { "start": { "line": 623, @@ -54322,8 +54322,8 @@ }, { "type": "ExpressionStatement", - "start": 25370, - "end": 25475, + "start": 25359, + "end": 25464, "loc": { "start": { "line": 625, @@ -54336,8 +54336,8 @@ }, "expression": { "type": "CallExpression", - "start": 25370, - "end": 25474, + "start": 25359, + "end": 25463, "loc": { "start": { "line": 625, @@ -54350,8 +54350,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25370, - "end": 25378, + "start": 25359, + "end": 25367, "loc": { "start": { "line": 625, @@ -54364,8 +54364,8 @@ }, "object": { "type": "Identifier", - "start": 25370, - "end": 25373, + "start": 25359, + "end": 25362, "loc": { "start": { "line": 625, @@ -54381,8 +54381,8 @@ }, "property": { "type": "Identifier", - "start": 25374, - "end": 25378, + "start": 25363, + "end": 25367, "loc": { "start": { "line": 625, @@ -54401,8 +54401,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25379, - "end": 25473, + "start": 25368, + "end": 25462, "loc": { "start": { "line": 625, @@ -54424,8 +54424,8 @@ }, { "type": "ExpressionStatement", - "start": 25484, - "end": 25547, + "start": 25473, + "end": 25536, "loc": { "start": { "line": 626, @@ -54438,8 +54438,8 @@ }, "expression": { "type": "CallExpression", - "start": 25484, - "end": 25546, + "start": 25473, + "end": 25535, "loc": { "start": { "line": 626, @@ -54452,8 +54452,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25484, - "end": 25492, + "start": 25473, + "end": 25481, "loc": { "start": { "line": 626, @@ -54466,8 +54466,8 @@ }, "object": { "type": "Identifier", - "start": 25484, - "end": 25487, + "start": 25473, + "end": 25476, "loc": { "start": { "line": 626, @@ -54483,8 +54483,8 @@ }, "property": { "type": "Identifier", - "start": 25488, - "end": 25492, + "start": 25477, + "end": 25481, "loc": { "start": { "line": 626, @@ -54503,8 +54503,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25493, - "end": 25545, + "start": 25482, + "end": 25534, "loc": { "start": { "line": 626, @@ -54526,8 +54526,8 @@ }, { "type": "ExpressionStatement", - "start": 25556, - "end": 25698, + "start": 25545, + "end": 25687, "loc": { "start": { "line": 627, @@ -54540,8 +54540,8 @@ }, "expression": { "type": "CallExpression", - "start": 25556, - "end": 25697, + "start": 25545, + "end": 25686, "loc": { "start": { "line": 627, @@ -54554,8 +54554,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25556, - "end": 25564, + "start": 25545, + "end": 25553, "loc": { "start": { "line": 627, @@ -54568,8 +54568,8 @@ }, "object": { "type": "Identifier", - "start": 25556, - "end": 25559, + "start": 25545, + "end": 25548, "loc": { "start": { "line": 627, @@ -54585,8 +54585,8 @@ }, "property": { "type": "Identifier", - "start": 25560, - "end": 25564, + "start": 25549, + "end": 25553, "loc": { "start": { "line": 627, @@ -54605,8 +54605,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25565, - "end": 25696, + "start": 25554, + "end": 25685, "loc": { "start": { "line": 627, @@ -54628,8 +54628,8 @@ }, { "type": "ExpressionStatement", - "start": 25707, - "end": 25779, + "start": 25696, + "end": 25768, "loc": { "start": { "line": 628, @@ -54642,8 +54642,8 @@ }, "expression": { "type": "CallExpression", - "start": 25707, - "end": 25778, + "start": 25696, + "end": 25767, "loc": { "start": { "line": 628, @@ -54656,8 +54656,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25707, - "end": 25715, + "start": 25696, + "end": 25704, "loc": { "start": { "line": 628, @@ -54670,8 +54670,8 @@ }, "object": { "type": "Identifier", - "start": 25707, - "end": 25710, + "start": 25696, + "end": 25699, "loc": { "start": { "line": 628, @@ -54687,8 +54687,8 @@ }, "property": { "type": "Identifier", - "start": 25711, - "end": 25715, + "start": 25700, + "end": 25704, "loc": { "start": { "line": 628, @@ -54707,8 +54707,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25716, - "end": 25777, + "start": 25705, + "end": 25766, "loc": { "start": { "line": 628, @@ -54730,8 +54730,8 @@ }, { "type": "ExpressionStatement", - "start": 25788, - "end": 25802, + "start": 25777, + "end": 25791, "loc": { "start": { "line": 629, @@ -54744,8 +54744,8 @@ }, "expression": { "type": "CallExpression", - "start": 25788, - "end": 25801, + "start": 25777, + "end": 25790, "loc": { "start": { "line": 629, @@ -54758,8 +54758,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25788, - "end": 25796, + "start": 25777, + "end": 25785, "loc": { "start": { "line": 629, @@ -54772,8 +54772,8 @@ }, "object": { "type": "Identifier", - "start": 25788, - "end": 25791, + "start": 25777, + "end": 25780, "loc": { "start": { "line": 629, @@ -54789,8 +54789,8 @@ }, "property": { "type": "Identifier", - "start": 25792, - "end": 25796, + "start": 25781, + "end": 25785, "loc": { "start": { "line": 629, @@ -54809,8 +54809,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25797, - "end": 25800, + "start": 25786, + "end": 25789, "loc": { "start": { "line": 629, @@ -54832,8 +54832,8 @@ }, { "type": "IfStatement", - "start": 25812, - "end": 26408, + "start": 25801, + "end": 26397, "loc": { "start": { "line": 631, @@ -54846,8 +54846,8 @@ }, "test": { "type": "BinaryExpression", - "start": 25816, - "end": 25853, + "start": 25805, + "end": 25842, "loc": { "start": { "line": 631, @@ -54860,8 +54860,8 @@ }, "left": { "type": "MemberExpression", - "start": 25816, - "end": 25849, + "start": 25805, + "end": 25838, "loc": { "start": { "line": 631, @@ -54874,8 +54874,8 @@ }, "object": { "type": "MemberExpression", - "start": 25816, - "end": 25842, + "start": 25805, + "end": 25831, "loc": { "start": { "line": 631, @@ -54888,8 +54888,8 @@ }, "object": { "type": "Identifier", - "start": 25816, - "end": 25827, + "start": 25805, + "end": 25816, "loc": { "start": { "line": 631, @@ -54905,8 +54905,8 @@ }, "property": { "type": "Identifier", - "start": 25828, - "end": 25842, + "start": 25817, + "end": 25831, "loc": { "start": { "line": 631, @@ -54924,8 +54924,8 @@ }, "property": { "type": "Identifier", - "start": 25843, - "end": 25849, + "start": 25832, + "end": 25838, "loc": { "start": { "line": 631, @@ -54944,8 +54944,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 25852, - "end": 25853, + "start": 25841, + "end": 25842, "loc": { "start": { "line": 631, @@ -54965,8 +54965,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25855, - "end": 26408, + "start": 25844, + "end": 26397, "loc": { "start": { "line": 631, @@ -54980,8 +54980,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25869, - "end": 26009, + "start": 25858, + "end": 25998, "loc": { "start": { "line": 632, @@ -54994,8 +54994,8 @@ }, "expression": { "type": "CallExpression", - "start": 25869, - "end": 26008, + "start": 25858, + "end": 25997, "loc": { "start": { "line": 632, @@ -55008,8 +55008,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25869, - "end": 25877, + "start": 25858, + "end": 25866, "loc": { "start": { "line": 632, @@ -55022,8 +55022,8 @@ }, "object": { "type": "Identifier", - "start": 25869, - "end": 25872, + "start": 25858, + "end": 25861, "loc": { "start": { "line": 632, @@ -55039,8 +55039,8 @@ }, "property": { "type": "Identifier", - "start": 25873, - "end": 25877, + "start": 25862, + "end": 25866, "loc": { "start": { "line": 632, @@ -55059,8 +55059,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25878, - "end": 26007, + "start": 25867, + "end": 25996, "loc": { "start": { "line": 632, @@ -55082,8 +55082,8 @@ }, { "type": "ExpressionStatement", - "start": 26022, - "end": 26118, + "start": 26011, + "end": 26107, "loc": { "start": { "line": 633, @@ -55096,8 +55096,8 @@ }, "expression": { "type": "CallExpression", - "start": 26022, - "end": 26117, + "start": 26011, + "end": 26106, "loc": { "start": { "line": 633, @@ -55110,8 +55110,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26022, - "end": 26030, + "start": 26011, + "end": 26019, "loc": { "start": { "line": 633, @@ -55124,8 +55124,8 @@ }, "object": { "type": "Identifier", - "start": 26022, - "end": 26025, + "start": 26011, + "end": 26014, "loc": { "start": { "line": 633, @@ -55141,8 +55141,8 @@ }, "property": { "type": "Identifier", - "start": 26026, - "end": 26030, + "start": 26015, + "end": 26019, "loc": { "start": { "line": 633, @@ -55161,8 +55161,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26031, - "end": 26116, + "start": 26020, + "end": 26105, "loc": { "start": { "line": 633, @@ -55185,8 +55185,8 @@ { "type": "CommentLine", "value": "TODO: a random factor - fix this", - "start": 26119, - "end": 26153, + "start": 26108, + "end": 26142, "loc": { "start": { "line": 633, @@ -55202,8 +55202,8 @@ }, { "type": "ExpressionStatement", - "start": 26166, - "end": 26324, + "start": 26155, + "end": 26313, "loc": { "start": { "line": 634, @@ -55216,8 +55216,8 @@ }, "expression": { "type": "CallExpression", - "start": 26166, - "end": 26323, + "start": 26155, + "end": 26312, "loc": { "start": { "line": 634, @@ -55230,8 +55230,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26166, - "end": 26174, + "start": 26155, + "end": 26163, "loc": { "start": { "line": 634, @@ -55244,8 +55244,8 @@ }, "object": { "type": "Identifier", - "start": 26166, - "end": 26169, + "start": 26155, + "end": 26158, "loc": { "start": { "line": 634, @@ -55262,8 +55262,8 @@ }, "property": { "type": "Identifier", - "start": 26170, - "end": 26174, + "start": 26159, + "end": 26163, "loc": { "start": { "line": 634, @@ -55283,8 +55283,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 26175, - "end": 26322, + "start": 26164, + "end": 26311, "loc": { "start": { "line": 634, @@ -55297,8 +55297,8 @@ }, "left": { "type": "BinaryExpression", - "start": 26175, - "end": 26262, + "start": 26164, + "end": 26251, "loc": { "start": { "line": 634, @@ -55311,8 +55311,8 @@ }, "left": { "type": "StringLiteral", - "start": 26175, - "end": 26199, + "start": 26164, + "end": 26188, "loc": { "start": { "line": 634, @@ -55332,8 +55332,8 @@ "operator": "+", "right": { "type": "MemberExpression", - "start": 26202, - "end": 26262, + "start": 26191, + "end": 26251, "loc": { "start": { "line": 634, @@ -55346,8 +55346,8 @@ }, "object": { "type": "Identifier", - "start": 26202, - "end": 26222, + "start": 26191, + "end": 26211, "loc": { "start": { "line": 634, @@ -55363,8 +55363,8 @@ }, "property": { "type": "MemberExpression", - "start": 26223, - "end": 26261, + "start": 26212, + "end": 26250, "loc": { "start": { "line": 634, @@ -55377,8 +55377,8 @@ }, "object": { "type": "MemberExpression", - "start": 26223, - "end": 26252, + "start": 26212, + "end": 26241, "loc": { "start": { "line": 634, @@ -55391,8 +55391,8 @@ }, "object": { "type": "MemberExpression", - "start": 26223, - "end": 26249, + "start": 26212, + "end": 26238, "loc": { "start": { "line": 634, @@ -55405,8 +55405,8 @@ }, "object": { "type": "Identifier", - "start": 26223, - "end": 26234, + "start": 26212, + "end": 26223, "loc": { "start": { "line": 634, @@ -55422,8 +55422,8 @@ }, "property": { "type": "Identifier", - "start": 26235, - "end": 26249, + "start": 26224, + "end": 26238, "loc": { "start": { "line": 634, @@ -55441,8 +55441,8 @@ }, "property": { "type": "NumericLiteral", - "start": 26250, - "end": 26251, + "start": 26239, + "end": 26240, "loc": { "start": { "line": 634, @@ -55463,8 +55463,8 @@ }, "property": { "type": "Identifier", - "start": 26253, - "end": 26261, + "start": 26242, + "end": 26250, "loc": { "start": { "line": 634, @@ -55486,8 +55486,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 26265, - "end": 26322, + "start": 26254, + "end": 26311, "loc": { "start": { "line": 634, @@ -55512,8 +55512,8 @@ { "type": "CommentLine", "value": "TODO: a random factor - fix this", - "start": 26119, - "end": 26153, + "start": 26108, + "end": 26142, "loc": { "start": { "line": 633, @@ -55529,8 +55529,8 @@ }, { "type": "ExpressionStatement", - "start": 26337, - "end": 26371, + "start": 26326, + "end": 26360, "loc": { "start": { "line": 635, @@ -55543,8 +55543,8 @@ }, "expression": { "type": "CallExpression", - "start": 26337, - "end": 26370, + "start": 26326, + "end": 26359, "loc": { "start": { "line": 635, @@ -55557,8 +55557,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26337, - "end": 26345, + "start": 26326, + "end": 26334, "loc": { "start": { "line": 635, @@ -55571,8 +55571,8 @@ }, "object": { "type": "Identifier", - "start": 26337, - "end": 26340, + "start": 26326, + "end": 26329, "loc": { "start": { "line": 635, @@ -55588,8 +55588,8 @@ }, "property": { "type": "Identifier", - "start": 26341, - "end": 26345, + "start": 26330, + "end": 26334, "loc": { "start": { "line": 635, @@ -55608,8 +55608,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26346, - "end": 26369, + "start": 26335, + "end": 26358, "loc": { "start": { "line": 635, @@ -55631,8 +55631,8 @@ }, { "type": "ExpressionStatement", - "start": 26384, - "end": 26398, + "start": 26373, + "end": 26387, "loc": { "start": { "line": 636, @@ -55645,8 +55645,8 @@ }, "expression": { "type": "CallExpression", - "start": 26384, - "end": 26397, + "start": 26373, + "end": 26386, "loc": { "start": { "line": 636, @@ -55659,8 +55659,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26384, - "end": 26392, + "start": 26373, + "end": 26381, "loc": { "start": { "line": 636, @@ -55673,8 +55673,8 @@ }, "object": { "type": "Identifier", - "start": 26384, - "end": 26387, + "start": 26373, + "end": 26376, "loc": { "start": { "line": 636, @@ -55690,8 +55690,8 @@ }, "property": { "type": "Identifier", - "start": 26388, - "end": 26392, + "start": 26377, + "end": 26381, "loc": { "start": { "line": 636, @@ -55710,8 +55710,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26393, - "end": 26396, + "start": 26382, + "end": 26385, "loc": { "start": { "line": 636, @@ -55740,8 +55740,8 @@ { "type": "CommentLine", "value": " SPECULAR BRDF EVALUATION", - "start": 26418, - "end": 26445, + "start": 26407, + "end": 26434, "loc": { "start": { "line": 639, @@ -55757,8 +55757,8 @@ }, { "type": "ExpressionStatement", - "start": 26455, - "end": 26535, + "start": 26444, + "end": 26524, "loc": { "start": { "line": 641, @@ -55771,8 +55771,8 @@ }, "expression": { "type": "CallExpression", - "start": 26455, - "end": 26534, + "start": 26444, + "end": 26523, "loc": { "start": { "line": 641, @@ -55785,8 +55785,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26455, - "end": 26463, + "start": 26444, + "end": 26452, "loc": { "start": { "line": 641, @@ -55799,8 +55799,8 @@ }, "object": { "type": "Identifier", - "start": 26455, - "end": 26458, + "start": 26444, + "end": 26447, "loc": { "start": { "line": 641, @@ -55817,8 +55817,8 @@ }, "property": { "type": "Identifier", - "start": 26459, - "end": 26463, + "start": 26448, + "end": 26452, "loc": { "start": { "line": 641, @@ -55838,8 +55838,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26464, - "end": 26533, + "start": 26453, + "end": 26522, "loc": { "start": { "line": 641, @@ -55863,8 +55863,8 @@ { "type": "CommentLine", "value": " SPECULAR BRDF EVALUATION", - "start": 26418, - "end": 26445, + "start": 26407, + "end": 26434, "loc": { "start": { "line": 639, @@ -55880,8 +55880,8 @@ }, { "type": "ExpressionStatement", - "start": 26544, - "end": 26623, + "start": 26533, + "end": 26612, "loc": { "start": { "line": 642, @@ -55894,8 +55894,8 @@ }, "expression": { "type": "CallExpression", - "start": 26544, - "end": 26622, + "start": 26533, + "end": 26611, "loc": { "start": { "line": 642, @@ -55908,8 +55908,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26544, - "end": 26552, + "start": 26533, + "end": 26541, "loc": { "start": { "line": 642, @@ -55922,8 +55922,8 @@ }, "object": { "type": "Identifier", - "start": 26544, - "end": 26547, + "start": 26533, + "end": 26536, "loc": { "start": { "line": 642, @@ -55939,8 +55939,8 @@ }, "property": { "type": "Identifier", - "start": 26548, - "end": 26552, + "start": 26537, + "end": 26541, "loc": { "start": { "line": 642, @@ -55959,8 +55959,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26553, - "end": 26621, + "start": 26542, + "end": 26610, "loc": { "start": { "line": 642, @@ -55982,8 +55982,8 @@ }, { "type": "ExpressionStatement", - "start": 26632, - "end": 26705, + "start": 26621, + "end": 26694, "loc": { "start": { "line": 643, @@ -55996,8 +55996,8 @@ }, "expression": { "type": "CallExpression", - "start": 26632, - "end": 26704, + "start": 26621, + "end": 26693, "loc": { "start": { "line": 643, @@ -56010,8 +56010,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26632, - "end": 26640, + "start": 26621, + "end": 26629, "loc": { "start": { "line": 643, @@ -56024,8 +56024,8 @@ }, "object": { "type": "Identifier", - "start": 26632, - "end": 26635, + "start": 26621, + "end": 26624, "loc": { "start": { "line": 643, @@ -56041,8 +56041,8 @@ }, "property": { "type": "Identifier", - "start": 26636, - "end": 26640, + "start": 26625, + "end": 26629, "loc": { "start": { "line": 643, @@ -56061,8 +56061,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26641, - "end": 26703, + "start": 26630, + "end": 26692, "loc": { "start": { "line": 643, @@ -56084,8 +56084,8 @@ }, { "type": "ExpressionStatement", - "start": 26714, - "end": 26728, + "start": 26703, + "end": 26717, "loc": { "start": { "line": 644, @@ -56098,8 +56098,8 @@ }, "expression": { "type": "CallExpression", - "start": 26714, - "end": 26727, + "start": 26703, + "end": 26716, "loc": { "start": { "line": 644, @@ -56112,8 +56112,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26714, - "end": 26722, + "start": 26703, + "end": 26711, "loc": { "start": { "line": 644, @@ -56126,8 +56126,8 @@ }, "object": { "type": "Identifier", - "start": 26714, - "end": 26717, + "start": 26703, + "end": 26706, "loc": { "start": { "line": 644, @@ -56143,8 +56143,8 @@ }, "property": { "type": "Identifier", - "start": 26718, - "end": 26722, + "start": 26707, + "end": 26711, "loc": { "start": { "line": 644, @@ -56163,8 +56163,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26723, - "end": 26726, + "start": 26712, + "end": 26715, "loc": { "start": { "line": 644, @@ -56186,8 +56186,8 @@ }, { "type": "ExpressionStatement", - "start": 26738, - "end": 26836, + "start": 26727, + "end": 26825, "loc": { "start": { "line": 646, @@ -56200,8 +56200,8 @@ }, "expression": { "type": "CallExpression", - "start": 26738, - "end": 26835, + "start": 26727, + "end": 26824, "loc": { "start": { "line": 646, @@ -56214,8 +56214,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26738, - "end": 26746, + "start": 26727, + "end": 26735, "loc": { "start": { "line": 646, @@ -56228,8 +56228,8 @@ }, "object": { "type": "Identifier", - "start": 26738, - "end": 26741, + "start": 26727, + "end": 26730, "loc": { "start": { "line": 646, @@ -56245,8 +56245,8 @@ }, "property": { "type": "Identifier", - "start": 26742, - "end": 26746, + "start": 26731, + "end": 26735, "loc": { "start": { "line": 646, @@ -56265,8 +56265,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26747, - "end": 26834, + "start": 26736, + "end": 26823, "loc": { "start": { "line": 646, @@ -56288,8 +56288,8 @@ }, { "type": "ExpressionStatement", - "start": 26845, - "end": 26890, + "start": 26834, + "end": 26879, "loc": { "start": { "line": 647, @@ -56302,8 +56302,8 @@ }, "expression": { "type": "CallExpression", - "start": 26845, - "end": 26889, + "start": 26834, + "end": 26878, "loc": { "start": { "line": 647, @@ -56316,8 +56316,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26845, - "end": 26853, + "start": 26834, + "end": 26842, "loc": { "start": { "line": 647, @@ -56330,8 +56330,8 @@ }, "object": { "type": "Identifier", - "start": 26845, - "end": 26848, + "start": 26834, + "end": 26837, "loc": { "start": { "line": 647, @@ -56347,8 +56347,8 @@ }, "property": { "type": "Identifier", - "start": 26849, - "end": 26853, + "start": 26838, + "end": 26842, "loc": { "start": { "line": 647, @@ -56367,8 +56367,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26854, - "end": 26888, + "start": 26843, + "end": 26877, "loc": { "start": { "line": 647, @@ -56390,8 +56390,8 @@ }, { "type": "ExpressionStatement", - "start": 26899, - "end": 26980, + "start": 26888, + "end": 26969, "loc": { "start": { "line": 648, @@ -56404,8 +56404,8 @@ }, "expression": { "type": "CallExpression", - "start": 26899, - "end": 26979, + "start": 26888, + "end": 26968, "loc": { "start": { "line": 648, @@ -56418,8 +56418,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26899, - "end": 26907, + "start": 26888, + "end": 26896, "loc": { "start": { "line": 648, @@ -56432,8 +56432,8 @@ }, "object": { "type": "Identifier", - "start": 26899, - "end": 26902, + "start": 26888, + "end": 26891, "loc": { "start": { "line": 648, @@ -56449,8 +56449,8 @@ }, "property": { "type": "Identifier", - "start": 26903, - "end": 26907, + "start": 26892, + "end": 26896, "loc": { "start": { "line": 648, @@ -56469,8 +56469,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26908, - "end": 26978, + "start": 26897, + "end": 26967, "loc": { "start": { "line": 648, @@ -56492,8 +56492,8 @@ }, { "type": "ExpressionStatement", - "start": 26989, - "end": 27070, + "start": 26978, + "end": 27059, "loc": { "start": { "line": 649, @@ -56506,8 +56506,8 @@ }, "expression": { "type": "CallExpression", - "start": 26989, - "end": 27069, + "start": 26978, + "end": 27058, "loc": { "start": { "line": 649, @@ -56520,8 +56520,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26989, - "end": 26997, + "start": 26978, + "end": 26986, "loc": { "start": { "line": 649, @@ -56534,8 +56534,8 @@ }, "object": { "type": "Identifier", - "start": 26989, - "end": 26992, + "start": 26978, + "end": 26981, "loc": { "start": { "line": 649, @@ -56551,8 +56551,8 @@ }, "property": { "type": "Identifier", - "start": 26993, - "end": 26997, + "start": 26982, + "end": 26986, "loc": { "start": { "line": 649, @@ -56571,8 +56571,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26998, - "end": 27068, + "start": 26987, + "end": 27057, "loc": { "start": { "line": 649, @@ -56594,8 +56594,8 @@ }, { "type": "ExpressionStatement", - "start": 27079, - "end": 27120, + "start": 27068, + "end": 27109, "loc": { "start": { "line": 650, @@ -56608,8 +56608,8 @@ }, "expression": { "type": "CallExpression", - "start": 27079, - "end": 27119, + "start": 27068, + "end": 27108, "loc": { "start": { "line": 650, @@ -56622,8 +56622,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27079, - "end": 27087, + "start": 27068, + "end": 27076, "loc": { "start": { "line": 650, @@ -56636,8 +56636,8 @@ }, "object": { "type": "Identifier", - "start": 27079, - "end": 27082, + "start": 27068, + "end": 27071, "loc": { "start": { "line": 650, @@ -56653,8 +56653,8 @@ }, "property": { "type": "Identifier", - "start": 27083, - "end": 27087, + "start": 27072, + "end": 27076, "loc": { "start": { "line": 650, @@ -56673,8 +56673,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27088, - "end": 27118, + "start": 27077, + "end": 27107, "loc": { "start": { "line": 650, @@ -56696,8 +56696,8 @@ }, { "type": "ExpressionStatement", - "start": 27129, - "end": 27143, + "start": 27118, + "end": 27132, "loc": { "start": { "line": 651, @@ -56710,8 +56710,8 @@ }, "expression": { "type": "CallExpression", - "start": 27129, - "end": 27142, + "start": 27118, + "end": 27131, "loc": { "start": { "line": 651, @@ -56724,8 +56724,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27129, - "end": 27137, + "start": 27118, + "end": 27126, "loc": { "start": { "line": 651, @@ -56738,8 +56738,8 @@ }, "object": { "type": "Identifier", - "start": 27129, - "end": 27132, + "start": 27118, + "end": 27121, "loc": { "start": { "line": 651, @@ -56755,8 +56755,8 @@ }, "property": { "type": "Identifier", - "start": 27133, - "end": 27137, + "start": 27122, + "end": 27126, "loc": { "start": { "line": 651, @@ -56775,8 +56775,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27138, - "end": 27141, + "start": 27127, + "end": 27130, "loc": { "start": { "line": 651, @@ -56798,8 +56798,8 @@ }, { "type": "ExpressionStatement", - "start": 27153, - "end": 27261, + "start": 27142, + "end": 27250, "loc": { "start": { "line": 653, @@ -56812,8 +56812,8 @@ }, "expression": { "type": "CallExpression", - "start": 27153, - "end": 27260, + "start": 27142, + "end": 27249, "loc": { "start": { "line": 653, @@ -56826,8 +56826,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27153, - "end": 27161, + "start": 27142, + "end": 27150, "loc": { "start": { "line": 653, @@ -56840,8 +56840,8 @@ }, "object": { "type": "Identifier", - "start": 27153, - "end": 27156, + "start": 27142, + "end": 27145, "loc": { "start": { "line": 653, @@ -56857,8 +56857,8 @@ }, "property": { "type": "Identifier", - "start": 27157, - "end": 27161, + "start": 27146, + "end": 27150, "loc": { "start": { "line": 653, @@ -56877,8 +56877,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27162, - "end": 27259, + "start": 27151, + "end": 27248, "loc": { "start": { "line": 653, @@ -56900,8 +56900,8 @@ }, { "type": "ExpressionStatement", - "start": 27270, - "end": 27315, + "start": 27259, + "end": 27304, "loc": { "start": { "line": 654, @@ -56914,8 +56914,8 @@ }, "expression": { "type": "CallExpression", - "start": 27270, - "end": 27314, + "start": 27259, + "end": 27303, "loc": { "start": { "line": 654, @@ -56928,8 +56928,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27270, - "end": 27278, + "start": 27259, + "end": 27267, "loc": { "start": { "line": 654, @@ -56942,8 +56942,8 @@ }, "object": { "type": "Identifier", - "start": 27270, - "end": 27273, + "start": 27259, + "end": 27262, "loc": { "start": { "line": 654, @@ -56959,8 +56959,8 @@ }, "property": { "type": "Identifier", - "start": 27274, - "end": 27278, + "start": 27263, + "end": 27267, "loc": { "start": { "line": 654, @@ -56979,8 +56979,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27279, - "end": 27313, + "start": 27268, + "end": 27302, "loc": { "start": { "line": 654, @@ -57002,8 +57002,8 @@ }, { "type": "ExpressionStatement", - "start": 27324, - "end": 27405, + "start": 27313, + "end": 27394, "loc": { "start": { "line": 655, @@ -57016,8 +57016,8 @@ }, "expression": { "type": "CallExpression", - "start": 27324, - "end": 27404, + "start": 27313, + "end": 27393, "loc": { "start": { "line": 655, @@ -57030,8 +57030,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27324, - "end": 27332, + "start": 27313, + "end": 27321, "loc": { "start": { "line": 655, @@ -57044,8 +57044,8 @@ }, "object": { "type": "Identifier", - "start": 27324, - "end": 27327, + "start": 27313, + "end": 27316, "loc": { "start": { "line": 655, @@ -57061,8 +57061,8 @@ }, "property": { "type": "Identifier", - "start": 27328, - "end": 27332, + "start": 27317, + "end": 27321, "loc": { "start": { "line": 655, @@ -57081,8 +57081,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27333, - "end": 27403, + "start": 27322, + "end": 27392, "loc": { "start": { "line": 655, @@ -57104,8 +57104,8 @@ }, { "type": "ExpressionStatement", - "start": 27414, - "end": 27495, + "start": 27403, + "end": 27484, "loc": { "start": { "line": 656, @@ -57118,8 +57118,8 @@ }, "expression": { "type": "CallExpression", - "start": 27414, - "end": 27494, + "start": 27403, + "end": 27483, "loc": { "start": { "line": 656, @@ -57132,8 +57132,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27414, - "end": 27422, + "start": 27403, + "end": 27411, "loc": { "start": { "line": 656, @@ -57146,8 +57146,8 @@ }, "object": { "type": "Identifier", - "start": 27414, - "end": 27417, + "start": 27403, + "end": 27406, "loc": { "start": { "line": 656, @@ -57163,8 +57163,8 @@ }, "property": { "type": "Identifier", - "start": 27418, - "end": 27422, + "start": 27407, + "end": 27411, "loc": { "start": { "line": 656, @@ -57183,8 +57183,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27423, - "end": 27493, + "start": 27412, + "end": 27482, "loc": { "start": { "line": 656, @@ -57206,8 +57206,8 @@ }, { "type": "ExpressionStatement", - "start": 27504, - "end": 27557, + "start": 27493, + "end": 27546, "loc": { "start": { "line": 657, @@ -57220,8 +57220,8 @@ }, "expression": { "type": "CallExpression", - "start": 27504, - "end": 27556, + "start": 27493, + "end": 27545, "loc": { "start": { "line": 657, @@ -57234,8 +57234,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27504, - "end": 27512, + "start": 27493, + "end": 27501, "loc": { "start": { "line": 657, @@ -57248,8 +57248,8 @@ }, "object": { "type": "Identifier", - "start": 27504, - "end": 27507, + "start": 27493, + "end": 27496, "loc": { "start": { "line": 657, @@ -57265,8 +57265,8 @@ }, "property": { "type": "Identifier", - "start": 27508, - "end": 27512, + "start": 27497, + "end": 27501, "loc": { "start": { "line": 657, @@ -57285,8 +57285,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27513, - "end": 27555, + "start": 27502, + "end": 27544, "loc": { "start": { "line": 657, @@ -57308,8 +57308,8 @@ }, { "type": "ExpressionStatement", - "start": 27566, - "end": 27580, + "start": 27555, + "end": 27569, "loc": { "start": { "line": 658, @@ -57322,8 +57322,8 @@ }, "expression": { "type": "CallExpression", - "start": 27566, - "end": 27579, + "start": 27555, + "end": 27568, "loc": { "start": { "line": 658, @@ -57336,8 +57336,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27566, - "end": 27574, + "start": 27555, + "end": 27563, "loc": { "start": { "line": 658, @@ -57350,8 +57350,8 @@ }, "object": { "type": "Identifier", - "start": 27566, - "end": 27569, + "start": 27555, + "end": 27558, "loc": { "start": { "line": 658, @@ -57367,8 +57367,8 @@ }, "property": { "type": "Identifier", - "start": 27570, - "end": 27574, + "start": 27559, + "end": 27563, "loc": { "start": { "line": 658, @@ -57387,8 +57387,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27575, - "end": 27578, + "start": 27564, + "end": 27567, "loc": { "start": { "line": 658, @@ -57410,8 +57410,8 @@ }, { "type": "ExpressionStatement", - "start": 27590, - "end": 27660, + "start": 27579, + "end": 27649, "loc": { "start": { "line": 660, @@ -57424,8 +57424,8 @@ }, "expression": { "type": "CallExpression", - "start": 27590, - "end": 27659, + "start": 27579, + "end": 27648, "loc": { "start": { "line": 660, @@ -57438,8 +57438,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27590, - "end": 27598, + "start": 27579, + "end": 27587, "loc": { "start": { "line": 660, @@ -57452,8 +57452,8 @@ }, "object": { "type": "Identifier", - "start": 27590, - "end": 27593, + "start": 27579, + "end": 27582, "loc": { "start": { "line": 660, @@ -57469,8 +57469,8 @@ }, "property": { "type": "Identifier", - "start": 27594, - "end": 27598, + "start": 27583, + "end": 27587, "loc": { "start": { "line": 660, @@ -57489,8 +57489,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27599, - "end": 27658, + "start": 27588, + "end": 27647, "loc": { "start": { "line": 660, @@ -57512,8 +57512,8 @@ }, { "type": "ExpressionStatement", - "start": 27669, - "end": 27714, + "start": 27658, + "end": 27703, "loc": { "start": { "line": 661, @@ -57526,8 +57526,8 @@ }, "expression": { "type": "CallExpression", - "start": 27669, - "end": 27713, + "start": 27658, + "end": 27702, "loc": { "start": { "line": 661, @@ -57540,8 +57540,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27669, - "end": 27677, + "start": 27658, + "end": 27666, "loc": { "start": { "line": 661, @@ -57554,8 +57554,8 @@ }, "object": { "type": "Identifier", - "start": 27669, - "end": 27672, + "start": 27658, + "end": 27661, "loc": { "start": { "line": 661, @@ -57571,8 +57571,8 @@ }, "property": { "type": "Identifier", - "start": 27673, - "end": 27677, + "start": 27662, + "end": 27666, "loc": { "start": { "line": 661, @@ -57591,8 +57591,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27678, - "end": 27712, + "start": 27667, + "end": 27701, "loc": { "start": { "line": 661, @@ -57614,8 +57614,8 @@ }, { "type": "ExpressionStatement", - "start": 27723, - "end": 27791, + "start": 27712, + "end": 27780, "loc": { "start": { "line": 662, @@ -57628,8 +57628,8 @@ }, "expression": { "type": "CallExpression", - "start": 27723, - "end": 27790, + "start": 27712, + "end": 27779, "loc": { "start": { "line": 662, @@ -57642,8 +57642,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27723, - "end": 27731, + "start": 27712, + "end": 27720, "loc": { "start": { "line": 662, @@ -57656,8 +57656,8 @@ }, "object": { "type": "Identifier", - "start": 27723, - "end": 27726, + "start": 27712, + "end": 27715, "loc": { "start": { "line": 662, @@ -57673,8 +57673,8 @@ }, "property": { "type": "Identifier", - "start": 27727, - "end": 27731, + "start": 27716, + "end": 27720, "loc": { "start": { "line": 662, @@ -57693,8 +57693,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27732, - "end": 27789, + "start": 27721, + "end": 27778, "loc": { "start": { "line": 662, @@ -57716,8 +57716,8 @@ }, { "type": "ExpressionStatement", - "start": 27800, - "end": 27861, + "start": 27789, + "end": 27850, "loc": { "start": { "line": 663, @@ -57730,8 +57730,8 @@ }, "expression": { "type": "CallExpression", - "start": 27800, - "end": 27860, + "start": 27789, + "end": 27849, "loc": { "start": { "line": 663, @@ -57744,8 +57744,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27800, - "end": 27808, + "start": 27789, + "end": 27797, "loc": { "start": { "line": 663, @@ -57758,8 +57758,8 @@ }, "object": { "type": "Identifier", - "start": 27800, - "end": 27803, + "start": 27789, + "end": 27792, "loc": { "start": { "line": 663, @@ -57775,8 +57775,8 @@ }, "property": { "type": "Identifier", - "start": 27804, - "end": 27808, + "start": 27793, + "end": 27797, "loc": { "start": { "line": 663, @@ -57795,8 +57795,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27809, - "end": 27859, + "start": 27798, + "end": 27848, "loc": { "start": { "line": 663, @@ -57818,8 +57818,8 @@ }, { "type": "ExpressionStatement", - "start": 27870, - "end": 27884, + "start": 27859, + "end": 27873, "loc": { "start": { "line": 664, @@ -57832,8 +57832,8 @@ }, "expression": { "type": "CallExpression", - "start": 27870, - "end": 27883, + "start": 27859, + "end": 27872, "loc": { "start": { "line": 664, @@ -57846,8 +57846,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27870, - "end": 27878, + "start": 27859, + "end": 27867, "loc": { "start": { "line": 664, @@ -57860,8 +57860,8 @@ }, "object": { "type": "Identifier", - "start": 27870, - "end": 27873, + "start": 27859, + "end": 27862, "loc": { "start": { "line": 664, @@ -57877,8 +57877,8 @@ }, "property": { "type": "Identifier", - "start": 27874, - "end": 27878, + "start": 27863, + "end": 27867, "loc": { "start": { "line": 664, @@ -57897,8 +57897,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27879, - "end": 27882, + "start": 27868, + "end": 27871, "loc": { "start": { "line": 664, @@ -57920,8 +57920,8 @@ }, { "type": "ExpressionStatement", - "start": 27894, - "end": 28052, + "start": 27883, + "end": 28041, "loc": { "start": { "line": 666, @@ -57934,8 +57934,8 @@ }, "expression": { "type": "CallExpression", - "start": 27894, - "end": 28051, + "start": 27883, + "end": 28040, "loc": { "start": { "line": 666, @@ -57948,8 +57948,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27894, - "end": 27902, + "start": 27883, + "end": 27891, "loc": { "start": { "line": 666, @@ -57962,8 +57962,8 @@ }, "object": { "type": "Identifier", - "start": 27894, - "end": 27897, + "start": 27883, + "end": 27886, "loc": { "start": { "line": 666, @@ -57979,8 +57979,8 @@ }, "property": { "type": "Identifier", - "start": 27898, - "end": 27902, + "start": 27887, + "end": 27891, "loc": { "start": { "line": 666, @@ -57999,8 +57999,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27903, - "end": 28050, + "start": 27892, + "end": 28039, "loc": { "start": { "line": 666, @@ -58022,8 +58022,8 @@ }, { "type": "ExpressionStatement", - "start": 28061, - "end": 28117, + "start": 28050, + "end": 28106, "loc": { "start": { "line": 667, @@ -58036,8 +58036,8 @@ }, "expression": { "type": "CallExpression", - "start": 28061, - "end": 28116, + "start": 28050, + "end": 28105, "loc": { "start": { "line": 667, @@ -58050,8 +58050,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28061, - "end": 28069, + "start": 28050, + "end": 28058, "loc": { "start": { "line": 667, @@ -58064,8 +58064,8 @@ }, "object": { "type": "Identifier", - "start": 28061, - "end": 28064, + "start": 28050, + "end": 28053, "loc": { "start": { "line": 667, @@ -58081,8 +58081,8 @@ }, "property": { "type": "Identifier", - "start": 28065, - "end": 28069, + "start": 28054, + "end": 28058, "loc": { "start": { "line": 667, @@ -58101,8 +58101,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28070, - "end": 28115, + "start": 28059, + "end": 28104, "loc": { "start": { "line": 667, @@ -58124,8 +58124,8 @@ }, { "type": "ExpressionStatement", - "start": 28126, - "end": 28216, + "start": 28115, + "end": 28205, "loc": { "start": { "line": 668, @@ -58138,8 +58138,8 @@ }, "expression": { "type": "CallExpression", - "start": 28126, - "end": 28215, + "start": 28115, + "end": 28204, "loc": { "start": { "line": 668, @@ -58152,8 +58152,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28126, - "end": 28134, + "start": 28115, + "end": 28123, "loc": { "start": { "line": 668, @@ -58166,8 +58166,8 @@ }, "object": { "type": "Identifier", - "start": 28126, - "end": 28129, + "start": 28115, + "end": 28118, "loc": { "start": { "line": 668, @@ -58183,8 +58183,8 @@ }, "property": { "type": "Identifier", - "start": 28130, - "end": 28134, + "start": 28119, + "end": 28123, "loc": { "start": { "line": 668, @@ -58203,8 +58203,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28135, - "end": 28214, + "start": 28124, + "end": 28203, "loc": { "start": { "line": 668, @@ -58226,8 +58226,8 @@ }, { "type": "ExpressionStatement", - "start": 28225, - "end": 28319, + "start": 28214, + "end": 28308, "loc": { "start": { "line": 669, @@ -58240,8 +58240,8 @@ }, "expression": { "type": "CallExpression", - "start": 28225, - "end": 28318, + "start": 28214, + "end": 28307, "loc": { "start": { "line": 669, @@ -58254,8 +58254,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28225, - "end": 28233, + "start": 28214, + "end": 28222, "loc": { "start": { "line": 669, @@ -58268,8 +58268,8 @@ }, "object": { "type": "Identifier", - "start": 28225, - "end": 28228, + "start": 28214, + "end": 28217, "loc": { "start": { "line": 669, @@ -58285,8 +58285,8 @@ }, "property": { "type": "Identifier", - "start": 28229, - "end": 28233, + "start": 28218, + "end": 28222, "loc": { "start": { "line": 669, @@ -58305,8 +58305,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28234, - "end": 28317, + "start": 28223, + "end": 28306, "loc": { "start": { "line": 669, @@ -58328,8 +58328,8 @@ }, { "type": "ExpressionStatement", - "start": 28328, - "end": 28418, + "start": 28317, + "end": 28407, "loc": { "start": { "line": 670, @@ -58342,8 +58342,8 @@ }, "expression": { "type": "CallExpression", - "start": 28328, - "end": 28417, + "start": 28317, + "end": 28406, "loc": { "start": { "line": 670, @@ -58356,8 +58356,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28328, - "end": 28336, + "start": 28317, + "end": 28325, "loc": { "start": { "line": 670, @@ -58370,8 +58370,8 @@ }, "object": { "type": "Identifier", - "start": 28328, - "end": 28331, + "start": 28317, + "end": 28320, "loc": { "start": { "line": 670, @@ -58387,8 +58387,8 @@ }, "property": { "type": "Identifier", - "start": 28332, - "end": 28336, + "start": 28321, + "end": 28325, "loc": { "start": { "line": 670, @@ -58407,8 +58407,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28337, - "end": 28416, + "start": 28326, + "end": 28405, "loc": { "start": { "line": 670, @@ -58430,8 +58430,8 @@ }, { "type": "ExpressionStatement", - "start": 28427, - "end": 28505, + "start": 28416, + "end": 28494, "loc": { "start": { "line": 671, @@ -58444,8 +58444,8 @@ }, "expression": { "type": "CallExpression", - "start": 28427, - "end": 28504, + "start": 28416, + "end": 28493, "loc": { "start": { "line": 671, @@ -58458,8 +58458,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28427, - "end": 28435, + "start": 28416, + "end": 28424, "loc": { "start": { "line": 671, @@ -58472,8 +58472,8 @@ }, "object": { "type": "Identifier", - "start": 28427, - "end": 28430, + "start": 28416, + "end": 28419, "loc": { "start": { "line": 671, @@ -58489,8 +58489,8 @@ }, "property": { "type": "Identifier", - "start": 28431, - "end": 28435, + "start": 28420, + "end": 28424, "loc": { "start": { "line": 671, @@ -58509,8 +58509,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28436, - "end": 28503, + "start": 28425, + "end": 28492, "loc": { "start": { "line": 671, @@ -58532,8 +58532,8 @@ }, { "type": "ExpressionStatement", - "start": 28514, - "end": 28596, + "start": 28503, + "end": 28585, "loc": { "start": { "line": 672, @@ -58546,8 +58546,8 @@ }, "expression": { "type": "CallExpression", - "start": 28514, - "end": 28595, + "start": 28503, + "end": 28584, "loc": { "start": { "line": 672, @@ -58560,8 +58560,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28514, - "end": 28522, + "start": 28503, + "end": 28511, "loc": { "start": { "line": 672, @@ -58574,8 +58574,8 @@ }, "object": { "type": "Identifier", - "start": 28514, - "end": 28517, + "start": 28503, + "end": 28506, "loc": { "start": { "line": 672, @@ -58591,8 +58591,8 @@ }, "property": { "type": "Identifier", - "start": 28518, - "end": 28522, + "start": 28507, + "end": 28511, "loc": { "start": { "line": 672, @@ -58611,8 +58611,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28523, - "end": 28594, + "start": 28512, + "end": 28583, "loc": { "start": { "line": 672, @@ -58634,8 +58634,8 @@ }, { "type": "ExpressionStatement", - "start": 28605, - "end": 28665, + "start": 28594, + "end": 28654, "loc": { "start": { "line": 673, @@ -58648,8 +58648,8 @@ }, "expression": { "type": "CallExpression", - "start": 28605, - "end": 28664, + "start": 28594, + "end": 28653, "loc": { "start": { "line": 673, @@ -58662,8 +58662,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28605, - "end": 28613, + "start": 28594, + "end": 28602, "loc": { "start": { "line": 673, @@ -58676,8 +58676,8 @@ }, "object": { "type": "Identifier", - "start": 28605, - "end": 28608, + "start": 28594, + "end": 28597, "loc": { "start": { "line": 673, @@ -58693,8 +58693,8 @@ }, "property": { "type": "Identifier", - "start": 28609, - "end": 28613, + "start": 28598, + "end": 28602, "loc": { "start": { "line": 673, @@ -58713,8 +58713,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28614, - "end": 28663, + "start": 28603, + "end": 28652, "loc": { "start": { "line": 673, @@ -58736,8 +58736,8 @@ }, { "type": "ExpressionStatement", - "start": 28674, - "end": 28745, + "start": 28663, + "end": 28734, "loc": { "start": { "line": 674, @@ -58750,8 +58750,8 @@ }, "expression": { "type": "CallExpression", - "start": 28674, - "end": 28744, + "start": 28663, + "end": 28733, "loc": { "start": { "line": 674, @@ -58764,8 +58764,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28674, - "end": 28682, + "start": 28663, + "end": 28671, "loc": { "start": { "line": 674, @@ -58778,8 +58778,8 @@ }, "object": { "type": "Identifier", - "start": 28674, - "end": 28677, + "start": 28663, + "end": 28666, "loc": { "start": { "line": 674, @@ -58795,8 +58795,8 @@ }, "property": { "type": "Identifier", - "start": 28678, - "end": 28682, + "start": 28667, + "end": 28671, "loc": { "start": { "line": 674, @@ -58815,8 +58815,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28683, - "end": 28743, + "start": 28672, + "end": 28732, "loc": { "start": { "line": 674, @@ -58838,8 +58838,8 @@ }, { "type": "ExpressionStatement", - "start": 28754, - "end": 28802, + "start": 28743, + "end": 28791, "loc": { "start": { "line": 675, @@ -58852,8 +58852,8 @@ }, "expression": { "type": "CallExpression", - "start": 28754, - "end": 28801, + "start": 28743, + "end": 28790, "loc": { "start": { "line": 675, @@ -58866,8 +58866,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28754, - "end": 28762, + "start": 28743, + "end": 28751, "loc": { "start": { "line": 675, @@ -58880,8 +58880,8 @@ }, "object": { "type": "Identifier", - "start": 28754, - "end": 28757, + "start": 28743, + "end": 28746, "loc": { "start": { "line": 675, @@ -58897,8 +58897,8 @@ }, "property": { "type": "Identifier", - "start": 28758, - "end": 28762, + "start": 28747, + "end": 28751, "loc": { "start": { "line": 675, @@ -58917,8 +58917,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28763, - "end": 28800, + "start": 28752, + "end": 28789, "loc": { "start": { "line": 675, @@ -58940,8 +58940,8 @@ }, { "type": "ExpressionStatement", - "start": 28811, - "end": 28846, + "start": 28800, + "end": 28835, "loc": { "start": { "line": 676, @@ -58954,8 +58954,8 @@ }, "expression": { "type": "CallExpression", - "start": 28811, - "end": 28845, + "start": 28800, + "end": 28834, "loc": { "start": { "line": 676, @@ -58968,8 +58968,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28811, - "end": 28819, + "start": 28800, + "end": 28808, "loc": { "start": { "line": 676, @@ -58982,8 +58982,8 @@ }, "object": { "type": "Identifier", - "start": 28811, - "end": 28814, + "start": 28800, + "end": 28803, "loc": { "start": { "line": 676, @@ -58999,8 +58999,8 @@ }, "property": { "type": "Identifier", - "start": 28815, - "end": 28819, + "start": 28804, + "end": 28808, "loc": { "start": { "line": 676, @@ -59019,8 +59019,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28820, - "end": 28844, + "start": 28809, + "end": 28833, "loc": { "start": { "line": 676, @@ -59042,8 +59042,8 @@ }, { "type": "ExpressionStatement", - "start": 28855, - "end": 28869, + "start": 28844, + "end": 28858, "loc": { "start": { "line": 677, @@ -59056,8 +59056,8 @@ }, "expression": { "type": "CallExpression", - "start": 28855, - "end": 28868, + "start": 28844, + "end": 28857, "loc": { "start": { "line": 677, @@ -59070,8 +59070,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28855, - "end": 28863, + "start": 28844, + "end": 28852, "loc": { "start": { "line": 677, @@ -59084,8 +59084,8 @@ }, "object": { "type": "Identifier", - "start": 28855, - "end": 28858, + "start": 28844, + "end": 28847, "loc": { "start": { "line": 677, @@ -59101,8 +59101,8 @@ }, "property": { "type": "Identifier", - "start": 28859, - "end": 28863, + "start": 28848, + "end": 28852, "loc": { "start": { "line": 677, @@ -59121,8 +59121,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28864, - "end": 28867, + "start": 28853, + "end": 28856, "loc": { "start": { "line": 677, @@ -59144,8 +59144,8 @@ }, { "type": "ExpressionStatement", - "start": 28879, - "end": 29011, + "start": 28868, + "end": 29000, "loc": { "start": { "line": 679, @@ -59158,8 +59158,8 @@ }, "expression": { "type": "CallExpression", - "start": 28879, - "end": 29010, + "start": 28868, + "end": 28999, "loc": { "start": { "line": 679, @@ -59172,8 +59172,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28879, - "end": 28887, + "start": 28868, + "end": 28876, "loc": { "start": { "line": 679, @@ -59186,8 +59186,8 @@ }, "object": { "type": "Identifier", - "start": 28879, - "end": 28882, + "start": 28868, + "end": 28871, "loc": { "start": { "line": 679, @@ -59203,8 +59203,8 @@ }, "property": { "type": "Identifier", - "start": 28883, - "end": 28887, + "start": 28872, + "end": 28876, "loc": { "start": { "line": 679, @@ -59223,8 +59223,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28888, - "end": 29009, + "start": 28877, + "end": 28998, "loc": { "start": { "line": 679, @@ -59246,8 +59246,8 @@ }, { "type": "ExpressionStatement", - "start": 29020, - "end": 29106, + "start": 29009, + "end": 29095, "loc": { "start": { "line": 680, @@ -59260,8 +59260,8 @@ }, "expression": { "type": "CallExpression", - "start": 29020, - "end": 29105, + "start": 29009, + "end": 29094, "loc": { "start": { "line": 680, @@ -59274,8 +59274,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29020, - "end": 29028, + "start": 29009, + "end": 29017, "loc": { "start": { "line": 680, @@ -59288,8 +59288,8 @@ }, "object": { "type": "Identifier", - "start": 29020, - "end": 29023, + "start": 29009, + "end": 29012, "loc": { "start": { "line": 680, @@ -59305,8 +59305,8 @@ }, "property": { "type": "Identifier", - "start": 29024, - "end": 29028, + "start": 29013, + "end": 29017, "loc": { "start": { "line": 680, @@ -59325,8 +59325,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29029, - "end": 29104, + "start": 29018, + "end": 29093, "loc": { "start": { "line": 680, @@ -59348,8 +59348,8 @@ }, { "type": "ExpressionStatement", - "start": 29115, - "end": 29182, + "start": 29104, + "end": 29171, "loc": { "start": { "line": 681, @@ -59362,8 +59362,8 @@ }, "expression": { "type": "CallExpression", - "start": 29115, - "end": 29181, + "start": 29104, + "end": 29170, "loc": { "start": { "line": 681, @@ -59376,8 +59376,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29115, - "end": 29123, + "start": 29104, + "end": 29112, "loc": { "start": { "line": 681, @@ -59390,8 +59390,8 @@ }, "object": { "type": "Identifier", - "start": 29115, - "end": 29118, + "start": 29104, + "end": 29107, "loc": { "start": { "line": 681, @@ -59407,8 +59407,8 @@ }, "property": { "type": "Identifier", - "start": 29119, - "end": 29123, + "start": 29108, + "end": 29112, "loc": { "start": { "line": 681, @@ -59427,8 +59427,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29124, - "end": 29180, + "start": 29113, + "end": 29169, "loc": { "start": { "line": 681, @@ -59450,8 +59450,8 @@ }, { "type": "ExpressionStatement", - "start": 29191, - "end": 29257, + "start": 29180, + "end": 29246, "loc": { "start": { "line": 682, @@ -59464,8 +59464,8 @@ }, "expression": { "type": "CallExpression", - "start": 29191, - "end": 29256, + "start": 29180, + "end": 29245, "loc": { "start": { "line": 682, @@ -59478,8 +59478,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29191, - "end": 29199, + "start": 29180, + "end": 29188, "loc": { "start": { "line": 682, @@ -59492,8 +59492,8 @@ }, "object": { "type": "Identifier", - "start": 29191, - "end": 29194, + "start": 29180, + "end": 29183, "loc": { "start": { "line": 682, @@ -59509,8 +59509,8 @@ }, "property": { "type": "Identifier", - "start": 29195, - "end": 29199, + "start": 29184, + "end": 29188, "loc": { "start": { "line": 682, @@ -59529,8 +59529,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29200, - "end": 29255, + "start": 29189, + "end": 29244, "loc": { "start": { "line": 682, @@ -59552,8 +59552,8 @@ }, { "type": "ExpressionStatement", - "start": 29266, - "end": 29311, + "start": 29255, + "end": 29300, "loc": { "start": { "line": 683, @@ -59566,8 +59566,8 @@ }, "expression": { "type": "CallExpression", - "start": 29266, - "end": 29310, + "start": 29255, + "end": 29299, "loc": { "start": { "line": 683, @@ -59580,8 +59580,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29266, - "end": 29274, + "start": 29255, + "end": 29263, "loc": { "start": { "line": 683, @@ -59594,8 +59594,8 @@ }, "object": { "type": "Identifier", - "start": 29266, - "end": 29269, + "start": 29255, + "end": 29258, "loc": { "start": { "line": 683, @@ -59611,8 +59611,8 @@ }, "property": { "type": "Identifier", - "start": 29270, - "end": 29274, + "start": 29259, + "end": 29263, "loc": { "start": { "line": 683, @@ -59631,8 +59631,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29275, - "end": 29309, + "start": 29264, + "end": 29298, "loc": { "start": { "line": 683, @@ -59654,8 +59654,8 @@ }, { "type": "ExpressionStatement", - "start": 29320, - "end": 29397, + "start": 29309, + "end": 29386, "loc": { "start": { "line": 684, @@ -59668,8 +59668,8 @@ }, "expression": { "type": "CallExpression", - "start": 29320, - "end": 29396, + "start": 29309, + "end": 29385, "loc": { "start": { "line": 684, @@ -59682,8 +59682,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29320, - "end": 29328, + "start": 29309, + "end": 29317, "loc": { "start": { "line": 684, @@ -59696,8 +59696,8 @@ }, "object": { "type": "Identifier", - "start": 29320, - "end": 29323, + "start": 29309, + "end": 29312, "loc": { "start": { "line": 684, @@ -59713,8 +59713,8 @@ }, "property": { "type": "Identifier", - "start": 29324, - "end": 29328, + "start": 29313, + "end": 29317, "loc": { "start": { "line": 684, @@ -59733,8 +59733,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29329, - "end": 29395, + "start": 29318, + "end": 29384, "loc": { "start": { "line": 684, @@ -59756,8 +59756,8 @@ }, { "type": "ExpressionStatement", - "start": 29406, - "end": 29467, + "start": 29395, + "end": 29456, "loc": { "start": { "line": 685, @@ -59770,8 +59770,8 @@ }, "expression": { "type": "CallExpression", - "start": 29406, - "end": 29466, + "start": 29395, + "end": 29455, "loc": { "start": { "line": 685, @@ -59784,8 +59784,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29406, - "end": 29414, + "start": 29395, + "end": 29403, "loc": { "start": { "line": 685, @@ -59798,8 +59798,8 @@ }, "object": { "type": "Identifier", - "start": 29406, - "end": 29409, + "start": 29395, + "end": 29398, "loc": { "start": { "line": 685, @@ -59815,8 +59815,8 @@ }, "property": { "type": "Identifier", - "start": 29410, - "end": 29414, + "start": 29399, + "end": 29403, "loc": { "start": { "line": 685, @@ -59835,8 +59835,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29415, - "end": 29465, + "start": 29404, + "end": 29454, "loc": { "start": { "line": 685, @@ -59858,8 +59858,8 @@ }, { "type": "ExpressionStatement", - "start": 29476, - "end": 29527, + "start": 29465, + "end": 29516, "loc": { "start": { "line": 686, @@ -59872,8 +59872,8 @@ }, "expression": { "type": "CallExpression", - "start": 29476, - "end": 29526, + "start": 29465, + "end": 29515, "loc": { "start": { "line": 686, @@ -59886,8 +59886,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29476, - "end": 29484, + "start": 29465, + "end": 29473, "loc": { "start": { "line": 686, @@ -59900,8 +59900,8 @@ }, "object": { "type": "Identifier", - "start": 29476, - "end": 29479, + "start": 29465, + "end": 29468, "loc": { "start": { "line": 686, @@ -59917,8 +59917,8 @@ }, "property": { "type": "Identifier", - "start": 29480, - "end": 29484, + "start": 29469, + "end": 29473, "loc": { "start": { "line": 686, @@ -59937,8 +59937,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29485, - "end": 29525, + "start": 29474, + "end": 29514, "loc": { "start": { "line": 686, @@ -59960,8 +59960,8 @@ }, { "type": "ExpressionStatement", - "start": 29536, - "end": 29550, + "start": 29525, + "end": 29539, "loc": { "start": { "line": 687, @@ -59974,8 +59974,8 @@ }, "expression": { "type": "CallExpression", - "start": 29536, - "end": 29549, + "start": 29525, + "end": 29538, "loc": { "start": { "line": 687, @@ -59988,8 +59988,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29536, - "end": 29544, + "start": 29525, + "end": 29533, "loc": { "start": { "line": 687, @@ -60002,8 +60002,8 @@ }, "object": { "type": "Identifier", - "start": 29536, - "end": 29539, + "start": 29525, + "end": 29528, "loc": { "start": { "line": 687, @@ -60019,8 +60019,8 @@ }, "property": { "type": "Identifier", - "start": 29540, - "end": 29544, + "start": 29529, + "end": 29533, "loc": { "start": { "line": 687, @@ -60039,8 +60039,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29545, - "end": 29548, + "start": 29534, + "end": 29537, "loc": { "start": { "line": 687, @@ -60062,8 +60062,8 @@ }, { "type": "IfStatement", - "start": 29560, - "end": 31097, + "start": 29549, + "end": 31085, "loc": { "start": { "line": 689, @@ -60076,8 +60076,8 @@ }, "test": { "type": "LogicalExpression", - "start": 29564, - "end": 29637, + "start": 29553, + "end": 29626, "loc": { "start": { "line": 689, @@ -60090,8 +60090,8 @@ }, "left": { "type": "BinaryExpression", - "start": 29564, - "end": 29596, + "start": 29553, + "end": 29585, "loc": { "start": { "line": 689, @@ -60104,8 +60104,8 @@ }, "left": { "type": "MemberExpression", - "start": 29564, - "end": 29592, + "start": 29553, + "end": 29581, "loc": { "start": { "line": 689, @@ -60118,8 +60118,8 @@ }, "object": { "type": "MemberExpression", - "start": 29564, - "end": 29585, + "start": 29553, + "end": 29574, "loc": { "start": { "line": 689, @@ -60132,8 +60132,8 @@ }, "object": { "type": "Identifier", - "start": 29564, - "end": 29575, + "start": 29553, + "end": 29564, "loc": { "start": { "line": 689, @@ -60149,8 +60149,8 @@ }, "property": { "type": "Identifier", - "start": 29576, - "end": 29585, + "start": 29565, + "end": 29574, "loc": { "start": { "line": 689, @@ -60168,8 +60168,8 @@ }, "property": { "type": "Identifier", - "start": 29586, - "end": 29592, + "start": 29575, + "end": 29581, "loc": { "start": { "line": 689, @@ -60188,8 +60188,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 29595, - "end": 29596, + "start": 29584, + "end": 29585, "loc": { "start": { "line": 689, @@ -60210,8 +60210,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 29600, - "end": 29637, + "start": 29589, + "end": 29626, "loc": { "start": { "line": 689, @@ -60224,8 +60224,8 @@ }, "left": { "type": "MemberExpression", - "start": 29600, - "end": 29633, + "start": 29589, + "end": 29622, "loc": { "start": { "line": 689, @@ -60238,8 +60238,8 @@ }, "object": { "type": "MemberExpression", - "start": 29600, - "end": 29626, + "start": 29589, + "end": 29615, "loc": { "start": { "line": 689, @@ -60252,8 +60252,8 @@ }, "object": { "type": "Identifier", - "start": 29600, - "end": 29611, + "start": 29589, + "end": 29600, "loc": { "start": { "line": 689, @@ -60269,8 +60269,8 @@ }, "property": { "type": "Identifier", - "start": 29612, - "end": 29626, + "start": 29601, + "end": 29615, "loc": { "start": { "line": 689, @@ -60288,8 +60288,8 @@ }, "property": { "type": "Identifier", - "start": 29627, - "end": 29633, + "start": 29616, + "end": 29622, "loc": { "start": { "line": 689, @@ -60308,8 +60308,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 29636, - "end": 29637, + "start": 29625, + "end": 29626, "loc": { "start": { "line": 689, @@ -60330,8 +60330,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 29639, - "end": 31097, + "start": 29628, + "end": 31085, "loc": { "start": { "line": 689, @@ -60345,8 +60345,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 29654, - "end": 29789, + "start": 29643, + "end": 29778, "loc": { "start": { "line": 691, @@ -60359,8 +60359,8 @@ }, "expression": { "type": "CallExpression", - "start": 29654, - "end": 29788, + "start": 29643, + "end": 29777, "loc": { "start": { "line": 691, @@ -60373,8 +60373,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29654, - "end": 29662, + "start": 29643, + "end": 29651, "loc": { "start": { "line": 691, @@ -60387,8 +60387,8 @@ }, "object": { "type": "Identifier", - "start": 29654, - "end": 29657, + "start": 29643, + "end": 29646, "loc": { "start": { "line": 691, @@ -60404,8 +60404,8 @@ }, "property": { "type": "Identifier", - "start": 29658, - "end": 29662, + "start": 29647, + "end": 29651, "loc": { "start": { "line": 691, @@ -60424,8 +60424,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29663, - "end": 29787, + "start": 29652, + "end": 29776, "loc": { "start": { "line": 691, @@ -60447,8 +60447,8 @@ }, { "type": "IfStatement", - "start": 29803, - "end": 30260, + "start": 29792, + "end": 30249, "loc": { "start": { "line": 693, @@ -60461,8 +60461,8 @@ }, "test": { "type": "BinaryExpression", - "start": 29807, - "end": 29839, + "start": 29796, + "end": 29828, "loc": { "start": { "line": 693, @@ -60475,8 +60475,8 @@ }, "left": { "type": "MemberExpression", - "start": 29807, - "end": 29835, + "start": 29796, + "end": 29824, "loc": { "start": { "line": 693, @@ -60489,8 +60489,8 @@ }, "object": { "type": "MemberExpression", - "start": 29807, - "end": 29828, + "start": 29796, + "end": 29817, "loc": { "start": { "line": 693, @@ -60503,8 +60503,8 @@ }, "object": { "type": "Identifier", - "start": 29807, - "end": 29818, + "start": 29796, + "end": 29807, "loc": { "start": { "line": 693, @@ -60520,8 +60520,8 @@ }, "property": { "type": "Identifier", - "start": 29819, - "end": 29828, + "start": 29808, + "end": 29817, "loc": { "start": { "line": 693, @@ -60539,8 +60539,8 @@ }, "property": { "type": "Identifier", - "start": 29829, - "end": 29835, + "start": 29818, + "end": 29824, "loc": { "start": { "line": 693, @@ -60559,8 +60559,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 29838, - "end": 29839, + "start": 29827, + "end": 29828, "loc": { "start": { "line": 693, @@ -60580,8 +60580,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 29841, - "end": 30260, + "start": 29830, + "end": 30249, "loc": { "start": { "line": 693, @@ -60595,8 +60595,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 29859, - "end": 30006, + "start": 29848, + "end": 29995, "loc": { "start": { "line": 694, @@ -60609,8 +60609,8 @@ }, "expression": { "type": "CallExpression", - "start": 29859, - "end": 30005, + "start": 29848, + "end": 29994, "loc": { "start": { "line": 694, @@ -60623,8 +60623,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29859, - "end": 29867, + "start": 29848, + "end": 29856, "loc": { "start": { "line": 694, @@ -60637,8 +60637,8 @@ }, "object": { "type": "Identifier", - "start": 29859, - "end": 29862, + "start": 29848, + "end": 29851, "loc": { "start": { "line": 694, @@ -60654,8 +60654,8 @@ }, "property": { "type": "Identifier", - "start": 29863, - "end": 29867, + "start": 29852, + "end": 29856, "loc": { "start": { "line": 694, @@ -60674,8 +60674,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 29868, - "end": 30004, + "start": 29857, + "end": 29993, "loc": { "start": { "line": 694, @@ -60688,8 +60688,8 @@ }, "left": { "type": "BinaryExpression", - "start": 29868, - "end": 29949, + "start": 29857, + "end": 29938, "loc": { "start": { "line": 694, @@ -60702,8 +60702,8 @@ }, "left": { "type": "StringLiteral", - "start": 29868, - "end": 29891, + "start": 29857, + "end": 29880, "loc": { "start": { "line": 694, @@ -60723,8 +60723,8 @@ "operator": "+", "right": { "type": "MemberExpression", - "start": 29894, - "end": 29949, + "start": 29883, + "end": 29938, "loc": { "start": { "line": 694, @@ -60737,8 +60737,8 @@ }, "object": { "type": "Identifier", - "start": 29894, - "end": 29914, + "start": 29883, + "end": 29903, "loc": { "start": { "line": 694, @@ -60754,8 +60754,8 @@ }, "property": { "type": "MemberExpression", - "start": 29915, - "end": 29948, + "start": 29904, + "end": 29937, "loc": { "start": { "line": 694, @@ -60768,8 +60768,8 @@ }, "object": { "type": "MemberExpression", - "start": 29915, - "end": 29939, + "start": 29904, + "end": 29928, "loc": { "start": { "line": 694, @@ -60782,8 +60782,8 @@ }, "object": { "type": "MemberExpression", - "start": 29915, - "end": 29936, + "start": 29904, + "end": 29925, "loc": { "start": { "line": 694, @@ -60796,8 +60796,8 @@ }, "object": { "type": "Identifier", - "start": 29915, - "end": 29926, + "start": 29904, + "end": 29915, "loc": { "start": { "line": 694, @@ -60813,8 +60813,8 @@ }, "property": { "type": "Identifier", - "start": 29927, - "end": 29936, + "start": 29916, + "end": 29925, "loc": { "start": { "line": 694, @@ -60832,8 +60832,8 @@ }, "property": { "type": "NumericLiteral", - "start": 29937, - "end": 29938, + "start": 29926, + "end": 29927, "loc": { "start": { "line": 694, @@ -60854,8 +60854,8 @@ }, "property": { "type": "Identifier", - "start": 29940, - "end": 29948, + "start": 29929, + "end": 29937, "loc": { "start": { "line": 694, @@ -60877,8 +60877,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 29952, - "end": 30004, + "start": 29941, + "end": 29993, "loc": { "start": { "line": 694, @@ -60901,8 +60901,8 @@ }, { "type": "ExpressionStatement", - "start": 30023, - "end": 30056, + "start": 30012, + "end": 30045, "loc": { "start": { "line": 695, @@ -60915,8 +60915,8 @@ }, "expression": { "type": "CallExpression", - "start": 30023, - "end": 30055, + "start": 30012, + "end": 30044, "loc": { "start": { "line": 695, @@ -60929,8 +60929,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30023, - "end": 30031, + "start": 30012, + "end": 30020, "loc": { "start": { "line": 695, @@ -60943,8 +60943,8 @@ }, "object": { "type": "Identifier", - "start": 30023, - "end": 30026, + "start": 30012, + "end": 30015, "loc": { "start": { "line": 695, @@ -60960,8 +60960,8 @@ }, "property": { "type": "Identifier", - "start": 30027, - "end": 30031, + "start": 30016, + "end": 30020, "loc": { "start": { "line": 695, @@ -60980,8 +60980,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30032, - "end": 30054, + "start": 30021, + "end": 30043, "loc": { "start": { "line": 695, @@ -61003,8 +61003,8 @@ }, { "type": "ExpressionStatement", - "start": 30073, - "end": 30155, + "start": 30062, + "end": 30144, "loc": { "start": { "line": 696, @@ -61017,8 +61017,8 @@ }, "expression": { "type": "CallExpression", - "start": 30073, - "end": 30154, + "start": 30062, + "end": 30143, "loc": { "start": { "line": 696, @@ -61031,8 +61031,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30073, - "end": 30081, + "start": 30062, + "end": 30070, "loc": { "start": { "line": 696, @@ -61045,8 +61045,8 @@ }, "object": { "type": "Identifier", - "start": 30073, - "end": 30076, + "start": 30062, + "end": 30065, "loc": { "start": { "line": 696, @@ -61062,8 +61062,8 @@ }, "property": { "type": "Identifier", - "start": 30077, - "end": 30081, + "start": 30066, + "end": 30070, "loc": { "start": { "line": 696, @@ -61082,8 +61082,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30082, - "end": 30153, + "start": 30071, + "end": 30142, "loc": { "start": { "line": 696, @@ -61105,8 +61105,8 @@ }, { "type": "ExpressionStatement", - "start": 30172, - "end": 30246, + "start": 30161, + "end": 30235, "loc": { "start": { "line": 697, @@ -61119,8 +61119,8 @@ }, "expression": { "type": "CallExpression", - "start": 30172, - "end": 30245, + "start": 30161, + "end": 30234, "loc": { "start": { "line": 697, @@ -61133,8 +61133,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30172, - "end": 30180, + "start": 30161, + "end": 30169, "loc": { "start": { "line": 697, @@ -61147,8 +61147,8 @@ }, "object": { "type": "Identifier", - "start": 30172, - "end": 30175, + "start": 30161, + "end": 30164, "loc": { "start": { "line": 697, @@ -61164,8 +61164,8 @@ }, "property": { "type": "Identifier", - "start": 30176, - "end": 30180, + "start": 30165, + "end": 30169, "loc": { "start": { "line": 697, @@ -61184,8 +61184,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30181, - "end": 30244, + "start": 30170, + "end": 30233, "loc": { "start": { "line": 697, @@ -61212,8 +61212,8 @@ }, { "type": "IfStatement", - "start": 30274, - "end": 31059, + "start": 30263, + "end": 31047, "loc": { "start": { "line": 700, @@ -61226,8 +61226,8 @@ }, "test": { "type": "BinaryExpression", - "start": 30278, - "end": 30315, + "start": 30267, + "end": 30304, "loc": { "start": { "line": 700, @@ -61240,8 +61240,8 @@ }, "left": { "type": "MemberExpression", - "start": 30278, - "end": 30311, + "start": 30267, + "end": 30300, "loc": { "start": { "line": 700, @@ -61254,8 +61254,8 @@ }, "object": { "type": "MemberExpression", - "start": 30278, - "end": 30304, + "start": 30267, + "end": 30293, "loc": { "start": { "line": 700, @@ -61268,8 +61268,8 @@ }, "object": { "type": "Identifier", - "start": 30278, - "end": 30289, + "start": 30267, + "end": 30278, "loc": { "start": { "line": 700, @@ -61285,8 +61285,8 @@ }, "property": { "type": "Identifier", - "start": 30290, - "end": 30304, + "start": 30279, + "end": 30293, "loc": { "start": { "line": 700, @@ -61304,8 +61304,8 @@ }, "property": { "type": "Identifier", - "start": 30305, - "end": 30311, + "start": 30294, + "end": 30300, "loc": { "start": { "line": 700, @@ -61324,8 +61324,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 30314, - "end": 30315, + "start": 30303, + "end": 30304, "loc": { "start": { "line": 700, @@ -61345,8 +61345,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 30317, - "end": 31059, + "start": 30306, + "end": 31047, "loc": { "start": { "line": 700, @@ -61360,8 +61360,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 30335, - "end": 30432, + "start": 30324, + "end": 30420, "loc": { "start": { "line": 701, @@ -61369,13 +61369,13 @@ }, "end": { "line": 701, - "column": 113 + "column": 112 } }, "expression": { "type": "CallExpression", - "start": 30335, - "end": 30431, + "start": 30324, + "end": 30419, "loc": { "start": { "line": 701, @@ -61383,13 +61383,13 @@ }, "end": { "line": 701, - "column": 112 + "column": 111 } }, "callee": { "type": "MemberExpression", - "start": 30335, - "end": 30343, + "start": 30324, + "end": 30332, "loc": { "start": { "line": 701, @@ -61402,8 +61402,8 @@ }, "object": { "type": "Identifier", - "start": 30335, - "end": 30338, + "start": 30324, + "end": 30327, "loc": { "start": { "line": 701, @@ -61419,8 +61419,8 @@ }, "property": { "type": "Identifier", - "start": 30339, - "end": 30343, + "start": 30328, + "end": 30332, "loc": { "start": { "line": 701, @@ -61439,8 +61439,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30344, - "end": 30430, + "start": 30333, + "end": 30418, "loc": { "start": { "line": 701, @@ -61448,22 +61448,22 @@ }, "end": { "line": 701, - "column": 111 + "column": 110 } }, "extra": { - "rawValue": " vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);", - "raw": "\" vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);\"" + "rawValue": " vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);", + "raw": "\" vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);\"" }, - "value": " vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);" + "value": " vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);" } ] } }, { "type": "ExpressionStatement", - "start": 30449, - "end": 30545, + "start": 30437, + "end": 30533, "loc": { "start": { "line": 702, @@ -61476,8 +61476,8 @@ }, "expression": { "type": "CallExpression", - "start": 30449, - "end": 30544, + "start": 30437, + "end": 30532, "loc": { "start": { "line": 702, @@ -61490,8 +61490,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30449, - "end": 30457, + "start": 30437, + "end": 30445, "loc": { "start": { "line": 702, @@ -61504,8 +61504,8 @@ }, "object": { "type": "Identifier", - "start": 30449, - "end": 30452, + "start": 30437, + "end": 30440, "loc": { "start": { "line": 702, @@ -61521,8 +61521,8 @@ }, "property": { "type": "Identifier", - "start": 30453, - "end": 30457, + "start": 30441, + "end": 30445, "loc": { "start": { "line": 702, @@ -61541,8 +61541,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30458, - "end": 30543, + "start": 30446, + "end": 30531, "loc": { "start": { "line": 702, @@ -61564,8 +61564,8 @@ }, { "type": "ExpressionStatement", - "start": 30562, - "end": 30664, + "start": 30550, + "end": 30652, "loc": { "start": { "line": 703, @@ -61578,8 +61578,8 @@ }, "expression": { "type": "CallExpression", - "start": 30562, - "end": 30663, + "start": 30550, + "end": 30651, "loc": { "start": { "line": 703, @@ -61592,8 +61592,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30562, - "end": 30570, + "start": 30550, + "end": 30558, "loc": { "start": { "line": 703, @@ -61606,8 +61606,8 @@ }, "object": { "type": "Identifier", - "start": 30562, - "end": 30565, + "start": 30550, + "end": 30553, "loc": { "start": { "line": 703, @@ -61623,8 +61623,8 @@ }, "property": { "type": "Identifier", - "start": 30566, - "end": 30570, + "start": 30554, + "end": 30558, "loc": { "start": { "line": 703, @@ -61643,8 +61643,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30571, - "end": 30662, + "start": 30559, + "end": 30650, "loc": { "start": { "line": 703, @@ -61666,8 +61666,8 @@ }, { "type": "ExpressionStatement", - "start": 30681, - "end": 30795, + "start": 30669, + "end": 30783, "loc": { "start": { "line": 704, @@ -61680,8 +61680,8 @@ }, "expression": { "type": "CallExpression", - "start": 30681, - "end": 30794, + "start": 30669, + "end": 30782, "loc": { "start": { "line": 704, @@ -61694,8 +61694,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30681, - "end": 30689, + "start": 30669, + "end": 30677, "loc": { "start": { "line": 704, @@ -61708,8 +61708,8 @@ }, "object": { "type": "Identifier", - "start": 30681, - "end": 30684, + "start": 30669, + "end": 30672, "loc": { "start": { "line": 704, @@ -61725,8 +61725,8 @@ }, "property": { "type": "Identifier", - "start": 30685, - "end": 30689, + "start": 30673, + "end": 30677, "loc": { "start": { "line": 704, @@ -61745,8 +61745,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30690, - "end": 30793, + "start": 30678, + "end": 30781, "loc": { "start": { "line": 704, @@ -61768,8 +61768,8 @@ }, { "type": "ExpressionStatement", - "start": 30812, - "end": 30950, + "start": 30800, + "end": 30938, "loc": { "start": { "line": 705, @@ -61782,8 +61782,8 @@ }, "expression": { "type": "CallExpression", - "start": 30812, - "end": 30949, + "start": 30800, + "end": 30937, "loc": { "start": { "line": 705, @@ -61796,8 +61796,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30812, - "end": 30820, + "start": 30800, + "end": 30808, "loc": { "start": { "line": 705, @@ -61810,8 +61810,8 @@ }, "object": { "type": "Identifier", - "start": 30812, - "end": 30815, + "start": 30800, + "end": 30803, "loc": { "start": { "line": 705, @@ -61827,8 +61827,8 @@ }, "property": { "type": "Identifier", - "start": 30816, - "end": 30820, + "start": 30804, + "end": 30808, "loc": { "start": { "line": 705, @@ -61847,8 +61847,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30821, - "end": 30948, + "start": 30809, + "end": 30936, "loc": { "start": { "line": 705, @@ -61870,8 +61870,8 @@ }, { "type": "ExpressionStatement", - "start": 30967, - "end": 31045, + "start": 30955, + "end": 31033, "loc": { "start": { "line": 706, @@ -61884,8 +61884,8 @@ }, "expression": { "type": "CallExpression", - "start": 30967, - "end": 31044, + "start": 30955, + "end": 31032, "loc": { "start": { "line": 706, @@ -61898,8 +61898,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30967, - "end": 30975, + "start": 30955, + "end": 30963, "loc": { "start": { "line": 706, @@ -61912,8 +61912,8 @@ }, "object": { "type": "Identifier", - "start": 30967, - "end": 30970, + "start": 30955, + "end": 30958, "loc": { "start": { "line": 706, @@ -61929,8 +61929,8 @@ }, "property": { "type": "Identifier", - "start": 30971, - "end": 30975, + "start": 30959, + "end": 30963, "loc": { "start": { "line": 706, @@ -61949,8 +61949,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30976, - "end": 31043, + "start": 30964, + "end": 31031, "loc": { "start": { "line": 706, @@ -61977,8 +61977,8 @@ }, { "type": "ExpressionStatement", - "start": 31073, - "end": 31087, + "start": 31061, + "end": 31075, "loc": { "start": { "line": 709, @@ -61991,8 +61991,8 @@ }, "expression": { "type": "CallExpression", - "start": 31073, - "end": 31086, + "start": 31061, + "end": 31074, "loc": { "start": { "line": 709, @@ -62005,8 +62005,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31073, - "end": 31081, + "start": 31061, + "end": 31069, "loc": { "start": { "line": 709, @@ -62019,8 +62019,8 @@ }, "object": { "type": "Identifier", - "start": 31073, - "end": 31076, + "start": 31061, + "end": 31064, "loc": { "start": { "line": 709, @@ -62036,8 +62036,8 @@ }, "property": { "type": "Identifier", - "start": 31077, - "end": 31081, + "start": 31065, + "end": 31069, "loc": { "start": { "line": 709, @@ -62056,8 +62056,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31082, - "end": 31085, + "start": 31070, + "end": 31073, "loc": { "start": { "line": 709, @@ -62086,8 +62086,8 @@ { "type": "CommentLine", "value": " MAIN LIGHTING COMPUTATION FUNCTION", - "start": 31107, - "end": 31144, + "start": 31095, + "end": 31132, "loc": { "start": { "line": 712, @@ -62103,8 +62103,8 @@ }, { "type": "ExpressionStatement", - "start": 31154, - "end": 31323, + "start": 31142, + "end": 31311, "loc": { "start": { "line": 714, @@ -62117,8 +62117,8 @@ }, "expression": { "type": "CallExpression", - "start": 31154, - "end": 31322, + "start": 31142, + "end": 31310, "loc": { "start": { "line": 714, @@ -62131,8 +62131,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31154, - "end": 31162, + "start": 31142, + "end": 31150, "loc": { "start": { "line": 714, @@ -62145,8 +62145,8 @@ }, "object": { "type": "Identifier", - "start": 31154, - "end": 31157, + "start": 31142, + "end": 31145, "loc": { "start": { "line": 714, @@ -62163,8 +62163,8 @@ }, "property": { "type": "Identifier", - "start": 31158, - "end": 31162, + "start": 31146, + "end": 31150, "loc": { "start": { "line": 714, @@ -62184,8 +62184,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31163, - "end": 31321, + "start": 31151, + "end": 31309, "loc": { "start": { "line": 714, @@ -62209,8 +62209,8 @@ { "type": "CommentLine", "value": " MAIN LIGHTING COMPUTATION FUNCTION", - "start": 31107, - "end": 31144, + "start": 31095, + "end": 31132, "loc": { "start": { "line": 712, @@ -62226,8 +62226,8 @@ }, { "type": "ExpressionStatement", - "start": 31332, - "end": 31426, + "start": 31320, + "end": 31414, "loc": { "start": { "line": 715, @@ -62240,8 +62240,8 @@ }, "expression": { "type": "CallExpression", - "start": 31332, - "end": 31425, + "start": 31320, + "end": 31413, "loc": { "start": { "line": 715, @@ -62254,8 +62254,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31332, - "end": 31340, + "start": 31320, + "end": 31328, "loc": { "start": { "line": 715, @@ -62268,8 +62268,8 @@ }, "object": { "type": "Identifier", - "start": 31332, - "end": 31335, + "start": 31320, + "end": 31323, "loc": { "start": { "line": 715, @@ -62285,8 +62285,8 @@ }, "property": { "type": "Identifier", - "start": 31336, - "end": 31340, + "start": 31324, + "end": 31328, "loc": { "start": { "line": 715, @@ -62305,8 +62305,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31341, - "end": 31424, + "start": 31329, + "end": 31412, "loc": { "start": { "line": 715, @@ -62328,8 +62328,8 @@ }, { "type": "ExpressionStatement", - "start": 31435, - "end": 31502, + "start": 31423, + "end": 31490, "loc": { "start": { "line": 716, @@ -62342,8 +62342,8 @@ }, "expression": { "type": "CallExpression", - "start": 31435, - "end": 31501, + "start": 31423, + "end": 31489, "loc": { "start": { "line": 716, @@ -62356,8 +62356,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31435, - "end": 31443, + "start": 31423, + "end": 31431, "loc": { "start": { "line": 716, @@ -62370,8 +62370,8 @@ }, "object": { "type": "Identifier", - "start": 31435, - "end": 31438, + "start": 31423, + "end": 31426, "loc": { "start": { "line": 716, @@ -62387,8 +62387,8 @@ }, "property": { "type": "Identifier", - "start": 31439, - "end": 31443, + "start": 31427, + "end": 31431, "loc": { "start": { "line": 716, @@ -62407,8 +62407,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31444, - "end": 31500, + "start": 31432, + "end": 31488, "loc": { "start": { "line": 716, @@ -62430,8 +62430,8 @@ }, { "type": "ExpressionStatement", - "start": 31511, - "end": 31607, + "start": 31499, + "end": 31595, "loc": { "start": { "line": 717, @@ -62444,8 +62444,8 @@ }, "expression": { "type": "CallExpression", - "start": 31511, - "end": 31606, + "start": 31499, + "end": 31594, "loc": { "start": { "line": 717, @@ -62458,8 +62458,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31511, - "end": 31519, + "start": 31499, + "end": 31507, "loc": { "start": { "line": 717, @@ -62472,8 +62472,8 @@ }, "object": { "type": "Identifier", - "start": 31511, - "end": 31514, + "start": 31499, + "end": 31502, "loc": { "start": { "line": 717, @@ -62489,8 +62489,8 @@ }, "property": { "type": "Identifier", - "start": 31515, - "end": 31519, + "start": 31503, + "end": 31507, "loc": { "start": { "line": 717, @@ -62509,8 +62509,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31520, - "end": 31605, + "start": 31508, + "end": 31593, "loc": { "start": { "line": 717, @@ -62532,8 +62532,8 @@ }, { "type": "ExpressionStatement", - "start": 31616, - "end": 31767, + "start": 31604, + "end": 31755, "loc": { "start": { "line": 718, @@ -62546,8 +62546,8 @@ }, "expression": { "type": "CallExpression", - "start": 31616, - "end": 31766, + "start": 31604, + "end": 31754, "loc": { "start": { "line": 718, @@ -62560,8 +62560,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31616, - "end": 31624, + "start": 31604, + "end": 31612, "loc": { "start": { "line": 718, @@ -62574,8 +62574,8 @@ }, "object": { "type": "Identifier", - "start": 31616, - "end": 31619, + "start": 31604, + "end": 31607, "loc": { "start": { "line": 718, @@ -62591,8 +62591,8 @@ }, "property": { "type": "Identifier", - "start": 31620, - "end": 31624, + "start": 31608, + "end": 31612, "loc": { "start": { "line": 718, @@ -62611,8 +62611,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31625, - "end": 31765, + "start": 31613, + "end": 31753, "loc": { "start": { "line": 718, @@ -62634,8 +62634,8 @@ }, { "type": "ExpressionStatement", - "start": 31776, - "end": 31790, + "start": 31764, + "end": 31778, "loc": { "start": { "line": 719, @@ -62648,8 +62648,8 @@ }, "expression": { "type": "CallExpression", - "start": 31776, - "end": 31789, + "start": 31764, + "end": 31777, "loc": { "start": { "line": 719, @@ -62662,8 +62662,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31776, - "end": 31784, + "start": 31764, + "end": 31772, "loc": { "start": { "line": 719, @@ -62676,8 +62676,8 @@ }, "object": { "type": "Identifier", - "start": 31776, - "end": 31779, + "start": 31764, + "end": 31767, "loc": { "start": { "line": 719, @@ -62693,8 +62693,8 @@ }, "property": { "type": "Identifier", - "start": 31780, - "end": 31784, + "start": 31768, + "end": 31772, "loc": { "start": { "line": 719, @@ -62713,8 +62713,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31785, - "end": 31788, + "start": 31773, + "end": 31776, "loc": { "start": { "line": 719, @@ -62736,8 +62736,8 @@ }, { "type": "ExpressionStatement", - "start": 31800, - "end": 31830, + "start": 31788, + "end": 31818, "loc": { "start": { "line": 721, @@ -62750,8 +62750,8 @@ }, "expression": { "type": "CallExpression", - "start": 31800, - "end": 31829, + "start": 31788, + "end": 31817, "loc": { "start": { "line": 721, @@ -62764,8 +62764,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31800, - "end": 31808, + "start": 31788, + "end": 31796, "loc": { "start": { "line": 721, @@ -62778,8 +62778,8 @@ }, "object": { "type": "Identifier", - "start": 31800, - "end": 31803, + "start": 31788, + "end": 31791, "loc": { "start": { "line": 721, @@ -62795,8 +62795,8 @@ }, "property": { "type": "Identifier", - "start": 31804, - "end": 31808, + "start": 31792, + "end": 31796, "loc": { "start": { "line": 721, @@ -62815,8 +62815,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31809, - "end": 31828, + "start": 31797, + "end": 31816, "loc": { "start": { "line": 721, @@ -62838,8 +62838,8 @@ }, { "type": "IfStatement", - "start": 31840, - "end": 33158, + "start": 31828, + "end": 33146, "loc": { "start": { "line": 723, @@ -62852,8 +62852,8 @@ }, "test": { "type": "Identifier", - "start": 31844, - "end": 31852, + "start": 31832, + "end": 31840, "loc": { "start": { "line": 723, @@ -62869,8 +62869,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 31854, - "end": 33158, + "start": 31842, + "end": 33146, "loc": { "start": { "line": 723, @@ -62884,8 +62884,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 31868, - "end": 31925, + "start": 31856, + "end": 31913, "loc": { "start": { "line": 724, @@ -62898,8 +62898,8 @@ }, "expression": { "type": "CallExpression", - "start": 31868, - "end": 31924, + "start": 31856, + "end": 31912, "loc": { "start": { "line": 724, @@ -62912,8 +62912,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31868, - "end": 31876, + "start": 31856, + "end": 31864, "loc": { "start": { "line": 724, @@ -62926,8 +62926,8 @@ }, "object": { "type": "Identifier", - "start": 31868, - "end": 31871, + "start": 31856, + "end": 31859, "loc": { "start": { "line": 724, @@ -62943,8 +62943,8 @@ }, "property": { "type": "Identifier", - "start": 31872, - "end": 31876, + "start": 31860, + "end": 31864, "loc": { "start": { "line": 724, @@ -62963,8 +62963,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31877, - "end": 31923, + "start": 31865, + "end": 31911, "loc": { "start": { "line": 724, @@ -62986,8 +62986,8 @@ }, { "type": "ExpressionStatement", - "start": 31938, - "end": 31969, + "start": 31926, + "end": 31957, "loc": { "start": { "line": 725, @@ -63000,8 +63000,8 @@ }, "expression": { "type": "CallExpression", - "start": 31938, - "end": 31968, + "start": 31926, + "end": 31956, "loc": { "start": { "line": 725, @@ -63014,8 +63014,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31938, - "end": 31946, + "start": 31926, + "end": 31934, "loc": { "start": { "line": 725, @@ -63028,8 +63028,8 @@ }, "object": { "type": "Identifier", - "start": 31938, - "end": 31941, + "start": 31926, + "end": 31929, "loc": { "start": { "line": 725, @@ -63045,8 +63045,8 @@ }, "property": { "type": "Identifier", - "start": 31942, - "end": 31946, + "start": 31930, + "end": 31934, "loc": { "start": { "line": 725, @@ -63065,8 +63065,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31947, - "end": 31967, + "start": 31935, + "end": 31955, "loc": { "start": { "line": 725, @@ -63088,8 +63088,8 @@ }, { "type": "ExpressionStatement", - "start": 31982, - "end": 32014, + "start": 31970, + "end": 32002, "loc": { "start": { "line": 726, @@ -63102,8 +63102,8 @@ }, "expression": { "type": "CallExpression", - "start": 31982, - "end": 32013, + "start": 31970, + "end": 32001, "loc": { "start": { "line": 726, @@ -63116,8 +63116,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31982, - "end": 31990, + "start": 31970, + "end": 31978, "loc": { "start": { "line": 726, @@ -63130,8 +63130,8 @@ }, "object": { "type": "Identifier", - "start": 31982, - "end": 31985, + "start": 31970, + "end": 31973, "loc": { "start": { "line": 726, @@ -63147,8 +63147,8 @@ }, "property": { "type": "Identifier", - "start": 31986, - "end": 31990, + "start": 31974, + "end": 31978, "loc": { "start": { "line": 726, @@ -63167,8 +63167,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31991, - "end": 32012, + "start": 31979, + "end": 32000, "loc": { "start": { "line": 726, @@ -63190,8 +63190,8 @@ }, { "type": "ForStatement", - "start": 32027, - "end": 32361, + "start": 32015, + "end": 32349, "loc": { "start": { "line": 727, @@ -63204,8 +63204,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 32032, - "end": 32088, + "start": 32020, + "end": 32076, "loc": { "start": { "line": 727, @@ -63219,8 +63219,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 32036, - "end": 32041, + "start": 32024, + "end": 32029, "loc": { "start": { "line": 727, @@ -63233,8 +63233,8 @@ }, "id": { "type": "Identifier", - "start": 32036, - "end": 32037, + "start": 32024, + "end": 32025, "loc": { "start": { "line": 727, @@ -63250,8 +63250,8 @@ }, "init": { "type": "NumericLiteral", - "start": 32040, - "end": 32041, + "start": 32028, + "end": 32029, "loc": { "start": { "line": 727, @@ -63271,8 +63271,8 @@ }, { "type": "VariableDeclarator", - "start": 32043, - "end": 32088, + "start": 32031, + "end": 32076, "loc": { "start": { "line": 727, @@ -63285,8 +63285,8 @@ }, "id": { "type": "Identifier", - "start": 32043, - "end": 32046, + "start": 32031, + "end": 32034, "loc": { "start": { "line": 727, @@ -63302,8 +63302,8 @@ }, "init": { "type": "MemberExpression", - "start": 32049, - "end": 32088, + "start": 32037, + "end": 32076, "loc": { "start": { "line": 727, @@ -63316,8 +63316,8 @@ }, "object": { "type": "MemberExpression", - "start": 32049, - "end": 32081, + "start": 32037, + "end": 32069, "loc": { "start": { "line": 727, @@ -63330,8 +63330,8 @@ }, "object": { "type": "Identifier", - "start": 32049, - "end": 32067, + "start": 32037, + "end": 32055, "loc": { "start": { "line": 727, @@ -63347,8 +63347,8 @@ }, "property": { "type": "Identifier", - "start": 32068, - "end": 32081, + "start": 32056, + "end": 32069, "loc": { "start": { "line": 727, @@ -63366,8 +63366,8 @@ }, "property": { "type": "Identifier", - "start": 32082, - "end": 32088, + "start": 32070, + "end": 32076, "loc": { "start": { "line": 727, @@ -63389,8 +63389,8 @@ }, "test": { "type": "BinaryExpression", - "start": 32090, - "end": 32097, + "start": 32078, + "end": 32085, "loc": { "start": { "line": 727, @@ -63403,8 +63403,8 @@ }, "left": { "type": "Identifier", - "start": 32090, - "end": 32091, + "start": 32078, + "end": 32079, "loc": { "start": { "line": 727, @@ -63421,8 +63421,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 32094, - "end": 32097, + "start": 32082, + "end": 32085, "loc": { "start": { "line": 727, @@ -63439,8 +63439,8 @@ }, "update": { "type": "UpdateExpression", - "start": 32099, - "end": 32102, + "start": 32087, + "end": 32090, "loc": { "start": { "line": 727, @@ -63455,8 +63455,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 32099, - "end": 32100, + "start": 32087, + "end": 32088, "loc": { "start": { "line": 727, @@ -63473,8 +63473,8 @@ }, "body": { "type": "BlockStatement", - "start": 32104, - "end": 32361, + "start": 32092, + "end": 32349, "loc": { "start": { "line": 727, @@ -63488,8 +63488,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 32122, - "end": 32169, + "start": 32110, + "end": 32157, "loc": { "start": { "line": 728, @@ -63502,8 +63502,8 @@ }, "expression": { "type": "CallExpression", - "start": 32122, - "end": 32168, + "start": 32110, + "end": 32156, "loc": { "start": { "line": 728, @@ -63516,8 +63516,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32122, - "end": 32130, + "start": 32110, + "end": 32118, "loc": { "start": { "line": 728, @@ -63530,8 +63530,8 @@ }, "object": { "type": "Identifier", - "start": 32122, - "end": 32125, + "start": 32110, + "end": 32113, "loc": { "start": { "line": 728, @@ -63547,8 +63547,8 @@ }, "property": { "type": "Identifier", - "start": 32126, - "end": 32130, + "start": 32114, + "end": 32118, "loc": { "start": { "line": 728, @@ -63567,8 +63567,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 32131, - "end": 32167, + "start": 32119, + "end": 32155, "loc": { "start": { "line": 728, @@ -63581,8 +63581,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32131, - "end": 32159, + "start": 32119, + "end": 32147, "loc": { "start": { "line": 728, @@ -63595,8 +63595,8 @@ }, "left": { "type": "StringLiteral", - "start": 32131, - "end": 32155, + "start": 32119, + "end": 32143, "loc": { "start": { "line": 728, @@ -63616,8 +63616,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32158, - "end": 32159, + "start": 32146, + "end": 32147, "loc": { "start": { "line": 728, @@ -63635,8 +63635,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32162, - "end": 32167, + "start": 32150, + "end": 32155, "loc": { "start": { "line": 728, @@ -63659,8 +63659,8 @@ }, { "type": "ExpressionStatement", - "start": 32186, - "end": 32316, + "start": 32174, + "end": 32304, "loc": { "start": { "line": 729, @@ -63673,8 +63673,8 @@ }, "expression": { "type": "CallExpression", - "start": 32186, - "end": 32315, + "start": 32174, + "end": 32303, "loc": { "start": { "line": 729, @@ -63687,8 +63687,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32186, - "end": 32194, + "start": 32174, + "end": 32182, "loc": { "start": { "line": 729, @@ -63701,8 +63701,8 @@ }, "object": { "type": "Identifier", - "start": 32186, - "end": 32189, + "start": 32174, + "end": 32177, "loc": { "start": { "line": 729, @@ -63718,8 +63718,8 @@ }, "property": { "type": "Identifier", - "start": 32190, - "end": 32194, + "start": 32178, + "end": 32182, "loc": { "start": { "line": 729, @@ -63738,8 +63738,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 32195, - "end": 32314, + "start": 32183, + "end": 32302, "loc": { "start": { "line": 729, @@ -63752,8 +63752,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32195, - "end": 32289, + "start": 32183, + "end": 32277, "loc": { "start": { "line": 729, @@ -63766,8 +63766,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32195, - "end": 32285, + "start": 32183, + "end": 32273, "loc": { "start": { "line": 729, @@ -63780,8 +63780,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32195, - "end": 32238, + "start": 32183, + "end": 32226, "loc": { "start": { "line": 729, @@ -63794,8 +63794,8 @@ }, "left": { "type": "StringLiteral", - "start": 32195, - "end": 32234, + "start": 32183, + "end": 32222, "loc": { "start": { "line": 729, @@ -63815,8 +63815,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32237, - "end": 32238, + "start": 32225, + "end": 32226, "loc": { "start": { "line": 729, @@ -63834,8 +63834,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32241, - "end": 32285, + "start": 32229, + "end": 32273, "loc": { "start": { "line": 729, @@ -63856,8 +63856,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32288, - "end": 32289, + "start": 32276, + "end": 32277, "loc": { "start": { "line": 729, @@ -63875,8 +63875,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32292, - "end": 32314, + "start": 32280, + "end": 32302, "loc": { "start": { "line": 729, @@ -63899,8 +63899,8 @@ }, { "type": "ExpressionStatement", - "start": 32333, - "end": 32347, + "start": 32321, + "end": 32335, "loc": { "start": { "line": 730, @@ -63913,8 +63913,8 @@ }, "expression": { "type": "CallExpression", - "start": 32333, - "end": 32346, + "start": 32321, + "end": 32334, "loc": { "start": { "line": 730, @@ -63927,8 +63927,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32333, - "end": 32341, + "start": 32321, + "end": 32329, "loc": { "start": { "line": 730, @@ -63941,8 +63941,8 @@ }, "object": { "type": "Identifier", - "start": 32333, - "end": 32336, + "start": 32321, + "end": 32324, "loc": { "start": { "line": 730, @@ -63958,8 +63958,8 @@ }, "property": { "type": "Identifier", - "start": 32337, - "end": 32341, + "start": 32325, + "end": 32329, "loc": { "start": { "line": 730, @@ -63978,8 +63978,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32342, - "end": 32345, + "start": 32330, + "end": 32333, "loc": { "start": { "line": 730, @@ -64005,8 +64005,8 @@ }, { "type": "IfStatement", - "start": 32374, - "end": 33121, + "start": 32362, + "end": 33109, "loc": { "start": { "line": 732, @@ -64019,8 +64019,8 @@ }, "test": { "type": "Identifier", - "start": 32378, - "end": 32390, + "start": 32366, + "end": 32378, "loc": { "start": { "line": 732, @@ -64036,8 +64036,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 32392, - "end": 32974, + "start": 32380, + "end": 32962, "loc": { "start": { "line": 732, @@ -64051,8 +64051,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 32410, - "end": 32464, + "start": 32398, + "end": 32452, "loc": { "start": { "line": 733, @@ -64065,8 +64065,8 @@ }, "expression": { "type": "CallExpression", - "start": 32410, - "end": 32463, + "start": 32398, + "end": 32451, "loc": { "start": { "line": 733, @@ -64079,8 +64079,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32410, - "end": 32418, + "start": 32398, + "end": 32406, "loc": { "start": { "line": 733, @@ -64093,8 +64093,8 @@ }, "object": { "type": "Identifier", - "start": 32410, - "end": 32413, + "start": 32398, + "end": 32401, "loc": { "start": { "line": 733, @@ -64110,8 +64110,8 @@ }, "property": { "type": "Identifier", - "start": 32414, - "end": 32418, + "start": 32402, + "end": 32406, "loc": { "start": { "line": 733, @@ -64130,8 +64130,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32419, - "end": 32462, + "start": 32407, + "end": 32450, "loc": { "start": { "line": 733, @@ -64153,8 +64153,8 @@ }, { "type": "ExpressionStatement", - "start": 32481, - "end": 32508, + "start": 32469, + "end": 32496, "loc": { "start": { "line": 734, @@ -64167,8 +64167,8 @@ }, "expression": { "type": "CallExpression", - "start": 32481, - "end": 32507, + "start": 32469, + "end": 32495, "loc": { "start": { "line": 734, @@ -64181,8 +64181,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32481, - "end": 32489, + "start": 32469, + "end": 32477, "loc": { "start": { "line": 734, @@ -64195,8 +64195,8 @@ }, "object": { "type": "Identifier", - "start": 32481, - "end": 32484, + "start": 32469, + "end": 32472, "loc": { "start": { "line": 734, @@ -64212,8 +64212,8 @@ }, "property": { "type": "Identifier", - "start": 32485, - "end": 32489, + "start": 32473, + "end": 32477, "loc": { "start": { "line": 734, @@ -64232,8 +64232,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32490, - "end": 32506, + "start": 32478, + "end": 32494, "loc": { "start": { "line": 734, @@ -64255,8 +64255,8 @@ }, { "type": "ExpressionStatement", - "start": 32525, - "end": 32541, + "start": 32513, + "end": 32529, "loc": { "start": { "line": 735, @@ -64269,8 +64269,8 @@ }, "expression": { "type": "CallExpression", - "start": 32525, - "end": 32540, + "start": 32513, + "end": 32528, "loc": { "start": { "line": 735, @@ -64283,8 +64283,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32525, - "end": 32533, + "start": 32513, + "end": 32521, "loc": { "start": { "line": 735, @@ -64297,8 +64297,8 @@ }, "object": { "type": "Identifier", - "start": 32525, - "end": 32528, + "start": 32513, + "end": 32516, "loc": { "start": { "line": 735, @@ -64314,8 +64314,8 @@ }, "property": { "type": "Identifier", - "start": 32529, - "end": 32533, + "start": 32517, + "end": 32521, "loc": { "start": { "line": 735, @@ -64334,8 +64334,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32534, - "end": 32539, + "start": 32522, + "end": 32527, "loc": { "start": { "line": 735, @@ -64357,8 +64357,8 @@ }, { "type": "ExpressionStatement", - "start": 32558, - "end": 32591, + "start": 32546, + "end": 32579, "loc": { "start": { "line": 736, @@ -64371,8 +64371,8 @@ }, "expression": { "type": "CallExpression", - "start": 32558, - "end": 32590, + "start": 32546, + "end": 32578, "loc": { "start": { "line": 736, @@ -64385,8 +64385,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32558, - "end": 32566, + "start": 32546, + "end": 32554, "loc": { "start": { "line": 736, @@ -64399,8 +64399,8 @@ }, "object": { "type": "Identifier", - "start": 32558, - "end": 32561, + "start": 32546, + "end": 32549, "loc": { "start": { "line": 736, @@ -64416,8 +64416,8 @@ }, "property": { "type": "Identifier", - "start": 32562, - "end": 32566, + "start": 32550, + "end": 32554, "loc": { "start": { "line": 736, @@ -64436,8 +64436,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32567, - "end": 32589, + "start": 32555, + "end": 32577, "loc": { "start": { "line": 736, @@ -64459,8 +64459,8 @@ }, { "type": "ExpressionStatement", - "start": 32608, - "end": 32665, + "start": 32596, + "end": 32653, "loc": { "start": { "line": 737, @@ -64473,8 +64473,8 @@ }, "expression": { "type": "CallExpression", - "start": 32608, - "end": 32664, + "start": 32596, + "end": 32652, "loc": { "start": { "line": 737, @@ -64487,8 +64487,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32608, - "end": 32616, + "start": 32596, + "end": 32604, "loc": { "start": { "line": 737, @@ -64501,8 +64501,8 @@ }, "object": { "type": "Identifier", - "start": 32608, - "end": 32611, + "start": 32596, + "end": 32599, "loc": { "start": { "line": 737, @@ -64518,8 +64518,8 @@ }, "property": { "type": "Identifier", - "start": 32612, - "end": 32616, + "start": 32600, + "end": 32604, "loc": { "start": { "line": 737, @@ -64538,8 +64538,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32617, - "end": 32663, + "start": 32605, + "end": 32651, "loc": { "start": { "line": 737, @@ -64561,8 +64561,8 @@ }, { "type": "IfStatement", - "start": 32682, - "end": 32890, + "start": 32670, + "end": 32878, "loc": { "start": { "line": 738, @@ -64575,8 +64575,8 @@ }, "test": { "type": "LogicalExpression", - "start": 32686, - "end": 32774, + "start": 32674, + "end": 32762, "loc": { "start": { "line": 738, @@ -64589,8 +64589,8 @@ }, "left": { "type": "MemberExpression", - "start": 32686, - "end": 32721, + "start": 32674, + "end": 32709, "loc": { "start": { "line": 738, @@ -64603,8 +64603,8 @@ }, "object": { "type": "Identifier", - "start": 32686, - "end": 32691, + "start": 32674, + "end": 32679, "loc": { "start": { "line": 738, @@ -64620,8 +64620,8 @@ }, "property": { "type": "Identifier", - "start": 32692, - "end": 32721, + "start": 32680, + "end": 32709, "loc": { "start": { "line": 738, @@ -64640,8 +64640,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 32725, - "end": 32774, + "start": 32713, + "end": 32762, "loc": { "start": { "line": 738, @@ -64654,8 +64654,8 @@ }, "object": { "type": "MemberExpression", - "start": 32725, - "end": 32756, + "start": 32713, + "end": 32744, "loc": { "start": { "line": 738, @@ -64668,8 +64668,8 @@ }, "object": { "type": "Identifier", - "start": 32725, - "end": 32735, + "start": 32713, + "end": 32723, "loc": { "start": { "line": 738, @@ -64685,8 +64685,8 @@ }, "property": { "type": "Identifier", - "start": 32736, - "end": 32756, + "start": 32724, + "end": 32744, "loc": { "start": { "line": 738, @@ -64704,8 +64704,8 @@ }, "property": { "type": "StringLiteral", - "start": 32757, - "end": 32773, + "start": 32745, + "end": 32761, "loc": { "start": { "line": 738, @@ -64727,8 +64727,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 32776, - "end": 32890, + "start": 32764, + "end": 32878, "loc": { "start": { "line": 738, @@ -64742,8 +64742,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 32798, - "end": 32872, + "start": 32786, + "end": 32860, "loc": { "start": { "line": 739, @@ -64756,8 +64756,8 @@ }, "expression": { "type": "CallExpression", - "start": 32798, - "end": 32871, + "start": 32786, + "end": 32859, "loc": { "start": { "line": 739, @@ -64770,8 +64770,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32798, - "end": 32806, + "start": 32786, + "end": 32794, "loc": { "start": { "line": 739, @@ -64784,8 +64784,8 @@ }, "object": { "type": "Identifier", - "start": 32798, - "end": 32801, + "start": 32786, + "end": 32789, "loc": { "start": { "line": 739, @@ -64801,8 +64801,8 @@ }, "property": { "type": "Identifier", - "start": 32802, - "end": 32806, + "start": 32790, + "end": 32794, "loc": { "start": { "line": 739, @@ -64821,8 +64821,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32807, - "end": 32870, + "start": 32795, + "end": 32858, "loc": { "start": { "line": 739, @@ -64849,8 +64849,8 @@ }, { "type": "ExpressionStatement", - "start": 32907, - "end": 32929, + "start": 32895, + "end": 32917, "loc": { "start": { "line": 741, @@ -64863,8 +64863,8 @@ }, "expression": { "type": "CallExpression", - "start": 32907, - "end": 32928, + "start": 32895, + "end": 32916, "loc": { "start": { "line": 741, @@ -64877,8 +64877,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32907, - "end": 32915, + "start": 32895, + "end": 32903, "loc": { "start": { "line": 741, @@ -64891,8 +64891,8 @@ }, "object": { "type": "Identifier", - "start": 32907, - "end": 32910, + "start": 32895, + "end": 32898, "loc": { "start": { "line": 741, @@ -64908,8 +64908,8 @@ }, "property": { "type": "Identifier", - "start": 32911, - "end": 32915, + "start": 32899, + "end": 32903, "loc": { "start": { "line": 741, @@ -64928,8 +64928,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32916, - "end": 32927, + "start": 32904, + "end": 32915, "loc": { "start": { "line": 741, @@ -64951,8 +64951,8 @@ }, { "type": "ExpressionStatement", - "start": 32946, - "end": 32960, + "start": 32934, + "end": 32948, "loc": { "start": { "line": 742, @@ -64965,8 +64965,8 @@ }, "expression": { "type": "CallExpression", - "start": 32946, - "end": 32959, + "start": 32934, + "end": 32947, "loc": { "start": { "line": 742, @@ -64979,8 +64979,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32946, - "end": 32954, + "start": 32934, + "end": 32942, "loc": { "start": { "line": 742, @@ -64993,8 +64993,8 @@ }, "object": { "type": "Identifier", - "start": 32946, - "end": 32949, + "start": 32934, + "end": 32937, "loc": { "start": { "line": 742, @@ -65010,8 +65010,8 @@ }, "property": { "type": "Identifier", - "start": 32950, - "end": 32954, + "start": 32938, + "end": 32942, "loc": { "start": { "line": 742, @@ -65030,8 +65030,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32955, - "end": 32958, + "start": 32943, + "end": 32946, "loc": { "start": { "line": 742, @@ -65056,8 +65056,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 32980, - "end": 33121, + "start": 32968, + "end": 33109, "loc": { "start": { "line": 743, @@ -65071,8 +65071,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 32998, - "end": 33031, + "start": 32986, + "end": 33019, "loc": { "start": { "line": 744, @@ -65085,8 +65085,8 @@ }, "expression": { "type": "CallExpression", - "start": 32998, - "end": 33030, + "start": 32986, + "end": 33018, "loc": { "start": { "line": 744, @@ -65099,8 +65099,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32998, - "end": 33006, + "start": 32986, + "end": 32994, "loc": { "start": { "line": 744, @@ -65113,8 +65113,8 @@ }, "object": { "type": "Identifier", - "start": 32998, - "end": 33001, + "start": 32986, + "end": 32989, "loc": { "start": { "line": 744, @@ -65130,8 +65130,8 @@ }, "property": { "type": "Identifier", - "start": 33002, - "end": 33006, + "start": 32990, + "end": 32994, "loc": { "start": { "line": 744, @@ -65150,8 +65150,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33007, - "end": 33029, + "start": 32995, + "end": 33017, "loc": { "start": { "line": 744, @@ -65173,8 +65173,8 @@ }, { "type": "ExpressionStatement", - "start": 33048, - "end": 33074, + "start": 33036, + "end": 33062, "loc": { "start": { "line": 745, @@ -65187,8 +65187,8 @@ }, "expression": { "type": "CallExpression", - "start": 33048, - "end": 33074, + "start": 33036, + "end": 33062, "loc": { "start": { "line": 745, @@ -65201,8 +65201,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33048, - "end": 33056, + "start": 33036, + "end": 33044, "loc": { "start": { "line": 745, @@ -65215,8 +65215,8 @@ }, "object": { "type": "Identifier", - "start": 33048, - "end": 33051, + "start": 33036, + "end": 33039, "loc": { "start": { "line": 745, @@ -65232,8 +65232,8 @@ }, "property": { "type": "Identifier", - "start": 33052, - "end": 33056, + "start": 33040, + "end": 33044, "loc": { "start": { "line": 745, @@ -65252,8 +65252,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33057, - "end": 33073, + "start": 33045, + "end": 33061, "loc": { "start": { "line": 745, @@ -65275,8 +65275,8 @@ }, { "type": "ExpressionStatement", - "start": 33091, - "end": 33107, + "start": 33079, + "end": 33095, "loc": { "start": { "line": 746, @@ -65289,8 +65289,8 @@ }, "expression": { "type": "CallExpression", - "start": 33091, - "end": 33106, + "start": 33079, + "end": 33094, "loc": { "start": { "line": 746, @@ -65303,8 +65303,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33091, - "end": 33099, + "start": 33079, + "end": 33087, "loc": { "start": { "line": 746, @@ -65317,8 +65317,8 @@ }, "object": { "type": "Identifier", - "start": 33091, - "end": 33094, + "start": 33079, + "end": 33082, "loc": { "start": { "line": 746, @@ -65334,8 +65334,8 @@ }, "property": { "type": "Identifier", - "start": 33095, - "end": 33099, + "start": 33083, + "end": 33087, "loc": { "start": { "line": 746, @@ -65354,8 +65354,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33100, - "end": 33105, + "start": 33088, + "end": 33093, "loc": { "start": { "line": 746, @@ -65381,8 +65381,8 @@ }, { "type": "ExpressionStatement", - "start": 33134, - "end": 33148, + "start": 33122, + "end": 33136, "loc": { "start": { "line": 748, @@ -65395,8 +65395,8 @@ }, "expression": { "type": "CallExpression", - "start": 33134, - "end": 33147, + "start": 33122, + "end": 33135, "loc": { "start": { "line": 748, @@ -65409,8 +65409,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33134, - "end": 33142, + "start": 33122, + "end": 33130, "loc": { "start": { "line": 748, @@ -65423,8 +65423,8 @@ }, "object": { "type": "Identifier", - "start": 33134, - "end": 33137, + "start": 33122, + "end": 33125, "loc": { "start": { "line": 748, @@ -65440,8 +65440,8 @@ }, "property": { "type": "Identifier", - "start": 33138, - "end": 33142, + "start": 33126, + "end": 33130, "loc": { "start": { "line": 748, @@ -65460,8 +65460,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33143, - "end": 33146, + "start": 33131, + "end": 33134, "loc": { "start": { "line": 748, @@ -65488,8 +65488,8 @@ }, { "type": "ExpressionStatement", - "start": 33168, - "end": 33202, + "start": 33156, + "end": 33190, "loc": { "start": { "line": 751, @@ -65502,8 +65502,8 @@ }, "expression": { "type": "CallExpression", - "start": 33168, - "end": 33201, + "start": 33156, + "end": 33189, "loc": { "start": { "line": 751, @@ -65516,8 +65516,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33168, - "end": 33176, + "start": 33156, + "end": 33164, "loc": { "start": { "line": 751, @@ -65530,8 +65530,8 @@ }, "object": { "type": "Identifier", - "start": 33168, - "end": 33171, + "start": 33156, + "end": 33159, "loc": { "start": { "line": 751, @@ -65547,8 +65547,8 @@ }, "property": { "type": "Identifier", - "start": 33172, - "end": 33176, + "start": 33160, + "end": 33164, "loc": { "start": { "line": 751, @@ -65567,8 +65567,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33177, - "end": 33200, + "start": 33165, + "end": 33188, "loc": { "start": { "line": 751, @@ -65590,8 +65590,8 @@ }, { "type": "ExpressionStatement", - "start": 33211, - "end": 33248, + "start": 33199, + "end": 33236, "loc": { "start": { "line": 752, @@ -65604,8 +65604,8 @@ }, "expression": { "type": "CallExpression", - "start": 33211, - "end": 33247, + "start": 33199, + "end": 33235, "loc": { "start": { "line": 752, @@ -65618,8 +65618,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33211, - "end": 33219, + "start": 33199, + "end": 33207, "loc": { "start": { "line": 752, @@ -65632,8 +65632,8 @@ }, "object": { "type": "Identifier", - "start": 33211, - "end": 33214, + "start": 33199, + "end": 33202, "loc": { "start": { "line": 752, @@ -65649,8 +65649,8 @@ }, "property": { "type": "Identifier", - "start": 33215, - "end": 33219, + "start": 33203, + "end": 33207, "loc": { "start": { "line": 752, @@ -65669,8 +65669,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33220, - "end": 33246, + "start": 33208, + "end": 33234, "loc": { "start": { "line": 752, @@ -65692,8 +65692,8 @@ }, { "type": "ExpressionStatement", - "start": 33257, - "end": 33294, + "start": 33245, + "end": 33282, "loc": { "start": { "line": 753, @@ -65706,8 +65706,8 @@ }, "expression": { "type": "CallExpression", - "start": 33257, - "end": 33293, + "start": 33245, + "end": 33281, "loc": { "start": { "line": 753, @@ -65720,8 +65720,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33257, - "end": 33265, + "start": 33245, + "end": 33253, "loc": { "start": { "line": 753, @@ -65734,8 +65734,8 @@ }, "object": { "type": "Identifier", - "start": 33257, - "end": 33260, + "start": 33245, + "end": 33248, "loc": { "start": { "line": 753, @@ -65751,8 +65751,8 @@ }, "property": { "type": "Identifier", - "start": 33261, - "end": 33265, + "start": 33249, + "end": 33253, "loc": { "start": { "line": 753, @@ -65771,8 +65771,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33266, - "end": 33292, + "start": 33254, + "end": 33280, "loc": { "start": { "line": 753, @@ -65794,8 +65794,8 @@ }, { "type": "ExpressionStatement", - "start": 33303, - "end": 33401, + "start": 33291, + "end": 33389, "loc": { "start": { "line": 754, @@ -65808,8 +65808,8 @@ }, "expression": { "type": "CallExpression", - "start": 33303, - "end": 33400, + "start": 33291, + "end": 33388, "loc": { "start": { "line": 754, @@ -65822,8 +65822,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33303, - "end": 33311, + "start": 33291, + "end": 33299, "loc": { "start": { "line": 754, @@ -65836,8 +65836,8 @@ }, "object": { "type": "Identifier", - "start": 33303, - "end": 33306, + "start": 33291, + "end": 33294, "loc": { "start": { "line": 754, @@ -65853,8 +65853,8 @@ }, "property": { "type": "Identifier", - "start": 33307, - "end": 33311, + "start": 33295, + "end": 33299, "loc": { "start": { "line": 754, @@ -65873,8 +65873,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33312, - "end": 33399, + "start": 33300, + "end": 33387, "loc": { "start": { "line": 754, @@ -65896,8 +65896,8 @@ }, { "type": "ExpressionStatement", - "start": 33411, - "end": 33517, + "start": 33399, + "end": 33505, "loc": { "start": { "line": 756, @@ -65910,8 +65910,8 @@ }, "expression": { "type": "CallExpression", - "start": 33411, - "end": 33516, + "start": 33399, + "end": 33504, "loc": { "start": { "line": 756, @@ -65924,8 +65924,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33411, - "end": 33419, + "start": 33399, + "end": 33407, "loc": { "start": { "line": 756, @@ -65938,8 +65938,8 @@ }, "object": { "type": "Identifier", - "start": 33411, - "end": 33414, + "start": 33399, + "end": 33402, "loc": { "start": { "line": 756, @@ -65955,8 +65955,8 @@ }, "property": { "type": "Identifier", - "start": 33415, - "end": 33419, + "start": 33403, + "end": 33407, "loc": { "start": { "line": 756, @@ -65975,8 +65975,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33420, - "end": 33515, + "start": 33408, + "end": 33503, "loc": { "start": { "line": 756, @@ -65998,8 +65998,8 @@ }, { "type": "ExpressionStatement", - "start": 33526, - "end": 33577, + "start": 33514, + "end": 33565, "loc": { "start": { "line": 757, @@ -66012,8 +66012,8 @@ }, "expression": { "type": "CallExpression", - "start": 33526, - "end": 33576, + "start": 33514, + "end": 33564, "loc": { "start": { "line": 757, @@ -66026,8 +66026,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33526, - "end": 33534, + "start": 33514, + "end": 33522, "loc": { "start": { "line": 757, @@ -66040,8 +66040,8 @@ }, "object": { "type": "Identifier", - "start": 33526, - "end": 33529, + "start": 33514, + "end": 33517, "loc": { "start": { "line": 757, @@ -66057,8 +66057,8 @@ }, "property": { "type": "Identifier", - "start": 33530, - "end": 33534, + "start": 33518, + "end": 33522, "loc": { "start": { "line": 757, @@ -66077,8 +66077,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33535, - "end": 33575, + "start": 33523, + "end": 33563, "loc": { "start": { "line": 757, @@ -66100,8 +66100,8 @@ }, { "type": "ExpressionStatement", - "start": 33587, - "end": 33625, + "start": 33575, + "end": 33613, "loc": { "start": { "line": 759, @@ -66114,8 +66114,8 @@ }, "expression": { "type": "CallExpression", - "start": 33587, - "end": 33624, + "start": 33575, + "end": 33612, "loc": { "start": { "line": 759, @@ -66128,8 +66128,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33587, - "end": 33595, + "start": 33575, + "end": 33583, "loc": { "start": { "line": 759, @@ -66142,8 +66142,8 @@ }, "object": { "type": "Identifier", - "start": 33587, - "end": 33590, + "start": 33575, + "end": 33578, "loc": { "start": { "line": 759, @@ -66159,8 +66159,8 @@ }, "property": { "type": "Identifier", - "start": 33591, - "end": 33595, + "start": 33579, + "end": 33583, "loc": { "start": { "line": 759, @@ -66179,8 +66179,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33596, - "end": 33623, + "start": 33584, + "end": 33611, "loc": { "start": { "line": 759, @@ -66202,8 +66202,8 @@ }, { "type": "ExpressionStatement", - "start": 33634, - "end": 33670, + "start": 33622, + "end": 33658, "loc": { "start": { "line": 760, @@ -66216,8 +66216,8 @@ }, "expression": { "type": "CallExpression", - "start": 33634, - "end": 33669, + "start": 33622, + "end": 33657, "loc": { "start": { "line": 760, @@ -66230,8 +66230,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33634, - "end": 33642, + "start": 33622, + "end": 33630, "loc": { "start": { "line": 760, @@ -66244,8 +66244,8 @@ }, "object": { "type": "Identifier", - "start": 33634, - "end": 33637, + "start": 33622, + "end": 33625, "loc": { "start": { "line": 760, @@ -66261,8 +66261,8 @@ }, "property": { "type": "Identifier", - "start": 33638, - "end": 33642, + "start": 33626, + "end": 33630, "loc": { "start": { "line": 760, @@ -66281,8 +66281,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33643, - "end": 33668, + "start": 33631, + "end": 33656, "loc": { "start": { "line": 760, @@ -66304,8 +66304,8 @@ }, { "type": "ExpressionStatement", - "start": 33679, - "end": 33745, + "start": 33667, + "end": 33733, "loc": { "start": { "line": 761, @@ -66318,8 +66318,8 @@ }, "expression": { "type": "CallExpression", - "start": 33679, - "end": 33744, + "start": 33667, + "end": 33732, "loc": { "start": { "line": 761, @@ -66332,8 +66332,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33679, - "end": 33687, + "start": 33667, + "end": 33675, "loc": { "start": { "line": 761, @@ -66346,8 +66346,8 @@ }, "object": { "type": "Identifier", - "start": 33679, - "end": 33682, + "start": 33667, + "end": 33670, "loc": { "start": { "line": 761, @@ -66363,8 +66363,8 @@ }, "property": { "type": "Identifier", - "start": 33683, - "end": 33687, + "start": 33671, + "end": 33675, "loc": { "start": { "line": 761, @@ -66383,8 +66383,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33688, - "end": 33743, + "start": 33676, + "end": 33731, "loc": { "start": { "line": 761, @@ -66406,8 +66406,8 @@ }, { "type": "ExpressionStatement", - "start": 33754, - "end": 33821, + "start": 33742, + "end": 33809, "loc": { "start": { "line": 762, @@ -66420,8 +66420,8 @@ }, "expression": { "type": "CallExpression", - "start": 33754, - "end": 33820, + "start": 33742, + "end": 33808, "loc": { "start": { "line": 762, @@ -66434,8 +66434,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33754, - "end": 33762, + "start": 33742, + "end": 33750, "loc": { "start": { "line": 762, @@ -66448,8 +66448,8 @@ }, "object": { "type": "Identifier", - "start": 33754, - "end": 33757, + "start": 33742, + "end": 33745, "loc": { "start": { "line": 762, @@ -66465,8 +66465,8 @@ }, "property": { "type": "Identifier", - "start": 33758, - "end": 33762, + "start": 33746, + "end": 33750, "loc": { "start": { "line": 762, @@ -66485,8 +66485,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33763, - "end": 33819, + "start": 33751, + "end": 33807, "loc": { "start": { "line": 762, @@ -66508,8 +66508,8 @@ }, { "type": "ExpressionStatement", - "start": 33830, - "end": 33901, + "start": 33818, + "end": 33889, "loc": { "start": { "line": 763, @@ -66522,8 +66522,8 @@ }, "expression": { "type": "CallExpression", - "start": 33830, - "end": 33900, + "start": 33818, + "end": 33888, "loc": { "start": { "line": 763, @@ -66536,8 +66536,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33830, - "end": 33838, + "start": 33818, + "end": 33826, "loc": { "start": { "line": 763, @@ -66550,8 +66550,8 @@ }, "object": { "type": "Identifier", - "start": 33830, - "end": 33833, + "start": 33818, + "end": 33821, "loc": { "start": { "line": 763, @@ -66567,8 +66567,8 @@ }, "property": { "type": "Identifier", - "start": 33834, - "end": 33838, + "start": 33822, + "end": 33826, "loc": { "start": { "line": 763, @@ -66587,8 +66587,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33839, - "end": 33899, + "start": 33827, + "end": 33887, "loc": { "start": { "line": 763, @@ -66610,8 +66610,8 @@ }, { "type": "ExpressionStatement", - "start": 33911, - "end": 34014, + "start": 33899, + "end": 34002, "loc": { "start": { "line": 765, @@ -66624,8 +66624,8 @@ }, "expression": { "type": "CallExpression", - "start": 33911, - "end": 34013, + "start": 33899, + "end": 34001, "loc": { "start": { "line": 765, @@ -66638,8 +66638,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33911, - "end": 33919, + "start": 33899, + "end": 33907, "loc": { "start": { "line": 765, @@ -66652,8 +66652,8 @@ }, "object": { "type": "Identifier", - "start": 33911, - "end": 33914, + "start": 33899, + "end": 33902, "loc": { "start": { "line": 765, @@ -66669,8 +66669,8 @@ }, "property": { "type": "Identifier", - "start": 33915, - "end": 33919, + "start": 33903, + "end": 33907, "loc": { "start": { "line": 765, @@ -66689,8 +66689,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33920, - "end": 34012, + "start": 33908, + "end": 34000, "loc": { "start": { "line": 765, @@ -66712,8 +66712,8 @@ }, { "type": "ExpressionStatement", - "start": 34023, - "end": 34093, + "start": 34011, + "end": 34081, "loc": { "start": { "line": 766, @@ -66726,8 +66726,8 @@ }, "expression": { "type": "CallExpression", - "start": 34023, - "end": 34092, + "start": 34011, + "end": 34080, "loc": { "start": { "line": 766, @@ -66740,8 +66740,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34023, - "end": 34031, + "start": 34011, + "end": 34019, "loc": { "start": { "line": 766, @@ -66754,8 +66754,8 @@ }, "object": { "type": "Identifier", - "start": 34023, - "end": 34026, + "start": 34011, + "end": 34014, "loc": { "start": { "line": 766, @@ -66771,8 +66771,8 @@ }, "property": { "type": "Identifier", - "start": 34027, - "end": 34031, + "start": 34015, + "end": 34019, "loc": { "start": { "line": 766, @@ -66791,8 +66791,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34032, - "end": 34091, + "start": 34020, + "end": 34079, "loc": { "start": { "line": 766, @@ -66814,8 +66814,8 @@ }, { "type": "ExpressionStatement", - "start": 34102, - "end": 34198, + "start": 34090, + "end": 34186, "loc": { "start": { "line": 767, @@ -66828,8 +66828,8 @@ }, "expression": { "type": "CallExpression", - "start": 34102, - "end": 34197, + "start": 34090, + "end": 34185, "loc": { "start": { "line": 767, @@ -66842,8 +66842,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34102, - "end": 34110, + "start": 34090, + "end": 34098, "loc": { "start": { "line": 767, @@ -66856,8 +66856,8 @@ }, "object": { "type": "Identifier", - "start": 34102, - "end": 34105, + "start": 34090, + "end": 34093, "loc": { "start": { "line": 767, @@ -66873,8 +66873,8 @@ }, "property": { "type": "Identifier", - "start": 34106, - "end": 34110, + "start": 34094, + "end": 34098, "loc": { "start": { "line": 767, @@ -66893,8 +66893,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34111, - "end": 34196, + "start": 34099, + "end": 34184, "loc": { "start": { "line": 767, @@ -66916,8 +66916,8 @@ }, { "type": "ExpressionStatement", - "start": 34208, - "end": 34264, + "start": 34196, + "end": 34252, "loc": { "start": { "line": 769, @@ -66930,8 +66930,8 @@ }, "expression": { "type": "CallExpression", - "start": 34208, - "end": 34263, + "start": 34196, + "end": 34251, "loc": { "start": { "line": 769, @@ -66944,8 +66944,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34208, - "end": 34216, + "start": 34196, + "end": 34204, "loc": { "start": { "line": 769, @@ -66958,8 +66958,8 @@ }, "object": { "type": "Identifier", - "start": 34208, - "end": 34211, + "start": 34196, + "end": 34199, "loc": { "start": { "line": 769, @@ -66975,8 +66975,8 @@ }, "property": { "type": "Identifier", - "start": 34212, - "end": 34216, + "start": 34200, + "end": 34204, "loc": { "start": { "line": 769, @@ -66995,8 +66995,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34217, - "end": 34262, + "start": 34205, + "end": 34250, "loc": { "start": { "line": 769, @@ -67018,8 +67018,8 @@ }, { "type": "ExpressionStatement", - "start": 34273, - "end": 34324, + "start": 34261, + "end": 34323, "loc": { "start": { "line": 770, @@ -67027,13 +67027,13 @@ }, "end": { "line": 770, - "column": 59 + "column": 70 } }, "expression": { "type": "CallExpression", - "start": 34273, - "end": 34323, + "start": 34261, + "end": 34322, "loc": { "start": { "line": 770, @@ -67041,13 +67041,13 @@ }, "end": { "line": 770, - "column": 58 + "column": 69 } }, "callee": { "type": "MemberExpression", - "start": 34273, - "end": 34281, + "start": 34261, + "end": 34269, "loc": { "start": { "line": 770, @@ -67060,8 +67060,8 @@ }, "object": { "type": "Identifier", - "start": 34273, - "end": 34276, + "start": 34261, + "end": 34264, "loc": { "start": { "line": 770, @@ -67077,8 +67077,8 @@ }, "property": { "type": "Identifier", - "start": 34277, - "end": 34281, + "start": 34265, + "end": 34269, "loc": { "start": { "line": 770, @@ -67097,8 +67097,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34282, - "end": 34322, + "start": 34270, + "end": 34321, "loc": { "start": { "line": 770, @@ -67106,22 +67106,22 @@ }, "end": { "line": 770, - "column": 57 + "column": 68 } }, "extra": { - "rawValue": "geometry.viewNormal = -vViewNormal;", - "raw": "\"geometry.viewNormal = -vViewNormal;\"" + "rawValue": "geometry.viewNormal = -normalize(vViewNormal);", + "raw": "\"geometry.viewNormal = -normalize(vViewNormal);\"" }, - "value": "geometry.viewNormal = -vViewNormal;" + "value": "geometry.viewNormal = -normalize(vViewNormal);" } ] } }, { "type": "ExpressionStatement", - "start": 34333, - "end": 34400, + "start": 34332, + "end": 34399, "loc": { "start": { "line": 771, @@ -67134,8 +67134,8 @@ }, "expression": { "type": "CallExpression", - "start": 34333, - "end": 34399, + "start": 34332, + "end": 34398, "loc": { "start": { "line": 771, @@ -67148,8 +67148,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34333, - "end": 34341, + "start": 34332, + "end": 34340, "loc": { "start": { "line": 771, @@ -67162,8 +67162,8 @@ }, "object": { "type": "Identifier", - "start": 34333, - "end": 34336, + "start": 34332, + "end": 34335, "loc": { "start": { "line": 771, @@ -67179,8 +67179,8 @@ }, "property": { "type": "Identifier", - "start": 34337, - "end": 34341, + "start": 34336, + "end": 34340, "loc": { "start": { "line": 771, @@ -67199,8 +67199,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34342, - "end": 34398, + "start": 34341, + "end": 34397, "loc": { "start": { "line": 771, @@ -67222,8 +67222,8 @@ }, { "type": "IfStatement", - "start": 34409, - "end": 34533, + "start": 34408, + "end": 34532, "loc": { "start": { "line": 772, @@ -67236,8 +67236,8 @@ }, "test": { "type": "BinaryExpression", - "start": 34413, - "end": 34445, + "start": 34412, + "end": 34444, "loc": { "start": { "line": 772, @@ -67250,8 +67250,8 @@ }, "left": { "type": "MemberExpression", - "start": 34413, - "end": 34441, + "start": 34412, + "end": 34440, "loc": { "start": { "line": 772, @@ -67264,8 +67264,8 @@ }, "object": { "type": "MemberExpression", - "start": 34413, - "end": 34434, + "start": 34412, + "end": 34433, "loc": { "start": { "line": 772, @@ -67278,8 +67278,8 @@ }, "object": { "type": "Identifier", - "start": 34413, - "end": 34424, + "start": 34412, + "end": 34423, "loc": { "start": { "line": 772, @@ -67295,8 +67295,8 @@ }, "property": { "type": "Identifier", - "start": 34425, - "end": 34434, + "start": 34424, + "end": 34433, "loc": { "start": { "line": 772, @@ -67314,8 +67314,8 @@ }, "property": { "type": "Identifier", - "start": 34435, - "end": 34441, + "start": 34434, + "end": 34440, "loc": { "start": { "line": 772, @@ -67334,8 +67334,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 34444, - "end": 34445, + "start": 34443, + "end": 34444, "loc": { "start": { "line": 772, @@ -67355,8 +67355,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 34447, - "end": 34533, + "start": 34446, + "end": 34532, "loc": { "start": { "line": 772, @@ -67370,8 +67370,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 34461, - "end": 34523, + "start": 34460, + "end": 34522, "loc": { "start": { "line": 773, @@ -67384,8 +67384,8 @@ }, "expression": { "type": "CallExpression", - "start": 34461, - "end": 34522, + "start": 34460, + "end": 34521, "loc": { "start": { "line": 773, @@ -67398,8 +67398,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34461, - "end": 34469, + "start": 34460, + "end": 34468, "loc": { "start": { "line": 773, @@ -67412,8 +67412,8 @@ }, "object": { "type": "Identifier", - "start": 34461, - "end": 34464, + "start": 34460, + "end": 34463, "loc": { "start": { "line": 773, @@ -67429,8 +67429,8 @@ }, "property": { "type": "Identifier", - "start": 34465, - "end": 34469, + "start": 34464, + "end": 34468, "loc": { "start": { "line": 773, @@ -67449,8 +67449,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34470, - "end": 34521, + "start": 34469, + "end": 34520, "loc": { "start": { "line": 773, @@ -67477,8 +67477,8 @@ }, { "type": "IfStatement", - "start": 34543, - "end": 34718, + "start": 34542, + "end": 34717, "loc": { "start": { "line": 776, @@ -67491,8 +67491,8 @@ }, "test": { "type": "LogicalExpression", - "start": 34547, - "end": 34620, + "start": 34546, + "end": 34619, "loc": { "start": { "line": 776, @@ -67505,8 +67505,8 @@ }, "left": { "type": "BinaryExpression", - "start": 34547, - "end": 34579, + "start": 34546, + "end": 34578, "loc": { "start": { "line": 776, @@ -67519,8 +67519,8 @@ }, "left": { "type": "MemberExpression", - "start": 34547, - "end": 34575, + "start": 34546, + "end": 34574, "loc": { "start": { "line": 776, @@ -67533,8 +67533,8 @@ }, "object": { "type": "MemberExpression", - "start": 34547, - "end": 34568, + "start": 34546, + "end": 34567, "loc": { "start": { "line": 776, @@ -67547,8 +67547,8 @@ }, "object": { "type": "Identifier", - "start": 34547, - "end": 34558, + "start": 34546, + "end": 34557, "loc": { "start": { "line": 776, @@ -67564,8 +67564,8 @@ }, "property": { "type": "Identifier", - "start": 34559, - "end": 34568, + "start": 34558, + "end": 34567, "loc": { "start": { "line": 776, @@ -67583,8 +67583,8 @@ }, "property": { "type": "Identifier", - "start": 34569, - "end": 34575, + "start": 34568, + "end": 34574, "loc": { "start": { "line": 776, @@ -67603,8 +67603,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 34578, - "end": 34579, + "start": 34577, + "end": 34578, "loc": { "start": { "line": 776, @@ -67625,8 +67625,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 34583, - "end": 34620, + "start": 34582, + "end": 34619, "loc": { "start": { "line": 776, @@ -67639,8 +67639,8 @@ }, "left": { "type": "MemberExpression", - "start": 34583, - "end": 34616, + "start": 34582, + "end": 34615, "loc": { "start": { "line": 776, @@ -67653,8 +67653,8 @@ }, "object": { "type": "MemberExpression", - "start": 34583, - "end": 34609, + "start": 34582, + "end": 34608, "loc": { "start": { "line": 776, @@ -67667,8 +67667,8 @@ }, "object": { "type": "Identifier", - "start": 34583, - "end": 34594, + "start": 34582, + "end": 34593, "loc": { "start": { "line": 776, @@ -67684,8 +67684,8 @@ }, "property": { "type": "Identifier", - "start": 34595, - "end": 34609, + "start": 34594, + "end": 34608, "loc": { "start": { "line": 776, @@ -67703,8 +67703,8 @@ }, "property": { "type": "Identifier", - "start": 34610, - "end": 34616, + "start": 34609, + "end": 34615, "loc": { "start": { "line": 776, @@ -67723,8 +67723,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 34619, - "end": 34620, + "start": 34618, + "end": 34619, "loc": { "start": { "line": 776, @@ -67745,8 +67745,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 34622, - "end": 34718, + "start": 34621, + "end": 34717, "loc": { "start": { "line": 776, @@ -67760,8 +67760,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 34636, - "end": 34708, + "start": 34635, + "end": 34707, "loc": { "start": { "line": 777, @@ -67774,8 +67774,8 @@ }, "expression": { "type": "CallExpression", - "start": 34636, - "end": 34707, + "start": 34635, + "end": 34706, "loc": { "start": { "line": 777, @@ -67788,8 +67788,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34636, - "end": 34644, + "start": 34635, + "end": 34643, "loc": { "start": { "line": 777, @@ -67802,8 +67802,8 @@ }, "object": { "type": "Identifier", - "start": 34636, - "end": 34639, + "start": 34635, + "end": 34638, "loc": { "start": { "line": 777, @@ -67819,8 +67819,8 @@ }, "property": { "type": "Identifier", - "start": 34640, - "end": 34644, + "start": 34639, + "end": 34643, "loc": { "start": { "line": 777, @@ -67839,8 +67839,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34645, - "end": 34706, + "start": 34644, + "end": 34705, "loc": { "start": { "line": 777, @@ -67867,8 +67867,8 @@ }, { "type": "ForStatement", - "start": 34728, - "end": 36195, + "start": 34727, + "end": 36194, "loc": { "start": { "line": 780, @@ -67881,8 +67881,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 34733, - "end": 34775, + "start": 34732, + "end": 34774, "loc": { "start": { "line": 780, @@ -67896,8 +67896,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 34737, - "end": 34742, + "start": 34736, + "end": 34741, "loc": { "start": { "line": 780, @@ -67910,8 +67910,8 @@ }, "id": { "type": "Identifier", - "start": 34737, - "end": 34738, + "start": 34736, + "end": 34737, "loc": { "start": { "line": 780, @@ -67927,8 +67927,8 @@ }, "init": { "type": "NumericLiteral", - "start": 34741, - "end": 34742, + "start": 34740, + "end": 34741, "loc": { "start": { "line": 780, @@ -67948,8 +67948,8 @@ }, { "type": "VariableDeclarator", - "start": 34744, - "end": 34775, + "start": 34743, + "end": 34774, "loc": { "start": { "line": 780, @@ -67962,8 +67962,8 @@ }, "id": { "type": "Identifier", - "start": 34744, - "end": 34747, + "start": 34743, + "end": 34746, "loc": { "start": { "line": 780, @@ -67979,8 +67979,8 @@ }, "init": { "type": "MemberExpression", - "start": 34750, - "end": 34775, + "start": 34749, + "end": 34774, "loc": { "start": { "line": 780, @@ -67993,8 +67993,8 @@ }, "object": { "type": "MemberExpression", - "start": 34750, - "end": 34768, + "start": 34749, + "end": 34767, "loc": { "start": { "line": 780, @@ -68007,8 +68007,8 @@ }, "object": { "type": "Identifier", - "start": 34750, - "end": 34761, + "start": 34749, + "end": 34760, "loc": { "start": { "line": 780, @@ -68024,8 +68024,8 @@ }, "property": { "type": "Identifier", - "start": 34762, - "end": 34768, + "start": 34761, + "end": 34767, "loc": { "start": { "line": 780, @@ -68043,8 +68043,8 @@ }, "property": { "type": "Identifier", - "start": 34769, - "end": 34775, + "start": 34768, + "end": 34774, "loc": { "start": { "line": 780, @@ -68066,8 +68066,8 @@ }, "test": { "type": "BinaryExpression", - "start": 34777, - "end": 34784, + "start": 34776, + "end": 34783, "loc": { "start": { "line": 780, @@ -68080,8 +68080,8 @@ }, "left": { "type": "Identifier", - "start": 34777, - "end": 34778, + "start": 34776, + "end": 34777, "loc": { "start": { "line": 780, @@ -68098,8 +68098,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 34781, - "end": 34784, + "start": 34780, + "end": 34783, "loc": { "start": { "line": 780, @@ -68116,8 +68116,8 @@ }, "update": { "type": "UpdateExpression", - "start": 34786, - "end": 34789, + "start": 34785, + "end": 34788, "loc": { "start": { "line": 780, @@ -68132,8 +68132,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 34786, - "end": 34787, + "start": 34785, + "end": 34786, "loc": { "start": { "line": 780, @@ -68150,8 +68150,8 @@ }, "body": { "type": "BlockStatement", - "start": 34791, - "end": 36195, + "start": 34790, + "end": 36194, "loc": { "start": { "line": 780, @@ -68165,8 +68165,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 34806, - "end": 34842, + "start": 34805, + "end": 34841, "loc": { "start": { "line": 782, @@ -68180,8 +68180,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 34812, - "end": 34841, + "start": 34811, + "end": 34840, "loc": { "start": { "line": 782, @@ -68194,8 +68194,8 @@ }, "id": { "type": "Identifier", - "start": 34812, - "end": 34817, + "start": 34811, + "end": 34816, "loc": { "start": { "line": 782, @@ -68211,8 +68211,8 @@ }, "init": { "type": "MemberExpression", - "start": 34820, - "end": 34841, + "start": 34819, + "end": 34840, "loc": { "start": { "line": 782, @@ -68225,8 +68225,8 @@ }, "object": { "type": "MemberExpression", - "start": 34820, - "end": 34838, + "start": 34819, + "end": 34837, "loc": { "start": { "line": 782, @@ -68239,8 +68239,8 @@ }, "object": { "type": "Identifier", - "start": 34820, - "end": 34831, + "start": 34819, + "end": 34830, "loc": { "start": { "line": 782, @@ -68256,8 +68256,8 @@ }, "property": { "type": "Identifier", - "start": 34832, - "end": 34838, + "start": 34831, + "end": 34837, "loc": { "start": { "line": 782, @@ -68275,8 +68275,8 @@ }, "property": { "type": "Identifier", - "start": 34839, - "end": 34840, + "start": 34838, + "end": 34839, "loc": { "start": { "line": 782, @@ -68298,8 +68298,8 @@ }, { "type": "IfStatement", - "start": 34856, - "end": 34927, + "start": 34855, + "end": 34926, "loc": { "start": { "line": 784, @@ -68312,8 +68312,8 @@ }, "test": { "type": "BinaryExpression", - "start": 34860, - "end": 34884, + "start": 34859, + "end": 34883, "loc": { "start": { "line": 784, @@ -68326,8 +68326,8 @@ }, "left": { "type": "MemberExpression", - "start": 34860, - "end": 34870, + "start": 34859, + "end": 34869, "loc": { "start": { "line": 784, @@ -68340,8 +68340,8 @@ }, "object": { "type": "Identifier", - "start": 34860, - "end": 34865, + "start": 34859, + "end": 34864, "loc": { "start": { "line": 784, @@ -68357,8 +68357,8 @@ }, "property": { "type": "Identifier", - "start": 34866, - "end": 34870, + "start": 34865, + "end": 34869, "loc": { "start": { "line": 784, @@ -68377,8 +68377,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 34875, - "end": 34884, + "start": 34874, + "end": 34883, "loc": { "start": { "line": 784, @@ -68398,8 +68398,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 34886, - "end": 34927, + "start": 34885, + "end": 34926, "loc": { "start": { "line": 784, @@ -68413,8 +68413,8 @@ "body": [ { "type": "ContinueStatement", - "start": 34904, - "end": 34913, + "start": 34903, + "end": 34912, "loc": { "start": { "line": 785, @@ -68434,8 +68434,8 @@ }, { "type": "IfStatement", - "start": 34940, - "end": 35988, + "start": 34939, + "end": 35987, "loc": { "start": { "line": 787, @@ -68448,8 +68448,8 @@ }, "test": { "type": "BinaryExpression", - "start": 34944, - "end": 34964, + "start": 34943, + "end": 34963, "loc": { "start": { "line": 787, @@ -68462,8 +68462,8 @@ }, "left": { "type": "MemberExpression", - "start": 34944, - "end": 34954, + "start": 34943, + "end": 34953, "loc": { "start": { "line": 787, @@ -68476,8 +68476,8 @@ }, "object": { "type": "Identifier", - "start": 34944, - "end": 34949, + "start": 34943, + "end": 34948, "loc": { "start": { "line": 787, @@ -68493,8 +68493,8 @@ }, "property": { "type": "Identifier", - "start": 34950, - "end": 34954, + "start": 34949, + "end": 34953, "loc": { "start": { "line": 787, @@ -68513,8 +68513,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 34959, - "end": 34964, + "start": 34958, + "end": 34963, "loc": { "start": { "line": 787, @@ -68534,8 +68534,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 34966, - "end": 35262, + "start": 34965, + "end": 35261, "loc": { "start": { "line": 787, @@ -68549,8 +68549,8 @@ "body": [ { "type": "IfStatement", - "start": 34984, - "end": 35248, + "start": 34983, + "end": 35247, "loc": { "start": { "line": 788, @@ -68563,8 +68563,8 @@ }, "test": { "type": "BinaryExpression", - "start": 34988, - "end": 35010, + "start": 34987, + "end": 35009, "loc": { "start": { "line": 788, @@ -68577,8 +68577,8 @@ }, "left": { "type": "MemberExpression", - "start": 34988, - "end": 34999, + "start": 34987, + "end": 34998, "loc": { "start": { "line": 788, @@ -68591,8 +68591,8 @@ }, "object": { "type": "Identifier", - "start": 34988, - "end": 34993, + "start": 34987, + "end": 34992, "loc": { "start": { "line": 788, @@ -68608,8 +68608,8 @@ }, "property": { "type": "Identifier", - "start": 34994, - "end": 34999, + "start": 34993, + "end": 34998, "loc": { "start": { "line": 788, @@ -68628,8 +68628,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 35004, - "end": 35010, + "start": 35003, + "end": 35009, "loc": { "start": { "line": 788, @@ -68649,8 +68649,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 35012, - "end": 35112, + "start": 35011, + "end": 35111, "loc": { "start": { "line": 788, @@ -68664,8 +68664,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 35034, - "end": 35094, + "start": 35033, + "end": 35093, "loc": { "start": { "line": 789, @@ -68678,8 +68678,8 @@ }, "expression": { "type": "CallExpression", - "start": 35034, - "end": 35093, + "start": 35033, + "end": 35092, "loc": { "start": { "line": 789, @@ -68692,8 +68692,8 @@ }, "callee": { "type": "MemberExpression", - "start": 35034, - "end": 35042, + "start": 35033, + "end": 35041, "loc": { "start": { "line": 789, @@ -68706,8 +68706,8 @@ }, "object": { "type": "Identifier", - "start": 35034, - "end": 35037, + "start": 35033, + "end": 35036, "loc": { "start": { "line": 789, @@ -68723,8 +68723,8 @@ }, "property": { "type": "Identifier", - "start": 35038, - "end": 35042, + "start": 35037, + "end": 35041, "loc": { "start": { "line": 789, @@ -68743,8 +68743,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 35043, - "end": 35092, + "start": 35042, + "end": 35091, "loc": { "start": { "line": 789, @@ -68757,8 +68757,8 @@ }, "left": { "type": "BinaryExpression", - "start": 35043, - "end": 35085, + "start": 35042, + "end": 35084, "loc": { "start": { "line": 789, @@ -68771,8 +68771,8 @@ }, "left": { "type": "StringLiteral", - "start": 35043, - "end": 35081, + "start": 35042, + "end": 35080, "loc": { "start": { "line": 789, @@ -68792,8 +68792,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 35084, - "end": 35085, + "start": 35083, + "end": 35084, "loc": { "start": { "line": 789, @@ -68811,8 +68811,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 35088, - "end": 35092, + "start": 35087, + "end": 35091, "loc": { "start": { "line": 789, @@ -68838,8 +68838,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 35118, - "end": 35248, + "start": 35117, + "end": 35247, "loc": { "start": { "line": 790, @@ -68853,8 +68853,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 35140, - "end": 35230, + "start": 35139, + "end": 35229, "loc": { "start": { "line": 791, @@ -68867,8 +68867,8 @@ }, "expression": { "type": "CallExpression", - "start": 35140, - "end": 35229, + "start": 35139, + "end": 35228, "loc": { "start": { "line": 791, @@ -68881,8 +68881,8 @@ }, "callee": { "type": "MemberExpression", - "start": 35140, - "end": 35148, + "start": 35139, + "end": 35147, "loc": { "start": { "line": 791, @@ -68895,8 +68895,8 @@ }, "object": { "type": "Identifier", - "start": 35140, - "end": 35143, + "start": 35139, + "end": 35142, "loc": { "start": { "line": 791, @@ -68912,8 +68912,8 @@ }, "property": { "type": "Identifier", - "start": 35144, - "end": 35148, + "start": 35143, + "end": 35147, "loc": { "start": { "line": 791, @@ -68932,8 +68932,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 35149, - "end": 35228, + "start": 35148, + "end": 35227, "loc": { "start": { "line": 791, @@ -68946,8 +68946,8 @@ }, "left": { "type": "BinaryExpression", - "start": 35149, - "end": 35210, + "start": 35148, + "end": 35209, "loc": { "start": { "line": 791, @@ -68960,8 +68960,8 @@ }, "left": { "type": "StringLiteral", - "start": 35149, - "end": 35206, + "start": 35148, + "end": 35205, "loc": { "start": { "line": 791, @@ -68981,8 +68981,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 35209, - "end": 35210, + "start": 35208, + "end": 35209, "loc": { "start": { "line": 791, @@ -69000,8 +69000,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 35213, - "end": 35228, + "start": 35212, + "end": 35227, "loc": { "start": { "line": 791, @@ -69031,8 +69031,8 @@ }, "alternate": { "type": "IfStatement", - "start": 35268, - "end": 35988, + "start": 35267, + "end": 35987, "loc": { "start": { "line": 793, @@ -69045,8 +69045,8 @@ }, "test": { "type": "BinaryExpression", - "start": 35272, - "end": 35294, + "start": 35271, + "end": 35293, "loc": { "start": { "line": 793, @@ -69059,8 +69059,8 @@ }, "left": { "type": "MemberExpression", - "start": 35272, - "end": 35282, + "start": 35271, + "end": 35281, "loc": { "start": { "line": 793, @@ -69073,8 +69073,8 @@ }, "object": { "type": "Identifier", - "start": 35272, - "end": 35277, + "start": 35271, + "end": 35276, "loc": { "start": { "line": 793, @@ -69090,8 +69090,8 @@ }, "property": { "type": "Identifier", - "start": 35278, - "end": 35282, + "start": 35277, + "end": 35281, "loc": { "start": { "line": 793, @@ -69110,8 +69110,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 35287, - "end": 35294, + "start": 35286, + "end": 35293, "loc": { "start": { "line": 793, @@ -69131,8 +69131,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 35296, - "end": 35612, + "start": 35295, + "end": 35611, "loc": { "start": { "line": 793, @@ -69146,8 +69146,8 @@ "body": [ { "type": "IfStatement", - "start": 35314, - "end": 35598, + "start": 35313, + "end": 35597, "loc": { "start": { "line": 794, @@ -69160,8 +69160,8 @@ }, "test": { "type": "BinaryExpression", - "start": 35318, - "end": 35340, + "start": 35317, + "end": 35339, "loc": { "start": { "line": 794, @@ -69174,8 +69174,8 @@ }, "left": { "type": "MemberExpression", - "start": 35318, - "end": 35329, + "start": 35317, + "end": 35328, "loc": { "start": { "line": 794, @@ -69188,8 +69188,8 @@ }, "object": { "type": "Identifier", - "start": 35318, - "end": 35323, + "start": 35317, + "end": 35322, "loc": { "start": { "line": 794, @@ -69205,8 +69205,8 @@ }, "property": { "type": "Identifier", - "start": 35324, - "end": 35329, + "start": 35323, + "end": 35328, "loc": { "start": { "line": 794, @@ -69225,8 +69225,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 35334, - "end": 35340, + "start": 35333, + "end": 35339, "loc": { "start": { "line": 794, @@ -69246,8 +69246,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 35342, - "end": 35462, + "start": 35341, + "end": 35461, "loc": { "start": { "line": 794, @@ -69261,8 +69261,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 35364, - "end": 35444, + "start": 35363, + "end": 35443, "loc": { "start": { "line": 795, @@ -69275,8 +69275,8 @@ }, "expression": { "type": "CallExpression", - "start": 35364, - "end": 35443, + "start": 35363, + "end": 35442, "loc": { "start": { "line": 795, @@ -69289,8 +69289,8 @@ }, "callee": { "type": "MemberExpression", - "start": 35364, - "end": 35372, + "start": 35363, + "end": 35371, "loc": { "start": { "line": 795, @@ -69303,8 +69303,8 @@ }, "object": { "type": "Identifier", - "start": 35364, - "end": 35367, + "start": 35363, + "end": 35366, "loc": { "start": { "line": 795, @@ -69320,8 +69320,8 @@ }, "property": { "type": "Identifier", - "start": 35368, - "end": 35372, + "start": 35367, + "end": 35371, "loc": { "start": { "line": 795, @@ -69340,8 +69340,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 35373, - "end": 35442, + "start": 35372, + "end": 35441, "loc": { "start": { "line": 795, @@ -69354,8 +69354,8 @@ }, "left": { "type": "BinaryExpression", - "start": 35373, - "end": 35415, + "start": 35372, + "end": 35414, "loc": { "start": { "line": 795, @@ -69368,8 +69368,8 @@ }, "left": { "type": "StringLiteral", - "start": 35373, - "end": 35411, + "start": 35372, + "end": 35410, "loc": { "start": { "line": 795, @@ -69389,8 +69389,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 35414, - "end": 35415, + "start": 35413, + "end": 35414, "loc": { "start": { "line": 795, @@ -69408,8 +69408,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 35418, - "end": 35442, + "start": 35417, + "end": 35441, "loc": { "start": { "line": 795, @@ -69435,8 +69435,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 35468, - "end": 35598, + "start": 35467, + "end": 35597, "loc": { "start": { "line": 796, @@ -69450,8 +69450,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 35490, - "end": 35580, + "start": 35489, + "end": 35579, "loc": { "start": { "line": 797, @@ -69464,8 +69464,8 @@ }, "expression": { "type": "CallExpression", - "start": 35490, - "end": 35579, + "start": 35489, + "end": 35578, "loc": { "start": { "line": 797, @@ -69478,8 +69478,8 @@ }, "callee": { "type": "MemberExpression", - "start": 35490, - "end": 35498, + "start": 35489, + "end": 35497, "loc": { "start": { "line": 797, @@ -69492,8 +69492,8 @@ }, "object": { "type": "Identifier", - "start": 35490, - "end": 35493, + "start": 35489, + "end": 35492, "loc": { "start": { "line": 797, @@ -69509,8 +69509,8 @@ }, "property": { "type": "Identifier", - "start": 35494, - "end": 35498, + "start": 35493, + "end": 35497, "loc": { "start": { "line": 797, @@ -69529,8 +69529,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 35499, - "end": 35578, + "start": 35498, + "end": 35577, "loc": { "start": { "line": 797, @@ -69543,8 +69543,8 @@ }, "left": { "type": "BinaryExpression", - "start": 35499, - "end": 35560, + "start": 35498, + "end": 35559, "loc": { "start": { "line": 797, @@ -69557,8 +69557,8 @@ }, "left": { "type": "StringLiteral", - "start": 35499, - "end": 35556, + "start": 35498, + "end": 35555, "loc": { "start": { "line": 797, @@ -69578,8 +69578,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 35559, - "end": 35560, + "start": 35558, + "end": 35559, "loc": { "start": { "line": 797, @@ -69597,8 +69597,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 35563, - "end": 35578, + "start": 35562, + "end": 35577, "loc": { "start": { "line": 797, @@ -69628,8 +69628,8 @@ }, "alternate": { "type": "IfStatement", - "start": 35618, - "end": 35988, + "start": 35617, + "end": 35987, "loc": { "start": { "line": 799, @@ -69642,8 +69642,8 @@ }, "test": { "type": "BinaryExpression", - "start": 35622, - "end": 35643, + "start": 35621, + "end": 35642, "loc": { "start": { "line": 799, @@ -69656,8 +69656,8 @@ }, "left": { "type": "MemberExpression", - "start": 35622, - "end": 35632, + "start": 35621, + "end": 35631, "loc": { "start": { "line": 799, @@ -69670,8 +69670,8 @@ }, "object": { "type": "Identifier", - "start": 35622, - "end": 35627, + "start": 35621, + "end": 35626, "loc": { "start": { "line": 799, @@ -69687,8 +69687,8 @@ }, "property": { "type": "Identifier", - "start": 35628, - "end": 35632, + "start": 35627, + "end": 35631, "loc": { "start": { "line": 799, @@ -69707,8 +69707,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 35637, - "end": 35643, + "start": 35636, + "end": 35642, "loc": { "start": { "line": 799, @@ -69728,8 +69728,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 35645, - "end": 35941, + "start": 35644, + "end": 35940, "loc": { "start": { "line": 799, @@ -69743,8 +69743,8 @@ "body": [ { "type": "IfStatement", - "start": 35663, - "end": 35927, + "start": 35662, + "end": 35926, "loc": { "start": { "line": 800, @@ -69757,8 +69757,8 @@ }, "test": { "type": "BinaryExpression", - "start": 35667, - "end": 35689, + "start": 35666, + "end": 35688, "loc": { "start": { "line": 800, @@ -69771,8 +69771,8 @@ }, "left": { "type": "MemberExpression", - "start": 35667, - "end": 35678, + "start": 35666, + "end": 35677, "loc": { "start": { "line": 800, @@ -69785,8 +69785,8 @@ }, "object": { "type": "Identifier", - "start": 35667, - "end": 35672, + "start": 35666, + "end": 35671, "loc": { "start": { "line": 800, @@ -69802,8 +69802,8 @@ }, "property": { "type": "Identifier", - "start": 35673, - "end": 35678, + "start": 35672, + "end": 35677, "loc": { "start": { "line": 800, @@ -69822,8 +69822,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 35683, - "end": 35689, + "start": 35682, + "end": 35688, "loc": { "start": { "line": 800, @@ -69843,8 +69843,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 35691, - "end": 35791, + "start": 35690, + "end": 35790, "loc": { "start": { "line": 800, @@ -69858,8 +69858,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 35713, - "end": 35773, + "start": 35712, + "end": 35772, "loc": { "start": { "line": 801, @@ -69872,8 +69872,8 @@ }, "expression": { "type": "CallExpression", - "start": 35713, - "end": 35772, + "start": 35712, + "end": 35771, "loc": { "start": { "line": 801, @@ -69886,8 +69886,8 @@ }, "callee": { "type": "MemberExpression", - "start": 35713, - "end": 35721, + "start": 35712, + "end": 35720, "loc": { "start": { "line": 801, @@ -69900,8 +69900,8 @@ }, "object": { "type": "Identifier", - "start": 35713, - "end": 35716, + "start": 35712, + "end": 35715, "loc": { "start": { "line": 801, @@ -69917,8 +69917,8 @@ }, "property": { "type": "Identifier", - "start": 35717, - "end": 35721, + "start": 35716, + "end": 35720, "loc": { "start": { "line": 801, @@ -69937,8 +69937,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 35722, - "end": 35771, + "start": 35721, + "end": 35770, "loc": { "start": { "line": 801, @@ -69951,8 +69951,8 @@ }, "left": { "type": "BinaryExpression", - "start": 35722, - "end": 35764, + "start": 35721, + "end": 35763, "loc": { "start": { "line": 801, @@ -69965,8 +69965,8 @@ }, "left": { "type": "StringLiteral", - "start": 35722, - "end": 35760, + "start": 35721, + "end": 35759, "loc": { "start": { "line": 801, @@ -69986,8 +69986,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 35763, - "end": 35764, + "start": 35762, + "end": 35763, "loc": { "start": { "line": 801, @@ -70005,8 +70005,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 35767, - "end": 35771, + "start": 35766, + "end": 35770, "loc": { "start": { "line": 801, @@ -70032,8 +70032,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 35797, - "end": 35927, + "start": 35796, + "end": 35926, "loc": { "start": { "line": 802, @@ -70047,8 +70047,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 35819, - "end": 35909, + "start": 35818, + "end": 35908, "loc": { "start": { "line": 803, @@ -70061,8 +70061,8 @@ }, "expression": { "type": "CallExpression", - "start": 35819, - "end": 35908, + "start": 35818, + "end": 35907, "loc": { "start": { "line": 803, @@ -70075,8 +70075,8 @@ }, "callee": { "type": "MemberExpression", - "start": 35819, - "end": 35827, + "start": 35818, + "end": 35826, "loc": { "start": { "line": 803, @@ -70089,8 +70089,8 @@ }, "object": { "type": "Identifier", - "start": 35819, - "end": 35822, + "start": 35818, + "end": 35821, "loc": { "start": { "line": 803, @@ -70106,8 +70106,8 @@ }, "property": { "type": "Identifier", - "start": 35823, - "end": 35827, + "start": 35822, + "end": 35826, "loc": { "start": { "line": 803, @@ -70126,8 +70126,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 35828, - "end": 35907, + "start": 35827, + "end": 35906, "loc": { "start": { "line": 803, @@ -70140,8 +70140,8 @@ }, "left": { "type": "BinaryExpression", - "start": 35828, - "end": 35889, + "start": 35827, + "end": 35888, "loc": { "start": { "line": 803, @@ -70154,8 +70154,8 @@ }, "left": { "type": "StringLiteral", - "start": 35828, - "end": 35885, + "start": 35827, + "end": 35884, "loc": { "start": { "line": 803, @@ -70175,8 +70175,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 35888, - "end": 35889, + "start": 35887, + "end": 35888, "loc": { "start": { "line": 803, @@ -70194,8 +70194,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 35892, - "end": 35907, + "start": 35891, + "end": 35906, "loc": { "start": { "line": 803, @@ -70225,8 +70225,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 35947, - "end": 35988, + "start": 35946, + "end": 35987, "loc": { "start": { "line": 805, @@ -70240,8 +70240,8 @@ "body": [ { "type": "ContinueStatement", - "start": 35965, - "end": 35974, + "start": 35964, + "end": 35973, "loc": { "start": { "line": 806, @@ -70262,8 +70262,8 @@ }, { "type": "ExpressionStatement", - "start": 36002, - "end": 36078, + "start": 36001, + "end": 36077, "loc": { "start": { "line": 809, @@ -70276,8 +70276,8 @@ }, "expression": { "type": "CallExpression", - "start": 36002, - "end": 36077, + "start": 36001, + "end": 36076, "loc": { "start": { "line": 809, @@ -70290,8 +70290,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36002, - "end": 36010, + "start": 36001, + "end": 36009, "loc": { "start": { "line": 809, @@ -70304,8 +70304,8 @@ }, "object": { "type": "Identifier", - "start": 36002, - "end": 36005, + "start": 36001, + "end": 36004, "loc": { "start": { "line": 809, @@ -70321,8 +70321,8 @@ }, "property": { "type": "Identifier", - "start": 36006, - "end": 36010, + "start": 36005, + "end": 36009, "loc": { "start": { "line": 809, @@ -70341,8 +70341,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 36011, - "end": 36076, + "start": 36010, + "end": 36075, "loc": { "start": { "line": 809, @@ -70355,8 +70355,8 @@ }, "left": { "type": "BinaryExpression", - "start": 36011, - "end": 36068, + "start": 36010, + "end": 36067, "loc": { "start": { "line": 809, @@ -70369,8 +70369,8 @@ }, "left": { "type": "BinaryExpression", - "start": 36011, - "end": 36064, + "start": 36010, + "end": 36063, "loc": { "start": { "line": 809, @@ -70383,8 +70383,8 @@ }, "left": { "type": "BinaryExpression", - "start": 36011, - "end": 36042, + "start": 36010, + "end": 36041, "loc": { "start": { "line": 809, @@ -70397,8 +70397,8 @@ }, "left": { "type": "StringLiteral", - "start": 36011, - "end": 36038, + "start": 36010, + "end": 36037, "loc": { "start": { "line": 809, @@ -70418,8 +70418,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 36041, - "end": 36042, + "start": 36040, + "end": 36041, "loc": { "start": { "line": 809, @@ -70437,8 +70437,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 36045, - "end": 36064, + "start": 36044, + "end": 36063, "loc": { "start": { "line": 809, @@ -70459,8 +70459,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 36067, - "end": 36068, + "start": 36066, + "end": 36067, "loc": { "start": { "line": 809, @@ -70478,8 +70478,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 36071, - "end": 36076, + "start": 36070, + "end": 36075, "loc": { "start": { "line": 809, @@ -70503,8 +70503,8 @@ { "type": "CommentLine", "value": " a is intensity", - "start": 36079, - "end": 36096, + "start": 36078, + "end": 36095, "loc": { "start": { "line": 809, @@ -70520,8 +70520,8 @@ }, { "type": "ExpressionStatement", - "start": 36110, - "end": 36185, + "start": 36109, + "end": 36184, "loc": { "start": { "line": 811, @@ -70534,8 +70534,8 @@ }, "expression": { "type": "CallExpression", - "start": 36110, - "end": 36184, + "start": 36109, + "end": 36183, "loc": { "start": { "line": 811, @@ -70548,8 +70548,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36110, - "end": 36118, + "start": 36109, + "end": 36117, "loc": { "start": { "line": 811, @@ -70562,8 +70562,8 @@ }, "object": { "type": "Identifier", - "start": 36110, - "end": 36113, + "start": 36109, + "end": 36112, "loc": { "start": { "line": 811, @@ -70580,8 +70580,8 @@ }, "property": { "type": "Identifier", - "start": 36114, - "end": 36118, + "start": 36113, + "end": 36117, "loc": { "start": { "line": 811, @@ -70601,8 +70601,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36119, - "end": 36183, + "start": 36118, + "end": 36182, "loc": { "start": { "line": 811, @@ -70626,8 +70626,8 @@ { "type": "CommentLine", "value": " a is intensity", - "start": 36079, - "end": 36096, + "start": 36078, + "end": 36095, "loc": { "start": { "line": 809, @@ -70647,8 +70647,8 @@ }, { "type": "ExpressionStatement", - "start": 36205, - "end": 36336, + "start": 36204, + "end": 36335, "loc": { "start": { "line": 814, @@ -70661,8 +70661,8 @@ }, "expression": { "type": "CallExpression", - "start": 36205, - "end": 36335, + "start": 36204, + "end": 36334, "loc": { "start": { "line": 814, @@ -70675,8 +70675,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36205, - "end": 36213, + "start": 36204, + "end": 36212, "loc": { "start": { "line": 814, @@ -70689,8 +70689,8 @@ }, "object": { "type": "Identifier", - "start": 36205, - "end": 36208, + "start": 36204, + "end": 36207, "loc": { "start": { "line": 814, @@ -70706,8 +70706,8 @@ }, "property": { "type": "Identifier", - "start": 36209, - "end": 36213, + "start": 36208, + "end": 36212, "loc": { "start": { "line": 814, @@ -70726,8 +70726,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36214, - "end": 36334, + "start": 36213, + "end": 36333, "loc": { "start": { "line": 814, @@ -70749,8 +70749,8 @@ }, { "type": "ExpressionStatement", - "start": 36346, - "end": 36374, + "start": 36345, + "end": 36373, "loc": { "start": { "line": 816, @@ -70763,8 +70763,8 @@ }, "expression": { "type": "CallExpression", - "start": 36346, - "end": 36373, + "start": 36345, + "end": 36372, "loc": { "start": { "line": 816, @@ -70777,8 +70777,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36346, - "end": 36354, + "start": 36345, + "end": 36353, "loc": { "start": { "line": 816, @@ -70791,8 +70791,8 @@ }, "object": { "type": "Identifier", - "start": 36346, - "end": 36349, + "start": 36345, + "end": 36348, "loc": { "start": { "line": 816, @@ -70808,8 +70808,8 @@ }, "property": { "type": "Identifier", - "start": 36350, - "end": 36354, + "start": 36349, + "end": 36353, "loc": { "start": { "line": 816, @@ -70828,8 +70828,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36355, - "end": 36372, + "start": 36354, + "end": 36371, "loc": { "start": { "line": 816, @@ -70851,8 +70851,8 @@ }, { "type": "IfStatement", - "start": 36384, - "end": 37391, + "start": 36383, + "end": 37390, "loc": { "start": { "line": 818, @@ -70865,8 +70865,8 @@ }, "test": { "type": "MemberExpression", - "start": 36388, - "end": 36401, + "start": 36387, + "end": 36400, "loc": { "start": { "line": 818, @@ -70879,8 +70879,8 @@ }, "object": { "type": "ThisExpression", - "start": 36388, - "end": 36392, + "start": 36387, + "end": 36391, "loc": { "start": { "line": 818, @@ -70894,8 +70894,8 @@ }, "property": { "type": "Identifier", - "start": 36393, - "end": 36401, + "start": 36392, + "end": 36400, "loc": { "start": { "line": 818, @@ -70913,8 +70913,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 36403, - "end": 37291, + "start": 36402, + "end": 37290, "loc": { "start": { "line": 818, @@ -70928,8 +70928,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 36649, - "end": 36705, + "start": 36648, + "end": 36704, "loc": { "start": { "line": 821, @@ -70942,8 +70942,8 @@ }, "expression": { "type": "CallExpression", - "start": 36649, - "end": 36704, + "start": 36648, + "end": 36703, "loc": { "start": { "line": 821, @@ -70956,8 +70956,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36649, - "end": 36657, + "start": 36648, + "end": 36656, "loc": { "start": { "line": 821, @@ -70970,8 +70970,8 @@ }, "object": { "type": "Identifier", - "start": 36649, - "end": 36652, + "start": 36648, + "end": 36651, "loc": { "start": { "line": 821, @@ -70988,8 +70988,8 @@ }, "property": { "type": "Identifier", - "start": 36653, - "end": 36657, + "start": 36652, + "end": 36656, "loc": { "start": { "line": 821, @@ -71009,8 +71009,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36658, - "end": 36703, + "start": 36657, + "end": 36702, "loc": { "start": { "line": 821, @@ -71034,8 +71034,8 @@ { "type": "CommentLine", "value": " Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top", - "start": 36417, - "end": 36520, + "start": 36416, + "end": 36519, "loc": { "start": { "line": 819, @@ -71050,8 +71050,8 @@ { "type": "CommentLine", "value": " Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject", - "start": 36533, - "end": 36636, + "start": 36532, + "end": 36635, "loc": { "start": { "line": 820, @@ -71067,8 +71067,8 @@ }, { "type": "ExpressionStatement", - "start": 36718, - "end": 36774, + "start": 36717, + "end": 36773, "loc": { "start": { "line": 822, @@ -71081,8 +71081,8 @@ }, "expression": { "type": "CallExpression", - "start": 36718, - "end": 36773, + "start": 36717, + "end": 36772, "loc": { "start": { "line": 822, @@ -71095,8 +71095,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36718, - "end": 36726, + "start": 36717, + "end": 36725, "loc": { "start": { "line": 822, @@ -71109,8 +71109,8 @@ }, "object": { "type": "Identifier", - "start": 36718, - "end": 36721, + "start": 36717, + "end": 36720, "loc": { "start": { "line": 822, @@ -71126,8 +71126,8 @@ }, "property": { "type": "Identifier", - "start": 36722, - "end": 36726, + "start": 36721, + "end": 36725, "loc": { "start": { "line": 822, @@ -71146,8 +71146,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36727, - "end": 36772, + "start": 36726, + "end": 36771, "loc": { "start": { "line": 822, @@ -71169,8 +71169,8 @@ }, { "type": "ExpressionStatement", - "start": 36787, - "end": 36843, + "start": 36786, + "end": 36842, "loc": { "start": { "line": 823, @@ -71183,8 +71183,8 @@ }, "expression": { "type": "CallExpression", - "start": 36787, - "end": 36842, + "start": 36786, + "end": 36841, "loc": { "start": { "line": 823, @@ -71197,8 +71197,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36787, - "end": 36795, + "start": 36786, + "end": 36794, "loc": { "start": { "line": 823, @@ -71211,8 +71211,8 @@ }, "object": { "type": "Identifier", - "start": 36787, - "end": 36790, + "start": 36786, + "end": 36789, "loc": { "start": { "line": 823, @@ -71228,8 +71228,8 @@ }, "property": { "type": "Identifier", - "start": 36791, - "end": 36795, + "start": 36790, + "end": 36794, "loc": { "start": { "line": 823, @@ -71248,8 +71248,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36796, - "end": 36841, + "start": 36795, + "end": 36840, "loc": { "start": { "line": 823, @@ -71271,8 +71271,8 @@ }, { "type": "ExpressionStatement", - "start": 36856, - "end": 36912, + "start": 36855, + "end": 36911, "loc": { "start": { "line": 824, @@ -71285,8 +71285,8 @@ }, "expression": { "type": "CallExpression", - "start": 36856, - "end": 36911, + "start": 36855, + "end": 36910, "loc": { "start": { "line": 824, @@ -71299,8 +71299,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36856, - "end": 36864, + "start": 36855, + "end": 36863, "loc": { "start": { "line": 824, @@ -71313,8 +71313,8 @@ }, "object": { "type": "Identifier", - "start": 36856, - "end": 36859, + "start": 36855, + "end": 36858, "loc": { "start": { "line": 824, @@ -71330,8 +71330,8 @@ }, "property": { "type": "Identifier", - "start": 36860, - "end": 36864, + "start": 36859, + "end": 36863, "loc": { "start": { "line": 824, @@ -71350,8 +71350,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36865, - "end": 36910, + "start": 36864, + "end": 36909, "loc": { "start": { "line": 824, @@ -71373,8 +71373,8 @@ }, { "type": "ExpressionStatement", - "start": 36925, - "end": 37037, + "start": 36924, + "end": 37036, "loc": { "start": { "line": 825, @@ -71387,8 +71387,8 @@ }, "expression": { "type": "CallExpression", - "start": 36925, - "end": 37036, + "start": 36924, + "end": 37035, "loc": { "start": { "line": 825, @@ -71401,8 +71401,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36925, - "end": 36933, + "start": 36924, + "end": 36932, "loc": { "start": { "line": 825, @@ -71415,8 +71415,8 @@ }, "object": { "type": "Identifier", - "start": 36925, - "end": 36928, + "start": 36924, + "end": 36927, "loc": { "start": { "line": 825, @@ -71432,8 +71432,8 @@ }, "property": { "type": "Identifier", - "start": 36929, - "end": 36933, + "start": 36928, + "end": 36932, "loc": { "start": { "line": 825, @@ -71452,8 +71452,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36934, - "end": 37035, + "start": 36933, + "end": 37034, "loc": { "start": { "line": 825, @@ -71475,8 +71475,8 @@ }, { "type": "ExpressionStatement", - "start": 37050, - "end": 37188, + "start": 37049, + "end": 37187, "loc": { "start": { "line": 826, @@ -71489,8 +71489,8 @@ }, "expression": { "type": "CallExpression", - "start": 37050, - "end": 37187, + "start": 37049, + "end": 37186, "loc": { "start": { "line": 826, @@ -71503,8 +71503,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37050, - "end": 37058, + "start": 37049, + "end": 37057, "loc": { "start": { "line": 826, @@ -71517,8 +71517,8 @@ }, "object": { "type": "Identifier", - "start": 37050, - "end": 37053, + "start": 37049, + "end": 37052, "loc": { "start": { "line": 826, @@ -71534,8 +71534,8 @@ }, "property": { "type": "Identifier", - "start": 37054, - "end": 37058, + "start": 37053, + "end": 37057, "loc": { "start": { "line": 826, @@ -71554,8 +71554,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 37059, - "end": 37186, + "start": 37058, + "end": 37185, "loc": { "start": { "line": 826, @@ -71577,8 +71577,8 @@ }, { "type": "ExpressionStatement", - "start": 37201, - "end": 37281, + "start": 37200, + "end": 37280, "loc": { "start": { "line": 827, @@ -71591,8 +71591,8 @@ }, "expression": { "type": "CallExpression", - "start": 37201, - "end": 37280, + "start": 37200, + "end": 37279, "loc": { "start": { "line": 827, @@ -71605,8 +71605,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37201, - "end": 37209, + "start": 37200, + "end": 37208, "loc": { "start": { "line": 827, @@ -71619,8 +71619,8 @@ }, "object": { "type": "Identifier", - "start": 37201, - "end": 37204, + "start": 37200, + "end": 37203, "loc": { "start": { "line": 827, @@ -71636,8 +71636,8 @@ }, "property": { "type": "Identifier", - "start": 37205, - "end": 37209, + "start": 37204, + "end": 37208, "loc": { "start": { "line": 827, @@ -71656,8 +71656,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 37210, - "end": 37279, + "start": 37209, + "end": 37278, "loc": { "start": { "line": 827, @@ -71682,8 +71682,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 37297, - "end": 37391, + "start": 37296, + "end": 37390, "loc": { "start": { "line": 828, @@ -71697,8 +71697,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 37311, - "end": 37381, + "start": 37310, + "end": 37380, "loc": { "start": { "line": 829, @@ -71711,8 +71711,8 @@ }, "expression": { "type": "CallExpression", - "start": 37311, - "end": 37380, + "start": 37310, + "end": 37379, "loc": { "start": { "line": 829, @@ -71725,8 +71725,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37311, - "end": 37319, + "start": 37310, + "end": 37318, "loc": { "start": { "line": 829, @@ -71739,8 +71739,8 @@ }, "object": { "type": "Identifier", - "start": 37311, - "end": 37314, + "start": 37310, + "end": 37313, "loc": { "start": { "line": 829, @@ -71756,8 +71756,8 @@ }, "property": { "type": "Identifier", - "start": 37315, - "end": 37319, + "start": 37314, + "end": 37318, "loc": { "start": { "line": 829, @@ -71776,8 +71776,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 37320, - "end": 37379, + "start": 37319, + "end": 37378, "loc": { "start": { "line": 829, @@ -71803,8 +71803,8 @@ }, { "type": "IfStatement", - "start": 37401, - "end": 37505, + "start": 37400, + "end": 37504, "loc": { "start": { "line": 832, @@ -71817,8 +71817,8 @@ }, "test": { "type": "Identifier", - "start": 37405, - "end": 37416, + "start": 37404, + "end": 37415, "loc": { "start": { "line": 832, @@ -71834,8 +71834,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 37418, - "end": 37505, + "start": 37417, + "end": 37504, "loc": { "start": { "line": 832, @@ -71849,8 +71849,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 37432, - "end": 37495, + "start": 37431, + "end": 37494, "loc": { "start": { "line": 833, @@ -71863,8 +71863,8 @@ }, "expression": { "type": "CallExpression", - "start": 37432, - "end": 37494, + "start": 37431, + "end": 37493, "loc": { "start": { "line": 833, @@ -71877,8 +71877,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37432, - "end": 37440, + "start": 37431, + "end": 37439, "loc": { "start": { "line": 833, @@ -71891,8 +71891,8 @@ }, "object": { "type": "Identifier", - "start": 37432, - "end": 37435, + "start": 37431, + "end": 37434, "loc": { "start": { "line": 833, @@ -71908,8 +71908,8 @@ }, "property": { "type": "Identifier", - "start": 37436, - "end": 37440, + "start": 37435, + "end": 37439, "loc": { "start": { "line": 833, @@ -71928,8 +71928,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 37441, - "end": 37493, + "start": 37440, + "end": 37492, "loc": { "start": { "line": 833, @@ -71956,8 +71956,8 @@ }, { "type": "ExpressionStatement", - "start": 37515, - "end": 37553, + "start": 37514, + "end": 37552, "loc": { "start": { "line": 836, @@ -71970,8 +71970,8 @@ }, "expression": { "type": "CallExpression", - "start": 37515, - "end": 37552, + "start": 37514, + "end": 37551, "loc": { "start": { "line": 836, @@ -71984,8 +71984,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37515, - "end": 37523, + "start": 37514, + "end": 37522, "loc": { "start": { "line": 836, @@ -71998,8 +71998,8 @@ }, "object": { "type": "Identifier", - "start": 37515, - "end": 37518, + "start": 37514, + "end": 37517, "loc": { "start": { "line": 836, @@ -72015,8 +72015,8 @@ }, "property": { "type": "Identifier", - "start": 37519, - "end": 37523, + "start": 37518, + "end": 37522, "loc": { "start": { "line": 836, @@ -72035,8 +72035,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 37524, - "end": 37551, + "start": 37523, + "end": 37550, "loc": { "start": { "line": 836, @@ -72058,8 +72058,8 @@ }, { "type": "IfStatement", - "start": 37563, - "end": 37753, + "start": 37562, + "end": 37752, "loc": { "start": { "line": 838, @@ -72072,8 +72072,8 @@ }, "test": { "type": "LogicalExpression", - "start": 37567, - "end": 37655, + "start": 37566, + "end": 37654, "loc": { "start": { "line": 838, @@ -72086,8 +72086,8 @@ }, "left": { "type": "MemberExpression", - "start": 37567, - "end": 37602, + "start": 37566, + "end": 37601, "loc": { "start": { "line": 838, @@ -72100,8 +72100,8 @@ }, "object": { "type": "Identifier", - "start": 37567, - "end": 37572, + "start": 37566, + "end": 37571, "loc": { "start": { "line": 838, @@ -72117,8 +72117,8 @@ }, "property": { "type": "Identifier", - "start": 37573, - "end": 37602, + "start": 37572, + "end": 37601, "loc": { "start": { "line": 838, @@ -72137,8 +72137,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 37606, - "end": 37655, + "start": 37605, + "end": 37654, "loc": { "start": { "line": 838, @@ -72151,8 +72151,8 @@ }, "object": { "type": "MemberExpression", - "start": 37606, - "end": 37637, + "start": 37605, + "end": 37636, "loc": { "start": { "line": 838, @@ -72165,8 +72165,8 @@ }, "object": { "type": "Identifier", - "start": 37606, - "end": 37616, + "start": 37605, + "end": 37615, "loc": { "start": { "line": 838, @@ -72182,8 +72182,8 @@ }, "property": { "type": "Identifier", - "start": 37617, - "end": 37637, + "start": 37616, + "end": 37636, "loc": { "start": { "line": 838, @@ -72201,8 +72201,8 @@ }, "property": { "type": "StringLiteral", - "start": 37638, - "end": 37654, + "start": 37637, + "end": 37653, "loc": { "start": { "line": 838, @@ -72224,8 +72224,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 37657, - "end": 37753, + "start": 37656, + "end": 37752, "loc": { "start": { "line": 838, @@ -72239,8 +72239,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 37671, - "end": 37743, + "start": 37670, + "end": 37742, "loc": { "start": { "line": 839, @@ -72253,8 +72253,8 @@ }, "expression": { "type": "CallExpression", - "start": 37671, - "end": 37742, + "start": 37670, + "end": 37741, "loc": { "start": { "line": 839, @@ -72267,8 +72267,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37671, - "end": 37679, + "start": 37670, + "end": 37678, "loc": { "start": { "line": 839, @@ -72281,8 +72281,8 @@ }, "object": { "type": "Identifier", - "start": 37671, - "end": 37674, + "start": 37670, + "end": 37673, "loc": { "start": { "line": 839, @@ -72298,8 +72298,8 @@ }, "property": { "type": "Identifier", - "start": 37675, - "end": 37679, + "start": 37674, + "end": 37678, "loc": { "start": { "line": 839, @@ -72318,8 +72318,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 37680, - "end": 37741, + "start": 37679, + "end": 37740, "loc": { "start": { "line": 839, @@ -72346,8 +72346,8 @@ }, { "type": "ExpressionStatement", - "start": 37763, - "end": 37777, + "start": 37762, + "end": 37776, "loc": { "start": { "line": 842, @@ -72360,8 +72360,8 @@ }, "expression": { "type": "CallExpression", - "start": 37763, - "end": 37776, + "start": 37762, + "end": 37775, "loc": { "start": { "line": 842, @@ -72374,8 +72374,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37763, - "end": 37771, + "start": 37762, + "end": 37770, "loc": { "start": { "line": 842, @@ -72388,8 +72388,8 @@ }, "object": { "type": "Identifier", - "start": 37763, - "end": 37766, + "start": 37762, + "end": 37765, "loc": { "start": { "line": 842, @@ -72405,8 +72405,8 @@ }, "property": { "type": "Identifier", - "start": 37767, - "end": 37771, + "start": 37766, + "end": 37770, "loc": { "start": { "line": 842, @@ -72425,8 +72425,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 37772, - "end": 37775, + "start": 37771, + "end": 37774, "loc": { "start": { "line": 842, @@ -72448,8 +72448,8 @@ }, { "type": "ReturnStatement", - "start": 37786, - "end": 37797, + "start": 37785, + "end": 37796, "loc": { "start": { "line": 843, @@ -72462,8 +72462,8 @@ }, "argument": { "type": "Identifier", - "start": 37793, - "end": 37796, + "start": 37792, + "end": 37795, "loc": { "start": { "line": 843, @@ -72484,8 +72484,8 @@ }, { "type": "ClassMethod", - "start": 37809, - "end": 37869, + "start": 37808, + "end": 37868, "loc": { "start": { "line": 846, @@ -72500,8 +72500,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 37809, - "end": 37829, + "start": 37808, + "end": 37828, "loc": { "start": { "line": 846, @@ -72523,8 +72523,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 37832, - "end": 37869, + "start": 37831, + "end": 37868, "loc": { "start": { "line": 846, @@ -72538,8 +72538,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 37842, - "end": 37863, + "start": 37841, + "end": 37862, "loc": { "start": { "line": 847, @@ -72552,8 +72552,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 37842, - "end": 37862, + "start": 37841, + "end": 37861, "loc": { "start": { "line": 847, @@ -72567,8 +72567,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 37842, - "end": 37855, + "start": 37841, + "end": 37854, "loc": { "start": { "line": 847, @@ -72581,8 +72581,8 @@ }, "object": { "type": "ThisExpression", - "start": 37842, - "end": 37846, + "start": 37841, + "end": 37845, "loc": { "start": { "line": 847, @@ -72596,8 +72596,8 @@ }, "property": { "type": "Identifier", - "start": 37847, - "end": 37855, + "start": 37846, + "end": 37854, "loc": { "start": { "line": 847, @@ -72615,8 +72615,8 @@ }, "right": { "type": "NullLiteral", - "start": 37858, - "end": 37862, + "start": 37857, + "end": 37861, "loc": { "start": { "line": 847, @@ -72636,8 +72636,8 @@ }, { "type": "ClassMethod", - "start": 37875, - "end": 37998, + "start": 37874, + "end": 37997, "loc": { "start": { "line": 850, @@ -72652,8 +72652,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 37875, - "end": 37882, + "start": 37874, + "end": 37881, "loc": { "start": { "line": 850, @@ -72675,8 +72675,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 37885, - "end": 37998, + "start": 37884, + "end": 37997, "loc": { "start": { "line": 850, @@ -72690,8 +72690,8 @@ "body": [ { "type": "IfStatement", - "start": 37895, - "end": 37962, + "start": 37894, + "end": 37961, "loc": { "start": { "line": 851, @@ -72704,8 +72704,8 @@ }, "test": { "type": "MemberExpression", - "start": 37899, - "end": 37912, + "start": 37898, + "end": 37911, "loc": { "start": { "line": 851, @@ -72718,8 +72718,8 @@ }, "object": { "type": "ThisExpression", - "start": 37899, - "end": 37903, + "start": 37898, + "end": 37902, "loc": { "start": { "line": 851, @@ -72733,8 +72733,8 @@ }, "property": { "type": "Identifier", - "start": 37904, - "end": 37912, + "start": 37903, + "end": 37911, "loc": { "start": { "line": 851, @@ -72752,8 +72752,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 37914, - "end": 37962, + "start": 37913, + "end": 37961, "loc": { "start": { "line": 851, @@ -72767,8 +72767,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 37928, - "end": 37952, + "start": 37927, + "end": 37951, "loc": { "start": { "line": 852, @@ -72781,8 +72781,8 @@ }, "expression": { "type": "CallExpression", - "start": 37928, - "end": 37951, + "start": 37927, + "end": 37950, "loc": { "start": { "line": 852, @@ -72795,8 +72795,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37928, - "end": 37949, + "start": 37927, + "end": 37948, "loc": { "start": { "line": 852, @@ -72809,8 +72809,8 @@ }, "object": { "type": "MemberExpression", - "start": 37928, - "end": 37941, + "start": 37927, + "end": 37940, "loc": { "start": { "line": 852, @@ -72823,8 +72823,8 @@ }, "object": { "type": "ThisExpression", - "start": 37928, - "end": 37932, + "start": 37927, + "end": 37931, "loc": { "start": { "line": 852, @@ -72838,8 +72838,8 @@ }, "property": { "type": "Identifier", - "start": 37933, - "end": 37941, + "start": 37932, + "end": 37940, "loc": { "start": { "line": 852, @@ -72857,8 +72857,8 @@ }, "property": { "type": "Identifier", - "start": 37942, - "end": 37949, + "start": 37941, + "end": 37948, "loc": { "start": { "line": 852, @@ -72884,8 +72884,8 @@ }, { "type": "ExpressionStatement", - "start": 37971, - "end": 37992, + "start": 37970, + "end": 37991, "loc": { "start": { "line": 854, @@ -72898,8 +72898,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 37971, - "end": 37991, + "start": 37970, + "end": 37990, "loc": { "start": { "line": 854, @@ -72913,8 +72913,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 37971, - "end": 37984, + "start": 37970, + "end": 37983, "loc": { "start": { "line": 854, @@ -72927,8 +72927,8 @@ }, "object": { "type": "ThisExpression", - "start": 37971, - "end": 37975, + "start": 37970, + "end": 37974, "loc": { "start": { "line": 854, @@ -72942,8 +72942,8 @@ }, "property": { "type": "Identifier", - "start": 37976, - "end": 37984, + "start": 37975, + "end": 37983, "loc": { "start": { "line": 854, @@ -72961,8 +72961,8 @@ }, "right": { "type": "NullLiteral", - "start": 37987, - "end": 37991, + "start": 37986, + "end": 37990, "loc": { "start": { "line": 854, @@ -72988,8 +72988,8 @@ }, { "type": "ExportNamedDeclaration", - "start": 38002, - "end": 38051, + "start": 38001, + "end": 38050, "loc": { "start": { "line": 858, @@ -73004,8 +73004,8 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 38010, - "end": 38049, + "start": 38009, + "end": 38048, "loc": { "start": { "line": 858, @@ -73018,8 +73018,8 @@ }, "local": { "type": "Identifier", - "start": 38010, - "end": 38049, + "start": 38009, + "end": 38048, "loc": { "start": { "line": 858, @@ -73035,8 +73035,8 @@ }, "exported": { "type": "Identifier", - "start": 38010, - "end": 38049, + "start": 38009, + "end": 38048, "loc": { "start": { "line": 858, @@ -73056,8 +73056,8 @@ }, { "type": "ExportNamedDeclaration", - "start": 38002, - "end": 38051, + "start": 38001, + "end": 38050, "loc": { "start": { "line": 858, @@ -73071,7 +73071,7 @@ "declaration": { "type": "ClassDeclaration", "start": 453, - "end": 38000, + "end": 37999, "loc": { "start": { "line": 18, @@ -73104,7 +73104,7 @@ "body": { "type": "ClassBody", "start": 499, - "end": 38000, + "end": 37999, "loc": { "start": { "line": 18, @@ -105111,7 +105111,7 @@ { "type": "ClassMethod", "start": 13974, - "end": 19074, + "end": 19063, "loc": { "start": { "line": 335, @@ -105150,7 +105150,7 @@ "body": { "type": "BlockStatement", "start": 13995, - "end": 19074, + "end": 19063, "loc": { "start": { "line": 335, @@ -111776,7 +111776,7 @@ { "type": "ExpressionStatement", "start": 17884, - "end": 17967, + "end": 17956, "loc": { "start": { "line": 429, @@ -111784,13 +111784,13 @@ }, "end": { "line": 429, - "column": 91 + "column": 80 } }, "expression": { "type": "CallExpression", "start": 17884, - "end": 17966, + "end": 17955, "loc": { "start": { "line": 429, @@ -111798,7 +111798,7 @@ }, "end": { "line": 429, - "column": 90 + "column": 79 } }, "callee": { @@ -111855,7 +111855,7 @@ { "type": "StringLiteral", "start": 17893, - "end": 17965, + "end": 17954, "loc": { "start": { "line": 429, @@ -111863,22 +111863,22 @@ }, "end": { "line": 429, - "column": 89 + "column": 78 } }, "extra": { - "rawValue": "vec3 viewNormal = normalize(vec4(viewNormalMatrix * worldNormal).xyz);", - "raw": "\"vec3 viewNormal = normalize(vec4(viewNormalMatrix * worldNormal).xyz);\"" + "rawValue": "vec3 viewNormal = vec4(viewNormalMatrix * worldNormal).xyz;", + "raw": "\"vec3 viewNormal = vec4(viewNormalMatrix * worldNormal).xyz;\"" }, - "value": "vec3 viewNormal = normalize(vec4(viewNormalMatrix * worldNormal).xyz);" + "value": "vec3 viewNormal = vec4(viewNormalMatrix * worldNormal).xyz;" } ] } }, { "type": "ExpressionStatement", - "start": 17977, - "end": 18031, + "start": 17966, + "end": 18020, "loc": { "start": { "line": 431, @@ -111891,8 +111891,8 @@ }, "expression": { "type": "CallExpression", - "start": 17977, - "end": 18030, + "start": 17966, + "end": 18019, "loc": { "start": { "line": 431, @@ -111905,8 +111905,8 @@ }, "callee": { "type": "MemberExpression", - "start": 17977, - "end": 17985, + "start": 17966, + "end": 17974, "loc": { "start": { "line": 431, @@ -111919,8 +111919,8 @@ }, "object": { "type": "Identifier", - "start": 17977, - "end": 17980, + "start": 17966, + "end": 17969, "loc": { "start": { "line": 431, @@ -111936,8 +111936,8 @@ }, "property": { "type": "Identifier", - "start": 17981, - "end": 17985, + "start": 17970, + "end": 17974, "loc": { "start": { "line": 431, @@ -111956,8 +111956,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 17986, - "end": 18029, + "start": 17975, + "end": 18018, "loc": { "start": { "line": 431, @@ -111979,8 +111979,8 @@ }, { "type": "IfStatement", - "start": 18040, - "end": 18409, + "start": 18029, + "end": 18398, "loc": { "start": { "line": 432, @@ -111993,8 +111993,8 @@ }, "test": { "type": "MemberExpression", - "start": 18044, - "end": 18079, + "start": 18033, + "end": 18068, "loc": { "start": { "line": 432, @@ -112007,8 +112007,8 @@ }, "object": { "type": "Identifier", - "start": 18044, - "end": 18049, + "start": 18033, + "end": 18038, "loc": { "start": { "line": 432, @@ -112024,8 +112024,8 @@ }, "property": { "type": "Identifier", - "start": 18050, - "end": 18079, + "start": 18039, + "end": 18068, "loc": { "start": { "line": 432, @@ -112043,8 +112043,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 18081, - "end": 18409, + "start": 18070, + "end": 18398, "loc": { "start": { "line": 432, @@ -112058,8 +112058,8 @@ "body": [ { "type": "IfStatement", - "start": 18095, - "end": 18399, + "start": 18084, + "end": 18388, "loc": { "start": { "line": 433, @@ -112072,8 +112072,8 @@ }, "test": { "type": "MemberExpression", - "start": 18099, - "end": 18148, + "start": 18088, + "end": 18137, "loc": { "start": { "line": 433, @@ -112086,8 +112086,8 @@ }, "object": { "type": "MemberExpression", - "start": 18099, - "end": 18130, + "start": 18088, + "end": 18119, "loc": { "start": { "line": 433, @@ -112100,8 +112100,8 @@ }, "object": { "type": "Identifier", - "start": 18099, - "end": 18109, + "start": 18088, + "end": 18098, "loc": { "start": { "line": 433, @@ -112117,8 +112117,8 @@ }, "property": { "type": "Identifier", - "start": 18110, - "end": 18130, + "start": 18099, + "end": 18119, "loc": { "start": { "line": 433, @@ -112136,8 +112136,8 @@ }, "property": { "type": "StringLiteral", - "start": 18131, - "end": 18147, + "start": 18120, + "end": 18136, "loc": { "start": { "line": 433, @@ -112158,8 +112158,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 18150, - "end": 18224, + "start": 18139, + "end": 18213, "loc": { "start": { "line": 433, @@ -112173,8 +112173,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 18168, - "end": 18210, + "start": 18157, + "end": 18199, "loc": { "start": { "line": 434, @@ -112187,8 +112187,8 @@ }, "expression": { "type": "CallExpression", - "start": 18168, - "end": 18209, + "start": 18157, + "end": 18198, "loc": { "start": { "line": 434, @@ -112201,8 +112201,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18168, - "end": 18176, + "start": 18157, + "end": 18165, "loc": { "start": { "line": 434, @@ -112215,8 +112215,8 @@ }, "object": { "type": "Identifier", - "start": 18168, - "end": 18171, + "start": 18157, + "end": 18160, "loc": { "start": { "line": 434, @@ -112232,8 +112232,8 @@ }, "property": { "type": "Identifier", - "start": 18172, - "end": 18176, + "start": 18161, + "end": 18165, "loc": { "start": { "line": 434, @@ -112252,8 +112252,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18177, - "end": 18208, + "start": 18166, + "end": 18197, "loc": { "start": { "line": 434, @@ -112278,8 +112278,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 18230, - "end": 18399, + "start": 18219, + "end": 18388, "loc": { "start": { "line": 435, @@ -112293,8 +112293,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 18248, - "end": 18332, + "start": 18237, + "end": 18321, "loc": { "start": { "line": 436, @@ -112307,8 +112307,8 @@ }, "expression": { "type": "CallExpression", - "start": 18248, - "end": 18331, + "start": 18237, + "end": 18320, "loc": { "start": { "line": 436, @@ -112321,8 +112321,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18248, - "end": 18256, + "start": 18237, + "end": 18245, "loc": { "start": { "line": 436, @@ -112335,8 +112335,8 @@ }, "object": { "type": "Identifier", - "start": 18248, - "end": 18251, + "start": 18237, + "end": 18240, "loc": { "start": { "line": 436, @@ -112352,8 +112352,8 @@ }, "property": { "type": "Identifier", - "start": 18252, - "end": 18256, + "start": 18241, + "end": 18245, "loc": { "start": { "line": 436, @@ -112372,8 +112372,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18257, - "end": 18330, + "start": 18246, + "end": 18319, "loc": { "start": { "line": 436, @@ -112395,8 +112395,8 @@ }, { "type": "ExpressionStatement", - "start": 18349, - "end": 18385, + "start": 18338, + "end": 18374, "loc": { "start": { "line": 437, @@ -112409,8 +112409,8 @@ }, "expression": { "type": "CallExpression", - "start": 18349, - "end": 18384, + "start": 18338, + "end": 18373, "loc": { "start": { "line": 437, @@ -112423,8 +112423,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18349, - "end": 18357, + "start": 18338, + "end": 18346, "loc": { "start": { "line": 437, @@ -112437,8 +112437,8 @@ }, "object": { "type": "Identifier", - "start": 18349, - "end": 18352, + "start": 18338, + "end": 18341, "loc": { "start": { "line": 437, @@ -112454,8 +112454,8 @@ }, "property": { "type": "Identifier", - "start": 18353, - "end": 18357, + "start": 18342, + "end": 18346, "loc": { "start": { "line": 437, @@ -112474,8 +112474,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18358, - "end": 18383, + "start": 18347, + "end": 18372, "loc": { "start": { "line": 437, @@ -112506,8 +112506,8 @@ }, { "type": "IfStatement", - "start": 18419, - "end": 18644, + "start": 18408, + "end": 18633, "loc": { "start": { "line": 441, @@ -112520,8 +112520,8 @@ }, "test": { "type": "Identifier", - "start": 18423, - "end": 18431, + "start": 18412, + "end": 18420, "loc": { "start": { "line": 441, @@ -112537,8 +112537,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 18433, - "end": 18644, + "start": 18422, + "end": 18633, "loc": { "start": { "line": 441, @@ -112552,8 +112552,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 18447, - "end": 18491, + "start": 18436, + "end": 18480, "loc": { "start": { "line": 442, @@ -112566,8 +112566,8 @@ }, "expression": { "type": "CallExpression", - "start": 18447, - "end": 18490, + "start": 18436, + "end": 18479, "loc": { "start": { "line": 442, @@ -112580,8 +112580,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18447, - "end": 18455, + "start": 18436, + "end": 18444, "loc": { "start": { "line": 442, @@ -112594,8 +112594,8 @@ }, "object": { "type": "Identifier", - "start": 18447, - "end": 18450, + "start": 18436, + "end": 18439, "loc": { "start": { "line": 442, @@ -112611,8 +112611,8 @@ }, "property": { "type": "Identifier", - "start": 18451, - "end": 18455, + "start": 18440, + "end": 18444, "loc": { "start": { "line": 442, @@ -112631,8 +112631,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18456, - "end": 18489, + "start": 18445, + "end": 18478, "loc": { "start": { "line": 442, @@ -112654,8 +112654,8 @@ }, { "type": "ExpressionStatement", - "start": 18504, - "end": 18534, + "start": 18493, + "end": 18523, "loc": { "start": { "line": 443, @@ -112668,8 +112668,8 @@ }, "expression": { "type": "CallExpression", - "start": 18504, - "end": 18533, + "start": 18493, + "end": 18522, "loc": { "start": { "line": 443, @@ -112682,8 +112682,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18504, - "end": 18512, + "start": 18493, + "end": 18501, "loc": { "start": { "line": 443, @@ -112696,8 +112696,8 @@ }, "object": { "type": "Identifier", - "start": 18504, - "end": 18507, + "start": 18493, + "end": 18496, "loc": { "start": { "line": 443, @@ -112713,8 +112713,8 @@ }, "property": { "type": "Identifier", - "start": 18508, - "end": 18512, + "start": 18497, + "end": 18501, "loc": { "start": { "line": 443, @@ -112733,8 +112733,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18513, - "end": 18532, + "start": 18502, + "end": 18521, "loc": { "start": { "line": 443, @@ -112756,8 +112756,8 @@ }, { "type": "IfStatement", - "start": 18547, - "end": 18634, + "start": 18536, + "end": 18623, "loc": { "start": { "line": 444, @@ -112770,8 +112770,8 @@ }, "test": { "type": "Identifier", - "start": 18551, - "end": 18563, + "start": 18540, + "end": 18552, "loc": { "start": { "line": 444, @@ -112787,8 +112787,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 18565, - "end": 18634, + "start": 18554, + "end": 18623, "loc": { "start": { "line": 444, @@ -112802,8 +112802,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 18583, - "end": 18620, + "start": 18572, + "end": 18609, "loc": { "start": { "line": 445, @@ -112816,8 +112816,8 @@ }, "expression": { "type": "CallExpression", - "start": 18583, - "end": 18619, + "start": 18572, + "end": 18608, "loc": { "start": { "line": 445, @@ -112830,8 +112830,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18583, - "end": 18591, + "start": 18572, + "end": 18580, "loc": { "start": { "line": 445, @@ -112844,8 +112844,8 @@ }, "object": { "type": "Identifier", - "start": 18583, - "end": 18586, + "start": 18572, + "end": 18575, "loc": { "start": { "line": 445, @@ -112861,8 +112861,8 @@ }, "property": { "type": "Identifier", - "start": 18587, - "end": 18591, + "start": 18576, + "end": 18580, "loc": { "start": { "line": 445, @@ -112881,8 +112881,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18592, - "end": 18618, + "start": 18581, + "end": 18607, "loc": { "start": { "line": 445, @@ -112914,8 +112914,8 @@ }, { "type": "ExpressionStatement", - "start": 18654, - "end": 18696, + "start": 18643, + "end": 18685, "loc": { "start": { "line": 449, @@ -112928,8 +112928,8 @@ }, "expression": { "type": "CallExpression", - "start": 18654, - "end": 18695, + "start": 18643, + "end": 18684, "loc": { "start": { "line": 449, @@ -112942,8 +112942,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18654, - "end": 18662, + "start": 18643, + "end": 18651, "loc": { "start": { "line": 449, @@ -112956,8 +112956,8 @@ }, "object": { "type": "Identifier", - "start": 18654, - "end": 18657, + "start": 18643, + "end": 18646, "loc": { "start": { "line": 449, @@ -112973,8 +112973,8 @@ }, "property": { "type": "Identifier", - "start": 18658, - "end": 18662, + "start": 18647, + "end": 18651, "loc": { "start": { "line": 449, @@ -112993,8 +112993,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18663, - "end": 18694, + "start": 18652, + "end": 18683, "loc": { "start": { "line": 449, @@ -113016,8 +113016,8 @@ }, { "type": "ExpressionStatement", - "start": 18705, - "end": 18743, + "start": 18694, + "end": 18732, "loc": { "start": { "line": 450, @@ -113030,8 +113030,8 @@ }, "expression": { "type": "CallExpression", - "start": 18705, - "end": 18742, + "start": 18694, + "end": 18731, "loc": { "start": { "line": 450, @@ -113044,8 +113044,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18705, - "end": 18713, + "start": 18694, + "end": 18702, "loc": { "start": { "line": 450, @@ -113058,8 +113058,8 @@ }, "object": { "type": "Identifier", - "start": 18705, - "end": 18708, + "start": 18694, + "end": 18697, "loc": { "start": { "line": 450, @@ -113075,8 +113075,8 @@ }, "property": { "type": "Identifier", - "start": 18709, - "end": 18713, + "start": 18698, + "end": 18702, "loc": { "start": { "line": 450, @@ -113095,8 +113095,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18714, - "end": 18741, + "start": 18703, + "end": 18730, "loc": { "start": { "line": 450, @@ -113118,8 +113118,8 @@ }, { "type": "ExpressionStatement", - "start": 18752, - "end": 18780, + "start": 18741, + "end": 18769, "loc": { "start": { "line": 451, @@ -113132,8 +113132,8 @@ }, "expression": { "type": "CallExpression", - "start": 18752, - "end": 18779, + "start": 18741, + "end": 18768, "loc": { "start": { "line": 451, @@ -113146,8 +113146,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18752, - "end": 18760, + "start": 18741, + "end": 18749, "loc": { "start": { "line": 451, @@ -113160,8 +113160,8 @@ }, "object": { "type": "Identifier", - "start": 18752, - "end": 18755, + "start": 18741, + "end": 18744, "loc": { "start": { "line": 451, @@ -113177,8 +113177,8 @@ }, "property": { "type": "Identifier", - "start": 18756, - "end": 18760, + "start": 18745, + "end": 18749, "loc": { "start": { "line": 451, @@ -113197,8 +113197,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18761, - "end": 18778, + "start": 18750, + "end": 18767, "loc": { "start": { "line": 451, @@ -113220,8 +113220,8 @@ }, { "type": "ExpressionStatement", - "start": 18789, - "end": 18841, + "start": 18778, + "end": 18830, "loc": { "start": { "line": 452, @@ -113234,8 +113234,8 @@ }, "expression": { "type": "CallExpression", - "start": 18789, - "end": 18840, + "start": 18778, + "end": 18829, "loc": { "start": { "line": 452, @@ -113248,8 +113248,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18789, - "end": 18797, + "start": 18778, + "end": 18786, "loc": { "start": { "line": 452, @@ -113262,8 +113262,8 @@ }, "object": { "type": "Identifier", - "start": 18789, - "end": 18792, + "start": 18778, + "end": 18781, "loc": { "start": { "line": 452, @@ -113279,8 +113279,8 @@ }, "property": { "type": "Identifier", - "start": 18793, - "end": 18797, + "start": 18782, + "end": 18786, "loc": { "start": { "line": 452, @@ -113299,8 +113299,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18798, - "end": 18839, + "start": 18787, + "end": 18828, "loc": { "start": { "line": 452, @@ -113322,8 +113322,8 @@ }, { "type": "IfStatement", - "start": 18851, - "end": 18957, + "start": 18840, + "end": 18946, "loc": { "start": { "line": 454, @@ -113336,8 +113336,8 @@ }, "test": { "type": "BinaryExpression", - "start": 18855, - "end": 18887, + "start": 18844, + "end": 18876, "loc": { "start": { "line": 454, @@ -113350,8 +113350,8 @@ }, "left": { "type": "MemberExpression", - "start": 18855, - "end": 18883, + "start": 18844, + "end": 18872, "loc": { "start": { "line": 454, @@ -113364,8 +113364,8 @@ }, "object": { "type": "MemberExpression", - "start": 18855, - "end": 18876, + "start": 18844, + "end": 18865, "loc": { "start": { "line": 454, @@ -113378,8 +113378,8 @@ }, "object": { "type": "Identifier", - "start": 18855, - "end": 18866, + "start": 18844, + "end": 18855, "loc": { "start": { "line": 454, @@ -113395,8 +113395,8 @@ }, "property": { "type": "Identifier", - "start": 18867, - "end": 18876, + "start": 18856, + "end": 18865, "loc": { "start": { "line": 454, @@ -113414,8 +113414,8 @@ }, "property": { "type": "Identifier", - "start": 18877, - "end": 18883, + "start": 18866, + "end": 18872, "loc": { "start": { "line": 454, @@ -113434,8 +113434,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 18886, - "end": 18887, + "start": 18875, + "end": 18876, "loc": { "start": { "line": 454, @@ -113455,8 +113455,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 18889, - "end": 18957, + "start": 18878, + "end": 18946, "loc": { "start": { "line": 454, @@ -113470,8 +113470,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 18903, - "end": 18947, + "start": 18892, + "end": 18936, "loc": { "start": { "line": 455, @@ -113484,8 +113484,8 @@ }, "expression": { "type": "CallExpression", - "start": 18903, - "end": 18946, + "start": 18892, + "end": 18935, "loc": { "start": { "line": 455, @@ -113498,8 +113498,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18903, - "end": 18911, + "start": 18892, + "end": 18900, "loc": { "start": { "line": 455, @@ -113512,8 +113512,8 @@ }, "object": { "type": "Identifier", - "start": 18903, - "end": 18906, + "start": 18892, + "end": 18895, "loc": { "start": { "line": 455, @@ -113529,8 +113529,8 @@ }, "property": { "type": "Identifier", - "start": 18907, - "end": 18911, + "start": 18896, + "end": 18900, "loc": { "start": { "line": 455, @@ -113549,8 +113549,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18912, - "end": 18945, + "start": 18901, + "end": 18934, "loc": { "start": { "line": 455, @@ -113577,8 +113577,8 @@ }, { "type": "ExpressionStatement", - "start": 18967, - "end": 19002, + "start": 18956, + "end": 18991, "loc": { "start": { "line": 458, @@ -113591,8 +113591,8 @@ }, "expression": { "type": "CallExpression", - "start": 18967, - "end": 19001, + "start": 18956, + "end": 18990, "loc": { "start": { "line": 458, @@ -113605,8 +113605,8 @@ }, "callee": { "type": "MemberExpression", - "start": 18967, - "end": 18975, + "start": 18956, + "end": 18964, "loc": { "start": { "line": 458, @@ -113619,8 +113619,8 @@ }, "object": { "type": "Identifier", - "start": 18967, - "end": 18970, + "start": 18956, + "end": 18959, "loc": { "start": { "line": 458, @@ -113636,8 +113636,8 @@ }, "property": { "type": "Identifier", - "start": 18971, - "end": 18975, + "start": 18960, + "end": 18964, "loc": { "start": { "line": 458, @@ -113656,8 +113656,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 18976, - "end": 19000, + "start": 18965, + "end": 18989, "loc": { "start": { "line": 458, @@ -113679,8 +113679,8 @@ }, { "type": "ExpressionStatement", - "start": 19011, - "end": 19025, + "start": 19000, + "end": 19014, "loc": { "start": { "line": 459, @@ -113693,8 +113693,8 @@ }, "expression": { "type": "CallExpression", - "start": 19011, - "end": 19024, + "start": 19000, + "end": 19013, "loc": { "start": { "line": 459, @@ -113707,8 +113707,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19011, - "end": 19019, + "start": 19000, + "end": 19008, "loc": { "start": { "line": 459, @@ -113721,8 +113721,8 @@ }, "object": { "type": "Identifier", - "start": 19011, - "end": 19014, + "start": 19000, + "end": 19003, "loc": { "start": { "line": 459, @@ -113738,8 +113738,8 @@ }, "property": { "type": "Identifier", - "start": 19015, - "end": 19019, + "start": 19004, + "end": 19008, "loc": { "start": { "line": 459, @@ -113758,8 +113758,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19020, - "end": 19023, + "start": 19009, + "end": 19012, "loc": { "start": { "line": 459, @@ -113781,8 +113781,8 @@ }, { "type": "ExpressionStatement", - "start": 19034, - "end": 19048, + "start": 19023, + "end": 19037, "loc": { "start": { "line": 460, @@ -113795,8 +113795,8 @@ }, "expression": { "type": "CallExpression", - "start": 19034, - "end": 19047, + "start": 19023, + "end": 19036, "loc": { "start": { "line": 460, @@ -113809,8 +113809,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19034, - "end": 19042, + "start": 19023, + "end": 19031, "loc": { "start": { "line": 460, @@ -113823,8 +113823,8 @@ }, "object": { "type": "Identifier", - "start": 19034, - "end": 19037, + "start": 19023, + "end": 19026, "loc": { "start": { "line": 460, @@ -113840,8 +113840,8 @@ }, "property": { "type": "Identifier", - "start": 19038, - "end": 19042, + "start": 19027, + "end": 19031, "loc": { "start": { "line": 460, @@ -113860,8 +113860,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19043, - "end": 19046, + "start": 19032, + "end": 19035, "loc": { "start": { "line": 460, @@ -113883,8 +113883,8 @@ }, { "type": "ReturnStatement", - "start": 19057, - "end": 19068, + "start": 19046, + "end": 19057, "loc": { "start": { "line": 461, @@ -113897,8 +113897,8 @@ }, "argument": { "type": "Identifier", - "start": 19064, - "end": 19067, + "start": 19053, + "end": 19056, "loc": { "start": { "line": 461, @@ -113919,8 +113919,8 @@ }, { "type": "ClassMethod", - "start": 19080, - "end": 37803, + "start": 19069, + "end": 37802, "loc": { "start": { "line": 464, @@ -113935,8 +113935,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 19080, - "end": 19100, + "start": 19069, + "end": 19089, "loc": { "start": { "line": 464, @@ -113958,8 +113958,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 19103, - "end": 37803, + "start": 19092, + "end": 37802, "loc": { "start": { "line": 464, @@ -113973,8 +113973,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 19114, - "end": 19140, + "start": 19103, + "end": 19129, "loc": { "start": { "line": 466, @@ -113988,8 +113988,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 19120, - "end": 19139, + "start": 19109, + "end": 19128, "loc": { "start": { "line": 466, @@ -114002,8 +114002,8 @@ }, "id": { "type": "Identifier", - "start": 19120, - "end": 19125, + "start": 19109, + "end": 19114, "loc": { "start": { "line": 466, @@ -114019,8 +114019,8 @@ }, "init": { "type": "MemberExpression", - "start": 19128, - "end": 19139, + "start": 19117, + "end": 19128, "loc": { "start": { "line": 466, @@ -114033,8 +114033,8 @@ }, "object": { "type": "ThisExpression", - "start": 19128, - "end": 19132, + "start": 19117, + "end": 19121, "loc": { "start": { "line": 466, @@ -114048,8 +114048,8 @@ }, "property": { "type": "Identifier", - "start": 19133, - "end": 19139, + "start": 19122, + "end": 19128, "loc": { "start": { "line": 466, @@ -114071,8 +114071,8 @@ }, { "type": "VariableDeclaration", - "start": 19149, - "end": 19187, + "start": 19138, + "end": 19176, "loc": { "start": { "line": 467, @@ -114086,8 +114086,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 19155, - "end": 19186, + "start": 19144, + "end": 19175, "loc": { "start": { "line": 467, @@ -114100,8 +114100,8 @@ }, "id": { "type": "Identifier", - "start": 19155, - "end": 19166, + "start": 19144, + "end": 19155, "loc": { "start": { "line": 467, @@ -114117,8 +114117,8 @@ }, "init": { "type": "MemberExpression", - "start": 19169, - "end": 19186, + "start": 19158, + "end": 19175, "loc": { "start": { "line": 467, @@ -114131,8 +114131,8 @@ }, "object": { "type": "Identifier", - "start": 19169, - "end": 19174, + "start": 19158, + "end": 19163, "loc": { "start": { "line": 467, @@ -114148,8 +114148,8 @@ }, "property": { "type": "Identifier", - "start": 19175, - "end": 19186, + "start": 19164, + "end": 19175, "loc": { "start": { "line": 467, @@ -114172,8 +114172,8 @@ { "type": "CommentLine", "value": " If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.", - "start": 19188, - "end": 19306, + "start": 19177, + "end": 19295, "loc": { "start": { "line": 467, @@ -114189,8 +114189,8 @@ }, { "type": "VariableDeclaration", - "start": 19315, - "end": 19368, + "start": 19304, + "end": 19357, "loc": { "start": { "line": 468, @@ -114204,8 +114204,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 19321, - "end": 19367, + "start": 19310, + "end": 19356, "loc": { "start": { "line": 468, @@ -114218,8 +114218,8 @@ }, "id": { "type": "Identifier", - "start": 19321, - "end": 19339, + "start": 19310, + "end": 19328, "loc": { "start": { "line": 468, @@ -114236,8 +114236,8 @@ }, "init": { "type": "MemberExpression", - "start": 19342, - "end": 19367, + "start": 19331, + "end": 19356, "loc": { "start": { "line": 468, @@ -114250,8 +114250,8 @@ }, "object": { "type": "Identifier", - "start": 19342, - "end": 19347, + "start": 19331, + "end": 19336, "loc": { "start": { "line": 468, @@ -114267,8 +114267,8 @@ }, "property": { "type": "Identifier", - "start": 19348, - "end": 19367, + "start": 19337, + "end": 19356, "loc": { "start": { "line": 468, @@ -114292,8 +114292,8 @@ { "type": "CommentLine", "value": " If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.", - "start": 19188, - "end": 19306, + "start": 19177, + "end": 19295, "loc": { "start": { "line": 467, @@ -114309,8 +114309,8 @@ }, { "type": "VariableDeclaration", - "start": 19377, - "end": 19416, + "start": 19366, + "end": 19405, "loc": { "start": { "line": 469, @@ -114324,8 +114324,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 19383, - "end": 19415, + "start": 19372, + "end": 19404, "loc": { "start": { "line": 469, @@ -114338,8 +114338,8 @@ }, "id": { "type": "Identifier", - "start": 19383, - "end": 19394, + "start": 19372, + "end": 19383, "loc": { "start": { "line": 469, @@ -114355,8 +114355,8 @@ }, "init": { "type": "MemberExpression", - "start": 19397, - "end": 19415, + "start": 19386, + "end": 19404, "loc": { "start": { "line": 469, @@ -114369,8 +114369,8 @@ }, "object": { "type": "Identifier", - "start": 19397, - "end": 19402, + "start": 19386, + "end": 19391, "loc": { "start": { "line": 469, @@ -114386,8 +114386,8 @@ }, "property": { "type": "Identifier", - "start": 19403, - "end": 19415, + "start": 19392, + "end": 19404, "loc": { "start": { "line": 469, @@ -114409,8 +114409,8 @@ }, { "type": "VariableDeclaration", - "start": 19425, - "end": 19486, + "start": 19414, + "end": 19475, "loc": { "start": { "line": 470, @@ -114424,8 +114424,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 19431, - "end": 19485, + "start": 19420, + "end": 19474, "loc": { "start": { "line": 470, @@ -114438,8 +114438,8 @@ }, "id": { "type": "Identifier", - "start": 19431, - "end": 19439, + "start": 19420, + "end": 19428, "loc": { "start": { "line": 470, @@ -114455,8 +114455,8 @@ }, "init": { "type": "BinaryExpression", - "start": 19442, - "end": 19485, + "start": 19431, + "end": 19474, "loc": { "start": { "line": 470, @@ -114469,8 +114469,8 @@ }, "left": { "type": "MemberExpression", - "start": 19442, - "end": 19481, + "start": 19431, + "end": 19470, "loc": { "start": { "line": 470, @@ -114483,8 +114483,8 @@ }, "object": { "type": "MemberExpression", - "start": 19442, - "end": 19474, + "start": 19431, + "end": 19463, "loc": { "start": { "line": 470, @@ -114497,8 +114497,8 @@ }, "object": { "type": "Identifier", - "start": 19442, - "end": 19460, + "start": 19431, + "end": 19449, "loc": { "start": { "line": 470, @@ -114514,8 +114514,8 @@ }, "property": { "type": "Identifier", - "start": 19461, - "end": 19474, + "start": 19450, + "end": 19463, "loc": { "start": { "line": 470, @@ -114533,8 +114533,8 @@ }, "property": { "type": "Identifier", - "start": 19475, - "end": 19481, + "start": 19464, + "end": 19470, "loc": { "start": { "line": 470, @@ -114553,8 +114553,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 19484, - "end": 19485, + "start": 19473, + "end": 19474, "loc": { "start": { "line": 470, @@ -114578,8 +114578,8 @@ }, { "type": "VariableDeclaration", - "start": 19495, - "end": 19548, + "start": 19484, + "end": 19537, "loc": { "start": { "line": 471, @@ -114593,8 +114593,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 19501, - "end": 19547, + "start": 19490, + "end": 19536, "loc": { "start": { "line": 471, @@ -114607,8 +114607,8 @@ }, "id": { "type": "Identifier", - "start": 19501, - "end": 19513, + "start": 19490, + "end": 19502, "loc": { "start": { "line": 471, @@ -114624,8 +114624,8 @@ }, "init": { "type": "MemberExpression", - "start": 19516, - "end": 19547, + "start": 19505, + "end": 19536, "loc": { "start": { "line": 471, @@ -114638,8 +114638,8 @@ }, "object": { "type": "Identifier", - "start": 19516, - "end": 19534, + "start": 19505, + "end": 19523, "loc": { "start": { "line": 471, @@ -114655,8 +114655,8 @@ }, "property": { "type": "Identifier", - "start": 19535, - "end": 19547, + "start": 19524, + "end": 19536, "loc": { "start": { "line": 471, @@ -114678,8 +114678,8 @@ }, { "type": "VariableDeclaration", - "start": 19557, - "end": 19572, + "start": 19546, + "end": 19561, "loc": { "start": { "line": 472, @@ -114693,8 +114693,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 19563, - "end": 19571, + "start": 19552, + "end": 19560, "loc": { "start": { "line": 472, @@ -114707,8 +114707,8 @@ }, "id": { "type": "Identifier", - "start": 19563, - "end": 19566, + "start": 19552, + "end": 19555, "loc": { "start": { "line": 472, @@ -114724,8 +114724,8 @@ }, "init": { "type": "ArrayExpression", - "start": 19569, - "end": 19571, + "start": 19558, + "end": 19560, "loc": { "start": { "line": 472, @@ -114744,8 +114744,8 @@ }, { "type": "ExpressionStatement", - "start": 19582, - "end": 19649, + "start": 19571, + "end": 19638, "loc": { "start": { "line": 474, @@ -114758,8 +114758,8 @@ }, "expression": { "type": "CallExpression", - "start": 19582, - "end": 19648, + "start": 19571, + "end": 19637, "loc": { "start": { "line": 474, @@ -114772,8 +114772,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19582, - "end": 19590, + "start": 19571, + "end": 19579, "loc": { "start": { "line": 474, @@ -114786,8 +114786,8 @@ }, "object": { "type": "Identifier", - "start": 19582, - "end": 19585, + "start": 19571, + "end": 19574, "loc": { "start": { "line": 474, @@ -114803,8 +114803,8 @@ }, "property": { "type": "Identifier", - "start": 19586, - "end": 19590, + "start": 19575, + "end": 19579, "loc": { "start": { "line": 474, @@ -114823,8 +114823,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19591, - "end": 19647, + "start": 19580, + "end": 19636, "loc": { "start": { "line": 474, @@ -114846,8 +114846,8 @@ }, { "type": "IfStatement", - "start": 19659, - "end": 19827, + "start": 19648, + "end": 19816, "loc": { "start": { "line": 476, @@ -114860,8 +114860,8 @@ }, "test": { "type": "LogicalExpression", - "start": 19663, - "end": 19751, + "start": 19652, + "end": 19740, "loc": { "start": { "line": 476, @@ -114874,8 +114874,8 @@ }, "left": { "type": "MemberExpression", - "start": 19663, - "end": 19698, + "start": 19652, + "end": 19687, "loc": { "start": { "line": 476, @@ -114888,8 +114888,8 @@ }, "object": { "type": "Identifier", - "start": 19663, - "end": 19668, + "start": 19652, + "end": 19657, "loc": { "start": { "line": 476, @@ -114905,8 +114905,8 @@ }, "property": { "type": "Identifier", - "start": 19669, - "end": 19698, + "start": 19658, + "end": 19687, "loc": { "start": { "line": 476, @@ -114925,8 +114925,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 19702, - "end": 19751, + "start": 19691, + "end": 19740, "loc": { "start": { "line": 476, @@ -114939,8 +114939,8 @@ }, "object": { "type": "MemberExpression", - "start": 19702, - "end": 19733, + "start": 19691, + "end": 19722, "loc": { "start": { "line": 476, @@ -114953,8 +114953,8 @@ }, "object": { "type": "Identifier", - "start": 19702, - "end": 19712, + "start": 19691, + "end": 19701, "loc": { "start": { "line": 476, @@ -114970,8 +114970,8 @@ }, "property": { "type": "Identifier", - "start": 19713, - "end": 19733, + "start": 19702, + "end": 19722, "loc": { "start": { "line": 476, @@ -114989,8 +114989,8 @@ }, "property": { "type": "StringLiteral", - "start": 19734, - "end": 19750, + "start": 19723, + "end": 19739, "loc": { "start": { "line": 476, @@ -115012,8 +115012,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 19753, - "end": 19827, + "start": 19742, + "end": 19816, "loc": { "start": { "line": 476, @@ -115027,8 +115027,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 19767, - "end": 19817, + "start": 19756, + "end": 19806, "loc": { "start": { "line": 477, @@ -115041,8 +115041,8 @@ }, "expression": { "type": "CallExpression", - "start": 19767, - "end": 19816, + "start": 19756, + "end": 19805, "loc": { "start": { "line": 477, @@ -115055,8 +115055,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19767, - "end": 19775, + "start": 19756, + "end": 19764, "loc": { "start": { "line": 477, @@ -115069,8 +115069,8 @@ }, "object": { "type": "Identifier", - "start": 19767, - "end": 19770, + "start": 19756, + "end": 19759, "loc": { "start": { "line": 477, @@ -115086,8 +115086,8 @@ }, "property": { "type": "Identifier", - "start": 19771, - "end": 19775, + "start": 19760, + "end": 19764, "loc": { "start": { "line": 477, @@ -115106,8 +115106,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19776, - "end": 19815, + "start": 19765, + "end": 19804, "loc": { "start": { "line": 477, @@ -115134,8 +115134,8 @@ }, { "type": "ExpressionStatement", - "start": 19837, - "end": 19883, + "start": 19826, + "end": 19872, "loc": { "start": { "line": 480, @@ -115148,8 +115148,8 @@ }, "expression": { "type": "CallExpression", - "start": 19837, - "end": 19882, + "start": 19826, + "end": 19871, "loc": { "start": { "line": 480, @@ -115162,8 +115162,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19837, - "end": 19845, + "start": 19826, + "end": 19834, "loc": { "start": { "line": 480, @@ -115176,8 +115176,8 @@ }, "object": { "type": "Identifier", - "start": 19837, - "end": 19840, + "start": 19826, + "end": 19829, "loc": { "start": { "line": 480, @@ -115193,8 +115193,8 @@ }, "property": { "type": "Identifier", - "start": 19841, - "end": 19845, + "start": 19830, + "end": 19834, "loc": { "start": { "line": 480, @@ -115213,8 +115213,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19846, - "end": 19881, + "start": 19835, + "end": 19870, "loc": { "start": { "line": 480, @@ -115236,8 +115236,8 @@ }, { "type": "ExpressionStatement", - "start": 19892, - "end": 19927, + "start": 19881, + "end": 19916, "loc": { "start": { "line": 481, @@ -115250,8 +115250,8 @@ }, "expression": { "type": "CallExpression", - "start": 19892, - "end": 19926, + "start": 19881, + "end": 19915, "loc": { "start": { "line": 481, @@ -115264,8 +115264,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19892, - "end": 19900, + "start": 19881, + "end": 19889, "loc": { "start": { "line": 481, @@ -115278,8 +115278,8 @@ }, "object": { "type": "Identifier", - "start": 19892, - "end": 19895, + "start": 19881, + "end": 19884, "loc": { "start": { "line": 481, @@ -115295,8 +115295,8 @@ }, "property": { "type": "Identifier", - "start": 19896, - "end": 19900, + "start": 19885, + "end": 19889, "loc": { "start": { "line": 481, @@ -115315,8 +115315,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19901, - "end": 19925, + "start": 19890, + "end": 19914, "loc": { "start": { "line": 481, @@ -115338,8 +115338,8 @@ }, { "type": "ExpressionStatement", - "start": 19936, - "end": 19969, + "start": 19925, + "end": 19958, "loc": { "start": { "line": 482, @@ -115352,8 +115352,8 @@ }, "expression": { "type": "CallExpression", - "start": 19936, - "end": 19968, + "start": 19925, + "end": 19957, "loc": { "start": { "line": 482, @@ -115366,8 +115366,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19936, - "end": 19944, + "start": 19925, + "end": 19933, "loc": { "start": { "line": 482, @@ -115380,8 +115380,8 @@ }, "object": { "type": "Identifier", - "start": 19936, - "end": 19939, + "start": 19925, + "end": 19928, "loc": { "start": { "line": 482, @@ -115397,8 +115397,8 @@ }, "property": { "type": "Identifier", - "start": 19940, - "end": 19944, + "start": 19929, + "end": 19933, "loc": { "start": { "line": 482, @@ -115417,8 +115417,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19945, - "end": 19967, + "start": 19934, + "end": 19956, "loc": { "start": { "line": 482, @@ -115440,8 +115440,8 @@ }, { "type": "ExpressionStatement", - "start": 19978, - "end": 19996, + "start": 19967, + "end": 19985, "loc": { "start": { "line": 483, @@ -115454,8 +115454,8 @@ }, "expression": { "type": "CallExpression", - "start": 19978, - "end": 19995, + "start": 19967, + "end": 19984, "loc": { "start": { "line": 483, @@ -115468,8 +115468,8 @@ }, "callee": { "type": "MemberExpression", - "start": 19978, - "end": 19986, + "start": 19967, + "end": 19975, "loc": { "start": { "line": 483, @@ -115482,8 +115482,8 @@ }, "object": { "type": "Identifier", - "start": 19978, - "end": 19981, + "start": 19967, + "end": 19970, "loc": { "start": { "line": 483, @@ -115499,8 +115499,8 @@ }, "property": { "type": "Identifier", - "start": 19982, - "end": 19986, + "start": 19971, + "end": 19975, "loc": { "start": { "line": 483, @@ -115519,8 +115519,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 19987, - "end": 19994, + "start": 19976, + "end": 19983, "loc": { "start": { "line": 483, @@ -115542,8 +115542,8 @@ }, { "type": "ExpressionStatement", - "start": 20005, - "end": 20042, + "start": 19994, + "end": 20031, "loc": { "start": { "line": 484, @@ -115556,8 +115556,8 @@ }, "expression": { "type": "CallExpression", - "start": 20005, - "end": 20041, + "start": 19994, + "end": 20030, "loc": { "start": { "line": 484, @@ -115570,8 +115570,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20005, - "end": 20013, + "start": 19994, + "end": 20002, "loc": { "start": { "line": 484, @@ -115584,8 +115584,8 @@ }, "object": { "type": "Identifier", - "start": 20005, - "end": 20008, + "start": 19994, + "end": 19997, "loc": { "start": { "line": 484, @@ -115601,8 +115601,8 @@ }, "property": { "type": "Identifier", - "start": 20009, - "end": 20013, + "start": 19998, + "end": 20002, "loc": { "start": { "line": 484, @@ -115621,8 +115621,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20014, - "end": 20040, + "start": 20003, + "end": 20029, "loc": { "start": { "line": 484, @@ -115644,8 +115644,8 @@ }, { "type": "ExpressionStatement", - "start": 20051, - "end": 20086, + "start": 20040, + "end": 20075, "loc": { "start": { "line": 485, @@ -115658,8 +115658,8 @@ }, "expression": { "type": "CallExpression", - "start": 20051, - "end": 20085, + "start": 20040, + "end": 20074, "loc": { "start": { "line": 485, @@ -115672,8 +115672,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20051, - "end": 20059, + "start": 20040, + "end": 20048, "loc": { "start": { "line": 485, @@ -115686,8 +115686,8 @@ }, "object": { "type": "Identifier", - "start": 20051, - "end": 20054, + "start": 20040, + "end": 20043, "loc": { "start": { "line": 485, @@ -115703,8 +115703,8 @@ }, "property": { "type": "Identifier", - "start": 20055, - "end": 20059, + "start": 20044, + "end": 20048, "loc": { "start": { "line": 485, @@ -115723,8 +115723,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20060, - "end": 20084, + "start": 20049, + "end": 20073, "loc": { "start": { "line": 485, @@ -115746,8 +115746,8 @@ }, { "type": "ExpressionStatement", - "start": 20095, - "end": 20114, + "start": 20084, + "end": 20103, "loc": { "start": { "line": 486, @@ -115760,8 +115760,8 @@ }, "expression": { "type": "CallExpression", - "start": 20095, - "end": 20113, + "start": 20084, + "end": 20102, "loc": { "start": { "line": 486, @@ -115774,8 +115774,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20095, - "end": 20103, + "start": 20084, + "end": 20092, "loc": { "start": { "line": 486, @@ -115788,8 +115788,8 @@ }, "object": { "type": "Identifier", - "start": 20095, - "end": 20098, + "start": 20084, + "end": 20087, "loc": { "start": { "line": 486, @@ -115805,8 +115805,8 @@ }, "property": { "type": "Identifier", - "start": 20099, - "end": 20103, + "start": 20088, + "end": 20092, "loc": { "start": { "line": 486, @@ -115825,8 +115825,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20104, - "end": 20112, + "start": 20093, + "end": 20101, "loc": { "start": { "line": 486, @@ -115848,8 +115848,8 @@ }, { "type": "IfStatement", - "start": 20124, - "end": 20372, + "start": 20113, + "end": 20361, "loc": { "start": { "line": 488, @@ -115862,8 +115862,8 @@ }, "test": { "type": "MemberExpression", - "start": 20128, - "end": 20163, + "start": 20117, + "end": 20152, "loc": { "start": { "line": 488, @@ -115876,8 +115876,8 @@ }, "object": { "type": "Identifier", - "start": 20128, - "end": 20133, + "start": 20117, + "end": 20122, "loc": { "start": { "line": 488, @@ -115893,8 +115893,8 @@ }, "property": { "type": "Identifier", - "start": 20134, - "end": 20163, + "start": 20123, + "end": 20152, "loc": { "start": { "line": 488, @@ -115912,8 +115912,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 20165, - "end": 20372, + "start": 20154, + "end": 20361, "loc": { "start": { "line": 488, @@ -115927,8 +115927,8 @@ "body": [ { "type": "IfStatement", - "start": 20179, - "end": 20362, + "start": 20168, + "end": 20351, "loc": { "start": { "line": 489, @@ -115941,8 +115941,8 @@ }, "test": { "type": "MemberExpression", - "start": 20183, - "end": 20232, + "start": 20172, + "end": 20221, "loc": { "start": { "line": 489, @@ -115955,8 +115955,8 @@ }, "object": { "type": "MemberExpression", - "start": 20183, - "end": 20214, + "start": 20172, + "end": 20203, "loc": { "start": { "line": 489, @@ -115969,8 +115969,8 @@ }, "object": { "type": "Identifier", - "start": 20183, - "end": 20193, + "start": 20172, + "end": 20182, "loc": { "start": { "line": 489, @@ -115986,8 +115986,8 @@ }, "property": { "type": "Identifier", - "start": 20194, - "end": 20214, + "start": 20183, + "end": 20203, "loc": { "start": { "line": 489, @@ -116005,8 +116005,8 @@ }, "property": { "type": "StringLiteral", - "start": 20215, - "end": 20231, + "start": 20204, + "end": 20220, "loc": { "start": { "line": 489, @@ -116027,8 +116027,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 20234, - "end": 20362, + "start": 20223, + "end": 20351, "loc": { "start": { "line": 489, @@ -116042,8 +116042,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 20252, - "end": 20293, + "start": 20241, + "end": 20282, "loc": { "start": { "line": 490, @@ -116056,8 +116056,8 @@ }, "expression": { "type": "CallExpression", - "start": 20252, - "end": 20292, + "start": 20241, + "end": 20281, "loc": { "start": { "line": 490, @@ -116070,8 +116070,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20252, - "end": 20260, + "start": 20241, + "end": 20249, "loc": { "start": { "line": 490, @@ -116084,8 +116084,8 @@ }, "object": { "type": "Identifier", - "start": 20252, - "end": 20255, + "start": 20241, + "end": 20244, "loc": { "start": { "line": 490, @@ -116101,8 +116101,8 @@ }, "property": { "type": "Identifier", - "start": 20256, - "end": 20260, + "start": 20245, + "end": 20249, "loc": { "start": { "line": 490, @@ -116121,8 +116121,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20261, - "end": 20291, + "start": 20250, + "end": 20280, "loc": { "start": { "line": 490, @@ -116144,8 +116144,8 @@ }, { "type": "ExpressionStatement", - "start": 20310, - "end": 20348, + "start": 20299, + "end": 20337, "loc": { "start": { "line": 491, @@ -116158,8 +116158,8 @@ }, "expression": { "type": "CallExpression", - "start": 20310, - "end": 20347, + "start": 20299, + "end": 20336, "loc": { "start": { "line": 491, @@ -116172,8 +116172,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20310, - "end": 20318, + "start": 20299, + "end": 20307, "loc": { "start": { "line": 491, @@ -116186,8 +116186,8 @@ }, "object": { "type": "Identifier", - "start": 20310, - "end": 20313, + "start": 20299, + "end": 20302, "loc": { "start": { "line": 491, @@ -116203,8 +116203,8 @@ }, "property": { "type": "Identifier", - "start": 20314, - "end": 20318, + "start": 20303, + "end": 20307, "loc": { "start": { "line": 491, @@ -116223,8 +116223,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20319, - "end": 20346, + "start": 20308, + "end": 20335, "loc": { "start": { "line": 491, @@ -116256,8 +116256,8 @@ }, { "type": "IfStatement", - "start": 20382, - "end": 21040, + "start": 20371, + "end": 21029, "loc": { "start": { "line": 495, @@ -116270,8 +116270,8 @@ }, "test": { "type": "MemberExpression", - "start": 20386, - "end": 20399, + "start": 20375, + "end": 20388, "loc": { "start": { "line": 495, @@ -116284,8 +116284,8 @@ }, "object": { "type": "ThisExpression", - "start": 20386, - "end": 20390, + "start": 20375, + "end": 20379, "loc": { "start": { "line": 495, @@ -116299,8 +116299,8 @@ }, "property": { "type": "Identifier", - "start": 20391, - "end": 20399, + "start": 20380, + "end": 20388, "loc": { "start": { "line": 495, @@ -116318,8 +116318,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 20401, - "end": 21040, + "start": 20390, + "end": 21029, "loc": { "start": { "line": 495, @@ -116333,8 +116333,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 20415, - "end": 20464, + "start": 20404, + "end": 20453, "loc": { "start": { "line": 496, @@ -116347,8 +116347,8 @@ }, "expression": { "type": "CallExpression", - "start": 20415, - "end": 20463, + "start": 20404, + "end": 20452, "loc": { "start": { "line": 496, @@ -116361,8 +116361,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20415, - "end": 20423, + "start": 20404, + "end": 20412, "loc": { "start": { "line": 496, @@ -116375,8 +116375,8 @@ }, "object": { "type": "Identifier", - "start": 20415, - "end": 20418, + "start": 20404, + "end": 20407, "loc": { "start": { "line": 496, @@ -116392,8 +116392,8 @@ }, "property": { "type": "Identifier", - "start": 20419, - "end": 20423, + "start": 20408, + "end": 20412, "loc": { "start": { "line": 496, @@ -116412,8 +116412,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20424, - "end": 20462, + "start": 20413, + "end": 20451, "loc": { "start": { "line": 496, @@ -116435,8 +116435,8 @@ }, { "type": "ExpressionStatement", - "start": 20477, - "end": 20519, + "start": 20466, + "end": 20508, "loc": { "start": { "line": 497, @@ -116449,8 +116449,8 @@ }, "expression": { "type": "CallExpression", - "start": 20477, - "end": 20518, + "start": 20466, + "end": 20507, "loc": { "start": { "line": 497, @@ -116463,8 +116463,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20477, - "end": 20485, + "start": 20466, + "end": 20474, "loc": { "start": { "line": 497, @@ -116477,8 +116477,8 @@ }, "object": { "type": "Identifier", - "start": 20477, - "end": 20480, + "start": 20466, + "end": 20469, "loc": { "start": { "line": 497, @@ -116494,8 +116494,8 @@ }, "property": { "type": "Identifier", - "start": 20481, - "end": 20485, + "start": 20470, + "end": 20474, "loc": { "start": { "line": 497, @@ -116514,8 +116514,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20486, - "end": 20517, + "start": 20475, + "end": 20506, "loc": { "start": { "line": 497, @@ -116537,8 +116537,8 @@ }, { "type": "ExpressionStatement", - "start": 20533, - "end": 20590, + "start": 20522, + "end": 20579, "loc": { "start": { "line": 499, @@ -116551,8 +116551,8 @@ }, "expression": { "type": "CallExpression", - "start": 20533, - "end": 20589, + "start": 20522, + "end": 20578, "loc": { "start": { "line": 499, @@ -116565,8 +116565,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20533, - "end": 20541, + "start": 20522, + "end": 20530, "loc": { "start": { "line": 499, @@ -116579,8 +116579,8 @@ }, "object": { "type": "Identifier", - "start": 20533, - "end": 20536, + "start": 20522, + "end": 20525, "loc": { "start": { "line": 499, @@ -116596,8 +116596,8 @@ }, "property": { "type": "Identifier", - "start": 20537, - "end": 20541, + "start": 20526, + "end": 20530, "loc": { "start": { "line": 499, @@ -116616,8 +116616,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20542, - "end": 20588, + "start": 20531, + "end": 20577, "loc": { "start": { "line": 499, @@ -116639,8 +116639,8 @@ }, { "type": "ExpressionStatement", - "start": 20603, - "end": 20664, + "start": 20592, + "end": 20653, "loc": { "start": { "line": 500, @@ -116653,8 +116653,8 @@ }, "expression": { "type": "CallExpression", - "start": 20603, - "end": 20663, + "start": 20592, + "end": 20652, "loc": { "start": { "line": 500, @@ -116667,8 +116667,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20603, - "end": 20611, + "start": 20592, + "end": 20600, "loc": { "start": { "line": 500, @@ -116681,8 +116681,8 @@ }, "object": { "type": "Identifier", - "start": 20603, - "end": 20606, + "start": 20592, + "end": 20595, "loc": { "start": { "line": 500, @@ -116698,8 +116698,8 @@ }, "property": { "type": "Identifier", - "start": 20607, - "end": 20611, + "start": 20596, + "end": 20600, "loc": { "start": { "line": 500, @@ -116718,8 +116718,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20612, - "end": 20662, + "start": 20601, + "end": 20651, "loc": { "start": { "line": 500, @@ -116741,8 +116741,8 @@ }, { "type": "ExpressionStatement", - "start": 20677, - "end": 20769, + "start": 20666, + "end": 20758, "loc": { "start": { "line": 501, @@ -116755,8 +116755,8 @@ }, "expression": { "type": "CallExpression", - "start": 20677, - "end": 20768, + "start": 20666, + "end": 20757, "loc": { "start": { "line": 501, @@ -116769,8 +116769,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20677, - "end": 20685, + "start": 20666, + "end": 20674, "loc": { "start": { "line": 501, @@ -116783,8 +116783,8 @@ }, "object": { "type": "Identifier", - "start": 20677, - "end": 20680, + "start": 20666, + "end": 20669, "loc": { "start": { "line": 501, @@ -116800,8 +116800,8 @@ }, "property": { "type": "Identifier", - "start": 20681, - "end": 20685, + "start": 20670, + "end": 20674, "loc": { "start": { "line": 501, @@ -116820,8 +116820,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20686, - "end": 20767, + "start": 20675, + "end": 20756, "loc": { "start": { "line": 501, @@ -116843,8 +116843,8 @@ }, { "type": "ExpressionStatement", - "start": 20782, - "end": 20871, + "start": 20771, + "end": 20860, "loc": { "start": { "line": 502, @@ -116857,8 +116857,8 @@ }, "expression": { "type": "CallExpression", - "start": 20782, - "end": 20870, + "start": 20771, + "end": 20859, "loc": { "start": { "line": 502, @@ -116871,8 +116871,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20782, - "end": 20790, + "start": 20771, + "end": 20779, "loc": { "start": { "line": 502, @@ -116885,8 +116885,8 @@ }, "object": { "type": "Identifier", - "start": 20782, - "end": 20785, + "start": 20771, + "end": 20774, "loc": { "start": { "line": 502, @@ -116902,8 +116902,8 @@ }, "property": { "type": "Identifier", - "start": 20786, - "end": 20790, + "start": 20775, + "end": 20779, "loc": { "start": { "line": 502, @@ -116922,8 +116922,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20791, - "end": 20869, + "start": 20780, + "end": 20858, "loc": { "start": { "line": 502, @@ -116945,8 +116945,8 @@ }, { "type": "ExpressionStatement", - "start": 20885, - "end": 20942, + "start": 20874, + "end": 20931, "loc": { "start": { "line": 504, @@ -116959,8 +116959,8 @@ }, "expression": { "type": "CallExpression", - "start": 20885, - "end": 20941, + "start": 20874, + "end": 20930, "loc": { "start": { "line": 504, @@ -116973,8 +116973,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20885, - "end": 20893, + "start": 20874, + "end": 20882, "loc": { "start": { "line": 504, @@ -116987,8 +116987,8 @@ }, "object": { "type": "Identifier", - "start": 20885, - "end": 20888, + "start": 20874, + "end": 20877, "loc": { "start": { "line": 504, @@ -117004,8 +117004,8 @@ }, "property": { "type": "Identifier", - "start": 20889, - "end": 20893, + "start": 20878, + "end": 20882, "loc": { "start": { "line": 504, @@ -117024,8 +117024,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20894, - "end": 20940, + "start": 20883, + "end": 20929, "loc": { "start": { "line": 504, @@ -117047,8 +117047,8 @@ }, { "type": "ExpressionStatement", - "start": 20955, - "end": 21003, + "start": 20944, + "end": 20992, "loc": { "start": { "line": 505, @@ -117061,8 +117061,8 @@ }, "expression": { "type": "CallExpression", - "start": 20955, - "end": 21002, + "start": 20944, + "end": 20991, "loc": { "start": { "line": 505, @@ -117075,8 +117075,8 @@ }, "callee": { "type": "MemberExpression", - "start": 20955, - "end": 20963, + "start": 20944, + "end": 20952, "loc": { "start": { "line": 505, @@ -117089,8 +117089,8 @@ }, "object": { "type": "Identifier", - "start": 20955, - "end": 20958, + "start": 20944, + "end": 20947, "loc": { "start": { "line": 505, @@ -117106,8 +117106,8 @@ }, "property": { "type": "Identifier", - "start": 20959, - "end": 20963, + "start": 20948, + "end": 20952, "loc": { "start": { "line": 505, @@ -117126,8 +117126,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 20964, - "end": 21001, + "start": 20953, + "end": 20990, "loc": { "start": { "line": 505, @@ -117149,8 +117149,8 @@ }, { "type": "ExpressionStatement", - "start": 21016, - "end": 21030, + "start": 21005, + "end": 21019, "loc": { "start": { "line": 506, @@ -117163,8 +117163,8 @@ }, "expression": { "type": "CallExpression", - "start": 21016, - "end": 21029, + "start": 21005, + "end": 21018, "loc": { "start": { "line": 506, @@ -117177,8 +117177,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21016, - "end": 21024, + "start": 21005, + "end": 21013, "loc": { "start": { "line": 506, @@ -117191,8 +117191,8 @@ }, "object": { "type": "Identifier", - "start": 21016, - "end": 21019, + "start": 21005, + "end": 21008, "loc": { "start": { "line": 506, @@ -117208,8 +117208,8 @@ }, "property": { "type": "Identifier", - "start": 21020, - "end": 21024, + "start": 21009, + "end": 21013, "loc": { "start": { "line": 506, @@ -117228,8 +117228,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 21025, - "end": 21028, + "start": 21014, + "end": 21017, "loc": { "start": { "line": 506, @@ -117256,8 +117256,8 @@ }, { "type": "IfStatement", - "start": 21050, - "end": 21164, + "start": 21039, + "end": 21153, "loc": { "start": { "line": 509, @@ -117270,8 +117270,8 @@ }, "test": { "type": "BinaryExpression", - "start": 21054, - "end": 21091, + "start": 21043, + "end": 21080, "loc": { "start": { "line": 509, @@ -117284,8 +117284,8 @@ }, "left": { "type": "MemberExpression", - "start": 21054, - "end": 21087, + "start": 21043, + "end": 21076, "loc": { "start": { "line": 509, @@ -117298,8 +117298,8 @@ }, "object": { "type": "MemberExpression", - "start": 21054, - "end": 21080, + "start": 21043, + "end": 21069, "loc": { "start": { "line": 509, @@ -117312,8 +117312,8 @@ }, "object": { "type": "Identifier", - "start": 21054, - "end": 21065, + "start": 21043, + "end": 21054, "loc": { "start": { "line": 509, @@ -117329,8 +117329,8 @@ }, "property": { "type": "Identifier", - "start": 21066, - "end": 21080, + "start": 21055, + "end": 21069, "loc": { "start": { "line": 509, @@ -117348,8 +117348,8 @@ }, "property": { "type": "Identifier", - "start": 21081, - "end": 21087, + "start": 21070, + "end": 21076, "loc": { "start": { "line": 509, @@ -117368,8 +117368,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 21090, - "end": 21091, + "start": 21079, + "end": 21080, "loc": { "start": { "line": 509, @@ -117389,8 +117389,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 21093, - "end": 21164, + "start": 21082, + "end": 21153, "loc": { "start": { "line": 509, @@ -117404,8 +117404,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 21107, - "end": 21154, + "start": 21096, + "end": 21143, "loc": { "start": { "line": 510, @@ -117418,8 +117418,8 @@ }, "expression": { "type": "CallExpression", - "start": 21107, - "end": 21153, + "start": 21096, + "end": 21142, "loc": { "start": { "line": 510, @@ -117432,8 +117432,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21107, - "end": 21115, + "start": 21096, + "end": 21104, "loc": { "start": { "line": 510, @@ -117446,8 +117446,8 @@ }, "object": { "type": "Identifier", - "start": 21107, - "end": 21110, + "start": 21096, + "end": 21099, "loc": { "start": { "line": 510, @@ -117463,8 +117463,8 @@ }, "property": { "type": "Identifier", - "start": 21111, - "end": 21115, + "start": 21100, + "end": 21104, "loc": { "start": { "line": 510, @@ -117483,8 +117483,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 21116, - "end": 21152, + "start": 21105, + "end": 21141, "loc": { "start": { "line": 510, @@ -117511,8 +117511,8 @@ }, { "type": "IfStatement", - "start": 21174, - "end": 21278, + "start": 21163, + "end": 21267, "loc": { "start": { "line": 513, @@ -117525,8 +117525,8 @@ }, "test": { "type": "BinaryExpression", - "start": 21178, - "end": 21210, + "start": 21167, + "end": 21199, "loc": { "start": { "line": 513, @@ -117539,8 +117539,8 @@ }, "left": { "type": "MemberExpression", - "start": 21178, - "end": 21206, + "start": 21167, + "end": 21195, "loc": { "start": { "line": 513, @@ -117553,8 +117553,8 @@ }, "object": { "type": "MemberExpression", - "start": 21178, - "end": 21199, + "start": 21167, + "end": 21188, "loc": { "start": { "line": 513, @@ -117567,8 +117567,8 @@ }, "object": { "type": "Identifier", - "start": 21178, - "end": 21189, + "start": 21167, + "end": 21178, "loc": { "start": { "line": 513, @@ -117584,8 +117584,8 @@ }, "property": { "type": "Identifier", - "start": 21190, - "end": 21199, + "start": 21179, + "end": 21188, "loc": { "start": { "line": 513, @@ -117603,8 +117603,8 @@ }, "property": { "type": "Identifier", - "start": 21200, - "end": 21206, + "start": 21189, + "end": 21195, "loc": { "start": { "line": 513, @@ -117623,8 +117623,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 21209, - "end": 21210, + "start": 21198, + "end": 21199, "loc": { "start": { "line": 513, @@ -117644,8 +117644,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 21212, - "end": 21278, + "start": 21201, + "end": 21267, "loc": { "start": { "line": 513, @@ -117659,8 +117659,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 21226, - "end": 21268, + "start": 21215, + "end": 21257, "loc": { "start": { "line": 514, @@ -117673,8 +117673,8 @@ }, "expression": { "type": "CallExpression", - "start": 21226, - "end": 21267, + "start": 21215, + "end": 21256, "loc": { "start": { "line": 514, @@ -117687,8 +117687,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21226, - "end": 21234, + "start": 21215, + "end": 21223, "loc": { "start": { "line": 514, @@ -117701,8 +117701,8 @@ }, "object": { "type": "Identifier", - "start": 21226, - "end": 21229, + "start": 21215, + "end": 21218, "loc": { "start": { "line": 514, @@ -117718,8 +117718,8 @@ }, "property": { "type": "Identifier", - "start": 21230, - "end": 21234, + "start": 21219, + "end": 21223, "loc": { "start": { "line": 514, @@ -117738,8 +117738,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 21235, - "end": 21266, + "start": 21224, + "end": 21255, "loc": { "start": { "line": 514, @@ -117766,8 +117766,8 @@ }, { "type": "ExpressionStatement", - "start": 21288, - "end": 21327, + "start": 21277, + "end": 21316, "loc": { "start": { "line": 517, @@ -117780,8 +117780,8 @@ }, "expression": { "type": "CallExpression", - "start": 21288, - "end": 21326, + "start": 21277, + "end": 21315, "loc": { "start": { "line": 517, @@ -117794,8 +117794,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21288, - "end": 21296, + "start": 21277, + "end": 21285, "loc": { "start": { "line": 517, @@ -117808,8 +117808,8 @@ }, "object": { "type": "Identifier", - "start": 21288, - "end": 21291, + "start": 21277, + "end": 21280, "loc": { "start": { "line": 517, @@ -117825,8 +117825,8 @@ }, "property": { "type": "Identifier", - "start": 21292, - "end": 21296, + "start": 21281, + "end": 21285, "loc": { "start": { "line": 517, @@ -117845,8 +117845,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 21297, - "end": 21325, + "start": 21286, + "end": 21314, "loc": { "start": { "line": 517, @@ -117868,8 +117868,8 @@ }, { "type": "ForStatement", - "start": 21337, - "end": 22012, + "start": 21326, + "end": 22001, "loc": { "start": { "line": 519, @@ -117882,8 +117882,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 21342, - "end": 21384, + "start": 21331, + "end": 21373, "loc": { "start": { "line": 519, @@ -117897,8 +117897,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 21346, - "end": 21351, + "start": 21335, + "end": 21340, "loc": { "start": { "line": 519, @@ -117911,8 +117911,8 @@ }, "id": { "type": "Identifier", - "start": 21346, - "end": 21347, + "start": 21335, + "end": 21336, "loc": { "start": { "line": 519, @@ -117928,8 +117928,8 @@ }, "init": { "type": "NumericLiteral", - "start": 21350, - "end": 21351, + "start": 21339, + "end": 21340, "loc": { "start": { "line": 519, @@ -117949,8 +117949,8 @@ }, { "type": "VariableDeclarator", - "start": 21353, - "end": 21384, + "start": 21342, + "end": 21373, "loc": { "start": { "line": 519, @@ -117963,8 +117963,8 @@ }, "id": { "type": "Identifier", - "start": 21353, - "end": 21356, + "start": 21342, + "end": 21345, "loc": { "start": { "line": 519, @@ -117980,8 +117980,8 @@ }, "init": { "type": "MemberExpression", - "start": 21359, - "end": 21384, + "start": 21348, + "end": 21373, "loc": { "start": { "line": 519, @@ -117994,8 +117994,8 @@ }, "object": { "type": "MemberExpression", - "start": 21359, - "end": 21377, + "start": 21348, + "end": 21366, "loc": { "start": { "line": 519, @@ -118008,8 +118008,8 @@ }, "object": { "type": "Identifier", - "start": 21359, - "end": 21370, + "start": 21348, + "end": 21359, "loc": { "start": { "line": 519, @@ -118025,8 +118025,8 @@ }, "property": { "type": "Identifier", - "start": 21371, - "end": 21377, + "start": 21360, + "end": 21366, "loc": { "start": { "line": 519, @@ -118044,8 +118044,8 @@ }, "property": { "type": "Identifier", - "start": 21378, - "end": 21384, + "start": 21367, + "end": 21373, "loc": { "start": { "line": 519, @@ -118067,8 +118067,8 @@ }, "test": { "type": "BinaryExpression", - "start": 21386, - "end": 21393, + "start": 21375, + "end": 21382, "loc": { "start": { "line": 519, @@ -118081,8 +118081,8 @@ }, "left": { "type": "Identifier", - "start": 21386, - "end": 21387, + "start": 21375, + "end": 21376, "loc": { "start": { "line": 519, @@ -118099,8 +118099,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 21390, - "end": 21393, + "start": 21379, + "end": 21382, "loc": { "start": { "line": 519, @@ -118117,8 +118117,8 @@ }, "update": { "type": "UpdateExpression", - "start": 21395, - "end": 21398, + "start": 21384, + "end": 21387, "loc": { "start": { "line": 519, @@ -118133,8 +118133,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 21395, - "end": 21396, + "start": 21384, + "end": 21385, "loc": { "start": { "line": 519, @@ -118151,8 +118151,8 @@ }, "body": { "type": "BlockStatement", - "start": 21400, - "end": 22012, + "start": 21389, + "end": 22001, "loc": { "start": { "line": 519, @@ -118166,8 +118166,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 21414, - "end": 21450, + "start": 21403, + "end": 21439, "loc": { "start": { "line": 520, @@ -118181,8 +118181,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 21420, - "end": 21449, + "start": 21409, + "end": 21438, "loc": { "start": { "line": 520, @@ -118195,8 +118195,8 @@ }, "id": { "type": "Identifier", - "start": 21420, - "end": 21425, + "start": 21409, + "end": 21414, "loc": { "start": { "line": 520, @@ -118212,8 +118212,8 @@ }, "init": { "type": "MemberExpression", - "start": 21428, - "end": 21449, + "start": 21417, + "end": 21438, "loc": { "start": { "line": 520, @@ -118226,8 +118226,8 @@ }, "object": { "type": "MemberExpression", - "start": 21428, - "end": 21446, + "start": 21417, + "end": 21435, "loc": { "start": { "line": 520, @@ -118240,8 +118240,8 @@ }, "object": { "type": "Identifier", - "start": 21428, - "end": 21439, + "start": 21417, + "end": 21428, "loc": { "start": { "line": 520, @@ -118257,8 +118257,8 @@ }, "property": { "type": "Identifier", - "start": 21440, - "end": 21446, + "start": 21429, + "end": 21435, "loc": { "start": { "line": 520, @@ -118276,8 +118276,8 @@ }, "property": { "type": "Identifier", - "start": 21447, - "end": 21448, + "start": 21436, + "end": 21437, "loc": { "start": { "line": 520, @@ -118299,8 +118299,8 @@ }, { "type": "IfStatement", - "start": 21463, - "end": 21534, + "start": 21452, + "end": 21523, "loc": { "start": { "line": 521, @@ -118313,8 +118313,8 @@ }, "test": { "type": "BinaryExpression", - "start": 21467, - "end": 21491, + "start": 21456, + "end": 21480, "loc": { "start": { "line": 521, @@ -118327,8 +118327,8 @@ }, "left": { "type": "MemberExpression", - "start": 21467, - "end": 21477, + "start": 21456, + "end": 21466, "loc": { "start": { "line": 521, @@ -118341,8 +118341,8 @@ }, "object": { "type": "Identifier", - "start": 21467, - "end": 21472, + "start": 21456, + "end": 21461, "loc": { "start": { "line": 521, @@ -118358,8 +118358,8 @@ }, "property": { "type": "Identifier", - "start": 21473, - "end": 21477, + "start": 21462, + "end": 21466, "loc": { "start": { "line": 521, @@ -118378,8 +118378,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 21482, - "end": 21491, + "start": 21471, + "end": 21480, "loc": { "start": { "line": 521, @@ -118399,8 +118399,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 21493, - "end": 21534, + "start": 21482, + "end": 21523, "loc": { "start": { "line": 521, @@ -118414,8 +118414,8 @@ "body": [ { "type": "ContinueStatement", - "start": 21511, - "end": 21520, + "start": 21500, + "end": 21509, "loc": { "start": { "line": 522, @@ -118435,8 +118435,8 @@ }, { "type": "ExpressionStatement", - "start": 21547, - "end": 21593, + "start": 21536, + "end": 21582, "loc": { "start": { "line": 524, @@ -118449,8 +118449,8 @@ }, "expression": { "type": "CallExpression", - "start": 21547, - "end": 21592, + "start": 21536, + "end": 21581, "loc": { "start": { "line": 524, @@ -118463,8 +118463,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21547, - "end": 21555, + "start": 21536, + "end": 21544, "loc": { "start": { "line": 524, @@ -118477,8 +118477,8 @@ }, "object": { "type": "Identifier", - "start": 21547, - "end": 21550, + "start": 21536, + "end": 21539, "loc": { "start": { "line": 524, @@ -118494,8 +118494,8 @@ }, "property": { "type": "Identifier", - "start": 21551, - "end": 21555, + "start": 21540, + "end": 21544, "loc": { "start": { "line": 524, @@ -118514,8 +118514,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 21556, - "end": 21591, + "start": 21545, + "end": 21580, "loc": { "start": { "line": 524, @@ -118528,8 +118528,8 @@ }, "left": { "type": "BinaryExpression", - "start": 21556, - "end": 21585, + "start": 21545, + "end": 21574, "loc": { "start": { "line": 524, @@ -118542,8 +118542,8 @@ }, "left": { "type": "StringLiteral", - "start": 21556, - "end": 21581, + "start": 21545, + "end": 21570, "loc": { "start": { "line": 524, @@ -118563,8 +118563,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 21584, - "end": 21585, + "start": 21573, + "end": 21574, "loc": { "start": { "line": 524, @@ -118582,8 +118582,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 21588, - "end": 21591, + "start": 21577, + "end": 21580, "loc": { "start": { "line": 524, @@ -118606,8 +118606,8 @@ }, { "type": "IfStatement", - "start": 21606, - "end": 21708, + "start": 21595, + "end": 21697, "loc": { "start": { "line": 525, @@ -118620,8 +118620,8 @@ }, "test": { "type": "BinaryExpression", - "start": 21610, - "end": 21630, + "start": 21599, + "end": 21619, "loc": { "start": { "line": 525, @@ -118634,8 +118634,8 @@ }, "left": { "type": "MemberExpression", - "start": 21610, - "end": 21620, + "start": 21599, + "end": 21609, "loc": { "start": { "line": 525, @@ -118648,8 +118648,8 @@ }, "object": { "type": "Identifier", - "start": 21610, - "end": 21615, + "start": 21599, + "end": 21604, "loc": { "start": { "line": 525, @@ -118665,8 +118665,8 @@ }, "property": { "type": "Identifier", - "start": 21616, - "end": 21620, + "start": 21605, + "end": 21609, "loc": { "start": { "line": 525, @@ -118685,8 +118685,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 21625, - "end": 21630, + "start": 21614, + "end": 21619, "loc": { "start": { "line": 525, @@ -118706,8 +118706,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 21632, - "end": 21708, + "start": 21621, + "end": 21697, "loc": { "start": { "line": 525, @@ -118721,8 +118721,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 21650, - "end": 21694, + "start": 21639, + "end": 21683, "loc": { "start": { "line": 526, @@ -118735,8 +118735,8 @@ }, "expression": { "type": "CallExpression", - "start": 21650, - "end": 21693, + "start": 21639, + "end": 21682, "loc": { "start": { "line": 526, @@ -118749,8 +118749,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21650, - "end": 21658, + "start": 21639, + "end": 21647, "loc": { "start": { "line": 526, @@ -118763,8 +118763,8 @@ }, "object": { "type": "Identifier", - "start": 21650, - "end": 21653, + "start": 21639, + "end": 21642, "loc": { "start": { "line": 526, @@ -118780,8 +118780,8 @@ }, "property": { "type": "Identifier", - "start": 21654, - "end": 21658, + "start": 21643, + "end": 21647, "loc": { "start": { "line": 526, @@ -118800,8 +118800,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 21659, - "end": 21692, + "start": 21648, + "end": 21681, "loc": { "start": { "line": 526, @@ -118814,8 +118814,8 @@ }, "left": { "type": "BinaryExpression", - "start": 21659, - "end": 21686, + "start": 21648, + "end": 21675, "loc": { "start": { "line": 526, @@ -118828,8 +118828,8 @@ }, "left": { "type": "StringLiteral", - "start": 21659, - "end": 21682, + "start": 21648, + "end": 21671, "loc": { "start": { "line": 526, @@ -118849,8 +118849,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 21685, - "end": 21686, + "start": 21674, + "end": 21675, "loc": { "start": { "line": 526, @@ -118868,8 +118868,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 21689, - "end": 21692, + "start": 21678, + "end": 21681, "loc": { "start": { "line": 526, @@ -118897,8 +118897,8 @@ }, { "type": "IfStatement", - "start": 21721, - "end": 21825, + "start": 21710, + "end": 21814, "loc": { "start": { "line": 528, @@ -118911,8 +118911,8 @@ }, "test": { "type": "BinaryExpression", - "start": 21725, - "end": 21747, + "start": 21714, + "end": 21736, "loc": { "start": { "line": 528, @@ -118925,8 +118925,8 @@ }, "left": { "type": "MemberExpression", - "start": 21725, - "end": 21735, + "start": 21714, + "end": 21724, "loc": { "start": { "line": 528, @@ -118939,8 +118939,8 @@ }, "object": { "type": "Identifier", - "start": 21725, - "end": 21730, + "start": 21714, + "end": 21719, "loc": { "start": { "line": 528, @@ -118956,8 +118956,8 @@ }, "property": { "type": "Identifier", - "start": 21731, - "end": 21735, + "start": 21720, + "end": 21724, "loc": { "start": { "line": 528, @@ -118976,8 +118976,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 21740, - "end": 21747, + "start": 21729, + "end": 21736, "loc": { "start": { "line": 528, @@ -118997,8 +118997,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 21749, - "end": 21825, + "start": 21738, + "end": 21814, "loc": { "start": { "line": 528, @@ -119012,8 +119012,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 21767, - "end": 21811, + "start": 21756, + "end": 21800, "loc": { "start": { "line": 529, @@ -119026,8 +119026,8 @@ }, "expression": { "type": "CallExpression", - "start": 21767, - "end": 21810, + "start": 21756, + "end": 21799, "loc": { "start": { "line": 529, @@ -119040,8 +119040,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21767, - "end": 21775, + "start": 21756, + "end": 21764, "loc": { "start": { "line": 529, @@ -119054,8 +119054,8 @@ }, "object": { "type": "Identifier", - "start": 21767, - "end": 21770, + "start": 21756, + "end": 21759, "loc": { "start": { "line": 529, @@ -119071,8 +119071,8 @@ }, "property": { "type": "Identifier", - "start": 21771, - "end": 21775, + "start": 21760, + "end": 21764, "loc": { "start": { "line": 529, @@ -119091,8 +119091,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 21776, - "end": 21809, + "start": 21765, + "end": 21798, "loc": { "start": { "line": 529, @@ -119105,8 +119105,8 @@ }, "left": { "type": "BinaryExpression", - "start": 21776, - "end": 21803, + "start": 21765, + "end": 21792, "loc": { "start": { "line": 529, @@ -119119,8 +119119,8 @@ }, "left": { "type": "StringLiteral", - "start": 21776, - "end": 21799, + "start": 21765, + "end": 21788, "loc": { "start": { "line": 529, @@ -119140,8 +119140,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 21802, - "end": 21803, + "start": 21791, + "end": 21792, "loc": { "start": { "line": 529, @@ -119159,8 +119159,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 21806, - "end": 21809, + "start": 21795, + "end": 21798, "loc": { "start": { "line": 529, @@ -119188,8 +119188,8 @@ }, { "type": "IfStatement", - "start": 21838, - "end": 22002, + "start": 21827, + "end": 21991, "loc": { "start": { "line": 531, @@ -119202,8 +119202,8 @@ }, "test": { "type": "BinaryExpression", - "start": 21842, - "end": 21863, + "start": 21831, + "end": 21852, "loc": { "start": { "line": 531, @@ -119216,8 +119216,8 @@ }, "left": { "type": "MemberExpression", - "start": 21842, - "end": 21852, + "start": 21831, + "end": 21841, "loc": { "start": { "line": 531, @@ -119230,8 +119230,8 @@ }, "object": { "type": "Identifier", - "start": 21842, - "end": 21847, + "start": 21831, + "end": 21836, "loc": { "start": { "line": 531, @@ -119247,8 +119247,8 @@ }, "property": { "type": "Identifier", - "start": 21848, - "end": 21852, + "start": 21837, + "end": 21841, "loc": { "start": { "line": 531, @@ -119267,8 +119267,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 21857, - "end": 21863, + "start": 21846, + "end": 21852, "loc": { "start": { "line": 531, @@ -119288,8 +119288,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 21865, - "end": 22002, + "start": 21854, + "end": 21991, "loc": { "start": { "line": 531, @@ -119303,8 +119303,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 21883, - "end": 21927, + "start": 21872, + "end": 21916, "loc": { "start": { "line": 532, @@ -119317,8 +119317,8 @@ }, "expression": { "type": "CallExpression", - "start": 21883, - "end": 21926, + "start": 21872, + "end": 21915, "loc": { "start": { "line": 532, @@ -119331,8 +119331,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21883, - "end": 21891, + "start": 21872, + "end": 21880, "loc": { "start": { "line": 532, @@ -119345,8 +119345,8 @@ }, "object": { "type": "Identifier", - "start": 21883, - "end": 21886, + "start": 21872, + "end": 21875, "loc": { "start": { "line": 532, @@ -119362,8 +119362,8 @@ }, "property": { "type": "Identifier", - "start": 21887, - "end": 21891, + "start": 21876, + "end": 21880, "loc": { "start": { "line": 532, @@ -119382,8 +119382,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 21892, - "end": 21925, + "start": 21881, + "end": 21914, "loc": { "start": { "line": 532, @@ -119396,8 +119396,8 @@ }, "left": { "type": "BinaryExpression", - "start": 21892, - "end": 21919, + "start": 21881, + "end": 21908, "loc": { "start": { "line": 532, @@ -119410,8 +119410,8 @@ }, "left": { "type": "StringLiteral", - "start": 21892, - "end": 21915, + "start": 21881, + "end": 21904, "loc": { "start": { "line": 532, @@ -119431,8 +119431,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 21918, - "end": 21919, + "start": 21907, + "end": 21908, "loc": { "start": { "line": 532, @@ -119450,8 +119450,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 21922, - "end": 21925, + "start": 21911, + "end": 21914, "loc": { "start": { "line": 532, @@ -119474,8 +119474,8 @@ }, { "type": "ExpressionStatement", - "start": 21944, - "end": 21988, + "start": 21933, + "end": 21977, "loc": { "start": { "line": 533, @@ -119488,8 +119488,8 @@ }, "expression": { "type": "CallExpression", - "start": 21944, - "end": 21987, + "start": 21933, + "end": 21976, "loc": { "start": { "line": 533, @@ -119502,8 +119502,8 @@ }, "callee": { "type": "MemberExpression", - "start": 21944, - "end": 21952, + "start": 21933, + "end": 21941, "loc": { "start": { "line": 533, @@ -119516,8 +119516,8 @@ }, "object": { "type": "Identifier", - "start": 21944, - "end": 21947, + "start": 21933, + "end": 21936, "loc": { "start": { "line": 533, @@ -119533,8 +119533,8 @@ }, "property": { "type": "Identifier", - "start": 21948, - "end": 21952, + "start": 21937, + "end": 21941, "loc": { "start": { "line": 533, @@ -119553,8 +119553,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 21953, - "end": 21986, + "start": 21942, + "end": 21975, "loc": { "start": { "line": 533, @@ -119567,8 +119567,8 @@ }, "left": { "type": "BinaryExpression", - "start": 21953, - "end": 21980, + "start": 21942, + "end": 21969, "loc": { "start": { "line": 533, @@ -119581,8 +119581,8 @@ }, "left": { "type": "StringLiteral", - "start": 21953, - "end": 21976, + "start": 21942, + "end": 21965, "loc": { "start": { "line": 533, @@ -119602,8 +119602,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 21979, - "end": 21980, + "start": 21968, + "end": 21969, "loc": { "start": { "line": 533, @@ -119621,8 +119621,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 21983, - "end": 21986, + "start": 21972, + "end": 21975, "loc": { "start": { "line": 533, @@ -119654,8 +119654,8 @@ }, { "type": "ExpressionStatement", - "start": 22022, - "end": 22061, + "start": 22011, + "end": 22050, "loc": { "start": { "line": 537, @@ -119668,8 +119668,8 @@ }, "expression": { "type": "CallExpression", - "start": 22022, - "end": 22060, + "start": 22011, + "end": 22049, "loc": { "start": { "line": 537, @@ -119682,8 +119682,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22022, - "end": 22030, + "start": 22011, + "end": 22019, "loc": { "start": { "line": 537, @@ -119696,8 +119696,8 @@ }, "object": { "type": "Identifier", - "start": 22022, - "end": 22025, + "start": 22011, + "end": 22014, "loc": { "start": { "line": 537, @@ -119713,8 +119713,8 @@ }, "property": { "type": "Identifier", - "start": 22026, - "end": 22030, + "start": 22015, + "end": 22019, "loc": { "start": { "line": 537, @@ -119733,8 +119733,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22031, - "end": 22059, + "start": 22020, + "end": 22048, "loc": { "start": { "line": 537, @@ -119756,8 +119756,8 @@ }, { "type": "ExpressionStatement", - "start": 22070, - "end": 22121, + "start": 22059, + "end": 22110, "loc": { "start": { "line": 538, @@ -119770,8 +119770,8 @@ }, "expression": { "type": "CallExpression", - "start": 22070, - "end": 22120, + "start": 22059, + "end": 22109, "loc": { "start": { "line": 538, @@ -119784,8 +119784,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22070, - "end": 22078, + "start": 22059, + "end": 22067, "loc": { "start": { "line": 538, @@ -119798,8 +119798,8 @@ }, "object": { "type": "Identifier", - "start": 22070, - "end": 22073, + "start": 22059, + "end": 22062, "loc": { "start": { "line": 538, @@ -119815,8 +119815,8 @@ }, "property": { "type": "Identifier", - "start": 22074, - "end": 22078, + "start": 22063, + "end": 22067, "loc": { "start": { "line": 538, @@ -119835,8 +119835,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22079, - "end": 22119, + "start": 22068, + "end": 22108, "loc": { "start": { "line": 538, @@ -119858,8 +119858,8 @@ }, { "type": "ExpressionStatement", - "start": 22130, - "end": 22158, + "start": 22119, + "end": 22147, "loc": { "start": { "line": 539, @@ -119872,8 +119872,8 @@ }, "expression": { "type": "CallExpression", - "start": 22130, - "end": 22157, + "start": 22119, + "end": 22146, "loc": { "start": { "line": 539, @@ -119886,8 +119886,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22130, - "end": 22138, + "start": 22119, + "end": 22127, "loc": { "start": { "line": 539, @@ -119900,8 +119900,8 @@ }, "object": { "type": "Identifier", - "start": 22130, - "end": 22133, + "start": 22119, + "end": 22122, "loc": { "start": { "line": 539, @@ -119917,8 +119917,8 @@ }, "property": { "type": "Identifier", - "start": 22134, - "end": 22138, + "start": 22123, + "end": 22127, "loc": { "start": { "line": 539, @@ -119937,8 +119937,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22139, - "end": 22156, + "start": 22128, + "end": 22145, "loc": { "start": { "line": 539, @@ -119960,8 +119960,8 @@ }, { "type": "ExpressionStatement", - "start": 22167, - "end": 22181, + "start": 22156, + "end": 22170, "loc": { "start": { "line": 540, @@ -119974,8 +119974,8 @@ }, "expression": { "type": "CallExpression", - "start": 22167, - "end": 22180, + "start": 22156, + "end": 22169, "loc": { "start": { "line": 540, @@ -119988,8 +119988,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22167, - "end": 22175, + "start": 22156, + "end": 22164, "loc": { "start": { "line": 540, @@ -120002,8 +120002,8 @@ }, "object": { "type": "Identifier", - "start": 22167, - "end": 22170, + "start": 22156, + "end": 22159, "loc": { "start": { "line": 540, @@ -120019,8 +120019,8 @@ }, "property": { "type": "Identifier", - "start": 22171, - "end": 22175, + "start": 22160, + "end": 22164, "loc": { "start": { "line": 540, @@ -120039,8 +120039,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22176, - "end": 22179, + "start": 22165, + "end": 22168, "loc": { "start": { "line": 540, @@ -120062,8 +120062,8 @@ }, { "type": "ExpressionStatement", - "start": 22190, - "end": 22239, + "start": 22179, + "end": 22228, "loc": { "start": { "line": 541, @@ -120076,8 +120076,8 @@ }, "expression": { "type": "CallExpression", - "start": 22190, - "end": 22238, + "start": 22179, + "end": 22227, "loc": { "start": { "line": 541, @@ -120090,8 +120090,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22190, - "end": 22198, + "start": 22179, + "end": 22187, "loc": { "start": { "line": 541, @@ -120104,8 +120104,8 @@ }, "object": { "type": "Identifier", - "start": 22190, - "end": 22193, + "start": 22179, + "end": 22182, "loc": { "start": { "line": 541, @@ -120121,8 +120121,8 @@ }, "property": { "type": "Identifier", - "start": 22194, - "end": 22198, + "start": 22183, + "end": 22187, "loc": { "start": { "line": 541, @@ -120141,8 +120141,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22199, - "end": 22237, + "start": 22188, + "end": 22226, "loc": { "start": { "line": 541, @@ -120164,8 +120164,8 @@ }, { "type": "ExpressionStatement", - "start": 22248, - "end": 22441, + "start": 22237, + "end": 22430, "loc": { "start": { "line": 542, @@ -120178,8 +120178,8 @@ }, "expression": { "type": "CallExpression", - "start": 22248, - "end": 22440, + "start": 22237, + "end": 22429, "loc": { "start": { "line": 542, @@ -120192,8 +120192,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22248, - "end": 22256, + "start": 22237, + "end": 22245, "loc": { "start": { "line": 542, @@ -120206,8 +120206,8 @@ }, "object": { "type": "Identifier", - "start": 22248, - "end": 22251, + "start": 22237, + "end": 22240, "loc": { "start": { "line": 542, @@ -120223,8 +120223,8 @@ }, "property": { "type": "Identifier", - "start": 22252, - "end": 22256, + "start": 22241, + "end": 22245, "loc": { "start": { "line": 542, @@ -120243,8 +120243,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22257, - "end": 22439, + "start": 22246, + "end": 22428, "loc": { "start": { "line": 542, @@ -120266,8 +120266,8 @@ }, { "type": "ExpressionStatement", - "start": 22450, - "end": 22464, + "start": 22439, + "end": 22453, "loc": { "start": { "line": 543, @@ -120280,8 +120280,8 @@ }, "expression": { "type": "CallExpression", - "start": 22450, - "end": 22463, + "start": 22439, + "end": 22452, "loc": { "start": { "line": 543, @@ -120294,8 +120294,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22450, - "end": 22458, + "start": 22439, + "end": 22447, "loc": { "start": { "line": 543, @@ -120308,8 +120308,8 @@ }, "object": { "type": "Identifier", - "start": 22450, - "end": 22453, + "start": 22439, + "end": 22442, "loc": { "start": { "line": 543, @@ -120325,8 +120325,8 @@ }, "property": { "type": "Identifier", - "start": 22454, - "end": 22458, + "start": 22443, + "end": 22447, "loc": { "start": { "line": 543, @@ -120345,8 +120345,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22459, - "end": 22462, + "start": 22448, + "end": 22451, "loc": { "start": { "line": 543, @@ -120368,8 +120368,8 @@ }, { "type": "ExpressionStatement", - "start": 22473, - "end": 22522, + "start": 22462, + "end": 22511, "loc": { "start": { "line": 544, @@ -120382,8 +120382,8 @@ }, "expression": { "type": "CallExpression", - "start": 22473, - "end": 22521, + "start": 22462, + "end": 22510, "loc": { "start": { "line": 544, @@ -120396,8 +120396,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22473, - "end": 22481, + "start": 22462, + "end": 22470, "loc": { "start": { "line": 544, @@ -120410,8 +120410,8 @@ }, "object": { "type": "Identifier", - "start": 22473, - "end": 22476, + "start": 22462, + "end": 22465, "loc": { "start": { "line": 544, @@ -120427,8 +120427,8 @@ }, "property": { "type": "Identifier", - "start": 22477, - "end": 22481, + "start": 22466, + "end": 22470, "loc": { "start": { "line": 544, @@ -120447,8 +120447,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22482, - "end": 22520, + "start": 22471, + "end": 22509, "loc": { "start": { "line": 544, @@ -120470,8 +120470,8 @@ }, { "type": "ExpressionStatement", - "start": 22531, - "end": 22608, + "start": 22520, + "end": 22597, "loc": { "start": { "line": 545, @@ -120484,8 +120484,8 @@ }, "expression": { "type": "CallExpression", - "start": 22531, - "end": 22607, + "start": 22520, + "end": 22596, "loc": { "start": { "line": 545, @@ -120498,8 +120498,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22531, - "end": 22539, + "start": 22520, + "end": 22528, "loc": { "start": { "line": 545, @@ -120512,8 +120512,8 @@ }, "object": { "type": "Identifier", - "start": 22531, - "end": 22534, + "start": 22520, + "end": 22523, "loc": { "start": { "line": 545, @@ -120529,8 +120529,8 @@ }, "property": { "type": "Identifier", - "start": 22535, - "end": 22539, + "start": 22524, + "end": 22528, "loc": { "start": { "line": 545, @@ -120549,8 +120549,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22540, - "end": 22606, + "start": 22529, + "end": 22595, "loc": { "start": { "line": 545, @@ -120572,8 +120572,8 @@ }, { "type": "ExpressionStatement", - "start": 22617, - "end": 22631, + "start": 22606, + "end": 22620, "loc": { "start": { "line": 546, @@ -120586,8 +120586,8 @@ }, "expression": { "type": "CallExpression", - "start": 22617, - "end": 22630, + "start": 22606, + "end": 22619, "loc": { "start": { "line": 546, @@ -120600,8 +120600,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22617, - "end": 22625, + "start": 22606, + "end": 22614, "loc": { "start": { "line": 546, @@ -120614,8 +120614,8 @@ }, "object": { "type": "Identifier", - "start": 22617, - "end": 22620, + "start": 22606, + "end": 22609, "loc": { "start": { "line": 546, @@ -120631,8 +120631,8 @@ }, "property": { "type": "Identifier", - "start": 22621, - "end": 22625, + "start": 22610, + "end": 22614, "loc": { "start": { "line": 546, @@ -120651,8 +120651,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22626, - "end": 22629, + "start": 22615, + "end": 22618, "loc": { "start": { "line": 546, @@ -120674,8 +120674,8 @@ }, { "type": "IfStatement", - "start": 22640, - "end": 22876, + "start": 22629, + "end": 22865, "loc": { "start": { "line": 547, @@ -120688,8 +120688,8 @@ }, "test": { "type": "Identifier", - "start": 22644, - "end": 22655, + "start": 22633, + "end": 22644, "loc": { "start": { "line": 547, @@ -120705,8 +120705,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 22657, - "end": 22876, + "start": 22646, + "end": 22865, "loc": { "start": { "line": 547, @@ -120720,8 +120720,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 22671, - "end": 22743, + "start": 22660, + "end": 22732, "loc": { "start": { "line": 548, @@ -120734,8 +120734,8 @@ }, "expression": { "type": "CallExpression", - "start": 22671, - "end": 22742, + "start": 22660, + "end": 22731, "loc": { "start": { "line": 548, @@ -120748,8 +120748,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22671, - "end": 22679, + "start": 22660, + "end": 22668, "loc": { "start": { "line": 548, @@ -120762,8 +120762,8 @@ }, "object": { "type": "Identifier", - "start": 22671, - "end": 22674, + "start": 22660, + "end": 22663, "loc": { "start": { "line": 548, @@ -120779,8 +120779,8 @@ }, "property": { "type": "Identifier", - "start": 22675, - "end": 22679, + "start": 22664, + "end": 22668, "loc": { "start": { "line": 548, @@ -120799,8 +120799,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22680, - "end": 22741, + "start": 22669, + "end": 22730, "loc": { "start": { "line": 548, @@ -120822,8 +120822,8 @@ }, { "type": "ExpressionStatement", - "start": 22756, - "end": 22839, + "start": 22745, + "end": 22828, "loc": { "start": { "line": 549, @@ -120836,8 +120836,8 @@ }, "expression": { "type": "CallExpression", - "start": 22756, - "end": 22838, + "start": 22745, + "end": 22827, "loc": { "start": { "line": 549, @@ -120850,8 +120850,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22756, - "end": 22764, + "start": 22745, + "end": 22753, "loc": { "start": { "line": 549, @@ -120864,8 +120864,8 @@ }, "object": { "type": "Identifier", - "start": 22756, - "end": 22759, + "start": 22745, + "end": 22748, "loc": { "start": { "line": 549, @@ -120881,8 +120881,8 @@ }, "property": { "type": "Identifier", - "start": 22760, - "end": 22764, + "start": 22749, + "end": 22753, "loc": { "start": { "line": 549, @@ -120901,8 +120901,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22765, - "end": 22837, + "start": 22754, + "end": 22826, "loc": { "start": { "line": 549, @@ -120924,8 +120924,8 @@ }, { "type": "ExpressionStatement", - "start": 22852, - "end": 22866, + "start": 22841, + "end": 22855, "loc": { "start": { "line": 550, @@ -120938,8 +120938,8 @@ }, "expression": { "type": "CallExpression", - "start": 22852, - "end": 22865, + "start": 22841, + "end": 22854, "loc": { "start": { "line": 550, @@ -120952,8 +120952,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22852, - "end": 22860, + "start": 22841, + "end": 22849, "loc": { "start": { "line": 550, @@ -120966,8 +120966,8 @@ }, "object": { "type": "Identifier", - "start": 22852, - "end": 22855, + "start": 22841, + "end": 22844, "loc": { "start": { "line": 550, @@ -120983,8 +120983,8 @@ }, "property": { "type": "Identifier", - "start": 22856, - "end": 22860, + "start": 22845, + "end": 22849, "loc": { "start": { "line": 550, @@ -121003,8 +121003,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22861, - "end": 22864, + "start": 22850, + "end": 22853, "loc": { "start": { "line": 550, @@ -121031,8 +121031,8 @@ }, { "type": "IfStatement", - "start": 22886, - "end": 23427, + "start": 22875, + "end": 23416, "loc": { "start": { "line": 553, @@ -121045,8 +121045,8 @@ }, "test": { "type": "Identifier", - "start": 22890, - "end": 22898, + "start": 22879, + "end": 22887, "loc": { "start": { "line": 553, @@ -121062,8 +121062,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 22900, - "end": 23427, + "start": 22889, + "end": 23416, "loc": { "start": { "line": 553, @@ -121077,8 +121077,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 22914, - "end": 22955, + "start": 22903, + "end": 22944, "loc": { "start": { "line": 554, @@ -121091,8 +121091,8 @@ }, "expression": { "type": "CallExpression", - "start": 22914, - "end": 22954, + "start": 22903, + "end": 22943, "loc": { "start": { "line": 554, @@ -121105,8 +121105,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22914, - "end": 22922, + "start": 22903, + "end": 22911, "loc": { "start": { "line": 554, @@ -121119,8 +121119,8 @@ }, "object": { "type": "Identifier", - "start": 22914, - "end": 22917, + "start": 22903, + "end": 22906, "loc": { "start": { "line": 554, @@ -121136,8 +121136,8 @@ }, "property": { "type": "Identifier", - "start": 22918, - "end": 22922, + "start": 22907, + "end": 22911, "loc": { "start": { "line": 554, @@ -121156,8 +121156,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22923, - "end": 22953, + "start": 22912, + "end": 22942, "loc": { "start": { "line": 554, @@ -121179,8 +121179,8 @@ }, { "type": "ExpressionStatement", - "start": 22968, - "end": 23002, + "start": 22957, + "end": 22991, "loc": { "start": { "line": 555, @@ -121193,8 +121193,8 @@ }, "expression": { "type": "CallExpression", - "start": 22968, - "end": 23001, + "start": 22957, + "end": 22990, "loc": { "start": { "line": 555, @@ -121207,8 +121207,8 @@ }, "callee": { "type": "MemberExpression", - "start": 22968, - "end": 22976, + "start": 22957, + "end": 22965, "loc": { "start": { "line": 555, @@ -121221,8 +121221,8 @@ }, "object": { "type": "Identifier", - "start": 22968, - "end": 22971, + "start": 22957, + "end": 22960, "loc": { "start": { "line": 555, @@ -121238,8 +121238,8 @@ }, "property": { "type": "Identifier", - "start": 22972, - "end": 22976, + "start": 22961, + "end": 22965, "loc": { "start": { "line": 555, @@ -121258,8 +121258,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 22977, - "end": 23000, + "start": 22966, + "end": 22989, "loc": { "start": { "line": 555, @@ -121281,8 +121281,8 @@ }, { "type": "IfStatement", - "start": 23015, - "end": 23105, + "start": 23004, + "end": 23094, "loc": { "start": { "line": 556, @@ -121295,8 +121295,8 @@ }, "test": { "type": "Identifier", - "start": 23019, - "end": 23031, + "start": 23008, + "end": 23020, "loc": { "start": { "line": 556, @@ -121312,8 +121312,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 23033, - "end": 23105, + "start": 23022, + "end": 23094, "loc": { "start": { "line": 556, @@ -121327,8 +121327,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 23051, - "end": 23091, + "start": 23040, + "end": 23080, "loc": { "start": { "line": 557, @@ -121341,8 +121341,8 @@ }, "expression": { "type": "CallExpression", - "start": 23051, - "end": 23090, + "start": 23040, + "end": 23079, "loc": { "start": { "line": 557, @@ -121355,8 +121355,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23051, - "end": 23059, + "start": 23040, + "end": 23048, "loc": { "start": { "line": 557, @@ -121369,8 +121369,8 @@ }, "object": { "type": "Identifier", - "start": 23051, - "end": 23054, + "start": 23040, + "end": 23043, "loc": { "start": { "line": 557, @@ -121386,8 +121386,8 @@ }, "property": { "type": "Identifier", - "start": 23055, - "end": 23059, + "start": 23044, + "end": 23048, "loc": { "start": { "line": 557, @@ -121406,8 +121406,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23060, - "end": 23089, + "start": 23049, + "end": 23078, "loc": { "start": { "line": 557, @@ -121434,8 +121434,8 @@ }, { "type": "ForStatement", - "start": 23118, - "end": 23417, + "start": 23107, + "end": 23406, "loc": { "start": { "line": 559, @@ -121448,8 +121448,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 23123, - "end": 23179, + "start": 23112, + "end": 23168, "loc": { "start": { "line": 559, @@ -121463,8 +121463,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 23127, - "end": 23132, + "start": 23116, + "end": 23121, "loc": { "start": { "line": 559, @@ -121477,8 +121477,8 @@ }, "id": { "type": "Identifier", - "start": 23127, - "end": 23128, + "start": 23116, + "end": 23117, "loc": { "start": { "line": 559, @@ -121494,8 +121494,8 @@ }, "init": { "type": "NumericLiteral", - "start": 23131, - "end": 23132, + "start": 23120, + "end": 23121, "loc": { "start": { "line": 559, @@ -121515,8 +121515,8 @@ }, { "type": "VariableDeclarator", - "start": 23134, - "end": 23179, + "start": 23123, + "end": 23168, "loc": { "start": { "line": 559, @@ -121529,8 +121529,8 @@ }, "id": { "type": "Identifier", - "start": 23134, - "end": 23137, + "start": 23123, + "end": 23126, "loc": { "start": { "line": 559, @@ -121546,8 +121546,8 @@ }, "init": { "type": "MemberExpression", - "start": 23140, - "end": 23179, + "start": 23129, + "end": 23168, "loc": { "start": { "line": 559, @@ -121560,8 +121560,8 @@ }, "object": { "type": "MemberExpression", - "start": 23140, - "end": 23172, + "start": 23129, + "end": 23161, "loc": { "start": { "line": 559, @@ -121574,8 +121574,8 @@ }, "object": { "type": "Identifier", - "start": 23140, - "end": 23158, + "start": 23129, + "end": 23147, "loc": { "start": { "line": 559, @@ -121591,8 +121591,8 @@ }, "property": { "type": "Identifier", - "start": 23159, - "end": 23172, + "start": 23148, + "end": 23161, "loc": { "start": { "line": 559, @@ -121610,8 +121610,8 @@ }, "property": { "type": "Identifier", - "start": 23173, - "end": 23179, + "start": 23162, + "end": 23168, "loc": { "start": { "line": 559, @@ -121633,8 +121633,8 @@ }, "test": { "type": "BinaryExpression", - "start": 23181, - "end": 23188, + "start": 23170, + "end": 23177, "loc": { "start": { "line": 559, @@ -121647,8 +121647,8 @@ }, "left": { "type": "Identifier", - "start": 23181, - "end": 23182, + "start": 23170, + "end": 23171, "loc": { "start": { "line": 559, @@ -121665,8 +121665,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 23185, - "end": 23188, + "start": 23174, + "end": 23177, "loc": { "start": { "line": 559, @@ -121683,8 +121683,8 @@ }, "update": { "type": "UpdateExpression", - "start": 23190, - "end": 23193, + "start": 23179, + "end": 23182, "loc": { "start": { "line": 559, @@ -121699,8 +121699,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 23190, - "end": 23191, + "start": 23179, + "end": 23180, "loc": { "start": { "line": 559, @@ -121717,8 +121717,8 @@ }, "body": { "type": "BlockStatement", - "start": 23195, - "end": 23417, + "start": 23184, + "end": 23406, "loc": { "start": { "line": 559, @@ -121732,8 +121732,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 23213, - "end": 23267, + "start": 23202, + "end": 23256, "loc": { "start": { "line": 560, @@ -121746,8 +121746,8 @@ }, "expression": { "type": "CallExpression", - "start": 23213, - "end": 23266, + "start": 23202, + "end": 23255, "loc": { "start": { "line": 560, @@ -121760,8 +121760,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23213, - "end": 23221, + "start": 23202, + "end": 23210, "loc": { "start": { "line": 560, @@ -121774,8 +121774,8 @@ }, "object": { "type": "Identifier", - "start": 23213, - "end": 23216, + "start": 23202, + "end": 23205, "loc": { "start": { "line": 560, @@ -121791,8 +121791,8 @@ }, "property": { "type": "Identifier", - "start": 23217, - "end": 23221, + "start": 23206, + "end": 23210, "loc": { "start": { "line": 560, @@ -121811,8 +121811,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 23222, - "end": 23265, + "start": 23211, + "end": 23254, "loc": { "start": { "line": 560, @@ -121825,8 +121825,8 @@ }, "left": { "type": "BinaryExpression", - "start": 23222, - "end": 23259, + "start": 23211, + "end": 23248, "loc": { "start": { "line": 560, @@ -121839,8 +121839,8 @@ }, "left": { "type": "StringLiteral", - "start": 23222, - "end": 23255, + "start": 23211, + "end": 23244, "loc": { "start": { "line": 560, @@ -121860,8 +121860,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 23258, - "end": 23259, + "start": 23247, + "end": 23248, "loc": { "start": { "line": 560, @@ -121879,8 +121879,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 23262, - "end": 23265, + "start": 23251, + "end": 23254, "loc": { "start": { "line": 560, @@ -121903,8 +121903,8 @@ }, { "type": "ExpressionStatement", - "start": 23284, - "end": 23335, + "start": 23273, + "end": 23324, "loc": { "start": { "line": 561, @@ -121917,8 +121917,8 @@ }, "expression": { "type": "CallExpression", - "start": 23284, - "end": 23334, + "start": 23273, + "end": 23323, "loc": { "start": { "line": 561, @@ -121931,8 +121931,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23284, - "end": 23292, + "start": 23273, + "end": 23281, "loc": { "start": { "line": 561, @@ -121945,8 +121945,8 @@ }, "object": { "type": "Identifier", - "start": 23284, - "end": 23287, + "start": 23273, + "end": 23276, "loc": { "start": { "line": 561, @@ -121962,8 +121962,8 @@ }, "property": { "type": "Identifier", - "start": 23288, - "end": 23292, + "start": 23277, + "end": 23281, "loc": { "start": { "line": 561, @@ -121982,8 +121982,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 23293, - "end": 23333, + "start": 23282, + "end": 23322, "loc": { "start": { "line": 561, @@ -121996,8 +121996,8 @@ }, "left": { "type": "BinaryExpression", - "start": 23293, - "end": 23327, + "start": 23282, + "end": 23316, "loc": { "start": { "line": 561, @@ -122010,8 +122010,8 @@ }, "left": { "type": "StringLiteral", - "start": 23293, - "end": 23323, + "start": 23282, + "end": 23312, "loc": { "start": { "line": 561, @@ -122031,8 +122031,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 23326, - "end": 23327, + "start": 23315, + "end": 23316, "loc": { "start": { "line": 561, @@ -122050,8 +122050,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 23330, - "end": 23333, + "start": 23319, + "end": 23322, "loc": { "start": { "line": 561, @@ -122074,8 +122074,8 @@ }, { "type": "ExpressionStatement", - "start": 23352, - "end": 23403, + "start": 23341, + "end": 23392, "loc": { "start": { "line": 562, @@ -122088,8 +122088,8 @@ }, "expression": { "type": "CallExpression", - "start": 23352, - "end": 23402, + "start": 23341, + "end": 23391, "loc": { "start": { "line": 562, @@ -122102,8 +122102,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23352, - "end": 23360, + "start": 23341, + "end": 23349, "loc": { "start": { "line": 562, @@ -122116,8 +122116,8 @@ }, "object": { "type": "Identifier", - "start": 23352, - "end": 23355, + "start": 23341, + "end": 23344, "loc": { "start": { "line": 562, @@ -122133,8 +122133,8 @@ }, "property": { "type": "Identifier", - "start": 23356, - "end": 23360, + "start": 23345, + "end": 23349, "loc": { "start": { "line": 562, @@ -122153,8 +122153,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 23361, - "end": 23401, + "start": 23350, + "end": 23390, "loc": { "start": { "line": 562, @@ -122167,8 +122167,8 @@ }, "left": { "type": "BinaryExpression", - "start": 23361, - "end": 23395, + "start": 23350, + "end": 23384, "loc": { "start": { "line": 562, @@ -122181,8 +122181,8 @@ }, "left": { "type": "StringLiteral", - "start": 23361, - "end": 23391, + "start": 23350, + "end": 23380, "loc": { "start": { "line": 562, @@ -122202,8 +122202,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 23394, - "end": 23395, + "start": 23383, + "end": 23384, "loc": { "start": { "line": 562, @@ -122221,8 +122221,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 23398, - "end": 23401, + "start": 23387, + "end": 23390, "loc": { "start": { "line": 562, @@ -122254,8 +122254,8 @@ }, { "type": "ExpressionStatement", - "start": 23437, - "end": 23477, + "start": 23426, + "end": 23466, "loc": { "start": { "line": 566, @@ -122268,8 +122268,8 @@ }, "expression": { "type": "CallExpression", - "start": 23437, - "end": 23476, + "start": 23426, + "end": 23465, "loc": { "start": { "line": 566, @@ -122282,8 +122282,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23437, - "end": 23445, + "start": 23426, + "end": 23434, "loc": { "start": { "line": 566, @@ -122296,8 +122296,8 @@ }, "object": { "type": "Identifier", - "start": 23437, - "end": 23440, + "start": 23426, + "end": 23429, "loc": { "start": { "line": 566, @@ -122313,8 +122313,8 @@ }, "property": { "type": "Identifier", - "start": 23441, - "end": 23445, + "start": 23430, + "end": 23434, "loc": { "start": { "line": 566, @@ -122333,8 +122333,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23446, - "end": 23475, + "start": 23435, + "end": 23464, "loc": { "start": { "line": 566, @@ -122356,8 +122356,8 @@ }, { "type": "ExpressionStatement", - "start": 23486, - "end": 23524, + "start": 23475, + "end": 23513, "loc": { "start": { "line": 567, @@ -122370,8 +122370,8 @@ }, "expression": { "type": "CallExpression", - "start": 23486, - "end": 23523, + "start": 23475, + "end": 23512, "loc": { "start": { "line": 567, @@ -122384,8 +122384,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23486, - "end": 23494, + "start": 23475, + "end": 23483, "loc": { "start": { "line": 567, @@ -122398,8 +122398,8 @@ }, "object": { "type": "Identifier", - "start": 23486, - "end": 23489, + "start": 23475, + "end": 23478, "loc": { "start": { "line": 567, @@ -122415,8 +122415,8 @@ }, "property": { "type": "Identifier", - "start": 23490, - "end": 23494, + "start": 23479, + "end": 23483, "loc": { "start": { "line": 567, @@ -122435,8 +122435,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23495, - "end": 23522, + "start": 23484, + "end": 23511, "loc": { "start": { "line": 567, @@ -122458,8 +122458,8 @@ }, { "type": "ExpressionStatement", - "start": 23533, - "end": 23566, + "start": 23522, + "end": 23555, "loc": { "start": { "line": 568, @@ -122472,8 +122472,8 @@ }, "expression": { "type": "CallExpression", - "start": 23533, - "end": 23565, + "start": 23522, + "end": 23554, "loc": { "start": { "line": 568, @@ -122486,8 +122486,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23533, - "end": 23541, + "start": 23522, + "end": 23530, "loc": { "start": { "line": 568, @@ -122500,8 +122500,8 @@ }, "object": { "type": "Identifier", - "start": 23533, - "end": 23536, + "start": 23522, + "end": 23525, "loc": { "start": { "line": 568, @@ -122517,8 +122517,8 @@ }, "property": { "type": "Identifier", - "start": 23537, - "end": 23541, + "start": 23526, + "end": 23530, "loc": { "start": { "line": 568, @@ -122537,8 +122537,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23542, - "end": 23564, + "start": 23531, + "end": 23553, "loc": { "start": { "line": 568, @@ -122560,8 +122560,8 @@ }, { "type": "ExpressionStatement", - "start": 23575, - "end": 23620, + "start": 23564, + "end": 23609, "loc": { "start": { "line": 569, @@ -122574,8 +122574,8 @@ }, "expression": { "type": "CallExpression", - "start": 23575, - "end": 23619, + "start": 23564, + "end": 23608, "loc": { "start": { "line": 569, @@ -122588,8 +122588,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23575, - "end": 23583, + "start": 23564, + "end": 23572, "loc": { "start": { "line": 569, @@ -122602,8 +122602,8 @@ }, "object": { "type": "Identifier", - "start": 23575, - "end": 23578, + "start": 23564, + "end": 23567, "loc": { "start": { "line": 569, @@ -122619,8 +122619,8 @@ }, "property": { "type": "Identifier", - "start": 23579, - "end": 23583, + "start": 23568, + "end": 23572, "loc": { "start": { "line": 569, @@ -122639,8 +122639,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23584, - "end": 23618, + "start": 23573, + "end": 23607, "loc": { "start": { "line": 569, @@ -122662,8 +122662,8 @@ }, { "type": "IfStatement", - "start": 23630, - "end": 23731, + "start": 23619, + "end": 23720, "loc": { "start": { "line": 571, @@ -122676,8 +122676,8 @@ }, "test": { "type": "BinaryExpression", - "start": 23634, - "end": 23666, + "start": 23623, + "end": 23655, "loc": { "start": { "line": 571, @@ -122690,8 +122690,8 @@ }, "left": { "type": "MemberExpression", - "start": 23634, - "end": 23662, + "start": 23623, + "end": 23651, "loc": { "start": { "line": 571, @@ -122704,8 +122704,8 @@ }, "object": { "type": "MemberExpression", - "start": 23634, - "end": 23655, + "start": 23623, + "end": 23644, "loc": { "start": { "line": 571, @@ -122718,8 +122718,8 @@ }, "object": { "type": "Identifier", - "start": 23634, - "end": 23645, + "start": 23623, + "end": 23634, "loc": { "start": { "line": 571, @@ -122735,8 +122735,8 @@ }, "property": { "type": "Identifier", - "start": 23646, - "end": 23655, + "start": 23635, + "end": 23644, "loc": { "start": { "line": 571, @@ -122754,8 +122754,8 @@ }, "property": { "type": "Identifier", - "start": 23656, - "end": 23662, + "start": 23645, + "end": 23651, "loc": { "start": { "line": 571, @@ -122774,8 +122774,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 23665, - "end": 23666, + "start": 23654, + "end": 23655, "loc": { "start": { "line": 571, @@ -122795,8 +122795,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 23668, - "end": 23731, + "start": 23657, + "end": 23720, "loc": { "start": { "line": 571, @@ -122810,8 +122810,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 23682, - "end": 23721, + "start": 23671, + "end": 23710, "loc": { "start": { "line": 572, @@ -122824,8 +122824,8 @@ }, "expression": { "type": "CallExpression", - "start": 23682, - "end": 23720, + "start": 23671, + "end": 23709, "loc": { "start": { "line": 572, @@ -122838,8 +122838,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23682, - "end": 23690, + "start": 23671, + "end": 23679, "loc": { "start": { "line": 572, @@ -122852,8 +122852,8 @@ }, "object": { "type": "Identifier", - "start": 23682, - "end": 23685, + "start": 23671, + "end": 23674, "loc": { "start": { "line": 572, @@ -122869,8 +122869,8 @@ }, "property": { "type": "Identifier", - "start": 23686, - "end": 23690, + "start": 23675, + "end": 23679, "loc": { "start": { "line": 572, @@ -122889,8 +122889,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23691, - "end": 23719, + "start": 23680, + "end": 23708, "loc": { "start": { "line": 572, @@ -122917,8 +122917,8 @@ }, { "type": "ExpressionStatement", - "start": 23741, - "end": 23778, + "start": 23730, + "end": 23767, "loc": { "start": { "line": 575, @@ -122931,8 +122931,8 @@ }, "expression": { "type": "CallExpression", - "start": 23741, - "end": 23777, + "start": 23730, + "end": 23766, "loc": { "start": { "line": 575, @@ -122945,8 +122945,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23741, - "end": 23749, + "start": 23730, + "end": 23738, "loc": { "start": { "line": 575, @@ -122959,8 +122959,8 @@ }, "object": { "type": "Identifier", - "start": 23741, - "end": 23744, + "start": 23730, + "end": 23733, "loc": { "start": { "line": 575, @@ -122976,8 +122976,8 @@ }, "property": { "type": "Identifier", - "start": 23745, - "end": 23749, + "start": 23734, + "end": 23738, "loc": { "start": { "line": 575, @@ -122996,8 +122996,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23750, - "end": 23776, + "start": 23739, + "end": 23765, "loc": { "start": { "line": 575, @@ -123020,8 +123020,8 @@ { "type": "CommentLine", "value": " CONSTANT DEFINITIONS", - "start": 23788, - "end": 23811, + "start": 23777, + "end": 23800, "loc": { "start": { "line": 577, @@ -123037,8 +123037,8 @@ }, { "type": "ExpressionStatement", - "start": 23821, - "end": 23858, + "start": 23810, + "end": 23847, "loc": { "start": { "line": 579, @@ -123051,8 +123051,8 @@ }, "expression": { "type": "CallExpression", - "start": 23821, - "end": 23857, + "start": 23810, + "end": 23846, "loc": { "start": { "line": 579, @@ -123065,8 +123065,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23821, - "end": 23829, + "start": 23810, + "end": 23818, "loc": { "start": { "line": 579, @@ -123079,8 +123079,8 @@ }, "object": { "type": "Identifier", - "start": 23821, - "end": 23824, + "start": 23810, + "end": 23813, "loc": { "start": { "line": 579, @@ -123097,8 +123097,8 @@ }, "property": { "type": "Identifier", - "start": 23825, - "end": 23829, + "start": 23814, + "end": 23818, "loc": { "start": { "line": 579, @@ -123118,8 +123118,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23830, - "end": 23856, + "start": 23819, + "end": 23845, "loc": { "start": { "line": 579, @@ -123143,8 +123143,8 @@ { "type": "CommentLine", "value": " CONSTANT DEFINITIONS", - "start": 23788, - "end": 23811, + "start": 23777, + "end": 23800, "loc": { "start": { "line": 577, @@ -123160,8 +123160,8 @@ }, { "type": "ExpressionStatement", - "start": 23867, - "end": 23915, + "start": 23856, + "end": 23904, "loc": { "start": { "line": 580, @@ -123174,8 +123174,8 @@ }, "expression": { "type": "CallExpression", - "start": 23867, - "end": 23914, + "start": 23856, + "end": 23903, "loc": { "start": { "line": 580, @@ -123188,8 +123188,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23867, - "end": 23875, + "start": 23856, + "end": 23864, "loc": { "start": { "line": 580, @@ -123202,8 +123202,8 @@ }, "object": { "type": "Identifier", - "start": 23867, - "end": 23870, + "start": 23856, + "end": 23859, "loc": { "start": { "line": 580, @@ -123219,8 +123219,8 @@ }, "property": { "type": "Identifier", - "start": 23871, - "end": 23875, + "start": 23860, + "end": 23864, "loc": { "start": { "line": 580, @@ -123239,8 +123239,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23876, - "end": 23913, + "start": 23865, + "end": 23902, "loc": { "start": { "line": 580, @@ -123262,8 +123262,8 @@ }, { "type": "ExpressionStatement", - "start": 23924, - "end": 23970, + "start": 23913, + "end": 23959, "loc": { "start": { "line": 581, @@ -123276,8 +123276,8 @@ }, "expression": { "type": "CallExpression", - "start": 23924, - "end": 23969, + "start": 23913, + "end": 23958, "loc": { "start": { "line": 581, @@ -123290,8 +123290,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23924, - "end": 23932, + "start": 23913, + "end": 23921, "loc": { "start": { "line": 581, @@ -123304,8 +123304,8 @@ }, "object": { "type": "Identifier", - "start": 23924, - "end": 23927, + "start": 23913, + "end": 23916, "loc": { "start": { "line": 581, @@ -123321,8 +123321,8 @@ }, "property": { "type": "Identifier", - "start": 23928, - "end": 23932, + "start": 23917, + "end": 23921, "loc": { "start": { "line": 581, @@ -123341,8 +123341,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23933, - "end": 23968, + "start": 23922, + "end": 23957, "loc": { "start": { "line": 581, @@ -123364,8 +123364,8 @@ }, { "type": "ExpressionStatement", - "start": 23979, - "end": 24012, + "start": 23968, + "end": 24001, "loc": { "start": { "line": 582, @@ -123378,8 +123378,8 @@ }, "expression": { "type": "CallExpression", - "start": 23979, - "end": 24011, + "start": 23968, + "end": 24000, "loc": { "start": { "line": 582, @@ -123392,8 +123392,8 @@ }, "callee": { "type": "MemberExpression", - "start": 23979, - "end": 23987, + "start": 23968, + "end": 23976, "loc": { "start": { "line": 582, @@ -123406,8 +123406,8 @@ }, "object": { "type": "Identifier", - "start": 23979, - "end": 23982, + "start": 23968, + "end": 23971, "loc": { "start": { "line": 582, @@ -123423,8 +123423,8 @@ }, "property": { "type": "Identifier", - "start": 23983, - "end": 23987, + "start": 23972, + "end": 23976, "loc": { "start": { "line": 582, @@ -123443,8 +123443,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 23988, - "end": 24010, + "start": 23977, + "end": 23999, "loc": { "start": { "line": 582, @@ -123466,8 +123466,8 @@ }, { "type": "ExpressionStatement", - "start": 24022, - "end": 24075, + "start": 24011, + "end": 24064, "loc": { "start": { "line": 584, @@ -123480,8 +123480,8 @@ }, "expression": { "type": "CallExpression", - "start": 24022, - "end": 24074, + "start": 24011, + "end": 24063, "loc": { "start": { "line": 584, @@ -123494,8 +123494,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24022, - "end": 24030, + "start": 24011, + "end": 24019, "loc": { "start": { "line": 584, @@ -123508,8 +123508,8 @@ }, "object": { "type": "Identifier", - "start": 24022, - "end": 24025, + "start": 24011, + "end": 24014, "loc": { "start": { "line": 584, @@ -123525,8 +123525,8 @@ }, "property": { "type": "Identifier", - "start": 24026, - "end": 24030, + "start": 24015, + "end": 24019, "loc": { "start": { "line": 584, @@ -123545,8 +123545,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24031, - "end": 24073, + "start": 24020, + "end": 24062, "loc": { "start": { "line": 584, @@ -123569,8 +123569,8 @@ { "type": "CommentLine", "value": " UTILITY DEFINITIONS", - "start": 24085, - "end": 24107, + "start": 24074, + "end": 24096, "loc": { "start": { "line": 586, @@ -123586,8 +123586,8 @@ }, { "type": "ExpressionStatement", - "start": 24117, - "end": 24191, + "start": 24106, + "end": 24180, "loc": { "start": { "line": 588, @@ -123600,8 +123600,8 @@ }, "expression": { "type": "CallExpression", - "start": 24117, - "end": 24190, + "start": 24106, + "end": 24179, "loc": { "start": { "line": 588, @@ -123614,8 +123614,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24117, - "end": 24125, + "start": 24106, + "end": 24114, "loc": { "start": { "line": 588, @@ -123628,8 +123628,8 @@ }, "object": { "type": "Identifier", - "start": 24117, - "end": 24120, + "start": 24106, + "end": 24109, "loc": { "start": { "line": 588, @@ -123646,8 +123646,8 @@ }, "property": { "type": "Identifier", - "start": 24121, - "end": 24125, + "start": 24110, + "end": 24114, "loc": { "start": { "line": 588, @@ -123667,8 +123667,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24126, - "end": 24189, + "start": 24115, + "end": 24178, "loc": { "start": { "line": 588, @@ -123692,8 +123692,8 @@ { "type": "CommentLine", "value": " UTILITY DEFINITIONS", - "start": 24085, - "end": 24107, + "start": 24074, + "end": 24096, "loc": { "start": { "line": 586, @@ -123709,8 +123709,8 @@ }, { "type": "ExpressionStatement", - "start": 24200, - "end": 24270, + "start": 24189, + "end": 24259, "loc": { "start": { "line": 589, @@ -123723,8 +123723,8 @@ }, "expression": { "type": "CallExpression", - "start": 24200, - "end": 24269, + "start": 24189, + "end": 24258, "loc": { "start": { "line": 589, @@ -123737,8 +123737,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24200, - "end": 24208, + "start": 24189, + "end": 24197, "loc": { "start": { "line": 589, @@ -123751,8 +123751,8 @@ }, "object": { "type": "Identifier", - "start": 24200, - "end": 24203, + "start": 24189, + "end": 24192, "loc": { "start": { "line": 589, @@ -123768,8 +123768,8 @@ }, "property": { "type": "Identifier", - "start": 24204, - "end": 24208, + "start": 24193, + "end": 24197, "loc": { "start": { "line": 589, @@ -123788,8 +123788,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24209, - "end": 24268, + "start": 24198, + "end": 24257, "loc": { "start": { "line": 589, @@ -123811,8 +123811,8 @@ }, { "type": "ExpressionStatement", - "start": 24279, - "end": 24293, + "start": 24268, + "end": 24282, "loc": { "start": { "line": 590, @@ -123825,8 +123825,8 @@ }, "expression": { "type": "CallExpression", - "start": 24279, - "end": 24292, + "start": 24268, + "end": 24281, "loc": { "start": { "line": 590, @@ -123839,8 +123839,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24279, - "end": 24287, + "start": 24268, + "end": 24276, "loc": { "start": { "line": 590, @@ -123853,8 +123853,8 @@ }, "object": { "type": "Identifier", - "start": 24279, - "end": 24282, + "start": 24268, + "end": 24271, "loc": { "start": { "line": 590, @@ -123870,8 +123870,8 @@ }, "property": { "type": "Identifier", - "start": 24283, - "end": 24287, + "start": 24272, + "end": 24276, "loc": { "start": { "line": 590, @@ -123890,8 +123890,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24288, - "end": 24291, + "start": 24277, + "end": 24280, "loc": { "start": { "line": 590, @@ -123914,8 +123914,8 @@ { "type": "CommentLine", "value": " STRUCTURES", - "start": 24303, - "end": 24316, + "start": 24292, + "end": 24305, "loc": { "start": { "line": 592, @@ -123931,8 +123931,8 @@ }, { "type": "ExpressionStatement", - "start": 24326, - "end": 24361, + "start": 24315, + "end": 24350, "loc": { "start": { "line": 594, @@ -123945,8 +123945,8 @@ }, "expression": { "type": "CallExpression", - "start": 24326, - "end": 24360, + "start": 24315, + "end": 24349, "loc": { "start": { "line": 594, @@ -123959,8 +123959,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24326, - "end": 24334, + "start": 24315, + "end": 24323, "loc": { "start": { "line": 594, @@ -123973,8 +123973,8 @@ }, "object": { "type": "Identifier", - "start": 24326, - "end": 24329, + "start": 24315, + "end": 24318, "loc": { "start": { "line": 594, @@ -123991,8 +123991,8 @@ }, "property": { "type": "Identifier", - "start": 24330, - "end": 24334, + "start": 24319, + "end": 24323, "loc": { "start": { "line": 594, @@ -124012,8 +124012,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24335, - "end": 24359, + "start": 24324, + "end": 24348, "loc": { "start": { "line": 594, @@ -124037,8 +124037,8 @@ { "type": "CommentLine", "value": " STRUCTURES", - "start": 24303, - "end": 24316, + "start": 24292, + "end": 24305, "loc": { "start": { "line": 592, @@ -124054,8 +124054,8 @@ }, { "type": "ExpressionStatement", - "start": 24370, - "end": 24397, + "start": 24359, + "end": 24386, "loc": { "start": { "line": 595, @@ -124068,8 +124068,8 @@ }, "expression": { "type": "CallExpression", - "start": 24370, - "end": 24396, + "start": 24359, + "end": 24385, "loc": { "start": { "line": 595, @@ -124082,8 +124082,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24370, - "end": 24378, + "start": 24359, + "end": 24367, "loc": { "start": { "line": 595, @@ -124096,8 +124096,8 @@ }, "object": { "type": "Identifier", - "start": 24370, - "end": 24373, + "start": 24359, + "end": 24362, "loc": { "start": { "line": 595, @@ -124113,8 +124113,8 @@ }, "property": { "type": "Identifier", - "start": 24374, - "end": 24378, + "start": 24363, + "end": 24367, "loc": { "start": { "line": 595, @@ -124133,8 +124133,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24379, - "end": 24395, + "start": 24368, + "end": 24384, "loc": { "start": { "line": 595, @@ -124156,8 +124156,8 @@ }, { "type": "ExpressionStatement", - "start": 24406, - "end": 24437, + "start": 24395, + "end": 24426, "loc": { "start": { "line": 596, @@ -124170,8 +124170,8 @@ }, "expression": { "type": "CallExpression", - "start": 24406, - "end": 24436, + "start": 24395, + "end": 24425, "loc": { "start": { "line": 596, @@ -124184,8 +124184,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24406, - "end": 24414, + "start": 24395, + "end": 24403, "loc": { "start": { "line": 596, @@ -124198,8 +124198,8 @@ }, "object": { "type": "Identifier", - "start": 24406, - "end": 24409, + "start": 24395, + "end": 24398, "loc": { "start": { "line": 596, @@ -124215,8 +124215,8 @@ }, "property": { "type": "Identifier", - "start": 24410, - "end": 24414, + "start": 24399, + "end": 24403, "loc": { "start": { "line": 596, @@ -124235,8 +124235,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24415, - "end": 24435, + "start": 24404, + "end": 24424, "loc": { "start": { "line": 596, @@ -124258,8 +124258,8 @@ }, { "type": "ExpressionStatement", - "start": 24446, - "end": 24461, + "start": 24435, + "end": 24450, "loc": { "start": { "line": 597, @@ -124272,8 +124272,8 @@ }, "expression": { "type": "CallExpression", - "start": 24446, - "end": 24460, + "start": 24435, + "end": 24449, "loc": { "start": { "line": 597, @@ -124286,8 +124286,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24446, - "end": 24454, + "start": 24435, + "end": 24443, "loc": { "start": { "line": 597, @@ -124300,8 +124300,8 @@ }, "object": { "type": "Identifier", - "start": 24446, - "end": 24449, + "start": 24435, + "end": 24438, "loc": { "start": { "line": 597, @@ -124317,8 +124317,8 @@ }, "property": { "type": "Identifier", - "start": 24450, - "end": 24454, + "start": 24439, + "end": 24443, "loc": { "start": { "line": 597, @@ -124337,8 +124337,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24455, - "end": 24459, + "start": 24444, + "end": 24448, "loc": { "start": { "line": 597, @@ -124360,8 +124360,8 @@ }, { "type": "ExpressionStatement", - "start": 24471, - "end": 24507, + "start": 24460, + "end": 24496, "loc": { "start": { "line": 599, @@ -124374,8 +124374,8 @@ }, "expression": { "type": "CallExpression", - "start": 24471, - "end": 24506, + "start": 24460, + "end": 24495, "loc": { "start": { "line": 599, @@ -124388,8 +124388,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24471, - "end": 24479, + "start": 24460, + "end": 24468, "loc": { "start": { "line": 599, @@ -124402,8 +124402,8 @@ }, "object": { "type": "Identifier", - "start": 24471, - "end": 24474, + "start": 24460, + "end": 24463, "loc": { "start": { "line": 599, @@ -124419,8 +124419,8 @@ }, "property": { "type": "Identifier", - "start": 24475, - "end": 24479, + "start": 24464, + "end": 24468, "loc": { "start": { "line": 599, @@ -124439,8 +124439,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24480, - "end": 24505, + "start": 24469, + "end": 24494, "loc": { "start": { "line": 599, @@ -124462,8 +124462,8 @@ }, { "type": "ExpressionStatement", - "start": 24516, - "end": 24545, + "start": 24505, + "end": 24534, "loc": { "start": { "line": 600, @@ -124476,8 +124476,8 @@ }, "expression": { "type": "CallExpression", - "start": 24516, - "end": 24544, + "start": 24505, + "end": 24533, "loc": { "start": { "line": 600, @@ -124490,8 +124490,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24516, - "end": 24524, + "start": 24505, + "end": 24513, "loc": { "start": { "line": 600, @@ -124504,8 +124504,8 @@ }, "object": { "type": "Identifier", - "start": 24516, - "end": 24519, + "start": 24505, + "end": 24508, "loc": { "start": { "line": 600, @@ -124521,8 +124521,8 @@ }, "property": { "type": "Identifier", - "start": 24520, - "end": 24524, + "start": 24509, + "end": 24513, "loc": { "start": { "line": 600, @@ -124541,8 +124541,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24525, - "end": 24543, + "start": 24514, + "end": 24532, "loc": { "start": { "line": 600, @@ -124564,8 +124564,8 @@ }, { "type": "ExpressionStatement", - "start": 24554, - "end": 24584, + "start": 24543, + "end": 24573, "loc": { "start": { "line": 601, @@ -124578,8 +124578,8 @@ }, "expression": { "type": "CallExpression", - "start": 24554, - "end": 24583, + "start": 24543, + "end": 24572, "loc": { "start": { "line": 601, @@ -124592,8 +124592,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24554, - "end": 24562, + "start": 24543, + "end": 24551, "loc": { "start": { "line": 601, @@ -124606,8 +124606,8 @@ }, "object": { "type": "Identifier", - "start": 24554, - "end": 24557, + "start": 24543, + "end": 24546, "loc": { "start": { "line": 601, @@ -124623,8 +124623,8 @@ }, "property": { "type": "Identifier", - "start": 24558, - "end": 24562, + "start": 24547, + "end": 24551, "loc": { "start": { "line": 601, @@ -124643,8 +124643,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24563, - "end": 24582, + "start": 24552, + "end": 24571, "loc": { "start": { "line": 601, @@ -124666,8 +124666,8 @@ }, { "type": "ExpressionStatement", - "start": 24593, - "end": 24608, + "start": 24582, + "end": 24597, "loc": { "start": { "line": 602, @@ -124680,8 +124680,8 @@ }, "expression": { "type": "CallExpression", - "start": 24593, - "end": 24607, + "start": 24582, + "end": 24596, "loc": { "start": { "line": 602, @@ -124694,8 +124694,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24593, - "end": 24601, + "start": 24582, + "end": 24590, "loc": { "start": { "line": 602, @@ -124708,8 +124708,8 @@ }, "object": { "type": "Identifier", - "start": 24593, - "end": 24596, + "start": 24582, + "end": 24585, "loc": { "start": { "line": 602, @@ -124725,8 +124725,8 @@ }, "property": { "type": "Identifier", - "start": 24597, - "end": 24601, + "start": 24586, + "end": 24590, "loc": { "start": { "line": 602, @@ -124745,8 +124745,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24602, - "end": 24606, + "start": 24591, + "end": 24595, "loc": { "start": { "line": 602, @@ -124768,8 +124768,8 @@ }, { "type": "ExpressionStatement", - "start": 24618, - "end": 24648, + "start": 24607, + "end": 24637, "loc": { "start": { "line": 604, @@ -124782,8 +124782,8 @@ }, "expression": { "type": "CallExpression", - "start": 24618, - "end": 24647, + "start": 24607, + "end": 24636, "loc": { "start": { "line": 604, @@ -124796,8 +124796,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24618, - "end": 24626, + "start": 24607, + "end": 24615, "loc": { "start": { "line": 604, @@ -124810,8 +124810,8 @@ }, "object": { "type": "Identifier", - "start": 24618, - "end": 24621, + "start": 24607, + "end": 24610, "loc": { "start": { "line": 604, @@ -124827,8 +124827,8 @@ }, "property": { "type": "Identifier", - "start": 24622, - "end": 24626, + "start": 24611, + "end": 24615, "loc": { "start": { "line": 604, @@ -124847,8 +124847,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24627, - "end": 24646, + "start": 24616, + "end": 24635, "loc": { "start": { "line": 604, @@ -124870,8 +124870,8 @@ }, { "type": "ExpressionStatement", - "start": 24657, - "end": 24687, + "start": 24646, + "end": 24676, "loc": { "start": { "line": 605, @@ -124884,8 +124884,8 @@ }, "expression": { "type": "CallExpression", - "start": 24657, - "end": 24686, + "start": 24646, + "end": 24675, "loc": { "start": { "line": 605, @@ -124898,8 +124898,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24657, - "end": 24665, + "start": 24646, + "end": 24654, "loc": { "start": { "line": 605, @@ -124912,8 +124912,8 @@ }, "object": { "type": "Identifier", - "start": 24657, - "end": 24660, + "start": 24646, + "end": 24649, "loc": { "start": { "line": 605, @@ -124929,8 +124929,8 @@ }, "property": { "type": "Identifier", - "start": 24661, - "end": 24665, + "start": 24650, + "end": 24654, "loc": { "start": { "line": 605, @@ -124949,8 +124949,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24666, - "end": 24685, + "start": 24655, + "end": 24674, "loc": { "start": { "line": 605, @@ -124972,8 +124972,8 @@ }, { "type": "ExpressionStatement", - "start": 24696, - "end": 24728, + "start": 24685, + "end": 24717, "loc": { "start": { "line": 606, @@ -124986,8 +124986,8 @@ }, "expression": { "type": "CallExpression", - "start": 24696, - "end": 24727, + "start": 24685, + "end": 24716, "loc": { "start": { "line": 606, @@ -125000,8 +125000,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24696, - "end": 24704, + "start": 24685, + "end": 24693, "loc": { "start": { "line": 606, @@ -125014,8 +125014,8 @@ }, "object": { "type": "Identifier", - "start": 24696, - "end": 24699, + "start": 24685, + "end": 24688, "loc": { "start": { "line": 606, @@ -125031,8 +125031,8 @@ }, "property": { "type": "Identifier", - "start": 24700, - "end": 24704, + "start": 24689, + "end": 24693, "loc": { "start": { "line": 606, @@ -125051,8 +125051,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24705, - "end": 24726, + "start": 24694, + "end": 24715, "loc": { "start": { "line": 606, @@ -125074,8 +125074,8 @@ }, { "type": "ExpressionStatement", - "start": 24737, - "end": 24770, + "start": 24726, + "end": 24759, "loc": { "start": { "line": 607, @@ -125088,8 +125088,8 @@ }, "expression": { "type": "CallExpression", - "start": 24737, - "end": 24769, + "start": 24726, + "end": 24758, "loc": { "start": { "line": 607, @@ -125102,8 +125102,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24737, - "end": 24745, + "start": 24726, + "end": 24734, "loc": { "start": { "line": 607, @@ -125116,8 +125116,8 @@ }, "object": { "type": "Identifier", - "start": 24737, - "end": 24740, + "start": 24726, + "end": 24729, "loc": { "start": { "line": 607, @@ -125133,8 +125133,8 @@ }, "property": { "type": "Identifier", - "start": 24741, - "end": 24745, + "start": 24730, + "end": 24734, "loc": { "start": { "line": 607, @@ -125153,8 +125153,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24746, - "end": 24768, + "start": 24735, + "end": 24757, "loc": { "start": { "line": 607, @@ -125176,8 +125176,8 @@ }, { "type": "ExpressionStatement", - "start": 24779, - "end": 24811, + "start": 24768, + "end": 24800, "loc": { "start": { "line": 608, @@ -125190,8 +125190,8 @@ }, "expression": { "type": "CallExpression", - "start": 24779, - "end": 24810, + "start": 24768, + "end": 24799, "loc": { "start": { "line": 608, @@ -125204,8 +125204,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24779, - "end": 24787, + "start": 24768, + "end": 24776, "loc": { "start": { "line": 608, @@ -125218,8 +125218,8 @@ }, "object": { "type": "Identifier", - "start": 24779, - "end": 24782, + "start": 24768, + "end": 24771, "loc": { "start": { "line": 608, @@ -125235,8 +125235,8 @@ }, "property": { "type": "Identifier", - "start": 24783, - "end": 24787, + "start": 24772, + "end": 24776, "loc": { "start": { "line": 608, @@ -125255,8 +125255,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24788, - "end": 24809, + "start": 24777, + "end": 24798, "loc": { "start": { "line": 608, @@ -125278,8 +125278,8 @@ }, { "type": "ExpressionStatement", - "start": 24820, - "end": 24835, + "start": 24809, + "end": 24824, "loc": { "start": { "line": 609, @@ -125292,8 +125292,8 @@ }, "expression": { "type": "CallExpression", - "start": 24820, - "end": 24834, + "start": 24809, + "end": 24823, "loc": { "start": { "line": 609, @@ -125306,8 +125306,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24820, - "end": 24828, + "start": 24809, + "end": 24817, "loc": { "start": { "line": 609, @@ -125320,8 +125320,8 @@ }, "object": { "type": "Identifier", - "start": 24820, - "end": 24823, + "start": 24809, + "end": 24812, "loc": { "start": { "line": 609, @@ -125337,8 +125337,8 @@ }, "property": { "type": "Identifier", - "start": 24824, - "end": 24828, + "start": 24813, + "end": 24817, "loc": { "start": { "line": 609, @@ -125357,8 +125357,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24829, - "end": 24833, + "start": 24818, + "end": 24822, "loc": { "start": { "line": 609, @@ -125380,8 +125380,8 @@ }, { "type": "ExpressionStatement", - "start": 24845, - "end": 24875, + "start": 24834, + "end": 24864, "loc": { "start": { "line": 611, @@ -125394,8 +125394,8 @@ }, "expression": { "type": "CallExpression", - "start": 24845, - "end": 24874, + "start": 24834, + "end": 24863, "loc": { "start": { "line": 611, @@ -125408,8 +125408,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24845, - "end": 24853, + "start": 24834, + "end": 24842, "loc": { "start": { "line": 611, @@ -125422,8 +125422,8 @@ }, "object": { "type": "Identifier", - "start": 24845, - "end": 24848, + "start": 24834, + "end": 24837, "loc": { "start": { "line": 611, @@ -125439,8 +125439,8 @@ }, "property": { "type": "Identifier", - "start": 24849, - "end": 24853, + "start": 24838, + "end": 24842, "loc": { "start": { "line": 611, @@ -125459,8 +125459,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24854, - "end": 24873, + "start": 24843, + "end": 24862, "loc": { "start": { "line": 611, @@ -125482,8 +125482,8 @@ }, { "type": "ExpressionStatement", - "start": 24884, - "end": 24921, + "start": 24873, + "end": 24910, "loc": { "start": { "line": 612, @@ -125496,8 +125496,8 @@ }, "expression": { "type": "CallExpression", - "start": 24884, - "end": 24920, + "start": 24873, + "end": 24909, "loc": { "start": { "line": 612, @@ -125510,8 +125510,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24884, - "end": 24892, + "start": 24873, + "end": 24881, "loc": { "start": { "line": 612, @@ -125524,8 +125524,8 @@ }, "object": { "type": "Identifier", - "start": 24884, - "end": 24887, + "start": 24873, + "end": 24876, "loc": { "start": { "line": 612, @@ -125541,8 +125541,8 @@ }, "property": { "type": "Identifier", - "start": 24888, - "end": 24892, + "start": 24877, + "end": 24881, "loc": { "start": { "line": 612, @@ -125561,8 +125561,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24893, - "end": 24919, + "start": 24882, + "end": 24908, "loc": { "start": { "line": 612, @@ -125584,8 +125584,8 @@ }, { "type": "ExpressionStatement", - "start": 24930, - "end": 24972, + "start": 24919, + "end": 24961, "loc": { "start": { "line": 613, @@ -125598,8 +125598,8 @@ }, "expression": { "type": "CallExpression", - "start": 24930, - "end": 24971, + "start": 24919, + "end": 24960, "loc": { "start": { "line": 613, @@ -125612,8 +125612,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24930, - "end": 24938, + "start": 24919, + "end": 24927, "loc": { "start": { "line": 613, @@ -125626,8 +125626,8 @@ }, "object": { "type": "Identifier", - "start": 24930, - "end": 24933, + "start": 24919, + "end": 24922, "loc": { "start": { "line": 613, @@ -125643,8 +125643,8 @@ }, "property": { "type": "Identifier", - "start": 24934, - "end": 24938, + "start": 24923, + "end": 24927, "loc": { "start": { "line": 613, @@ -125663,8 +125663,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24939, - "end": 24970, + "start": 24928, + "end": 24959, "loc": { "start": { "line": 613, @@ -125686,8 +125686,8 @@ }, { "type": "ExpressionStatement", - "start": 24981, - "end": 25019, + "start": 24970, + "end": 25008, "loc": { "start": { "line": 614, @@ -125700,8 +125700,8 @@ }, "expression": { "type": "CallExpression", - "start": 24981, - "end": 25018, + "start": 24970, + "end": 25007, "loc": { "start": { "line": 614, @@ -125714,8 +125714,8 @@ }, "callee": { "type": "MemberExpression", - "start": 24981, - "end": 24989, + "start": 24970, + "end": 24978, "loc": { "start": { "line": 614, @@ -125728,8 +125728,8 @@ }, "object": { "type": "Identifier", - "start": 24981, - "end": 24984, + "start": 24970, + "end": 24973, "loc": { "start": { "line": 614, @@ -125745,8 +125745,8 @@ }, "property": { "type": "Identifier", - "start": 24985, - "end": 24989, + "start": 24974, + "end": 24978, "loc": { "start": { "line": 614, @@ -125765,8 +125765,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 24990, - "end": 25017, + "start": 24979, + "end": 25006, "loc": { "start": { "line": 614, @@ -125788,8 +125788,8 @@ }, { "type": "ExpressionStatement", - "start": 25028, - "end": 25058, + "start": 25017, + "end": 25047, "loc": { "start": { "line": 615, @@ -125802,8 +125802,8 @@ }, "expression": { "type": "CallExpression", - "start": 25028, - "end": 25057, + "start": 25017, + "end": 25046, "loc": { "start": { "line": 615, @@ -125816,8 +125816,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25028, - "end": 25036, + "start": 25017, + "end": 25025, "loc": { "start": { "line": 615, @@ -125830,8 +125830,8 @@ }, "object": { "type": "Identifier", - "start": 25028, - "end": 25031, + "start": 25017, + "end": 25020, "loc": { "start": { "line": 615, @@ -125847,8 +125847,8 @@ }, "property": { "type": "Identifier", - "start": 25032, - "end": 25036, + "start": 25021, + "end": 25025, "loc": { "start": { "line": 615, @@ -125867,8 +125867,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25037, - "end": 25056, + "start": 25026, + "end": 25045, "loc": { "start": { "line": 615, @@ -125891,8 +125891,8 @@ { "type": "CommentLine", "value": " Only used for Phong", - "start": 25059, - "end": 25081, + "start": 25048, + "end": 25070, "loc": { "start": { "line": 615, @@ -125908,8 +125908,8 @@ }, { "type": "ExpressionStatement", - "start": 25090, - "end": 25105, + "start": 25079, + "end": 25094, "loc": { "start": { "line": 616, @@ -125922,8 +125922,8 @@ }, "expression": { "type": "CallExpression", - "start": 25090, - "end": 25104, + "start": 25079, + "end": 25093, "loc": { "start": { "line": 616, @@ -125936,8 +125936,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25090, - "end": 25098, + "start": 25079, + "end": 25087, "loc": { "start": { "line": 616, @@ -125950,8 +125950,8 @@ }, "object": { "type": "Identifier", - "start": 25090, - "end": 25093, + "start": 25079, + "end": 25082, "loc": { "start": { "line": 616, @@ -125968,8 +125968,8 @@ }, "property": { "type": "Identifier", - "start": 25094, - "end": 25098, + "start": 25083, + "end": 25087, "loc": { "start": { "line": 616, @@ -125989,8 +125989,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25099, - "end": 25103, + "start": 25088, + "end": 25092, "loc": { "start": { "line": 616, @@ -126014,8 +126014,8 @@ { "type": "CommentLine", "value": " Only used for Phong", - "start": 25059, - "end": 25081, + "start": 25048, + "end": 25070, "loc": { "start": { "line": 615, @@ -126032,8 +126032,8 @@ { "type": "CommentLine", "value": " IRRADIANCE EVALUATION", - "start": 25115, - "end": 25139, + "start": 25104, + "end": 25128, "loc": { "start": { "line": 618, @@ -126049,8 +126049,8 @@ }, { "type": "ExpressionStatement", - "start": 25149, - "end": 25226, + "start": 25138, + "end": 25215, "loc": { "start": { "line": 620, @@ -126063,8 +126063,8 @@ }, "expression": { "type": "CallExpression", - "start": 25149, - "end": 25225, + "start": 25138, + "end": 25214, "loc": { "start": { "line": 620, @@ -126077,8 +126077,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25149, - "end": 25157, + "start": 25138, + "end": 25146, "loc": { "start": { "line": 620, @@ -126091,8 +126091,8 @@ }, "object": { "type": "Identifier", - "start": 25149, - "end": 25152, + "start": 25138, + "end": 25141, "loc": { "start": { "line": 620, @@ -126109,8 +126109,8 @@ }, "property": { "type": "Identifier", - "start": 25153, - "end": 25157, + "start": 25142, + "end": 25146, "loc": { "start": { "line": 620, @@ -126130,8 +126130,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25158, - "end": 25224, + "start": 25147, + "end": 25213, "loc": { "start": { "line": 620, @@ -126155,8 +126155,8 @@ { "type": "CommentLine", "value": " IRRADIANCE EVALUATION", - "start": 25115, - "end": 25139, + "start": 25104, + "end": 25128, "loc": { "start": { "line": 618, @@ -126172,8 +126172,8 @@ }, { "type": "ExpressionStatement", - "start": 25235, - "end": 25283, + "start": 25224, + "end": 25272, "loc": { "start": { "line": 621, @@ -126186,8 +126186,8 @@ }, "expression": { "type": "CallExpression", - "start": 25235, - "end": 25282, + "start": 25224, + "end": 25271, "loc": { "start": { "line": 621, @@ -126200,8 +126200,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25235, - "end": 25243, + "start": 25224, + "end": 25232, "loc": { "start": { "line": 621, @@ -126214,8 +126214,8 @@ }, "object": { "type": "Identifier", - "start": 25235, - "end": 25238, + "start": 25224, + "end": 25227, "loc": { "start": { "line": 621, @@ -126231,8 +126231,8 @@ }, "property": { "type": "Identifier", - "start": 25239, - "end": 25243, + "start": 25228, + "end": 25232, "loc": { "start": { "line": 621, @@ -126251,8 +126251,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25244, - "end": 25281, + "start": 25233, + "end": 25270, "loc": { "start": { "line": 621, @@ -126274,8 +126274,8 @@ }, { "type": "ExpressionStatement", - "start": 25292, - "end": 25337, + "start": 25281, + "end": 25326, "loc": { "start": { "line": 622, @@ -126288,8 +126288,8 @@ }, "expression": { "type": "CallExpression", - "start": 25292, - "end": 25336, + "start": 25281, + "end": 25325, "loc": { "start": { "line": 622, @@ -126302,8 +126302,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25292, - "end": 25300, + "start": 25281, + "end": 25289, "loc": { "start": { "line": 622, @@ -126316,8 +126316,8 @@ }, "object": { "type": "Identifier", - "start": 25292, - "end": 25295, + "start": 25281, + "end": 25284, "loc": { "start": { "line": 622, @@ -126333,8 +126333,8 @@ }, "property": { "type": "Identifier", - "start": 25296, - "end": 25300, + "start": 25285, + "end": 25289, "loc": { "start": { "line": 622, @@ -126353,8 +126353,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25301, - "end": 25335, + "start": 25290, + "end": 25324, "loc": { "start": { "line": 622, @@ -126376,8 +126376,8 @@ }, { "type": "ExpressionStatement", - "start": 25346, - "end": 25360, + "start": 25335, + "end": 25349, "loc": { "start": { "line": 623, @@ -126390,8 +126390,8 @@ }, "expression": { "type": "CallExpression", - "start": 25346, - "end": 25359, + "start": 25335, + "end": 25348, "loc": { "start": { "line": 623, @@ -126404,8 +126404,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25346, - "end": 25354, + "start": 25335, + "end": 25343, "loc": { "start": { "line": 623, @@ -126418,8 +126418,8 @@ }, "object": { "type": "Identifier", - "start": 25346, - "end": 25349, + "start": 25335, + "end": 25338, "loc": { "start": { "line": 623, @@ -126435,8 +126435,8 @@ }, "property": { "type": "Identifier", - "start": 25350, - "end": 25354, + "start": 25339, + "end": 25343, "loc": { "start": { "line": 623, @@ -126455,8 +126455,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25355, - "end": 25358, + "start": 25344, + "end": 25347, "loc": { "start": { "line": 623, @@ -126478,8 +126478,8 @@ }, { "type": "ExpressionStatement", - "start": 25370, - "end": 25475, + "start": 25359, + "end": 25464, "loc": { "start": { "line": 625, @@ -126492,8 +126492,8 @@ }, "expression": { "type": "CallExpression", - "start": 25370, - "end": 25474, + "start": 25359, + "end": 25463, "loc": { "start": { "line": 625, @@ -126506,8 +126506,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25370, - "end": 25378, + "start": 25359, + "end": 25367, "loc": { "start": { "line": 625, @@ -126520,8 +126520,8 @@ }, "object": { "type": "Identifier", - "start": 25370, - "end": 25373, + "start": 25359, + "end": 25362, "loc": { "start": { "line": 625, @@ -126537,8 +126537,8 @@ }, "property": { "type": "Identifier", - "start": 25374, - "end": 25378, + "start": 25363, + "end": 25367, "loc": { "start": { "line": 625, @@ -126557,8 +126557,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25379, - "end": 25473, + "start": 25368, + "end": 25462, "loc": { "start": { "line": 625, @@ -126580,8 +126580,8 @@ }, { "type": "ExpressionStatement", - "start": 25484, - "end": 25547, + "start": 25473, + "end": 25536, "loc": { "start": { "line": 626, @@ -126594,8 +126594,8 @@ }, "expression": { "type": "CallExpression", - "start": 25484, - "end": 25546, + "start": 25473, + "end": 25535, "loc": { "start": { "line": 626, @@ -126608,8 +126608,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25484, - "end": 25492, + "start": 25473, + "end": 25481, "loc": { "start": { "line": 626, @@ -126622,8 +126622,8 @@ }, "object": { "type": "Identifier", - "start": 25484, - "end": 25487, + "start": 25473, + "end": 25476, "loc": { "start": { "line": 626, @@ -126639,8 +126639,8 @@ }, "property": { "type": "Identifier", - "start": 25488, - "end": 25492, + "start": 25477, + "end": 25481, "loc": { "start": { "line": 626, @@ -126659,8 +126659,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25493, - "end": 25545, + "start": 25482, + "end": 25534, "loc": { "start": { "line": 626, @@ -126682,8 +126682,8 @@ }, { "type": "ExpressionStatement", - "start": 25556, - "end": 25698, + "start": 25545, + "end": 25687, "loc": { "start": { "line": 627, @@ -126696,8 +126696,8 @@ }, "expression": { "type": "CallExpression", - "start": 25556, - "end": 25697, + "start": 25545, + "end": 25686, "loc": { "start": { "line": 627, @@ -126710,8 +126710,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25556, - "end": 25564, + "start": 25545, + "end": 25553, "loc": { "start": { "line": 627, @@ -126724,8 +126724,8 @@ }, "object": { "type": "Identifier", - "start": 25556, - "end": 25559, + "start": 25545, + "end": 25548, "loc": { "start": { "line": 627, @@ -126741,8 +126741,8 @@ }, "property": { "type": "Identifier", - "start": 25560, - "end": 25564, + "start": 25549, + "end": 25553, "loc": { "start": { "line": 627, @@ -126761,8 +126761,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25565, - "end": 25696, + "start": 25554, + "end": 25685, "loc": { "start": { "line": 627, @@ -126784,8 +126784,8 @@ }, { "type": "ExpressionStatement", - "start": 25707, - "end": 25779, + "start": 25696, + "end": 25768, "loc": { "start": { "line": 628, @@ -126798,8 +126798,8 @@ }, "expression": { "type": "CallExpression", - "start": 25707, - "end": 25778, + "start": 25696, + "end": 25767, "loc": { "start": { "line": 628, @@ -126812,8 +126812,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25707, - "end": 25715, + "start": 25696, + "end": 25704, "loc": { "start": { "line": 628, @@ -126826,8 +126826,8 @@ }, "object": { "type": "Identifier", - "start": 25707, - "end": 25710, + "start": 25696, + "end": 25699, "loc": { "start": { "line": 628, @@ -126843,8 +126843,8 @@ }, "property": { "type": "Identifier", - "start": 25711, - "end": 25715, + "start": 25700, + "end": 25704, "loc": { "start": { "line": 628, @@ -126863,8 +126863,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25716, - "end": 25777, + "start": 25705, + "end": 25766, "loc": { "start": { "line": 628, @@ -126886,8 +126886,8 @@ }, { "type": "ExpressionStatement", - "start": 25788, - "end": 25802, + "start": 25777, + "end": 25791, "loc": { "start": { "line": 629, @@ -126900,8 +126900,8 @@ }, "expression": { "type": "CallExpression", - "start": 25788, - "end": 25801, + "start": 25777, + "end": 25790, "loc": { "start": { "line": 629, @@ -126914,8 +126914,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25788, - "end": 25796, + "start": 25777, + "end": 25785, "loc": { "start": { "line": 629, @@ -126928,8 +126928,8 @@ }, "object": { "type": "Identifier", - "start": 25788, - "end": 25791, + "start": 25777, + "end": 25780, "loc": { "start": { "line": 629, @@ -126945,8 +126945,8 @@ }, "property": { "type": "Identifier", - "start": 25792, - "end": 25796, + "start": 25781, + "end": 25785, "loc": { "start": { "line": 629, @@ -126965,8 +126965,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25797, - "end": 25800, + "start": 25786, + "end": 25789, "loc": { "start": { "line": 629, @@ -126988,8 +126988,8 @@ }, { "type": "IfStatement", - "start": 25812, - "end": 26408, + "start": 25801, + "end": 26397, "loc": { "start": { "line": 631, @@ -127002,8 +127002,8 @@ }, "test": { "type": "BinaryExpression", - "start": 25816, - "end": 25853, + "start": 25805, + "end": 25842, "loc": { "start": { "line": 631, @@ -127016,8 +127016,8 @@ }, "left": { "type": "MemberExpression", - "start": 25816, - "end": 25849, + "start": 25805, + "end": 25838, "loc": { "start": { "line": 631, @@ -127030,8 +127030,8 @@ }, "object": { "type": "MemberExpression", - "start": 25816, - "end": 25842, + "start": 25805, + "end": 25831, "loc": { "start": { "line": 631, @@ -127044,8 +127044,8 @@ }, "object": { "type": "Identifier", - "start": 25816, - "end": 25827, + "start": 25805, + "end": 25816, "loc": { "start": { "line": 631, @@ -127061,8 +127061,8 @@ }, "property": { "type": "Identifier", - "start": 25828, - "end": 25842, + "start": 25817, + "end": 25831, "loc": { "start": { "line": 631, @@ -127080,8 +127080,8 @@ }, "property": { "type": "Identifier", - "start": 25843, - "end": 25849, + "start": 25832, + "end": 25838, "loc": { "start": { "line": 631, @@ -127100,8 +127100,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 25852, - "end": 25853, + "start": 25841, + "end": 25842, "loc": { "start": { "line": 631, @@ -127121,8 +127121,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 25855, - "end": 26408, + "start": 25844, + "end": 26397, "loc": { "start": { "line": 631, @@ -127136,8 +127136,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 25869, - "end": 26009, + "start": 25858, + "end": 25998, "loc": { "start": { "line": 632, @@ -127150,8 +127150,8 @@ }, "expression": { "type": "CallExpression", - "start": 25869, - "end": 26008, + "start": 25858, + "end": 25997, "loc": { "start": { "line": 632, @@ -127164,8 +127164,8 @@ }, "callee": { "type": "MemberExpression", - "start": 25869, - "end": 25877, + "start": 25858, + "end": 25866, "loc": { "start": { "line": 632, @@ -127178,8 +127178,8 @@ }, "object": { "type": "Identifier", - "start": 25869, - "end": 25872, + "start": 25858, + "end": 25861, "loc": { "start": { "line": 632, @@ -127195,8 +127195,8 @@ }, "property": { "type": "Identifier", - "start": 25873, - "end": 25877, + "start": 25862, + "end": 25866, "loc": { "start": { "line": 632, @@ -127215,8 +127215,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 25878, - "end": 26007, + "start": 25867, + "end": 25996, "loc": { "start": { "line": 632, @@ -127238,8 +127238,8 @@ }, { "type": "ExpressionStatement", - "start": 26022, - "end": 26118, + "start": 26011, + "end": 26107, "loc": { "start": { "line": 633, @@ -127252,8 +127252,8 @@ }, "expression": { "type": "CallExpression", - "start": 26022, - "end": 26117, + "start": 26011, + "end": 26106, "loc": { "start": { "line": 633, @@ -127266,8 +127266,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26022, - "end": 26030, + "start": 26011, + "end": 26019, "loc": { "start": { "line": 633, @@ -127280,8 +127280,8 @@ }, "object": { "type": "Identifier", - "start": 26022, - "end": 26025, + "start": 26011, + "end": 26014, "loc": { "start": { "line": 633, @@ -127297,8 +127297,8 @@ }, "property": { "type": "Identifier", - "start": 26026, - "end": 26030, + "start": 26015, + "end": 26019, "loc": { "start": { "line": 633, @@ -127317,8 +127317,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26031, - "end": 26116, + "start": 26020, + "end": 26105, "loc": { "start": { "line": 633, @@ -127341,8 +127341,8 @@ { "type": "CommentLine", "value": "TODO: a random factor - fix this", - "start": 26119, - "end": 26153, + "start": 26108, + "end": 26142, "loc": { "start": { "line": 633, @@ -127358,8 +127358,8 @@ }, { "type": "ExpressionStatement", - "start": 26166, - "end": 26324, + "start": 26155, + "end": 26313, "loc": { "start": { "line": 634, @@ -127372,8 +127372,8 @@ }, "expression": { "type": "CallExpression", - "start": 26166, - "end": 26323, + "start": 26155, + "end": 26312, "loc": { "start": { "line": 634, @@ -127386,8 +127386,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26166, - "end": 26174, + "start": 26155, + "end": 26163, "loc": { "start": { "line": 634, @@ -127400,8 +127400,8 @@ }, "object": { "type": "Identifier", - "start": 26166, - "end": 26169, + "start": 26155, + "end": 26158, "loc": { "start": { "line": 634, @@ -127418,8 +127418,8 @@ }, "property": { "type": "Identifier", - "start": 26170, - "end": 26174, + "start": 26159, + "end": 26163, "loc": { "start": { "line": 634, @@ -127439,8 +127439,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 26175, - "end": 26322, + "start": 26164, + "end": 26311, "loc": { "start": { "line": 634, @@ -127453,8 +127453,8 @@ }, "left": { "type": "BinaryExpression", - "start": 26175, - "end": 26262, + "start": 26164, + "end": 26251, "loc": { "start": { "line": 634, @@ -127467,8 +127467,8 @@ }, "left": { "type": "StringLiteral", - "start": 26175, - "end": 26199, + "start": 26164, + "end": 26188, "loc": { "start": { "line": 634, @@ -127488,8 +127488,8 @@ "operator": "+", "right": { "type": "MemberExpression", - "start": 26202, - "end": 26262, + "start": 26191, + "end": 26251, "loc": { "start": { "line": 634, @@ -127502,8 +127502,8 @@ }, "object": { "type": "Identifier", - "start": 26202, - "end": 26222, + "start": 26191, + "end": 26211, "loc": { "start": { "line": 634, @@ -127519,8 +127519,8 @@ }, "property": { "type": "MemberExpression", - "start": 26223, - "end": 26261, + "start": 26212, + "end": 26250, "loc": { "start": { "line": 634, @@ -127533,8 +127533,8 @@ }, "object": { "type": "MemberExpression", - "start": 26223, - "end": 26252, + "start": 26212, + "end": 26241, "loc": { "start": { "line": 634, @@ -127547,8 +127547,8 @@ }, "object": { "type": "MemberExpression", - "start": 26223, - "end": 26249, + "start": 26212, + "end": 26238, "loc": { "start": { "line": 634, @@ -127561,8 +127561,8 @@ }, "object": { "type": "Identifier", - "start": 26223, - "end": 26234, + "start": 26212, + "end": 26223, "loc": { "start": { "line": 634, @@ -127578,8 +127578,8 @@ }, "property": { "type": "Identifier", - "start": 26235, - "end": 26249, + "start": 26224, + "end": 26238, "loc": { "start": { "line": 634, @@ -127597,8 +127597,8 @@ }, "property": { "type": "NumericLiteral", - "start": 26250, - "end": 26251, + "start": 26239, + "end": 26240, "loc": { "start": { "line": 634, @@ -127619,8 +127619,8 @@ }, "property": { "type": "Identifier", - "start": 26253, - "end": 26261, + "start": 26242, + "end": 26250, "loc": { "start": { "line": 634, @@ -127642,8 +127642,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 26265, - "end": 26322, + "start": 26254, + "end": 26311, "loc": { "start": { "line": 634, @@ -127668,8 +127668,8 @@ { "type": "CommentLine", "value": "TODO: a random factor - fix this", - "start": 26119, - "end": 26153, + "start": 26108, + "end": 26142, "loc": { "start": { "line": 633, @@ -127685,8 +127685,8 @@ }, { "type": "ExpressionStatement", - "start": 26337, - "end": 26371, + "start": 26326, + "end": 26360, "loc": { "start": { "line": 635, @@ -127699,8 +127699,8 @@ }, "expression": { "type": "CallExpression", - "start": 26337, - "end": 26370, + "start": 26326, + "end": 26359, "loc": { "start": { "line": 635, @@ -127713,8 +127713,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26337, - "end": 26345, + "start": 26326, + "end": 26334, "loc": { "start": { "line": 635, @@ -127727,8 +127727,8 @@ }, "object": { "type": "Identifier", - "start": 26337, - "end": 26340, + "start": 26326, + "end": 26329, "loc": { "start": { "line": 635, @@ -127744,8 +127744,8 @@ }, "property": { "type": "Identifier", - "start": 26341, - "end": 26345, + "start": 26330, + "end": 26334, "loc": { "start": { "line": 635, @@ -127764,8 +127764,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26346, - "end": 26369, + "start": 26335, + "end": 26358, "loc": { "start": { "line": 635, @@ -127787,8 +127787,8 @@ }, { "type": "ExpressionStatement", - "start": 26384, - "end": 26398, + "start": 26373, + "end": 26387, "loc": { "start": { "line": 636, @@ -127801,8 +127801,8 @@ }, "expression": { "type": "CallExpression", - "start": 26384, - "end": 26397, + "start": 26373, + "end": 26386, "loc": { "start": { "line": 636, @@ -127815,8 +127815,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26384, - "end": 26392, + "start": 26373, + "end": 26381, "loc": { "start": { "line": 636, @@ -127829,8 +127829,8 @@ }, "object": { "type": "Identifier", - "start": 26384, - "end": 26387, + "start": 26373, + "end": 26376, "loc": { "start": { "line": 636, @@ -127846,8 +127846,8 @@ }, "property": { "type": "Identifier", - "start": 26388, - "end": 26392, + "start": 26377, + "end": 26381, "loc": { "start": { "line": 636, @@ -127866,8 +127866,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26393, - "end": 26396, + "start": 26382, + "end": 26385, "loc": { "start": { "line": 636, @@ -127896,8 +127896,8 @@ { "type": "CommentLine", "value": " SPECULAR BRDF EVALUATION", - "start": 26418, - "end": 26445, + "start": 26407, + "end": 26434, "loc": { "start": { "line": 639, @@ -127913,8 +127913,8 @@ }, { "type": "ExpressionStatement", - "start": 26455, - "end": 26535, + "start": 26444, + "end": 26524, "loc": { "start": { "line": 641, @@ -127927,8 +127927,8 @@ }, "expression": { "type": "CallExpression", - "start": 26455, - "end": 26534, + "start": 26444, + "end": 26523, "loc": { "start": { "line": 641, @@ -127941,8 +127941,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26455, - "end": 26463, + "start": 26444, + "end": 26452, "loc": { "start": { "line": 641, @@ -127955,8 +127955,8 @@ }, "object": { "type": "Identifier", - "start": 26455, - "end": 26458, + "start": 26444, + "end": 26447, "loc": { "start": { "line": 641, @@ -127973,8 +127973,8 @@ }, "property": { "type": "Identifier", - "start": 26459, - "end": 26463, + "start": 26448, + "end": 26452, "loc": { "start": { "line": 641, @@ -127994,8 +127994,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26464, - "end": 26533, + "start": 26453, + "end": 26522, "loc": { "start": { "line": 641, @@ -128019,8 +128019,8 @@ { "type": "CommentLine", "value": " SPECULAR BRDF EVALUATION", - "start": 26418, - "end": 26445, + "start": 26407, + "end": 26434, "loc": { "start": { "line": 639, @@ -128036,8 +128036,8 @@ }, { "type": "ExpressionStatement", - "start": 26544, - "end": 26623, + "start": 26533, + "end": 26612, "loc": { "start": { "line": 642, @@ -128050,8 +128050,8 @@ }, "expression": { "type": "CallExpression", - "start": 26544, - "end": 26622, + "start": 26533, + "end": 26611, "loc": { "start": { "line": 642, @@ -128064,8 +128064,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26544, - "end": 26552, + "start": 26533, + "end": 26541, "loc": { "start": { "line": 642, @@ -128078,8 +128078,8 @@ }, "object": { "type": "Identifier", - "start": 26544, - "end": 26547, + "start": 26533, + "end": 26536, "loc": { "start": { "line": 642, @@ -128095,8 +128095,8 @@ }, "property": { "type": "Identifier", - "start": 26548, - "end": 26552, + "start": 26537, + "end": 26541, "loc": { "start": { "line": 642, @@ -128115,8 +128115,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26553, - "end": 26621, + "start": 26542, + "end": 26610, "loc": { "start": { "line": 642, @@ -128138,8 +128138,8 @@ }, { "type": "ExpressionStatement", - "start": 26632, - "end": 26705, + "start": 26621, + "end": 26694, "loc": { "start": { "line": 643, @@ -128152,8 +128152,8 @@ }, "expression": { "type": "CallExpression", - "start": 26632, - "end": 26704, + "start": 26621, + "end": 26693, "loc": { "start": { "line": 643, @@ -128166,8 +128166,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26632, - "end": 26640, + "start": 26621, + "end": 26629, "loc": { "start": { "line": 643, @@ -128180,8 +128180,8 @@ }, "object": { "type": "Identifier", - "start": 26632, - "end": 26635, + "start": 26621, + "end": 26624, "loc": { "start": { "line": 643, @@ -128197,8 +128197,8 @@ }, "property": { "type": "Identifier", - "start": 26636, - "end": 26640, + "start": 26625, + "end": 26629, "loc": { "start": { "line": 643, @@ -128217,8 +128217,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26641, - "end": 26703, + "start": 26630, + "end": 26692, "loc": { "start": { "line": 643, @@ -128240,8 +128240,8 @@ }, { "type": "ExpressionStatement", - "start": 26714, - "end": 26728, + "start": 26703, + "end": 26717, "loc": { "start": { "line": 644, @@ -128254,8 +128254,8 @@ }, "expression": { "type": "CallExpression", - "start": 26714, - "end": 26727, + "start": 26703, + "end": 26716, "loc": { "start": { "line": 644, @@ -128268,8 +128268,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26714, - "end": 26722, + "start": 26703, + "end": 26711, "loc": { "start": { "line": 644, @@ -128282,8 +128282,8 @@ }, "object": { "type": "Identifier", - "start": 26714, - "end": 26717, + "start": 26703, + "end": 26706, "loc": { "start": { "line": 644, @@ -128299,8 +128299,8 @@ }, "property": { "type": "Identifier", - "start": 26718, - "end": 26722, + "start": 26707, + "end": 26711, "loc": { "start": { "line": 644, @@ -128319,8 +128319,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26723, - "end": 26726, + "start": 26712, + "end": 26715, "loc": { "start": { "line": 644, @@ -128342,8 +128342,8 @@ }, { "type": "ExpressionStatement", - "start": 26738, - "end": 26836, + "start": 26727, + "end": 26825, "loc": { "start": { "line": 646, @@ -128356,8 +128356,8 @@ }, "expression": { "type": "CallExpression", - "start": 26738, - "end": 26835, + "start": 26727, + "end": 26824, "loc": { "start": { "line": 646, @@ -128370,8 +128370,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26738, - "end": 26746, + "start": 26727, + "end": 26735, "loc": { "start": { "line": 646, @@ -128384,8 +128384,8 @@ }, "object": { "type": "Identifier", - "start": 26738, - "end": 26741, + "start": 26727, + "end": 26730, "loc": { "start": { "line": 646, @@ -128401,8 +128401,8 @@ }, "property": { "type": "Identifier", - "start": 26742, - "end": 26746, + "start": 26731, + "end": 26735, "loc": { "start": { "line": 646, @@ -128421,8 +128421,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26747, - "end": 26834, + "start": 26736, + "end": 26823, "loc": { "start": { "line": 646, @@ -128444,8 +128444,8 @@ }, { "type": "ExpressionStatement", - "start": 26845, - "end": 26890, + "start": 26834, + "end": 26879, "loc": { "start": { "line": 647, @@ -128458,8 +128458,8 @@ }, "expression": { "type": "CallExpression", - "start": 26845, - "end": 26889, + "start": 26834, + "end": 26878, "loc": { "start": { "line": 647, @@ -128472,8 +128472,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26845, - "end": 26853, + "start": 26834, + "end": 26842, "loc": { "start": { "line": 647, @@ -128486,8 +128486,8 @@ }, "object": { "type": "Identifier", - "start": 26845, - "end": 26848, + "start": 26834, + "end": 26837, "loc": { "start": { "line": 647, @@ -128503,8 +128503,8 @@ }, "property": { "type": "Identifier", - "start": 26849, - "end": 26853, + "start": 26838, + "end": 26842, "loc": { "start": { "line": 647, @@ -128523,8 +128523,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26854, - "end": 26888, + "start": 26843, + "end": 26877, "loc": { "start": { "line": 647, @@ -128546,8 +128546,8 @@ }, { "type": "ExpressionStatement", - "start": 26899, - "end": 26980, + "start": 26888, + "end": 26969, "loc": { "start": { "line": 648, @@ -128560,8 +128560,8 @@ }, "expression": { "type": "CallExpression", - "start": 26899, - "end": 26979, + "start": 26888, + "end": 26968, "loc": { "start": { "line": 648, @@ -128574,8 +128574,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26899, - "end": 26907, + "start": 26888, + "end": 26896, "loc": { "start": { "line": 648, @@ -128588,8 +128588,8 @@ }, "object": { "type": "Identifier", - "start": 26899, - "end": 26902, + "start": 26888, + "end": 26891, "loc": { "start": { "line": 648, @@ -128605,8 +128605,8 @@ }, "property": { "type": "Identifier", - "start": 26903, - "end": 26907, + "start": 26892, + "end": 26896, "loc": { "start": { "line": 648, @@ -128625,8 +128625,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26908, - "end": 26978, + "start": 26897, + "end": 26967, "loc": { "start": { "line": 648, @@ -128648,8 +128648,8 @@ }, { "type": "ExpressionStatement", - "start": 26989, - "end": 27070, + "start": 26978, + "end": 27059, "loc": { "start": { "line": 649, @@ -128662,8 +128662,8 @@ }, "expression": { "type": "CallExpression", - "start": 26989, - "end": 27069, + "start": 26978, + "end": 27058, "loc": { "start": { "line": 649, @@ -128676,8 +128676,8 @@ }, "callee": { "type": "MemberExpression", - "start": 26989, - "end": 26997, + "start": 26978, + "end": 26986, "loc": { "start": { "line": 649, @@ -128690,8 +128690,8 @@ }, "object": { "type": "Identifier", - "start": 26989, - "end": 26992, + "start": 26978, + "end": 26981, "loc": { "start": { "line": 649, @@ -128707,8 +128707,8 @@ }, "property": { "type": "Identifier", - "start": 26993, - "end": 26997, + "start": 26982, + "end": 26986, "loc": { "start": { "line": 649, @@ -128727,8 +128727,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 26998, - "end": 27068, + "start": 26987, + "end": 27057, "loc": { "start": { "line": 649, @@ -128750,8 +128750,8 @@ }, { "type": "ExpressionStatement", - "start": 27079, - "end": 27120, + "start": 27068, + "end": 27109, "loc": { "start": { "line": 650, @@ -128764,8 +128764,8 @@ }, "expression": { "type": "CallExpression", - "start": 27079, - "end": 27119, + "start": 27068, + "end": 27108, "loc": { "start": { "line": 650, @@ -128778,8 +128778,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27079, - "end": 27087, + "start": 27068, + "end": 27076, "loc": { "start": { "line": 650, @@ -128792,8 +128792,8 @@ }, "object": { "type": "Identifier", - "start": 27079, - "end": 27082, + "start": 27068, + "end": 27071, "loc": { "start": { "line": 650, @@ -128809,8 +128809,8 @@ }, "property": { "type": "Identifier", - "start": 27083, - "end": 27087, + "start": 27072, + "end": 27076, "loc": { "start": { "line": 650, @@ -128829,8 +128829,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27088, - "end": 27118, + "start": 27077, + "end": 27107, "loc": { "start": { "line": 650, @@ -128852,8 +128852,8 @@ }, { "type": "ExpressionStatement", - "start": 27129, - "end": 27143, + "start": 27118, + "end": 27132, "loc": { "start": { "line": 651, @@ -128866,8 +128866,8 @@ }, "expression": { "type": "CallExpression", - "start": 27129, - "end": 27142, + "start": 27118, + "end": 27131, "loc": { "start": { "line": 651, @@ -128880,8 +128880,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27129, - "end": 27137, + "start": 27118, + "end": 27126, "loc": { "start": { "line": 651, @@ -128894,8 +128894,8 @@ }, "object": { "type": "Identifier", - "start": 27129, - "end": 27132, + "start": 27118, + "end": 27121, "loc": { "start": { "line": 651, @@ -128911,8 +128911,8 @@ }, "property": { "type": "Identifier", - "start": 27133, - "end": 27137, + "start": 27122, + "end": 27126, "loc": { "start": { "line": 651, @@ -128931,8 +128931,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27138, - "end": 27141, + "start": 27127, + "end": 27130, "loc": { "start": { "line": 651, @@ -128954,8 +128954,8 @@ }, { "type": "ExpressionStatement", - "start": 27153, - "end": 27261, + "start": 27142, + "end": 27250, "loc": { "start": { "line": 653, @@ -128968,8 +128968,8 @@ }, "expression": { "type": "CallExpression", - "start": 27153, - "end": 27260, + "start": 27142, + "end": 27249, "loc": { "start": { "line": 653, @@ -128982,8 +128982,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27153, - "end": 27161, + "start": 27142, + "end": 27150, "loc": { "start": { "line": 653, @@ -128996,8 +128996,8 @@ }, "object": { "type": "Identifier", - "start": 27153, - "end": 27156, + "start": 27142, + "end": 27145, "loc": { "start": { "line": 653, @@ -129013,8 +129013,8 @@ }, "property": { "type": "Identifier", - "start": 27157, - "end": 27161, + "start": 27146, + "end": 27150, "loc": { "start": { "line": 653, @@ -129033,8 +129033,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27162, - "end": 27259, + "start": 27151, + "end": 27248, "loc": { "start": { "line": 653, @@ -129056,8 +129056,8 @@ }, { "type": "ExpressionStatement", - "start": 27270, - "end": 27315, + "start": 27259, + "end": 27304, "loc": { "start": { "line": 654, @@ -129070,8 +129070,8 @@ }, "expression": { "type": "CallExpression", - "start": 27270, - "end": 27314, + "start": 27259, + "end": 27303, "loc": { "start": { "line": 654, @@ -129084,8 +129084,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27270, - "end": 27278, + "start": 27259, + "end": 27267, "loc": { "start": { "line": 654, @@ -129098,8 +129098,8 @@ }, "object": { "type": "Identifier", - "start": 27270, - "end": 27273, + "start": 27259, + "end": 27262, "loc": { "start": { "line": 654, @@ -129115,8 +129115,8 @@ }, "property": { "type": "Identifier", - "start": 27274, - "end": 27278, + "start": 27263, + "end": 27267, "loc": { "start": { "line": 654, @@ -129135,8 +129135,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27279, - "end": 27313, + "start": 27268, + "end": 27302, "loc": { "start": { "line": 654, @@ -129158,8 +129158,8 @@ }, { "type": "ExpressionStatement", - "start": 27324, - "end": 27405, + "start": 27313, + "end": 27394, "loc": { "start": { "line": 655, @@ -129172,8 +129172,8 @@ }, "expression": { "type": "CallExpression", - "start": 27324, - "end": 27404, + "start": 27313, + "end": 27393, "loc": { "start": { "line": 655, @@ -129186,8 +129186,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27324, - "end": 27332, + "start": 27313, + "end": 27321, "loc": { "start": { "line": 655, @@ -129200,8 +129200,8 @@ }, "object": { "type": "Identifier", - "start": 27324, - "end": 27327, + "start": 27313, + "end": 27316, "loc": { "start": { "line": 655, @@ -129217,8 +129217,8 @@ }, "property": { "type": "Identifier", - "start": 27328, - "end": 27332, + "start": 27317, + "end": 27321, "loc": { "start": { "line": 655, @@ -129237,8 +129237,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27333, - "end": 27403, + "start": 27322, + "end": 27392, "loc": { "start": { "line": 655, @@ -129260,8 +129260,8 @@ }, { "type": "ExpressionStatement", - "start": 27414, - "end": 27495, + "start": 27403, + "end": 27484, "loc": { "start": { "line": 656, @@ -129274,8 +129274,8 @@ }, "expression": { "type": "CallExpression", - "start": 27414, - "end": 27494, + "start": 27403, + "end": 27483, "loc": { "start": { "line": 656, @@ -129288,8 +129288,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27414, - "end": 27422, + "start": 27403, + "end": 27411, "loc": { "start": { "line": 656, @@ -129302,8 +129302,8 @@ }, "object": { "type": "Identifier", - "start": 27414, - "end": 27417, + "start": 27403, + "end": 27406, "loc": { "start": { "line": 656, @@ -129319,8 +129319,8 @@ }, "property": { "type": "Identifier", - "start": 27418, - "end": 27422, + "start": 27407, + "end": 27411, "loc": { "start": { "line": 656, @@ -129339,8 +129339,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27423, - "end": 27493, + "start": 27412, + "end": 27482, "loc": { "start": { "line": 656, @@ -129362,8 +129362,8 @@ }, { "type": "ExpressionStatement", - "start": 27504, - "end": 27557, + "start": 27493, + "end": 27546, "loc": { "start": { "line": 657, @@ -129376,8 +129376,8 @@ }, "expression": { "type": "CallExpression", - "start": 27504, - "end": 27556, + "start": 27493, + "end": 27545, "loc": { "start": { "line": 657, @@ -129390,8 +129390,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27504, - "end": 27512, + "start": 27493, + "end": 27501, "loc": { "start": { "line": 657, @@ -129404,8 +129404,8 @@ }, "object": { "type": "Identifier", - "start": 27504, - "end": 27507, + "start": 27493, + "end": 27496, "loc": { "start": { "line": 657, @@ -129421,8 +129421,8 @@ }, "property": { "type": "Identifier", - "start": 27508, - "end": 27512, + "start": 27497, + "end": 27501, "loc": { "start": { "line": 657, @@ -129441,8 +129441,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27513, - "end": 27555, + "start": 27502, + "end": 27544, "loc": { "start": { "line": 657, @@ -129464,8 +129464,8 @@ }, { "type": "ExpressionStatement", - "start": 27566, - "end": 27580, + "start": 27555, + "end": 27569, "loc": { "start": { "line": 658, @@ -129478,8 +129478,8 @@ }, "expression": { "type": "CallExpression", - "start": 27566, - "end": 27579, + "start": 27555, + "end": 27568, "loc": { "start": { "line": 658, @@ -129492,8 +129492,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27566, - "end": 27574, + "start": 27555, + "end": 27563, "loc": { "start": { "line": 658, @@ -129506,8 +129506,8 @@ }, "object": { "type": "Identifier", - "start": 27566, - "end": 27569, + "start": 27555, + "end": 27558, "loc": { "start": { "line": 658, @@ -129523,8 +129523,8 @@ }, "property": { "type": "Identifier", - "start": 27570, - "end": 27574, + "start": 27559, + "end": 27563, "loc": { "start": { "line": 658, @@ -129543,8 +129543,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27575, - "end": 27578, + "start": 27564, + "end": 27567, "loc": { "start": { "line": 658, @@ -129566,8 +129566,8 @@ }, { "type": "ExpressionStatement", - "start": 27590, - "end": 27660, + "start": 27579, + "end": 27649, "loc": { "start": { "line": 660, @@ -129580,8 +129580,8 @@ }, "expression": { "type": "CallExpression", - "start": 27590, - "end": 27659, + "start": 27579, + "end": 27648, "loc": { "start": { "line": 660, @@ -129594,8 +129594,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27590, - "end": 27598, + "start": 27579, + "end": 27587, "loc": { "start": { "line": 660, @@ -129608,8 +129608,8 @@ }, "object": { "type": "Identifier", - "start": 27590, - "end": 27593, + "start": 27579, + "end": 27582, "loc": { "start": { "line": 660, @@ -129625,8 +129625,8 @@ }, "property": { "type": "Identifier", - "start": 27594, - "end": 27598, + "start": 27583, + "end": 27587, "loc": { "start": { "line": 660, @@ -129645,8 +129645,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27599, - "end": 27658, + "start": 27588, + "end": 27647, "loc": { "start": { "line": 660, @@ -129668,8 +129668,8 @@ }, { "type": "ExpressionStatement", - "start": 27669, - "end": 27714, + "start": 27658, + "end": 27703, "loc": { "start": { "line": 661, @@ -129682,8 +129682,8 @@ }, "expression": { "type": "CallExpression", - "start": 27669, - "end": 27713, + "start": 27658, + "end": 27702, "loc": { "start": { "line": 661, @@ -129696,8 +129696,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27669, - "end": 27677, + "start": 27658, + "end": 27666, "loc": { "start": { "line": 661, @@ -129710,8 +129710,8 @@ }, "object": { "type": "Identifier", - "start": 27669, - "end": 27672, + "start": 27658, + "end": 27661, "loc": { "start": { "line": 661, @@ -129727,8 +129727,8 @@ }, "property": { "type": "Identifier", - "start": 27673, - "end": 27677, + "start": 27662, + "end": 27666, "loc": { "start": { "line": 661, @@ -129747,8 +129747,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27678, - "end": 27712, + "start": 27667, + "end": 27701, "loc": { "start": { "line": 661, @@ -129770,8 +129770,8 @@ }, { "type": "ExpressionStatement", - "start": 27723, - "end": 27791, + "start": 27712, + "end": 27780, "loc": { "start": { "line": 662, @@ -129784,8 +129784,8 @@ }, "expression": { "type": "CallExpression", - "start": 27723, - "end": 27790, + "start": 27712, + "end": 27779, "loc": { "start": { "line": 662, @@ -129798,8 +129798,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27723, - "end": 27731, + "start": 27712, + "end": 27720, "loc": { "start": { "line": 662, @@ -129812,8 +129812,8 @@ }, "object": { "type": "Identifier", - "start": 27723, - "end": 27726, + "start": 27712, + "end": 27715, "loc": { "start": { "line": 662, @@ -129829,8 +129829,8 @@ }, "property": { "type": "Identifier", - "start": 27727, - "end": 27731, + "start": 27716, + "end": 27720, "loc": { "start": { "line": 662, @@ -129849,8 +129849,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27732, - "end": 27789, + "start": 27721, + "end": 27778, "loc": { "start": { "line": 662, @@ -129872,8 +129872,8 @@ }, { "type": "ExpressionStatement", - "start": 27800, - "end": 27861, + "start": 27789, + "end": 27850, "loc": { "start": { "line": 663, @@ -129886,8 +129886,8 @@ }, "expression": { "type": "CallExpression", - "start": 27800, - "end": 27860, + "start": 27789, + "end": 27849, "loc": { "start": { "line": 663, @@ -129900,8 +129900,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27800, - "end": 27808, + "start": 27789, + "end": 27797, "loc": { "start": { "line": 663, @@ -129914,8 +129914,8 @@ }, "object": { "type": "Identifier", - "start": 27800, - "end": 27803, + "start": 27789, + "end": 27792, "loc": { "start": { "line": 663, @@ -129931,8 +129931,8 @@ }, "property": { "type": "Identifier", - "start": 27804, - "end": 27808, + "start": 27793, + "end": 27797, "loc": { "start": { "line": 663, @@ -129951,8 +129951,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27809, - "end": 27859, + "start": 27798, + "end": 27848, "loc": { "start": { "line": 663, @@ -129974,8 +129974,8 @@ }, { "type": "ExpressionStatement", - "start": 27870, - "end": 27884, + "start": 27859, + "end": 27873, "loc": { "start": { "line": 664, @@ -129988,8 +129988,8 @@ }, "expression": { "type": "CallExpression", - "start": 27870, - "end": 27883, + "start": 27859, + "end": 27872, "loc": { "start": { "line": 664, @@ -130002,8 +130002,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27870, - "end": 27878, + "start": 27859, + "end": 27867, "loc": { "start": { "line": 664, @@ -130016,8 +130016,8 @@ }, "object": { "type": "Identifier", - "start": 27870, - "end": 27873, + "start": 27859, + "end": 27862, "loc": { "start": { "line": 664, @@ -130033,8 +130033,8 @@ }, "property": { "type": "Identifier", - "start": 27874, - "end": 27878, + "start": 27863, + "end": 27867, "loc": { "start": { "line": 664, @@ -130053,8 +130053,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27879, - "end": 27882, + "start": 27868, + "end": 27871, "loc": { "start": { "line": 664, @@ -130076,8 +130076,8 @@ }, { "type": "ExpressionStatement", - "start": 27894, - "end": 28052, + "start": 27883, + "end": 28041, "loc": { "start": { "line": 666, @@ -130090,8 +130090,8 @@ }, "expression": { "type": "CallExpression", - "start": 27894, - "end": 28051, + "start": 27883, + "end": 28040, "loc": { "start": { "line": 666, @@ -130104,8 +130104,8 @@ }, "callee": { "type": "MemberExpression", - "start": 27894, - "end": 27902, + "start": 27883, + "end": 27891, "loc": { "start": { "line": 666, @@ -130118,8 +130118,8 @@ }, "object": { "type": "Identifier", - "start": 27894, - "end": 27897, + "start": 27883, + "end": 27886, "loc": { "start": { "line": 666, @@ -130135,8 +130135,8 @@ }, "property": { "type": "Identifier", - "start": 27898, - "end": 27902, + "start": 27887, + "end": 27891, "loc": { "start": { "line": 666, @@ -130155,8 +130155,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 27903, - "end": 28050, + "start": 27892, + "end": 28039, "loc": { "start": { "line": 666, @@ -130178,8 +130178,8 @@ }, { "type": "ExpressionStatement", - "start": 28061, - "end": 28117, + "start": 28050, + "end": 28106, "loc": { "start": { "line": 667, @@ -130192,8 +130192,8 @@ }, "expression": { "type": "CallExpression", - "start": 28061, - "end": 28116, + "start": 28050, + "end": 28105, "loc": { "start": { "line": 667, @@ -130206,8 +130206,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28061, - "end": 28069, + "start": 28050, + "end": 28058, "loc": { "start": { "line": 667, @@ -130220,8 +130220,8 @@ }, "object": { "type": "Identifier", - "start": 28061, - "end": 28064, + "start": 28050, + "end": 28053, "loc": { "start": { "line": 667, @@ -130237,8 +130237,8 @@ }, "property": { "type": "Identifier", - "start": 28065, - "end": 28069, + "start": 28054, + "end": 28058, "loc": { "start": { "line": 667, @@ -130257,8 +130257,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28070, - "end": 28115, + "start": 28059, + "end": 28104, "loc": { "start": { "line": 667, @@ -130280,8 +130280,8 @@ }, { "type": "ExpressionStatement", - "start": 28126, - "end": 28216, + "start": 28115, + "end": 28205, "loc": { "start": { "line": 668, @@ -130294,8 +130294,8 @@ }, "expression": { "type": "CallExpression", - "start": 28126, - "end": 28215, + "start": 28115, + "end": 28204, "loc": { "start": { "line": 668, @@ -130308,8 +130308,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28126, - "end": 28134, + "start": 28115, + "end": 28123, "loc": { "start": { "line": 668, @@ -130322,8 +130322,8 @@ }, "object": { "type": "Identifier", - "start": 28126, - "end": 28129, + "start": 28115, + "end": 28118, "loc": { "start": { "line": 668, @@ -130339,8 +130339,8 @@ }, "property": { "type": "Identifier", - "start": 28130, - "end": 28134, + "start": 28119, + "end": 28123, "loc": { "start": { "line": 668, @@ -130359,8 +130359,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28135, - "end": 28214, + "start": 28124, + "end": 28203, "loc": { "start": { "line": 668, @@ -130382,8 +130382,8 @@ }, { "type": "ExpressionStatement", - "start": 28225, - "end": 28319, + "start": 28214, + "end": 28308, "loc": { "start": { "line": 669, @@ -130396,8 +130396,8 @@ }, "expression": { "type": "CallExpression", - "start": 28225, - "end": 28318, + "start": 28214, + "end": 28307, "loc": { "start": { "line": 669, @@ -130410,8 +130410,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28225, - "end": 28233, + "start": 28214, + "end": 28222, "loc": { "start": { "line": 669, @@ -130424,8 +130424,8 @@ }, "object": { "type": "Identifier", - "start": 28225, - "end": 28228, + "start": 28214, + "end": 28217, "loc": { "start": { "line": 669, @@ -130441,8 +130441,8 @@ }, "property": { "type": "Identifier", - "start": 28229, - "end": 28233, + "start": 28218, + "end": 28222, "loc": { "start": { "line": 669, @@ -130461,8 +130461,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28234, - "end": 28317, + "start": 28223, + "end": 28306, "loc": { "start": { "line": 669, @@ -130484,8 +130484,8 @@ }, { "type": "ExpressionStatement", - "start": 28328, - "end": 28418, + "start": 28317, + "end": 28407, "loc": { "start": { "line": 670, @@ -130498,8 +130498,8 @@ }, "expression": { "type": "CallExpression", - "start": 28328, - "end": 28417, + "start": 28317, + "end": 28406, "loc": { "start": { "line": 670, @@ -130512,8 +130512,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28328, - "end": 28336, + "start": 28317, + "end": 28325, "loc": { "start": { "line": 670, @@ -130526,8 +130526,8 @@ }, "object": { "type": "Identifier", - "start": 28328, - "end": 28331, + "start": 28317, + "end": 28320, "loc": { "start": { "line": 670, @@ -130543,8 +130543,8 @@ }, "property": { "type": "Identifier", - "start": 28332, - "end": 28336, + "start": 28321, + "end": 28325, "loc": { "start": { "line": 670, @@ -130563,8 +130563,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28337, - "end": 28416, + "start": 28326, + "end": 28405, "loc": { "start": { "line": 670, @@ -130586,8 +130586,8 @@ }, { "type": "ExpressionStatement", - "start": 28427, - "end": 28505, + "start": 28416, + "end": 28494, "loc": { "start": { "line": 671, @@ -130600,8 +130600,8 @@ }, "expression": { "type": "CallExpression", - "start": 28427, - "end": 28504, + "start": 28416, + "end": 28493, "loc": { "start": { "line": 671, @@ -130614,8 +130614,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28427, - "end": 28435, + "start": 28416, + "end": 28424, "loc": { "start": { "line": 671, @@ -130628,8 +130628,8 @@ }, "object": { "type": "Identifier", - "start": 28427, - "end": 28430, + "start": 28416, + "end": 28419, "loc": { "start": { "line": 671, @@ -130645,8 +130645,8 @@ }, "property": { "type": "Identifier", - "start": 28431, - "end": 28435, + "start": 28420, + "end": 28424, "loc": { "start": { "line": 671, @@ -130665,8 +130665,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28436, - "end": 28503, + "start": 28425, + "end": 28492, "loc": { "start": { "line": 671, @@ -130688,8 +130688,8 @@ }, { "type": "ExpressionStatement", - "start": 28514, - "end": 28596, + "start": 28503, + "end": 28585, "loc": { "start": { "line": 672, @@ -130702,8 +130702,8 @@ }, "expression": { "type": "CallExpression", - "start": 28514, - "end": 28595, + "start": 28503, + "end": 28584, "loc": { "start": { "line": 672, @@ -130716,8 +130716,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28514, - "end": 28522, + "start": 28503, + "end": 28511, "loc": { "start": { "line": 672, @@ -130730,8 +130730,8 @@ }, "object": { "type": "Identifier", - "start": 28514, - "end": 28517, + "start": 28503, + "end": 28506, "loc": { "start": { "line": 672, @@ -130747,8 +130747,8 @@ }, "property": { "type": "Identifier", - "start": 28518, - "end": 28522, + "start": 28507, + "end": 28511, "loc": { "start": { "line": 672, @@ -130767,8 +130767,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28523, - "end": 28594, + "start": 28512, + "end": 28583, "loc": { "start": { "line": 672, @@ -130790,8 +130790,8 @@ }, { "type": "ExpressionStatement", - "start": 28605, - "end": 28665, + "start": 28594, + "end": 28654, "loc": { "start": { "line": 673, @@ -130804,8 +130804,8 @@ }, "expression": { "type": "CallExpression", - "start": 28605, - "end": 28664, + "start": 28594, + "end": 28653, "loc": { "start": { "line": 673, @@ -130818,8 +130818,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28605, - "end": 28613, + "start": 28594, + "end": 28602, "loc": { "start": { "line": 673, @@ -130832,8 +130832,8 @@ }, "object": { "type": "Identifier", - "start": 28605, - "end": 28608, + "start": 28594, + "end": 28597, "loc": { "start": { "line": 673, @@ -130849,8 +130849,8 @@ }, "property": { "type": "Identifier", - "start": 28609, - "end": 28613, + "start": 28598, + "end": 28602, "loc": { "start": { "line": 673, @@ -130869,8 +130869,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28614, - "end": 28663, + "start": 28603, + "end": 28652, "loc": { "start": { "line": 673, @@ -130892,8 +130892,8 @@ }, { "type": "ExpressionStatement", - "start": 28674, - "end": 28745, + "start": 28663, + "end": 28734, "loc": { "start": { "line": 674, @@ -130906,8 +130906,8 @@ }, "expression": { "type": "CallExpression", - "start": 28674, - "end": 28744, + "start": 28663, + "end": 28733, "loc": { "start": { "line": 674, @@ -130920,8 +130920,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28674, - "end": 28682, + "start": 28663, + "end": 28671, "loc": { "start": { "line": 674, @@ -130934,8 +130934,8 @@ }, "object": { "type": "Identifier", - "start": 28674, - "end": 28677, + "start": 28663, + "end": 28666, "loc": { "start": { "line": 674, @@ -130951,8 +130951,8 @@ }, "property": { "type": "Identifier", - "start": 28678, - "end": 28682, + "start": 28667, + "end": 28671, "loc": { "start": { "line": 674, @@ -130971,8 +130971,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28683, - "end": 28743, + "start": 28672, + "end": 28732, "loc": { "start": { "line": 674, @@ -130994,8 +130994,8 @@ }, { "type": "ExpressionStatement", - "start": 28754, - "end": 28802, + "start": 28743, + "end": 28791, "loc": { "start": { "line": 675, @@ -131008,8 +131008,8 @@ }, "expression": { "type": "CallExpression", - "start": 28754, - "end": 28801, + "start": 28743, + "end": 28790, "loc": { "start": { "line": 675, @@ -131022,8 +131022,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28754, - "end": 28762, + "start": 28743, + "end": 28751, "loc": { "start": { "line": 675, @@ -131036,8 +131036,8 @@ }, "object": { "type": "Identifier", - "start": 28754, - "end": 28757, + "start": 28743, + "end": 28746, "loc": { "start": { "line": 675, @@ -131053,8 +131053,8 @@ }, "property": { "type": "Identifier", - "start": 28758, - "end": 28762, + "start": 28747, + "end": 28751, "loc": { "start": { "line": 675, @@ -131073,8 +131073,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28763, - "end": 28800, + "start": 28752, + "end": 28789, "loc": { "start": { "line": 675, @@ -131096,8 +131096,8 @@ }, { "type": "ExpressionStatement", - "start": 28811, - "end": 28846, + "start": 28800, + "end": 28835, "loc": { "start": { "line": 676, @@ -131110,8 +131110,8 @@ }, "expression": { "type": "CallExpression", - "start": 28811, - "end": 28845, + "start": 28800, + "end": 28834, "loc": { "start": { "line": 676, @@ -131124,8 +131124,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28811, - "end": 28819, + "start": 28800, + "end": 28808, "loc": { "start": { "line": 676, @@ -131138,8 +131138,8 @@ }, "object": { "type": "Identifier", - "start": 28811, - "end": 28814, + "start": 28800, + "end": 28803, "loc": { "start": { "line": 676, @@ -131155,8 +131155,8 @@ }, "property": { "type": "Identifier", - "start": 28815, - "end": 28819, + "start": 28804, + "end": 28808, "loc": { "start": { "line": 676, @@ -131175,8 +131175,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28820, - "end": 28844, + "start": 28809, + "end": 28833, "loc": { "start": { "line": 676, @@ -131198,8 +131198,8 @@ }, { "type": "ExpressionStatement", - "start": 28855, - "end": 28869, + "start": 28844, + "end": 28858, "loc": { "start": { "line": 677, @@ -131212,8 +131212,8 @@ }, "expression": { "type": "CallExpression", - "start": 28855, - "end": 28868, + "start": 28844, + "end": 28857, "loc": { "start": { "line": 677, @@ -131226,8 +131226,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28855, - "end": 28863, + "start": 28844, + "end": 28852, "loc": { "start": { "line": 677, @@ -131240,8 +131240,8 @@ }, "object": { "type": "Identifier", - "start": 28855, - "end": 28858, + "start": 28844, + "end": 28847, "loc": { "start": { "line": 677, @@ -131257,8 +131257,8 @@ }, "property": { "type": "Identifier", - "start": 28859, - "end": 28863, + "start": 28848, + "end": 28852, "loc": { "start": { "line": 677, @@ -131277,8 +131277,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28864, - "end": 28867, + "start": 28853, + "end": 28856, "loc": { "start": { "line": 677, @@ -131300,8 +131300,8 @@ }, { "type": "ExpressionStatement", - "start": 28879, - "end": 29011, + "start": 28868, + "end": 29000, "loc": { "start": { "line": 679, @@ -131314,8 +131314,8 @@ }, "expression": { "type": "CallExpression", - "start": 28879, - "end": 29010, + "start": 28868, + "end": 28999, "loc": { "start": { "line": 679, @@ -131328,8 +131328,8 @@ }, "callee": { "type": "MemberExpression", - "start": 28879, - "end": 28887, + "start": 28868, + "end": 28876, "loc": { "start": { "line": 679, @@ -131342,8 +131342,8 @@ }, "object": { "type": "Identifier", - "start": 28879, - "end": 28882, + "start": 28868, + "end": 28871, "loc": { "start": { "line": 679, @@ -131359,8 +131359,8 @@ }, "property": { "type": "Identifier", - "start": 28883, - "end": 28887, + "start": 28872, + "end": 28876, "loc": { "start": { "line": 679, @@ -131379,8 +131379,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 28888, - "end": 29009, + "start": 28877, + "end": 28998, "loc": { "start": { "line": 679, @@ -131402,8 +131402,8 @@ }, { "type": "ExpressionStatement", - "start": 29020, - "end": 29106, + "start": 29009, + "end": 29095, "loc": { "start": { "line": 680, @@ -131416,8 +131416,8 @@ }, "expression": { "type": "CallExpression", - "start": 29020, - "end": 29105, + "start": 29009, + "end": 29094, "loc": { "start": { "line": 680, @@ -131430,8 +131430,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29020, - "end": 29028, + "start": 29009, + "end": 29017, "loc": { "start": { "line": 680, @@ -131444,8 +131444,8 @@ }, "object": { "type": "Identifier", - "start": 29020, - "end": 29023, + "start": 29009, + "end": 29012, "loc": { "start": { "line": 680, @@ -131461,8 +131461,8 @@ }, "property": { "type": "Identifier", - "start": 29024, - "end": 29028, + "start": 29013, + "end": 29017, "loc": { "start": { "line": 680, @@ -131481,8 +131481,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29029, - "end": 29104, + "start": 29018, + "end": 29093, "loc": { "start": { "line": 680, @@ -131504,8 +131504,8 @@ }, { "type": "ExpressionStatement", - "start": 29115, - "end": 29182, + "start": 29104, + "end": 29171, "loc": { "start": { "line": 681, @@ -131518,8 +131518,8 @@ }, "expression": { "type": "CallExpression", - "start": 29115, - "end": 29181, + "start": 29104, + "end": 29170, "loc": { "start": { "line": 681, @@ -131532,8 +131532,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29115, - "end": 29123, + "start": 29104, + "end": 29112, "loc": { "start": { "line": 681, @@ -131546,8 +131546,8 @@ }, "object": { "type": "Identifier", - "start": 29115, - "end": 29118, + "start": 29104, + "end": 29107, "loc": { "start": { "line": 681, @@ -131563,8 +131563,8 @@ }, "property": { "type": "Identifier", - "start": 29119, - "end": 29123, + "start": 29108, + "end": 29112, "loc": { "start": { "line": 681, @@ -131583,8 +131583,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29124, - "end": 29180, + "start": 29113, + "end": 29169, "loc": { "start": { "line": 681, @@ -131606,8 +131606,8 @@ }, { "type": "ExpressionStatement", - "start": 29191, - "end": 29257, + "start": 29180, + "end": 29246, "loc": { "start": { "line": 682, @@ -131620,8 +131620,8 @@ }, "expression": { "type": "CallExpression", - "start": 29191, - "end": 29256, + "start": 29180, + "end": 29245, "loc": { "start": { "line": 682, @@ -131634,8 +131634,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29191, - "end": 29199, + "start": 29180, + "end": 29188, "loc": { "start": { "line": 682, @@ -131648,8 +131648,8 @@ }, "object": { "type": "Identifier", - "start": 29191, - "end": 29194, + "start": 29180, + "end": 29183, "loc": { "start": { "line": 682, @@ -131665,8 +131665,8 @@ }, "property": { "type": "Identifier", - "start": 29195, - "end": 29199, + "start": 29184, + "end": 29188, "loc": { "start": { "line": 682, @@ -131685,8 +131685,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29200, - "end": 29255, + "start": 29189, + "end": 29244, "loc": { "start": { "line": 682, @@ -131708,8 +131708,8 @@ }, { "type": "ExpressionStatement", - "start": 29266, - "end": 29311, + "start": 29255, + "end": 29300, "loc": { "start": { "line": 683, @@ -131722,8 +131722,8 @@ }, "expression": { "type": "CallExpression", - "start": 29266, - "end": 29310, + "start": 29255, + "end": 29299, "loc": { "start": { "line": 683, @@ -131736,8 +131736,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29266, - "end": 29274, + "start": 29255, + "end": 29263, "loc": { "start": { "line": 683, @@ -131750,8 +131750,8 @@ }, "object": { "type": "Identifier", - "start": 29266, - "end": 29269, + "start": 29255, + "end": 29258, "loc": { "start": { "line": 683, @@ -131767,8 +131767,8 @@ }, "property": { "type": "Identifier", - "start": 29270, - "end": 29274, + "start": 29259, + "end": 29263, "loc": { "start": { "line": 683, @@ -131787,8 +131787,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29275, - "end": 29309, + "start": 29264, + "end": 29298, "loc": { "start": { "line": 683, @@ -131810,8 +131810,8 @@ }, { "type": "ExpressionStatement", - "start": 29320, - "end": 29397, + "start": 29309, + "end": 29386, "loc": { "start": { "line": 684, @@ -131824,8 +131824,8 @@ }, "expression": { "type": "CallExpression", - "start": 29320, - "end": 29396, + "start": 29309, + "end": 29385, "loc": { "start": { "line": 684, @@ -131838,8 +131838,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29320, - "end": 29328, + "start": 29309, + "end": 29317, "loc": { "start": { "line": 684, @@ -131852,8 +131852,8 @@ }, "object": { "type": "Identifier", - "start": 29320, - "end": 29323, + "start": 29309, + "end": 29312, "loc": { "start": { "line": 684, @@ -131869,8 +131869,8 @@ }, "property": { "type": "Identifier", - "start": 29324, - "end": 29328, + "start": 29313, + "end": 29317, "loc": { "start": { "line": 684, @@ -131889,8 +131889,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29329, - "end": 29395, + "start": 29318, + "end": 29384, "loc": { "start": { "line": 684, @@ -131912,8 +131912,8 @@ }, { "type": "ExpressionStatement", - "start": 29406, - "end": 29467, + "start": 29395, + "end": 29456, "loc": { "start": { "line": 685, @@ -131926,8 +131926,8 @@ }, "expression": { "type": "CallExpression", - "start": 29406, - "end": 29466, + "start": 29395, + "end": 29455, "loc": { "start": { "line": 685, @@ -131940,8 +131940,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29406, - "end": 29414, + "start": 29395, + "end": 29403, "loc": { "start": { "line": 685, @@ -131954,8 +131954,8 @@ }, "object": { "type": "Identifier", - "start": 29406, - "end": 29409, + "start": 29395, + "end": 29398, "loc": { "start": { "line": 685, @@ -131971,8 +131971,8 @@ }, "property": { "type": "Identifier", - "start": 29410, - "end": 29414, + "start": 29399, + "end": 29403, "loc": { "start": { "line": 685, @@ -131991,8 +131991,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29415, - "end": 29465, + "start": 29404, + "end": 29454, "loc": { "start": { "line": 685, @@ -132014,8 +132014,8 @@ }, { "type": "ExpressionStatement", - "start": 29476, - "end": 29527, + "start": 29465, + "end": 29516, "loc": { "start": { "line": 686, @@ -132028,8 +132028,8 @@ }, "expression": { "type": "CallExpression", - "start": 29476, - "end": 29526, + "start": 29465, + "end": 29515, "loc": { "start": { "line": 686, @@ -132042,8 +132042,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29476, - "end": 29484, + "start": 29465, + "end": 29473, "loc": { "start": { "line": 686, @@ -132056,8 +132056,8 @@ }, "object": { "type": "Identifier", - "start": 29476, - "end": 29479, + "start": 29465, + "end": 29468, "loc": { "start": { "line": 686, @@ -132073,8 +132073,8 @@ }, "property": { "type": "Identifier", - "start": 29480, - "end": 29484, + "start": 29469, + "end": 29473, "loc": { "start": { "line": 686, @@ -132093,8 +132093,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29485, - "end": 29525, + "start": 29474, + "end": 29514, "loc": { "start": { "line": 686, @@ -132116,8 +132116,8 @@ }, { "type": "ExpressionStatement", - "start": 29536, - "end": 29550, + "start": 29525, + "end": 29539, "loc": { "start": { "line": 687, @@ -132130,8 +132130,8 @@ }, "expression": { "type": "CallExpression", - "start": 29536, - "end": 29549, + "start": 29525, + "end": 29538, "loc": { "start": { "line": 687, @@ -132144,8 +132144,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29536, - "end": 29544, + "start": 29525, + "end": 29533, "loc": { "start": { "line": 687, @@ -132158,8 +132158,8 @@ }, "object": { "type": "Identifier", - "start": 29536, - "end": 29539, + "start": 29525, + "end": 29528, "loc": { "start": { "line": 687, @@ -132175,8 +132175,8 @@ }, "property": { "type": "Identifier", - "start": 29540, - "end": 29544, + "start": 29529, + "end": 29533, "loc": { "start": { "line": 687, @@ -132195,8 +132195,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29545, - "end": 29548, + "start": 29534, + "end": 29537, "loc": { "start": { "line": 687, @@ -132218,8 +132218,8 @@ }, { "type": "IfStatement", - "start": 29560, - "end": 31097, + "start": 29549, + "end": 31085, "loc": { "start": { "line": 689, @@ -132232,8 +132232,8 @@ }, "test": { "type": "LogicalExpression", - "start": 29564, - "end": 29637, + "start": 29553, + "end": 29626, "loc": { "start": { "line": 689, @@ -132246,8 +132246,8 @@ }, "left": { "type": "BinaryExpression", - "start": 29564, - "end": 29596, + "start": 29553, + "end": 29585, "loc": { "start": { "line": 689, @@ -132260,8 +132260,8 @@ }, "left": { "type": "MemberExpression", - "start": 29564, - "end": 29592, + "start": 29553, + "end": 29581, "loc": { "start": { "line": 689, @@ -132274,8 +132274,8 @@ }, "object": { "type": "MemberExpression", - "start": 29564, - "end": 29585, + "start": 29553, + "end": 29574, "loc": { "start": { "line": 689, @@ -132288,8 +132288,8 @@ }, "object": { "type": "Identifier", - "start": 29564, - "end": 29575, + "start": 29553, + "end": 29564, "loc": { "start": { "line": 689, @@ -132305,8 +132305,8 @@ }, "property": { "type": "Identifier", - "start": 29576, - "end": 29585, + "start": 29565, + "end": 29574, "loc": { "start": { "line": 689, @@ -132324,8 +132324,8 @@ }, "property": { "type": "Identifier", - "start": 29586, - "end": 29592, + "start": 29575, + "end": 29581, "loc": { "start": { "line": 689, @@ -132344,8 +132344,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 29595, - "end": 29596, + "start": 29584, + "end": 29585, "loc": { "start": { "line": 689, @@ -132366,8 +132366,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 29600, - "end": 29637, + "start": 29589, + "end": 29626, "loc": { "start": { "line": 689, @@ -132380,8 +132380,8 @@ }, "left": { "type": "MemberExpression", - "start": 29600, - "end": 29633, + "start": 29589, + "end": 29622, "loc": { "start": { "line": 689, @@ -132394,8 +132394,8 @@ }, "object": { "type": "MemberExpression", - "start": 29600, - "end": 29626, + "start": 29589, + "end": 29615, "loc": { "start": { "line": 689, @@ -132408,8 +132408,8 @@ }, "object": { "type": "Identifier", - "start": 29600, - "end": 29611, + "start": 29589, + "end": 29600, "loc": { "start": { "line": 689, @@ -132425,8 +132425,8 @@ }, "property": { "type": "Identifier", - "start": 29612, - "end": 29626, + "start": 29601, + "end": 29615, "loc": { "start": { "line": 689, @@ -132444,8 +132444,8 @@ }, "property": { "type": "Identifier", - "start": 29627, - "end": 29633, + "start": 29616, + "end": 29622, "loc": { "start": { "line": 689, @@ -132464,8 +132464,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 29636, - "end": 29637, + "start": 29625, + "end": 29626, "loc": { "start": { "line": 689, @@ -132486,8 +132486,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 29639, - "end": 31097, + "start": 29628, + "end": 31085, "loc": { "start": { "line": 689, @@ -132501,8 +132501,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 29654, - "end": 29789, + "start": 29643, + "end": 29778, "loc": { "start": { "line": 691, @@ -132515,8 +132515,8 @@ }, "expression": { "type": "CallExpression", - "start": 29654, - "end": 29788, + "start": 29643, + "end": 29777, "loc": { "start": { "line": 691, @@ -132529,8 +132529,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29654, - "end": 29662, + "start": 29643, + "end": 29651, "loc": { "start": { "line": 691, @@ -132543,8 +132543,8 @@ }, "object": { "type": "Identifier", - "start": 29654, - "end": 29657, + "start": 29643, + "end": 29646, "loc": { "start": { "line": 691, @@ -132560,8 +132560,8 @@ }, "property": { "type": "Identifier", - "start": 29658, - "end": 29662, + "start": 29647, + "end": 29651, "loc": { "start": { "line": 691, @@ -132580,8 +132580,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 29663, - "end": 29787, + "start": 29652, + "end": 29776, "loc": { "start": { "line": 691, @@ -132603,8 +132603,8 @@ }, { "type": "IfStatement", - "start": 29803, - "end": 30260, + "start": 29792, + "end": 30249, "loc": { "start": { "line": 693, @@ -132617,8 +132617,8 @@ }, "test": { "type": "BinaryExpression", - "start": 29807, - "end": 29839, + "start": 29796, + "end": 29828, "loc": { "start": { "line": 693, @@ -132631,8 +132631,8 @@ }, "left": { "type": "MemberExpression", - "start": 29807, - "end": 29835, + "start": 29796, + "end": 29824, "loc": { "start": { "line": 693, @@ -132645,8 +132645,8 @@ }, "object": { "type": "MemberExpression", - "start": 29807, - "end": 29828, + "start": 29796, + "end": 29817, "loc": { "start": { "line": 693, @@ -132659,8 +132659,8 @@ }, "object": { "type": "Identifier", - "start": 29807, - "end": 29818, + "start": 29796, + "end": 29807, "loc": { "start": { "line": 693, @@ -132676,8 +132676,8 @@ }, "property": { "type": "Identifier", - "start": 29819, - "end": 29828, + "start": 29808, + "end": 29817, "loc": { "start": { "line": 693, @@ -132695,8 +132695,8 @@ }, "property": { "type": "Identifier", - "start": 29829, - "end": 29835, + "start": 29818, + "end": 29824, "loc": { "start": { "line": 693, @@ -132715,8 +132715,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 29838, - "end": 29839, + "start": 29827, + "end": 29828, "loc": { "start": { "line": 693, @@ -132736,8 +132736,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 29841, - "end": 30260, + "start": 29830, + "end": 30249, "loc": { "start": { "line": 693, @@ -132751,8 +132751,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 29859, - "end": 30006, + "start": 29848, + "end": 29995, "loc": { "start": { "line": 694, @@ -132765,8 +132765,8 @@ }, "expression": { "type": "CallExpression", - "start": 29859, - "end": 30005, + "start": 29848, + "end": 29994, "loc": { "start": { "line": 694, @@ -132779,8 +132779,8 @@ }, "callee": { "type": "MemberExpression", - "start": 29859, - "end": 29867, + "start": 29848, + "end": 29856, "loc": { "start": { "line": 694, @@ -132793,8 +132793,8 @@ }, "object": { "type": "Identifier", - "start": 29859, - "end": 29862, + "start": 29848, + "end": 29851, "loc": { "start": { "line": 694, @@ -132810,8 +132810,8 @@ }, "property": { "type": "Identifier", - "start": 29863, - "end": 29867, + "start": 29852, + "end": 29856, "loc": { "start": { "line": 694, @@ -132830,8 +132830,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 29868, - "end": 30004, + "start": 29857, + "end": 29993, "loc": { "start": { "line": 694, @@ -132844,8 +132844,8 @@ }, "left": { "type": "BinaryExpression", - "start": 29868, - "end": 29949, + "start": 29857, + "end": 29938, "loc": { "start": { "line": 694, @@ -132858,8 +132858,8 @@ }, "left": { "type": "StringLiteral", - "start": 29868, - "end": 29891, + "start": 29857, + "end": 29880, "loc": { "start": { "line": 694, @@ -132879,8 +132879,8 @@ "operator": "+", "right": { "type": "MemberExpression", - "start": 29894, - "end": 29949, + "start": 29883, + "end": 29938, "loc": { "start": { "line": 694, @@ -132893,8 +132893,8 @@ }, "object": { "type": "Identifier", - "start": 29894, - "end": 29914, + "start": 29883, + "end": 29903, "loc": { "start": { "line": 694, @@ -132910,8 +132910,8 @@ }, "property": { "type": "MemberExpression", - "start": 29915, - "end": 29948, + "start": 29904, + "end": 29937, "loc": { "start": { "line": 694, @@ -132924,8 +132924,8 @@ }, "object": { "type": "MemberExpression", - "start": 29915, - "end": 29939, + "start": 29904, + "end": 29928, "loc": { "start": { "line": 694, @@ -132938,8 +132938,8 @@ }, "object": { "type": "MemberExpression", - "start": 29915, - "end": 29936, + "start": 29904, + "end": 29925, "loc": { "start": { "line": 694, @@ -132952,8 +132952,8 @@ }, "object": { "type": "Identifier", - "start": 29915, - "end": 29926, + "start": 29904, + "end": 29915, "loc": { "start": { "line": 694, @@ -132969,8 +132969,8 @@ }, "property": { "type": "Identifier", - "start": 29927, - "end": 29936, + "start": 29916, + "end": 29925, "loc": { "start": { "line": 694, @@ -132988,8 +132988,8 @@ }, "property": { "type": "NumericLiteral", - "start": 29937, - "end": 29938, + "start": 29926, + "end": 29927, "loc": { "start": { "line": 694, @@ -133010,8 +133010,8 @@ }, "property": { "type": "Identifier", - "start": 29940, - "end": 29948, + "start": 29929, + "end": 29937, "loc": { "start": { "line": 694, @@ -133033,8 +133033,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 29952, - "end": 30004, + "start": 29941, + "end": 29993, "loc": { "start": { "line": 694, @@ -133057,8 +133057,8 @@ }, { "type": "ExpressionStatement", - "start": 30023, - "end": 30056, + "start": 30012, + "end": 30045, "loc": { "start": { "line": 695, @@ -133071,8 +133071,8 @@ }, "expression": { "type": "CallExpression", - "start": 30023, - "end": 30055, + "start": 30012, + "end": 30044, "loc": { "start": { "line": 695, @@ -133085,8 +133085,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30023, - "end": 30031, + "start": 30012, + "end": 30020, "loc": { "start": { "line": 695, @@ -133099,8 +133099,8 @@ }, "object": { "type": "Identifier", - "start": 30023, - "end": 30026, + "start": 30012, + "end": 30015, "loc": { "start": { "line": 695, @@ -133116,8 +133116,8 @@ }, "property": { "type": "Identifier", - "start": 30027, - "end": 30031, + "start": 30016, + "end": 30020, "loc": { "start": { "line": 695, @@ -133136,8 +133136,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30032, - "end": 30054, + "start": 30021, + "end": 30043, "loc": { "start": { "line": 695, @@ -133159,8 +133159,8 @@ }, { "type": "ExpressionStatement", - "start": 30073, - "end": 30155, + "start": 30062, + "end": 30144, "loc": { "start": { "line": 696, @@ -133173,8 +133173,8 @@ }, "expression": { "type": "CallExpression", - "start": 30073, - "end": 30154, + "start": 30062, + "end": 30143, "loc": { "start": { "line": 696, @@ -133187,8 +133187,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30073, - "end": 30081, + "start": 30062, + "end": 30070, "loc": { "start": { "line": 696, @@ -133201,8 +133201,8 @@ }, "object": { "type": "Identifier", - "start": 30073, - "end": 30076, + "start": 30062, + "end": 30065, "loc": { "start": { "line": 696, @@ -133218,8 +133218,8 @@ }, "property": { "type": "Identifier", - "start": 30077, - "end": 30081, + "start": 30066, + "end": 30070, "loc": { "start": { "line": 696, @@ -133238,8 +133238,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30082, - "end": 30153, + "start": 30071, + "end": 30142, "loc": { "start": { "line": 696, @@ -133261,8 +133261,8 @@ }, { "type": "ExpressionStatement", - "start": 30172, - "end": 30246, + "start": 30161, + "end": 30235, "loc": { "start": { "line": 697, @@ -133275,8 +133275,8 @@ }, "expression": { "type": "CallExpression", - "start": 30172, - "end": 30245, + "start": 30161, + "end": 30234, "loc": { "start": { "line": 697, @@ -133289,8 +133289,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30172, - "end": 30180, + "start": 30161, + "end": 30169, "loc": { "start": { "line": 697, @@ -133303,8 +133303,8 @@ }, "object": { "type": "Identifier", - "start": 30172, - "end": 30175, + "start": 30161, + "end": 30164, "loc": { "start": { "line": 697, @@ -133320,8 +133320,8 @@ }, "property": { "type": "Identifier", - "start": 30176, - "end": 30180, + "start": 30165, + "end": 30169, "loc": { "start": { "line": 697, @@ -133340,8 +133340,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30181, - "end": 30244, + "start": 30170, + "end": 30233, "loc": { "start": { "line": 697, @@ -133368,8 +133368,8 @@ }, { "type": "IfStatement", - "start": 30274, - "end": 31059, + "start": 30263, + "end": 31047, "loc": { "start": { "line": 700, @@ -133382,8 +133382,8 @@ }, "test": { "type": "BinaryExpression", - "start": 30278, - "end": 30315, + "start": 30267, + "end": 30304, "loc": { "start": { "line": 700, @@ -133396,8 +133396,8 @@ }, "left": { "type": "MemberExpression", - "start": 30278, - "end": 30311, + "start": 30267, + "end": 30300, "loc": { "start": { "line": 700, @@ -133410,8 +133410,8 @@ }, "object": { "type": "MemberExpression", - "start": 30278, - "end": 30304, + "start": 30267, + "end": 30293, "loc": { "start": { "line": 700, @@ -133424,8 +133424,8 @@ }, "object": { "type": "Identifier", - "start": 30278, - "end": 30289, + "start": 30267, + "end": 30278, "loc": { "start": { "line": 700, @@ -133441,8 +133441,8 @@ }, "property": { "type": "Identifier", - "start": 30290, - "end": 30304, + "start": 30279, + "end": 30293, "loc": { "start": { "line": 700, @@ -133460,8 +133460,8 @@ }, "property": { "type": "Identifier", - "start": 30305, - "end": 30311, + "start": 30294, + "end": 30300, "loc": { "start": { "line": 700, @@ -133480,8 +133480,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 30314, - "end": 30315, + "start": 30303, + "end": 30304, "loc": { "start": { "line": 700, @@ -133501,8 +133501,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 30317, - "end": 31059, + "start": 30306, + "end": 31047, "loc": { "start": { "line": 700, @@ -133516,8 +133516,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 30335, - "end": 30432, + "start": 30324, + "end": 30420, "loc": { "start": { "line": 701, @@ -133525,13 +133525,13 @@ }, "end": { "line": 701, - "column": 113 + "column": 112 } }, "expression": { "type": "CallExpression", - "start": 30335, - "end": 30431, + "start": 30324, + "end": 30419, "loc": { "start": { "line": 701, @@ -133539,13 +133539,13 @@ }, "end": { "line": 701, - "column": 112 + "column": 111 } }, "callee": { "type": "MemberExpression", - "start": 30335, - "end": 30343, + "start": 30324, + "end": 30332, "loc": { "start": { "line": 701, @@ -133558,8 +133558,8 @@ }, "object": { "type": "Identifier", - "start": 30335, - "end": 30338, + "start": 30324, + "end": 30327, "loc": { "start": { "line": 701, @@ -133575,8 +133575,8 @@ }, "property": { "type": "Identifier", - "start": 30339, - "end": 30343, + "start": 30328, + "end": 30332, "loc": { "start": { "line": 701, @@ -133595,8 +133595,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30344, - "end": 30430, + "start": 30333, + "end": 30418, "loc": { "start": { "line": 701, @@ -133604,22 +133604,22 @@ }, "end": { "line": 701, - "column": 111 + "column": 110 } }, "extra": { - "rawValue": " vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);", - "raw": "\" vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);\"" + "rawValue": " vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);", + "raw": "\" vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);\"" }, - "value": " vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);" + "value": " vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);" } ] } }, { "type": "ExpressionStatement", - "start": 30449, - "end": 30545, + "start": 30437, + "end": 30533, "loc": { "start": { "line": 702, @@ -133632,8 +133632,8 @@ }, "expression": { "type": "CallExpression", - "start": 30449, - "end": 30544, + "start": 30437, + "end": 30532, "loc": { "start": { "line": 702, @@ -133646,8 +133646,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30449, - "end": 30457, + "start": 30437, + "end": 30445, "loc": { "start": { "line": 702, @@ -133660,8 +133660,8 @@ }, "object": { "type": "Identifier", - "start": 30449, - "end": 30452, + "start": 30437, + "end": 30440, "loc": { "start": { "line": 702, @@ -133677,8 +133677,8 @@ }, "property": { "type": "Identifier", - "start": 30453, - "end": 30457, + "start": 30441, + "end": 30445, "loc": { "start": { "line": 702, @@ -133697,8 +133697,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30458, - "end": 30543, + "start": 30446, + "end": 30531, "loc": { "start": { "line": 702, @@ -133720,8 +133720,8 @@ }, { "type": "ExpressionStatement", - "start": 30562, - "end": 30664, + "start": 30550, + "end": 30652, "loc": { "start": { "line": 703, @@ -133734,8 +133734,8 @@ }, "expression": { "type": "CallExpression", - "start": 30562, - "end": 30663, + "start": 30550, + "end": 30651, "loc": { "start": { "line": 703, @@ -133748,8 +133748,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30562, - "end": 30570, + "start": 30550, + "end": 30558, "loc": { "start": { "line": 703, @@ -133762,8 +133762,8 @@ }, "object": { "type": "Identifier", - "start": 30562, - "end": 30565, + "start": 30550, + "end": 30553, "loc": { "start": { "line": 703, @@ -133779,8 +133779,8 @@ }, "property": { "type": "Identifier", - "start": 30566, - "end": 30570, + "start": 30554, + "end": 30558, "loc": { "start": { "line": 703, @@ -133799,8 +133799,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30571, - "end": 30662, + "start": 30559, + "end": 30650, "loc": { "start": { "line": 703, @@ -133822,8 +133822,8 @@ }, { "type": "ExpressionStatement", - "start": 30681, - "end": 30795, + "start": 30669, + "end": 30783, "loc": { "start": { "line": 704, @@ -133836,8 +133836,8 @@ }, "expression": { "type": "CallExpression", - "start": 30681, - "end": 30794, + "start": 30669, + "end": 30782, "loc": { "start": { "line": 704, @@ -133850,8 +133850,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30681, - "end": 30689, + "start": 30669, + "end": 30677, "loc": { "start": { "line": 704, @@ -133864,8 +133864,8 @@ }, "object": { "type": "Identifier", - "start": 30681, - "end": 30684, + "start": 30669, + "end": 30672, "loc": { "start": { "line": 704, @@ -133881,8 +133881,8 @@ }, "property": { "type": "Identifier", - "start": 30685, - "end": 30689, + "start": 30673, + "end": 30677, "loc": { "start": { "line": 704, @@ -133901,8 +133901,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30690, - "end": 30793, + "start": 30678, + "end": 30781, "loc": { "start": { "line": 704, @@ -133924,8 +133924,8 @@ }, { "type": "ExpressionStatement", - "start": 30812, - "end": 30950, + "start": 30800, + "end": 30938, "loc": { "start": { "line": 705, @@ -133938,8 +133938,8 @@ }, "expression": { "type": "CallExpression", - "start": 30812, - "end": 30949, + "start": 30800, + "end": 30937, "loc": { "start": { "line": 705, @@ -133952,8 +133952,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30812, - "end": 30820, + "start": 30800, + "end": 30808, "loc": { "start": { "line": 705, @@ -133966,8 +133966,8 @@ }, "object": { "type": "Identifier", - "start": 30812, - "end": 30815, + "start": 30800, + "end": 30803, "loc": { "start": { "line": 705, @@ -133983,8 +133983,8 @@ }, "property": { "type": "Identifier", - "start": 30816, - "end": 30820, + "start": 30804, + "end": 30808, "loc": { "start": { "line": 705, @@ -134003,8 +134003,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30821, - "end": 30948, + "start": 30809, + "end": 30936, "loc": { "start": { "line": 705, @@ -134026,8 +134026,8 @@ }, { "type": "ExpressionStatement", - "start": 30967, - "end": 31045, + "start": 30955, + "end": 31033, "loc": { "start": { "line": 706, @@ -134040,8 +134040,8 @@ }, "expression": { "type": "CallExpression", - "start": 30967, - "end": 31044, + "start": 30955, + "end": 31032, "loc": { "start": { "line": 706, @@ -134054,8 +134054,8 @@ }, "callee": { "type": "MemberExpression", - "start": 30967, - "end": 30975, + "start": 30955, + "end": 30963, "loc": { "start": { "line": 706, @@ -134068,8 +134068,8 @@ }, "object": { "type": "Identifier", - "start": 30967, - "end": 30970, + "start": 30955, + "end": 30958, "loc": { "start": { "line": 706, @@ -134085,8 +134085,8 @@ }, "property": { "type": "Identifier", - "start": 30971, - "end": 30975, + "start": 30959, + "end": 30963, "loc": { "start": { "line": 706, @@ -134105,8 +134105,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 30976, - "end": 31043, + "start": 30964, + "end": 31031, "loc": { "start": { "line": 706, @@ -134133,8 +134133,8 @@ }, { "type": "ExpressionStatement", - "start": 31073, - "end": 31087, + "start": 31061, + "end": 31075, "loc": { "start": { "line": 709, @@ -134147,8 +134147,8 @@ }, "expression": { "type": "CallExpression", - "start": 31073, - "end": 31086, + "start": 31061, + "end": 31074, "loc": { "start": { "line": 709, @@ -134161,8 +134161,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31073, - "end": 31081, + "start": 31061, + "end": 31069, "loc": { "start": { "line": 709, @@ -134175,8 +134175,8 @@ }, "object": { "type": "Identifier", - "start": 31073, - "end": 31076, + "start": 31061, + "end": 31064, "loc": { "start": { "line": 709, @@ -134192,8 +134192,8 @@ }, "property": { "type": "Identifier", - "start": 31077, - "end": 31081, + "start": 31065, + "end": 31069, "loc": { "start": { "line": 709, @@ -134212,8 +134212,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31082, - "end": 31085, + "start": 31070, + "end": 31073, "loc": { "start": { "line": 709, @@ -134242,8 +134242,8 @@ { "type": "CommentLine", "value": " MAIN LIGHTING COMPUTATION FUNCTION", - "start": 31107, - "end": 31144, + "start": 31095, + "end": 31132, "loc": { "start": { "line": 712, @@ -134259,8 +134259,8 @@ }, { "type": "ExpressionStatement", - "start": 31154, - "end": 31323, + "start": 31142, + "end": 31311, "loc": { "start": { "line": 714, @@ -134273,8 +134273,8 @@ }, "expression": { "type": "CallExpression", - "start": 31154, - "end": 31322, + "start": 31142, + "end": 31310, "loc": { "start": { "line": 714, @@ -134287,8 +134287,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31154, - "end": 31162, + "start": 31142, + "end": 31150, "loc": { "start": { "line": 714, @@ -134301,8 +134301,8 @@ }, "object": { "type": "Identifier", - "start": 31154, - "end": 31157, + "start": 31142, + "end": 31145, "loc": { "start": { "line": 714, @@ -134319,8 +134319,8 @@ }, "property": { "type": "Identifier", - "start": 31158, - "end": 31162, + "start": 31146, + "end": 31150, "loc": { "start": { "line": 714, @@ -134340,8 +134340,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31163, - "end": 31321, + "start": 31151, + "end": 31309, "loc": { "start": { "line": 714, @@ -134365,8 +134365,8 @@ { "type": "CommentLine", "value": " MAIN LIGHTING COMPUTATION FUNCTION", - "start": 31107, - "end": 31144, + "start": 31095, + "end": 31132, "loc": { "start": { "line": 712, @@ -134382,8 +134382,8 @@ }, { "type": "ExpressionStatement", - "start": 31332, - "end": 31426, + "start": 31320, + "end": 31414, "loc": { "start": { "line": 715, @@ -134396,8 +134396,8 @@ }, "expression": { "type": "CallExpression", - "start": 31332, - "end": 31425, + "start": 31320, + "end": 31413, "loc": { "start": { "line": 715, @@ -134410,8 +134410,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31332, - "end": 31340, + "start": 31320, + "end": 31328, "loc": { "start": { "line": 715, @@ -134424,8 +134424,8 @@ }, "object": { "type": "Identifier", - "start": 31332, - "end": 31335, + "start": 31320, + "end": 31323, "loc": { "start": { "line": 715, @@ -134441,8 +134441,8 @@ }, "property": { "type": "Identifier", - "start": 31336, - "end": 31340, + "start": 31324, + "end": 31328, "loc": { "start": { "line": 715, @@ -134461,8 +134461,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31341, - "end": 31424, + "start": 31329, + "end": 31412, "loc": { "start": { "line": 715, @@ -134484,8 +134484,8 @@ }, { "type": "ExpressionStatement", - "start": 31435, - "end": 31502, + "start": 31423, + "end": 31490, "loc": { "start": { "line": 716, @@ -134498,8 +134498,8 @@ }, "expression": { "type": "CallExpression", - "start": 31435, - "end": 31501, + "start": 31423, + "end": 31489, "loc": { "start": { "line": 716, @@ -134512,8 +134512,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31435, - "end": 31443, + "start": 31423, + "end": 31431, "loc": { "start": { "line": 716, @@ -134526,8 +134526,8 @@ }, "object": { "type": "Identifier", - "start": 31435, - "end": 31438, + "start": 31423, + "end": 31426, "loc": { "start": { "line": 716, @@ -134543,8 +134543,8 @@ }, "property": { "type": "Identifier", - "start": 31439, - "end": 31443, + "start": 31427, + "end": 31431, "loc": { "start": { "line": 716, @@ -134563,8 +134563,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31444, - "end": 31500, + "start": 31432, + "end": 31488, "loc": { "start": { "line": 716, @@ -134586,8 +134586,8 @@ }, { "type": "ExpressionStatement", - "start": 31511, - "end": 31607, + "start": 31499, + "end": 31595, "loc": { "start": { "line": 717, @@ -134600,8 +134600,8 @@ }, "expression": { "type": "CallExpression", - "start": 31511, - "end": 31606, + "start": 31499, + "end": 31594, "loc": { "start": { "line": 717, @@ -134614,8 +134614,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31511, - "end": 31519, + "start": 31499, + "end": 31507, "loc": { "start": { "line": 717, @@ -134628,8 +134628,8 @@ }, "object": { "type": "Identifier", - "start": 31511, - "end": 31514, + "start": 31499, + "end": 31502, "loc": { "start": { "line": 717, @@ -134645,8 +134645,8 @@ }, "property": { "type": "Identifier", - "start": 31515, - "end": 31519, + "start": 31503, + "end": 31507, "loc": { "start": { "line": 717, @@ -134665,8 +134665,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31520, - "end": 31605, + "start": 31508, + "end": 31593, "loc": { "start": { "line": 717, @@ -134688,8 +134688,8 @@ }, { "type": "ExpressionStatement", - "start": 31616, - "end": 31767, + "start": 31604, + "end": 31755, "loc": { "start": { "line": 718, @@ -134702,8 +134702,8 @@ }, "expression": { "type": "CallExpression", - "start": 31616, - "end": 31766, + "start": 31604, + "end": 31754, "loc": { "start": { "line": 718, @@ -134716,8 +134716,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31616, - "end": 31624, + "start": 31604, + "end": 31612, "loc": { "start": { "line": 718, @@ -134730,8 +134730,8 @@ }, "object": { "type": "Identifier", - "start": 31616, - "end": 31619, + "start": 31604, + "end": 31607, "loc": { "start": { "line": 718, @@ -134747,8 +134747,8 @@ }, "property": { "type": "Identifier", - "start": 31620, - "end": 31624, + "start": 31608, + "end": 31612, "loc": { "start": { "line": 718, @@ -134767,8 +134767,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31625, - "end": 31765, + "start": 31613, + "end": 31753, "loc": { "start": { "line": 718, @@ -134790,8 +134790,8 @@ }, { "type": "ExpressionStatement", - "start": 31776, - "end": 31790, + "start": 31764, + "end": 31778, "loc": { "start": { "line": 719, @@ -134804,8 +134804,8 @@ }, "expression": { "type": "CallExpression", - "start": 31776, - "end": 31789, + "start": 31764, + "end": 31777, "loc": { "start": { "line": 719, @@ -134818,8 +134818,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31776, - "end": 31784, + "start": 31764, + "end": 31772, "loc": { "start": { "line": 719, @@ -134832,8 +134832,8 @@ }, "object": { "type": "Identifier", - "start": 31776, - "end": 31779, + "start": 31764, + "end": 31767, "loc": { "start": { "line": 719, @@ -134849,8 +134849,8 @@ }, "property": { "type": "Identifier", - "start": 31780, - "end": 31784, + "start": 31768, + "end": 31772, "loc": { "start": { "line": 719, @@ -134869,8 +134869,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31785, - "end": 31788, + "start": 31773, + "end": 31776, "loc": { "start": { "line": 719, @@ -134892,8 +134892,8 @@ }, { "type": "ExpressionStatement", - "start": 31800, - "end": 31830, + "start": 31788, + "end": 31818, "loc": { "start": { "line": 721, @@ -134906,8 +134906,8 @@ }, "expression": { "type": "CallExpression", - "start": 31800, - "end": 31829, + "start": 31788, + "end": 31817, "loc": { "start": { "line": 721, @@ -134920,8 +134920,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31800, - "end": 31808, + "start": 31788, + "end": 31796, "loc": { "start": { "line": 721, @@ -134934,8 +134934,8 @@ }, "object": { "type": "Identifier", - "start": 31800, - "end": 31803, + "start": 31788, + "end": 31791, "loc": { "start": { "line": 721, @@ -134951,8 +134951,8 @@ }, "property": { "type": "Identifier", - "start": 31804, - "end": 31808, + "start": 31792, + "end": 31796, "loc": { "start": { "line": 721, @@ -134971,8 +134971,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31809, - "end": 31828, + "start": 31797, + "end": 31816, "loc": { "start": { "line": 721, @@ -134994,8 +134994,8 @@ }, { "type": "IfStatement", - "start": 31840, - "end": 33158, + "start": 31828, + "end": 33146, "loc": { "start": { "line": 723, @@ -135008,8 +135008,8 @@ }, "test": { "type": "Identifier", - "start": 31844, - "end": 31852, + "start": 31832, + "end": 31840, "loc": { "start": { "line": 723, @@ -135025,8 +135025,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 31854, - "end": 33158, + "start": 31842, + "end": 33146, "loc": { "start": { "line": 723, @@ -135040,8 +135040,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 31868, - "end": 31925, + "start": 31856, + "end": 31913, "loc": { "start": { "line": 724, @@ -135054,8 +135054,8 @@ }, "expression": { "type": "CallExpression", - "start": 31868, - "end": 31924, + "start": 31856, + "end": 31912, "loc": { "start": { "line": 724, @@ -135068,8 +135068,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31868, - "end": 31876, + "start": 31856, + "end": 31864, "loc": { "start": { "line": 724, @@ -135082,8 +135082,8 @@ }, "object": { "type": "Identifier", - "start": 31868, - "end": 31871, + "start": 31856, + "end": 31859, "loc": { "start": { "line": 724, @@ -135099,8 +135099,8 @@ }, "property": { "type": "Identifier", - "start": 31872, - "end": 31876, + "start": 31860, + "end": 31864, "loc": { "start": { "line": 724, @@ -135119,8 +135119,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31877, - "end": 31923, + "start": 31865, + "end": 31911, "loc": { "start": { "line": 724, @@ -135142,8 +135142,8 @@ }, { "type": "ExpressionStatement", - "start": 31938, - "end": 31969, + "start": 31926, + "end": 31957, "loc": { "start": { "line": 725, @@ -135156,8 +135156,8 @@ }, "expression": { "type": "CallExpression", - "start": 31938, - "end": 31968, + "start": 31926, + "end": 31956, "loc": { "start": { "line": 725, @@ -135170,8 +135170,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31938, - "end": 31946, + "start": 31926, + "end": 31934, "loc": { "start": { "line": 725, @@ -135184,8 +135184,8 @@ }, "object": { "type": "Identifier", - "start": 31938, - "end": 31941, + "start": 31926, + "end": 31929, "loc": { "start": { "line": 725, @@ -135201,8 +135201,8 @@ }, "property": { "type": "Identifier", - "start": 31942, - "end": 31946, + "start": 31930, + "end": 31934, "loc": { "start": { "line": 725, @@ -135221,8 +135221,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31947, - "end": 31967, + "start": 31935, + "end": 31955, "loc": { "start": { "line": 725, @@ -135244,8 +135244,8 @@ }, { "type": "ExpressionStatement", - "start": 31982, - "end": 32014, + "start": 31970, + "end": 32002, "loc": { "start": { "line": 726, @@ -135258,8 +135258,8 @@ }, "expression": { "type": "CallExpression", - "start": 31982, - "end": 32013, + "start": 31970, + "end": 32001, "loc": { "start": { "line": 726, @@ -135272,8 +135272,8 @@ }, "callee": { "type": "MemberExpression", - "start": 31982, - "end": 31990, + "start": 31970, + "end": 31978, "loc": { "start": { "line": 726, @@ -135286,8 +135286,8 @@ }, "object": { "type": "Identifier", - "start": 31982, - "end": 31985, + "start": 31970, + "end": 31973, "loc": { "start": { "line": 726, @@ -135303,8 +135303,8 @@ }, "property": { "type": "Identifier", - "start": 31986, - "end": 31990, + "start": 31974, + "end": 31978, "loc": { "start": { "line": 726, @@ -135323,8 +135323,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 31991, - "end": 32012, + "start": 31979, + "end": 32000, "loc": { "start": { "line": 726, @@ -135346,8 +135346,8 @@ }, { "type": "ForStatement", - "start": 32027, - "end": 32361, + "start": 32015, + "end": 32349, "loc": { "start": { "line": 727, @@ -135360,8 +135360,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 32032, - "end": 32088, + "start": 32020, + "end": 32076, "loc": { "start": { "line": 727, @@ -135375,8 +135375,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 32036, - "end": 32041, + "start": 32024, + "end": 32029, "loc": { "start": { "line": 727, @@ -135389,8 +135389,8 @@ }, "id": { "type": "Identifier", - "start": 32036, - "end": 32037, + "start": 32024, + "end": 32025, "loc": { "start": { "line": 727, @@ -135406,8 +135406,8 @@ }, "init": { "type": "NumericLiteral", - "start": 32040, - "end": 32041, + "start": 32028, + "end": 32029, "loc": { "start": { "line": 727, @@ -135427,8 +135427,8 @@ }, { "type": "VariableDeclarator", - "start": 32043, - "end": 32088, + "start": 32031, + "end": 32076, "loc": { "start": { "line": 727, @@ -135441,8 +135441,8 @@ }, "id": { "type": "Identifier", - "start": 32043, - "end": 32046, + "start": 32031, + "end": 32034, "loc": { "start": { "line": 727, @@ -135458,8 +135458,8 @@ }, "init": { "type": "MemberExpression", - "start": 32049, - "end": 32088, + "start": 32037, + "end": 32076, "loc": { "start": { "line": 727, @@ -135472,8 +135472,8 @@ }, "object": { "type": "MemberExpression", - "start": 32049, - "end": 32081, + "start": 32037, + "end": 32069, "loc": { "start": { "line": 727, @@ -135486,8 +135486,8 @@ }, "object": { "type": "Identifier", - "start": 32049, - "end": 32067, + "start": 32037, + "end": 32055, "loc": { "start": { "line": 727, @@ -135503,8 +135503,8 @@ }, "property": { "type": "Identifier", - "start": 32068, - "end": 32081, + "start": 32056, + "end": 32069, "loc": { "start": { "line": 727, @@ -135522,8 +135522,8 @@ }, "property": { "type": "Identifier", - "start": 32082, - "end": 32088, + "start": 32070, + "end": 32076, "loc": { "start": { "line": 727, @@ -135545,8 +135545,8 @@ }, "test": { "type": "BinaryExpression", - "start": 32090, - "end": 32097, + "start": 32078, + "end": 32085, "loc": { "start": { "line": 727, @@ -135559,8 +135559,8 @@ }, "left": { "type": "Identifier", - "start": 32090, - "end": 32091, + "start": 32078, + "end": 32079, "loc": { "start": { "line": 727, @@ -135577,8 +135577,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 32094, - "end": 32097, + "start": 32082, + "end": 32085, "loc": { "start": { "line": 727, @@ -135595,8 +135595,8 @@ }, "update": { "type": "UpdateExpression", - "start": 32099, - "end": 32102, + "start": 32087, + "end": 32090, "loc": { "start": { "line": 727, @@ -135611,8 +135611,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 32099, - "end": 32100, + "start": 32087, + "end": 32088, "loc": { "start": { "line": 727, @@ -135629,8 +135629,8 @@ }, "body": { "type": "BlockStatement", - "start": 32104, - "end": 32361, + "start": 32092, + "end": 32349, "loc": { "start": { "line": 727, @@ -135644,8 +135644,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 32122, - "end": 32169, + "start": 32110, + "end": 32157, "loc": { "start": { "line": 728, @@ -135658,8 +135658,8 @@ }, "expression": { "type": "CallExpression", - "start": 32122, - "end": 32168, + "start": 32110, + "end": 32156, "loc": { "start": { "line": 728, @@ -135672,8 +135672,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32122, - "end": 32130, + "start": 32110, + "end": 32118, "loc": { "start": { "line": 728, @@ -135686,8 +135686,8 @@ }, "object": { "type": "Identifier", - "start": 32122, - "end": 32125, + "start": 32110, + "end": 32113, "loc": { "start": { "line": 728, @@ -135703,8 +135703,8 @@ }, "property": { "type": "Identifier", - "start": 32126, - "end": 32130, + "start": 32114, + "end": 32118, "loc": { "start": { "line": 728, @@ -135723,8 +135723,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 32131, - "end": 32167, + "start": 32119, + "end": 32155, "loc": { "start": { "line": 728, @@ -135737,8 +135737,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32131, - "end": 32159, + "start": 32119, + "end": 32147, "loc": { "start": { "line": 728, @@ -135751,8 +135751,8 @@ }, "left": { "type": "StringLiteral", - "start": 32131, - "end": 32155, + "start": 32119, + "end": 32143, "loc": { "start": { "line": 728, @@ -135772,8 +135772,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32158, - "end": 32159, + "start": 32146, + "end": 32147, "loc": { "start": { "line": 728, @@ -135791,8 +135791,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32162, - "end": 32167, + "start": 32150, + "end": 32155, "loc": { "start": { "line": 728, @@ -135815,8 +135815,8 @@ }, { "type": "ExpressionStatement", - "start": 32186, - "end": 32316, + "start": 32174, + "end": 32304, "loc": { "start": { "line": 729, @@ -135829,8 +135829,8 @@ }, "expression": { "type": "CallExpression", - "start": 32186, - "end": 32315, + "start": 32174, + "end": 32303, "loc": { "start": { "line": 729, @@ -135843,8 +135843,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32186, - "end": 32194, + "start": 32174, + "end": 32182, "loc": { "start": { "line": 729, @@ -135857,8 +135857,8 @@ }, "object": { "type": "Identifier", - "start": 32186, - "end": 32189, + "start": 32174, + "end": 32177, "loc": { "start": { "line": 729, @@ -135874,8 +135874,8 @@ }, "property": { "type": "Identifier", - "start": 32190, - "end": 32194, + "start": 32178, + "end": 32182, "loc": { "start": { "line": 729, @@ -135894,8 +135894,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 32195, - "end": 32314, + "start": 32183, + "end": 32302, "loc": { "start": { "line": 729, @@ -135908,8 +135908,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32195, - "end": 32289, + "start": 32183, + "end": 32277, "loc": { "start": { "line": 729, @@ -135922,8 +135922,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32195, - "end": 32285, + "start": 32183, + "end": 32273, "loc": { "start": { "line": 729, @@ -135936,8 +135936,8 @@ }, "left": { "type": "BinaryExpression", - "start": 32195, - "end": 32238, + "start": 32183, + "end": 32226, "loc": { "start": { "line": 729, @@ -135950,8 +135950,8 @@ }, "left": { "type": "StringLiteral", - "start": 32195, - "end": 32234, + "start": 32183, + "end": 32222, "loc": { "start": { "line": 729, @@ -135971,8 +135971,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32237, - "end": 32238, + "start": 32225, + "end": 32226, "loc": { "start": { "line": 729, @@ -135990,8 +135990,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32241, - "end": 32285, + "start": 32229, + "end": 32273, "loc": { "start": { "line": 729, @@ -136012,8 +136012,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 32288, - "end": 32289, + "start": 32276, + "end": 32277, "loc": { "start": { "line": 729, @@ -136031,8 +136031,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 32292, - "end": 32314, + "start": 32280, + "end": 32302, "loc": { "start": { "line": 729, @@ -136055,8 +136055,8 @@ }, { "type": "ExpressionStatement", - "start": 32333, - "end": 32347, + "start": 32321, + "end": 32335, "loc": { "start": { "line": 730, @@ -136069,8 +136069,8 @@ }, "expression": { "type": "CallExpression", - "start": 32333, - "end": 32346, + "start": 32321, + "end": 32334, "loc": { "start": { "line": 730, @@ -136083,8 +136083,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32333, - "end": 32341, + "start": 32321, + "end": 32329, "loc": { "start": { "line": 730, @@ -136097,8 +136097,8 @@ }, "object": { "type": "Identifier", - "start": 32333, - "end": 32336, + "start": 32321, + "end": 32324, "loc": { "start": { "line": 730, @@ -136114,8 +136114,8 @@ }, "property": { "type": "Identifier", - "start": 32337, - "end": 32341, + "start": 32325, + "end": 32329, "loc": { "start": { "line": 730, @@ -136134,8 +136134,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32342, - "end": 32345, + "start": 32330, + "end": 32333, "loc": { "start": { "line": 730, @@ -136161,8 +136161,8 @@ }, { "type": "IfStatement", - "start": 32374, - "end": 33121, + "start": 32362, + "end": 33109, "loc": { "start": { "line": 732, @@ -136175,8 +136175,8 @@ }, "test": { "type": "Identifier", - "start": 32378, - "end": 32390, + "start": 32366, + "end": 32378, "loc": { "start": { "line": 732, @@ -136192,8 +136192,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 32392, - "end": 32974, + "start": 32380, + "end": 32962, "loc": { "start": { "line": 732, @@ -136207,8 +136207,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 32410, - "end": 32464, + "start": 32398, + "end": 32452, "loc": { "start": { "line": 733, @@ -136221,8 +136221,8 @@ }, "expression": { "type": "CallExpression", - "start": 32410, - "end": 32463, + "start": 32398, + "end": 32451, "loc": { "start": { "line": 733, @@ -136235,8 +136235,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32410, - "end": 32418, + "start": 32398, + "end": 32406, "loc": { "start": { "line": 733, @@ -136249,8 +136249,8 @@ }, "object": { "type": "Identifier", - "start": 32410, - "end": 32413, + "start": 32398, + "end": 32401, "loc": { "start": { "line": 733, @@ -136266,8 +136266,8 @@ }, "property": { "type": "Identifier", - "start": 32414, - "end": 32418, + "start": 32402, + "end": 32406, "loc": { "start": { "line": 733, @@ -136286,8 +136286,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32419, - "end": 32462, + "start": 32407, + "end": 32450, "loc": { "start": { "line": 733, @@ -136309,8 +136309,8 @@ }, { "type": "ExpressionStatement", - "start": 32481, - "end": 32508, + "start": 32469, + "end": 32496, "loc": { "start": { "line": 734, @@ -136323,8 +136323,8 @@ }, "expression": { "type": "CallExpression", - "start": 32481, - "end": 32507, + "start": 32469, + "end": 32495, "loc": { "start": { "line": 734, @@ -136337,8 +136337,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32481, - "end": 32489, + "start": 32469, + "end": 32477, "loc": { "start": { "line": 734, @@ -136351,8 +136351,8 @@ }, "object": { "type": "Identifier", - "start": 32481, - "end": 32484, + "start": 32469, + "end": 32472, "loc": { "start": { "line": 734, @@ -136368,8 +136368,8 @@ }, "property": { "type": "Identifier", - "start": 32485, - "end": 32489, + "start": 32473, + "end": 32477, "loc": { "start": { "line": 734, @@ -136388,8 +136388,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32490, - "end": 32506, + "start": 32478, + "end": 32494, "loc": { "start": { "line": 734, @@ -136411,8 +136411,8 @@ }, { "type": "ExpressionStatement", - "start": 32525, - "end": 32541, + "start": 32513, + "end": 32529, "loc": { "start": { "line": 735, @@ -136425,8 +136425,8 @@ }, "expression": { "type": "CallExpression", - "start": 32525, - "end": 32540, + "start": 32513, + "end": 32528, "loc": { "start": { "line": 735, @@ -136439,8 +136439,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32525, - "end": 32533, + "start": 32513, + "end": 32521, "loc": { "start": { "line": 735, @@ -136453,8 +136453,8 @@ }, "object": { "type": "Identifier", - "start": 32525, - "end": 32528, + "start": 32513, + "end": 32516, "loc": { "start": { "line": 735, @@ -136470,8 +136470,8 @@ }, "property": { "type": "Identifier", - "start": 32529, - "end": 32533, + "start": 32517, + "end": 32521, "loc": { "start": { "line": 735, @@ -136490,8 +136490,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32534, - "end": 32539, + "start": 32522, + "end": 32527, "loc": { "start": { "line": 735, @@ -136513,8 +136513,8 @@ }, { "type": "ExpressionStatement", - "start": 32558, - "end": 32591, + "start": 32546, + "end": 32579, "loc": { "start": { "line": 736, @@ -136527,8 +136527,8 @@ }, "expression": { "type": "CallExpression", - "start": 32558, - "end": 32590, + "start": 32546, + "end": 32578, "loc": { "start": { "line": 736, @@ -136541,8 +136541,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32558, - "end": 32566, + "start": 32546, + "end": 32554, "loc": { "start": { "line": 736, @@ -136555,8 +136555,8 @@ }, "object": { "type": "Identifier", - "start": 32558, - "end": 32561, + "start": 32546, + "end": 32549, "loc": { "start": { "line": 736, @@ -136572,8 +136572,8 @@ }, "property": { "type": "Identifier", - "start": 32562, - "end": 32566, + "start": 32550, + "end": 32554, "loc": { "start": { "line": 736, @@ -136592,8 +136592,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32567, - "end": 32589, + "start": 32555, + "end": 32577, "loc": { "start": { "line": 736, @@ -136615,8 +136615,8 @@ }, { "type": "ExpressionStatement", - "start": 32608, - "end": 32665, + "start": 32596, + "end": 32653, "loc": { "start": { "line": 737, @@ -136629,8 +136629,8 @@ }, "expression": { "type": "CallExpression", - "start": 32608, - "end": 32664, + "start": 32596, + "end": 32652, "loc": { "start": { "line": 737, @@ -136643,8 +136643,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32608, - "end": 32616, + "start": 32596, + "end": 32604, "loc": { "start": { "line": 737, @@ -136657,8 +136657,8 @@ }, "object": { "type": "Identifier", - "start": 32608, - "end": 32611, + "start": 32596, + "end": 32599, "loc": { "start": { "line": 737, @@ -136674,8 +136674,8 @@ }, "property": { "type": "Identifier", - "start": 32612, - "end": 32616, + "start": 32600, + "end": 32604, "loc": { "start": { "line": 737, @@ -136694,8 +136694,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32617, - "end": 32663, + "start": 32605, + "end": 32651, "loc": { "start": { "line": 737, @@ -136717,8 +136717,8 @@ }, { "type": "IfStatement", - "start": 32682, - "end": 32890, + "start": 32670, + "end": 32878, "loc": { "start": { "line": 738, @@ -136731,8 +136731,8 @@ }, "test": { "type": "LogicalExpression", - "start": 32686, - "end": 32774, + "start": 32674, + "end": 32762, "loc": { "start": { "line": 738, @@ -136745,8 +136745,8 @@ }, "left": { "type": "MemberExpression", - "start": 32686, - "end": 32721, + "start": 32674, + "end": 32709, "loc": { "start": { "line": 738, @@ -136759,8 +136759,8 @@ }, "object": { "type": "Identifier", - "start": 32686, - "end": 32691, + "start": 32674, + "end": 32679, "loc": { "start": { "line": 738, @@ -136776,8 +136776,8 @@ }, "property": { "type": "Identifier", - "start": 32692, - "end": 32721, + "start": 32680, + "end": 32709, "loc": { "start": { "line": 738, @@ -136796,8 +136796,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 32725, - "end": 32774, + "start": 32713, + "end": 32762, "loc": { "start": { "line": 738, @@ -136810,8 +136810,8 @@ }, "object": { "type": "MemberExpression", - "start": 32725, - "end": 32756, + "start": 32713, + "end": 32744, "loc": { "start": { "line": 738, @@ -136824,8 +136824,8 @@ }, "object": { "type": "Identifier", - "start": 32725, - "end": 32735, + "start": 32713, + "end": 32723, "loc": { "start": { "line": 738, @@ -136841,8 +136841,8 @@ }, "property": { "type": "Identifier", - "start": 32736, - "end": 32756, + "start": 32724, + "end": 32744, "loc": { "start": { "line": 738, @@ -136860,8 +136860,8 @@ }, "property": { "type": "StringLiteral", - "start": 32757, - "end": 32773, + "start": 32745, + "end": 32761, "loc": { "start": { "line": 738, @@ -136883,8 +136883,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 32776, - "end": 32890, + "start": 32764, + "end": 32878, "loc": { "start": { "line": 738, @@ -136898,8 +136898,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 32798, - "end": 32872, + "start": 32786, + "end": 32860, "loc": { "start": { "line": 739, @@ -136912,8 +136912,8 @@ }, "expression": { "type": "CallExpression", - "start": 32798, - "end": 32871, + "start": 32786, + "end": 32859, "loc": { "start": { "line": 739, @@ -136926,8 +136926,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32798, - "end": 32806, + "start": 32786, + "end": 32794, "loc": { "start": { "line": 739, @@ -136940,8 +136940,8 @@ }, "object": { "type": "Identifier", - "start": 32798, - "end": 32801, + "start": 32786, + "end": 32789, "loc": { "start": { "line": 739, @@ -136957,8 +136957,8 @@ }, "property": { "type": "Identifier", - "start": 32802, - "end": 32806, + "start": 32790, + "end": 32794, "loc": { "start": { "line": 739, @@ -136977,8 +136977,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32807, - "end": 32870, + "start": 32795, + "end": 32858, "loc": { "start": { "line": 739, @@ -137005,8 +137005,8 @@ }, { "type": "ExpressionStatement", - "start": 32907, - "end": 32929, + "start": 32895, + "end": 32917, "loc": { "start": { "line": 741, @@ -137019,8 +137019,8 @@ }, "expression": { "type": "CallExpression", - "start": 32907, - "end": 32928, + "start": 32895, + "end": 32916, "loc": { "start": { "line": 741, @@ -137033,8 +137033,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32907, - "end": 32915, + "start": 32895, + "end": 32903, "loc": { "start": { "line": 741, @@ -137047,8 +137047,8 @@ }, "object": { "type": "Identifier", - "start": 32907, - "end": 32910, + "start": 32895, + "end": 32898, "loc": { "start": { "line": 741, @@ -137064,8 +137064,8 @@ }, "property": { "type": "Identifier", - "start": 32911, - "end": 32915, + "start": 32899, + "end": 32903, "loc": { "start": { "line": 741, @@ -137084,8 +137084,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32916, - "end": 32927, + "start": 32904, + "end": 32915, "loc": { "start": { "line": 741, @@ -137107,8 +137107,8 @@ }, { "type": "ExpressionStatement", - "start": 32946, - "end": 32960, + "start": 32934, + "end": 32948, "loc": { "start": { "line": 742, @@ -137121,8 +137121,8 @@ }, "expression": { "type": "CallExpression", - "start": 32946, - "end": 32959, + "start": 32934, + "end": 32947, "loc": { "start": { "line": 742, @@ -137135,8 +137135,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32946, - "end": 32954, + "start": 32934, + "end": 32942, "loc": { "start": { "line": 742, @@ -137149,8 +137149,8 @@ }, "object": { "type": "Identifier", - "start": 32946, - "end": 32949, + "start": 32934, + "end": 32937, "loc": { "start": { "line": 742, @@ -137166,8 +137166,8 @@ }, "property": { "type": "Identifier", - "start": 32950, - "end": 32954, + "start": 32938, + "end": 32942, "loc": { "start": { "line": 742, @@ -137186,8 +137186,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 32955, - "end": 32958, + "start": 32943, + "end": 32946, "loc": { "start": { "line": 742, @@ -137212,8 +137212,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 32980, - "end": 33121, + "start": 32968, + "end": 33109, "loc": { "start": { "line": 743, @@ -137227,8 +137227,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 32998, - "end": 33031, + "start": 32986, + "end": 33019, "loc": { "start": { "line": 744, @@ -137241,8 +137241,8 @@ }, "expression": { "type": "CallExpression", - "start": 32998, - "end": 33030, + "start": 32986, + "end": 33018, "loc": { "start": { "line": 744, @@ -137255,8 +137255,8 @@ }, "callee": { "type": "MemberExpression", - "start": 32998, - "end": 33006, + "start": 32986, + "end": 32994, "loc": { "start": { "line": 744, @@ -137269,8 +137269,8 @@ }, "object": { "type": "Identifier", - "start": 32998, - "end": 33001, + "start": 32986, + "end": 32989, "loc": { "start": { "line": 744, @@ -137286,8 +137286,8 @@ }, "property": { "type": "Identifier", - "start": 33002, - "end": 33006, + "start": 32990, + "end": 32994, "loc": { "start": { "line": 744, @@ -137306,8 +137306,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33007, - "end": 33029, + "start": 32995, + "end": 33017, "loc": { "start": { "line": 744, @@ -137329,8 +137329,8 @@ }, { "type": "ExpressionStatement", - "start": 33048, - "end": 33074, + "start": 33036, + "end": 33062, "loc": { "start": { "line": 745, @@ -137343,8 +137343,8 @@ }, "expression": { "type": "CallExpression", - "start": 33048, - "end": 33074, + "start": 33036, + "end": 33062, "loc": { "start": { "line": 745, @@ -137357,8 +137357,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33048, - "end": 33056, + "start": 33036, + "end": 33044, "loc": { "start": { "line": 745, @@ -137371,8 +137371,8 @@ }, "object": { "type": "Identifier", - "start": 33048, - "end": 33051, + "start": 33036, + "end": 33039, "loc": { "start": { "line": 745, @@ -137388,8 +137388,8 @@ }, "property": { "type": "Identifier", - "start": 33052, - "end": 33056, + "start": 33040, + "end": 33044, "loc": { "start": { "line": 745, @@ -137408,8 +137408,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33057, - "end": 33073, + "start": 33045, + "end": 33061, "loc": { "start": { "line": 745, @@ -137431,8 +137431,8 @@ }, { "type": "ExpressionStatement", - "start": 33091, - "end": 33107, + "start": 33079, + "end": 33095, "loc": { "start": { "line": 746, @@ -137445,8 +137445,8 @@ }, "expression": { "type": "CallExpression", - "start": 33091, - "end": 33106, + "start": 33079, + "end": 33094, "loc": { "start": { "line": 746, @@ -137459,8 +137459,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33091, - "end": 33099, + "start": 33079, + "end": 33087, "loc": { "start": { "line": 746, @@ -137473,8 +137473,8 @@ }, "object": { "type": "Identifier", - "start": 33091, - "end": 33094, + "start": 33079, + "end": 33082, "loc": { "start": { "line": 746, @@ -137490,8 +137490,8 @@ }, "property": { "type": "Identifier", - "start": 33095, - "end": 33099, + "start": 33083, + "end": 33087, "loc": { "start": { "line": 746, @@ -137510,8 +137510,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33100, - "end": 33105, + "start": 33088, + "end": 33093, "loc": { "start": { "line": 746, @@ -137537,8 +137537,8 @@ }, { "type": "ExpressionStatement", - "start": 33134, - "end": 33148, + "start": 33122, + "end": 33136, "loc": { "start": { "line": 748, @@ -137551,8 +137551,8 @@ }, "expression": { "type": "CallExpression", - "start": 33134, - "end": 33147, + "start": 33122, + "end": 33135, "loc": { "start": { "line": 748, @@ -137565,8 +137565,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33134, - "end": 33142, + "start": 33122, + "end": 33130, "loc": { "start": { "line": 748, @@ -137579,8 +137579,8 @@ }, "object": { "type": "Identifier", - "start": 33134, - "end": 33137, + "start": 33122, + "end": 33125, "loc": { "start": { "line": 748, @@ -137596,8 +137596,8 @@ }, "property": { "type": "Identifier", - "start": 33138, - "end": 33142, + "start": 33126, + "end": 33130, "loc": { "start": { "line": 748, @@ -137616,8 +137616,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33143, - "end": 33146, + "start": 33131, + "end": 33134, "loc": { "start": { "line": 748, @@ -137644,8 +137644,8 @@ }, { "type": "ExpressionStatement", - "start": 33168, - "end": 33202, + "start": 33156, + "end": 33190, "loc": { "start": { "line": 751, @@ -137658,8 +137658,8 @@ }, "expression": { "type": "CallExpression", - "start": 33168, - "end": 33201, + "start": 33156, + "end": 33189, "loc": { "start": { "line": 751, @@ -137672,8 +137672,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33168, - "end": 33176, + "start": 33156, + "end": 33164, "loc": { "start": { "line": 751, @@ -137686,8 +137686,8 @@ }, "object": { "type": "Identifier", - "start": 33168, - "end": 33171, + "start": 33156, + "end": 33159, "loc": { "start": { "line": 751, @@ -137703,8 +137703,8 @@ }, "property": { "type": "Identifier", - "start": 33172, - "end": 33176, + "start": 33160, + "end": 33164, "loc": { "start": { "line": 751, @@ -137723,8 +137723,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33177, - "end": 33200, + "start": 33165, + "end": 33188, "loc": { "start": { "line": 751, @@ -137746,8 +137746,8 @@ }, { "type": "ExpressionStatement", - "start": 33211, - "end": 33248, + "start": 33199, + "end": 33236, "loc": { "start": { "line": 752, @@ -137760,8 +137760,8 @@ }, "expression": { "type": "CallExpression", - "start": 33211, - "end": 33247, + "start": 33199, + "end": 33235, "loc": { "start": { "line": 752, @@ -137774,8 +137774,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33211, - "end": 33219, + "start": 33199, + "end": 33207, "loc": { "start": { "line": 752, @@ -137788,8 +137788,8 @@ }, "object": { "type": "Identifier", - "start": 33211, - "end": 33214, + "start": 33199, + "end": 33202, "loc": { "start": { "line": 752, @@ -137805,8 +137805,8 @@ }, "property": { "type": "Identifier", - "start": 33215, - "end": 33219, + "start": 33203, + "end": 33207, "loc": { "start": { "line": 752, @@ -137825,8 +137825,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33220, - "end": 33246, + "start": 33208, + "end": 33234, "loc": { "start": { "line": 752, @@ -137848,8 +137848,8 @@ }, { "type": "ExpressionStatement", - "start": 33257, - "end": 33294, + "start": 33245, + "end": 33282, "loc": { "start": { "line": 753, @@ -137862,8 +137862,8 @@ }, "expression": { "type": "CallExpression", - "start": 33257, - "end": 33293, + "start": 33245, + "end": 33281, "loc": { "start": { "line": 753, @@ -137876,8 +137876,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33257, - "end": 33265, + "start": 33245, + "end": 33253, "loc": { "start": { "line": 753, @@ -137890,8 +137890,8 @@ }, "object": { "type": "Identifier", - "start": 33257, - "end": 33260, + "start": 33245, + "end": 33248, "loc": { "start": { "line": 753, @@ -137907,8 +137907,8 @@ }, "property": { "type": "Identifier", - "start": 33261, - "end": 33265, + "start": 33249, + "end": 33253, "loc": { "start": { "line": 753, @@ -137927,8 +137927,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33266, - "end": 33292, + "start": 33254, + "end": 33280, "loc": { "start": { "line": 753, @@ -137950,8 +137950,8 @@ }, { "type": "ExpressionStatement", - "start": 33303, - "end": 33401, + "start": 33291, + "end": 33389, "loc": { "start": { "line": 754, @@ -137964,8 +137964,8 @@ }, "expression": { "type": "CallExpression", - "start": 33303, - "end": 33400, + "start": 33291, + "end": 33388, "loc": { "start": { "line": 754, @@ -137978,8 +137978,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33303, - "end": 33311, + "start": 33291, + "end": 33299, "loc": { "start": { "line": 754, @@ -137992,8 +137992,8 @@ }, "object": { "type": "Identifier", - "start": 33303, - "end": 33306, + "start": 33291, + "end": 33294, "loc": { "start": { "line": 754, @@ -138009,8 +138009,8 @@ }, "property": { "type": "Identifier", - "start": 33307, - "end": 33311, + "start": 33295, + "end": 33299, "loc": { "start": { "line": 754, @@ -138029,8 +138029,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33312, - "end": 33399, + "start": 33300, + "end": 33387, "loc": { "start": { "line": 754, @@ -138052,8 +138052,8 @@ }, { "type": "ExpressionStatement", - "start": 33411, - "end": 33517, + "start": 33399, + "end": 33505, "loc": { "start": { "line": 756, @@ -138066,8 +138066,8 @@ }, "expression": { "type": "CallExpression", - "start": 33411, - "end": 33516, + "start": 33399, + "end": 33504, "loc": { "start": { "line": 756, @@ -138080,8 +138080,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33411, - "end": 33419, + "start": 33399, + "end": 33407, "loc": { "start": { "line": 756, @@ -138094,8 +138094,8 @@ }, "object": { "type": "Identifier", - "start": 33411, - "end": 33414, + "start": 33399, + "end": 33402, "loc": { "start": { "line": 756, @@ -138111,8 +138111,8 @@ }, "property": { "type": "Identifier", - "start": 33415, - "end": 33419, + "start": 33403, + "end": 33407, "loc": { "start": { "line": 756, @@ -138131,8 +138131,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33420, - "end": 33515, + "start": 33408, + "end": 33503, "loc": { "start": { "line": 756, @@ -138154,8 +138154,8 @@ }, { "type": "ExpressionStatement", - "start": 33526, - "end": 33577, + "start": 33514, + "end": 33565, "loc": { "start": { "line": 757, @@ -138168,8 +138168,8 @@ }, "expression": { "type": "CallExpression", - "start": 33526, - "end": 33576, + "start": 33514, + "end": 33564, "loc": { "start": { "line": 757, @@ -138182,8 +138182,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33526, - "end": 33534, + "start": 33514, + "end": 33522, "loc": { "start": { "line": 757, @@ -138196,8 +138196,8 @@ }, "object": { "type": "Identifier", - "start": 33526, - "end": 33529, + "start": 33514, + "end": 33517, "loc": { "start": { "line": 757, @@ -138213,8 +138213,8 @@ }, "property": { "type": "Identifier", - "start": 33530, - "end": 33534, + "start": 33518, + "end": 33522, "loc": { "start": { "line": 757, @@ -138233,8 +138233,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33535, - "end": 33575, + "start": 33523, + "end": 33563, "loc": { "start": { "line": 757, @@ -138256,8 +138256,8 @@ }, { "type": "ExpressionStatement", - "start": 33587, - "end": 33625, + "start": 33575, + "end": 33613, "loc": { "start": { "line": 759, @@ -138270,8 +138270,8 @@ }, "expression": { "type": "CallExpression", - "start": 33587, - "end": 33624, + "start": 33575, + "end": 33612, "loc": { "start": { "line": 759, @@ -138284,8 +138284,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33587, - "end": 33595, + "start": 33575, + "end": 33583, "loc": { "start": { "line": 759, @@ -138298,8 +138298,8 @@ }, "object": { "type": "Identifier", - "start": 33587, - "end": 33590, + "start": 33575, + "end": 33578, "loc": { "start": { "line": 759, @@ -138315,8 +138315,8 @@ }, "property": { "type": "Identifier", - "start": 33591, - "end": 33595, + "start": 33579, + "end": 33583, "loc": { "start": { "line": 759, @@ -138335,8 +138335,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33596, - "end": 33623, + "start": 33584, + "end": 33611, "loc": { "start": { "line": 759, @@ -138358,8 +138358,8 @@ }, { "type": "ExpressionStatement", - "start": 33634, - "end": 33670, + "start": 33622, + "end": 33658, "loc": { "start": { "line": 760, @@ -138372,8 +138372,8 @@ }, "expression": { "type": "CallExpression", - "start": 33634, - "end": 33669, + "start": 33622, + "end": 33657, "loc": { "start": { "line": 760, @@ -138386,8 +138386,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33634, - "end": 33642, + "start": 33622, + "end": 33630, "loc": { "start": { "line": 760, @@ -138400,8 +138400,8 @@ }, "object": { "type": "Identifier", - "start": 33634, - "end": 33637, + "start": 33622, + "end": 33625, "loc": { "start": { "line": 760, @@ -138417,8 +138417,8 @@ }, "property": { "type": "Identifier", - "start": 33638, - "end": 33642, + "start": 33626, + "end": 33630, "loc": { "start": { "line": 760, @@ -138437,8 +138437,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33643, - "end": 33668, + "start": 33631, + "end": 33656, "loc": { "start": { "line": 760, @@ -138460,8 +138460,8 @@ }, { "type": "ExpressionStatement", - "start": 33679, - "end": 33745, + "start": 33667, + "end": 33733, "loc": { "start": { "line": 761, @@ -138474,8 +138474,8 @@ }, "expression": { "type": "CallExpression", - "start": 33679, - "end": 33744, + "start": 33667, + "end": 33732, "loc": { "start": { "line": 761, @@ -138488,8 +138488,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33679, - "end": 33687, + "start": 33667, + "end": 33675, "loc": { "start": { "line": 761, @@ -138502,8 +138502,8 @@ }, "object": { "type": "Identifier", - "start": 33679, - "end": 33682, + "start": 33667, + "end": 33670, "loc": { "start": { "line": 761, @@ -138519,8 +138519,8 @@ }, "property": { "type": "Identifier", - "start": 33683, - "end": 33687, + "start": 33671, + "end": 33675, "loc": { "start": { "line": 761, @@ -138539,8 +138539,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33688, - "end": 33743, + "start": 33676, + "end": 33731, "loc": { "start": { "line": 761, @@ -138562,8 +138562,8 @@ }, { "type": "ExpressionStatement", - "start": 33754, - "end": 33821, + "start": 33742, + "end": 33809, "loc": { "start": { "line": 762, @@ -138576,8 +138576,8 @@ }, "expression": { "type": "CallExpression", - "start": 33754, - "end": 33820, + "start": 33742, + "end": 33808, "loc": { "start": { "line": 762, @@ -138590,8 +138590,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33754, - "end": 33762, + "start": 33742, + "end": 33750, "loc": { "start": { "line": 762, @@ -138604,8 +138604,8 @@ }, "object": { "type": "Identifier", - "start": 33754, - "end": 33757, + "start": 33742, + "end": 33745, "loc": { "start": { "line": 762, @@ -138621,8 +138621,8 @@ }, "property": { "type": "Identifier", - "start": 33758, - "end": 33762, + "start": 33746, + "end": 33750, "loc": { "start": { "line": 762, @@ -138641,8 +138641,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33763, - "end": 33819, + "start": 33751, + "end": 33807, "loc": { "start": { "line": 762, @@ -138664,8 +138664,8 @@ }, { "type": "ExpressionStatement", - "start": 33830, - "end": 33901, + "start": 33818, + "end": 33889, "loc": { "start": { "line": 763, @@ -138678,8 +138678,8 @@ }, "expression": { "type": "CallExpression", - "start": 33830, - "end": 33900, + "start": 33818, + "end": 33888, "loc": { "start": { "line": 763, @@ -138692,8 +138692,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33830, - "end": 33838, + "start": 33818, + "end": 33826, "loc": { "start": { "line": 763, @@ -138706,8 +138706,8 @@ }, "object": { "type": "Identifier", - "start": 33830, - "end": 33833, + "start": 33818, + "end": 33821, "loc": { "start": { "line": 763, @@ -138723,8 +138723,8 @@ }, "property": { "type": "Identifier", - "start": 33834, - "end": 33838, + "start": 33822, + "end": 33826, "loc": { "start": { "line": 763, @@ -138743,8 +138743,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33839, - "end": 33899, + "start": 33827, + "end": 33887, "loc": { "start": { "line": 763, @@ -138766,8 +138766,8 @@ }, { "type": "ExpressionStatement", - "start": 33911, - "end": 34014, + "start": 33899, + "end": 34002, "loc": { "start": { "line": 765, @@ -138780,8 +138780,8 @@ }, "expression": { "type": "CallExpression", - "start": 33911, - "end": 34013, + "start": 33899, + "end": 34001, "loc": { "start": { "line": 765, @@ -138794,8 +138794,8 @@ }, "callee": { "type": "MemberExpression", - "start": 33911, - "end": 33919, + "start": 33899, + "end": 33907, "loc": { "start": { "line": 765, @@ -138808,8 +138808,8 @@ }, "object": { "type": "Identifier", - "start": 33911, - "end": 33914, + "start": 33899, + "end": 33902, "loc": { "start": { "line": 765, @@ -138825,8 +138825,8 @@ }, "property": { "type": "Identifier", - "start": 33915, - "end": 33919, + "start": 33903, + "end": 33907, "loc": { "start": { "line": 765, @@ -138845,8 +138845,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 33920, - "end": 34012, + "start": 33908, + "end": 34000, "loc": { "start": { "line": 765, @@ -138868,8 +138868,8 @@ }, { "type": "ExpressionStatement", - "start": 34023, - "end": 34093, + "start": 34011, + "end": 34081, "loc": { "start": { "line": 766, @@ -138882,8 +138882,8 @@ }, "expression": { "type": "CallExpression", - "start": 34023, - "end": 34092, + "start": 34011, + "end": 34080, "loc": { "start": { "line": 766, @@ -138896,8 +138896,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34023, - "end": 34031, + "start": 34011, + "end": 34019, "loc": { "start": { "line": 766, @@ -138910,8 +138910,8 @@ }, "object": { "type": "Identifier", - "start": 34023, - "end": 34026, + "start": 34011, + "end": 34014, "loc": { "start": { "line": 766, @@ -138927,8 +138927,8 @@ }, "property": { "type": "Identifier", - "start": 34027, - "end": 34031, + "start": 34015, + "end": 34019, "loc": { "start": { "line": 766, @@ -138947,8 +138947,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34032, - "end": 34091, + "start": 34020, + "end": 34079, "loc": { "start": { "line": 766, @@ -138970,8 +138970,8 @@ }, { "type": "ExpressionStatement", - "start": 34102, - "end": 34198, + "start": 34090, + "end": 34186, "loc": { "start": { "line": 767, @@ -138984,8 +138984,8 @@ }, "expression": { "type": "CallExpression", - "start": 34102, - "end": 34197, + "start": 34090, + "end": 34185, "loc": { "start": { "line": 767, @@ -138998,8 +138998,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34102, - "end": 34110, + "start": 34090, + "end": 34098, "loc": { "start": { "line": 767, @@ -139012,8 +139012,8 @@ }, "object": { "type": "Identifier", - "start": 34102, - "end": 34105, + "start": 34090, + "end": 34093, "loc": { "start": { "line": 767, @@ -139029,8 +139029,8 @@ }, "property": { "type": "Identifier", - "start": 34106, - "end": 34110, + "start": 34094, + "end": 34098, "loc": { "start": { "line": 767, @@ -139049,8 +139049,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34111, - "end": 34196, + "start": 34099, + "end": 34184, "loc": { "start": { "line": 767, @@ -139072,8 +139072,8 @@ }, { "type": "ExpressionStatement", - "start": 34208, - "end": 34264, + "start": 34196, + "end": 34252, "loc": { "start": { "line": 769, @@ -139086,8 +139086,8 @@ }, "expression": { "type": "CallExpression", - "start": 34208, - "end": 34263, + "start": 34196, + "end": 34251, "loc": { "start": { "line": 769, @@ -139100,8 +139100,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34208, - "end": 34216, + "start": 34196, + "end": 34204, "loc": { "start": { "line": 769, @@ -139114,8 +139114,8 @@ }, "object": { "type": "Identifier", - "start": 34208, - "end": 34211, + "start": 34196, + "end": 34199, "loc": { "start": { "line": 769, @@ -139131,8 +139131,8 @@ }, "property": { "type": "Identifier", - "start": 34212, - "end": 34216, + "start": 34200, + "end": 34204, "loc": { "start": { "line": 769, @@ -139151,8 +139151,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34217, - "end": 34262, + "start": 34205, + "end": 34250, "loc": { "start": { "line": 769, @@ -139174,8 +139174,8 @@ }, { "type": "ExpressionStatement", - "start": 34273, - "end": 34324, + "start": 34261, + "end": 34323, "loc": { "start": { "line": 770, @@ -139183,13 +139183,13 @@ }, "end": { "line": 770, - "column": 59 + "column": 70 } }, "expression": { "type": "CallExpression", - "start": 34273, - "end": 34323, + "start": 34261, + "end": 34322, "loc": { "start": { "line": 770, @@ -139197,13 +139197,13 @@ }, "end": { "line": 770, - "column": 58 + "column": 69 } }, "callee": { "type": "MemberExpression", - "start": 34273, - "end": 34281, + "start": 34261, + "end": 34269, "loc": { "start": { "line": 770, @@ -139216,8 +139216,8 @@ }, "object": { "type": "Identifier", - "start": 34273, - "end": 34276, + "start": 34261, + "end": 34264, "loc": { "start": { "line": 770, @@ -139233,8 +139233,8 @@ }, "property": { "type": "Identifier", - "start": 34277, - "end": 34281, + "start": 34265, + "end": 34269, "loc": { "start": { "line": 770, @@ -139253,8 +139253,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34282, - "end": 34322, + "start": 34270, + "end": 34321, "loc": { "start": { "line": 770, @@ -139262,22 +139262,22 @@ }, "end": { "line": 770, - "column": 57 + "column": 68 } }, "extra": { - "rawValue": "geometry.viewNormal = -vViewNormal;", - "raw": "\"geometry.viewNormal = -vViewNormal;\"" + "rawValue": "geometry.viewNormal = -normalize(vViewNormal);", + "raw": "\"geometry.viewNormal = -normalize(vViewNormal);\"" }, - "value": "geometry.viewNormal = -vViewNormal;" + "value": "geometry.viewNormal = -normalize(vViewNormal);" } ] } }, { "type": "ExpressionStatement", - "start": 34333, - "end": 34400, + "start": 34332, + "end": 34399, "loc": { "start": { "line": 771, @@ -139290,8 +139290,8 @@ }, "expression": { "type": "CallExpression", - "start": 34333, - "end": 34399, + "start": 34332, + "end": 34398, "loc": { "start": { "line": 771, @@ -139304,8 +139304,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34333, - "end": 34341, + "start": 34332, + "end": 34340, "loc": { "start": { "line": 771, @@ -139318,8 +139318,8 @@ }, "object": { "type": "Identifier", - "start": 34333, - "end": 34336, + "start": 34332, + "end": 34335, "loc": { "start": { "line": 771, @@ -139335,8 +139335,8 @@ }, "property": { "type": "Identifier", - "start": 34337, - "end": 34341, + "start": 34336, + "end": 34340, "loc": { "start": { "line": 771, @@ -139355,8 +139355,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34342, - "end": 34398, + "start": 34341, + "end": 34397, "loc": { "start": { "line": 771, @@ -139378,8 +139378,8 @@ }, { "type": "IfStatement", - "start": 34409, - "end": 34533, + "start": 34408, + "end": 34532, "loc": { "start": { "line": 772, @@ -139392,8 +139392,8 @@ }, "test": { "type": "BinaryExpression", - "start": 34413, - "end": 34445, + "start": 34412, + "end": 34444, "loc": { "start": { "line": 772, @@ -139406,8 +139406,8 @@ }, "left": { "type": "MemberExpression", - "start": 34413, - "end": 34441, + "start": 34412, + "end": 34440, "loc": { "start": { "line": 772, @@ -139420,8 +139420,8 @@ }, "object": { "type": "MemberExpression", - "start": 34413, - "end": 34434, + "start": 34412, + "end": 34433, "loc": { "start": { "line": 772, @@ -139434,8 +139434,8 @@ }, "object": { "type": "Identifier", - "start": 34413, - "end": 34424, + "start": 34412, + "end": 34423, "loc": { "start": { "line": 772, @@ -139451,8 +139451,8 @@ }, "property": { "type": "Identifier", - "start": 34425, - "end": 34434, + "start": 34424, + "end": 34433, "loc": { "start": { "line": 772, @@ -139470,8 +139470,8 @@ }, "property": { "type": "Identifier", - "start": 34435, - "end": 34441, + "start": 34434, + "end": 34440, "loc": { "start": { "line": 772, @@ -139490,8 +139490,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 34444, - "end": 34445, + "start": 34443, + "end": 34444, "loc": { "start": { "line": 772, @@ -139511,8 +139511,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 34447, - "end": 34533, + "start": 34446, + "end": 34532, "loc": { "start": { "line": 772, @@ -139526,8 +139526,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 34461, - "end": 34523, + "start": 34460, + "end": 34522, "loc": { "start": { "line": 773, @@ -139540,8 +139540,8 @@ }, "expression": { "type": "CallExpression", - "start": 34461, - "end": 34522, + "start": 34460, + "end": 34521, "loc": { "start": { "line": 773, @@ -139554,8 +139554,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34461, - "end": 34469, + "start": 34460, + "end": 34468, "loc": { "start": { "line": 773, @@ -139568,8 +139568,8 @@ }, "object": { "type": "Identifier", - "start": 34461, - "end": 34464, + "start": 34460, + "end": 34463, "loc": { "start": { "line": 773, @@ -139585,8 +139585,8 @@ }, "property": { "type": "Identifier", - "start": 34465, - "end": 34469, + "start": 34464, + "end": 34468, "loc": { "start": { "line": 773, @@ -139605,8 +139605,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34470, - "end": 34521, + "start": 34469, + "end": 34520, "loc": { "start": { "line": 773, @@ -139633,8 +139633,8 @@ }, { "type": "IfStatement", - "start": 34543, - "end": 34718, + "start": 34542, + "end": 34717, "loc": { "start": { "line": 776, @@ -139647,8 +139647,8 @@ }, "test": { "type": "LogicalExpression", - "start": 34547, - "end": 34620, + "start": 34546, + "end": 34619, "loc": { "start": { "line": 776, @@ -139661,8 +139661,8 @@ }, "left": { "type": "BinaryExpression", - "start": 34547, - "end": 34579, + "start": 34546, + "end": 34578, "loc": { "start": { "line": 776, @@ -139675,8 +139675,8 @@ }, "left": { "type": "MemberExpression", - "start": 34547, - "end": 34575, + "start": 34546, + "end": 34574, "loc": { "start": { "line": 776, @@ -139689,8 +139689,8 @@ }, "object": { "type": "MemberExpression", - "start": 34547, - "end": 34568, + "start": 34546, + "end": 34567, "loc": { "start": { "line": 776, @@ -139703,8 +139703,8 @@ }, "object": { "type": "Identifier", - "start": 34547, - "end": 34558, + "start": 34546, + "end": 34557, "loc": { "start": { "line": 776, @@ -139720,8 +139720,8 @@ }, "property": { "type": "Identifier", - "start": 34559, - "end": 34568, + "start": 34558, + "end": 34567, "loc": { "start": { "line": 776, @@ -139739,8 +139739,8 @@ }, "property": { "type": "Identifier", - "start": 34569, - "end": 34575, + "start": 34568, + "end": 34574, "loc": { "start": { "line": 776, @@ -139759,8 +139759,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 34578, - "end": 34579, + "start": 34577, + "end": 34578, "loc": { "start": { "line": 776, @@ -139781,8 +139781,8 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 34583, - "end": 34620, + "start": 34582, + "end": 34619, "loc": { "start": { "line": 776, @@ -139795,8 +139795,8 @@ }, "left": { "type": "MemberExpression", - "start": 34583, - "end": 34616, + "start": 34582, + "end": 34615, "loc": { "start": { "line": 776, @@ -139809,8 +139809,8 @@ }, "object": { "type": "MemberExpression", - "start": 34583, - "end": 34609, + "start": 34582, + "end": 34608, "loc": { "start": { "line": 776, @@ -139823,8 +139823,8 @@ }, "object": { "type": "Identifier", - "start": 34583, - "end": 34594, + "start": 34582, + "end": 34593, "loc": { "start": { "line": 776, @@ -139840,8 +139840,8 @@ }, "property": { "type": "Identifier", - "start": 34595, - "end": 34609, + "start": 34594, + "end": 34608, "loc": { "start": { "line": 776, @@ -139859,8 +139859,8 @@ }, "property": { "type": "Identifier", - "start": 34610, - "end": 34616, + "start": 34609, + "end": 34615, "loc": { "start": { "line": 776, @@ -139879,8 +139879,8 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 34619, - "end": 34620, + "start": 34618, + "end": 34619, "loc": { "start": { "line": 776, @@ -139901,8 +139901,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 34622, - "end": 34718, + "start": 34621, + "end": 34717, "loc": { "start": { "line": 776, @@ -139916,8 +139916,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 34636, - "end": 34708, + "start": 34635, + "end": 34707, "loc": { "start": { "line": 777, @@ -139930,8 +139930,8 @@ }, "expression": { "type": "CallExpression", - "start": 34636, - "end": 34707, + "start": 34635, + "end": 34706, "loc": { "start": { "line": 777, @@ -139944,8 +139944,8 @@ }, "callee": { "type": "MemberExpression", - "start": 34636, - "end": 34644, + "start": 34635, + "end": 34643, "loc": { "start": { "line": 777, @@ -139958,8 +139958,8 @@ }, "object": { "type": "Identifier", - "start": 34636, - "end": 34639, + "start": 34635, + "end": 34638, "loc": { "start": { "line": 777, @@ -139975,8 +139975,8 @@ }, "property": { "type": "Identifier", - "start": 34640, - "end": 34644, + "start": 34639, + "end": 34643, "loc": { "start": { "line": 777, @@ -139995,8 +139995,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 34645, - "end": 34706, + "start": 34644, + "end": 34705, "loc": { "start": { "line": 777, @@ -140023,8 +140023,8 @@ }, { "type": "ForStatement", - "start": 34728, - "end": 36195, + "start": 34727, + "end": 36194, "loc": { "start": { "line": 780, @@ -140037,8 +140037,8 @@ }, "init": { "type": "VariableDeclaration", - "start": 34733, - "end": 34775, + "start": 34732, + "end": 34774, "loc": { "start": { "line": 780, @@ -140052,8 +140052,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 34737, - "end": 34742, + "start": 34736, + "end": 34741, "loc": { "start": { "line": 780, @@ -140066,8 +140066,8 @@ }, "id": { "type": "Identifier", - "start": 34737, - "end": 34738, + "start": 34736, + "end": 34737, "loc": { "start": { "line": 780, @@ -140083,8 +140083,8 @@ }, "init": { "type": "NumericLiteral", - "start": 34741, - "end": 34742, + "start": 34740, + "end": 34741, "loc": { "start": { "line": 780, @@ -140104,8 +140104,8 @@ }, { "type": "VariableDeclarator", - "start": 34744, - "end": 34775, + "start": 34743, + "end": 34774, "loc": { "start": { "line": 780, @@ -140118,8 +140118,8 @@ }, "id": { "type": "Identifier", - "start": 34744, - "end": 34747, + "start": 34743, + "end": 34746, "loc": { "start": { "line": 780, @@ -140135,8 +140135,8 @@ }, "init": { "type": "MemberExpression", - "start": 34750, - "end": 34775, + "start": 34749, + "end": 34774, "loc": { "start": { "line": 780, @@ -140149,8 +140149,8 @@ }, "object": { "type": "MemberExpression", - "start": 34750, - "end": 34768, + "start": 34749, + "end": 34767, "loc": { "start": { "line": 780, @@ -140163,8 +140163,8 @@ }, "object": { "type": "Identifier", - "start": 34750, - "end": 34761, + "start": 34749, + "end": 34760, "loc": { "start": { "line": 780, @@ -140180,8 +140180,8 @@ }, "property": { "type": "Identifier", - "start": 34762, - "end": 34768, + "start": 34761, + "end": 34767, "loc": { "start": { "line": 780, @@ -140199,8 +140199,8 @@ }, "property": { "type": "Identifier", - "start": 34769, - "end": 34775, + "start": 34768, + "end": 34774, "loc": { "start": { "line": 780, @@ -140222,8 +140222,8 @@ }, "test": { "type": "BinaryExpression", - "start": 34777, - "end": 34784, + "start": 34776, + "end": 34783, "loc": { "start": { "line": 780, @@ -140236,8 +140236,8 @@ }, "left": { "type": "Identifier", - "start": 34777, - "end": 34778, + "start": 34776, + "end": 34777, "loc": { "start": { "line": 780, @@ -140254,8 +140254,8 @@ "operator": "<", "right": { "type": "Identifier", - "start": 34781, - "end": 34784, + "start": 34780, + "end": 34783, "loc": { "start": { "line": 780, @@ -140272,8 +140272,8 @@ }, "update": { "type": "UpdateExpression", - "start": 34786, - "end": 34789, + "start": 34785, + "end": 34788, "loc": { "start": { "line": 780, @@ -140288,8 +140288,8 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 34786, - "end": 34787, + "start": 34785, + "end": 34786, "loc": { "start": { "line": 780, @@ -140306,8 +140306,8 @@ }, "body": { "type": "BlockStatement", - "start": 34791, - "end": 36195, + "start": 34790, + "end": 36194, "loc": { "start": { "line": 780, @@ -140321,8 +140321,8 @@ "body": [ { "type": "VariableDeclaration", - "start": 34806, - "end": 34842, + "start": 34805, + "end": 34841, "loc": { "start": { "line": 782, @@ -140336,8 +140336,8 @@ "declarations": [ { "type": "VariableDeclarator", - "start": 34812, - "end": 34841, + "start": 34811, + "end": 34840, "loc": { "start": { "line": 782, @@ -140350,8 +140350,8 @@ }, "id": { "type": "Identifier", - "start": 34812, - "end": 34817, + "start": 34811, + "end": 34816, "loc": { "start": { "line": 782, @@ -140367,8 +140367,8 @@ }, "init": { "type": "MemberExpression", - "start": 34820, - "end": 34841, + "start": 34819, + "end": 34840, "loc": { "start": { "line": 782, @@ -140381,8 +140381,8 @@ }, "object": { "type": "MemberExpression", - "start": 34820, - "end": 34838, + "start": 34819, + "end": 34837, "loc": { "start": { "line": 782, @@ -140395,8 +140395,8 @@ }, "object": { "type": "Identifier", - "start": 34820, - "end": 34831, + "start": 34819, + "end": 34830, "loc": { "start": { "line": 782, @@ -140412,8 +140412,8 @@ }, "property": { "type": "Identifier", - "start": 34832, - "end": 34838, + "start": 34831, + "end": 34837, "loc": { "start": { "line": 782, @@ -140431,8 +140431,8 @@ }, "property": { "type": "Identifier", - "start": 34839, - "end": 34840, + "start": 34838, + "end": 34839, "loc": { "start": { "line": 782, @@ -140454,8 +140454,8 @@ }, { "type": "IfStatement", - "start": 34856, - "end": 34927, + "start": 34855, + "end": 34926, "loc": { "start": { "line": 784, @@ -140468,8 +140468,8 @@ }, "test": { "type": "BinaryExpression", - "start": 34860, - "end": 34884, + "start": 34859, + "end": 34883, "loc": { "start": { "line": 784, @@ -140482,8 +140482,8 @@ }, "left": { "type": "MemberExpression", - "start": 34860, - "end": 34870, + "start": 34859, + "end": 34869, "loc": { "start": { "line": 784, @@ -140496,8 +140496,8 @@ }, "object": { "type": "Identifier", - "start": 34860, - "end": 34865, + "start": 34859, + "end": 34864, "loc": { "start": { "line": 784, @@ -140513,8 +140513,8 @@ }, "property": { "type": "Identifier", - "start": 34866, - "end": 34870, + "start": 34865, + "end": 34869, "loc": { "start": { "line": 784, @@ -140533,8 +140533,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 34875, - "end": 34884, + "start": 34874, + "end": 34883, "loc": { "start": { "line": 784, @@ -140554,8 +140554,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 34886, - "end": 34927, + "start": 34885, + "end": 34926, "loc": { "start": { "line": 784, @@ -140569,8 +140569,8 @@ "body": [ { "type": "ContinueStatement", - "start": 34904, - "end": 34913, + "start": 34903, + "end": 34912, "loc": { "start": { "line": 785, @@ -140590,8 +140590,8 @@ }, { "type": "IfStatement", - "start": 34940, - "end": 35988, + "start": 34939, + "end": 35987, "loc": { "start": { "line": 787, @@ -140604,8 +140604,8 @@ }, "test": { "type": "BinaryExpression", - "start": 34944, - "end": 34964, + "start": 34943, + "end": 34963, "loc": { "start": { "line": 787, @@ -140618,8 +140618,8 @@ }, "left": { "type": "MemberExpression", - "start": 34944, - "end": 34954, + "start": 34943, + "end": 34953, "loc": { "start": { "line": 787, @@ -140632,8 +140632,8 @@ }, "object": { "type": "Identifier", - "start": 34944, - "end": 34949, + "start": 34943, + "end": 34948, "loc": { "start": { "line": 787, @@ -140649,8 +140649,8 @@ }, "property": { "type": "Identifier", - "start": 34950, - "end": 34954, + "start": 34949, + "end": 34953, "loc": { "start": { "line": 787, @@ -140669,8 +140669,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 34959, - "end": 34964, + "start": 34958, + "end": 34963, "loc": { "start": { "line": 787, @@ -140690,8 +140690,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 34966, - "end": 35262, + "start": 34965, + "end": 35261, "loc": { "start": { "line": 787, @@ -140705,8 +140705,8 @@ "body": [ { "type": "IfStatement", - "start": 34984, - "end": 35248, + "start": 34983, + "end": 35247, "loc": { "start": { "line": 788, @@ -140719,8 +140719,8 @@ }, "test": { "type": "BinaryExpression", - "start": 34988, - "end": 35010, + "start": 34987, + "end": 35009, "loc": { "start": { "line": 788, @@ -140733,8 +140733,8 @@ }, "left": { "type": "MemberExpression", - "start": 34988, - "end": 34999, + "start": 34987, + "end": 34998, "loc": { "start": { "line": 788, @@ -140747,8 +140747,8 @@ }, "object": { "type": "Identifier", - "start": 34988, - "end": 34993, + "start": 34987, + "end": 34992, "loc": { "start": { "line": 788, @@ -140764,8 +140764,8 @@ }, "property": { "type": "Identifier", - "start": 34994, - "end": 34999, + "start": 34993, + "end": 34998, "loc": { "start": { "line": 788, @@ -140784,8 +140784,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 35004, - "end": 35010, + "start": 35003, + "end": 35009, "loc": { "start": { "line": 788, @@ -140805,8 +140805,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 35012, - "end": 35112, + "start": 35011, + "end": 35111, "loc": { "start": { "line": 788, @@ -140820,8 +140820,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 35034, - "end": 35094, + "start": 35033, + "end": 35093, "loc": { "start": { "line": 789, @@ -140834,8 +140834,8 @@ }, "expression": { "type": "CallExpression", - "start": 35034, - "end": 35093, + "start": 35033, + "end": 35092, "loc": { "start": { "line": 789, @@ -140848,8 +140848,8 @@ }, "callee": { "type": "MemberExpression", - "start": 35034, - "end": 35042, + "start": 35033, + "end": 35041, "loc": { "start": { "line": 789, @@ -140862,8 +140862,8 @@ }, "object": { "type": "Identifier", - "start": 35034, - "end": 35037, + "start": 35033, + "end": 35036, "loc": { "start": { "line": 789, @@ -140879,8 +140879,8 @@ }, "property": { "type": "Identifier", - "start": 35038, - "end": 35042, + "start": 35037, + "end": 35041, "loc": { "start": { "line": 789, @@ -140899,8 +140899,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 35043, - "end": 35092, + "start": 35042, + "end": 35091, "loc": { "start": { "line": 789, @@ -140913,8 +140913,8 @@ }, "left": { "type": "BinaryExpression", - "start": 35043, - "end": 35085, + "start": 35042, + "end": 35084, "loc": { "start": { "line": 789, @@ -140927,8 +140927,8 @@ }, "left": { "type": "StringLiteral", - "start": 35043, - "end": 35081, + "start": 35042, + "end": 35080, "loc": { "start": { "line": 789, @@ -140948,8 +140948,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 35084, - "end": 35085, + "start": 35083, + "end": 35084, "loc": { "start": { "line": 789, @@ -140967,8 +140967,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 35088, - "end": 35092, + "start": 35087, + "end": 35091, "loc": { "start": { "line": 789, @@ -140994,8 +140994,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 35118, - "end": 35248, + "start": 35117, + "end": 35247, "loc": { "start": { "line": 790, @@ -141009,8 +141009,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 35140, - "end": 35230, + "start": 35139, + "end": 35229, "loc": { "start": { "line": 791, @@ -141023,8 +141023,8 @@ }, "expression": { "type": "CallExpression", - "start": 35140, - "end": 35229, + "start": 35139, + "end": 35228, "loc": { "start": { "line": 791, @@ -141037,8 +141037,8 @@ }, "callee": { "type": "MemberExpression", - "start": 35140, - "end": 35148, + "start": 35139, + "end": 35147, "loc": { "start": { "line": 791, @@ -141051,8 +141051,8 @@ }, "object": { "type": "Identifier", - "start": 35140, - "end": 35143, + "start": 35139, + "end": 35142, "loc": { "start": { "line": 791, @@ -141068,8 +141068,8 @@ }, "property": { "type": "Identifier", - "start": 35144, - "end": 35148, + "start": 35143, + "end": 35147, "loc": { "start": { "line": 791, @@ -141088,8 +141088,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 35149, - "end": 35228, + "start": 35148, + "end": 35227, "loc": { "start": { "line": 791, @@ -141102,8 +141102,8 @@ }, "left": { "type": "BinaryExpression", - "start": 35149, - "end": 35210, + "start": 35148, + "end": 35209, "loc": { "start": { "line": 791, @@ -141116,8 +141116,8 @@ }, "left": { "type": "StringLiteral", - "start": 35149, - "end": 35206, + "start": 35148, + "end": 35205, "loc": { "start": { "line": 791, @@ -141137,8 +141137,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 35209, - "end": 35210, + "start": 35208, + "end": 35209, "loc": { "start": { "line": 791, @@ -141156,8 +141156,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 35213, - "end": 35228, + "start": 35212, + "end": 35227, "loc": { "start": { "line": 791, @@ -141187,8 +141187,8 @@ }, "alternate": { "type": "IfStatement", - "start": 35268, - "end": 35988, + "start": 35267, + "end": 35987, "loc": { "start": { "line": 793, @@ -141201,8 +141201,8 @@ }, "test": { "type": "BinaryExpression", - "start": 35272, - "end": 35294, + "start": 35271, + "end": 35293, "loc": { "start": { "line": 793, @@ -141215,8 +141215,8 @@ }, "left": { "type": "MemberExpression", - "start": 35272, - "end": 35282, + "start": 35271, + "end": 35281, "loc": { "start": { "line": 793, @@ -141229,8 +141229,8 @@ }, "object": { "type": "Identifier", - "start": 35272, - "end": 35277, + "start": 35271, + "end": 35276, "loc": { "start": { "line": 793, @@ -141246,8 +141246,8 @@ }, "property": { "type": "Identifier", - "start": 35278, - "end": 35282, + "start": 35277, + "end": 35281, "loc": { "start": { "line": 793, @@ -141266,8 +141266,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 35287, - "end": 35294, + "start": 35286, + "end": 35293, "loc": { "start": { "line": 793, @@ -141287,8 +141287,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 35296, - "end": 35612, + "start": 35295, + "end": 35611, "loc": { "start": { "line": 793, @@ -141302,8 +141302,8 @@ "body": [ { "type": "IfStatement", - "start": 35314, - "end": 35598, + "start": 35313, + "end": 35597, "loc": { "start": { "line": 794, @@ -141316,8 +141316,8 @@ }, "test": { "type": "BinaryExpression", - "start": 35318, - "end": 35340, + "start": 35317, + "end": 35339, "loc": { "start": { "line": 794, @@ -141330,8 +141330,8 @@ }, "left": { "type": "MemberExpression", - "start": 35318, - "end": 35329, + "start": 35317, + "end": 35328, "loc": { "start": { "line": 794, @@ -141344,8 +141344,8 @@ }, "object": { "type": "Identifier", - "start": 35318, - "end": 35323, + "start": 35317, + "end": 35322, "loc": { "start": { "line": 794, @@ -141361,8 +141361,8 @@ }, "property": { "type": "Identifier", - "start": 35324, - "end": 35329, + "start": 35323, + "end": 35328, "loc": { "start": { "line": 794, @@ -141381,8 +141381,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 35334, - "end": 35340, + "start": 35333, + "end": 35339, "loc": { "start": { "line": 794, @@ -141402,8 +141402,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 35342, - "end": 35462, + "start": 35341, + "end": 35461, "loc": { "start": { "line": 794, @@ -141417,8 +141417,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 35364, - "end": 35444, + "start": 35363, + "end": 35443, "loc": { "start": { "line": 795, @@ -141431,8 +141431,8 @@ }, "expression": { "type": "CallExpression", - "start": 35364, - "end": 35443, + "start": 35363, + "end": 35442, "loc": { "start": { "line": 795, @@ -141445,8 +141445,8 @@ }, "callee": { "type": "MemberExpression", - "start": 35364, - "end": 35372, + "start": 35363, + "end": 35371, "loc": { "start": { "line": 795, @@ -141459,8 +141459,8 @@ }, "object": { "type": "Identifier", - "start": 35364, - "end": 35367, + "start": 35363, + "end": 35366, "loc": { "start": { "line": 795, @@ -141476,8 +141476,8 @@ }, "property": { "type": "Identifier", - "start": 35368, - "end": 35372, + "start": 35367, + "end": 35371, "loc": { "start": { "line": 795, @@ -141496,8 +141496,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 35373, - "end": 35442, + "start": 35372, + "end": 35441, "loc": { "start": { "line": 795, @@ -141510,8 +141510,8 @@ }, "left": { "type": "BinaryExpression", - "start": 35373, - "end": 35415, + "start": 35372, + "end": 35414, "loc": { "start": { "line": 795, @@ -141524,8 +141524,8 @@ }, "left": { "type": "StringLiteral", - "start": 35373, - "end": 35411, + "start": 35372, + "end": 35410, "loc": { "start": { "line": 795, @@ -141545,8 +141545,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 35414, - "end": 35415, + "start": 35413, + "end": 35414, "loc": { "start": { "line": 795, @@ -141564,8 +141564,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 35418, - "end": 35442, + "start": 35417, + "end": 35441, "loc": { "start": { "line": 795, @@ -141591,8 +141591,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 35468, - "end": 35598, + "start": 35467, + "end": 35597, "loc": { "start": { "line": 796, @@ -141606,8 +141606,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 35490, - "end": 35580, + "start": 35489, + "end": 35579, "loc": { "start": { "line": 797, @@ -141620,8 +141620,8 @@ }, "expression": { "type": "CallExpression", - "start": 35490, - "end": 35579, + "start": 35489, + "end": 35578, "loc": { "start": { "line": 797, @@ -141634,8 +141634,8 @@ }, "callee": { "type": "MemberExpression", - "start": 35490, - "end": 35498, + "start": 35489, + "end": 35497, "loc": { "start": { "line": 797, @@ -141648,8 +141648,8 @@ }, "object": { "type": "Identifier", - "start": 35490, - "end": 35493, + "start": 35489, + "end": 35492, "loc": { "start": { "line": 797, @@ -141665,8 +141665,8 @@ }, "property": { "type": "Identifier", - "start": 35494, - "end": 35498, + "start": 35493, + "end": 35497, "loc": { "start": { "line": 797, @@ -141685,8 +141685,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 35499, - "end": 35578, + "start": 35498, + "end": 35577, "loc": { "start": { "line": 797, @@ -141699,8 +141699,8 @@ }, "left": { "type": "BinaryExpression", - "start": 35499, - "end": 35560, + "start": 35498, + "end": 35559, "loc": { "start": { "line": 797, @@ -141713,8 +141713,8 @@ }, "left": { "type": "StringLiteral", - "start": 35499, - "end": 35556, + "start": 35498, + "end": 35555, "loc": { "start": { "line": 797, @@ -141734,8 +141734,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 35559, - "end": 35560, + "start": 35558, + "end": 35559, "loc": { "start": { "line": 797, @@ -141753,8 +141753,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 35563, - "end": 35578, + "start": 35562, + "end": 35577, "loc": { "start": { "line": 797, @@ -141784,8 +141784,8 @@ }, "alternate": { "type": "IfStatement", - "start": 35618, - "end": 35988, + "start": 35617, + "end": 35987, "loc": { "start": { "line": 799, @@ -141798,8 +141798,8 @@ }, "test": { "type": "BinaryExpression", - "start": 35622, - "end": 35643, + "start": 35621, + "end": 35642, "loc": { "start": { "line": 799, @@ -141812,8 +141812,8 @@ }, "left": { "type": "MemberExpression", - "start": 35622, - "end": 35632, + "start": 35621, + "end": 35631, "loc": { "start": { "line": 799, @@ -141826,8 +141826,8 @@ }, "object": { "type": "Identifier", - "start": 35622, - "end": 35627, + "start": 35621, + "end": 35626, "loc": { "start": { "line": 799, @@ -141843,8 +141843,8 @@ }, "property": { "type": "Identifier", - "start": 35628, - "end": 35632, + "start": 35627, + "end": 35631, "loc": { "start": { "line": 799, @@ -141863,8 +141863,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 35637, - "end": 35643, + "start": 35636, + "end": 35642, "loc": { "start": { "line": 799, @@ -141884,8 +141884,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 35645, - "end": 35941, + "start": 35644, + "end": 35940, "loc": { "start": { "line": 799, @@ -141899,8 +141899,8 @@ "body": [ { "type": "IfStatement", - "start": 35663, - "end": 35927, + "start": 35662, + "end": 35926, "loc": { "start": { "line": 800, @@ -141913,8 +141913,8 @@ }, "test": { "type": "BinaryExpression", - "start": 35667, - "end": 35689, + "start": 35666, + "end": 35688, "loc": { "start": { "line": 800, @@ -141927,8 +141927,8 @@ }, "left": { "type": "MemberExpression", - "start": 35667, - "end": 35678, + "start": 35666, + "end": 35677, "loc": { "start": { "line": 800, @@ -141941,8 +141941,8 @@ }, "object": { "type": "Identifier", - "start": 35667, - "end": 35672, + "start": 35666, + "end": 35671, "loc": { "start": { "line": 800, @@ -141958,8 +141958,8 @@ }, "property": { "type": "Identifier", - "start": 35673, - "end": 35678, + "start": 35672, + "end": 35677, "loc": { "start": { "line": 800, @@ -141978,8 +141978,8 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 35683, - "end": 35689, + "start": 35682, + "end": 35688, "loc": { "start": { "line": 800, @@ -141999,8 +141999,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 35691, - "end": 35791, + "start": 35690, + "end": 35790, "loc": { "start": { "line": 800, @@ -142014,8 +142014,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 35713, - "end": 35773, + "start": 35712, + "end": 35772, "loc": { "start": { "line": 801, @@ -142028,8 +142028,8 @@ }, "expression": { "type": "CallExpression", - "start": 35713, - "end": 35772, + "start": 35712, + "end": 35771, "loc": { "start": { "line": 801, @@ -142042,8 +142042,8 @@ }, "callee": { "type": "MemberExpression", - "start": 35713, - "end": 35721, + "start": 35712, + "end": 35720, "loc": { "start": { "line": 801, @@ -142056,8 +142056,8 @@ }, "object": { "type": "Identifier", - "start": 35713, - "end": 35716, + "start": 35712, + "end": 35715, "loc": { "start": { "line": 801, @@ -142073,8 +142073,8 @@ }, "property": { "type": "Identifier", - "start": 35717, - "end": 35721, + "start": 35716, + "end": 35720, "loc": { "start": { "line": 801, @@ -142093,8 +142093,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 35722, - "end": 35771, + "start": 35721, + "end": 35770, "loc": { "start": { "line": 801, @@ -142107,8 +142107,8 @@ }, "left": { "type": "BinaryExpression", - "start": 35722, - "end": 35764, + "start": 35721, + "end": 35763, "loc": { "start": { "line": 801, @@ -142121,8 +142121,8 @@ }, "left": { "type": "StringLiteral", - "start": 35722, - "end": 35760, + "start": 35721, + "end": 35759, "loc": { "start": { "line": 801, @@ -142142,8 +142142,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 35763, - "end": 35764, + "start": 35762, + "end": 35763, "loc": { "start": { "line": 801, @@ -142161,8 +142161,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 35767, - "end": 35771, + "start": 35766, + "end": 35770, "loc": { "start": { "line": 801, @@ -142188,8 +142188,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 35797, - "end": 35927, + "start": 35796, + "end": 35926, "loc": { "start": { "line": 802, @@ -142203,8 +142203,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 35819, - "end": 35909, + "start": 35818, + "end": 35908, "loc": { "start": { "line": 803, @@ -142217,8 +142217,8 @@ }, "expression": { "type": "CallExpression", - "start": 35819, - "end": 35908, + "start": 35818, + "end": 35907, "loc": { "start": { "line": 803, @@ -142231,8 +142231,8 @@ }, "callee": { "type": "MemberExpression", - "start": 35819, - "end": 35827, + "start": 35818, + "end": 35826, "loc": { "start": { "line": 803, @@ -142245,8 +142245,8 @@ }, "object": { "type": "Identifier", - "start": 35819, - "end": 35822, + "start": 35818, + "end": 35821, "loc": { "start": { "line": 803, @@ -142262,8 +142262,8 @@ }, "property": { "type": "Identifier", - "start": 35823, - "end": 35827, + "start": 35822, + "end": 35826, "loc": { "start": { "line": 803, @@ -142282,8 +142282,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 35828, - "end": 35907, + "start": 35827, + "end": 35906, "loc": { "start": { "line": 803, @@ -142296,8 +142296,8 @@ }, "left": { "type": "BinaryExpression", - "start": 35828, - "end": 35889, + "start": 35827, + "end": 35888, "loc": { "start": { "line": 803, @@ -142310,8 +142310,8 @@ }, "left": { "type": "StringLiteral", - "start": 35828, - "end": 35885, + "start": 35827, + "end": 35884, "loc": { "start": { "line": 803, @@ -142331,8 +142331,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 35888, - "end": 35889, + "start": 35887, + "end": 35888, "loc": { "start": { "line": 803, @@ -142350,8 +142350,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 35892, - "end": 35907, + "start": 35891, + "end": 35906, "loc": { "start": { "line": 803, @@ -142381,8 +142381,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 35947, - "end": 35988, + "start": 35946, + "end": 35987, "loc": { "start": { "line": 805, @@ -142396,8 +142396,8 @@ "body": [ { "type": "ContinueStatement", - "start": 35965, - "end": 35974, + "start": 35964, + "end": 35973, "loc": { "start": { "line": 806, @@ -142418,8 +142418,8 @@ }, { "type": "ExpressionStatement", - "start": 36002, - "end": 36078, + "start": 36001, + "end": 36077, "loc": { "start": { "line": 809, @@ -142432,8 +142432,8 @@ }, "expression": { "type": "CallExpression", - "start": 36002, - "end": 36077, + "start": 36001, + "end": 36076, "loc": { "start": { "line": 809, @@ -142446,8 +142446,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36002, - "end": 36010, + "start": 36001, + "end": 36009, "loc": { "start": { "line": 809, @@ -142460,8 +142460,8 @@ }, "object": { "type": "Identifier", - "start": 36002, - "end": 36005, + "start": 36001, + "end": 36004, "loc": { "start": { "line": 809, @@ -142477,8 +142477,8 @@ }, "property": { "type": "Identifier", - "start": 36006, - "end": 36010, + "start": 36005, + "end": 36009, "loc": { "start": { "line": 809, @@ -142497,8 +142497,8 @@ "arguments": [ { "type": "BinaryExpression", - "start": 36011, - "end": 36076, + "start": 36010, + "end": 36075, "loc": { "start": { "line": 809, @@ -142511,8 +142511,8 @@ }, "left": { "type": "BinaryExpression", - "start": 36011, - "end": 36068, + "start": 36010, + "end": 36067, "loc": { "start": { "line": 809, @@ -142525,8 +142525,8 @@ }, "left": { "type": "BinaryExpression", - "start": 36011, - "end": 36064, + "start": 36010, + "end": 36063, "loc": { "start": { "line": 809, @@ -142539,8 +142539,8 @@ }, "left": { "type": "BinaryExpression", - "start": 36011, - "end": 36042, + "start": 36010, + "end": 36041, "loc": { "start": { "line": 809, @@ -142553,8 +142553,8 @@ }, "left": { "type": "StringLiteral", - "start": 36011, - "end": 36038, + "start": 36010, + "end": 36037, "loc": { "start": { "line": 809, @@ -142574,8 +142574,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 36041, - "end": 36042, + "start": 36040, + "end": 36041, "loc": { "start": { "line": 809, @@ -142593,8 +142593,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 36045, - "end": 36064, + "start": 36044, + "end": 36063, "loc": { "start": { "line": 809, @@ -142615,8 +142615,8 @@ "operator": "+", "right": { "type": "Identifier", - "start": 36067, - "end": 36068, + "start": 36066, + "end": 36067, "loc": { "start": { "line": 809, @@ -142634,8 +142634,8 @@ "operator": "+", "right": { "type": "StringLiteral", - "start": 36071, - "end": 36076, + "start": 36070, + "end": 36075, "loc": { "start": { "line": 809, @@ -142659,8 +142659,8 @@ { "type": "CommentLine", "value": " a is intensity", - "start": 36079, - "end": 36096, + "start": 36078, + "end": 36095, "loc": { "start": { "line": 809, @@ -142676,8 +142676,8 @@ }, { "type": "ExpressionStatement", - "start": 36110, - "end": 36185, + "start": 36109, + "end": 36184, "loc": { "start": { "line": 811, @@ -142690,8 +142690,8 @@ }, "expression": { "type": "CallExpression", - "start": 36110, - "end": 36184, + "start": 36109, + "end": 36183, "loc": { "start": { "line": 811, @@ -142704,8 +142704,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36110, - "end": 36118, + "start": 36109, + "end": 36117, "loc": { "start": { "line": 811, @@ -142718,8 +142718,8 @@ }, "object": { "type": "Identifier", - "start": 36110, - "end": 36113, + "start": 36109, + "end": 36112, "loc": { "start": { "line": 811, @@ -142736,8 +142736,8 @@ }, "property": { "type": "Identifier", - "start": 36114, - "end": 36118, + "start": 36113, + "end": 36117, "loc": { "start": { "line": 811, @@ -142757,8 +142757,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36119, - "end": 36183, + "start": 36118, + "end": 36182, "loc": { "start": { "line": 811, @@ -142782,8 +142782,8 @@ { "type": "CommentLine", "value": " a is intensity", - "start": 36079, - "end": 36096, + "start": 36078, + "end": 36095, "loc": { "start": { "line": 809, @@ -142803,8 +142803,8 @@ }, { "type": "ExpressionStatement", - "start": 36205, - "end": 36336, + "start": 36204, + "end": 36335, "loc": { "start": { "line": 814, @@ -142817,8 +142817,8 @@ }, "expression": { "type": "CallExpression", - "start": 36205, - "end": 36335, + "start": 36204, + "end": 36334, "loc": { "start": { "line": 814, @@ -142831,8 +142831,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36205, - "end": 36213, + "start": 36204, + "end": 36212, "loc": { "start": { "line": 814, @@ -142845,8 +142845,8 @@ }, "object": { "type": "Identifier", - "start": 36205, - "end": 36208, + "start": 36204, + "end": 36207, "loc": { "start": { "line": 814, @@ -142862,8 +142862,8 @@ }, "property": { "type": "Identifier", - "start": 36209, - "end": 36213, + "start": 36208, + "end": 36212, "loc": { "start": { "line": 814, @@ -142882,8 +142882,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36214, - "end": 36334, + "start": 36213, + "end": 36333, "loc": { "start": { "line": 814, @@ -142905,8 +142905,8 @@ }, { "type": "ExpressionStatement", - "start": 36346, - "end": 36374, + "start": 36345, + "end": 36373, "loc": { "start": { "line": 816, @@ -142919,8 +142919,8 @@ }, "expression": { "type": "CallExpression", - "start": 36346, - "end": 36373, + "start": 36345, + "end": 36372, "loc": { "start": { "line": 816, @@ -142933,8 +142933,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36346, - "end": 36354, + "start": 36345, + "end": 36353, "loc": { "start": { "line": 816, @@ -142947,8 +142947,8 @@ }, "object": { "type": "Identifier", - "start": 36346, - "end": 36349, + "start": 36345, + "end": 36348, "loc": { "start": { "line": 816, @@ -142964,8 +142964,8 @@ }, "property": { "type": "Identifier", - "start": 36350, - "end": 36354, + "start": 36349, + "end": 36353, "loc": { "start": { "line": 816, @@ -142984,8 +142984,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36355, - "end": 36372, + "start": 36354, + "end": 36371, "loc": { "start": { "line": 816, @@ -143007,8 +143007,8 @@ }, { "type": "IfStatement", - "start": 36384, - "end": 37391, + "start": 36383, + "end": 37390, "loc": { "start": { "line": 818, @@ -143021,8 +143021,8 @@ }, "test": { "type": "MemberExpression", - "start": 36388, - "end": 36401, + "start": 36387, + "end": 36400, "loc": { "start": { "line": 818, @@ -143035,8 +143035,8 @@ }, "object": { "type": "ThisExpression", - "start": 36388, - "end": 36392, + "start": 36387, + "end": 36391, "loc": { "start": { "line": 818, @@ -143050,8 +143050,8 @@ }, "property": { "type": "Identifier", - "start": 36393, - "end": 36401, + "start": 36392, + "end": 36400, "loc": { "start": { "line": 818, @@ -143069,8 +143069,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 36403, - "end": 37291, + "start": 36402, + "end": 37290, "loc": { "start": { "line": 818, @@ -143084,8 +143084,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 36649, - "end": 36705, + "start": 36648, + "end": 36704, "loc": { "start": { "line": 821, @@ -143098,8 +143098,8 @@ }, "expression": { "type": "CallExpression", - "start": 36649, - "end": 36704, + "start": 36648, + "end": 36703, "loc": { "start": { "line": 821, @@ -143112,8 +143112,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36649, - "end": 36657, + "start": 36648, + "end": 36656, "loc": { "start": { "line": 821, @@ -143126,8 +143126,8 @@ }, "object": { "type": "Identifier", - "start": 36649, - "end": 36652, + "start": 36648, + "end": 36651, "loc": { "start": { "line": 821, @@ -143144,8 +143144,8 @@ }, "property": { "type": "Identifier", - "start": 36653, - "end": 36657, + "start": 36652, + "end": 36656, "loc": { "start": { "line": 821, @@ -143165,8 +143165,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36658, - "end": 36703, + "start": 36657, + "end": 36702, "loc": { "start": { "line": 821, @@ -143190,8 +143190,8 @@ { "type": "CommentLine", "value": " Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top", - "start": 36417, - "end": 36520, + "start": 36416, + "end": 36519, "loc": { "start": { "line": 819, @@ -143206,8 +143206,8 @@ { "type": "CommentLine", "value": " Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject", - "start": 36533, - "end": 36636, + "start": 36532, + "end": 36635, "loc": { "start": { "line": 820, @@ -143223,8 +143223,8 @@ }, { "type": "ExpressionStatement", - "start": 36718, - "end": 36774, + "start": 36717, + "end": 36773, "loc": { "start": { "line": 822, @@ -143237,8 +143237,8 @@ }, "expression": { "type": "CallExpression", - "start": 36718, - "end": 36773, + "start": 36717, + "end": 36772, "loc": { "start": { "line": 822, @@ -143251,8 +143251,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36718, - "end": 36726, + "start": 36717, + "end": 36725, "loc": { "start": { "line": 822, @@ -143265,8 +143265,8 @@ }, "object": { "type": "Identifier", - "start": 36718, - "end": 36721, + "start": 36717, + "end": 36720, "loc": { "start": { "line": 822, @@ -143282,8 +143282,8 @@ }, "property": { "type": "Identifier", - "start": 36722, - "end": 36726, + "start": 36721, + "end": 36725, "loc": { "start": { "line": 822, @@ -143302,8 +143302,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36727, - "end": 36772, + "start": 36726, + "end": 36771, "loc": { "start": { "line": 822, @@ -143325,8 +143325,8 @@ }, { "type": "ExpressionStatement", - "start": 36787, - "end": 36843, + "start": 36786, + "end": 36842, "loc": { "start": { "line": 823, @@ -143339,8 +143339,8 @@ }, "expression": { "type": "CallExpression", - "start": 36787, - "end": 36842, + "start": 36786, + "end": 36841, "loc": { "start": { "line": 823, @@ -143353,8 +143353,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36787, - "end": 36795, + "start": 36786, + "end": 36794, "loc": { "start": { "line": 823, @@ -143367,8 +143367,8 @@ }, "object": { "type": "Identifier", - "start": 36787, - "end": 36790, + "start": 36786, + "end": 36789, "loc": { "start": { "line": 823, @@ -143384,8 +143384,8 @@ }, "property": { "type": "Identifier", - "start": 36791, - "end": 36795, + "start": 36790, + "end": 36794, "loc": { "start": { "line": 823, @@ -143404,8 +143404,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36796, - "end": 36841, + "start": 36795, + "end": 36840, "loc": { "start": { "line": 823, @@ -143427,8 +143427,8 @@ }, { "type": "ExpressionStatement", - "start": 36856, - "end": 36912, + "start": 36855, + "end": 36911, "loc": { "start": { "line": 824, @@ -143441,8 +143441,8 @@ }, "expression": { "type": "CallExpression", - "start": 36856, - "end": 36911, + "start": 36855, + "end": 36910, "loc": { "start": { "line": 824, @@ -143455,8 +143455,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36856, - "end": 36864, + "start": 36855, + "end": 36863, "loc": { "start": { "line": 824, @@ -143469,8 +143469,8 @@ }, "object": { "type": "Identifier", - "start": 36856, - "end": 36859, + "start": 36855, + "end": 36858, "loc": { "start": { "line": 824, @@ -143486,8 +143486,8 @@ }, "property": { "type": "Identifier", - "start": 36860, - "end": 36864, + "start": 36859, + "end": 36863, "loc": { "start": { "line": 824, @@ -143506,8 +143506,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36865, - "end": 36910, + "start": 36864, + "end": 36909, "loc": { "start": { "line": 824, @@ -143529,8 +143529,8 @@ }, { "type": "ExpressionStatement", - "start": 36925, - "end": 37037, + "start": 36924, + "end": 37036, "loc": { "start": { "line": 825, @@ -143543,8 +143543,8 @@ }, "expression": { "type": "CallExpression", - "start": 36925, - "end": 37036, + "start": 36924, + "end": 37035, "loc": { "start": { "line": 825, @@ -143557,8 +143557,8 @@ }, "callee": { "type": "MemberExpression", - "start": 36925, - "end": 36933, + "start": 36924, + "end": 36932, "loc": { "start": { "line": 825, @@ -143571,8 +143571,8 @@ }, "object": { "type": "Identifier", - "start": 36925, - "end": 36928, + "start": 36924, + "end": 36927, "loc": { "start": { "line": 825, @@ -143588,8 +143588,8 @@ }, "property": { "type": "Identifier", - "start": 36929, - "end": 36933, + "start": 36928, + "end": 36932, "loc": { "start": { "line": 825, @@ -143608,8 +143608,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 36934, - "end": 37035, + "start": 36933, + "end": 37034, "loc": { "start": { "line": 825, @@ -143631,8 +143631,8 @@ }, { "type": "ExpressionStatement", - "start": 37050, - "end": 37188, + "start": 37049, + "end": 37187, "loc": { "start": { "line": 826, @@ -143645,8 +143645,8 @@ }, "expression": { "type": "CallExpression", - "start": 37050, - "end": 37187, + "start": 37049, + "end": 37186, "loc": { "start": { "line": 826, @@ -143659,8 +143659,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37050, - "end": 37058, + "start": 37049, + "end": 37057, "loc": { "start": { "line": 826, @@ -143673,8 +143673,8 @@ }, "object": { "type": "Identifier", - "start": 37050, - "end": 37053, + "start": 37049, + "end": 37052, "loc": { "start": { "line": 826, @@ -143690,8 +143690,8 @@ }, "property": { "type": "Identifier", - "start": 37054, - "end": 37058, + "start": 37053, + "end": 37057, "loc": { "start": { "line": 826, @@ -143710,8 +143710,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 37059, - "end": 37186, + "start": 37058, + "end": 37185, "loc": { "start": { "line": 826, @@ -143733,8 +143733,8 @@ }, { "type": "ExpressionStatement", - "start": 37201, - "end": 37281, + "start": 37200, + "end": 37280, "loc": { "start": { "line": 827, @@ -143747,8 +143747,8 @@ }, "expression": { "type": "CallExpression", - "start": 37201, - "end": 37280, + "start": 37200, + "end": 37279, "loc": { "start": { "line": 827, @@ -143761,8 +143761,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37201, - "end": 37209, + "start": 37200, + "end": 37208, "loc": { "start": { "line": 827, @@ -143775,8 +143775,8 @@ }, "object": { "type": "Identifier", - "start": 37201, - "end": 37204, + "start": 37200, + "end": 37203, "loc": { "start": { "line": 827, @@ -143792,8 +143792,8 @@ }, "property": { "type": "Identifier", - "start": 37205, - "end": 37209, + "start": 37204, + "end": 37208, "loc": { "start": { "line": 827, @@ -143812,8 +143812,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 37210, - "end": 37279, + "start": 37209, + "end": 37278, "loc": { "start": { "line": 827, @@ -143838,8 +143838,8 @@ }, "alternate": { "type": "BlockStatement", - "start": 37297, - "end": 37391, + "start": 37296, + "end": 37390, "loc": { "start": { "line": 828, @@ -143853,8 +143853,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 37311, - "end": 37381, + "start": 37310, + "end": 37380, "loc": { "start": { "line": 829, @@ -143867,8 +143867,8 @@ }, "expression": { "type": "CallExpression", - "start": 37311, - "end": 37380, + "start": 37310, + "end": 37379, "loc": { "start": { "line": 829, @@ -143881,8 +143881,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37311, - "end": 37319, + "start": 37310, + "end": 37318, "loc": { "start": { "line": 829, @@ -143895,8 +143895,8 @@ }, "object": { "type": "Identifier", - "start": 37311, - "end": 37314, + "start": 37310, + "end": 37313, "loc": { "start": { "line": 829, @@ -143912,8 +143912,8 @@ }, "property": { "type": "Identifier", - "start": 37315, - "end": 37319, + "start": 37314, + "end": 37318, "loc": { "start": { "line": 829, @@ -143932,8 +143932,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 37320, - "end": 37379, + "start": 37319, + "end": 37378, "loc": { "start": { "line": 829, @@ -143959,8 +143959,8 @@ }, { "type": "IfStatement", - "start": 37401, - "end": 37505, + "start": 37400, + "end": 37504, "loc": { "start": { "line": 832, @@ -143973,8 +143973,8 @@ }, "test": { "type": "Identifier", - "start": 37405, - "end": 37416, + "start": 37404, + "end": 37415, "loc": { "start": { "line": 832, @@ -143990,8 +143990,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 37418, - "end": 37505, + "start": 37417, + "end": 37504, "loc": { "start": { "line": 832, @@ -144005,8 +144005,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 37432, - "end": 37495, + "start": 37431, + "end": 37494, "loc": { "start": { "line": 833, @@ -144019,8 +144019,8 @@ }, "expression": { "type": "CallExpression", - "start": 37432, - "end": 37494, + "start": 37431, + "end": 37493, "loc": { "start": { "line": 833, @@ -144033,8 +144033,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37432, - "end": 37440, + "start": 37431, + "end": 37439, "loc": { "start": { "line": 833, @@ -144047,8 +144047,8 @@ }, "object": { "type": "Identifier", - "start": 37432, - "end": 37435, + "start": 37431, + "end": 37434, "loc": { "start": { "line": 833, @@ -144064,8 +144064,8 @@ }, "property": { "type": "Identifier", - "start": 37436, - "end": 37440, + "start": 37435, + "end": 37439, "loc": { "start": { "line": 833, @@ -144084,8 +144084,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 37441, - "end": 37493, + "start": 37440, + "end": 37492, "loc": { "start": { "line": 833, @@ -144112,8 +144112,8 @@ }, { "type": "ExpressionStatement", - "start": 37515, - "end": 37553, + "start": 37514, + "end": 37552, "loc": { "start": { "line": 836, @@ -144126,8 +144126,8 @@ }, "expression": { "type": "CallExpression", - "start": 37515, - "end": 37552, + "start": 37514, + "end": 37551, "loc": { "start": { "line": 836, @@ -144140,8 +144140,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37515, - "end": 37523, + "start": 37514, + "end": 37522, "loc": { "start": { "line": 836, @@ -144154,8 +144154,8 @@ }, "object": { "type": "Identifier", - "start": 37515, - "end": 37518, + "start": 37514, + "end": 37517, "loc": { "start": { "line": 836, @@ -144171,8 +144171,8 @@ }, "property": { "type": "Identifier", - "start": 37519, - "end": 37523, + "start": 37518, + "end": 37522, "loc": { "start": { "line": 836, @@ -144191,8 +144191,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 37524, - "end": 37551, + "start": 37523, + "end": 37550, "loc": { "start": { "line": 836, @@ -144214,8 +144214,8 @@ }, { "type": "IfStatement", - "start": 37563, - "end": 37753, + "start": 37562, + "end": 37752, "loc": { "start": { "line": 838, @@ -144228,8 +144228,8 @@ }, "test": { "type": "LogicalExpression", - "start": 37567, - "end": 37655, + "start": 37566, + "end": 37654, "loc": { "start": { "line": 838, @@ -144242,8 +144242,8 @@ }, "left": { "type": "MemberExpression", - "start": 37567, - "end": 37602, + "start": 37566, + "end": 37601, "loc": { "start": { "line": 838, @@ -144256,8 +144256,8 @@ }, "object": { "type": "Identifier", - "start": 37567, - "end": 37572, + "start": 37566, + "end": 37571, "loc": { "start": { "line": 838, @@ -144273,8 +144273,8 @@ }, "property": { "type": "Identifier", - "start": 37573, - "end": 37602, + "start": 37572, + "end": 37601, "loc": { "start": { "line": 838, @@ -144293,8 +144293,8 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 37606, - "end": 37655, + "start": 37605, + "end": 37654, "loc": { "start": { "line": 838, @@ -144307,8 +144307,8 @@ }, "object": { "type": "MemberExpression", - "start": 37606, - "end": 37637, + "start": 37605, + "end": 37636, "loc": { "start": { "line": 838, @@ -144321,8 +144321,8 @@ }, "object": { "type": "Identifier", - "start": 37606, - "end": 37616, + "start": 37605, + "end": 37615, "loc": { "start": { "line": 838, @@ -144338,8 +144338,8 @@ }, "property": { "type": "Identifier", - "start": 37617, - "end": 37637, + "start": 37616, + "end": 37636, "loc": { "start": { "line": 838, @@ -144357,8 +144357,8 @@ }, "property": { "type": "StringLiteral", - "start": 37638, - "end": 37654, + "start": 37637, + "end": 37653, "loc": { "start": { "line": 838, @@ -144380,8 +144380,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 37657, - "end": 37753, + "start": 37656, + "end": 37752, "loc": { "start": { "line": 838, @@ -144395,8 +144395,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 37671, - "end": 37743, + "start": 37670, + "end": 37742, "loc": { "start": { "line": 839, @@ -144409,8 +144409,8 @@ }, "expression": { "type": "CallExpression", - "start": 37671, - "end": 37742, + "start": 37670, + "end": 37741, "loc": { "start": { "line": 839, @@ -144423,8 +144423,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37671, - "end": 37679, + "start": 37670, + "end": 37678, "loc": { "start": { "line": 839, @@ -144437,8 +144437,8 @@ }, "object": { "type": "Identifier", - "start": 37671, - "end": 37674, + "start": 37670, + "end": 37673, "loc": { "start": { "line": 839, @@ -144454,8 +144454,8 @@ }, "property": { "type": "Identifier", - "start": 37675, - "end": 37679, + "start": 37674, + "end": 37678, "loc": { "start": { "line": 839, @@ -144474,8 +144474,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 37680, - "end": 37741, + "start": 37679, + "end": 37740, "loc": { "start": { "line": 839, @@ -144502,8 +144502,8 @@ }, { "type": "ExpressionStatement", - "start": 37763, - "end": 37777, + "start": 37762, + "end": 37776, "loc": { "start": { "line": 842, @@ -144516,8 +144516,8 @@ }, "expression": { "type": "CallExpression", - "start": 37763, - "end": 37776, + "start": 37762, + "end": 37775, "loc": { "start": { "line": 842, @@ -144530,8 +144530,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37763, - "end": 37771, + "start": 37762, + "end": 37770, "loc": { "start": { "line": 842, @@ -144544,8 +144544,8 @@ }, "object": { "type": "Identifier", - "start": 37763, - "end": 37766, + "start": 37762, + "end": 37765, "loc": { "start": { "line": 842, @@ -144561,8 +144561,8 @@ }, "property": { "type": "Identifier", - "start": 37767, - "end": 37771, + "start": 37766, + "end": 37770, "loc": { "start": { "line": 842, @@ -144581,8 +144581,8 @@ "arguments": [ { "type": "StringLiteral", - "start": 37772, - "end": 37775, + "start": 37771, + "end": 37774, "loc": { "start": { "line": 842, @@ -144604,8 +144604,8 @@ }, { "type": "ReturnStatement", - "start": 37786, - "end": 37797, + "start": 37785, + "end": 37796, "loc": { "start": { "line": 843, @@ -144618,8 +144618,8 @@ }, "argument": { "type": "Identifier", - "start": 37793, - "end": 37796, + "start": 37792, + "end": 37795, "loc": { "start": { "line": 843, @@ -144640,8 +144640,8 @@ }, { "type": "ClassMethod", - "start": 37809, - "end": 37869, + "start": 37808, + "end": 37868, "loc": { "start": { "line": 846, @@ -144656,8 +144656,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 37809, - "end": 37829, + "start": 37808, + "end": 37828, "loc": { "start": { "line": 846, @@ -144679,8 +144679,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 37832, - "end": 37869, + "start": 37831, + "end": 37868, "loc": { "start": { "line": 846, @@ -144694,8 +144694,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 37842, - "end": 37863, + "start": 37841, + "end": 37862, "loc": { "start": { "line": 847, @@ -144708,8 +144708,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 37842, - "end": 37862, + "start": 37841, + "end": 37861, "loc": { "start": { "line": 847, @@ -144723,8 +144723,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 37842, - "end": 37855, + "start": 37841, + "end": 37854, "loc": { "start": { "line": 847, @@ -144737,8 +144737,8 @@ }, "object": { "type": "ThisExpression", - "start": 37842, - "end": 37846, + "start": 37841, + "end": 37845, "loc": { "start": { "line": 847, @@ -144752,8 +144752,8 @@ }, "property": { "type": "Identifier", - "start": 37847, - "end": 37855, + "start": 37846, + "end": 37854, "loc": { "start": { "line": 847, @@ -144771,8 +144771,8 @@ }, "right": { "type": "NullLiteral", - "start": 37858, - "end": 37862, + "start": 37857, + "end": 37861, "loc": { "start": { "line": 847, @@ -144792,8 +144792,8 @@ }, { "type": "ClassMethod", - "start": 37875, - "end": 37998, + "start": 37874, + "end": 37997, "loc": { "start": { "line": 850, @@ -144808,8 +144808,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 37875, - "end": 37882, + "start": 37874, + "end": 37881, "loc": { "start": { "line": 850, @@ -144831,8 +144831,8 @@ "params": [], "body": { "type": "BlockStatement", - "start": 37885, - "end": 37998, + "start": 37884, + "end": 37997, "loc": { "start": { "line": 850, @@ -144846,8 +144846,8 @@ "body": [ { "type": "IfStatement", - "start": 37895, - "end": 37962, + "start": 37894, + "end": 37961, "loc": { "start": { "line": 851, @@ -144860,8 +144860,8 @@ }, "test": { "type": "MemberExpression", - "start": 37899, - "end": 37912, + "start": 37898, + "end": 37911, "loc": { "start": { "line": 851, @@ -144874,8 +144874,8 @@ }, "object": { "type": "ThisExpression", - "start": 37899, - "end": 37903, + "start": 37898, + "end": 37902, "loc": { "start": { "line": 851, @@ -144889,8 +144889,8 @@ }, "property": { "type": "Identifier", - "start": 37904, - "end": 37912, + "start": 37903, + "end": 37911, "loc": { "start": { "line": 851, @@ -144908,8 +144908,8 @@ }, "consequent": { "type": "BlockStatement", - "start": 37914, - "end": 37962, + "start": 37913, + "end": 37961, "loc": { "start": { "line": 851, @@ -144923,8 +144923,8 @@ "body": [ { "type": "ExpressionStatement", - "start": 37928, - "end": 37952, + "start": 37927, + "end": 37951, "loc": { "start": { "line": 852, @@ -144937,8 +144937,8 @@ }, "expression": { "type": "CallExpression", - "start": 37928, - "end": 37951, + "start": 37927, + "end": 37950, "loc": { "start": { "line": 852, @@ -144951,8 +144951,8 @@ }, "callee": { "type": "MemberExpression", - "start": 37928, - "end": 37949, + "start": 37927, + "end": 37948, "loc": { "start": { "line": 852, @@ -144965,8 +144965,8 @@ }, "object": { "type": "MemberExpression", - "start": 37928, - "end": 37941, + "start": 37927, + "end": 37940, "loc": { "start": { "line": 852, @@ -144979,8 +144979,8 @@ }, "object": { "type": "ThisExpression", - "start": 37928, - "end": 37932, + "start": 37927, + "end": 37931, "loc": { "start": { "line": 852, @@ -144994,8 +144994,8 @@ }, "property": { "type": "Identifier", - "start": 37933, - "end": 37941, + "start": 37932, + "end": 37940, "loc": { "start": { "line": 852, @@ -145013,8 +145013,8 @@ }, "property": { "type": "Identifier", - "start": 37942, - "end": 37949, + "start": 37941, + "end": 37948, "loc": { "start": { "line": 852, @@ -145040,8 +145040,8 @@ }, { "type": "ExpressionStatement", - "start": 37971, - "end": 37992, + "start": 37970, + "end": 37991, "loc": { "start": { "line": 854, @@ -145054,8 +145054,8 @@ }, "expression": { "type": "AssignmentExpression", - "start": 37971, - "end": 37991, + "start": 37970, + "end": 37990, "loc": { "start": { "line": 854, @@ -145069,8 +145069,8 @@ "operator": "=", "left": { "type": "MemberExpression", - "start": 37971, - "end": 37984, + "start": 37970, + "end": 37983, "loc": { "start": { "line": 854, @@ -145083,8 +145083,8 @@ }, "object": { "type": "ThisExpression", - "start": 37971, - "end": 37975, + "start": 37970, + "end": 37974, "loc": { "start": { "line": 854, @@ -145098,8 +145098,8 @@ }, "property": { "type": "Identifier", - "start": 37976, - "end": 37984, + "start": 37975, + "end": 37983, "loc": { "start": { "line": 854, @@ -145117,8 +145117,8 @@ }, "right": { "type": "NullLiteral", - "start": 37987, - "end": 37991, + "start": 37986, + "end": 37990, "loc": { "start": { "line": 854, @@ -145266,8 +145266,8 @@ { "type": "CommentLine", "value": " If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.", - "start": 19188, - "end": 19306, + "start": 19177, + "end": 19295, "loc": { "start": { "line": 467, @@ -145282,8 +145282,8 @@ { "type": "CommentLine", "value": " CONSTANT DEFINITIONS", - "start": 23788, - "end": 23811, + "start": 23777, + "end": 23800, "loc": { "start": { "line": 577, @@ -145298,8 +145298,8 @@ { "type": "CommentLine", "value": " UTILITY DEFINITIONS", - "start": 24085, - "end": 24107, + "start": 24074, + "end": 24096, "loc": { "start": { "line": 586, @@ -145314,8 +145314,8 @@ { "type": "CommentLine", "value": " STRUCTURES", - "start": 24303, - "end": 24316, + "start": 24292, + "end": 24305, "loc": { "start": { "line": 592, @@ -145330,8 +145330,8 @@ { "type": "CommentLine", "value": " Only used for Phong", - "start": 25059, - "end": 25081, + "start": 25048, + "end": 25070, "loc": { "start": { "line": 615, @@ -145346,8 +145346,8 @@ { "type": "CommentLine", "value": " IRRADIANCE EVALUATION", - "start": 25115, - "end": 25139, + "start": 25104, + "end": 25128, "loc": { "start": { "line": 618, @@ -145362,8 +145362,8 @@ { "type": "CommentLine", "value": "TODO: a random factor - fix this", - "start": 26119, - "end": 26153, + "start": 26108, + "end": 26142, "loc": { "start": { "line": 633, @@ -145378,8 +145378,8 @@ { "type": "CommentLine", "value": " SPECULAR BRDF EVALUATION", - "start": 26418, - "end": 26445, + "start": 26407, + "end": 26434, "loc": { "start": { "line": 639, @@ -145394,8 +145394,8 @@ { "type": "CommentLine", "value": " MAIN LIGHTING COMPUTATION FUNCTION", - "start": 31107, - "end": 31144, + "start": 31095, + "end": 31132, "loc": { "start": { "line": 712, @@ -145410,8 +145410,8 @@ { "type": "CommentLine", "value": " a is intensity", - "start": 36079, - "end": 36096, + "start": 36078, + "end": 36095, "loc": { "start": { "line": 809, @@ -145426,8 +145426,8 @@ { "type": "CommentLine", "value": " Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top", - "start": 36417, - "end": 36520, + "start": 36416, + "end": 36519, "loc": { "start": { "line": 819, @@ -145442,8 +145442,8 @@ { "type": "CommentLine", "value": " Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject", - "start": 36533, - "end": 36636, + "start": 36532, + "end": 36635, "loc": { "start": { "line": 820, @@ -220804,9 +220804,9 @@ "binop": null, "updateContext": null }, - "value": "vec3 viewNormal = normalize(vec4(viewNormalMatrix * worldNormal).xyz);", + "value": "vec3 viewNormal = vec4(viewNormalMatrix * worldNormal).xyz;", "start": 17893, - "end": 17965, + "end": 17954, "loc": { "start": { "line": 429, @@ -220814,7 +220814,7 @@ }, "end": { "line": 429, - "column": 89 + "column": 78 } } }, @@ -220830,16 +220830,16 @@ "postfix": false, "binop": null }, - "start": 17965, - "end": 17966, + "start": 17954, + "end": 17955, "loc": { "start": { "line": 429, - "column": 89 + "column": 78 }, "end": { "line": 429, - "column": 90 + "column": 79 } } }, @@ -220856,16 +220856,16 @@ "binop": null, "updateContext": null }, - "start": 17966, - "end": 17967, + "start": 17955, + "end": 17956, "loc": { "start": { "line": 429, - "column": 90 + "column": 79 }, "end": { "line": 429, - "column": 91 + "column": 80 } } }, @@ -220882,8 +220882,8 @@ "binop": null }, "value": "src", - "start": 17977, - "end": 17980, + "start": 17966, + "end": 17969, "loc": { "start": { "line": 431, @@ -220908,8 +220908,8 @@ "binop": null, "updateContext": null }, - "start": 17980, - "end": 17981, + "start": 17969, + "end": 17970, "loc": { "start": { "line": 431, @@ -220934,8 +220934,8 @@ "binop": null }, "value": "push", - "start": 17981, - "end": 17985, + "start": 17970, + "end": 17974, "loc": { "start": { "line": 431, @@ -220959,8 +220959,8 @@ "postfix": false, "binop": null }, - "start": 17985, - "end": 17986, + "start": 17974, + "end": 17975, "loc": { "start": { "line": 431, @@ -220986,8 +220986,8 @@ "updateContext": null }, "value": "vec4 clipPos = projMatrix * viewPosition;", - "start": 17986, - "end": 18029, + "start": 17975, + "end": 18018, "loc": { "start": { "line": 431, @@ -221011,8 +221011,8 @@ "postfix": false, "binop": null }, - "start": 18029, - "end": 18030, + "start": 18018, + "end": 18019, "loc": { "start": { "line": 431, @@ -221037,8 +221037,8 @@ "binop": null, "updateContext": null }, - "start": 18030, - "end": 18031, + "start": 18019, + "end": 18020, "loc": { "start": { "line": 431, @@ -221065,8 +221065,8 @@ "updateContext": null }, "value": "if", - "start": 18040, - "end": 18042, + "start": 18029, + "end": 18031, "loc": { "start": { "line": 432, @@ -221090,8 +221090,8 @@ "postfix": false, "binop": null }, - "start": 18043, - "end": 18044, + "start": 18032, + "end": 18033, "loc": { "start": { "line": 432, @@ -221116,8 +221116,8 @@ "binop": null }, "value": "scene", - "start": 18044, - "end": 18049, + "start": 18033, + "end": 18038, "loc": { "start": { "line": 432, @@ -221142,8 +221142,8 @@ "binop": null, "updateContext": null }, - "start": 18049, - "end": 18050, + "start": 18038, + "end": 18039, "loc": { "start": { "line": 432, @@ -221168,8 +221168,8 @@ "binop": null }, "value": "logarithmicDepthBufferEnabled", - "start": 18050, - "end": 18079, + "start": 18039, + "end": 18068, "loc": { "start": { "line": 432, @@ -221193,8 +221193,8 @@ "postfix": false, "binop": null }, - "start": 18079, - "end": 18080, + "start": 18068, + "end": 18069, "loc": { "start": { "line": 432, @@ -221218,8 +221218,8 @@ "postfix": false, "binop": null }, - "start": 18081, - "end": 18082, + "start": 18070, + "end": 18071, "loc": { "start": { "line": 432, @@ -221246,8 +221246,8 @@ "updateContext": null }, "value": "if", - "start": 18095, - "end": 18097, + "start": 18084, + "end": 18086, "loc": { "start": { "line": 433, @@ -221271,8 +221271,8 @@ "postfix": false, "binop": null }, - "start": 18098, - "end": 18099, + "start": 18087, + "end": 18088, "loc": { "start": { "line": 433, @@ -221297,8 +221297,8 @@ "binop": null }, "value": "WEBGL_INFO", - "start": 18099, - "end": 18109, + "start": 18088, + "end": 18098, "loc": { "start": { "line": 433, @@ -221323,8 +221323,8 @@ "binop": null, "updateContext": null }, - "start": 18109, - "end": 18110, + "start": 18098, + "end": 18099, "loc": { "start": { "line": 433, @@ -221349,8 +221349,8 @@ "binop": null }, "value": "SUPPORTED_EXTENSIONS", - "start": 18110, - "end": 18130, + "start": 18099, + "end": 18119, "loc": { "start": { "line": 433, @@ -221375,8 +221375,8 @@ "binop": null, "updateContext": null }, - "start": 18130, - "end": 18131, + "start": 18119, + "end": 18120, "loc": { "start": { "line": 433, @@ -221402,8 +221402,8 @@ "updateContext": null }, "value": "EXT_frag_depth", - "start": 18131, - "end": 18147, + "start": 18120, + "end": 18136, "loc": { "start": { "line": 433, @@ -221428,8 +221428,8 @@ "binop": null, "updateContext": null }, - "start": 18147, - "end": 18148, + "start": 18136, + "end": 18137, "loc": { "start": { "line": 433, @@ -221453,8 +221453,8 @@ "postfix": false, "binop": null }, - "start": 18148, - "end": 18149, + "start": 18137, + "end": 18138, "loc": { "start": { "line": 433, @@ -221478,8 +221478,8 @@ "postfix": false, "binop": null }, - "start": 18150, - "end": 18151, + "start": 18139, + "end": 18140, "loc": { "start": { "line": 433, @@ -221504,8 +221504,8 @@ "binop": null }, "value": "src", - "start": 18168, - "end": 18171, + "start": 18157, + "end": 18160, "loc": { "start": { "line": 434, @@ -221530,8 +221530,8 @@ "binop": null, "updateContext": null }, - "start": 18171, - "end": 18172, + "start": 18160, + "end": 18161, "loc": { "start": { "line": 434, @@ -221556,8 +221556,8 @@ "binop": null }, "value": "push", - "start": 18172, - "end": 18176, + "start": 18161, + "end": 18165, "loc": { "start": { "line": 434, @@ -221581,8 +221581,8 @@ "postfix": false, "binop": null }, - "start": 18176, - "end": 18177, + "start": 18165, + "end": 18166, "loc": { "start": { "line": 434, @@ -221608,8 +221608,8 @@ "updateContext": null }, "value": "vFragDepth = 1.0 + clipPos.w;", - "start": 18177, - "end": 18208, + "start": 18166, + "end": 18197, "loc": { "start": { "line": 434, @@ -221633,8 +221633,8 @@ "postfix": false, "binop": null }, - "start": 18208, - "end": 18209, + "start": 18197, + "end": 18198, "loc": { "start": { "line": 434, @@ -221659,8 +221659,8 @@ "binop": null, "updateContext": null }, - "start": 18209, - "end": 18210, + "start": 18198, + "end": 18199, "loc": { "start": { "line": 434, @@ -221684,8 +221684,8 @@ "postfix": false, "binop": null }, - "start": 18223, - "end": 18224, + "start": 18212, + "end": 18213, "loc": { "start": { "line": 435, @@ -221712,8 +221712,8 @@ "updateContext": null }, "value": "else", - "start": 18225, - "end": 18229, + "start": 18214, + "end": 18218, "loc": { "start": { "line": 435, @@ -221737,8 +221737,8 @@ "postfix": false, "binop": null }, - "start": 18230, - "end": 18231, + "start": 18219, + "end": 18220, "loc": { "start": { "line": 435, @@ -221763,8 +221763,8 @@ "binop": null }, "value": "src", - "start": 18248, - "end": 18251, + "start": 18237, + "end": 18240, "loc": { "start": { "line": 436, @@ -221789,8 +221789,8 @@ "binop": null, "updateContext": null }, - "start": 18251, - "end": 18252, + "start": 18240, + "end": 18241, "loc": { "start": { "line": 436, @@ -221815,8 +221815,8 @@ "binop": null }, "value": "push", - "start": 18252, - "end": 18256, + "start": 18241, + "end": 18245, "loc": { "start": { "line": 436, @@ -221840,8 +221840,8 @@ "postfix": false, "binop": null }, - "start": 18256, - "end": 18257, + "start": 18245, + "end": 18246, "loc": { "start": { "line": 436, @@ -221867,8 +221867,8 @@ "updateContext": null }, "value": "clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;", - "start": 18257, - "end": 18330, + "start": 18246, + "end": 18319, "loc": { "start": { "line": 436, @@ -221892,8 +221892,8 @@ "postfix": false, "binop": null }, - "start": 18330, - "end": 18331, + "start": 18319, + "end": 18320, "loc": { "start": { "line": 436, @@ -221918,8 +221918,8 @@ "binop": null, "updateContext": null }, - "start": 18331, - "end": 18332, + "start": 18320, + "end": 18321, "loc": { "start": { "line": 436, @@ -221944,8 +221944,8 @@ "binop": null }, "value": "src", - "start": 18349, - "end": 18352, + "start": 18338, + "end": 18341, "loc": { "start": { "line": 437, @@ -221970,8 +221970,8 @@ "binop": null, "updateContext": null }, - "start": 18352, - "end": 18353, + "start": 18341, + "end": 18342, "loc": { "start": { "line": 437, @@ -221996,8 +221996,8 @@ "binop": null }, "value": "push", - "start": 18353, - "end": 18357, + "start": 18342, + "end": 18346, "loc": { "start": { "line": 437, @@ -222021,8 +222021,8 @@ "postfix": false, "binop": null }, - "start": 18357, - "end": 18358, + "start": 18346, + "end": 18347, "loc": { "start": { "line": 437, @@ -222048,8 +222048,8 @@ "updateContext": null }, "value": "clipPos.z *= clipPos.w;", - "start": 18358, - "end": 18383, + "start": 18347, + "end": 18372, "loc": { "start": { "line": 437, @@ -222073,8 +222073,8 @@ "postfix": false, "binop": null }, - "start": 18383, - "end": 18384, + "start": 18372, + "end": 18373, "loc": { "start": { "line": 437, @@ -222099,8 +222099,8 @@ "binop": null, "updateContext": null }, - "start": 18384, - "end": 18385, + "start": 18373, + "end": 18374, "loc": { "start": { "line": 437, @@ -222124,8 +222124,8 @@ "postfix": false, "binop": null }, - "start": 18398, - "end": 18399, + "start": 18387, + "end": 18388, "loc": { "start": { "line": 438, @@ -222149,8 +222149,8 @@ "postfix": false, "binop": null }, - "start": 18408, - "end": 18409, + "start": 18397, + "end": 18398, "loc": { "start": { "line": 439, @@ -222177,8 +222177,8 @@ "updateContext": null }, "value": "if", - "start": 18419, - "end": 18421, + "start": 18408, + "end": 18410, "loc": { "start": { "line": 441, @@ -222202,8 +222202,8 @@ "postfix": false, "binop": null }, - "start": 18422, - "end": 18423, + "start": 18411, + "end": 18412, "loc": { "start": { "line": 441, @@ -222228,8 +222228,8 @@ "binop": null }, "value": "clipping", - "start": 18423, - "end": 18431, + "start": 18412, + "end": 18420, "loc": { "start": { "line": 441, @@ -222253,8 +222253,8 @@ "postfix": false, "binop": null }, - "start": 18431, - "end": 18432, + "start": 18420, + "end": 18421, "loc": { "start": { "line": 441, @@ -222278,8 +222278,8 @@ "postfix": false, "binop": null }, - "start": 18433, - "end": 18434, + "start": 18422, + "end": 18423, "loc": { "start": { "line": 441, @@ -222304,8 +222304,8 @@ "binop": null }, "value": "src", - "start": 18447, - "end": 18450, + "start": 18436, + "end": 18439, "loc": { "start": { "line": 442, @@ -222330,8 +222330,8 @@ "binop": null, "updateContext": null }, - "start": 18450, - "end": 18451, + "start": 18439, + "end": 18440, "loc": { "start": { "line": 442, @@ -222356,8 +222356,8 @@ "binop": null }, "value": "push", - "start": 18451, - "end": 18455, + "start": 18440, + "end": 18444, "loc": { "start": { "line": 442, @@ -222381,8 +222381,8 @@ "postfix": false, "binop": null }, - "start": 18455, - "end": 18456, + "start": 18444, + "end": 18445, "loc": { "start": { "line": 442, @@ -222408,8 +222408,8 @@ "updateContext": null }, "value": "vWorldPosition = worldPosition;", - "start": 18456, - "end": 18489, + "start": 18445, + "end": 18478, "loc": { "start": { "line": 442, @@ -222433,8 +222433,8 @@ "postfix": false, "binop": null }, - "start": 18489, - "end": 18490, + "start": 18478, + "end": 18479, "loc": { "start": { "line": 442, @@ -222459,8 +222459,8 @@ "binop": null, "updateContext": null }, - "start": 18490, - "end": 18491, + "start": 18479, + "end": 18480, "loc": { "start": { "line": 442, @@ -222485,8 +222485,8 @@ "binop": null }, "value": "src", - "start": 18504, - "end": 18507, + "start": 18493, + "end": 18496, "loc": { "start": { "line": 443, @@ -222511,8 +222511,8 @@ "binop": null, "updateContext": null }, - "start": 18507, - "end": 18508, + "start": 18496, + "end": 18497, "loc": { "start": { "line": 443, @@ -222537,8 +222537,8 @@ "binop": null }, "value": "push", - "start": 18508, - "end": 18512, + "start": 18497, + "end": 18501, "loc": { "start": { "line": 443, @@ -222562,8 +222562,8 @@ "postfix": false, "binop": null }, - "start": 18512, - "end": 18513, + "start": 18501, + "end": 18502, "loc": { "start": { "line": 443, @@ -222589,8 +222589,8 @@ "updateContext": null }, "value": "vFlags2 = flags2;", - "start": 18513, - "end": 18532, + "start": 18502, + "end": 18521, "loc": { "start": { "line": 443, @@ -222614,8 +222614,8 @@ "postfix": false, "binop": null }, - "start": 18532, - "end": 18533, + "start": 18521, + "end": 18522, "loc": { "start": { "line": 443, @@ -222640,8 +222640,8 @@ "binop": null, "updateContext": null }, - "start": 18533, - "end": 18534, + "start": 18522, + "end": 18523, "loc": { "start": { "line": 443, @@ -222668,8 +222668,8 @@ "updateContext": null }, "value": "if", - "start": 18547, - "end": 18549, + "start": 18536, + "end": 18538, "loc": { "start": { "line": 444, @@ -222693,8 +222693,8 @@ "postfix": false, "binop": null }, - "start": 18550, - "end": 18551, + "start": 18539, + "end": 18540, "loc": { "start": { "line": 444, @@ -222719,8 +222719,8 @@ "binop": null }, "value": "clippingCaps", - "start": 18551, - "end": 18563, + "start": 18540, + "end": 18552, "loc": { "start": { "line": 444, @@ -222744,8 +222744,8 @@ "postfix": false, "binop": null }, - "start": 18563, - "end": 18564, + "start": 18552, + "end": 18553, "loc": { "start": { "line": 444, @@ -222769,8 +222769,8 @@ "postfix": false, "binop": null }, - "start": 18565, - "end": 18566, + "start": 18554, + "end": 18555, "loc": { "start": { "line": 444, @@ -222795,8 +222795,8 @@ "binop": null }, "value": "src", - "start": 18583, - "end": 18586, + "start": 18572, + "end": 18575, "loc": { "start": { "line": 445, @@ -222821,8 +222821,8 @@ "binop": null, "updateContext": null }, - "start": 18586, - "end": 18587, + "start": 18575, + "end": 18576, "loc": { "start": { "line": 445, @@ -222847,8 +222847,8 @@ "binop": null }, "value": "push", - "start": 18587, - "end": 18591, + "start": 18576, + "end": 18580, "loc": { "start": { "line": 445, @@ -222872,8 +222872,8 @@ "postfix": false, "binop": null }, - "start": 18591, - "end": 18592, + "start": 18580, + "end": 18581, "loc": { "start": { "line": 445, @@ -222899,8 +222899,8 @@ "updateContext": null }, "value": "vClipPosition = clipPos;", - "start": 18592, - "end": 18618, + "start": 18581, + "end": 18607, "loc": { "start": { "line": 445, @@ -222924,8 +222924,8 @@ "postfix": false, "binop": null }, - "start": 18618, - "end": 18619, + "start": 18607, + "end": 18608, "loc": { "start": { "line": 445, @@ -222950,8 +222950,8 @@ "binop": null, "updateContext": null }, - "start": 18619, - "end": 18620, + "start": 18608, + "end": 18609, "loc": { "start": { "line": 445, @@ -222975,8 +222975,8 @@ "postfix": false, "binop": null }, - "start": 18633, - "end": 18634, + "start": 18622, + "end": 18623, "loc": { "start": { "line": 446, @@ -223000,8 +223000,8 @@ "postfix": false, "binop": null }, - "start": 18643, - "end": 18644, + "start": 18632, + "end": 18633, "loc": { "start": { "line": 447, @@ -223026,8 +223026,8 @@ "binop": null }, "value": "src", - "start": 18654, - "end": 18657, + "start": 18643, + "end": 18646, "loc": { "start": { "line": 449, @@ -223052,8 +223052,8 @@ "binop": null, "updateContext": null }, - "start": 18657, - "end": 18658, + "start": 18646, + "end": 18647, "loc": { "start": { "line": 449, @@ -223078,8 +223078,8 @@ "binop": null }, "value": "push", - "start": 18658, - "end": 18662, + "start": 18647, + "end": 18651, "loc": { "start": { "line": 449, @@ -223103,8 +223103,8 @@ "postfix": false, "binop": null }, - "start": 18662, - "end": 18663, + "start": 18651, + "end": 18652, "loc": { "start": { "line": 449, @@ -223130,8 +223130,8 @@ "updateContext": null }, "value": "vViewPosition = viewPosition;", - "start": 18663, - "end": 18694, + "start": 18652, + "end": 18683, "loc": { "start": { "line": 449, @@ -223155,8 +223155,8 @@ "postfix": false, "binop": null }, - "start": 18694, - "end": 18695, + "start": 18683, + "end": 18684, "loc": { "start": { "line": 449, @@ -223181,8 +223181,8 @@ "binop": null, "updateContext": null }, - "start": 18695, - "end": 18696, + "start": 18684, + "end": 18685, "loc": { "start": { "line": 449, @@ -223207,8 +223207,8 @@ "binop": null }, "value": "src", - "start": 18705, - "end": 18708, + "start": 18694, + "end": 18697, "loc": { "start": { "line": 450, @@ -223233,8 +223233,8 @@ "binop": null, "updateContext": null }, - "start": 18708, - "end": 18709, + "start": 18697, + "end": 18698, "loc": { "start": { "line": 450, @@ -223259,8 +223259,8 @@ "binop": null }, "value": "push", - "start": 18709, - "end": 18713, + "start": 18698, + "end": 18702, "loc": { "start": { "line": 450, @@ -223284,8 +223284,8 @@ "postfix": false, "binop": null }, - "start": 18713, - "end": 18714, + "start": 18702, + "end": 18703, "loc": { "start": { "line": 450, @@ -223311,8 +223311,8 @@ "updateContext": null }, "value": "vViewNormal = viewNormal;", - "start": 18714, - "end": 18741, + "start": 18703, + "end": 18730, "loc": { "start": { "line": 450, @@ -223336,8 +223336,8 @@ "postfix": false, "binop": null }, - "start": 18741, - "end": 18742, + "start": 18730, + "end": 18731, "loc": { "start": { "line": 450, @@ -223362,8 +223362,8 @@ "binop": null, "updateContext": null }, - "start": 18742, - "end": 18743, + "start": 18731, + "end": 18732, "loc": { "start": { "line": 450, @@ -223388,8 +223388,8 @@ "binop": null }, "value": "src", - "start": 18752, - "end": 18755, + "start": 18741, + "end": 18744, "loc": { "start": { "line": 451, @@ -223414,8 +223414,8 @@ "binop": null, "updateContext": null }, - "start": 18755, - "end": 18756, + "start": 18744, + "end": 18745, "loc": { "start": { "line": 451, @@ -223440,8 +223440,8 @@ "binop": null }, "value": "push", - "start": 18756, - "end": 18760, + "start": 18745, + "end": 18749, "loc": { "start": { "line": 451, @@ -223465,8 +223465,8 @@ "postfix": false, "binop": null }, - "start": 18760, - "end": 18761, + "start": 18749, + "end": 18750, "loc": { "start": { "line": 451, @@ -223492,8 +223492,8 @@ "updateContext": null }, "value": "vColor = color;", - "start": 18761, - "end": 18778, + "start": 18750, + "end": 18767, "loc": { "start": { "line": 451, @@ -223517,8 +223517,8 @@ "postfix": false, "binop": null }, - "start": 18778, - "end": 18779, + "start": 18767, + "end": 18768, "loc": { "start": { "line": 451, @@ -223543,8 +223543,8 @@ "binop": null, "updateContext": null }, - "start": 18779, - "end": 18780, + "start": 18768, + "end": 18769, "loc": { "start": { "line": 451, @@ -223569,8 +223569,8 @@ "binop": null }, "value": "src", - "start": 18789, - "end": 18792, + "start": 18778, + "end": 18781, "loc": { "start": { "line": 452, @@ -223595,8 +223595,8 @@ "binop": null, "updateContext": null }, - "start": 18792, - "end": 18793, + "start": 18781, + "end": 18782, "loc": { "start": { "line": 452, @@ -223621,8 +223621,8 @@ "binop": null }, "value": "push", - "start": 18793, - "end": 18797, + "start": 18782, + "end": 18786, "loc": { "start": { "line": 452, @@ -223646,8 +223646,8 @@ "postfix": false, "binop": null }, - "start": 18797, - "end": 18798, + "start": 18786, + "end": 18787, "loc": { "start": { "line": 452, @@ -223673,8 +223673,8 @@ "updateContext": null }, "value": "vMetallicRoughness = metallicRoughness;", - "start": 18798, - "end": 18839, + "start": 18787, + "end": 18828, "loc": { "start": { "line": 452, @@ -223698,8 +223698,8 @@ "postfix": false, "binop": null }, - "start": 18839, - "end": 18840, + "start": 18828, + "end": 18829, "loc": { "start": { "line": 452, @@ -223724,8 +223724,8 @@ "binop": null, "updateContext": null }, - "start": 18840, - "end": 18841, + "start": 18829, + "end": 18830, "loc": { "start": { "line": 452, @@ -223752,8 +223752,8 @@ "updateContext": null }, "value": "if", - "start": 18851, - "end": 18853, + "start": 18840, + "end": 18842, "loc": { "start": { "line": 454, @@ -223777,8 +223777,8 @@ "postfix": false, "binop": null }, - "start": 18854, - "end": 18855, + "start": 18843, + "end": 18844, "loc": { "start": { "line": 454, @@ -223803,8 +223803,8 @@ "binop": null }, "value": "lightsState", - "start": 18855, - "end": 18866, + "start": 18844, + "end": 18855, "loc": { "start": { "line": 454, @@ -223829,8 +223829,8 @@ "binop": null, "updateContext": null }, - "start": 18866, - "end": 18867, + "start": 18855, + "end": 18856, "loc": { "start": { "line": 454, @@ -223855,8 +223855,8 @@ "binop": null }, "value": "lightMaps", - "start": 18867, - "end": 18876, + "start": 18856, + "end": 18865, "loc": { "start": { "line": 454, @@ -223881,8 +223881,8 @@ "binop": null, "updateContext": null }, - "start": 18876, - "end": 18877, + "start": 18865, + "end": 18866, "loc": { "start": { "line": 454, @@ -223907,8 +223907,8 @@ "binop": null }, "value": "length", - "start": 18877, - "end": 18883, + "start": 18866, + "end": 18872, "loc": { "start": { "line": 454, @@ -223934,8 +223934,8 @@ "updateContext": null }, "value": ">", - "start": 18884, - "end": 18885, + "start": 18873, + "end": 18874, "loc": { "start": { "line": 454, @@ -223961,8 +223961,8 @@ "updateContext": null }, "value": 0, - "start": 18886, - "end": 18887, + "start": 18875, + "end": 18876, "loc": { "start": { "line": 454, @@ -223986,8 +223986,8 @@ "postfix": false, "binop": null }, - "start": 18887, - "end": 18888, + "start": 18876, + "end": 18877, "loc": { "start": { "line": 454, @@ -224011,8 +224011,8 @@ "postfix": false, "binop": null }, - "start": 18889, - "end": 18890, + "start": 18878, + "end": 18879, "loc": { "start": { "line": 454, @@ -224037,8 +224037,8 @@ "binop": null }, "value": "src", - "start": 18903, - "end": 18906, + "start": 18892, + "end": 18895, "loc": { "start": { "line": 455, @@ -224063,8 +224063,8 @@ "binop": null, "updateContext": null }, - "start": 18906, - "end": 18907, + "start": 18895, + "end": 18896, "loc": { "start": { "line": 455, @@ -224089,8 +224089,8 @@ "binop": null }, "value": "push", - "start": 18907, - "end": 18911, + "start": 18896, + "end": 18900, "loc": { "start": { "line": 455, @@ -224114,8 +224114,8 @@ "postfix": false, "binop": null }, - "start": 18911, - "end": 18912, + "start": 18900, + "end": 18901, "loc": { "start": { "line": 455, @@ -224141,8 +224141,8 @@ "updateContext": null }, "value": "vWorldNormal = worldNormal.xyz;", - "start": 18912, - "end": 18945, + "start": 18901, + "end": 18934, "loc": { "start": { "line": 455, @@ -224166,8 +224166,8 @@ "postfix": false, "binop": null }, - "start": 18945, - "end": 18946, + "start": 18934, + "end": 18935, "loc": { "start": { "line": 455, @@ -224192,8 +224192,8 @@ "binop": null, "updateContext": null }, - "start": 18946, - "end": 18947, + "start": 18935, + "end": 18936, "loc": { "start": { "line": 455, @@ -224217,8 +224217,8 @@ "postfix": false, "binop": null }, - "start": 18956, - "end": 18957, + "start": 18945, + "end": 18946, "loc": { "start": { "line": 456, @@ -224243,8 +224243,8 @@ "binop": null }, "value": "src", - "start": 18967, - "end": 18970, + "start": 18956, + "end": 18959, "loc": { "start": { "line": 458, @@ -224269,8 +224269,8 @@ "binop": null, "updateContext": null }, - "start": 18970, - "end": 18971, + "start": 18959, + "end": 18960, "loc": { "start": { "line": 458, @@ -224295,8 +224295,8 @@ "binop": null }, "value": "push", - "start": 18971, - "end": 18975, + "start": 18960, + "end": 18964, "loc": { "start": { "line": 458, @@ -224320,8 +224320,8 @@ "postfix": false, "binop": null }, - "start": 18975, - "end": 18976, + "start": 18964, + "end": 18965, "loc": { "start": { "line": 458, @@ -224347,8 +224347,8 @@ "updateContext": null }, "value": "gl_Position = clipPos;", - "start": 18976, - "end": 19000, + "start": 18965, + "end": 18989, "loc": { "start": { "line": 458, @@ -224372,8 +224372,8 @@ "postfix": false, "binop": null }, - "start": 19000, - "end": 19001, + "start": 18989, + "end": 18990, "loc": { "start": { "line": 458, @@ -224398,8 +224398,8 @@ "binop": null, "updateContext": null }, - "start": 19001, - "end": 19002, + "start": 18990, + "end": 18991, "loc": { "start": { "line": 458, @@ -224424,8 +224424,8 @@ "binop": null }, "value": "src", - "start": 19011, - "end": 19014, + "start": 19000, + "end": 19003, "loc": { "start": { "line": 459, @@ -224450,8 +224450,8 @@ "binop": null, "updateContext": null }, - "start": 19014, - "end": 19015, + "start": 19003, + "end": 19004, "loc": { "start": { "line": 459, @@ -224476,8 +224476,8 @@ "binop": null }, "value": "push", - "start": 19015, - "end": 19019, + "start": 19004, + "end": 19008, "loc": { "start": { "line": 459, @@ -224501,8 +224501,8 @@ "postfix": false, "binop": null }, - "start": 19019, - "end": 19020, + "start": 19008, + "end": 19009, "loc": { "start": { "line": 459, @@ -224528,8 +224528,8 @@ "updateContext": null }, "value": "}", - "start": 19020, - "end": 19023, + "start": 19009, + "end": 19012, "loc": { "start": { "line": 459, @@ -224553,8 +224553,8 @@ "postfix": false, "binop": null }, - "start": 19023, - "end": 19024, + "start": 19012, + "end": 19013, "loc": { "start": { "line": 459, @@ -224579,8 +224579,8 @@ "binop": null, "updateContext": null }, - "start": 19024, - "end": 19025, + "start": 19013, + "end": 19014, "loc": { "start": { "line": 459, @@ -224605,8 +224605,8 @@ "binop": null }, "value": "src", - "start": 19034, - "end": 19037, + "start": 19023, + "end": 19026, "loc": { "start": { "line": 460, @@ -224631,8 +224631,8 @@ "binop": null, "updateContext": null }, - "start": 19037, - "end": 19038, + "start": 19026, + "end": 19027, "loc": { "start": { "line": 460, @@ -224657,8 +224657,8 @@ "binop": null }, "value": "push", - "start": 19038, - "end": 19042, + "start": 19027, + "end": 19031, "loc": { "start": { "line": 460, @@ -224682,8 +224682,8 @@ "postfix": false, "binop": null }, - "start": 19042, - "end": 19043, + "start": 19031, + "end": 19032, "loc": { "start": { "line": 460, @@ -224709,8 +224709,8 @@ "updateContext": null }, "value": "}", - "start": 19043, - "end": 19046, + "start": 19032, + "end": 19035, "loc": { "start": { "line": 460, @@ -224734,8 +224734,8 @@ "postfix": false, "binop": null }, - "start": 19046, - "end": 19047, + "start": 19035, + "end": 19036, "loc": { "start": { "line": 460, @@ -224760,8 +224760,8 @@ "binop": null, "updateContext": null }, - "start": 19047, - "end": 19048, + "start": 19036, + "end": 19037, "loc": { "start": { "line": 460, @@ -224788,8 +224788,8 @@ "updateContext": null }, "value": "return", - "start": 19057, - "end": 19063, + "start": 19046, + "end": 19052, "loc": { "start": { "line": 461, @@ -224814,8 +224814,8 @@ "binop": null }, "value": "src", - "start": 19064, - "end": 19067, + "start": 19053, + "end": 19056, "loc": { "start": { "line": 461, @@ -224840,8 +224840,8 @@ "binop": null, "updateContext": null }, - "start": 19067, - "end": 19068, + "start": 19056, + "end": 19057, "loc": { "start": { "line": 461, @@ -224865,8 +224865,8 @@ "postfix": false, "binop": null }, - "start": 19073, - "end": 19074, + "start": 19062, + "end": 19063, "loc": { "start": { "line": 462, @@ -224891,8 +224891,8 @@ "binop": null }, "value": "_buildFragmentShader", - "start": 19080, - "end": 19100, + "start": 19069, + "end": 19089, "loc": { "start": { "line": 464, @@ -224916,8 +224916,8 @@ "postfix": false, "binop": null }, - "start": 19100, - "end": 19101, + "start": 19089, + "end": 19090, "loc": { "start": { "line": 464, @@ -224941,8 +224941,8 @@ "postfix": false, "binop": null }, - "start": 19101, - "end": 19102, + "start": 19090, + "end": 19091, "loc": { "start": { "line": 464, @@ -224966,8 +224966,8 @@ "postfix": false, "binop": null }, - "start": 19103, - "end": 19104, + "start": 19092, + "end": 19093, "loc": { "start": { "line": 464, @@ -224994,8 +224994,8 @@ "updateContext": null }, "value": "const", - "start": 19114, - "end": 19119, + "start": 19103, + "end": 19108, "loc": { "start": { "line": 466, @@ -225020,8 +225020,8 @@ "binop": null }, "value": "scene", - "start": 19120, - "end": 19125, + "start": 19109, + "end": 19114, "loc": { "start": { "line": 466, @@ -225047,8 +225047,8 @@ "updateContext": null }, "value": "=", - "start": 19126, - "end": 19127, + "start": 19115, + "end": 19116, "loc": { "start": { "line": 466, @@ -225075,8 +225075,8 @@ "updateContext": null }, "value": "this", - "start": 19128, - "end": 19132, + "start": 19117, + "end": 19121, "loc": { "start": { "line": 466, @@ -225101,8 +225101,8 @@ "binop": null, "updateContext": null }, - "start": 19132, - "end": 19133, + "start": 19121, + "end": 19122, "loc": { "start": { "line": 466, @@ -225127,8 +225127,8 @@ "binop": null }, "value": "_scene", - "start": 19133, - "end": 19139, + "start": 19122, + "end": 19128, "loc": { "start": { "line": 466, @@ -225153,8 +225153,8 @@ "binop": null, "updateContext": null }, - "start": 19139, - "end": 19140, + "start": 19128, + "end": 19129, "loc": { "start": { "line": 466, @@ -225181,8 +225181,8 @@ "updateContext": null }, "value": "const", - "start": 19149, - "end": 19154, + "start": 19138, + "end": 19143, "loc": { "start": { "line": 467, @@ -225207,8 +225207,8 @@ "binop": null }, "value": "gammaOutput", - "start": 19155, - "end": 19166, + "start": 19144, + "end": 19155, "loc": { "start": { "line": 467, @@ -225234,8 +225234,8 @@ "updateContext": null }, "value": "=", - "start": 19167, - "end": 19168, + "start": 19156, + "end": 19157, "loc": { "start": { "line": 467, @@ -225260,8 +225260,8 @@ "binop": null }, "value": "scene", - "start": 19169, - "end": 19174, + "start": 19158, + "end": 19163, "loc": { "start": { "line": 467, @@ -225286,8 +225286,8 @@ "binop": null, "updateContext": null }, - "start": 19174, - "end": 19175, + "start": 19163, + "end": 19164, "loc": { "start": { "line": 467, @@ -225312,8 +225312,8 @@ "binop": null }, "value": "gammaOutput", - "start": 19175, - "end": 19186, + "start": 19164, + "end": 19175, "loc": { "start": { "line": 467, @@ -225338,8 +225338,8 @@ "binop": null, "updateContext": null }, - "start": 19186, - "end": 19187, + "start": 19175, + "end": 19176, "loc": { "start": { "line": 467, @@ -225354,8 +225354,8 @@ { "type": "CommentLine", "value": " If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.", - "start": 19188, - "end": 19306, + "start": 19177, + "end": 19295, "loc": { "start": { "line": 467, @@ -225382,8 +225382,8 @@ "updateContext": null }, "value": "const", - "start": 19315, - "end": 19320, + "start": 19304, + "end": 19309, "loc": { "start": { "line": 468, @@ -225408,8 +225408,8 @@ "binop": null }, "value": "sectionPlanesState", - "start": 19321, - "end": 19339, + "start": 19310, + "end": 19328, "loc": { "start": { "line": 468, @@ -225435,8 +225435,8 @@ "updateContext": null }, "value": "=", - "start": 19340, - "end": 19341, + "start": 19329, + "end": 19330, "loc": { "start": { "line": 468, @@ -225461,8 +225461,8 @@ "binop": null }, "value": "scene", - "start": 19342, - "end": 19347, + "start": 19331, + "end": 19336, "loc": { "start": { "line": 468, @@ -225487,8 +225487,8 @@ "binop": null, "updateContext": null }, - "start": 19347, - "end": 19348, + "start": 19336, + "end": 19337, "loc": { "start": { "line": 468, @@ -225513,8 +225513,8 @@ "binop": null }, "value": "_sectionPlanesState", - "start": 19348, - "end": 19367, + "start": 19337, + "end": 19356, "loc": { "start": { "line": 468, @@ -225539,8 +225539,8 @@ "binop": null, "updateContext": null }, - "start": 19367, - "end": 19368, + "start": 19356, + "end": 19357, "loc": { "start": { "line": 468, @@ -225567,8 +225567,8 @@ "updateContext": null }, "value": "const", - "start": 19377, - "end": 19382, + "start": 19366, + "end": 19371, "loc": { "start": { "line": 469, @@ -225593,8 +225593,8 @@ "binop": null }, "value": "lightsState", - "start": 19383, - "end": 19394, + "start": 19372, + "end": 19383, "loc": { "start": { "line": 469, @@ -225620,8 +225620,8 @@ "updateContext": null }, "value": "=", - "start": 19395, - "end": 19396, + "start": 19384, + "end": 19385, "loc": { "start": { "line": 469, @@ -225646,8 +225646,8 @@ "binop": null }, "value": "scene", - "start": 19397, - "end": 19402, + "start": 19386, + "end": 19391, "loc": { "start": { "line": 469, @@ -225672,8 +225672,8 @@ "binop": null, "updateContext": null }, - "start": 19402, - "end": 19403, + "start": 19391, + "end": 19392, "loc": { "start": { "line": 469, @@ -225698,8 +225698,8 @@ "binop": null }, "value": "_lightsState", - "start": 19403, - "end": 19415, + "start": 19392, + "end": 19404, "loc": { "start": { "line": 469, @@ -225724,8 +225724,8 @@ "binop": null, "updateContext": null }, - "start": 19415, - "end": 19416, + "start": 19404, + "end": 19405, "loc": { "start": { "line": 469, @@ -225752,8 +225752,8 @@ "updateContext": null }, "value": "const", - "start": 19425, - "end": 19430, + "start": 19414, + "end": 19419, "loc": { "start": { "line": 470, @@ -225778,8 +225778,8 @@ "binop": null }, "value": "clipping", - "start": 19431, - "end": 19439, + "start": 19420, + "end": 19428, "loc": { "start": { "line": 470, @@ -225805,8 +225805,8 @@ "updateContext": null }, "value": "=", - "start": 19440, - "end": 19441, + "start": 19429, + "end": 19430, "loc": { "start": { "line": 470, @@ -225831,8 +225831,8 @@ "binop": null }, "value": "sectionPlanesState", - "start": 19442, - "end": 19460, + "start": 19431, + "end": 19449, "loc": { "start": { "line": 470, @@ -225857,8 +225857,8 @@ "binop": null, "updateContext": null }, - "start": 19460, - "end": 19461, + "start": 19449, + "end": 19450, "loc": { "start": { "line": 470, @@ -225883,8 +225883,8 @@ "binop": null }, "value": "sectionPlanes", - "start": 19461, - "end": 19474, + "start": 19450, + "end": 19463, "loc": { "start": { "line": 470, @@ -225909,8 +225909,8 @@ "binop": null, "updateContext": null }, - "start": 19474, - "end": 19475, + "start": 19463, + "end": 19464, "loc": { "start": { "line": 470, @@ -225935,8 +225935,8 @@ "binop": null }, "value": "length", - "start": 19475, - "end": 19481, + "start": 19464, + "end": 19470, "loc": { "start": { "line": 470, @@ -225962,8 +225962,8 @@ "updateContext": null }, "value": ">", - "start": 19482, - "end": 19483, + "start": 19471, + "end": 19472, "loc": { "start": { "line": 470, @@ -225989,8 +225989,8 @@ "updateContext": null }, "value": 0, - "start": 19484, - "end": 19485, + "start": 19473, + "end": 19474, "loc": { "start": { "line": 470, @@ -226015,8 +226015,8 @@ "binop": null, "updateContext": null }, - "start": 19485, - "end": 19486, + "start": 19474, + "end": 19475, "loc": { "start": { "line": 470, @@ -226043,8 +226043,8 @@ "updateContext": null }, "value": "const", - "start": 19495, - "end": 19500, + "start": 19484, + "end": 19489, "loc": { "start": { "line": 471, @@ -226069,8 +226069,8 @@ "binop": null }, "value": "clippingCaps", - "start": 19501, - "end": 19513, + "start": 19490, + "end": 19502, "loc": { "start": { "line": 471, @@ -226096,8 +226096,8 @@ "updateContext": null }, "value": "=", - "start": 19514, - "end": 19515, + "start": 19503, + "end": 19504, "loc": { "start": { "line": 471, @@ -226122,8 +226122,8 @@ "binop": null }, "value": "sectionPlanesState", - "start": 19516, - "end": 19534, + "start": 19505, + "end": 19523, "loc": { "start": { "line": 471, @@ -226148,8 +226148,8 @@ "binop": null, "updateContext": null }, - "start": 19534, - "end": 19535, + "start": 19523, + "end": 19524, "loc": { "start": { "line": 471, @@ -226174,8 +226174,8 @@ "binop": null }, "value": "clippingCaps", - "start": 19535, - "end": 19547, + "start": 19524, + "end": 19536, "loc": { "start": { "line": 471, @@ -226200,8 +226200,8 @@ "binop": null, "updateContext": null }, - "start": 19547, - "end": 19548, + "start": 19536, + "end": 19537, "loc": { "start": { "line": 471, @@ -226228,8 +226228,8 @@ "updateContext": null }, "value": "const", - "start": 19557, - "end": 19562, + "start": 19546, + "end": 19551, "loc": { "start": { "line": 472, @@ -226254,8 +226254,8 @@ "binop": null }, "value": "src", - "start": 19563, - "end": 19566, + "start": 19552, + "end": 19555, "loc": { "start": { "line": 472, @@ -226281,8 +226281,8 @@ "updateContext": null }, "value": "=", - "start": 19567, - "end": 19568, + "start": 19556, + "end": 19557, "loc": { "start": { "line": 472, @@ -226307,8 +226307,8 @@ "binop": null, "updateContext": null }, - "start": 19569, - "end": 19570, + "start": 19558, + "end": 19559, "loc": { "start": { "line": 472, @@ -226333,8 +226333,8 @@ "binop": null, "updateContext": null }, - "start": 19570, - "end": 19571, + "start": 19559, + "end": 19560, "loc": { "start": { "line": 472, @@ -226359,8 +226359,8 @@ "binop": null, "updateContext": null }, - "start": 19571, - "end": 19572, + "start": 19560, + "end": 19561, "loc": { "start": { "line": 472, @@ -226385,8 +226385,8 @@ "binop": null }, "value": "src", - "start": 19582, - "end": 19585, + "start": 19571, + "end": 19574, "loc": { "start": { "line": 474, @@ -226411,8 +226411,8 @@ "binop": null, "updateContext": null }, - "start": 19585, - "end": 19586, + "start": 19574, + "end": 19575, "loc": { "start": { "line": 474, @@ -226437,8 +226437,8 @@ "binop": null }, "value": "push", - "start": 19586, - "end": 19590, + "start": 19575, + "end": 19579, "loc": { "start": { "line": 474, @@ -226462,8 +226462,8 @@ "postfix": false, "binop": null }, - "start": 19590, - "end": 19591, + "start": 19579, + "end": 19580, "loc": { "start": { "line": 474, @@ -226489,8 +226489,8 @@ "updateContext": null }, "value": "// Instancing geometry quality drawing fragment shader", - "start": 19591, - "end": 19647, + "start": 19580, + "end": 19636, "loc": { "start": { "line": 474, @@ -226514,8 +226514,8 @@ "postfix": false, "binop": null }, - "start": 19647, - "end": 19648, + "start": 19636, + "end": 19637, "loc": { "start": { "line": 474, @@ -226540,8 +226540,8 @@ "binop": null, "updateContext": null }, - "start": 19648, - "end": 19649, + "start": 19637, + "end": 19638, "loc": { "start": { "line": 474, @@ -226568,8 +226568,8 @@ "updateContext": null }, "value": "if", - "start": 19659, - "end": 19661, + "start": 19648, + "end": 19650, "loc": { "start": { "line": 476, @@ -226593,8 +226593,8 @@ "postfix": false, "binop": null }, - "start": 19662, - "end": 19663, + "start": 19651, + "end": 19652, "loc": { "start": { "line": 476, @@ -226619,8 +226619,8 @@ "binop": null }, "value": "scene", - "start": 19663, - "end": 19668, + "start": 19652, + "end": 19657, "loc": { "start": { "line": 476, @@ -226645,8 +226645,8 @@ "binop": null, "updateContext": null }, - "start": 19668, - "end": 19669, + "start": 19657, + "end": 19658, "loc": { "start": { "line": 476, @@ -226671,8 +226671,8 @@ "binop": null }, "value": "logarithmicDepthBufferEnabled", - "start": 19669, - "end": 19698, + "start": 19658, + "end": 19687, "loc": { "start": { "line": 476, @@ -226698,8 +226698,8 @@ "updateContext": null }, "value": "&&", - "start": 19699, - "end": 19701, + "start": 19688, + "end": 19690, "loc": { "start": { "line": 476, @@ -226724,8 +226724,8 @@ "binop": null }, "value": "WEBGL_INFO", - "start": 19702, - "end": 19712, + "start": 19691, + "end": 19701, "loc": { "start": { "line": 476, @@ -226750,8 +226750,8 @@ "binop": null, "updateContext": null }, - "start": 19712, - "end": 19713, + "start": 19701, + "end": 19702, "loc": { "start": { "line": 476, @@ -226776,8 +226776,8 @@ "binop": null }, "value": "SUPPORTED_EXTENSIONS", - "start": 19713, - "end": 19733, + "start": 19702, + "end": 19722, "loc": { "start": { "line": 476, @@ -226802,8 +226802,8 @@ "binop": null, "updateContext": null }, - "start": 19733, - "end": 19734, + "start": 19722, + "end": 19723, "loc": { "start": { "line": 476, @@ -226829,8 +226829,8 @@ "updateContext": null }, "value": "EXT_frag_depth", - "start": 19734, - "end": 19750, + "start": 19723, + "end": 19739, "loc": { "start": { "line": 476, @@ -226855,8 +226855,8 @@ "binop": null, "updateContext": null }, - "start": 19750, - "end": 19751, + "start": 19739, + "end": 19740, "loc": { "start": { "line": 476, @@ -226880,8 +226880,8 @@ "postfix": false, "binop": null }, - "start": 19751, - "end": 19752, + "start": 19740, + "end": 19741, "loc": { "start": { "line": 476, @@ -226905,8 +226905,8 @@ "postfix": false, "binop": null }, - "start": 19753, - "end": 19754, + "start": 19742, + "end": 19743, "loc": { "start": { "line": 476, @@ -226931,8 +226931,8 @@ "binop": null }, "value": "src", - "start": 19767, - "end": 19770, + "start": 19756, + "end": 19759, "loc": { "start": { "line": 477, @@ -226957,8 +226957,8 @@ "binop": null, "updateContext": null }, - "start": 19770, - "end": 19771, + "start": 19759, + "end": 19760, "loc": { "start": { "line": 477, @@ -226983,8 +226983,8 @@ "binop": null }, "value": "push", - "start": 19771, - "end": 19775, + "start": 19760, + "end": 19764, "loc": { "start": { "line": 477, @@ -227008,8 +227008,8 @@ "postfix": false, "binop": null }, - "start": 19775, - "end": 19776, + "start": 19764, + "end": 19765, "loc": { "start": { "line": 477, @@ -227035,8 +227035,8 @@ "updateContext": null }, "value": "#extension GL_EXT_frag_depth : enable", - "start": 19776, - "end": 19815, + "start": 19765, + "end": 19804, "loc": { "start": { "line": 477, @@ -227060,8 +227060,8 @@ "postfix": false, "binop": null }, - "start": 19815, - "end": 19816, + "start": 19804, + "end": 19805, "loc": { "start": { "line": 477, @@ -227086,8 +227086,8 @@ "binop": null, "updateContext": null }, - "start": 19816, - "end": 19817, + "start": 19805, + "end": 19806, "loc": { "start": { "line": 477, @@ -227111,8 +227111,8 @@ "postfix": false, "binop": null }, - "start": 19826, - "end": 19827, + "start": 19815, + "end": 19816, "loc": { "start": { "line": 478, @@ -227137,8 +227137,8 @@ "binop": null }, "value": "src", - "start": 19837, - "end": 19840, + "start": 19826, + "end": 19829, "loc": { "start": { "line": 480, @@ -227163,8 +227163,8 @@ "binop": null, "updateContext": null }, - "start": 19840, - "end": 19841, + "start": 19829, + "end": 19830, "loc": { "start": { "line": 480, @@ -227189,8 +227189,8 @@ "binop": null }, "value": "push", - "start": 19841, - "end": 19845, + "start": 19830, + "end": 19834, "loc": { "start": { "line": 480, @@ -227214,8 +227214,8 @@ "postfix": false, "binop": null }, - "start": 19845, - "end": 19846, + "start": 19834, + "end": 19835, "loc": { "start": { "line": 480, @@ -227241,8 +227241,8 @@ "updateContext": null }, "value": "#ifdef GL_FRAGMENT_PRECISION_HIGH", - "start": 19846, - "end": 19881, + "start": 19835, + "end": 19870, "loc": { "start": { "line": 480, @@ -227266,8 +227266,8 @@ "postfix": false, "binop": null }, - "start": 19881, - "end": 19882, + "start": 19870, + "end": 19871, "loc": { "start": { "line": 480, @@ -227292,8 +227292,8 @@ "binop": null, "updateContext": null }, - "start": 19882, - "end": 19883, + "start": 19871, + "end": 19872, "loc": { "start": { "line": 480, @@ -227318,8 +227318,8 @@ "binop": null }, "value": "src", - "start": 19892, - "end": 19895, + "start": 19881, + "end": 19884, "loc": { "start": { "line": 481, @@ -227344,8 +227344,8 @@ "binop": null, "updateContext": null }, - "start": 19895, - "end": 19896, + "start": 19884, + "end": 19885, "loc": { "start": { "line": 481, @@ -227370,8 +227370,8 @@ "binop": null }, "value": "push", - "start": 19896, - "end": 19900, + "start": 19885, + "end": 19889, "loc": { "start": { "line": 481, @@ -227395,8 +227395,8 @@ "postfix": false, "binop": null }, - "start": 19900, - "end": 19901, + "start": 19889, + "end": 19890, "loc": { "start": { "line": 481, @@ -227422,8 +227422,8 @@ "updateContext": null }, "value": "precision highp float;", - "start": 19901, - "end": 19925, + "start": 19890, + "end": 19914, "loc": { "start": { "line": 481, @@ -227447,8 +227447,8 @@ "postfix": false, "binop": null }, - "start": 19925, - "end": 19926, + "start": 19914, + "end": 19915, "loc": { "start": { "line": 481, @@ -227473,8 +227473,8 @@ "binop": null, "updateContext": null }, - "start": 19926, - "end": 19927, + "start": 19915, + "end": 19916, "loc": { "start": { "line": 481, @@ -227499,8 +227499,8 @@ "binop": null }, "value": "src", - "start": 19936, - "end": 19939, + "start": 19925, + "end": 19928, "loc": { "start": { "line": 482, @@ -227525,8 +227525,8 @@ "binop": null, "updateContext": null }, - "start": 19939, - "end": 19940, + "start": 19928, + "end": 19929, "loc": { "start": { "line": 482, @@ -227551,8 +227551,8 @@ "binop": null }, "value": "push", - "start": 19940, - "end": 19944, + "start": 19929, + "end": 19933, "loc": { "start": { "line": 482, @@ -227576,8 +227576,8 @@ "postfix": false, "binop": null }, - "start": 19944, - "end": 19945, + "start": 19933, + "end": 19934, "loc": { "start": { "line": 482, @@ -227603,8 +227603,8 @@ "updateContext": null }, "value": "precision highp int;", - "start": 19945, - "end": 19967, + "start": 19934, + "end": 19956, "loc": { "start": { "line": 482, @@ -227628,8 +227628,8 @@ "postfix": false, "binop": null }, - "start": 19967, - "end": 19968, + "start": 19956, + "end": 19957, "loc": { "start": { "line": 482, @@ -227654,8 +227654,8 @@ "binop": null, "updateContext": null }, - "start": 19968, - "end": 19969, + "start": 19957, + "end": 19958, "loc": { "start": { "line": 482, @@ -227680,8 +227680,8 @@ "binop": null }, "value": "src", - "start": 19978, - "end": 19981, + "start": 19967, + "end": 19970, "loc": { "start": { "line": 483, @@ -227706,8 +227706,8 @@ "binop": null, "updateContext": null }, - "start": 19981, - "end": 19982, + "start": 19970, + "end": 19971, "loc": { "start": { "line": 483, @@ -227732,8 +227732,8 @@ "binop": null }, "value": "push", - "start": 19982, - "end": 19986, + "start": 19971, + "end": 19975, "loc": { "start": { "line": 483, @@ -227757,8 +227757,8 @@ "postfix": false, "binop": null }, - "start": 19986, - "end": 19987, + "start": 19975, + "end": 19976, "loc": { "start": { "line": 483, @@ -227784,8 +227784,8 @@ "updateContext": null }, "value": "#else", - "start": 19987, - "end": 19994, + "start": 19976, + "end": 19983, "loc": { "start": { "line": 483, @@ -227809,8 +227809,8 @@ "postfix": false, "binop": null }, - "start": 19994, - "end": 19995, + "start": 19983, + "end": 19984, "loc": { "start": { "line": 483, @@ -227835,8 +227835,8 @@ "binop": null, "updateContext": null }, - "start": 19995, - "end": 19996, + "start": 19984, + "end": 19985, "loc": { "start": { "line": 483, @@ -227861,8 +227861,8 @@ "binop": null }, "value": "src", - "start": 20005, - "end": 20008, + "start": 19994, + "end": 19997, "loc": { "start": { "line": 484, @@ -227887,8 +227887,8 @@ "binop": null, "updateContext": null }, - "start": 20008, - "end": 20009, + "start": 19997, + "end": 19998, "loc": { "start": { "line": 484, @@ -227913,8 +227913,8 @@ "binop": null }, "value": "push", - "start": 20009, - "end": 20013, + "start": 19998, + "end": 20002, "loc": { "start": { "line": 484, @@ -227938,8 +227938,8 @@ "postfix": false, "binop": null }, - "start": 20013, - "end": 20014, + "start": 20002, + "end": 20003, "loc": { "start": { "line": 484, @@ -227965,8 +227965,8 @@ "updateContext": null }, "value": "precision mediump float;", - "start": 20014, - "end": 20040, + "start": 20003, + "end": 20029, "loc": { "start": { "line": 484, @@ -227990,8 +227990,8 @@ "postfix": false, "binop": null }, - "start": 20040, - "end": 20041, + "start": 20029, + "end": 20030, "loc": { "start": { "line": 484, @@ -228016,8 +228016,8 @@ "binop": null, "updateContext": null }, - "start": 20041, - "end": 20042, + "start": 20030, + "end": 20031, "loc": { "start": { "line": 484, @@ -228042,8 +228042,8 @@ "binop": null }, "value": "src", - "start": 20051, - "end": 20054, + "start": 20040, + "end": 20043, "loc": { "start": { "line": 485, @@ -228068,8 +228068,8 @@ "binop": null, "updateContext": null }, - "start": 20054, - "end": 20055, + "start": 20043, + "end": 20044, "loc": { "start": { "line": 485, @@ -228094,8 +228094,8 @@ "binop": null }, "value": "push", - "start": 20055, - "end": 20059, + "start": 20044, + "end": 20048, "loc": { "start": { "line": 485, @@ -228119,8 +228119,8 @@ "postfix": false, "binop": null }, - "start": 20059, - "end": 20060, + "start": 20048, + "end": 20049, "loc": { "start": { "line": 485, @@ -228146,8 +228146,8 @@ "updateContext": null }, "value": "precision mediump int;", - "start": 20060, - "end": 20084, + "start": 20049, + "end": 20073, "loc": { "start": { "line": 485, @@ -228171,8 +228171,8 @@ "postfix": false, "binop": null }, - "start": 20084, - "end": 20085, + "start": 20073, + "end": 20074, "loc": { "start": { "line": 485, @@ -228197,8 +228197,8 @@ "binop": null, "updateContext": null }, - "start": 20085, - "end": 20086, + "start": 20074, + "end": 20075, "loc": { "start": { "line": 485, @@ -228223,8 +228223,8 @@ "binop": null }, "value": "src", - "start": 20095, - "end": 20098, + "start": 20084, + "end": 20087, "loc": { "start": { "line": 486, @@ -228249,8 +228249,8 @@ "binop": null, "updateContext": null }, - "start": 20098, - "end": 20099, + "start": 20087, + "end": 20088, "loc": { "start": { "line": 486, @@ -228275,8 +228275,8 @@ "binop": null }, "value": "push", - "start": 20099, - "end": 20103, + "start": 20088, + "end": 20092, "loc": { "start": { "line": 486, @@ -228300,8 +228300,8 @@ "postfix": false, "binop": null }, - "start": 20103, - "end": 20104, + "start": 20092, + "end": 20093, "loc": { "start": { "line": 486, @@ -228327,8 +228327,8 @@ "updateContext": null }, "value": "#endif", - "start": 20104, - "end": 20112, + "start": 20093, + "end": 20101, "loc": { "start": { "line": 486, @@ -228352,8 +228352,8 @@ "postfix": false, "binop": null }, - "start": 20112, - "end": 20113, + "start": 20101, + "end": 20102, "loc": { "start": { "line": 486, @@ -228378,8 +228378,8 @@ "binop": null, "updateContext": null }, - "start": 20113, - "end": 20114, + "start": 20102, + "end": 20103, "loc": { "start": { "line": 486, @@ -228406,8 +228406,8 @@ "updateContext": null }, "value": "if", - "start": 20124, - "end": 20126, + "start": 20113, + "end": 20115, "loc": { "start": { "line": 488, @@ -228431,8 +228431,8 @@ "postfix": false, "binop": null }, - "start": 20127, - "end": 20128, + "start": 20116, + "end": 20117, "loc": { "start": { "line": 488, @@ -228457,8 +228457,8 @@ "binop": null }, "value": "scene", - "start": 20128, - "end": 20133, + "start": 20117, + "end": 20122, "loc": { "start": { "line": 488, @@ -228483,8 +228483,8 @@ "binop": null, "updateContext": null }, - "start": 20133, - "end": 20134, + "start": 20122, + "end": 20123, "loc": { "start": { "line": 488, @@ -228509,8 +228509,8 @@ "binop": null }, "value": "logarithmicDepthBufferEnabled", - "start": 20134, - "end": 20163, + "start": 20123, + "end": 20152, "loc": { "start": { "line": 488, @@ -228534,8 +228534,8 @@ "postfix": false, "binop": null }, - "start": 20163, - "end": 20164, + "start": 20152, + "end": 20153, "loc": { "start": { "line": 488, @@ -228559,8 +228559,8 @@ "postfix": false, "binop": null }, - "start": 20165, - "end": 20166, + "start": 20154, + "end": 20155, "loc": { "start": { "line": 488, @@ -228587,8 +228587,8 @@ "updateContext": null }, "value": "if", - "start": 20179, - "end": 20181, + "start": 20168, + "end": 20170, "loc": { "start": { "line": 489, @@ -228612,8 +228612,8 @@ "postfix": false, "binop": null }, - "start": 20182, - "end": 20183, + "start": 20171, + "end": 20172, "loc": { "start": { "line": 489, @@ -228638,8 +228638,8 @@ "binop": null }, "value": "WEBGL_INFO", - "start": 20183, - "end": 20193, + "start": 20172, + "end": 20182, "loc": { "start": { "line": 489, @@ -228664,8 +228664,8 @@ "binop": null, "updateContext": null }, - "start": 20193, - "end": 20194, + "start": 20182, + "end": 20183, "loc": { "start": { "line": 489, @@ -228690,8 +228690,8 @@ "binop": null }, "value": "SUPPORTED_EXTENSIONS", - "start": 20194, - "end": 20214, + "start": 20183, + "end": 20203, "loc": { "start": { "line": 489, @@ -228716,8 +228716,8 @@ "binop": null, "updateContext": null }, - "start": 20214, - "end": 20215, + "start": 20203, + "end": 20204, "loc": { "start": { "line": 489, @@ -228743,8 +228743,8 @@ "updateContext": null }, "value": "EXT_frag_depth", - "start": 20215, - "end": 20231, + "start": 20204, + "end": 20220, "loc": { "start": { "line": 489, @@ -228769,8 +228769,8 @@ "binop": null, "updateContext": null }, - "start": 20231, - "end": 20232, + "start": 20220, + "end": 20221, "loc": { "start": { "line": 489, @@ -228794,8 +228794,8 @@ "postfix": false, "binop": null }, - "start": 20232, - "end": 20233, + "start": 20221, + "end": 20222, "loc": { "start": { "line": 489, @@ -228819,8 +228819,8 @@ "postfix": false, "binop": null }, - "start": 20234, - "end": 20235, + "start": 20223, + "end": 20224, "loc": { "start": { "line": 489, @@ -228845,8 +228845,8 @@ "binop": null }, "value": "src", - "start": 20252, - "end": 20255, + "start": 20241, + "end": 20244, "loc": { "start": { "line": 490, @@ -228871,8 +228871,8 @@ "binop": null, "updateContext": null }, - "start": 20255, - "end": 20256, + "start": 20244, + "end": 20245, "loc": { "start": { "line": 490, @@ -228897,8 +228897,8 @@ "binop": null }, "value": "push", - "start": 20256, - "end": 20260, + "start": 20245, + "end": 20249, "loc": { "start": { "line": 490, @@ -228922,8 +228922,8 @@ "postfix": false, "binop": null }, - "start": 20260, - "end": 20261, + "start": 20249, + "end": 20250, "loc": { "start": { "line": 490, @@ -228949,8 +228949,8 @@ "updateContext": null }, "value": "uniform float logDepthBufFC;", - "start": 20261, - "end": 20291, + "start": 20250, + "end": 20280, "loc": { "start": { "line": 490, @@ -228974,8 +228974,8 @@ "postfix": false, "binop": null }, - "start": 20291, - "end": 20292, + "start": 20280, + "end": 20281, "loc": { "start": { "line": 490, @@ -229000,8 +229000,8 @@ "binop": null, "updateContext": null }, - "start": 20292, - "end": 20293, + "start": 20281, + "end": 20282, "loc": { "start": { "line": 490, @@ -229026,8 +229026,8 @@ "binop": null }, "value": "src", - "start": 20310, - "end": 20313, + "start": 20299, + "end": 20302, "loc": { "start": { "line": 491, @@ -229052,8 +229052,8 @@ "binop": null, "updateContext": null }, - "start": 20313, - "end": 20314, + "start": 20302, + "end": 20303, "loc": { "start": { "line": 491, @@ -229078,8 +229078,8 @@ "binop": null }, "value": "push", - "start": 20314, - "end": 20318, + "start": 20303, + "end": 20307, "loc": { "start": { "line": 491, @@ -229103,8 +229103,8 @@ "postfix": false, "binop": null }, - "start": 20318, - "end": 20319, + "start": 20307, + "end": 20308, "loc": { "start": { "line": 491, @@ -229130,8 +229130,8 @@ "updateContext": null }, "value": "varying float vFragDepth;", - "start": 20319, - "end": 20346, + "start": 20308, + "end": 20335, "loc": { "start": { "line": 491, @@ -229155,8 +229155,8 @@ "postfix": false, "binop": null }, - "start": 20346, - "end": 20347, + "start": 20335, + "end": 20336, "loc": { "start": { "line": 491, @@ -229181,8 +229181,8 @@ "binop": null, "updateContext": null }, - "start": 20347, - "end": 20348, + "start": 20336, + "end": 20337, "loc": { "start": { "line": 491, @@ -229206,8 +229206,8 @@ "postfix": false, "binop": null }, - "start": 20361, - "end": 20362, + "start": 20350, + "end": 20351, "loc": { "start": { "line": 492, @@ -229231,8 +229231,8 @@ "postfix": false, "binop": null }, - "start": 20371, - "end": 20372, + "start": 20360, + "end": 20361, "loc": { "start": { "line": 493, @@ -229259,8 +229259,8 @@ "updateContext": null }, "value": "if", - "start": 20382, - "end": 20384, + "start": 20371, + "end": 20373, "loc": { "start": { "line": 495, @@ -229284,8 +229284,8 @@ "postfix": false, "binop": null }, - "start": 20385, - "end": 20386, + "start": 20374, + "end": 20375, "loc": { "start": { "line": 495, @@ -229312,8 +229312,8 @@ "updateContext": null }, "value": "this", - "start": 20386, - "end": 20390, + "start": 20375, + "end": 20379, "loc": { "start": { "line": 495, @@ -229338,8 +229338,8 @@ "binop": null, "updateContext": null }, - "start": 20390, - "end": 20391, + "start": 20379, + "end": 20380, "loc": { "start": { "line": 495, @@ -229364,8 +229364,8 @@ "binop": null }, "value": "_withSAO", - "start": 20391, - "end": 20399, + "start": 20380, + "end": 20388, "loc": { "start": { "line": 495, @@ -229389,8 +229389,8 @@ "postfix": false, "binop": null }, - "start": 20399, - "end": 20400, + "start": 20388, + "end": 20389, "loc": { "start": { "line": 495, @@ -229414,8 +229414,8 @@ "postfix": false, "binop": null }, - "start": 20401, - "end": 20402, + "start": 20390, + "end": 20391, "loc": { "start": { "line": 495, @@ -229440,8 +229440,8 @@ "binop": null }, "value": "src", - "start": 20415, - "end": 20418, + "start": 20404, + "end": 20407, "loc": { "start": { "line": 496, @@ -229466,8 +229466,8 @@ "binop": null, "updateContext": null }, - "start": 20418, - "end": 20419, + "start": 20407, + "end": 20408, "loc": { "start": { "line": 496, @@ -229492,8 +229492,8 @@ "binop": null }, "value": "push", - "start": 20419, - "end": 20423, + "start": 20408, + "end": 20412, "loc": { "start": { "line": 496, @@ -229517,8 +229517,8 @@ "postfix": false, "binop": null }, - "start": 20423, - "end": 20424, + "start": 20412, + "end": 20413, "loc": { "start": { "line": 496, @@ -229544,8 +229544,8 @@ "updateContext": null }, "value": "uniform sampler2D uOcclusionTexture;", - "start": 20424, - "end": 20462, + "start": 20413, + "end": 20451, "loc": { "start": { "line": 496, @@ -229569,8 +229569,8 @@ "postfix": false, "binop": null }, - "start": 20462, - "end": 20463, + "start": 20451, + "end": 20452, "loc": { "start": { "line": 496, @@ -229595,8 +229595,8 @@ "binop": null, "updateContext": null }, - "start": 20463, - "end": 20464, + "start": 20452, + "end": 20453, "loc": { "start": { "line": 496, @@ -229621,8 +229621,8 @@ "binop": null }, "value": "src", - "start": 20477, - "end": 20480, + "start": 20466, + "end": 20469, "loc": { "start": { "line": 497, @@ -229647,8 +229647,8 @@ "binop": null, "updateContext": null }, - "start": 20480, - "end": 20481, + "start": 20469, + "end": 20470, "loc": { "start": { "line": 497, @@ -229673,8 +229673,8 @@ "binop": null }, "value": "push", - "start": 20481, - "end": 20485, + "start": 20470, + "end": 20474, "loc": { "start": { "line": 497, @@ -229698,8 +229698,8 @@ "postfix": false, "binop": null }, - "start": 20485, - "end": 20486, + "start": 20474, + "end": 20475, "loc": { "start": { "line": 497, @@ -229725,8 +229725,8 @@ "updateContext": null }, "value": "uniform vec4 uSAOParams;", - "start": 20486, - "end": 20517, + "start": 20475, + "end": 20506, "loc": { "start": { "line": 497, @@ -229750,8 +229750,8 @@ "postfix": false, "binop": null }, - "start": 20517, - "end": 20518, + "start": 20506, + "end": 20507, "loc": { "start": { "line": 497, @@ -229776,8 +229776,8 @@ "binop": null, "updateContext": null }, - "start": 20518, - "end": 20519, + "start": 20507, + "end": 20508, "loc": { "start": { "line": 497, @@ -229802,8 +229802,8 @@ "binop": null }, "value": "src", - "start": 20533, - "end": 20536, + "start": 20522, + "end": 20525, "loc": { "start": { "line": 499, @@ -229828,8 +229828,8 @@ "binop": null, "updateContext": null }, - "start": 20536, - "end": 20537, + "start": 20525, + "end": 20526, "loc": { "start": { "line": 499, @@ -229854,8 +229854,8 @@ "binop": null }, "value": "push", - "start": 20537, - "end": 20541, + "start": 20526, + "end": 20530, "loc": { "start": { "line": 499, @@ -229879,8 +229879,8 @@ "postfix": false, "binop": null }, - "start": 20541, - "end": 20542, + "start": 20530, + "end": 20531, "loc": { "start": { "line": 499, @@ -229906,8 +229906,8 @@ "updateContext": null }, "value": "const float packUpscale = 256. / 255.;", - "start": 20542, - "end": 20588, + "start": 20531, + "end": 20577, "loc": { "start": { "line": 499, @@ -229931,8 +229931,8 @@ "postfix": false, "binop": null }, - "start": 20588, - "end": 20589, + "start": 20577, + "end": 20578, "loc": { "start": { "line": 499, @@ -229957,8 +229957,8 @@ "binop": null, "updateContext": null }, - "start": 20589, - "end": 20590, + "start": 20578, + "end": 20579, "loc": { "start": { "line": 499, @@ -229983,8 +229983,8 @@ "binop": null }, "value": "src", - "start": 20603, - "end": 20606, + "start": 20592, + "end": 20595, "loc": { "start": { "line": 500, @@ -230009,8 +230009,8 @@ "binop": null, "updateContext": null }, - "start": 20606, - "end": 20607, + "start": 20595, + "end": 20596, "loc": { "start": { "line": 500, @@ -230035,8 +230035,8 @@ "binop": null }, "value": "push", - "start": 20607, - "end": 20611, + "start": 20596, + "end": 20600, "loc": { "start": { "line": 500, @@ -230060,8 +230060,8 @@ "postfix": false, "binop": null }, - "start": 20611, - "end": 20612, + "start": 20600, + "end": 20601, "loc": { "start": { "line": 500, @@ -230087,8 +230087,8 @@ "updateContext": null }, "value": "const float unpackDownScale = 255. / 256.;", - "start": 20612, - "end": 20662, + "start": 20601, + "end": 20651, "loc": { "start": { "line": 500, @@ -230112,8 +230112,8 @@ "postfix": false, "binop": null }, - "start": 20662, - "end": 20663, + "start": 20651, + "end": 20652, "loc": { "start": { "line": 500, @@ -230138,8 +230138,8 @@ "binop": null, "updateContext": null }, - "start": 20663, - "end": 20664, + "start": 20652, + "end": 20653, "loc": { "start": { "line": 500, @@ -230164,8 +230164,8 @@ "binop": null }, "value": "src", - "start": 20677, - "end": 20680, + "start": 20666, + "end": 20669, "loc": { "start": { "line": 501, @@ -230190,8 +230190,8 @@ "binop": null, "updateContext": null }, - "start": 20680, - "end": 20681, + "start": 20669, + "end": 20670, "loc": { "start": { "line": 501, @@ -230216,8 +230216,8 @@ "binop": null }, "value": "push", - "start": 20681, - "end": 20685, + "start": 20670, + "end": 20674, "loc": { "start": { "line": 501, @@ -230241,8 +230241,8 @@ "postfix": false, "binop": null }, - "start": 20685, - "end": 20686, + "start": 20674, + "end": 20675, "loc": { "start": { "line": 501, @@ -230268,8 +230268,8 @@ "updateContext": null }, "value": "const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );", - "start": 20686, - "end": 20767, + "start": 20675, + "end": 20756, "loc": { "start": { "line": 501, @@ -230293,8 +230293,8 @@ "postfix": false, "binop": null }, - "start": 20767, - "end": 20768, + "start": 20756, + "end": 20757, "loc": { "start": { "line": 501, @@ -230319,8 +230319,8 @@ "binop": null, "updateContext": null }, - "start": 20768, - "end": 20769, + "start": 20757, + "end": 20758, "loc": { "start": { "line": 501, @@ -230345,8 +230345,8 @@ "binop": null }, "value": "src", - "start": 20782, - "end": 20785, + "start": 20771, + "end": 20774, "loc": { "start": { "line": 502, @@ -230371,8 +230371,8 @@ "binop": null, "updateContext": null }, - "start": 20785, - "end": 20786, + "start": 20774, + "end": 20775, "loc": { "start": { "line": 502, @@ -230397,8 +230397,8 @@ "binop": null }, "value": "push", - "start": 20786, - "end": 20790, + "start": 20775, + "end": 20779, "loc": { "start": { "line": 502, @@ -230422,8 +230422,8 @@ "postfix": false, "binop": null }, - "start": 20790, - "end": 20791, + "start": 20779, + "end": 20780, "loc": { "start": { "line": 502, @@ -230449,8 +230449,8 @@ "updateContext": null }, "value": "const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );", - "start": 20791, - "end": 20869, + "start": 20780, + "end": 20858, "loc": { "start": { "line": 502, @@ -230474,8 +230474,8 @@ "postfix": false, "binop": null }, - "start": 20869, - "end": 20870, + "start": 20858, + "end": 20859, "loc": { "start": { "line": 502, @@ -230500,8 +230500,8 @@ "binop": null, "updateContext": null }, - "start": 20870, - "end": 20871, + "start": 20859, + "end": 20860, "loc": { "start": { "line": 502, @@ -230526,8 +230526,8 @@ "binop": null }, "value": "src", - "start": 20885, - "end": 20888, + "start": 20874, + "end": 20877, "loc": { "start": { "line": 504, @@ -230552,8 +230552,8 @@ "binop": null, "updateContext": null }, - "start": 20888, - "end": 20889, + "start": 20877, + "end": 20878, "loc": { "start": { "line": 504, @@ -230578,8 +230578,8 @@ "binop": null }, "value": "push", - "start": 20889, - "end": 20893, + "start": 20878, + "end": 20882, "loc": { "start": { "line": 504, @@ -230603,8 +230603,8 @@ "postfix": false, "binop": null }, - "start": 20893, - "end": 20894, + "start": 20882, + "end": 20883, "loc": { "start": { "line": 504, @@ -230630,8 +230630,8 @@ "updateContext": null }, "value": "float unpackRGBAToDepth( const in vec4 v ) {", - "start": 20894, - "end": 20940, + "start": 20883, + "end": 20929, "loc": { "start": { "line": 504, @@ -230655,8 +230655,8 @@ "postfix": false, "binop": null }, - "start": 20940, - "end": 20941, + "start": 20929, + "end": 20930, "loc": { "start": { "line": 504, @@ -230681,8 +230681,8 @@ "binop": null, "updateContext": null }, - "start": 20941, - "end": 20942, + "start": 20930, + "end": 20931, "loc": { "start": { "line": 504, @@ -230707,8 +230707,8 @@ "binop": null }, "value": "src", - "start": 20955, - "end": 20958, + "start": 20944, + "end": 20947, "loc": { "start": { "line": 505, @@ -230733,8 +230733,8 @@ "binop": null, "updateContext": null }, - "start": 20958, - "end": 20959, + "start": 20947, + "end": 20948, "loc": { "start": { "line": 505, @@ -230759,8 +230759,8 @@ "binop": null }, "value": "push", - "start": 20959, - "end": 20963, + "start": 20948, + "end": 20952, "loc": { "start": { "line": 505, @@ -230784,8 +230784,8 @@ "postfix": false, "binop": null }, - "start": 20963, - "end": 20964, + "start": 20952, + "end": 20953, "loc": { "start": { "line": 505, @@ -230811,8 +230811,8 @@ "updateContext": null }, "value": " return dot( v, unPackFactors );", - "start": 20964, - "end": 21001, + "start": 20953, + "end": 20990, "loc": { "start": { "line": 505, @@ -230836,8 +230836,8 @@ "postfix": false, "binop": null }, - "start": 21001, - "end": 21002, + "start": 20990, + "end": 20991, "loc": { "start": { "line": 505, @@ -230862,8 +230862,8 @@ "binop": null, "updateContext": null }, - "start": 21002, - "end": 21003, + "start": 20991, + "end": 20992, "loc": { "start": { "line": 505, @@ -230888,8 +230888,8 @@ "binop": null }, "value": "src", - "start": 21016, - "end": 21019, + "start": 21005, + "end": 21008, "loc": { "start": { "line": 506, @@ -230914,8 +230914,8 @@ "binop": null, "updateContext": null }, - "start": 21019, - "end": 21020, + "start": 21008, + "end": 21009, "loc": { "start": { "line": 506, @@ -230940,8 +230940,8 @@ "binop": null }, "value": "push", - "start": 21020, - "end": 21024, + "start": 21009, + "end": 21013, "loc": { "start": { "line": 506, @@ -230965,8 +230965,8 @@ "postfix": false, "binop": null }, - "start": 21024, - "end": 21025, + "start": 21013, + "end": 21014, "loc": { "start": { "line": 506, @@ -230992,8 +230992,8 @@ "updateContext": null }, "value": "}", - "start": 21025, - "end": 21028, + "start": 21014, + "end": 21017, "loc": { "start": { "line": 506, @@ -231017,8 +231017,8 @@ "postfix": false, "binop": null }, - "start": 21028, - "end": 21029, + "start": 21017, + "end": 21018, "loc": { "start": { "line": 506, @@ -231043,8 +231043,8 @@ "binop": null, "updateContext": null }, - "start": 21029, - "end": 21030, + "start": 21018, + "end": 21019, "loc": { "start": { "line": 506, @@ -231068,8 +231068,8 @@ "postfix": false, "binop": null }, - "start": 21039, - "end": 21040, + "start": 21028, + "end": 21029, "loc": { "start": { "line": 507, @@ -231096,8 +231096,8 @@ "updateContext": null }, "value": "if", - "start": 21050, - "end": 21052, + "start": 21039, + "end": 21041, "loc": { "start": { "line": 509, @@ -231121,8 +231121,8 @@ "postfix": false, "binop": null }, - "start": 21053, - "end": 21054, + "start": 21042, + "end": 21043, "loc": { "start": { "line": 509, @@ -231147,8 +231147,8 @@ "binop": null }, "value": "lightsState", - "start": 21054, - "end": 21065, + "start": 21043, + "end": 21054, "loc": { "start": { "line": 509, @@ -231173,8 +231173,8 @@ "binop": null, "updateContext": null }, - "start": 21065, - "end": 21066, + "start": 21054, + "end": 21055, "loc": { "start": { "line": 509, @@ -231199,8 +231199,8 @@ "binop": null }, "value": "reflectionMaps", - "start": 21066, - "end": 21080, + "start": 21055, + "end": 21069, "loc": { "start": { "line": 509, @@ -231225,8 +231225,8 @@ "binop": null, "updateContext": null }, - "start": 21080, - "end": 21081, + "start": 21069, + "end": 21070, "loc": { "start": { "line": 509, @@ -231251,8 +231251,8 @@ "binop": null }, "value": "length", - "start": 21081, - "end": 21087, + "start": 21070, + "end": 21076, "loc": { "start": { "line": 509, @@ -231278,8 +231278,8 @@ "updateContext": null }, "value": ">", - "start": 21088, - "end": 21089, + "start": 21077, + "end": 21078, "loc": { "start": { "line": 509, @@ -231305,8 +231305,8 @@ "updateContext": null }, "value": 0, - "start": 21090, - "end": 21091, + "start": 21079, + "end": 21080, "loc": { "start": { "line": 509, @@ -231330,8 +231330,8 @@ "postfix": false, "binop": null }, - "start": 21091, - "end": 21092, + "start": 21080, + "end": 21081, "loc": { "start": { "line": 509, @@ -231355,8 +231355,8 @@ "postfix": false, "binop": null }, - "start": 21093, - "end": 21094, + "start": 21082, + "end": 21083, "loc": { "start": { "line": 509, @@ -231381,8 +231381,8 @@ "binop": null }, "value": "src", - "start": 21107, - "end": 21110, + "start": 21096, + "end": 21099, "loc": { "start": { "line": 510, @@ -231407,8 +231407,8 @@ "binop": null, "updateContext": null }, - "start": 21110, - "end": 21111, + "start": 21099, + "end": 21100, "loc": { "start": { "line": 510, @@ -231433,8 +231433,8 @@ "binop": null }, "value": "push", - "start": 21111, - "end": 21115, + "start": 21100, + "end": 21104, "loc": { "start": { "line": 510, @@ -231458,8 +231458,8 @@ "postfix": false, "binop": null }, - "start": 21115, - "end": 21116, + "start": 21104, + "end": 21105, "loc": { "start": { "line": 510, @@ -231485,8 +231485,8 @@ "updateContext": null }, "value": "uniform samplerCube reflectionMap;", - "start": 21116, - "end": 21152, + "start": 21105, + "end": 21141, "loc": { "start": { "line": 510, @@ -231510,8 +231510,8 @@ "postfix": false, "binop": null }, - "start": 21152, - "end": 21153, + "start": 21141, + "end": 21142, "loc": { "start": { "line": 510, @@ -231536,8 +231536,8 @@ "binop": null, "updateContext": null }, - "start": 21153, - "end": 21154, + "start": 21142, + "end": 21143, "loc": { "start": { "line": 510, @@ -231561,8 +231561,8 @@ "postfix": false, "binop": null }, - "start": 21163, - "end": 21164, + "start": 21152, + "end": 21153, "loc": { "start": { "line": 511, @@ -231589,8 +231589,8 @@ "updateContext": null }, "value": "if", - "start": 21174, - "end": 21176, + "start": 21163, + "end": 21165, "loc": { "start": { "line": 513, @@ -231614,8 +231614,8 @@ "postfix": false, "binop": null }, - "start": 21177, - "end": 21178, + "start": 21166, + "end": 21167, "loc": { "start": { "line": 513, @@ -231640,8 +231640,8 @@ "binop": null }, "value": "lightsState", - "start": 21178, - "end": 21189, + "start": 21167, + "end": 21178, "loc": { "start": { "line": 513, @@ -231666,8 +231666,8 @@ "binop": null, "updateContext": null }, - "start": 21189, - "end": 21190, + "start": 21178, + "end": 21179, "loc": { "start": { "line": 513, @@ -231692,8 +231692,8 @@ "binop": null }, "value": "lightMaps", - "start": 21190, - "end": 21199, + "start": 21179, + "end": 21188, "loc": { "start": { "line": 513, @@ -231718,8 +231718,8 @@ "binop": null, "updateContext": null }, - "start": 21199, - "end": 21200, + "start": 21188, + "end": 21189, "loc": { "start": { "line": 513, @@ -231744,8 +231744,8 @@ "binop": null }, "value": "length", - "start": 21200, - "end": 21206, + "start": 21189, + "end": 21195, "loc": { "start": { "line": 513, @@ -231771,8 +231771,8 @@ "updateContext": null }, "value": ">", - "start": 21207, - "end": 21208, + "start": 21196, + "end": 21197, "loc": { "start": { "line": 513, @@ -231798,8 +231798,8 @@ "updateContext": null }, "value": 0, - "start": 21209, - "end": 21210, + "start": 21198, + "end": 21199, "loc": { "start": { "line": 513, @@ -231823,8 +231823,8 @@ "postfix": false, "binop": null }, - "start": 21210, - "end": 21211, + "start": 21199, + "end": 21200, "loc": { "start": { "line": 513, @@ -231848,8 +231848,8 @@ "postfix": false, "binop": null }, - "start": 21212, - "end": 21213, + "start": 21201, + "end": 21202, "loc": { "start": { "line": 513, @@ -231874,8 +231874,8 @@ "binop": null }, "value": "src", - "start": 21226, - "end": 21229, + "start": 21215, + "end": 21218, "loc": { "start": { "line": 514, @@ -231900,8 +231900,8 @@ "binop": null, "updateContext": null }, - "start": 21229, - "end": 21230, + "start": 21218, + "end": 21219, "loc": { "start": { "line": 514, @@ -231926,8 +231926,8 @@ "binop": null }, "value": "push", - "start": 21230, - "end": 21234, + "start": 21219, + "end": 21223, "loc": { "start": { "line": 514, @@ -231951,8 +231951,8 @@ "postfix": false, "binop": null }, - "start": 21234, - "end": 21235, + "start": 21223, + "end": 21224, "loc": { "start": { "line": 514, @@ -231978,8 +231978,8 @@ "updateContext": null }, "value": "uniform samplerCube lightMap;", - "start": 21235, - "end": 21266, + "start": 21224, + "end": 21255, "loc": { "start": { "line": 514, @@ -232003,8 +232003,8 @@ "postfix": false, "binop": null }, - "start": 21266, - "end": 21267, + "start": 21255, + "end": 21256, "loc": { "start": { "line": 514, @@ -232029,8 +232029,8 @@ "binop": null, "updateContext": null }, - "start": 21267, - "end": 21268, + "start": 21256, + "end": 21257, "loc": { "start": { "line": 514, @@ -232054,8 +232054,8 @@ "postfix": false, "binop": null }, - "start": 21277, - "end": 21278, + "start": 21266, + "end": 21267, "loc": { "start": { "line": 515, @@ -232080,8 +232080,8 @@ "binop": null }, "value": "src", - "start": 21288, - "end": 21291, + "start": 21277, + "end": 21280, "loc": { "start": { "line": 517, @@ -232106,8 +232106,8 @@ "binop": null, "updateContext": null }, - "start": 21291, - "end": 21292, + "start": 21280, + "end": 21281, "loc": { "start": { "line": 517, @@ -232132,8 +232132,8 @@ "binop": null }, "value": "push", - "start": 21292, - "end": 21296, + "start": 21281, + "end": 21285, "loc": { "start": { "line": 517, @@ -232157,8 +232157,8 @@ "postfix": false, "binop": null }, - "start": 21296, - "end": 21297, + "start": 21285, + "end": 21286, "loc": { "start": { "line": 517, @@ -232184,8 +232184,8 @@ "updateContext": null }, "value": "uniform vec4 lightAmbient;", - "start": 21297, - "end": 21325, + "start": 21286, + "end": 21314, "loc": { "start": { "line": 517, @@ -232209,8 +232209,8 @@ "postfix": false, "binop": null }, - "start": 21325, - "end": 21326, + "start": 21314, + "end": 21315, "loc": { "start": { "line": 517, @@ -232235,8 +232235,8 @@ "binop": null, "updateContext": null }, - "start": 21326, - "end": 21327, + "start": 21315, + "end": 21316, "loc": { "start": { "line": 517, @@ -232263,8 +232263,8 @@ "updateContext": null }, "value": "for", - "start": 21337, - "end": 21340, + "start": 21326, + "end": 21329, "loc": { "start": { "line": 519, @@ -232288,8 +232288,8 @@ "postfix": false, "binop": null }, - "start": 21341, - "end": 21342, + "start": 21330, + "end": 21331, "loc": { "start": { "line": 519, @@ -232316,8 +232316,8 @@ "updateContext": null }, "value": "let", - "start": 21342, - "end": 21345, + "start": 21331, + "end": 21334, "loc": { "start": { "line": 519, @@ -232342,8 +232342,8 @@ "binop": null }, "value": "i", - "start": 21346, - "end": 21347, + "start": 21335, + "end": 21336, "loc": { "start": { "line": 519, @@ -232369,8 +232369,8 @@ "updateContext": null }, "value": "=", - "start": 21348, - "end": 21349, + "start": 21337, + "end": 21338, "loc": { "start": { "line": 519, @@ -232396,8 +232396,8 @@ "updateContext": null }, "value": 0, - "start": 21350, - "end": 21351, + "start": 21339, + "end": 21340, "loc": { "start": { "line": 519, @@ -232422,8 +232422,8 @@ "binop": null, "updateContext": null }, - "start": 21351, - "end": 21352, + "start": 21340, + "end": 21341, "loc": { "start": { "line": 519, @@ -232448,8 +232448,8 @@ "binop": null }, "value": "len", - "start": 21353, - "end": 21356, + "start": 21342, + "end": 21345, "loc": { "start": { "line": 519, @@ -232475,8 +232475,8 @@ "updateContext": null }, "value": "=", - "start": 21357, - "end": 21358, + "start": 21346, + "end": 21347, "loc": { "start": { "line": 519, @@ -232501,8 +232501,8 @@ "binop": null }, "value": "lightsState", - "start": 21359, - "end": 21370, + "start": 21348, + "end": 21359, "loc": { "start": { "line": 519, @@ -232527,8 +232527,8 @@ "binop": null, "updateContext": null }, - "start": 21370, - "end": 21371, + "start": 21359, + "end": 21360, "loc": { "start": { "line": 519, @@ -232553,8 +232553,8 @@ "binop": null }, "value": "lights", - "start": 21371, - "end": 21377, + "start": 21360, + "end": 21366, "loc": { "start": { "line": 519, @@ -232579,8 +232579,8 @@ "binop": null, "updateContext": null }, - "start": 21377, - "end": 21378, + "start": 21366, + "end": 21367, "loc": { "start": { "line": 519, @@ -232605,8 +232605,8 @@ "binop": null }, "value": "length", - "start": 21378, - "end": 21384, + "start": 21367, + "end": 21373, "loc": { "start": { "line": 519, @@ -232631,8 +232631,8 @@ "binop": null, "updateContext": null }, - "start": 21384, - "end": 21385, + "start": 21373, + "end": 21374, "loc": { "start": { "line": 519, @@ -232657,8 +232657,8 @@ "binop": null }, "value": "i", - "start": 21386, - "end": 21387, + "start": 21375, + "end": 21376, "loc": { "start": { "line": 519, @@ -232684,8 +232684,8 @@ "updateContext": null }, "value": "<", - "start": 21388, - "end": 21389, + "start": 21377, + "end": 21378, "loc": { "start": { "line": 519, @@ -232710,8 +232710,8 @@ "binop": null }, "value": "len", - "start": 21390, - "end": 21393, + "start": 21379, + "end": 21382, "loc": { "start": { "line": 519, @@ -232736,8 +232736,8 @@ "binop": null, "updateContext": null }, - "start": 21393, - "end": 21394, + "start": 21382, + "end": 21383, "loc": { "start": { "line": 519, @@ -232762,8 +232762,8 @@ "binop": null }, "value": "i", - "start": 21395, - "end": 21396, + "start": 21384, + "end": 21385, "loc": { "start": { "line": 519, @@ -232788,8 +232788,8 @@ "binop": null }, "value": "++", - "start": 21396, - "end": 21398, + "start": 21385, + "end": 21387, "loc": { "start": { "line": 519, @@ -232813,8 +232813,8 @@ "postfix": false, "binop": null }, - "start": 21398, - "end": 21399, + "start": 21387, + "end": 21388, "loc": { "start": { "line": 519, @@ -232838,8 +232838,8 @@ "postfix": false, "binop": null }, - "start": 21400, - "end": 21401, + "start": 21389, + "end": 21390, "loc": { "start": { "line": 519, @@ -232866,8 +232866,8 @@ "updateContext": null }, "value": "const", - "start": 21414, - "end": 21419, + "start": 21403, + "end": 21408, "loc": { "start": { "line": 520, @@ -232892,8 +232892,8 @@ "binop": null }, "value": "light", - "start": 21420, - "end": 21425, + "start": 21409, + "end": 21414, "loc": { "start": { "line": 520, @@ -232919,8 +232919,8 @@ "updateContext": null }, "value": "=", - "start": 21426, - "end": 21427, + "start": 21415, + "end": 21416, "loc": { "start": { "line": 520, @@ -232945,8 +232945,8 @@ "binop": null }, "value": "lightsState", - "start": 21428, - "end": 21439, + "start": 21417, + "end": 21428, "loc": { "start": { "line": 520, @@ -232971,8 +232971,8 @@ "binop": null, "updateContext": null }, - "start": 21439, - "end": 21440, + "start": 21428, + "end": 21429, "loc": { "start": { "line": 520, @@ -232997,8 +232997,8 @@ "binop": null }, "value": "lights", - "start": 21440, - "end": 21446, + "start": 21429, + "end": 21435, "loc": { "start": { "line": 520, @@ -233023,8 +233023,8 @@ "binop": null, "updateContext": null }, - "start": 21446, - "end": 21447, + "start": 21435, + "end": 21436, "loc": { "start": { "line": 520, @@ -233049,8 +233049,8 @@ "binop": null }, "value": "i", - "start": 21447, - "end": 21448, + "start": 21436, + "end": 21437, "loc": { "start": { "line": 520, @@ -233075,8 +233075,8 @@ "binop": null, "updateContext": null }, - "start": 21448, - "end": 21449, + "start": 21437, + "end": 21438, "loc": { "start": { "line": 520, @@ -233101,8 +233101,8 @@ "binop": null, "updateContext": null }, - "start": 21449, - "end": 21450, + "start": 21438, + "end": 21439, "loc": { "start": { "line": 520, @@ -233129,8 +233129,8 @@ "updateContext": null }, "value": "if", - "start": 21463, - "end": 21465, + "start": 21452, + "end": 21454, "loc": { "start": { "line": 521, @@ -233154,8 +233154,8 @@ "postfix": false, "binop": null }, - "start": 21466, - "end": 21467, + "start": 21455, + "end": 21456, "loc": { "start": { "line": 521, @@ -233180,8 +233180,8 @@ "binop": null }, "value": "light", - "start": 21467, - "end": 21472, + "start": 21456, + "end": 21461, "loc": { "start": { "line": 521, @@ -233206,8 +233206,8 @@ "binop": null, "updateContext": null }, - "start": 21472, - "end": 21473, + "start": 21461, + "end": 21462, "loc": { "start": { "line": 521, @@ -233232,8 +233232,8 @@ "binop": null }, "value": "type", - "start": 21473, - "end": 21477, + "start": 21462, + "end": 21466, "loc": { "start": { "line": 521, @@ -233259,8 +233259,8 @@ "updateContext": null }, "value": "===", - "start": 21478, - "end": 21481, + "start": 21467, + "end": 21470, "loc": { "start": { "line": 521, @@ -233286,8 +233286,8 @@ "updateContext": null }, "value": "ambient", - "start": 21482, - "end": 21491, + "start": 21471, + "end": 21480, "loc": { "start": { "line": 521, @@ -233311,8 +233311,8 @@ "postfix": false, "binop": null }, - "start": 21491, - "end": 21492, + "start": 21480, + "end": 21481, "loc": { "start": { "line": 521, @@ -233336,8 +233336,8 @@ "postfix": false, "binop": null }, - "start": 21493, - "end": 21494, + "start": 21482, + "end": 21483, "loc": { "start": { "line": 521, @@ -233364,8 +233364,8 @@ "updateContext": null }, "value": "continue", - "start": 21511, - "end": 21519, + "start": 21500, + "end": 21508, "loc": { "start": { "line": 522, @@ -233390,8 +233390,8 @@ "binop": null, "updateContext": null }, - "start": 21519, - "end": 21520, + "start": 21508, + "end": 21509, "loc": { "start": { "line": 522, @@ -233415,8 +233415,8 @@ "postfix": false, "binop": null }, - "start": 21533, - "end": 21534, + "start": 21522, + "end": 21523, "loc": { "start": { "line": 523, @@ -233441,8 +233441,8 @@ "binop": null }, "value": "src", - "start": 21547, - "end": 21550, + "start": 21536, + "end": 21539, "loc": { "start": { "line": 524, @@ -233467,8 +233467,8 @@ "binop": null, "updateContext": null }, - "start": 21550, - "end": 21551, + "start": 21539, + "end": 21540, "loc": { "start": { "line": 524, @@ -233493,8 +233493,8 @@ "binop": null }, "value": "push", - "start": 21551, - "end": 21555, + "start": 21540, + "end": 21544, "loc": { "start": { "line": 524, @@ -233518,8 +233518,8 @@ "postfix": false, "binop": null }, - "start": 21555, - "end": 21556, + "start": 21544, + "end": 21545, "loc": { "start": { "line": 524, @@ -233545,8 +233545,8 @@ "updateContext": null }, "value": "uniform vec4 lightColor", - "start": 21556, - "end": 21581, + "start": 21545, + "end": 21570, "loc": { "start": { "line": 524, @@ -233572,8 +233572,8 @@ "updateContext": null }, "value": "+", - "start": 21582, - "end": 21583, + "start": 21571, + "end": 21572, "loc": { "start": { "line": 524, @@ -233598,8 +233598,8 @@ "binop": null }, "value": "i", - "start": 21584, - "end": 21585, + "start": 21573, + "end": 21574, "loc": { "start": { "line": 524, @@ -233625,8 +233625,8 @@ "updateContext": null }, "value": "+", - "start": 21586, - "end": 21587, + "start": 21575, + "end": 21576, "loc": { "start": { "line": 524, @@ -233652,8 +233652,8 @@ "updateContext": null }, "value": ";", - "start": 21588, - "end": 21591, + "start": 21577, + "end": 21580, "loc": { "start": { "line": 524, @@ -233677,8 +233677,8 @@ "postfix": false, "binop": null }, - "start": 21591, - "end": 21592, + "start": 21580, + "end": 21581, "loc": { "start": { "line": 524, @@ -233703,8 +233703,8 @@ "binop": null, "updateContext": null }, - "start": 21592, - "end": 21593, + "start": 21581, + "end": 21582, "loc": { "start": { "line": 524, @@ -233731,8 +233731,8 @@ "updateContext": null }, "value": "if", - "start": 21606, - "end": 21608, + "start": 21595, + "end": 21597, "loc": { "start": { "line": 525, @@ -233756,8 +233756,8 @@ "postfix": false, "binop": null }, - "start": 21609, - "end": 21610, + "start": 21598, + "end": 21599, "loc": { "start": { "line": 525, @@ -233782,8 +233782,8 @@ "binop": null }, "value": "light", - "start": 21610, - "end": 21615, + "start": 21599, + "end": 21604, "loc": { "start": { "line": 525, @@ -233808,8 +233808,8 @@ "binop": null, "updateContext": null }, - "start": 21615, - "end": 21616, + "start": 21604, + "end": 21605, "loc": { "start": { "line": 525, @@ -233834,8 +233834,8 @@ "binop": null }, "value": "type", - "start": 21616, - "end": 21620, + "start": 21605, + "end": 21609, "loc": { "start": { "line": 525, @@ -233861,8 +233861,8 @@ "updateContext": null }, "value": "===", - "start": 21621, - "end": 21624, + "start": 21610, + "end": 21613, "loc": { "start": { "line": 525, @@ -233888,8 +233888,8 @@ "updateContext": null }, "value": "dir", - "start": 21625, - "end": 21630, + "start": 21614, + "end": 21619, "loc": { "start": { "line": 525, @@ -233913,8 +233913,8 @@ "postfix": false, "binop": null }, - "start": 21630, - "end": 21631, + "start": 21619, + "end": 21620, "loc": { "start": { "line": 525, @@ -233938,8 +233938,8 @@ "postfix": false, "binop": null }, - "start": 21632, - "end": 21633, + "start": 21621, + "end": 21622, "loc": { "start": { "line": 525, @@ -233964,8 +233964,8 @@ "binop": null }, "value": "src", - "start": 21650, - "end": 21653, + "start": 21639, + "end": 21642, "loc": { "start": { "line": 526, @@ -233990,8 +233990,8 @@ "binop": null, "updateContext": null }, - "start": 21653, - "end": 21654, + "start": 21642, + "end": 21643, "loc": { "start": { "line": 526, @@ -234016,8 +234016,8 @@ "binop": null }, "value": "push", - "start": 21654, - "end": 21658, + "start": 21643, + "end": 21647, "loc": { "start": { "line": 526, @@ -234041,8 +234041,8 @@ "postfix": false, "binop": null }, - "start": 21658, - "end": 21659, + "start": 21647, + "end": 21648, "loc": { "start": { "line": 526, @@ -234068,8 +234068,8 @@ "updateContext": null }, "value": "uniform vec3 lightDir", - "start": 21659, - "end": 21682, + "start": 21648, + "end": 21671, "loc": { "start": { "line": 526, @@ -234095,8 +234095,8 @@ "updateContext": null }, "value": "+", - "start": 21683, - "end": 21684, + "start": 21672, + "end": 21673, "loc": { "start": { "line": 526, @@ -234121,8 +234121,8 @@ "binop": null }, "value": "i", - "start": 21685, - "end": 21686, + "start": 21674, + "end": 21675, "loc": { "start": { "line": 526, @@ -234148,8 +234148,8 @@ "updateContext": null }, "value": "+", - "start": 21687, - "end": 21688, + "start": 21676, + "end": 21677, "loc": { "start": { "line": 526, @@ -234175,8 +234175,8 @@ "updateContext": null }, "value": ";", - "start": 21689, - "end": 21692, + "start": 21678, + "end": 21681, "loc": { "start": { "line": 526, @@ -234200,8 +234200,8 @@ "postfix": false, "binop": null }, - "start": 21692, - "end": 21693, + "start": 21681, + "end": 21682, "loc": { "start": { "line": 526, @@ -234226,8 +234226,8 @@ "binop": null, "updateContext": null }, - "start": 21693, - "end": 21694, + "start": 21682, + "end": 21683, "loc": { "start": { "line": 526, @@ -234251,8 +234251,8 @@ "postfix": false, "binop": null }, - "start": 21707, - "end": 21708, + "start": 21696, + "end": 21697, "loc": { "start": { "line": 527, @@ -234279,8 +234279,8 @@ "updateContext": null }, "value": "if", - "start": 21721, - "end": 21723, + "start": 21710, + "end": 21712, "loc": { "start": { "line": 528, @@ -234304,8 +234304,8 @@ "postfix": false, "binop": null }, - "start": 21724, - "end": 21725, + "start": 21713, + "end": 21714, "loc": { "start": { "line": 528, @@ -234330,8 +234330,8 @@ "binop": null }, "value": "light", - "start": 21725, - "end": 21730, + "start": 21714, + "end": 21719, "loc": { "start": { "line": 528, @@ -234356,8 +234356,8 @@ "binop": null, "updateContext": null }, - "start": 21730, - "end": 21731, + "start": 21719, + "end": 21720, "loc": { "start": { "line": 528, @@ -234382,8 +234382,8 @@ "binop": null }, "value": "type", - "start": 21731, - "end": 21735, + "start": 21720, + "end": 21724, "loc": { "start": { "line": 528, @@ -234409,8 +234409,8 @@ "updateContext": null }, "value": "===", - "start": 21736, - "end": 21739, + "start": 21725, + "end": 21728, "loc": { "start": { "line": 528, @@ -234436,8 +234436,8 @@ "updateContext": null }, "value": "point", - "start": 21740, - "end": 21747, + "start": 21729, + "end": 21736, "loc": { "start": { "line": 528, @@ -234461,8 +234461,8 @@ "postfix": false, "binop": null }, - "start": 21747, - "end": 21748, + "start": 21736, + "end": 21737, "loc": { "start": { "line": 528, @@ -234486,8 +234486,8 @@ "postfix": false, "binop": null }, - "start": 21749, - "end": 21750, + "start": 21738, + "end": 21739, "loc": { "start": { "line": 528, @@ -234512,8 +234512,8 @@ "binop": null }, "value": "src", - "start": 21767, - "end": 21770, + "start": 21756, + "end": 21759, "loc": { "start": { "line": 529, @@ -234538,8 +234538,8 @@ "binop": null, "updateContext": null }, - "start": 21770, - "end": 21771, + "start": 21759, + "end": 21760, "loc": { "start": { "line": 529, @@ -234564,8 +234564,8 @@ "binop": null }, "value": "push", - "start": 21771, - "end": 21775, + "start": 21760, + "end": 21764, "loc": { "start": { "line": 529, @@ -234589,8 +234589,8 @@ "postfix": false, "binop": null }, - "start": 21775, - "end": 21776, + "start": 21764, + "end": 21765, "loc": { "start": { "line": 529, @@ -234616,8 +234616,8 @@ "updateContext": null }, "value": "uniform vec3 lightPos", - "start": 21776, - "end": 21799, + "start": 21765, + "end": 21788, "loc": { "start": { "line": 529, @@ -234643,8 +234643,8 @@ "updateContext": null }, "value": "+", - "start": 21800, - "end": 21801, + "start": 21789, + "end": 21790, "loc": { "start": { "line": 529, @@ -234669,8 +234669,8 @@ "binop": null }, "value": "i", - "start": 21802, - "end": 21803, + "start": 21791, + "end": 21792, "loc": { "start": { "line": 529, @@ -234696,8 +234696,8 @@ "updateContext": null }, "value": "+", - "start": 21804, - "end": 21805, + "start": 21793, + "end": 21794, "loc": { "start": { "line": 529, @@ -234723,8 +234723,8 @@ "updateContext": null }, "value": ";", - "start": 21806, - "end": 21809, + "start": 21795, + "end": 21798, "loc": { "start": { "line": 529, @@ -234748,8 +234748,8 @@ "postfix": false, "binop": null }, - "start": 21809, - "end": 21810, + "start": 21798, + "end": 21799, "loc": { "start": { "line": 529, @@ -234774,8 +234774,8 @@ "binop": null, "updateContext": null }, - "start": 21810, - "end": 21811, + "start": 21799, + "end": 21800, "loc": { "start": { "line": 529, @@ -234799,8 +234799,8 @@ "postfix": false, "binop": null }, - "start": 21824, - "end": 21825, + "start": 21813, + "end": 21814, "loc": { "start": { "line": 530, @@ -234827,8 +234827,8 @@ "updateContext": null }, "value": "if", - "start": 21838, - "end": 21840, + "start": 21827, + "end": 21829, "loc": { "start": { "line": 531, @@ -234852,8 +234852,8 @@ "postfix": false, "binop": null }, - "start": 21841, - "end": 21842, + "start": 21830, + "end": 21831, "loc": { "start": { "line": 531, @@ -234878,8 +234878,8 @@ "binop": null }, "value": "light", - "start": 21842, - "end": 21847, + "start": 21831, + "end": 21836, "loc": { "start": { "line": 531, @@ -234904,8 +234904,8 @@ "binop": null, "updateContext": null }, - "start": 21847, - "end": 21848, + "start": 21836, + "end": 21837, "loc": { "start": { "line": 531, @@ -234930,8 +234930,8 @@ "binop": null }, "value": "type", - "start": 21848, - "end": 21852, + "start": 21837, + "end": 21841, "loc": { "start": { "line": 531, @@ -234957,8 +234957,8 @@ "updateContext": null }, "value": "===", - "start": 21853, - "end": 21856, + "start": 21842, + "end": 21845, "loc": { "start": { "line": 531, @@ -234984,8 +234984,8 @@ "updateContext": null }, "value": "spot", - "start": 21857, - "end": 21863, + "start": 21846, + "end": 21852, "loc": { "start": { "line": 531, @@ -235009,8 +235009,8 @@ "postfix": false, "binop": null }, - "start": 21863, - "end": 21864, + "start": 21852, + "end": 21853, "loc": { "start": { "line": 531, @@ -235034,8 +235034,8 @@ "postfix": false, "binop": null }, - "start": 21865, - "end": 21866, + "start": 21854, + "end": 21855, "loc": { "start": { "line": 531, @@ -235060,8 +235060,8 @@ "binop": null }, "value": "src", - "start": 21883, - "end": 21886, + "start": 21872, + "end": 21875, "loc": { "start": { "line": 532, @@ -235086,8 +235086,8 @@ "binop": null, "updateContext": null }, - "start": 21886, - "end": 21887, + "start": 21875, + "end": 21876, "loc": { "start": { "line": 532, @@ -235112,8 +235112,8 @@ "binop": null }, "value": "push", - "start": 21887, - "end": 21891, + "start": 21876, + "end": 21880, "loc": { "start": { "line": 532, @@ -235137,8 +235137,8 @@ "postfix": false, "binop": null }, - "start": 21891, - "end": 21892, + "start": 21880, + "end": 21881, "loc": { "start": { "line": 532, @@ -235164,8 +235164,8 @@ "updateContext": null }, "value": "uniform vec3 lightPos", - "start": 21892, - "end": 21915, + "start": 21881, + "end": 21904, "loc": { "start": { "line": 532, @@ -235191,8 +235191,8 @@ "updateContext": null }, "value": "+", - "start": 21916, - "end": 21917, + "start": 21905, + "end": 21906, "loc": { "start": { "line": 532, @@ -235217,8 +235217,8 @@ "binop": null }, "value": "i", - "start": 21918, - "end": 21919, + "start": 21907, + "end": 21908, "loc": { "start": { "line": 532, @@ -235244,8 +235244,8 @@ "updateContext": null }, "value": "+", - "start": 21920, - "end": 21921, + "start": 21909, + "end": 21910, "loc": { "start": { "line": 532, @@ -235271,8 +235271,8 @@ "updateContext": null }, "value": ";", - "start": 21922, - "end": 21925, + "start": 21911, + "end": 21914, "loc": { "start": { "line": 532, @@ -235296,8 +235296,8 @@ "postfix": false, "binop": null }, - "start": 21925, - "end": 21926, + "start": 21914, + "end": 21915, "loc": { "start": { "line": 532, @@ -235322,8 +235322,8 @@ "binop": null, "updateContext": null }, - "start": 21926, - "end": 21927, + "start": 21915, + "end": 21916, "loc": { "start": { "line": 532, @@ -235348,8 +235348,8 @@ "binop": null }, "value": "src", - "start": 21944, - "end": 21947, + "start": 21933, + "end": 21936, "loc": { "start": { "line": 533, @@ -235374,8 +235374,8 @@ "binop": null, "updateContext": null }, - "start": 21947, - "end": 21948, + "start": 21936, + "end": 21937, "loc": { "start": { "line": 533, @@ -235400,8 +235400,8 @@ "binop": null }, "value": "push", - "start": 21948, - "end": 21952, + "start": 21937, + "end": 21941, "loc": { "start": { "line": 533, @@ -235425,8 +235425,8 @@ "postfix": false, "binop": null }, - "start": 21952, - "end": 21953, + "start": 21941, + "end": 21942, "loc": { "start": { "line": 533, @@ -235452,8 +235452,8 @@ "updateContext": null }, "value": "uniform vec3 lightDir", - "start": 21953, - "end": 21976, + "start": 21942, + "end": 21965, "loc": { "start": { "line": 533, @@ -235479,8 +235479,8 @@ "updateContext": null }, "value": "+", - "start": 21977, - "end": 21978, + "start": 21966, + "end": 21967, "loc": { "start": { "line": 533, @@ -235505,8 +235505,8 @@ "binop": null }, "value": "i", - "start": 21979, - "end": 21980, + "start": 21968, + "end": 21969, "loc": { "start": { "line": 533, @@ -235532,8 +235532,8 @@ "updateContext": null }, "value": "+", - "start": 21981, - "end": 21982, + "start": 21970, + "end": 21971, "loc": { "start": { "line": 533, @@ -235559,8 +235559,8 @@ "updateContext": null }, "value": ";", - "start": 21983, - "end": 21986, + "start": 21972, + "end": 21975, "loc": { "start": { "line": 533, @@ -235584,8 +235584,8 @@ "postfix": false, "binop": null }, - "start": 21986, - "end": 21987, + "start": 21975, + "end": 21976, "loc": { "start": { "line": 533, @@ -235610,8 +235610,8 @@ "binop": null, "updateContext": null }, - "start": 21987, - "end": 21988, + "start": 21976, + "end": 21977, "loc": { "start": { "line": 533, @@ -235635,8 +235635,8 @@ "postfix": false, "binop": null }, - "start": 22001, - "end": 22002, + "start": 21990, + "end": 21991, "loc": { "start": { "line": 534, @@ -235660,8 +235660,8 @@ "postfix": false, "binop": null }, - "start": 22011, - "end": 22012, + "start": 22000, + "end": 22001, "loc": { "start": { "line": 535, @@ -235686,8 +235686,8 @@ "binop": null }, "value": "src", - "start": 22022, - "end": 22025, + "start": 22011, + "end": 22014, "loc": { "start": { "line": 537, @@ -235712,8 +235712,8 @@ "binop": null, "updateContext": null }, - "start": 22025, - "end": 22026, + "start": 22014, + "end": 22015, "loc": { "start": { "line": 537, @@ -235738,8 +235738,8 @@ "binop": null }, "value": "push", - "start": 22026, - "end": 22030, + "start": 22015, + "end": 22019, "loc": { "start": { "line": 537, @@ -235763,8 +235763,8 @@ "postfix": false, "binop": null }, - "start": 22030, - "end": 22031, + "start": 22019, + "end": 22020, "loc": { "start": { "line": 537, @@ -235790,8 +235790,8 @@ "updateContext": null }, "value": "uniform float gammaFactor;", - "start": 22031, - "end": 22059, + "start": 22020, + "end": 22048, "loc": { "start": { "line": 537, @@ -235815,8 +235815,8 @@ "postfix": false, "binop": null }, - "start": 22059, - "end": 22060, + "start": 22048, + "end": 22049, "loc": { "start": { "line": 537, @@ -235841,8 +235841,8 @@ "binop": null, "updateContext": null }, - "start": 22060, - "end": 22061, + "start": 22049, + "end": 22050, "loc": { "start": { "line": 537, @@ -235867,8 +235867,8 @@ "binop": null }, "value": "src", - "start": 22070, - "end": 22073, + "start": 22059, + "end": 22062, "loc": { "start": { "line": 538, @@ -235893,8 +235893,8 @@ "binop": null, "updateContext": null }, - "start": 22073, - "end": 22074, + "start": 22062, + "end": 22063, "loc": { "start": { "line": 538, @@ -235919,8 +235919,8 @@ "binop": null }, "value": "push", - "start": 22074, - "end": 22078, + "start": 22063, + "end": 22067, "loc": { "start": { "line": 538, @@ -235944,8 +235944,8 @@ "postfix": false, "binop": null }, - "start": 22078, - "end": 22079, + "start": 22067, + "end": 22068, "loc": { "start": { "line": 538, @@ -235971,8 +235971,8 @@ "updateContext": null }, "value": "vec4 linearToLinear( in vec4 value ) {", - "start": 22079, - "end": 22119, + "start": 22068, + "end": 22108, "loc": { "start": { "line": 538, @@ -235996,8 +235996,8 @@ "postfix": false, "binop": null }, - "start": 22119, - "end": 22120, + "start": 22108, + "end": 22109, "loc": { "start": { "line": 538, @@ -236022,8 +236022,8 @@ "binop": null, "updateContext": null }, - "start": 22120, - "end": 22121, + "start": 22109, + "end": 22110, "loc": { "start": { "line": 538, @@ -236048,8 +236048,8 @@ "binop": null }, "value": "src", - "start": 22130, - "end": 22133, + "start": 22119, + "end": 22122, "loc": { "start": { "line": 539, @@ -236074,8 +236074,8 @@ "binop": null, "updateContext": null }, - "start": 22133, - "end": 22134, + "start": 22122, + "end": 22123, "loc": { "start": { "line": 539, @@ -236100,8 +236100,8 @@ "binop": null }, "value": "push", - "start": 22134, - "end": 22138, + "start": 22123, + "end": 22127, "loc": { "start": { "line": 539, @@ -236125,8 +236125,8 @@ "postfix": false, "binop": null }, - "start": 22138, - "end": 22139, + "start": 22127, + "end": 22128, "loc": { "start": { "line": 539, @@ -236152,8 +236152,8 @@ "updateContext": null }, "value": " return value;", - "start": 22139, - "end": 22156, + "start": 22128, + "end": 22145, "loc": { "start": { "line": 539, @@ -236177,8 +236177,8 @@ "postfix": false, "binop": null }, - "start": 22156, - "end": 22157, + "start": 22145, + "end": 22146, "loc": { "start": { "line": 539, @@ -236203,8 +236203,8 @@ "binop": null, "updateContext": null }, - "start": 22157, - "end": 22158, + "start": 22146, + "end": 22147, "loc": { "start": { "line": 539, @@ -236229,8 +236229,8 @@ "binop": null }, "value": "src", - "start": 22167, - "end": 22170, + "start": 22156, + "end": 22159, "loc": { "start": { "line": 540, @@ -236255,8 +236255,8 @@ "binop": null, "updateContext": null }, - "start": 22170, - "end": 22171, + "start": 22159, + "end": 22160, "loc": { "start": { "line": 540, @@ -236281,8 +236281,8 @@ "binop": null }, "value": "push", - "start": 22171, - "end": 22175, + "start": 22160, + "end": 22164, "loc": { "start": { "line": 540, @@ -236306,8 +236306,8 @@ "postfix": false, "binop": null }, - "start": 22175, - "end": 22176, + "start": 22164, + "end": 22165, "loc": { "start": { "line": 540, @@ -236333,8 +236333,8 @@ "updateContext": null }, "value": "}", - "start": 22176, - "end": 22179, + "start": 22165, + "end": 22168, "loc": { "start": { "line": 540, @@ -236358,8 +236358,8 @@ "postfix": false, "binop": null }, - "start": 22179, - "end": 22180, + "start": 22168, + "end": 22169, "loc": { "start": { "line": 540, @@ -236384,8 +236384,8 @@ "binop": null, "updateContext": null }, - "start": 22180, - "end": 22181, + "start": 22169, + "end": 22170, "loc": { "start": { "line": 540, @@ -236410,8 +236410,8 @@ "binop": null }, "value": "src", - "start": 22190, - "end": 22193, + "start": 22179, + "end": 22182, "loc": { "start": { "line": 541, @@ -236436,8 +236436,8 @@ "binop": null, "updateContext": null }, - "start": 22193, - "end": 22194, + "start": 22182, + "end": 22183, "loc": { "start": { "line": 541, @@ -236462,8 +236462,8 @@ "binop": null }, "value": "push", - "start": 22194, - "end": 22198, + "start": 22183, + "end": 22187, "loc": { "start": { "line": 541, @@ -236487,8 +236487,8 @@ "postfix": false, "binop": null }, - "start": 22198, - "end": 22199, + "start": 22187, + "end": 22188, "loc": { "start": { "line": 541, @@ -236514,8 +236514,8 @@ "updateContext": null }, "value": "vec4 sRGBToLinear( in vec4 value ) {", - "start": 22199, - "end": 22237, + "start": 22188, + "end": 22226, "loc": { "start": { "line": 541, @@ -236539,8 +236539,8 @@ "postfix": false, "binop": null }, - "start": 22237, - "end": 22238, + "start": 22226, + "end": 22227, "loc": { "start": { "line": 541, @@ -236565,8 +236565,8 @@ "binop": null, "updateContext": null }, - "start": 22238, - "end": 22239, + "start": 22227, + "end": 22228, "loc": { "start": { "line": 541, @@ -236591,8 +236591,8 @@ "binop": null }, "value": "src", - "start": 22248, - "end": 22251, + "start": 22237, + "end": 22240, "loc": { "start": { "line": 542, @@ -236617,8 +236617,8 @@ "binop": null, "updateContext": null }, - "start": 22251, - "end": 22252, + "start": 22240, + "end": 22241, "loc": { "start": { "line": 542, @@ -236643,8 +236643,8 @@ "binop": null }, "value": "push", - "start": 22252, - "end": 22256, + "start": 22241, + "end": 22245, "loc": { "start": { "line": 542, @@ -236668,8 +236668,8 @@ "postfix": false, "binop": null }, - "start": 22256, - "end": 22257, + "start": 22245, + "end": 22246, "loc": { "start": { "line": 542, @@ -236695,8 +236695,8 @@ "updateContext": null }, "value": " 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 );", - "start": 22257, - "end": 22439, + "start": 22246, + "end": 22428, "loc": { "start": { "line": 542, @@ -236720,8 +236720,8 @@ "postfix": false, "binop": null }, - "start": 22439, - "end": 22440, + "start": 22428, + "end": 22429, "loc": { "start": { "line": 542, @@ -236746,8 +236746,8 @@ "binop": null, "updateContext": null }, - "start": 22440, - "end": 22441, + "start": 22429, + "end": 22430, "loc": { "start": { "line": 542, @@ -236772,8 +236772,8 @@ "binop": null }, "value": "src", - "start": 22450, - "end": 22453, + "start": 22439, + "end": 22442, "loc": { "start": { "line": 543, @@ -236798,8 +236798,8 @@ "binop": null, "updateContext": null }, - "start": 22453, - "end": 22454, + "start": 22442, + "end": 22443, "loc": { "start": { "line": 543, @@ -236824,8 +236824,8 @@ "binop": null }, "value": "push", - "start": 22454, - "end": 22458, + "start": 22443, + "end": 22447, "loc": { "start": { "line": 543, @@ -236849,8 +236849,8 @@ "postfix": false, "binop": null }, - "start": 22458, - "end": 22459, + "start": 22447, + "end": 22448, "loc": { "start": { "line": 543, @@ -236876,8 +236876,8 @@ "updateContext": null }, "value": "}", - "start": 22459, - "end": 22462, + "start": 22448, + "end": 22451, "loc": { "start": { "line": 543, @@ -236901,8 +236901,8 @@ "postfix": false, "binop": null }, - "start": 22462, - "end": 22463, + "start": 22451, + "end": 22452, "loc": { "start": { "line": 543, @@ -236927,8 +236927,8 @@ "binop": null, "updateContext": null }, - "start": 22463, - "end": 22464, + "start": 22452, + "end": 22453, "loc": { "start": { "line": 543, @@ -236953,8 +236953,8 @@ "binop": null }, "value": "src", - "start": 22473, - "end": 22476, + "start": 22462, + "end": 22465, "loc": { "start": { "line": 544, @@ -236979,8 +236979,8 @@ "binop": null, "updateContext": null }, - "start": 22476, - "end": 22477, + "start": 22465, + "end": 22466, "loc": { "start": { "line": 544, @@ -237005,8 +237005,8 @@ "binop": null }, "value": "push", - "start": 22477, - "end": 22481, + "start": 22466, + "end": 22470, "loc": { "start": { "line": 544, @@ -237030,8 +237030,8 @@ "postfix": false, "binop": null }, - "start": 22481, - "end": 22482, + "start": 22470, + "end": 22471, "loc": { "start": { "line": 544, @@ -237057,8 +237057,8 @@ "updateContext": null }, "value": "vec4 gammaToLinear( in vec4 value) {", - "start": 22482, - "end": 22520, + "start": 22471, + "end": 22509, "loc": { "start": { "line": 544, @@ -237082,8 +237082,8 @@ "postfix": false, "binop": null }, - "start": 22520, - "end": 22521, + "start": 22509, + "end": 22510, "loc": { "start": { "line": 544, @@ -237108,8 +237108,8 @@ "binop": null, "updateContext": null }, - "start": 22521, - "end": 22522, + "start": 22510, + "end": 22511, "loc": { "start": { "line": 544, @@ -237134,8 +237134,8 @@ "binop": null }, "value": "src", - "start": 22531, - "end": 22534, + "start": 22520, + "end": 22523, "loc": { "start": { "line": 545, @@ -237160,8 +237160,8 @@ "binop": null, "updateContext": null }, - "start": 22534, - "end": 22535, + "start": 22523, + "end": 22524, "loc": { "start": { "line": 545, @@ -237186,8 +237186,8 @@ "binop": null }, "value": "push", - "start": 22535, - "end": 22539, + "start": 22524, + "end": 22528, "loc": { "start": { "line": 545, @@ -237211,8 +237211,8 @@ "postfix": false, "binop": null }, - "start": 22539, - "end": 22540, + "start": 22528, + "end": 22529, "loc": { "start": { "line": 545, @@ -237238,8 +237238,8 @@ "updateContext": null }, "value": " return vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );", - "start": 22540, - "end": 22606, + "start": 22529, + "end": 22595, "loc": { "start": { "line": 545, @@ -237263,8 +237263,8 @@ "postfix": false, "binop": null }, - "start": 22606, - "end": 22607, + "start": 22595, + "end": 22596, "loc": { "start": { "line": 545, @@ -237289,8 +237289,8 @@ "binop": null, "updateContext": null }, - "start": 22607, - "end": 22608, + "start": 22596, + "end": 22597, "loc": { "start": { "line": 545, @@ -237315,8 +237315,8 @@ "binop": null }, "value": "src", - "start": 22617, - "end": 22620, + "start": 22606, + "end": 22609, "loc": { "start": { "line": 546, @@ -237341,8 +237341,8 @@ "binop": null, "updateContext": null }, - "start": 22620, - "end": 22621, + "start": 22609, + "end": 22610, "loc": { "start": { "line": 546, @@ -237367,8 +237367,8 @@ "binop": null }, "value": "push", - "start": 22621, - "end": 22625, + "start": 22610, + "end": 22614, "loc": { "start": { "line": 546, @@ -237392,8 +237392,8 @@ "postfix": false, "binop": null }, - "start": 22625, - "end": 22626, + "start": 22614, + "end": 22615, "loc": { "start": { "line": 546, @@ -237419,8 +237419,8 @@ "updateContext": null }, "value": "}", - "start": 22626, - "end": 22629, + "start": 22615, + "end": 22618, "loc": { "start": { "line": 546, @@ -237444,8 +237444,8 @@ "postfix": false, "binop": null }, - "start": 22629, - "end": 22630, + "start": 22618, + "end": 22619, "loc": { "start": { "line": 546, @@ -237470,8 +237470,8 @@ "binop": null, "updateContext": null }, - "start": 22630, - "end": 22631, + "start": 22619, + "end": 22620, "loc": { "start": { "line": 546, @@ -237498,8 +237498,8 @@ "updateContext": null }, "value": "if", - "start": 22640, - "end": 22642, + "start": 22629, + "end": 22631, "loc": { "start": { "line": 547, @@ -237523,8 +237523,8 @@ "postfix": false, "binop": null }, - "start": 22643, - "end": 22644, + "start": 22632, + "end": 22633, "loc": { "start": { "line": 547, @@ -237549,8 +237549,8 @@ "binop": null }, "value": "gammaOutput", - "start": 22644, - "end": 22655, + "start": 22633, + "end": 22644, "loc": { "start": { "line": 547, @@ -237574,8 +237574,8 @@ "postfix": false, "binop": null }, - "start": 22655, - "end": 22656, + "start": 22644, + "end": 22645, "loc": { "start": { "line": 547, @@ -237599,8 +237599,8 @@ "postfix": false, "binop": null }, - "start": 22657, - "end": 22658, + "start": 22646, + "end": 22647, "loc": { "start": { "line": 547, @@ -237625,8 +237625,8 @@ "binop": null }, "value": "src", - "start": 22671, - "end": 22674, + "start": 22660, + "end": 22663, "loc": { "start": { "line": 548, @@ -237651,8 +237651,8 @@ "binop": null, "updateContext": null }, - "start": 22674, - "end": 22675, + "start": 22663, + "end": 22664, "loc": { "start": { "line": 548, @@ -237677,8 +237677,8 @@ "binop": null }, "value": "push", - "start": 22675, - "end": 22679, + "start": 22664, + "end": 22668, "loc": { "start": { "line": 548, @@ -237702,8 +237702,8 @@ "postfix": false, "binop": null }, - "start": 22679, - "end": 22680, + "start": 22668, + "end": 22669, "loc": { "start": { "line": 548, @@ -237729,8 +237729,8 @@ "updateContext": null }, "value": "vec4 linearToGamma( in vec4 value, in float gammaFactor ) {", - "start": 22680, - "end": 22741, + "start": 22669, + "end": 22730, "loc": { "start": { "line": 548, @@ -237754,8 +237754,8 @@ "postfix": false, "binop": null }, - "start": 22741, - "end": 22742, + "start": 22730, + "end": 22731, "loc": { "start": { "line": 548, @@ -237780,8 +237780,8 @@ "binop": null, "updateContext": null }, - "start": 22742, - "end": 22743, + "start": 22731, + "end": 22732, "loc": { "start": { "line": 548, @@ -237806,8 +237806,8 @@ "binop": null }, "value": "src", - "start": 22756, - "end": 22759, + "start": 22745, + "end": 22748, "loc": { "start": { "line": 549, @@ -237832,8 +237832,8 @@ "binop": null, "updateContext": null }, - "start": 22759, - "end": 22760, + "start": 22748, + "end": 22749, "loc": { "start": { "line": 549, @@ -237858,8 +237858,8 @@ "binop": null }, "value": "push", - "start": 22760, - "end": 22764, + "start": 22749, + "end": 22753, "loc": { "start": { "line": 549, @@ -237883,8 +237883,8 @@ "postfix": false, "binop": null }, - "start": 22764, - "end": 22765, + "start": 22753, + "end": 22754, "loc": { "start": { "line": 549, @@ -237910,8 +237910,8 @@ "updateContext": null }, "value": " return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );", - "start": 22765, - "end": 22837, + "start": 22754, + "end": 22826, "loc": { "start": { "line": 549, @@ -237935,8 +237935,8 @@ "postfix": false, "binop": null }, - "start": 22837, - "end": 22838, + "start": 22826, + "end": 22827, "loc": { "start": { "line": 549, @@ -237961,8 +237961,8 @@ "binop": null, "updateContext": null }, - "start": 22838, - "end": 22839, + "start": 22827, + "end": 22828, "loc": { "start": { "line": 549, @@ -237987,8 +237987,8 @@ "binop": null }, "value": "src", - "start": 22852, - "end": 22855, + "start": 22841, + "end": 22844, "loc": { "start": { "line": 550, @@ -238013,8 +238013,8 @@ "binop": null, "updateContext": null }, - "start": 22855, - "end": 22856, + "start": 22844, + "end": 22845, "loc": { "start": { "line": 550, @@ -238039,8 +238039,8 @@ "binop": null }, "value": "push", - "start": 22856, - "end": 22860, + "start": 22845, + "end": 22849, "loc": { "start": { "line": 550, @@ -238064,8 +238064,8 @@ "postfix": false, "binop": null }, - "start": 22860, - "end": 22861, + "start": 22849, + "end": 22850, "loc": { "start": { "line": 550, @@ -238091,8 +238091,8 @@ "updateContext": null }, "value": "}", - "start": 22861, - "end": 22864, + "start": 22850, + "end": 22853, "loc": { "start": { "line": 550, @@ -238116,8 +238116,8 @@ "postfix": false, "binop": null }, - "start": 22864, - "end": 22865, + "start": 22853, + "end": 22854, "loc": { "start": { "line": 550, @@ -238142,8 +238142,8 @@ "binop": null, "updateContext": null }, - "start": 22865, - "end": 22866, + "start": 22854, + "end": 22855, "loc": { "start": { "line": 550, @@ -238167,8 +238167,8 @@ "postfix": false, "binop": null }, - "start": 22875, - "end": 22876, + "start": 22864, + "end": 22865, "loc": { "start": { "line": 551, @@ -238195,8 +238195,8 @@ "updateContext": null }, "value": "if", - "start": 22886, - "end": 22888, + "start": 22875, + "end": 22877, "loc": { "start": { "line": 553, @@ -238220,8 +238220,8 @@ "postfix": false, "binop": null }, - "start": 22889, - "end": 22890, + "start": 22878, + "end": 22879, "loc": { "start": { "line": 553, @@ -238246,8 +238246,8 @@ "binop": null }, "value": "clipping", - "start": 22890, - "end": 22898, + "start": 22879, + "end": 22887, "loc": { "start": { "line": 553, @@ -238271,8 +238271,8 @@ "postfix": false, "binop": null }, - "start": 22898, - "end": 22899, + "start": 22887, + "end": 22888, "loc": { "start": { "line": 553, @@ -238296,8 +238296,8 @@ "postfix": false, "binop": null }, - "start": 22900, - "end": 22901, + "start": 22889, + "end": 22890, "loc": { "start": { "line": 553, @@ -238322,8 +238322,8 @@ "binop": null }, "value": "src", - "start": 22914, - "end": 22917, + "start": 22903, + "end": 22906, "loc": { "start": { "line": 554, @@ -238348,8 +238348,8 @@ "binop": null, "updateContext": null }, - "start": 22917, - "end": 22918, + "start": 22906, + "end": 22907, "loc": { "start": { "line": 554, @@ -238374,8 +238374,8 @@ "binop": null }, "value": "push", - "start": 22918, - "end": 22922, + "start": 22907, + "end": 22911, "loc": { "start": { "line": 554, @@ -238399,8 +238399,8 @@ "postfix": false, "binop": null }, - "start": 22922, - "end": 22923, + "start": 22911, + "end": 22912, "loc": { "start": { "line": 554, @@ -238426,8 +238426,8 @@ "updateContext": null }, "value": "varying vec4 vWorldPosition;", - "start": 22923, - "end": 22953, + "start": 22912, + "end": 22942, "loc": { "start": { "line": 554, @@ -238451,8 +238451,8 @@ "postfix": false, "binop": null }, - "start": 22953, - "end": 22954, + "start": 22942, + "end": 22943, "loc": { "start": { "line": 554, @@ -238477,8 +238477,8 @@ "binop": null, "updateContext": null }, - "start": 22954, - "end": 22955, + "start": 22943, + "end": 22944, "loc": { "start": { "line": 554, @@ -238503,8 +238503,8 @@ "binop": null }, "value": "src", - "start": 22968, - "end": 22971, + "start": 22957, + "end": 22960, "loc": { "start": { "line": 555, @@ -238529,8 +238529,8 @@ "binop": null, "updateContext": null }, - "start": 22971, - "end": 22972, + "start": 22960, + "end": 22961, "loc": { "start": { "line": 555, @@ -238555,8 +238555,8 @@ "binop": null }, "value": "push", - "start": 22972, - "end": 22976, + "start": 22961, + "end": 22965, "loc": { "start": { "line": 555, @@ -238580,8 +238580,8 @@ "postfix": false, "binop": null }, - "start": 22976, - "end": 22977, + "start": 22965, + "end": 22966, "loc": { "start": { "line": 555, @@ -238607,8 +238607,8 @@ "updateContext": null }, "value": "varying vec4 vFlags2;", - "start": 22977, - "end": 23000, + "start": 22966, + "end": 22989, "loc": { "start": { "line": 555, @@ -238632,8 +238632,8 @@ "postfix": false, "binop": null }, - "start": 23000, - "end": 23001, + "start": 22989, + "end": 22990, "loc": { "start": { "line": 555, @@ -238658,8 +238658,8 @@ "binop": null, "updateContext": null }, - "start": 23001, - "end": 23002, + "start": 22990, + "end": 22991, "loc": { "start": { "line": 555, @@ -238686,8 +238686,8 @@ "updateContext": null }, "value": "if", - "start": 23015, - "end": 23017, + "start": 23004, + "end": 23006, "loc": { "start": { "line": 556, @@ -238711,8 +238711,8 @@ "postfix": false, "binop": null }, - "start": 23018, - "end": 23019, + "start": 23007, + "end": 23008, "loc": { "start": { "line": 556, @@ -238737,8 +238737,8 @@ "binop": null }, "value": "clippingCaps", - "start": 23019, - "end": 23031, + "start": 23008, + "end": 23020, "loc": { "start": { "line": 556, @@ -238762,8 +238762,8 @@ "postfix": false, "binop": null }, - "start": 23031, - "end": 23032, + "start": 23020, + "end": 23021, "loc": { "start": { "line": 556, @@ -238787,8 +238787,8 @@ "postfix": false, "binop": null }, - "start": 23033, - "end": 23034, + "start": 23022, + "end": 23023, "loc": { "start": { "line": 556, @@ -238813,8 +238813,8 @@ "binop": null }, "value": "src", - "start": 23051, - "end": 23054, + "start": 23040, + "end": 23043, "loc": { "start": { "line": 557, @@ -238839,8 +238839,8 @@ "binop": null, "updateContext": null }, - "start": 23054, - "end": 23055, + "start": 23043, + "end": 23044, "loc": { "start": { "line": 557, @@ -238865,8 +238865,8 @@ "binop": null }, "value": "push", - "start": 23055, - "end": 23059, + "start": 23044, + "end": 23048, "loc": { "start": { "line": 557, @@ -238890,8 +238890,8 @@ "postfix": false, "binop": null }, - "start": 23059, - "end": 23060, + "start": 23048, + "end": 23049, "loc": { "start": { "line": 557, @@ -238917,8 +238917,8 @@ "updateContext": null }, "value": "varying vec4 vClipPosition;", - "start": 23060, - "end": 23089, + "start": 23049, + "end": 23078, "loc": { "start": { "line": 557, @@ -238942,8 +238942,8 @@ "postfix": false, "binop": null }, - "start": 23089, - "end": 23090, + "start": 23078, + "end": 23079, "loc": { "start": { "line": 557, @@ -238968,8 +238968,8 @@ "binop": null, "updateContext": null }, - "start": 23090, - "end": 23091, + "start": 23079, + "end": 23080, "loc": { "start": { "line": 557, @@ -238993,8 +238993,8 @@ "postfix": false, "binop": null }, - "start": 23104, - "end": 23105, + "start": 23093, + "end": 23094, "loc": { "start": { "line": 558, @@ -239021,8 +239021,8 @@ "updateContext": null }, "value": "for", - "start": 23118, - "end": 23121, + "start": 23107, + "end": 23110, "loc": { "start": { "line": 559, @@ -239046,8 +239046,8 @@ "postfix": false, "binop": null }, - "start": 23122, - "end": 23123, + "start": 23111, + "end": 23112, "loc": { "start": { "line": 559, @@ -239074,8 +239074,8 @@ "updateContext": null }, "value": "let", - "start": 23123, - "end": 23126, + "start": 23112, + "end": 23115, "loc": { "start": { "line": 559, @@ -239100,8 +239100,8 @@ "binop": null }, "value": "i", - "start": 23127, - "end": 23128, + "start": 23116, + "end": 23117, "loc": { "start": { "line": 559, @@ -239127,8 +239127,8 @@ "updateContext": null }, "value": "=", - "start": 23129, - "end": 23130, + "start": 23118, + "end": 23119, "loc": { "start": { "line": 559, @@ -239154,8 +239154,8 @@ "updateContext": null }, "value": 0, - "start": 23131, - "end": 23132, + "start": 23120, + "end": 23121, "loc": { "start": { "line": 559, @@ -239180,8 +239180,8 @@ "binop": null, "updateContext": null }, - "start": 23132, - "end": 23133, + "start": 23121, + "end": 23122, "loc": { "start": { "line": 559, @@ -239206,8 +239206,8 @@ "binop": null }, "value": "len", - "start": 23134, - "end": 23137, + "start": 23123, + "end": 23126, "loc": { "start": { "line": 559, @@ -239233,8 +239233,8 @@ "updateContext": null }, "value": "=", - "start": 23138, - "end": 23139, + "start": 23127, + "end": 23128, "loc": { "start": { "line": 559, @@ -239259,8 +239259,8 @@ "binop": null }, "value": "sectionPlanesState", - "start": 23140, - "end": 23158, + "start": 23129, + "end": 23147, "loc": { "start": { "line": 559, @@ -239285,8 +239285,8 @@ "binop": null, "updateContext": null }, - "start": 23158, - "end": 23159, + "start": 23147, + "end": 23148, "loc": { "start": { "line": 559, @@ -239311,8 +239311,8 @@ "binop": null }, "value": "sectionPlanes", - "start": 23159, - "end": 23172, + "start": 23148, + "end": 23161, "loc": { "start": { "line": 559, @@ -239337,8 +239337,8 @@ "binop": null, "updateContext": null }, - "start": 23172, - "end": 23173, + "start": 23161, + "end": 23162, "loc": { "start": { "line": 559, @@ -239363,8 +239363,8 @@ "binop": null }, "value": "length", - "start": 23173, - "end": 23179, + "start": 23162, + "end": 23168, "loc": { "start": { "line": 559, @@ -239389,8 +239389,8 @@ "binop": null, "updateContext": null }, - "start": 23179, - "end": 23180, + "start": 23168, + "end": 23169, "loc": { "start": { "line": 559, @@ -239415,8 +239415,8 @@ "binop": null }, "value": "i", - "start": 23181, - "end": 23182, + "start": 23170, + "end": 23171, "loc": { "start": { "line": 559, @@ -239442,8 +239442,8 @@ "updateContext": null }, "value": "<", - "start": 23183, - "end": 23184, + "start": 23172, + "end": 23173, "loc": { "start": { "line": 559, @@ -239468,8 +239468,8 @@ "binop": null }, "value": "len", - "start": 23185, - "end": 23188, + "start": 23174, + "end": 23177, "loc": { "start": { "line": 559, @@ -239494,8 +239494,8 @@ "binop": null, "updateContext": null }, - "start": 23188, - "end": 23189, + "start": 23177, + "end": 23178, "loc": { "start": { "line": 559, @@ -239520,8 +239520,8 @@ "binop": null }, "value": "i", - "start": 23190, - "end": 23191, + "start": 23179, + "end": 23180, "loc": { "start": { "line": 559, @@ -239546,8 +239546,8 @@ "binop": null }, "value": "++", - "start": 23191, - "end": 23193, + "start": 23180, + "end": 23182, "loc": { "start": { "line": 559, @@ -239571,8 +239571,8 @@ "postfix": false, "binop": null }, - "start": 23193, - "end": 23194, + "start": 23182, + "end": 23183, "loc": { "start": { "line": 559, @@ -239596,8 +239596,8 @@ "postfix": false, "binop": null }, - "start": 23195, - "end": 23196, + "start": 23184, + "end": 23185, "loc": { "start": { "line": 559, @@ -239622,8 +239622,8 @@ "binop": null }, "value": "src", - "start": 23213, - "end": 23216, + "start": 23202, + "end": 23205, "loc": { "start": { "line": 560, @@ -239648,8 +239648,8 @@ "binop": null, "updateContext": null }, - "start": 23216, - "end": 23217, + "start": 23205, + "end": 23206, "loc": { "start": { "line": 560, @@ -239674,8 +239674,8 @@ "binop": null }, "value": "push", - "start": 23217, - "end": 23221, + "start": 23206, + "end": 23210, "loc": { "start": { "line": 560, @@ -239699,8 +239699,8 @@ "postfix": false, "binop": null }, - "start": 23221, - "end": 23222, + "start": 23210, + "end": 23211, "loc": { "start": { "line": 560, @@ -239726,8 +239726,8 @@ "updateContext": null }, "value": "uniform bool sectionPlaneActive", - "start": 23222, - "end": 23255, + "start": 23211, + "end": 23244, "loc": { "start": { "line": 560, @@ -239753,8 +239753,8 @@ "updateContext": null }, "value": "+", - "start": 23256, - "end": 23257, + "start": 23245, + "end": 23246, "loc": { "start": { "line": 560, @@ -239779,8 +239779,8 @@ "binop": null }, "value": "i", - "start": 23258, - "end": 23259, + "start": 23247, + "end": 23248, "loc": { "start": { "line": 560, @@ -239806,8 +239806,8 @@ "updateContext": null }, "value": "+", - "start": 23260, - "end": 23261, + "start": 23249, + "end": 23250, "loc": { "start": { "line": 560, @@ -239833,8 +239833,8 @@ "updateContext": null }, "value": ";", - "start": 23262, - "end": 23265, + "start": 23251, + "end": 23254, "loc": { "start": { "line": 560, @@ -239858,8 +239858,8 @@ "postfix": false, "binop": null }, - "start": 23265, - "end": 23266, + "start": 23254, + "end": 23255, "loc": { "start": { "line": 560, @@ -239884,8 +239884,8 @@ "binop": null, "updateContext": null }, - "start": 23266, - "end": 23267, + "start": 23255, + "end": 23256, "loc": { "start": { "line": 560, @@ -239910,8 +239910,8 @@ "binop": null }, "value": "src", - "start": 23284, - "end": 23287, + "start": 23273, + "end": 23276, "loc": { "start": { "line": 561, @@ -239936,8 +239936,8 @@ "binop": null, "updateContext": null }, - "start": 23287, - "end": 23288, + "start": 23276, + "end": 23277, "loc": { "start": { "line": 561, @@ -239962,8 +239962,8 @@ "binop": null }, "value": "push", - "start": 23288, - "end": 23292, + "start": 23277, + "end": 23281, "loc": { "start": { "line": 561, @@ -239987,8 +239987,8 @@ "postfix": false, "binop": null }, - "start": 23292, - "end": 23293, + "start": 23281, + "end": 23282, "loc": { "start": { "line": 561, @@ -240014,8 +240014,8 @@ "updateContext": null }, "value": "uniform vec3 sectionPlanePos", - "start": 23293, - "end": 23323, + "start": 23282, + "end": 23312, "loc": { "start": { "line": 561, @@ -240041,8 +240041,8 @@ "updateContext": null }, "value": "+", - "start": 23324, - "end": 23325, + "start": 23313, + "end": 23314, "loc": { "start": { "line": 561, @@ -240067,8 +240067,8 @@ "binop": null }, "value": "i", - "start": 23326, - "end": 23327, + "start": 23315, + "end": 23316, "loc": { "start": { "line": 561, @@ -240094,8 +240094,8 @@ "updateContext": null }, "value": "+", - "start": 23328, - "end": 23329, + "start": 23317, + "end": 23318, "loc": { "start": { "line": 561, @@ -240121,8 +240121,8 @@ "updateContext": null }, "value": ";", - "start": 23330, - "end": 23333, + "start": 23319, + "end": 23322, "loc": { "start": { "line": 561, @@ -240146,8 +240146,8 @@ "postfix": false, "binop": null }, - "start": 23333, - "end": 23334, + "start": 23322, + "end": 23323, "loc": { "start": { "line": 561, @@ -240172,8 +240172,8 @@ "binop": null, "updateContext": null }, - "start": 23334, - "end": 23335, + "start": 23323, + "end": 23324, "loc": { "start": { "line": 561, @@ -240198,8 +240198,8 @@ "binop": null }, "value": "src", - "start": 23352, - "end": 23355, + "start": 23341, + "end": 23344, "loc": { "start": { "line": 562, @@ -240224,8 +240224,8 @@ "binop": null, "updateContext": null }, - "start": 23355, - "end": 23356, + "start": 23344, + "end": 23345, "loc": { "start": { "line": 562, @@ -240250,8 +240250,8 @@ "binop": null }, "value": "push", - "start": 23356, - "end": 23360, + "start": 23345, + "end": 23349, "loc": { "start": { "line": 562, @@ -240275,8 +240275,8 @@ "postfix": false, "binop": null }, - "start": 23360, - "end": 23361, + "start": 23349, + "end": 23350, "loc": { "start": { "line": 562, @@ -240302,8 +240302,8 @@ "updateContext": null }, "value": "uniform vec3 sectionPlaneDir", - "start": 23361, - "end": 23391, + "start": 23350, + "end": 23380, "loc": { "start": { "line": 562, @@ -240329,8 +240329,8 @@ "updateContext": null }, "value": "+", - "start": 23392, - "end": 23393, + "start": 23381, + "end": 23382, "loc": { "start": { "line": 562, @@ -240355,8 +240355,8 @@ "binop": null }, "value": "i", - "start": 23394, - "end": 23395, + "start": 23383, + "end": 23384, "loc": { "start": { "line": 562, @@ -240382,8 +240382,8 @@ "updateContext": null }, "value": "+", - "start": 23396, - "end": 23397, + "start": 23385, + "end": 23386, "loc": { "start": { "line": 562, @@ -240409,8 +240409,8 @@ "updateContext": null }, "value": ";", - "start": 23398, - "end": 23401, + "start": 23387, + "end": 23390, "loc": { "start": { "line": 562, @@ -240434,8 +240434,8 @@ "postfix": false, "binop": null }, - "start": 23401, - "end": 23402, + "start": 23390, + "end": 23391, "loc": { "start": { "line": 562, @@ -240460,8 +240460,8 @@ "binop": null, "updateContext": null }, - "start": 23402, - "end": 23403, + "start": 23391, + "end": 23392, "loc": { "start": { "line": 562, @@ -240485,8 +240485,8 @@ "postfix": false, "binop": null }, - "start": 23416, - "end": 23417, + "start": 23405, + "end": 23406, "loc": { "start": { "line": 563, @@ -240510,8 +240510,8 @@ "postfix": false, "binop": null }, - "start": 23426, - "end": 23427, + "start": 23415, + "end": 23416, "loc": { "start": { "line": 564, @@ -240536,8 +240536,8 @@ "binop": null }, "value": "src", - "start": 23437, - "end": 23440, + "start": 23426, + "end": 23429, "loc": { "start": { "line": 566, @@ -240562,8 +240562,8 @@ "binop": null, "updateContext": null }, - "start": 23440, - "end": 23441, + "start": 23429, + "end": 23430, "loc": { "start": { "line": 566, @@ -240588,8 +240588,8 @@ "binop": null }, "value": "push", - "start": 23441, - "end": 23445, + "start": 23430, + "end": 23434, "loc": { "start": { "line": 566, @@ -240613,8 +240613,8 @@ "postfix": false, "binop": null }, - "start": 23445, - "end": 23446, + "start": 23434, + "end": 23435, "loc": { "start": { "line": 566, @@ -240640,8 +240640,8 @@ "updateContext": null }, "value": "varying vec4 vViewPosition;", - "start": 23446, - "end": 23475, + "start": 23435, + "end": 23464, "loc": { "start": { "line": 566, @@ -240665,8 +240665,8 @@ "postfix": false, "binop": null }, - "start": 23475, - "end": 23476, + "start": 23464, + "end": 23465, "loc": { "start": { "line": 566, @@ -240691,8 +240691,8 @@ "binop": null, "updateContext": null }, - "start": 23476, - "end": 23477, + "start": 23465, + "end": 23466, "loc": { "start": { "line": 566, @@ -240717,8 +240717,8 @@ "binop": null }, "value": "src", - "start": 23486, - "end": 23489, + "start": 23475, + "end": 23478, "loc": { "start": { "line": 567, @@ -240743,8 +240743,8 @@ "binop": null, "updateContext": null }, - "start": 23489, - "end": 23490, + "start": 23478, + "end": 23479, "loc": { "start": { "line": 567, @@ -240769,8 +240769,8 @@ "binop": null }, "value": "push", - "start": 23490, - "end": 23494, + "start": 23479, + "end": 23483, "loc": { "start": { "line": 567, @@ -240794,8 +240794,8 @@ "postfix": false, "binop": null }, - "start": 23494, - "end": 23495, + "start": 23483, + "end": 23484, "loc": { "start": { "line": 567, @@ -240821,8 +240821,8 @@ "updateContext": null }, "value": "varying vec3 vViewNormal;", - "start": 23495, - "end": 23522, + "start": 23484, + "end": 23511, "loc": { "start": { "line": 567, @@ -240846,8 +240846,8 @@ "postfix": false, "binop": null }, - "start": 23522, - "end": 23523, + "start": 23511, + "end": 23512, "loc": { "start": { "line": 567, @@ -240872,8 +240872,8 @@ "binop": null, "updateContext": null }, - "start": 23523, - "end": 23524, + "start": 23512, + "end": 23513, "loc": { "start": { "line": 567, @@ -240898,8 +240898,8 @@ "binop": null }, "value": "src", - "start": 23533, - "end": 23536, + "start": 23522, + "end": 23525, "loc": { "start": { "line": 568, @@ -240924,8 +240924,8 @@ "binop": null, "updateContext": null }, - "start": 23536, - "end": 23537, + "start": 23525, + "end": 23526, "loc": { "start": { "line": 568, @@ -240950,8 +240950,8 @@ "binop": null }, "value": "push", - "start": 23537, - "end": 23541, + "start": 23526, + "end": 23530, "loc": { "start": { "line": 568, @@ -240975,8 +240975,8 @@ "postfix": false, "binop": null }, - "start": 23541, - "end": 23542, + "start": 23530, + "end": 23531, "loc": { "start": { "line": 568, @@ -241002,8 +241002,8 @@ "updateContext": null }, "value": "varying vec4 vColor;", - "start": 23542, - "end": 23564, + "start": 23531, + "end": 23553, "loc": { "start": { "line": 568, @@ -241027,8 +241027,8 @@ "postfix": false, "binop": null }, - "start": 23564, - "end": 23565, + "start": 23553, + "end": 23554, "loc": { "start": { "line": 568, @@ -241053,8 +241053,8 @@ "binop": null, "updateContext": null }, - "start": 23565, - "end": 23566, + "start": 23554, + "end": 23555, "loc": { "start": { "line": 568, @@ -241079,8 +241079,8 @@ "binop": null }, "value": "src", - "start": 23575, - "end": 23578, + "start": 23564, + "end": 23567, "loc": { "start": { "line": 569, @@ -241105,8 +241105,8 @@ "binop": null, "updateContext": null }, - "start": 23578, - "end": 23579, + "start": 23567, + "end": 23568, "loc": { "start": { "line": 569, @@ -241131,8 +241131,8 @@ "binop": null }, "value": "push", - "start": 23579, - "end": 23583, + "start": 23568, + "end": 23572, "loc": { "start": { "line": 569, @@ -241156,8 +241156,8 @@ "postfix": false, "binop": null }, - "start": 23583, - "end": 23584, + "start": 23572, + "end": 23573, "loc": { "start": { "line": 569, @@ -241183,8 +241183,8 @@ "updateContext": null }, "value": "varying vec2 vMetallicRoughness;", - "start": 23584, - "end": 23618, + "start": 23573, + "end": 23607, "loc": { "start": { "line": 569, @@ -241208,8 +241208,8 @@ "postfix": false, "binop": null }, - "start": 23618, - "end": 23619, + "start": 23607, + "end": 23608, "loc": { "start": { "line": 569, @@ -241234,8 +241234,8 @@ "binop": null, "updateContext": null }, - "start": 23619, - "end": 23620, + "start": 23608, + "end": 23609, "loc": { "start": { "line": 569, @@ -241262,8 +241262,8 @@ "updateContext": null }, "value": "if", - "start": 23630, - "end": 23632, + "start": 23619, + "end": 23621, "loc": { "start": { "line": 571, @@ -241287,8 +241287,8 @@ "postfix": false, "binop": null }, - "start": 23633, - "end": 23634, + "start": 23622, + "end": 23623, "loc": { "start": { "line": 571, @@ -241313,8 +241313,8 @@ "binop": null }, "value": "lightsState", - "start": 23634, - "end": 23645, + "start": 23623, + "end": 23634, "loc": { "start": { "line": 571, @@ -241339,8 +241339,8 @@ "binop": null, "updateContext": null }, - "start": 23645, - "end": 23646, + "start": 23634, + "end": 23635, "loc": { "start": { "line": 571, @@ -241365,8 +241365,8 @@ "binop": null }, "value": "lightMaps", - "start": 23646, - "end": 23655, + "start": 23635, + "end": 23644, "loc": { "start": { "line": 571, @@ -241391,8 +241391,8 @@ "binop": null, "updateContext": null }, - "start": 23655, - "end": 23656, + "start": 23644, + "end": 23645, "loc": { "start": { "line": 571, @@ -241417,8 +241417,8 @@ "binop": null }, "value": "length", - "start": 23656, - "end": 23662, + "start": 23645, + "end": 23651, "loc": { "start": { "line": 571, @@ -241444,8 +241444,8 @@ "updateContext": null }, "value": ">", - "start": 23663, - "end": 23664, + "start": 23652, + "end": 23653, "loc": { "start": { "line": 571, @@ -241471,8 +241471,8 @@ "updateContext": null }, "value": 0, - "start": 23665, - "end": 23666, + "start": 23654, + "end": 23655, "loc": { "start": { "line": 571, @@ -241496,8 +241496,8 @@ "postfix": false, "binop": null }, - "start": 23666, - "end": 23667, + "start": 23655, + "end": 23656, "loc": { "start": { "line": 571, @@ -241521,8 +241521,8 @@ "postfix": false, "binop": null }, - "start": 23668, - "end": 23669, + "start": 23657, + "end": 23658, "loc": { "start": { "line": 571, @@ -241547,8 +241547,8 @@ "binop": null }, "value": "src", - "start": 23682, - "end": 23685, + "start": 23671, + "end": 23674, "loc": { "start": { "line": 572, @@ -241573,8 +241573,8 @@ "binop": null, "updateContext": null }, - "start": 23685, - "end": 23686, + "start": 23674, + "end": 23675, "loc": { "start": { "line": 572, @@ -241599,8 +241599,8 @@ "binop": null }, "value": "push", - "start": 23686, - "end": 23690, + "start": 23675, + "end": 23679, "loc": { "start": { "line": 572, @@ -241624,8 +241624,8 @@ "postfix": false, "binop": null }, - "start": 23690, - "end": 23691, + "start": 23679, + "end": 23680, "loc": { "start": { "line": 572, @@ -241651,8 +241651,8 @@ "updateContext": null }, "value": "varying vec3 vWorldNormal;", - "start": 23691, - "end": 23719, + "start": 23680, + "end": 23708, "loc": { "start": { "line": 572, @@ -241676,8 +241676,8 @@ "postfix": false, "binop": null }, - "start": 23719, - "end": 23720, + "start": 23708, + "end": 23709, "loc": { "start": { "line": 572, @@ -241702,8 +241702,8 @@ "binop": null, "updateContext": null }, - "start": 23720, - "end": 23721, + "start": 23709, + "end": 23710, "loc": { "start": { "line": 572, @@ -241727,8 +241727,8 @@ "postfix": false, "binop": null }, - "start": 23730, - "end": 23731, + "start": 23719, + "end": 23720, "loc": { "start": { "line": 573, @@ -241753,8 +241753,8 @@ "binop": null }, "value": "src", - "start": 23741, - "end": 23744, + "start": 23730, + "end": 23733, "loc": { "start": { "line": 575, @@ -241779,8 +241779,8 @@ "binop": null, "updateContext": null }, - "start": 23744, - "end": 23745, + "start": 23733, + "end": 23734, "loc": { "start": { "line": 575, @@ -241805,8 +241805,8 @@ "binop": null }, "value": "push", - "start": 23745, - "end": 23749, + "start": 23734, + "end": 23738, "loc": { "start": { "line": 575, @@ -241830,8 +241830,8 @@ "postfix": false, "binop": null }, - "start": 23749, - "end": 23750, + "start": 23738, + "end": 23739, "loc": { "start": { "line": 575, @@ -241857,8 +241857,8 @@ "updateContext": null }, "value": "uniform mat4 viewMatrix;", - "start": 23750, - "end": 23776, + "start": 23739, + "end": 23765, "loc": { "start": { "line": 575, @@ -241882,8 +241882,8 @@ "postfix": false, "binop": null }, - "start": 23776, - "end": 23777, + "start": 23765, + "end": 23766, "loc": { "start": { "line": 575, @@ -241908,8 +241908,8 @@ "binop": null, "updateContext": null }, - "start": 23777, - "end": 23778, + "start": 23766, + "end": 23767, "loc": { "start": { "line": 575, @@ -241924,8 +241924,8 @@ { "type": "CommentLine", "value": " CONSTANT DEFINITIONS", - "start": 23788, - "end": 23811, + "start": 23777, + "end": 23800, "loc": { "start": { "line": 577, @@ -241950,8 +241950,8 @@ "binop": null }, "value": "src", - "start": 23821, - "end": 23824, + "start": 23810, + "end": 23813, "loc": { "start": { "line": 579, @@ -241976,8 +241976,8 @@ "binop": null, "updateContext": null }, - "start": 23824, - "end": 23825, + "start": 23813, + "end": 23814, "loc": { "start": { "line": 579, @@ -242002,8 +242002,8 @@ "binop": null }, "value": "push", - "start": 23825, - "end": 23829, + "start": 23814, + "end": 23818, "loc": { "start": { "line": 579, @@ -242027,8 +242027,8 @@ "postfix": false, "binop": null }, - "start": 23829, - "end": 23830, + "start": 23818, + "end": 23819, "loc": { "start": { "line": 579, @@ -242054,8 +242054,8 @@ "updateContext": null }, "value": "#define PI 3.14159265359", - "start": 23830, - "end": 23856, + "start": 23819, + "end": 23845, "loc": { "start": { "line": 579, @@ -242079,8 +242079,8 @@ "postfix": false, "binop": null }, - "start": 23856, - "end": 23857, + "start": 23845, + "end": 23846, "loc": { "start": { "line": 579, @@ -242105,8 +242105,8 @@ "binop": null, "updateContext": null }, - "start": 23857, - "end": 23858, + "start": 23846, + "end": 23847, "loc": { "start": { "line": 579, @@ -242131,8 +242131,8 @@ "binop": null }, "value": "src", - "start": 23867, - "end": 23870, + "start": 23856, + "end": 23859, "loc": { "start": { "line": 580, @@ -242157,8 +242157,8 @@ "binop": null, "updateContext": null }, - "start": 23870, - "end": 23871, + "start": 23859, + "end": 23860, "loc": { "start": { "line": 580, @@ -242183,8 +242183,8 @@ "binop": null }, "value": "push", - "start": 23871, - "end": 23875, + "start": 23860, + "end": 23864, "loc": { "start": { "line": 580, @@ -242208,8 +242208,8 @@ "postfix": false, "binop": null }, - "start": 23875, - "end": 23876, + "start": 23864, + "end": 23865, "loc": { "start": { "line": 580, @@ -242235,8 +242235,8 @@ "updateContext": null }, "value": "#define RECIPROCAL_PI 0.31830988618", - "start": 23876, - "end": 23913, + "start": 23865, + "end": 23902, "loc": { "start": { "line": 580, @@ -242260,8 +242260,8 @@ "postfix": false, "binop": null }, - "start": 23913, - "end": 23914, + "start": 23902, + "end": 23903, "loc": { "start": { "line": 580, @@ -242286,8 +242286,8 @@ "binop": null, "updateContext": null }, - "start": 23914, - "end": 23915, + "start": 23903, + "end": 23904, "loc": { "start": { "line": 580, @@ -242312,8 +242312,8 @@ "binop": null }, "value": "src", - "start": 23924, - "end": 23927, + "start": 23913, + "end": 23916, "loc": { "start": { "line": 581, @@ -242338,8 +242338,8 @@ "binop": null, "updateContext": null }, - "start": 23927, - "end": 23928, + "start": 23916, + "end": 23917, "loc": { "start": { "line": 581, @@ -242364,8 +242364,8 @@ "binop": null }, "value": "push", - "start": 23928, - "end": 23932, + "start": 23917, + "end": 23921, "loc": { "start": { "line": 581, @@ -242389,8 +242389,8 @@ "postfix": false, "binop": null }, - "start": 23932, - "end": 23933, + "start": 23921, + "end": 23922, "loc": { "start": { "line": 581, @@ -242416,8 +242416,8 @@ "updateContext": null }, "value": "#define RECIPROCAL_PI2 0.15915494", - "start": 23933, - "end": 23968, + "start": 23922, + "end": 23957, "loc": { "start": { "line": 581, @@ -242441,8 +242441,8 @@ "postfix": false, "binop": null }, - "start": 23968, - "end": 23969, + "start": 23957, + "end": 23958, "loc": { "start": { "line": 581, @@ -242467,8 +242467,8 @@ "binop": null, "updateContext": null }, - "start": 23969, - "end": 23970, + "start": 23958, + "end": 23959, "loc": { "start": { "line": 581, @@ -242493,8 +242493,8 @@ "binop": null }, "value": "src", - "start": 23979, - "end": 23982, + "start": 23968, + "end": 23971, "loc": { "start": { "line": 582, @@ -242519,8 +242519,8 @@ "binop": null, "updateContext": null }, - "start": 23982, - "end": 23983, + "start": 23971, + "end": 23972, "loc": { "start": { "line": 582, @@ -242545,8 +242545,8 @@ "binop": null }, "value": "push", - "start": 23983, - "end": 23987, + "start": 23972, + "end": 23976, "loc": { "start": { "line": 582, @@ -242570,8 +242570,8 @@ "postfix": false, "binop": null }, - "start": 23987, - "end": 23988, + "start": 23976, + "end": 23977, "loc": { "start": { "line": 582, @@ -242597,8 +242597,8 @@ "updateContext": null }, "value": "#define EPSILON 1e-6", - "start": 23988, - "end": 24010, + "start": 23977, + "end": 23999, "loc": { "start": { "line": 582, @@ -242622,8 +242622,8 @@ "postfix": false, "binop": null }, - "start": 24010, - "end": 24011, + "start": 23999, + "end": 24000, "loc": { "start": { "line": 582, @@ -242648,8 +242648,8 @@ "binop": null, "updateContext": null }, - "start": 24011, - "end": 24012, + "start": 24000, + "end": 24001, "loc": { "start": { "line": 582, @@ -242674,8 +242674,8 @@ "binop": null }, "value": "src", - "start": 24022, - "end": 24025, + "start": 24011, + "end": 24014, "loc": { "start": { "line": 584, @@ -242700,8 +242700,8 @@ "binop": null, "updateContext": null }, - "start": 24025, - "end": 24026, + "start": 24014, + "end": 24015, "loc": { "start": { "line": 584, @@ -242726,8 +242726,8 @@ "binop": null }, "value": "push", - "start": 24026, - "end": 24030, + "start": 24015, + "end": 24019, "loc": { "start": { "line": 584, @@ -242751,8 +242751,8 @@ "postfix": false, "binop": null }, - "start": 24030, - "end": 24031, + "start": 24019, + "end": 24020, "loc": { "start": { "line": 584, @@ -242778,8 +242778,8 @@ "updateContext": null }, "value": "#define saturate(a) clamp( a, 0.0, 1.0 )", - "start": 24031, - "end": 24073, + "start": 24020, + "end": 24062, "loc": { "start": { "line": 584, @@ -242803,8 +242803,8 @@ "postfix": false, "binop": null }, - "start": 24073, - "end": 24074, + "start": 24062, + "end": 24063, "loc": { "start": { "line": 584, @@ -242829,8 +242829,8 @@ "binop": null, "updateContext": null }, - "start": 24074, - "end": 24075, + "start": 24063, + "end": 24064, "loc": { "start": { "line": 584, @@ -242845,8 +242845,8 @@ { "type": "CommentLine", "value": " UTILITY DEFINITIONS", - "start": 24085, - "end": 24107, + "start": 24074, + "end": 24096, "loc": { "start": { "line": 586, @@ -242871,8 +242871,8 @@ "binop": null }, "value": "src", - "start": 24117, - "end": 24120, + "start": 24106, + "end": 24109, "loc": { "start": { "line": 588, @@ -242897,8 +242897,8 @@ "binop": null, "updateContext": null }, - "start": 24120, - "end": 24121, + "start": 24109, + "end": 24110, "loc": { "start": { "line": 588, @@ -242923,8 +242923,8 @@ "binop": null }, "value": "push", - "start": 24121, - "end": 24125, + "start": 24110, + "end": 24114, "loc": { "start": { "line": 588, @@ -242948,8 +242948,8 @@ "postfix": false, "binop": null }, - "start": 24125, - "end": 24126, + "start": 24114, + "end": 24115, "loc": { "start": { "line": 588, @@ -242975,8 +242975,8 @@ "updateContext": null }, "value": "vec3 inverseTransformDirection(in vec3 dir, in mat4 matrix) {", - "start": 24126, - "end": 24189, + "start": 24115, + "end": 24178, "loc": { "start": { "line": 588, @@ -243000,8 +243000,8 @@ "postfix": false, "binop": null }, - "start": 24189, - "end": 24190, + "start": 24178, + "end": 24179, "loc": { "start": { "line": 588, @@ -243026,8 +243026,8 @@ "binop": null, "updateContext": null }, - "start": 24190, - "end": 24191, + "start": 24179, + "end": 24180, "loc": { "start": { "line": 588, @@ -243052,8 +243052,8 @@ "binop": null }, "value": "src", - "start": 24200, - "end": 24203, + "start": 24189, + "end": 24192, "loc": { "start": { "line": 589, @@ -243078,8 +243078,8 @@ "binop": null, "updateContext": null }, - "start": 24203, - "end": 24204, + "start": 24192, + "end": 24193, "loc": { "start": { "line": 589, @@ -243104,8 +243104,8 @@ "binop": null }, "value": "push", - "start": 24204, - "end": 24208, + "start": 24193, + "end": 24197, "loc": { "start": { "line": 589, @@ -243129,8 +243129,8 @@ "postfix": false, "binop": null }, - "start": 24208, - "end": 24209, + "start": 24197, + "end": 24198, "loc": { "start": { "line": 589, @@ -243156,8 +243156,8 @@ "updateContext": null }, "value": " return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );", - "start": 24209, - "end": 24268, + "start": 24198, + "end": 24257, "loc": { "start": { "line": 589, @@ -243181,8 +243181,8 @@ "postfix": false, "binop": null }, - "start": 24268, - "end": 24269, + "start": 24257, + "end": 24258, "loc": { "start": { "line": 589, @@ -243207,8 +243207,8 @@ "binop": null, "updateContext": null }, - "start": 24269, - "end": 24270, + "start": 24258, + "end": 24259, "loc": { "start": { "line": 589, @@ -243233,8 +243233,8 @@ "binop": null }, "value": "src", - "start": 24279, - "end": 24282, + "start": 24268, + "end": 24271, "loc": { "start": { "line": 590, @@ -243259,8 +243259,8 @@ "binop": null, "updateContext": null }, - "start": 24282, - "end": 24283, + "start": 24271, + "end": 24272, "loc": { "start": { "line": 590, @@ -243285,8 +243285,8 @@ "binop": null }, "value": "push", - "start": 24283, - "end": 24287, + "start": 24272, + "end": 24276, "loc": { "start": { "line": 590, @@ -243310,8 +243310,8 @@ "postfix": false, "binop": null }, - "start": 24287, - "end": 24288, + "start": 24276, + "end": 24277, "loc": { "start": { "line": 590, @@ -243337,8 +243337,8 @@ "updateContext": null }, "value": "}", - "start": 24288, - "end": 24291, + "start": 24277, + "end": 24280, "loc": { "start": { "line": 590, @@ -243362,8 +243362,8 @@ "postfix": false, "binop": null }, - "start": 24291, - "end": 24292, + "start": 24280, + "end": 24281, "loc": { "start": { "line": 590, @@ -243388,8 +243388,8 @@ "binop": null, "updateContext": null }, - "start": 24292, - "end": 24293, + "start": 24281, + "end": 24282, "loc": { "start": { "line": 590, @@ -243404,8 +243404,8 @@ { "type": "CommentLine", "value": " STRUCTURES", - "start": 24303, - "end": 24316, + "start": 24292, + "end": 24305, "loc": { "start": { "line": 592, @@ -243430,8 +243430,8 @@ "binop": null }, "value": "src", - "start": 24326, - "end": 24329, + "start": 24315, + "end": 24318, "loc": { "start": { "line": 594, @@ -243456,8 +243456,8 @@ "binop": null, "updateContext": null }, - "start": 24329, - "end": 24330, + "start": 24318, + "end": 24319, "loc": { "start": { "line": 594, @@ -243482,8 +243482,8 @@ "binop": null }, "value": "push", - "start": 24330, - "end": 24334, + "start": 24319, + "end": 24323, "loc": { "start": { "line": 594, @@ -243507,8 +243507,8 @@ "postfix": false, "binop": null }, - "start": 24334, - "end": 24335, + "start": 24323, + "end": 24324, "loc": { "start": { "line": 594, @@ -243534,8 +243534,8 @@ "updateContext": null }, "value": "struct IncidentLight {", - "start": 24335, - "end": 24359, + "start": 24324, + "end": 24348, "loc": { "start": { "line": 594, @@ -243559,8 +243559,8 @@ "postfix": false, "binop": null }, - "start": 24359, - "end": 24360, + "start": 24348, + "end": 24349, "loc": { "start": { "line": 594, @@ -243585,8 +243585,8 @@ "binop": null, "updateContext": null }, - "start": 24360, - "end": 24361, + "start": 24349, + "end": 24350, "loc": { "start": { "line": 594, @@ -243611,8 +243611,8 @@ "binop": null }, "value": "src", - "start": 24370, - "end": 24373, + "start": 24359, + "end": 24362, "loc": { "start": { "line": 595, @@ -243637,8 +243637,8 @@ "binop": null, "updateContext": null }, - "start": 24373, - "end": 24374, + "start": 24362, + "end": 24363, "loc": { "start": { "line": 595, @@ -243663,8 +243663,8 @@ "binop": null }, "value": "push", - "start": 24374, - "end": 24378, + "start": 24363, + "end": 24367, "loc": { "start": { "line": 595, @@ -243688,8 +243688,8 @@ "postfix": false, "binop": null }, - "start": 24378, - "end": 24379, + "start": 24367, + "end": 24368, "loc": { "start": { "line": 595, @@ -243715,8 +243715,8 @@ "updateContext": null }, "value": " vec3 color;", - "start": 24379, - "end": 24395, + "start": 24368, + "end": 24384, "loc": { "start": { "line": 595, @@ -243740,8 +243740,8 @@ "postfix": false, "binop": null }, - "start": 24395, - "end": 24396, + "start": 24384, + "end": 24385, "loc": { "start": { "line": 595, @@ -243766,8 +243766,8 @@ "binop": null, "updateContext": null }, - "start": 24396, - "end": 24397, + "start": 24385, + "end": 24386, "loc": { "start": { "line": 595, @@ -243792,8 +243792,8 @@ "binop": null }, "value": "src", - "start": 24406, - "end": 24409, + "start": 24395, + "end": 24398, "loc": { "start": { "line": 596, @@ -243818,8 +243818,8 @@ "binop": null, "updateContext": null }, - "start": 24409, - "end": 24410, + "start": 24398, + "end": 24399, "loc": { "start": { "line": 596, @@ -243844,8 +243844,8 @@ "binop": null }, "value": "push", - "start": 24410, - "end": 24414, + "start": 24399, + "end": 24403, "loc": { "start": { "line": 596, @@ -243869,8 +243869,8 @@ "postfix": false, "binop": null }, - "start": 24414, - "end": 24415, + "start": 24403, + "end": 24404, "loc": { "start": { "line": 596, @@ -243896,8 +243896,8 @@ "updateContext": null }, "value": " vec3 direction;", - "start": 24415, - "end": 24435, + "start": 24404, + "end": 24424, "loc": { "start": { "line": 596, @@ -243921,8 +243921,8 @@ "postfix": false, "binop": null }, - "start": 24435, - "end": 24436, + "start": 24424, + "end": 24425, "loc": { "start": { "line": 596, @@ -243947,8 +243947,8 @@ "binop": null, "updateContext": null }, - "start": 24436, - "end": 24437, + "start": 24425, + "end": 24426, "loc": { "start": { "line": 596, @@ -243973,8 +243973,8 @@ "binop": null }, "value": "src", - "start": 24446, - "end": 24449, + "start": 24435, + "end": 24438, "loc": { "start": { "line": 597, @@ -243999,8 +243999,8 @@ "binop": null, "updateContext": null }, - "start": 24449, - "end": 24450, + "start": 24438, + "end": 24439, "loc": { "start": { "line": 597, @@ -244025,8 +244025,8 @@ "binop": null }, "value": "push", - "start": 24450, - "end": 24454, + "start": 24439, + "end": 24443, "loc": { "start": { "line": 597, @@ -244050,8 +244050,8 @@ "postfix": false, "binop": null }, - "start": 24454, - "end": 24455, + "start": 24443, + "end": 24444, "loc": { "start": { "line": 597, @@ -244077,8 +244077,8 @@ "updateContext": null }, "value": "};", - "start": 24455, - "end": 24459, + "start": 24444, + "end": 24448, "loc": { "start": { "line": 597, @@ -244102,8 +244102,8 @@ "postfix": false, "binop": null }, - "start": 24459, - "end": 24460, + "start": 24448, + "end": 24449, "loc": { "start": { "line": 597, @@ -244128,8 +244128,8 @@ "binop": null, "updateContext": null }, - "start": 24460, - "end": 24461, + "start": 24449, + "end": 24450, "loc": { "start": { "line": 597, @@ -244154,8 +244154,8 @@ "binop": null }, "value": "src", - "start": 24471, - "end": 24474, + "start": 24460, + "end": 24463, "loc": { "start": { "line": 599, @@ -244180,8 +244180,8 @@ "binop": null, "updateContext": null }, - "start": 24474, - "end": 24475, + "start": 24463, + "end": 24464, "loc": { "start": { "line": 599, @@ -244206,8 +244206,8 @@ "binop": null }, "value": "push", - "start": 24475, - "end": 24479, + "start": 24464, + "end": 24468, "loc": { "start": { "line": 599, @@ -244231,8 +244231,8 @@ "postfix": false, "binop": null }, - "start": 24479, - "end": 24480, + "start": 24468, + "end": 24469, "loc": { "start": { "line": 599, @@ -244258,8 +244258,8 @@ "updateContext": null }, "value": "struct ReflectedLight {", - "start": 24480, - "end": 24505, + "start": 24469, + "end": 24494, "loc": { "start": { "line": 599, @@ -244283,8 +244283,8 @@ "postfix": false, "binop": null }, - "start": 24505, - "end": 24506, + "start": 24494, + "end": 24495, "loc": { "start": { "line": 599, @@ -244309,8 +244309,8 @@ "binop": null, "updateContext": null }, - "start": 24506, - "end": 24507, + "start": 24495, + "end": 24496, "loc": { "start": { "line": 599, @@ -244335,8 +244335,8 @@ "binop": null }, "value": "src", - "start": 24516, - "end": 24519, + "start": 24505, + "end": 24508, "loc": { "start": { "line": 600, @@ -244361,8 +244361,8 @@ "binop": null, "updateContext": null }, - "start": 24519, - "end": 24520, + "start": 24508, + "end": 24509, "loc": { "start": { "line": 600, @@ -244387,8 +244387,8 @@ "binop": null }, "value": "push", - "start": 24520, - "end": 24524, + "start": 24509, + "end": 24513, "loc": { "start": { "line": 600, @@ -244412,8 +244412,8 @@ "postfix": false, "binop": null }, - "start": 24524, - "end": 24525, + "start": 24513, + "end": 24514, "loc": { "start": { "line": 600, @@ -244439,8 +244439,8 @@ "updateContext": null }, "value": " vec3 diffuse;", - "start": 24525, - "end": 24543, + "start": 24514, + "end": 24532, "loc": { "start": { "line": 600, @@ -244464,8 +244464,8 @@ "postfix": false, "binop": null }, - "start": 24543, - "end": 24544, + "start": 24532, + "end": 24533, "loc": { "start": { "line": 600, @@ -244490,8 +244490,8 @@ "binop": null, "updateContext": null }, - "start": 24544, - "end": 24545, + "start": 24533, + "end": 24534, "loc": { "start": { "line": 600, @@ -244516,8 +244516,8 @@ "binop": null }, "value": "src", - "start": 24554, - "end": 24557, + "start": 24543, + "end": 24546, "loc": { "start": { "line": 601, @@ -244542,8 +244542,8 @@ "binop": null, "updateContext": null }, - "start": 24557, - "end": 24558, + "start": 24546, + "end": 24547, "loc": { "start": { "line": 601, @@ -244568,8 +244568,8 @@ "binop": null }, "value": "push", - "start": 24558, - "end": 24562, + "start": 24547, + "end": 24551, "loc": { "start": { "line": 601, @@ -244593,8 +244593,8 @@ "postfix": false, "binop": null }, - "start": 24562, - "end": 24563, + "start": 24551, + "end": 24552, "loc": { "start": { "line": 601, @@ -244620,8 +244620,8 @@ "updateContext": null }, "value": " vec3 specular;", - "start": 24563, - "end": 24582, + "start": 24552, + "end": 24571, "loc": { "start": { "line": 601, @@ -244645,8 +244645,8 @@ "postfix": false, "binop": null }, - "start": 24582, - "end": 24583, + "start": 24571, + "end": 24572, "loc": { "start": { "line": 601, @@ -244671,8 +244671,8 @@ "binop": null, "updateContext": null }, - "start": 24583, - "end": 24584, + "start": 24572, + "end": 24573, "loc": { "start": { "line": 601, @@ -244697,8 +244697,8 @@ "binop": null }, "value": "src", - "start": 24593, - "end": 24596, + "start": 24582, + "end": 24585, "loc": { "start": { "line": 602, @@ -244723,8 +244723,8 @@ "binop": null, "updateContext": null }, - "start": 24596, - "end": 24597, + "start": 24585, + "end": 24586, "loc": { "start": { "line": 602, @@ -244749,8 +244749,8 @@ "binop": null }, "value": "push", - "start": 24597, - "end": 24601, + "start": 24586, + "end": 24590, "loc": { "start": { "line": 602, @@ -244774,8 +244774,8 @@ "postfix": false, "binop": null }, - "start": 24601, - "end": 24602, + "start": 24590, + "end": 24591, "loc": { "start": { "line": 602, @@ -244801,8 +244801,8 @@ "updateContext": null }, "value": "};", - "start": 24602, - "end": 24606, + "start": 24591, + "end": 24595, "loc": { "start": { "line": 602, @@ -244826,8 +244826,8 @@ "postfix": false, "binop": null }, - "start": 24606, - "end": 24607, + "start": 24595, + "end": 24596, "loc": { "start": { "line": 602, @@ -244852,8 +244852,8 @@ "binop": null, "updateContext": null }, - "start": 24607, - "end": 24608, + "start": 24596, + "end": 24597, "loc": { "start": { "line": 602, @@ -244878,8 +244878,8 @@ "binop": null }, "value": "src", - "start": 24618, - "end": 24621, + "start": 24607, + "end": 24610, "loc": { "start": { "line": 604, @@ -244904,8 +244904,8 @@ "binop": null, "updateContext": null }, - "start": 24621, - "end": 24622, + "start": 24610, + "end": 24611, "loc": { "start": { "line": 604, @@ -244930,8 +244930,8 @@ "binop": null }, "value": "push", - "start": 24622, - "end": 24626, + "start": 24611, + "end": 24615, "loc": { "start": { "line": 604, @@ -244955,8 +244955,8 @@ "postfix": false, "binop": null }, - "start": 24626, - "end": 24627, + "start": 24615, + "end": 24616, "loc": { "start": { "line": 604, @@ -244982,8 +244982,8 @@ "updateContext": null }, "value": "struct Geometry {", - "start": 24627, - "end": 24646, + "start": 24616, + "end": 24635, "loc": { "start": { "line": 604, @@ -245007,8 +245007,8 @@ "postfix": false, "binop": null }, - "start": 24646, - "end": 24647, + "start": 24635, + "end": 24636, "loc": { "start": { "line": 604, @@ -245033,8 +245033,8 @@ "binop": null, "updateContext": null }, - "start": 24647, - "end": 24648, + "start": 24636, + "end": 24637, "loc": { "start": { "line": 604, @@ -245059,8 +245059,8 @@ "binop": null }, "value": "src", - "start": 24657, - "end": 24660, + "start": 24646, + "end": 24649, "loc": { "start": { "line": 605, @@ -245085,8 +245085,8 @@ "binop": null, "updateContext": null }, - "start": 24660, - "end": 24661, + "start": 24649, + "end": 24650, "loc": { "start": { "line": 605, @@ -245111,8 +245111,8 @@ "binop": null }, "value": "push", - "start": 24661, - "end": 24665, + "start": 24650, + "end": 24654, "loc": { "start": { "line": 605, @@ -245136,8 +245136,8 @@ "postfix": false, "binop": null }, - "start": 24665, - "end": 24666, + "start": 24654, + "end": 24655, "loc": { "start": { "line": 605, @@ -245163,8 +245163,8 @@ "updateContext": null }, "value": " vec3 position;", - "start": 24666, - "end": 24685, + "start": 24655, + "end": 24674, "loc": { "start": { "line": 605, @@ -245188,8 +245188,8 @@ "postfix": false, "binop": null }, - "start": 24685, - "end": 24686, + "start": 24674, + "end": 24675, "loc": { "start": { "line": 605, @@ -245214,8 +245214,8 @@ "binop": null, "updateContext": null }, - "start": 24686, - "end": 24687, + "start": 24675, + "end": 24676, "loc": { "start": { "line": 605, @@ -245240,8 +245240,8 @@ "binop": null }, "value": "src", - "start": 24696, - "end": 24699, + "start": 24685, + "end": 24688, "loc": { "start": { "line": 606, @@ -245266,8 +245266,8 @@ "binop": null, "updateContext": null }, - "start": 24699, - "end": 24700, + "start": 24688, + "end": 24689, "loc": { "start": { "line": 606, @@ -245292,8 +245292,8 @@ "binop": null }, "value": "push", - "start": 24700, - "end": 24704, + "start": 24689, + "end": 24693, "loc": { "start": { "line": 606, @@ -245317,8 +245317,8 @@ "postfix": false, "binop": null }, - "start": 24704, - "end": 24705, + "start": 24693, + "end": 24694, "loc": { "start": { "line": 606, @@ -245344,8 +245344,8 @@ "updateContext": null }, "value": " vec3 viewNormal;", - "start": 24705, - "end": 24726, + "start": 24694, + "end": 24715, "loc": { "start": { "line": 606, @@ -245369,8 +245369,8 @@ "postfix": false, "binop": null }, - "start": 24726, - "end": 24727, + "start": 24715, + "end": 24716, "loc": { "start": { "line": 606, @@ -245395,8 +245395,8 @@ "binop": null, "updateContext": null }, - "start": 24727, - "end": 24728, + "start": 24716, + "end": 24717, "loc": { "start": { "line": 606, @@ -245421,8 +245421,8 @@ "binop": null }, "value": "src", - "start": 24737, - "end": 24740, + "start": 24726, + "end": 24729, "loc": { "start": { "line": 607, @@ -245447,8 +245447,8 @@ "binop": null, "updateContext": null }, - "start": 24740, - "end": 24741, + "start": 24729, + "end": 24730, "loc": { "start": { "line": 607, @@ -245473,8 +245473,8 @@ "binop": null }, "value": "push", - "start": 24741, - "end": 24745, + "start": 24730, + "end": 24734, "loc": { "start": { "line": 607, @@ -245498,8 +245498,8 @@ "postfix": false, "binop": null }, - "start": 24745, - "end": 24746, + "start": 24734, + "end": 24735, "loc": { "start": { "line": 607, @@ -245525,8 +245525,8 @@ "updateContext": null }, "value": " vec3 worldNormal;", - "start": 24746, - "end": 24768, + "start": 24735, + "end": 24757, "loc": { "start": { "line": 607, @@ -245550,8 +245550,8 @@ "postfix": false, "binop": null }, - "start": 24768, - "end": 24769, + "start": 24757, + "end": 24758, "loc": { "start": { "line": 607, @@ -245576,8 +245576,8 @@ "binop": null, "updateContext": null }, - "start": 24769, - "end": 24770, + "start": 24758, + "end": 24759, "loc": { "start": { "line": 607, @@ -245602,8 +245602,8 @@ "binop": null }, "value": "src", - "start": 24779, - "end": 24782, + "start": 24768, + "end": 24771, "loc": { "start": { "line": 608, @@ -245628,8 +245628,8 @@ "binop": null, "updateContext": null }, - "start": 24782, - "end": 24783, + "start": 24771, + "end": 24772, "loc": { "start": { "line": 608, @@ -245654,8 +245654,8 @@ "binop": null }, "value": "push", - "start": 24783, - "end": 24787, + "start": 24772, + "end": 24776, "loc": { "start": { "line": 608, @@ -245679,8 +245679,8 @@ "postfix": false, "binop": null }, - "start": 24787, - "end": 24788, + "start": 24776, + "end": 24777, "loc": { "start": { "line": 608, @@ -245706,8 +245706,8 @@ "updateContext": null }, "value": " vec3 viewEyeDir;", - "start": 24788, - "end": 24809, + "start": 24777, + "end": 24798, "loc": { "start": { "line": 608, @@ -245731,8 +245731,8 @@ "postfix": false, "binop": null }, - "start": 24809, - "end": 24810, + "start": 24798, + "end": 24799, "loc": { "start": { "line": 608, @@ -245757,8 +245757,8 @@ "binop": null, "updateContext": null }, - "start": 24810, - "end": 24811, + "start": 24799, + "end": 24800, "loc": { "start": { "line": 608, @@ -245783,8 +245783,8 @@ "binop": null }, "value": "src", - "start": 24820, - "end": 24823, + "start": 24809, + "end": 24812, "loc": { "start": { "line": 609, @@ -245809,8 +245809,8 @@ "binop": null, "updateContext": null }, - "start": 24823, - "end": 24824, + "start": 24812, + "end": 24813, "loc": { "start": { "line": 609, @@ -245835,8 +245835,8 @@ "binop": null }, "value": "push", - "start": 24824, - "end": 24828, + "start": 24813, + "end": 24817, "loc": { "start": { "line": 609, @@ -245860,8 +245860,8 @@ "postfix": false, "binop": null }, - "start": 24828, - "end": 24829, + "start": 24817, + "end": 24818, "loc": { "start": { "line": 609, @@ -245887,8 +245887,8 @@ "updateContext": null }, "value": "};", - "start": 24829, - "end": 24833, + "start": 24818, + "end": 24822, "loc": { "start": { "line": 609, @@ -245912,8 +245912,8 @@ "postfix": false, "binop": null }, - "start": 24833, - "end": 24834, + "start": 24822, + "end": 24823, "loc": { "start": { "line": 609, @@ -245938,8 +245938,8 @@ "binop": null, "updateContext": null }, - "start": 24834, - "end": 24835, + "start": 24823, + "end": 24824, "loc": { "start": { "line": 609, @@ -245964,8 +245964,8 @@ "binop": null }, "value": "src", - "start": 24845, - "end": 24848, + "start": 24834, + "end": 24837, "loc": { "start": { "line": 611, @@ -245990,8 +245990,8 @@ "binop": null, "updateContext": null }, - "start": 24848, - "end": 24849, + "start": 24837, + "end": 24838, "loc": { "start": { "line": 611, @@ -246016,8 +246016,8 @@ "binop": null }, "value": "push", - "start": 24849, - "end": 24853, + "start": 24838, + "end": 24842, "loc": { "start": { "line": 611, @@ -246041,8 +246041,8 @@ "postfix": false, "binop": null }, - "start": 24853, - "end": 24854, + "start": 24842, + "end": 24843, "loc": { "start": { "line": 611, @@ -246068,8 +246068,8 @@ "updateContext": null }, "value": "struct Material {", - "start": 24854, - "end": 24873, + "start": 24843, + "end": 24862, "loc": { "start": { "line": 611, @@ -246093,8 +246093,8 @@ "postfix": false, "binop": null }, - "start": 24873, - "end": 24874, + "start": 24862, + "end": 24863, "loc": { "start": { "line": 611, @@ -246119,8 +246119,8 @@ "binop": null, "updateContext": null }, - "start": 24874, - "end": 24875, + "start": 24863, + "end": 24864, "loc": { "start": { "line": 611, @@ -246145,8 +246145,8 @@ "binop": null }, "value": "src", - "start": 24884, - "end": 24887, + "start": 24873, + "end": 24876, "loc": { "start": { "line": 612, @@ -246171,8 +246171,8 @@ "binop": null, "updateContext": null }, - "start": 24887, - "end": 24888, + "start": 24876, + "end": 24877, "loc": { "start": { "line": 612, @@ -246197,8 +246197,8 @@ "binop": null }, "value": "push", - "start": 24888, - "end": 24892, + "start": 24877, + "end": 24881, "loc": { "start": { "line": 612, @@ -246222,8 +246222,8 @@ "postfix": false, "binop": null }, - "start": 24892, - "end": 24893, + "start": 24881, + "end": 24882, "loc": { "start": { "line": 612, @@ -246249,8 +246249,8 @@ "updateContext": null }, "value": " vec3 diffuseColor;", - "start": 24893, - "end": 24919, + "start": 24882, + "end": 24908, "loc": { "start": { "line": 612, @@ -246274,8 +246274,8 @@ "postfix": false, "binop": null }, - "start": 24919, - "end": 24920, + "start": 24908, + "end": 24909, "loc": { "start": { "line": 612, @@ -246300,8 +246300,8 @@ "binop": null, "updateContext": null }, - "start": 24920, - "end": 24921, + "start": 24909, + "end": 24910, "loc": { "start": { "line": 612, @@ -246326,8 +246326,8 @@ "binop": null }, "value": "src", - "start": 24930, - "end": 24933, + "start": 24919, + "end": 24922, "loc": { "start": { "line": 613, @@ -246352,8 +246352,8 @@ "binop": null, "updateContext": null }, - "start": 24933, - "end": 24934, + "start": 24922, + "end": 24923, "loc": { "start": { "line": 613, @@ -246378,8 +246378,8 @@ "binop": null }, "value": "push", - "start": 24934, - "end": 24938, + "start": 24923, + "end": 24927, "loc": { "start": { "line": 613, @@ -246403,8 +246403,8 @@ "postfix": false, "binop": null }, - "start": 24938, - "end": 24939, + "start": 24927, + "end": 24928, "loc": { "start": { "line": 613, @@ -246430,8 +246430,8 @@ "updateContext": null }, "value": " float specularRoughness;", - "start": 24939, - "end": 24970, + "start": 24928, + "end": 24959, "loc": { "start": { "line": 613, @@ -246455,8 +246455,8 @@ "postfix": false, "binop": null }, - "start": 24970, - "end": 24971, + "start": 24959, + "end": 24960, "loc": { "start": { "line": 613, @@ -246481,8 +246481,8 @@ "binop": null, "updateContext": null }, - "start": 24971, - "end": 24972, + "start": 24960, + "end": 24961, "loc": { "start": { "line": 613, @@ -246507,8 +246507,8 @@ "binop": null }, "value": "src", - "start": 24981, - "end": 24984, + "start": 24970, + "end": 24973, "loc": { "start": { "line": 614, @@ -246533,8 +246533,8 @@ "binop": null, "updateContext": null }, - "start": 24984, - "end": 24985, + "start": 24973, + "end": 24974, "loc": { "start": { "line": 614, @@ -246559,8 +246559,8 @@ "binop": null }, "value": "push", - "start": 24985, - "end": 24989, + "start": 24974, + "end": 24978, "loc": { "start": { "line": 614, @@ -246584,8 +246584,8 @@ "postfix": false, "binop": null }, - "start": 24989, - "end": 24990, + "start": 24978, + "end": 24979, "loc": { "start": { "line": 614, @@ -246611,8 +246611,8 @@ "updateContext": null }, "value": " vec3 specularColor;", - "start": 24990, - "end": 25017, + "start": 24979, + "end": 25006, "loc": { "start": { "line": 614, @@ -246636,8 +246636,8 @@ "postfix": false, "binop": null }, - "start": 25017, - "end": 25018, + "start": 25006, + "end": 25007, "loc": { "start": { "line": 614, @@ -246662,8 +246662,8 @@ "binop": null, "updateContext": null }, - "start": 25018, - "end": 25019, + "start": 25007, + "end": 25008, "loc": { "start": { "line": 614, @@ -246688,8 +246688,8 @@ "binop": null }, "value": "src", - "start": 25028, - "end": 25031, + "start": 25017, + "end": 25020, "loc": { "start": { "line": 615, @@ -246714,8 +246714,8 @@ "binop": null, "updateContext": null }, - "start": 25031, - "end": 25032, + "start": 25020, + "end": 25021, "loc": { "start": { "line": 615, @@ -246740,8 +246740,8 @@ "binop": null }, "value": "push", - "start": 25032, - "end": 25036, + "start": 25021, + "end": 25025, "loc": { "start": { "line": 615, @@ -246765,8 +246765,8 @@ "postfix": false, "binop": null }, - "start": 25036, - "end": 25037, + "start": 25025, + "end": 25026, "loc": { "start": { "line": 615, @@ -246792,8 +246792,8 @@ "updateContext": null }, "value": " float shine;", - "start": 25037, - "end": 25056, + "start": 25026, + "end": 25045, "loc": { "start": { "line": 615, @@ -246817,8 +246817,8 @@ "postfix": false, "binop": null }, - "start": 25056, - "end": 25057, + "start": 25045, + "end": 25046, "loc": { "start": { "line": 615, @@ -246843,8 +246843,8 @@ "binop": null, "updateContext": null }, - "start": 25057, - "end": 25058, + "start": 25046, + "end": 25047, "loc": { "start": { "line": 615, @@ -246859,8 +246859,8 @@ { "type": "CommentLine", "value": " Only used for Phong", - "start": 25059, - "end": 25081, + "start": 25048, + "end": 25070, "loc": { "start": { "line": 615, @@ -246885,8 +246885,8 @@ "binop": null }, "value": "src", - "start": 25090, - "end": 25093, + "start": 25079, + "end": 25082, "loc": { "start": { "line": 616, @@ -246911,8 +246911,8 @@ "binop": null, "updateContext": null }, - "start": 25093, - "end": 25094, + "start": 25082, + "end": 25083, "loc": { "start": { "line": 616, @@ -246937,8 +246937,8 @@ "binop": null }, "value": "push", - "start": 25094, - "end": 25098, + "start": 25083, + "end": 25087, "loc": { "start": { "line": 616, @@ -246962,8 +246962,8 @@ "postfix": false, "binop": null }, - "start": 25098, - "end": 25099, + "start": 25087, + "end": 25088, "loc": { "start": { "line": 616, @@ -246989,8 +246989,8 @@ "updateContext": null }, "value": "};", - "start": 25099, - "end": 25103, + "start": 25088, + "end": 25092, "loc": { "start": { "line": 616, @@ -247014,8 +247014,8 @@ "postfix": false, "binop": null }, - "start": 25103, - "end": 25104, + "start": 25092, + "end": 25093, "loc": { "start": { "line": 616, @@ -247040,8 +247040,8 @@ "binop": null, "updateContext": null }, - "start": 25104, - "end": 25105, + "start": 25093, + "end": 25094, "loc": { "start": { "line": 616, @@ -247056,8 +247056,8 @@ { "type": "CommentLine", "value": " IRRADIANCE EVALUATION", - "start": 25115, - "end": 25139, + "start": 25104, + "end": 25128, "loc": { "start": { "line": 618, @@ -247082,8 +247082,8 @@ "binop": null }, "value": "src", - "start": 25149, - "end": 25152, + "start": 25138, + "end": 25141, "loc": { "start": { "line": 620, @@ -247108,8 +247108,8 @@ "binop": null, "updateContext": null }, - "start": 25152, - "end": 25153, + "start": 25141, + "end": 25142, "loc": { "start": { "line": 620, @@ -247134,8 +247134,8 @@ "binop": null }, "value": "push", - "start": 25153, - "end": 25157, + "start": 25142, + "end": 25146, "loc": { "start": { "line": 620, @@ -247159,8 +247159,8 @@ "postfix": false, "binop": null }, - "start": 25157, - "end": 25158, + "start": 25146, + "end": 25147, "loc": { "start": { "line": 620, @@ -247186,8 +247186,8 @@ "updateContext": null }, "value": "float GGXRoughnessToBlinnExponent(const in float ggxRoughness) {", - "start": 25158, - "end": 25224, + "start": 25147, + "end": 25213, "loc": { "start": { "line": 620, @@ -247211,8 +247211,8 @@ "postfix": false, "binop": null }, - "start": 25224, - "end": 25225, + "start": 25213, + "end": 25214, "loc": { "start": { "line": 620, @@ -247237,8 +247237,8 @@ "binop": null, "updateContext": null }, - "start": 25225, - "end": 25226, + "start": 25214, + "end": 25215, "loc": { "start": { "line": 620, @@ -247263,8 +247263,8 @@ "binop": null }, "value": "src", - "start": 25235, - "end": 25238, + "start": 25224, + "end": 25227, "loc": { "start": { "line": 621, @@ -247289,8 +247289,8 @@ "binop": null, "updateContext": null }, - "start": 25238, - "end": 25239, + "start": 25227, + "end": 25228, "loc": { "start": { "line": 621, @@ -247315,8 +247315,8 @@ "binop": null }, "value": "push", - "start": 25239, - "end": 25243, + "start": 25228, + "end": 25232, "loc": { "start": { "line": 621, @@ -247340,8 +247340,8 @@ "postfix": false, "binop": null }, - "start": 25243, - "end": 25244, + "start": 25232, + "end": 25233, "loc": { "start": { "line": 621, @@ -247367,8 +247367,8 @@ "updateContext": null }, "value": " float r = ggxRoughness + 0.0001;", - "start": 25244, - "end": 25281, + "start": 25233, + "end": 25270, "loc": { "start": { "line": 621, @@ -247392,8 +247392,8 @@ "postfix": false, "binop": null }, - "start": 25281, - "end": 25282, + "start": 25270, + "end": 25271, "loc": { "start": { "line": 621, @@ -247418,8 +247418,8 @@ "binop": null, "updateContext": null }, - "start": 25282, - "end": 25283, + "start": 25271, + "end": 25272, "loc": { "start": { "line": 621, @@ -247444,8 +247444,8 @@ "binop": null }, "value": "src", - "start": 25292, - "end": 25295, + "start": 25281, + "end": 25284, "loc": { "start": { "line": 622, @@ -247470,8 +247470,8 @@ "binop": null, "updateContext": null }, - "start": 25295, - "end": 25296, + "start": 25284, + "end": 25285, "loc": { "start": { "line": 622, @@ -247496,8 +247496,8 @@ "binop": null }, "value": "push", - "start": 25296, - "end": 25300, + "start": 25285, + "end": 25289, "loc": { "start": { "line": 622, @@ -247521,8 +247521,8 @@ "postfix": false, "binop": null }, - "start": 25300, - "end": 25301, + "start": 25289, + "end": 25290, "loc": { "start": { "line": 622, @@ -247548,8 +247548,8 @@ "updateContext": null }, "value": " return (2.0 / (r * r) - 2.0);", - "start": 25301, - "end": 25335, + "start": 25290, + "end": 25324, "loc": { "start": { "line": 622, @@ -247573,8 +247573,8 @@ "postfix": false, "binop": null }, - "start": 25335, - "end": 25336, + "start": 25324, + "end": 25325, "loc": { "start": { "line": 622, @@ -247599,8 +247599,8 @@ "binop": null, "updateContext": null }, - "start": 25336, - "end": 25337, + "start": 25325, + "end": 25326, "loc": { "start": { "line": 622, @@ -247625,8 +247625,8 @@ "binop": null }, "value": "src", - "start": 25346, - "end": 25349, + "start": 25335, + "end": 25338, "loc": { "start": { "line": 623, @@ -247651,8 +247651,8 @@ "binop": null, "updateContext": null }, - "start": 25349, - "end": 25350, + "start": 25338, + "end": 25339, "loc": { "start": { "line": 623, @@ -247677,8 +247677,8 @@ "binop": null }, "value": "push", - "start": 25350, - "end": 25354, + "start": 25339, + "end": 25343, "loc": { "start": { "line": 623, @@ -247702,8 +247702,8 @@ "postfix": false, "binop": null }, - "start": 25354, - "end": 25355, + "start": 25343, + "end": 25344, "loc": { "start": { "line": 623, @@ -247729,8 +247729,8 @@ "updateContext": null }, "value": "}", - "start": 25355, - "end": 25358, + "start": 25344, + "end": 25347, "loc": { "start": { "line": 623, @@ -247754,8 +247754,8 @@ "postfix": false, "binop": null }, - "start": 25358, - "end": 25359, + "start": 25347, + "end": 25348, "loc": { "start": { "line": 623, @@ -247780,8 +247780,8 @@ "binop": null, "updateContext": null }, - "start": 25359, - "end": 25360, + "start": 25348, + "end": 25349, "loc": { "start": { "line": 623, @@ -247806,8 +247806,8 @@ "binop": null }, "value": "src", - "start": 25370, - "end": 25373, + "start": 25359, + "end": 25362, "loc": { "start": { "line": 625, @@ -247832,8 +247832,8 @@ "binop": null, "updateContext": null }, - "start": 25373, - "end": 25374, + "start": 25362, + "end": 25363, "loc": { "start": { "line": 625, @@ -247858,8 +247858,8 @@ "binop": null }, "value": "push", - "start": 25374, - "end": 25378, + "start": 25363, + "end": 25367, "loc": { "start": { "line": 625, @@ -247883,8 +247883,8 @@ "postfix": false, "binop": null }, - "start": 25378, - "end": 25379, + "start": 25367, + "end": 25368, "loc": { "start": { "line": 625, @@ -247910,8 +247910,8 @@ "updateContext": null }, "value": "float getSpecularMIPLevel(const in float blinnShininessExponent, const in int maxMIPLevel) {", - "start": 25379, - "end": 25473, + "start": 25368, + "end": 25462, "loc": { "start": { "line": 625, @@ -247935,8 +247935,8 @@ "postfix": false, "binop": null }, - "start": 25473, - "end": 25474, + "start": 25462, + "end": 25463, "loc": { "start": { "line": 625, @@ -247961,8 +247961,8 @@ "binop": null, "updateContext": null }, - "start": 25474, - "end": 25475, + "start": 25463, + "end": 25464, "loc": { "start": { "line": 625, @@ -247987,8 +247987,8 @@ "binop": null }, "value": "src", - "start": 25484, - "end": 25487, + "start": 25473, + "end": 25476, "loc": { "start": { "line": 626, @@ -248013,8 +248013,8 @@ "binop": null, "updateContext": null }, - "start": 25487, - "end": 25488, + "start": 25476, + "end": 25477, "loc": { "start": { "line": 626, @@ -248039,8 +248039,8 @@ "binop": null }, "value": "push", - "start": 25488, - "end": 25492, + "start": 25477, + "end": 25481, "loc": { "start": { "line": 626, @@ -248064,8 +248064,8 @@ "postfix": false, "binop": null }, - "start": 25492, - "end": 25493, + "start": 25481, + "end": 25482, "loc": { "start": { "line": 626, @@ -248091,8 +248091,8 @@ "updateContext": null }, "value": " float maxMIPLevelScalar = float( maxMIPLevel );", - "start": 25493, - "end": 25545, + "start": 25482, + "end": 25534, "loc": { "start": { "line": 626, @@ -248116,8 +248116,8 @@ "postfix": false, "binop": null }, - "start": 25545, - "end": 25546, + "start": 25534, + "end": 25535, "loc": { "start": { "line": 626, @@ -248142,8 +248142,8 @@ "binop": null, "updateContext": null }, - "start": 25546, - "end": 25547, + "start": 25535, + "end": 25536, "loc": { "start": { "line": 626, @@ -248168,8 +248168,8 @@ "binop": null }, "value": "src", - "start": 25556, - "end": 25559, + "start": 25545, + "end": 25548, "loc": { "start": { "line": 627, @@ -248194,8 +248194,8 @@ "binop": null, "updateContext": null }, - "start": 25559, - "end": 25560, + "start": 25548, + "end": 25549, "loc": { "start": { "line": 627, @@ -248220,8 +248220,8 @@ "binop": null }, "value": "push", - "start": 25560, - "end": 25564, + "start": 25549, + "end": 25553, "loc": { "start": { "line": 627, @@ -248245,8 +248245,8 @@ "postfix": false, "binop": null }, - "start": 25564, - "end": 25565, + "start": 25553, + "end": 25554, "loc": { "start": { "line": 627, @@ -248272,8 +248272,8 @@ "updateContext": null }, "value": " float desiredMIPLevel = maxMIPLevelScalar - 0.79248 - 0.5 * log2( ( blinnShininessExponent * blinnShininessExponent ) + 1.0 );", - "start": 25565, - "end": 25696, + "start": 25554, + "end": 25685, "loc": { "start": { "line": 627, @@ -248297,8 +248297,8 @@ "postfix": false, "binop": null }, - "start": 25696, - "end": 25697, + "start": 25685, + "end": 25686, "loc": { "start": { "line": 627, @@ -248323,8 +248323,8 @@ "binop": null, "updateContext": null }, - "start": 25697, - "end": 25698, + "start": 25686, + "end": 25687, "loc": { "start": { "line": 627, @@ -248349,8 +248349,8 @@ "binop": null }, "value": "src", - "start": 25707, - "end": 25710, + "start": 25696, + "end": 25699, "loc": { "start": { "line": 628, @@ -248375,8 +248375,8 @@ "binop": null, "updateContext": null }, - "start": 25710, - "end": 25711, + "start": 25699, + "end": 25700, "loc": { "start": { "line": 628, @@ -248401,8 +248401,8 @@ "binop": null }, "value": "push", - "start": 25711, - "end": 25715, + "start": 25700, + "end": 25704, "loc": { "start": { "line": 628, @@ -248426,8 +248426,8 @@ "postfix": false, "binop": null }, - "start": 25715, - "end": 25716, + "start": 25704, + "end": 25705, "loc": { "start": { "line": 628, @@ -248453,8 +248453,8 @@ "updateContext": null }, "value": " return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );", - "start": 25716, - "end": 25777, + "start": 25705, + "end": 25766, "loc": { "start": { "line": 628, @@ -248478,8 +248478,8 @@ "postfix": false, "binop": null }, - "start": 25777, - "end": 25778, + "start": 25766, + "end": 25767, "loc": { "start": { "line": 628, @@ -248504,8 +248504,8 @@ "binop": null, "updateContext": null }, - "start": 25778, - "end": 25779, + "start": 25767, + "end": 25768, "loc": { "start": { "line": 628, @@ -248530,8 +248530,8 @@ "binop": null }, "value": "src", - "start": 25788, - "end": 25791, + "start": 25777, + "end": 25780, "loc": { "start": { "line": 629, @@ -248556,8 +248556,8 @@ "binop": null, "updateContext": null }, - "start": 25791, - "end": 25792, + "start": 25780, + "end": 25781, "loc": { "start": { "line": 629, @@ -248582,8 +248582,8 @@ "binop": null }, "value": "push", - "start": 25792, - "end": 25796, + "start": 25781, + "end": 25785, "loc": { "start": { "line": 629, @@ -248607,8 +248607,8 @@ "postfix": false, "binop": null }, - "start": 25796, - "end": 25797, + "start": 25785, + "end": 25786, "loc": { "start": { "line": 629, @@ -248634,8 +248634,8 @@ "updateContext": null }, "value": "}", - "start": 25797, - "end": 25800, + "start": 25786, + "end": 25789, "loc": { "start": { "line": 629, @@ -248659,8 +248659,8 @@ "postfix": false, "binop": null }, - "start": 25800, - "end": 25801, + "start": 25789, + "end": 25790, "loc": { "start": { "line": 629, @@ -248685,8 +248685,8 @@ "binop": null, "updateContext": null }, - "start": 25801, - "end": 25802, + "start": 25790, + "end": 25791, "loc": { "start": { "line": 629, @@ -248713,8 +248713,8 @@ "updateContext": null }, "value": "if", - "start": 25812, - "end": 25814, + "start": 25801, + "end": 25803, "loc": { "start": { "line": 631, @@ -248738,8 +248738,8 @@ "postfix": false, "binop": null }, - "start": 25815, - "end": 25816, + "start": 25804, + "end": 25805, "loc": { "start": { "line": 631, @@ -248764,8 +248764,8 @@ "binop": null }, "value": "lightsState", - "start": 25816, - "end": 25827, + "start": 25805, + "end": 25816, "loc": { "start": { "line": 631, @@ -248790,8 +248790,8 @@ "binop": null, "updateContext": null }, - "start": 25827, - "end": 25828, + "start": 25816, + "end": 25817, "loc": { "start": { "line": 631, @@ -248816,8 +248816,8 @@ "binop": null }, "value": "reflectionMaps", - "start": 25828, - "end": 25842, + "start": 25817, + "end": 25831, "loc": { "start": { "line": 631, @@ -248842,8 +248842,8 @@ "binop": null, "updateContext": null }, - "start": 25842, - "end": 25843, + "start": 25831, + "end": 25832, "loc": { "start": { "line": 631, @@ -248868,8 +248868,8 @@ "binop": null }, "value": "length", - "start": 25843, - "end": 25849, + "start": 25832, + "end": 25838, "loc": { "start": { "line": 631, @@ -248895,8 +248895,8 @@ "updateContext": null }, "value": ">", - "start": 25850, - "end": 25851, + "start": 25839, + "end": 25840, "loc": { "start": { "line": 631, @@ -248922,8 +248922,8 @@ "updateContext": null }, "value": 0, - "start": 25852, - "end": 25853, + "start": 25841, + "end": 25842, "loc": { "start": { "line": 631, @@ -248947,8 +248947,8 @@ "postfix": false, "binop": null }, - "start": 25853, - "end": 25854, + "start": 25842, + "end": 25843, "loc": { "start": { "line": 631, @@ -248972,8 +248972,8 @@ "postfix": false, "binop": null }, - "start": 25855, - "end": 25856, + "start": 25844, + "end": 25845, "loc": { "start": { "line": 631, @@ -248998,8 +248998,8 @@ "binop": null }, "value": "src", - "start": 25869, - "end": 25872, + "start": 25858, + "end": 25861, "loc": { "start": { "line": 632, @@ -249024,8 +249024,8 @@ "binop": null, "updateContext": null }, - "start": 25872, - "end": 25873, + "start": 25861, + "end": 25862, "loc": { "start": { "line": 632, @@ -249050,8 +249050,8 @@ "binop": null }, "value": "push", - "start": 25873, - "end": 25877, + "start": 25862, + "end": 25866, "loc": { "start": { "line": 632, @@ -249075,8 +249075,8 @@ "postfix": false, "binop": null }, - "start": 25877, - "end": 25878, + "start": 25866, + "end": 25867, "loc": { "start": { "line": 632, @@ -249102,8 +249102,8 @@ "updateContext": null }, "value": "vec3 getLightProbeIndirectRadiance(const in vec3 reflectVec, const in float blinnShininessExponent, const in int maxMIPLevel) {", - "start": 25878, - "end": 26007, + "start": 25867, + "end": 25996, "loc": { "start": { "line": 632, @@ -249127,8 +249127,8 @@ "postfix": false, "binop": null }, - "start": 26007, - "end": 26008, + "start": 25996, + "end": 25997, "loc": { "start": { "line": 632, @@ -249153,8 +249153,8 @@ "binop": null, "updateContext": null }, - "start": 26008, - "end": 26009, + "start": 25997, + "end": 25998, "loc": { "start": { "line": 632, @@ -249179,8 +249179,8 @@ "binop": null }, "value": "src", - "start": 26022, - "end": 26025, + "start": 26011, + "end": 26014, "loc": { "start": { "line": 633, @@ -249205,8 +249205,8 @@ "binop": null, "updateContext": null }, - "start": 26025, - "end": 26026, + "start": 26014, + "end": 26015, "loc": { "start": { "line": 633, @@ -249231,8 +249231,8 @@ "binop": null }, "value": "push", - "start": 26026, - "end": 26030, + "start": 26015, + "end": 26019, "loc": { "start": { "line": 633, @@ -249256,8 +249256,8 @@ "postfix": false, "binop": null }, - "start": 26030, - "end": 26031, + "start": 26019, + "end": 26020, "loc": { "start": { "line": 633, @@ -249283,8 +249283,8 @@ "updateContext": null }, "value": " float mipLevel = 0.5 * getSpecularMIPLevel(blinnShininessExponent, maxMIPLevel);", - "start": 26031, - "end": 26116, + "start": 26020, + "end": 26105, "loc": { "start": { "line": 633, @@ -249308,8 +249308,8 @@ "postfix": false, "binop": null }, - "start": 26116, - "end": 26117, + "start": 26105, + "end": 26106, "loc": { "start": { "line": 633, @@ -249334,8 +249334,8 @@ "binop": null, "updateContext": null }, - "start": 26117, - "end": 26118, + "start": 26106, + "end": 26107, "loc": { "start": { "line": 633, @@ -249350,8 +249350,8 @@ { "type": "CommentLine", "value": "TODO: a random factor - fix this", - "start": 26119, - "end": 26153, + "start": 26108, + "end": 26142, "loc": { "start": { "line": 633, @@ -249376,8 +249376,8 @@ "binop": null }, "value": "src", - "start": 26166, - "end": 26169, + "start": 26155, + "end": 26158, "loc": { "start": { "line": 634, @@ -249402,8 +249402,8 @@ "binop": null, "updateContext": null }, - "start": 26169, - "end": 26170, + "start": 26158, + "end": 26159, "loc": { "start": { "line": 634, @@ -249428,8 +249428,8 @@ "binop": null }, "value": "push", - "start": 26170, - "end": 26174, + "start": 26159, + "end": 26163, "loc": { "start": { "line": 634, @@ -249453,8 +249453,8 @@ "postfix": false, "binop": null }, - "start": 26174, - "end": 26175, + "start": 26163, + "end": 26164, "loc": { "start": { "line": 634, @@ -249480,8 +249480,8 @@ "updateContext": null }, "value": " vec3 envMapColor = ", - "start": 26175, - "end": 26199, + "start": 26164, + "end": 26188, "loc": { "start": { "line": 634, @@ -249507,8 +249507,8 @@ "updateContext": null }, "value": "+", - "start": 26200, - "end": 26201, + "start": 26189, + "end": 26190, "loc": { "start": { "line": 634, @@ -249533,8 +249533,8 @@ "binop": null }, "value": "TEXTURE_DECODE_FUNCS", - "start": 26202, - "end": 26222, + "start": 26191, + "end": 26211, "loc": { "start": { "line": 634, @@ -249559,8 +249559,8 @@ "binop": null, "updateContext": null }, - "start": 26222, - "end": 26223, + "start": 26211, + "end": 26212, "loc": { "start": { "line": 634, @@ -249585,8 +249585,8 @@ "binop": null }, "value": "lightsState", - "start": 26223, - "end": 26234, + "start": 26212, + "end": 26223, "loc": { "start": { "line": 634, @@ -249611,8 +249611,8 @@ "binop": null, "updateContext": null }, - "start": 26234, - "end": 26235, + "start": 26223, + "end": 26224, "loc": { "start": { "line": 634, @@ -249637,8 +249637,8 @@ "binop": null }, "value": "reflectionMaps", - "start": 26235, - "end": 26249, + "start": 26224, + "end": 26238, "loc": { "start": { "line": 634, @@ -249663,8 +249663,8 @@ "binop": null, "updateContext": null }, - "start": 26249, - "end": 26250, + "start": 26238, + "end": 26239, "loc": { "start": { "line": 634, @@ -249690,8 +249690,8 @@ "updateContext": null }, "value": 0, - "start": 26250, - "end": 26251, + "start": 26239, + "end": 26240, "loc": { "start": { "line": 634, @@ -249716,8 +249716,8 @@ "binop": null, "updateContext": null }, - "start": 26251, - "end": 26252, + "start": 26240, + "end": 26241, "loc": { "start": { "line": 634, @@ -249742,8 +249742,8 @@ "binop": null, "updateContext": null }, - "start": 26252, - "end": 26253, + "start": 26241, + "end": 26242, "loc": { "start": { "line": 634, @@ -249768,8 +249768,8 @@ "binop": null }, "value": "encoding", - "start": 26253, - "end": 26261, + "start": 26242, + "end": 26250, "loc": { "start": { "line": 634, @@ -249794,8 +249794,8 @@ "binop": null, "updateContext": null }, - "start": 26261, - "end": 26262, + "start": 26250, + "end": 26251, "loc": { "start": { "line": 634, @@ -249821,8 +249821,8 @@ "updateContext": null }, "value": "+", - "start": 26263, - "end": 26264, + "start": 26252, + "end": 26253, "loc": { "start": { "line": 634, @@ -249848,8 +249848,8 @@ "updateContext": null }, "value": "(textureCube(reflectionMap, reflectVec, mipLevel)).rgb;", - "start": 26265, - "end": 26322, + "start": 26254, + "end": 26311, "loc": { "start": { "line": 634, @@ -249873,8 +249873,8 @@ "postfix": false, "binop": null }, - "start": 26322, - "end": 26323, + "start": 26311, + "end": 26312, "loc": { "start": { "line": 634, @@ -249899,8 +249899,8 @@ "binop": null, "updateContext": null }, - "start": 26323, - "end": 26324, + "start": 26312, + "end": 26313, "loc": { "start": { "line": 634, @@ -249925,8 +249925,8 @@ "binop": null }, "value": "src", - "start": 26337, - "end": 26340, + "start": 26326, + "end": 26329, "loc": { "start": { "line": 635, @@ -249951,8 +249951,8 @@ "binop": null, "updateContext": null }, - "start": 26340, - "end": 26341, + "start": 26329, + "end": 26330, "loc": { "start": { "line": 635, @@ -249977,8 +249977,8 @@ "binop": null }, "value": "push", - "start": 26341, - "end": 26345, + "start": 26330, + "end": 26334, "loc": { "start": { "line": 635, @@ -250002,8 +250002,8 @@ "postfix": false, "binop": null }, - "start": 26345, - "end": 26346, + "start": 26334, + "end": 26335, "loc": { "start": { "line": 635, @@ -250029,8 +250029,8 @@ "updateContext": null }, "value": " return envMapColor;", - "start": 26346, - "end": 26369, + "start": 26335, + "end": 26358, "loc": { "start": { "line": 635, @@ -250054,8 +250054,8 @@ "postfix": false, "binop": null }, - "start": 26369, - "end": 26370, + "start": 26358, + "end": 26359, "loc": { "start": { "line": 635, @@ -250080,8 +250080,8 @@ "binop": null, "updateContext": null }, - "start": 26370, - "end": 26371, + "start": 26359, + "end": 26360, "loc": { "start": { "line": 635, @@ -250106,8 +250106,8 @@ "binop": null }, "value": "src", - "start": 26384, - "end": 26387, + "start": 26373, + "end": 26376, "loc": { "start": { "line": 636, @@ -250132,8 +250132,8 @@ "binop": null, "updateContext": null }, - "start": 26387, - "end": 26388, + "start": 26376, + "end": 26377, "loc": { "start": { "line": 636, @@ -250158,8 +250158,8 @@ "binop": null }, "value": "push", - "start": 26388, - "end": 26392, + "start": 26377, + "end": 26381, "loc": { "start": { "line": 636, @@ -250183,8 +250183,8 @@ "postfix": false, "binop": null }, - "start": 26392, - "end": 26393, + "start": 26381, + "end": 26382, "loc": { "start": { "line": 636, @@ -250210,8 +250210,8 @@ "updateContext": null }, "value": "}", - "start": 26393, - "end": 26396, + "start": 26382, + "end": 26385, "loc": { "start": { "line": 636, @@ -250235,8 +250235,8 @@ "postfix": false, "binop": null }, - "start": 26396, - "end": 26397, + "start": 26385, + "end": 26386, "loc": { "start": { "line": 636, @@ -250261,8 +250261,8 @@ "binop": null, "updateContext": null }, - "start": 26397, - "end": 26398, + "start": 26386, + "end": 26387, "loc": { "start": { "line": 636, @@ -250286,8 +250286,8 @@ "postfix": false, "binop": null }, - "start": 26407, - "end": 26408, + "start": 26396, + "end": 26397, "loc": { "start": { "line": 637, @@ -250302,8 +250302,8 @@ { "type": "CommentLine", "value": " SPECULAR BRDF EVALUATION", - "start": 26418, - "end": 26445, + "start": 26407, + "end": 26434, "loc": { "start": { "line": 639, @@ -250328,8 +250328,8 @@ "binop": null }, "value": "src", - "start": 26455, - "end": 26458, + "start": 26444, + "end": 26447, "loc": { "start": { "line": 641, @@ -250354,8 +250354,8 @@ "binop": null, "updateContext": null }, - "start": 26458, - "end": 26459, + "start": 26447, + "end": 26448, "loc": { "start": { "line": 641, @@ -250380,8 +250380,8 @@ "binop": null }, "value": "push", - "start": 26459, - "end": 26463, + "start": 26448, + "end": 26452, "loc": { "start": { "line": 641, @@ -250405,8 +250405,8 @@ "postfix": false, "binop": null }, - "start": 26463, - "end": 26464, + "start": 26452, + "end": 26453, "loc": { "start": { "line": 641, @@ -250432,8 +250432,8 @@ "updateContext": null }, "value": "vec3 F_Schlick(const in vec3 specularColor, const in float dotLH) {", - "start": 26464, - "end": 26533, + "start": 26453, + "end": 26522, "loc": { "start": { "line": 641, @@ -250457,8 +250457,8 @@ "postfix": false, "binop": null }, - "start": 26533, - "end": 26534, + "start": 26522, + "end": 26523, "loc": { "start": { "line": 641, @@ -250483,8 +250483,8 @@ "binop": null, "updateContext": null }, - "start": 26534, - "end": 26535, + "start": 26523, + "end": 26524, "loc": { "start": { "line": 641, @@ -250509,8 +250509,8 @@ "binop": null }, "value": "src", - "start": 26544, - "end": 26547, + "start": 26533, + "end": 26536, "loc": { "start": { "line": 642, @@ -250535,8 +250535,8 @@ "binop": null, "updateContext": null }, - "start": 26547, - "end": 26548, + "start": 26536, + "end": 26537, "loc": { "start": { "line": 642, @@ -250561,8 +250561,8 @@ "binop": null }, "value": "push", - "start": 26548, - "end": 26552, + "start": 26537, + "end": 26541, "loc": { "start": { "line": 642, @@ -250586,8 +250586,8 @@ "postfix": false, "binop": null }, - "start": 26552, - "end": 26553, + "start": 26541, + "end": 26542, "loc": { "start": { "line": 642, @@ -250613,8 +250613,8 @@ "updateContext": null }, "value": " float fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );", - "start": 26553, - "end": 26621, + "start": 26542, + "end": 26610, "loc": { "start": { "line": 642, @@ -250638,8 +250638,8 @@ "postfix": false, "binop": null }, - "start": 26621, - "end": 26622, + "start": 26610, + "end": 26611, "loc": { "start": { "line": 642, @@ -250664,8 +250664,8 @@ "binop": null, "updateContext": null }, - "start": 26622, - "end": 26623, + "start": 26611, + "end": 26612, "loc": { "start": { "line": 642, @@ -250690,8 +250690,8 @@ "binop": null }, "value": "src", - "start": 26632, - "end": 26635, + "start": 26621, + "end": 26624, "loc": { "start": { "line": 643, @@ -250716,8 +250716,8 @@ "binop": null, "updateContext": null }, - "start": 26635, - "end": 26636, + "start": 26624, + "end": 26625, "loc": { "start": { "line": 643, @@ -250742,8 +250742,8 @@ "binop": null }, "value": "push", - "start": 26636, - "end": 26640, + "start": 26625, + "end": 26629, "loc": { "start": { "line": 643, @@ -250767,8 +250767,8 @@ "postfix": false, "binop": null }, - "start": 26640, - "end": 26641, + "start": 26629, + "end": 26630, "loc": { "start": { "line": 643, @@ -250794,8 +250794,8 @@ "updateContext": null }, "value": " return ( 1.0 - specularColor ) * fresnel + specularColor;", - "start": 26641, - "end": 26703, + "start": 26630, + "end": 26692, "loc": { "start": { "line": 643, @@ -250819,8 +250819,8 @@ "postfix": false, "binop": null }, - "start": 26703, - "end": 26704, + "start": 26692, + "end": 26693, "loc": { "start": { "line": 643, @@ -250845,8 +250845,8 @@ "binop": null, "updateContext": null }, - "start": 26704, - "end": 26705, + "start": 26693, + "end": 26694, "loc": { "start": { "line": 643, @@ -250871,8 +250871,8 @@ "binop": null }, "value": "src", - "start": 26714, - "end": 26717, + "start": 26703, + "end": 26706, "loc": { "start": { "line": 644, @@ -250897,8 +250897,8 @@ "binop": null, "updateContext": null }, - "start": 26717, - "end": 26718, + "start": 26706, + "end": 26707, "loc": { "start": { "line": 644, @@ -250923,8 +250923,8 @@ "binop": null }, "value": "push", - "start": 26718, - "end": 26722, + "start": 26707, + "end": 26711, "loc": { "start": { "line": 644, @@ -250948,8 +250948,8 @@ "postfix": false, "binop": null }, - "start": 26722, - "end": 26723, + "start": 26711, + "end": 26712, "loc": { "start": { "line": 644, @@ -250975,8 +250975,8 @@ "updateContext": null }, "value": "}", - "start": 26723, - "end": 26726, + "start": 26712, + "end": 26715, "loc": { "start": { "line": 644, @@ -251000,8 +251000,8 @@ "postfix": false, "binop": null }, - "start": 26726, - "end": 26727, + "start": 26715, + "end": 26716, "loc": { "start": { "line": 644, @@ -251026,8 +251026,8 @@ "binop": null, "updateContext": null }, - "start": 26727, - "end": 26728, + "start": 26716, + "end": 26717, "loc": { "start": { "line": 644, @@ -251052,8 +251052,8 @@ "binop": null }, "value": "src", - "start": 26738, - "end": 26741, + "start": 26727, + "end": 26730, "loc": { "start": { "line": 646, @@ -251078,8 +251078,8 @@ "binop": null, "updateContext": null }, - "start": 26741, - "end": 26742, + "start": 26730, + "end": 26731, "loc": { "start": { "line": 646, @@ -251104,8 +251104,8 @@ "binop": null }, "value": "push", - "start": 26742, - "end": 26746, + "start": 26731, + "end": 26735, "loc": { "start": { "line": 646, @@ -251129,8 +251129,8 @@ "postfix": false, "binop": null }, - "start": 26746, - "end": 26747, + "start": 26735, + "end": 26736, "loc": { "start": { "line": 646, @@ -251156,8 +251156,8 @@ "updateContext": null }, "value": "float G_GGX_Smith(const in float alpha, const in float dotNL, const in float dotNV) {", - "start": 26747, - "end": 26834, + "start": 26736, + "end": 26823, "loc": { "start": { "line": 646, @@ -251181,8 +251181,8 @@ "postfix": false, "binop": null }, - "start": 26834, - "end": 26835, + "start": 26823, + "end": 26824, "loc": { "start": { "line": 646, @@ -251207,8 +251207,8 @@ "binop": null, "updateContext": null }, - "start": 26835, - "end": 26836, + "start": 26824, + "end": 26825, "loc": { "start": { "line": 646, @@ -251233,8 +251233,8 @@ "binop": null }, "value": "src", - "start": 26845, - "end": 26848, + "start": 26834, + "end": 26837, "loc": { "start": { "line": 647, @@ -251259,8 +251259,8 @@ "binop": null, "updateContext": null }, - "start": 26848, - "end": 26849, + "start": 26837, + "end": 26838, "loc": { "start": { "line": 647, @@ -251285,8 +251285,8 @@ "binop": null }, "value": "push", - "start": 26849, - "end": 26853, + "start": 26838, + "end": 26842, "loc": { "start": { "line": 647, @@ -251310,8 +251310,8 @@ "postfix": false, "binop": null }, - "start": 26853, - "end": 26854, + "start": 26842, + "end": 26843, "loc": { "start": { "line": 647, @@ -251337,8 +251337,8 @@ "updateContext": null }, "value": " float a2 = ( alpha * alpha );", - "start": 26854, - "end": 26888, + "start": 26843, + "end": 26877, "loc": { "start": { "line": 647, @@ -251362,8 +251362,8 @@ "postfix": false, "binop": null }, - "start": 26888, - "end": 26889, + "start": 26877, + "end": 26878, "loc": { "start": { "line": 647, @@ -251388,8 +251388,8 @@ "binop": null, "updateContext": null }, - "start": 26889, - "end": 26890, + "start": 26878, + "end": 26879, "loc": { "start": { "line": 647, @@ -251414,8 +251414,8 @@ "binop": null }, "value": "src", - "start": 26899, - "end": 26902, + "start": 26888, + "end": 26891, "loc": { "start": { "line": 648, @@ -251440,8 +251440,8 @@ "binop": null, "updateContext": null }, - "start": 26902, - "end": 26903, + "start": 26891, + "end": 26892, "loc": { "start": { "line": 648, @@ -251466,8 +251466,8 @@ "binop": null }, "value": "push", - "start": 26903, - "end": 26907, + "start": 26892, + "end": 26896, "loc": { "start": { "line": 648, @@ -251491,8 +251491,8 @@ "postfix": false, "binop": null }, - "start": 26907, - "end": 26908, + "start": 26896, + "end": 26897, "loc": { "start": { "line": 648, @@ -251518,8 +251518,8 @@ "updateContext": null }, "value": " float gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );", - "start": 26908, - "end": 26978, + "start": 26897, + "end": 26967, "loc": { "start": { "line": 648, @@ -251543,8 +251543,8 @@ "postfix": false, "binop": null }, - "start": 26978, - "end": 26979, + "start": 26967, + "end": 26968, "loc": { "start": { "line": 648, @@ -251569,8 +251569,8 @@ "binop": null, "updateContext": null }, - "start": 26979, - "end": 26980, + "start": 26968, + "end": 26969, "loc": { "start": { "line": 648, @@ -251595,8 +251595,8 @@ "binop": null }, "value": "src", - "start": 26989, - "end": 26992, + "start": 26978, + "end": 26981, "loc": { "start": { "line": 649, @@ -251621,8 +251621,8 @@ "binop": null, "updateContext": null }, - "start": 26992, - "end": 26993, + "start": 26981, + "end": 26982, "loc": { "start": { "line": 649, @@ -251647,8 +251647,8 @@ "binop": null }, "value": "push", - "start": 26993, - "end": 26997, + "start": 26982, + "end": 26986, "loc": { "start": { "line": 649, @@ -251672,8 +251672,8 @@ "postfix": false, "binop": null }, - "start": 26997, - "end": 26998, + "start": 26986, + "end": 26987, "loc": { "start": { "line": 649, @@ -251699,8 +251699,8 @@ "updateContext": null }, "value": " float gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );", - "start": 26998, - "end": 27068, + "start": 26987, + "end": 27057, "loc": { "start": { "line": 649, @@ -251724,8 +251724,8 @@ "postfix": false, "binop": null }, - "start": 27068, - "end": 27069, + "start": 27057, + "end": 27058, "loc": { "start": { "line": 649, @@ -251750,8 +251750,8 @@ "binop": null, "updateContext": null }, - "start": 27069, - "end": 27070, + "start": 27058, + "end": 27059, "loc": { "start": { "line": 649, @@ -251776,8 +251776,8 @@ "binop": null }, "value": "src", - "start": 27079, - "end": 27082, + "start": 27068, + "end": 27071, "loc": { "start": { "line": 650, @@ -251802,8 +251802,8 @@ "binop": null, "updateContext": null }, - "start": 27082, - "end": 27083, + "start": 27071, + "end": 27072, "loc": { "start": { "line": 650, @@ -251828,8 +251828,8 @@ "binop": null }, "value": "push", - "start": 27083, - "end": 27087, + "start": 27072, + "end": 27076, "loc": { "start": { "line": 650, @@ -251853,8 +251853,8 @@ "postfix": false, "binop": null }, - "start": 27087, - "end": 27088, + "start": 27076, + "end": 27077, "loc": { "start": { "line": 650, @@ -251880,8 +251880,8 @@ "updateContext": null }, "value": " return 1.0 / ( gl * gv );", - "start": 27088, - "end": 27118, + "start": 27077, + "end": 27107, "loc": { "start": { "line": 650, @@ -251905,8 +251905,8 @@ "postfix": false, "binop": null }, - "start": 27118, - "end": 27119, + "start": 27107, + "end": 27108, "loc": { "start": { "line": 650, @@ -251931,8 +251931,8 @@ "binop": null, "updateContext": null }, - "start": 27119, - "end": 27120, + "start": 27108, + "end": 27109, "loc": { "start": { "line": 650, @@ -251957,8 +251957,8 @@ "binop": null }, "value": "src", - "start": 27129, - "end": 27132, + "start": 27118, + "end": 27121, "loc": { "start": { "line": 651, @@ -251983,8 +251983,8 @@ "binop": null, "updateContext": null }, - "start": 27132, - "end": 27133, + "start": 27121, + "end": 27122, "loc": { "start": { "line": 651, @@ -252009,8 +252009,8 @@ "binop": null }, "value": "push", - "start": 27133, - "end": 27137, + "start": 27122, + "end": 27126, "loc": { "start": { "line": 651, @@ -252034,8 +252034,8 @@ "postfix": false, "binop": null }, - "start": 27137, - "end": 27138, + "start": 27126, + "end": 27127, "loc": { "start": { "line": 651, @@ -252061,8 +252061,8 @@ "updateContext": null }, "value": "}", - "start": 27138, - "end": 27141, + "start": 27127, + "end": 27130, "loc": { "start": { "line": 651, @@ -252086,8 +252086,8 @@ "postfix": false, "binop": null }, - "start": 27141, - "end": 27142, + "start": 27130, + "end": 27131, "loc": { "start": { "line": 651, @@ -252112,8 +252112,8 @@ "binop": null, "updateContext": null }, - "start": 27142, - "end": 27143, + "start": 27131, + "end": 27132, "loc": { "start": { "line": 651, @@ -252138,8 +252138,8 @@ "binop": null }, "value": "src", - "start": 27153, - "end": 27156, + "start": 27142, + "end": 27145, "loc": { "start": { "line": 653, @@ -252164,8 +252164,8 @@ "binop": null, "updateContext": null }, - "start": 27156, - "end": 27157, + "start": 27145, + "end": 27146, "loc": { "start": { "line": 653, @@ -252190,8 +252190,8 @@ "binop": null }, "value": "push", - "start": 27157, - "end": 27161, + "start": 27146, + "end": 27150, "loc": { "start": { "line": 653, @@ -252215,8 +252215,8 @@ "postfix": false, "binop": null }, - "start": 27161, - "end": 27162, + "start": 27150, + "end": 27151, "loc": { "start": { "line": 653, @@ -252242,8 +252242,8 @@ "updateContext": null }, "value": "float G_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {", - "start": 27162, - "end": 27259, + "start": 27151, + "end": 27248, "loc": { "start": { "line": 653, @@ -252267,8 +252267,8 @@ "postfix": false, "binop": null }, - "start": 27259, - "end": 27260, + "start": 27248, + "end": 27249, "loc": { "start": { "line": 653, @@ -252293,8 +252293,8 @@ "binop": null, "updateContext": null }, - "start": 27260, - "end": 27261, + "start": 27249, + "end": 27250, "loc": { "start": { "line": 653, @@ -252319,8 +252319,8 @@ "binop": null }, "value": "src", - "start": 27270, - "end": 27273, + "start": 27259, + "end": 27262, "loc": { "start": { "line": 654, @@ -252345,8 +252345,8 @@ "binop": null, "updateContext": null }, - "start": 27273, - "end": 27274, + "start": 27262, + "end": 27263, "loc": { "start": { "line": 654, @@ -252371,8 +252371,8 @@ "binop": null }, "value": "push", - "start": 27274, - "end": 27278, + "start": 27263, + "end": 27267, "loc": { "start": { "line": 654, @@ -252396,8 +252396,8 @@ "postfix": false, "binop": null }, - "start": 27278, - "end": 27279, + "start": 27267, + "end": 27268, "loc": { "start": { "line": 654, @@ -252423,8 +252423,8 @@ "updateContext": null }, "value": " float a2 = ( alpha * alpha );", - "start": 27279, - "end": 27313, + "start": 27268, + "end": 27302, "loc": { "start": { "line": 654, @@ -252448,8 +252448,8 @@ "postfix": false, "binop": null }, - "start": 27313, - "end": 27314, + "start": 27302, + "end": 27303, "loc": { "start": { "line": 654, @@ -252474,8 +252474,8 @@ "binop": null, "updateContext": null }, - "start": 27314, - "end": 27315, + "start": 27303, + "end": 27304, "loc": { "start": { "line": 654, @@ -252500,8 +252500,8 @@ "binop": null }, "value": "src", - "start": 27324, - "end": 27327, + "start": 27313, + "end": 27316, "loc": { "start": { "line": 655, @@ -252526,8 +252526,8 @@ "binop": null, "updateContext": null }, - "start": 27327, - "end": 27328, + "start": 27316, + "end": 27317, "loc": { "start": { "line": 655, @@ -252552,8 +252552,8 @@ "binop": null }, "value": "push", - "start": 27328, - "end": 27332, + "start": 27317, + "end": 27321, "loc": { "start": { "line": 655, @@ -252577,8 +252577,8 @@ "postfix": false, "binop": null }, - "start": 27332, - "end": 27333, + "start": 27321, + "end": 27322, "loc": { "start": { "line": 655, @@ -252604,8 +252604,8 @@ "updateContext": null }, "value": " float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );", - "start": 27333, - "end": 27403, + "start": 27322, + "end": 27392, "loc": { "start": { "line": 655, @@ -252629,8 +252629,8 @@ "postfix": false, "binop": null }, - "start": 27403, - "end": 27404, + "start": 27392, + "end": 27393, "loc": { "start": { "line": 655, @@ -252655,8 +252655,8 @@ "binop": null, "updateContext": null }, - "start": 27404, - "end": 27405, + "start": 27393, + "end": 27394, "loc": { "start": { "line": 655, @@ -252681,8 +252681,8 @@ "binop": null }, "value": "src", - "start": 27414, - "end": 27417, + "start": 27403, + "end": 27406, "loc": { "start": { "line": 656, @@ -252707,8 +252707,8 @@ "binop": null, "updateContext": null }, - "start": 27417, - "end": 27418, + "start": 27406, + "end": 27407, "loc": { "start": { "line": 656, @@ -252733,8 +252733,8 @@ "binop": null }, "value": "push", - "start": 27418, - "end": 27422, + "start": 27407, + "end": 27411, "loc": { "start": { "line": 656, @@ -252758,8 +252758,8 @@ "postfix": false, "binop": null }, - "start": 27422, - "end": 27423, + "start": 27411, + "end": 27412, "loc": { "start": { "line": 656, @@ -252785,8 +252785,8 @@ "updateContext": null }, "value": " float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );", - "start": 27423, - "end": 27493, + "start": 27412, + "end": 27482, "loc": { "start": { "line": 656, @@ -252810,8 +252810,8 @@ "postfix": false, "binop": null }, - "start": 27493, - "end": 27494, + "start": 27482, + "end": 27483, "loc": { "start": { "line": 656, @@ -252836,8 +252836,8 @@ "binop": null, "updateContext": null }, - "start": 27494, - "end": 27495, + "start": 27483, + "end": 27484, "loc": { "start": { "line": 656, @@ -252862,8 +252862,8 @@ "binop": null }, "value": "src", - "start": 27504, - "end": 27507, + "start": 27493, + "end": 27496, "loc": { "start": { "line": 657, @@ -252888,8 +252888,8 @@ "binop": null, "updateContext": null }, - "start": 27507, - "end": 27508, + "start": 27496, + "end": 27497, "loc": { "start": { "line": 657, @@ -252914,8 +252914,8 @@ "binop": null }, "value": "push", - "start": 27508, - "end": 27512, + "start": 27497, + "end": 27501, "loc": { "start": { "line": 657, @@ -252939,8 +252939,8 @@ "postfix": false, "binop": null }, - "start": 27512, - "end": 27513, + "start": 27501, + "end": 27502, "loc": { "start": { "line": 657, @@ -252966,8 +252966,8 @@ "updateContext": null }, "value": " return 0.5 / max( gv + gl, EPSILON );", - "start": 27513, - "end": 27555, + "start": 27502, + "end": 27544, "loc": { "start": { "line": 657, @@ -252991,8 +252991,8 @@ "postfix": false, "binop": null }, - "start": 27555, - "end": 27556, + "start": 27544, + "end": 27545, "loc": { "start": { "line": 657, @@ -253017,8 +253017,8 @@ "binop": null, "updateContext": null }, - "start": 27556, - "end": 27557, + "start": 27545, + "end": 27546, "loc": { "start": { "line": 657, @@ -253043,8 +253043,8 @@ "binop": null }, "value": "src", - "start": 27566, - "end": 27569, + "start": 27555, + "end": 27558, "loc": { "start": { "line": 658, @@ -253069,8 +253069,8 @@ "binop": null, "updateContext": null }, - "start": 27569, - "end": 27570, + "start": 27558, + "end": 27559, "loc": { "start": { "line": 658, @@ -253095,8 +253095,8 @@ "binop": null }, "value": "push", - "start": 27570, - "end": 27574, + "start": 27559, + "end": 27563, "loc": { "start": { "line": 658, @@ -253120,8 +253120,8 @@ "postfix": false, "binop": null }, - "start": 27574, - "end": 27575, + "start": 27563, + "end": 27564, "loc": { "start": { "line": 658, @@ -253147,8 +253147,8 @@ "updateContext": null }, "value": "}", - "start": 27575, - "end": 27578, + "start": 27564, + "end": 27567, "loc": { "start": { "line": 658, @@ -253172,8 +253172,8 @@ "postfix": false, "binop": null }, - "start": 27578, - "end": 27579, + "start": 27567, + "end": 27568, "loc": { "start": { "line": 658, @@ -253198,8 +253198,8 @@ "binop": null, "updateContext": null }, - "start": 27579, - "end": 27580, + "start": 27568, + "end": 27569, "loc": { "start": { "line": 658, @@ -253224,8 +253224,8 @@ "binop": null }, "value": "src", - "start": 27590, - "end": 27593, + "start": 27579, + "end": 27582, "loc": { "start": { "line": 660, @@ -253250,8 +253250,8 @@ "binop": null, "updateContext": null }, - "start": 27593, - "end": 27594, + "start": 27582, + "end": 27583, "loc": { "start": { "line": 660, @@ -253276,8 +253276,8 @@ "binop": null }, "value": "push", - "start": 27594, - "end": 27598, + "start": 27583, + "end": 27587, "loc": { "start": { "line": 660, @@ -253301,8 +253301,8 @@ "postfix": false, "binop": null }, - "start": 27598, - "end": 27599, + "start": 27587, + "end": 27588, "loc": { "start": { "line": 660, @@ -253328,8 +253328,8 @@ "updateContext": null }, "value": "float D_GGX(const in float alpha, const in float dotNH) {", - "start": 27599, - "end": 27658, + "start": 27588, + "end": 27647, "loc": { "start": { "line": 660, @@ -253353,8 +253353,8 @@ "postfix": false, "binop": null }, - "start": 27658, - "end": 27659, + "start": 27647, + "end": 27648, "loc": { "start": { "line": 660, @@ -253379,8 +253379,8 @@ "binop": null, "updateContext": null }, - "start": 27659, - "end": 27660, + "start": 27648, + "end": 27649, "loc": { "start": { "line": 660, @@ -253405,8 +253405,8 @@ "binop": null }, "value": "src", - "start": 27669, - "end": 27672, + "start": 27658, + "end": 27661, "loc": { "start": { "line": 661, @@ -253431,8 +253431,8 @@ "binop": null, "updateContext": null }, - "start": 27672, - "end": 27673, + "start": 27661, + "end": 27662, "loc": { "start": { "line": 661, @@ -253457,8 +253457,8 @@ "binop": null }, "value": "push", - "start": 27673, - "end": 27677, + "start": 27662, + "end": 27666, "loc": { "start": { "line": 661, @@ -253482,8 +253482,8 @@ "postfix": false, "binop": null }, - "start": 27677, - "end": 27678, + "start": 27666, + "end": 27667, "loc": { "start": { "line": 661, @@ -253509,8 +253509,8 @@ "updateContext": null }, "value": " float a2 = ( alpha * alpha );", - "start": 27678, - "end": 27712, + "start": 27667, + "end": 27701, "loc": { "start": { "line": 661, @@ -253534,8 +253534,8 @@ "postfix": false, "binop": null }, - "start": 27712, - "end": 27713, + "start": 27701, + "end": 27702, "loc": { "start": { "line": 661, @@ -253560,8 +253560,8 @@ "binop": null, "updateContext": null }, - "start": 27713, - "end": 27714, + "start": 27702, + "end": 27703, "loc": { "start": { "line": 661, @@ -253586,8 +253586,8 @@ "binop": null }, "value": "src", - "start": 27723, - "end": 27726, + "start": 27712, + "end": 27715, "loc": { "start": { "line": 662, @@ -253612,8 +253612,8 @@ "binop": null, "updateContext": null }, - "start": 27726, - "end": 27727, + "start": 27715, + "end": 27716, "loc": { "start": { "line": 662, @@ -253638,8 +253638,8 @@ "binop": null }, "value": "push", - "start": 27727, - "end": 27731, + "start": 27716, + "end": 27720, "loc": { "start": { "line": 662, @@ -253663,8 +253663,8 @@ "postfix": false, "binop": null }, - "start": 27731, - "end": 27732, + "start": 27720, + "end": 27721, "loc": { "start": { "line": 662, @@ -253690,8 +253690,8 @@ "updateContext": null }, "value": " float denom = ( dotNH * dotNH) * ( a2 - 1.0 ) + 1.0;", - "start": 27732, - "end": 27789, + "start": 27721, + "end": 27778, "loc": { "start": { "line": 662, @@ -253715,8 +253715,8 @@ "postfix": false, "binop": null }, - "start": 27789, - "end": 27790, + "start": 27778, + "end": 27779, "loc": { "start": { "line": 662, @@ -253741,8 +253741,8 @@ "binop": null, "updateContext": null }, - "start": 27790, - "end": 27791, + "start": 27779, + "end": 27780, "loc": { "start": { "line": 662, @@ -253767,8 +253767,8 @@ "binop": null }, "value": "src", - "start": 27800, - "end": 27803, + "start": 27789, + "end": 27792, "loc": { "start": { "line": 663, @@ -253793,8 +253793,8 @@ "binop": null, "updateContext": null }, - "start": 27803, - "end": 27804, + "start": 27792, + "end": 27793, "loc": { "start": { "line": 663, @@ -253819,8 +253819,8 @@ "binop": null }, "value": "push", - "start": 27804, - "end": 27808, + "start": 27793, + "end": 27797, "loc": { "start": { "line": 663, @@ -253844,8 +253844,8 @@ "postfix": false, "binop": null }, - "start": 27808, - "end": 27809, + "start": 27797, + "end": 27798, "loc": { "start": { "line": 663, @@ -253871,8 +253871,8 @@ "updateContext": null }, "value": " return RECIPROCAL_PI * a2 / ( denom * denom);", - "start": 27809, - "end": 27859, + "start": 27798, + "end": 27848, "loc": { "start": { "line": 663, @@ -253896,8 +253896,8 @@ "postfix": false, "binop": null }, - "start": 27859, - "end": 27860, + "start": 27848, + "end": 27849, "loc": { "start": { "line": 663, @@ -253922,8 +253922,8 @@ "binop": null, "updateContext": null }, - "start": 27860, - "end": 27861, + "start": 27849, + "end": 27850, "loc": { "start": { "line": 663, @@ -253948,8 +253948,8 @@ "binop": null }, "value": "src", - "start": 27870, - "end": 27873, + "start": 27859, + "end": 27862, "loc": { "start": { "line": 664, @@ -253974,8 +253974,8 @@ "binop": null, "updateContext": null }, - "start": 27873, - "end": 27874, + "start": 27862, + "end": 27863, "loc": { "start": { "line": 664, @@ -254000,8 +254000,8 @@ "binop": null }, "value": "push", - "start": 27874, - "end": 27878, + "start": 27863, + "end": 27867, "loc": { "start": { "line": 664, @@ -254025,8 +254025,8 @@ "postfix": false, "binop": null }, - "start": 27878, - "end": 27879, + "start": 27867, + "end": 27868, "loc": { "start": { "line": 664, @@ -254052,8 +254052,8 @@ "updateContext": null }, "value": "}", - "start": 27879, - "end": 27882, + "start": 27868, + "end": 27871, "loc": { "start": { "line": 664, @@ -254077,8 +254077,8 @@ "postfix": false, "binop": null }, - "start": 27882, - "end": 27883, + "start": 27871, + "end": 27872, "loc": { "start": { "line": 664, @@ -254103,8 +254103,8 @@ "binop": null, "updateContext": null }, - "start": 27883, - "end": 27884, + "start": 27872, + "end": 27873, "loc": { "start": { "line": 664, @@ -254129,8 +254129,8 @@ "binop": null }, "value": "src", - "start": 27894, - "end": 27897, + "start": 27883, + "end": 27886, "loc": { "start": { "line": 666, @@ -254155,8 +254155,8 @@ "binop": null, "updateContext": null }, - "start": 27897, - "end": 27898, + "start": 27886, + "end": 27887, "loc": { "start": { "line": 666, @@ -254181,8 +254181,8 @@ "binop": null }, "value": "push", - "start": 27898, - "end": 27902, + "start": 27887, + "end": 27891, "loc": { "start": { "line": 666, @@ -254206,8 +254206,8 @@ "postfix": false, "binop": null }, - "start": 27902, - "end": 27903, + "start": 27891, + "end": 27892, "loc": { "start": { "line": 666, @@ -254233,8 +254233,8 @@ "updateContext": null }, "value": "vec3 BRDF_Specular_GGX(const in IncidentLight incidentLight, const in Geometry geometry, const in vec3 specularColor, const in float roughness) {", - "start": 27903, - "end": 28050, + "start": 27892, + "end": 28039, "loc": { "start": { "line": 666, @@ -254258,8 +254258,8 @@ "postfix": false, "binop": null }, - "start": 28050, - "end": 28051, + "start": 28039, + "end": 28040, "loc": { "start": { "line": 666, @@ -254284,8 +254284,8 @@ "binop": null, "updateContext": null }, - "start": 28051, - "end": 28052, + "start": 28040, + "end": 28041, "loc": { "start": { "line": 666, @@ -254310,8 +254310,8 @@ "binop": null }, "value": "src", - "start": 28061, - "end": 28064, + "start": 28050, + "end": 28053, "loc": { "start": { "line": 667, @@ -254336,8 +254336,8 @@ "binop": null, "updateContext": null }, - "start": 28064, - "end": 28065, + "start": 28053, + "end": 28054, "loc": { "start": { "line": 667, @@ -254362,8 +254362,8 @@ "binop": null }, "value": "push", - "start": 28065, - "end": 28069, + "start": 28054, + "end": 28058, "loc": { "start": { "line": 667, @@ -254387,8 +254387,8 @@ "postfix": false, "binop": null }, - "start": 28069, - "end": 28070, + "start": 28058, + "end": 28059, "loc": { "start": { "line": 667, @@ -254414,8 +254414,8 @@ "updateContext": null }, "value": " float alpha = ( roughness * roughness );", - "start": 28070, - "end": 28115, + "start": 28059, + "end": 28104, "loc": { "start": { "line": 667, @@ -254439,8 +254439,8 @@ "postfix": false, "binop": null }, - "start": 28115, - "end": 28116, + "start": 28104, + "end": 28105, "loc": { "start": { "line": 667, @@ -254465,8 +254465,8 @@ "binop": null, "updateContext": null }, - "start": 28116, - "end": 28117, + "start": 28105, + "end": 28106, "loc": { "start": { "line": 667, @@ -254491,8 +254491,8 @@ "binop": null }, "value": "src", - "start": 28126, - "end": 28129, + "start": 28115, + "end": 28118, "loc": { "start": { "line": 668, @@ -254517,8 +254517,8 @@ "binop": null, "updateContext": null }, - "start": 28129, - "end": 28130, + "start": 28118, + "end": 28119, "loc": { "start": { "line": 668, @@ -254543,8 +254543,8 @@ "binop": null }, "value": "push", - "start": 28130, - "end": 28134, + "start": 28119, + "end": 28123, "loc": { "start": { "line": 668, @@ -254568,8 +254568,8 @@ "postfix": false, "binop": null }, - "start": 28134, - "end": 28135, + "start": 28123, + "end": 28124, "loc": { "start": { "line": 668, @@ -254595,8 +254595,8 @@ "updateContext": null }, "value": " vec3 halfDir = normalize( incidentLight.direction + geometry.viewEyeDir );", - "start": 28135, - "end": 28214, + "start": 28124, + "end": 28203, "loc": { "start": { "line": 668, @@ -254620,8 +254620,8 @@ "postfix": false, "binop": null }, - "start": 28214, - "end": 28215, + "start": 28203, + "end": 28204, "loc": { "start": { "line": 668, @@ -254646,8 +254646,8 @@ "binop": null, "updateContext": null }, - "start": 28215, - "end": 28216, + "start": 28204, + "end": 28205, "loc": { "start": { "line": 668, @@ -254672,8 +254672,8 @@ "binop": null }, "value": "src", - "start": 28225, - "end": 28228, + "start": 28214, + "end": 28217, "loc": { "start": { "line": 669, @@ -254698,8 +254698,8 @@ "binop": null, "updateContext": null }, - "start": 28228, - "end": 28229, + "start": 28217, + "end": 28218, "loc": { "start": { "line": 669, @@ -254724,8 +254724,8 @@ "binop": null }, "value": "push", - "start": 28229, - "end": 28233, + "start": 28218, + "end": 28222, "loc": { "start": { "line": 669, @@ -254749,8 +254749,8 @@ "postfix": false, "binop": null }, - "start": 28233, - "end": 28234, + "start": 28222, + "end": 28223, "loc": { "start": { "line": 669, @@ -254776,8 +254776,8 @@ "updateContext": null }, "value": " float dotNL = saturate( dot( geometry.viewNormal, incidentLight.direction ) );", - "start": 28234, - "end": 28317, + "start": 28223, + "end": 28306, "loc": { "start": { "line": 669, @@ -254801,8 +254801,8 @@ "postfix": false, "binop": null }, - "start": 28317, - "end": 28318, + "start": 28306, + "end": 28307, "loc": { "start": { "line": 669, @@ -254827,8 +254827,8 @@ "binop": null, "updateContext": null }, - "start": 28318, - "end": 28319, + "start": 28307, + "end": 28308, "loc": { "start": { "line": 669, @@ -254853,8 +254853,8 @@ "binop": null }, "value": "src", - "start": 28328, - "end": 28331, + "start": 28317, + "end": 28320, "loc": { "start": { "line": 670, @@ -254879,8 +254879,8 @@ "binop": null, "updateContext": null }, - "start": 28331, - "end": 28332, + "start": 28320, + "end": 28321, "loc": { "start": { "line": 670, @@ -254905,8 +254905,8 @@ "binop": null }, "value": "push", - "start": 28332, - "end": 28336, + "start": 28321, + "end": 28325, "loc": { "start": { "line": 670, @@ -254930,8 +254930,8 @@ "postfix": false, "binop": null }, - "start": 28336, - "end": 28337, + "start": 28325, + "end": 28326, "loc": { "start": { "line": 670, @@ -254957,8 +254957,8 @@ "updateContext": null }, "value": " float dotNV = saturate( dot( geometry.viewNormal, geometry.viewEyeDir ) );", - "start": 28337, - "end": 28416, + "start": 28326, + "end": 28405, "loc": { "start": { "line": 670, @@ -254982,8 +254982,8 @@ "postfix": false, "binop": null }, - "start": 28416, - "end": 28417, + "start": 28405, + "end": 28406, "loc": { "start": { "line": 670, @@ -255008,8 +255008,8 @@ "binop": null, "updateContext": null }, - "start": 28417, - "end": 28418, + "start": 28406, + "end": 28407, "loc": { "start": { "line": 670, @@ -255034,8 +255034,8 @@ "binop": null }, "value": "src", - "start": 28427, - "end": 28430, + "start": 28416, + "end": 28419, "loc": { "start": { "line": 671, @@ -255060,8 +255060,8 @@ "binop": null, "updateContext": null }, - "start": 28430, - "end": 28431, + "start": 28419, + "end": 28420, "loc": { "start": { "line": 671, @@ -255086,8 +255086,8 @@ "binop": null }, "value": "push", - "start": 28431, - "end": 28435, + "start": 28420, + "end": 28424, "loc": { "start": { "line": 671, @@ -255111,8 +255111,8 @@ "postfix": false, "binop": null }, - "start": 28435, - "end": 28436, + "start": 28424, + "end": 28425, "loc": { "start": { "line": 671, @@ -255138,8 +255138,8 @@ "updateContext": null }, "value": " float dotNH = saturate( dot( geometry.viewNormal, halfDir ) );", - "start": 28436, - "end": 28503, + "start": 28425, + "end": 28492, "loc": { "start": { "line": 671, @@ -255163,8 +255163,8 @@ "postfix": false, "binop": null }, - "start": 28503, - "end": 28504, + "start": 28492, + "end": 28493, "loc": { "start": { "line": 671, @@ -255189,8 +255189,8 @@ "binop": null, "updateContext": null }, - "start": 28504, - "end": 28505, + "start": 28493, + "end": 28494, "loc": { "start": { "line": 671, @@ -255215,8 +255215,8 @@ "binop": null }, "value": "src", - "start": 28514, - "end": 28517, + "start": 28503, + "end": 28506, "loc": { "start": { "line": 672, @@ -255241,8 +255241,8 @@ "binop": null, "updateContext": null }, - "start": 28517, - "end": 28518, + "start": 28506, + "end": 28507, "loc": { "start": { "line": 672, @@ -255267,8 +255267,8 @@ "binop": null }, "value": "push", - "start": 28518, - "end": 28522, + "start": 28507, + "end": 28511, "loc": { "start": { "line": 672, @@ -255292,8 +255292,8 @@ "postfix": false, "binop": null }, - "start": 28522, - "end": 28523, + "start": 28511, + "end": 28512, "loc": { "start": { "line": 672, @@ -255319,8 +255319,8 @@ "updateContext": null }, "value": " float dotLH = saturate( dot( incidentLight.direction, halfDir ) );", - "start": 28523, - "end": 28594, + "start": 28512, + "end": 28583, "loc": { "start": { "line": 672, @@ -255344,8 +255344,8 @@ "postfix": false, "binop": null }, - "start": 28594, - "end": 28595, + "start": 28583, + "end": 28584, "loc": { "start": { "line": 672, @@ -255370,8 +255370,8 @@ "binop": null, "updateContext": null }, - "start": 28595, - "end": 28596, + "start": 28584, + "end": 28585, "loc": { "start": { "line": 672, @@ -255396,8 +255396,8 @@ "binop": null }, "value": "src", - "start": 28605, - "end": 28608, + "start": 28594, + "end": 28597, "loc": { "start": { "line": 673, @@ -255422,8 +255422,8 @@ "binop": null, "updateContext": null }, - "start": 28608, - "end": 28609, + "start": 28597, + "end": 28598, "loc": { "start": { "line": 673, @@ -255448,8 +255448,8 @@ "binop": null }, "value": "push", - "start": 28609, - "end": 28613, + "start": 28598, + "end": 28602, "loc": { "start": { "line": 673, @@ -255473,8 +255473,8 @@ "postfix": false, "binop": null }, - "start": 28613, - "end": 28614, + "start": 28602, + "end": 28603, "loc": { "start": { "line": 673, @@ -255500,8 +255500,8 @@ "updateContext": null }, "value": " vec3 F = F_Schlick( specularColor, dotLH );", - "start": 28614, - "end": 28663, + "start": 28603, + "end": 28652, "loc": { "start": { "line": 673, @@ -255525,8 +255525,8 @@ "postfix": false, "binop": null }, - "start": 28663, - "end": 28664, + "start": 28652, + "end": 28653, "loc": { "start": { "line": 673, @@ -255551,8 +255551,8 @@ "binop": null, "updateContext": null }, - "start": 28664, - "end": 28665, + "start": 28653, + "end": 28654, "loc": { "start": { "line": 673, @@ -255577,8 +255577,8 @@ "binop": null }, "value": "src", - "start": 28674, - "end": 28677, + "start": 28663, + "end": 28666, "loc": { "start": { "line": 674, @@ -255603,8 +255603,8 @@ "binop": null, "updateContext": null }, - "start": 28677, - "end": 28678, + "start": 28666, + "end": 28667, "loc": { "start": { "line": 674, @@ -255629,8 +255629,8 @@ "binop": null }, "value": "push", - "start": 28678, - "end": 28682, + "start": 28667, + "end": 28671, "loc": { "start": { "line": 674, @@ -255654,8 +255654,8 @@ "postfix": false, "binop": null }, - "start": 28682, - "end": 28683, + "start": 28671, + "end": 28672, "loc": { "start": { "line": 674, @@ -255681,8 +255681,8 @@ "updateContext": null }, "value": " float G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );", - "start": 28683, - "end": 28743, + "start": 28672, + "end": 28732, "loc": { "start": { "line": 674, @@ -255706,8 +255706,8 @@ "postfix": false, "binop": null }, - "start": 28743, - "end": 28744, + "start": 28732, + "end": 28733, "loc": { "start": { "line": 674, @@ -255732,8 +255732,8 @@ "binop": null, "updateContext": null }, - "start": 28744, - "end": 28745, + "start": 28733, + "end": 28734, "loc": { "start": { "line": 674, @@ -255758,8 +255758,8 @@ "binop": null }, "value": "src", - "start": 28754, - "end": 28757, + "start": 28743, + "end": 28746, "loc": { "start": { "line": 675, @@ -255784,8 +255784,8 @@ "binop": null, "updateContext": null }, - "start": 28757, - "end": 28758, + "start": 28746, + "end": 28747, "loc": { "start": { "line": 675, @@ -255810,8 +255810,8 @@ "binop": null }, "value": "push", - "start": 28758, - "end": 28762, + "start": 28747, + "end": 28751, "loc": { "start": { "line": 675, @@ -255835,8 +255835,8 @@ "postfix": false, "binop": null }, - "start": 28762, - "end": 28763, + "start": 28751, + "end": 28752, "loc": { "start": { "line": 675, @@ -255862,8 +255862,8 @@ "updateContext": null }, "value": " float D = D_GGX( alpha, dotNH );", - "start": 28763, - "end": 28800, + "start": 28752, + "end": 28789, "loc": { "start": { "line": 675, @@ -255887,8 +255887,8 @@ "postfix": false, "binop": null }, - "start": 28800, - "end": 28801, + "start": 28789, + "end": 28790, "loc": { "start": { "line": 675, @@ -255913,8 +255913,8 @@ "binop": null, "updateContext": null }, - "start": 28801, - "end": 28802, + "start": 28790, + "end": 28791, "loc": { "start": { "line": 675, @@ -255939,8 +255939,8 @@ "binop": null }, "value": "src", - "start": 28811, - "end": 28814, + "start": 28800, + "end": 28803, "loc": { "start": { "line": 676, @@ -255965,8 +255965,8 @@ "binop": null, "updateContext": null }, - "start": 28814, - "end": 28815, + "start": 28803, + "end": 28804, "loc": { "start": { "line": 676, @@ -255991,8 +255991,8 @@ "binop": null }, "value": "push", - "start": 28815, - "end": 28819, + "start": 28804, + "end": 28808, "loc": { "start": { "line": 676, @@ -256016,8 +256016,8 @@ "postfix": false, "binop": null }, - "start": 28819, - "end": 28820, + "start": 28808, + "end": 28809, "loc": { "start": { "line": 676, @@ -256043,8 +256043,8 @@ "updateContext": null }, "value": " return F * (G * D);", - "start": 28820, - "end": 28844, + "start": 28809, + "end": 28833, "loc": { "start": { "line": 676, @@ -256068,8 +256068,8 @@ "postfix": false, "binop": null }, - "start": 28844, - "end": 28845, + "start": 28833, + "end": 28834, "loc": { "start": { "line": 676, @@ -256094,8 +256094,8 @@ "binop": null, "updateContext": null }, - "start": 28845, - "end": 28846, + "start": 28834, + "end": 28835, "loc": { "start": { "line": 676, @@ -256120,8 +256120,8 @@ "binop": null }, "value": "src", - "start": 28855, - "end": 28858, + "start": 28844, + "end": 28847, "loc": { "start": { "line": 677, @@ -256146,8 +256146,8 @@ "binop": null, "updateContext": null }, - "start": 28858, - "end": 28859, + "start": 28847, + "end": 28848, "loc": { "start": { "line": 677, @@ -256172,8 +256172,8 @@ "binop": null }, "value": "push", - "start": 28859, - "end": 28863, + "start": 28848, + "end": 28852, "loc": { "start": { "line": 677, @@ -256197,8 +256197,8 @@ "postfix": false, "binop": null }, - "start": 28863, - "end": 28864, + "start": 28852, + "end": 28853, "loc": { "start": { "line": 677, @@ -256224,8 +256224,8 @@ "updateContext": null }, "value": "}", - "start": 28864, - "end": 28867, + "start": 28853, + "end": 28856, "loc": { "start": { "line": 677, @@ -256249,8 +256249,8 @@ "postfix": false, "binop": null }, - "start": 28867, - "end": 28868, + "start": 28856, + "end": 28857, "loc": { "start": { "line": 677, @@ -256275,8 +256275,8 @@ "binop": null, "updateContext": null }, - "start": 28868, - "end": 28869, + "start": 28857, + "end": 28858, "loc": { "start": { "line": 677, @@ -256301,8 +256301,8 @@ "binop": null }, "value": "src", - "start": 28879, - "end": 28882, + "start": 28868, + "end": 28871, "loc": { "start": { "line": 679, @@ -256327,8 +256327,8 @@ "binop": null, "updateContext": null }, - "start": 28882, - "end": 28883, + "start": 28871, + "end": 28872, "loc": { "start": { "line": 679, @@ -256353,8 +256353,8 @@ "binop": null }, "value": "push", - "start": 28883, - "end": 28887, + "start": 28872, + "end": 28876, "loc": { "start": { "line": 679, @@ -256378,8 +256378,8 @@ "postfix": false, "binop": null }, - "start": 28887, - "end": 28888, + "start": 28876, + "end": 28877, "loc": { "start": { "line": 679, @@ -256405,8 +256405,8 @@ "updateContext": null }, "value": "vec3 BRDF_Specular_GGX_Environment(const in Geometry geometry, const in vec3 specularColor, const in float roughness) {", - "start": 28888, - "end": 29009, + "start": 28877, + "end": 28998, "loc": { "start": { "line": 679, @@ -256430,8 +256430,8 @@ "postfix": false, "binop": null }, - "start": 29009, - "end": 29010, + "start": 28998, + "end": 28999, "loc": { "start": { "line": 679, @@ -256456,8 +256456,8 @@ "binop": null, "updateContext": null }, - "start": 29010, - "end": 29011, + "start": 28999, + "end": 29000, "loc": { "start": { "line": 679, @@ -256482,8 +256482,8 @@ "binop": null }, "value": "src", - "start": 29020, - "end": 29023, + "start": 29009, + "end": 29012, "loc": { "start": { "line": 680, @@ -256508,8 +256508,8 @@ "binop": null, "updateContext": null }, - "start": 29023, - "end": 29024, + "start": 29012, + "end": 29013, "loc": { "start": { "line": 680, @@ -256534,8 +256534,8 @@ "binop": null }, "value": "push", - "start": 29024, - "end": 29028, + "start": 29013, + "end": 29017, "loc": { "start": { "line": 680, @@ -256559,8 +256559,8 @@ "postfix": false, "binop": null }, - "start": 29028, - "end": 29029, + "start": 29017, + "end": 29018, "loc": { "start": { "line": 680, @@ -256586,8 +256586,8 @@ "updateContext": null }, "value": " float dotNV = saturate(dot(geometry.viewNormal, geometry.viewEyeDir));", - "start": 29029, - "end": 29104, + "start": 29018, + "end": 29093, "loc": { "start": { "line": 680, @@ -256611,8 +256611,8 @@ "postfix": false, "binop": null }, - "start": 29104, - "end": 29105, + "start": 29093, + "end": 29094, "loc": { "start": { "line": 680, @@ -256637,8 +256637,8 @@ "binop": null, "updateContext": null }, - "start": 29105, - "end": 29106, + "start": 29094, + "end": 29095, "loc": { "start": { "line": 680, @@ -256663,8 +256663,8 @@ "binop": null }, "value": "src", - "start": 29115, - "end": 29118, + "start": 29104, + "end": 29107, "loc": { "start": { "line": 681, @@ -256689,8 +256689,8 @@ "binop": null, "updateContext": null }, - "start": 29118, - "end": 29119, + "start": 29107, + "end": 29108, "loc": { "start": { "line": 681, @@ -256715,8 +256715,8 @@ "binop": null }, "value": "push", - "start": 29119, - "end": 29123, + "start": 29108, + "end": 29112, "loc": { "start": { "line": 681, @@ -256740,8 +256740,8 @@ "postfix": false, "binop": null }, - "start": 29123, - "end": 29124, + "start": 29112, + "end": 29113, "loc": { "start": { "line": 681, @@ -256767,8 +256767,8 @@ "updateContext": null }, "value": " const vec4 c0 = vec4( -1, -0.0275, -0.572, 0.022);", - "start": 29124, - "end": 29180, + "start": 29113, + "end": 29169, "loc": { "start": { "line": 681, @@ -256792,8 +256792,8 @@ "postfix": false, "binop": null }, - "start": 29180, - "end": 29181, + "start": 29169, + "end": 29170, "loc": { "start": { "line": 681, @@ -256818,8 +256818,8 @@ "binop": null, "updateContext": null }, - "start": 29181, - "end": 29182, + "start": 29170, + "end": 29171, "loc": { "start": { "line": 681, @@ -256844,8 +256844,8 @@ "binop": null }, "value": "src", - "start": 29191, - "end": 29194, + "start": 29180, + "end": 29183, "loc": { "start": { "line": 682, @@ -256870,8 +256870,8 @@ "binop": null, "updateContext": null }, - "start": 29194, - "end": 29195, + "start": 29183, + "end": 29184, "loc": { "start": { "line": 682, @@ -256896,8 +256896,8 @@ "binop": null }, "value": "push", - "start": 29195, - "end": 29199, + "start": 29184, + "end": 29188, "loc": { "start": { "line": 682, @@ -256921,8 +256921,8 @@ "postfix": false, "binop": null }, - "start": 29199, - "end": 29200, + "start": 29188, + "end": 29189, "loc": { "start": { "line": 682, @@ -256948,8 +256948,8 @@ "updateContext": null }, "value": " const vec4 c1 = vec4( 1, 0.0425, 1.04, -0.04);", - "start": 29200, - "end": 29255, + "start": 29189, + "end": 29244, "loc": { "start": { "line": 682, @@ -256973,8 +256973,8 @@ "postfix": false, "binop": null }, - "start": 29255, - "end": 29256, + "start": 29244, + "end": 29245, "loc": { "start": { "line": 682, @@ -256999,8 +256999,8 @@ "binop": null, "updateContext": null }, - "start": 29256, - "end": 29257, + "start": 29245, + "end": 29246, "loc": { "start": { "line": 682, @@ -257025,8 +257025,8 @@ "binop": null }, "value": "src", - "start": 29266, - "end": 29269, + "start": 29255, + "end": 29258, "loc": { "start": { "line": 683, @@ -257051,8 +257051,8 @@ "binop": null, "updateContext": null }, - "start": 29269, - "end": 29270, + "start": 29258, + "end": 29259, "loc": { "start": { "line": 683, @@ -257077,8 +257077,8 @@ "binop": null }, "value": "push", - "start": 29270, - "end": 29274, + "start": 29259, + "end": 29263, "loc": { "start": { "line": 683, @@ -257102,8 +257102,8 @@ "postfix": false, "binop": null }, - "start": 29274, - "end": 29275, + "start": 29263, + "end": 29264, "loc": { "start": { "line": 683, @@ -257129,8 +257129,8 @@ "updateContext": null }, "value": " vec4 r = roughness * c0 + c1;", - "start": 29275, - "end": 29309, + "start": 29264, + "end": 29298, "loc": { "start": { "line": 683, @@ -257154,8 +257154,8 @@ "postfix": false, "binop": null }, - "start": 29309, - "end": 29310, + "start": 29298, + "end": 29299, "loc": { "start": { "line": 683, @@ -257180,8 +257180,8 @@ "binop": null, "updateContext": null }, - "start": 29310, - "end": 29311, + "start": 29299, + "end": 29300, "loc": { "start": { "line": 683, @@ -257206,8 +257206,8 @@ "binop": null }, "value": "src", - "start": 29320, - "end": 29323, + "start": 29309, + "end": 29312, "loc": { "start": { "line": 684, @@ -257232,8 +257232,8 @@ "binop": null, "updateContext": null }, - "start": 29323, - "end": 29324, + "start": 29312, + "end": 29313, "loc": { "start": { "line": 684, @@ -257258,8 +257258,8 @@ "binop": null }, "value": "push", - "start": 29324, - "end": 29328, + "start": 29313, + "end": 29317, "loc": { "start": { "line": 684, @@ -257283,8 +257283,8 @@ "postfix": false, "binop": null }, - "start": 29328, - "end": 29329, + "start": 29317, + "end": 29318, "loc": { "start": { "line": 684, @@ -257310,8 +257310,8 @@ "updateContext": null }, "value": " float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;", - "start": 29329, - "end": 29395, + "start": 29318, + "end": 29384, "loc": { "start": { "line": 684, @@ -257335,8 +257335,8 @@ "postfix": false, "binop": null }, - "start": 29395, - "end": 29396, + "start": 29384, + "end": 29385, "loc": { "start": { "line": 684, @@ -257361,8 +257361,8 @@ "binop": null, "updateContext": null }, - "start": 29396, - "end": 29397, + "start": 29385, + "end": 29386, "loc": { "start": { "line": 684, @@ -257387,8 +257387,8 @@ "binop": null }, "value": "src", - "start": 29406, - "end": 29409, + "start": 29395, + "end": 29398, "loc": { "start": { "line": 685, @@ -257413,8 +257413,8 @@ "binop": null, "updateContext": null }, - "start": 29409, - "end": 29410, + "start": 29398, + "end": 29399, "loc": { "start": { "line": 685, @@ -257439,8 +257439,8 @@ "binop": null }, "value": "push", - "start": 29410, - "end": 29414, + "start": 29399, + "end": 29403, "loc": { "start": { "line": 685, @@ -257464,8 +257464,8 @@ "postfix": false, "binop": null }, - "start": 29414, - "end": 29415, + "start": 29403, + "end": 29404, "loc": { "start": { "line": 685, @@ -257491,8 +257491,8 @@ "updateContext": null }, "value": " vec2 AB = vec2(-1.04, 1.04) * a004 + r.zw;", - "start": 29415, - "end": 29465, + "start": 29404, + "end": 29454, "loc": { "start": { "line": 685, @@ -257516,8 +257516,8 @@ "postfix": false, "binop": null }, - "start": 29465, - "end": 29466, + "start": 29454, + "end": 29455, "loc": { "start": { "line": 685, @@ -257542,8 +257542,8 @@ "binop": null, "updateContext": null }, - "start": 29466, - "end": 29467, + "start": 29455, + "end": 29456, "loc": { "start": { "line": 685, @@ -257568,8 +257568,8 @@ "binop": null }, "value": "src", - "start": 29476, - "end": 29479, + "start": 29465, + "end": 29468, "loc": { "start": { "line": 686, @@ -257594,8 +257594,8 @@ "binop": null, "updateContext": null }, - "start": 29479, - "end": 29480, + "start": 29468, + "end": 29469, "loc": { "start": { "line": 686, @@ -257620,8 +257620,8 @@ "binop": null }, "value": "push", - "start": 29480, - "end": 29484, + "start": 29469, + "end": 29473, "loc": { "start": { "line": 686, @@ -257645,8 +257645,8 @@ "postfix": false, "binop": null }, - "start": 29484, - "end": 29485, + "start": 29473, + "end": 29474, "loc": { "start": { "line": 686, @@ -257672,8 +257672,8 @@ "updateContext": null }, "value": " return specularColor * AB.x + AB.y;", - "start": 29485, - "end": 29525, + "start": 29474, + "end": 29514, "loc": { "start": { "line": 686, @@ -257697,8 +257697,8 @@ "postfix": false, "binop": null }, - "start": 29525, - "end": 29526, + "start": 29514, + "end": 29515, "loc": { "start": { "line": 686, @@ -257723,8 +257723,8 @@ "binop": null, "updateContext": null }, - "start": 29526, - "end": 29527, + "start": 29515, + "end": 29516, "loc": { "start": { "line": 686, @@ -257749,8 +257749,8 @@ "binop": null }, "value": "src", - "start": 29536, - "end": 29539, + "start": 29525, + "end": 29528, "loc": { "start": { "line": 687, @@ -257775,8 +257775,8 @@ "binop": null, "updateContext": null }, - "start": 29539, - "end": 29540, + "start": 29528, + "end": 29529, "loc": { "start": { "line": 687, @@ -257801,8 +257801,8 @@ "binop": null }, "value": "push", - "start": 29540, - "end": 29544, + "start": 29529, + "end": 29533, "loc": { "start": { "line": 687, @@ -257826,8 +257826,8 @@ "postfix": false, "binop": null }, - "start": 29544, - "end": 29545, + "start": 29533, + "end": 29534, "loc": { "start": { "line": 687, @@ -257853,8 +257853,8 @@ "updateContext": null }, "value": "}", - "start": 29545, - "end": 29548, + "start": 29534, + "end": 29537, "loc": { "start": { "line": 687, @@ -257878,8 +257878,8 @@ "postfix": false, "binop": null }, - "start": 29548, - "end": 29549, + "start": 29537, + "end": 29538, "loc": { "start": { "line": 687, @@ -257904,8 +257904,8 @@ "binop": null, "updateContext": null }, - "start": 29549, - "end": 29550, + "start": 29538, + "end": 29539, "loc": { "start": { "line": 687, @@ -257932,8 +257932,8 @@ "updateContext": null }, "value": "if", - "start": 29560, - "end": 29562, + "start": 29549, + "end": 29551, "loc": { "start": { "line": 689, @@ -257957,8 +257957,8 @@ "postfix": false, "binop": null }, - "start": 29563, - "end": 29564, + "start": 29552, + "end": 29553, "loc": { "start": { "line": 689, @@ -257983,8 +257983,8 @@ "binop": null }, "value": "lightsState", - "start": 29564, - "end": 29575, + "start": 29553, + "end": 29564, "loc": { "start": { "line": 689, @@ -258009,8 +258009,8 @@ "binop": null, "updateContext": null }, - "start": 29575, - "end": 29576, + "start": 29564, + "end": 29565, "loc": { "start": { "line": 689, @@ -258035,8 +258035,8 @@ "binop": null }, "value": "lightMaps", - "start": 29576, - "end": 29585, + "start": 29565, + "end": 29574, "loc": { "start": { "line": 689, @@ -258061,8 +258061,8 @@ "binop": null, "updateContext": null }, - "start": 29585, - "end": 29586, + "start": 29574, + "end": 29575, "loc": { "start": { "line": 689, @@ -258087,8 +258087,8 @@ "binop": null }, "value": "length", - "start": 29586, - "end": 29592, + "start": 29575, + "end": 29581, "loc": { "start": { "line": 689, @@ -258114,8 +258114,8 @@ "updateContext": null }, "value": ">", - "start": 29593, - "end": 29594, + "start": 29582, + "end": 29583, "loc": { "start": { "line": 689, @@ -258141,8 +258141,8 @@ "updateContext": null }, "value": 0, - "start": 29595, - "end": 29596, + "start": 29584, + "end": 29585, "loc": { "start": { "line": 689, @@ -258168,8 +258168,8 @@ "updateContext": null }, "value": "||", - "start": 29597, - "end": 29599, + "start": 29586, + "end": 29588, "loc": { "start": { "line": 689, @@ -258194,8 +258194,8 @@ "binop": null }, "value": "lightsState", - "start": 29600, - "end": 29611, + "start": 29589, + "end": 29600, "loc": { "start": { "line": 689, @@ -258220,8 +258220,8 @@ "binop": null, "updateContext": null }, - "start": 29611, - "end": 29612, + "start": 29600, + "end": 29601, "loc": { "start": { "line": 689, @@ -258246,8 +258246,8 @@ "binop": null }, "value": "reflectionMaps", - "start": 29612, - "end": 29626, + "start": 29601, + "end": 29615, "loc": { "start": { "line": 689, @@ -258272,8 +258272,8 @@ "binop": null, "updateContext": null }, - "start": 29626, - "end": 29627, + "start": 29615, + "end": 29616, "loc": { "start": { "line": 689, @@ -258298,8 +258298,8 @@ "binop": null }, "value": "length", - "start": 29627, - "end": 29633, + "start": 29616, + "end": 29622, "loc": { "start": { "line": 689, @@ -258325,8 +258325,8 @@ "updateContext": null }, "value": ">", - "start": 29634, - "end": 29635, + "start": 29623, + "end": 29624, "loc": { "start": { "line": 689, @@ -258352,8 +258352,8 @@ "updateContext": null }, "value": 0, - "start": 29636, - "end": 29637, + "start": 29625, + "end": 29626, "loc": { "start": { "line": 689, @@ -258377,8 +258377,8 @@ "postfix": false, "binop": null }, - "start": 29637, - "end": 29638, + "start": 29626, + "end": 29627, "loc": { "start": { "line": 689, @@ -258402,8 +258402,8 @@ "postfix": false, "binop": null }, - "start": 29639, - "end": 29640, + "start": 29628, + "end": 29629, "loc": { "start": { "line": 689, @@ -258428,8 +258428,8 @@ "binop": null }, "value": "src", - "start": 29654, - "end": 29657, + "start": 29643, + "end": 29646, "loc": { "start": { "line": 691, @@ -258454,8 +258454,8 @@ "binop": null, "updateContext": null }, - "start": 29657, - "end": 29658, + "start": 29646, + "end": 29647, "loc": { "start": { "line": 691, @@ -258480,8 +258480,8 @@ "binop": null }, "value": "push", - "start": 29658, - "end": 29662, + "start": 29647, + "end": 29651, "loc": { "start": { "line": 691, @@ -258505,8 +258505,8 @@ "postfix": false, "binop": null }, - "start": 29662, - "end": 29663, + "start": 29651, + "end": 29652, "loc": { "start": { "line": 691, @@ -258532,8 +258532,8 @@ "updateContext": null }, "value": "void computePBRLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {", - "start": 29663, - "end": 29787, + "start": 29652, + "end": 29776, "loc": { "start": { "line": 691, @@ -258557,8 +258557,8 @@ "postfix": false, "binop": null }, - "start": 29787, - "end": 29788, + "start": 29776, + "end": 29777, "loc": { "start": { "line": 691, @@ -258583,8 +258583,8 @@ "binop": null, "updateContext": null }, - "start": 29788, - "end": 29789, + "start": 29777, + "end": 29778, "loc": { "start": { "line": 691, @@ -258611,8 +258611,8 @@ "updateContext": null }, "value": "if", - "start": 29803, - "end": 29805, + "start": 29792, + "end": 29794, "loc": { "start": { "line": 693, @@ -258636,8 +258636,8 @@ "postfix": false, "binop": null }, - "start": 29806, - "end": 29807, + "start": 29795, + "end": 29796, "loc": { "start": { "line": 693, @@ -258662,8 +258662,8 @@ "binop": null }, "value": "lightsState", - "start": 29807, - "end": 29818, + "start": 29796, + "end": 29807, "loc": { "start": { "line": 693, @@ -258688,8 +258688,8 @@ "binop": null, "updateContext": null }, - "start": 29818, - "end": 29819, + "start": 29807, + "end": 29808, "loc": { "start": { "line": 693, @@ -258714,8 +258714,8 @@ "binop": null }, "value": "lightMaps", - "start": 29819, - "end": 29828, + "start": 29808, + "end": 29817, "loc": { "start": { "line": 693, @@ -258740,8 +258740,8 @@ "binop": null, "updateContext": null }, - "start": 29828, - "end": 29829, + "start": 29817, + "end": 29818, "loc": { "start": { "line": 693, @@ -258766,8 +258766,8 @@ "binop": null }, "value": "length", - "start": 29829, - "end": 29835, + "start": 29818, + "end": 29824, "loc": { "start": { "line": 693, @@ -258793,8 +258793,8 @@ "updateContext": null }, "value": ">", - "start": 29836, - "end": 29837, + "start": 29825, + "end": 29826, "loc": { "start": { "line": 693, @@ -258820,8 +258820,8 @@ "updateContext": null }, "value": 0, - "start": 29838, - "end": 29839, + "start": 29827, + "end": 29828, "loc": { "start": { "line": 693, @@ -258845,8 +258845,8 @@ "postfix": false, "binop": null }, - "start": 29839, - "end": 29840, + "start": 29828, + "end": 29829, "loc": { "start": { "line": 693, @@ -258870,8 +258870,8 @@ "postfix": false, "binop": null }, - "start": 29841, - "end": 29842, + "start": 29830, + "end": 29831, "loc": { "start": { "line": 693, @@ -258896,8 +258896,8 @@ "binop": null }, "value": "src", - "start": 29859, - "end": 29862, + "start": 29848, + "end": 29851, "loc": { "start": { "line": 694, @@ -258922,8 +258922,8 @@ "binop": null, "updateContext": null }, - "start": 29862, - "end": 29863, + "start": 29851, + "end": 29852, "loc": { "start": { "line": 694, @@ -258948,8 +258948,8 @@ "binop": null }, "value": "push", - "start": 29863, - "end": 29867, + "start": 29852, + "end": 29856, "loc": { "start": { "line": 694, @@ -258973,8 +258973,8 @@ "postfix": false, "binop": null }, - "start": 29867, - "end": 29868, + "start": 29856, + "end": 29857, "loc": { "start": { "line": 694, @@ -259000,8 +259000,8 @@ "updateContext": null }, "value": " vec3 irradiance = ", - "start": 29868, - "end": 29891, + "start": 29857, + "end": 29880, "loc": { "start": { "line": 694, @@ -259027,8 +259027,8 @@ "updateContext": null }, "value": "+", - "start": 29892, - "end": 29893, + "start": 29881, + "end": 29882, "loc": { "start": { "line": 694, @@ -259053,8 +259053,8 @@ "binop": null }, "value": "TEXTURE_DECODE_FUNCS", - "start": 29894, - "end": 29914, + "start": 29883, + "end": 29903, "loc": { "start": { "line": 694, @@ -259079,8 +259079,8 @@ "binop": null, "updateContext": null }, - "start": 29914, - "end": 29915, + "start": 29903, + "end": 29904, "loc": { "start": { "line": 694, @@ -259105,8 +259105,8 @@ "binop": null }, "value": "lightsState", - "start": 29915, - "end": 29926, + "start": 29904, + "end": 29915, "loc": { "start": { "line": 694, @@ -259131,8 +259131,8 @@ "binop": null, "updateContext": null }, - "start": 29926, - "end": 29927, + "start": 29915, + "end": 29916, "loc": { "start": { "line": 694, @@ -259157,8 +259157,8 @@ "binop": null }, "value": "lightMaps", - "start": 29927, - "end": 29936, + "start": 29916, + "end": 29925, "loc": { "start": { "line": 694, @@ -259183,8 +259183,8 @@ "binop": null, "updateContext": null }, - "start": 29936, - "end": 29937, + "start": 29925, + "end": 29926, "loc": { "start": { "line": 694, @@ -259210,8 +259210,8 @@ "updateContext": null }, "value": 0, - "start": 29937, - "end": 29938, + "start": 29926, + "end": 29927, "loc": { "start": { "line": 694, @@ -259236,8 +259236,8 @@ "binop": null, "updateContext": null }, - "start": 29938, - "end": 29939, + "start": 29927, + "end": 29928, "loc": { "start": { "line": 694, @@ -259262,8 +259262,8 @@ "binop": null, "updateContext": null }, - "start": 29939, - "end": 29940, + "start": 29928, + "end": 29929, "loc": { "start": { "line": 694, @@ -259288,8 +259288,8 @@ "binop": null }, "value": "encoding", - "start": 29940, - "end": 29948, + "start": 29929, + "end": 29937, "loc": { "start": { "line": 694, @@ -259314,8 +259314,8 @@ "binop": null, "updateContext": null }, - "start": 29948, - "end": 29949, + "start": 29937, + "end": 29938, "loc": { "start": { "line": 694, @@ -259341,8 +259341,8 @@ "updateContext": null }, "value": "+", - "start": 29950, - "end": 29951, + "start": 29939, + "end": 29940, "loc": { "start": { "line": 694, @@ -259368,8 +259368,8 @@ "updateContext": null }, "value": "(textureCube(lightMap, geometry.worldNormal)).rgb;", - "start": 29952, - "end": 30004, + "start": 29941, + "end": 29993, "loc": { "start": { "line": 694, @@ -259393,8 +259393,8 @@ "postfix": false, "binop": null }, - "start": 30004, - "end": 30005, + "start": 29993, + "end": 29994, "loc": { "start": { "line": 694, @@ -259419,8 +259419,8 @@ "binop": null, "updateContext": null }, - "start": 30005, - "end": 30006, + "start": 29994, + "end": 29995, "loc": { "start": { "line": 694, @@ -259445,8 +259445,8 @@ "binop": null }, "value": "src", - "start": 30023, - "end": 30026, + "start": 30012, + "end": 30015, "loc": { "start": { "line": 695, @@ -259471,8 +259471,8 @@ "binop": null, "updateContext": null }, - "start": 30026, - "end": 30027, + "start": 30015, + "end": 30016, "loc": { "start": { "line": 695, @@ -259497,8 +259497,8 @@ "binop": null }, "value": "push", - "start": 30027, - "end": 30031, + "start": 30016, + "end": 30020, "loc": { "start": { "line": 695, @@ -259522,8 +259522,8 @@ "postfix": false, "binop": null }, - "start": 30031, - "end": 30032, + "start": 30020, + "end": 30021, "loc": { "start": { "line": 695, @@ -259549,8 +259549,8 @@ "updateContext": null }, "value": " irradiance *= PI;", - "start": 30032, - "end": 30054, + "start": 30021, + "end": 30043, "loc": { "start": { "line": 695, @@ -259574,8 +259574,8 @@ "postfix": false, "binop": null }, - "start": 30054, - "end": 30055, + "start": 30043, + "end": 30044, "loc": { "start": { "line": 695, @@ -259600,8 +259600,8 @@ "binop": null, "updateContext": null }, - "start": 30055, - "end": 30056, + "start": 30044, + "end": 30045, "loc": { "start": { "line": 695, @@ -259626,8 +259626,8 @@ "binop": null }, "value": "src", - "start": 30073, - "end": 30076, + "start": 30062, + "end": 30065, "loc": { "start": { "line": 696, @@ -259652,8 +259652,8 @@ "binop": null, "updateContext": null }, - "start": 30076, - "end": 30077, + "start": 30065, + "end": 30066, "loc": { "start": { "line": 696, @@ -259678,8 +259678,8 @@ "binop": null }, "value": "push", - "start": 30077, - "end": 30081, + "start": 30066, + "end": 30070, "loc": { "start": { "line": 696, @@ -259703,8 +259703,8 @@ "postfix": false, "binop": null }, - "start": 30081, - "end": 30082, + "start": 30070, + "end": 30071, "loc": { "start": { "line": 696, @@ -259730,8 +259730,8 @@ "updateContext": null }, "value": " vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);", - "start": 30082, - "end": 30153, + "start": 30071, + "end": 30142, "loc": { "start": { "line": 696, @@ -259755,8 +259755,8 @@ "postfix": false, "binop": null }, - "start": 30153, - "end": 30154, + "start": 30142, + "end": 30143, "loc": { "start": { "line": 696, @@ -259781,8 +259781,8 @@ "binop": null, "updateContext": null }, - "start": 30154, - "end": 30155, + "start": 30143, + "end": 30144, "loc": { "start": { "line": 696, @@ -259807,8 +259807,8 @@ "binop": null }, "value": "src", - "start": 30172, - "end": 30175, + "start": 30161, + "end": 30164, "loc": { "start": { "line": 697, @@ -259833,8 +259833,8 @@ "binop": null, "updateContext": null }, - "start": 30175, - "end": 30176, + "start": 30164, + "end": 30165, "loc": { "start": { "line": 697, @@ -259859,8 +259859,8 @@ "binop": null }, "value": "push", - "start": 30176, - "end": 30180, + "start": 30165, + "end": 30169, "loc": { "start": { "line": 697, @@ -259884,8 +259884,8 @@ "postfix": false, "binop": null }, - "start": 30180, - "end": 30181, + "start": 30169, + "end": 30170, "loc": { "start": { "line": 697, @@ -259911,8 +259911,8 @@ "updateContext": null }, "value": " reflectedLight.diffuse += irradiance * diffuseBRDFContrib;", - "start": 30181, - "end": 30244, + "start": 30170, + "end": 30233, "loc": { "start": { "line": 697, @@ -259936,8 +259936,8 @@ "postfix": false, "binop": null }, - "start": 30244, - "end": 30245, + "start": 30233, + "end": 30234, "loc": { "start": { "line": 697, @@ -259962,8 +259962,8 @@ "binop": null, "updateContext": null }, - "start": 30245, - "end": 30246, + "start": 30234, + "end": 30235, "loc": { "start": { "line": 697, @@ -259987,8 +259987,8 @@ "postfix": false, "binop": null }, - "start": 30259, - "end": 30260, + "start": 30248, + "end": 30249, "loc": { "start": { "line": 698, @@ -260015,8 +260015,8 @@ "updateContext": null }, "value": "if", - "start": 30274, - "end": 30276, + "start": 30263, + "end": 30265, "loc": { "start": { "line": 700, @@ -260040,8 +260040,8 @@ "postfix": false, "binop": null }, - "start": 30277, - "end": 30278, + "start": 30266, + "end": 30267, "loc": { "start": { "line": 700, @@ -260066,8 +260066,8 @@ "binop": null }, "value": "lightsState", - "start": 30278, - "end": 30289, + "start": 30267, + "end": 30278, "loc": { "start": { "line": 700, @@ -260092,8 +260092,8 @@ "binop": null, "updateContext": null }, - "start": 30289, - "end": 30290, + "start": 30278, + "end": 30279, "loc": { "start": { "line": 700, @@ -260118,8 +260118,8 @@ "binop": null }, "value": "reflectionMaps", - "start": 30290, - "end": 30304, + "start": 30279, + "end": 30293, "loc": { "start": { "line": 700, @@ -260144,8 +260144,8 @@ "binop": null, "updateContext": null }, - "start": 30304, - "end": 30305, + "start": 30293, + "end": 30294, "loc": { "start": { "line": 700, @@ -260170,8 +260170,8 @@ "binop": null }, "value": "length", - "start": 30305, - "end": 30311, + "start": 30294, + "end": 30300, "loc": { "start": { "line": 700, @@ -260197,8 +260197,8 @@ "updateContext": null }, "value": ">", - "start": 30312, - "end": 30313, + "start": 30301, + "end": 30302, "loc": { "start": { "line": 700, @@ -260224,8 +260224,8 @@ "updateContext": null }, "value": 0, - "start": 30314, - "end": 30315, + "start": 30303, + "end": 30304, "loc": { "start": { "line": 700, @@ -260249,8 +260249,8 @@ "postfix": false, "binop": null }, - "start": 30315, - "end": 30316, + "start": 30304, + "end": 30305, "loc": { "start": { "line": 700, @@ -260274,8 +260274,8 @@ "postfix": false, "binop": null }, - "start": 30317, - "end": 30318, + "start": 30306, + "end": 30307, "loc": { "start": { "line": 700, @@ -260300,8 +260300,8 @@ "binop": null }, "value": "src", - "start": 30335, - "end": 30338, + "start": 30324, + "end": 30327, "loc": { "start": { "line": 701, @@ -260326,8 +260326,8 @@ "binop": null, "updateContext": null }, - "start": 30338, - "end": 30339, + "start": 30327, + "end": 30328, "loc": { "start": { "line": 701, @@ -260352,8 +260352,8 @@ "binop": null }, "value": "push", - "start": 30339, - "end": 30343, + "start": 30328, + "end": 30332, "loc": { "start": { "line": 701, @@ -260377,8 +260377,8 @@ "postfix": false, "binop": null }, - "start": 30343, - "end": 30344, + "start": 30332, + "end": 30333, "loc": { "start": { "line": 701, @@ -260403,9 +260403,9 @@ "binop": null, "updateContext": null }, - "value": " vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);", - "start": 30344, - "end": 30430, + "value": " vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);", + "start": 30333, + "end": 30418, "loc": { "start": { "line": 701, @@ -260413,7 +260413,7 @@ }, "end": { "line": 701, - "column": 111 + "column": 110 } } }, @@ -260429,16 +260429,16 @@ "postfix": false, "binop": null }, - "start": 30430, - "end": 30431, + "start": 30418, + "end": 30419, "loc": { "start": { "line": 701, - "column": 111 + "column": 110 }, "end": { "line": 701, - "column": 112 + "column": 111 } } }, @@ -260455,16 +260455,16 @@ "binop": null, "updateContext": null }, - "start": 30431, - "end": 30432, + "start": 30419, + "end": 30420, "loc": { "start": { "line": 701, - "column": 112 + "column": 111 }, "end": { "line": 701, - "column": 113 + "column": 112 } } }, @@ -260481,8 +260481,8 @@ "binop": null }, "value": "src", - "start": 30449, - "end": 30452, + "start": 30437, + "end": 30440, "loc": { "start": { "line": 702, @@ -260507,8 +260507,8 @@ "binop": null, "updateContext": null }, - "start": 30452, - "end": 30453, + "start": 30440, + "end": 30441, "loc": { "start": { "line": 702, @@ -260533,8 +260533,8 @@ "binop": null }, "value": "push", - "start": 30453, - "end": 30457, + "start": 30441, + "end": 30445, "loc": { "start": { "line": 702, @@ -260558,8 +260558,8 @@ "postfix": false, "binop": null }, - "start": 30457, - "end": 30458, + "start": 30445, + "end": 30446, "loc": { "start": { "line": 702, @@ -260585,8 +260585,8 @@ "updateContext": null }, "value": " reflectVec = inverseTransformDirection(reflectVec, viewMatrix);", - "start": 30458, - "end": 30543, + "start": 30446, + "end": 30531, "loc": { "start": { "line": 702, @@ -260610,8 +260610,8 @@ "postfix": false, "binop": null }, - "start": 30543, - "end": 30544, + "start": 30531, + "end": 30532, "loc": { "start": { "line": 702, @@ -260636,8 +260636,8 @@ "binop": null, "updateContext": null }, - "start": 30544, - "end": 30545, + "start": 30532, + "end": 30533, "loc": { "start": { "line": 702, @@ -260662,8 +260662,8 @@ "binop": null }, "value": "src", - "start": 30562, - "end": 30565, + "start": 30550, + "end": 30553, "loc": { "start": { "line": 703, @@ -260688,8 +260688,8 @@ "binop": null, "updateContext": null }, - "start": 30565, - "end": 30566, + "start": 30553, + "end": 30554, "loc": { "start": { "line": 703, @@ -260714,8 +260714,8 @@ "binop": null }, "value": "push", - "start": 30566, - "end": 30570, + "start": 30554, + "end": 30558, "loc": { "start": { "line": 703, @@ -260739,8 +260739,8 @@ "postfix": false, "binop": null }, - "start": 30570, - "end": 30571, + "start": 30558, + "end": 30559, "loc": { "start": { "line": 703, @@ -260766,8 +260766,8 @@ "updateContext": null }, "value": " float blinnExpFromRoughness = GGXRoughnessToBlinnExponent(material.specularRoughness);", - "start": 30571, - "end": 30662, + "start": 30559, + "end": 30650, "loc": { "start": { "line": 703, @@ -260791,8 +260791,8 @@ "postfix": false, "binop": null }, - "start": 30662, - "end": 30663, + "start": 30650, + "end": 30651, "loc": { "start": { "line": 703, @@ -260817,8 +260817,8 @@ "binop": null, "updateContext": null }, - "start": 30663, - "end": 30664, + "start": 30651, + "end": 30652, "loc": { "start": { "line": 703, @@ -260843,8 +260843,8 @@ "binop": null }, "value": "src", - "start": 30681, - "end": 30684, + "start": 30669, + "end": 30672, "loc": { "start": { "line": 704, @@ -260869,8 +260869,8 @@ "binop": null, "updateContext": null }, - "start": 30684, - "end": 30685, + "start": 30672, + "end": 30673, "loc": { "start": { "line": 704, @@ -260895,8 +260895,8 @@ "binop": null }, "value": "push", - "start": 30685, - "end": 30689, + "start": 30673, + "end": 30677, "loc": { "start": { "line": 704, @@ -260920,8 +260920,8 @@ "postfix": false, "binop": null }, - "start": 30689, - "end": 30690, + "start": 30677, + "end": 30678, "loc": { "start": { "line": 704, @@ -260947,8 +260947,8 @@ "updateContext": null }, "value": " vec3 radiance = getLightProbeIndirectRadiance(reflectVec, blinnExpFromRoughness, 8);", - "start": 30690, - "end": 30793, + "start": 30678, + "end": 30781, "loc": { "start": { "line": 704, @@ -260972,8 +260972,8 @@ "postfix": false, "binop": null }, - "start": 30793, - "end": 30794, + "start": 30781, + "end": 30782, "loc": { "start": { "line": 704, @@ -260998,8 +260998,8 @@ "binop": null, "updateContext": null }, - "start": 30794, - "end": 30795, + "start": 30782, + "end": 30783, "loc": { "start": { "line": 704, @@ -261024,8 +261024,8 @@ "binop": null }, "value": "src", - "start": 30812, - "end": 30815, + "start": 30800, + "end": 30803, "loc": { "start": { "line": 705, @@ -261050,8 +261050,8 @@ "binop": null, "updateContext": null }, - "start": 30815, - "end": 30816, + "start": 30803, + "end": 30804, "loc": { "start": { "line": 705, @@ -261076,8 +261076,8 @@ "binop": null }, "value": "push", - "start": 30816, - "end": 30820, + "start": 30804, + "end": 30808, "loc": { "start": { "line": 705, @@ -261101,8 +261101,8 @@ "postfix": false, "binop": null }, - "start": 30820, - "end": 30821, + "start": 30808, + "end": 30809, "loc": { "start": { "line": 705, @@ -261128,8 +261128,8 @@ "updateContext": null }, "value": " vec3 specularBRDFContrib = BRDF_Specular_GGX_Environment(geometry, material.specularColor, material.specularRoughness);", - "start": 30821, - "end": 30948, + "start": 30809, + "end": 30936, "loc": { "start": { "line": 705, @@ -261153,8 +261153,8 @@ "postfix": false, "binop": null }, - "start": 30948, - "end": 30949, + "start": 30936, + "end": 30937, "loc": { "start": { "line": 705, @@ -261179,8 +261179,8 @@ "binop": null, "updateContext": null }, - "start": 30949, - "end": 30950, + "start": 30937, + "end": 30938, "loc": { "start": { "line": 705, @@ -261205,8 +261205,8 @@ "binop": null }, "value": "src", - "start": 30967, - "end": 30970, + "start": 30955, + "end": 30958, "loc": { "start": { "line": 706, @@ -261231,8 +261231,8 @@ "binop": null, "updateContext": null }, - "start": 30970, - "end": 30971, + "start": 30958, + "end": 30959, "loc": { "start": { "line": 706, @@ -261257,8 +261257,8 @@ "binop": null }, "value": "push", - "start": 30971, - "end": 30975, + "start": 30959, + "end": 30963, "loc": { "start": { "line": 706, @@ -261282,8 +261282,8 @@ "postfix": false, "binop": null }, - "start": 30975, - "end": 30976, + "start": 30963, + "end": 30964, "loc": { "start": { "line": 706, @@ -261309,8 +261309,8 @@ "updateContext": null }, "value": " reflectedLight.specular += radiance * specularBRDFContrib;", - "start": 30976, - "end": 31043, + "start": 30964, + "end": 31031, "loc": { "start": { "line": 706, @@ -261334,8 +261334,8 @@ "postfix": false, "binop": null }, - "start": 31043, - "end": 31044, + "start": 31031, + "end": 31032, "loc": { "start": { "line": 706, @@ -261360,8 +261360,8 @@ "binop": null, "updateContext": null }, - "start": 31044, - "end": 31045, + "start": 31032, + "end": 31033, "loc": { "start": { "line": 706, @@ -261385,8 +261385,8 @@ "postfix": false, "binop": null }, - "start": 31058, - "end": 31059, + "start": 31046, + "end": 31047, "loc": { "start": { "line": 707, @@ -261411,8 +261411,8 @@ "binop": null }, "value": "src", - "start": 31073, - "end": 31076, + "start": 31061, + "end": 31064, "loc": { "start": { "line": 709, @@ -261437,8 +261437,8 @@ "binop": null, "updateContext": null }, - "start": 31076, - "end": 31077, + "start": 31064, + "end": 31065, "loc": { "start": { "line": 709, @@ -261463,8 +261463,8 @@ "binop": null }, "value": "push", - "start": 31077, - "end": 31081, + "start": 31065, + "end": 31069, "loc": { "start": { "line": 709, @@ -261488,8 +261488,8 @@ "postfix": false, "binop": null }, - "start": 31081, - "end": 31082, + "start": 31069, + "end": 31070, "loc": { "start": { "line": 709, @@ -261515,8 +261515,8 @@ "updateContext": null }, "value": "}", - "start": 31082, - "end": 31085, + "start": 31070, + "end": 31073, "loc": { "start": { "line": 709, @@ -261540,8 +261540,8 @@ "postfix": false, "binop": null }, - "start": 31085, - "end": 31086, + "start": 31073, + "end": 31074, "loc": { "start": { "line": 709, @@ -261566,8 +261566,8 @@ "binop": null, "updateContext": null }, - "start": 31086, - "end": 31087, + "start": 31074, + "end": 31075, "loc": { "start": { "line": 709, @@ -261591,8 +261591,8 @@ "postfix": false, "binop": null }, - "start": 31096, - "end": 31097, + "start": 31084, + "end": 31085, "loc": { "start": { "line": 710, @@ -261607,8 +261607,8 @@ { "type": "CommentLine", "value": " MAIN LIGHTING COMPUTATION FUNCTION", - "start": 31107, - "end": 31144, + "start": 31095, + "end": 31132, "loc": { "start": { "line": 712, @@ -261633,8 +261633,8 @@ "binop": null }, "value": "src", - "start": 31154, - "end": 31157, + "start": 31142, + "end": 31145, "loc": { "start": { "line": 714, @@ -261659,8 +261659,8 @@ "binop": null, "updateContext": null }, - "start": 31157, - "end": 31158, + "start": 31145, + "end": 31146, "loc": { "start": { "line": 714, @@ -261685,8 +261685,8 @@ "binop": null }, "value": "push", - "start": 31158, - "end": 31162, + "start": 31146, + "end": 31150, "loc": { "start": { "line": 714, @@ -261710,8 +261710,8 @@ "postfix": false, "binop": null }, - "start": 31162, - "end": 31163, + "start": 31150, + "end": 31151, "loc": { "start": { "line": 714, @@ -261737,8 +261737,8 @@ "updateContext": null }, "value": "void computePBRLighting(const in IncidentLight incidentLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {", - "start": 31163, - "end": 31321, + "start": 31151, + "end": 31309, "loc": { "start": { "line": 714, @@ -261762,8 +261762,8 @@ "postfix": false, "binop": null }, - "start": 31321, - "end": 31322, + "start": 31309, + "end": 31310, "loc": { "start": { "line": 714, @@ -261788,8 +261788,8 @@ "binop": null, "updateContext": null }, - "start": 31322, - "end": 31323, + "start": 31310, + "end": 31311, "loc": { "start": { "line": 714, @@ -261814,8 +261814,8 @@ "binop": null }, "value": "src", - "start": 31332, - "end": 31335, + "start": 31320, + "end": 31323, "loc": { "start": { "line": 715, @@ -261840,8 +261840,8 @@ "binop": null, "updateContext": null }, - "start": 31335, - "end": 31336, + "start": 31323, + "end": 31324, "loc": { "start": { "line": 715, @@ -261866,8 +261866,8 @@ "binop": null }, "value": "push", - "start": 31336, - "end": 31340, + "start": 31324, + "end": 31328, "loc": { "start": { "line": 715, @@ -261891,8 +261891,8 @@ "postfix": false, "binop": null }, - "start": 31340, - "end": 31341, + "start": 31328, + "end": 31329, "loc": { "start": { "line": 715, @@ -261918,8 +261918,8 @@ "updateContext": null }, "value": " float dotNL = saturate(dot(geometry.viewNormal, incidentLight.direction));", - "start": 31341, - "end": 31424, + "start": 31329, + "end": 31412, "loc": { "start": { "line": 715, @@ -261943,8 +261943,8 @@ "postfix": false, "binop": null }, - "start": 31424, - "end": 31425, + "start": 31412, + "end": 31413, "loc": { "start": { "line": 715, @@ -261969,8 +261969,8 @@ "binop": null, "updateContext": null }, - "start": 31425, - "end": 31426, + "start": 31413, + "end": 31414, "loc": { "start": { "line": 715, @@ -261995,8 +261995,8 @@ "binop": null }, "value": "src", - "start": 31435, - "end": 31438, + "start": 31423, + "end": 31426, "loc": { "start": { "line": 716, @@ -262021,8 +262021,8 @@ "binop": null, "updateContext": null }, - "start": 31438, - "end": 31439, + "start": 31426, + "end": 31427, "loc": { "start": { "line": 716, @@ -262047,8 +262047,8 @@ "binop": null }, "value": "push", - "start": 31439, - "end": 31443, + "start": 31427, + "end": 31431, "loc": { "start": { "line": 716, @@ -262072,8 +262072,8 @@ "postfix": false, "binop": null }, - "start": 31443, - "end": 31444, + "start": 31431, + "end": 31432, "loc": { "start": { "line": 716, @@ -262099,8 +262099,8 @@ "updateContext": null }, "value": " vec3 irradiance = dotNL * incidentLight.color * PI;", - "start": 31444, - "end": 31500, + "start": 31432, + "end": 31488, "loc": { "start": { "line": 716, @@ -262124,8 +262124,8 @@ "postfix": false, "binop": null }, - "start": 31500, - "end": 31501, + "start": 31488, + "end": 31489, "loc": { "start": { "line": 716, @@ -262150,8 +262150,8 @@ "binop": null, "updateContext": null }, - "start": 31501, - "end": 31502, + "start": 31489, + "end": 31490, "loc": { "start": { "line": 716, @@ -262176,8 +262176,8 @@ "binop": null }, "value": "src", - "start": 31511, - "end": 31514, + "start": 31499, + "end": 31502, "loc": { "start": { "line": 717, @@ -262202,8 +262202,8 @@ "binop": null, "updateContext": null }, - "start": 31514, - "end": 31515, + "start": 31502, + "end": 31503, "loc": { "start": { "line": 717, @@ -262228,8 +262228,8 @@ "binop": null }, "value": "push", - "start": 31515, - "end": 31519, + "start": 31503, + "end": 31507, "loc": { "start": { "line": 717, @@ -262253,8 +262253,8 @@ "postfix": false, "binop": null }, - "start": 31519, - "end": 31520, + "start": 31507, + "end": 31508, "loc": { "start": { "line": 717, @@ -262280,8 +262280,8 @@ "updateContext": null }, "value": " reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);", - "start": 31520, - "end": 31605, + "start": 31508, + "end": 31593, "loc": { "start": { "line": 717, @@ -262305,8 +262305,8 @@ "postfix": false, "binop": null }, - "start": 31605, - "end": 31606, + "start": 31593, + "end": 31594, "loc": { "start": { "line": 717, @@ -262331,8 +262331,8 @@ "binop": null, "updateContext": null }, - "start": 31606, - "end": 31607, + "start": 31594, + "end": 31595, "loc": { "start": { "line": 717, @@ -262357,8 +262357,8 @@ "binop": null }, "value": "src", - "start": 31616, - "end": 31619, + "start": 31604, + "end": 31607, "loc": { "start": { "line": 718, @@ -262383,8 +262383,8 @@ "binop": null, "updateContext": null }, - "start": 31619, - "end": 31620, + "start": 31607, + "end": 31608, "loc": { "start": { "line": 718, @@ -262409,8 +262409,8 @@ "binop": null }, "value": "push", - "start": 31620, - "end": 31624, + "start": 31608, + "end": 31612, "loc": { "start": { "line": 718, @@ -262434,8 +262434,8 @@ "postfix": false, "binop": null }, - "start": 31624, - "end": 31625, + "start": 31612, + "end": 31613, "loc": { "start": { "line": 718, @@ -262461,8 +262461,8 @@ "updateContext": null }, "value": " reflectedLight.specular += irradiance * BRDF_Specular_GGX(incidentLight, geometry, material.specularColor, material.specularRoughness);", - "start": 31625, - "end": 31765, + "start": 31613, + "end": 31753, "loc": { "start": { "line": 718, @@ -262486,8 +262486,8 @@ "postfix": false, "binop": null }, - "start": 31765, - "end": 31766, + "start": 31753, + "end": 31754, "loc": { "start": { "line": 718, @@ -262512,8 +262512,8 @@ "binop": null, "updateContext": null }, - "start": 31766, - "end": 31767, + "start": 31754, + "end": 31755, "loc": { "start": { "line": 718, @@ -262538,8 +262538,8 @@ "binop": null }, "value": "src", - "start": 31776, - "end": 31779, + "start": 31764, + "end": 31767, "loc": { "start": { "line": 719, @@ -262564,8 +262564,8 @@ "binop": null, "updateContext": null }, - "start": 31779, - "end": 31780, + "start": 31767, + "end": 31768, "loc": { "start": { "line": 719, @@ -262590,8 +262590,8 @@ "binop": null }, "value": "push", - "start": 31780, - "end": 31784, + "start": 31768, + "end": 31772, "loc": { "start": { "line": 719, @@ -262615,8 +262615,8 @@ "postfix": false, "binop": null }, - "start": 31784, - "end": 31785, + "start": 31772, + "end": 31773, "loc": { "start": { "line": 719, @@ -262642,8 +262642,8 @@ "updateContext": null }, "value": "}", - "start": 31785, - "end": 31788, + "start": 31773, + "end": 31776, "loc": { "start": { "line": 719, @@ -262667,8 +262667,8 @@ "postfix": false, "binop": null }, - "start": 31788, - "end": 31789, + "start": 31776, + "end": 31777, "loc": { "start": { "line": 719, @@ -262693,8 +262693,8 @@ "binop": null, "updateContext": null }, - "start": 31789, - "end": 31790, + "start": 31777, + "end": 31778, "loc": { "start": { "line": 719, @@ -262719,8 +262719,8 @@ "binop": null }, "value": "src", - "start": 31800, - "end": 31803, + "start": 31788, + "end": 31791, "loc": { "start": { "line": 721, @@ -262745,8 +262745,8 @@ "binop": null, "updateContext": null }, - "start": 31803, - "end": 31804, + "start": 31791, + "end": 31792, "loc": { "start": { "line": 721, @@ -262771,8 +262771,8 @@ "binop": null }, "value": "push", - "start": 31804, - "end": 31808, + "start": 31792, + "end": 31796, "loc": { "start": { "line": 721, @@ -262796,8 +262796,8 @@ "postfix": false, "binop": null }, - "start": 31808, - "end": 31809, + "start": 31796, + "end": 31797, "loc": { "start": { "line": 721, @@ -262823,8 +262823,8 @@ "updateContext": null }, "value": "void main(void) {", - "start": 31809, - "end": 31828, + "start": 31797, + "end": 31816, "loc": { "start": { "line": 721, @@ -262848,8 +262848,8 @@ "postfix": false, "binop": null }, - "start": 31828, - "end": 31829, + "start": 31816, + "end": 31817, "loc": { "start": { "line": 721, @@ -262874,8 +262874,8 @@ "binop": null, "updateContext": null }, - "start": 31829, - "end": 31830, + "start": 31817, + "end": 31818, "loc": { "start": { "line": 721, @@ -262902,8 +262902,8 @@ "updateContext": null }, "value": "if", - "start": 31840, - "end": 31842, + "start": 31828, + "end": 31830, "loc": { "start": { "line": 723, @@ -262927,8 +262927,8 @@ "postfix": false, "binop": null }, - "start": 31843, - "end": 31844, + "start": 31831, + "end": 31832, "loc": { "start": { "line": 723, @@ -262953,8 +262953,8 @@ "binop": null }, "value": "clipping", - "start": 31844, - "end": 31852, + "start": 31832, + "end": 31840, "loc": { "start": { "line": 723, @@ -262978,8 +262978,8 @@ "postfix": false, "binop": null }, - "start": 31852, - "end": 31853, + "start": 31840, + "end": 31841, "loc": { "start": { "line": 723, @@ -263003,8 +263003,8 @@ "postfix": false, "binop": null }, - "start": 31854, - "end": 31855, + "start": 31842, + "end": 31843, "loc": { "start": { "line": 723, @@ -263029,8 +263029,8 @@ "binop": null }, "value": "src", - "start": 31868, - "end": 31871, + "start": 31856, + "end": 31859, "loc": { "start": { "line": 724, @@ -263055,8 +263055,8 @@ "binop": null, "updateContext": null }, - "start": 31871, - "end": 31872, + "start": 31859, + "end": 31860, "loc": { "start": { "line": 724, @@ -263081,8 +263081,8 @@ "binop": null }, "value": "push", - "start": 31872, - "end": 31876, + "start": 31860, + "end": 31864, "loc": { "start": { "line": 724, @@ -263106,8 +263106,8 @@ "postfix": false, "binop": null }, - "start": 31876, - "end": 31877, + "start": 31864, + "end": 31865, "loc": { "start": { "line": 724, @@ -263133,8 +263133,8 @@ "updateContext": null }, "value": " bool clippable = (float(vFlags2.x) > 0.0);", - "start": 31877, - "end": 31923, + "start": 31865, + "end": 31911, "loc": { "start": { "line": 724, @@ -263158,8 +263158,8 @@ "postfix": false, "binop": null }, - "start": 31923, - "end": 31924, + "start": 31911, + "end": 31912, "loc": { "start": { "line": 724, @@ -263184,8 +263184,8 @@ "binop": null, "updateContext": null }, - "start": 31924, - "end": 31925, + "start": 31912, + "end": 31913, "loc": { "start": { "line": 724, @@ -263210,8 +263210,8 @@ "binop": null }, "value": "src", - "start": 31938, - "end": 31941, + "start": 31926, + "end": 31929, "loc": { "start": { "line": 725, @@ -263236,8 +263236,8 @@ "binop": null, "updateContext": null }, - "start": 31941, - "end": 31942, + "start": 31929, + "end": 31930, "loc": { "start": { "line": 725, @@ -263262,8 +263262,8 @@ "binop": null }, "value": "push", - "start": 31942, - "end": 31946, + "start": 31930, + "end": 31934, "loc": { "start": { "line": 725, @@ -263287,8 +263287,8 @@ "postfix": false, "binop": null }, - "start": 31946, - "end": 31947, + "start": 31934, + "end": 31935, "loc": { "start": { "line": 725, @@ -263314,8 +263314,8 @@ "updateContext": null }, "value": " if (clippable) {", - "start": 31947, - "end": 31967, + "start": 31935, + "end": 31955, "loc": { "start": { "line": 725, @@ -263339,8 +263339,8 @@ "postfix": false, "binop": null }, - "start": 31967, - "end": 31968, + "start": 31955, + "end": 31956, "loc": { "start": { "line": 725, @@ -263365,8 +263365,8 @@ "binop": null, "updateContext": null }, - "start": 31968, - "end": 31969, + "start": 31956, + "end": 31957, "loc": { "start": { "line": 725, @@ -263391,8 +263391,8 @@ "binop": null }, "value": "src", - "start": 31982, - "end": 31985, + "start": 31970, + "end": 31973, "loc": { "start": { "line": 726, @@ -263417,8 +263417,8 @@ "binop": null, "updateContext": null }, - "start": 31985, - "end": 31986, + "start": 31973, + "end": 31974, "loc": { "start": { "line": 726, @@ -263443,8 +263443,8 @@ "binop": null }, "value": "push", - "start": 31986, - "end": 31990, + "start": 31974, + "end": 31978, "loc": { "start": { "line": 726, @@ -263468,8 +263468,8 @@ "postfix": false, "binop": null }, - "start": 31990, - "end": 31991, + "start": 31978, + "end": 31979, "loc": { "start": { "line": 726, @@ -263495,8 +263495,8 @@ "updateContext": null }, "value": " float dist = 0.0;", - "start": 31991, - "end": 32012, + "start": 31979, + "end": 32000, "loc": { "start": { "line": 726, @@ -263520,8 +263520,8 @@ "postfix": false, "binop": null }, - "start": 32012, - "end": 32013, + "start": 32000, + "end": 32001, "loc": { "start": { "line": 726, @@ -263546,8 +263546,8 @@ "binop": null, "updateContext": null }, - "start": 32013, - "end": 32014, + "start": 32001, + "end": 32002, "loc": { "start": { "line": 726, @@ -263574,8 +263574,8 @@ "updateContext": null }, "value": "for", - "start": 32027, - "end": 32030, + "start": 32015, + "end": 32018, "loc": { "start": { "line": 727, @@ -263599,8 +263599,8 @@ "postfix": false, "binop": null }, - "start": 32031, - "end": 32032, + "start": 32019, + "end": 32020, "loc": { "start": { "line": 727, @@ -263627,8 +263627,8 @@ "updateContext": null }, "value": "let", - "start": 32032, - "end": 32035, + "start": 32020, + "end": 32023, "loc": { "start": { "line": 727, @@ -263653,8 +263653,8 @@ "binop": null }, "value": "i", - "start": 32036, - "end": 32037, + "start": 32024, + "end": 32025, "loc": { "start": { "line": 727, @@ -263680,8 +263680,8 @@ "updateContext": null }, "value": "=", - "start": 32038, - "end": 32039, + "start": 32026, + "end": 32027, "loc": { "start": { "line": 727, @@ -263707,8 +263707,8 @@ "updateContext": null }, "value": 0, - "start": 32040, - "end": 32041, + "start": 32028, + "end": 32029, "loc": { "start": { "line": 727, @@ -263733,8 +263733,8 @@ "binop": null, "updateContext": null }, - "start": 32041, - "end": 32042, + "start": 32029, + "end": 32030, "loc": { "start": { "line": 727, @@ -263759,8 +263759,8 @@ "binop": null }, "value": "len", - "start": 32043, - "end": 32046, + "start": 32031, + "end": 32034, "loc": { "start": { "line": 727, @@ -263786,8 +263786,8 @@ "updateContext": null }, "value": "=", - "start": 32047, - "end": 32048, + "start": 32035, + "end": 32036, "loc": { "start": { "line": 727, @@ -263812,8 +263812,8 @@ "binop": null }, "value": "sectionPlanesState", - "start": 32049, - "end": 32067, + "start": 32037, + "end": 32055, "loc": { "start": { "line": 727, @@ -263838,8 +263838,8 @@ "binop": null, "updateContext": null }, - "start": 32067, - "end": 32068, + "start": 32055, + "end": 32056, "loc": { "start": { "line": 727, @@ -263864,8 +263864,8 @@ "binop": null }, "value": "sectionPlanes", - "start": 32068, - "end": 32081, + "start": 32056, + "end": 32069, "loc": { "start": { "line": 727, @@ -263890,8 +263890,8 @@ "binop": null, "updateContext": null }, - "start": 32081, - "end": 32082, + "start": 32069, + "end": 32070, "loc": { "start": { "line": 727, @@ -263916,8 +263916,8 @@ "binop": null }, "value": "length", - "start": 32082, - "end": 32088, + "start": 32070, + "end": 32076, "loc": { "start": { "line": 727, @@ -263942,8 +263942,8 @@ "binop": null, "updateContext": null }, - "start": 32088, - "end": 32089, + "start": 32076, + "end": 32077, "loc": { "start": { "line": 727, @@ -263968,8 +263968,8 @@ "binop": null }, "value": "i", - "start": 32090, - "end": 32091, + "start": 32078, + "end": 32079, "loc": { "start": { "line": 727, @@ -263995,8 +263995,8 @@ "updateContext": null }, "value": "<", - "start": 32092, - "end": 32093, + "start": 32080, + "end": 32081, "loc": { "start": { "line": 727, @@ -264021,8 +264021,8 @@ "binop": null }, "value": "len", - "start": 32094, - "end": 32097, + "start": 32082, + "end": 32085, "loc": { "start": { "line": 727, @@ -264047,8 +264047,8 @@ "binop": null, "updateContext": null }, - "start": 32097, - "end": 32098, + "start": 32085, + "end": 32086, "loc": { "start": { "line": 727, @@ -264073,8 +264073,8 @@ "binop": null }, "value": "i", - "start": 32099, - "end": 32100, + "start": 32087, + "end": 32088, "loc": { "start": { "line": 727, @@ -264099,8 +264099,8 @@ "binop": null }, "value": "++", - "start": 32100, - "end": 32102, + "start": 32088, + "end": 32090, "loc": { "start": { "line": 727, @@ -264124,8 +264124,8 @@ "postfix": false, "binop": null }, - "start": 32102, - "end": 32103, + "start": 32090, + "end": 32091, "loc": { "start": { "line": 727, @@ -264149,8 +264149,8 @@ "postfix": false, "binop": null }, - "start": 32104, - "end": 32105, + "start": 32092, + "end": 32093, "loc": { "start": { "line": 727, @@ -264175,8 +264175,8 @@ "binop": null }, "value": "src", - "start": 32122, - "end": 32125, + "start": 32110, + "end": 32113, "loc": { "start": { "line": 728, @@ -264201,8 +264201,8 @@ "binop": null, "updateContext": null }, - "start": 32125, - "end": 32126, + "start": 32113, + "end": 32114, "loc": { "start": { "line": 728, @@ -264227,8 +264227,8 @@ "binop": null }, "value": "push", - "start": 32126, - "end": 32130, + "start": 32114, + "end": 32118, "loc": { "start": { "line": 728, @@ -264252,8 +264252,8 @@ "postfix": false, "binop": null }, - "start": 32130, - "end": 32131, + "start": 32118, + "end": 32119, "loc": { "start": { "line": 728, @@ -264279,8 +264279,8 @@ "updateContext": null }, "value": "if (sectionPlaneActive", - "start": 32131, - "end": 32155, + "start": 32119, + "end": 32143, "loc": { "start": { "line": 728, @@ -264306,8 +264306,8 @@ "updateContext": null }, "value": "+", - "start": 32156, - "end": 32157, + "start": 32144, + "end": 32145, "loc": { "start": { "line": 728, @@ -264332,8 +264332,8 @@ "binop": null }, "value": "i", - "start": 32158, - "end": 32159, + "start": 32146, + "end": 32147, "loc": { "start": { "line": 728, @@ -264359,8 +264359,8 @@ "updateContext": null }, "value": "+", - "start": 32160, - "end": 32161, + "start": 32148, + "end": 32149, "loc": { "start": { "line": 728, @@ -264386,8 +264386,8 @@ "updateContext": null }, "value": ") {", - "start": 32162, - "end": 32167, + "start": 32150, + "end": 32155, "loc": { "start": { "line": 728, @@ -264411,8 +264411,8 @@ "postfix": false, "binop": null }, - "start": 32167, - "end": 32168, + "start": 32155, + "end": 32156, "loc": { "start": { "line": 728, @@ -264437,8 +264437,8 @@ "binop": null, "updateContext": null }, - "start": 32168, - "end": 32169, + "start": 32156, + "end": 32157, "loc": { "start": { "line": 728, @@ -264463,8 +264463,8 @@ "binop": null }, "value": "src", - "start": 32186, - "end": 32189, + "start": 32174, + "end": 32177, "loc": { "start": { "line": 729, @@ -264489,8 +264489,8 @@ "binop": null, "updateContext": null }, - "start": 32189, - "end": 32190, + "start": 32177, + "end": 32178, "loc": { "start": { "line": 729, @@ -264515,8 +264515,8 @@ "binop": null }, "value": "push", - "start": 32190, - "end": 32194, + "start": 32178, + "end": 32182, "loc": { "start": { "line": 729, @@ -264540,8 +264540,8 @@ "postfix": false, "binop": null }, - "start": 32194, - "end": 32195, + "start": 32182, + "end": 32183, "loc": { "start": { "line": 729, @@ -264567,8 +264567,8 @@ "updateContext": null }, "value": " dist += clamp(dot(-sectionPlaneDir", - "start": 32195, - "end": 32234, + "start": 32183, + "end": 32222, "loc": { "start": { "line": 729, @@ -264594,8 +264594,8 @@ "updateContext": null }, "value": "+", - "start": 32235, - "end": 32236, + "start": 32223, + "end": 32224, "loc": { "start": { "line": 729, @@ -264620,8 +264620,8 @@ "binop": null }, "value": "i", - "start": 32237, - "end": 32238, + "start": 32225, + "end": 32226, "loc": { "start": { "line": 729, @@ -264647,8 +264647,8 @@ "updateContext": null }, "value": "+", - "start": 32239, - "end": 32240, + "start": 32227, + "end": 32228, "loc": { "start": { "line": 729, @@ -264674,8 +264674,8 @@ "updateContext": null }, "value": ".xyz, vWorldPosition.xyz - sectionPlanePos", - "start": 32241, - "end": 32285, + "start": 32229, + "end": 32273, "loc": { "start": { "line": 729, @@ -264701,8 +264701,8 @@ "updateContext": null }, "value": "+", - "start": 32286, - "end": 32287, + "start": 32274, + "end": 32275, "loc": { "start": { "line": 729, @@ -264727,8 +264727,8 @@ "binop": null }, "value": "i", - "start": 32288, - "end": 32289, + "start": 32276, + "end": 32277, "loc": { "start": { "line": 729, @@ -264754,8 +264754,8 @@ "updateContext": null }, "value": "+", - "start": 32290, - "end": 32291, + "start": 32278, + "end": 32279, "loc": { "start": { "line": 729, @@ -264781,8 +264781,8 @@ "updateContext": null }, "value": ".xyz), 0.0, 1000.0);", - "start": 32292, - "end": 32314, + "start": 32280, + "end": 32302, "loc": { "start": { "line": 729, @@ -264806,8 +264806,8 @@ "postfix": false, "binop": null }, - "start": 32314, - "end": 32315, + "start": 32302, + "end": 32303, "loc": { "start": { "line": 729, @@ -264832,8 +264832,8 @@ "binop": null, "updateContext": null }, - "start": 32315, - "end": 32316, + "start": 32303, + "end": 32304, "loc": { "start": { "line": 729, @@ -264858,8 +264858,8 @@ "binop": null }, "value": "src", - "start": 32333, - "end": 32336, + "start": 32321, + "end": 32324, "loc": { "start": { "line": 730, @@ -264884,8 +264884,8 @@ "binop": null, "updateContext": null }, - "start": 32336, - "end": 32337, + "start": 32324, + "end": 32325, "loc": { "start": { "line": 730, @@ -264910,8 +264910,8 @@ "binop": null }, "value": "push", - "start": 32337, - "end": 32341, + "start": 32325, + "end": 32329, "loc": { "start": { "line": 730, @@ -264935,8 +264935,8 @@ "postfix": false, "binop": null }, - "start": 32341, - "end": 32342, + "start": 32329, + "end": 32330, "loc": { "start": { "line": 730, @@ -264962,8 +264962,8 @@ "updateContext": null }, "value": "}", - "start": 32342, - "end": 32345, + "start": 32330, + "end": 32333, "loc": { "start": { "line": 730, @@ -264987,8 +264987,8 @@ "postfix": false, "binop": null }, - "start": 32345, - "end": 32346, + "start": 32333, + "end": 32334, "loc": { "start": { "line": 730, @@ -265013,8 +265013,8 @@ "binop": null, "updateContext": null }, - "start": 32346, - "end": 32347, + "start": 32334, + "end": 32335, "loc": { "start": { "line": 730, @@ -265038,8 +265038,8 @@ "postfix": false, "binop": null }, - "start": 32360, - "end": 32361, + "start": 32348, + "end": 32349, "loc": { "start": { "line": 731, @@ -265066,8 +265066,8 @@ "updateContext": null }, "value": "if", - "start": 32374, - "end": 32376, + "start": 32362, + "end": 32364, "loc": { "start": { "line": 732, @@ -265091,8 +265091,8 @@ "postfix": false, "binop": null }, - "start": 32377, - "end": 32378, + "start": 32365, + "end": 32366, "loc": { "start": { "line": 732, @@ -265117,8 +265117,8 @@ "binop": null }, "value": "clippingCaps", - "start": 32378, - "end": 32390, + "start": 32366, + "end": 32378, "loc": { "start": { "line": 732, @@ -265142,8 +265142,8 @@ "postfix": false, "binop": null }, - "start": 32390, - "end": 32391, + "start": 32378, + "end": 32379, "loc": { "start": { "line": 732, @@ -265167,8 +265167,8 @@ "postfix": false, "binop": null }, - "start": 32392, - "end": 32393, + "start": 32380, + "end": 32381, "loc": { "start": { "line": 732, @@ -265193,8 +265193,8 @@ "binop": null }, "value": "src", - "start": 32410, - "end": 32413, + "start": 32398, + "end": 32401, "loc": { "start": { "line": 733, @@ -265219,8 +265219,8 @@ "binop": null, "updateContext": null }, - "start": 32413, - "end": 32414, + "start": 32401, + "end": 32402, "loc": { "start": { "line": 733, @@ -265245,8 +265245,8 @@ "binop": null }, "value": "push", - "start": 32414, - "end": 32418, + "start": 32402, + "end": 32406, "loc": { "start": { "line": 733, @@ -265270,8 +265270,8 @@ "postfix": false, "binop": null }, - "start": 32418, - "end": 32419, + "start": 32406, + "end": 32407, "loc": { "start": { "line": 733, @@ -265297,8 +265297,8 @@ "updateContext": null }, "value": " if (dist > (0.002 * vClipPosition.w)) {", - "start": 32419, - "end": 32462, + "start": 32407, + "end": 32450, "loc": { "start": { "line": 733, @@ -265322,8 +265322,8 @@ "postfix": false, "binop": null }, - "start": 32462, - "end": 32463, + "start": 32450, + "end": 32451, "loc": { "start": { "line": 733, @@ -265348,8 +265348,8 @@ "binop": null, "updateContext": null }, - "start": 32463, - "end": 32464, + "start": 32451, + "end": 32452, "loc": { "start": { "line": 733, @@ -265374,8 +265374,8 @@ "binop": null }, "value": "src", - "start": 32481, - "end": 32484, + "start": 32469, + "end": 32472, "loc": { "start": { "line": 734, @@ -265400,8 +265400,8 @@ "binop": null, "updateContext": null }, - "start": 32484, - "end": 32485, + "start": 32472, + "end": 32473, "loc": { "start": { "line": 734, @@ -265426,8 +265426,8 @@ "binop": null }, "value": "push", - "start": 32485, - "end": 32489, + "start": 32473, + "end": 32477, "loc": { "start": { "line": 734, @@ -265451,8 +265451,8 @@ "postfix": false, "binop": null }, - "start": 32489, - "end": 32490, + "start": 32477, + "end": 32478, "loc": { "start": { "line": 734, @@ -265478,8 +265478,8 @@ "updateContext": null }, "value": " discard;", - "start": 32490, - "end": 32506, + "start": 32478, + "end": 32494, "loc": { "start": { "line": 734, @@ -265503,8 +265503,8 @@ "postfix": false, "binop": null }, - "start": 32506, - "end": 32507, + "start": 32494, + "end": 32495, "loc": { "start": { "line": 734, @@ -265529,8 +265529,8 @@ "binop": null, "updateContext": null }, - "start": 32507, - "end": 32508, + "start": 32495, + "end": 32496, "loc": { "start": { "line": 734, @@ -265555,8 +265555,8 @@ "binop": null }, "value": "src", - "start": 32525, - "end": 32528, + "start": 32513, + "end": 32516, "loc": { "start": { "line": 735, @@ -265581,8 +265581,8 @@ "binop": null, "updateContext": null }, - "start": 32528, - "end": 32529, + "start": 32516, + "end": 32517, "loc": { "start": { "line": 735, @@ -265607,8 +265607,8 @@ "binop": null }, "value": "push", - "start": 32529, - "end": 32533, + "start": 32517, + "end": 32521, "loc": { "start": { "line": 735, @@ -265632,8 +265632,8 @@ "postfix": false, "binop": null }, - "start": 32533, - "end": 32534, + "start": 32521, + "end": 32522, "loc": { "start": { "line": 735, @@ -265659,8 +265659,8 @@ "updateContext": null }, "value": " }", - "start": 32534, - "end": 32539, + "start": 32522, + "end": 32527, "loc": { "start": { "line": 735, @@ -265684,8 +265684,8 @@ "postfix": false, "binop": null }, - "start": 32539, - "end": 32540, + "start": 32527, + "end": 32528, "loc": { "start": { "line": 735, @@ -265710,8 +265710,8 @@ "binop": null, "updateContext": null }, - "start": 32540, - "end": 32541, + "start": 32528, + "end": 32529, "loc": { "start": { "line": 735, @@ -265736,8 +265736,8 @@ "binop": null }, "value": "src", - "start": 32558, - "end": 32561, + "start": 32546, + "end": 32549, "loc": { "start": { "line": 736, @@ -265762,8 +265762,8 @@ "binop": null, "updateContext": null }, - "start": 32561, - "end": 32562, + "start": 32549, + "end": 32550, "loc": { "start": { "line": 736, @@ -265788,8 +265788,8 @@ "binop": null }, "value": "push", - "start": 32562, - "end": 32566, + "start": 32550, + "end": 32554, "loc": { "start": { "line": 736, @@ -265813,8 +265813,8 @@ "postfix": false, "binop": null }, - "start": 32566, - "end": 32567, + "start": 32554, + "end": 32555, "loc": { "start": { "line": 736, @@ -265840,8 +265840,8 @@ "updateContext": null }, "value": " if (dist > 0.0) { ", - "start": 32567, - "end": 32589, + "start": 32555, + "end": 32577, "loc": { "start": { "line": 736, @@ -265865,8 +265865,8 @@ "postfix": false, "binop": null }, - "start": 32589, - "end": 32590, + "start": 32577, + "end": 32578, "loc": { "start": { "line": 736, @@ -265891,8 +265891,8 @@ "binop": null, "updateContext": null }, - "start": 32590, - "end": 32591, + "start": 32578, + "end": 32579, "loc": { "start": { "line": 736, @@ -265917,8 +265917,8 @@ "binop": null }, "value": "src", - "start": 32608, - "end": 32611, + "start": 32596, + "end": 32599, "loc": { "start": { "line": 737, @@ -265943,8 +265943,8 @@ "binop": null, "updateContext": null }, - "start": 32611, - "end": 32612, + "start": 32599, + "end": 32600, "loc": { "start": { "line": 737, @@ -265969,8 +265969,8 @@ "binop": null }, "value": "push", - "start": 32612, - "end": 32616, + "start": 32600, + "end": 32604, "loc": { "start": { "line": 737, @@ -265994,8 +265994,8 @@ "postfix": false, "binop": null }, - "start": 32616, - "end": 32617, + "start": 32604, + "end": 32605, "loc": { "start": { "line": 737, @@ -266021,8 +266021,8 @@ "updateContext": null }, "value": " gl_FragColor=vec4(1.0, 0.0, 0.0, 1.0);", - "start": 32617, - "end": 32663, + "start": 32605, + "end": 32651, "loc": { "start": { "line": 737, @@ -266046,8 +266046,8 @@ "postfix": false, "binop": null }, - "start": 32663, - "end": 32664, + "start": 32651, + "end": 32652, "loc": { "start": { "line": 737, @@ -266072,8 +266072,8 @@ "binop": null, "updateContext": null }, - "start": 32664, - "end": 32665, + "start": 32652, + "end": 32653, "loc": { "start": { "line": 737, @@ -266100,8 +266100,8 @@ "updateContext": null }, "value": "if", - "start": 32682, - "end": 32684, + "start": 32670, + "end": 32672, "loc": { "start": { "line": 738, @@ -266125,8 +266125,8 @@ "postfix": false, "binop": null }, - "start": 32685, - "end": 32686, + "start": 32673, + "end": 32674, "loc": { "start": { "line": 738, @@ -266151,8 +266151,8 @@ "binop": null }, "value": "scene", - "start": 32686, - "end": 32691, + "start": 32674, + "end": 32679, "loc": { "start": { "line": 738, @@ -266177,8 +266177,8 @@ "binop": null, "updateContext": null }, - "start": 32691, - "end": 32692, + "start": 32679, + "end": 32680, "loc": { "start": { "line": 738, @@ -266203,8 +266203,8 @@ "binop": null }, "value": "logarithmicDepthBufferEnabled", - "start": 32692, - "end": 32721, + "start": 32680, + "end": 32709, "loc": { "start": { "line": 738, @@ -266230,8 +266230,8 @@ "updateContext": null }, "value": "&&", - "start": 32722, - "end": 32724, + "start": 32710, + "end": 32712, "loc": { "start": { "line": 738, @@ -266256,8 +266256,8 @@ "binop": null }, "value": "WEBGL_INFO", - "start": 32725, - "end": 32735, + "start": 32713, + "end": 32723, "loc": { "start": { "line": 738, @@ -266282,8 +266282,8 @@ "binop": null, "updateContext": null }, - "start": 32735, - "end": 32736, + "start": 32723, + "end": 32724, "loc": { "start": { "line": 738, @@ -266308,8 +266308,8 @@ "binop": null }, "value": "SUPPORTED_EXTENSIONS", - "start": 32736, - "end": 32756, + "start": 32724, + "end": 32744, "loc": { "start": { "line": 738, @@ -266334,8 +266334,8 @@ "binop": null, "updateContext": null }, - "start": 32756, - "end": 32757, + "start": 32744, + "end": 32745, "loc": { "start": { "line": 738, @@ -266361,8 +266361,8 @@ "updateContext": null }, "value": "EXT_frag_depth", - "start": 32757, - "end": 32773, + "start": 32745, + "end": 32761, "loc": { "start": { "line": 738, @@ -266387,8 +266387,8 @@ "binop": null, "updateContext": null }, - "start": 32773, - "end": 32774, + "start": 32761, + "end": 32762, "loc": { "start": { "line": 738, @@ -266412,8 +266412,8 @@ "postfix": false, "binop": null }, - "start": 32774, - "end": 32775, + "start": 32762, + "end": 32763, "loc": { "start": { "line": 738, @@ -266437,8 +266437,8 @@ "postfix": false, "binop": null }, - "start": 32776, - "end": 32777, + "start": 32764, + "end": 32765, "loc": { "start": { "line": 738, @@ -266463,8 +266463,8 @@ "binop": null }, "value": "src", - "start": 32798, - "end": 32801, + "start": 32786, + "end": 32789, "loc": { "start": { "line": 739, @@ -266489,8 +266489,8 @@ "binop": null, "updateContext": null }, - "start": 32801, - "end": 32802, + "start": 32789, + "end": 32790, "loc": { "start": { "line": 739, @@ -266515,8 +266515,8 @@ "binop": null }, "value": "push", - "start": 32802, - "end": 32806, + "start": 32790, + "end": 32794, "loc": { "start": { "line": 739, @@ -266540,8 +266540,8 @@ "postfix": false, "binop": null }, - "start": 32806, - "end": 32807, + "start": 32794, + "end": 32795, "loc": { "start": { "line": 739, @@ -266567,8 +266567,8 @@ "updateContext": null }, "value": " gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;", - "start": 32807, - "end": 32870, + "start": 32795, + "end": 32858, "loc": { "start": { "line": 739, @@ -266592,8 +266592,8 @@ "postfix": false, "binop": null }, - "start": 32870, - "end": 32871, + "start": 32858, + "end": 32859, "loc": { "start": { "line": 739, @@ -266618,8 +266618,8 @@ "binop": null, "updateContext": null }, - "start": 32871, - "end": 32872, + "start": 32859, + "end": 32860, "loc": { "start": { "line": 739, @@ -266643,8 +266643,8 @@ "postfix": false, "binop": null }, - "start": 32889, - "end": 32890, + "start": 32877, + "end": 32878, "loc": { "start": { "line": 740, @@ -266669,8 +266669,8 @@ "binop": null }, "value": "src", - "start": 32907, - "end": 32910, + "start": 32895, + "end": 32898, "loc": { "start": { "line": 741, @@ -266695,8 +266695,8 @@ "binop": null, "updateContext": null }, - "start": 32910, - "end": 32911, + "start": 32898, + "end": 32899, "loc": { "start": { "line": 741, @@ -266721,8 +266721,8 @@ "binop": null }, "value": "push", - "start": 32911, - "end": 32915, + "start": 32899, + "end": 32903, "loc": { "start": { "line": 741, @@ -266746,8 +266746,8 @@ "postfix": false, "binop": null }, - "start": 32915, - "end": 32916, + "start": 32903, + "end": 32904, "loc": { "start": { "line": 741, @@ -266773,8 +266773,8 @@ "updateContext": null }, "value": " return;", - "start": 32916, - "end": 32927, + "start": 32904, + "end": 32915, "loc": { "start": { "line": 741, @@ -266798,8 +266798,8 @@ "postfix": false, "binop": null }, - "start": 32927, - "end": 32928, + "start": 32915, + "end": 32916, "loc": { "start": { "line": 741, @@ -266824,8 +266824,8 @@ "binop": null, "updateContext": null }, - "start": 32928, - "end": 32929, + "start": 32916, + "end": 32917, "loc": { "start": { "line": 741, @@ -266850,8 +266850,8 @@ "binop": null }, "value": "src", - "start": 32946, - "end": 32949, + "start": 32934, + "end": 32937, "loc": { "start": { "line": 742, @@ -266876,8 +266876,8 @@ "binop": null, "updateContext": null }, - "start": 32949, - "end": 32950, + "start": 32937, + "end": 32938, "loc": { "start": { "line": 742, @@ -266902,8 +266902,8 @@ "binop": null }, "value": "push", - "start": 32950, - "end": 32954, + "start": 32938, + "end": 32942, "loc": { "start": { "line": 742, @@ -266927,8 +266927,8 @@ "postfix": false, "binop": null }, - "start": 32954, - "end": 32955, + "start": 32942, + "end": 32943, "loc": { "start": { "line": 742, @@ -266954,8 +266954,8 @@ "updateContext": null }, "value": "}", - "start": 32955, - "end": 32958, + "start": 32943, + "end": 32946, "loc": { "start": { "line": 742, @@ -266979,8 +266979,8 @@ "postfix": false, "binop": null }, - "start": 32958, - "end": 32959, + "start": 32946, + "end": 32947, "loc": { "start": { "line": 742, @@ -267005,8 +267005,8 @@ "binop": null, "updateContext": null }, - "start": 32959, - "end": 32960, + "start": 32947, + "end": 32948, "loc": { "start": { "line": 742, @@ -267030,8 +267030,8 @@ "postfix": false, "binop": null }, - "start": 32973, - "end": 32974, + "start": 32961, + "end": 32962, "loc": { "start": { "line": 743, @@ -267058,8 +267058,8 @@ "updateContext": null }, "value": "else", - "start": 32975, - "end": 32979, + "start": 32963, + "end": 32967, "loc": { "start": { "line": 743, @@ -267083,8 +267083,8 @@ "postfix": false, "binop": null }, - "start": 32980, - "end": 32981, + "start": 32968, + "end": 32969, "loc": { "start": { "line": 743, @@ -267109,8 +267109,8 @@ "binop": null }, "value": "src", - "start": 32998, - "end": 33001, + "start": 32986, + "end": 32989, "loc": { "start": { "line": 744, @@ -267135,8 +267135,8 @@ "binop": null, "updateContext": null }, - "start": 33001, - "end": 33002, + "start": 32989, + "end": 32990, "loc": { "start": { "line": 744, @@ -267161,8 +267161,8 @@ "binop": null }, "value": "push", - "start": 33002, - "end": 33006, + "start": 32990, + "end": 32994, "loc": { "start": { "line": 744, @@ -267186,8 +267186,8 @@ "postfix": false, "binop": null }, - "start": 33006, - "end": 33007, + "start": 32994, + "end": 32995, "loc": { "start": { "line": 744, @@ -267213,8 +267213,8 @@ "updateContext": null }, "value": " if (dist > 0.0) { ", - "start": 33007, - "end": 33029, + "start": 32995, + "end": 33017, "loc": { "start": { "line": 744, @@ -267238,8 +267238,8 @@ "postfix": false, "binop": null }, - "start": 33029, - "end": 33030, + "start": 33017, + "end": 33018, "loc": { "start": { "line": 744, @@ -267264,8 +267264,8 @@ "binop": null, "updateContext": null }, - "start": 33030, - "end": 33031, + "start": 33018, + "end": 33019, "loc": { "start": { "line": 744, @@ -267290,8 +267290,8 @@ "binop": null }, "value": "src", - "start": 33048, - "end": 33051, + "start": 33036, + "end": 33039, "loc": { "start": { "line": 745, @@ -267316,8 +267316,8 @@ "binop": null, "updateContext": null }, - "start": 33051, - "end": 33052, + "start": 33039, + "end": 33040, "loc": { "start": { "line": 745, @@ -267342,8 +267342,8 @@ "binop": null }, "value": "push", - "start": 33052, - "end": 33056, + "start": 33040, + "end": 33044, "loc": { "start": { "line": 745, @@ -267367,8 +267367,8 @@ "postfix": false, "binop": null }, - "start": 33056, - "end": 33057, + "start": 33044, + "end": 33045, "loc": { "start": { "line": 745, @@ -267394,8 +267394,8 @@ "updateContext": null }, "value": " discard;", - "start": 33057, - "end": 33073, + "start": 33045, + "end": 33061, "loc": { "start": { "line": 745, @@ -267419,8 +267419,8 @@ "postfix": false, "binop": null }, - "start": 33073, - "end": 33074, + "start": 33061, + "end": 33062, "loc": { "start": { "line": 745, @@ -267445,8 +267445,8 @@ "binop": null }, "value": "src", - "start": 33091, - "end": 33094, + "start": 33079, + "end": 33082, "loc": { "start": { "line": 746, @@ -267471,8 +267471,8 @@ "binop": null, "updateContext": null }, - "start": 33094, - "end": 33095, + "start": 33082, + "end": 33083, "loc": { "start": { "line": 746, @@ -267497,8 +267497,8 @@ "binop": null }, "value": "push", - "start": 33095, - "end": 33099, + "start": 33083, + "end": 33087, "loc": { "start": { "line": 746, @@ -267522,8 +267522,8 @@ "postfix": false, "binop": null }, - "start": 33099, - "end": 33100, + "start": 33087, + "end": 33088, "loc": { "start": { "line": 746, @@ -267549,8 +267549,8 @@ "updateContext": null }, "value": " }", - "start": 33100, - "end": 33105, + "start": 33088, + "end": 33093, "loc": { "start": { "line": 746, @@ -267574,8 +267574,8 @@ "postfix": false, "binop": null }, - "start": 33105, - "end": 33106, + "start": 33093, + "end": 33094, "loc": { "start": { "line": 746, @@ -267600,8 +267600,8 @@ "binop": null, "updateContext": null }, - "start": 33106, - "end": 33107, + "start": 33094, + "end": 33095, "loc": { "start": { "line": 746, @@ -267625,8 +267625,8 @@ "postfix": false, "binop": null }, - "start": 33120, - "end": 33121, + "start": 33108, + "end": 33109, "loc": { "start": { "line": 747, @@ -267651,8 +267651,8 @@ "binop": null }, "value": "src", - "start": 33134, - "end": 33137, + "start": 33122, + "end": 33125, "loc": { "start": { "line": 748, @@ -267677,8 +267677,8 @@ "binop": null, "updateContext": null }, - "start": 33137, - "end": 33138, + "start": 33125, + "end": 33126, "loc": { "start": { "line": 748, @@ -267703,8 +267703,8 @@ "binop": null }, "value": "push", - "start": 33138, - "end": 33142, + "start": 33126, + "end": 33130, "loc": { "start": { "line": 748, @@ -267728,8 +267728,8 @@ "postfix": false, "binop": null }, - "start": 33142, - "end": 33143, + "start": 33130, + "end": 33131, "loc": { "start": { "line": 748, @@ -267755,8 +267755,8 @@ "updateContext": null }, "value": "}", - "start": 33143, - "end": 33146, + "start": 33131, + "end": 33134, "loc": { "start": { "line": 748, @@ -267780,8 +267780,8 @@ "postfix": false, "binop": null }, - "start": 33146, - "end": 33147, + "start": 33134, + "end": 33135, "loc": { "start": { "line": 748, @@ -267806,8 +267806,8 @@ "binop": null, "updateContext": null }, - "start": 33147, - "end": 33148, + "start": 33135, + "end": 33136, "loc": { "start": { "line": 748, @@ -267831,8 +267831,8 @@ "postfix": false, "binop": null }, - "start": 33157, - "end": 33158, + "start": 33145, + "end": 33146, "loc": { "start": { "line": 749, @@ -267857,8 +267857,8 @@ "binop": null }, "value": "src", - "start": 33168, - "end": 33171, + "start": 33156, + "end": 33159, "loc": { "start": { "line": 751, @@ -267883,8 +267883,8 @@ "binop": null, "updateContext": null }, - "start": 33171, - "end": 33172, + "start": 33159, + "end": 33160, "loc": { "start": { "line": 751, @@ -267909,8 +267909,8 @@ "binop": null }, "value": "push", - "start": 33172, - "end": 33176, + "start": 33160, + "end": 33164, "loc": { "start": { "line": 751, @@ -267934,8 +267934,8 @@ "postfix": false, "binop": null }, - "start": 33176, - "end": 33177, + "start": 33164, + "end": 33165, "loc": { "start": { "line": 751, @@ -267961,8 +267961,8 @@ "updateContext": null }, "value": "IncidentLight light;", - "start": 33177, - "end": 33200, + "start": 33165, + "end": 33188, "loc": { "start": { "line": 751, @@ -267986,8 +267986,8 @@ "postfix": false, "binop": null }, - "start": 33200, - "end": 33201, + "start": 33188, + "end": 33189, "loc": { "start": { "line": 751, @@ -268012,8 +268012,8 @@ "binop": null, "updateContext": null }, - "start": 33201, - "end": 33202, + "start": 33189, + "end": 33190, "loc": { "start": { "line": 751, @@ -268038,8 +268038,8 @@ "binop": null }, "value": "src", - "start": 33211, - "end": 33214, + "start": 33199, + "end": 33202, "loc": { "start": { "line": 752, @@ -268064,8 +268064,8 @@ "binop": null, "updateContext": null }, - "start": 33214, - "end": 33215, + "start": 33202, + "end": 33203, "loc": { "start": { "line": 752, @@ -268090,8 +268090,8 @@ "binop": null }, "value": "push", - "start": 33215, - "end": 33219, + "start": 33203, + "end": 33207, "loc": { "start": { "line": 752, @@ -268115,8 +268115,8 @@ "postfix": false, "binop": null }, - "start": 33219, - "end": 33220, + "start": 33207, + "end": 33208, "loc": { "start": { "line": 752, @@ -268142,8 +268142,8 @@ "updateContext": null }, "value": "Material material;", - "start": 33220, - "end": 33246, + "start": 33208, + "end": 33234, "loc": { "start": { "line": 752, @@ -268167,8 +268167,8 @@ "postfix": false, "binop": null }, - "start": 33246, - "end": 33247, + "start": 33234, + "end": 33235, "loc": { "start": { "line": 752, @@ -268193,8 +268193,8 @@ "binop": null, "updateContext": null }, - "start": 33247, - "end": 33248, + "start": 33235, + "end": 33236, "loc": { "start": { "line": 752, @@ -268219,8 +268219,8 @@ "binop": null }, "value": "src", - "start": 33257, - "end": 33260, + "start": 33245, + "end": 33248, "loc": { "start": { "line": 753, @@ -268245,8 +268245,8 @@ "binop": null, "updateContext": null }, - "start": 33260, - "end": 33261, + "start": 33248, + "end": 33249, "loc": { "start": { "line": 753, @@ -268271,8 +268271,8 @@ "binop": null }, "value": "push", - "start": 33261, - "end": 33265, + "start": 33249, + "end": 33253, "loc": { "start": { "line": 753, @@ -268296,8 +268296,8 @@ "postfix": false, "binop": null }, - "start": 33265, - "end": 33266, + "start": 33253, + "end": 33254, "loc": { "start": { "line": 753, @@ -268323,8 +268323,8 @@ "updateContext": null }, "value": "Geometry geometry;", - "start": 33266, - "end": 33292, + "start": 33254, + "end": 33280, "loc": { "start": { "line": 753, @@ -268348,8 +268348,8 @@ "postfix": false, "binop": null }, - "start": 33292, - "end": 33293, + "start": 33280, + "end": 33281, "loc": { "start": { "line": 753, @@ -268374,8 +268374,8 @@ "binop": null, "updateContext": null }, - "start": 33293, - "end": 33294, + "start": 33281, + "end": 33282, "loc": { "start": { "line": 753, @@ -268400,8 +268400,8 @@ "binop": null }, "value": "src", - "start": 33303, - "end": 33306, + "start": 33291, + "end": 33294, "loc": { "start": { "line": 754, @@ -268426,8 +268426,8 @@ "binop": null, "updateContext": null }, - "start": 33306, - "end": 33307, + "start": 33294, + "end": 33295, "loc": { "start": { "line": 754, @@ -268452,8 +268452,8 @@ "binop": null }, "value": "push", - "start": 33307, - "end": 33311, + "start": 33295, + "end": 33299, "loc": { "start": { "line": 754, @@ -268477,8 +268477,8 @@ "postfix": false, "binop": null }, - "start": 33311, - "end": 33312, + "start": 33299, + "end": 33300, "loc": { "start": { "line": 754, @@ -268504,8 +268504,8 @@ "updateContext": null }, "value": "ReflectedLight reflectedLight = ReflectedLight(vec3(0.0,0.0,0.0), vec3(0.0,0.0,0.0));", - "start": 33312, - "end": 33399, + "start": 33300, + "end": 33387, "loc": { "start": { "line": 754, @@ -268529,8 +268529,8 @@ "postfix": false, "binop": null }, - "start": 33399, - "end": 33400, + "start": 33387, + "end": 33388, "loc": { "start": { "line": 754, @@ -268555,8 +268555,8 @@ "binop": null, "updateContext": null }, - "start": 33400, - "end": 33401, + "start": 33388, + "end": 33389, "loc": { "start": { "line": 754, @@ -268581,8 +268581,8 @@ "binop": null }, "value": "src", - "start": 33411, - "end": 33414, + "start": 33399, + "end": 33402, "loc": { "start": { "line": 756, @@ -268607,8 +268607,8 @@ "binop": null, "updateContext": null }, - "start": 33414, - "end": 33415, + "start": 33402, + "end": 33403, "loc": { "start": { "line": 756, @@ -268633,8 +268633,8 @@ "binop": null }, "value": "push", - "start": 33415, - "end": 33419, + "start": 33403, + "end": 33407, "loc": { "start": { "line": 756, @@ -268658,8 +268658,8 @@ "postfix": false, "binop": null }, - "start": 33419, - "end": 33420, + "start": 33407, + "end": 33408, "loc": { "start": { "line": 756, @@ -268685,8 +268685,8 @@ "updateContext": null }, "value": "vec3 rgb = (vec3(float(vColor.r) / 255.0, float(vColor.g) / 255.0, float(vColor.b) / 255.0));", - "start": 33420, - "end": 33515, + "start": 33408, + "end": 33503, "loc": { "start": { "line": 756, @@ -268710,8 +268710,8 @@ "postfix": false, "binop": null }, - "start": 33515, - "end": 33516, + "start": 33503, + "end": 33504, "loc": { "start": { "line": 756, @@ -268736,8 +268736,8 @@ "binop": null, "updateContext": null }, - "start": 33516, - "end": 33517, + "start": 33504, + "end": 33505, "loc": { "start": { "line": 756, @@ -268762,8 +268762,8 @@ "binop": null }, "value": "src", - "start": 33526, - "end": 33529, + "start": 33514, + "end": 33517, "loc": { "start": { "line": 757, @@ -268788,8 +268788,8 @@ "binop": null, "updateContext": null }, - "start": 33529, - "end": 33530, + "start": 33517, + "end": 33518, "loc": { "start": { "line": 757, @@ -268814,8 +268814,8 @@ "binop": null }, "value": "push", - "start": 33530, - "end": 33534, + "start": 33518, + "end": 33522, "loc": { "start": { "line": 757, @@ -268839,8 +268839,8 @@ "postfix": false, "binop": null }, - "start": 33534, - "end": 33535, + "start": 33522, + "end": 33523, "loc": { "start": { "line": 757, @@ -268866,8 +268866,8 @@ "updateContext": null }, "value": "float alpha = float(vColor.a) / 255.0;", - "start": 33535, - "end": 33575, + "start": 33523, + "end": 33563, "loc": { "start": { "line": 757, @@ -268891,8 +268891,8 @@ "postfix": false, "binop": null }, - "start": 33575, - "end": 33576, + "start": 33563, + "end": 33564, "loc": { "start": { "line": 757, @@ -268917,8 +268917,8 @@ "binop": null, "updateContext": null }, - "start": 33576, - "end": 33577, + "start": 33564, + "end": 33565, "loc": { "start": { "line": 757, @@ -268943,8 +268943,8 @@ "binop": null }, "value": "src", - "start": 33587, - "end": 33590, + "start": 33575, + "end": 33578, "loc": { "start": { "line": 759, @@ -268969,8 +268969,8 @@ "binop": null, "updateContext": null }, - "start": 33590, - "end": 33591, + "start": 33578, + "end": 33579, "loc": { "start": { "line": 759, @@ -268995,8 +268995,8 @@ "binop": null }, "value": "push", - "start": 33591, - "end": 33595, + "start": 33579, + "end": 33583, "loc": { "start": { "line": 759, @@ -269020,8 +269020,8 @@ "postfix": false, "binop": null }, - "start": 33595, - "end": 33596, + "start": 33583, + "end": 33584, "loc": { "start": { "line": 759, @@ -269047,8 +269047,8 @@ "updateContext": null }, "value": "vec3 diffuseColor = rgb;", - "start": 33596, - "end": 33623, + "start": 33584, + "end": 33611, "loc": { "start": { "line": 759, @@ -269072,8 +269072,8 @@ "postfix": false, "binop": null }, - "start": 33623, - "end": 33624, + "start": 33611, + "end": 33612, "loc": { "start": { "line": 759, @@ -269098,8 +269098,8 @@ "binop": null, "updateContext": null }, - "start": 33624, - "end": 33625, + "start": 33612, + "end": 33613, "loc": { "start": { "line": 759, @@ -269124,8 +269124,8 @@ "binop": null }, "value": "src", - "start": 33634, - "end": 33637, + "start": 33622, + "end": 33625, "loc": { "start": { "line": 760, @@ -269150,8 +269150,8 @@ "binop": null, "updateContext": null }, - "start": 33637, - "end": 33638, + "start": 33625, + "end": 33626, "loc": { "start": { "line": 760, @@ -269176,8 +269176,8 @@ "binop": null }, "value": "push", - "start": 33638, - "end": 33642, + "start": 33626, + "end": 33630, "loc": { "start": { "line": 760, @@ -269201,8 +269201,8 @@ "postfix": false, "binop": null }, - "start": 33642, - "end": 33643, + "start": 33630, + "end": 33631, "loc": { "start": { "line": 760, @@ -269228,8 +269228,8 @@ "updateContext": null }, "value": "float specularF0 = 1.0;", - "start": 33643, - "end": 33668, + "start": 33631, + "end": 33656, "loc": { "start": { "line": 760, @@ -269253,8 +269253,8 @@ "postfix": false, "binop": null }, - "start": 33668, - "end": 33669, + "start": 33656, + "end": 33657, "loc": { "start": { "line": 760, @@ -269279,8 +269279,8 @@ "binop": null, "updateContext": null }, - "start": 33669, - "end": 33670, + "start": 33657, + "end": 33658, "loc": { "start": { "line": 760, @@ -269305,8 +269305,8 @@ "binop": null }, "value": "src", - "start": 33679, - "end": 33682, + "start": 33667, + "end": 33670, "loc": { "start": { "line": 761, @@ -269331,8 +269331,8 @@ "binop": null, "updateContext": null }, - "start": 33682, - "end": 33683, + "start": 33670, + "end": 33671, "loc": { "start": { "line": 761, @@ -269357,8 +269357,8 @@ "binop": null }, "value": "push", - "start": 33683, - "end": 33687, + "start": 33671, + "end": 33675, "loc": { "start": { "line": 761, @@ -269382,8 +269382,8 @@ "postfix": false, "binop": null }, - "start": 33687, - "end": 33688, + "start": 33675, + "end": 33676, "loc": { "start": { "line": 761, @@ -269409,8 +269409,8 @@ "updateContext": null }, "value": "float metallic = float(vMetallicRoughness.r) / 255.0;", - "start": 33688, - "end": 33743, + "start": 33676, + "end": 33731, "loc": { "start": { "line": 761, @@ -269434,8 +269434,8 @@ "postfix": false, "binop": null }, - "start": 33743, - "end": 33744, + "start": 33731, + "end": 33732, "loc": { "start": { "line": 761, @@ -269460,8 +269460,8 @@ "binop": null, "updateContext": null }, - "start": 33744, - "end": 33745, + "start": 33732, + "end": 33733, "loc": { "start": { "line": 761, @@ -269486,8 +269486,8 @@ "binop": null }, "value": "src", - "start": 33754, - "end": 33757, + "start": 33742, + "end": 33745, "loc": { "start": { "line": 762, @@ -269512,8 +269512,8 @@ "binop": null, "updateContext": null }, - "start": 33757, - "end": 33758, + "start": 33745, + "end": 33746, "loc": { "start": { "line": 762, @@ -269538,8 +269538,8 @@ "binop": null }, "value": "push", - "start": 33758, - "end": 33762, + "start": 33746, + "end": 33750, "loc": { "start": { "line": 762, @@ -269563,8 +269563,8 @@ "postfix": false, "binop": null }, - "start": 33762, - "end": 33763, + "start": 33750, + "end": 33751, "loc": { "start": { "line": 762, @@ -269590,8 +269590,8 @@ "updateContext": null }, "value": "float roughness = float(vMetallicRoughness.g) / 255.0;", - "start": 33763, - "end": 33819, + "start": 33751, + "end": 33807, "loc": { "start": { "line": 762, @@ -269615,8 +269615,8 @@ "postfix": false, "binop": null }, - "start": 33819, - "end": 33820, + "start": 33807, + "end": 33808, "loc": { "start": { "line": 762, @@ -269641,8 +269641,8 @@ "binop": null, "updateContext": null }, - "start": 33820, - "end": 33821, + "start": 33808, + "end": 33809, "loc": { "start": { "line": 762, @@ -269667,8 +269667,8 @@ "binop": null }, "value": "src", - "start": 33830, - "end": 33833, + "start": 33818, + "end": 33821, "loc": { "start": { "line": 763, @@ -269693,8 +269693,8 @@ "binop": null, "updateContext": null }, - "start": 33833, - "end": 33834, + "start": 33821, + "end": 33822, "loc": { "start": { "line": 763, @@ -269719,8 +269719,8 @@ "binop": null }, "value": "push", - "start": 33834, - "end": 33838, + "start": 33822, + "end": 33826, "loc": { "start": { "line": 763, @@ -269744,8 +269744,8 @@ "postfix": false, "binop": null }, - "start": 33838, - "end": 33839, + "start": 33826, + "end": 33827, "loc": { "start": { "line": 763, @@ -269771,8 +269771,8 @@ "updateContext": null }, "value": "float dielectricSpecular = 0.16 * specularF0 * specularF0;", - "start": 33839, - "end": 33899, + "start": 33827, + "end": 33887, "loc": { "start": { "line": 763, @@ -269796,8 +269796,8 @@ "postfix": false, "binop": null }, - "start": 33899, - "end": 33900, + "start": 33887, + "end": 33888, "loc": { "start": { "line": 763, @@ -269822,8 +269822,8 @@ "binop": null, "updateContext": null }, - "start": 33900, - "end": 33901, + "start": 33888, + "end": 33889, "loc": { "start": { "line": 763, @@ -269848,8 +269848,8 @@ "binop": null }, "value": "src", - "start": 33911, - "end": 33914, + "start": 33899, + "end": 33902, "loc": { "start": { "line": 765, @@ -269874,8 +269874,8 @@ "binop": null, "updateContext": null }, - "start": 33914, - "end": 33915, + "start": 33902, + "end": 33903, "loc": { "start": { "line": 765, @@ -269900,8 +269900,8 @@ "binop": null }, "value": "push", - "start": 33915, - "end": 33919, + "start": 33903, + "end": 33907, "loc": { "start": { "line": 765, @@ -269925,8 +269925,8 @@ "postfix": false, "binop": null }, - "start": 33919, - "end": 33920, + "start": 33907, + "end": 33908, "loc": { "start": { "line": 765, @@ -269952,8 +269952,8 @@ "updateContext": null }, "value": "material.diffuseColor = diffuseColor * (1.0 - dielectricSpecular) * (1.0 - metallic);", - "start": 33920, - "end": 34012, + "start": 33908, + "end": 34000, "loc": { "start": { "line": 765, @@ -269977,8 +269977,8 @@ "postfix": false, "binop": null }, - "start": 34012, - "end": 34013, + "start": 34000, + "end": 34001, "loc": { "start": { "line": 765, @@ -270003,8 +270003,8 @@ "binop": null, "updateContext": null }, - "start": 34013, - "end": 34014, + "start": 34001, + "end": 34002, "loc": { "start": { "line": 765, @@ -270029,8 +270029,8 @@ "binop": null }, "value": "src", - "start": 34023, - "end": 34026, + "start": 34011, + "end": 34014, "loc": { "start": { "line": 766, @@ -270055,8 +270055,8 @@ "binop": null, "updateContext": null }, - "start": 34026, - "end": 34027, + "start": 34014, + "end": 34015, "loc": { "start": { "line": 766, @@ -270081,8 +270081,8 @@ "binop": null }, "value": "push", - "start": 34027, - "end": 34031, + "start": 34015, + "end": 34019, "loc": { "start": { "line": 766, @@ -270106,8 +270106,8 @@ "postfix": false, "binop": null }, - "start": 34031, - "end": 34032, + "start": 34019, + "end": 34020, "loc": { "start": { "line": 766, @@ -270133,8 +270133,8 @@ "updateContext": null }, "value": "material.specularRoughness = clamp(roughness, 0.04, 1.0);", - "start": 34032, - "end": 34091, + "start": 34020, + "end": 34079, "loc": { "start": { "line": 766, @@ -270158,8 +270158,8 @@ "postfix": false, "binop": null }, - "start": 34091, - "end": 34092, + "start": 34079, + "end": 34080, "loc": { "start": { "line": 766, @@ -270184,8 +270184,8 @@ "binop": null, "updateContext": null }, - "start": 34092, - "end": 34093, + "start": 34080, + "end": 34081, "loc": { "start": { "line": 766, @@ -270210,8 +270210,8 @@ "binop": null }, "value": "src", - "start": 34102, - "end": 34105, + "start": 34090, + "end": 34093, "loc": { "start": { "line": 767, @@ -270236,8 +270236,8 @@ "binop": null, "updateContext": null }, - "start": 34105, - "end": 34106, + "start": 34093, + "end": 34094, "loc": { "start": { "line": 767, @@ -270262,8 +270262,8 @@ "binop": null }, "value": "push", - "start": 34106, - "end": 34110, + "start": 34094, + "end": 34098, "loc": { "start": { "line": 767, @@ -270287,8 +270287,8 @@ "postfix": false, "binop": null }, - "start": 34110, - "end": 34111, + "start": 34098, + "end": 34099, "loc": { "start": { "line": 767, @@ -270314,8 +270314,8 @@ "updateContext": null }, "value": "material.specularColor = mix(vec3(dielectricSpecular), diffuseColor, metallic);", - "start": 34111, - "end": 34196, + "start": 34099, + "end": 34184, "loc": { "start": { "line": 767, @@ -270339,8 +270339,8 @@ "postfix": false, "binop": null }, - "start": 34196, - "end": 34197, + "start": 34184, + "end": 34185, "loc": { "start": { "line": 767, @@ -270365,8 +270365,8 @@ "binop": null, "updateContext": null }, - "start": 34197, - "end": 34198, + "start": 34185, + "end": 34186, "loc": { "start": { "line": 767, @@ -270391,8 +270391,8 @@ "binop": null }, "value": "src", - "start": 34208, - "end": 34211, + "start": 34196, + "end": 34199, "loc": { "start": { "line": 769, @@ -270417,8 +270417,8 @@ "binop": null, "updateContext": null }, - "start": 34211, - "end": 34212, + "start": 34199, + "end": 34200, "loc": { "start": { "line": 769, @@ -270443,8 +270443,8 @@ "binop": null }, "value": "push", - "start": 34212, - "end": 34216, + "start": 34200, + "end": 34204, "loc": { "start": { "line": 769, @@ -270468,8 +270468,8 @@ "postfix": false, "binop": null }, - "start": 34216, - "end": 34217, + "start": 34204, + "end": 34205, "loc": { "start": { "line": 769, @@ -270495,8 +270495,8 @@ "updateContext": null }, "value": "geometry.position = vViewPosition.xyz;", - "start": 34217, - "end": 34262, + "start": 34205, + "end": 34250, "loc": { "start": { "line": 769, @@ -270520,8 +270520,8 @@ "postfix": false, "binop": null }, - "start": 34262, - "end": 34263, + "start": 34250, + "end": 34251, "loc": { "start": { "line": 769, @@ -270546,8 +270546,8 @@ "binop": null, "updateContext": null }, - "start": 34263, - "end": 34264, + "start": 34251, + "end": 34252, "loc": { "start": { "line": 769, @@ -270572,8 +270572,8 @@ "binop": null }, "value": "src", - "start": 34273, - "end": 34276, + "start": 34261, + "end": 34264, "loc": { "start": { "line": 770, @@ -270598,8 +270598,8 @@ "binop": null, "updateContext": null }, - "start": 34276, - "end": 34277, + "start": 34264, + "end": 34265, "loc": { "start": { "line": 770, @@ -270624,8 +270624,8 @@ "binop": null }, "value": "push", - "start": 34277, - "end": 34281, + "start": 34265, + "end": 34269, "loc": { "start": { "line": 770, @@ -270649,8 +270649,8 @@ "postfix": false, "binop": null }, - "start": 34281, - "end": 34282, + "start": 34269, + "end": 34270, "loc": { "start": { "line": 770, @@ -270675,9 +270675,9 @@ "binop": null, "updateContext": null }, - "value": "geometry.viewNormal = -vViewNormal;", - "start": 34282, - "end": 34322, + "value": "geometry.viewNormal = -normalize(vViewNormal);", + "start": 34270, + "end": 34321, "loc": { "start": { "line": 770, @@ -270685,7 +270685,7 @@ }, "end": { "line": 770, - "column": 57 + "column": 68 } } }, @@ -270701,16 +270701,16 @@ "postfix": false, "binop": null }, - "start": 34322, - "end": 34323, + "start": 34321, + "end": 34322, "loc": { "start": { "line": 770, - "column": 57 + "column": 68 }, "end": { "line": 770, - "column": 58 + "column": 69 } } }, @@ -270727,16 +270727,16 @@ "binop": null, "updateContext": null }, - "start": 34323, - "end": 34324, + "start": 34322, + "end": 34323, "loc": { "start": { "line": 770, - "column": 58 + "column": 69 }, "end": { "line": 770, - "column": 59 + "column": 70 } } }, @@ -270753,8 +270753,8 @@ "binop": null }, "value": "src", - "start": 34333, - "end": 34336, + "start": 34332, + "end": 34335, "loc": { "start": { "line": 771, @@ -270779,8 +270779,8 @@ "binop": null, "updateContext": null }, - "start": 34336, - "end": 34337, + "start": 34335, + "end": 34336, "loc": { "start": { "line": 771, @@ -270805,8 +270805,8 @@ "binop": null }, "value": "push", - "start": 34337, - "end": 34341, + "start": 34336, + "end": 34340, "loc": { "start": { "line": 771, @@ -270830,8 +270830,8 @@ "postfix": false, "binop": null }, - "start": 34341, - "end": 34342, + "start": 34340, + "end": 34341, "loc": { "start": { "line": 771, @@ -270857,8 +270857,8 @@ "updateContext": null }, "value": "geometry.viewEyeDir = normalize(vViewPosition.xyz);", - "start": 34342, - "end": 34398, + "start": 34341, + "end": 34397, "loc": { "start": { "line": 771, @@ -270882,8 +270882,8 @@ "postfix": false, "binop": null }, - "start": 34398, - "end": 34399, + "start": 34397, + "end": 34398, "loc": { "start": { "line": 771, @@ -270908,8 +270908,8 @@ "binop": null, "updateContext": null }, - "start": 34399, - "end": 34400, + "start": 34398, + "end": 34399, "loc": { "start": { "line": 771, @@ -270936,8 +270936,8 @@ "updateContext": null }, "value": "if", - "start": 34409, - "end": 34411, + "start": 34408, + "end": 34410, "loc": { "start": { "line": 772, @@ -270961,8 +270961,8 @@ "postfix": false, "binop": null }, - "start": 34412, - "end": 34413, + "start": 34411, + "end": 34412, "loc": { "start": { "line": 772, @@ -270987,8 +270987,8 @@ "binop": null }, "value": "lightsState", - "start": 34413, - "end": 34424, + "start": 34412, + "end": 34423, "loc": { "start": { "line": 772, @@ -271013,8 +271013,8 @@ "binop": null, "updateContext": null }, - "start": 34424, - "end": 34425, + "start": 34423, + "end": 34424, "loc": { "start": { "line": 772, @@ -271039,8 +271039,8 @@ "binop": null }, "value": "lightMaps", - "start": 34425, - "end": 34434, + "start": 34424, + "end": 34433, "loc": { "start": { "line": 772, @@ -271065,8 +271065,8 @@ "binop": null, "updateContext": null }, - "start": 34434, - "end": 34435, + "start": 34433, + "end": 34434, "loc": { "start": { "line": 772, @@ -271091,8 +271091,8 @@ "binop": null }, "value": "length", - "start": 34435, - "end": 34441, + "start": 34434, + "end": 34440, "loc": { "start": { "line": 772, @@ -271118,8 +271118,8 @@ "updateContext": null }, "value": ">", - "start": 34442, - "end": 34443, + "start": 34441, + "end": 34442, "loc": { "start": { "line": 772, @@ -271145,8 +271145,8 @@ "updateContext": null }, "value": 0, - "start": 34444, - "end": 34445, + "start": 34443, + "end": 34444, "loc": { "start": { "line": 772, @@ -271170,8 +271170,8 @@ "postfix": false, "binop": null }, - "start": 34445, - "end": 34446, + "start": 34444, + "end": 34445, "loc": { "start": { "line": 772, @@ -271195,8 +271195,8 @@ "postfix": false, "binop": null }, - "start": 34447, - "end": 34448, + "start": 34446, + "end": 34447, "loc": { "start": { "line": 772, @@ -271221,8 +271221,8 @@ "binop": null }, "value": "src", - "start": 34461, - "end": 34464, + "start": 34460, + "end": 34463, "loc": { "start": { "line": 773, @@ -271247,8 +271247,8 @@ "binop": null, "updateContext": null }, - "start": 34464, - "end": 34465, + "start": 34463, + "end": 34464, "loc": { "start": { "line": 773, @@ -271273,8 +271273,8 @@ "binop": null }, "value": "push", - "start": 34465, - "end": 34469, + "start": 34464, + "end": 34468, "loc": { "start": { "line": 773, @@ -271298,8 +271298,8 @@ "postfix": false, "binop": null }, - "start": 34469, - "end": 34470, + "start": 34468, + "end": 34469, "loc": { "start": { "line": 773, @@ -271325,8 +271325,8 @@ "updateContext": null }, "value": "geometry.worldNormal = normalize(vWorldNormal);", - "start": 34470, - "end": 34521, + "start": 34469, + "end": 34520, "loc": { "start": { "line": 773, @@ -271350,8 +271350,8 @@ "postfix": false, "binop": null }, - "start": 34521, - "end": 34522, + "start": 34520, + "end": 34521, "loc": { "start": { "line": 773, @@ -271376,8 +271376,8 @@ "binop": null, "updateContext": null }, - "start": 34522, - "end": 34523, + "start": 34521, + "end": 34522, "loc": { "start": { "line": 773, @@ -271401,8 +271401,8 @@ "postfix": false, "binop": null }, - "start": 34532, - "end": 34533, + "start": 34531, + "end": 34532, "loc": { "start": { "line": 774, @@ -271429,8 +271429,8 @@ "updateContext": null }, "value": "if", - "start": 34543, - "end": 34545, + "start": 34542, + "end": 34544, "loc": { "start": { "line": 776, @@ -271454,8 +271454,8 @@ "postfix": false, "binop": null }, - "start": 34546, - "end": 34547, + "start": 34545, + "end": 34546, "loc": { "start": { "line": 776, @@ -271480,8 +271480,8 @@ "binop": null }, "value": "lightsState", - "start": 34547, - "end": 34558, + "start": 34546, + "end": 34557, "loc": { "start": { "line": 776, @@ -271506,8 +271506,8 @@ "binop": null, "updateContext": null }, - "start": 34558, - "end": 34559, + "start": 34557, + "end": 34558, "loc": { "start": { "line": 776, @@ -271532,8 +271532,8 @@ "binop": null }, "value": "lightMaps", - "start": 34559, - "end": 34568, + "start": 34558, + "end": 34567, "loc": { "start": { "line": 776, @@ -271558,8 +271558,8 @@ "binop": null, "updateContext": null }, - "start": 34568, - "end": 34569, + "start": 34567, + "end": 34568, "loc": { "start": { "line": 776, @@ -271584,8 +271584,8 @@ "binop": null }, "value": "length", - "start": 34569, - "end": 34575, + "start": 34568, + "end": 34574, "loc": { "start": { "line": 776, @@ -271611,8 +271611,8 @@ "updateContext": null }, "value": ">", - "start": 34576, - "end": 34577, + "start": 34575, + "end": 34576, "loc": { "start": { "line": 776, @@ -271638,8 +271638,8 @@ "updateContext": null }, "value": 0, - "start": 34578, - "end": 34579, + "start": 34577, + "end": 34578, "loc": { "start": { "line": 776, @@ -271665,8 +271665,8 @@ "updateContext": null }, "value": "||", - "start": 34580, - "end": 34582, + "start": 34579, + "end": 34581, "loc": { "start": { "line": 776, @@ -271691,8 +271691,8 @@ "binop": null }, "value": "lightsState", - "start": 34583, - "end": 34594, + "start": 34582, + "end": 34593, "loc": { "start": { "line": 776, @@ -271717,8 +271717,8 @@ "binop": null, "updateContext": null }, - "start": 34594, - "end": 34595, + "start": 34593, + "end": 34594, "loc": { "start": { "line": 776, @@ -271743,8 +271743,8 @@ "binop": null }, "value": "reflectionMaps", - "start": 34595, - "end": 34609, + "start": 34594, + "end": 34608, "loc": { "start": { "line": 776, @@ -271769,8 +271769,8 @@ "binop": null, "updateContext": null }, - "start": 34609, - "end": 34610, + "start": 34608, + "end": 34609, "loc": { "start": { "line": 776, @@ -271795,8 +271795,8 @@ "binop": null }, "value": "length", - "start": 34610, - "end": 34616, + "start": 34609, + "end": 34615, "loc": { "start": { "line": 776, @@ -271822,8 +271822,8 @@ "updateContext": null }, "value": ">", - "start": 34617, - "end": 34618, + "start": 34616, + "end": 34617, "loc": { "start": { "line": 776, @@ -271849,8 +271849,8 @@ "updateContext": null }, "value": 0, - "start": 34619, - "end": 34620, + "start": 34618, + "end": 34619, "loc": { "start": { "line": 776, @@ -271874,8 +271874,8 @@ "postfix": false, "binop": null }, - "start": 34620, - "end": 34621, + "start": 34619, + "end": 34620, "loc": { "start": { "line": 776, @@ -271899,8 +271899,8 @@ "postfix": false, "binop": null }, - "start": 34622, - "end": 34623, + "start": 34621, + "end": 34622, "loc": { "start": { "line": 776, @@ -271925,8 +271925,8 @@ "binop": null }, "value": "src", - "start": 34636, - "end": 34639, + "start": 34635, + "end": 34638, "loc": { "start": { "line": 777, @@ -271951,8 +271951,8 @@ "binop": null, "updateContext": null }, - "start": 34639, - "end": 34640, + "start": 34638, + "end": 34639, "loc": { "start": { "line": 777, @@ -271977,8 +271977,8 @@ "binop": null }, "value": "push", - "start": 34640, - "end": 34644, + "start": 34639, + "end": 34643, "loc": { "start": { "line": 777, @@ -272002,8 +272002,8 @@ "postfix": false, "binop": null }, - "start": 34644, - "end": 34645, + "start": 34643, + "end": 34644, "loc": { "start": { "line": 777, @@ -272029,8 +272029,8 @@ "updateContext": null }, "value": "computePBRLightMapping(geometry, material, reflectedLight);", - "start": 34645, - "end": 34706, + "start": 34644, + "end": 34705, "loc": { "start": { "line": 777, @@ -272054,8 +272054,8 @@ "postfix": false, "binop": null }, - "start": 34706, - "end": 34707, + "start": 34705, + "end": 34706, "loc": { "start": { "line": 777, @@ -272080,8 +272080,8 @@ "binop": null, "updateContext": null }, - "start": 34707, - "end": 34708, + "start": 34706, + "end": 34707, "loc": { "start": { "line": 777, @@ -272105,8 +272105,8 @@ "postfix": false, "binop": null }, - "start": 34717, - "end": 34718, + "start": 34716, + "end": 34717, "loc": { "start": { "line": 778, @@ -272133,8 +272133,8 @@ "updateContext": null }, "value": "for", - "start": 34728, - "end": 34731, + "start": 34727, + "end": 34730, "loc": { "start": { "line": 780, @@ -272158,8 +272158,8 @@ "postfix": false, "binop": null }, - "start": 34732, - "end": 34733, + "start": 34731, + "end": 34732, "loc": { "start": { "line": 780, @@ -272186,8 +272186,8 @@ "updateContext": null }, "value": "let", - "start": 34733, - "end": 34736, + "start": 34732, + "end": 34735, "loc": { "start": { "line": 780, @@ -272212,8 +272212,8 @@ "binop": null }, "value": "i", - "start": 34737, - "end": 34738, + "start": 34736, + "end": 34737, "loc": { "start": { "line": 780, @@ -272239,8 +272239,8 @@ "updateContext": null }, "value": "=", - "start": 34739, - "end": 34740, + "start": 34738, + "end": 34739, "loc": { "start": { "line": 780, @@ -272266,8 +272266,8 @@ "updateContext": null }, "value": 0, - "start": 34741, - "end": 34742, + "start": 34740, + "end": 34741, "loc": { "start": { "line": 780, @@ -272292,8 +272292,8 @@ "binop": null, "updateContext": null }, - "start": 34742, - "end": 34743, + "start": 34741, + "end": 34742, "loc": { "start": { "line": 780, @@ -272318,8 +272318,8 @@ "binop": null }, "value": "len", - "start": 34744, - "end": 34747, + "start": 34743, + "end": 34746, "loc": { "start": { "line": 780, @@ -272345,8 +272345,8 @@ "updateContext": null }, "value": "=", - "start": 34748, - "end": 34749, + "start": 34747, + "end": 34748, "loc": { "start": { "line": 780, @@ -272371,8 +272371,8 @@ "binop": null }, "value": "lightsState", - "start": 34750, - "end": 34761, + "start": 34749, + "end": 34760, "loc": { "start": { "line": 780, @@ -272397,8 +272397,8 @@ "binop": null, "updateContext": null }, - "start": 34761, - "end": 34762, + "start": 34760, + "end": 34761, "loc": { "start": { "line": 780, @@ -272423,8 +272423,8 @@ "binop": null }, "value": "lights", - "start": 34762, - "end": 34768, + "start": 34761, + "end": 34767, "loc": { "start": { "line": 780, @@ -272449,8 +272449,8 @@ "binop": null, "updateContext": null }, - "start": 34768, - "end": 34769, + "start": 34767, + "end": 34768, "loc": { "start": { "line": 780, @@ -272475,8 +272475,8 @@ "binop": null }, "value": "length", - "start": 34769, - "end": 34775, + "start": 34768, + "end": 34774, "loc": { "start": { "line": 780, @@ -272501,8 +272501,8 @@ "binop": null, "updateContext": null }, - "start": 34775, - "end": 34776, + "start": 34774, + "end": 34775, "loc": { "start": { "line": 780, @@ -272527,8 +272527,8 @@ "binop": null }, "value": "i", - "start": 34777, - "end": 34778, + "start": 34776, + "end": 34777, "loc": { "start": { "line": 780, @@ -272554,8 +272554,8 @@ "updateContext": null }, "value": "<", - "start": 34779, - "end": 34780, + "start": 34778, + "end": 34779, "loc": { "start": { "line": 780, @@ -272580,8 +272580,8 @@ "binop": null }, "value": "len", - "start": 34781, - "end": 34784, + "start": 34780, + "end": 34783, "loc": { "start": { "line": 780, @@ -272606,8 +272606,8 @@ "binop": null, "updateContext": null }, - "start": 34784, - "end": 34785, + "start": 34783, + "end": 34784, "loc": { "start": { "line": 780, @@ -272632,8 +272632,8 @@ "binop": null }, "value": "i", - "start": 34786, - "end": 34787, + "start": 34785, + "end": 34786, "loc": { "start": { "line": 780, @@ -272658,8 +272658,8 @@ "binop": null }, "value": "++", - "start": 34787, - "end": 34789, + "start": 34786, + "end": 34788, "loc": { "start": { "line": 780, @@ -272683,8 +272683,8 @@ "postfix": false, "binop": null }, - "start": 34789, - "end": 34790, + "start": 34788, + "end": 34789, "loc": { "start": { "line": 780, @@ -272708,8 +272708,8 @@ "postfix": false, "binop": null }, - "start": 34791, - "end": 34792, + "start": 34790, + "end": 34791, "loc": { "start": { "line": 780, @@ -272736,8 +272736,8 @@ "updateContext": null }, "value": "const", - "start": 34806, - "end": 34811, + "start": 34805, + "end": 34810, "loc": { "start": { "line": 782, @@ -272762,8 +272762,8 @@ "binop": null }, "value": "light", - "start": 34812, - "end": 34817, + "start": 34811, + "end": 34816, "loc": { "start": { "line": 782, @@ -272789,8 +272789,8 @@ "updateContext": null }, "value": "=", - "start": 34818, - "end": 34819, + "start": 34817, + "end": 34818, "loc": { "start": { "line": 782, @@ -272815,8 +272815,8 @@ "binop": null }, "value": "lightsState", - "start": 34820, - "end": 34831, + "start": 34819, + "end": 34830, "loc": { "start": { "line": 782, @@ -272841,8 +272841,8 @@ "binop": null, "updateContext": null }, - "start": 34831, - "end": 34832, + "start": 34830, + "end": 34831, "loc": { "start": { "line": 782, @@ -272867,8 +272867,8 @@ "binop": null }, "value": "lights", - "start": 34832, - "end": 34838, + "start": 34831, + "end": 34837, "loc": { "start": { "line": 782, @@ -272893,8 +272893,8 @@ "binop": null, "updateContext": null }, - "start": 34838, - "end": 34839, + "start": 34837, + "end": 34838, "loc": { "start": { "line": 782, @@ -272919,8 +272919,8 @@ "binop": null }, "value": "i", - "start": 34839, - "end": 34840, + "start": 34838, + "end": 34839, "loc": { "start": { "line": 782, @@ -272945,8 +272945,8 @@ "binop": null, "updateContext": null }, - "start": 34840, - "end": 34841, + "start": 34839, + "end": 34840, "loc": { "start": { "line": 782, @@ -272971,8 +272971,8 @@ "binop": null, "updateContext": null }, - "start": 34841, - "end": 34842, + "start": 34840, + "end": 34841, "loc": { "start": { "line": 782, @@ -272999,8 +272999,8 @@ "updateContext": null }, "value": "if", - "start": 34856, - "end": 34858, + "start": 34855, + "end": 34857, "loc": { "start": { "line": 784, @@ -273024,8 +273024,8 @@ "postfix": false, "binop": null }, - "start": 34859, - "end": 34860, + "start": 34858, + "end": 34859, "loc": { "start": { "line": 784, @@ -273050,8 +273050,8 @@ "binop": null }, "value": "light", - "start": 34860, - "end": 34865, + "start": 34859, + "end": 34864, "loc": { "start": { "line": 784, @@ -273076,8 +273076,8 @@ "binop": null, "updateContext": null }, - "start": 34865, - "end": 34866, + "start": 34864, + "end": 34865, "loc": { "start": { "line": 784, @@ -273102,8 +273102,8 @@ "binop": null }, "value": "type", - "start": 34866, - "end": 34870, + "start": 34865, + "end": 34869, "loc": { "start": { "line": 784, @@ -273129,8 +273129,8 @@ "updateContext": null }, "value": "===", - "start": 34871, - "end": 34874, + "start": 34870, + "end": 34873, "loc": { "start": { "line": 784, @@ -273156,8 +273156,8 @@ "updateContext": null }, "value": "ambient", - "start": 34875, - "end": 34884, + "start": 34874, + "end": 34883, "loc": { "start": { "line": 784, @@ -273181,8 +273181,8 @@ "postfix": false, "binop": null }, - "start": 34884, - "end": 34885, + "start": 34883, + "end": 34884, "loc": { "start": { "line": 784, @@ -273206,8 +273206,8 @@ "postfix": false, "binop": null }, - "start": 34886, - "end": 34887, + "start": 34885, + "end": 34886, "loc": { "start": { "line": 784, @@ -273234,8 +273234,8 @@ "updateContext": null }, "value": "continue", - "start": 34904, - "end": 34912, + "start": 34903, + "end": 34911, "loc": { "start": { "line": 785, @@ -273260,8 +273260,8 @@ "binop": null, "updateContext": null }, - "start": 34912, - "end": 34913, + "start": 34911, + "end": 34912, "loc": { "start": { "line": 785, @@ -273285,8 +273285,8 @@ "postfix": false, "binop": null }, - "start": 34926, - "end": 34927, + "start": 34925, + "end": 34926, "loc": { "start": { "line": 786, @@ -273313,8 +273313,8 @@ "updateContext": null }, "value": "if", - "start": 34940, - "end": 34942, + "start": 34939, + "end": 34941, "loc": { "start": { "line": 787, @@ -273338,8 +273338,8 @@ "postfix": false, "binop": null }, - "start": 34943, - "end": 34944, + "start": 34942, + "end": 34943, "loc": { "start": { "line": 787, @@ -273364,8 +273364,8 @@ "binop": null }, "value": "light", - "start": 34944, - "end": 34949, + "start": 34943, + "end": 34948, "loc": { "start": { "line": 787, @@ -273390,8 +273390,8 @@ "binop": null, "updateContext": null }, - "start": 34949, - "end": 34950, + "start": 34948, + "end": 34949, "loc": { "start": { "line": 787, @@ -273416,8 +273416,8 @@ "binop": null }, "value": "type", - "start": 34950, - "end": 34954, + "start": 34949, + "end": 34953, "loc": { "start": { "line": 787, @@ -273443,8 +273443,8 @@ "updateContext": null }, "value": "===", - "start": 34955, - "end": 34958, + "start": 34954, + "end": 34957, "loc": { "start": { "line": 787, @@ -273470,8 +273470,8 @@ "updateContext": null }, "value": "dir", - "start": 34959, - "end": 34964, + "start": 34958, + "end": 34963, "loc": { "start": { "line": 787, @@ -273495,8 +273495,8 @@ "postfix": false, "binop": null }, - "start": 34964, - "end": 34965, + "start": 34963, + "end": 34964, "loc": { "start": { "line": 787, @@ -273520,8 +273520,8 @@ "postfix": false, "binop": null }, - "start": 34966, - "end": 34967, + "start": 34965, + "end": 34966, "loc": { "start": { "line": 787, @@ -273548,8 +273548,8 @@ "updateContext": null }, "value": "if", - "start": 34984, - "end": 34986, + "start": 34983, + "end": 34985, "loc": { "start": { "line": 788, @@ -273573,8 +273573,8 @@ "postfix": false, "binop": null }, - "start": 34987, - "end": 34988, + "start": 34986, + "end": 34987, "loc": { "start": { "line": 788, @@ -273599,8 +273599,8 @@ "binop": null }, "value": "light", - "start": 34988, - "end": 34993, + "start": 34987, + "end": 34992, "loc": { "start": { "line": 788, @@ -273625,8 +273625,8 @@ "binop": null, "updateContext": null }, - "start": 34993, - "end": 34994, + "start": 34992, + "end": 34993, "loc": { "start": { "line": 788, @@ -273651,8 +273651,8 @@ "binop": null }, "value": "space", - "start": 34994, - "end": 34999, + "start": 34993, + "end": 34998, "loc": { "start": { "line": 788, @@ -273678,8 +273678,8 @@ "updateContext": null }, "value": "===", - "start": 35000, - "end": 35003, + "start": 34999, + "end": 35002, "loc": { "start": { "line": 788, @@ -273705,8 +273705,8 @@ "updateContext": null }, "value": "view", - "start": 35004, - "end": 35010, + "start": 35003, + "end": 35009, "loc": { "start": { "line": 788, @@ -273730,8 +273730,8 @@ "postfix": false, "binop": null }, - "start": 35010, - "end": 35011, + "start": 35009, + "end": 35010, "loc": { "start": { "line": 788, @@ -273755,8 +273755,8 @@ "postfix": false, "binop": null }, - "start": 35012, - "end": 35013, + "start": 35011, + "end": 35012, "loc": { "start": { "line": 788, @@ -273781,8 +273781,8 @@ "binop": null }, "value": "src", - "start": 35034, - "end": 35037, + "start": 35033, + "end": 35036, "loc": { "start": { "line": 789, @@ -273807,8 +273807,8 @@ "binop": null, "updateContext": null }, - "start": 35037, - "end": 35038, + "start": 35036, + "end": 35037, "loc": { "start": { "line": 789, @@ -273833,8 +273833,8 @@ "binop": null }, "value": "push", - "start": 35038, - "end": 35042, + "start": 35037, + "end": 35041, "loc": { "start": { "line": 789, @@ -273858,8 +273858,8 @@ "postfix": false, "binop": null }, - "start": 35042, - "end": 35043, + "start": 35041, + "end": 35042, "loc": { "start": { "line": 789, @@ -273885,8 +273885,8 @@ "updateContext": null }, "value": "light.direction = normalize(lightDir", - "start": 35043, - "end": 35081, + "start": 35042, + "end": 35080, "loc": { "start": { "line": 789, @@ -273912,8 +273912,8 @@ "updateContext": null }, "value": "+", - "start": 35082, - "end": 35083, + "start": 35081, + "end": 35082, "loc": { "start": { "line": 789, @@ -273938,8 +273938,8 @@ "binop": null }, "value": "i", - "start": 35084, - "end": 35085, + "start": 35083, + "end": 35084, "loc": { "start": { "line": 789, @@ -273965,8 +273965,8 @@ "updateContext": null }, "value": "+", - "start": 35086, - "end": 35087, + "start": 35085, + "end": 35086, "loc": { "start": { "line": 789, @@ -273992,8 +273992,8 @@ "updateContext": null }, "value": ");", - "start": 35088, - "end": 35092, + "start": 35087, + "end": 35091, "loc": { "start": { "line": 789, @@ -274017,8 +274017,8 @@ "postfix": false, "binop": null }, - "start": 35092, - "end": 35093, + "start": 35091, + "end": 35092, "loc": { "start": { "line": 789, @@ -274043,8 +274043,8 @@ "binop": null, "updateContext": null }, - "start": 35093, - "end": 35094, + "start": 35092, + "end": 35093, "loc": { "start": { "line": 789, @@ -274068,8 +274068,8 @@ "postfix": false, "binop": null }, - "start": 35111, - "end": 35112, + "start": 35110, + "end": 35111, "loc": { "start": { "line": 790, @@ -274096,8 +274096,8 @@ "updateContext": null }, "value": "else", - "start": 35113, - "end": 35117, + "start": 35112, + "end": 35116, "loc": { "start": { "line": 790, @@ -274121,8 +274121,8 @@ "postfix": false, "binop": null }, - "start": 35118, - "end": 35119, + "start": 35117, + "end": 35118, "loc": { "start": { "line": 790, @@ -274147,8 +274147,8 @@ "binop": null }, "value": "src", - "start": 35140, - "end": 35143, + "start": 35139, + "end": 35142, "loc": { "start": { "line": 791, @@ -274173,8 +274173,8 @@ "binop": null, "updateContext": null }, - "start": 35143, - "end": 35144, + "start": 35142, + "end": 35143, "loc": { "start": { "line": 791, @@ -274199,8 +274199,8 @@ "binop": null }, "value": "push", - "start": 35144, - "end": 35148, + "start": 35143, + "end": 35147, "loc": { "start": { "line": 791, @@ -274224,8 +274224,8 @@ "postfix": false, "binop": null }, - "start": 35148, - "end": 35149, + "start": 35147, + "end": 35148, "loc": { "start": { "line": 791, @@ -274251,8 +274251,8 @@ "updateContext": null }, "value": "light.direction = normalize((viewMatrix * vec4(lightDir", - "start": 35149, - "end": 35206, + "start": 35148, + "end": 35205, "loc": { "start": { "line": 791, @@ -274278,8 +274278,8 @@ "updateContext": null }, "value": "+", - "start": 35207, - "end": 35208, + "start": 35206, + "end": 35207, "loc": { "start": { "line": 791, @@ -274304,8 +274304,8 @@ "binop": null }, "value": "i", - "start": 35209, - "end": 35210, + "start": 35208, + "end": 35209, "loc": { "start": { "line": 791, @@ -274331,8 +274331,8 @@ "updateContext": null }, "value": "+", - "start": 35211, - "end": 35212, + "start": 35210, + "end": 35211, "loc": { "start": { "line": 791, @@ -274358,8 +274358,8 @@ "updateContext": null }, "value": ", 0.0)).xyz);", - "start": 35213, - "end": 35228, + "start": 35212, + "end": 35227, "loc": { "start": { "line": 791, @@ -274383,8 +274383,8 @@ "postfix": false, "binop": null }, - "start": 35228, - "end": 35229, + "start": 35227, + "end": 35228, "loc": { "start": { "line": 791, @@ -274409,8 +274409,8 @@ "binop": null, "updateContext": null }, - "start": 35229, - "end": 35230, + "start": 35228, + "end": 35229, "loc": { "start": { "line": 791, @@ -274434,8 +274434,8 @@ "postfix": false, "binop": null }, - "start": 35247, - "end": 35248, + "start": 35246, + "end": 35247, "loc": { "start": { "line": 792, @@ -274459,8 +274459,8 @@ "postfix": false, "binop": null }, - "start": 35261, - "end": 35262, + "start": 35260, + "end": 35261, "loc": { "start": { "line": 793, @@ -274487,8 +274487,8 @@ "updateContext": null }, "value": "else", - "start": 35263, - "end": 35267, + "start": 35262, + "end": 35266, "loc": { "start": { "line": 793, @@ -274515,8 +274515,8 @@ "updateContext": null }, "value": "if", - "start": 35268, - "end": 35270, + "start": 35267, + "end": 35269, "loc": { "start": { "line": 793, @@ -274540,8 +274540,8 @@ "postfix": false, "binop": null }, - "start": 35271, - "end": 35272, + "start": 35270, + "end": 35271, "loc": { "start": { "line": 793, @@ -274566,8 +274566,8 @@ "binop": null }, "value": "light", - "start": 35272, - "end": 35277, + "start": 35271, + "end": 35276, "loc": { "start": { "line": 793, @@ -274592,8 +274592,8 @@ "binop": null, "updateContext": null }, - "start": 35277, - "end": 35278, + "start": 35276, + "end": 35277, "loc": { "start": { "line": 793, @@ -274618,8 +274618,8 @@ "binop": null }, "value": "type", - "start": 35278, - "end": 35282, + "start": 35277, + "end": 35281, "loc": { "start": { "line": 793, @@ -274645,8 +274645,8 @@ "updateContext": null }, "value": "===", - "start": 35283, - "end": 35286, + "start": 35282, + "end": 35285, "loc": { "start": { "line": 793, @@ -274672,8 +274672,8 @@ "updateContext": null }, "value": "point", - "start": 35287, - "end": 35294, + "start": 35286, + "end": 35293, "loc": { "start": { "line": 793, @@ -274697,8 +274697,8 @@ "postfix": false, "binop": null }, - "start": 35294, - "end": 35295, + "start": 35293, + "end": 35294, "loc": { "start": { "line": 793, @@ -274722,8 +274722,8 @@ "postfix": false, "binop": null }, - "start": 35296, - "end": 35297, + "start": 35295, + "end": 35296, "loc": { "start": { "line": 793, @@ -274750,8 +274750,8 @@ "updateContext": null }, "value": "if", - "start": 35314, - "end": 35316, + "start": 35313, + "end": 35315, "loc": { "start": { "line": 794, @@ -274775,8 +274775,8 @@ "postfix": false, "binop": null }, - "start": 35317, - "end": 35318, + "start": 35316, + "end": 35317, "loc": { "start": { "line": 794, @@ -274801,8 +274801,8 @@ "binop": null }, "value": "light", - "start": 35318, - "end": 35323, + "start": 35317, + "end": 35322, "loc": { "start": { "line": 794, @@ -274827,8 +274827,8 @@ "binop": null, "updateContext": null }, - "start": 35323, - "end": 35324, + "start": 35322, + "end": 35323, "loc": { "start": { "line": 794, @@ -274853,8 +274853,8 @@ "binop": null }, "value": "space", - "start": 35324, - "end": 35329, + "start": 35323, + "end": 35328, "loc": { "start": { "line": 794, @@ -274880,8 +274880,8 @@ "updateContext": null }, "value": "===", - "start": 35330, - "end": 35333, + "start": 35329, + "end": 35332, "loc": { "start": { "line": 794, @@ -274907,8 +274907,8 @@ "updateContext": null }, "value": "view", - "start": 35334, - "end": 35340, + "start": 35333, + "end": 35339, "loc": { "start": { "line": 794, @@ -274932,8 +274932,8 @@ "postfix": false, "binop": null }, - "start": 35340, - "end": 35341, + "start": 35339, + "end": 35340, "loc": { "start": { "line": 794, @@ -274957,8 +274957,8 @@ "postfix": false, "binop": null }, - "start": 35342, - "end": 35343, + "start": 35341, + "end": 35342, "loc": { "start": { "line": 794, @@ -274983,8 +274983,8 @@ "binop": null }, "value": "src", - "start": 35364, - "end": 35367, + "start": 35363, + "end": 35366, "loc": { "start": { "line": 795, @@ -275009,8 +275009,8 @@ "binop": null, "updateContext": null }, - "start": 35367, - "end": 35368, + "start": 35366, + "end": 35367, "loc": { "start": { "line": 795, @@ -275035,8 +275035,8 @@ "binop": null }, "value": "push", - "start": 35368, - "end": 35372, + "start": 35367, + "end": 35371, "loc": { "start": { "line": 795, @@ -275060,8 +275060,8 @@ "postfix": false, "binop": null }, - "start": 35372, - "end": 35373, + "start": 35371, + "end": 35372, "loc": { "start": { "line": 795, @@ -275087,8 +275087,8 @@ "updateContext": null }, "value": "light.direction = normalize(lightPos", - "start": 35373, - "end": 35411, + "start": 35372, + "end": 35410, "loc": { "start": { "line": 795, @@ -275114,8 +275114,8 @@ "updateContext": null }, "value": "+", - "start": 35412, - "end": 35413, + "start": 35411, + "end": 35412, "loc": { "start": { "line": 795, @@ -275140,8 +275140,8 @@ "binop": null }, "value": "i", - "start": 35414, - "end": 35415, + "start": 35413, + "end": 35414, "loc": { "start": { "line": 795, @@ -275167,8 +275167,8 @@ "updateContext": null }, "value": "+", - "start": 35416, - "end": 35417, + "start": 35415, + "end": 35416, "loc": { "start": { "line": 795, @@ -275194,8 +275194,8 @@ "updateContext": null }, "value": " - vViewPosition.xyz);", - "start": 35418, - "end": 35442, + "start": 35417, + "end": 35441, "loc": { "start": { "line": 795, @@ -275219,8 +275219,8 @@ "postfix": false, "binop": null }, - "start": 35442, - "end": 35443, + "start": 35441, + "end": 35442, "loc": { "start": { "line": 795, @@ -275245,8 +275245,8 @@ "binop": null, "updateContext": null }, - "start": 35443, - "end": 35444, + "start": 35442, + "end": 35443, "loc": { "start": { "line": 795, @@ -275270,8 +275270,8 @@ "postfix": false, "binop": null }, - "start": 35461, - "end": 35462, + "start": 35460, + "end": 35461, "loc": { "start": { "line": 796, @@ -275298,8 +275298,8 @@ "updateContext": null }, "value": "else", - "start": 35463, - "end": 35467, + "start": 35462, + "end": 35466, "loc": { "start": { "line": 796, @@ -275323,8 +275323,8 @@ "postfix": false, "binop": null }, - "start": 35468, - "end": 35469, + "start": 35467, + "end": 35468, "loc": { "start": { "line": 796, @@ -275349,8 +275349,8 @@ "binop": null }, "value": "src", - "start": 35490, - "end": 35493, + "start": 35489, + "end": 35492, "loc": { "start": { "line": 797, @@ -275375,8 +275375,8 @@ "binop": null, "updateContext": null }, - "start": 35493, - "end": 35494, + "start": 35492, + "end": 35493, "loc": { "start": { "line": 797, @@ -275401,8 +275401,8 @@ "binop": null }, "value": "push", - "start": 35494, - "end": 35498, + "start": 35493, + "end": 35497, "loc": { "start": { "line": 797, @@ -275426,8 +275426,8 @@ "postfix": false, "binop": null }, - "start": 35498, - "end": 35499, + "start": 35497, + "end": 35498, "loc": { "start": { "line": 797, @@ -275453,8 +275453,8 @@ "updateContext": null }, "value": "light.direction = normalize((viewMatrix * vec4(lightPos", - "start": 35499, - "end": 35556, + "start": 35498, + "end": 35555, "loc": { "start": { "line": 797, @@ -275480,8 +275480,8 @@ "updateContext": null }, "value": "+", - "start": 35557, - "end": 35558, + "start": 35556, + "end": 35557, "loc": { "start": { "line": 797, @@ -275506,8 +275506,8 @@ "binop": null }, "value": "i", - "start": 35559, - "end": 35560, + "start": 35558, + "end": 35559, "loc": { "start": { "line": 797, @@ -275533,8 +275533,8 @@ "updateContext": null }, "value": "+", - "start": 35561, - "end": 35562, + "start": 35560, + "end": 35561, "loc": { "start": { "line": 797, @@ -275560,8 +275560,8 @@ "updateContext": null }, "value": ", 0.0)).xyz);", - "start": 35563, - "end": 35578, + "start": 35562, + "end": 35577, "loc": { "start": { "line": 797, @@ -275585,8 +275585,8 @@ "postfix": false, "binop": null }, - "start": 35578, - "end": 35579, + "start": 35577, + "end": 35578, "loc": { "start": { "line": 797, @@ -275611,8 +275611,8 @@ "binop": null, "updateContext": null }, - "start": 35579, - "end": 35580, + "start": 35578, + "end": 35579, "loc": { "start": { "line": 797, @@ -275636,8 +275636,8 @@ "postfix": false, "binop": null }, - "start": 35597, - "end": 35598, + "start": 35596, + "end": 35597, "loc": { "start": { "line": 798, @@ -275661,8 +275661,8 @@ "postfix": false, "binop": null }, - "start": 35611, - "end": 35612, + "start": 35610, + "end": 35611, "loc": { "start": { "line": 799, @@ -275689,8 +275689,8 @@ "updateContext": null }, "value": "else", - "start": 35613, - "end": 35617, + "start": 35612, + "end": 35616, "loc": { "start": { "line": 799, @@ -275717,8 +275717,8 @@ "updateContext": null }, "value": "if", - "start": 35618, - "end": 35620, + "start": 35617, + "end": 35619, "loc": { "start": { "line": 799, @@ -275742,8 +275742,8 @@ "postfix": false, "binop": null }, - "start": 35621, - "end": 35622, + "start": 35620, + "end": 35621, "loc": { "start": { "line": 799, @@ -275768,8 +275768,8 @@ "binop": null }, "value": "light", - "start": 35622, - "end": 35627, + "start": 35621, + "end": 35626, "loc": { "start": { "line": 799, @@ -275794,8 +275794,8 @@ "binop": null, "updateContext": null }, - "start": 35627, - "end": 35628, + "start": 35626, + "end": 35627, "loc": { "start": { "line": 799, @@ -275820,8 +275820,8 @@ "binop": null }, "value": "type", - "start": 35628, - "end": 35632, + "start": 35627, + "end": 35631, "loc": { "start": { "line": 799, @@ -275847,8 +275847,8 @@ "updateContext": null }, "value": "===", - "start": 35633, - "end": 35636, + "start": 35632, + "end": 35635, "loc": { "start": { "line": 799, @@ -275874,8 +275874,8 @@ "updateContext": null }, "value": "spot", - "start": 35637, - "end": 35643, + "start": 35636, + "end": 35642, "loc": { "start": { "line": 799, @@ -275899,8 +275899,8 @@ "postfix": false, "binop": null }, - "start": 35643, - "end": 35644, + "start": 35642, + "end": 35643, "loc": { "start": { "line": 799, @@ -275924,8 +275924,8 @@ "postfix": false, "binop": null }, - "start": 35645, - "end": 35646, + "start": 35644, + "end": 35645, "loc": { "start": { "line": 799, @@ -275952,8 +275952,8 @@ "updateContext": null }, "value": "if", - "start": 35663, - "end": 35665, + "start": 35662, + "end": 35664, "loc": { "start": { "line": 800, @@ -275977,8 +275977,8 @@ "postfix": false, "binop": null }, - "start": 35666, - "end": 35667, + "start": 35665, + "end": 35666, "loc": { "start": { "line": 800, @@ -276003,8 +276003,8 @@ "binop": null }, "value": "light", - "start": 35667, - "end": 35672, + "start": 35666, + "end": 35671, "loc": { "start": { "line": 800, @@ -276029,8 +276029,8 @@ "binop": null, "updateContext": null }, - "start": 35672, - "end": 35673, + "start": 35671, + "end": 35672, "loc": { "start": { "line": 800, @@ -276055,8 +276055,8 @@ "binop": null }, "value": "space", - "start": 35673, - "end": 35678, + "start": 35672, + "end": 35677, "loc": { "start": { "line": 800, @@ -276082,8 +276082,8 @@ "updateContext": null }, "value": "===", - "start": 35679, - "end": 35682, + "start": 35678, + "end": 35681, "loc": { "start": { "line": 800, @@ -276109,8 +276109,8 @@ "updateContext": null }, "value": "view", - "start": 35683, - "end": 35689, + "start": 35682, + "end": 35688, "loc": { "start": { "line": 800, @@ -276134,8 +276134,8 @@ "postfix": false, "binop": null }, - "start": 35689, - "end": 35690, + "start": 35688, + "end": 35689, "loc": { "start": { "line": 800, @@ -276159,8 +276159,8 @@ "postfix": false, "binop": null }, - "start": 35691, - "end": 35692, + "start": 35690, + "end": 35691, "loc": { "start": { "line": 800, @@ -276185,8 +276185,8 @@ "binop": null }, "value": "src", - "start": 35713, - "end": 35716, + "start": 35712, + "end": 35715, "loc": { "start": { "line": 801, @@ -276211,8 +276211,8 @@ "binop": null, "updateContext": null }, - "start": 35716, - "end": 35717, + "start": 35715, + "end": 35716, "loc": { "start": { "line": 801, @@ -276237,8 +276237,8 @@ "binop": null }, "value": "push", - "start": 35717, - "end": 35721, + "start": 35716, + "end": 35720, "loc": { "start": { "line": 801, @@ -276262,8 +276262,8 @@ "postfix": false, "binop": null }, - "start": 35721, - "end": 35722, + "start": 35720, + "end": 35721, "loc": { "start": { "line": 801, @@ -276289,8 +276289,8 @@ "updateContext": null }, "value": "light.direction = normalize(lightDir", - "start": 35722, - "end": 35760, + "start": 35721, + "end": 35759, "loc": { "start": { "line": 801, @@ -276316,8 +276316,8 @@ "updateContext": null }, "value": "+", - "start": 35761, - "end": 35762, + "start": 35760, + "end": 35761, "loc": { "start": { "line": 801, @@ -276342,8 +276342,8 @@ "binop": null }, "value": "i", - "start": 35763, - "end": 35764, + "start": 35762, + "end": 35763, "loc": { "start": { "line": 801, @@ -276369,8 +276369,8 @@ "updateContext": null }, "value": "+", - "start": 35765, - "end": 35766, + "start": 35764, + "end": 35765, "loc": { "start": { "line": 801, @@ -276396,8 +276396,8 @@ "updateContext": null }, "value": ");", - "start": 35767, - "end": 35771, + "start": 35766, + "end": 35770, "loc": { "start": { "line": 801, @@ -276421,8 +276421,8 @@ "postfix": false, "binop": null }, - "start": 35771, - "end": 35772, + "start": 35770, + "end": 35771, "loc": { "start": { "line": 801, @@ -276447,8 +276447,8 @@ "binop": null, "updateContext": null }, - "start": 35772, - "end": 35773, + "start": 35771, + "end": 35772, "loc": { "start": { "line": 801, @@ -276472,8 +276472,8 @@ "postfix": false, "binop": null }, - "start": 35790, - "end": 35791, + "start": 35789, + "end": 35790, "loc": { "start": { "line": 802, @@ -276500,8 +276500,8 @@ "updateContext": null }, "value": "else", - "start": 35792, - "end": 35796, + "start": 35791, + "end": 35795, "loc": { "start": { "line": 802, @@ -276525,8 +276525,8 @@ "postfix": false, "binop": null }, - "start": 35797, - "end": 35798, + "start": 35796, + "end": 35797, "loc": { "start": { "line": 802, @@ -276551,8 +276551,8 @@ "binop": null }, "value": "src", - "start": 35819, - "end": 35822, + "start": 35818, + "end": 35821, "loc": { "start": { "line": 803, @@ -276577,8 +276577,8 @@ "binop": null, "updateContext": null }, - "start": 35822, - "end": 35823, + "start": 35821, + "end": 35822, "loc": { "start": { "line": 803, @@ -276603,8 +276603,8 @@ "binop": null }, "value": "push", - "start": 35823, - "end": 35827, + "start": 35822, + "end": 35826, "loc": { "start": { "line": 803, @@ -276628,8 +276628,8 @@ "postfix": false, "binop": null }, - "start": 35827, - "end": 35828, + "start": 35826, + "end": 35827, "loc": { "start": { "line": 803, @@ -276655,8 +276655,8 @@ "updateContext": null }, "value": "light.direction = normalize((viewMatrix * vec4(lightDir", - "start": 35828, - "end": 35885, + "start": 35827, + "end": 35884, "loc": { "start": { "line": 803, @@ -276682,8 +276682,8 @@ "updateContext": null }, "value": "+", - "start": 35886, - "end": 35887, + "start": 35885, + "end": 35886, "loc": { "start": { "line": 803, @@ -276708,8 +276708,8 @@ "binop": null }, "value": "i", - "start": 35888, - "end": 35889, + "start": 35887, + "end": 35888, "loc": { "start": { "line": 803, @@ -276735,8 +276735,8 @@ "updateContext": null }, "value": "+", - "start": 35890, - "end": 35891, + "start": 35889, + "end": 35890, "loc": { "start": { "line": 803, @@ -276762,8 +276762,8 @@ "updateContext": null }, "value": ", 0.0)).xyz);", - "start": 35892, - "end": 35907, + "start": 35891, + "end": 35906, "loc": { "start": { "line": 803, @@ -276787,8 +276787,8 @@ "postfix": false, "binop": null }, - "start": 35907, - "end": 35908, + "start": 35906, + "end": 35907, "loc": { "start": { "line": 803, @@ -276813,8 +276813,8 @@ "binop": null, "updateContext": null }, - "start": 35908, - "end": 35909, + "start": 35907, + "end": 35908, "loc": { "start": { "line": 803, @@ -276838,8 +276838,8 @@ "postfix": false, "binop": null }, - "start": 35926, - "end": 35927, + "start": 35925, + "end": 35926, "loc": { "start": { "line": 804, @@ -276863,8 +276863,8 @@ "postfix": false, "binop": null }, - "start": 35940, - "end": 35941, + "start": 35939, + "end": 35940, "loc": { "start": { "line": 805, @@ -276891,8 +276891,8 @@ "updateContext": null }, "value": "else", - "start": 35942, - "end": 35946, + "start": 35941, + "end": 35945, "loc": { "start": { "line": 805, @@ -276916,8 +276916,8 @@ "postfix": false, "binop": null }, - "start": 35947, - "end": 35948, + "start": 35946, + "end": 35947, "loc": { "start": { "line": 805, @@ -276944,8 +276944,8 @@ "updateContext": null }, "value": "continue", - "start": 35965, - "end": 35973, + "start": 35964, + "end": 35972, "loc": { "start": { "line": 806, @@ -276970,8 +276970,8 @@ "binop": null, "updateContext": null }, - "start": 35973, - "end": 35974, + "start": 35972, + "end": 35973, "loc": { "start": { "line": 806, @@ -276995,8 +276995,8 @@ "postfix": false, "binop": null }, - "start": 35987, - "end": 35988, + "start": 35986, + "end": 35987, "loc": { "start": { "line": 807, @@ -277021,8 +277021,8 @@ "binop": null }, "value": "src", - "start": 36002, - "end": 36005, + "start": 36001, + "end": 36004, "loc": { "start": { "line": 809, @@ -277047,8 +277047,8 @@ "binop": null, "updateContext": null }, - "start": 36005, - "end": 36006, + "start": 36004, + "end": 36005, "loc": { "start": { "line": 809, @@ -277073,8 +277073,8 @@ "binop": null }, "value": "push", - "start": 36006, - "end": 36010, + "start": 36005, + "end": 36009, "loc": { "start": { "line": 809, @@ -277098,8 +277098,8 @@ "postfix": false, "binop": null }, - "start": 36010, - "end": 36011, + "start": 36009, + "end": 36010, "loc": { "start": { "line": 809, @@ -277125,8 +277125,8 @@ "updateContext": null }, "value": "light.color = lightColor", - "start": 36011, - "end": 36038, + "start": 36010, + "end": 36037, "loc": { "start": { "line": 809, @@ -277152,8 +277152,8 @@ "updateContext": null }, "value": "+", - "start": 36039, - "end": 36040, + "start": 36038, + "end": 36039, "loc": { "start": { "line": 809, @@ -277178,8 +277178,8 @@ "binop": null }, "value": "i", - "start": 36041, - "end": 36042, + "start": 36040, + "end": 36041, "loc": { "start": { "line": 809, @@ -277205,8 +277205,8 @@ "updateContext": null }, "value": "+", - "start": 36043, - "end": 36044, + "start": 36042, + "end": 36043, "loc": { "start": { "line": 809, @@ -277232,8 +277232,8 @@ "updateContext": null }, "value": ".rgb * lightColor", - "start": 36045, - "end": 36064, + "start": 36044, + "end": 36063, "loc": { "start": { "line": 809, @@ -277259,8 +277259,8 @@ "updateContext": null }, "value": "+", - "start": 36065, - "end": 36066, + "start": 36064, + "end": 36065, "loc": { "start": { "line": 809, @@ -277285,8 +277285,8 @@ "binop": null }, "value": "i", - "start": 36067, - "end": 36068, + "start": 36066, + "end": 36067, "loc": { "start": { "line": 809, @@ -277312,8 +277312,8 @@ "updateContext": null }, "value": "+", - "start": 36069, - "end": 36070, + "start": 36068, + "end": 36069, "loc": { "start": { "line": 809, @@ -277339,8 +277339,8 @@ "updateContext": null }, "value": ".a;", - "start": 36071, - "end": 36076, + "start": 36070, + "end": 36075, "loc": { "start": { "line": 809, @@ -277364,8 +277364,8 @@ "postfix": false, "binop": null }, - "start": 36076, - "end": 36077, + "start": 36075, + "end": 36076, "loc": { "start": { "line": 809, @@ -277390,8 +277390,8 @@ "binop": null, "updateContext": null }, - "start": 36077, - "end": 36078, + "start": 36076, + "end": 36077, "loc": { "start": { "line": 809, @@ -277406,8 +277406,8 @@ { "type": "CommentLine", "value": " a is intensity", - "start": 36079, - "end": 36096, + "start": 36078, + "end": 36095, "loc": { "start": { "line": 809, @@ -277432,8 +277432,8 @@ "binop": null }, "value": "src", - "start": 36110, - "end": 36113, + "start": 36109, + "end": 36112, "loc": { "start": { "line": 811, @@ -277458,8 +277458,8 @@ "binop": null, "updateContext": null }, - "start": 36113, - "end": 36114, + "start": 36112, + "end": 36113, "loc": { "start": { "line": 811, @@ -277484,8 +277484,8 @@ "binop": null }, "value": "push", - "start": 36114, - "end": 36118, + "start": 36113, + "end": 36117, "loc": { "start": { "line": 811, @@ -277509,8 +277509,8 @@ "postfix": false, "binop": null }, - "start": 36118, - "end": 36119, + "start": 36117, + "end": 36118, "loc": { "start": { "line": 811, @@ -277536,8 +277536,8 @@ "updateContext": null }, "value": "computePBRLighting(light, geometry, material, reflectedLight);", - "start": 36119, - "end": 36183, + "start": 36118, + "end": 36182, "loc": { "start": { "line": 811, @@ -277561,8 +277561,8 @@ "postfix": false, "binop": null }, - "start": 36183, - "end": 36184, + "start": 36182, + "end": 36183, "loc": { "start": { "line": 811, @@ -277587,8 +277587,8 @@ "binop": null, "updateContext": null }, - "start": 36184, - "end": 36185, + "start": 36183, + "end": 36184, "loc": { "start": { "line": 811, @@ -277612,8 +277612,8 @@ "postfix": false, "binop": null }, - "start": 36194, - "end": 36195, + "start": 36193, + "end": 36194, "loc": { "start": { "line": 812, @@ -277638,8 +277638,8 @@ "binop": null }, "value": "src", - "start": 36205, - "end": 36208, + "start": 36204, + "end": 36207, "loc": { "start": { "line": 814, @@ -277664,8 +277664,8 @@ "binop": null, "updateContext": null }, - "start": 36208, - "end": 36209, + "start": 36207, + "end": 36208, "loc": { "start": { "line": 814, @@ -277690,8 +277690,8 @@ "binop": null }, "value": "push", - "start": 36209, - "end": 36213, + "start": 36208, + "end": 36212, "loc": { "start": { "line": 814, @@ -277715,8 +277715,8 @@ "postfix": false, "binop": null }, - "start": 36213, - "end": 36214, + "start": 36212, + "end": 36213, "loc": { "start": { "line": 814, @@ -277742,8 +277742,8 @@ "updateContext": null }, "value": "vec3 outgoingLight = (lightAmbient.rgb * lightAmbient.a * rgb) + (reflectedLight.diffuse) + (reflectedLight.specular);", - "start": 36214, - "end": 36334, + "start": 36213, + "end": 36333, "loc": { "start": { "line": 814, @@ -277767,8 +277767,8 @@ "postfix": false, "binop": null }, - "start": 36334, - "end": 36335, + "start": 36333, + "end": 36334, "loc": { "start": { "line": 814, @@ -277793,8 +277793,8 @@ "binop": null, "updateContext": null }, - "start": 36335, - "end": 36336, + "start": 36334, + "end": 36335, "loc": { "start": { "line": 814, @@ -277819,8 +277819,8 @@ "binop": null }, "value": "src", - "start": 36346, - "end": 36349, + "start": 36345, + "end": 36348, "loc": { "start": { "line": 816, @@ -277845,8 +277845,8 @@ "binop": null, "updateContext": null }, - "start": 36349, - "end": 36350, + "start": 36348, + "end": 36349, "loc": { "start": { "line": 816, @@ -277871,8 +277871,8 @@ "binop": null }, "value": "push", - "start": 36350, - "end": 36354, + "start": 36349, + "end": 36353, "loc": { "start": { "line": 816, @@ -277896,8 +277896,8 @@ "postfix": false, "binop": null }, - "start": 36354, - "end": 36355, + "start": 36353, + "end": 36354, "loc": { "start": { "line": 816, @@ -277923,8 +277923,8 @@ "updateContext": null }, "value": "vec4 fragColor;", - "start": 36355, - "end": 36372, + "start": 36354, + "end": 36371, "loc": { "start": { "line": 816, @@ -277948,8 +277948,8 @@ "postfix": false, "binop": null }, - "start": 36372, - "end": 36373, + "start": 36371, + "end": 36372, "loc": { "start": { "line": 816, @@ -277974,8 +277974,8 @@ "binop": null, "updateContext": null }, - "start": 36373, - "end": 36374, + "start": 36372, + "end": 36373, "loc": { "start": { "line": 816, @@ -278002,8 +278002,8 @@ "updateContext": null }, "value": "if", - "start": 36384, - "end": 36386, + "start": 36383, + "end": 36385, "loc": { "start": { "line": 818, @@ -278027,8 +278027,8 @@ "postfix": false, "binop": null }, - "start": 36387, - "end": 36388, + "start": 36386, + "end": 36387, "loc": { "start": { "line": 818, @@ -278055,8 +278055,8 @@ "updateContext": null }, "value": "this", - "start": 36388, - "end": 36392, + "start": 36387, + "end": 36391, "loc": { "start": { "line": 818, @@ -278081,8 +278081,8 @@ "binop": null, "updateContext": null }, - "start": 36392, - "end": 36393, + "start": 36391, + "end": 36392, "loc": { "start": { "line": 818, @@ -278107,8 +278107,8 @@ "binop": null }, "value": "_withSAO", - "start": 36393, - "end": 36401, + "start": 36392, + "end": 36400, "loc": { "start": { "line": 818, @@ -278132,8 +278132,8 @@ "postfix": false, "binop": null }, - "start": 36401, - "end": 36402, + "start": 36400, + "end": 36401, "loc": { "start": { "line": 818, @@ -278157,8 +278157,8 @@ "postfix": false, "binop": null }, - "start": 36403, - "end": 36404, + "start": 36402, + "end": 36403, "loc": { "start": { "line": 818, @@ -278173,8 +278173,8 @@ { "type": "CommentLine", "value": " Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top", - "start": 36417, - "end": 36520, + "start": 36416, + "end": 36519, "loc": { "start": { "line": 819, @@ -278189,8 +278189,8 @@ { "type": "CommentLine", "value": " Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject", - "start": 36533, - "end": 36636, + "start": 36532, + "end": 36635, "loc": { "start": { "line": 820, @@ -278215,8 +278215,8 @@ "binop": null }, "value": "src", - "start": 36649, - "end": 36652, + "start": 36648, + "end": 36651, "loc": { "start": { "line": 821, @@ -278241,8 +278241,8 @@ "binop": null, "updateContext": null }, - "start": 36652, - "end": 36653, + "start": 36651, + "end": 36652, "loc": { "start": { "line": 821, @@ -278267,8 +278267,8 @@ "binop": null }, "value": "push", - "start": 36653, - "end": 36657, + "start": 36652, + "end": 36656, "loc": { "start": { "line": 821, @@ -278292,8 +278292,8 @@ "postfix": false, "binop": null }, - "start": 36657, - "end": 36658, + "start": 36656, + "end": 36657, "loc": { "start": { "line": 821, @@ -278319,8 +278319,8 @@ "updateContext": null }, "value": " float viewportWidth = uSAOParams[0];", - "start": 36658, - "end": 36703, + "start": 36657, + "end": 36702, "loc": { "start": { "line": 821, @@ -278344,8 +278344,8 @@ "postfix": false, "binop": null }, - "start": 36703, - "end": 36704, + "start": 36702, + "end": 36703, "loc": { "start": { "line": 821, @@ -278370,8 +278370,8 @@ "binop": null, "updateContext": null }, - "start": 36704, - "end": 36705, + "start": 36703, + "end": 36704, "loc": { "start": { "line": 821, @@ -278396,8 +278396,8 @@ "binop": null }, "value": "src", - "start": 36718, - "end": 36721, + "start": 36717, + "end": 36720, "loc": { "start": { "line": 822, @@ -278422,8 +278422,8 @@ "binop": null, "updateContext": null }, - "start": 36721, - "end": 36722, + "start": 36720, + "end": 36721, "loc": { "start": { "line": 822, @@ -278448,8 +278448,8 @@ "binop": null }, "value": "push", - "start": 36722, - "end": 36726, + "start": 36721, + "end": 36725, "loc": { "start": { "line": 822, @@ -278473,8 +278473,8 @@ "postfix": false, "binop": null }, - "start": 36726, - "end": 36727, + "start": 36725, + "end": 36726, "loc": { "start": { "line": 822, @@ -278500,8 +278500,8 @@ "updateContext": null }, "value": " float viewportHeight = uSAOParams[1];", - "start": 36727, - "end": 36772, + "start": 36726, + "end": 36771, "loc": { "start": { "line": 822, @@ -278525,8 +278525,8 @@ "postfix": false, "binop": null }, - "start": 36772, - "end": 36773, + "start": 36771, + "end": 36772, "loc": { "start": { "line": 822, @@ -278551,8 +278551,8 @@ "binop": null, "updateContext": null }, - "start": 36773, - "end": 36774, + "start": 36772, + "end": 36773, "loc": { "start": { "line": 822, @@ -278577,8 +278577,8 @@ "binop": null }, "value": "src", - "start": 36787, - "end": 36790, + "start": 36786, + "end": 36789, "loc": { "start": { "line": 823, @@ -278603,8 +278603,8 @@ "binop": null, "updateContext": null }, - "start": 36790, - "end": 36791, + "start": 36789, + "end": 36790, "loc": { "start": { "line": 823, @@ -278629,8 +278629,8 @@ "binop": null }, "value": "push", - "start": 36791, - "end": 36795, + "start": 36790, + "end": 36794, "loc": { "start": { "line": 823, @@ -278654,8 +278654,8 @@ "postfix": false, "binop": null }, - "start": 36795, - "end": 36796, + "start": 36794, + "end": 36795, "loc": { "start": { "line": 823, @@ -278681,8 +278681,8 @@ "updateContext": null }, "value": " float blendCutoff = uSAOParams[2];", - "start": 36796, - "end": 36841, + "start": 36795, + "end": 36840, "loc": { "start": { "line": 823, @@ -278706,8 +278706,8 @@ "postfix": false, "binop": null }, - "start": 36841, - "end": 36842, + "start": 36840, + "end": 36841, "loc": { "start": { "line": 823, @@ -278732,8 +278732,8 @@ "binop": null, "updateContext": null }, - "start": 36842, - "end": 36843, + "start": 36841, + "end": 36842, "loc": { "start": { "line": 823, @@ -278758,8 +278758,8 @@ "binop": null }, "value": "src", - "start": 36856, - "end": 36859, + "start": 36855, + "end": 36858, "loc": { "start": { "line": 824, @@ -278784,8 +278784,8 @@ "binop": null, "updateContext": null }, - "start": 36859, - "end": 36860, + "start": 36858, + "end": 36859, "loc": { "start": { "line": 824, @@ -278810,8 +278810,8 @@ "binop": null }, "value": "push", - "start": 36860, - "end": 36864, + "start": 36859, + "end": 36863, "loc": { "start": { "line": 824, @@ -278835,8 +278835,8 @@ "postfix": false, "binop": null }, - "start": 36864, - "end": 36865, + "start": 36863, + "end": 36864, "loc": { "start": { "line": 824, @@ -278862,8 +278862,8 @@ "updateContext": null }, "value": " float blendFactor = uSAOParams[3];", - "start": 36865, - "end": 36910, + "start": 36864, + "end": 36909, "loc": { "start": { "line": 824, @@ -278887,8 +278887,8 @@ "postfix": false, "binop": null }, - "start": 36910, - "end": 36911, + "start": 36909, + "end": 36910, "loc": { "start": { "line": 824, @@ -278913,8 +278913,8 @@ "binop": null, "updateContext": null }, - "start": 36911, - "end": 36912, + "start": 36910, + "end": 36911, "loc": { "start": { "line": 824, @@ -278939,8 +278939,8 @@ "binop": null }, "value": "src", - "start": 36925, - "end": 36928, + "start": 36924, + "end": 36927, "loc": { "start": { "line": 825, @@ -278965,8 +278965,8 @@ "binop": null, "updateContext": null }, - "start": 36928, - "end": 36929, + "start": 36927, + "end": 36928, "loc": { "start": { "line": 825, @@ -278991,8 +278991,8 @@ "binop": null }, "value": "push", - "start": 36929, - "end": 36933, + "start": 36928, + "end": 36932, "loc": { "start": { "line": 825, @@ -279016,8 +279016,8 @@ "postfix": false, "binop": null }, - "start": 36933, - "end": 36934, + "start": 36932, + "end": 36933, "loc": { "start": { "line": 825, @@ -279043,8 +279043,8 @@ "updateContext": null }, "value": " vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);", - "start": 36934, - "end": 37035, + "start": 36933, + "end": 37034, "loc": { "start": { "line": 825, @@ -279068,8 +279068,8 @@ "postfix": false, "binop": null }, - "start": 37035, - "end": 37036, + "start": 37034, + "end": 37035, "loc": { "start": { "line": 825, @@ -279094,8 +279094,8 @@ "binop": null, "updateContext": null }, - "start": 37036, - "end": 37037, + "start": 37035, + "end": 37036, "loc": { "start": { "line": 825, @@ -279120,8 +279120,8 @@ "binop": null }, "value": "src", - "start": 37050, - "end": 37053, + "start": 37049, + "end": 37052, "loc": { "start": { "line": 826, @@ -279146,8 +279146,8 @@ "binop": null, "updateContext": null }, - "start": 37053, - "end": 37054, + "start": 37052, + "end": 37053, "loc": { "start": { "line": 826, @@ -279172,8 +279172,8 @@ "binop": null }, "value": "push", - "start": 37054, - "end": 37058, + "start": 37053, + "end": 37057, "loc": { "start": { "line": 826, @@ -279197,8 +279197,8 @@ "postfix": false, "binop": null }, - "start": 37058, - "end": 37059, + "start": 37057, + "end": 37058, "loc": { "start": { "line": 826, @@ -279224,8 +279224,8 @@ "updateContext": null }, "value": " float ambient = smoothstep(blendCutoff, 1.0, unpackRGBAToDepth(texture2D(uOcclusionTexture, uv))) * blendFactor;", - "start": 37059, - "end": 37186, + "start": 37058, + "end": 37185, "loc": { "start": { "line": 826, @@ -279249,8 +279249,8 @@ "postfix": false, "binop": null }, - "start": 37186, - "end": 37187, + "start": 37185, + "end": 37186, "loc": { "start": { "line": 826, @@ -279275,8 +279275,8 @@ "binop": null, "updateContext": null }, - "start": 37187, - "end": 37188, + "start": 37186, + "end": 37187, "loc": { "start": { "line": 826, @@ -279301,8 +279301,8 @@ "binop": null }, "value": "src", - "start": 37201, - "end": 37204, + "start": 37200, + "end": 37203, "loc": { "start": { "line": 827, @@ -279327,8 +279327,8 @@ "binop": null, "updateContext": null }, - "start": 37204, - "end": 37205, + "start": 37203, + "end": 37204, "loc": { "start": { "line": 827, @@ -279353,8 +279353,8 @@ "binop": null }, "value": "push", - "start": 37205, - "end": 37209, + "start": 37204, + "end": 37208, "loc": { "start": { "line": 827, @@ -279378,8 +279378,8 @@ "postfix": false, "binop": null }, - "start": 37209, - "end": 37210, + "start": 37208, + "end": 37209, "loc": { "start": { "line": 827, @@ -279405,8 +279405,8 @@ "updateContext": null }, "value": " fragColor = vec4(outgoingLight.rgb * ambient, alpha);", - "start": 37210, - "end": 37279, + "start": 37209, + "end": 37278, "loc": { "start": { "line": 827, @@ -279430,8 +279430,8 @@ "postfix": false, "binop": null }, - "start": 37279, - "end": 37280, + "start": 37278, + "end": 37279, "loc": { "start": { "line": 827, @@ -279456,8 +279456,8 @@ "binop": null, "updateContext": null }, - "start": 37280, - "end": 37281, + "start": 37279, + "end": 37280, "loc": { "start": { "line": 827, @@ -279481,8 +279481,8 @@ "postfix": false, "binop": null }, - "start": 37290, - "end": 37291, + "start": 37289, + "end": 37290, "loc": { "start": { "line": 828, @@ -279509,8 +279509,8 @@ "updateContext": null }, "value": "else", - "start": 37292, - "end": 37296, + "start": 37291, + "end": 37295, "loc": { "start": { "line": 828, @@ -279534,8 +279534,8 @@ "postfix": false, "binop": null }, - "start": 37297, - "end": 37298, + "start": 37296, + "end": 37297, "loc": { "start": { "line": 828, @@ -279560,8 +279560,8 @@ "binop": null }, "value": "src", - "start": 37311, - "end": 37314, + "start": 37310, + "end": 37313, "loc": { "start": { "line": 829, @@ -279586,8 +279586,8 @@ "binop": null, "updateContext": null }, - "start": 37314, - "end": 37315, + "start": 37313, + "end": 37314, "loc": { "start": { "line": 829, @@ -279612,8 +279612,8 @@ "binop": null }, "value": "push", - "start": 37315, - "end": 37319, + "start": 37314, + "end": 37318, "loc": { "start": { "line": 829, @@ -279637,8 +279637,8 @@ "postfix": false, "binop": null }, - "start": 37319, - "end": 37320, + "start": 37318, + "end": 37319, "loc": { "start": { "line": 829, @@ -279664,8 +279664,8 @@ "updateContext": null }, "value": " fragColor = vec4(outgoingLight.rgb, alpha);", - "start": 37320, - "end": 37379, + "start": 37319, + "end": 37378, "loc": { "start": { "line": 829, @@ -279689,8 +279689,8 @@ "postfix": false, "binop": null }, - "start": 37379, - "end": 37380, + "start": 37378, + "end": 37379, "loc": { "start": { "line": 829, @@ -279715,8 +279715,8 @@ "binop": null, "updateContext": null }, - "start": 37380, - "end": 37381, + "start": 37379, + "end": 37380, "loc": { "start": { "line": 829, @@ -279740,8 +279740,8 @@ "postfix": false, "binop": null }, - "start": 37390, - "end": 37391, + "start": 37389, + "end": 37390, "loc": { "start": { "line": 830, @@ -279768,8 +279768,8 @@ "updateContext": null }, "value": "if", - "start": 37401, - "end": 37403, + "start": 37400, + "end": 37402, "loc": { "start": { "line": 832, @@ -279793,8 +279793,8 @@ "postfix": false, "binop": null }, - "start": 37404, - "end": 37405, + "start": 37403, + "end": 37404, "loc": { "start": { "line": 832, @@ -279819,8 +279819,8 @@ "binop": null }, "value": "gammaOutput", - "start": 37405, - "end": 37416, + "start": 37404, + "end": 37415, "loc": { "start": { "line": 832, @@ -279844,8 +279844,8 @@ "postfix": false, "binop": null }, - "start": 37416, - "end": 37417, + "start": 37415, + "end": 37416, "loc": { "start": { "line": 832, @@ -279869,8 +279869,8 @@ "postfix": false, "binop": null }, - "start": 37418, - "end": 37419, + "start": 37417, + "end": 37418, "loc": { "start": { "line": 832, @@ -279895,8 +279895,8 @@ "binop": null }, "value": "src", - "start": 37432, - "end": 37435, + "start": 37431, + "end": 37434, "loc": { "start": { "line": 833, @@ -279921,8 +279921,8 @@ "binop": null, "updateContext": null }, - "start": 37435, - "end": 37436, + "start": 37434, + "end": 37435, "loc": { "start": { "line": 833, @@ -279947,8 +279947,8 @@ "binop": null }, "value": "push", - "start": 37436, - "end": 37440, + "start": 37435, + "end": 37439, "loc": { "start": { "line": 833, @@ -279972,8 +279972,8 @@ "postfix": false, "binop": null }, - "start": 37440, - "end": 37441, + "start": 37439, + "end": 37440, "loc": { "start": { "line": 833, @@ -279999,8 +279999,8 @@ "updateContext": null }, "value": "fragColor = linearToGamma(fragColor, gammaFactor);", - "start": 37441, - "end": 37493, + "start": 37440, + "end": 37492, "loc": { "start": { "line": 833, @@ -280024,8 +280024,8 @@ "postfix": false, "binop": null }, - "start": 37493, - "end": 37494, + "start": 37492, + "end": 37493, "loc": { "start": { "line": 833, @@ -280050,8 +280050,8 @@ "binop": null, "updateContext": null }, - "start": 37494, - "end": 37495, + "start": 37493, + "end": 37494, "loc": { "start": { "line": 833, @@ -280075,8 +280075,8 @@ "postfix": false, "binop": null }, - "start": 37504, - "end": 37505, + "start": 37503, + "end": 37504, "loc": { "start": { "line": 834, @@ -280101,8 +280101,8 @@ "binop": null }, "value": "src", - "start": 37515, - "end": 37518, + "start": 37514, + "end": 37517, "loc": { "start": { "line": 836, @@ -280127,8 +280127,8 @@ "binop": null, "updateContext": null }, - "start": 37518, - "end": 37519, + "start": 37517, + "end": 37518, "loc": { "start": { "line": 836, @@ -280153,8 +280153,8 @@ "binop": null }, "value": "push", - "start": 37519, - "end": 37523, + "start": 37518, + "end": 37522, "loc": { "start": { "line": 836, @@ -280178,8 +280178,8 @@ "postfix": false, "binop": null }, - "start": 37523, - "end": 37524, + "start": 37522, + "end": 37523, "loc": { "start": { "line": 836, @@ -280205,8 +280205,8 @@ "updateContext": null }, "value": "gl_FragColor = fragColor;", - "start": 37524, - "end": 37551, + "start": 37523, + "end": 37550, "loc": { "start": { "line": 836, @@ -280230,8 +280230,8 @@ "postfix": false, "binop": null }, - "start": 37551, - "end": 37552, + "start": 37550, + "end": 37551, "loc": { "start": { "line": 836, @@ -280256,8 +280256,8 @@ "binop": null, "updateContext": null }, - "start": 37552, - "end": 37553, + "start": 37551, + "end": 37552, "loc": { "start": { "line": 836, @@ -280284,8 +280284,8 @@ "updateContext": null }, "value": "if", - "start": 37563, - "end": 37565, + "start": 37562, + "end": 37564, "loc": { "start": { "line": 838, @@ -280309,8 +280309,8 @@ "postfix": false, "binop": null }, - "start": 37566, - "end": 37567, + "start": 37565, + "end": 37566, "loc": { "start": { "line": 838, @@ -280335,8 +280335,8 @@ "binop": null }, "value": "scene", - "start": 37567, - "end": 37572, + "start": 37566, + "end": 37571, "loc": { "start": { "line": 838, @@ -280361,8 +280361,8 @@ "binop": null, "updateContext": null }, - "start": 37572, - "end": 37573, + "start": 37571, + "end": 37572, "loc": { "start": { "line": 838, @@ -280387,8 +280387,8 @@ "binop": null }, "value": "logarithmicDepthBufferEnabled", - "start": 37573, - "end": 37602, + "start": 37572, + "end": 37601, "loc": { "start": { "line": 838, @@ -280414,8 +280414,8 @@ "updateContext": null }, "value": "&&", - "start": 37603, - "end": 37605, + "start": 37602, + "end": 37604, "loc": { "start": { "line": 838, @@ -280440,8 +280440,8 @@ "binop": null }, "value": "WEBGL_INFO", - "start": 37606, - "end": 37616, + "start": 37605, + "end": 37615, "loc": { "start": { "line": 838, @@ -280466,8 +280466,8 @@ "binop": null, "updateContext": null }, - "start": 37616, - "end": 37617, + "start": 37615, + "end": 37616, "loc": { "start": { "line": 838, @@ -280492,8 +280492,8 @@ "binop": null }, "value": "SUPPORTED_EXTENSIONS", - "start": 37617, - "end": 37637, + "start": 37616, + "end": 37636, "loc": { "start": { "line": 838, @@ -280518,8 +280518,8 @@ "binop": null, "updateContext": null }, - "start": 37637, - "end": 37638, + "start": 37636, + "end": 37637, "loc": { "start": { "line": 838, @@ -280545,8 +280545,8 @@ "updateContext": null }, "value": "EXT_frag_depth", - "start": 37638, - "end": 37654, + "start": 37637, + "end": 37653, "loc": { "start": { "line": 838, @@ -280571,8 +280571,8 @@ "binop": null, "updateContext": null }, - "start": 37654, - "end": 37655, + "start": 37653, + "end": 37654, "loc": { "start": { "line": 838, @@ -280596,8 +280596,8 @@ "postfix": false, "binop": null }, - "start": 37655, - "end": 37656, + "start": 37654, + "end": 37655, "loc": { "start": { "line": 838, @@ -280621,8 +280621,8 @@ "postfix": false, "binop": null }, - "start": 37657, - "end": 37658, + "start": 37656, + "end": 37657, "loc": { "start": { "line": 838, @@ -280647,8 +280647,8 @@ "binop": null }, "value": "src", - "start": 37671, - "end": 37674, + "start": 37670, + "end": 37673, "loc": { "start": { "line": 839, @@ -280673,8 +280673,8 @@ "binop": null, "updateContext": null }, - "start": 37674, - "end": 37675, + "start": 37673, + "end": 37674, "loc": { "start": { "line": 839, @@ -280699,8 +280699,8 @@ "binop": null }, "value": "push", - "start": 37675, - "end": 37679, + "start": 37674, + "end": 37678, "loc": { "start": { "line": 839, @@ -280724,8 +280724,8 @@ "postfix": false, "binop": null }, - "start": 37679, - "end": 37680, + "start": 37678, + "end": 37679, "loc": { "start": { "line": 839, @@ -280751,8 +280751,8 @@ "updateContext": null }, "value": "gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;", - "start": 37680, - "end": 37741, + "start": 37679, + "end": 37740, "loc": { "start": { "line": 839, @@ -280776,8 +280776,8 @@ "postfix": false, "binop": null }, - "start": 37741, - "end": 37742, + "start": 37740, + "end": 37741, "loc": { "start": { "line": 839, @@ -280802,8 +280802,8 @@ "binop": null, "updateContext": null }, - "start": 37742, - "end": 37743, + "start": 37741, + "end": 37742, "loc": { "start": { "line": 839, @@ -280827,8 +280827,8 @@ "postfix": false, "binop": null }, - "start": 37752, - "end": 37753, + "start": 37751, + "end": 37752, "loc": { "start": { "line": 840, @@ -280853,8 +280853,8 @@ "binop": null }, "value": "src", - "start": 37763, - "end": 37766, + "start": 37762, + "end": 37765, "loc": { "start": { "line": 842, @@ -280879,8 +280879,8 @@ "binop": null, "updateContext": null }, - "start": 37766, - "end": 37767, + "start": 37765, + "end": 37766, "loc": { "start": { "line": 842, @@ -280905,8 +280905,8 @@ "binop": null }, "value": "push", - "start": 37767, - "end": 37771, + "start": 37766, + "end": 37770, "loc": { "start": { "line": 842, @@ -280930,8 +280930,8 @@ "postfix": false, "binop": null }, - "start": 37771, - "end": 37772, + "start": 37770, + "end": 37771, "loc": { "start": { "line": 842, @@ -280957,8 +280957,8 @@ "updateContext": null }, "value": "}", - "start": 37772, - "end": 37775, + "start": 37771, + "end": 37774, "loc": { "start": { "line": 842, @@ -280982,8 +280982,8 @@ "postfix": false, "binop": null }, - "start": 37775, - "end": 37776, + "start": 37774, + "end": 37775, "loc": { "start": { "line": 842, @@ -281008,8 +281008,8 @@ "binop": null, "updateContext": null }, - "start": 37776, - "end": 37777, + "start": 37775, + "end": 37776, "loc": { "start": { "line": 842, @@ -281036,8 +281036,8 @@ "updateContext": null }, "value": "return", - "start": 37786, - "end": 37792, + "start": 37785, + "end": 37791, "loc": { "start": { "line": 843, @@ -281062,8 +281062,8 @@ "binop": null }, "value": "src", - "start": 37793, - "end": 37796, + "start": 37792, + "end": 37795, "loc": { "start": { "line": 843, @@ -281088,8 +281088,8 @@ "binop": null, "updateContext": null }, - "start": 37796, - "end": 37797, + "start": 37795, + "end": 37796, "loc": { "start": { "line": 843, @@ -281113,8 +281113,8 @@ "postfix": false, "binop": null }, - "start": 37802, - "end": 37803, + "start": 37801, + "end": 37802, "loc": { "start": { "line": 844, @@ -281139,8 +281139,8 @@ "binop": null }, "value": "webglContextRestored", - "start": 37809, - "end": 37829, + "start": 37808, + "end": 37828, "loc": { "start": { "line": 846, @@ -281164,8 +281164,8 @@ "postfix": false, "binop": null }, - "start": 37829, - "end": 37830, + "start": 37828, + "end": 37829, "loc": { "start": { "line": 846, @@ -281189,8 +281189,8 @@ "postfix": false, "binop": null }, - "start": 37830, - "end": 37831, + "start": 37829, + "end": 37830, "loc": { "start": { "line": 846, @@ -281214,8 +281214,8 @@ "postfix": false, "binop": null }, - "start": 37832, - "end": 37833, + "start": 37831, + "end": 37832, "loc": { "start": { "line": 846, @@ -281242,8 +281242,8 @@ "updateContext": null }, "value": "this", - "start": 37842, - "end": 37846, + "start": 37841, + "end": 37845, "loc": { "start": { "line": 847, @@ -281268,8 +281268,8 @@ "binop": null, "updateContext": null }, - "start": 37846, - "end": 37847, + "start": 37845, + "end": 37846, "loc": { "start": { "line": 847, @@ -281294,8 +281294,8 @@ "binop": null }, "value": "_program", - "start": 37847, - "end": 37855, + "start": 37846, + "end": 37854, "loc": { "start": { "line": 847, @@ -281321,8 +281321,8 @@ "updateContext": null }, "value": "=", - "start": 37856, - "end": 37857, + "start": 37855, + "end": 37856, "loc": { "start": { "line": 847, @@ -281349,8 +281349,8 @@ "updateContext": null }, "value": "null", - "start": 37858, - "end": 37862, + "start": 37857, + "end": 37861, "loc": { "start": { "line": 847, @@ -281375,8 +281375,8 @@ "binop": null, "updateContext": null }, - "start": 37862, - "end": 37863, + "start": 37861, + "end": 37862, "loc": { "start": { "line": 847, @@ -281400,8 +281400,8 @@ "postfix": false, "binop": null }, - "start": 37868, - "end": 37869, + "start": 37867, + "end": 37868, "loc": { "start": { "line": 848, @@ -281426,8 +281426,8 @@ "binop": null }, "value": "destroy", - "start": 37875, - "end": 37882, + "start": 37874, + "end": 37881, "loc": { "start": { "line": 850, @@ -281451,8 +281451,8 @@ "postfix": false, "binop": null }, - "start": 37882, - "end": 37883, + "start": 37881, + "end": 37882, "loc": { "start": { "line": 850, @@ -281476,8 +281476,8 @@ "postfix": false, "binop": null }, - "start": 37883, - "end": 37884, + "start": 37882, + "end": 37883, "loc": { "start": { "line": 850, @@ -281501,8 +281501,8 @@ "postfix": false, "binop": null }, - "start": 37885, - "end": 37886, + "start": 37884, + "end": 37885, "loc": { "start": { "line": 850, @@ -281529,8 +281529,8 @@ "updateContext": null }, "value": "if", - "start": 37895, - "end": 37897, + "start": 37894, + "end": 37896, "loc": { "start": { "line": 851, @@ -281554,8 +281554,8 @@ "postfix": false, "binop": null }, - "start": 37898, - "end": 37899, + "start": 37897, + "end": 37898, "loc": { "start": { "line": 851, @@ -281582,8 +281582,8 @@ "updateContext": null }, "value": "this", - "start": 37899, - "end": 37903, + "start": 37898, + "end": 37902, "loc": { "start": { "line": 851, @@ -281608,8 +281608,8 @@ "binop": null, "updateContext": null }, - "start": 37903, - "end": 37904, + "start": 37902, + "end": 37903, "loc": { "start": { "line": 851, @@ -281634,8 +281634,8 @@ "binop": null }, "value": "_program", - "start": 37904, - "end": 37912, + "start": 37903, + "end": 37911, "loc": { "start": { "line": 851, @@ -281659,8 +281659,8 @@ "postfix": false, "binop": null }, - "start": 37912, - "end": 37913, + "start": 37911, + "end": 37912, "loc": { "start": { "line": 851, @@ -281684,8 +281684,8 @@ "postfix": false, "binop": null }, - "start": 37914, - "end": 37915, + "start": 37913, + "end": 37914, "loc": { "start": { "line": 851, @@ -281712,8 +281712,8 @@ "updateContext": null }, "value": "this", - "start": 37928, - "end": 37932, + "start": 37927, + "end": 37931, "loc": { "start": { "line": 852, @@ -281738,8 +281738,8 @@ "binop": null, "updateContext": null }, - "start": 37932, - "end": 37933, + "start": 37931, + "end": 37932, "loc": { "start": { "line": 852, @@ -281764,8 +281764,8 @@ "binop": null }, "value": "_program", - "start": 37933, - "end": 37941, + "start": 37932, + "end": 37940, "loc": { "start": { "line": 852, @@ -281790,8 +281790,8 @@ "binop": null, "updateContext": null }, - "start": 37941, - "end": 37942, + "start": 37940, + "end": 37941, "loc": { "start": { "line": 852, @@ -281816,8 +281816,8 @@ "binop": null }, "value": "destroy", - "start": 37942, - "end": 37949, + "start": 37941, + "end": 37948, "loc": { "start": { "line": 852, @@ -281841,8 +281841,8 @@ "postfix": false, "binop": null }, - "start": 37949, - "end": 37950, + "start": 37948, + "end": 37949, "loc": { "start": { "line": 852, @@ -281866,8 +281866,8 @@ "postfix": false, "binop": null }, - "start": 37950, - "end": 37951, + "start": 37949, + "end": 37950, "loc": { "start": { "line": 852, @@ -281892,8 +281892,8 @@ "binop": null, "updateContext": null }, - "start": 37951, - "end": 37952, + "start": 37950, + "end": 37951, "loc": { "start": { "line": 852, @@ -281917,8 +281917,8 @@ "postfix": false, "binop": null }, - "start": 37961, - "end": 37962, + "start": 37960, + "end": 37961, "loc": { "start": { "line": 853, @@ -281945,8 +281945,8 @@ "updateContext": null }, "value": "this", - "start": 37971, - "end": 37975, + "start": 37970, + "end": 37974, "loc": { "start": { "line": 854, @@ -281971,8 +281971,8 @@ "binop": null, "updateContext": null }, - "start": 37975, - "end": 37976, + "start": 37974, + "end": 37975, "loc": { "start": { "line": 854, @@ -281997,8 +281997,8 @@ "binop": null }, "value": "_program", - "start": 37976, - "end": 37984, + "start": 37975, + "end": 37983, "loc": { "start": { "line": 854, @@ -282024,8 +282024,8 @@ "updateContext": null }, "value": "=", - "start": 37985, - "end": 37986, + "start": 37984, + "end": 37985, "loc": { "start": { "line": 854, @@ -282052,8 +282052,8 @@ "updateContext": null }, "value": "null", - "start": 37987, - "end": 37991, + "start": 37986, + "end": 37990, "loc": { "start": { "line": 854, @@ -282078,8 +282078,8 @@ "binop": null, "updateContext": null }, - "start": 37991, - "end": 37992, + "start": 37990, + "end": 37991, "loc": { "start": { "line": 854, @@ -282103,8 +282103,8 @@ "postfix": false, "binop": null }, - "start": 37997, - "end": 37998, + "start": 37996, + "end": 37997, "loc": { "start": { "line": 855, @@ -282128,8 +282128,8 @@ "postfix": false, "binop": null }, - "start": 37999, - "end": 38000, + "start": 37998, + "end": 37999, "loc": { "start": { "line": 856, @@ -282156,8 +282156,8 @@ "updateContext": null }, "value": "export", - "start": 38002, - "end": 38008, + "start": 38001, + "end": 38007, "loc": { "start": { "line": 858, @@ -282181,8 +282181,8 @@ "postfix": false, "binop": null }, - "start": 38009, - "end": 38010, + "start": 38008, + "end": 38009, "loc": { "start": { "line": 858, @@ -282207,8 +282207,8 @@ "binop": null }, "value": "TrianglesInstancingColorQualityRenderer", - "start": 38010, - "end": 38049, + "start": 38009, + "end": 38048, "loc": { "start": { "line": 858, @@ -282232,8 +282232,8 @@ "postfix": false, "binop": null }, - "start": 38049, - "end": 38050, + "start": 38048, + "end": 38049, "loc": { "start": { "line": 858, @@ -282258,8 +282258,8 @@ "binop": null, "updateContext": null }, - "start": 38050, - "end": 38051, + "start": 38049, + "end": 38050, "loc": { "start": { "line": 858, @@ -282284,8 +282284,8 @@ "binop": null, "updateContext": null }, - "start": 38051, - "end": 38051, + "start": 38050, + "end": 38050, "loc": { "start": { "line": 858, diff --git a/docs/ast/source/viewer/scene/postfx/SAO.js.json b/docs/ast/source/viewer/scene/postfx/SAO.js.json index 9abbfca75b..9508a56830 100644 --- a/docs/ast/source/viewer/scene/postfx/SAO.js.json +++ b/docs/ast/source/viewer/scene/postfx/SAO.js.json @@ -202,7 +202,7 @@ "trailingComments": [ { "type": "CommentBlock", - "value": "*\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/#postEeffects_SAO_OTCConferenceCenter)]\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/#postEeffects_SAO_OTCConferenceCenter) 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} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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.20;\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/OTCConferenceCenter.xkt\",\n * metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\",\n * edges: true\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/structure.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/electrical.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/plumbing.json\",\n * edges: true\n * });\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/#techniques_nonInteractiveQuality)]\n ", + "value": "*\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/#postEeffects_SAO_OTCConferenceCenter)]\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/#postEeffects_SAO_OTCConferenceCenter) 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} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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/OTCConferenceCenter.xkt\",\n * metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\",\n * edges: true\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/structure.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/electrical.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/plumbing.json\",\n * edges: true\n * });\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/#techniques_nonInteractiveQuality)]\n ", "start": 88, "end": 7065, "loc": { @@ -4586,7 +4586,7 @@ "trailingComments": [ { "type": "CommentBlock", - "value": "*\n * Sets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.20````.\n *\n * @type {Number}\n ", + "value": "*\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 ", "start": 10116, "end": 10286, "loc": { @@ -4878,10 +4878,10 @@ } }, "extra": { - "rawValue": 0.2, - "raw": "0.20" + "rawValue": 0.15, + "raw": "0.15" }, - "value": 0.2 + "value": 0.15 } } } @@ -5203,7 +5203,7 @@ "leadingComments": [ { "type": "CommentBlock", - "value": "*\n * Sets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.20````.\n *\n * @type {Number}\n ", + "value": "*\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 ", "start": 10116, "end": 10286, "loc": { @@ -5221,7 +5221,7 @@ "trailingComments": [ { "type": "CommentBlock", - "value": "*\n * Gets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.25````.\n * \n * @type {Number}\n ", + "value": "*\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 ", "start": 10543, "end": 10714, "loc": { @@ -5361,7 +5361,7 @@ "leadingComments": [ { "type": "CommentBlock", - "value": "*\n * Gets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.25````.\n * \n * @type {Number}\n ", + "value": "*\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 ", "start": 10543, "end": 10714, "loc": { @@ -15443,7 +15443,7 @@ "trailingComments": [ { "type": "CommentBlock", - "value": "*\n * Sets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.20````.\n *\n * @type {Number}\n ", + "value": "*\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 ", "start": 10116, "end": 10286, "loc": { @@ -15735,10 +15735,10 @@ } }, "extra": { - "rawValue": 0.2, - "raw": "0.20" + "rawValue": 0.15, + "raw": "0.15" }, - "value": 0.2 + "value": 0.15 } } } @@ -16060,7 +16060,7 @@ "leadingComments": [ { "type": "CommentBlock", - "value": "*\n * Sets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.20````.\n *\n * @type {Number}\n ", + "value": "*\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 ", "start": 10116, "end": 10286, "loc": { @@ -16078,7 +16078,7 @@ "trailingComments": [ { "type": "CommentBlock", - "value": "*\n * Gets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.25````.\n * \n * @type {Number}\n ", + "value": "*\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 ", "start": 10543, "end": 10714, "loc": { @@ -16218,7 +16218,7 @@ "leadingComments": [ { "type": "CommentBlock", - "value": "*\n * Gets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.25````.\n * \n * @type {Number}\n ", + "value": "*\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 ", "start": 10543, "end": 10714, "loc": { @@ -21849,7 +21849,7 @@ "leadingComments": [ { "type": "CommentBlock", - "value": "*\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/#postEeffects_SAO_OTCConferenceCenter)]\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/#postEeffects_SAO_OTCConferenceCenter) 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} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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.20;\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/OTCConferenceCenter.xkt\",\n * metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\",\n * edges: true\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/structure.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/electrical.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/plumbing.json\",\n * edges: true\n * });\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/#techniques_nonInteractiveQuality)]\n ", + "value": "*\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/#postEeffects_SAO_OTCConferenceCenter)]\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/#postEeffects_SAO_OTCConferenceCenter) 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} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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/OTCConferenceCenter.xkt\",\n * metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\",\n * edges: true\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/structure.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/electrical.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/plumbing.json\",\n * edges: true\n * });\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/#techniques_nonInteractiveQuality)]\n ", "start": 88, "end": 7065, "loc": { @@ -21877,7 +21877,7 @@ "comments": [ { "type": "CommentBlock", - "value": "*\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/#postEeffects_SAO_OTCConferenceCenter)]\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/#postEeffects_SAO_OTCConferenceCenter) 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} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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.20;\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/OTCConferenceCenter.xkt\",\n * metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\",\n * edges: true\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/structure.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/electrical.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/plumbing.json\",\n * edges: true\n * });\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/#techniques_nonInteractiveQuality)]\n ", + "value": "*\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/#postEeffects_SAO_OTCConferenceCenter)]\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/#postEeffects_SAO_OTCConferenceCenter) 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} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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/OTCConferenceCenter.xkt\",\n * metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\",\n * edges: true\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/structure.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/electrical.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/plumbing.json\",\n * edges: true\n * });\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/#techniques_nonInteractiveQuality)]\n ", "start": 88, "end": 7065, "loc": { @@ -22037,7 +22037,7 @@ }, { "type": "CommentBlock", - "value": "*\n * Sets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.20````.\n *\n * @type {Number}\n ", + "value": "*\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 ", "start": 10116, "end": 10286, "loc": { @@ -22053,7 +22053,7 @@ }, { "type": "CommentBlock", - "value": "*\n * Gets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.25````.\n * \n * @type {Number}\n ", + "value": "*\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 ", "start": 10543, "end": 10714, "loc": { @@ -22677,7 +22677,7 @@ }, { "type": "CommentBlock", - "value": "*\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/#postEeffects_SAO_OTCConferenceCenter)]\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/#postEeffects_SAO_OTCConferenceCenter) 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} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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.20;\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/OTCConferenceCenter.xkt\",\n * metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\",\n * edges: true\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/structure.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/electrical.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/plumbing.json\",\n * edges: true\n * });\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/#techniques_nonInteractiveQuality)]\n ", + "value": "*\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/#postEeffects_SAO_OTCConferenceCenter)]\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/#postEeffects_SAO_OTCConferenceCenter) 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} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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/OTCConferenceCenter.xkt\",\n * metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\",\n * edges: true\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/structure.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/electrical.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/plumbing.json\",\n * edges: true\n * });\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/#techniques_nonInteractiveQuality)]\n ", "start": 88, "end": 7065, "loc": { @@ -30912,7 +30912,7 @@ }, { "type": "CommentBlock", - "value": "*\n * Sets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.20````.\n *\n * @type {Number}\n ", + "value": "*\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 ", "start": 10116, "end": 10286, "loc": { @@ -31435,7 +31435,7 @@ "binop": null, "updateContext": null }, - "value": 0.2, + "value": 0.15, "start": 10387, "end": 10391, "loc": { @@ -32157,7 +32157,7 @@ }, { "type": "CommentBlock", - "value": "*\n * Gets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.25````.\n * \n * @type {Number}\n ", + "value": "*\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 ", "start": 10543, "end": 10714, "loc": { diff --git a/docs/class/src/extras/ContextMenu/ContextMenu.js~ContextMenu.html b/docs/class/src/extras/ContextMenu/ContextMenu.js~ContextMenu.html index 6c97827e24..9073a97035 100644 --- a/docs/class/src/extras/ContextMenu/ContextMenu.js~ContextMenu.html +++ b/docs/class/src/extras/ContextMenu/ContextMenu.js~ContextMenu.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js~AngleMeasurement.html b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js~AngleMeasurement.html index 8c9ba0f0fe..a0ba0d5822 100644 --- a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js~AngleMeasurement.html +++ b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js~AngleMeasurement.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js~AngleMeasurementsControl.html b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js~AngleMeasurementsControl.html index 623002fa0c..854e0cf9db 100644 --- a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js~AngleMeasurementsControl.html +++ b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js~AngleMeasurementsControl.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js~AngleMeasurementsPlugin.html b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js~AngleMeasurementsPlugin.html index 36003e7586..fbd3147bfc 100644 --- a/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js~AngleMeasurementsPlugin.html +++ b/docs/class/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js~AngleMeasurementsPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/AnnotationsPlugin/Annotation.js~Annotation.html b/docs/class/src/plugins/AnnotationsPlugin/Annotation.js~Annotation.html index a30e650e31..f9e713cd23 100644 --- a/docs/class/src/plugins/AnnotationsPlugin/Annotation.js~Annotation.html +++ b/docs/class/src/plugins/AnnotationsPlugin/Annotation.js~Annotation.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js~AnnotationsPlugin.html b/docs/class/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js~AnnotationsPlugin.html index 7237ea7485..28abd50d06 100644 --- a/docs/class/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js~AnnotationsPlugin.html +++ b/docs/class/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js~AnnotationsPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js~AxisGizmoPlugin.html b/docs/class/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js~AxisGizmoPlugin.html index 63df4c6a66..d707954074 100644 --- a/docs/class/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js~AxisGizmoPlugin.html +++ b/docs/class/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js~AxisGizmoPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js~BCFViewpointsPlugin.html b/docs/class/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js~BCFViewpointsPlugin.html index 79a9c5cbab..bf5f8dafb3 100644 --- a/docs/class/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js~BCFViewpointsPlugin.html +++ b/docs/class/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js~BCFViewpointsPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js~DistanceMeasurement.html b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js~DistanceMeasurement.html index b00a322228..488e7c8787 100644 --- a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js~DistanceMeasurement.html +++ b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js~DistanceMeasurement.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js~DistanceMeasurementsControl.html b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js~DistanceMeasurementsControl.html index 5962f90123..cc00ec4efa 100644 --- a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js~DistanceMeasurementsControl.html +++ b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js~DistanceMeasurementsControl.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js~DistanceMeasurementsPlugin.html b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js~DistanceMeasurementsPlugin.html index 1e7ac5ff1a..82c37c475a 100644 --- a/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js~DistanceMeasurementsPlugin.html +++ b/docs/class/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js~DistanceMeasurementsPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin.html b/docs/class/src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin.html index f323fca02a..7b9e711a22 100644 --- a/docs/class/src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin.html +++ b/docs/class/src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -163,13 +161,13 @@
    - + public class - | source + | source
    @@ -212,7 +210,11 @@

    Usage

    In the example below, we'll create a Usage

    In the example below, we'll create a constructor() + constructor(viewer: Viewer, cfg: Object)

    @@ -274,7 +276,187 @@

    Usage

    In the example below, we'll create a

    - +

    Member Summary

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Public Members
    + public + + set + + + +
    +

    + + + + edgesEnabled: Boolean +

    +
    +
    + + +

    Sets whether to show enhanced edges when the camera stops moving.

    +
    +
    +
    + + +
    + public + + get + + + +
    +

    + + + + edgesEnabled: Boolean: * +

    +
    +
    + + +

    Gets whether to show enhanced edges when the camera stops moving.

    +
    +
    +
    + + +
    + public + + set + + + +
    +

    + + + + pbrEnabled: Boolean +

    +
    +
    + + +

    Sets whether to enable physically-based rendering (PBR) when the camera stops moving.

    +
    +
    +
    + + +
    + public + + get + + + +
    +

    + + + + pbrEnabled: Boolean: * +

    +
    +
    + + +

    Gets whether to enable physically-based rendering (PBR) when the camera stops moving.

    +
    +
    +
    + + +
    + public + + set + + + +
    +

    + + + + saoEnabled: Boolean +

    +
    +
    + + +

    Sets whether to enable scalable ambient occlusion (SAO) when the camera stops moving.

    +
    +
    +
    + + +
    + public + + get + + + +
    +

    + + + + saoEnabled: Boolean: * +

    +
    +
    + + +

    Gets whether the FastNavPlugin enables SAO when switching to quality rendering.

    +
    +
    +
    + + +
    +

    Method Summary

    @@ -564,11 +746,11 @@

    - constructor() + constructor(viewer: Viewer, cfg: Object) - source + source

    @@ -580,9 +762,295 @@

    +
    +

    Params:

    +

    Public Methods
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributeDescription
    viewerViewer

    The Viewer.

    +
    cfgObject

    FastNavPlugin configuration.

    +
    cfg.idString
    • optional
    • +
    • default: "FastNav"

    Optional ID for this plugin, so that we can find it within Viewer#plugins.

    +
    cfg.pbrEnabledBoolean
    • optional

    Whether to enable physically-based rendering (PBR) when the camera stops moving. When not specified, PBR will be enabled if it's currently enabled for the Viewer (see Viewer#pbrEnabled).

    +
    cfg.saoEnabledBoolean
    • optional

    Whether to enable scalable ambient occlusion (SAO) when the camera stops moving. When not specified, SAO will be enabled if it's currently enabled for the Viewer (see Scene#pbrEnabled).

    +
    cfg.edgesEnabledBoolean
    • optional

    Whether to show enhanced edges when the camera stops moving. When not specified, edges will be enabled if they're currently enabled for the Viewer (see EdgeMaterial#edges).

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + +

    Public Members

    + +
    +

    + public + + set + + + + edgesEnabled: Boolean + + + + source + +

    + + + + +

    Sets whether to show enhanced edges when the camera stops moving.

    +
    + + + +
    +
    + +
    +

    Return:

    + + + + + + + +
    Boolean

    Whether edge enhancement will be enabled.

    +
    +
    +
    +
    + + + + + + + + + + + + + + + +
    +
    +

    + public + + get + + + + edgesEnabled: Boolean: * + + + + source + +

    + + + + +

    Gets whether to show enhanced edges when the camera stops moving.

    +
    + + + +
    +
    + +
    +

    Return:

    + + + + + + + +
    Boolean

    Whether edge enhancement will be enabled.

    +
    +
    +
    +
    + + + + + + + + + + + + + + + +
    +
    +

    + public + + set + + + + pbrEnabled: Boolean + + + + source + +

    + + + + +

    Sets whether to enable physically-based rendering (PBR) when the camera stops moving.

    +
    + + + +
    +
    + +
    +

    Return:

    + + + + + + + +
    Boolean

    Whether PBR will be enabled.

    +
    +
    +
    +
    + + + + + + + + + + + + + + + +
    +
    +

    + public + + get + + + + pbrEnabled: Boolean: * + + + + source + +

    + + + + +

    Gets whether to enable physically-based rendering (PBR) when the camera stops moving.

    +
    + + +
    +
    +

    Return:

    + + + + + + + +
    Boolean

    Whether PBR will be enabled.

    +
    +
    +
    +
    + @@ -596,12 +1064,123 @@

    + +

    +
    +

    + public + + set + + + + saoEnabled: Boolean + + + + source + +

    + +

    Sets whether to enable scalable ambient occlusion (SAO) when the camera stops moving.

    + + + +
    +
    +

    Return:

    + + + + + + + +
    Boolean

    Whether SAO will be enabled.

    +
    +
    +
    +
    + + + + + + + + + + + + + + + +
    +
    +

    + public + + get + + + + saoEnabled: Boolean: * + + + + source + +

    + + + + +

    Gets whether the FastNavPlugin enables SAO when switching to quality rendering.

    +
    + + + +
    +
    + +
    +

    Return:

    + + + + + + + +
    Boolean

    Whether SAO will be enabled.

    +
    +
    +
    +
    + + + + + + + + + + + + + + + +
    +

    Public Methods

    @@ -616,7 +1195,7 @@

    - source + source

    diff --git a/docs/class/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource.html b/docs/class/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource.html index de8c247d4c..a8d7d4d3cf 100644 --- a/docs/class/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource.html +++ b/docs/class/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin.html b/docs/class/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin.html index cd555bb1ac..45d6d26f5c 100644 --- a/docs/class/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin.html +++ b/docs/class/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin.html b/docs/class/src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin.html index 2022b1af7f..a04efe77f1 100644 --- a/docs/class/src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin.html +++ b/docs/class/src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin.html b/docs/class/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin.html index c4d7f8ac6b..5129e633f0 100644 --- a/docs/class/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin.html +++ b/docs/class/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js~STLDefaultDataSource.html b/docs/class/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js~STLDefaultDataSource.html index ff2ef3dd0d..dfe21184e7 100644 --- a/docs/class/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js~STLDefaultDataSource.html +++ b/docs/class/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js~STLDefaultDataSource.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin.html b/docs/class/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin.html index adc9754cc1..15f4bbb0c1 100644 --- a/docs/class/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin.html +++ b/docs/class/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin.html b/docs/class/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin.html index 9c98051a6b..e7cf0b9db4 100644 --- a/docs/class/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin.html +++ b/docs/class/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin.html b/docs/class/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin.html index 9adc48bafc..9694f7d2dd 100644 --- a/docs/class/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin.html +++ b/docs/class/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/StoreyViewsPlugin/Storey.js~Storey.html b/docs/class/src/plugins/StoreyViewsPlugin/Storey.js~Storey.html index 52b9fc0280..70e4ff68e2 100644 --- a/docs/class/src/plugins/StoreyViewsPlugin/Storey.js~Storey.html +++ b/docs/class/src/plugins/StoreyViewsPlugin/Storey.js~Storey.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap.html b/docs/class/src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap.html index 435be531d1..9d6bd8e7c3 100644 --- a/docs/class/src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap.html +++ b/docs/class/src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin.html b/docs/class/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin.html index a54aff44ca..3e1e1d6ff2 100644 --- a/docs/class/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin.html +++ b/docs/class/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView.html b/docs/class/src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView.html index b6224edb74..1765d4d20e 100644 --- a/docs/class/src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView.html +++ b/docs/class/src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode.html b/docs/class/src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode.html index 82f057402c..0e57d73a56 100644 --- a/docs/class/src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode.html +++ b/docs/class/src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin.html b/docs/class/src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin.html index fe1a7904e7..2de7451e16 100644 --- a/docs/class/src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin.html +++ b/docs/class/src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin.html b/docs/class/src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin.html index 4aa88e3a64..4a089a5814 100644 --- a/docs/class/src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin.html +++ b/docs/class/src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource.html b/docs/class/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource.html index f19f2e3c1e..a49d1377fc 100644 --- a/docs/class/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource.html +++ b/docs/class/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin.html b/docs/class/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin.html index a31082d5a8..2285d65c6f 100644 --- a/docs/class/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin.html +++ b/docs/class/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin.html b/docs/class/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin.html index 3c03975ec9..44b04ae30a 100644 --- a/docs/class/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin.html +++ b/docs/class/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/viewer/Plugin.js~Plugin.html b/docs/class/src/viewer/Plugin.js~Plugin.html index 0f3c889a76..e7ac490ffc 100644 --- a/docs/class/src/viewer/Plugin.js~Plugin.html +++ b/docs/class/src/viewer/Plugin.js~Plugin.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -180,7 +178,7 @@

    Plugin

    - + diff --git a/docs/class/src/viewer/Viewer.js~Viewer.html b/docs/class/src/viewer/Viewer.js~Viewer.html index b653a58f41..8af88c91a1 100644 --- a/docs/class/src/viewer/Viewer.js~Viewer.html +++ b/docs/class/src/viewer/Viewer.js~Viewer.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -541,7 +539,7 @@

    Viewer

    -

    Exists snapshot mode.

    +

    Exits snapshot mode.

    @@ -1523,7 +1521,7 @@

    -

    Exists snapshot mode.

    +

    Exits snapshot mode.

    Switches rendering back to the main canvas.

    diff --git a/docs/class/src/viewer/metadata/MetaModel.js~MetaModel.html b/docs/class/src/viewer/metadata/MetaModel.js~MetaModel.html index c204ff5fa8..daf648bcbf 100644 --- a/docs/class/src/viewer/metadata/MetaModel.js~MetaModel.html +++ b/docs/class/src/viewer/metadata/MetaModel.js~MetaModel.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/viewer/metadata/MetaObject.js~MetaObject.html b/docs/class/src/viewer/metadata/MetaObject.js~MetaObject.html index 00c4c19268..5134ee9ffc 100644 --- a/docs/class/src/viewer/metadata/MetaObject.js~MetaObject.html +++ b/docs/class/src/viewer/metadata/MetaObject.js~MetaObject.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/viewer/metadata/MetaScene.js~MetaScene.html b/docs/class/src/viewer/metadata/MetaScene.js~MetaScene.html index 145cf68aae..1cd597b3e6 100644 --- a/docs/class/src/viewer/metadata/MetaScene.js~MetaScene.html +++ b/docs/class/src/viewer/metadata/MetaScene.js~MetaScene.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 36b776e9de..65764b0800 100644 --- a/docs/class/src/viewer/scene/CameraControl/CameraControl.js~CameraControl.html +++ b/docs/class/src/viewer/scene/CameraControl/CameraControl.js~CameraControl.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -3952,7 +3950,7 @@

    - source + source

    @@ -3998,7 +3996,7 @@

    - source + source

    @@ -4057,7 +4055,7 @@

    - source + source

    @@ -4104,7 +4102,7 @@

    - source + source

    @@ -4164,7 +4162,7 @@

    - source + source

    @@ -4216,7 +4214,7 @@

    - source + source

    @@ -4274,7 +4272,7 @@

    - source + source

    @@ -4319,7 +4317,7 @@

    - source + source

    @@ -4377,7 +4375,7 @@

    - source + source

    @@ -4422,7 +4420,7 @@

    - source + source

    @@ -4480,7 +4478,7 @@

    - source + source

    @@ -4523,7 +4521,7 @@

    - source + source

    @@ -4579,7 +4577,7 @@

    - source + source

    @@ -4624,7 +4622,7 @@

    - source + source

    @@ -4682,7 +4680,7 @@

    - source + source

    @@ -4733,7 +4731,7 @@

    - source + source

    @@ -4791,7 +4789,7 @@

    - source + source

    @@ -4838,7 +4836,7 @@

    - source + source

    @@ -4898,7 +4896,7 @@

    - source + source

    @@ -4947,7 +4945,7 @@

    - source + source

    @@ -5009,7 +5007,7 @@

    - source + source

    @@ -5054,7 +5052,7 @@

    - source + source

    @@ -5111,7 +5109,7 @@

    - source + source

    @@ -5157,7 +5155,7 @@

    - source + source

    @@ -5215,7 +5213,7 @@

    - source + source

    @@ -5264,7 +5262,7 @@

    - source + source

    @@ -5326,7 +5324,7 @@

    - source + source

    @@ -5377,7 +5375,7 @@

    - source + source

    @@ -5435,7 +5433,7 @@

    - source + source

    @@ -5482,7 +5480,7 @@

    - source + source

    @@ -5540,7 +5538,7 @@

    - source + source

    @@ -5586,7 +5584,7 @@

    - source + source

    @@ -5644,7 +5642,7 @@

    - source + source

    @@ -5695,7 +5693,7 @@

    - source + source

    @@ -5752,7 +5750,7 @@

    - source + source

    @@ -5804,7 +5802,7 @@

    - source + source

    @@ -5862,7 +5860,7 @@

    - source + source

    @@ -5907,7 +5905,7 @@

    - source + source

    @@ -5965,7 +5963,7 @@

    - source + source

    @@ -6008,7 +6006,7 @@

    - source + source

    @@ -6064,7 +6062,7 @@

    - source + source

    @@ -6109,7 +6107,7 @@

    - source + source

    @@ -6154,7 +6152,7 @@

    - source + source

    @@ -6212,7 +6210,7 @@

    - source + source

    @@ -6259,7 +6257,7 @@

    - source + source

    @@ -6319,7 +6317,7 @@

    - source + source

    @@ -6366,7 +6364,7 @@

    - source + source

    @@ -6426,7 +6424,7 @@

    - source + source

    @@ -6477,7 +6475,7 @@

    - source + source

    @@ -6536,7 +6534,7 @@

    - source + source

    @@ -6584,7 +6582,7 @@

    - source + source

    @@ -6645,7 +6643,7 @@

    - source + source

    @@ -6690,7 +6688,7 @@

    - source + source

    @@ -6748,7 +6746,7 @@

    - source + source

    @@ -6792,7 +6790,7 @@

    - source + source

    diff --git a/docs/class/src/viewer/scene/Component.js~Component.html b/docs/class/src/viewer/scene/Component.js~Component.html index 7a4776398a..c4680bd5bd 100644 --- a/docs/class/src/viewer/scene/Component.js~Component.html +++ b/docs/class/src/viewer/scene/Component.js~Component.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -180,7 +178,7 @@

    Component

    - + diff --git a/docs/class/src/viewer/scene/Entity.js~Entity.html b/docs/class/src/viewer/scene/Entity.js~Entity.html index 64032b4fc2..996c3d88e9 100644 --- a/docs/class/src/viewer/scene/Entity.js~Entity.html +++ b/docs/class/src/viewer/scene/Entity.js~Entity.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 9a71f7b63d..e8ca457f47 100644 --- a/docs/class/src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane.html +++ b/docs/class/src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel.html b/docs/class/src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel.html index 88b59260a2..5a8100d13e 100644 --- a/docs/class/src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel.html +++ b/docs/class/src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 061f778915..4477ee2e6b 100644 --- a/docs/class/src/viewer/scene/camera/Camera.js~Camera.html +++ b/docs/class/src/viewer/scene/camera/Camera.js~Camera.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 7f8127f48f..da7f8c8b49 100644 --- a/docs/class/src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation.html +++ b/docs/class/src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 3f6ee0b72a..101ea569ae 100644 --- a/docs/class/src/viewer/scene/camera/CameraPath.js~CameraPath.html +++ b/docs/class/src/viewer/scene/camera/CameraPath.js~CameraPath.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 3650b38b06..3eee26450d 100644 --- a/docs/class/src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation.html +++ b/docs/class/src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 4e2c04aaf5..ba6d08ed9e 100644 --- a/docs/class/src/viewer/scene/camera/CustomProjection.js~CustomProjection.html +++ b/docs/class/src/viewer/scene/camera/CustomProjection.js~CustomProjection.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 a8f5ac72ff..9b8a24786b 100644 --- a/docs/class/src/viewer/scene/camera/Frustum.js~Frustum.html +++ b/docs/class/src/viewer/scene/camera/Frustum.js~Frustum.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 85f999560c..e44fdb77ac 100644 --- a/docs/class/src/viewer/scene/camera/Ortho.js~Ortho.html +++ b/docs/class/src/viewer/scene/camera/Ortho.js~Ortho.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 4a7549b191..9a4b2e0e96 100644 --- a/docs/class/src/viewer/scene/camera/Perspective.js~Perspective.html +++ b/docs/class/src/viewer/scene/camera/Perspective.js~Perspective.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 8fbaf66a25..0d19efa4c1 100644 --- a/docs/class/src/viewer/scene/canvas/Canvas.js~Canvas.html +++ b/docs/class/src/viewer/scene/canvas/Canvas.js~Canvas.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 d6e3c82a98..f41c737160 100644 --- a/docs/class/src/viewer/scene/canvas/Spinner.js~Spinner.html +++ b/docs/class/src/viewer/scene/canvas/Spinner.js~Spinner.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 42f459251d..0b3644339f 100644 --- a/docs/class/src/viewer/scene/geometry/Geometry.js~Geometry.html +++ b/docs/class/src/viewer/scene/geometry/Geometry.js~Geometry.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 9c8f695014..a6fc18235a 100644 --- a/docs/class/src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry.html +++ b/docs/class/src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 fb02d66ae4..4a5954ddf3 100644 --- a/docs/class/src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry.html +++ b/docs/class/src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 56ec450ee9..ca0981d17e 100644 --- a/docs/class/src/viewer/scene/input/Input.js~Input.html +++ b/docs/class/src/viewer/scene/input/Input.js~Input.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 4b2ff2019f..2e69333948 100644 --- a/docs/class/src/viewer/scene/lights/AmbientLight.js~AmbientLight.html +++ b/docs/class/src/viewer/scene/lights/AmbientLight.js~AmbientLight.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 3c7a39ed22..e56b0cca6e 100644 --- a/docs/class/src/viewer/scene/lights/CubeTexture.js~CubeTexture.html +++ b/docs/class/src/viewer/scene/lights/CubeTexture.js~CubeTexture.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 683fd317aa..c2b7abf018 100644 --- a/docs/class/src/viewer/scene/lights/DirLight.js~DirLight.html +++ b/docs/class/src/viewer/scene/lights/DirLight.js~DirLight.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 6f45917384..39bdf7f5ce 100644 --- a/docs/class/src/viewer/scene/lights/Light.js~Light.html +++ b/docs/class/src/viewer/scene/lights/Light.js~Light.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 05706c13cc..fa11917637 100644 --- a/docs/class/src/viewer/scene/lights/LightMap.js~LightMap.html +++ b/docs/class/src/viewer/scene/lights/LightMap.js~LightMap.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 4977657881..7705067ea0 100644 --- a/docs/class/src/viewer/scene/lights/PointLight.js~PointLight.html +++ b/docs/class/src/viewer/scene/lights/PointLight.js~PointLight.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 d122714e5c..cf8c038409 100644 --- a/docs/class/src/viewer/scene/lights/ReflectionMap.js~ReflectionMap.html +++ b/docs/class/src/viewer/scene/lights/ReflectionMap.js~ReflectionMap.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 c194472ec1..1cb615cd8c 100644 --- a/docs/class/src/viewer/scene/lights/Shadow.js~Shadow.html +++ b/docs/class/src/viewer/scene/lights/Shadow.js~Shadow.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf.html b/docs/class/src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf.html index 756dbe6e09..5c695039a1 100644 --- a/docs/class/src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf.html +++ b/docs/class/src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 fbe045acf7..1f82956a90 100644 --- a/docs/class/src/viewer/scene/marker/Marker.js~Marker.html +++ b/docs/class/src/viewer/scene/marker/Marker.js~Marker.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 623e8d8233..f6d4f0c5bf 100644 --- a/docs/class/src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial.html +++ b/docs/class/src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 ed32c46acb..f9cb6be1f6 100644 --- a/docs/class/src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial.html +++ b/docs/class/src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 2e4c177244..ef36d42de5 100644 --- a/docs/class/src/viewer/scene/materials/Fresnel.js~Fresnel.html +++ b/docs/class/src/viewer/scene/materials/Fresnel.js~Fresnel.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 391cba33e9..2a474502fa 100644 --- a/docs/class/src/viewer/scene/materials/LambertMaterial.js~LambertMaterial.html +++ b/docs/class/src/viewer/scene/materials/LambertMaterial.js~LambertMaterial.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 3868617f70..10dc1b3994 100644 --- a/docs/class/src/viewer/scene/materials/LinesMaterial.js~LinesMaterial.html +++ b/docs/class/src/viewer/scene/materials/LinesMaterial.js~LinesMaterial.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 2ba332cf6f..137229f75e 100644 --- a/docs/class/src/viewer/scene/materials/Material.js~Material.html +++ b/docs/class/src/viewer/scene/materials/Material.js~Material.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 4d4d643956..9e778d369f 100644 --- a/docs/class/src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial.html +++ b/docs/class/src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 b4606c5ec4..42cb1a26df 100644 --- a/docs/class/src/viewer/scene/materials/PhongMaterial.js~PhongMaterial.html +++ b/docs/class/src/viewer/scene/materials/PhongMaterial.js~PhongMaterial.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 d915ef0e57..7b0acde889 100644 --- a/docs/class/src/viewer/scene/materials/PointsMaterial.js~PointsMaterial.html +++ b/docs/class/src/viewer/scene/materials/PointsMaterial.js~PointsMaterial.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 0b7f9e3bb3..2dff966745 100644 --- a/docs/class/src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial.html +++ b/docs/class/src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 f2c93174dd..d9023803c0 100644 --- a/docs/class/src/viewer/scene/materials/Texture.js~Texture.html +++ b/docs/class/src/viewer/scene/materials/Texture.js~Texture.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 981e627586..f1aa177c5b 100644 --- a/docs/class/src/viewer/scene/mementos/CameraMemento.js~CameraMemento.html +++ b/docs/class/src/viewer/scene/mementos/CameraMemento.js~CameraMemento.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 95b865df70..cc7e80749a 100644 --- a/docs/class/src/viewer/scene/mementos/ModelMemento.js~ModelMemento.html +++ b/docs/class/src/viewer/scene/mementos/ModelMemento.js~ModelMemento.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 0f2e9572d3..4e6fc7bd4d 100644 --- a/docs/class/src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento.html +++ b/docs/class/src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 bdd80d314c..0810dd9065 100644 --- a/docs/class/src/viewer/scene/mesh/Mesh.js~Mesh.html +++ b/docs/class/src/viewer/scene/mesh/Mesh.js~Mesh.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js~PickTriangleShaderSource.html b/docs/class/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js~PickTriangleShaderSource.html index d61ad198b0..485ff6ae80 100644 --- a/docs/class/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js~PickTriangleShaderSource.html +++ b/docs/class/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js~PickTriangleShaderSource.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 9d037ded82..1b416cf60b 100644 --- a/docs/class/src/viewer/scene/metriqs/Metriqs.js~Metrics.html +++ b/docs/class/src/viewer/scene/metriqs/Metriqs.js~Metrics.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 1269b17f6d..3a33123da6 100644 --- a/docs/class/src/viewer/scene/nodes/Node.js~Node.html +++ b/docs/class/src/viewer/scene/nodes/Node.js~Node.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 1c666d2f35..19751b3f2f 100644 --- a/docs/class/src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve.html +++ b/docs/class/src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 a5010e38c1..a18f936362 100644 --- a/docs/class/src/viewer/scene/paths/Curve.js~Curve.html +++ b/docs/class/src/viewer/scene/paths/Curve.js~Curve.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 e61b97cdb1..4e6617986c 100644 --- a/docs/class/src/viewer/scene/paths/Path.js~Path.html +++ b/docs/class/src/viewer/scene/paths/Path.js~Path.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 a18f4dd4a6..9635c718c3 100644 --- a/docs/class/src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve.html +++ b/docs/class/src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 15b751f8c0..89f076c4b7 100644 --- a/docs/class/src/viewer/scene/paths/SplineCurve.js~SplineCurve.html +++ b/docs/class/src/viewer/scene/paths/SplineCurve.js~SplineCurve.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 77d764a263..bd45c770b5 100644 --- a/docs/class/src/viewer/scene/postfx/SAO.js~SAO.html +++ b/docs/class/src/viewer/scene/postfx/SAO.js~SAO.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -225,7 +223,7 @@

    Usage

    In the example below, we'll start by logging a } sao.enabled = true; // Enable SAO - only works if supported (see above) -sao.intensity = 0.20; +sao.intensity = 0.15; sao.bias = 0.5; sao.scale = 1.0; sao.minResolution = 0.0; @@ -1976,7 +1974,7 @@

    Sets the degree of darkening (ambient obscurance) produced by the SAO effect.

    -

    Default value is 0.20.

    +

    Default value is 0.15.

    @@ -2021,7 +2019,7 @@

    Gets the degree of darkening (ambient obscurance) produced by the SAO effect.

    -

    Default value is 0.25.

    +

    Default value is 0.15.

    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 fcde1945d9..2548ad3919 100644 --- a/docs/class/src/viewer/scene/scene/Scene.js~Scene.html +++ b/docs/class/src/viewer/scene/scene/Scene.js~Scene.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 c73865586b..205725f075 100644 --- a/docs/class/src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane.html +++ b/docs/class/src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 7f4831a8f0..e4487413fc 100644 --- a/docs/class/src/viewer/scene/skybox/Skybox.js~Skybox.html +++ b/docs/class/src/viewer/scene/skybox/Skybox.js~Skybox.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 618e188a2c..4a714e8a42 100644 --- a/docs/class/src/viewer/scene/viewport/Viewport.js~Viewport.html +++ b/docs/class/src/viewer/scene/viewport/Viewport.js~Viewport.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 2fdb52ccbb..9969cfdd56 100644 --- a/docs/class/src/viewer/scene/webgl/PickResult.js~PickResult.html +++ b/docs/class/src/viewer/scene/webgl/PickResult.js~PickResult.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer.html b/docs/class/src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer.html index 6b58e6a6c7..49237f66a9 100644 --- a/docs/class/src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer.html +++ b/docs/class/src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/class/src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester.html b/docs/class/src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester.html index 6f83b5de44..bbe5779b60 100644 --- a/docs/class/src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester.html +++ b/docs/class/src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/coverage.json b/docs/coverage.json index 7b7d7a7945..64734e8412 100644 --- a/docs/coverage.json +++ b/docs/coverage.json @@ -1,7 +1,7 @@ { - "coverage": "37.53%", - "expectCount": 5822, - "actualCount": 2185, + "coverage": "37.62%", + "expectCount": 5815, + "actualCount": 2188, "files": { "src/extras/ContextMenu/ContextMenu.js": { "expectCount": 59, @@ -251,23 +251,26 @@ ] }, "src/plugins/FastNavPlugin/FastNavPlugin.js": { - "expectCount": 17, - "actualCount": 3, + "expectCount": 27, + "actualCount": 10, "undocumentLines": [ - 242, - 51, - 55, - 56, - 62, + 325, + 68, + 69, + 70, + 72, 73, - 89, - 102, - 114, - 118, - 133, - 181, - 182, - 202 + 79, + 90, + 98, + 109, + 122, + 134, + 138, + 153, + 204, + 205, + 225 ] }, "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js": { @@ -310,30 +313,6 @@ 46 ] }, - "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js": { - "expectCount": 9, - "actualCount": 4, - "undocumentLines": [ - 33, - 35, - 46, - 52, - 81 - ] - }, - "src/plugins/GroundShadowPlugin/ModelGroundShadow.js": { - "expectCount": 7, - "actualCount": 0, - "undocumentLines": [ - 8, - 10, - 14, - 16, - 20, - 34, - 38 - ] - }, "src/plugins/NavCubePlugin/CubeTextureCanvas.js": { "expectCount": 1, "actualCount": 1, @@ -581,10 +560,10 @@ 618, 629, 644, - 786, - 811, - 818, - 846 + 787, + 812, + 819, + 847 ] }, "src/plugins/TreeViewPlugin/TreeViewNode.js": { @@ -911,13 +890,13 @@ 613, 621, 668, - 686, - 699, - 711, - 723, - 946, - 1617, - 1626 + 685, + 698, + 710, + 722, + 945, + 1616, + 1625 ] }, "src/viewer/scene/CameraControl/lib/CameraUpdater.js": { @@ -930,7 +909,7 @@ 14, 16, 26, - 309 + 307 ] }, "src/viewer/scene/CameraControl/lib/controllers/PanController.js": { @@ -1038,16 +1017,15 @@ ] }, "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js": { - "expectCount": 8, + "expectCount": 7, "actualCount": 1, "undocumentLines": [ 6, 8, 33, 35, - 45, 321, - 325 + 324 ] }, "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js": { diff --git a/docs/css/style.css b/docs/css/style.css index fe3b2d9b7d..ba76e193b3 100644 --- a/docs/css/style.css +++ b/docs/css/style.css @@ -16,6 +16,7 @@ html { font-family: 'Source Sans Pro', 'Roboto', sans-serif; + line-height: 1.5; overflow: auto; /*font-size: 14px;*/ /*color: #4d4e53;*/ diff --git a/docs/file/src/extras/ContextMenu/ContextMenu.js.html b/docs/file/src/extras/ContextMenu/ContextMenu.js.html index 154d4d2353..9fc63ca64e 100644 --- a/docs/file/src/extras/ContextMenu/ContextMenu.js.html +++ b/docs/file/src/extras/ContextMenu/ContextMenu.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js.html b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js.html index 27ba6dd399..bd8fe5a6fb 100644 --- a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js.html +++ b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js.html b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js.html index 5d6cd4504a..949211115e 100644 --- a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js.html +++ b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js.html b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js.html index c2e249a0c4..42e50a8363 100644 --- a/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js.html +++ b/docs/file/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/AnnotationsPlugin/Annotation.js.html b/docs/file/src/plugins/AnnotationsPlugin/Annotation.js.html index ade07dff1a..acac2e7b7d 100644 --- a/docs/file/src/plugins/AnnotationsPlugin/Annotation.js.html +++ b/docs/file/src/plugins/AnnotationsPlugin/Annotation.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js.html b/docs/file/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js.html index adb97c4081..810a9f3ccd 100644 --- a/docs/file/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js.html +++ b/docs/file/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js.html b/docs/file/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js.html index 5afef084d0..612558f2cd 100644 --- a/docs/file/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js.html +++ b/docs/file/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js.html b/docs/file/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js.html index affcfa3c39..036b16b045 100644 --- a/docs/file/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js.html +++ b/docs/file/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js.html b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js.html index 3f7bac424c..7c4a6f1270 100644 --- a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js.html +++ b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js.html b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js.html index 67cd15798a..619fd4528c 100644 --- a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js.html +++ b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js.html b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js.html index 19afda0222..13ce980612 100644 --- a/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js.html +++ b/docs/file/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/FastNavPlugin/FastNavPlugin.js.html b/docs/file/src/plugins/FastNavPlugin/FastNavPlugin.js.html index 5e86db79bf..0d25d1d6f9 100644 --- a/docs/file/src/plugins/FastNavPlugin/FastNavPlugin.js.html +++ b/docs/file/src/plugins/FastNavPlugin/FastNavPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -195,7 +193,11 @@ * viewer.scene.camera.look = [42.45, 49.62, -43.59]; * viewer.scene.camera.up = [0.05, 0.95, 0.15]; * - * new FastNavPlugin(viewer, {}); + * new FastNavPlugin(viewer, { + * pbrEnabled: true, + * saoEnabled: true, + * edgesEnabled: true + * }); * * const xktLoader = new XKTLoaderPlugin(viewer); * @@ -213,10 +215,23 @@ */ class FastNavPlugin extends Plugin { - constructor(viewer) { + /** + * @constructor + * @param {Viewer} viewer The Viewer. + * @param {Object} cfg FastNavPlugin configuration. + * @param {String} [cfg.id="FastNav"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}. + * @param {Boolean} [cfg.pbrEnabled] Whether to enable physically-based rendering (PBR) when the camera stops moving. When not specified, PBR will be enabled if it's currently enabled for the Viewer (see {@link Viewer#pbrEnabled}). + * @param {Boolean} [cfg.saoEnabled] Whether to enable scalable ambient occlusion (SAO) when the camera stops moving. When not specified, SAO will be enabled if it's currently enabled for the Viewer (see {@link Scene#pbrEnabled}). + * @param {Boolean} [cfg.edgesEnabled] Whether to show enhanced edges when the camera stops moving. When not specified, edges will be enabled if they're currently enabled for the Viewer (see {@link EdgeMaterial#edges}). + */ + constructor(viewer, cfg = {}) { super("FastNav", viewer); + this._pbrEnabled = (cfg.pbrEnabled !== undefined && cfg.pbrEnabled !== null) ? cfg.pbrEnabled : viewer.scene.pbrEnabled; + this._saoEnabled = (cfg.saoEnabled !== undefined && cfg.saoEnabled !== null) ? cfg.saoEnabled : viewer.scene.sao.enabled; + this._edgesEnabled = (cfg.edgesEnabled !== undefined && cfg.edgesEnabled !== null) ? cfg.edgesEnabled : viewer.scene.edgeMaterial.edges; + this._pInterval = null; this._fadeMillisecs = 500; @@ -243,9 +258,12 @@ if (timer <= 0) { if (fastMode) { this._startFade(); - viewer.scene.pbrEnabled = true; - viewer.scene.sao.enabled = true; - viewer.scene.edgeMaterial.edges = true; + this._pInterval2 = setTimeout(() => { // Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624 + viewer.scene.pbrEnabled = this._pbrEnabled; + viewer.scene.sao.enabled = this._saoEnabled; + viewer.scene.edgeMaterial.edges = this._edgesEnabled; + }, 100); + fastMode = false; } } @@ -309,7 +327,9 @@ this._pInterval = null; } - const canvas = this.viewer.scene.canvas.canvas; + const viewer = this.viewer; + + const canvas = viewer.scene.canvas.canvas; const canvasOffset = cumulativeOffset(canvas); //const zIndex = (parseInt(canvas.style["z-index"]) || 0) + 1; @@ -323,7 +343,8 @@ this._img.style.opacity = 1; this._img.width = canvas.width; this._img.height = canvas.height; - this._img.src = this.viewer.getSnapshot({ + this._img.src = ""; // Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624 + this._img.src = viewer.getSnapshot({ format: "png", includeGizmos: true }); @@ -372,10 +393,68 @@ clearInterval(this._pInterval); this._pInterval = null; } + if (this._pInterval2) { + clearInterval(this._pInterval2); + this._pInterval2 = null; + } this._img.style.opacity = 0; this._img.style.visibility = "hidden"; } + /** + * Sets whether to enable physically-based rendering (PBR) when the camera stops moving. + * + * @return {Boolean} Whether PBR will be enabled. + */ + set pbrEnabled(pbrEnabled) { + this._pbrEnabled = pbrEnabled; + } + + /** + * Gets whether to enable physically-based rendering (PBR) when the camera stops moving. + * + * @return {Boolean} Whether PBR will be enabled. + */ + get pbrEnabled() { + return this._pbrEnabled + } + + /** + * Sets whether to enable scalable ambient occlusion (SAO) when the camera stops moving. + * + * @return {Boolean} Whether SAO will be enabled. + */ + set saoEnabled(saoEnabled) { + this._saoEnabled = saoEnabled; + } + + /** + * Gets whether the FastNavPlugin enables SAO when switching to quality rendering. + * + * @return {Boolean} Whether SAO will be enabled. + */ + get saoEnabled() { + return this._saoEnabled + } + + /** + * Sets whether to show enhanced edges when the camera stops moving. + * + * @return {Boolean} Whether edge enhancement will be enabled. + */ + set edgesEnabled(edgesEnabled) { + this._edgesEnabled = edgesEnabled; + } + + /** + * Gets whether to show enhanced edges when the camera stops moving. + * + * @return {Boolean} Whether edge enhancement will be enabled. + */ + get edgesEnabled() { + return this._edgesEnabled + } + /** * @private */ @@ -399,8 +478,10 @@ this.viewer.scene.input.off(this._onSceneMouseUp); this.viewer.scene.input.off(this._onSceneMouseMove); super.destroy(); - this._img.parentNode.removeChild(this._img); - this._img = null; + if (this._img) { + this._img.parentNode.removeChild(this._img); + this._img = null; + } } } diff --git a/docs/file/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js.html b/docs/file/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js.html index 7c9f5c7d7b..624179b481 100644 --- a/docs/file/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js.html +++ b/docs/file/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js.html b/docs/file/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js.html index c71bb9fe8e..01acc99eb2 100644 --- a/docs/file/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js.html +++ b/docs/file/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js.html b/docs/file/src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js.html index 1a89bc9fed..17054e2a0c 100644 --- a/docs/file/src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js.html +++ b/docs/file/src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js.html b/docs/file/src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js.html index a5686f307f..cf249f1703 100644 --- a/docs/file/src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js.html +++ b/docs/file/src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/NavCubePlugin/CubeTextureCanvas.js.html b/docs/file/src/plugins/NavCubePlugin/CubeTextureCanvas.js.html index b2828f4300..121b1553ab 100644 --- a/docs/file/src/plugins/NavCubePlugin/CubeTextureCanvas.js.html +++ b/docs/file/src/plugins/NavCubePlugin/CubeTextureCanvas.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/NavCubePlugin/NavCubePlugin.js.html b/docs/file/src/plugins/NavCubePlugin/NavCubePlugin.js.html index 3332f62020..8381bf6250 100644 --- a/docs/file/src/plugins/NavCubePlugin/NavCubePlugin.js.html +++ b/docs/file/src/plugins/NavCubePlugin/NavCubePlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js.html b/docs/file/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js.html index 7b9562de5b..b9caf27791 100644 --- a/docs/file/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js.html +++ b/docs/file/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js.html b/docs/file/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js.html index 48c0c47b1a..585984aa93 100644 --- a/docs/file/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js.html +++ b/docs/file/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js.html b/docs/file/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js.html index 73a6be99c4..e0055adcbc 100644 --- a/docs/file/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js.html +++ b/docs/file/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js.html b/docs/file/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js.html index 36d7921dfc..09d1c4a1e2 100644 --- a/docs/file/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js.html +++ b/docs/file/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js.html b/docs/file/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js.html index 770049c8f3..48fb7615cf 100644 --- a/docs/file/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js.html +++ b/docs/file/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/SectionPlanesPlugin/Control.js.html b/docs/file/src/plugins/SectionPlanesPlugin/Control.js.html index f97152173b..e5b02fae28 100644 --- a/docs/file/src/plugins/SectionPlanesPlugin/Control.js.html +++ b/docs/file/src/plugins/SectionPlanesPlugin/Control.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/SectionPlanesPlugin/Overview.js.html b/docs/file/src/plugins/SectionPlanesPlugin/Overview.js.html index d676b0b6e5..469f310813 100644 --- a/docs/file/src/plugins/SectionPlanesPlugin/Overview.js.html +++ b/docs/file/src/plugins/SectionPlanesPlugin/Overview.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/SectionPlanesPlugin/Plane.js.html b/docs/file/src/plugins/SectionPlanesPlugin/Plane.js.html index a738fc7ff2..2431653c83 100644 --- a/docs/file/src/plugins/SectionPlanesPlugin/Plane.js.html +++ b/docs/file/src/plugins/SectionPlanesPlugin/Plane.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js.html b/docs/file/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js.html index 5c974d0a71..c52ff930bd 100644 --- a/docs/file/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js.html +++ b/docs/file/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js.html b/docs/file/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js.html index 265b7970dc..17ef8554a4 100644 --- a/docs/file/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js.html +++ b/docs/file/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/StoreyViewsPlugin/IFCStoreyPlanObjectStates.js.html b/docs/file/src/plugins/StoreyViewsPlugin/IFCStoreyPlanObjectStates.js.html index ea09ca0635..572cac7b61 100644 --- a/docs/file/src/plugins/StoreyViewsPlugin/IFCStoreyPlanObjectStates.js.html +++ b/docs/file/src/plugins/StoreyViewsPlugin/IFCStoreyPlanObjectStates.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/StoreyViewsPlugin/Storey.js.html b/docs/file/src/plugins/StoreyViewsPlugin/Storey.js.html index 26600a3f66..3cb84c0374 100644 --- a/docs/file/src/plugins/StoreyViewsPlugin/Storey.js.html +++ b/docs/file/src/plugins/StoreyViewsPlugin/Storey.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/StoreyViewsPlugin/StoreyMap.js.html b/docs/file/src/plugins/StoreyViewsPlugin/StoreyMap.js.html index dbc49969d0..845c2382b2 100644 --- a/docs/file/src/plugins/StoreyViewsPlugin/StoreyMap.js.html +++ b/docs/file/src/plugins/StoreyViewsPlugin/StoreyMap.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js.html b/docs/file/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js.html index 18e54129c9..0488d71d97 100644 --- a/docs/file/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js.html +++ b/docs/file/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/TreeViewPlugin/ModelTreeView.js.html b/docs/file/src/plugins/TreeViewPlugin/ModelTreeView.js.html index 1bcb997e55..ded5259c30 100644 --- a/docs/file/src/plugins/TreeViewPlugin/ModelTreeView.js.html +++ b/docs/file/src/plugins/TreeViewPlugin/ModelTreeView.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -825,6 +823,7 @@ checkbox.id = nodeId; checkbox.type = "checkbox"; checkbox.checked = node.checked; + checkbox.style["pointer-events"] = "all"; checkbox.addEventListener("change", this._checkboxChangeHandler); nodeElement.appendChild(checkbox); const span = document.createElement('span'); diff --git a/docs/file/src/plugins/TreeViewPlugin/TreeViewNode.js.html b/docs/file/src/plugins/TreeViewPlugin/TreeViewNode.js.html index 06fe00274b..2ea3cc05e1 100644 --- a/docs/file/src/plugins/TreeViewPlugin/TreeViewNode.js.html +++ b/docs/file/src/plugins/TreeViewPlugin/TreeViewNode.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/TreeViewPlugin/TreeViewPlugin.js.html b/docs/file/src/plugins/TreeViewPlugin/TreeViewPlugin.js.html index 855da113c4..b5cf85fff1 100644 --- a/docs/file/src/plugins/TreeViewPlugin/TreeViewPlugin.js.html +++ b/docs/file/src/plugins/TreeViewPlugin/TreeViewPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/TreeViewPlugin/modelValidation.js.html b/docs/file/src/plugins/TreeViewPlugin/modelValidation.js.html index ce3f48a294..7f5bef3834 100644 --- a/docs/file/src/plugins/TreeViewPlugin/modelValidation.js.html +++ b/docs/file/src/plugins/TreeViewPlugin/modelValidation.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/ViewCullPlugin/ViewCullPlugin.js.html b/docs/file/src/plugins/ViewCullPlugin/ViewCullPlugin.js.html index a57458c8bc..61db25aa9d 100644 --- a/docs/file/src/plugins/ViewCullPlugin/ViewCullPlugin.js.html +++ b/docs/file/src/plugins/ViewCullPlugin/ViewCullPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js.html b/docs/file/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js.html index 38d6ebd75c..63e6312659 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js.html b/docs/file/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js.html index 400787a808..fcc9cee72a 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js.html index 8083944305..645338cd45 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js.html index 7994e2e092..52669ea948 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js.html index 428e1b53d9..63f842363f 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js.html index 4651c458c9..a6da08bea1 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js.html index c90c2188f6..06104fccd5 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js.html index 85975a23cf..d578b92631 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js.html b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js.html index cb65352497..0018812f7d 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 38972b6a16..e51ac0871d 100644 --- a/docs/file/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js.html +++ b/docs/file/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js.html b/docs/file/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js.html index 954a632c65..e1bbc6f2b6 100644 --- a/docs/file/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js.html +++ b/docs/file/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js.html b/docs/file/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js.html index d9d90e5241..35b793c904 100644 --- a/docs/file/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js.html +++ b/docs/file/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/lib/culling/ObjectCullStates.js.html b/docs/file/src/plugins/lib/culling/ObjectCullStates.js.html index 1819a0d320..9ff1b06c52 100644 --- a/docs/file/src/plugins/lib/culling/ObjectCullStates.js.html +++ b/docs/file/src/plugins/lib/culling/ObjectCullStates.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/lib/html/Dot.js.html b/docs/file/src/plugins/lib/html/Dot.js.html index d79cfc0b8e..9bbfa6d7ab 100644 --- a/docs/file/src/plugins/lib/html/Dot.js.html +++ b/docs/file/src/plugins/lib/html/Dot.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/lib/html/Label.js.html b/docs/file/src/plugins/lib/html/Label.js.html index bb282ac895..afc3682eef 100644 --- a/docs/file/src/plugins/lib/html/Label.js.html +++ b/docs/file/src/plugins/lib/html/Label.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/plugins/lib/html/Wire.js.html b/docs/file/src/plugins/lib/html/Wire.js.html index c6bf6b7ec7..5f6756f4c3 100644 --- a/docs/file/src/plugins/lib/html/Wire.js.html +++ b/docs/file/src/plugins/lib/html/Wire.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/Plugin.js.html b/docs/file/src/viewer/Plugin.js.html index d55d5c9671..b3c2bf4b7b 100644 --- a/docs/file/src/viewer/Plugin.js.html +++ b/docs/file/src/viewer/Plugin.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/Viewer.js.html b/docs/file/src/viewer/Viewer.js.html index a8a216fb35..7ecf326f5c 100644 --- a/docs/file/src/viewer/Viewer.js.html +++ b/docs/file/src/viewer/Viewer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -505,7 +503,7 @@ } /** - * Exists snapshot mode. + * Exits snapshot mode. * * Switches rendering back to the main canvas. * diff --git a/docs/file/src/viewer/metadata/IFCObjectDefaultColors.js.html b/docs/file/src/viewer/metadata/IFCObjectDefaultColors.js.html index 871218094b..2eb9b52369 100644 --- a/docs/file/src/viewer/metadata/IFCObjectDefaultColors.js.html +++ b/docs/file/src/viewer/metadata/IFCObjectDefaultColors.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/metadata/IFCObjectDefaults.js.html b/docs/file/src/viewer/metadata/IFCObjectDefaults.js.html index f78bc5c169..fbcd0bc59a 100644 --- a/docs/file/src/viewer/metadata/IFCObjectDefaults.js.html +++ b/docs/file/src/viewer/metadata/IFCObjectDefaults.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/metadata/MetaModel.js.html b/docs/file/src/viewer/metadata/MetaModel.js.html index 7f6c8cf734..45fda78082 100644 --- a/docs/file/src/viewer/metadata/MetaModel.js.html +++ b/docs/file/src/viewer/metadata/MetaModel.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/metadata/MetaObject.js.html b/docs/file/src/viewer/metadata/MetaObject.js.html index 1dd82d0375..ddec4d973d 100644 --- a/docs/file/src/viewer/metadata/MetaObject.js.html +++ b/docs/file/src/viewer/metadata/MetaObject.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/metadata/MetaScene.js.html b/docs/file/src/viewer/metadata/MetaScene.js.html index c6b65675a4..b8667a6d5c 100644 --- a/docs/file/src/viewer/metadata/MetaScene.js.html +++ b/docs/file/src/viewer/metadata/MetaScene.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/CameraControl/CameraControl.js.html b/docs/file/src/viewer/scene/CameraControl/CameraControl.js.html index f9d918fb65..07e83ba5b4 100644 --- a/docs/file/src/viewer/scene/CameraControl/CameraControl.js.html +++ b/docs/file/src/viewer/scene/CameraControl/CameraControl.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -833,7 +831,6 @@ this._states = { pointerCanvasPos: math.vec2(), mouseover: false, - inputFromMouse: false, // TODO: Is this needed? followPointerDirty: true, mouseDownClientX: 0, mouseDownClientY: 0, 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 6474603d4d..b12f9891b9 100644 --- a/docs/file/src/viewer/scene/CameraControl/lib/CameraUpdater.js.html +++ b/docs/file/src/viewer/scene/CameraControl/lib/CameraUpdater.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -464,8 +462,6 @@ pickController.fireEvents(); - updates.inputFromMouse = false; - document.body.style.cursor = cursorType; }); } 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 bd7f0cd694..73c72f2c28 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 @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 35583a8138..7d2e37723a 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 @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 b176f95047..488c75e803 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 @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 edd126e1db..247a427f9d 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 @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 267529f47a..dc1edf12d0 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 @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 39f5f1febf..fe3d2a0049 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 @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 6a6fd6f64d..70e150d55b 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 @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -207,7 +205,6 @@ let lastYDown = 0; let xRotateDelta = 0; let yRotateDelta = 0; - this._down = false; let mouseDownLeft; let mouseDownMiddle; @@ -216,7 +213,7 @@ let mouseDownPicked = false; const pickedWorldPos = math.vec3(); - let mouseMovedSinceLastWheel = true; + let mouseMovedOnCanvasSinceLastWheel = true; const canvas = this._scene.canvas.canvas; @@ -275,14 +272,14 @@ return; } - this._down = true; - switch (e.which) { case 1: // Left button if (keyDown[scene.input.KEY_SHIFT] || configs.planView) { + mouseDownLeft = true; + setMousedownState(); } else { @@ -290,7 +287,6 @@ mouseDownLeft = true; setMousedownState(false); - } break; @@ -299,11 +295,7 @@ mouseDownMiddle = true; - if (!configs.panRightClick) { - - setMousedownState(); - - } + setMousedownState(); break; @@ -314,7 +306,6 @@ if (configs.panRightClick) { setMousedownState(); - } break; @@ -322,59 +313,68 @@ default: break; } + }); - document.addEventListener("mousemove", this._documentMouseMoveHandler = () => { - // Scaling drag-rotate to canvas boundary + document.addEventListener("mousemove", this._documentMouseMoveHandler = () => { - const canvasBoundary = scene.canvas.boundary; - const canvasWidth = canvasBoundary[2] - canvasBoundary[0]; - const canvasHeight = canvasBoundary[3] - canvasBoundary[1]; - const x = states.pointerCanvasPos[0]; - const y = states.pointerCanvasPos[1]; + if (!(configs.active && configs.pointerEnabled)) { + return; + } - const panning = keyDown[scene.input.KEY_SHIFT] || configs.planView || (!configs.panRightClick && mouseDownMiddle) || (configs.panRightClick && mouseDownRight); + if (!mouseDownLeft && !mouseDownMiddle && !mouseDownRight) { + return; + } - if (panning) { + // Scaling drag-rotate to canvas boundary - const xPanDelta = (x - lastX); - const yPanDelta = (y - lastY); + const canvasBoundary = scene.canvas.boundary; + const canvasWidth = canvasBoundary[2] - canvasBoundary[0]; + const canvasHeight = canvasBoundary[3] - canvasBoundary[1]; + const x = states.pointerCanvasPos[0]; + const y = states.pointerCanvasPos[1]; - const camera = scene.camera; + const panning = keyDown[scene.input.KEY_SHIFT] || configs.planView || (!configs.panRightClick && mouseDownMiddle) || (configs.panRightClick && mouseDownRight); - // We use only canvasHeight here so that aspect ratio does not distort speed + if (panning) { - if (camera.projection === "perspective") { + const xPanDelta = (x - lastX); + const yPanDelta = (y - lastY); - const depth = Math.abs(mouseDownPicked ? math.lenVec3(math.subVec3(pickedWorldPos, scene.camera.eye, [])) : scene.camera.eyeLookDist); - const targetDistance = depth * Math.tan((camera.perspective.fov / 2) * Math.PI / 180.0); + const camera = scene.camera; - updates.panDeltaX += (1.5 * xPanDelta * targetDistance / canvasHeight); - updates.panDeltaY += (1.5 * yPanDelta * targetDistance / canvasHeight); + // We use only canvasHeight here so that aspect ratio does not distort speed - } else { + if (camera.projection === "perspective") { - updates.panDeltaX += 0.5 * camera.ortho.scale * (xPanDelta / canvasHeight); - updates.panDeltaY += 0.5 * camera.ortho.scale * (yPanDelta / canvasHeight); - } + const depth = Math.abs(mouseDownPicked ? math.lenVec3(math.subVec3(pickedWorldPos, scene.camera.eye, [])) : scene.camera.eyeLookDist); + const targetDistance = depth * Math.tan((camera.perspective.fov / 2) * Math.PI / 180.0); - } else if (!mouseDownMiddle && !mouseDownRight) { + updates.panDeltaX += (1.5 * xPanDelta * targetDistance / canvasHeight); + updates.panDeltaY += (1.5 * yPanDelta * targetDistance / canvasHeight); - if (!configs.planView) { // No rotating in plan-view mode + } else { - if (configs.firstPerson) { - updates.rotateDeltaY -= ((x - lastX) / canvasWidth) * configs.dragRotationRate / 2; - updates.rotateDeltaX += ((y - lastY) / canvasHeight) * (configs.dragRotationRate / 4); + updates.panDeltaX += 0.5 * camera.ortho.scale * (xPanDelta / canvasHeight); + updates.panDeltaY += 0.5 * camera.ortho.scale * (yPanDelta / canvasHeight); + } + + } else if (mouseDownLeft && !mouseDownMiddle && !mouseDownRight) { + + if (!configs.planView) { // No rotating in plan-view mode + + if (configs.firstPerson) { + updates.rotateDeltaY -= ((x - lastX) / canvasWidth) * configs.dragRotationRate / 2; + updates.rotateDeltaX += ((y - lastY) / canvasHeight) * (configs.dragRotationRate / 4); - } else { - updates.rotateDeltaY -= ((x - lastX) / canvasWidth) * (configs.dragRotationRate * 1.5); - updates.rotateDeltaX += ((y - lastY) / canvasHeight) * (configs.dragRotationRate * 1.5); - } + } else { + updates.rotateDeltaY -= ((x - lastX) / canvasWidth) * (configs.dragRotationRate * 1.5); + updates.rotateDeltaX += ((y - lastY) / canvasHeight) * (configs.dragRotationRate * 1.5); } } + } - lastX = x; - lastY = y; - }); + lastX = x; + lastY = y; }); canvas.addEventListener("mousemove", this._canvasMouseMoveHandler = (e) => { @@ -387,10 +387,7 @@ return; } - updates.inputFromMouse = true; - - mouseMovedSinceLastWheel = true; - + mouseMovedOnCanvasSinceLastWheel = true; }); document.addEventListener("mouseup", this._documentMouseUpHandler = (e) => { @@ -400,11 +397,17 @@ switch (e.which) { case 1: // Left button mouseDownLeft = false; + mouseDownMiddle = false; + mouseDownRight = false; break; case 2: // Middle/both buttons + mouseDownLeft = false; mouseDownMiddle = false; + mouseDownRight = false; break; case 3: // Right button + mouseDownLeft = false; + mouseDownMiddle = false; mouseDownRight = false; break; default: @@ -412,9 +415,6 @@ } xRotateDelta = 0; yRotateDelta = 0; - this._down = false; - - document.removeEventListener("mousemove", this._documentMouseMoveHandler); }); canvas.addEventListener("mouseup", this._mouseUpHandler = (e) => { @@ -445,8 +445,6 @@ } xRotateDelta = 0; yRotateDelta = 0; - - this._down = false; }); const maxElapsed = 1 / 20; @@ -474,9 +472,9 @@ const normalizedDelta = delta / Math.abs(delta); updates.dollyDelta += -normalizedDelta * secsElapsed * configs.mouseWheelDollyRate; - if (mouseMovedSinceLastWheel) { + if (mouseMovedOnCanvasSinceLastWheel) { states.followPointerDirty = true; - mouseMovedSinceLastWheel = false; + mouseMovedOnCanvasSinceLastWheel = false; } e.preventDefault(); @@ -484,7 +482,6 @@ } reset() { - this._down = false; } destroy() { 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 5b42307461..c4bfc604af 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 @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -192,7 +190,7 @@ if (pickResult && pickResult.worldPos) { pos = pickResult.worldPos } - const aabb = pickResult ? pickResult.entity.aabb : scene.aabb; + const aabb = pickResult && pickResult.entity ? pickResult.entity.aabb : scene.aabb; if (pos) { // Fly to look at point, don't change eye->look dist const camera = scene.camera; const diff = math.subVec3(camera.eye, camera.look, []); 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 470a871877..fcb1505a4f 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 @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 084bbd5d35..c462d25654 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 @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/Component.js.html b/docs/file/src/viewer/scene/Component.js.html index 450fe9f25e..a4164eaea1 100644 --- a/docs/file/src/viewer/scene/Component.js.html +++ b/docs/file/src/viewer/scene/Component.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/Entity.js.html b/docs/file/src/viewer/scene/Entity.js.html index 54e75b562d..a4d8c891dc 100644 --- a/docs/file/src/viewer/scene/Entity.js.html +++ b/docs/file/src/viewer/scene/Entity.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/ImagePlane/ImagePlane.js.html b/docs/file/src/viewer/scene/ImagePlane/ImagePlane.js.html index 8ff0892c9d..cdb41d387b 100644 --- a/docs/file/src/viewer/scene/ImagePlane/ImagePlane.js.html +++ b/docs/file/src/viewer/scene/ImagePlane/ImagePlane.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/PerformanceModel.js.html b/docs/file/src/viewer/scene/PerformanceModel/PerformanceModel.js.html index c1270530da..d4e6277b5a 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/PerformanceModel.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/PerformanceModel.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/ENTITY_FLAGS.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/ENTITY_FLAGS.js.html index aa5ff13de2..36ee1bf8ac 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/ENTITY_FLAGS.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/ENTITY_FLAGS.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js.html index ccf1fecd89..a1fbc078b3 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/PerformanceNode.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/PerformanceNode.js.html index 6dba81cfaf..0066573aac 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/PerformanceNode.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/PerformanceNode.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/RENDER_PASSES.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/RENDER_PASSES.js.html index b55b9c95aa..65793a85f4 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/RENDER_PASSES.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/RENDER_PASSES.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/ScratchMemory.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/ScratchMemory.js.html index 4853b5b213..bb543b4c6e 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/ScratchMemory.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/ScratchMemory.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/compression.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/compression.js.html index 06a5626e8b..8550f1adbe 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/compression.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/compression.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js.html index af7b2f1a93..3e3c1dd1fe 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js.html index 09217e1df5..369df55246 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js.html index c21514e231..be214795aa 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js.html index 3ffa54549f..f2f9e2c4c2 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js.html index 52a99d98b1..abb9d20326 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js.html index 60c1c2755f..b8aba5d100 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js.html index 792f6352a3..31cc7ef582 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js.html index 2607274de7..5fa691db39 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js.html index 087bc19c90..d80d6e4c26 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js.html index 46c2f2f724..82f7b6185b 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js.html index 27177291f3..aa4f2a669a 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js.html index e6760534e1..79343d3605 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js.html index 48ee9af23a..3c159d7000 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js.html index 28955ba5d8..c8bbcd6444 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js.html index 8d1f466688..23020d15c3 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js.html index af21a881ea..c7a5dc8650 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js.html index d422972ca0..15b4c151ef 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js.html index 059ad0fdb7..3061da720b 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js.html index 4692f4279c..c8796e6b3b 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -791,7 +789,7 @@ } } - drawSilhouetteSelected(frameCtx) { + drawSilhouetteSelected(renderFlags, frameCtx) { if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) { return; } @@ -802,24 +800,24 @@ //-- EDGES RENDERING ----------------------------------------------------------------------------------------------- - drawEdgesColorOpaque(frameCtx) { + drawEdgesColorOpaque(renderFlags, frameCtx) { } - drawEdgesColorTransparent(frameCtx) { + drawEdgesColorTransparent(renderFlags, frameCtx) { } - drawEdgesHighlighted(frameCtx) { + drawEdgesHighlighted(renderFlags, frameCtx) { } - drawEdgesSelected(frameCtx) { + drawEdgesSelected(renderFlags, frameCtx) { } - drawEdgesXRayed(frameCtx) { + drawEdgesXRayed(renderFlags, frameCtx) { } // ---------------------- OCCLUSION CULL RENDERING ----------------------------------- - drawOcclusion(frameCtx) { + drawOcclusion(renderFlags, frameCtx) { if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) { return; } @@ -831,12 +829,12 @@ // ---------------------- SHADOW BUFFER RENDERING ----------------------------------- - drawShadow(frameCtx) { + drawShadow(renderFlags, frameCtx) { } //---- PICKING ---------------------------------------------------------------------------------------------------- - drawPickMesh(frameCtx) { + drawPickMesh(renderFlags, frameCtx) { if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) { return; } @@ -845,7 +843,7 @@ } } - drawPickDepths(frameCtx) { + drawPickDepths(renderFlags, frameCtx) { if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) { return; } @@ -854,7 +852,7 @@ } } - drawPickNormals(frameCtx) { + drawPickNormals(renderFlags, frameCtx) { } destroy() { diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js.html index e36d46f153..b8c15bd5d8 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js.html index 290f682ac6..1f757732fe 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js.html index fd1c0fb04a..0181eb2f7d 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js.html index fd99a3dd29..4338b04044 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js.html index ab1b11e7e0..2160b193e0 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js.html index 3248df12cb..fcc1b2d47e 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js.html index cb53b1819c..ce5d1f7367 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js.html index 2bf8162345..58d238a0c2 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js.html index 51a180f567..0039dcedac 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js.html index b52839671a..e94ed82970 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js.html index de7f31f1e6..02b1a287f5 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js.html index b66cb80fe0..dd94f8478f 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -814,7 +812,7 @@ } if (lightsState.reflectionMaps.length > 0) { - src.push(" vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);"); + src.push(" vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);"); src.push(" reflectVec = inverseTransformDirection(reflectVec, viewMatrix);"); src.push(" float blinnExpFromRoughness = GGXRoughnessToBlinnExponent(material.specularRoughness);"); src.push(" vec3 radiance = getLightProbeIndirectRadiance(reflectVec, blinnExpFromRoughness, 8);"); @@ -883,7 +881,7 @@ src.push("material.specularColor = mix(vec3(dielectricSpecular), diffuseColor, metallic);"); src.push("geometry.position = vViewPosition.xyz;"); - src.push("geometry.viewNormal = -vViewNormal;"); + src.push("geometry.viewNormal = -normalize(vViewNormal);"); src.push("geometry.viewEyeDir = normalize(vViewPosition.xyz);"); if (lightsState.lightMaps.length > 0) { diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js.html index d8e232838c..6585566461 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js.html index 798e057b8e..3184d5c814 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js.html index 81175f62bb..b6a2e1785c 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js.html index fc2e7beffe..85b0e44a74 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js.html index 05a1f19e9f..e1ea3a48b2 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js.html index f6150c21b7..2b4fb55bd8 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js.html index 9f192abe96..7bf1166941 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js.html index c7775cbb75..eef8b3993e 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js.html index b81cda7147..4749dac0f2 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js.html index 682438d2f8..b47a4f6318 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js.html index 2982fd8aa0..f3e5ef7505 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js.html index 0af2108915..5b59fb8166 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js.html index ce7a06c1e7..b0271095d9 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js.html index 02cb97d659..91ac78e0ca 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -591,7 +589,7 @@ src.push("vec4 modelNormal = vec4(octDecode(normal.xy), 0.0); "); src.push("vec4 worldNormal = worldNormalMatrix * vec4(dot(modelNormal, modelNormalMatrixCol0), dot(modelNormal, modelNormalMatrixCol1), dot(modelNormal, modelNormalMatrixCol2), 0.0);"); - src.push("vec3 viewNormal = normalize(vec4(viewNormalMatrix * worldNormal).xyz);"); + src.push("vec3 viewNormal = vec4(viewNormalMatrix * worldNormal).xyz;"); src.push("vec4 clipPos = projMatrix * viewPosition;"); if (scene.logarithmicDepthBufferEnabled) { @@ -863,7 +861,7 @@ } if (lightsState.reflectionMaps.length > 0) { - src.push(" vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);"); + src.push(" vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);"); src.push(" reflectVec = inverseTransformDirection(reflectVec, viewMatrix);"); src.push(" float blinnExpFromRoughness = GGXRoughnessToBlinnExponent(material.specularRoughness);"); src.push(" vec3 radiance = getLightProbeIndirectRadiance(reflectVec, blinnExpFromRoughness, 8);"); @@ -932,7 +930,7 @@ src.push("material.specularColor = mix(vec3(dielectricSpecular), diffuseColor, metallic);"); src.push("geometry.position = vViewPosition.xyz;"); - src.push("geometry.viewNormal = -vViewNormal;"); + src.push("geometry.viewNormal = -normalize(vViewNormal);"); src.push("geometry.viewEyeDir = normalize(vViewPosition.xyz);"); if (lightsState.lightMaps.length > 0) { src.push("geometry.worldNormal = normalize(vWorldNormal);"); diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js.html index 532125cfcd..8803af01f5 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js.html index 2e1f455f71..b5c8525d43 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js.html index 4c5de97eb9..2ec8c2ba9a 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js.html index 364027066f..66f88bd9f4 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js.html index 9f50a2c970..23f95fb923 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js.html index f160da014e..85374d3b67 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js.html index 9e3a5bc53e..331c37cd92 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js.html index ef0e416e43..0dc7e3b013 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js.html index 129d358db6..35c7fc7112 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js.html index b711c29050..558a800460 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js.html b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js.html index 2b2f358bbb..6109e71cd7 100644 --- a/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js.html +++ b/docs/file/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/camera/Camera.js.html b/docs/file/src/viewer/scene/camera/Camera.js.html index 141bd6be30..7b97357915 100644 --- a/docs/file/src/viewer/scene/camera/Camera.js.html +++ b/docs/file/src/viewer/scene/camera/Camera.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/camera/CameraFlightAnimation.js.html b/docs/file/src/viewer/scene/camera/CameraFlightAnimation.js.html index 7c5965169c..9d0565ab91 100644 --- a/docs/file/src/viewer/scene/camera/CameraFlightAnimation.js.html +++ b/docs/file/src/viewer/scene/camera/CameraFlightAnimation.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/camera/CameraPath.js.html b/docs/file/src/viewer/scene/camera/CameraPath.js.html index de46699f45..55da7d92bf 100644 --- a/docs/file/src/viewer/scene/camera/CameraPath.js.html +++ b/docs/file/src/viewer/scene/camera/CameraPath.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/camera/CameraPathAnimation.js.html b/docs/file/src/viewer/scene/camera/CameraPathAnimation.js.html index a3f95937bf..8f036aaf75 100644 --- a/docs/file/src/viewer/scene/camera/CameraPathAnimation.js.html +++ b/docs/file/src/viewer/scene/camera/CameraPathAnimation.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/camera/CustomProjection.js.html b/docs/file/src/viewer/scene/camera/CustomProjection.js.html index 0e00a54076..0127f5d069 100644 --- a/docs/file/src/viewer/scene/camera/CustomProjection.js.html +++ b/docs/file/src/viewer/scene/camera/CustomProjection.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/camera/Frustum.js.html b/docs/file/src/viewer/scene/camera/Frustum.js.html index 718a49f93a..49730561cd 100644 --- a/docs/file/src/viewer/scene/camera/Frustum.js.html +++ b/docs/file/src/viewer/scene/camera/Frustum.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/camera/Ortho.js.html b/docs/file/src/viewer/scene/camera/Ortho.js.html index df503dff7a..f15d4a02d7 100644 --- a/docs/file/src/viewer/scene/camera/Ortho.js.html +++ b/docs/file/src/viewer/scene/camera/Ortho.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/camera/Perspective.js.html b/docs/file/src/viewer/scene/camera/Perspective.js.html index 48cc657b91..4a2c7e710e 100644 --- a/docs/file/src/viewer/scene/camera/Perspective.js.html +++ b/docs/file/src/viewer/scene/camera/Perspective.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/canvas/Canvas.js.html b/docs/file/src/viewer/scene/canvas/Canvas.js.html index 5f4977606c..b3e92e52c7 100644 --- a/docs/file/src/viewer/scene/canvas/Canvas.js.html +++ b/docs/file/src/viewer/scene/canvas/Canvas.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/canvas/Spinner.js.html b/docs/file/src/viewer/scene/canvas/Spinner.js.html index f570952386..33185de438 100644 --- a/docs/file/src/viewer/scene/canvas/Spinner.js.html +++ b/docs/file/src/viewer/scene/canvas/Spinner.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/core.js.html b/docs/file/src/viewer/scene/core.js.html index 4aad4dee4c..52117c450c 100644 --- a/docs/file/src/viewer/scene/core.js.html +++ b/docs/file/src/viewer/scene/core.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/geometry/Geometry.js.html b/docs/file/src/viewer/scene/geometry/Geometry.js.html index a551060ab2..f9d8f7b5ab 100644 --- a/docs/file/src/viewer/scene/geometry/Geometry.js.html +++ b/docs/file/src/viewer/scene/geometry/Geometry.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/geometry/ReadableGeometry.js.html b/docs/file/src/viewer/scene/geometry/ReadableGeometry.js.html index 72ad71edb0..c404d4798b 100644 --- a/docs/file/src/viewer/scene/geometry/ReadableGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/ReadableGeometry.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/geometry/VBOGeometry.js.html b/docs/file/src/viewer/scene/geometry/VBOGeometry.js.html index 2094c180c5..6598bab03b 100644 --- a/docs/file/src/viewer/scene/geometry/VBOGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/VBOGeometry.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 0dee812a16..fbea7ddaf5 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildBoxGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildBoxGeometry.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 28158c4d7e..b10b8648c5 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 20ea679d56..a9aed300ee 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildCylinderGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildCylinderGeometry.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 56b5b3ac67..86b14d25d4 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildGridGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildGridGeometry.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 ee68ddd089..632db0f56b 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildPlaneGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildPlaneGeometry.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 2fbe3c1bbe..b2e6b358e3 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildSphereGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildSphereGeometry.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 7f3595da10..16784f29bb 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildTorusGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildTorusGeometry.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 b6c9ff58ef..1f632ba6fd 100644 --- a/docs/file/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 e933c5fcee..2c4b05ca67 100644 --- a/docs/file/src/viewer/scene/geometry/loaders/load3DSGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/loaders/load3DSGeometry.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 066eb79ba5..d283bfad96 100644 --- a/docs/file/src/viewer/scene/geometry/loaders/loadOBJGeometry.js.html +++ b/docs/file/src/viewer/scene/geometry/loaders/loadOBJGeometry.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/input/Input.js.html b/docs/file/src/viewer/scene/input/Input.js.html index 2d96d49535..119c1fdbe9 100644 --- a/docs/file/src/viewer/scene/input/Input.js.html +++ b/docs/file/src/viewer/scene/input/Input.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/libs/canvas2image.js.html b/docs/file/src/viewer/scene/libs/canvas2image.js.html index de339b442c..28d2b09cca 100644 --- a/docs/file/src/viewer/scene/libs/canvas2image.js.html +++ b/docs/file/src/viewer/scene/libs/canvas2image.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/libs/k3d.js.html b/docs/file/src/viewer/scene/libs/k3d.js.html index bf6ecaf5a4..3076136c5a 100644 --- a/docs/file/src/viewer/scene/libs/k3d.js.html +++ b/docs/file/src/viewer/scene/libs/k3d.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/lights/AmbientLight.js.html b/docs/file/src/viewer/scene/lights/AmbientLight.js.html index 0f847c7474..67dfb16442 100644 --- a/docs/file/src/viewer/scene/lights/AmbientLight.js.html +++ b/docs/file/src/viewer/scene/lights/AmbientLight.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/lights/CubeTexture.js.html b/docs/file/src/viewer/scene/lights/CubeTexture.js.html index b07f61974b..39bc9c4e13 100644 --- a/docs/file/src/viewer/scene/lights/CubeTexture.js.html +++ b/docs/file/src/viewer/scene/lights/CubeTexture.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/lights/DirLight.js.html b/docs/file/src/viewer/scene/lights/DirLight.js.html index 47928d459e..8135aed71a 100644 --- a/docs/file/src/viewer/scene/lights/DirLight.js.html +++ b/docs/file/src/viewer/scene/lights/DirLight.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/lights/Light.js.html b/docs/file/src/viewer/scene/lights/Light.js.html index 873eff5b87..db23064bcb 100644 --- a/docs/file/src/viewer/scene/lights/Light.js.html +++ b/docs/file/src/viewer/scene/lights/Light.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/lights/LightMap.js.html b/docs/file/src/viewer/scene/lights/LightMap.js.html index 267fc79408..9295aa38b9 100644 --- a/docs/file/src/viewer/scene/lights/LightMap.js.html +++ b/docs/file/src/viewer/scene/lights/LightMap.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/lights/PointLight.js.html b/docs/file/src/viewer/scene/lights/PointLight.js.html index 0b9619027a..6d113b767b 100644 --- a/docs/file/src/viewer/scene/lights/PointLight.js.html +++ b/docs/file/src/viewer/scene/lights/PointLight.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/lights/ReflectionMap.js.html b/docs/file/src/viewer/scene/lights/ReflectionMap.js.html index 155f7c37ad..b2252357c1 100644 --- a/docs/file/src/viewer/scene/lights/ReflectionMap.js.html +++ b/docs/file/src/viewer/scene/lights/ReflectionMap.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/lights/Shadow.js.html b/docs/file/src/viewer/scene/lights/Shadow.js.html index 0a8e3e259e..679af2d07a 100644 --- a/docs/file/src/viewer/scene/lights/Shadow.js.html +++ b/docs/file/src/viewer/scene/lights/Shadow.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/logDepthBuf/LogDepthBuf.js.html b/docs/file/src/viewer/scene/logDepthBuf/LogDepthBuf.js.html index ab227f1036..46ce57db20 100644 --- a/docs/file/src/viewer/scene/logDepthBuf/LogDepthBuf.js.html +++ b/docs/file/src/viewer/scene/logDepthBuf/LogDepthBuf.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/marker/Marker.js.html b/docs/file/src/viewer/scene/marker/Marker.js.html index aa9373cbdf..80cf1ed35c 100644 --- a/docs/file/src/viewer/scene/marker/Marker.js.html +++ b/docs/file/src/viewer/scene/marker/Marker.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/materials/EdgeMaterial.js.html b/docs/file/src/viewer/scene/materials/EdgeMaterial.js.html index 21b452765b..492f8a30b0 100644 --- a/docs/file/src/viewer/scene/materials/EdgeMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/EdgeMaterial.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/materials/EmphasisMaterial.js.html b/docs/file/src/viewer/scene/materials/EmphasisMaterial.js.html index c6e9e18f30..c12d7ca791 100644 --- a/docs/file/src/viewer/scene/materials/EmphasisMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/EmphasisMaterial.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/materials/Fresnel.js.html b/docs/file/src/viewer/scene/materials/Fresnel.js.html index 4a7ac50d93..6cd64865cc 100644 --- a/docs/file/src/viewer/scene/materials/Fresnel.js.html +++ b/docs/file/src/viewer/scene/materials/Fresnel.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/materials/LambertMaterial.js.html b/docs/file/src/viewer/scene/materials/LambertMaterial.js.html index c977ccfd11..8b6751172a 100644 --- a/docs/file/src/viewer/scene/materials/LambertMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/LambertMaterial.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/materials/LinesMaterial.js.html b/docs/file/src/viewer/scene/materials/LinesMaterial.js.html index 2c23a81025..515d4714de 100644 --- a/docs/file/src/viewer/scene/materials/LinesMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/LinesMaterial.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/materials/Material.js.html b/docs/file/src/viewer/scene/materials/Material.js.html index 2096ae2144..bcd3a1a1e2 100644 --- a/docs/file/src/viewer/scene/materials/Material.js.html +++ b/docs/file/src/viewer/scene/materials/Material.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/materials/MetallicMaterial.js.html b/docs/file/src/viewer/scene/materials/MetallicMaterial.js.html index b9356cc4da..ae224b3d8e 100644 --- a/docs/file/src/viewer/scene/materials/MetallicMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/MetallicMaterial.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/materials/PhongMaterial.js.html b/docs/file/src/viewer/scene/materials/PhongMaterial.js.html index 2ba00b71d7..4bdecbb186 100644 --- a/docs/file/src/viewer/scene/materials/PhongMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/PhongMaterial.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/materials/PointsMaterial.js.html b/docs/file/src/viewer/scene/materials/PointsMaterial.js.html index 94a50648f1..b6792c25a9 100644 --- a/docs/file/src/viewer/scene/materials/PointsMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/PointsMaterial.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/materials/SpecularMaterial.js.html b/docs/file/src/viewer/scene/materials/SpecularMaterial.js.html index a7cc5dbd87..3b5e0bfdec 100644 --- a/docs/file/src/viewer/scene/materials/SpecularMaterial.js.html +++ b/docs/file/src/viewer/scene/materials/SpecularMaterial.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/materials/Texture.js.html b/docs/file/src/viewer/scene/materials/Texture.js.html index 4b4125fb36..5f174ca769 100644 --- a/docs/file/src/viewer/scene/materials/Texture.js.html +++ b/docs/file/src/viewer/scene/materials/Texture.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/math/Frustum.js.html b/docs/file/src/viewer/scene/math/Frustum.js.html index 288abaef5c..b1540bf593 100644 --- a/docs/file/src/viewer/scene/math/Frustum.js.html +++ b/docs/file/src/viewer/scene/math/Frustum.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/math/buildEdgeIndices.js.html b/docs/file/src/viewer/scene/math/buildEdgeIndices.js.html index 5743e10f12..c9875159c1 100644 --- a/docs/file/src/viewer/scene/math/buildEdgeIndices.js.html +++ b/docs/file/src/viewer/scene/math/buildEdgeIndices.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/math/geometryCompressionUtils.js.html b/docs/file/src/viewer/scene/math/geometryCompressionUtils.js.html index ed81489b2a..067d8eefec 100644 --- a/docs/file/src/viewer/scene/math/geometryCompressionUtils.js.html +++ b/docs/file/src/viewer/scene/math/geometryCompressionUtils.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/math/math.js.html b/docs/file/src/viewer/scene/math/math.js.html index 0b7501c953..34a55b2983 100644 --- a/docs/file/src/viewer/scene/math/math.js.html +++ b/docs/file/src/viewer/scene/math/math.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/math/rtcCoords.js.html b/docs/file/src/viewer/scene/math/rtcCoords.js.html index e008a43b61..4e3cf569ff 100644 --- a/docs/file/src/viewer/scene/math/rtcCoords.js.html +++ b/docs/file/src/viewer/scene/math/rtcCoords.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/mementos/CameraMemento.js.html b/docs/file/src/viewer/scene/mementos/CameraMemento.js.html index e8dd8740e5..4a8d9f02f4 100644 --- a/docs/file/src/viewer/scene/mementos/CameraMemento.js.html +++ b/docs/file/src/viewer/scene/mementos/CameraMemento.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/mementos/ModelMemento.js.html b/docs/file/src/viewer/scene/mementos/ModelMemento.js.html index d2129f9a7e..6632f20acb 100644 --- a/docs/file/src/viewer/scene/mementos/ModelMemento.js.html +++ b/docs/file/src/viewer/scene/mementos/ModelMemento.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/mementos/ObjectsMemento.js.html b/docs/file/src/viewer/scene/mementos/ObjectsMemento.js.html index c819618e82..aa21617352 100644 --- a/docs/file/src/viewer/scene/mementos/ObjectsMemento.js.html +++ b/docs/file/src/viewer/scene/mementos/ObjectsMemento.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/mesh/Mesh.js.html b/docs/file/src/viewer/scene/mesh/Mesh.js.html index 5be437ab08..8c0136676a 100644 --- a/docs/file/src/viewer/scene/mesh/Mesh.js.html +++ b/docs/file/src/viewer/scene/mesh/Mesh.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 8eaf6b5d59..a0736af6e9 100644 --- a/docs/file/src/viewer/scene/mesh/draw/DrawRenderer.js.html +++ b/docs/file/src/viewer/scene/mesh/draw/DrawRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 cae293fb1b..422b7301cc 100644 --- a/docs/file/src/viewer/scene/mesh/draw/DrawShaderSource.js.html +++ b/docs/file/src/viewer/scene/mesh/draw/DrawShaderSource.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 bddb678e4f..15a5bd9adf 100644 --- a/docs/file/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js.html +++ b/docs/file/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 1e3ed79252..7251a5fa60 100644 --- a/docs/file/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js.html +++ b/docs/file/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 63983973db..a30b8cc364 100644 --- a/docs/file/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js.html +++ b/docs/file/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 4290d2b56d..051f8e171b 100644 --- a/docs/file/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js.html +++ b/docs/file/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 3131a0671d..a00fc4d156 100644 --- a/docs/file/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js.html +++ b/docs/file/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 5a22aff9aa..7f9542640c 100644 --- a/docs/file/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js.html +++ b/docs/file/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 34129da17b..c435bac8fd 100644 --- a/docs/file/src/viewer/scene/mesh/pick/PickMeshRenderer.js.html +++ b/docs/file/src/viewer/scene/mesh/pick/PickMeshRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 d7ccc0f365..9390dd521a 100644 --- a/docs/file/src/viewer/scene/mesh/pick/PickMeshShaderSource.js.html +++ b/docs/file/src/viewer/scene/mesh/pick/PickMeshShaderSource.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 744f04047f..637e8e3983 100644 --- a/docs/file/src/viewer/scene/mesh/pick/PickTriangleRenderer.js.html +++ b/docs/file/src/viewer/scene/mesh/pick/PickTriangleRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 b28c77f456..fd690eaf3f 100644 --- a/docs/file/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js.html +++ b/docs/file/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 23d4f393b8..3dca0622eb 100644 --- a/docs/file/src/viewer/scene/mesh/shadow/ShadowRenderer.js.html +++ b/docs/file/src/viewer/scene/mesh/shadow/ShadowRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 6e7ee17e6c..2378d8fcca 100644 --- a/docs/file/src/viewer/scene/mesh/shadow/ShadowShaderSource.js.html +++ b/docs/file/src/viewer/scene/mesh/shadow/ShadowShaderSource.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/metriqs/Metriqs.js.html b/docs/file/src/viewer/scene/metriqs/Metriqs.js.html index e5fe1cc5b1..4252223224 100644 --- a/docs/file/src/viewer/scene/metriqs/Metriqs.js.html +++ b/docs/file/src/viewer/scene/metriqs/Metriqs.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/nodes/Node.js.html b/docs/file/src/viewer/scene/nodes/Node.js.html index cc510538c6..cc95ce888f 100644 --- a/docs/file/src/viewer/scene/nodes/Node.js.html +++ b/docs/file/src/viewer/scene/nodes/Node.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/paths/CubicBezierCurve.js.html b/docs/file/src/viewer/scene/paths/CubicBezierCurve.js.html index 5fa262d3bd..a868af2e65 100644 --- a/docs/file/src/viewer/scene/paths/CubicBezierCurve.js.html +++ b/docs/file/src/viewer/scene/paths/CubicBezierCurve.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/paths/Curve.js.html b/docs/file/src/viewer/scene/paths/Curve.js.html index a07df76ca8..b5f53cde3f 100644 --- a/docs/file/src/viewer/scene/paths/Curve.js.html +++ b/docs/file/src/viewer/scene/paths/Curve.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/paths/Path.js.html b/docs/file/src/viewer/scene/paths/Path.js.html index ad28814ff1..72e9e7e17a 100644 --- a/docs/file/src/viewer/scene/paths/Path.js.html +++ b/docs/file/src/viewer/scene/paths/Path.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/paths/QuadraticBezierCurve.js.html b/docs/file/src/viewer/scene/paths/QuadraticBezierCurve.js.html index 922e379478..885ea47585 100644 --- a/docs/file/src/viewer/scene/paths/QuadraticBezierCurve.js.html +++ b/docs/file/src/viewer/scene/paths/QuadraticBezierCurve.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/paths/SplineCurve.js.html b/docs/file/src/viewer/scene/paths/SplineCurve.js.html index 23b827acb1..1e05ac879d 100644 --- a/docs/file/src/viewer/scene/paths/SplineCurve.js.html +++ b/docs/file/src/viewer/scene/paths/SplineCurve.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/postfx/SAO.js.html b/docs/file/src/viewer/scene/postfx/SAO.js.html index 60c067e3c1..1bfe7ce8a3 100644 --- a/docs/file/src/viewer/scene/postfx/SAO.js.html +++ b/docs/file/src/viewer/scene/postfx/SAO.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -220,7 +218,7 @@ * } * * sao.enabled = true; // Enable SAO - only works if supported (see above) - * sao.intensity = 0.20; + * sao.intensity = 0.15; * sao.bias = 0.5; * sao.scale = 1.0; * sao.minResolution = 0.0; @@ -466,13 +464,13 @@ /** * Sets the degree of darkening (ambient obscurance) produced by the SAO effect. * - * Default value is ````0.20````. + * Default value is ````0.15````. * * @type {Number} */ set intensity(value) { if (value === undefined || value === null) { - value = 0.20; + value = 0.15; } if (this._intensity === value) { return; @@ -484,7 +482,7 @@ /** * Gets the degree of darkening (ambient obscurance) produced by the SAO effect. * - * Default value is ````0.25````. + * Default value is ````0.15````. * * @type {Number} */ diff --git a/docs/file/src/viewer/scene/scene/Scene.js.html b/docs/file/src/viewer/scene/scene/Scene.js.html index 7b109be080..4d92a5ea76 100644 --- a/docs/file/src/viewer/scene/scene/Scene.js.html +++ b/docs/file/src/viewer/scene/scene/Scene.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/sectionPlane/SectionPlane.js.html b/docs/file/src/viewer/scene/sectionPlane/SectionPlane.js.html index 2cd9866891..2cc158299b 100644 --- a/docs/file/src/viewer/scene/sectionPlane/SectionPlane.js.html +++ b/docs/file/src/viewer/scene/sectionPlane/SectionPlane.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/skybox/Skybox.js.html b/docs/file/src/viewer/scene/skybox/Skybox.js.html index df6e0e9f18..5c08b8bdc1 100644 --- a/docs/file/src/viewer/scene/skybox/Skybox.js.html +++ b/docs/file/src/viewer/scene/skybox/Skybox.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/stats.js.html b/docs/file/src/viewer/scene/stats.js.html index acfb211403..5944bb63bb 100644 --- a/docs/file/src/viewer/scene/stats.js.html +++ b/docs/file/src/viewer/scene/stats.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/utils.js.html b/docs/file/src/viewer/scene/utils.js.html index 2c716cbcbc..d1c709cb91 100644 --- a/docs/file/src/viewer/scene/utils.js.html +++ b/docs/file/src/viewer/scene/utils.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/utils/Map.js.html b/docs/file/src/viewer/scene/utils/Map.js.html index e3ef5a9a50..d5d5ca5830 100644 --- a/docs/file/src/viewer/scene/utils/Map.js.html +++ b/docs/file/src/viewer/scene/utils/Map.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/utils/Queue.js.html b/docs/file/src/viewer/scene/utils/Queue.js.html index b094a549d9..396c9a55ed 100644 --- a/docs/file/src/viewer/scene/utils/Queue.js.html +++ b/docs/file/src/viewer/scene/utils/Queue.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/viewport/Viewport.js.html b/docs/file/src/viewer/scene/viewport/Viewport.js.html index 46ba5f47f4..f31ac8be0b 100644 --- a/docs/file/src/viewer/scene/viewport/Viewport.js.html +++ b/docs/file/src/viewer/scene/viewport/Viewport.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/ArrayBuf.js.html b/docs/file/src/viewer/scene/webgl/ArrayBuf.js.html index b76d181e2a..50c9aff040 100644 --- a/docs/file/src/viewer/scene/webgl/ArrayBuf.js.html +++ b/docs/file/src/viewer/scene/webgl/ArrayBuf.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/Attribute.js.html b/docs/file/src/viewer/scene/webgl/Attribute.js.html index 3ce404d616..f1aac0b13d 100644 --- a/docs/file/src/viewer/scene/webgl/Attribute.js.html +++ b/docs/file/src/viewer/scene/webgl/Attribute.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/Drawable.js.html b/docs/file/src/viewer/scene/webgl/Drawable.js.html index f0dfb0b9c4..4546300bdd 100644 --- a/docs/file/src/viewer/scene/webgl/Drawable.js.html +++ b/docs/file/src/viewer/scene/webgl/Drawable.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/FrameContext.js.html b/docs/file/src/viewer/scene/webgl/FrameContext.js.html index 7b40411614..80d8985157 100644 --- a/docs/file/src/viewer/scene/webgl/FrameContext.js.html +++ b/docs/file/src/viewer/scene/webgl/FrameContext.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/PickResult.js.html b/docs/file/src/viewer/scene/webgl/PickResult.js.html index 3de373a141..e68071f2f9 100644 --- a/docs/file/src/viewer/scene/webgl/PickResult.js.html +++ b/docs/file/src/viewer/scene/webgl/PickResult.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/Pickable.js.html b/docs/file/src/viewer/scene/webgl/Pickable.js.html index f52b8c11cb..83628a1dcc 100644 --- a/docs/file/src/viewer/scene/webgl/Pickable.js.html +++ b/docs/file/src/viewer/scene/webgl/Pickable.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/Program.js.html b/docs/file/src/viewer/scene/webgl/Program.js.html index 1f83ac9598..8fc3c1335b 100644 --- a/docs/file/src/viewer/scene/webgl/Program.js.html +++ b/docs/file/src/viewer/scene/webgl/Program.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/RenderBuffer.js.html b/docs/file/src/viewer/scene/webgl/RenderBuffer.js.html index 89f486eb57..2cfed131ea 100644 --- a/docs/file/src/viewer/scene/webgl/RenderBuffer.js.html +++ b/docs/file/src/viewer/scene/webgl/RenderBuffer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/RenderFlags.js.html b/docs/file/src/viewer/scene/webgl/RenderFlags.js.html index eb6e9af761..57c9eb0c4c 100644 --- a/docs/file/src/viewer/scene/webgl/RenderFlags.js.html +++ b/docs/file/src/viewer/scene/webgl/RenderFlags.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/RenderState.js.html b/docs/file/src/viewer/scene/webgl/RenderState.js.html index d02b976e7d..348bd5d480 100644 --- a/docs/file/src/viewer/scene/webgl/RenderState.js.html +++ b/docs/file/src/viewer/scene/webgl/RenderState.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/Renderer.js.html b/docs/file/src/viewer/scene/webgl/Renderer.js.html index 0388daf1ce..efebb05ede 100644 --- a/docs/file/src/viewer/scene/webgl/Renderer.js.html +++ b/docs/file/src/viewer/scene/webgl/Renderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/Sampler.js.html b/docs/file/src/viewer/scene/webgl/Sampler.js.html index 101864e78e..d6d8b03503 100644 --- a/docs/file/src/viewer/scene/webgl/Sampler.js.html +++ b/docs/file/src/viewer/scene/webgl/Sampler.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/Shader.js.html b/docs/file/src/viewer/scene/webgl/Shader.js.html index f533aacbbc..d6e062a8ea 100644 --- a/docs/file/src/viewer/scene/webgl/Shader.js.html +++ b/docs/file/src/viewer/scene/webgl/Shader.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/Texture2D.js.html b/docs/file/src/viewer/scene/webgl/Texture2D.js.html index 7fd19f5921..f64f0b6b2b 100644 --- a/docs/file/src/viewer/scene/webgl/Texture2D.js.html +++ b/docs/file/src/viewer/scene/webgl/Texture2D.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 b016cae9da..6ab874d542 100644 --- a/docs/file/src/viewer/scene/webgl/occlusion/OcclusionLayer.js.html +++ b/docs/file/src/viewer/scene/webgl/occlusion/OcclusionLayer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 e7c150e3fd..c9033a996a 100644 --- a/docs/file/src/viewer/scene/webgl/occlusion/OcclusionTester.js.html +++ b/docs/file/src/viewer/scene/webgl/occlusion/OcclusionTester.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 6627822992..9a3fcfdd2c 100644 --- a/docs/file/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js.html +++ b/docs/file/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • 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 b597ccd6b3..61058fb689 100644 --- a/docs/file/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js.html +++ b/docs/file/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webgl/webglEnums.js.html b/docs/file/src/viewer/scene/webgl/webglEnums.js.html index 5638feb647..5761baebff 100644 --- a/docs/file/src/viewer/scene/webgl/webglEnums.js.html +++ b/docs/file/src/viewer/scene/webgl/webglEnums.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/file/src/viewer/scene/webglInfo.js.html b/docs/file/src/viewer/scene/webglInfo.js.html index e025eb7a3a..2609bed46c 100644 --- a/docs/file/src/viewer/scene/webglInfo.js.html +++ b/docs/file/src/viewer/scene/webglInfo.js.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/function/index.html b/docs/function/index.html index fc879d47fa..0944f8720d 100644 --- a/docs/function/index.html +++ b/docs/function/index.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/identifiers.html b/docs/identifiers.html index 28ec7f5f68..c6ee82e3f8 100644 --- a/docs/identifiers.html +++ b/docs/identifiers.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -647,73 +645,6 @@

    plugins/GLTFLoaderPlugin - - - - -

    -

    -
    -

    plugins/GroundShadowPlugin

    -
    - - - - - - - - - - - - @@ -4548,7 +4479,6 @@

    viewer/scene/webgl/occl - diff --git a/docs/index.html b/docs/index.html index bdc2a135ff..29011df682 100644 --- a/docs/index.html +++ b/docs/index.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/docs/index.json b/docs/index.json index ad6b0260c5..6f39fcf308 100644 --- a/docs/index.json +++ b/docs/index.json @@ -7875,7 +7875,7 @@ "__docId__": 507, "kind": "file", "name": "src/plugins/FastNavPlugin/FastNavPlugin.js", - "content": "import {Plugin} from \"../../viewer/Plugin.js\";\n\n/**\n * {@link Viewer} plugin that improves interactivity by disabling expensive rendering effects while the {@link Camera} is moving.\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 * This viewer will only render the model with enhanced edges, physically-based rendering (PBR) and scalable\n * ambient obscurance (SAO) when the camera is not moving.\n *\n * Note how we enable SAO and PBR on the ````Scene```` and the model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#performance_FastNavPlugin)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {FastNavPlugin} from \"../src/plugins/FastNavPlugin/FastNavPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true,\n * pbrEnabled: true,\n * saoEnabled: true\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 * new FastNavPlugin(viewer, {});\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/HolterTower/HolterTower.xkt\",\n * metaModelSrc: \"./metaModels/HolterTower/HolterTower.json\",\n * edges: true,\n * saoEnabled: true,\n * pbrEnabled: true\n * });\n * ````\n *\n * @class FastNavPlugin\n */\nclass FastNavPlugin extends Plugin {\n\n constructor(viewer) {\n\n super(\"FastNav\", viewer);\n\n this._pInterval = null;\n this._fadeMillisecs = 500;\n\n let timeoutDuration = 600; // Milliseconds\n let timer = timeoutDuration;\n let fastMode = false;\n\n this._onCameraMatrix = viewer.scene.camera.on(\"matrix\", () => {\n timer = timeoutDuration;\n if (!fastMode) {\n this._cancelFade();\n viewer.scene.pbrEnabled = false;\n viewer.scene.sao.enabled = false;\n viewer.scene.edgeMaterial.edges = false;\n fastMode = true;\n }\n });\n\n this._onSceneTick = viewer.scene.on(\"tick\", (tickEvent) => { // Milliseconds\n if (!fastMode) {\n return;\n }\n timer -= tickEvent.deltaTime;\n if (timer <= 0) {\n if (fastMode) {\n this._startFade();\n viewer.scene.pbrEnabled = true;\n viewer.scene.sao.enabled = true;\n viewer.scene.edgeMaterial.edges = true;\n fastMode = false;\n }\n }\n });\n\n this._onSceneObjectVisibility = viewer.scene.on(\"objectVisibility\", () => {\n timer = timeoutDuration;\n if (!fastMode) {\n this._cancelFade();\n viewer.scene.pbrEnabled = false;\n viewer.scene.sao.enabled = false;\n viewer.scene.edgeMaterial.edges = false;\n fastMode = true;\n }\n });\n\n let down = false;\n\n this._onSceneMouseDown = viewer.scene.input.on(\"mousedown\", () => {\n timer = timeoutDuration;\n if (!fastMode) {\n this._cancelFade();\n viewer.scene.pbrEnabled = false;\n viewer.scene.sao.enabled = false;\n viewer.scene.edgeMaterial.edges = false;\n fastMode = true;\n }\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 timer = timeoutDuration;\n if (!fastMode) {\n this._cancelFade();\n viewer.scene.pbrEnabled = false;\n viewer.scene.sao.enabled = false;\n viewer.scene.edgeMaterial.edges = false;\n fastMode = true;\n }\n });\n }\n\n _startFade() {\n\n if (!this._img) {\n this._initFade();\n }\n\n const interval = 50;\n const inc = 1 / (this._fadeMillisecs / interval);\n\n if (this._pInterval) {\n clearInterval(this._pInterval);\n this._pInterval = null;\n }\n\n const canvas = this.viewer.scene.canvas.canvas;\n const canvasOffset = cumulativeOffset(canvas);\n //const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;\n\n this._img.style.position = \"absolute\";\n this._img.style[\"z-index\"] = 5;\n this._img.style[\"background\"] = canvas.style.background;\n this._img.style.left = canvasOffset.left + \"px\";\n this._img.style.top = canvasOffset.top + \"px\";\n this._img.style.width = canvas.width + \"px\";\n this._img.style.height = canvas.height + \"px\";\n this._img.style.opacity = 1;\n this._img.width = canvas.width;\n this._img.height = canvas.height;\n this._img.src = this.viewer.getSnapshot({\n format: \"png\",\n includeGizmos: true\n });\n this._img.style.visibility = \"visible\";\n\n let opacity = 1;\n this._pInterval = setInterval(() => {\n opacity -= inc;\n if (opacity > 0) {\n this._img.style.opacity = opacity;\n } else {\n this._img.style.opacity = 0;\n this._img.style.visibility = \"hidden\";\n clearInterval(this._pInterval);\n this._pInterval = null;\n }\n }, interval);\n }\n\n _initFade() {\n this._img = document.createElement('img');\n const canvas = this.viewer.scene.canvas.canvas;\n const canvasOffset = cumulativeOffset(canvas);\n const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;\n this._img.style.position = \"absolute\";\n this._img.style.visibility = \"hidden\";\n this._img.style[\"pointer-events\"] = \"none\";\n this._img.style[\"z-index\"] = 5;\n this._img.style.left = canvasOffset.left + \"px\";\n this._img.style.top = canvasOffset.top + \"px\";\n this._img.style.width = canvas.width + \"px\";\n this._img.style.height = canvas.height + \"px\";\n this._img.style.opacity = 1;\n this._img.width = canvas.width;\n this._img.height = canvas.height;\n this._img.left = canvasOffset.left;\n this._img.top = canvasOffset.top;\n canvas.parentNode.insertBefore(this._img, canvas.nextSibling);\n }\n\n _cancelFade() {\n if (!this._img) {\n return;\n }\n if (this._pInterval) {\n clearInterval(this._pInterval);\n this._pInterval = null;\n }\n this._img.style.opacity = 0;\n this._img.style.visibility = \"hidden\";\n }\n\n /**\n * @private\n */\n send(name, value) {\n switch (name) {\n case \"clear\":\n this._cancelFade();\n break;\n }\n }\n\n /**\n * Destroys this plugin.\n */\n destroy() {\n this._cancelFade();\n this.viewer.scene.camera.off(this._onCameraMatrix);\n this.viewer.scene.off(this._onSceneTick);\n this.viewer.scene.off(this._onSceneObjectVisibility);\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 super.destroy();\n this._img.parentNode.removeChild(this._img);\n this._img = null;\n }\n}\n\nfunction cumulativeOffset(element) {\n let top = 0, left = 0;\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while (element);\n\n return {\n top: top,\n left: left\n };\n}\n\nexport {FastNavPlugin}\n", + "content": "import {Plugin} from \"../../viewer/Plugin.js\";\n\n/**\n * {@link Viewer} plugin that improves interactivity by disabling expensive rendering effects while the {@link Camera} is moving.\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 * This viewer will only render the model with enhanced edges, physically-based rendering (PBR) and scalable\n * ambient obscurance (SAO) when the camera is not moving.\n *\n * Note how we enable SAO and PBR on the ````Scene```` and the model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#performance_FastNavPlugin)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {FastNavPlugin} from \"../src/plugins/FastNavPlugin/FastNavPlugin.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true,\n * pbrEnabled: true,\n * saoEnabled: true\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 * new FastNavPlugin(viewer, {\n * pbrEnabled: true,\n * saoEnabled: true,\n * edgesEnabled: true\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/HolterTower/HolterTower.xkt\",\n * metaModelSrc: \"./metaModels/HolterTower/HolterTower.json\",\n * edges: true,\n * saoEnabled: true,\n * pbrEnabled: true\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.pbrEnabled] Whether to enable physically-based rendering (PBR) when the camera stops moving. When not specified, PBR will be enabled if it's currently enabled for the Viewer (see {@link Viewer#pbrEnabled}).\n * @param {Boolean} [cfg.saoEnabled] Whether to enable scalable ambient occlusion (SAO) when the camera stops moving. When not specified, SAO will be enabled if it's currently enabled for the Viewer (see {@link Scene#pbrEnabled}).\n * @param {Boolean} [cfg.edgesEnabled] Whether to show enhanced edges when the camera stops moving. When not specified, edges will be enabled if they're currently enabled for the Viewer (see {@link EdgeMaterial#edges}).\n */\n constructor(viewer, cfg = {}) {\n\n super(\"FastNav\", viewer);\n\n this._pbrEnabled = (cfg.pbrEnabled !== undefined && cfg.pbrEnabled !== null) ? cfg.pbrEnabled : viewer.scene.pbrEnabled;\n this._saoEnabled = (cfg.saoEnabled !== undefined && cfg.saoEnabled !== null) ? cfg.saoEnabled : viewer.scene.sao.enabled;\n this._edgesEnabled = (cfg.edgesEnabled !== undefined && cfg.edgesEnabled !== null) ? cfg.edgesEnabled : viewer.scene.edgeMaterial.edges;\n\n this._pInterval = null;\n this._fadeMillisecs = 500;\n\n let timeoutDuration = 600; // Milliseconds\n let timer = timeoutDuration;\n let fastMode = false;\n\n this._onCameraMatrix = viewer.scene.camera.on(\"matrix\", () => {\n timer = timeoutDuration;\n if (!fastMode) {\n this._cancelFade();\n viewer.scene.pbrEnabled = false;\n viewer.scene.sao.enabled = false;\n viewer.scene.edgeMaterial.edges = false;\n fastMode = true;\n }\n });\n\n this._onSceneTick = viewer.scene.on(\"tick\", (tickEvent) => { // Milliseconds\n if (!fastMode) {\n return;\n }\n timer -= tickEvent.deltaTime;\n if (timer <= 0) {\n if (fastMode) {\n this._startFade();\n this._pInterval2 = setTimeout(() => { // Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624\n viewer.scene.pbrEnabled = this._pbrEnabled;\n viewer.scene.sao.enabled = this._saoEnabled;\n viewer.scene.edgeMaterial.edges = this._edgesEnabled;\n }, 100);\n\n fastMode = false;\n }\n }\n });\n\n this._onSceneObjectVisibility = viewer.scene.on(\"objectVisibility\", () => {\n timer = timeoutDuration;\n if (!fastMode) {\n this._cancelFade();\n viewer.scene.pbrEnabled = false;\n viewer.scene.sao.enabled = false;\n viewer.scene.edgeMaterial.edges = false;\n fastMode = true;\n }\n });\n\n let down = false;\n\n this._onSceneMouseDown = viewer.scene.input.on(\"mousedown\", () => {\n timer = timeoutDuration;\n if (!fastMode) {\n this._cancelFade();\n viewer.scene.pbrEnabled = false;\n viewer.scene.sao.enabled = false;\n viewer.scene.edgeMaterial.edges = false;\n fastMode = true;\n }\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 timer = timeoutDuration;\n if (!fastMode) {\n this._cancelFade();\n viewer.scene.pbrEnabled = false;\n viewer.scene.sao.enabled = false;\n viewer.scene.edgeMaterial.edges = false;\n fastMode = true;\n }\n });\n }\n\n _startFade() {\n\n if (!this._img) {\n this._initFade();\n }\n\n const interval = 50;\n const inc = 1 / (this._fadeMillisecs / interval);\n\n if (this._pInterval) {\n clearInterval(this._pInterval);\n this._pInterval = null;\n }\n\n const viewer = this.viewer;\n\n const canvas = viewer.scene.canvas.canvas;\n const canvasOffset = cumulativeOffset(canvas);\n //const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;\n\n this._img.style.position = \"absolute\";\n this._img.style[\"z-index\"] = 5;\n this._img.style[\"background\"] = canvas.style.background;\n this._img.style.left = canvasOffset.left + \"px\";\n this._img.style.top = canvasOffset.top + \"px\";\n this._img.style.width = canvas.width + \"px\";\n this._img.style.height = canvas.height + \"px\";\n this._img.style.opacity = 1;\n this._img.width = canvas.width;\n this._img.height = canvas.height;\n this._img.src = \"\"; // Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624\n this._img.src = viewer.getSnapshot({\n format: \"png\",\n includeGizmos: true\n });\n this._img.style.visibility = \"visible\";\n\n let opacity = 1;\n this._pInterval = setInterval(() => {\n opacity -= inc;\n if (opacity > 0) {\n this._img.style.opacity = opacity;\n } else {\n this._img.style.opacity = 0;\n this._img.style.visibility = \"hidden\";\n clearInterval(this._pInterval);\n this._pInterval = null;\n }\n }, interval);\n }\n\n _initFade() {\n this._img = document.createElement('img');\n const canvas = this.viewer.scene.canvas.canvas;\n const canvasOffset = cumulativeOffset(canvas);\n const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;\n this._img.style.position = \"absolute\";\n this._img.style.visibility = \"hidden\";\n this._img.style[\"pointer-events\"] = \"none\";\n this._img.style[\"z-index\"] = 5;\n this._img.style.left = canvasOffset.left + \"px\";\n this._img.style.top = canvasOffset.top + \"px\";\n this._img.style.width = canvas.width + \"px\";\n this._img.style.height = canvas.height + \"px\";\n this._img.style.opacity = 1;\n this._img.width = canvas.width;\n this._img.height = canvas.height;\n this._img.left = canvasOffset.left;\n this._img.top = canvasOffset.top;\n canvas.parentNode.insertBefore(this._img, canvas.nextSibling);\n }\n\n _cancelFade() {\n if (!this._img) {\n return;\n }\n if (this._pInterval) {\n clearInterval(this._pInterval);\n this._pInterval = null;\n }\n if (this._pInterval2) {\n clearInterval(this._pInterval2);\n this._pInterval2 = null;\n }\n this._img.style.opacity = 0;\n this._img.style.visibility = \"hidden\";\n }\n\n /**\n * Sets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n */\n set pbrEnabled(pbrEnabled) {\n this._pbrEnabled = pbrEnabled;\n }\n\n /**\n * Gets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n */\n get pbrEnabled() {\n return this._pbrEnabled\n }\n\n /**\n * Sets whether to enable scalable ambient occlusion (SAO) when the camera stops moving.\n *\n * @return {Boolean} Whether SAO will be enabled.\n */\n set saoEnabled(saoEnabled) {\n this._saoEnabled = saoEnabled;\n }\n\n /**\n * Gets whether the FastNavPlugin enables SAO when switching to quality rendering.\n *\n * @return {Boolean} Whether SAO will be enabled.\n */\n get saoEnabled() {\n return this._saoEnabled\n }\n\n /**\n * Sets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n */\n set edgesEnabled(edgesEnabled) {\n this._edgesEnabled = edgesEnabled;\n }\n\n /**\n * Gets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n */\n get edgesEnabled() {\n return this._edgesEnabled\n }\n\n /**\n * @private\n */\n send(name, value) {\n switch (name) {\n case \"clear\":\n this._cancelFade();\n break;\n }\n }\n\n /**\n * Destroys this plugin.\n */\n destroy() {\n this._cancelFade();\n this.viewer.scene.camera.off(this._onCameraMatrix);\n this.viewer.scene.off(this._onSceneTick);\n this.viewer.scene.off(this._onSceneObjectVisibility);\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 super.destroy();\n if (this._img) {\n this._img.parentNode.removeChild(this._img);\n this._img = null;\n }\n }\n}\n\nfunction cumulativeOffset(element) {\n let top = 0, left = 0;\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while (element);\n\n return {\n top: top,\n left: left\n };\n}\n\nexport {FastNavPlugin}\n", "static": true, "longname": "/home/lindsay/xeolabs/xeokit/xeokit-nov-18/xeokit-sdk/src/plugins/FastNavPlugin/FastNavPlugin.js", "access": "public", @@ -7896,7 +7896,7 @@ "importPath": "@xeokit/xeokit-sdk/src/plugins/FastNavPlugin/FastNavPlugin.js", "importStyle": null, "description": null, - "lineNumber": 242, + "lineNumber": 325, "undocument": true, "params": [ { @@ -7924,8 +7924,8 @@ "export": true, "importPath": "@xeokit/xeokit-sdk/src/plugins/FastNavPlugin/FastNavPlugin.js", "importStyle": "{FastNavPlugin}", - "description": "{@link Viewer} plugin that improves interactivity by disabling expensive rendering effects while the {@link Camera} is moving.\n\n# Usage\n\nIn the example below, we'll create a {@link Viewer}, add a {@link FastNavPlugin}, then use an {@link XKTLoaderPlugin} to load a model.\n\nThis viewer will only render the model with enhanced edges, physically-based rendering (PBR) and scalable\nambient obscurance (SAO) when the camera is not moving.\n\nNote how we enable SAO and PBR on the ````Scene```` and the model.\n\n* [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#performance_FastNavPlugin)]\n\n````javascript\nimport {Viewer} from \"../src/viewer/Viewer.js\";\nimport {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\nimport {FastNavPlugin} from \"../src/plugins/FastNavPlugin/FastNavPlugin.js\";\n\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true,\n pbrEnabled: true,\n saoEnabled: true\n });\n\nviewer.scene.camera.eye = [-66.26, 105.84, -281.92];\nviewer.scene.camera.look = [42.45, 49.62, -43.59];\nviewer.scene.camera.up = [0.05, 0.95, 0.15];\n\nnew FastNavPlugin(viewer, {});\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nconst model = xktLoader.load({\n id: \"myModel\",\n src: \"./models/xkt/HolterTower/HolterTower.xkt\",\n metaModelSrc: \"./metaModels/HolterTower/HolterTower.json\",\n edges: true,\n saoEnabled: true,\n pbrEnabled: true\n});\n````", - "lineNumber": 49, + "description": "{@link Viewer} plugin that improves interactivity by disabling expensive rendering effects while the {@link Camera} is moving.\n\n# Usage\n\nIn the example below, we'll create a {@link Viewer}, add a {@link FastNavPlugin}, then use an {@link XKTLoaderPlugin} to load a model.\n\nThis viewer will only render the model with enhanced edges, physically-based rendering (PBR) and scalable\nambient obscurance (SAO) when the camera is not moving.\n\nNote how we enable SAO and PBR on the ````Scene```` and the model.\n\n* [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#performance_FastNavPlugin)]\n\n````javascript\nimport {Viewer} from \"../src/viewer/Viewer.js\";\nimport {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\nimport {FastNavPlugin} from \"../src/plugins/FastNavPlugin/FastNavPlugin.js\";\n\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true,\n pbrEnabled: true,\n saoEnabled: true\n });\n\nviewer.scene.camera.eye = [-66.26, 105.84, -281.92];\nviewer.scene.camera.look = [42.45, 49.62, -43.59];\nviewer.scene.camera.up = [0.05, 0.95, 0.15];\n\nnew FastNavPlugin(viewer, {\n pbrEnabled: true,\n saoEnabled: true,\n edgesEnabled: true\n});\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nconst model = xktLoader.load({\n id: \"myModel\",\n src: \"./models/xkt/HolterTower/HolterTower.xkt\",\n metaModelSrc: \"./metaModels/HolterTower/HolterTower.json\",\n edges: true,\n saoEnabled: true,\n pbrEnabled: true\n});\n````", + "lineNumber": 53, "unknown": [ { "tagName": "@class", @@ -7947,20 +7947,143 @@ "static": false, "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#constructor", "access": "public", - "description": null, - "lineNumber": 51, - "undocument": true + "description": "", + "lineNumber": 64, + "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": "FastNavPlugin configuration." + }, + { + "nullable": null, + "types": [ + "String" + ], + "spread": false, + "optional": true, + "defaultValue": "\"FastNav\"", + "defaultRaw": "FastNav", + "name": "cfg.id", + "description": "Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}." + }, + { + "nullable": null, + "types": [ + "Boolean" + ], + "spread": false, + "optional": true, + "name": "cfg.pbrEnabled", + "description": "Whether to enable physically-based rendering (PBR) when the camera stops moving. When not specified, PBR will be enabled if it's currently enabled for the Viewer (see {@link Viewer#pbrEnabled})." + }, + { + "nullable": null, + "types": [ + "Boolean" + ], + "spread": false, + "optional": true, + "name": "cfg.saoEnabled", + "description": "Whether to enable scalable ambient occlusion (SAO) when the camera stops moving. When not specified, SAO will be enabled if it's currently enabled for the Viewer (see {@link Scene#pbrEnabled})." + }, + { + "nullable": null, + "types": [ + "Boolean" + ], + "spread": false, + "optional": true, + "name": "cfg.edgesEnabled", + "description": "Whether to show enhanced edges when the camera stops moving. When not specified, edges will be enabled if they're currently enabled for the Viewer (see {@link EdgeMaterial#edges})." + } + ] }, { "__docId__": 511, "kind": "member", + "name": "_pbrEnabled", + "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", + "static": false, + "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_pbrEnabled", + "access": "private", + "description": null, + "lineNumber": 68, + "undocument": true, + "ignore": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 512, + "kind": "member", + "name": "_saoEnabled", + "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", + "static": false, + "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_saoEnabled", + "access": "private", + "description": null, + "lineNumber": 69, + "undocument": true, + "ignore": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 513, + "kind": "member", + "name": "_edgesEnabled", + "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", + "static": false, + "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_edgesEnabled", + "access": "private", + "description": null, + "lineNumber": 70, + "undocument": true, + "ignore": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 514, + "kind": "member", "name": "_pInterval", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", "static": false, "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_pInterval", "access": "private", "description": null, - "lineNumber": 55, + "lineNumber": 72, "undocument": true, "ignore": true, "type": { @@ -7970,7 +8093,7 @@ } }, { - "__docId__": 512, + "__docId__": 515, "kind": "member", "name": "_fadeMillisecs", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -7978,7 +8101,7 @@ "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_fadeMillisecs", "access": "private", "description": null, - "lineNumber": 56, + "lineNumber": 73, "undocument": true, "ignore": true, "type": { @@ -7988,7 +8111,7 @@ } }, { - "__docId__": 513, + "__docId__": 516, "kind": "member", "name": "_onCameraMatrix", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -7996,7 +8119,7 @@ "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_onCameraMatrix", "access": "private", "description": null, - "lineNumber": 62, + "lineNumber": 79, "undocument": true, "ignore": true, "type": { @@ -8006,7 +8129,7 @@ } }, { - "__docId__": 514, + "__docId__": 517, "kind": "member", "name": "_onSceneTick", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -8014,7 +8137,7 @@ "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_onSceneTick", "access": "private", "description": null, - "lineNumber": 73, + "lineNumber": 90, "undocument": true, "ignore": true, "type": { @@ -8024,7 +8147,25 @@ } }, { - "__docId__": 515, + "__docId__": 518, + "kind": "member", + "name": "_pInterval2", + "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", + "static": false, + "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_pInterval2", + "access": "private", + "description": null, + "lineNumber": 98, + "undocument": true, + "ignore": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 519, "kind": "member", "name": "_onSceneObjectVisibility", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -8032,7 +8173,7 @@ "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_onSceneObjectVisibility", "access": "private", "description": null, - "lineNumber": 89, + "lineNumber": 109, "undocument": true, "ignore": true, "type": { @@ -8042,7 +8183,7 @@ } }, { - "__docId__": 516, + "__docId__": 520, "kind": "member", "name": "_onSceneMouseDown", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -8050,7 +8191,7 @@ "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_onSceneMouseDown", "access": "private", "description": null, - "lineNumber": 102, + "lineNumber": 122, "undocument": true, "ignore": true, "type": { @@ -8060,7 +8201,7 @@ } }, { - "__docId__": 517, + "__docId__": 521, "kind": "member", "name": "_onSceneMouseUp", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -8068,7 +8209,7 @@ "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_onSceneMouseUp", "access": "private", "description": null, - "lineNumber": 114, + "lineNumber": 134, "undocument": true, "ignore": true, "type": { @@ -8078,7 +8219,7 @@ } }, { - "__docId__": 518, + "__docId__": 522, "kind": "member", "name": "_onSceneMouseMove", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -8086,7 +8227,7 @@ "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_onSceneMouseMove", "access": "private", "description": null, - "lineNumber": 118, + "lineNumber": 138, "undocument": true, "ignore": true, "type": { @@ -8096,7 +8237,7 @@ } }, { - "__docId__": 519, + "__docId__": 523, "kind": "method", "name": "_startFade", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -8106,14 +8247,14 @@ "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_startFade", "access": "private", "description": null, - "lineNumber": 133, + "lineNumber": 153, "undocument": true, "ignore": true, "params": [], "return": null }, { - "__docId__": 523, + "__docId__": 527, "kind": "method", "name": "_initFade", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -8123,14 +8264,14 @@ "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_initFade", "access": "private", "description": null, - "lineNumber": 181, + "lineNumber": 204, "undocument": true, "ignore": true, "params": [], "return": null }, { - "__docId__": 524, + "__docId__": 528, "kind": "member", "name": "_img", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -8138,7 +8279,7 @@ "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_img", "access": "private", "description": null, - "lineNumber": 182, + "lineNumber": 205, "undocument": true, "ignore": true, "type": { @@ -8148,7 +8289,7 @@ } }, { - "__docId__": 525, + "__docId__": 529, "kind": "method", "name": "_cancelFade", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -8158,14 +8299,155 @@ "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#_cancelFade", "access": "private", "description": null, - "lineNumber": 202, + "lineNumber": 225, "undocument": true, "ignore": true, "params": [], "return": null }, { - "__docId__": 527, + "__docId__": 532, + "kind": "set", + "name": "pbrEnabled", + "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#pbrEnabled", + "access": "public", + "description": "Sets whether to enable physically-based rendering (PBR) when the camera stops moving.", + "lineNumber": 246, + "return": { + "nullable": null, + "types": [ + "Boolean" + ], + "spread": false, + "description": "Whether PBR will be enabled." + } + }, + { + "__docId__": 534, + "kind": "get", + "name": "pbrEnabled", + "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#pbrEnabled", + "access": "public", + "description": "Gets whether to enable physically-based rendering (PBR) when the camera stops moving.", + "lineNumber": 255, + "return": { + "nullable": null, + "types": [ + "Boolean" + ], + "spread": false, + "description": "Whether PBR will be enabled." + }, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 535, + "kind": "set", + "name": "saoEnabled", + "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#saoEnabled", + "access": "public", + "description": "Sets whether to enable scalable ambient occlusion (SAO) when the camera stops moving.", + "lineNumber": 264, + "return": { + "nullable": null, + "types": [ + "Boolean" + ], + "spread": false, + "description": "Whether SAO will be enabled." + } + }, + { + "__docId__": 537, + "kind": "get", + "name": "saoEnabled", + "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#saoEnabled", + "access": "public", + "description": "Gets whether the FastNavPlugin enables SAO when switching to quality rendering.", + "lineNumber": 273, + "return": { + "nullable": null, + "types": [ + "Boolean" + ], + "spread": false, + "description": "Whether SAO will be enabled." + }, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 538, + "kind": "set", + "name": "edgesEnabled", + "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#edgesEnabled", + "access": "public", + "description": "Sets whether to show enhanced edges when the camera stops moving.", + "lineNumber": 282, + "return": { + "nullable": null, + "types": [ + "Boolean" + ], + "spread": false, + "description": "Whether edge enhancement will be enabled." + } + }, + { + "__docId__": 540, + "kind": "get", + "name": "edgesEnabled", + "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", + "generator": false, + "async": false, + "static": false, + "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#edgesEnabled", + "access": "public", + "description": "Gets whether to show enhanced edges when the camera stops moving.", + "lineNumber": 291, + "return": { + "nullable": null, + "types": [ + "Boolean" + ], + "spread": false, + "description": "Whether edge enhancement will be enabled." + }, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 541, "kind": "method", "name": "send", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -8175,7 +8457,7 @@ "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#send", "access": "private", "description": "", - "lineNumber": 217, + "lineNumber": 298, "ignore": true, "params": [ { @@ -8194,7 +8476,7 @@ "return": null }, { - "__docId__": 528, + "__docId__": 542, "kind": "method", "name": "destroy", "memberof": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin", @@ -8204,12 +8486,12 @@ "longname": "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#destroy", "access": "public", "description": "Destroys this plugin.", - "lineNumber": 228, + "lineNumber": 309, "params": [], "return": null }, { - "__docId__": 530, + "__docId__": 544, "kind": "file", "name": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js", "content": "import {utils} from \"../../viewer/scene/utils.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.loadJSON(glTFSrc,\n (gltf) => {\n ok(gltf);\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 window.setTimeout(function () {\n ok(buffer);\n }, 0);\n } catch (error) {\n window.setTimeout(function () {\n err(error);\n }, 0);\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};", @@ -8220,7 +8502,7 @@ "lineNumber": 1 }, { - "__docId__": 531, + "__docId__": 545, "kind": "function", "name": "loadArraybuffer", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js", @@ -8265,7 +8547,7 @@ "ignore": true }, { - "__docId__": 532, + "__docId__": 546, "kind": "function", "name": "getBasePath", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js", @@ -8296,7 +8578,7 @@ "ignore": true }, { - "__docId__": 533, + "__docId__": 547, "kind": "class", "name": "GLTFDefaultDataSource", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js", @@ -8311,7 +8593,7 @@ "interface": false }, { - "__docId__": 534, + "__docId__": 548, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource", @@ -8325,7 +8607,7 @@ "undocument": true }, { - "__docId__": 535, + "__docId__": 549, "kind": "method", "name": "getMetaModel", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource", @@ -8372,7 +8654,7 @@ "return": null }, { - "__docId__": 536, + "__docId__": 550, "kind": "method", "name": "getGLTF", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource", @@ -8419,7 +8701,7 @@ "return": null }, { - "__docId__": 537, + "__docId__": 551, "kind": "method", "name": "getArrayBuffer", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js~GLTFDefaultDataSource", @@ -8477,7 +8759,7 @@ "return": null }, { - "__docId__": 538, + "__docId__": 552, "kind": "file", "name": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js", "content": "import {utils} from \"../../viewer/scene/utils.js\"\nimport {PerformanceModel} from \"../../viewer/scene/PerformanceModel/PerformanceModel.js\";\nimport {Node} from \"../../viewer/scene/nodes/Node.js\";\nimport {Plugin} from \"../../viewer/Plugin.js\";\nimport {GLTFSceneGraphLoader} from \"./GLTFSceneGraphLoader.js\";\nimport {GLTFPerformanceModelLoader} from \"./GLTFPerformanceModelLoader.js\";\nimport {IFCObjectDefaults} from \"../../viewer/metadata/IFCObjectDefaults.js\";\nimport {GLTFDefaultDataSource} from \"./GLTFDefaultDataSource.js\";\n\n/**\n * {@link Viewer} plugin that loads models from [glTF](https://www.khronos.org/gltf/).\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 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 *\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 * ## Quality Setting\n *\n * By default, GLTFLoaderPlugin will load a high-performance scene representation that's optimized for low memory usage and\n * optimal rendering. The high-performance representation renders large numbers of objects efficiently, using geometry\n * batching and instancing, with simple Lambertian shading that ignores any textures and realistic materials in the glTF.\n *\n * Specifying ````performance:false```` to {@link GLTFLoaderPlugin#load} will internally load a heavier scene\n * representation comprised of {@link Node}, {@link Mesh}, {@link Geometry}, {@link Material} and {@link Texture} components,\n * that will exactly preserve the materials specified in the glTF. Use this when you want to load a model for a realistic preview,\n * maybe using PBR etc.\n *\n * We tend to use the default ````performance:true```` setting for CAD and BIM models, where structure is more important that\n * surface appearance.\n *\n * Publically, GLTFLoaderPlugin creates the same {@link Entity}s for both levels of performance. Privately, however, it implements\n * {@link Entity}s using two different sets of concrete subtypes, for its two different internally-managed scene representations.\n *\n * ## Usage\n *\n * In the example below we'll load the Schependomlaan model from a [glTF file](http://xeokit.github.io/xeokit-sdk/examples/models/gltf/schependomlaan/), along\n * with an accompanying JSON [IFC metadata file](http://xeokit.github.io/xeokit-sdk/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://github.com/xeokit/xeokit-sdk/wiki/Viewing-BIM-Models-Offline).\n *\n * We're leaving ````performance: true```` since our model has many objects and we're not interested in realistic rendering.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_glTF_OTCConferenceCenter)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {GLTFLoaderPlugin} from \"../src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.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: \"./metaModels/OTCConferenceCenter/metaModel.json\", // Creates a MetaModel (see below)\n * edges: true,\n * performance: true // Load high-performance scene representation (default is false)\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 * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#loading_glTF_Duplex_transform)]\n *\n * ````javascript\n * const model = gltfLoader.load({\n * src: \"./models/gltf/duplex/scene.gltf\",\n * metaModelSrc: \"./metaModels/duplex/metaModel.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 * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_glTF_includeTypes_PlanView)]\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./metaModels/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: \"./metaModels/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 /**\n * @private\n */\n this._sceneGraphLoader = new GLTFSceneGraphLoader(this, cfg);\n\n /**\n * @private\n */\n this._performanceModelLoader = new GLTFPerformanceModelLoader(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 ````metaModelData```` parameter (see user guide: [Model Metadata](https://github.com/xeolabs/xeokit.io/wiki/Model-Metadata)).\n * @param {*} [params.metaModelData] JSON model metadata, as an alternative to the ````metaModelSrc```` parameter (see user guide: [Model Metadata](https://github.com/xeolabs/xeokit.io/wiki/Model-Metadata)).\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 * @params {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @params {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.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 {Boolean} [params.backfaces=false] When true, allows visible backfaces, wherever specified in the glTF. When false, ignores backfaces.\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 * @params {Boolean} [params.performance=true] Set ````false```` to load all the materials and textures provided by the glTF file, otherwise leave ````true```` to load the default high-performance representation optimized for low memory usage and efficient rendering.\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 performance = params.performance !== false;\n\n const model = performance\n\n // PerformanceModel provides performance-oriented scene representation\n // converting glTF materials to simple flat-shading without textures\n\n ? new PerformanceModel(this.viewer.scene, utils.apply(params, {\n isModel: true\n }))\n\n // Scene Node graph supports original glTF materials\n\n : new Node(this.viewer.scene, utils.apply(params, {\n isModel: true\n }));\n\n const modelId = model.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 model; // Return new empty model\n }\n\n const loader = performance ? this._performanceModelLoader : this._sceneGraphLoader;\n\n if (params.metaModelSrc || params.metaModelData) {\n\n const objectDefaults = params.objectDefaults || this._objectDefaults || IFCObjectDefaults;\n\n const processMetaModelData = (metaModelData) => {\n\n this.viewer.metaScene.createMetaModel(modelId, metaModelData, {\n includeTypes: params.includeTypes,\n excludeTypes: params.excludeTypes\n });\n\n this.viewer.scene.canvas.spinner.processes--;\n\n var 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 var excludeTypes;\n if (params.excludeTypes) {\n excludeTypes = {};\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 loader.load(this, model, params.src, params);\n } else {\n loader.parse(this, model, params.gltf, params);\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, (metaModelData) => {\n\n this.viewer.scene.canvas.spinner.processes--;\n\n processMetaModelData(metaModelData);\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.metaModelData) {\n\n processMetaModelData(params.metaModelData);\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 if (params.src) {\n loader.load(this, model, params.src, params);\n } else {\n loader.parse(this, model, params.gltf, params);\n }\n }\n\n model.once(\"destroyed\", () => {\n this.viewer.metaScene.destroyMetaModel(modelId);\n });\n\n return model;\n }\n\n /**\n * Destroys this GLTFLoaderPlugin.\n */\n destroy() {\n super.destroy();\n }\n}\n\nexport {GLTFLoaderPlugin}", @@ -8488,7 +8770,7 @@ "lineNumber": 1 }, { - "__docId__": 539, + "__docId__": 553, "kind": "class", "name": "GLTFLoaderPlugin", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js", @@ -8512,7 +8794,7 @@ ] }, { - "__docId__": 540, + "__docId__": 554, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -8585,7 +8867,7 @@ ] }, { - "__docId__": 541, + "__docId__": 555, "kind": "member", "name": "_sceneGraphLoader", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -8602,7 +8884,7 @@ } }, { - "__docId__": 542, + "__docId__": 556, "kind": "member", "name": "_performanceModelLoader", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -8619,7 +8901,7 @@ } }, { - "__docId__": 545, + "__docId__": 559, "kind": "set", "name": "dataSource", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -8640,7 +8922,7 @@ } }, { - "__docId__": 546, + "__docId__": 560, "kind": "member", "name": "_dataSource", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -8658,7 +8940,7 @@ } }, { - "__docId__": 547, + "__docId__": 561, "kind": "get", "name": "dataSource", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -8679,7 +8961,7 @@ } }, { - "__docId__": 548, + "__docId__": 562, "kind": "set", "name": "objectDefaults", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -8700,7 +8982,7 @@ } }, { - "__docId__": 549, + "__docId__": 563, "kind": "member", "name": "_objectDefaults", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -8718,7 +9000,7 @@ } }, { - "__docId__": 550, + "__docId__": 564, "kind": "get", "name": "objectDefaults", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -8739,7 +9021,7 @@ } }, { - "__docId__": 551, + "__docId__": 565, "kind": "method", "name": "load", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -8963,7 +9245,7 @@ } }, { - "__docId__": 552, + "__docId__": 566, "kind": "method", "name": "destroy", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js~GLTFLoaderPlugin", @@ -8978,7 +9260,7 @@ "return": null }, { - "__docId__": 553, + "__docId__": 567, "kind": "file", "name": "src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.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 {buildEdgeIndices} from '../../viewer/scene/math/buildEdgeIndices.js';\n\n/**\n * @private\n */\nclass GLTFPerformanceModelLoader {\n\n constructor(cfg) { // TODO: Loading options fallbacks on loader, eg. handleGLTFNode etc\n cfg = cfg || {};\n }\n\n load(plugin, performanceModel, src, options, ok, error) {\n options = options || {};\n loadGLTF(plugin, performanceModel, src, options, function () {\n core.scheduleTask(function () {\n performanceModel.scene.fire(\"modelLoaded\", performanceModel.id); // FIXME: Assumes listeners know order of these two events\n performanceModel.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 performanceModel.fire(\"error\", msg);\n });\n }\n\n parse(plugin, performanceModel, gltf, options, ok, error) {\n options = options || {};\n parseGLTF(plugin, gltf, \"\", options, performanceModel, function () {\n performanceModel.scene.fire(\"modelLoaded\", performanceModel.id); // FIXME: Assumes listeners know order of these two events\n performanceModel.fire(\"loaded\", true, false);\n if (ok) {\n ok();\n }\n },\n function (msg) {\n performanceModel.error(msg);\n performanceModel.fire(\"error\", msg);\n if (error) {\n error(msg);\n }\n });\n }\n}\n\nconst INSTANCE_THRESHOLD = 1;\n\nconst loadGLTF = (function () {\n\n return function (plugin, performanceModel, src, options, ok, error) {\n const spinner = plugin.viewer.scene.canvas.spinner;\n spinner.processes++;\n plugin.dataSource.getGLTF(src, function (json) { // OK\n spinner.processes--;\n parseGLTF(plugin, json, src, options, performanceModel, ok, error);\n },\n error);\n };\n\n function getBasePath(src) {\n const i = src.lastIndexOf(\"/\");\n return (i !== 0) ? src.substring(0, i + 1) : \"\";\n }\n})();\n\nconst parseGLTF = (function () {\n\n const WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n };\n\n const WEBGL_TYPE_SIZES = {\n 'SCALAR': 1,\n 'VEC2': 2,\n 'VEC3': 3,\n 'VEC4': 4,\n 'MAT2': 4,\n 'MAT3': 9,\n 'MAT4': 16\n };\n\n return function (plugin, json, src, options, performanceModel, ok) {\n const ctx = {\n src: src,\n loadBuffer: options.loadBuffer,\n handleGLTFNode: options.handleGLTFNode,\n json: json,\n scene: performanceModel.scene,\n plugin: plugin,\n performanceModel: performanceModel,\n geometryCreated: {},\n numObjects: 0,\n nodes: []\n };\n const spinner = plugin.viewer.scene.canvas.spinner;\n spinner.processes++;\n loadBuffers(ctx, function () {\n loadBufferViews(ctx);\n freeBuffers(ctx); // Don't need buffers once we've created views of them\n loadMaterials(ctx);\n spinner.processes--;\n loadDefaultScene(ctx);\n performanceModel.finalize();\n ok();\n });\n };\n\n function loadBuffers(ctx, ok) {\n const buffers = ctx.json.buffers;\n if (buffers) {\n let numToLoad = buffers.length;\n for (let i = 0, len = buffers.length; i < len; i++) {\n loadBuffer(ctx, buffers[i], function () {\n if (--numToLoad === 0) {\n ok();\n }\n }, function (msg) {\n ctx.plugin.error(msg);\n if (--numToLoad === 0) {\n ok();\n }\n });\n }\n } else {\n ok();\n }\n }\n\n function loadBuffer(ctx, bufferInfo, ok, err) {\n const uri = bufferInfo.uri;\n if (uri) {\n ctx.plugin.dataSource.getArrayBuffer(ctx.src, uri, function (data) {\n bufferInfo._buffer = data;\n ok();\n },\n err);\n } else {\n err('gltf/handleBuffer missing uri in ' + JSON.stringify(bufferInfo));\n }\n }\n\n function loadBufferViews(ctx) {\n const bufferViewsInfo = ctx.json.bufferViews;\n if (bufferViewsInfo) {\n for (let i = 0, len = bufferViewsInfo.length; i < len; i++) {\n loadBufferView(ctx, bufferViewsInfo[i]);\n }\n }\n }\n\n function loadBufferView(ctx, bufferViewInfo) {\n const buffer = ctx.json.buffers[bufferViewInfo.buffer];\n bufferViewInfo._typedArray = null;\n const byteLength = bufferViewInfo.byteLength || 0;\n const byteOffset = bufferViewInfo.byteOffset || 0;\n bufferViewInfo._buffer = buffer._buffer.slice(byteOffset, byteOffset + byteLength);\n }\n\n function freeBuffers(ctx) {\n const buffers = ctx.json.buffers;\n if (buffers) {\n for (let i = 0, len = buffers.length; i < len; i++) {\n buffers[i]._buffer = null;\n }\n }\n }\n\n function loadMaterials(ctx) {\n const materialsInfo = ctx.json.materials;\n if (materialsInfo) {\n for (let i = 0, len = materialsInfo.length; i < len; i++) {\n const materialInfo = materialsInfo[i];\n const material = loadMaterialColorize(ctx, materialInfo);\n materialInfo._rgbaColor = material;\n }\n }\n }\n\n function loadMaterialColorize(ctx, materialInfo) { // Substitute RGBA for material, to use fast flat shading instead\n const colorize = new Float32Array([1, 1, 1, 1]);\n const extensions = materialInfo.extensions;\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const diffuseFactor = specularPBR.diffuseFactor;\n if (diffuseFactor !== null && diffuseFactor !== undefined) {\n colorize.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 colorize.set(diffuse);\n }\n }\n const transparency = values.transparency;\n if (transparency !== null && transparency !== undefined) {\n colorize[3] = transparency;\n }\n const transparent = values.transparent;\n if (transparent !== null && transparent !== undefined) {\n colorize[3] = transparent;\n }\n }\n }\n const metallicPBR = materialInfo.pbrMetallicRoughness;\n if (metallicPBR) {\n const baseColorFactor = metallicPBR.baseColorFactor;\n if (baseColorFactor) {\n colorize.set(baseColorFactor);\n }\n }\n return colorize;\n }\n\n function loadDefaultScene(ctx) {\n const json = ctx.json;\n const scene = json.scene || 0;\n const defaultSceneInfo = json.scenes[scene];\n if (!defaultSceneInfo) {\n error(ctx, \"glTF has no default scene\");\n return;\n }\n preprocessScene(ctx, defaultSceneInfo);\n loadScene(ctx, defaultSceneInfo);\n }\n\n function preprocessScene(ctx, sceneInfo) {\n const nodes = sceneInfo.nodes;\n if (!nodes) {\n return;\n }\n const json = ctx.json;\n for (let i = 0, len = nodes.length; i < len; i++) {\n const glTFNode = json.nodes[nodes[i]];\n if (!glTFNode) {\n error(ctx, \"Node not found: \" + i);\n continue;\n }\n countMeshUsage(ctx, i, glTFNode);\n }\n }\n\n function loadScene(ctx, sceneInfo) {\n const nodes = sceneInfo.nodes;\n if (!nodes) {\n return;\n }\n const json = ctx.json;\n for (let i = 0, len = nodes.length; i < len; i++) {\n const glTFNode = json.nodes[nodes[i]];\n if (!glTFNode) {\n error(ctx, \"Node not found: \" + i);\n continue;\n }\n countMeshUsage(ctx, glTFNode);\n }\n ctx.plugin.viewer.scene.canvas.spinner.processes++;\n for (let i = 0, len = nodes.length; i < len; i++) {\n const glTFNode = json.nodes[nodes[i]];\n loadNode(ctx, glTFNode, null);\n }\n ctx.plugin.viewer.scene.canvas.spinner.processes--;\n }\n\n function countMeshUsage(ctx, glTFNode) {\n const json = ctx.json;\n const mesh = glTFNode.mesh;\n if (mesh !== undefined) {\n const meshInfo = json.meshes[glTFNode.mesh];\n if (meshInfo) {\n meshInfo.instances = meshInfo.instances ? meshInfo.instances + 1 : 1;\n }\n }\n if (glTFNode.children) {\n const children = glTFNode.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNodeIdx = children[i];\n const childNodeInfo = json.nodes[childNodeIdx];\n if (!childNodeInfo) {\n error(ctx, \"Node not found: \" + i);\n continue;\n }\n countMeshUsage(ctx, childNodeInfo);\n }\n }\n }\n\n function loadNode(ctx, glTFNode, matrix) {\n\n const json = ctx.json;\n let localMatrix;\n\n if (glTFNode.matrix) {\n localMatrix = glTFNode.matrix;\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.translation) {\n localMatrix = math.translationMat4v(glTFNode.translation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.rotation) {\n localMatrix = math.quaternionToMat4(glTFNode.rotation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.scale) {\n localMatrix = math.scalingMat4v(glTFNode.scale);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.mesh !== undefined) {\n\n const meshInfo = json.meshes[glTFNode.mesh];\n\n if (meshInfo) {\n\n let createEntity;\n\n if (ctx.handleGLTFNode) {\n const actions = {};\n if (!ctx.handleGLTFNode(ctx.performanceModel.id, glTFNode, actions)) {\n return;\n }\n if (actions.createEntity) {\n createEntity = actions.createEntity;\n }\n }\n\n const performanceModel = ctx.performanceModel;\n const worldMatrix = matrix ? matrix.slice() : math.identityMat4();\n const numPrimitives = meshInfo.primitives.length;\n\n if (numPrimitives > 0) {\n\n const meshIds = [];\n\n for (let i = 0; i < numPrimitives; i++) {\n const meshCfg = {\n id: performanceModel.id + \".\" + ctx.numObjects++,\n matrix: worldMatrix\n };\n const primitiveInfo = meshInfo.primitives[i];\n\n const materialIndex = primitiveInfo.material;\n let materialInfo;\n if (materialIndex !== null && materialIndex !== undefined) {\n materialInfo = json.materials[materialIndex];\n }\n if (materialInfo) {\n meshCfg.color = materialInfo._rgbaColor;\n meshCfg.opacity = materialInfo._rgbaColor[3];\n\n } else {\n meshCfg.color = new Float32Array([1.0, 1.0, 1.0]);\n meshCfg.opacity = 1.0;\n }\n\n if (createEntity) {\n if (createEntity.colorize) {\n meshCfg.color = createEntity.colorize;\n }\n if (createEntity.opacity !== undefined && createEntity.opacity !== null) {\n meshCfg.opacity = createEntity.opacity;\n }\n }\n\n if (meshInfo.instances > INSTANCE_THRESHOLD) {\n\n // Instancing\n\n const geometryId = performanceModel.id + \".\" + glTFNode.mesh + \".\" + i;\n if (!ctx.geometryCreated[geometryId]) {\n const geometryCfg = {\n id: geometryId\n };\n loadPrimitiveGeometry(ctx, primitiveInfo, geometryCfg);\n performanceModel.createGeometry(geometryCfg);\n ctx.geometryCreated[geometryId] = true;\n }\n\n meshCfg.geometryId = geometryId;\n\n performanceModel.createMesh(meshCfg);\n meshIds.push(meshCfg.id);\n\n } else {\n\n // Batching\n\n loadPrimitiveGeometry(ctx, primitiveInfo, meshCfg);\n\n performanceModel.createMesh(meshCfg);\n meshIds.push(meshCfg.id);\n }\n }\n\n if (createEntity) {\n performanceModel.createEntity(utils.apply(createEntity, {\n meshIds: meshIds\n }));\n } else {\n performanceModel.createEntity({\n meshIds: meshIds\n });\n }\n }\n }\n }\n\n if (glTFNode.children) {\n const children = glTFNode.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNodeIdx = children[i];\n const childNodeInfo = json.nodes[childNodeIdx];\n if (!childNodeInfo) {\n error(ctx, \"Node not found: \" + i);\n continue;\n }\n loadNode(ctx, childNodeInfo, matrix);\n }\n }\n }\n\n function loadPrimitiveGeometry(ctx, primitiveInfo, geometryCfg) {\n const attributes = primitiveInfo.attributes;\n if (!attributes) {\n return;\n }\n geometryCfg.primitive = \"triangles\";\n const indicesIndex = primitiveInfo.indices;\n if (indicesIndex !== null && indicesIndex !== undefined) {\n const accessorInfo = ctx.json.accessors[indicesIndex];\n geometryCfg.indices = loadAccessorTypedArray(ctx, accessorInfo);\n }\n const positionsIndex = attributes.POSITION;\n if (positionsIndex !== null && positionsIndex !== undefined) {\n const accessorInfo = ctx.json.accessors[positionsIndex];\n geometryCfg.positions = loadAccessorTypedArray(ctx, accessorInfo);\n // scalePositionsArray(geometryCfg.positions);\n }\n const normalsIndex = attributes.NORMAL;\n if (normalsIndex !== null && normalsIndex !== undefined) {\n const accessorInfo = ctx.json.accessors[normalsIndex];\n geometryCfg.normals = loadAccessorTypedArray(ctx, accessorInfo);\n }\n if (geometryCfg.indices) {\n geometryCfg.edgeIndices = buildEdgeIndices(geometryCfg.positions, geometryCfg.indices, null, 10); // Save PerformanceModel from building edges\n }\n }\n\n function loadAccessorTypedArray(ctx, accessorInfo) {\n const bufferViewInfo = ctx.json.bufferViews[accessorInfo.bufferView];\n const itemSize = WEBGL_TYPE_SIZES[accessorInfo.type];\n const TypedArray = WEBGL_COMPONENT_TYPES[accessorInfo.componentType];\n const elementBytes = TypedArray.BYTES_PER_ELEMENT; // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n const itemBytes = elementBytes * itemSize;\n if (accessorInfo.byteStride && accessorInfo.byteStride !== itemBytes) { // The buffer is not interleaved if the stride is the item size in bytes.\n error(\"interleaved buffer!\"); // TODO\n } else {\n return new TypedArray(bufferViewInfo._buffer, accessorInfo.byteOffset || 0, accessorInfo.count * itemSize);\n }\n }\n\n function error(ctx, msg) {\n ctx.plugin.error(msg);\n }\n})();\n\nexport {GLTFPerformanceModelLoader}\n", @@ -8989,7 +9271,7 @@ "lineNumber": 1 }, { - "__docId__": 554, + "__docId__": 568, "kind": "variable", "name": "INSTANCE_THRESHOLD", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js", @@ -9010,7 +9292,7 @@ "ignore": true }, { - "__docId__": 555, + "__docId__": 569, "kind": "variable", "name": "loadGLTF", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js", @@ -9031,7 +9313,7 @@ "ignore": true }, { - "__docId__": 556, + "__docId__": 570, "kind": "variable", "name": "parseGLTF", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js", @@ -9052,7 +9334,7 @@ "ignore": true }, { - "__docId__": 557, + "__docId__": 571, "kind": "class", "name": "GLTFPerformanceModelLoader", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js", @@ -9068,7 +9350,7 @@ "ignore": true }, { - "__docId__": 558, + "__docId__": 572, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js~GLTFPerformanceModelLoader", @@ -9082,7 +9364,7 @@ "undocument": true }, { - "__docId__": 559, + "__docId__": 573, "kind": "method", "name": "load", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js~GLTFPerformanceModelLoader", @@ -9135,7 +9417,7 @@ "return": null }, { - "__docId__": 560, + "__docId__": 574, "kind": "method", "name": "parse", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js~GLTFPerformanceModelLoader", @@ -9188,7 +9470,7 @@ "return": null }, { - "__docId__": 561, + "__docId__": 575, "kind": "file", "name": "src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js", "content": "import {Mesh} from \"../../viewer/scene/mesh/Mesh.js\";\nimport {ReadableGeometry} from \"../../viewer/scene/geometry/ReadableGeometry.js\";\nimport {VBOGeometry} from \"../../viewer/scene/geometry/VBOGeometry.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 {Texture} from \"../../viewer/scene/materials/Texture.js\";\nimport {Node} from \"../../viewer/scene/nodes/Node.js\";\nimport {math} from \"../../viewer/scene/math/math.js\";\nimport {utils} from \"../../viewer/scene/utils.js\";\nimport {core} from \"../../viewer/scene/core.js\";\n\n/**\n * @private\n */\nclass GLTFSceneGraphLoader {\n\n constructor(cfg) { // TODO: Loading options fallbacks on loader, eg. handleGLTFNode etc\n cfg = cfg || {};\n }\n\n load(plugin, modelNode, src, options, ok, error) {\n options = options || {};\n var spinner = modelNode.scene.canvas.spinner;\n spinner.processes++;\n loadGLTF(plugin, modelNode, src, options, function () {\n spinner.processes--;\n core.scheduleTask(function () {\n modelNode.scene.fire(\"modelLoaded\", modelNode.id); // FIXME: Assumes listeners know order of these two events\n modelNode.fire(\"loaded\", true, false);\n });\n if (ok) {\n ok();\n }\n },\n function (msg) {\n spinner.processes--;\n modelNode.error(msg);\n if (error) {\n error(msg);\n }\n modelNode.fire(\"error\", msg);\n });\n }\n\n parse(plugin, modelNode, gltf, options, ok, error) {\n options = options || {};\n var spinner = modelNode.scene.canvas.spinner;\n spinner.processes++;\n parseGLTF(plugin, gltf, \"\", options, modelNode, function () {\n spinner.processes--;\n modelNode.scene.fire(\"modelLoaded\", modelNode.id); // FIXME: Assumes listeners know order of these two events\n modelNode.fire(\"loaded\", true, false);\n if (ok) {\n ok();\n }\n },\n function (msg) {\n spinner.processes--;\n modelNode.error(msg);\n modelNode.fire(\"error\", msg);\n if (error) {\n error(msg);\n }\n });\n }\n}\n\n\nvar loadGLTF = (function () {\n return function (plugin, modelNode, src, options, ok, error) {\n plugin.dataSource.getGLTF(src, function (json) { // OK\n options.basePath = getBasePath(src);\n parseGLTF(plugin, json, src, options, modelNode, ok, error);\n },\n error);\n };\n\n function getBasePath(src) {\n var i = src.lastIndexOf(\"/\");\n return (i !== 0) ? src.substring(0, i + 1) : \"\";\n }\n})();\n\nvar parseGLTF = (function () {\n\n const WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n };\n\n const WEBGL_TYPE_SIZES = {\n 'SCALAR': 1,\n 'VEC2': 2,\n 'VEC3': 3,\n 'VEC4': 4,\n 'MAT2': 4,\n 'MAT3': 9,\n 'MAT4': 16\n };\n\n return function (plugin, json, src, options, modelNode, ok) {\n modelNode.clear();\n var ctx = {\n src: src,\n loadBuffer: options.loadBuffer,\n basePath: options.basePath,\n prioritizeGLTFNode: options.prioritizeGLTFNode,\n handleGLTFNode: options.handleGLTFNode,\n ignoreMaterials: !!options.ignoreMaterials,\n edgeThreshold: options.edgeThreshold,\n readableGeometry: !!options.readableGeometry,\n json: json,\n scene: modelNode.scene,\n plugin: plugin,\n modelNode: modelNode,\n modelNodeProps: {\n visible: modelNode.visible,\n culled: modelNode.culled,\n xrayed: modelNode.xrayed,\n highlighted: modelNode.highlighted,\n selected: modelNode.selected,\n outlined: modelNode.outlined,\n clippable: modelNode.clippable,\n pickable: modelNode.pickable,\n collidable: modelNode.collidable,\n castsShadow: modelNode.castsShadow,\n receivesShadow: modelNode.receivesShadow,\n colorize: modelNode.colorize,\n opacity: modelNode.opacity,\n edges: modelNode.edges\n }\n };\n\n modelNode.scene.loading++; // Disables (re)compilation\n\n loadBuffers(ctx, function () {\n\n loadBufferViews(ctx);\n loadAccessors(ctx);\n loadTextures(ctx);\n loadMaterials(ctx);\n loadMeshes(ctx);\n loadDefaultScene(ctx);\n\n modelNode.scene.loading--; // Re-enables (re)compilation\n\n ok();\n });\n };\n\n function loadBuffers(ctx, ok) {\n var buffers = ctx.json.buffers;\n if (buffers) {\n var numToLoad = buffers.length;\n for (var i = 0, len = buffers.length; i < len; i++) {\n loadBuffer(ctx, buffers[i], function () {\n if (--numToLoad === 0) {\n ok();\n }\n }, function (msg) {\n ctx.plugin.error(msg);\n if (--numToLoad === 0) {\n ok();\n }\n });\n }\n } else {\n ok();\n }\n }\n\n function loadBuffer(ctx, bufferInfo, ok, err) {\n var uri = bufferInfo.uri;\n if (uri) {\n ctx.plugin.dataSource.getArrayBuffer(ctx.src, uri, function (data) {\n bufferInfo._buffer = data;\n ok();\n },\n err);\n } else {\n err('gltf/handleBuffer missing uri in ' + JSON.stringify(bufferInfo));\n }\n }\n\n function loadBufferViews(ctx) {\n var bufferViewsInfo = ctx.json.bufferViews;\n if (bufferViewsInfo) {\n for (var i = 0, len = bufferViewsInfo.length; i < len; i++) {\n loadBufferView(ctx, bufferViewsInfo[i]);\n }\n }\n }\n\n function loadBufferView(ctx, bufferViewInfo) {\n\n var buffer = ctx.json.buffers[bufferViewInfo.buffer];\n\n bufferViewInfo._typedArray = null;\n\n var byteLength = bufferViewInfo.byteLength || 0;\n var byteOffset = bufferViewInfo.byteOffset || 0;\n\n bufferViewInfo._buffer = buffer._buffer.slice(byteOffset, byteOffset + byteLength);\n }\n\n function loadAccessors(ctx) {\n var accessorsInfo = ctx.json.accessors;\n if (accessorsInfo) {\n for (var i = 0, len = accessorsInfo.length; i < len; i++) {\n loadAccessor(ctx, accessorsInfo[i]);\n }\n }\n }\n\n function loadAccessor(ctx, accessorInfo) {\n var bufferViewInfo = ctx.json.bufferViews[accessorInfo.bufferView];\n var itemSize = WEBGL_TYPE_SIZES[accessorInfo.type];\n var TypedArray = WEBGL_COMPONENT_TYPES[accessorInfo.componentType];\n\n // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n var elementBytes = TypedArray.BYTES_PER_ELEMENT;\n var itemBytes = elementBytes * itemSize;\n\n // The buffer is not interleaved if the stride is the item size in bytes.\n if (accessorInfo.byteStride && accessorInfo.byteStride !== itemBytes) {\n\n } else {\n accessorInfo._typedArray = new TypedArray(bufferViewInfo._buffer, accessorInfo.byteOffset || 0, accessorInfo.count * itemSize);\n accessorInfo._itemSize = itemSize;\n }\n }\n\n\n function loadTextures(ctx) {\n var texturesInfo = ctx.json.textures;\n if (texturesInfo) {\n for (var i = 0, len = texturesInfo.length; i < len; i++) {\n loadTexture(ctx, texturesInfo[i]);\n }\n }\n }\n\n function loadTexture(ctx, textureInfo) {\n textureInfo._texture = new Texture(ctx.modelNode, {\n src: ctx.json.images[textureInfo.source].uri ? ctx.basePath + ctx.json.images[textureInfo.source].uri : undefined,\n flipY: !!textureInfo.flipY,\n encoding: \"sRGB\"\n });\n }\n\n function loadMaterials(ctx) {\n var materialsInfo = ctx.json.materials;\n if (materialsInfo) {\n var materialInfo;\n var material;\n for (var i = 0, len = materialsInfo.length; i < len; i++) {\n materialInfo = materialsInfo[i];\n material = loadMaterial(ctx, materialInfo);\n materialInfo._material = material;\n }\n }\n }\n\n function loadMaterial(ctx, materialInfo) {\n\n var json = ctx.json;\n var cfg = {};\n var textureInfo;\n\n // Common attributes\n\n var normalTexture = materialInfo.normalTexture;\n if (normalTexture) {\n textureInfo = json.textures[normalTexture.index];\n if (textureInfo) {\n cfg.normalMap = textureInfo._texture;\n //cfg.normalMap.encoding = \"linear\";\n }\n }\n\n var occlusionTexture = materialInfo.occlusionTexture;\n if (occlusionTexture) {\n textureInfo = json.textures[occlusionTexture.index];\n if (textureInfo) {\n cfg.occlusionMap = textureInfo._texture;\n }\n }\n\n var emissiveTexture = materialInfo.emissiveTexture;\n if (emissiveTexture) {\n textureInfo = json.textures[emissiveTexture.index];\n if (textureInfo) {\n cfg.emissiveMap = textureInfo._texture;\n //cfg.emissiveMap.encoding = \"sRGB\";\n }\n }\n\n var emissiveFactor = materialInfo.emissiveFactor;\n if (emissiveFactor) {\n cfg.emissive = emissiveFactor;\n }\n\n cfg.backfaces = !!materialInfo.doubleSided;\n\n var alphaMode = materialInfo.alphaMode;\n switch (alphaMode) {\n case \"NORMAL_OPAQUE\":\n cfg.alphaMode = \"opaque\";\n break;\n case \"MASK\":\n cfg.alphaMode = \"mask\";\n break;\n case \"BLEND\":\n cfg.alphaMode = \"blend\";\n break;\n default:\n }\n\n var alphaCutoff = materialInfo.alphaCutoff;\n if (alphaCutoff !== undefined) {\n cfg.alphaCutoff = alphaCutoff;\n }\n\n var extensions = materialInfo.extensions;\n if (extensions) {\n\n // Specular PBR material\n\n var specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n\n var diffuseFactor = specularPBR.diffuseFactor;\n if (diffuseFactor !== null && diffuseFactor !== undefined) {\n cfg.diffuse = diffuseFactor.slice(0, 3);\n cfg.alpha = diffuseFactor[3];\n }\n\n var diffuseTexture = specularPBR.diffuseTexture;\n if (diffuseTexture) {\n textureInfo = json.textures[diffuseTexture.index];\n if (textureInfo) {\n cfg.diffuseMap = textureInfo._texture;\n //cfg.diffuseMap.encoding = \"sRGB\";\n }\n }\n\n var specularFactor = specularPBR.specularFactor;\n if (specularFactor !== null && specularFactor !== undefined) {\n cfg.specular = specularFactor.slice(0, 3);\n }\n\n var glossinessFactor = specularPBR.glossinessFactor;\n if (glossinessFactor !== null && glossinessFactor !== undefined) {\n cfg.glossiness = glossinessFactor;\n }\n\n var specularGlossinessTexture = specularPBR.specularGlossinessTexture;\n if (specularGlossinessTexture) {\n textureInfo = json.textures[specularGlossinessTexture.index];\n if (textureInfo) {\n cfg.specularGlossinessMap = textureInfo._texture;\n //cfg.specularGlossinessMap.encoding = \"linear\";\n }\n }\n\n return new SpecularMaterial(ctx.modelNode, cfg);\n }\n\n // Common Phong, Blinn, Lambert or Constant materials\n\n var common = extensions[\"KHR_materials_common\"];\n if (common) {\n\n var technique = common.technique;\n var values = common.values || {};\n\n var blinn = technique === \"BLINN\";\n var phong = technique === \"PHONG\";\n var lambert = technique === \"LAMBERT\";\n var constant = technique === \"CONSTANT\";\n\n var shininess = values.shininess;\n if ((blinn || phong) && shininess !== null && shininess !== undefined) {\n cfg.shininess = shininess;\n } else {\n cfg.shininess = 0;\n }\n var texture;\n var diffuse = values.diffuse;\n if (diffuse && (blinn || phong || lambert)) {\n if (utils.isString(diffuse)) {\n texture = ctx.textures[diffuse];\n if (texture) {\n cfg.diffuseMap = texture;\n // cfg.diffuseMap.encoding = \"sRGB\";\n }\n } else {\n cfg.diffuse = diffuse.slice(0, 3);\n }\n } else {\n cfg.diffuse = [0, 0, 0];\n }\n\n var specular = values.specular;\n if (specular && (blinn || phong)) {\n if (utils.isString(specular)) {\n texture = ctx.textures[specular];\n if (texture) {\n cfg.specularMap = texture;\n }\n } else {\n cfg.specular = specular.slice(0, 3);\n }\n } else {\n cfg.specular = [0, 0, 0];\n }\n\n var emission = values.emission;\n if (emission) {\n if (utils.isString(emission)) {\n texture = ctx.textures[emission];\n if (texture) {\n cfg.emissiveMap = texture;\n }\n } else {\n cfg.emissive = emission.slice(0, 3);\n }\n } else {\n cfg.emissive = [0, 0, 0];\n }\n\n var transparency = values.transparency;\n if (transparency !== null && transparency !== undefined) {\n cfg.alpha = transparency;\n } else {\n cfg.alpha = 1.0;\n }\n\n var transparent = values.transparent;\n if (transparent !== null && transparent !== undefined) {\n //cfg.transparent = transparent;\n } else {\n //cfg.transparent = 1.0;\n }\n\n return new PhongMaterial(ctx.scene, cfg);\n }\n }\n\n // Metallic PBR naterial\n\n var metallicPBR = materialInfo.pbrMetallicRoughness;\n if (metallicPBR) {\n\n var baseColorFactor = metallicPBR.baseColorFactor;\n if (baseColorFactor) {\n cfg.baseColor = baseColorFactor.slice(0, 3);\n cfg.alpha = baseColorFactor[3];\n }\n\n var baseColorTexture = metallicPBR.baseColorTexture;\n if (baseColorTexture) {\n textureInfo = json.textures[baseColorTexture.index];\n if (textureInfo) {\n cfg.baseColorMap = textureInfo._texture;\n //cfg.baseColorMap.encoding = \"sRGB\";\n }\n }\n\n var metallicFactor = metallicPBR.metallicFactor;\n if (metallicFactor !== null && metallicFactor !== undefined) {\n cfg.metallic = metallicFactor;\n }\n\n var roughnessFactor = metallicPBR.roughnessFactor;\n if (roughnessFactor !== null && roughnessFactor !== undefined) {\n cfg.roughness = roughnessFactor;\n }\n\n var metallicRoughnessTexture = metallicPBR.metallicRoughnessTexture;\n if (metallicRoughnessTexture) {\n textureInfo = json.textures[metallicRoughnessTexture.index];\n if (textureInfo) {\n cfg.metallicRoughnessMap = textureInfo._texture;\n // cfg.metallicRoughnessMap.encoding = \"linear\";\n }\n }\n\n return new MetallicMaterial(ctx.scene, cfg);\n }\n\n // Default material\n\n return new PhongMaterial(ctx.scene, cfg);\n }\n\n // Extract diffuse/baseColor and alpha into RGBA Mesh 'colorize' property\n function loadMaterialColorize(ctx, materialInfo) {\n\n var json = ctx.json;\n var colorize = new Float32Array([1, 1, 1, 1]);\n\n var extensions = materialInfo.extensions;\n if (extensions) {\n\n // Specular PBR material\n\n var specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n var diffuseFactor = specularPBR.diffuseFactor;\n if (diffuseFactor !== null && diffuseFactor !== undefined) {\n colorize.set(diffuseFactor);\n }\n }\n\n // Common Phong, Blinn, Lambert or Constant materials\n\n var common = extensions[\"KHR_materials_common\"];\n if (common) {\n\n var technique = common.technique;\n var values = common.values || {};\n\n var blinn = technique === \"BLINN\";\n var phong = technique === \"PHONG\";\n var lambert = technique === \"LAMBERT\";\n var constant = technique === \"CONSTANT\";\n\n var diffuse = values.diffuse;\n if (diffuse && (blinn || phong || lambert)) {\n if (!utils.isString(diffuse)) {\n colorize.set(diffuse);\n }\n }\n\n var transparency = values.transparency;\n if (transparency !== null && transparency !== undefined) {\n colorize[3] = transparency;\n }\n\n var transparent = values.transparent;\n if (transparent !== null && transparent !== undefined) {\n colorize[3] = transparent;\n }\n }\n }\n\n // Metallic PBR naterial\n\n var metallicPBR = materialInfo.pbrMetallicRoughness;\n if (metallicPBR) {\n var baseColorFactor = metallicPBR.baseColorFactor;\n if (baseColorFactor) {\n colorize.set(baseColorFactor);\n }\n }\n\n return colorize;\n }\n\n function loadMeshes(ctx) {\n var meshes = ctx.json.meshes;\n if (meshes) {\n for (var i = 0, len = meshes.length; i < len; i++) {\n loadMesh(ctx, meshes[i]);\n }\n }\n }\n\n function loadMesh(ctx, meshInfo) {\n var json = ctx.json;\n var mesh = [];\n var primitivesInfo = meshInfo.primitives;\n var materialIndex;\n var materialInfo;\n var accessorInfo;\n var attributes;\n\n if (primitivesInfo) {\n\n var primitiveInfo;\n var indicesIndex;\n var positionsIndex;\n var normalsIndex;\n var uv0Index;\n var geometryCfg;\n var meshCfg;\n var geometry;\n\n for (var i = 0, len = primitivesInfo.length; i < len; i++) {\n\n geometryCfg = {\n primitive: \"triangles\",\n compressGeometry: true,\n edgeThreshold: ctx.edgeThreshold\n };\n\n primitiveInfo = primitivesInfo[i];\n indicesIndex = primitiveInfo.indices;\n\n if (indicesIndex !== null && indicesIndex !== undefined) {\n accessorInfo = json.accessors[indicesIndex];\n geometryCfg.indices = accessorInfo._typedArray;\n }\n\n attributes = primitiveInfo.attributes;\n if (!attributes) {\n continue;\n }\n\n positionsIndex = attributes.POSITION;\n\n if (positionsIndex !== null && positionsIndex !== undefined) {\n accessorInfo = json.accessors[positionsIndex];\n geometryCfg.positions = accessorInfo._typedArray;\n }\n\n normalsIndex = attributes.NORMAL;\n\n if (normalsIndex !== null && normalsIndex !== undefined) {\n accessorInfo = json.accessors[normalsIndex];\n geometryCfg.normals = accessorInfo._typedArray;\n }\n\n uv0Index = attributes.TEXCOORD_0;\n\n if (uv0Index !== null && uv0Index !== undefined) {\n accessorInfo = json.accessors[uv0Index];\n geometryCfg.uv = accessorInfo._typedArray;\n }\n\n meshCfg = {};\n\n if (ctx.readableGeometry) {\n geometry = new ReadableGeometry(ctx.modelNode, geometryCfg);\n } else {\n geometry = new VBOGeometry(ctx.modelNode, geometryCfg);\n }\n\n meshCfg.geometry = geometry;\n\n materialIndex = primitiveInfo.material;\n if (materialIndex !== null && materialIndex !== undefined) {\n materialInfo = json.materials[materialIndex];\n if (materialInfo) {\n meshCfg.material = materialInfo._material;\n }\n }\n\n mesh.push(meshCfg);\n }\n }\n meshInfo._mesh = mesh;\n }\n\n function loadDefaultScene(ctx) {\n var json = ctx.json;\n var scene = json.scene || 0;\n var defaultSceneInfo = json.scenes[scene];\n if (!defaultSceneInfo) {\n error(ctx, \"glTF has no default scene\");\n return;\n }\n loadScene(ctx, defaultSceneInfo);\n }\n\n function loadScene(ctx, sceneInfo) {\n var nodes = sceneInfo.nodes;\n if (!nodes) {\n return;\n }\n var json = ctx.json;\n var glTFNode;\n for (var i = 0, len = nodes.length; i < len; i++) {\n glTFNode = json.nodes[nodes[i]];\n if (!glTFNode) {\n error(ctx, \"Node not found: \" + i);\n continue;\n }\n loadNode(ctx, glTFNode, null, null);\n }\n }\n\n function loadNode(ctx, glTFNode, matrix, parent) {\n\n parent = parent || ctx.modelNode;\n\n var createEntity;\n\n if (ctx.prioritizeGLTFNode) {\n const priority = ctx.prioritizeGLTFNode(ctx.modelNode.id, glTFNode);\n if (priority === undefined || priority === null) {\n return;\n }\n }\n\n if (ctx.handleGLTFNode) {\n var actions = {};\n if (!ctx.handleGLTFNode(ctx.modelNode.id, glTFNode, actions)) {\n return;\n }\n if (actions.createEntity) {\n createEntity = actions.createEntity;\n }\n }\n\n const json = ctx.json;\n const modelNode = ctx.modelNode;\n const hasChildNodes = glTFNode.children && glTFNode.children.length > 0;\n\n var localMatrix;\n\n if (glTFNode.matrix) {\n localMatrix = glTFNode.matrix;\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.translation) {\n localMatrix = math.translationMat4v(glTFNode.translation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.rotation) {\n localMatrix = math.quaternionToMat4(glTFNode.rotation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.scale) {\n localMatrix = math.scalingMat4v(glTFNode.scale);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.mesh !== undefined) {\n\n var meshInfo = json.meshes[glTFNode.mesh];\n\n if (meshInfo) {\n\n var meshesInfo = meshInfo._mesh;\n var meshesInfoMesh;\n var mesh;\n var numMeshes = meshesInfo.length;\n\n if (!createEntity && numMeshes > 0 && !hasChildNodes) {\n\n // Case 1: Not creating object, node has meshes, node has no child nodes\n\n for (var i = 0, len = numMeshes; i < len; i++) {\n meshesInfoMesh = meshesInfo[i];\n let meshCfg = {\n geometry: meshesInfoMesh.geometry,\n matrix: matrix\n };\n utils.apply(ctx.modelNodeProps, meshCfg);\n meshCfg.material = meshesInfoMesh.material;\n mesh = new Mesh(modelNode, meshCfg);\n parent.addChild(mesh, false); // Don't automatically inherit properties\n }\n return;\n }\n\n if (createEntity && numMeshes === 1 && !hasChildNodes) {\n\n // Case 2: Creating object, node has one mesh, node has no child nodes\n\n meshesInfoMesh = meshesInfo[0];\n let meshCfg = {\n geometry: meshesInfoMesh.geometry,\n matrix: matrix\n };\n utils.apply(ctx.modelNodeProps, meshCfg);\n meshCfg.material = meshesInfoMesh.material;\n utils.apply(createEntity, meshCfg);\n mesh = new Mesh(modelNode, meshCfg);\n parent.addChild(mesh, false); // Don't automatically inherit properties\n return;\n }\n\n if (createEntity && numMeshes > 0 && !hasChildNodes) {\n\n // Case 3: Creating object, node has meshes, node has no child nodes\n\n let nodeCfg = {\n matrix: matrix\n };\n utils.apply(ctx.modelNodeProps, nodeCfg);\n utils.apply(createEntity, nodeCfg);\n let childNode = new Node(modelNode, nodeCfg);\n parent.addChild(childNode, false);\n for (let i = 0, len = numMeshes; i < len; i++) {\n meshesInfoMesh = meshesInfo[i];\n let meshCfg = {\n geometry: meshesInfoMesh.geometry\n };\n utils.apply(ctx.modelNodeProps, meshCfg);\n meshCfg.material = meshesInfoMesh.material;\n utils.apply(createEntity, meshCfg);\n meshCfg.id = null; // Avoid ID clash with parent Node\n mesh = new Mesh(modelNode, meshCfg);\n childNode.addChild(mesh, false);\n }\n return;\n }\n\n if (!createEntity && numMeshes > 0 && hasChildNodes) {\n\n // Case 4: Not creating object, node has meshes, node has child nodes\n\n let nodeCfg = {\n matrix: matrix\n };\n utils.apply(ctx.modelNodeProps, nodeCfg);\n let childNode = new Node(modelNode, nodeCfg);\n parent.addChild(childNode, false);\n for (let i = 0, len = numMeshes; i < len; i++) {\n meshesInfoMesh = meshesInfo[i];\n let meshCfg = {\n geometry: meshesInfoMesh.geometry\n };\n utils.apply(nodeCfg, meshCfg);\n meshCfg.id = null; // Avoid ID clash with parent Node\n meshCfg.matrix = null; // Node has matrix\n meshCfg.material = meshesInfoMesh.material;\n mesh = new Mesh(modelNode, meshCfg);\n childNode.addChild(mesh, false);\n }\n matrix = null;\n parent = childNode;\n }\n\n if (createEntity && numMeshes === 0 && hasChildNodes) {\n\n // Case 5: Creating explicit object, node has meshes OR node has child nodes\n\n let nodeCfg = {\n matrix: matrix\n };\n utils.apply(ctx.modelNodeProps, nodeCfg);\n utils.apply(createEntity, nodeCfg);\n createEntity.matrix = matrix;\n let childNode = new Node(modelNode, nodeCfg);\n parent.addChild(childNode, false); // Don't automatically inherit properties\n matrix = null;\n parent = childNode;\n }\n\n if (createEntity && numMeshes > 0 || hasChildNodes) {\n\n // Case 6: Creating explicit object, node has meshes OR node has child nodes\n\n let nodeCfg = {\n matrix: matrix\n };\n utils.apply(ctx.modelNodeProps, nodeCfg);\n if (createEntity) {\n utils.apply(createEntity, nodeCfg);\n }\n let childNode = new Node(modelNode, nodeCfg);\n parent.addChild(childNode, false); // Don't automatically inherit properties\n for (let i = 0, len = numMeshes; i < len; i++) {\n meshesInfoMesh = meshesInfo[i];\n let meshCfg = {\n geometry: meshesInfoMesh.geometry\n };\n utils.apply(ctx.modelProps, meshCfg);\n meshCfg.material = meshesInfoMesh.material;\n if (createEntity) {\n utils.apply(createEntity, meshCfg);\n }\n meshCfg.id = null; // Avoid ID clash with parent Node\n mesh = new Mesh(modelNode, meshCfg);\n childNode.addChild(mesh, false); // Don't automatically inherit properties\n }\n matrix = null;\n parent = childNode;\n }\n }\n }\n\n if (glTFNode.children) {\n var children = glTFNode.children;\n var childNodeInfo;\n var childNodeIdx;\n for (let i = 0, len = children.length; i < len; i++) {\n childNodeIdx = children[i];\n childNodeInfo = json.nodes[childNodeIdx];\n if (!childNodeInfo) {\n error(ctx, \"Node not found: \" + i);\n continue;\n }\n loadNode(ctx, childNodeInfo, matrix, parent);\n }\n }\n }\n\n function error(ctx, msg) {\n ctx.plugin.error(msg);\n }\n})();\n\nexport {GLTFSceneGraphLoader}\n", @@ -9199,7 +9481,7 @@ "lineNumber": 1 }, { - "__docId__": 562, + "__docId__": 576, "kind": "variable", "name": "loadGLTF", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js", @@ -9220,7 +9502,7 @@ "ignore": true }, { - "__docId__": 563, + "__docId__": 577, "kind": "variable", "name": "parseGLTF", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js", @@ -9241,7 +9523,7 @@ "ignore": true }, { - "__docId__": 564, + "__docId__": 578, "kind": "class", "name": "GLTFSceneGraphLoader", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js", @@ -9257,7 +9539,7 @@ "ignore": true }, { - "__docId__": 565, + "__docId__": 579, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js~GLTFSceneGraphLoader", @@ -9271,7 +9553,7 @@ "undocument": true }, { - "__docId__": 566, + "__docId__": 580, "kind": "method", "name": "load", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js~GLTFSceneGraphLoader", @@ -9324,7 +9606,7 @@ "return": null }, { - "__docId__": 567, + "__docId__": 581, "kind": "method", "name": "parse", "memberof": "src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js~GLTFSceneGraphLoader", @@ -9376,354 +9658,8 @@ ], "return": null }, - { - "__docId__": 568, - "kind": "file", - "name": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js", - "content": "import {Plugin} from \"../../viewer/Plugin.js\";\nimport {ObjectsMemento} from \"../../viewer/scene/mementos/ObjectsMemento.js\";\nimport {CameraMemento} from \"../../viewer/scene/mementos/CameraMemento.js\";\nimport {ModelGroundShadow} from \"./GroundShadow.js\";\n\n\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/#GroundShadow_GroundShadowPlugin_recipe2)]\n *\n * ## Overview\n *\n\n */\nclass GroundShadowPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"GroundShadow\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"GroundShadow\", viewer);\n\n this._objectsMemento = new ObjectsMemento();\n\n this._cameraMemento = new CameraMemento();\n\n /**\n * A {@link ModelGroundShadow} for each model.\n *\n * These are created and destroyed automatically as models are loaded and destroyed.\n *\n * @type {{String:ModelGroundShadow}}\n */\n this.groundShadows = {};\n\n this._onModelLoaded = this.viewer.scene.on(\"modelLoaded\", (modelId) => {\n\n const groundShadow = new ModelGroundShadow(this, )\n });\n }\n\n _registerModel(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.rootMetaObject) {\n return;\n }\n const storeyIds = metaModel.rootMetaObject.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 aabb = scene.getAABB(childObjectIds);\n const numObjects = (Math.random() > 0.5) ? childObjectIds.length : 0;\n const storey = new Dimensions(this, aabb, modelId, storeyId, numObjects);\n storey._onModelDestroyed = model.once(\"destroyed\", () => {\n this._deregisterModel(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 _deregisterModel(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 * Destroys this GroundShadowPlugin.\n */\n destroy() {\n super.destroy();\n }\n}\n\nexport {GroundShadowPlugin}\n", - "static": true, - "longname": "/home/lindsay/xeolabs/xeokit/xeokit-nov-18/xeokit-sdk/src/plugins/GroundShadowPlugin/GroundShadowPlugin.js", - "access": "public", - "description": null, - "lineNumber": 1 - }, - { - "__docId__": 569, - "kind": "class", - "name": "GroundShadowPlugin", - "memberof": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js", - "static": true, - "longname": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin", - "access": "public", - "export": true, - "importPath": "@xeokit/xeokit-sdk/src/plugins/GroundShadowPlugin/GroundShadowPlugin.js", - "importStyle": "{GroundShadowPlugin}", - "description": "A {@link Viewer} plugin that provides methods for visualizing IfcBuildingStoreys.\n\n \n\n[[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#GroundShadow_GroundShadowPlugin_recipe2)]\n\n## Overview", - "lineNumber": 20, - "interface": false, - "extends": [ - "src/viewer/Plugin.js~Plugin" - ] - }, - { - "__docId__": 570, - "kind": "constructor", - "name": "constructor", - "memberof": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin", - "generator": false, - "async": false, - "static": false, - "longname": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin#constructor", - "access": "public", - "description": "", - "lineNumber": 29, - "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": "\"GroundShadow\"", - "defaultRaw": "GroundShadow", - "name": "cfg.id", - "description": "Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}." - } - ] - }, - { - "__docId__": 571, - "kind": "member", - "name": "_objectsMemento", - "memberof": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin", - "static": false, - "longname": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin#_objectsMemento", - "access": "private", - "description": null, - "lineNumber": 33, - "undocument": true, - "ignore": true, - "type": { - "types": [ - "*" - ] - } - }, - { - "__docId__": 572, - "kind": "member", - "name": "_cameraMemento", - "memberof": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin", - "static": false, - "longname": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin#_cameraMemento", - "access": "private", - "description": null, - "lineNumber": 35, - "undocument": true, - "ignore": true, - "type": { - "types": [ - "*" - ] - } - }, - { - "__docId__": 573, - "kind": "member", - "name": "groundShadows", - "memberof": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin", - "static": false, - "longname": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin#groundShadows", - "access": "public", - "description": "A {@link ModelGroundShadow} for each model.\n\nThese are created and destroyed automatically as models are loaded and destroyed.", - "lineNumber": 44, - "type": { - "nullable": null, - "types": [ - "{String:ModelGroundShadow}" - ], - "spread": false, - "description": null - } - }, - { - "__docId__": 574, - "kind": "member", - "name": "_onModelLoaded", - "memberof": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin", - "static": false, - "longname": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin#_onModelLoaded", - "access": "private", - "description": null, - "lineNumber": 46, - "undocument": true, - "ignore": true, - "type": { - "types": [ - "*" - ] - } - }, - { - "__docId__": 575, - "kind": "method", - "name": "_registerModel", - "memberof": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin", - "generator": false, - "async": false, - "static": false, - "longname": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin#_registerModel", - "access": "private", - "description": null, - "lineNumber": 52, - "undocument": true, - "ignore": true, - "params": [ - { - "name": "modelId", - "types": [ - "*" - ] - } - ], - "return": null - }, - { - "__docId__": 576, - "kind": "method", - "name": "_deregisterModel", - "memberof": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin", - "generator": false, - "async": false, - "static": false, - "longname": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin#_deregisterModel", - "access": "private", - "description": null, - "lineNumber": 81, - "undocument": true, - "ignore": true, - "params": [ - { - "name": "modelId", - "types": [ - "*" - ] - } - ], - "return": null - }, - { - "__docId__": 577, - "kind": "method", - "name": "destroy", - "memberof": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin", - "generator": false, - "async": false, - "static": false, - "longname": "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin#destroy", - "access": "public", - "description": "Destroys this GroundShadowPlugin.", - "lineNumber": 101, - "params": [], - "return": null - }, - { - "__docId__": 578, - "kind": "file", - "name": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js", - "content": "import {Mesh} from \"../../viewer/scene/mesh/Mesh.js\";\nimport {VBOGeometry} from \"../../viewer/scene/geometry/VBOGeometry.js\";\nimport {buildPlaneGeometry} from \"../../viewer/scene/geometry/builders/buildPlaneGeometry.js\";\nimport {PhongMaterial} from \"../../viewer/scene/materials/PhongMaterial.js\";\nimport {Texture} from \"../../viewer/scene/materials/Texture.js\";\nimport {Component} from \"../../viewer/scene/Component.js\";\n\nclass ModelGroundShadow extends Component {\n\n constructor(owner, cfg) {\n\n super(owner, cfg);\n\n this._modelId = cfg.modelId;\n\n this._texture = new Texture(this, {\n image: this.image\n });\n\n this._mesh = new Mesh(this, {\n geometry: new VBOGeometry(this, buildPlaneGeometry({\n xSize: 1,\n ySize: 1,\n zSize: 1\n })),\n material: new PhongMaterial(this, {\n ambient: [0.9, 0.3, 0.9],\n shininess: 30,\n diffuseMap: this._texture\n })\n });\n }\n\n set image(image) {\n this._texture.image = image;\n }\n\n destroy() {\n super.destroy();\n //..\n }\n}\n\nexport {ModelGroundShadow};", - "static": true, - "longname": "/home/lindsay/xeolabs/xeokit/xeokit-nov-18/xeokit-sdk/src/plugins/GroundShadowPlugin/ModelGroundShadow.js", - "access": "public", - "description": null, - "lineNumber": 1 - }, - { - "__docId__": 579, - "kind": "class", - "name": "ModelGroundShadow", - "memberof": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js", - "static": true, - "longname": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow", - "access": "public", - "export": true, - "importPath": "@xeokit/xeokit-sdk/src/plugins/GroundShadowPlugin/ModelGroundShadow.js", - "importStyle": "{ModelGroundShadow}", - "description": null, - "lineNumber": 8, - "undocument": true, - "interface": false, - "extends": [ - "src/viewer/scene/Component.js~Component" - ] - }, - { - "__docId__": 580, - "kind": "constructor", - "name": "constructor", - "memberof": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow", - "generator": false, - "async": false, - "static": false, - "longname": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow#constructor", - "access": "public", - "description": null, - "lineNumber": 10, - "undocument": true - }, - { - "__docId__": 581, - "kind": "member", - "name": "_modelId", - "memberof": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow", - "static": false, - "longname": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow#_modelId", - "access": "private", - "description": null, - "lineNumber": 14, - "undocument": true, - "ignore": true, - "type": { - "types": [ - "*" - ] - } - }, { "__docId__": 582, - "kind": "member", - "name": "_texture", - "memberof": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow", - "static": false, - "longname": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow#_texture", - "access": "private", - "description": null, - "lineNumber": 16, - "undocument": true, - "ignore": true, - "type": { - "types": [ - "*" - ] - } - }, - { - "__docId__": 583, - "kind": "member", - "name": "_mesh", - "memberof": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow", - "static": false, - "longname": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow#_mesh", - "access": "private", - "description": null, - "lineNumber": 20, - "undocument": true, - "ignore": true, - "type": { - "types": [ - "*" - ] - } - }, - { - "__docId__": 584, - "kind": "set", - "name": "image", - "memberof": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow", - "generator": false, - "async": false, - "static": false, - "longname": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow#image", - "access": "public", - "description": null, - "lineNumber": 34, - "undocument": true - }, - { - "__docId__": 585, - "kind": "method", - "name": "destroy", - "memberof": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow", - "generator": false, - "async": false, - "static": false, - "longname": "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow#destroy", - "access": "public", - "description": null, - "lineNumber": 38, - "undocument": true, - "params": [], - "return": null - }, - { - "__docId__": 586, "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, cfg = {}) {\n\n var axisLabels = false;\n\n const cubeColor = \"lightgrey\";\n const cubeHighlightColor = cfg.hoverColor || \"rgba(0,0,0,0.4)\";\n\n var height = 500;\n var width = height + (height / 3);\n var 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.leftColor || cfg.color || \"#FF5555\"},\n {boundary: [0, 6, 6, 6], color: cfg.rightColor || 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: \"front\", boundaries: [[7, 7, 4, 4]], dir: [0, 1, 0], up: [0, 0, 1]},\n {label: \"back\", boundaries: [[19, 7, 4, 4]], dir: [0, -1, 0], up: [0, 0, 1]},\n {label: \"right\", boundaries: [[13, 7, 4, 4]], dir: [-1, 0, 0], up: [0, 0, 1]},\n {label: \"left\", boundaries: [[1, 7, 4, 4]], dir: [1, 0, 0], up: [0, 0, 1]},\n {label: \"top\", boundaries: [[7, 1, 4, 4]], dir: [0, 0, -1], up: [0, 1, 0]},\n {label: \"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.leftColor || cfg.color || \"#FF5555\"},\n {boundary: [0, 6, 6, 6], color: cfg.rightColor || 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 {label: \"front\", boundaries: [[7, 7, 4, 4]], dir: [0, 0, -1], up: [0, 1, 0]},\n {label: \"back\", boundaries: [[19, 7, 4, 4]], dir: [0, 0, 1], up: [0, 1, 0]},\n {label: \"right\", boundaries: [[13, 7, 4, 4]], dir: [-1, 0, 0], up: [0, 1, 0]},\n {label: \"left\", boundaries: [[1, 7, 4, 4]], dir: [1, 0, 0], up: [0, 1, 0]},\n {label: \"top\", boundaries: [[7, 1, 4, 4]], dir: [0, -1, 0], up: [0, 0, -1]},\n {label: \"bottom\", boundaries: [[7, 13, 4, 4]], dir: [0, 1, 0], up: [0, 0, 1]},\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, -1, 0], up: [1, 1, 0]},\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, -1, 0], up: [-1, 1, 0]},\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, 1, 0], up: [-1, 1, 0]},\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, 1, 0], up: [1, 1, 0]},\n {boundaries: [[5, 7, 2, 4]], dir: [1, 0, -1], up: [0, 1, 0]},\n {boundaries: [[11, 7, 2, 4]], dir: [-1, 0, -1], up: [0, 1, 0]},\n {boundaries: [[17, 7, 2, 4]], dir: [-1, 0, 1], up: [0, 1, 0]},\n {boundaries: [[0, 7, 1, 4], [23, 7, 1, 4]], dir: [1, 0, 1], up: [0, 1, 0]},\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 for (let i = 0, len = areasZUp.length; i < len; i++) {\n math.normalizeVec3(areasZUp[i].dir, areasZUp[i].dir);\n math.normalizeVec3(areasYUp[i].dir, areasYUp[i].dir);\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 var 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 = \"black\";\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\n var translateLabel = (function () {\n const dictionaries = {\n \"yUp\": {\"front\": \"+Z\", \"back\": \"-Z\", \"right\": \"+X\", \"left\": \"-X\", \"top\": \"+Y\", \"bottom\": \"-Y\"},\n \"en\": {\"front\": \"FRONT\", \"back\": \"BACK\", \"right\": \"RIGHT\", \"left\": \"LEFT\", \"top\": \"TOP\", \"bottom\": \"BOTTOM\"}\n };\n return function (key) {\n var dictionary;\n if (axisLabels) {\n if (zUp) {\n dictionary = dictionaries[\"zUp\"];\n } else {\n dictionary = dictionaries[\"yUp\"];\n }\n } else {\n dictionary = dictionaries[viewer.language || \"en\"];\n }\n return dictionary ? (dictionary[key] || key) : 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 this.clear();\n}\n\nexport {CubeTextureCanvas};\n", @@ -9734,7 +9670,7 @@ "lineNumber": 1 }, { - "__docId__": 587, + "__docId__": 583, "kind": "function", "name": "CubeTextureCanvas", "memberof": "src/plugins/NavCubePlugin/CubeTextureCanvas.js", @@ -9769,7 +9705,7 @@ "return": null }, { - "__docId__": 588, + "__docId__": 584, "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\";\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/#gizmos_NavCubePlugin)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#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} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {NavCubePlugin} from \"../src/plugins/NavCubePlugin/NavCubePlugin.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/duplex.xkt\",\n * metaModelSrc: \"./metaModels/duplex/metaModel.json\", // Sets visual states of object in model\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 {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 {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 */\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 this._zUp = Boolean(viewer.camera.zUp);\n\n var self = this;\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 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, cfg);\n\n this._cubeSampler = new Texture(navCubeScene, {\n image: this._cubeTextureCanvas.getImage(),\n flipY: true,\n wrapS: \"clampToEdge\",\n wrapT: \"clampToEdge\"\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 = 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;\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 var dragging = false;\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 flyTo(dir, up, function () {\n if (lastAreaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);\n self._repaint();\n lastAreaId = -1;\n }\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 !== undefined) {\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 }\n }\n }\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(55.0 / 2));\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.3,\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.3,\n fitFOV: self._cameraFitFOV\n }, ok);\n }\n };\n })();\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 this._shadow.visible = visible;\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 * 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.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\n", @@ -9780,7 +9716,7 @@ "lineNumber": 1 }, { - "__docId__": 589, + "__docId__": 585, "kind": "class", "name": "NavCubePlugin", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js", @@ -9798,7 +9734,7 @@ ] }, { - "__docId__": 590, + "__docId__": 586, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10039,7 +9975,7 @@ ] }, { - "__docId__": 591, + "__docId__": 587, "kind": "member", "name": "_navCubeScene", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10057,7 +9993,7 @@ } }, { - "__docId__": 592, + "__docId__": 588, "kind": "member", "name": "_navCubeCanvas", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10075,7 +10011,7 @@ } }, { - "__docId__": 593, + "__docId__": 589, "kind": "member", "name": "_navCubeCamera", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10093,7 +10029,7 @@ } }, { - "__docId__": 594, + "__docId__": 590, "kind": "member", "name": "_zUp", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10111,7 +10047,7 @@ } }, { - "__docId__": 595, + "__docId__": 591, "kind": "member", "name": "_synchCamera", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10129,7 +10065,7 @@ } }, { - "__docId__": 596, + "__docId__": 592, "kind": "member", "name": "_cubeTextureCanvas", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10147,7 +10083,7 @@ } }, { - "__docId__": 597, + "__docId__": 593, "kind": "member", "name": "_cubeSampler", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10165,7 +10101,7 @@ } }, { - "__docId__": 598, + "__docId__": 594, "kind": "member", "name": "_cubeMesh", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10183,7 +10119,7 @@ } }, { - "__docId__": 599, + "__docId__": 595, "kind": "member", "name": "_shadow", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10201,7 +10137,7 @@ } }, { - "__docId__": 600, + "__docId__": 596, "kind": "member", "name": "_onCameraMatrix", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10219,7 +10155,7 @@ } }, { - "__docId__": 601, + "__docId__": 597, "kind": "member", "name": "_onCameraWorldAxis", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10237,7 +10173,7 @@ } }, { - "__docId__": 604, + "__docId__": 600, "kind": "member", "name": "_onCameraFOV", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10255,7 +10191,7 @@ } }, { - "__docId__": 605, + "__docId__": 601, "kind": "member", "name": "_onCameraProjection", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10273,7 +10209,7 @@ } }, { - "__docId__": 606, + "__docId__": 602, "kind": "method", "name": "send", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10302,7 +10238,7 @@ "return": null }, { - "__docId__": 607, + "__docId__": 603, "kind": "method", "name": "_repaint", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10319,7 +10255,7 @@ "return": null }, { - "__docId__": 608, + "__docId__": 604, "kind": "method", "name": "setVisible", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10345,7 +10281,7 @@ "return": null }, { - "__docId__": 609, + "__docId__": 605, "kind": "method", "name": "getVisible", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10367,7 +10303,7 @@ "params": [] }, { - "__docId__": 610, + "__docId__": 606, "kind": "method", "name": "setFitVisible", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10393,7 +10329,7 @@ "return": null }, { - "__docId__": 611, + "__docId__": 607, "kind": "member", "name": "_fitVisible", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10411,7 +10347,7 @@ } }, { - "__docId__": 612, + "__docId__": 608, "kind": "method", "name": "getFitVisible", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10433,7 +10369,7 @@ "params": [] }, { - "__docId__": 613, + "__docId__": 609, "kind": "method", "name": "setCameraFly", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10459,7 +10395,7 @@ "return": null }, { - "__docId__": 614, + "__docId__": 610, "kind": "member", "name": "_cameraFly", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10477,7 +10413,7 @@ } }, { - "__docId__": 615, + "__docId__": 611, "kind": "method", "name": "getCameraFly", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10505,7 +10441,7 @@ "params": [] }, { - "__docId__": 616, + "__docId__": 612, "kind": "method", "name": "setCameraFitFOV", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10531,7 +10467,7 @@ "return": null }, { - "__docId__": 617, + "__docId__": 613, "kind": "member", "name": "_cameraFitFOV", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10549,7 +10485,7 @@ } }, { - "__docId__": 618, + "__docId__": 614, "kind": "method", "name": "getCameraFitFOV", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10577,7 +10513,7 @@ "params": [] }, { - "__docId__": 619, + "__docId__": 615, "kind": "method", "name": "setCameraFlyDuration", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10603,7 +10539,7 @@ "return": null }, { - "__docId__": 620, + "__docId__": 616, "kind": "member", "name": "_cameraFlyDuration", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10621,7 +10557,7 @@ } }, { - "__docId__": 621, + "__docId__": 617, "kind": "method", "name": "getCameraFlyDuration", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10649,7 +10585,7 @@ "params": [] }, { - "__docId__": 622, + "__docId__": 618, "kind": "method", "name": "setSynchProjection", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10675,7 +10611,7 @@ "return": null }, { - "__docId__": 623, + "__docId__": 619, "kind": "member", "name": "_synchProjection", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10693,7 +10629,7 @@ } }, { - "__docId__": 624, + "__docId__": 620, "kind": "method", "name": "getSynchProjection", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10715,7 +10651,7 @@ "params": [] }, { - "__docId__": 625, + "__docId__": 621, "kind": "method", "name": "destroy", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10730,7 +10666,7 @@ "return": null }, { - "__docId__": 628, + "__docId__": 624, "kind": "member", "name": "_onMouseEnter", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10748,7 +10684,7 @@ } }, { - "__docId__": 629, + "__docId__": 625, "kind": "member", "name": "_onMouseLeave", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10766,7 +10702,7 @@ } }, { - "__docId__": 630, + "__docId__": 626, "kind": "member", "name": "_onMouseDown", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10784,7 +10720,7 @@ } }, { - "__docId__": 631, + "__docId__": 627, "kind": "member", "name": "_onMouseMove", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10802,7 +10738,7 @@ } }, { - "__docId__": 632, + "__docId__": 628, "kind": "member", "name": "_onMouseUp", "memberof": "src/plugins/NavCubePlugin/NavCubePlugin.js~NavCubePlugin", @@ -10820,7 +10756,7 @@ } }, { - "__docId__": 636, + "__docId__": 632, "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](http://xeokit.github.io/xeokit-sdk/examples/#loading_OBJ_SportsCar)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {OBJLoaderPlugin} from \"../src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.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 (see: [Model Metadata](https://github.com/xeolabs/xeokit.io/wiki/Model-Metadata)).\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}", @@ -10831,7 +10767,7 @@ "lineNumber": 1 }, { - "__docId__": 637, + "__docId__": 633, "kind": "class", "name": "OBJLoaderPlugin", "memberof": "src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js", @@ -10855,7 +10791,7 @@ ] }, { - "__docId__": 638, + "__docId__": 634, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin", @@ -10908,7 +10844,7 @@ ] }, { - "__docId__": 639, + "__docId__": 635, "kind": "member", "name": "_sceneGraphLoader", "memberof": "src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin", @@ -10925,7 +10861,7 @@ } }, { - "__docId__": 640, + "__docId__": 636, "kind": "method", "name": "load", "memberof": "src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin", @@ -11083,7 +11019,7 @@ } }, { - "__docId__": 641, + "__docId__": 637, "kind": "method", "name": "destroy", "memberof": "src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js~OBJLoaderPlugin", @@ -11098,7 +11034,7 @@ "return": null }, { - "__docId__": 642, + "__docId__": 638, "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 rtcCenter = tempVec3a;\n\n worldToRTCPositions(geometry.positions, geometry.positions, rtcCenter);\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 rtcCenter: (rtcCenter[0] !== 0 || rtcCenter[1] !== 0 || rtcCenter[2] !== 0) ? rtcCenter : 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};", @@ -11109,7 +11045,7 @@ "lineNumber": 1 }, { - "__docId__": 643, + "__docId__": 639, "kind": "variable", "name": "tempVec3a", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -11130,7 +11066,7 @@ "ignore": true }, { - "__docId__": 644, + "__docId__": 640, "kind": "function", "name": "loadOBJ", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -11169,7 +11105,7 @@ "ignore": true }, { - "__docId__": 645, + "__docId__": 641, "kind": "variable", "name": "parseOBJ", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -11190,7 +11126,7 @@ "ignore": true }, { - "__docId__": 646, + "__docId__": 642, "kind": "function", "name": "loadMTLs", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -11229,7 +11165,7 @@ "ignore": true }, { - "__docId__": 647, + "__docId__": 643, "kind": "function", "name": "loadMTL", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -11274,7 +11210,7 @@ "ignore": true }, { - "__docId__": 648, + "__docId__": 644, "kind": "variable", "name": "parseMTL", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -11295,7 +11231,7 @@ "ignore": true }, { - "__docId__": 649, + "__docId__": 645, "kind": "function", "name": "createMeshes", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -11328,7 +11264,7 @@ "ignore": true }, { - "__docId__": 650, + "__docId__": 646, "kind": "function", "name": "loadFile", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -11367,7 +11303,7 @@ "ignore": true }, { - "__docId__": 651, + "__docId__": 647, "kind": "class", "name": "OBJSceneGraphLoader", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js", @@ -11383,7 +11319,7 @@ "ignore": true }, { - "__docId__": 652, + "__docId__": 648, "kind": "method", "name": "load", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js~OBJSceneGraphLoader", @@ -11429,7 +11365,7 @@ "return": null }, { - "__docId__": 653, + "__docId__": 649, "kind": "method", "name": "parse", "memberof": "src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js~OBJSceneGraphLoader", @@ -11485,7 +11421,7 @@ "return": null }, { - "__docId__": 654, + "__docId__": 650, "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};", @@ -11496,7 +11432,7 @@ "lineNumber": 1 }, { - "__docId__": 655, + "__docId__": 651, "kind": "class", "name": "STLDefaultDataSource", "memberof": "src/plugins/STLLoaderPlugin/STLDefaultDataSource.js", @@ -11511,7 +11447,7 @@ "interface": false }, { - "__docId__": 656, + "__docId__": 652, "kind": "method", "name": "getSTL", "memberof": "src/plugins/STLLoaderPlugin/STLDefaultDataSource.js~STLDefaultDataSource", @@ -11558,7 +11494,7 @@ "return": null }, { - "__docId__": 657, + "__docId__": 653, "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/#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/#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/#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.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 {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}", @@ -11569,7 +11505,7 @@ "lineNumber": 1 }, { - "__docId__": 658, + "__docId__": 654, "kind": "class", "name": "STLLoaderPlugin", "memberof": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js", @@ -11593,7 +11529,7 @@ ] }, { - "__docId__": 659, + "__docId__": 655, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin", @@ -11656,7 +11592,7 @@ ] }, { - "__docId__": 660, + "__docId__": 656, "kind": "member", "name": "_sceneGraphLoader", "memberof": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin", @@ -11673,7 +11609,7 @@ } }, { - "__docId__": 662, + "__docId__": 658, "kind": "set", "name": "dataSource", "memberof": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin", @@ -11694,7 +11630,7 @@ } }, { - "__docId__": 663, + "__docId__": 659, "kind": "member", "name": "_dataSource", "memberof": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin", @@ -11712,7 +11648,7 @@ } }, { - "__docId__": 664, + "__docId__": 660, "kind": "get", "name": "dataSource", "memberof": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin", @@ -11733,7 +11669,7 @@ } }, { - "__docId__": 665, + "__docId__": 661, "kind": "method", "name": "load", "memberof": "src/plugins/STLLoaderPlugin/STLLoaderPlugin.js~STLLoaderPlugin", @@ -11951,7 +11887,7 @@ } }, { - "__docId__": 666, + "__docId__": 662, "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 rtcCenter = tempVec3a;\n\n worldToRTCPositions(positions, positions, rtcCenter);\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 rtcCenter: (rtcCenter[0] !== 0 || rtcCenter[1] !== 0 || rtcCenter[2] !== 0) ? rtcCenter : 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}", @@ -11962,7 +11898,7 @@ "lineNumber": 1 }, { - "__docId__": 667, + "__docId__": 663, "kind": "variable", "name": "tempVec3a", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -11983,7 +11919,7 @@ "ignore": true }, { - "__docId__": 668, + "__docId__": 664, "kind": "function", "name": "parse", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -12028,7 +11964,7 @@ "ignore": true }, { - "__docId__": 669, + "__docId__": 665, "kind": "function", "name": "isBinary", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -12059,7 +11995,7 @@ "ignore": true }, { - "__docId__": 670, + "__docId__": 666, "kind": "function", "name": "parseBinary", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -12104,7 +12040,7 @@ "ignore": true }, { - "__docId__": 671, + "__docId__": 667, "kind": "function", "name": "parseASCII", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -12149,7 +12085,7 @@ "ignore": true }, { - "__docId__": 672, + "__docId__": 668, "kind": "function", "name": "addMesh", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -12206,7 +12142,7 @@ "ignore": true }, { - "__docId__": 673, + "__docId__": 669, "kind": "function", "name": "ensureString", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -12237,7 +12173,7 @@ "ignore": true }, { - "__docId__": 674, + "__docId__": 670, "kind": "function", "name": "ensureBinary", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -12268,7 +12204,7 @@ "ignore": true }, { - "__docId__": 675, + "__docId__": 671, "kind": "function", "name": "decodeText", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -12299,7 +12235,7 @@ "ignore": true }, { - "__docId__": 676, + "__docId__": 672, "kind": "class", "name": "STLSceneGraphLoader", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js", @@ -12315,7 +12251,7 @@ "ignore": true }, { - "__docId__": 677, + "__docId__": 673, "kind": "method", "name": "load", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js~STLSceneGraphLoader", @@ -12368,7 +12304,7 @@ "return": null }, { - "__docId__": 678, + "__docId__": 674, "kind": "method", "name": "parse", "memberof": "src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js~STLSceneGraphLoader", @@ -12409,7 +12345,7 @@ "return": null }, { - "__docId__": 679, + "__docId__": 675, "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._rtcCenter = 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._rtcCenter, this._rtcPos);\n\n this._rootNode.rtcCenter = this._rtcCenter;\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 });\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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 }), 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 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 }), 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 }), 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 }), 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 }), 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 }), 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 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(\"hoverOut\", (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};", @@ -12420,7 +12356,7 @@ "lineNumber": 1 }, { - "__docId__": 680, + "__docId__": 676, "kind": "variable", "name": "zeroVec", "memberof": "src/plugins/SectionPlanesPlugin/Control.js", @@ -12441,7 +12377,7 @@ "ignore": true }, { - "__docId__": 681, + "__docId__": 677, "kind": "variable", "name": "quat", "memberof": "src/plugins/SectionPlanesPlugin/Control.js", @@ -12462,7 +12398,7 @@ "ignore": true }, { - "__docId__": 682, + "__docId__": 678, "kind": "class", "name": "Control", "memberof": "src/plugins/SectionPlanesPlugin/Control.js", @@ -12478,7 +12414,7 @@ "ignore": true }, { - "__docId__": 683, + "__docId__": 679, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12492,7 +12428,7 @@ "ignore": true }, { - "__docId__": 684, + "__docId__": 680, "kind": "member", "name": "id", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12524,7 +12460,7 @@ } }, { - "__docId__": 685, + "__docId__": 681, "kind": "member", "name": "_viewer", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12542,7 +12478,7 @@ } }, { - "__docId__": 686, + "__docId__": 682, "kind": "member", "name": "_visible", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12560,7 +12496,7 @@ } }, { - "__docId__": 687, + "__docId__": 683, "kind": "member", "name": "_pos", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12578,7 +12514,7 @@ } }, { - "__docId__": 688, + "__docId__": 684, "kind": "member", "name": "_rtcCenter", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12596,7 +12532,7 @@ } }, { - "__docId__": 689, + "__docId__": 685, "kind": "member", "name": "_rtcPos", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12614,7 +12550,7 @@ } }, { - "__docId__": 690, + "__docId__": 686, "kind": "member", "name": "_baseDir", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12632,7 +12568,7 @@ } }, { - "__docId__": 691, + "__docId__": 687, "kind": "member", "name": "_rootNode", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12650,7 +12586,7 @@ } }, { - "__docId__": 692, + "__docId__": 688, "kind": "member", "name": "_displayMeshes", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12668,7 +12604,7 @@ } }, { - "__docId__": 693, + "__docId__": 689, "kind": "member", "name": "_affordanceMeshes", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12686,7 +12622,7 @@ } }, { - "__docId__": 694, + "__docId__": 690, "kind": "member", "name": "_ignoreNextSectionPlaneDirUpdate", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12704,7 +12640,7 @@ } }, { - "__docId__": 695, + "__docId__": 691, "kind": "method", "name": "_setSectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12727,7 +12663,7 @@ "return": null }, { - "__docId__": 696, + "__docId__": 692, "kind": "member", "name": "_onSectionPlanePos", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12745,7 +12681,7 @@ } }, { - "__docId__": 697, + "__docId__": 693, "kind": "member", "name": "_onSectionPlaneDir", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12763,7 +12699,7 @@ } }, { - "__docId__": 698, + "__docId__": 694, "kind": "member", "name": "_sectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12781,7 +12717,7 @@ } }, { - "__docId__": 704, + "__docId__": 700, "kind": "get", "name": "sectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12813,7 +12749,7 @@ } }, { - "__docId__": 705, + "__docId__": 701, "kind": "method", "name": "_setPos", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12836,7 +12772,7 @@ "return": null }, { - "__docId__": 706, + "__docId__": 702, "kind": "method", "name": "_setDir", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12859,7 +12795,7 @@ "return": null }, { - "__docId__": 707, + "__docId__": 703, "kind": "method", "name": "_setSectionPlaneDir", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12883,7 +12819,7 @@ "return": null }, { - "__docId__": 709, + "__docId__": 705, "kind": "method", "name": "setVisible", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12916,7 +12852,7 @@ "return": null }, { - "__docId__": 711, + "__docId__": 707, "kind": "method", "name": "getVisible", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12943,7 +12879,7 @@ } }, { - "__docId__": 712, + "__docId__": 708, "kind": "method", "name": "setCulled", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12969,7 +12905,7 @@ "return": null }, { - "__docId__": 713, + "__docId__": 709, "kind": "method", "name": "_createNodes", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -12985,7 +12921,7 @@ "return": null }, { - "__docId__": 717, + "__docId__": 713, "kind": "method", "name": "_bindEvents", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -13002,7 +12938,7 @@ "return": null }, { - "__docId__": 718, + "__docId__": 714, "kind": "member", "name": "_onCameraViewMatrix", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -13020,7 +12956,7 @@ } }, { - "__docId__": 719, + "__docId__": 715, "kind": "member", "name": "_onCameraProjMatrix", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -13038,7 +12974,7 @@ } }, { - "__docId__": 720, + "__docId__": 716, "kind": "member", "name": "_onSceneTick", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -13056,7 +12992,7 @@ } }, { - "__docId__": 721, + "__docId__": 717, "kind": "member", "name": "_onCameraControlHover", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -13074,7 +13010,7 @@ } }, { - "__docId__": 722, + "__docId__": 718, "kind": "member", "name": "_onCameraControlHoverLeave", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -13092,7 +13028,7 @@ } }, { - "__docId__": 723, + "__docId__": 719, "kind": "method", "name": "_destroy", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -13109,7 +13045,7 @@ "return": null }, { - "__docId__": 724, + "__docId__": 720, "kind": "method", "name": "_unbindEvents", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -13126,7 +13062,7 @@ "return": null }, { - "__docId__": 725, + "__docId__": 721, "kind": "method", "name": "_destroyNodes", "memberof": "src/plugins/SectionPlanesPlugin/Control.js~Control", @@ -13143,7 +13079,7 @@ "return": null }, { - "__docId__": 728, + "__docId__": 724, "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", @@ -13154,7 +13090,7 @@ "lineNumber": 1 }, { - "__docId__": 729, + "__docId__": 725, "kind": "class", "name": "Overview", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js", @@ -13170,7 +13106,7 @@ "ignore": true }, { - "__docId__": 730, + "__docId__": 726, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13184,7 +13120,7 @@ "ignore": true }, { - "__docId__": 731, + "__docId__": 727, "kind": "member", "name": "plugin", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13203,7 +13139,7 @@ } }, { - "__docId__": 732, + "__docId__": 728, "kind": "member", "name": "_viewer", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13221,7 +13157,7 @@ } }, { - "__docId__": 733, + "__docId__": 729, "kind": "member", "name": "_onHoverEnterPlane", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13239,7 +13175,7 @@ } }, { - "__docId__": 734, + "__docId__": 730, "kind": "member", "name": "_onHoverLeavePlane", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13257,7 +13193,7 @@ } }, { - "__docId__": 735, + "__docId__": 731, "kind": "member", "name": "_onClickedNothing", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13275,7 +13211,7 @@ } }, { - "__docId__": 736, + "__docId__": 732, "kind": "member", "name": "_onClickedPlane", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13293,7 +13229,7 @@ } }, { - "__docId__": 737, + "__docId__": 733, "kind": "member", "name": "_visible", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13311,7 +13247,7 @@ } }, { - "__docId__": 738, + "__docId__": 734, "kind": "member", "name": "_planes", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13329,7 +13265,7 @@ } }, { - "__docId__": 739, + "__docId__": 735, "kind": "member", "name": "_canvas", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13347,7 +13283,7 @@ } }, { - "__docId__": 740, + "__docId__": 736, "kind": "member", "name": "_scene", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13365,7 +13301,7 @@ } }, { - "__docId__": 741, + "__docId__": 737, "kind": "member", "name": "_zUp", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13383,7 +13319,7 @@ } }, { - "__docId__": 742, + "__docId__": 738, "kind": "member", "name": "_synchCamera", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13401,7 +13337,7 @@ } }, { - "__docId__": 743, + "__docId__": 739, "kind": "member", "name": "_onViewerCameraMatrix", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13419,7 +13355,7 @@ } }, { - "__docId__": 744, + "__docId__": 740, "kind": "member", "name": "_onViewerCameraWorldAxis", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13437,7 +13373,7 @@ } }, { - "__docId__": 745, + "__docId__": 741, "kind": "member", "name": "_onViewerCameraFOV", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13455,7 +13391,7 @@ } }, { - "__docId__": 746, + "__docId__": 742, "kind": "member", "name": "_onInputMouseMove", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13473,7 +13409,7 @@ } }, { - "__docId__": 747, + "__docId__": 743, "kind": "method", "name": "addSectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13496,7 +13432,7 @@ "return": null }, { - "__docId__": 748, + "__docId__": 744, "kind": "method", "name": "setPlaneHighlighted", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13524,7 +13460,7 @@ "return": null }, { - "__docId__": 749, + "__docId__": 745, "kind": "method", "name": "setPlaneSelected", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13552,7 +13488,7 @@ "return": null }, { - "__docId__": 750, + "__docId__": 746, "kind": "method", "name": "removeSectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13575,7 +13511,7 @@ "return": null }, { - "__docId__": 751, + "__docId__": 747, "kind": "method", "name": "setVisible", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13601,7 +13537,7 @@ "return": null }, { - "__docId__": 753, + "__docId__": 749, "kind": "method", "name": "getVisible", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13623,7 +13559,7 @@ "params": [] }, { - "__docId__": 754, + "__docId__": 750, "kind": "method", "name": "destroy", "memberof": "src/plugins/SectionPlanesPlugin/Overview.js~Overview", @@ -13638,7 +13574,7 @@ "return": null }, { - "__docId__": 755, + "__docId__": 751, "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", @@ -13649,7 +13585,7 @@ "lineNumber": 1 }, { - "__docId__": 756, + "__docId__": 752, "kind": "class", "name": "Plane", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js", @@ -13665,7 +13601,7 @@ "ignore": true }, { - "__docId__": 757, + "__docId__": 753, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -13679,7 +13615,7 @@ "ignore": true }, { - "__docId__": 758, + "__docId__": 754, "kind": "member", "name": "id", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -13698,7 +13634,7 @@ } }, { - "__docId__": 759, + "__docId__": 755, "kind": "member", "name": "_sectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -13718,7 +13654,7 @@ "ignore": true }, { - "__docId__": 760, + "__docId__": 756, "kind": "member", "name": "_mesh", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -13736,7 +13672,7 @@ } }, { - "__docId__": 761, + "__docId__": 757, "kind": "member", "name": "_onSectionPlanePos", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -13754,7 +13690,7 @@ } }, { - "__docId__": 762, + "__docId__": 758, "kind": "member", "name": "_onSectionPlaneDir", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -13772,7 +13708,7 @@ } }, { - "__docId__": 763, + "__docId__": 759, "kind": "member", "name": "_highlighted", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -13790,7 +13726,7 @@ } }, { - "__docId__": 764, + "__docId__": 760, "kind": "member", "name": "_selected", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -13808,7 +13744,7 @@ } }, { - "__docId__": 765, + "__docId__": 761, "kind": "method", "name": "setHighlighted", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -13839,7 +13775,7 @@ "return": null }, { - "__docId__": 767, + "__docId__": 763, "kind": "method", "name": "getHighlighted", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -13867,7 +13803,7 @@ } }, { - "__docId__": 768, + "__docId__": 764, "kind": "method", "name": "setSelected", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -13898,7 +13834,7 @@ "return": null }, { - "__docId__": 770, + "__docId__": 766, "kind": "method", "name": "getSelected", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -13926,7 +13862,7 @@ } }, { - "__docId__": 771, + "__docId__": 767, "kind": "method", "name": "destroy", "memberof": "src/plugins/SectionPlanesPlugin/Plane.js~Plane", @@ -13942,7 +13878,7 @@ "return": null }, { - "__docId__": 772, + "__docId__": 768, "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/#gizmos_SectionPlanesPlugin)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#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 *\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} from \"../src/viewer/Viewer.js\";\n * import {GLTFLoaderPlugin} from \"../src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js\";\n * import {SectionPlanesPlugin} from \"../src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.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.-, -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", @@ -13953,7 +13889,7 @@ "lineNumber": 1 }, { - "__docId__": 773, + "__docId__": 769, "kind": "variable", "name": "tempAABB", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js", @@ -13974,7 +13910,7 @@ "ignore": true }, { - "__docId__": 774, + "__docId__": 770, "kind": "variable", "name": "tempVec3", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js", @@ -13995,7 +13931,7 @@ "ignore": true }, { - "__docId__": 775, + "__docId__": 771, "kind": "class", "name": "SectionPlanesPlugin", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js", @@ -14013,7 +13949,7 @@ ] }, { - "__docId__": 776, + "__docId__": 772, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14088,7 +14024,7 @@ ] }, { - "__docId__": 777, + "__docId__": 773, "kind": "member", "name": "_freeControls", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14106,7 +14042,7 @@ } }, { - "__docId__": 778, + "__docId__": 774, "kind": "member", "name": "_sectionPlanes", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14124,7 +14060,7 @@ } }, { - "__docId__": 779, + "__docId__": 775, "kind": "member", "name": "_controls", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14142,7 +14078,7 @@ } }, { - "__docId__": 780, + "__docId__": 776, "kind": "member", "name": "_shownControlId", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14160,7 +14096,7 @@ } }, { - "__docId__": 781, + "__docId__": 777, "kind": "member", "name": "_overview", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14178,7 +14114,7 @@ } }, { - "__docId__": 782, + "__docId__": 778, "kind": "member", "name": "_onSceneSectionPlaneCreated", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14196,7 +14132,7 @@ } }, { - "__docId__": 783, + "__docId__": 779, "kind": "method", "name": "setOverviewVisible", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14222,7 +14158,7 @@ "return": null }, { - "__docId__": 784, + "__docId__": 780, "kind": "method", "name": "getOverviewVisible", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14244,7 +14180,7 @@ "params": [] }, { - "__docId__": 785, + "__docId__": 781, "kind": "get", "name": "sectionPlanes", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14276,7 +14212,7 @@ } }, { - "__docId__": 786, + "__docId__": 782, "kind": "method", "name": "createSectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14369,7 +14305,7 @@ } }, { - "__docId__": 787, + "__docId__": 783, "kind": "method", "name": "_sectionPlaneCreated", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14393,7 +14329,7 @@ "return": null }, { - "__docId__": 788, + "__docId__": 784, "kind": "method", "name": "flipSectionPlanes", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14408,7 +14344,7 @@ "return": null }, { - "__docId__": 789, + "__docId__": 785, "kind": "method", "name": "showControl", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14434,7 +14370,7 @@ "return": null }, { - "__docId__": 791, + "__docId__": 787, "kind": "method", "name": "getShownControl", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14462,7 +14398,7 @@ "params": [] }, { - "__docId__": 792, + "__docId__": 788, "kind": "method", "name": "hideControl", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14477,7 +14413,7 @@ "return": null }, { - "__docId__": 794, + "__docId__": 790, "kind": "method", "name": "destroySectionPlane", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14503,7 +14439,7 @@ "return": null }, { - "__docId__": 796, + "__docId__": 792, "kind": "method", "name": "_sectionPlaneDestroyed", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14527,7 +14463,7 @@ "return": null }, { - "__docId__": 797, + "__docId__": 793, "kind": "method", "name": "clear", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14542,7 +14478,7 @@ "return": null }, { - "__docId__": 798, + "__docId__": 794, "kind": "method", "name": "send", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14571,7 +14507,7 @@ "return": null }, { - "__docId__": 799, + "__docId__": 795, "kind": "method", "name": "destroy", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14586,7 +14522,7 @@ "return": null }, { - "__docId__": 800, + "__docId__": 796, "kind": "method", "name": "_destroyFreeControls", "memberof": "src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js~SectionPlanesPlugin", @@ -14603,7 +14539,7 @@ "return": null }, { - "__docId__": 801, + "__docId__": 797, "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", @@ -14614,7 +14550,7 @@ "lineNumber": 1 }, { - "__docId__": 802, + "__docId__": 798, "kind": "class", "name": "SkyboxesPlugin", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js", @@ -14641,7 +14577,7 @@ ] }, { - "__docId__": 803, + "__docId__": 799, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin", @@ -14655,7 +14591,7 @@ "undocument": true }, { - "__docId__": 804, + "__docId__": 800, "kind": "member", "name": "skyboxes", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin", @@ -14672,7 +14608,7 @@ } }, { - "__docId__": 805, + "__docId__": 801, "kind": "method", "name": "send", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin", @@ -14701,7 +14637,7 @@ "return": null }, { - "__docId__": 806, + "__docId__": 802, "kind": "method", "name": "createSkybox", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin", @@ -14762,7 +14698,7 @@ } }, { - "__docId__": 807, + "__docId__": 803, "kind": "method", "name": "destroySkybox", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin", @@ -14788,7 +14724,7 @@ "return": null }, { - "__docId__": 808, + "__docId__": 804, "kind": "method", "name": "clear", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin", @@ -14803,7 +14739,7 @@ "return": null }, { - "__docId__": 809, + "__docId__": 805, "kind": "method", "name": "destroy", "memberof": "src/plugins/SkyboxesPlugin/SkyboxesPlugin.js~SkyboxesPlugin", @@ -14818,7 +14754,7 @@ "return": null }, { - "__docId__": 810, + "__docId__": 806, "kind": "file", "name": "src/plugins/StoreyViewsPlugin/IFCStoreyPlanObjectStates.js", "content": "/**\n * @desc Property states for {@link Entity}s in {@link Storey}s capture by a {@link StoreyViewsPlugin}.\n *\n * @type {{String:Object}}\n */\nconst IFCStoreyPlanObjectStates = {\n IfcSlab: {\n visible: true,\n edges: false,\n colorize: [1.0, 1.0, 1.0, 1.0]\n },\n IfcWall: {\n visible: true,\n edges: false,\n colorize: [0.1, 0.1, 0.1, 1.0]\n },\n IfcWallStandardCase: {\n visible: true,\n edges: false,\n colorize: [0.1, 0.1, 0.1, 1.0]\n },\n IfcDoor: {\n visible: true,\n edges: false,\n colorize: [0.5, 0.5, 0.5, 1.0]\n },\n IfcWindow: {\n visible: true,\n edges: false,\n colorize: [0.5, 0.5, 0.5, 1.0]\n },\n IfcColumn: {\n visible: true,\n edges: false,\n colorize: [0.5, 0.5, 0.5, 1.0]\n },\n IfcCurtainWall: {\n visible: true,\n edges: false,\n colorize: [0.5, 0.5, 0.5, 1.0]\n },\n IfcStair: {\n visible: true,\n edges: false,\n colorize: [0.7, 0.7, 0.7, 1.0]\n },\n IfcStairFlight: {\n visible: true,\n edges: false,\n colorize: [0.7, 0.7, 0.7, 1.0]\n },\n IfcRamp: {\n visible: true,\n edges: false,\n colorize: [0.7, 0.7, 0.7, 1.0]\n },\n IfcFurniture: {\n visible: true,\n edges: false,\n colorize: [0.7, 0.7, 0.7, 1.0]\n },\n IfcFooting: {\n visible: true,\n edges: false,\n colorize: [0.7, 0.7, 0.7, 1.0]\n },\n IfcFloor: {\n visible: true,\n edges: false,\n colorize: [1.0, 1.0, 1.0, 1.0]\n },\n DEFAULT: {\n visible: false\n }\n};\n\nexport {IFCStoreyPlanObjectStates}", @@ -14829,7 +14765,7 @@ "lineNumber": 1 }, { - "__docId__": 811, + "__docId__": 807, "kind": "variable", "name": "IFCStoreyPlanObjectStates", "memberof": "src/plugins/StoreyViewsPlugin/IFCStoreyPlanObjectStates.js", @@ -14851,7 +14787,7 @@ } }, { - "__docId__": 812, + "__docId__": 808, "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, aabb, 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 aabb\n * @type {Number[]}\n */\n this.aabb = aabb.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};", @@ -14862,7 +14798,7 @@ "lineNumber": 1 }, { - "__docId__": 813, + "__docId__": 809, "kind": "class", "name": "Storey", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js", @@ -14877,7 +14813,7 @@ "interface": false }, { - "__docId__": 814, + "__docId__": 810, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js~Storey", @@ -14891,7 +14827,7 @@ "ignore": true }, { - "__docId__": 815, + "__docId__": 811, "kind": "member", "name": "plugin", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js~Storey", @@ -14922,7 +14858,7 @@ } }, { - "__docId__": 816, + "__docId__": 812, "kind": "member", "name": "storeyId", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js~Storey", @@ -14953,7 +14889,7 @@ } }, { - "__docId__": 817, + "__docId__": 813, "kind": "member", "name": "modelId", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js~Storey", @@ -14985,7 +14921,7 @@ } }, { - "__docId__": 818, + "__docId__": 814, "kind": "member", "name": "aabb", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js~Storey", @@ -15016,7 +14952,7 @@ } }, { - "__docId__": 819, + "__docId__": 815, "kind": "member", "name": "numObjects", "memberof": "src/plugins/StoreyViewsPlugin/Storey.js~Storey", @@ -15047,7 +14983,7 @@ } }, { - "__docId__": 820, + "__docId__": 816, "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};", @@ -15058,7 +14994,7 @@ "lineNumber": 1 }, { - "__docId__": 821, + "__docId__": 817, "kind": "class", "name": "StoreyMap", "memberof": "src/plugins/StoreyViewsPlugin/StoreyMap.js", @@ -15073,7 +15009,7 @@ "interface": false }, { - "__docId__": 822, + "__docId__": 818, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap", @@ -15087,7 +15023,7 @@ "ignore": true }, { - "__docId__": 823, + "__docId__": 819, "kind": "member", "name": "storeyId", "memberof": "src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap", @@ -15118,7 +15054,7 @@ } }, { - "__docId__": 824, + "__docId__": 820, "kind": "member", "name": "imageData", "memberof": "src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap", @@ -15149,7 +15085,7 @@ } }, { - "__docId__": 825, + "__docId__": 821, "kind": "member", "name": "format", "memberof": "src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap", @@ -15180,7 +15116,7 @@ } }, { - "__docId__": 826, + "__docId__": 822, "kind": "member", "name": "width", "memberof": "src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap", @@ -15211,7 +15147,7 @@ } }, { - "__docId__": 827, + "__docId__": 823, "kind": "member", "name": "height", "memberof": "src/plugins/StoreyViewsPlugin/StoreyMap.js~StoreyMap", @@ -15242,7 +15178,7 @@ } }, { - "__docId__": 828, + "__docId__": 824, "kind": "file", "name": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js", "content": "import {Plugin} from \"../../viewer/Plugin.js\";\nimport {Storey} from \"./Storey.js\";\nimport {IFCStoreyPlanObjectStates} from \"./IFCStoreyPlanObjectStates.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/#storeyViews_StoreyViewsPlugin_recipe2)]\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} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/viewer/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {StoreyViewsPlugin} from \"../src/viewer/plugins/StoreyViewsPlugin/StoreyViewsPlugin.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/schependomlaan.xkt\",\n * metaModelSrc: \"./metaModels/schependomlaan/metaModel.json\",\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, applying custom appearances configured on {@link StoreyViewsPlugin#objectStates}:\n *\n * ````javascript\n * storeyViewsPlugin.showStoreyObjects(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * hideOthers: true,\n * useObjectStates: true\n * });\n * ````\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#storeyViews_StoreyViewsPlugin_showStoreyObjects)]\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, with custom appearances as configured for IFC types\n *\n * storeyViewsPlugin.showStoreyObjects(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * useObjectStates: true // <<--------- Apply custom appearances\n * });\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 * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#storeyViews_StoreyViewsPlugin_gotoStoreyCamera)]\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 * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#storeyViews_StoreyViewsPlugin_createStoreyMap)]\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 * As with ````showStoreyEntitys````, We also have the option to customize the appearance of the Entitys in our plan\n * images according to their IFC types, using the lookup table configured on {@link StoreyViewsPlugin#objectStates}.\n *\n * For example, we usually want to show only element types like ````IfcWall````, ````IfcDoor```` and\n * ````IfcFloor```` in our plan images.\n *\n * Let's create another StoreyMap, this time applying the custom appearances:\n *\n * ````javascript\n * const storeyMap = storeyViewsPlugin.createStoreyMap(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * width: 300,\n * format: \"png\",\n * useObjectStates: true // <<--------- Apply custom appearances\n * });\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 * useObjectStates: true\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 * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#storeyViews_StoreyViewsPlugin_recipe2)]\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 {Object} [cfg.objectStates] Map of visual states for the {@link Entity}s as rendered within each {@link Storey}. Default value is {@link IFCStoreyPlanObjectStates}.\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.objectStates = cfg.objectStates;\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.rootMetaObject) {\n return;\n }\n const storeyIds = metaModel.rootMetaObject.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 aabb = scene.getAABB(childObjectIds);\n const numObjects = (Math.random() > 0.5) ? childObjectIds.length : 0;\n const storey = new Storey(this, aabb, 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 _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 * Sets map of visual states for the {@link Entity}s as rendered within each {@link Storey}.\n *\n * Default value is {@link IFCStoreyPlanObjectStates}.\n *\n * @type {{String: Object}}\n */\n set objectStates(value) {\n this._objectStates = value || IFCStoreyPlanObjectStates;\n }\n\n /**\n * Gets map of visual states for the {@link Entity}s as rendered within each {@link Storey}.\n *\n * Default value is {@link IFCStoreyPlanObjectStates}.\n *\n * @type {{String: Object}}\n */\n get objectStates() {\n return this._objectStates;\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 aabb = storey.aabb;\n\n if (aabb[3] < aabb[0] || aabb[4] < aabb[1] || aabb[5] < aabb[2]) { // Don't fly to an inverted boundary\n if (options.done) {\n options.done();\n }\n return;\n }\n if (aabb[3] === aabb[0] && aabb[4] === aabb[1] && aabb[5] === aabb[2]) { // Don't fly to an empty boundary\n if (options.done) {\n options.done();\n }\n return;\n }\n const look2 = math.getAABB3Center(aabb);\n const diag = math.getAABB3Diag(aabb);\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 * Optionally sets the visual appearance of each of the Entitys according to its IFC type. The appearance of\n * IFC types in plan views is configured by {@link StoreyViewsPlugin#objectStates}.\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 * @param {Boolean} [options.useObjectStates=false] When ````true````, apply the custom visibilities and appearances configured for IFC types in {@link StoreyViewsPlugin#objectStates}.\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 if (options.useObjectStates) {\n const props = this._objectStates[metaObject.type] || this._objectStates[\"DEFAULT\"];\n if (props) {\n entity.visible = props.visible;\n entity.edges = props.edges;\n // entity.xrayed = props.xrayed; // FIXME: Buggy\n // entity.highlighted = props.highlighted;\n // entity.selected = props.selected;\n if (props.colorize) {\n entity.colorize = props.colorize;\n }\n if (props.opacity !== null && props.opacity !== undefined) {\n entity.opacity = props.opacity;\n }\n }\n } else {\n entity.visible = true;\n }\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 = storey.aabb;\n const aspect = (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 = height / aspect;\n\n } else if (options.width) {\n width = options.width;\n height = width * aspect;\n\n } else {\n width = 300;\n height = width * aspect;\n }\n\n this._objectsMemento.saveObjects(scene);\n this._cameraMemento.saveCamera(scene);\n\n viewer.beginSnapshot();\n\n this.showStoreyObjects(storeyId, utils.apply(options, {\n useObjectStates: true,\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 viewer.endSnapshot();\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 = storey.aabb;\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 = storey.aabb;\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: matrix\n });\n\n if (pickResult) {\n const metaObject = this.viewer.metaScene.metaObjects[pickResult.entity.id];\n const objectState = this.objectStates[metaObject.type];\n if (!objectState || !objectState.visible) {\n return null;\n }\n }\n\n return pickResult;\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.aabb, 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 = storey.aabb;\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", @@ -15253,7 +15189,7 @@ "lineNumber": 1 }, { - "__docId__": 829, + "__docId__": 825, "kind": "variable", "name": "tempVec3a", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js", @@ -15274,7 +15210,7 @@ "ignore": true }, { - "__docId__": 830, + "__docId__": 826, "kind": "variable", "name": "tempMat4", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js", @@ -15295,7 +15231,7 @@ "ignore": true }, { - "__docId__": 831, + "__docId__": 827, "kind": "variable", "name": "EMPTY_IMAGE", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js", @@ -15316,7 +15252,7 @@ "ignore": true }, { - "__docId__": 832, + "__docId__": 828, "kind": "class", "name": "StoreyViewsPlugin", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js", @@ -15334,7 +15270,7 @@ ] }, { - "__docId__": 833, + "__docId__": 829, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15397,7 +15333,7 @@ ] }, { - "__docId__": 834, + "__docId__": 830, "kind": "member", "name": "_objectsMemento", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15415,7 +15351,7 @@ } }, { - "__docId__": 835, + "__docId__": 831, "kind": "member", "name": "_cameraMemento", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15433,7 +15369,7 @@ } }, { - "__docId__": 836, + "__docId__": 832, "kind": "member", "name": "storeys", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15452,7 +15388,7 @@ } }, { - "__docId__": 837, + "__docId__": 833, "kind": "member", "name": "modelStoreys", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15471,7 +15407,7 @@ } }, { - "__docId__": 839, + "__docId__": 835, "kind": "member", "name": "_onModelLoaded", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15489,7 +15425,7 @@ } }, { - "__docId__": 840, + "__docId__": 836, "kind": "method", "name": "_registerModelStoreys", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15513,7 +15449,7 @@ "return": null }, { - "__docId__": 841, + "__docId__": 837, "kind": "method", "name": "_deregisterModelStoreys", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15537,7 +15473,7 @@ "return": null }, { - "__docId__": 842, + "__docId__": 838, "kind": "set", "name": "objectStates", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15558,7 +15494,7 @@ } }, { - "__docId__": 843, + "__docId__": 839, "kind": "member", "name": "_objectStates", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15576,7 +15512,7 @@ } }, { - "__docId__": 844, + "__docId__": 840, "kind": "get", "name": "objectStates", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15597,7 +15533,7 @@ } }, { - "__docId__": 845, + "__docId__": 841, "kind": "method", "name": "gotoStoreyCamera", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15653,7 +15589,7 @@ "return": null }, { - "__docId__": 846, + "__docId__": 842, "kind": "method", "name": "showStoreyObjects", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15713,7 +15649,7 @@ "return": null }, { - "__docId__": 847, + "__docId__": 843, "kind": "method", "name": "withStoreyObjects", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15749,7 +15685,7 @@ "return": null }, { - "__docId__": 848, + "__docId__": 844, "kind": "method", "name": "createStoreyMap", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15834,7 +15770,7 @@ } }, { - "__docId__": 849, + "__docId__": 845, "kind": "method", "name": "_arrangeStoreyMapCamera", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15858,7 +15794,7 @@ "return": null }, { - "__docId__": 850, + "__docId__": 846, "kind": "method", "name": "pickStoreyMap", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15929,7 +15865,7 @@ } }, { - "__docId__": 851, + "__docId__": 847, "kind": "method", "name": "getStoreyContainingWorldPos", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -15968,7 +15904,7 @@ } }, { - "__docId__": 852, + "__docId__": 848, "kind": "method", "name": "worldPosToStoreyMap", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -16027,7 +15963,7 @@ } }, { - "__docId__": 853, + "__docId__": 849, "kind": "method", "name": "worldDirToStoreyMap", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -16073,7 +16009,7 @@ "return": null }, { - "__docId__": 854, + "__docId__": 850, "kind": "method", "name": "destroy", "memberof": "src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js~StoreyViewsPlugin", @@ -16088,10 +16024,10 @@ "return": null }, { - "__docId__": 855, + "__docId__": 851, "kind": "file", "name": "src/plugins/TreeViewPlugin/ModelTreeView.js", - "content": "import {Map} from \"./../../viewer/scene/utils/Map.js\";\nimport {\n validateMetaModelForTreeViewContainmentHierarchy,\n validateMetaModelForTreeViewStoreysHierarchy, validateMetaModelForTreeViewTypesHierarchy\n} from \"./modelValidation.js\";\n\nconst idMap = new Map();\n\n/**\n * @desc Represents a model tree view within a {@link TreeViewPlugin}.\n *\n * * Stored in {@link treeViewPlugin#modelTreeViews}, mapped to the model ID.\n * * Created by each call to {@link TreeViewPlugin#addModel}.\n */\nclass ModelTreeView {\n\n /**\n * @private\n */\n constructor(viewer, treeViewPlugin, model, metaModel, cfg) {\n\n if (!cfg.containerElement) {\n throw \"Config expected: containerElement\";\n }\n\n const rootMetaObject = metaModel.rootMetaObject;\n if (!rootMetaObject) {\n return;\n }\n\n /**\n * Contains messages for any errors found in the MetaModel for this ModelTreeView.\n * @type {String[]}\n */\n this.errors = [];\n\n /**\n * True if errors were found in the MetaModel for this ModelTreeView.\n * @type {boolean}\n */\n this.valid = true;\n\n /**\n * The MetaModel corresponding to this ModelTreeView.\n * @type {MetaModel}\n */\n this.metaModel = metaModel;\n\n this._id = idMap.addItem();\n this._baseId = \"\" + this._id;\n this._viewer = viewer;\n this._treeViewPlugin = treeViewPlugin;\n this._rootMetaObject = rootMetaObject;\n this._containerElement = cfg.containerElement;\n this._rootElement = null;\n this._muteSceneEvents = false;\n this._muteTreeEvents = false;\n this._rootNodes = [];\n this._objectNodes = {};\n this._rootName = cfg.rootName;\n this._sortNodes = cfg.sortNodes;\n this._pruneEmptyNodes = cfg.pruneEmptyNodes;\n\n this._showListItemElementId = null;\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 const checkbox = document.getElementById(node.nodeId);\n if (checkbox) {\n checkbox.checked = 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 const parentCheckbox = document.getElementById(parent.nodeId);\n if (parentCheckbox) {\n const newChecked = (parent.numVisibleEntities > 0);\n if (newChecked !== parentCheckbox.checked) {\n parentCheckbox.checked = newChecked;\n }\n }\n parent = parent.parent;\n }\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 = checkbox.checked;\n const nodeId = checkbox.id;\n const checkedObjectId = this._nodeToObjectID(nodeId);\n const checkedNode = this._objectNodes[checkedObjectId];\n const objects = this._viewer.scene.objects;\n let numUpdated = 0;\n this._withNodeTree(checkedNode, (node) => {\n const objectId = node.objectId;\n const checkBoxId = node.nodeId;\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 const checkbox2 = document.getElementById(checkBoxId);\n if (checkbox2) {\n checkbox2.checked = visible;\n }\n if (entity) {\n entity.visible = visible;\n }\n });\n let parent = checkedNode.parent;\n while (parent) {\n parent.checked = visible;\n const checkbox2 = document.getElementById(parent.nodeId); // Parent checkboxes are always in DOM\n if (visible) {\n parent.numVisibleEntities += numUpdated;\n } else {\n parent.numVisibleEntities -= numUpdated;\n }\n const newChecked = (parent.numVisibleEntities > 0);\n if (newChecked !== checkbox2.checked) {\n checkbox2.checked = newChecked;\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 this._createNodes();\n }\n\n _nodeToObjectID(nodeId) {\n return nodeId.substring(this._baseId.length);\n }\n\n _objectToNodeID(objectId) {\n return this._baseId + objectId;\n }\n\n /**\n * @private\n * @param depth\n */\n setAutoExpandDepth(depth = 0) {\n this._autoExpandDepth = depth;\n }\n\n /**\n * @private\n * @param hierarchy\n */\n setHierarchy(hierarchy) {\n if (this._hierarchy === hierarchy) {\n return;\n }\n this._hierarchy = hierarchy;\n this._createNodes();\n }\n\n _createNodes() {\n if (this._rootElement) {\n this._rootElement.parentNode.removeChild(this._rootElement);\n this._rootElement = null;\n }\n this._rootNodes = [];\n this._objectNodes = {};\n this._validate();\n if (this.valid) {\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 = validateMetaModelForTreeViewStoreysHierarchy(this.metaModel, this.errors);\n break;\n case \"types\":\n this.valid = validateMetaModelForTreeViewTypesHierarchy(this.metaModel, this.errors);\n break;\n case \"containment\":\n default:\n this.valid = validateMetaModelForTreeViewContainmentHierarchy(this.metaModel, this.errors);\n break;\n }\n return this.valid;\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._treeViewPlugin.error(\"Failed to build storeys hierarchy for model '\" + this.metaModel.id + \"' - perhaps this model is not an IFC model?\");\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 metaObject = this._rootMetaObject;\n const metaObjectType = metaObject.type;\n const metaObjectName = metaObject.name;\n\n const rootName = ((metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType);\n\n const ul = document.createElement('ul');\n const li = document.createElement('li');\n ul.appendChild(li);\n this._containerElement.appendChild(ul);\n this._rootElement = ul;\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\n _findEmptyNodes(metaObject = this._rootMetaObject, countEntities = 0) {\n const viewer = this._treeViewPlugin.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._findEmptyNodes(childMetaObject);\n metaObject._countEntities += childMetaObject._countEntities;\n }\n }\n return metaObject._countEntities;\n }\n\n _createStoreysNodes(\n metaObject = this._rootMetaObject,\n buildingNode,\n storeyNode,\n 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._objectToNodeID(objectId),\n objectId: objectId,\n title: this._rootName || ((metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType),\n type: metaObjectType,\n parent: null,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n children: []\n };\n this._rootNodes.push(buildingNode);\n this._objectNodes[buildingNode.objectId] = buildingNode;\n } else if (metaObjectType === \"IfcBuildingStorey\") {\n if (!buildingNode) {\n this._treeViewPlugin.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._objectToNodeID(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 children: []\n };\n buildingNode.children.push(storeyNode);\n this._objectNodes[storeyNode.objectId] = 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 const typeNodeObjectId = storeyNode.objectId + \".\" + metaObjectType;\n const typeNodeNodeId = this._objectToNodeID(typeNodeObjectId);\n typeNode = {\n nodeId: typeNodeNodeId,\n objectId: typeNodeObjectId,\n title: metaObjectType,\n type: metaObjectType,\n parent: storeyNode,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n children: []\n };\n storeyNode.children.push(typeNode);\n this._objectNodes[typeNodeObjectId] = typeNode;\n typeNodes[metaObjectType] = typeNode;\n }\n const node = {\n nodeId: this._objectToNodeID(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 children: []\n };\n typeNode.children.push(node);\n this._objectNodes[node.objectId] = 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._createStoreysNodes(childMetaObject, buildingNode, storeyNode, typeNodes);\n }\n }\n }\n\n _createTypesNodes(metaObject = this._rootMetaObject, 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.id === this._rootMetaObject.id) {\n rootNode = {\n nodeId: this._objectToNodeID(objectId),\n objectId: objectId,\n title: this._rootName || ((metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType),\n type: metaObjectType,\n parent: null,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n children: []\n };\n this._rootNodes.push(rootNode);\n this._objectNodes[rootNode.objectId] = 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._objectToNodeID(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 children: []\n };\n rootNode.children.push(typeNode);\n this._objectNodes[typeNode.objectId] = typeNode;\n typeNodes[metaObjectType] = typeNode;\n }\n const node = {\n nodeId: this._objectToNodeID(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 children: []\n };\n typeNode.children.push(node);\n this._objectNodes[node.objectId] = 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._createTypesNodes(childMetaObject, rootNode, typeNodes);\n }\n }\n }\n\n _createContainmentNodes(metaObject = this._rootMetaObject, 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._objectToNodeID(objectId),\n objectId: objectId,\n title: (!parent) ? (this._rootName || 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 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\n if (children) {\n for (let i = 0, len = children.length; i < len; i++) {\n const childMetaObject = children[i];\n this._createContainmentNodes(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._treeViewPlugin.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 rootMetaObject = this._rootMetaObject;\n const objectIds = rootMetaObject.getObjectIDsInSubtree();\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 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 const ul = document.createElement('ul');\n rootNodeElements.forEach((nodeElement) => {\n ul.appendChild(nodeElement);\n });\n this._containerElement.appendChild(ul);\n this._rootElement = ul;\n }\n\n _createNodeElement(node) {\n const nodeElement = document.createElement('li');\n //const nodeId = this._objectToNodeID(node.objectId);\n const nodeId = node.nodeId;\n nodeElement.id = 'node-' + nodeId;\n if (node.children.length > 0) {\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.createElement('a');\n switchElement.href = '#';\n switchElement.id = switchElementId;\n switchElement.textContent = '+';\n switchElement.classList.add('plus');\n switchElement.addEventListener('click', this.switchExpandHandler);\n nodeElement.appendChild(switchElement);\n }\n const checkbox = document.createElement('input');\n checkbox.id = nodeId;\n checkbox.type = \"checkbox\";\n checkbox.checked = node.checked;\n checkbox.addEventListener(\"change\", this._checkboxChangeHandler);\n nodeElement.appendChild(checkbox);\n const span = document.createElement('span');\n span.textContent = node.title;\n nodeElement.appendChild(span);\n span.oncontextmenu = (e) => {\n this._treeViewPlugin.fire(\"contextmenu\", {\n event: e,\n viewer: this._viewer,\n treeViewPlugin: this._treeViewPlugin,\n treeViewNode: node\n });\n e.preventDefault();\n };\n span.onclick = (e) => {\n this._treeViewPlugin.fire(\"nodeTitleClicked\", {\n event: e,\n viewer: this._viewer,\n treeViewPlugin: this._treeViewPlugin,\n treeViewNode: node\n });\n e.preventDefault();\n };\n return nodeElement;\n }\n\n /**\n * @private\n * @param depth\n */\n expandToDepth(depth) {\n const expand = (node, countDepth) => {\n if (countDepth === depth) {\n return;\n }\n const nodeId = node.nodeId;\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.getElementById(switchElementId);\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 * @private\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 * @private\n * @param objectId\n */\n showNode(objectId) {\n if (this._showListItemElementId) {\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 const nodeId = node.nodeId;\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.getElementById(switchElementId);\n if (switchElement) {\n this._expandSwitchElement(switchElement);\n switchElement.scrollIntoView();\n return;\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 for (let i = 0, len = path.length; i < len; i++) {\n const node = path[i];\n const nodeId = node.nodeId;\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.getElementById(switchElementId);\n if (switchElement) {\n this._expandSwitchElement(switchElement);\n }\n }\n const listItemElementId = 'node-' + nodeId;\n const listItemElement = document.getElementById(listItemElementId);\n listItemElement.scrollIntoView({block: \"center\"});\n listItemElement.classList.add(\"highlighted-node\");\n this._showListItemElementId = listItemElementId;\n }\n\n /**\n * @private\n */\n unShowNode() {\n if (!this._showListItemElementId) {\n return;\n }\n const listItemElement = document.getElementById(this._showListItemElementId);\n if (!listItemElement) {\n this._showListItemElementId = null;\n return;\n }\n listItemElement.classList.remove(\"highlighted-node\");\n this._showListItemElementId = null;\n }\n\n _expandSwitchElement(switchElement) {\n const parentElement = switchElement.parentElement;\n const expanded = parentElement.getElementsByTagName('li')[0];\n if (expanded) {\n return;\n }\n const nodeId = parentElement.id.replace('node-', '');\n const objectId = this._nodeToObjectID(nodeId);\n const switchNode = this._objectNodes[objectId];\n const childNodes = switchNode.children;\n const nodeElements = childNodes.map((node) => {\n return this._createNodeElement(node);\n });\n const ul = document.createElement('ul');\n nodeElements.forEach((nodeElement) => {\n ul.appendChild(nodeElement);\n });\n parentElement.appendChild(ul);\n switchElement.classList.remove('plus');\n switchElement.classList.add('minus');\n switchElement.textContent = '-';\n switchElement.removeEventListener('click', this.switchExpandHandler);\n switchElement.addEventListener('click', this.switchCollapseHandler);\n }\n\n _collapseNode(objectId) {\n const nodeId = this._objectToNodeID(objectId);\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.getElementById(switchElementId);\n this._collapseSwitchElement(switchElement);\n }\n\n _collapseSwitchElement(switchElement) {\n if (!switchElement) {\n return;\n }\n const parent = switchElement.parentElement;\n if (!parent) {\n return;\n }\n const ul = parent.querySelector('ul');\n if (!ul) {\n return;\n }\n parent.removeChild(ul);\n switchElement.classList.remove('minus');\n switchElement.classList.add('plus');\n switchElement.textContent = '+';\n switchElement.removeEventListener('click', this.switchCollapseHandler);\n switchElement.addEventListener('click', this.switchExpandHandler);\n }\n\n /**\n * Destroys this ModelTreeView.\n * @private\n */\n destroy() {\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 idMap.removeItem(this._id);\n }\n }\n}\n\nexport {ModelTreeView};", + "content": "import {Map} from \"./../../viewer/scene/utils/Map.js\";\nimport {\n validateMetaModelForTreeViewContainmentHierarchy,\n validateMetaModelForTreeViewStoreysHierarchy, validateMetaModelForTreeViewTypesHierarchy\n} from \"./modelValidation.js\";\n\nconst idMap = new Map();\n\n/**\n * @desc Represents a model tree view within a {@link TreeViewPlugin}.\n *\n * * Stored in {@link treeViewPlugin#modelTreeViews}, mapped to the model ID.\n * * Created by each call to {@link TreeViewPlugin#addModel}.\n */\nclass ModelTreeView {\n\n /**\n * @private\n */\n constructor(viewer, treeViewPlugin, model, metaModel, cfg) {\n\n if (!cfg.containerElement) {\n throw \"Config expected: containerElement\";\n }\n\n const rootMetaObject = metaModel.rootMetaObject;\n if (!rootMetaObject) {\n return;\n }\n\n /**\n * Contains messages for any errors found in the MetaModel for this ModelTreeView.\n * @type {String[]}\n */\n this.errors = [];\n\n /**\n * True if errors were found in the MetaModel for this ModelTreeView.\n * @type {boolean}\n */\n this.valid = true;\n\n /**\n * The MetaModel corresponding to this ModelTreeView.\n * @type {MetaModel}\n */\n this.metaModel = metaModel;\n\n this._id = idMap.addItem();\n this._baseId = \"\" + this._id;\n this._viewer = viewer;\n this._treeViewPlugin = treeViewPlugin;\n this._rootMetaObject = rootMetaObject;\n this._containerElement = cfg.containerElement;\n this._rootElement = null;\n this._muteSceneEvents = false;\n this._muteTreeEvents = false;\n this._rootNodes = [];\n this._objectNodes = {};\n this._rootName = cfg.rootName;\n this._sortNodes = cfg.sortNodes;\n this._pruneEmptyNodes = cfg.pruneEmptyNodes;\n\n this._showListItemElementId = null;\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 const checkbox = document.getElementById(node.nodeId);\n if (checkbox) {\n checkbox.checked = 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 const parentCheckbox = document.getElementById(parent.nodeId);\n if (parentCheckbox) {\n const newChecked = (parent.numVisibleEntities > 0);\n if (newChecked !== parentCheckbox.checked) {\n parentCheckbox.checked = newChecked;\n }\n }\n parent = parent.parent;\n }\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 = checkbox.checked;\n const nodeId = checkbox.id;\n const checkedObjectId = this._nodeToObjectID(nodeId);\n const checkedNode = this._objectNodes[checkedObjectId];\n const objects = this._viewer.scene.objects;\n let numUpdated = 0;\n this._withNodeTree(checkedNode, (node) => {\n const objectId = node.objectId;\n const checkBoxId = node.nodeId;\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 const checkbox2 = document.getElementById(checkBoxId);\n if (checkbox2) {\n checkbox2.checked = visible;\n }\n if (entity) {\n entity.visible = visible;\n }\n });\n let parent = checkedNode.parent;\n while (parent) {\n parent.checked = visible;\n const checkbox2 = document.getElementById(parent.nodeId); // Parent checkboxes are always in DOM\n if (visible) {\n parent.numVisibleEntities += numUpdated;\n } else {\n parent.numVisibleEntities -= numUpdated;\n }\n const newChecked = (parent.numVisibleEntities > 0);\n if (newChecked !== checkbox2.checked) {\n checkbox2.checked = newChecked;\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 this._createNodes();\n }\n\n _nodeToObjectID(nodeId) {\n return nodeId.substring(this._baseId.length);\n }\n\n _objectToNodeID(objectId) {\n return this._baseId + objectId;\n }\n\n /**\n * @private\n * @param depth\n */\n setAutoExpandDepth(depth = 0) {\n this._autoExpandDepth = depth;\n }\n\n /**\n * @private\n * @param hierarchy\n */\n setHierarchy(hierarchy) {\n if (this._hierarchy === hierarchy) {\n return;\n }\n this._hierarchy = hierarchy;\n this._createNodes();\n }\n\n _createNodes() {\n if (this._rootElement) {\n this._rootElement.parentNode.removeChild(this._rootElement);\n this._rootElement = null;\n }\n this._rootNodes = [];\n this._objectNodes = {};\n this._validate();\n if (this.valid) {\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 = validateMetaModelForTreeViewStoreysHierarchy(this.metaModel, this.errors);\n break;\n case \"types\":\n this.valid = validateMetaModelForTreeViewTypesHierarchy(this.metaModel, this.errors);\n break;\n case \"containment\":\n default:\n this.valid = validateMetaModelForTreeViewContainmentHierarchy(this.metaModel, this.errors);\n break;\n }\n return this.valid;\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._treeViewPlugin.error(\"Failed to build storeys hierarchy for model '\" + this.metaModel.id + \"' - perhaps this model is not an IFC model?\");\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 metaObject = this._rootMetaObject;\n const metaObjectType = metaObject.type;\n const metaObjectName = metaObject.name;\n\n const rootName = ((metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType);\n\n const ul = document.createElement('ul');\n const li = document.createElement('li');\n ul.appendChild(li);\n this._containerElement.appendChild(ul);\n this._rootElement = ul;\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\n _findEmptyNodes(metaObject = this._rootMetaObject, countEntities = 0) {\n const viewer = this._treeViewPlugin.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._findEmptyNodes(childMetaObject);\n metaObject._countEntities += childMetaObject._countEntities;\n }\n }\n return metaObject._countEntities;\n }\n\n _createStoreysNodes(\n metaObject = this._rootMetaObject,\n buildingNode,\n storeyNode,\n 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._objectToNodeID(objectId),\n objectId: objectId,\n title: this._rootName || ((metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType),\n type: metaObjectType,\n parent: null,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n children: []\n };\n this._rootNodes.push(buildingNode);\n this._objectNodes[buildingNode.objectId] = buildingNode;\n } else if (metaObjectType === \"IfcBuildingStorey\") {\n if (!buildingNode) {\n this._treeViewPlugin.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._objectToNodeID(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 children: []\n };\n buildingNode.children.push(storeyNode);\n this._objectNodes[storeyNode.objectId] = 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 const typeNodeObjectId = storeyNode.objectId + \".\" + metaObjectType;\n const typeNodeNodeId = this._objectToNodeID(typeNodeObjectId);\n typeNode = {\n nodeId: typeNodeNodeId,\n objectId: typeNodeObjectId,\n title: metaObjectType,\n type: metaObjectType,\n parent: storeyNode,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n children: []\n };\n storeyNode.children.push(typeNode);\n this._objectNodes[typeNodeObjectId] = typeNode;\n typeNodes[metaObjectType] = typeNode;\n }\n const node = {\n nodeId: this._objectToNodeID(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 children: []\n };\n typeNode.children.push(node);\n this._objectNodes[node.objectId] = 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._createStoreysNodes(childMetaObject, buildingNode, storeyNode, typeNodes);\n }\n }\n }\n\n _createTypesNodes(metaObject = this._rootMetaObject, 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.id === this._rootMetaObject.id) {\n rootNode = {\n nodeId: this._objectToNodeID(objectId),\n objectId: objectId,\n title: this._rootName || ((metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType),\n type: metaObjectType,\n parent: null,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n children: []\n };\n this._rootNodes.push(rootNode);\n this._objectNodes[rootNode.objectId] = 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._objectToNodeID(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 children: []\n };\n rootNode.children.push(typeNode);\n this._objectNodes[typeNode.objectId] = typeNode;\n typeNodes[metaObjectType] = typeNode;\n }\n const node = {\n nodeId: this._objectToNodeID(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 children: []\n };\n typeNode.children.push(node);\n this._objectNodes[node.objectId] = 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._createTypesNodes(childMetaObject, rootNode, typeNodes);\n }\n }\n }\n\n _createContainmentNodes(metaObject = this._rootMetaObject, 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._objectToNodeID(objectId),\n objectId: objectId,\n title: (!parent) ? (this._rootName || 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 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\n if (children) {\n for (let i = 0, len = children.length; i < len; i++) {\n const childMetaObject = children[i];\n this._createContainmentNodes(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._treeViewPlugin.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 rootMetaObject = this._rootMetaObject;\n const objectIds = rootMetaObject.getObjectIDsInSubtree();\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 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 const ul = document.createElement('ul');\n rootNodeElements.forEach((nodeElement) => {\n ul.appendChild(nodeElement);\n });\n this._containerElement.appendChild(ul);\n this._rootElement = ul;\n }\n\n _createNodeElement(node) {\n const nodeElement = document.createElement('li');\n //const nodeId = this._objectToNodeID(node.objectId);\n const nodeId = node.nodeId;\n nodeElement.id = 'node-' + nodeId;\n if (node.children.length > 0) {\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.createElement('a');\n switchElement.href = '#';\n switchElement.id = switchElementId;\n switchElement.textContent = '+';\n switchElement.classList.add('plus');\n switchElement.addEventListener('click', this.switchExpandHandler);\n nodeElement.appendChild(switchElement);\n }\n const checkbox = document.createElement('input');\n checkbox.id = nodeId;\n checkbox.type = \"checkbox\";\n checkbox.checked = node.checked;\n checkbox.style[\"pointer-events\"] = \"all\";\n checkbox.addEventListener(\"change\", this._checkboxChangeHandler);\n nodeElement.appendChild(checkbox);\n const span = document.createElement('span');\n span.textContent = node.title;\n nodeElement.appendChild(span);\n span.oncontextmenu = (e) => {\n this._treeViewPlugin.fire(\"contextmenu\", {\n event: e,\n viewer: this._viewer,\n treeViewPlugin: this._treeViewPlugin,\n treeViewNode: node\n });\n e.preventDefault();\n };\n span.onclick = (e) => {\n this._treeViewPlugin.fire(\"nodeTitleClicked\", {\n event: e,\n viewer: this._viewer,\n treeViewPlugin: this._treeViewPlugin,\n treeViewNode: node\n });\n e.preventDefault();\n };\n return nodeElement;\n }\n\n /**\n * @private\n * @param depth\n */\n expandToDepth(depth) {\n const expand = (node, countDepth) => {\n if (countDepth === depth) {\n return;\n }\n const nodeId = node.nodeId;\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.getElementById(switchElementId);\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 * @private\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 * @private\n * @param objectId\n */\n showNode(objectId) {\n if (this._showListItemElementId) {\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 const nodeId = node.nodeId;\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.getElementById(switchElementId);\n if (switchElement) {\n this._expandSwitchElement(switchElement);\n switchElement.scrollIntoView();\n return;\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 for (let i = 0, len = path.length; i < len; i++) {\n const node = path[i];\n const nodeId = node.nodeId;\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.getElementById(switchElementId);\n if (switchElement) {\n this._expandSwitchElement(switchElement);\n }\n }\n const listItemElementId = 'node-' + nodeId;\n const listItemElement = document.getElementById(listItemElementId);\n listItemElement.scrollIntoView({block: \"center\"});\n listItemElement.classList.add(\"highlighted-node\");\n this._showListItemElementId = listItemElementId;\n }\n\n /**\n * @private\n */\n unShowNode() {\n if (!this._showListItemElementId) {\n return;\n }\n const listItemElement = document.getElementById(this._showListItemElementId);\n if (!listItemElement) {\n this._showListItemElementId = null;\n return;\n }\n listItemElement.classList.remove(\"highlighted-node\");\n this._showListItemElementId = null;\n }\n\n _expandSwitchElement(switchElement) {\n const parentElement = switchElement.parentElement;\n const expanded = parentElement.getElementsByTagName('li')[0];\n if (expanded) {\n return;\n }\n const nodeId = parentElement.id.replace('node-', '');\n const objectId = this._nodeToObjectID(nodeId);\n const switchNode = this._objectNodes[objectId];\n const childNodes = switchNode.children;\n const nodeElements = childNodes.map((node) => {\n return this._createNodeElement(node);\n });\n const ul = document.createElement('ul');\n nodeElements.forEach((nodeElement) => {\n ul.appendChild(nodeElement);\n });\n parentElement.appendChild(ul);\n switchElement.classList.remove('plus');\n switchElement.classList.add('minus');\n switchElement.textContent = '-';\n switchElement.removeEventListener('click', this.switchExpandHandler);\n switchElement.addEventListener('click', this.switchCollapseHandler);\n }\n\n _collapseNode(objectId) {\n const nodeId = this._objectToNodeID(objectId);\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.getElementById(switchElementId);\n this._collapseSwitchElement(switchElement);\n }\n\n _collapseSwitchElement(switchElement) {\n if (!switchElement) {\n return;\n }\n const parent = switchElement.parentElement;\n if (!parent) {\n return;\n }\n const ul = parent.querySelector('ul');\n if (!ul) {\n return;\n }\n parent.removeChild(ul);\n switchElement.classList.remove('minus');\n switchElement.classList.add('plus');\n switchElement.textContent = '+';\n switchElement.removeEventListener('click', this.switchCollapseHandler);\n switchElement.addEventListener('click', this.switchExpandHandler);\n }\n\n /**\n * Destroys this ModelTreeView.\n * @private\n */\n destroy() {\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 idMap.removeItem(this._id);\n }\n }\n}\n\nexport {ModelTreeView};", "static": true, "longname": "/home/lindsay/xeolabs/xeokit/xeokit-nov-18/xeokit-sdk/src/plugins/TreeViewPlugin/ModelTreeView.js", "access": "public", @@ -16099,7 +16035,7 @@ "lineNumber": 1 }, { - "__docId__": 856, + "__docId__": 852, "kind": "variable", "name": "idMap", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js", @@ -16120,7 +16056,7 @@ "ignore": true }, { - "__docId__": 857, + "__docId__": 853, "kind": "class", "name": "ModelTreeView", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js", @@ -16135,7 +16071,7 @@ "interface": false }, { - "__docId__": 858, + "__docId__": 854, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16149,7 +16085,7 @@ "ignore": true }, { - "__docId__": 859, + "__docId__": 855, "kind": "member", "name": "errors", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16168,7 +16104,7 @@ } }, { - "__docId__": 860, + "__docId__": 856, "kind": "member", "name": "valid", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16187,7 +16123,7 @@ } }, { - "__docId__": 861, + "__docId__": 857, "kind": "member", "name": "metaModel", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16206,7 +16142,7 @@ } }, { - "__docId__": 862, + "__docId__": 858, "kind": "member", "name": "_id", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16224,7 +16160,7 @@ } }, { - "__docId__": 863, + "__docId__": 859, "kind": "member", "name": "_baseId", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16242,7 +16178,7 @@ } }, { - "__docId__": 864, + "__docId__": 860, "kind": "member", "name": "_viewer", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16260,7 +16196,7 @@ } }, { - "__docId__": 865, + "__docId__": 861, "kind": "member", "name": "_treeViewPlugin", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16278,7 +16214,7 @@ } }, { - "__docId__": 866, + "__docId__": 862, "kind": "member", "name": "_rootMetaObject", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16296,7 +16232,7 @@ } }, { - "__docId__": 867, + "__docId__": 863, "kind": "member", "name": "_containerElement", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16314,7 +16250,7 @@ } }, { - "__docId__": 868, + "__docId__": 864, "kind": "member", "name": "_rootElement", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16332,7 +16268,7 @@ } }, { - "__docId__": 869, + "__docId__": 865, "kind": "member", "name": "_muteSceneEvents", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16350,7 +16286,7 @@ } }, { - "__docId__": 870, + "__docId__": 866, "kind": "member", "name": "_muteTreeEvents", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16368,7 +16304,7 @@ } }, { - "__docId__": 871, + "__docId__": 867, "kind": "member", "name": "_rootNodes", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16386,7 +16322,7 @@ } }, { - "__docId__": 872, + "__docId__": 868, "kind": "member", "name": "_objectNodes", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16404,7 +16340,7 @@ } }, { - "__docId__": 873, + "__docId__": 869, "kind": "member", "name": "_rootName", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16422,7 +16358,7 @@ } }, { - "__docId__": 874, + "__docId__": 870, "kind": "member", "name": "_sortNodes", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16440,7 +16376,7 @@ } }, { - "__docId__": 875, + "__docId__": 871, "kind": "member", "name": "_pruneEmptyNodes", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16458,7 +16394,7 @@ } }, { - "__docId__": 876, + "__docId__": 872, "kind": "member", "name": "_showListItemElementId", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16476,7 +16412,7 @@ } }, { - "__docId__": 877, + "__docId__": 873, "kind": "member", "name": "_onObjectVisibility", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16494,7 +16430,7 @@ } }, { - "__docId__": 880, + "__docId__": 876, "kind": "member", "name": "switchExpandHandler", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16511,7 +16447,7 @@ } }, { - "__docId__": 881, + "__docId__": 877, "kind": "member", "name": "switchCollapseHandler", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16528,7 +16464,7 @@ } }, { - "__docId__": 882, + "__docId__": 878, "kind": "member", "name": "_checkboxChangeHandler", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16546,7 +16482,7 @@ } }, { - "__docId__": 885, + "__docId__": 881, "kind": "member", "name": "_hierarchy", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16564,7 +16500,7 @@ } }, { - "__docId__": 886, + "__docId__": 882, "kind": "member", "name": "_autoExpandDepth", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16582,7 +16518,7 @@ } }, { - "__docId__": 887, + "__docId__": 883, "kind": "method", "name": "_nodeToObjectID", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16610,7 +16546,7 @@ } }, { - "__docId__": 888, + "__docId__": 884, "kind": "method", "name": "_objectToNodeID", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16638,7 +16574,7 @@ } }, { - "__docId__": 889, + "__docId__": 885, "kind": "method", "name": "setAutoExpandDepth", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16665,7 +16601,7 @@ "return": null }, { - "__docId__": 891, + "__docId__": 887, "kind": "method", "name": "setHierarchy", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16692,7 +16628,7 @@ "return": null }, { - "__docId__": 893, + "__docId__": 889, "kind": "method", "name": "_createNodes", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16709,7 +16645,7 @@ "return": null }, { - "__docId__": 897, + "__docId__": 893, "kind": "method", "name": "_validate", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16730,7 +16666,7 @@ } }, { - "__docId__": 902, + "__docId__": 898, "kind": "method", "name": "_createEnabledNodes", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16747,7 +16683,7 @@ "return": null }, { - "__docId__": 903, + "__docId__": 899, "kind": "method", "name": "_createDisabledNodes", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16764,7 +16700,7 @@ "return": null }, { - "__docId__": 905, + "__docId__": 901, "kind": "method", "name": "_findEmptyNodes", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16802,7 +16738,7 @@ } }, { - "__docId__": 906, + "__docId__": 902, "kind": "method", "name": "_createStoreysNodes", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16845,7 +16781,7 @@ "return": null }, { - "__docId__": 907, + "__docId__": 903, "kind": "method", "name": "_createTypesNodes", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16882,7 +16818,7 @@ "return": null }, { - "__docId__": 908, + "__docId__": 904, "kind": "method", "name": "_createContainmentNodes", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16913,7 +16849,7 @@ "return": null }, { - "__docId__": 909, + "__docId__": 905, "kind": "method", "name": "_doSortNodes", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16930,7 +16866,7 @@ "return": null }, { - "__docId__": 910, + "__docId__": 906, "kind": "method", "name": "_sortChildren", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16954,7 +16890,7 @@ "return": null }, { - "__docId__": 911, + "__docId__": 907, "kind": "method", "name": "_getSpatialSortFunc", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -16975,7 +16911,7 @@ } }, { - "__docId__": 912, + "__docId__": 908, "kind": "method", "name": "_alphaSortFunc", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -17009,7 +16945,7 @@ } }, { - "__docId__": 913, + "__docId__": 909, "kind": "method", "name": "_synchNodesToEntities", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -17026,7 +16962,7 @@ "return": null }, { - "__docId__": 914, + "__docId__": 910, "kind": "method", "name": "_withNodeTree", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -17056,7 +16992,7 @@ "return": null }, { - "__docId__": 915, + "__docId__": 911, "kind": "method", "name": "_createTrees", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -17073,7 +17009,7 @@ "return": null }, { - "__docId__": 917, + "__docId__": 913, "kind": "method", "name": "_createNodeElement", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -17101,7 +17037,7 @@ } }, { - "__docId__": 918, + "__docId__": 914, "kind": "method", "name": "expandToDepth", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -17111,7 +17047,7 @@ "longname": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView#expandToDepth", "access": "private", "description": "", - "lineNumber": 693, + "lineNumber": 694, "params": [ { "nullable": null, @@ -17128,7 +17064,7 @@ "return": null }, { - "__docId__": 919, + "__docId__": 915, "kind": "method", "name": "collapse", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -17138,13 +17074,13 @@ "longname": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView#collapse", "access": "private", "description": "", - "lineNumber": 719, + "lineNumber": 720, "ignore": true, "params": [], "return": null }, { - "__docId__": 920, + "__docId__": 916, "kind": "method", "name": "showNode", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -17154,7 +17090,7 @@ "longname": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView#showNode", "access": "private", "description": "", - "lineNumber": 731, + "lineNumber": 732, "params": [ { "nullable": null, @@ -17171,7 +17107,7 @@ "return": null }, { - "__docId__": 922, + "__docId__": 918, "kind": "method", "name": "unShowNode", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -17181,13 +17117,13 @@ "longname": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView#unShowNode", "access": "private", "description": "", - "lineNumber": 773, + "lineNumber": 774, "ignore": true, "params": [], "return": null }, { - "__docId__": 925, + "__docId__": 921, "kind": "method", "name": "_expandSwitchElement", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -17197,7 +17133,7 @@ "longname": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView#_expandSwitchElement", "access": "private", "description": null, - "lineNumber": 786, + "lineNumber": 787, "undocument": true, "ignore": true, "params": [ @@ -17211,7 +17147,7 @@ "return": null }, { - "__docId__": 926, + "__docId__": 922, "kind": "method", "name": "_collapseNode", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -17221,7 +17157,7 @@ "longname": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView#_collapseNode", "access": "private", "description": null, - "lineNumber": 811, + "lineNumber": 812, "undocument": true, "ignore": true, "params": [ @@ -17235,7 +17171,7 @@ "return": null }, { - "__docId__": 927, + "__docId__": 923, "kind": "method", "name": "_collapseSwitchElement", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -17245,7 +17181,7 @@ "longname": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView#_collapseSwitchElement", "access": "private", "description": null, - "lineNumber": 818, + "lineNumber": 819, "undocument": true, "ignore": true, "params": [ @@ -17259,7 +17195,7 @@ "return": null }, { - "__docId__": 928, + "__docId__": 924, "kind": "method", "name": "destroy", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -17269,13 +17205,13 @@ "longname": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView#destroy", "access": "private", "description": "Destroys this ModelTreeView.", - "lineNumber": 842, + "lineNumber": 843, "ignore": true, "params": [], "return": null }, { - "__docId__": 929, + "__docId__": 925, "kind": "member", "name": "_destroyed", "memberof": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView", @@ -17283,7 +17219,7 @@ "longname": "src/plugins/TreeViewPlugin/ModelTreeView.js~ModelTreeView#_destroyed", "access": "private", "description": null, - "lineNumber": 846, + "lineNumber": 847, "undocument": true, "ignore": true, "type": { @@ -17293,7 +17229,7 @@ } }, { - "__docId__": 930, + "__docId__": 926, "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 /**\n * ID of the corresponding {@link MetaObject}.\n *\n * This is only defined if the TreeViewNode represents an object.\n *\n * @type {Number|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\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\n /** Whether or not the TreeViewNode is currently checked.\n *\n * @type {Boolean}\n * @abstract\n */\n get checked() {\n\n }\n}\n\nexport {TreeViewNode};", @@ -17304,7 +17240,7 @@ "lineNumber": 1 }, { - "__docId__": 931, + "__docId__": 927, "kind": "class", "name": "TreeViewNode", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js", @@ -17320,7 +17256,7 @@ "interface": true }, { - "__docId__": 932, + "__docId__": 928, "kind": "get", "name": "nodeId", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -17342,7 +17278,7 @@ "abstract": true }, { - "__docId__": 933, + "__docId__": 929, "kind": "get", "name": "title", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -17364,7 +17300,7 @@ "abstract": true }, { - "__docId__": 934, + "__docId__": 930, "kind": "get", "name": "objectId", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -17387,7 +17323,7 @@ "abstract": true }, { - "__docId__": 935, + "__docId__": 931, "kind": "get", "name": "children", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -17409,7 +17345,7 @@ "abstract": true }, { - "__docId__": 936, + "__docId__": 932, "kind": "get", "name": "parent", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -17431,7 +17367,7 @@ "abstract": true }, { - "__docId__": 937, + "__docId__": 933, "kind": "get", "name": "numEntities", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -17453,7 +17389,7 @@ "abstract": true }, { - "__docId__": 938, + "__docId__": 934, "kind": "get", "name": "numVisibleEntities", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -17475,7 +17411,7 @@ "abstract": true }, { - "__docId__": 939, + "__docId__": 935, "kind": "get", "name": "checked", "memberof": "src/plugins/TreeViewPlugin/TreeViewNode.js~TreeViewNode", @@ -17497,7 +17433,7 @@ "abstract": true }, { - "__docId__": 940, + "__docId__": 936, "kind": "file", "name": "src/plugins/TreeViewPlugin/TreeViewPlugin.js", "content": "import {ModelTreeView} from \"./ModelTreeView.js\";\nimport {Plugin} from \"../../viewer/Plugin.js\";\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/#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), along\n * with an accompanying JSON [IFC metadata file](https://github.com/xeokit/xeokit-sdk/tree/master/examples/metaModels/schependomlaan).\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_XKT_Schependomlaan)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {TreeViewPlugin} from \"../src/plugins/TreeViewPlugin/TreeViewPlugin.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/schependomlaan.xkt\",\n * metaModelSrc: \"./metaModels/schependomlaan/metaModel.json\",\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/schependomlaan.xkt\",\n * metaModelSrc: \"./metaModels/schependomlaan/metaModel.json\",\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/#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/#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 */\nclass TreeViewPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {*} cfg Plugin configuration.\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 */\n constructor(viewer, cfg = {}) {\n\n super(\"TreeViewPlugin\", viewer);\n\n if (!cfg.containerElement) {\n this.error(\"Config expected: containerElement\");\n return;\n }\n\n this._containerElement = cfg.containerElement;\n this._modelTreeViews = {};\n this._autoAddModels = (cfg.autoAddModels !== false);\n this._autoExpandDepth = (cfg.autoExpandDepth || 0);\n this._sortNodes = (cfg.sortNodes !== false);\n this._pruneEmptyNodes = (cfg.pruneEmptyNodes !== false);\n\n if (this._autoAddModels) {\n const modelIds = Object.keys(this.viewer.scene.models);\n for (let i = 0, len = modelIds.length; i < len; i++) {\n const modelId = modelIds[i];\n this.addModel(modelId);\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 * Returns the map of {@link ModelTreeView}s.\n *\n * Each ModelTreeView is mapped to the ID of its model.\n *\n * @return {*|{}}\n */\n get modelTreeViews() {\n return this._modelTreeViews;\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 this._hierarchy = hierarchy;\n for (let modelId in this._modelTreeViews) {\n if (this._modelTreeViews.hasOwnProperty(modelId)) {\n this._modelTreeViews[modelId].setHierarchy(this._hierarchy);\n }\n }\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 * @returns {ModelTreeView} ModelTreeView for the newly-added model. If this method succeeded in adding the model,\n * then {@link ModelTreeView#valid} will equal ````true````. Otherwise, that property will be ````false````\n * and {@link ModelTreeView#errors} will contain error messages.\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._modelTreeViews[modelId]) {\n this.warn(\"Model already added: \" + modelId);\n return;\n }\n const modelTreeView = new ModelTreeView(this.viewer, this, model, metaModel, {\n containerElement: this._containerElement,\n autoExpandDepth: this._autoExpandDepth,\n hierarchy: this._hierarchy,\n sortNodes: this._sortNodes,\n pruneEmptyNodes: this._pruneEmptyNodes,\n rootName: options.rootName\n });\n this._modelTreeViews[modelId] = modelTreeView;\n model.on(\"destroyed\", () => {\n this.removeModel(model.id);\n });\n return modelTreeView;\n }\n\n /**\n * Removes a model from this 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 modelTreeView = this._modelTreeViews[modelId];\n if (!modelTreeView) {\n this.warn(\"Model not added: \" + modelId);\n return;\n }\n modelTreeView.destroy();\n delete this._modelTreeViews[modelId];\n }\n\n /**\n * Collapses all trees within this tree view.\n */\n collapse() {\n for (let modelId in this._modelTreeViews) {\n if (this._modelTreeViews.hasOwnProperty(modelId)) {\n const modelTreeView = this._modelTreeViews[modelId];\n modelTreeView.collapse();\n }\n }\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 const metaObject = this.viewer.metaScene.metaObjects[objectId];\n if (!metaObject) {\n this.error(\"MetaObject not found: \" + objectId);\n return;\n }\n const metaModel = metaObject.metaModel;\n const modelId = metaModel.id;\n const modelTreeView = this._modelTreeViews[modelId];\n if (!modelTreeView) {\n this.error(\"Object not in this TreeView: \" + objectId);\n return;\n }\n modelTreeView.showNode(objectId);\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 for (let modelId in this._modelTreeViews) {\n if (this._modelTreeViews.hasOwnProperty(modelId)) {\n const modelTreeView = this._modelTreeViews[modelId];\n modelTreeView.unShowNode();\n }\n }\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 for (let modelId in this._modelTreeViews) {\n if (this._modelTreeViews.hasOwnProperty(modelId)) {\n const modelTreeView = this._modelTreeViews[modelId];\n modelTreeView.collapse();\n modelTreeView.expandToDepth(depth);\n }\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 for (let modelId in this._modelTreeViews) {\n if (this._modelTreeViews.hasOwnProperty(modelId)) {\n this._modelTreeViews[modelId].destroy();\n }\n }\n this._modelTreeViews = {};\n super.destroy();\n }\n}\n\nexport {TreeViewPlugin};", @@ -17508,7 +17444,7 @@ "lineNumber": 1 }, { - "__docId__": 941, + "__docId__": 937, "kind": "class", "name": "TreeViewPlugin", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js", @@ -17532,7 +17468,7 @@ ] }, { - "__docId__": 942, + "__docId__": 938, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17641,7 +17577,7 @@ ] }, { - "__docId__": 943, + "__docId__": 939, "kind": "member", "name": "_containerElement", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17659,7 +17595,7 @@ } }, { - "__docId__": 944, + "__docId__": 940, "kind": "member", "name": "_modelTreeViews", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17677,7 +17613,7 @@ } }, { - "__docId__": 945, + "__docId__": 941, "kind": "member", "name": "_autoAddModels", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17695,7 +17631,7 @@ } }, { - "__docId__": 946, + "__docId__": 942, "kind": "member", "name": "_autoExpandDepth", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17713,7 +17649,7 @@ } }, { - "__docId__": 947, + "__docId__": 943, "kind": "member", "name": "_sortNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17731,7 +17667,7 @@ } }, { - "__docId__": 948, + "__docId__": 944, "kind": "member", "name": "_pruneEmptyNodes", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17749,7 +17685,7 @@ } }, { - "__docId__": 950, + "__docId__": 946, "kind": "get", "name": "modelTreeViews", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17776,7 +17712,7 @@ } }, { - "__docId__": 951, + "__docId__": 947, "kind": "set", "name": "hierarchy", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17797,7 +17733,7 @@ } }, { - "__docId__": 952, + "__docId__": 948, "kind": "member", "name": "_hierarchy", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17815,7 +17751,7 @@ } }, { - "__docId__": 953, + "__docId__": 949, "kind": "get", "name": "hierarchy", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17836,7 +17772,7 @@ } }, { - "__docId__": 954, + "__docId__": 950, "kind": "method", "name": "addModel", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17895,7 +17831,7 @@ } }, { - "__docId__": 955, + "__docId__": 951, "kind": "method", "name": "removeModel", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17921,7 +17857,7 @@ "return": null }, { - "__docId__": 956, + "__docId__": 952, "kind": "method", "name": "collapse", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17936,7 +17872,7 @@ "return": null }, { - "__docId__": 957, + "__docId__": 953, "kind": "method", "name": "showNode", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17962,7 +17898,7 @@ "return": null }, { - "__docId__": 958, + "__docId__": 954, "kind": "method", "name": "unShowNode", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -17977,7 +17913,7 @@ "return": null }, { - "__docId__": 959, + "__docId__": 955, "kind": "method", "name": "expandToDepth", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -18003,7 +17939,7 @@ "return": null }, { - "__docId__": 960, + "__docId__": 956, "kind": "method", "name": "withNodeTree", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -18039,7 +17975,7 @@ "return": null }, { - "__docId__": 961, + "__docId__": 957, "kind": "method", "name": "destroy", "memberof": "src/plugins/TreeViewPlugin/TreeViewPlugin.js~TreeViewPlugin", @@ -18054,7 +17990,7 @@ "return": null }, { - "__docId__": 963, + "__docId__": 959, "kind": "file", "name": "src/plugins/TreeViewPlugin/modelValidation.js", "content": "/**\n * Tests if {@link TreeViewPlugin} would be able to create a \"types\" hierarchy for the given {@link MetaModel}.\n *\n * @param {MetaModel} metaModel The MetaModel.\n * @param {String[]} errors Accumulates messages for validation errors.\n * @return {boolean} Returns ````true```` if no errors found, else ````false````.\n */\nfunction validateMetaModelForTreeViewTypesHierarchy(metaModel, errors) {\n const rootMetaObject = metaModel.rootMetaObject;\n if (!rootMetaObject) {\n errors.push(\"Can't build types hierarchy: model is empty\");\n return false;\n }\n return true;\n}\n\n/**\n * Tests if {@link TreeViewPlugin} would be able to create a \"storeys\" hierarchy for the given {@link MetaModel}.\n *\n * @param {MetaModel} metaModel The MetaModel.\n * @param {String[]} errors Accumulates messages for validation errors.\n * @return {boolean} Returns ````true```` if no errors found, else ````false````.\n */\nfunction validateMetaModelForTreeViewStoreysHierarchy(metaModel, errors) {\n const rootMetaObject = metaModel.rootMetaObject;\n if (!rootMetaObject) {\n errors.push(\"Can't build storeys hierarchy: model is empty\");\n return false;\n }\n return _validateMetaModelForStoreysHierarchy(rootMetaObject, errors);\n}\n\n/**\n * Tests if {@link TreeViewPlugin} would be able to create a \"containment\" hierarchy for the given {@link MetaModel}.\n *\n * @param {MetaModel} metaModel The MetaModel.\n * @param {String[]} errors Accumulates messages for validation errors.\n * @return {boolean} Returns ````true```` if no errors found, else ````false````.\n */\nfunction validateMetaModelForTreeViewContainmentHierarchy(metaModel, errors) {\n const rootMetaObject = metaModel.rootMetaObject;\n if (!rootMetaObject) {\n errors.push(\"Can't build containment hierarchy: model is empty\");\n return false;\n }\n return true;\n}\n\n/**\n * @private\n */\nfunction _validateMetaModelForStoreysHierarchy(metaObject, errors, 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 (!_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\nexport {\n validateMetaModelForTreeViewTypesHierarchy,\n validateMetaModelForTreeViewStoreysHierarchy,\n validateMetaModelForTreeViewContainmentHierarchy\n};", @@ -18065,7 +18001,7 @@ "lineNumber": 1 }, { - "__docId__": 964, + "__docId__": 960, "kind": "function", "name": "_validateMetaModelForStoreysHierarchy", "memberof": "src/plugins/TreeViewPlugin/modelValidation.js", @@ -18122,7 +18058,7 @@ } }, { - "__docId__": 965, + "__docId__": 961, "kind": "function", "name": "validateMetaModelForTreeViewTypesHierarchy", "memberof": "src/plugins/TreeViewPlugin/modelValidation.js", @@ -18168,7 +18104,7 @@ } }, { - "__docId__": 966, + "__docId__": 962, "kind": "function", "name": "validateMetaModelForTreeViewStoreysHierarchy", "memberof": "src/plugins/TreeViewPlugin/modelValidation.js", @@ -18214,7 +18150,7 @@ } }, { - "__docId__": 967, + "__docId__": 963, "kind": "function", "name": "validateMetaModelForTreeViewContainmentHierarchy", "memberof": "src/plugins/TreeViewPlugin/modelValidation.js", @@ -18260,7 +18196,7 @@ } }, { - "__docId__": 968, + "__docId__": 964, "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 *\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/OTCConferenceCenter.xkt\",\n * metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\"\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", @@ -18271,7 +18207,7 @@ "lineNumber": 1 }, { - "__docId__": 969, + "__docId__": 965, "kind": "variable", "name": "MAX_KD_TREE_DEPTH", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js", @@ -18292,7 +18228,7 @@ "ignore": true }, { - "__docId__": 970, + "__docId__": 966, "kind": "variable", "name": "kdTreeDimLength", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js", @@ -18313,7 +18249,7 @@ "ignore": true }, { - "__docId__": 971, + "__docId__": 967, "kind": "class", "name": "ViewCullPlugin", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js", @@ -18331,7 +18267,7 @@ ] }, { - "__docId__": 972, + "__docId__": 968, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18396,7 +18332,7 @@ ] }, { - "__docId__": 973, + "__docId__": 969, "kind": "member", "name": "_objectCullStates", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18414,7 +18350,7 @@ } }, { - "__docId__": 974, + "__docId__": 970, "kind": "member", "name": "_maxTreeDepth", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18432,7 +18368,7 @@ } }, { - "__docId__": 975, + "__docId__": 971, "kind": "member", "name": "_modelInfos", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18450,7 +18386,7 @@ } }, { - "__docId__": 976, + "__docId__": 972, "kind": "member", "name": "_frustum", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18468,7 +18404,7 @@ } }, { - "__docId__": 977, + "__docId__": 973, "kind": "member", "name": "_kdRoot", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18486,7 +18422,7 @@ } }, { - "__docId__": 978, + "__docId__": 974, "kind": "member", "name": "_frustumDirty", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18504,7 +18440,7 @@ } }, { - "__docId__": 979, + "__docId__": 975, "kind": "member", "name": "_kdTreeDirty", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18522,7 +18458,7 @@ } }, { - "__docId__": 980, + "__docId__": 976, "kind": "member", "name": "_onViewMatrix", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18540,7 +18476,7 @@ } }, { - "__docId__": 982, + "__docId__": 978, "kind": "member", "name": "_onProjMatrix", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18558,7 +18494,7 @@ } }, { - "__docId__": 984, + "__docId__": 980, "kind": "member", "name": "_onModelLoaded", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18576,7 +18512,7 @@ } }, { - "__docId__": 985, + "__docId__": 981, "kind": "member", "name": "_onSceneTick", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18594,7 +18530,7 @@ } }, { - "__docId__": 986, + "__docId__": 982, "kind": "set", "name": "enabled", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18619,7 +18555,7 @@ ] }, { - "__docId__": 987, + "__docId__": 983, "kind": "member", "name": "_enabled", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18637,7 +18573,7 @@ } }, { - "__docId__": 988, + "__docId__": 984, "kind": "get", "name": "enabled", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18661,7 +18597,7 @@ } }, { - "__docId__": 989, + "__docId__": 985, "kind": "method", "name": "_addModel", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18685,7 +18621,7 @@ "return": null }, { - "__docId__": 991, + "__docId__": 987, "kind": "method", "name": "_removeModel", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18709,7 +18645,7 @@ "return": null }, { - "__docId__": 993, + "__docId__": 989, "kind": "method", "name": "_doCull", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18726,7 +18662,7 @@ "return": null }, { - "__docId__": 994, + "__docId__": 990, "kind": "method", "name": "_buildFrustum", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18743,7 +18679,7 @@ "return": null }, { - "__docId__": 996, + "__docId__": 992, "kind": "method", "name": "_buildKDTree", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18760,7 +18696,7 @@ "return": null }, { - "__docId__": 999, + "__docId__": 995, "kind": "method", "name": "_insertEntityIntoKDTree", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18802,7 +18738,7 @@ "return": null }, { - "__docId__": 1000, + "__docId__": 996, "kind": "method", "name": "_visitKDNode", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18833,7 +18769,7 @@ "return": null }, { - "__docId__": 1001, + "__docId__": 997, "kind": "method", "name": "send", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18862,7 +18798,7 @@ "return": null }, { - "__docId__": 1002, + "__docId__": 998, "kind": "method", "name": "destroy", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18877,7 +18813,7 @@ "return": null }, { - "__docId__": 1003, + "__docId__": 999, "kind": "method", "name": "_clear", "memberof": "src/plugins/ViewCullPlugin/ViewCullPlugin.js~ViewCullPlugin", @@ -18894,7 +18830,7 @@ "return": null }, { - "__docId__": 1007, + "__docId__": 1003, "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 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 to ````.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};", @@ -18905,7 +18841,7 @@ "lineNumber": 1 }, { - "__docId__": 1008, + "__docId__": 1004, "kind": "class", "name": "XKTDefaultDataSource", "memberof": "src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js", @@ -18920,7 +18856,7 @@ "interface": false }, { - "__docId__": 1009, + "__docId__": 1005, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource", @@ -18934,7 +18870,7 @@ "undocument": true }, { - "__docId__": 1010, + "__docId__": 1006, "kind": "method", "name": "getMetaModel", "memberof": "src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource", @@ -18981,7 +18917,7 @@ "return": null }, { - "__docId__": 1011, + "__docId__": 1007, "kind": "method", "name": "getXKT", "memberof": "src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js~XKTDefaultDataSource", @@ -19028,7 +18964,7 @@ "return": null }, { - "__docId__": 1012, + "__docId__": 1008, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js", "content": "import {utils} from \"../../viewer/scene/utils.js\"\nimport {PerformanceModel} from \"../../viewer/scene/PerformanceModel/PerformanceModel.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\";\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;\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/#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, via ````.XKT```` format version 6.\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 * * Does not (yet) support textures or physically-based materials.\n *\n * ## Credits\n *\n * XKTLoaderPlugin and the ````xeokit-gltf-to-xkt```` tool (see below) are based on prototypes\n * by [Toni Marti](https://github.com/tmarti) at [uniZite](https://www.unizite.com/login).\n *\n * ## Creating *````.XKT````* Files and Metadata\n *\n * See [Creating Files for Offline BIM](https://github.com/xeokit/xeokit-sdk/wiki/Creating-Files-for-Offline-BIM).\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 * XKTLoaderPlugin 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 configure XKTLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, XKTLoaderPlugin\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 the Schependomlaan model from a [.XKT file](https://github.com/xeokit/xeokit-sdk/tree/master/examples/models/xkt/schependomlaan), along\n * with an accompanying JSON [IFC metadata file](https://github.com/xeokit/xeokit-sdk/tree/master/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 XKTLoaderPlugin will set the initial appearance of each object {@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://github.com/xeokit/xeokit-sdk/wiki/Viewing-BIM-Models-Offline).\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_XKT_metadata_Schependomlaan)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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/schependomlaan.xkt\",\n * metaModelSrc: \"./metaModels/schependomlaan/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 *````.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 * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#loading_XKT_Duplex_transform)]\n *\n * ````javascript\n * xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\",\n * metaModelSrc: \"./metaModels/duplex/metaModel.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.\n *\n * In the example below, we'll load only the objects that represent walls.\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_XKT_includeTypes)]\n *\n * ````javascript\n * const model2 = xktLoader.load({\n * id: \"myModel2\",\n * src: \"./models/xkt/OTCConferenceCenter/OTCConferenceCenter.xkt\",\n * metaModelSrc: \"./metaModels/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.\n *\n * In the example below, we'll load only the objects that do not represent empty space.\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_XKT_excludeTypes)]\n *\n * ````javascript\n * const model3 = xktLoader.load({\n * id: \"myModel3\",\n * src: \"./models/xkt/OTCConferenceCenter/OTCConferenceCenter.xkt\",\n * metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\",\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 * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_XKT_objectDefaults)]\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/duplex.xkt\",\n * metaModelSrc: \"./metaModels/duplex/metaModel.json\", // Creates a MetaObject instances in scene.metaScene.metaObjects\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 * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#loading_XKT_dataSource)]\n *\n * ````javascript\n * import {utils} from \"./../src/viewer/scene/utils.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/duplex.xkt\",\n * metaModelSrc: \"./metaModels/duplex/metaModel.json\" // Creates a MetaObject instances in scene.metaScene.metaObjects\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/#TreeViewPlugin_Containment_MultipleModels)]\n *\n * ````javascript\n * xktLoader.globalizeObjectIds = true;\n *\n * const model = xktLoader.load({\n * id: \"model1\",\n * src: \"./models/xkt/schependomlaan/schependomlaan.xkt\",\n * metaModelSrc: \"./metaModels/schependomlaan/metaModel.json\"\n * });\n *\n * const model2 = xktLoader.load({\n * id: \"model2\",\n * src: \"./models/xkt/schependomlaan/schependomlaan.xkt\",\n * metaModelSrc: \"./metaModels/schependomlaan/metaModel.json\"\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 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 {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 PerformanceModel} 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 */\n constructor(viewer, cfg = {}) {\n\n super(\"XKTLoader\", viewer, cfg);\n\n this._maxGeometryBatchSize = cfg.maxGeometryBatchSize;\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\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 * 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 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 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 * 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 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 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 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 /**\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 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 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 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 * Loads an ````.xkt```` model into this XKTLoaderPlugin'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 *````.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 to an optional metadata file, as an alternative to the ````metaModelData```` parameter (see user guide: [Model Metadata](https://github.com/xeolabs/xeokit.io/wiki/Model-Metadata)).\n * @param {*} [params.metaModelData] JSON model metadata, as an alternative to the ````metaModelSrc```` parameter (see user guide: [Model Metadata](https://github.com/xeolabs/xeokit.io/wiki/Model-Metadata)).\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.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 {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\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 * @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 performanceModel = new PerformanceModel(this.viewer.scene, utils.apply(params, {\n isModel: true,\n maxGeometryBatchSize: this._maxGeometryBatchSize\n }));\n\n const modelId = performanceModel.id; // In case ID was auto-generated\n\n if (!params.src && !params.xkt) {\n this.error(\"load() param expected: src or xkt\");\n return performanceModel; // Return new empty model\n }\n\n const options = {};\n\n if (params.metaModelSrc || params.metaModelData) {\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 const processMetaModelData = (metaModelData) => {\n\n const metaModel = this.viewer.metaScene.createMetaModel(modelId, metaModelData, {\n includeTypes: includeTypes,\n excludeTypes: excludeTypes,\n globalizeObjectIds: this.globalizeObjectIds\n });\n\n if (!metaModel) {\n return false;\n }\n\n if (params.src) {\n this._loadModel(params.src, params, options, performanceModel);\n } else {\n this._parseModel(params.xkt, params, options, performanceModel);\n }\n\n performanceModel.once(\"destroyed\", () => {\n this.viewer.metaScene.destroyMetaModel(performanceModel.id);\n });\n\n return true;\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, (metaModelData) => {\n\n if (performanceModel.destroyed) {\n return;\n }\n\n if (!processMetaModelData(metaModelData)) {\n\n this.error(`load(): Failed to load model metadata for model '${modelId} from '${metaModelSrc}' - metadata not valid`);\n\n performanceModel.fire(\"error\", \"Metadata not valid\");\n }\n\n this.viewer.scene.canvas.spinner.processes--;\n\n }, (errMsg) => {\n\n this.error(`load(): Failed to load model metadata for model '${modelId} from '${metaModelSrc}' - ${errMsg}`);\n\n performanceModel.fire(\"error\", `Failed to load model metadata from '${metaModelSrc}' - ${errMsg}`);\n\n this.viewer.scene.canvas.spinner.processes--;\n });\n\n } else if (params.metaModelData) {\n\n if (!processMetaModelData(params.metaModelData)) {\n\n this.error(`load(): Failed to load model metadata for model '${modelId} from '${metaModelSrc}' - metadata not valid`);\n\n performanceModel.fire(\"error\", \"Metadata not valid\");\n }\n }\n\n } else {\n if (params.src) {\n this._loadModel(params.src, params, options, performanceModel);\n } else {\n this._parseModel(params.xkt, params, options, performanceModel);\n }\n }\n\n return performanceModel;\n }\n\n _loadModel(src, params, options, performanceModel) {\n\n const spinner = this.viewer.scene.canvas.spinner;\n\n spinner.processes++;\n\n this._dataSource.getXKT(params.src, (arrayBuffer) => {\n this._parseModel(arrayBuffer, params, options, performanceModel);\n spinner.processes--;\n },\n (errMsg) => {\n spinner.processes--;\n this.error(errMsg);\n performanceModel.fire(\"error\", errMsg);\n });\n }\n\n _parseModel(arrayBuffer, params, options, performanceModel) {\n\n if (performanceModel.destroyed) {\n return;\n }\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\n if (!parser) {\n this.error(\"Unsupported .XKT file version: \" + xktVersion + \" - this XKTLoaderPlugin supports versions \" + Object.keys(parsers));\n return;\n }\n\n this.log(\"Loading .xkt V\" + xktVersion);\n\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\n parser.parse(this.viewer, options, elements, performanceModel);\n\n performanceModel.finalize();\n\n performanceModel.scene.once(\"tick\", () => {\n if (performanceModel.destroyed) {\n return;\n }\n performanceModel.scene.fire(\"modelLoaded\", performanceModel.id); // FIXME: Assumes listeners know order of these two events\n performanceModel.fire(\"loaded\", true, false); // Don't forget the event, for late subscribers\n });\n }\n}\n\nexport {XKTLoaderPlugin}\n", @@ -19039,7 +18975,7 @@ "lineNumber": 1 }, { - "__docId__": 1013, + "__docId__": 1009, "kind": "variable", "name": "parsers", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js", @@ -19060,7 +18996,7 @@ "ignore": true }, { - "__docId__": 1014, + "__docId__": 1010, "kind": "class", "name": "XKTLoaderPlugin", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js", @@ -19084,7 +19020,7 @@ ] }, { - "__docId__": 1015, + "__docId__": 1011, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19201,7 +19137,7 @@ ] }, { - "__docId__": 1016, + "__docId__": 1012, "kind": "member", "name": "_maxGeometryBatchSize", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19219,7 +19155,7 @@ } }, { - "__docId__": 1022, + "__docId__": 1018, "kind": "get", "name": "supportedVersions", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19251,7 +19187,7 @@ } }, { - "__docId__": 1023, + "__docId__": 1019, "kind": "set", "name": "dataSource", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19272,7 +19208,7 @@ } }, { - "__docId__": 1024, + "__docId__": 1020, "kind": "member", "name": "_dataSource", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19290,7 +19226,7 @@ } }, { - "__docId__": 1025, + "__docId__": 1021, "kind": "get", "name": "dataSource", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19311,7 +19247,7 @@ } }, { - "__docId__": 1026, + "__docId__": 1022, "kind": "set", "name": "objectDefaults", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19332,7 +19268,7 @@ } }, { - "__docId__": 1027, + "__docId__": 1023, "kind": "member", "name": "_objectDefaults", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19350,7 +19286,7 @@ } }, { - "__docId__": 1028, + "__docId__": 1024, "kind": "get", "name": "objectDefaults", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19371,7 +19307,7 @@ } }, { - "__docId__": 1029, + "__docId__": 1025, "kind": "set", "name": "includeTypes", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19392,7 +19328,7 @@ } }, { - "__docId__": 1030, + "__docId__": 1026, "kind": "member", "name": "_includeTypes", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19410,7 +19346,7 @@ } }, { - "__docId__": 1031, + "__docId__": 1027, "kind": "get", "name": "includeTypes", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19431,7 +19367,7 @@ } }, { - "__docId__": 1032, + "__docId__": 1028, "kind": "set", "name": "excludeTypes", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19452,7 +19388,7 @@ } }, { - "__docId__": 1033, + "__docId__": 1029, "kind": "member", "name": "_excludeTypes", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19470,7 +19406,7 @@ } }, { - "__docId__": 1034, + "__docId__": 1030, "kind": "get", "name": "excludeTypes", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19491,7 +19427,7 @@ } }, { - "__docId__": 1035, + "__docId__": 1031, "kind": "set", "name": "excludeUnclassifiedObjects", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19512,7 +19448,7 @@ } }, { - "__docId__": 1036, + "__docId__": 1032, "kind": "member", "name": "_excludeUnclassifiedObjects", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19530,7 +19466,7 @@ } }, { - "__docId__": 1037, + "__docId__": 1033, "kind": "get", "name": "excludeUnclassifiedObjects", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19551,7 +19487,7 @@ } }, { - "__docId__": 1038, + "__docId__": 1034, "kind": "set", "name": "globalizeObjectIds", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19572,7 +19508,7 @@ } }, { - "__docId__": 1039, + "__docId__": 1035, "kind": "member", "name": "_globalizeObjectIds", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19590,7 +19526,7 @@ } }, { - "__docId__": 1040, + "__docId__": 1036, "kind": "get", "name": "globalizeObjectIds", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19611,7 +19547,7 @@ } }, { - "__docId__": 1041, + "__docId__": 1037, "kind": "method", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19891,7 +19827,7 @@ } }, { - "__docId__": 1042, + "__docId__": 1038, "kind": "method", "name": "_loadModel", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19933,7 +19869,7 @@ "return": null }, { - "__docId__": 1043, + "__docId__": 1039, "kind": "method", "name": "_parseModel", "memberof": "src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js~XKTLoaderPlugin", @@ -19975,7 +19911,7 @@ "return": null }, { - "__docId__": 1044, + "__docId__": 1040, "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, performanceModel) {\n\n performanceModel.positionsCompression = \"precompressed\";\n performanceModel.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(performanceModel.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 performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positions: positions.subarray(meshPositions [j], lastMesh ? positions.length : meshPositions [j + 1]),\n normals: 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 performanceModel.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, performanceModel) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, performanceModel);\n }\n};\n\nexport {ParserV1};", @@ -19986,7 +19922,7 @@ "lineNumber": 1 }, { - "__docId__": 1045, + "__docId__": 1041, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV1.js", @@ -20007,7 +19943,7 @@ "ignore": true }, { - "__docId__": 1046, + "__docId__": 1042, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV1.js", @@ -20028,7 +19964,7 @@ "ignore": true }, { - "__docId__": 1047, + "__docId__": 1043, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV1.js", @@ -20059,7 +19995,7 @@ "ignore": true }, { - "__docId__": 1048, + "__docId__": 1044, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV1.js", @@ -20090,7 +20026,7 @@ "ignore": true }, { - "__docId__": 1049, + "__docId__": 1045, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV1.js", @@ -20135,7 +20071,7 @@ "ignore": true }, { - "__docId__": 1050, + "__docId__": 1046, "kind": "variable", "name": "ParserV1", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV1.js", @@ -20155,7 +20091,7 @@ } }, { - "__docId__": 1051, + "__docId__": 1047, "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, performanceModel) {\n\n performanceModel.positionsCompression = \"precompressed\";\n performanceModel.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(performanceModel.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 = 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 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 = \"geometry.\" + jj;\n\n if (!(geometryId in alreadyCreatedGeometries)) {\n\n performanceModel.createGeometry({\n id: geometryId,\n positions: tmpPositions,\n normals: tmpNormals,\n indices: tmpIndices,\n edgeIndices: tmpEdgeIndices,\n primitive: \"triangles\",\n positionsDecodeMatrix: inflatedData.positionsDecodeMatrix,\n });\n\n alreadyCreatedGeometries [geometryId] = true;\n }\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n color: color,\n opacity: opacity,\n matrix: entityMatrix,\n geometryId: geometryId,\n }));\n\n meshIds.push(meshId);\n\n } else {\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positions: tmpPositions,\n normals: 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 performanceModel.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, performanceModel) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, performanceModel);\n }\n};\n\nexport {ParserV2};", @@ -20166,7 +20102,7 @@ "lineNumber": 1 }, { - "__docId__": 1052, + "__docId__": 1048, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV2.js", @@ -20187,7 +20123,7 @@ "ignore": true }, { - "__docId__": 1053, + "__docId__": 1049, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV2.js", @@ -20218,7 +20154,7 @@ "ignore": true }, { - "__docId__": 1054, + "__docId__": 1050, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV2.js", @@ -20249,7 +20185,7 @@ "ignore": true }, { - "__docId__": 1055, + "__docId__": 1051, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV2.js", @@ -20270,7 +20206,7 @@ "ignore": true }, { - "__docId__": 1056, + "__docId__": 1052, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV2.js", @@ -20315,7 +20251,7 @@ "ignore": true }, { - "__docId__": 1057, + "__docId__": 1053, "kind": "variable", "name": "ParserV2", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV2.js", @@ -20335,7 +20271,7 @@ } }, { - "__docId__": 1058, + "__docId__": 1054, "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, performanceModel) {\n\n performanceModel.positionsCompression = \"precompressed\";\n performanceModel.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(performanceModel.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 = 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 var geometryId = \"geometry.\" + jj;\n\n if (!(geometryId in _alreadyCreatedGeometries)) {\n\n performanceModel.createGeometry({\n id: geometryId,\n positions: tmpPositions,\n normals: tmpNormals,\n indices: tmpIndices,\n edgeIndices: tmpEdgeIndices,\n primitive: \"triangles\",\n positionsDecodeMatrix: inflatedData.instancedPositionsDecodeMatrix\n });\n\n _alreadyCreatedGeometries [geometryId] = true;\n }\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n color: color,\n opacity: opacity,\n matrix: entityMatrix,\n geometryId: geometryId,\n }));\n\n meshIds.push(meshId);\n\n } else {\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positions: tmpPositions,\n normals: 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 performanceModel.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, performanceModel) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, performanceModel);\n }\n};\n\nexport {ParserV3};", @@ -20346,7 +20282,7 @@ "lineNumber": 1 }, { - "__docId__": 1059, + "__docId__": 1055, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV3.js", @@ -20367,7 +20303,7 @@ "ignore": true }, { - "__docId__": 1060, + "__docId__": 1056, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV3.js", @@ -20398,7 +20334,7 @@ "ignore": true }, { - "__docId__": 1061, + "__docId__": 1057, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV3.js", @@ -20429,7 +20365,7 @@ "ignore": true }, { - "__docId__": 1062, + "__docId__": 1058, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV3.js", @@ -20450,7 +20386,7 @@ "ignore": true }, { - "__docId__": 1063, + "__docId__": 1059, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV3.js", @@ -20495,7 +20431,7 @@ "ignore": true }, { - "__docId__": 1064, + "__docId__": 1060, "kind": "variable", "name": "ParserV3", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV3.js", @@ -20515,7 +20451,7 @@ } }, { - "__docId__": 1065, + "__docId__": 1061, "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, performanceModel) {\n\n performanceModel.positionsCompression = \"precompressed\";\n performanceModel.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 PerformanceModel#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 var geometryId = \"geometry\" + orderedPrimitiveIndex; // These IDs are local to the PerformanceModel\n\n performanceModel.createGeometry({\n id: geometryId,\n primitive: \"triangles\",\n positions: primitivePositions,\n normals: 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 = orderedPrimitiveIndex; // These IDs are local to the PerformanceModel\n\n const entityIndex = batchedPrimitiveEntityIndexes[orderedPrimitiveIndex];\n const entityId = eachEntityId[entityIndex];\n\n const meshDefaults = {}; // TODO: get from lookup from entity IDs\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positions: primitivePositions,\n normals: 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 = \"instance.\" + countInstances++;\n const geometryId = \"geometry\" + primitiveIndex;\n const matricesIndex = (eachEntityMatricesPortion [entityIndex]) * 16;\n const matrix = matrices.subarray(matricesIndex, matricesIndex + 16);\n\n performanceModel.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 performanceModel.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, performanceModel) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, performanceModel);\n }\n};\n\nexport {ParserV4};", @@ -20526,7 +20462,7 @@ "lineNumber": 1 }, { - "__docId__": 1066, + "__docId__": 1062, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV4.js", @@ -20547,7 +20483,7 @@ "ignore": true }, { - "__docId__": 1067, + "__docId__": 1063, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV4.js", @@ -20578,7 +20514,7 @@ "ignore": true }, { - "__docId__": 1068, + "__docId__": 1064, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV4.js", @@ -20609,7 +20545,7 @@ "ignore": true }, { - "__docId__": 1069, + "__docId__": 1065, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV4.js", @@ -20630,7 +20566,7 @@ "ignore": true }, { - "__docId__": 1070, + "__docId__": 1066, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV4.js", @@ -20675,7 +20611,7 @@ "ignore": true }, { - "__docId__": 1071, + "__docId__": 1067, "kind": "variable", "name": "ParserV4", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV4.js", @@ -20695,7 +20631,7 @@ } }, { - "__docId__": 1072, + "__docId__": 1068, "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, performanceModel) {\n\n performanceModel.positionsCompression = \"disabled\"; // Positions in XKT V4 are floats, which we never quantize, for precision with big models\n performanceModel.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 var geometryId = \"geometry\" + primitiveIndex; // These IDs are local to the PerformanceModel\n\n performanceModel.createGeometry({\n id: geometryId,\n primitive: \"triangles\",\n positions: primitivePositions,\n normals: 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 PerformanceModel\n\n const entityIndex = batchedPrimitiveEntityIndexes[primitiveIndex];\n const entityId = eachEntityId[entityIndex];\n\n const meshDefaults = {}; // TODO: get from lookup from entity IDs\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positions: primitivePositions,\n normals: 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 performanceModel.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 performanceModel.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, performanceModel) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, performanceModel);\n }\n};\n\nexport {ParserV5};", @@ -20706,7 +20642,7 @@ "lineNumber": 1 }, { - "__docId__": 1073, + "__docId__": 1069, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV5.js", @@ -20727,7 +20663,7 @@ "ignore": true }, { - "__docId__": 1074, + "__docId__": 1070, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV5.js", @@ -20758,7 +20694,7 @@ "ignore": true }, { - "__docId__": 1075, + "__docId__": 1071, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV5.js", @@ -20789,7 +20725,7 @@ "ignore": true }, { - "__docId__": 1076, + "__docId__": 1072, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV5.js", @@ -20810,7 +20746,7 @@ "ignore": true }, { - "__docId__": 1077, + "__docId__": 1073, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV5.js", @@ -20855,7 +20791,7 @@ "ignore": true }, { - "__docId__": 1078, + "__docId__": 1074, "kind": "variable", "name": "ParserV5", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV5.js", @@ -20875,7 +20811,7 @@ } }, { - "__docId__": 1079, + "__docId__": 1075, "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, performanceModel) {\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 let nextMeshId = 0;\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(performanceModel.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 = nextMeshId++;\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 = \"geometry.\" + tileIndex + \".\" + primitiveIndex; // These IDs are local to the PerformanceModel\n\n if (!geometryCreated[geometryId]) {\n\n performanceModel.createGeometry({\n id: geometryId,\n rtcCenter: tileCenter,\n primitive: \"triangles\",\n positions: primitivePositions,\n normals: primitiveNormals,\n indices: primitiveIndices,\n edgeIndices: primitiveEdgeIndices,\n positionsDecodeMatrix: reusedPrimitivesDecodeMatrix\n });\n\n geometryCreated[geometryId] = true;\n }\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId: geometryId,\n matrix: entityMatrix,\n color: color,\n opacity: opacity\n }));\n\n meshIds.push(meshId);\n\n } else {\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n rtcCenter: tileCenter,\n primitive: \"triangles\",\n positions: primitivePositions,\n normals: 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 performanceModel.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, performanceModel) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, performanceModel);\n }\n};\n\nexport {ParserV6};", @@ -20886,7 +20822,7 @@ "lineNumber": 1 }, { - "__docId__": 1080, + "__docId__": 1076, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV6.js", @@ -20907,7 +20843,7 @@ "ignore": true }, { - "__docId__": 1081, + "__docId__": 1077, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV6.js", @@ -20938,7 +20874,7 @@ "ignore": true }, { - "__docId__": 1082, + "__docId__": 1078, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV6.js", @@ -20969,7 +20905,7 @@ "ignore": true }, { - "__docId__": 1083, + "__docId__": 1079, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV6.js", @@ -20990,7 +20926,7 @@ "ignore": true }, { - "__docId__": 1084, + "__docId__": 1080, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV6.js", @@ -21035,7 +20971,7 @@ "ignore": true }, { - "__docId__": 1085, + "__docId__": 1081, "kind": "variable", "name": "ParserV6", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV6.js", @@ -21055,7 +20991,7 @@ } }, { - "__docId__": 1086, + "__docId__": 1082, "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 load(viewer, options, inflatedData, performanceModel) {\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(performanceModel.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 = nextMeshId++;\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 = \"geometry.\" + tileIndex + \".\" + geometryIndex; // These IDs are local to the PerformanceModel\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 = 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 performanceModel.createGeometry({\n id: geometryId,\n rtcCenter: tileCenter,\n primitive: primitiveName,\n positions: geometryPositions,\n normals: geometryNormals,\n colors: geometryColors,\n indices: geometryIndices,\n edgeIndices: geometryEdgeIndices,\n positionsDecodeMatrix: reusedGeometriesDecodeMatrix\n });\n\n geometryCreated[geometryId] = true;\n }\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId: geometryId,\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 = 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 performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n rtcCenter: tileCenter,\n primitive: primitiveName,\n positions: geometryPositions,\n normals: 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 performanceModel.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, performanceModel) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, performanceModel);\n }\n};\n\nexport {ParserV7};", @@ -21066,7 +21002,7 @@ "lineNumber": 1 }, { - "__docId__": 1087, + "__docId__": 1083, "kind": "variable", "name": "pako", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV7.js", @@ -21087,7 +21023,7 @@ "ignore": true }, { - "__docId__": 1088, + "__docId__": 1084, "kind": "function", "name": "extract", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV7.js", @@ -21118,7 +21054,7 @@ "ignore": true }, { - "__docId__": 1089, + "__docId__": 1085, "kind": "function", "name": "inflate", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV7.js", @@ -21149,7 +21085,7 @@ "ignore": true }, { - "__docId__": 1090, + "__docId__": 1086, "kind": "variable", "name": "decompressColor", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV7.js", @@ -21170,7 +21106,7 @@ "ignore": true }, { - "__docId__": 1091, + "__docId__": 1087, "kind": "function", "name": "load", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV7.js", @@ -21215,7 +21151,7 @@ "ignore": true }, { - "__docId__": 1092, + "__docId__": 1088, "kind": "variable", "name": "ParserV7", "memberof": "src/plugins/XKTLoaderPlugin/parsers/ParserV7.js", @@ -21235,7 +21171,7 @@ } }, { - "__docId__": 1093, + "__docId__": 1089, "kind": "file", "name": "src/plugins/XKTLoaderPlugin/parsers/lib/pako.js", "content": "/* pako 1.0.10 nodeca/pako */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.pako = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n /**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n /**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n /**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n /**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\n function Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n }\n\n /**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\n Deflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n };\n\n\n /**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\n Deflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n };\n\n\n /**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\n Deflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n };\n\n\n /**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\n function deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n }\n\n\n /**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\n function deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n }\n\n\n /**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\n function gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n }\n\n\n exports.Deflate = Deflate;\n exports.deflate = deflate;\n exports.deflateRaw = deflateRaw;\n exports.gzip = gzip;\n\n },{\"./utils/common\":3,\"./utils/strings\":4,\"./zlib/deflate\":8,\"./zlib/messages\":13,\"./zlib/zstream\":15}],2:[function(require,module,exports){\n 'use strict';\n\n\n var zlib_inflate = require('./zlib/inflate');\n var utils = require('./utils/common');\n var strings = require('./utils/strings');\n var c = require('./zlib/constants');\n var msg = require('./zlib/messages');\n var ZStream = require('./zlib/zstream');\n var GZheader = require('./zlib/gzheader');\n\n var toString = Object.prototype.toString;\n\n /**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n /* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n /**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n /**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n /**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n /**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\n function Inflate(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n }\n\n /**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\n Inflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status === c.Z_NEED_DICT && dictionary) {\n status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);\n }\n\n if (status === c.Z_BUF_ERROR && allowBufError === true) {\n status = c.Z_OK;\n allowBufError = false;\n }\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === c.Z_SYNC_FLUSH) {\n this.onEnd(c.Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n };\n\n\n /**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\n Inflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n };\n\n\n /**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\n Inflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n };\n\n\n /**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\n function inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n }\n\n\n /**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\n function inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n }\n\n\n /**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\n exports.Inflate = Inflate;\n exports.inflate = inflate;\n exports.inflateRaw = inflateRaw;\n exports.ungzip = inflate;\n\n },{\"./utils/common\":3,\"./utils/strings\":4,\"./zlib/constants\":6,\"./zlib/gzheader\":9,\"./zlib/inflate\":11,\"./zlib/messages\":13,\"./zlib/zstream\":15}],3:[function(require,module,exports){\n 'use strict';\n\n\n var TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\n function _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n\n exports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n };\n\n\n// reduce buffer size, avoiding mem copy\n exports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n };\n\n\n var fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n };\n\n var fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n };\n\n\n// Enable/Disable typed arrays use, for testing\n//\n exports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n };\n\n exports.setTyped(TYPED_OK);\n\n },{}],4:[function(require,module,exports){\n// String encode/decode helpers\n 'use strict';\n\n\n var utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\n var STR_APPLY_OK = true;\n var STR_APPLY_UIA_OK = true;\n\n try { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\n try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\n var _utf8len = new utils.Buf8(256);\n for (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n }\n _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\n exports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n };\n\n// Helper (used in 2 places)\n function buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n }\n\n\n// Convert byte array to binary string\n exports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n };\n\n\n// Convert binary string (typed, when possible)\n exports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n };\n\n\n// convert array to string\n exports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n };\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\n exports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n };\n\n },{\"./common\":3}],5:[function(require,module,exports){\n 'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n function adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n }\n\n\n module.exports = adler32;\n\n },{}],6:[function(require,module,exports){\n 'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n module.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n };\n\n },{}],7:[function(require,module,exports){\n 'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\n function makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n }\n\n// Create table on load. Just 255 signed longs. Not a problem.\n var crcTable = makeTable();\n\n\n function crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n }\n\n\n module.exports = crc32;\n\n },{}],8:[function(require,module,exports){\n 'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n var utils = require('../utils/common');\n var trees = require('./trees');\n var adler32 = require('./adler32');\n var crc32 = require('./crc32');\n var msg = require('./messages');\n\n /* Public constants ==========================================================*/\n /* ===========================================================================*/\n\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n var Z_NO_FLUSH = 0;\n var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n var Z_FULL_FLUSH = 3;\n var Z_FINISH = 4;\n var Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n var Z_OK = 0;\n var Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\n var Z_STREAM_ERROR = -2;\n var Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\n var Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n /* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\n var Z_DEFAULT_COMPRESSION = -1;\n\n\n var Z_FILTERED = 1;\n var Z_HUFFMAN_ONLY = 2;\n var Z_RLE = 3;\n var Z_FIXED = 4;\n var Z_DEFAULT_STRATEGY = 0;\n\n /* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\n var Z_UNKNOWN = 2;\n\n\n /* The deflate compression method */\n var Z_DEFLATED = 8;\n\n /*============================================================================*/\n\n\n var MAX_MEM_LEVEL = 9;\n /* Maximum value for memLevel in deflateInit2 */\n var MAX_WBITS = 15;\n /* 32K LZ77 window */\n var DEF_MEM_LEVEL = 8;\n\n\n var LENGTH_CODES = 29;\n /* number of length codes, not counting the special END_BLOCK code */\n var LITERALS = 256;\n /* number of literal bytes 0..255 */\n var L_CODES = LITERALS + 1 + LENGTH_CODES;\n /* number of Literal or Length codes, including the END_BLOCK code */\n var D_CODES = 30;\n /* number of distance codes */\n var BL_CODES = 19;\n /* number of codes used to transfer the bit lengths */\n var HEAP_SIZE = 2 * L_CODES + 1;\n /* maximum heap size */\n var MAX_BITS = 15;\n /* All codes must not exceed MAX_BITS bits */\n\n var MIN_MATCH = 3;\n var MAX_MATCH = 258;\n var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\n var PRESET_DICT = 0x20;\n\n var INIT_STATE = 42;\n var EXTRA_STATE = 69;\n var NAME_STATE = 73;\n var COMMENT_STATE = 91;\n var HCRC_STATE = 103;\n var BUSY_STATE = 113;\n var FINISH_STATE = 666;\n\n var BS_NEED_MORE = 1; /* block not completed, need more input or more output */\n var BS_BLOCK_DONE = 2; /* block flush performed */\n var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\n var BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\n var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\n function err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n }\n\n function rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n }\n\n function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n /* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\n function flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n }\n\n\n function flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n }\n\n\n function put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n }\n\n\n /* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\n function putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n }\n\n\n /* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\n function read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n }\n\n\n /* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\n function longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n }\n\n\n /* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\n function fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n }\n\n /* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\n function deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n }\n\n /* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\n function deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n }\n\n /* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\n function deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n }\n\n\n /* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\n function deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n }\n\n /* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\n function deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n }\n\n /* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\n function Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n }\n\n var configuration_table;\n\n configuration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n ];\n\n\n /* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\n function lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n }\n\n\n function DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n }\n\n\n function deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n }\n\n\n function deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n }\n\n\n function deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n }\n\n\n function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n }\n\n function deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n }\n\n\n function deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n }\n\n function deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n }\n\n\n /* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\n function deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n }\n\n\n exports.deflateInit = deflateInit;\n exports.deflateInit2 = deflateInit2;\n exports.deflateReset = deflateReset;\n exports.deflateResetKeep = deflateResetKeep;\n exports.deflateSetHeader = deflateSetHeader;\n exports.deflate = deflate;\n exports.deflateEnd = deflateEnd;\n exports.deflateSetDictionary = deflateSetDictionary;\n exports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n /* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n },{\"../utils/common\":3,\"./adler32\":5,\"./crc32\":7,\"./messages\":13,\"./trees\":14}],9:[function(require,module,exports){\n 'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n function GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n }\n\n module.exports = GZheader;\n\n },{}],10:[function(require,module,exports){\n 'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\n var BAD = 30; /* got a data error -- remain here until reset */\n var TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n /*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\n module.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n };\n\n },{}],11:[function(require,module,exports){\n 'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n var utils = require('../utils/common');\n var adler32 = require('./adler32');\n var crc32 = require('./crc32');\n var inflate_fast = require('./inffast');\n var inflate_table = require('./inftrees');\n\n var CODES = 0;\n var LENS = 1;\n var DISTS = 2;\n\n /* Public constants ==========================================================*/\n /* ===========================================================================*/\n\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\n var Z_FINISH = 4;\n var Z_BLOCK = 5;\n var Z_TREES = 6;\n\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n var Z_OK = 0;\n var Z_STREAM_END = 1;\n var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\n var Z_STREAM_ERROR = -2;\n var Z_DATA_ERROR = -3;\n var Z_MEM_ERROR = -4;\n var Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n /* The deflate compression method */\n var Z_DEFLATED = 8;\n\n\n /* STATES ====================================================================*/\n /* ===========================================================================*/\n\n\n var HEAD = 1; /* i: waiting for magic header */\n var FLAGS = 2; /* i: waiting for method and flags (gzip) */\n var TIME = 3; /* i: waiting for modification time (gzip) */\n var OS = 4; /* i: waiting for extra flags and operating system (gzip) */\n var EXLEN = 5; /* i: waiting for extra length (gzip) */\n var EXTRA = 6; /* i: waiting for extra bytes (gzip) */\n var NAME = 7; /* i: waiting for end of file name (gzip) */\n var COMMENT = 8; /* i: waiting for end of comment (gzip) */\n var HCRC = 9; /* i: waiting for header crc (gzip) */\n var DICTID = 10; /* i: waiting for dictionary check value */\n var DICT = 11; /* waiting for inflateSetDictionary() call */\n var TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n var TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\n var STORED = 14; /* i: waiting for stored size (length and complement) */\n var COPY_ = 15; /* i/o: same as COPY below, but only first time in */\n var COPY = 16; /* i/o: waiting for input or output to copy stored block */\n var TABLE = 17; /* i: waiting for dynamic block table lengths */\n var LENLENS = 18; /* i: waiting for code length code lengths */\n var CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\n var LEN_ = 20; /* i: same as LEN below, but only first time in */\n var LEN = 21; /* i: waiting for length/lit/eob code */\n var LENEXT = 22; /* i: waiting for length extra bits */\n var DIST = 23; /* i: waiting for distance code */\n var DISTEXT = 24; /* i: waiting for distance extra bits */\n var MATCH = 25; /* o: waiting for output space to copy string */\n var LIT = 26; /* o: waiting for output space to write literal */\n var CHECK = 27; /* i: waiting for 32-bit check value */\n var LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\n var DONE = 29; /* finished check, done -- remain here until reset */\n var BAD = 30; /* got a data error -- remain here until reset */\n var MEM = 31; /* got an inflate() memory error -- remain here until reset */\n var SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n /* ===========================================================================*/\n\n\n\n var ENOUGH_LENS = 852;\n var ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\n var MAX_WBITS = 15;\n /* 32K LZ77 window */\n var DEF_WBITS = MAX_WBITS;\n\n\n function zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n }\n\n\n function InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n }\n\n function inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n }\n\n function inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n }\n\n function inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n }\n\n function inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n }\n\n function inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n }\n\n\n /*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\n var virgin = true;\n\n var lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n function fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n }\n\n\n /*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\n function updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n }\n\n function inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n }\n\n function inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n }\n\n function inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n }\n\n function inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n }\n\n exports.inflateReset = inflateReset;\n exports.inflateReset2 = inflateReset2;\n exports.inflateResetKeep = inflateResetKeep;\n exports.inflateInit = inflateInit;\n exports.inflateInit2 = inflateInit2;\n exports.inflate = inflate;\n exports.inflateEnd = inflateEnd;\n exports.inflateGetHeader = inflateGetHeader;\n exports.inflateSetDictionary = inflateSetDictionary;\n exports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n /* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n },{\"../utils/common\":3,\"./adler32\":5,\"./crc32\":7,\"./inffast\":10,\"./inftrees\":12}],12:[function(require,module,exports){\n 'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n var utils = require('../utils/common');\n\n var MAXBITS = 15;\n var ENOUGH_LENS = 852;\n var ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\n var CODES = 0;\n var LENS = 1;\n var DISTS = 2;\n\n var lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n ];\n\n var lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n ];\n\n var dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n ];\n\n var dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n ];\n\n module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n {\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n };\n\n },{\"../utils/common\":3}],13:[function(require,module,exports){\n 'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n module.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n };\n\n },{}],14:[function(require,module,exports){\n 'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n /* eslint-disable space-unary-ops */\n\n var utils = require('../utils/common');\n\n /* Public constants ==========================================================*/\n /* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\n var Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n /* Possible values of the data_type field (though see inflate()) */\n var Z_BINARY = 0;\n var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\n var Z_UNKNOWN = 2;\n\n /*============================================================================*/\n\n\n function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\n var STORED_BLOCK = 0;\n var STATIC_TREES = 1;\n var DYN_TREES = 2;\n /* The three kinds of block type */\n\n var MIN_MATCH = 3;\n var MAX_MATCH = 258;\n /* The minimum and maximum match lengths */\n\n// From deflate.h\n /* ===========================================================================\n * Internal compression state.\n */\n\n var LENGTH_CODES = 29;\n /* number of length codes, not counting the special END_BLOCK code */\n\n var LITERALS = 256;\n /* number of literal bytes 0..255 */\n\n var L_CODES = LITERALS + 1 + LENGTH_CODES;\n /* number of Literal or Length codes, including the END_BLOCK code */\n\n var D_CODES = 30;\n /* number of distance codes */\n\n var BL_CODES = 19;\n /* number of codes used to transfer the bit lengths */\n\n var HEAP_SIZE = 2 * L_CODES + 1;\n /* maximum heap size */\n\n var MAX_BITS = 15;\n /* All codes must not exceed MAX_BITS bits */\n\n var Buf_size = 16;\n /* size of bit buffer in bi_buf */\n\n\n /* ===========================================================================\n * Constants\n */\n\n var MAX_BL_BITS = 7;\n /* Bit length codes must not exceed MAX_BL_BITS bits */\n\n var END_BLOCK = 256;\n /* end of block literal code */\n\n var REP_3_6 = 16;\n /* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\n var REPZ_3_10 = 17;\n /* repeat a zero length 3-10 times (3 bits of repeat count) */\n\n var REPZ_11_138 = 18;\n /* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n /* eslint-disable comma-spacing,array-bracket-spacing */\n var extra_lbits = /* extra bits for each length code */\n [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];\n\n var extra_dbits = /* extra bits for each distance code */\n [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];\n\n var extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\n var bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n /* eslint-enable comma-spacing,array-bracket-spacing */\n\n /* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n /* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\n var DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\n var static_ltree = new Array((L_CODES + 2) * 2);\n zero(static_ltree);\n /* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\n var static_dtree = new Array(D_CODES * 2);\n zero(static_dtree);\n /* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\n var _dist_code = new Array(DIST_CODE_LEN);\n zero(_dist_code);\n /* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\n var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\n zero(_length_code);\n /* length code for each normalized match length (0 == MIN_MATCH) */\n\n var base_length = new Array(LENGTH_CODES);\n zero(base_length);\n /* First normalized length for each code (0 = MIN_MATCH) */\n\n var base_dist = new Array(D_CODES);\n zero(base_dist);\n /* First normalized distance for each code (0 = distance of 1) */\n\n\n function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n }\n\n\n var static_l_desc;\n var static_d_desc;\n var static_bl_desc;\n\n\n function TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n }\n\n\n\n function d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n }\n\n\n /* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\n function put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n }\n\n\n /* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\n function send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n }\n\n\n function send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n }\n\n\n /* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\n function bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n }\n\n\n /* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\n function bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n }\n\n\n /* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\n function gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n {\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n }\n\n\n /* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\n function gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n {\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n }\n\n\n /* ===========================================================================\n * Initialize a new block.\n */\n function init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n }\n\n\n /* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\n function bi_windup(s)\n {\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n }\n\n /* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\n function copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n {\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n }\n\n /* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\n function smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n }\n\n /* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\n function pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n {\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n }\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n /* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\n function compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n {\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n }\n\n\n /* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\n function build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n {\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n }\n\n\n /* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\n function scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n {\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n }\n\n\n /* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\n function send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n {\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n }\n\n\n /* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\n function build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n }\n\n\n /* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\n function send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n {\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n }\n\n\n /* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\n function detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n }\n\n\n var static_init_done = false;\n\n /* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\n function _tr_init(s)\n {\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n }\n\n\n /* ===========================================================================\n * Send a stored block\n */\n function _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n {\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n }\n\n\n /* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\n function _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n }\n\n\n /* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\n function _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n {\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n }\n\n /* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\n function _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n {\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n }\n\n exports._tr_init = _tr_init;\n exports._tr_stored_block = _tr_stored_block;\n exports._tr_flush_block = _tr_flush_block;\n exports._tr_tally = _tr_tally;\n exports._tr_align = _tr_align;\n\n },{\"../utils/common\":3}],15:[function(require,module,exports){\n 'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n function ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n }\n\n module.exports = ZStream;\n\n },{}],\"/\":[function(require,module,exports){\n// Top level file is just a mixin of submodules & constants\n 'use strict';\n\n var assign = require('./lib/utils/common').assign;\n\n var deflate = require('./lib/deflate');\n var inflate = require('./lib/inflate');\n var constants = require('./lib/zlib/constants');\n\n var pako = {};\n\n assign(pako, deflate, inflate, constants);\n\n module.exports = pako;\n\n },{\"./lib/deflate\":1,\"./lib/inflate\":2,\"./lib/utils/common\":3,\"./lib/zlib/constants\":6}]},{},[])(\"/\")\n});", @@ -21246,7 +21182,7 @@ "lineNumber": 1 }, { - "__docId__": 1094, + "__docId__": 1090, "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/#loading_3DXML_TreeView)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#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/#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 \"../src/plugins/TreeViewPlugin/TreeViewPlugin.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/#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/#loading_3DXML_materialType_Phong) |\n * | \"MetallicMaterial\" | {@link MetallicMaterial} | Physically-accurate specular-glossiness shading model | [Run example](https://xeokit.github.io/xeokit-sdk/examples/#loading_3DXML_materialType_Metallic) |\n * | \"SpecularMaterial\" | {@link SpecularMaterial} | Physically-accurate metallic-roughness shading model | [Run example](https://xeokit.github.io/xeokit-sdk/examples/#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/#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}", @@ -21257,7 +21193,7 @@ "lineNumber": 1 }, { - "__docId__": 1095, + "__docId__": 1091, "kind": "class", "name": "XML3DLoaderPlugin", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js", @@ -21281,7 +21217,7 @@ ] }, { - "__docId__": 1096, + "__docId__": 1092, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin", @@ -21368,7 +21304,7 @@ ] }, { - "__docId__": 1097, + "__docId__": 1093, "kind": "member", "name": "_workerScriptsPath", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin", @@ -21386,7 +21322,7 @@ } }, { - "__docId__": 1098, + "__docId__": 1094, "kind": "member", "name": "_loader", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin", @@ -21403,7 +21339,7 @@ } }, { - "__docId__": 1099, + "__docId__": 1095, "kind": "member", "name": "supportedSchemas", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin", @@ -21434,7 +21370,7 @@ } }, { - "__docId__": 1100, + "__docId__": 1096, "kind": "method", "name": "load", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js~XML3DLoaderPlugin", @@ -21630,7 +21566,7 @@ } }, { - "__docId__": 1101, + "__docId__": 1097, "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: \" + ctx.modelNode.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", @@ -21641,7 +21577,7 @@ "lineNumber": 1 }, { - "__docId__": 1102, + "__docId__": 1098, "kind": "variable", "name": "zip", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -21662,7 +21598,7 @@ "ignore": true }, { - "__docId__": 1103, + "__docId__": 1099, "kind": "variable", "name": "supportedSchemas", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -21683,7 +21619,7 @@ "ignore": true }, { - "__docId__": 1104, + "__docId__": 1100, "kind": "variable", "name": "load3DXML", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -21704,7 +21640,7 @@ "ignore": true }, { - "__docId__": 1105, + "__docId__": 1101, "kind": "variable", "name": "parse3DXML", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -21725,7 +21661,7 @@ "ignore": true }, { - "__docId__": 1106, + "__docId__": 1102, "kind": "function", "name": "loadCATMaterialRefDocuments", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -21764,7 +21700,7 @@ "ignore": true }, { - "__docId__": 1107, + "__docId__": 1103, "kind": "function", "name": "loadCATMaterialRefDocument", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -21803,7 +21739,7 @@ "ignore": true }, { - "__docId__": 1108, + "__docId__": 1104, "kind": "function", "name": "parseCATMaterialRefDocument", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -21842,7 +21778,7 @@ "ignore": true }, { - "__docId__": 1109, + "__docId__": 1105, "kind": "function", "name": "parseModel_3dxml", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -21881,7 +21817,7 @@ "ignore": true }, { - "__docId__": 1110, + "__docId__": 1106, "kind": "function", "name": "parseCATMaterialRef", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -21920,7 +21856,7 @@ "ignore": true }, { - "__docId__": 1111, + "__docId__": 1107, "kind": "function", "name": "parseMaterialDefDocument", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -21957,7 +21893,7 @@ "ignore": true }, { - "__docId__": 1112, + "__docId__": 1108, "kind": "function", "name": "parseMaterialDefDocumentOsm", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -21994,7 +21930,7 @@ "ignore": true }, { - "__docId__": 1113, + "__docId__": 1109, "kind": "function", "name": "parseRGB", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -22031,7 +21967,7 @@ "ignore": true }, { - "__docId__": 1114, + "__docId__": 1110, "kind": "function", "name": "ZIP", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -22056,7 +21992,7 @@ "ignore": true }, { - "__docId__": 1115, + "__docId__": 1111, "kind": "function", "name": "loadZIP", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -22095,7 +22031,7 @@ "ignore": true }, { - "__docId__": 1116, + "__docId__": 1112, "kind": "function", "name": "stripURN", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -22126,7 +22062,7 @@ "ignore": true }, { - "__docId__": 1117, + "__docId__": 1113, "kind": "function", "name": "getIDFromURI", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -22157,7 +22093,7 @@ "ignore": true }, { - "__docId__": 1118, + "__docId__": 1114, "kind": "class", "name": "XML3DSceneGraphLoader", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js", @@ -22173,7 +22109,7 @@ "ignore": true }, { - "__docId__": 1119, + "__docId__": 1115, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -22187,7 +22123,7 @@ "undocument": true }, { - "__docId__": 1120, + "__docId__": 1116, "kind": "member", "name": "supportedSchemas", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -22218,7 +22154,7 @@ } }, { - "__docId__": 1121, + "__docId__": 1117, "kind": "member", "name": "_xrayOpacity", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -22236,7 +22172,7 @@ } }, { - "__docId__": 1122, + "__docId__": 1118, "kind": "member", "name": "_src", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -22254,7 +22190,7 @@ } }, { - "__docId__": 1123, + "__docId__": 1119, "kind": "member", "name": "_options", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -22272,7 +22208,7 @@ } }, { - "__docId__": 1124, + "__docId__": 1120, "kind": "member", "name": "viewpoint", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -22303,7 +22239,7 @@ } }, { - "__docId__": 1125, + "__docId__": 1121, "kind": "member", "name": "src", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -22320,7 +22256,7 @@ } }, { - "__docId__": 1126, + "__docId__": 1122, "kind": "member", "name": "xrayOpacity", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -22337,7 +22273,7 @@ } }, { - "__docId__": 1127, + "__docId__": 1123, "kind": "member", "name": "displayEffect", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -22354,7 +22290,7 @@ } }, { - "__docId__": 1128, + "__docId__": 1124, "kind": "member", "name": "createMetaModel", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -22371,7 +22307,7 @@ } }, { - "__docId__": 1129, + "__docId__": 1125, "kind": "method", "name": "load", "memberof": "src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js~XML3DSceneGraphLoader", @@ -22424,7 +22360,7 @@ "return": null }, { - "__docId__": 1130, + "__docId__": 1126, "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\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};", @@ -22435,7 +22371,7 @@ "lineNumber": 1 }, { - "__docId__": 1131, + "__docId__": 1127, "kind": "class", "name": "ObjectCullStates", "memberof": "src/plugins/lib/culling/ObjectCullStates.js", @@ -22451,7 +22387,7 @@ "ignore": true }, { - "__docId__": 1132, + "__docId__": 1128, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22477,7 +22413,7 @@ "ignore": true }, { - "__docId__": 1133, + "__docId__": 1129, "kind": "member", "name": "_scene", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22495,7 +22431,7 @@ } }, { - "__docId__": 1134, + "__docId__": 1130, "kind": "member", "name": "_objects", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22513,7 +22449,7 @@ } }, { - "__docId__": 1135, + "__docId__": 1131, "kind": "member", "name": "_objectsViewCulled", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22531,7 +22467,7 @@ } }, { - "__docId__": 1136, + "__docId__": 1132, "kind": "member", "name": "_objectsDetailCulled", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22549,7 +22485,7 @@ } }, { - "__docId__": 1137, + "__docId__": 1133, "kind": "member", "name": "_objectsChanged", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22567,7 +22503,7 @@ } }, { - "__docId__": 1138, + "__docId__": 1134, "kind": "member", "name": "_objectsChangedList", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22585,7 +22521,7 @@ } }, { - "__docId__": 1139, + "__docId__": 1135, "kind": "member", "name": "_modelInfos", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22603,7 +22539,7 @@ } }, { - "__docId__": 1140, + "__docId__": 1136, "kind": "member", "name": "_numObjects", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22621,7 +22557,7 @@ } }, { - "__docId__": 1141, + "__docId__": 1137, "kind": "member", "name": "_lenObjectsChangedList", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22639,7 +22575,7 @@ } }, { - "__docId__": 1142, + "__docId__": 1138, "kind": "member", "name": "_dirty", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22657,7 +22593,7 @@ } }, { - "__docId__": 1143, + "__docId__": 1139, "kind": "member", "name": "_onModelLoaded", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22675,7 +22611,7 @@ } }, { - "__docId__": 1144, + "__docId__": 1140, "kind": "member", "name": "_onTick", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22693,7 +22629,7 @@ } }, { - "__docId__": 1145, + "__docId__": 1141, "kind": "method", "name": "_addModel", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22717,7 +22653,7 @@ "return": null }, { - "__docId__": 1147, + "__docId__": 1143, "kind": "method", "name": "_removeModel", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22741,7 +22677,7 @@ "return": null }, { - "__docId__": 1149, + "__docId__": 1145, "kind": "method", "name": "_build", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22758,7 +22694,7 @@ "return": null }, { - "__docId__": 1153, + "__docId__": 1149, "kind": "method", "name": "_applyChanges", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22775,7 +22711,7 @@ "return": null }, { - "__docId__": 1155, + "__docId__": 1151, "kind": "get", "name": "objects", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22807,7 +22743,7 @@ } }, { - "__docId__": 1156, + "__docId__": 1152, "kind": "get", "name": "numObjects", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22839,7 +22775,7 @@ } }, { - "__docId__": 1157, + "__docId__": 1153, "kind": "method", "name": "setObjectViewCulled", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22875,7 +22811,7 @@ "return": null }, { - "__docId__": 1158, + "__docId__": 1154, "kind": "method", "name": "setObjectDetailCulled", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22911,7 +22847,7 @@ "return": null }, { - "__docId__": 1159, + "__docId__": 1155, "kind": "method", "name": "_destroy", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22927,7 +22863,7 @@ "return": null }, { - "__docId__": 1160, + "__docId__": 1156, "kind": "method", "name": "_clear", "memberof": "src/plugins/lib/culling/ObjectCullStates.js~ObjectCullStates", @@ -22944,7 +22880,7 @@ "return": null }, { - "__docId__": 1163, + "__docId__": 1159, "kind": "variable", "name": "sceneObjectCullStates", "memberof": "src/plugins/lib/culling/ObjectCullStates.js", @@ -22965,7 +22901,7 @@ "ignore": true }, { - "__docId__": 1164, + "__docId__": 1160, "kind": "function", "name": "getObjectCullStates", "memberof": "src/plugins/lib/culling/ObjectCullStates.js", @@ -22995,7 +22931,7 @@ } }, { - "__docId__": 1165, + "__docId__": 1161, "kind": "file", "name": "src/plugins/lib/html/Dot.js", "content": "/** @private */\nclass Dot {\n\n constructor(parentElement, cfg = {}) {\n\n this._x = 0;\n this._y = 0;\n\n this._visible = true;\n this._dot = document.createElement('div');\n this._dot.className += this._dot.className ? ' viewer-ruler-dot' : 'viewer-ruler-dot';\n\n var dot = this._dot;\n var style = dot.style;\n\n style[\"border-radius\"] = 25 + \"px\";\n style.border = \"solid 2px white\";\n style.background = \"lightgreen\";\n style.position = \"absolute\";\n style[\"z-index\"] = \"40000005\";\n style.width = 8 + \"px\";\n style.height = 8 + \"px\";\n style.visibility = \"visible\";\n style.top = 0 + \"px\";\n style.left = 0 + \"px\";\n style[\"box-shadow\"] = \"0 2px 5px 0 #182A3D;\";\n style[\"pointer-events\"] = \"none\";\n style[\"opacity\"] = 1.0;\n\n parentElement.appendChild(dot);\n\n this.setPos(cfg.x || 0, cfg.y || 0);\n this.setFillColor(cfg.fillColor);\n this.setBorderColor(cfg.borderColor);\n this.setClickable(false);\n }\n\n setPos(x, y) {\n this._x = x;\n this._y = y;\n var style = this._dot.style;\n style[\"left\"] = (Math.round(x) - 5) + 'px';\n style[\"top\"] = (Math.round(y) - 5) + '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 ? \"visible\" : \"hidden\";\n }\n\n setClickable(clickable) {\n this._dot.style[\"pointer-events\"] = (!!clickable) ? \"all\" : \"none\";\n }\n\n destroy() {\n this.setVisible(false);\n this._dot.parentElement.removeChild(this._dot);\n }\n}\n\nexport {Dot};\n", @@ -23006,7 +22942,7 @@ "lineNumber": 1 }, { - "__docId__": 1166, + "__docId__": 1162, "kind": "class", "name": "Dot", "memberof": "src/plugins/lib/html/Dot.js", @@ -23022,7 +22958,7 @@ "ignore": true }, { - "__docId__": 1167, + "__docId__": 1163, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -23036,7 +22972,7 @@ "undocument": true }, { - "__docId__": 1168, + "__docId__": 1164, "kind": "member", "name": "_x", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -23054,7 +22990,7 @@ } }, { - "__docId__": 1169, + "__docId__": 1165, "kind": "member", "name": "_y", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -23072,7 +23008,7 @@ } }, { - "__docId__": 1170, + "__docId__": 1166, "kind": "member", "name": "_visible", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -23090,7 +23026,7 @@ } }, { - "__docId__": 1171, + "__docId__": 1167, "kind": "member", "name": "_dot", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -23108,7 +23044,7 @@ } }, { - "__docId__": 1172, + "__docId__": 1168, "kind": "method", "name": "setPos", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -23137,7 +23073,7 @@ "return": null }, { - "__docId__": 1175, + "__docId__": 1171, "kind": "method", "name": "setFillColor", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -23160,7 +23096,7 @@ "return": null }, { - "__docId__": 1176, + "__docId__": 1172, "kind": "method", "name": "setBorderColor", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -23183,7 +23119,7 @@ "return": null }, { - "__docId__": 1177, + "__docId__": 1173, "kind": "method", "name": "setOpacity", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -23206,7 +23142,7 @@ "return": null }, { - "__docId__": 1178, + "__docId__": 1174, "kind": "method", "name": "setVisible", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -23229,7 +23165,7 @@ "return": null }, { - "__docId__": 1180, + "__docId__": 1176, "kind": "method", "name": "setClickable", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -23252,7 +23188,7 @@ "return": null }, { - "__docId__": 1181, + "__docId__": 1177, "kind": "method", "name": "destroy", "memberof": "src/plugins/lib/html/Dot.js~Dot", @@ -23268,7 +23204,7 @@ "return": null }, { - "__docId__": 1182, + "__docId__": 1178, "kind": "file", "name": "src/plugins/lib/html/Label.js", "content": "/** @private */\nclass Label {\n\n constructor(parentElement, cfg = {}) {\n\n this._prefix = cfg.prefix || \"\";\n this._x = 0;\n this._y = 0;\n this._visible = true;\n\n this._label = document.createElement('div');\n this._label.className += this._label.className ? ' viewer-ruler-label' : 'viewer-ruler-label';\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 0px white\";\n style.background = \"lightgreen\";\n style.position = \"absolute\";\n style[\"z-index\"] = \"5000005\";\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\"] = \"none\";\n style[\"opacity\"] = 1.0;\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.borderColor);\n this.setText(cfg.text);\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.innerText = this._prefix + \"~\" + (text || \"\");\n }\n\n setFillColor(color) {\n this._label.style.background = color || \"lightgreen\";\n }\n\n setBorderColor(color) {\n this._label.style.border = \"solid 2px\" + (color || \"black\");\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 ? \"visible\" : \"hidden\";\n }\n\n destroy() {\n this._label.parentElement.removeChild(this._label);\n }\n}\n\nexport {Label};\n\n", @@ -23279,7 +23215,7 @@ "lineNumber": 1 }, { - "__docId__": 1183, + "__docId__": 1179, "kind": "class", "name": "Label", "memberof": "src/plugins/lib/html/Label.js", @@ -23295,7 +23231,7 @@ "ignore": true }, { - "__docId__": 1184, + "__docId__": 1180, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23309,7 +23245,7 @@ "undocument": true }, { - "__docId__": 1185, + "__docId__": 1181, "kind": "member", "name": "_prefix", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23327,7 +23263,7 @@ } }, { - "__docId__": 1186, + "__docId__": 1182, "kind": "member", "name": "_x", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23345,7 +23281,7 @@ } }, { - "__docId__": 1187, + "__docId__": 1183, "kind": "member", "name": "_y", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23363,7 +23299,7 @@ } }, { - "__docId__": 1188, + "__docId__": 1184, "kind": "member", "name": "_visible", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23381,7 +23317,7 @@ } }, { - "__docId__": 1189, + "__docId__": 1185, "kind": "member", "name": "_label", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23399,7 +23335,7 @@ } }, { - "__docId__": 1190, + "__docId__": 1186, "kind": "method", "name": "setPos", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23428,7 +23364,7 @@ "return": null }, { - "__docId__": 1193, + "__docId__": 1189, "kind": "method", "name": "setPosOnWire", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23469,7 +23405,7 @@ "return": null }, { - "__docId__": 1194, + "__docId__": 1190, "kind": "method", "name": "setPosBetweenWires", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23522,7 +23458,7 @@ "return": null }, { - "__docId__": 1195, + "__docId__": 1191, "kind": "method", "name": "setText", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23545,7 +23481,7 @@ "return": null }, { - "__docId__": 1196, + "__docId__": 1192, "kind": "method", "name": "setFillColor", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23568,7 +23504,7 @@ "return": null }, { - "__docId__": 1197, + "__docId__": 1193, "kind": "method", "name": "setBorderColor", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23591,7 +23527,7 @@ "return": null }, { - "__docId__": 1198, + "__docId__": 1194, "kind": "method", "name": "setOpacity", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23614,7 +23550,7 @@ "return": null }, { - "__docId__": 1199, + "__docId__": 1195, "kind": "method", "name": "setVisible", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23637,7 +23573,7 @@ "return": null }, { - "__docId__": 1201, + "__docId__": 1197, "kind": "method", "name": "destroy", "memberof": "src/plugins/lib/html/Label.js~Label", @@ -23653,7 +23589,7 @@ "return": null }, { - "__docId__": 1202, + "__docId__": 1198, "kind": "file", "name": "src/plugins/lib/html/Wire.js", "content": "/** @private */\nclass Wire {\n\n constructor(parentElement, cfg = {}) {\n\n this._wire = document.createElement('div');\n this._wire.className += this._wire.className ? ' viewer-ruler-wire' : 'viewer-ruler-wire';\n this._visible = true;\n\n var wire = this._wire;\n var style = wire.style;\n\n this._thickness = cfg.thickness || 1.0;\n\n style.border = \"solid \" + this._thickness + \"px \" + (cfg.color || \"black\");\n style.position = \"absolute\";\n style[\"z-index\"] = \"2000001\";\n style.width = 0 + \"px\";\n style.height = 0 + \"px\";\n style.visibility = \"visible\";\n style.top = 0 + \"px\";\n style.left = 0 + \"px\";\n style[\"pointer-events\"] = \"none\";\n style['-webkit-transform-origin'] = \"0 0\";\n style['-moz-transform-origin'] = \"0 0\";\n style['-ms-transform-origin'] = \"0 0\";\n style['-o-transform-origin'] = \"0 0\";\n style['transform-origin'] = \"0 0\";\n style['-webkit-transform'] = 'rotate(0deg)';\n style['-moz-transform'] = 'rotate(0deg)';\n style['-ms-transform'] = 'rotate(0deg)';\n style['-o-transform'] = 'rotate(0deg)';\n style['transform'] = 'rotate(0deg)';\n style[\"opacity\"] = 1.0;\n\n parentElement.appendChild(wire);\n\n this._x1 = 0;\n this._y1 = 0;\n this._x2 = 0;\n this._y2 = 0;\n\n this._update();\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 style = this._wire.style;\n style[\"width\"] = Math.round(length) + 'px';\n style[\"left\"] = Math.round(this._x1) + 'px';\n style[\"top\"] = Math.round(this._y1) + 'px';\n style['-webkit-transform'] = 'rotate(' + angle + 'deg)';\n style['-moz-transform'] = 'rotate(' + angle + 'deg)';\n style['-ms-transform'] = 'rotate(' + angle + 'deg)';\n style['-o-transform'] = 'rotate(' + angle + 'deg)';\n style['transform'] = 'rotate(' + angle + 'deg)';\n style[\"pointer-events\"] = \"none\";\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._wire.style.border = \"solid \" + this._thickness + \"px \" + (color || \"black\");\n }\n\n setOpacity(opacity) {\n this._wire.style.opacity = opacity;\n }\n\n setVisible(visible) {\n visible = !!visible;\n if (this._visible === visible) {\n return;\n }\n this._visible = visible;\n this._wire.style.visibility = this._visible ? \"visible\" : \"hidden\";\n }\n\n destroy(visible) {\n this._wire.parentElement.removeChild(this._wire);\n }\n}\n\nexport {Wire};\n", @@ -23664,7 +23600,7 @@ "lineNumber": 1 }, { - "__docId__": 1203, + "__docId__": 1199, "kind": "class", "name": "Wire", "memberof": "src/plugins/lib/html/Wire.js", @@ -23680,7 +23616,7 @@ "ignore": true }, { - "__docId__": 1204, + "__docId__": 1200, "kind": "constructor", "name": "constructor", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -23694,7 +23630,7 @@ "undocument": true }, { - "__docId__": 1205, + "__docId__": 1201, "kind": "member", "name": "_wire", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -23712,7 +23648,7 @@ } }, { - "__docId__": 1206, + "__docId__": 1202, "kind": "member", "name": "_visible", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -23730,7 +23666,7 @@ } }, { - "__docId__": 1207, + "__docId__": 1203, "kind": "member", "name": "_thickness", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -23748,7 +23684,7 @@ } }, { - "__docId__": 1208, + "__docId__": 1204, "kind": "member", "name": "_x1", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -23766,7 +23702,7 @@ } }, { - "__docId__": 1209, + "__docId__": 1205, "kind": "member", "name": "_y1", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -23784,7 +23720,7 @@ } }, { - "__docId__": 1210, + "__docId__": 1206, "kind": "member", "name": "_x2", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -23802,7 +23738,7 @@ } }, { - "__docId__": 1211, + "__docId__": 1207, "kind": "member", "name": "_y2", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -23820,7 +23756,7 @@ } }, { - "__docId__": 1212, + "__docId__": 1208, "kind": "method", "name": "_update", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -23837,7 +23773,7 @@ "return": null }, { - "__docId__": 1213, + "__docId__": 1209, "kind": "method", "name": "setStartAndEnd", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -23878,7 +23814,7 @@ "return": null }, { - "__docId__": 1218, + "__docId__": 1214, "kind": "method", "name": "setColor", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -23901,7 +23837,7 @@ "return": null }, { - "__docId__": 1219, + "__docId__": 1215, "kind": "method", "name": "setOpacity", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -23924,7 +23860,7 @@ "return": null }, { - "__docId__": 1220, + "__docId__": 1216, "kind": "method", "name": "setVisible", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -23947,7 +23883,7 @@ "return": null }, { - "__docId__": 1222, + "__docId__": 1218, "kind": "method", "name": "destroy", "memberof": "src/plugins/lib/html/Wire.js~Wire", @@ -23970,7 +23906,7 @@ "return": null }, { - "__docId__": 1223, + "__docId__": 1219, "kind": "file", "name": "src/viewer/Plugin.js", "content": "/**\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 /**\n * Subscriptions to events fired at this Plugin.\n * @private\n */\n this._eventSubs = {};\n\n viewer.addPlugin(this);\n }\n\n /**\n Subscribes to an event fired at this Plugin.\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 Plugin.\n\n @param {String} event The event type name\n @param {Object} value The 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 * 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}", @@ -23981,7 +23917,7 @@ "lineNumber": 1 }, { - "__docId__": 1224, + "__docId__": 1220, "kind": "class", "name": "Plugin", "memberof": "src/viewer/Plugin.js", @@ -23996,7 +23932,7 @@ "interface": false }, { - "__docId__": 1225, + "__docId__": 1221, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/Plugin.js~Plugin", @@ -24041,7 +23977,7 @@ ] }, { - "__docId__": 1226, + "__docId__": 1222, "kind": "member", "name": "id", "memberof": "src/viewer/Plugin.js~Plugin", @@ -24060,7 +23996,7 @@ } }, { - "__docId__": 1227, + "__docId__": 1223, "kind": "member", "name": "viewer", "memberof": "src/viewer/Plugin.js~Plugin", @@ -24079,7 +24015,7 @@ } }, { - "__docId__": 1228, + "__docId__": 1224, "kind": "member", "name": "_eventSubs", "memberof": "src/viewer/Plugin.js~Plugin", @@ -24096,7 +24032,7 @@ } }, { - "__docId__": 1229, + "__docId__": 1225, "kind": "method", "name": "on", "memberof": "src/viewer/Plugin.js~Plugin", @@ -24132,7 +24068,7 @@ "return": null }, { - "__docId__": 1230, + "__docId__": 1226, "kind": "method", "name": "fire", "memberof": "src/viewer/Plugin.js~Plugin", @@ -24168,7 +24104,7 @@ "return": null }, { - "__docId__": 1231, + "__docId__": 1227, "kind": "method", "name": "log", "memberof": "src/viewer/Plugin.js~Plugin", @@ -24194,7 +24130,7 @@ "return": null }, { - "__docId__": 1232, + "__docId__": 1228, "kind": "method", "name": "warn", "memberof": "src/viewer/Plugin.js~Plugin", @@ -24220,7 +24156,7 @@ "return": null }, { - "__docId__": 1233, + "__docId__": 1229, "kind": "method", "name": "error", "memberof": "src/viewer/Plugin.js~Plugin", @@ -24246,7 +24182,7 @@ "return": null }, { - "__docId__": 1234, + "__docId__": 1230, "kind": "method", "name": "send", "memberof": "src/viewer/Plugin.js~Plugin", @@ -24275,7 +24211,7 @@ "return": null }, { - "__docId__": 1235, + "__docId__": 1231, "kind": "method", "name": "destroy", "memberof": "src/viewer/Plugin.js~Plugin", @@ -24290,10 +24226,10 @@ "return": null }, { - "__docId__": 1236, + "__docId__": 1232, "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 {WEBGL_INFO} from \"./scene/webglInfo.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 {@link Model}s 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 {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 {Boolean} [cfg.clearColorAmbient=false] Sets if the canvas background color is derived from an {@link AmbientLight}. This only has effect when the canvas is not transparent. When not enabled, the background color will be the canvas element's HTML/CSS background color.\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.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.pbrEnabled=false] Whether to enable physically-based rendering.\n */\n constructor(cfg) {\n\n /**\n * The Viewer's current language setting.\n * @property language\n * @type {String}\n */\n this.language = \"en\";\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 webgl2: false,\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 clearColorAmbient: cfg.clearColorAmbient,\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 logarithmicDepthBufferEnabled: (!!cfg.logarithmicDepthBufferEnabled),\n pbrEnabled: (!!cfg.pbrEnabled)\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 * 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\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 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 saveCssWidth = canvas.style.width;\n const saveCssHeight = canvas.style.height;\n\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.style.width = width + \"px\";\n canvas.style.height = height + \"px\";\n }\n\n this.scene._renderer.renderSnapshot();\n\n const imageDataURI = this.scene._renderer.readSnapshot(params);\n\n if (resize) {\n canvas.style.width = saveCssWidth;\n canvas.style.height = saveCssHeight;\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 * Exists 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", + "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 {WEBGL_INFO} from \"./scene/webglInfo.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 {@link Model}s 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 {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 {Boolean} [cfg.clearColorAmbient=false] Sets if the canvas background color is derived from an {@link AmbientLight}. This only has effect when the canvas is not transparent. When not enabled, the background color will be the canvas element's HTML/CSS background color.\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.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.pbrEnabled=false] Whether to enable physically-based rendering.\n */\n constructor(cfg) {\n\n /**\n * The Viewer's current language setting.\n * @property language\n * @type {String}\n */\n this.language = \"en\";\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 webgl2: false,\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 clearColorAmbient: cfg.clearColorAmbient,\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 logarithmicDepthBufferEnabled: (!!cfg.logarithmicDepthBufferEnabled),\n pbrEnabled: (!!cfg.pbrEnabled)\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 * 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\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 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 saveCssWidth = canvas.style.width;\n const saveCssHeight = canvas.style.height;\n\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.style.width = width + \"px\";\n canvas.style.height = height + \"px\";\n }\n\n this.scene._renderer.renderSnapshot();\n\n const imageDataURI = this.scene._renderer.readSnapshot(params);\n\n if (resize) {\n canvas.style.width = saveCssWidth;\n canvas.style.height = saveCssHeight;\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 * 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", "static": true, "longname": "/home/lindsay/xeolabs/xeokit/xeokit-nov-18/xeokit-sdk/src/viewer/Viewer.js", "access": "public", @@ -24301,7 +24237,7 @@ "lineNumber": 1 }, { - "__docId__": 1237, + "__docId__": 1233, "kind": "class", "name": "Viewer", "memberof": "src/viewer/Viewer.js", @@ -24316,7 +24252,7 @@ "interface": false }, { - "__docId__": 1238, + "__docId__": 1234, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/Viewer.js~Viewer", @@ -24615,7 +24551,7 @@ ] }, { - "__docId__": 1239, + "__docId__": 1235, "kind": "member", "name": "language", "memberof": "src/viewer/Viewer.js~Viewer", @@ -24646,7 +24582,7 @@ } }, { - "__docId__": 1240, + "__docId__": 1236, "kind": "member", "name": "scene", "memberof": "src/viewer/Viewer.js~Viewer", @@ -24677,7 +24613,7 @@ } }, { - "__docId__": 1241, + "__docId__": 1237, "kind": "member", "name": "metaScene", "memberof": "src/viewer/Viewer.js~Viewer", @@ -24714,7 +24650,7 @@ } }, { - "__docId__": 1242, + "__docId__": 1238, "kind": "member", "name": "id", "memberof": "src/viewer/Viewer.js~Viewer", @@ -24746,7 +24682,7 @@ } }, { - "__docId__": 1243, + "__docId__": 1239, "kind": "member", "name": "camera", "memberof": "src/viewer/Viewer.js~Viewer", @@ -24777,7 +24713,7 @@ } }, { - "__docId__": 1244, + "__docId__": 1240, "kind": "member", "name": "cameraFlight", "memberof": "src/viewer/Viewer.js~Viewer", @@ -24808,7 +24744,7 @@ } }, { - "__docId__": 1245, + "__docId__": 1241, "kind": "member", "name": "cameraControl", "memberof": "src/viewer/Viewer.js~Viewer", @@ -24839,7 +24775,7 @@ } }, { - "__docId__": 1246, + "__docId__": 1242, "kind": "member", "name": "_plugins", "memberof": "src/viewer/Viewer.js~Viewer", @@ -24857,7 +24793,7 @@ } }, { - "__docId__": 1247, + "__docId__": 1243, "kind": "member", "name": "_eventSubs", "memberof": "src/viewer/Viewer.js~Viewer", @@ -24874,7 +24810,7 @@ } }, { - "__docId__": 1248, + "__docId__": 1244, "kind": "method", "name": "on", "memberof": "src/viewer/Viewer.js~Viewer", @@ -24910,7 +24846,7 @@ "return": null }, { - "__docId__": 1249, + "__docId__": 1245, "kind": "method", "name": "fire", "memberof": "src/viewer/Viewer.js~Viewer", @@ -24946,7 +24882,7 @@ "return": null }, { - "__docId__": 1250, + "__docId__": 1246, "kind": "method", "name": "off", "memberof": "src/viewer/Viewer.js~Viewer", @@ -24972,7 +24908,7 @@ "return": null }, { - "__docId__": 1251, + "__docId__": 1247, "kind": "method", "name": "log", "memberof": "src/viewer/Viewer.js~Viewer", @@ -24998,7 +24934,7 @@ "return": null }, { - "__docId__": 1252, + "__docId__": 1248, "kind": "method", "name": "error", "memberof": "src/viewer/Viewer.js~Viewer", @@ -25024,7 +24960,7 @@ "return": null }, { - "__docId__": 1253, + "__docId__": 1249, "kind": "method", "name": "addPlugin", "memberof": "src/viewer/Viewer.js~Viewer", @@ -25047,7 +24983,7 @@ "return": null }, { - "__docId__": 1254, + "__docId__": 1250, "kind": "method", "name": "removePlugin", "memberof": "src/viewer/Viewer.js~Viewer", @@ -25070,7 +25006,7 @@ "return": null }, { - "__docId__": 1255, + "__docId__": 1251, "kind": "method", "name": "sendToPlugins", "memberof": "src/viewer/Viewer.js~Viewer", @@ -25099,7 +25035,7 @@ "return": null }, { - "__docId__": 1256, + "__docId__": 1252, "kind": "method", "name": "clear", "memberof": "src/viewer/Viewer.js~Viewer", @@ -25116,7 +25052,7 @@ "return": null }, { - "__docId__": 1257, + "__docId__": 1253, "kind": "method", "name": "resetView", "memberof": "src/viewer/Viewer.js~Viewer", @@ -25133,7 +25069,7 @@ "return": null }, { - "__docId__": 1258, + "__docId__": 1254, "kind": "method", "name": "beginSnapshot", "memberof": "src/viewer/Viewer.js~Viewer", @@ -25148,7 +25084,7 @@ "return": null }, { - "__docId__": 1259, + "__docId__": 1255, "kind": "member", "name": "_snapshotBegun", "memberof": "src/viewer/Viewer.js~Viewer", @@ -25166,7 +25102,7 @@ } }, { - "__docId__": 1260, + "__docId__": 1256, "kind": "method", "name": "getSnapshot", "memberof": "src/viewer/Viewer.js~Viewer", @@ -25249,7 +25185,7 @@ } }, { - "__docId__": 1261, + "__docId__": 1257, "kind": "method", "name": "endSnapshot", "memberof": "src/viewer/Viewer.js~Viewer", @@ -25258,13 +25194,13 @@ "static": false, "longname": "src/viewer/Viewer.js~Viewer#endSnapshot", "access": "public", - "description": "Exists snapshot mode.\n\nSwitches rendering back to the main canvas.", + "description": "Exits snapshot mode.\n\nSwitches rendering back to the main canvas.", "lineNumber": 348, "params": [], "return": null }, { - "__docId__": 1263, + "__docId__": 1259, "kind": "method", "name": "destroy", "memberof": "src/viewer/Viewer.js~Viewer", @@ -25279,7 +25215,7 @@ "return": null }, { - "__docId__": 1264, + "__docId__": 1260, "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 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}", @@ -25290,7 +25226,7 @@ "lineNumber": 1 }, { - "__docId__": 1265, + "__docId__": 1261, "kind": "variable", "name": "IFCObjectDefaultColors", "memberof": "src/viewer/metadata/IFCObjectDefaultColors.js", @@ -25312,7 +25248,7 @@ } }, { - "__docId__": 1266, + "__docId__": 1262, "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 IfcOpeningElement: {\n pickable: false,\n visible: false\n },\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 IfcPlate: {\n colorize: [0.8470588235, 0.427450980392, 0, 0.5],\n opacity: 0.3\n },\n\n DEFAULT: {\n }\n};\n\nexport {IFCObjectDefaults}", @@ -25323,7 +25259,7 @@ "lineNumber": 1 }, { - "__docId__": 1267, + "__docId__": 1263, "kind": "variable", "name": "IFCObjectDefaults", "memberof": "src/viewer/metadata/IFCObjectDefaults.js", @@ -25345,7 +25281,7 @@ } }, { - "__docId__": 1268, + "__docId__": 1264, "kind": "file", "name": "src/viewer/metadata/MetaModel.js", "content": "/**\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 * @private\n */\n constructor(metaScene, id, projectId, revisionId, author, createdAt, creatingApplication, schema, rootMetaObject) {\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 = id;\n\n /**\n * The project ID\n * @property projectId\n * @type {String|Number}\n */\n this.projectId = 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 = 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 = 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 = 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 = 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 = schema;\n\n /**\n * Metadata on the {@link Scene}.\n *\n * @property metaScene\n * @type {MetaScene}\n */\n this.metaScene = metaScene;\n\n /**\n * The root {@link MetaObject} in this MetaModel's composition structure hierarchy.\n *\n * @property rootMetaObject\n * @type {MetaObject}\n */\n this.rootMetaObject = rootMetaObject;\n }\n\n getJSON() {\n\n var metaObjects = [];\n\n function visit(metaObject) {\n var metaObjectCfg = {\n id: metaObject.id,\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 metaObjects.push(metaObjectCfg);\n var 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.rootMetaObject);\n\n var json = {\n id: this.id,\n projectId: this.projectId,\n revisionId: this.revisionId,\n metaObjects: metaObjects\n };\n return json;\n }\n}\n\n\nexport {MetaModel};", @@ -25356,7 +25292,7 @@ "lineNumber": 1 }, { - "__docId__": 1269, + "__docId__": 1265, "kind": "class", "name": "MetaModel", "memberof": "src/viewer/metadata/MetaModel.js", @@ -25377,7 +25313,7 @@ "interface": false }, { - "__docId__": 1270, + "__docId__": 1266, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -25391,7 +25327,7 @@ "ignore": true }, { - "__docId__": 1271, + "__docId__": 1267, "kind": "member", "name": "id", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -25423,7 +25359,7 @@ } }, { - "__docId__": 1272, + "__docId__": 1268, "kind": "member", "name": "projectId", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -25455,7 +25391,7 @@ } }, { - "__docId__": 1273, + "__docId__": 1269, "kind": "member", "name": "revisionId", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -25487,7 +25423,7 @@ } }, { - "__docId__": 1274, + "__docId__": 1270, "kind": "member", "name": "author", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -25518,7 +25454,7 @@ } }, { - "__docId__": 1275, + "__docId__": 1271, "kind": "member", "name": "createdAt", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -25549,7 +25485,7 @@ } }, { - "__docId__": 1276, + "__docId__": 1272, "kind": "member", "name": "creatingApplication", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -25580,7 +25516,7 @@ } }, { - "__docId__": 1277, + "__docId__": 1273, "kind": "member", "name": "schema", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -25611,7 +25547,7 @@ } }, { - "__docId__": 1278, + "__docId__": 1274, "kind": "member", "name": "metaScene", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -25642,7 +25578,7 @@ } }, { - "__docId__": 1279, + "__docId__": 1275, "kind": "member", "name": "rootMetaObject", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -25673,7 +25609,7 @@ } }, { - "__docId__": 1280, + "__docId__": 1276, "kind": "method", "name": "getJSON", "memberof": "src/viewer/metadata/MetaModel.js~MetaModel", @@ -25693,7 +25629,7 @@ } }, { - "__docId__": 1281, + "__docId__": 1277, "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 constructor(metaModel, id, originalSystemId, name, type, properties, parent, children, external) {\n\n /**\n * Model metadata.\n *\n * @property metaModel\n * @type {MetaModel}\n */\n this.metaModel = metaModel;\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 = 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 = originalSystemId;\n\n /**\n * Human-readable name.\n *\n * @property name\n * @type {String}\n */\n this.name = name;\n\n /**\n * Type - often an IFC product type.\n *\n * @property type\n * @type {String}\n */\n this.type = type;\n\n if (properties) {\n\n /**\n * Arbitrary metadata properties.\n *\n * Undefined when no metadata properties are represented.\n *\n * @property properties\n * @type {*}\n */\n this.properties = properties;\n }\n\n if (parent !== undefined && parent !== null) {\n\n /**\n * The parent MetaObject within the structure hierarchy.\n *\n * Undefined when this is the root of its structure.\n *\n * @property parent\n * @type {MetaObject}\n */\n this.parent = parent;\n }\n\n if (children !== undefined && children !== null) {\n\n /**\n * Child ObjectMeta instances within the structure hierarchy.\n *\n * Undefined when there are no children.\n *\n * @property children\n * @type {Array}\n */\n this.children = children;\n }\n\n if (external !== undefined && 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 = external;\n }\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};", @@ -25704,7 +25640,7 @@ "lineNumber": 1 }, { - "__docId__": 1282, + "__docId__": 1278, "kind": "class", "name": "MetaObject", "memberof": "src/viewer/metadata/MetaObject.js", @@ -25725,7 +25661,7 @@ "interface": false }, { - "__docId__": 1283, + "__docId__": 1279, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -25739,7 +25675,7 @@ "undocument": true }, { - "__docId__": 1284, + "__docId__": 1280, "kind": "member", "name": "metaModel", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -25770,7 +25706,7 @@ } }, { - "__docId__": 1285, + "__docId__": 1281, "kind": "member", "name": "id", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -25802,7 +25738,7 @@ } }, { - "__docId__": 1286, + "__docId__": 1282, "kind": "member", "name": "originalSystemId", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -25822,7 +25758,7 @@ "abstract": true }, { - "__docId__": 1287, + "__docId__": 1283, "kind": "member", "name": "name", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -25853,7 +25789,7 @@ } }, { - "__docId__": 1288, + "__docId__": 1284, "kind": "member", "name": "type", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -25884,7 +25820,7 @@ } }, { - "__docId__": 1289, + "__docId__": 1285, "kind": "member", "name": "properties", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -25915,7 +25851,7 @@ } }, { - "__docId__": 1290, + "__docId__": 1286, "kind": "member", "name": "parent", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -25946,7 +25882,7 @@ } }, { - "__docId__": 1291, + "__docId__": 1287, "kind": "member", "name": "children", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -25977,7 +25913,7 @@ } }, { - "__docId__": 1292, + "__docId__": 1288, "kind": "member", "name": "external", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -26008,7 +25944,7 @@ } }, { - "__docId__": 1293, + "__docId__": 1289, "kind": "method", "name": "getObjectIDsInSubtree", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -26036,7 +25972,7 @@ "params": [] }, { - "__docId__": 1294, + "__docId__": 1290, "kind": "method", "name": "withMetaObjectsInSubtree", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -26062,7 +25998,7 @@ "return": null }, { - "__docId__": 1295, + "__docId__": 1291, "kind": "method", "name": "getObjectIDsInSubtreeByType", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -26101,7 +26037,7 @@ } }, { - "__docId__": 1296, + "__docId__": 1292, "kind": "method", "name": "getJSON", "memberof": "src/viewer/metadata/MetaObject.js~MetaObject", @@ -26129,7 +26065,7 @@ "params": [] }, { - "__docId__": 1297, + "__docId__": 1293, "kind": "file", "name": "src/viewer/metadata/MetaScene.js", "content": "import {MetaModel} from \"./MetaModel.js\";\nimport {MetaObject} from \"./MetaObject.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 Graphs user guide](https://github.com/xeokit/xeokit-sdk/wiki/Scene-Graphs)\n * * [Scene graph example with metadata](http://xeokit.github.io/xeokit-sdk/examples/#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 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 * Tracks number of MetaObjects of each type.\n * @private\n */\n this._typeCounts = {};\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 * @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} - (see [Model Metadata](https://github.com/xeolabs/xeokit.io/wiki/Model-Metadata)).\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 projectId = metaModelData.projectId || \"none\";\n const revisionId = metaModelData.revisionId || \"none\";\n const newObjects = metaModelData.metaObjects;\n const author = metaModelData.author;\n const createdAt = metaModelData.createdAt;\n const creatingApplication = metaModelData.creatingApplication;\n const schema = metaModelData.schema;\n\n var includeTypes;\n // if (options.includeTypes) {\n // includeTypes = {};\n // for (let i = 0, len = options.includeTypes.length; i < len; i++) {\n // includeTypes[options.includeTypes[i]] = true;\n // }\n // }\n //\n var excludeTypes;\n // if (options.excludeTypes) {\n // excludeTypes = {};\n // for (let i = 0, len = options.excludeTypes.length; i < len; i++) {\n // includeTypes[options.excludeTypes[i]] = true;\n // }\n // }\n\n const metaModel = new MetaModel(this, modelId, projectId, revisionId, author, createdAt, creatingApplication, schema, null);\n\n this.metaModels[modelId] = metaModel;\n\n for (let i = 0, len = newObjects.length; i < len; i++) {\n const newObject = newObjects[i];\n const type = newObject.type;\n if (excludeTypes && excludeTypes[type]) {\n continue;\n }\n if (includeTypes && !includeTypes[type]) {\n continue;\n }\n const objectId = options.globalizeObjectIds ? math.globalizeObjectId(modelId, newObject.id) : newObject.id;\n const originalSystemId = newObject.id;\n const name = newObject.name;\n const properties = newObject.properties;\n const parent = null;\n const children = null;\n const external = newObject.external;\n const metaObject = new MetaObject(metaModel, objectId, originalSystemId, name, type, properties, parent, children, external);\n this.metaObjects[objectId] = metaObject;\n (this.metaObjectsByType[type] || (this.metaObjectsByType[type] = {}))[objectId] = metaObject;\n if (this._typeCounts[type] === undefined) {\n this._typeCounts[type] = 1;\n } else {\n this._typeCounts[type]++;\n }\n }\n\n for (let i = 0, len = newObjects.length; i < len; i++) {\n const newObject = newObjects[i];\n const objectId = options.globalizeObjectIds ? math.globalizeObjectId(modelId, newObject.id) : newObject.id;\n const metaObject = this.metaObjects[objectId];\n if (!metaObject) {\n continue;\n }\n if (newObject.parent === undefined || newObject.parent === null) {\n metaModel.rootMetaObject = metaObject;\n } else if (newObject.parent) {\n const parentId = options.globalizeObjectIds ? math.globalizeObjectId(modelId, newObject.parent) : newObject.parent;\n let parentMetaObject = this.metaObjects[parentId];\n if (parentMetaObject) {\n metaObject.parent = parentMetaObject;\n parentMetaObject.children = parentMetaObject.children || [];\n parentMetaObject.children.push(metaObject);\n }\n }\n }\n\n this.fire(\"metaModelCreated\", modelId);\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} id ID of the target {@link MetaModel}.\n */\n destroyMetaModel(id) {\n const metaModel = this.metaModels[id];\n if (!metaModel) {\n return;\n }\n this._removeMetaModel(metaModel);\n this.fire(\"metaModelDestroyed\", id);\n }\n\n _removeMetaModel(metaModel) {\n const metaObjects = this.metaObjects;\n const metaObjectsByType = this.metaObjectsByType;\n let visit = (metaObject) => {\n delete metaObjects[metaObject.id];\n const types = metaObjectsByType[metaObject.type];\n if (types && types[metaObject.id]) {\n delete types[metaObject.id];\n if (--this._typeCounts[metaObject.type] === 0) {\n delete this._typeCounts[metaObject.type];\n delete metaObjectsByType[metaObject.type];\n }\n }\n const children = metaObject.children;\n if (children) {\n for (let i = 0, len = children.length; i < len; i++) {\n const childMetaObject = children[i];\n visit(childMetaObject);\n }\n }\n };\n visit(metaModel.rootMetaObject);\n delete this.metaModels[metaModel.id];\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 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 function 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};", @@ -26140,7 +26076,7 @@ "lineNumber": 1 }, { - "__docId__": 1298, + "__docId__": 1294, "kind": "function", "name": "arrayToMap", "memberof": "src/viewer/metadata/MetaScene.js", @@ -26171,7 +26107,7 @@ "ignore": true }, { - "__docId__": 1299, + "__docId__": 1295, "kind": "class", "name": "MetaScene", "memberof": "src/viewer/metadata/MetaScene.js", @@ -26186,7 +26122,7 @@ "interface": false }, { - "__docId__": 1300, + "__docId__": 1296, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26200,7 +26136,7 @@ "ignore": true }, { - "__docId__": 1301, + "__docId__": 1297, "kind": "member", "name": "viewer", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26231,7 +26167,7 @@ } }, { - "__docId__": 1302, + "__docId__": 1298, "kind": "member", "name": "scene", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26262,7 +26198,7 @@ } }, { - "__docId__": 1303, + "__docId__": 1299, "kind": "member", "name": "metaModels", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26281,7 +26217,7 @@ } }, { - "__docId__": 1304, + "__docId__": 1300, "kind": "member", "name": "metaObjects", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26300,7 +26236,7 @@ } }, { - "__docId__": 1305, + "__docId__": 1301, "kind": "member", "name": "metaObjectsByType", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26319,7 +26255,7 @@ } }, { - "__docId__": 1306, + "__docId__": 1302, "kind": "member", "name": "_typeCounts", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26336,7 +26272,7 @@ } }, { - "__docId__": 1307, + "__docId__": 1303, "kind": "member", "name": "_eventSubs", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26353,7 +26289,7 @@ } }, { - "__docId__": 1308, + "__docId__": 1304, "kind": "method", "name": "on", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26389,7 +26325,7 @@ "return": null }, { - "__docId__": 1309, + "__docId__": 1305, "kind": "method", "name": "fire", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26425,7 +26361,7 @@ "return": null }, { - "__docId__": 1310, + "__docId__": 1306, "kind": "method", "name": "off", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26451,7 +26387,7 @@ "return": null }, { - "__docId__": 1311, + "__docId__": 1307, "kind": "method", "name": "createMetaModel", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26542,7 +26478,7 @@ } }, { - "__docId__": 1312, + "__docId__": 1308, "kind": "method", "name": "destroyMetaModel", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26568,7 +26504,7 @@ "return": null }, { - "__docId__": 1313, + "__docId__": 1309, "kind": "method", "name": "_removeMetaModel", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26592,7 +26528,7 @@ "return": null }, { - "__docId__": 1314, + "__docId__": 1310, "kind": "method", "name": "getObjectIDsByType", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26631,7 +26567,7 @@ } }, { - "__docId__": 1315, + "__docId__": 1311, "kind": "method", "name": "getObjectIDsInSubtree", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26690,7 +26626,7 @@ } }, { - "__docId__": 1316, + "__docId__": 1312, "kind": "method", "name": "withMetaObjectsInSubtree", "memberof": "src/viewer/metadata/MetaScene.js~MetaScene", @@ -26726,10 +26662,10 @@ "return": null }, { - "__docId__": 1317, + "__docId__": 1313, "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\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/#CameraControl_orbit_Duplex)\n * * [Orbit Navigation - Holter Tower Model](https://xeokit.github.io/xeokit-sdk/examples/#CameraControl_orbit_HolterTower)\n * * [First-Person Navigation - Duplex Model](https://xeokit.github.io/xeokit-sdk/examples/#CameraControl_firstPerson_Duplex)\n * * [First-Person Navigation - Holter Tower Model](https://xeokit.github.io/xeokit-sdk/examples/#CameraControl_firstPerson_HolterTower)\n * * [Plan-view Navigation - Schependomlaan Model](https://xeokit.github.io/xeokit-sdk/examples/#CameraControl_planView_Schependomlaan)\n * * [Custom Keyboard Mapping](https://xeokit.github.io/xeokit-sdk/examples/#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 tapInterval: 150, // Millisecs\n doubleTapInterval: 325, // Millisecs\n tapDistanceThreshold: 4, // 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\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 inputFromMouse: false, // TODO: Is this needed?\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 };\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 this._configs.active = value !== false;\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 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 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 * 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", + "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\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/#CameraControl_orbit_Duplex)\n * * [Orbit Navigation - Holter Tower Model](https://xeokit.github.io/xeokit-sdk/examples/#CameraControl_orbit_HolterTower)\n * * [First-Person Navigation - Duplex Model](https://xeokit.github.io/xeokit-sdk/examples/#CameraControl_firstPerson_Duplex)\n * * [First-Person Navigation - Holter Tower Model](https://xeokit.github.io/xeokit-sdk/examples/#CameraControl_firstPerson_HolterTower)\n * * [Plan-view Navigation - Schependomlaan Model](https://xeokit.github.io/xeokit-sdk/examples/#CameraControl_planView_Schependomlaan)\n * * [Custom Keyboard Mapping](https://xeokit.github.io/xeokit-sdk/examples/#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 tapInterval: 150, // Millisecs\n doubleTapInterval: 325, // Millisecs\n tapDistanceThreshold: 4, // 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\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 };\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 this._configs.active = value !== false;\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 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 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 * 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", "static": true, "longname": "/home/lindsay/xeolabs/xeokit/xeokit-nov-18/xeokit-sdk/src/viewer/scene/CameraControl/CameraControl.js", "access": "public", @@ -26737,7 +26673,7 @@ "lineNumber": 1 }, { - "__docId__": 1318, + "__docId__": 1314, "kind": "class", "name": "CameraControl", "memberof": "src/viewer/scene/CameraControl/CameraControl.js", @@ -26755,7 +26691,7 @@ ] }, { - "__docId__": 1319, + "__docId__": 1315, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -26775,7 +26711,7 @@ "ignore": true }, { - "__docId__": 1320, + "__docId__": 1316, "kind": "member", "name": "PAN_LEFT", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -26800,7 +26736,7 @@ } }, { - "__docId__": 1321, + "__docId__": 1317, "kind": "member", "name": "PAN_RIGHT", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -26825,7 +26761,7 @@ } }, { - "__docId__": 1322, + "__docId__": 1318, "kind": "member", "name": "PAN_UP", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -26850,7 +26786,7 @@ } }, { - "__docId__": 1323, + "__docId__": 1319, "kind": "member", "name": "PAN_DOWN", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -26875,7 +26811,7 @@ } }, { - "__docId__": 1324, + "__docId__": 1320, "kind": "member", "name": "PAN_FORWARDS", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -26900,7 +26836,7 @@ } }, { - "__docId__": 1325, + "__docId__": 1321, "kind": "member", "name": "PAN_BACKWARDS", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -26925,7 +26861,7 @@ } }, { - "__docId__": 1326, + "__docId__": 1322, "kind": "member", "name": "ROTATE_X_POS", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -26950,7 +26886,7 @@ } }, { - "__docId__": 1327, + "__docId__": 1323, "kind": "member", "name": "ROTATE_X_NEG", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -26975,7 +26911,7 @@ } }, { - "__docId__": 1328, + "__docId__": 1324, "kind": "member", "name": "ROTATE_Y_POS", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27000,7 +26936,7 @@ } }, { - "__docId__": 1329, + "__docId__": 1325, "kind": "member", "name": "ROTATE_Y_NEG", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27025,7 +26961,7 @@ } }, { - "__docId__": 1330, + "__docId__": 1326, "kind": "member", "name": "DOLLY_FORWARDS", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27050,7 +26986,7 @@ } }, { - "__docId__": 1331, + "__docId__": 1327, "kind": "member", "name": "DOLLY_BACKWARDS", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27075,7 +27011,7 @@ } }, { - "__docId__": 1332, + "__docId__": 1328, "kind": "member", "name": "AXIS_VIEW_RIGHT", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27100,7 +27036,7 @@ } }, { - "__docId__": 1333, + "__docId__": 1329, "kind": "member", "name": "AXIS_VIEW_BACK", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27125,7 +27061,7 @@ } }, { - "__docId__": 1334, + "__docId__": 1330, "kind": "member", "name": "AXIS_VIEW_LEFT", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27150,7 +27086,7 @@ } }, { - "__docId__": 1335, + "__docId__": 1331, "kind": "member", "name": "AXIS_VIEW_FRONT", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27175,7 +27111,7 @@ } }, { - "__docId__": 1336, + "__docId__": 1332, "kind": "member", "name": "AXIS_VIEW_TOP", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27200,7 +27136,7 @@ } }, { - "__docId__": 1337, + "__docId__": 1333, "kind": "member", "name": "AXIS_VIEW_BOTTOM", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27225,7 +27161,7 @@ } }, { - "__docId__": 1338, + "__docId__": 1334, "kind": "member", "name": "_keyMap", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27243,7 +27179,7 @@ } }, { - "__docId__": 1339, + "__docId__": 1335, "kind": "member", "name": "_configs", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27261,7 +27197,7 @@ } }, { - "__docId__": 1340, + "__docId__": 1336, "kind": "member", "name": "_states", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27274,12 +27210,12 @@ "ignore": true, "type": { "types": [ - "{\"pointerCanvasPos\": *, \"mouseover\": *, \"inputFromMouse\": *, \"followPointerDirty\": boolean, \"mouseDownClientX\": *, \"mouseDownClientY\": *, \"mouseDownCursorX\": *, \"mouseDownCursorY\": *, \"touchStartTime\": *, \"activeTouches\": *, \"tapStartPos\": *, \"tapStartTime\": *, \"lastTapTime\": *}" + "{\"pointerCanvasPos\": *, \"mouseover\": *, \"followPointerDirty\": boolean, \"mouseDownClientX\": *, \"mouseDownClientY\": *, \"mouseDownCursorX\": *, \"mouseDownCursorY\": *, \"touchStartTime\": *, \"activeTouches\": *, \"tapStartPos\": *, \"tapStartTime\": *, \"lastTapTime\": *}" ] } }, { - "__docId__": 1341, + "__docId__": 1337, "kind": "member", "name": "_updates", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27287,7 +27223,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#_updates", "access": "private", "description": null, - "lineNumber": 686, + "lineNumber": 685, "undocument": true, "ignore": true, "type": { @@ -27297,7 +27233,7 @@ } }, { - "__docId__": 1342, + "__docId__": 1338, "kind": "member", "name": "_controllers", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27305,7 +27241,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#_controllers", "access": "private", "description": null, - "lineNumber": 699, + "lineNumber": 698, "undocument": true, "ignore": true, "type": { @@ -27315,7 +27251,7 @@ } }, { - "__docId__": 1343, + "__docId__": 1339, "kind": "member", "name": "_handlers", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27323,7 +27259,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#_handlers", "access": "private", "description": null, - "lineNumber": 711, + "lineNumber": 710, "undocument": true, "ignore": true, "type": { @@ -27333,7 +27269,7 @@ } }, { - "__docId__": 1344, + "__docId__": 1340, "kind": "member", "name": "_cameraUpdater", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27341,7 +27277,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#_cameraUpdater", "access": "private", "description": null, - "lineNumber": 723, + "lineNumber": 722, "undocument": true, "ignore": true, "type": { @@ -27351,7 +27287,7 @@ } }, { - "__docId__": 1367, + "__docId__": 1363, "kind": "set", "name": "keyMap", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27361,7 +27297,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#keyMap", "access": "public", "description": "Sets custom mappings of keys to ````CameraControl```` actions.\n\nSee class docs for usage.", - "lineNumber": 764, + "lineNumber": 763, "params": [ { "nullable": null, @@ -27376,7 +27312,7 @@ ] }, { - "__docId__": 1370, + "__docId__": 1366, "kind": "get", "name": "keyMap", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27386,7 +27322,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#keyMap", "access": "public", "description": "Gets custom mappings of keys to {@link CameraControl} actions.", - "lineNumber": 830, + "lineNumber": 829, "unknown": [ { "tagName": "@returns", @@ -27408,7 +27344,7 @@ } }, { - "__docId__": 1371, + "__docId__": 1367, "kind": "method", "name": "_isKeyDownForAction", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27418,7 +27354,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#_isKeyDownForAction", "access": "private", "description": "Returns true if any keys configured for the given action are down.", - "lineNumber": 840, + "lineNumber": 839, "params": [ { "nullable": null, @@ -27449,7 +27385,7 @@ } }, { - "__docId__": 1372, + "__docId__": 1368, "kind": "set", "name": "pivotElement", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27459,7 +27395,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#pivotElement", "access": "public", "description": "Sets the HTMl element to represent the pivot point when {@link CameraControl#followPointer} is true.\n\nSee class comments for an example.", - "lineNumber": 864, + "lineNumber": 863, "params": [ { "nullable": null, @@ -27474,7 +27410,7 @@ ] }, { - "__docId__": 1373, + "__docId__": 1369, "kind": "set", "name": "active", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27484,7 +27420,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#active", "access": "public", "description": " Sets if this ````CameraControl```` is active or not.\n\nWhen inactive, the ````CameraControl```` will not react to input.\n\nDefault is ````true````.", - "lineNumber": 877, + "lineNumber": 876, "params": [ { "nullable": null, @@ -27499,7 +27435,7 @@ ] }, { - "__docId__": 1374, + "__docId__": 1370, "kind": "get", "name": "active", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27509,7 +27445,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#active", "access": "public", "description": "Gets if this ````CameraControl```` is active or not.\n\nWhen inactive, the ````CameraControl```` will not react to input.\n\nDefault is ````true````.", - "lineNumber": 890, + "lineNumber": 889, "unknown": [ { "tagName": "@returns", @@ -27531,7 +27467,7 @@ } }, { - "__docId__": 1375, + "__docId__": 1371, "kind": "set", "name": "navMode", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27541,7 +27477,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#navMode", "access": "public", "description": "Sets the current navigation mode.\n\nAccepted 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\nSee class comments for more info.", - "lineNumber": 907, + "lineNumber": 906, "params": [ { "nullable": null, @@ -27556,7 +27492,7 @@ ] }, { - "__docId__": 1376, + "__docId__": 1372, "kind": "get", "name": "navMode", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27566,7 +27502,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#navMode", "access": "public", "description": "Gets the current navigation mode.", - "lineNumber": 927, + "lineNumber": 926, "unknown": [ { "tagName": "@returns", @@ -27588,7 +27524,7 @@ } }, { - "__docId__": 1377, + "__docId__": 1373, "kind": "set", "name": "pointerEnabled", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27598,7 +27534,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#pointerEnabled", "access": "public", "description": "Sets whether mouse and touch input is enabled.\n\nDefault is ````true````.\n\nDisabling mouse and touch input on ````CameraControl```` is useful when we want to temporarily use mouse or\ntouch input to interact with some other 3D control, without disturbing the {@link Camera}.", - "lineNumber": 941, + "lineNumber": 940, "params": [ { "nullable": null, @@ -27613,7 +27549,7 @@ ] }, { - "__docId__": 1378, + "__docId__": 1374, "kind": "method", "name": "_reset", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27623,14 +27559,14 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#_reset", "access": "private", "description": null, - "lineNumber": 946, + "lineNumber": 945, "undocument": true, "ignore": true, "params": [], "return": null }, { - "__docId__": 1379, + "__docId__": 1375, "kind": "get", "name": "pointerEnabled", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27640,7 +27576,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#pointerEnabled", "access": "public", "description": "Gets whether mouse and touch input is enabled.\n\nDefault is ````true````.\n\nDisabling mouse and touch input on ````CameraControl```` is desirable when we want to temporarily use mouse or\ntouch input to interact with some other 3D control, without interfering with the {@link Camera}.", - "lineNumber": 971, + "lineNumber": 970, "unknown": [ { "tagName": "@returns", @@ -27662,7 +27598,7 @@ } }, { - "__docId__": 1380, + "__docId__": 1376, "kind": "set", "name": "followPointer", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27672,7 +27608,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#followPointer", "access": "public", "description": "Sets whether the {@link Camera} follows the mouse/touch pointer.\n\nIn orbiting mode, the Camera will orbit about the pointer, and will dolly to and from the pointer.\n\nIn fly-to mode, the Camera will dolly to and from the pointer, however the World will always rotate about the Camera position.\n\nIn plan-view mode, the Camera will dolly to and from the pointer, however the Camera will not rotate.\n\nDefault is ````true````.\n\nSee class comments for more info.", - "lineNumber": 990, + "lineNumber": 989, "params": [ { "nullable": null, @@ -27687,7 +27623,7 @@ ] }, { - "__docId__": 1381, + "__docId__": 1377, "kind": "get", "name": "followPointer", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27697,7 +27633,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#followPointer", "access": "public", "description": "Sets whether the {@link Camera} follows the mouse/touch pointer.\n\nIn orbiting mode, the Camera will orbit about the pointer, and will dolly to and from the pointer.\n\nIn fly-to mode, the Camera will dolly to and from the pointer, however the World will always rotate about the Camera position.\n\nIn plan-view mode, the Camera will dolly to and from the pointer, however the Camera will not rotate.\n\nDefault is ````true````.\n\nSee class comments for more info.", - "lineNumber": 1009, + "lineNumber": 1008, "unknown": [ { "tagName": "@returns", @@ -27719,7 +27655,7 @@ } }, { - "__docId__": 1382, + "__docId__": 1378, "kind": "set", "name": "pivotPos", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27729,7 +27665,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#pivotPos", "access": "public", "description": "Sets the current World-space 3D target position.\n\nOnly applies when {@link CameraControl#followPointer} is ````true````.", - "lineNumber": 1020, + "lineNumber": 1019, "params": [ { "nullable": null, @@ -27744,7 +27680,7 @@ ] }, { - "__docId__": 1383, + "__docId__": 1379, "kind": "get", "name": "pivotPos", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27754,7 +27690,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#pivotPos", "access": "public", "description": "Gets the current World-space 3D pivot position.\n\nOnly applies when {@link CameraControl#followPointer} is ````true````.", - "lineNumber": 1031, + "lineNumber": 1030, "return": { "nullable": null, "types": [ @@ -27770,7 +27706,7 @@ } }, { - "__docId__": 1384, + "__docId__": 1380, "kind": "set", "name": "dollyToPointer", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27780,7 +27716,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#dollyToPointer", "access": "public", "description": "", - "lineNumber": 1039, + "lineNumber": 1038, "deprecated": true, "params": [ { @@ -27796,7 +27732,7 @@ ] }, { - "__docId__": 1386, + "__docId__": 1382, "kind": "get", "name": "dollyToPointer", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27806,7 +27742,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#dollyToPointer", "access": "public", "description": "", - "lineNumber": 1048, + "lineNumber": 1047, "deprecated": true, "unknown": [ { @@ -27829,7 +27765,7 @@ } }, { - "__docId__": 1387, + "__docId__": 1383, "kind": "set", "name": "panToPointer", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27839,7 +27775,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#panToPointer", "access": "public", "description": "", - "lineNumber": 1057, + "lineNumber": 1056, "deprecated": true, "params": [ { @@ -27855,7 +27791,7 @@ ] }, { - "__docId__": 1388, + "__docId__": 1384, "kind": "get", "name": "panToPointer", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27865,7 +27801,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#panToPointer", "access": "public", "description": "", - "lineNumber": 1065, + "lineNumber": 1064, "deprecated": true, "unknown": [ { @@ -27888,7 +27824,7 @@ } }, { - "__docId__": 1389, + "__docId__": 1385, "kind": "set", "name": "planView", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27898,7 +27834,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#planView", "access": "public", "description": "Sets whether this ````CameraControl```` is in plan-view mode.\n\nWhen in plan-view mode, rotation is disabled.\n\nDefault is ````false````.\n\nDeprecated - use {@link CameraControl#navMode} instead.", - "lineNumber": 1082, + "lineNumber": 1081, "deprecated": true, "params": [ { @@ -27914,7 +27850,7 @@ ] }, { - "__docId__": 1390, + "__docId__": 1386, "kind": "get", "name": "planView", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27924,7 +27860,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#planView", "access": "public", "description": "Gets whether this ````CameraControl```` is in plan-view mode.\n\nWhen in plan-view mode, rotation is disabled.\n\nDefault is ````false````.\n\nDeprecated - use {@link CameraControl#navMode} instead.", - "lineNumber": 1104, + "lineNumber": 1103, "deprecated": true, "unknown": [ { @@ -27947,7 +27883,7 @@ } }, { - "__docId__": 1391, + "__docId__": 1387, "kind": "set", "name": "firstPerson", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27957,7 +27893,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#firstPerson", "access": "public", "description": "Sets whether this ````CameraControl```` is in first-person mode.\n\nIn \"first person\" mode (disabled by default) the look position rotates about the eye position. Otherwise, {@link Camera#eye} rotates about {@link Camera#look}.\n\nDefault is ````false````.\n\nDeprecated - use {@link CameraControl#navMode} instead.", - "lineNumber": 1121, + "lineNumber": 1120, "deprecated": true, "params": [ { @@ -27973,7 +27909,7 @@ ] }, { - "__docId__": 1392, + "__docId__": 1388, "kind": "get", "name": "firstPerson", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -27983,7 +27919,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#firstPerson", "access": "public", "description": "Gets whether this ````CameraControl```` is in first-person mode.\n\nIn \"first person\" mode (disabled by default) the look position rotates about the eye position. Otherwise, {@link Camera#eye} rotates about {@link Camera#look}.\n\nDefault is ````false````.\n\nDeprecated - use {@link CameraControl#navMode} instead.", - "lineNumber": 1143, + "lineNumber": 1142, "deprecated": true, "unknown": [ { @@ -28006,7 +27942,7 @@ } }, { - "__docId__": 1393, + "__docId__": 1389, "kind": "set", "name": "constrainVertical", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28016,7 +27952,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#constrainVertical", "access": "public", "description": "Sets whether to vertically constrain the {@link Camera} position for first-person navigation.\n\nWhen set ````true````, this constrains {@link Camera#eye} to its current vertical position.\n\nOnly applies when {@link CameraControl#navMode} is ````\"firstPerson\"````.\n\nDefault is ````false````.", - "lineNumber": 1159, + "lineNumber": 1158, "params": [ { "nullable": null, @@ -28031,7 +27967,7 @@ ] }, { - "__docId__": 1394, + "__docId__": 1390, "kind": "get", "name": "constrainVertical", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28041,7 +27977,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#constrainVertical", "access": "public", "description": "Gets whether to vertically constrain the {@link Camera} position for first-person navigation.\n\nWhen set ````true````, this constrains {@link Camera#eye} to its current vertical position.\n\nOnly applies when {@link CameraControl#navMode} is ````\"firstPerson\"````.\n\nDefault is ````false````.", - "lineNumber": 1174, + "lineNumber": 1173, "unknown": [ { "tagName": "@returns", @@ -28063,7 +27999,7 @@ } }, { - "__docId__": 1395, + "__docId__": 1391, "kind": "set", "name": "doublePickFlyTo", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28073,7 +28009,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#doublePickFlyTo", "access": "public", "description": "Sets whether double-picking an {@link Entity} causes the {@link Camera} to fly to its boundary.\n\nDefault is ````false````.", - "lineNumber": 1185, + "lineNumber": 1184, "params": [ { "nullable": null, @@ -28088,7 +28024,7 @@ ] }, { - "__docId__": 1396, + "__docId__": 1392, "kind": "get", "name": "doublePickFlyTo", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28098,7 +28034,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#doublePickFlyTo", "access": "public", "description": "Gets whether double-picking an {@link Entity} causes the {@link Camera} to fly to its boundary.\n\nDefault is ````false````.", - "lineNumber": 1196, + "lineNumber": 1195, "unknown": [ { "tagName": "@returns", @@ -28120,7 +28056,7 @@ } }, { - "__docId__": 1397, + "__docId__": 1393, "kind": "set", "name": "panRightClick", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28130,7 +28066,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#panRightClick", "access": "public", "description": "Sets whether either right-clicking (true) or middle-clicking (false) pans the {@link Camera}.\n\nDefault is ````true````.", - "lineNumber": 1207, + "lineNumber": 1206, "params": [ { "nullable": null, @@ -28145,7 +28081,7 @@ ] }, { - "__docId__": 1398, + "__docId__": 1394, "kind": "get", "name": "panRightClick", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28155,7 +28091,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#panRightClick", "access": "public", "description": "Gets whether right-clicking pans the {@link Camera}.\n\nDefault is ````true````.", - "lineNumber": 1218, + "lineNumber": 1217, "unknown": [ { "tagName": "@returns", @@ -28177,7 +28113,7 @@ } }, { - "__docId__": 1399, + "__docId__": 1395, "kind": "set", "name": "rotationInertia", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28187,7 +28123,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#rotationInertia", "access": "public", "description": "Sets a factor in range ````[0..1]```` indicating how much the {@link Camera} keeps moving after you finish rotating it.\n\nA value of ````0.0```` causes it to immediately stop, ````0.5```` causes its movement to decay 50% on each tick,\nwhile ````1.0```` causes no decay, allowing it continue moving, by the current rate of rotation.\n\nYou may choose an inertia of zero when you want be able to precisely rotate the Camera,\nwithout interference from inertia. Zero inertia can also mean that less frames are rendered while\nyou are rotating the Camera.\n\nDefault is ````0.0````.\n\nDoes not apply when {@link CameraControl#navMode} is ````\"planView\"````, which disallows rotation.", - "lineNumber": 1238, + "lineNumber": 1237, "params": [ { "nullable": null, @@ -28202,7 +28138,7 @@ ] }, { - "__docId__": 1400, + "__docId__": 1396, "kind": "get", "name": "rotationInertia", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28212,7 +28148,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#rotationInertia", "access": "public", "description": "Gets the rotation inertia factor.\n\nDefault is ````0.0````.\n\nDoes not apply when {@link CameraControl#navMode} is ````\"planView\"````, which disallows rotation.", - "lineNumber": 1251, + "lineNumber": 1250, "unknown": [ { "tagName": "@returns", @@ -28234,7 +28170,7 @@ } }, { - "__docId__": 1401, + "__docId__": 1397, "kind": "set", "name": "keyboardPanRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28244,7 +28180,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#keyboardPanRate", "access": "public", "description": "Sets how much the {@link Camera} pans each second with keyboard input.\n\nDefault is ````5.0````, to pan the Camera ````5.0```` World-space units every second that\na panning key is depressed. See the ````CameraControl```` class documentation for which keys control\npanning.\n\nPanning direction is aligned to our Camera's orientation. When we pan horizontally, we pan\nto our left and right, when we pan vertically, we pan upwards and downwards, and when we pan forwards\nand backwards, we pan along the direction the Camera is pointing.\n\nUnlike dollying when {@link followPointer} is ````true````, panning does not follow the pointer.", - "lineNumber": 1270, + "lineNumber": 1269, "params": [ { "nullable": null, @@ -28259,7 +28195,7 @@ ] }, { - "__docId__": 1402, + "__docId__": 1398, "kind": "set", "name": "touchPanRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28269,7 +28205,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#touchPanRate", "access": "public", "description": "Sets how fast the camera pans on touch panning", - "lineNumber": 1280, + "lineNumber": 1279, "params": [ { "nullable": null, @@ -28284,7 +28220,7 @@ ] }, { - "__docId__": 1403, + "__docId__": 1399, "kind": "get", "name": "touchPanRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28294,7 +28230,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#touchPanRate", "access": "public", "description": "Gets how fast the {@link Camera} pans on touch panning\n\nDefault is ````1.0````.", - "lineNumber": 1291, + "lineNumber": 1290, "unknown": [ { "tagName": "@returns", @@ -28316,7 +28252,7 @@ } }, { - "__docId__": 1404, + "__docId__": 1400, "kind": "get", "name": "keyboardPanRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28326,7 +28262,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#keyboardPanRate", "access": "public", "description": "Gets how much the {@link Camera} pans each second with keyboard input.\n\nDefault is ````5.0````.", - "lineNumber": 1302, + "lineNumber": 1301, "unknown": [ { "tagName": "@returns", @@ -28348,7 +28284,7 @@ } }, { - "__docId__": 1405, + "__docId__": 1401, "kind": "set", "name": "keyboardRotationRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28358,7 +28294,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#keyboardRotationRate", "access": "public", "description": "Sets how many degrees per second the {@link Camera} rotates/orbits with keyboard input.\n\nDefault is ````90.0````, to rotate/orbit the Camera ````90.0```` degrees every second that\na rotation key is depressed. See the ````CameraControl```` class documentation for which keys control\nrotation/orbit.", - "lineNumber": 1315, + "lineNumber": 1314, "params": [ { "nullable": null, @@ -28373,7 +28309,7 @@ ] }, { - "__docId__": 1406, + "__docId__": 1402, "kind": "get", "name": "keyboardRotationRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28383,7 +28319,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#keyboardRotationRate", "access": "public", "description": "Sets how many degrees per second the {@link Camera} rotates/orbits with keyboard input.\n\nDefault is ````90.0````.", - "lineNumber": 1326, + "lineNumber": 1325, "unknown": [ { "tagName": "@returns", @@ -28405,7 +28341,7 @@ } }, { - "__docId__": 1407, + "__docId__": 1403, "kind": "set", "name": "dragRotationRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28415,7 +28351,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#dragRotationRate", "access": "public", "description": "Sets the current drag rotation rate.\n\nThis configures how many degrees the {@link Camera} rotates/orbits for a full sweep of the canvas by mouse or touch dragging.\n\nFor example, a value of ````360.0```` indicates that the ````Camera```` rotates/orbits ````360.0```` degrees horizontally\nwhen 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\nflip upside-down. Therefore, a value of ````360.0```` rotates/orbits the ````Camera```` through ````180.0```` degrees\nvertically when we sweep the entire height of the canvas.\n\nDefault is ````360.0````.", - "lineNumber": 1346, + "lineNumber": 1345, "params": [ { "nullable": null, @@ -28430,7 +28366,7 @@ ] }, { - "__docId__": 1408, + "__docId__": 1404, "kind": "get", "name": "dragRotationRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28440,7 +28376,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#dragRotationRate", "access": "public", "description": "Gets the current drag rotation rate.\n\nDefault is ````360.0````.", - "lineNumber": 1357, + "lineNumber": 1356, "unknown": [ { "tagName": "@returns", @@ -28462,7 +28398,7 @@ } }, { - "__docId__": 1409, + "__docId__": 1405, "kind": "set", "name": "keyboardDollyRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28472,7 +28408,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#keyboardDollyRate", "access": "public", "description": "Sets how much the {@link Camera} dollys each second with keyboard input.\n\nDefault is ````15.0````, to dolly the {@link Camera} ````15.0```` World-space units per second while we hold down\nthe ````+```` and ````-```` keys.", - "lineNumber": 1369, + "lineNumber": 1368, "params": [ { "nullable": null, @@ -28487,7 +28423,7 @@ ] }, { - "__docId__": 1410, + "__docId__": 1406, "kind": "get", "name": "keyboardDollyRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28497,7 +28433,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#keyboardDollyRate", "access": "public", "description": "Gets how much the {@link Camera} dollys each second with keyboard input.\n\nDefault is ````15.0````.", - "lineNumber": 1380, + "lineNumber": 1379, "unknown": [ { "tagName": "@returns", @@ -28519,7 +28455,7 @@ } }, { - "__docId__": 1411, + "__docId__": 1407, "kind": "set", "name": "touchDollyRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28529,7 +28465,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#touchDollyRate", "access": "public", "description": "Sets how much the {@link Camera} dollys with touch input.\n\nDefault is ````0.2````", - "lineNumber": 1391, + "lineNumber": 1390, "params": [ { "nullable": null, @@ -28544,7 +28480,7 @@ ] }, { - "__docId__": 1412, + "__docId__": 1408, "kind": "get", "name": "touchDollyRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28554,7 +28490,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#touchDollyRate", "access": "public", "description": "Gets how much the {@link Camera} dollys each second with touch input.\n\nDefault is ````0.2````.", - "lineNumber": 1402, + "lineNumber": 1401, "unknown": [ { "tagName": "@returns", @@ -28576,7 +28512,7 @@ } }, { - "__docId__": 1413, + "__docId__": 1409, "kind": "set", "name": "mouseWheelDollyRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28586,7 +28522,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#mouseWheelDollyRate", "access": "public", "description": "Sets how much the {@link Camera} dollys each second while the mouse wheel is spinning.\n\nDefault is ````100.0````, to dolly the {@link Camera} ````10.0```` World-space units per second as we spin\nthe mouse wheel.", - "lineNumber": 1414, + "lineNumber": 1413, "params": [ { "nullable": null, @@ -28601,7 +28537,7 @@ ] }, { - "__docId__": 1414, + "__docId__": 1410, "kind": "get", "name": "mouseWheelDollyRate", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28611,7 +28547,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#mouseWheelDollyRate", "access": "public", "description": "Gets how much the {@link Camera} dollys each second while the mouse wheel is spinning.\n\nDefault is ````100.0````.", - "lineNumber": 1425, + "lineNumber": 1424, "unknown": [ { "tagName": "@returns", @@ -28633,7 +28569,7 @@ } }, { - "__docId__": 1415, + "__docId__": 1411, "kind": "set", "name": "dollyInertia", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28643,7 +28579,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#dollyInertia", "access": "public", "description": "Sets the dolly inertia factor.\n\nThis factor configures how much the {@link Camera} keeps moving after you finish dollying it.\n\nThis 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\nto continue until further input stops it.\n\nYou might set ````dollyInertia```` to zero when you want be able to precisely position or rotate the Camera,\nwithout interference from inertia. This also means that xeokit renders less frames while dollying the Camera,\nwhich can improve rendering performance.\n\nDefault is ````0````.", - "lineNumber": 1446, + "lineNumber": 1445, "params": [ { "nullable": null, @@ -28658,7 +28594,7 @@ ] }, { - "__docId__": 1416, + "__docId__": 1412, "kind": "get", "name": "dollyInertia", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28668,7 +28604,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#dollyInertia", "access": "public", "description": "Gets the dolly inertia factor.\n\nDefault is ````0````.", - "lineNumber": 1457, + "lineNumber": 1456, "unknown": [ { "tagName": "@returns", @@ -28690,7 +28626,7 @@ } }, { - "__docId__": 1417, + "__docId__": 1413, "kind": "set", "name": "dollyProximityThreshold", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28700,7 +28636,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#dollyProximityThreshold", "access": "public", "description": "Sets the proximity to the closest object below which dolly speed decreases, and above which dolly speed increases.\n\nDefault is ````35.0````.", - "lineNumber": 1468, + "lineNumber": 1467, "params": [ { "nullable": null, @@ -28715,7 +28651,7 @@ ] }, { - "__docId__": 1418, + "__docId__": 1414, "kind": "get", "name": "dollyProximityThreshold", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28725,7 +28661,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#dollyProximityThreshold", "access": "public", "description": "Gets the proximity to the closest object below which dolly speed decreases, and above which dolly speed increases.\n\nDefault is ````35.0````.", - "lineNumber": 1479, + "lineNumber": 1478, "unknown": [ { "tagName": "@returns", @@ -28747,7 +28683,7 @@ } }, { - "__docId__": 1419, + "__docId__": 1415, "kind": "set", "name": "dollyMinSpeed", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28757,7 +28693,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#dollyMinSpeed", "access": "public", "description": "Sets the minimum dolly speed.\n\nDefault is ````0.04````.", - "lineNumber": 1490, + "lineNumber": 1489, "params": [ { "nullable": null, @@ -28772,7 +28708,7 @@ ] }, { - "__docId__": 1420, + "__docId__": 1416, "kind": "get", "name": "dollyMinSpeed", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28782,7 +28718,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#dollyMinSpeed", "access": "public", "description": "Gets the minimum dolly speed.\n\nDefault is ````0.04````.", - "lineNumber": 1501, + "lineNumber": 1500, "unknown": [ { "tagName": "@returns", @@ -28804,7 +28740,7 @@ } }, { - "__docId__": 1421, + "__docId__": 1417, "kind": "set", "name": "panInertia", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28814,7 +28750,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#panInertia", "access": "public", "description": "Sets the pan inertia factor.\n\nThis factor configures how much the {@link Camera} keeps moving after you finish panning it.\n\nThis 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\nto continue until further input stops it.\n\nYou might set ````panInertia```` to zero when you want be able to precisely position or rotate the Camera,\nwithout interference from inertia. This also means that xeokit renders less frames while panning the Camera,\nwich can improve rendering performance.\n\nDefault is ````0.5````.", - "lineNumber": 1522, + "lineNumber": 1521, "params": [ { "nullable": null, @@ -28829,7 +28765,7 @@ ] }, { - "__docId__": 1422, + "__docId__": 1418, "kind": "get", "name": "panInertia", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28839,7 +28775,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#panInertia", "access": "public", "description": "Gets the pan inertia factor.\n\nDefault is ````0.5````.", - "lineNumber": 1533, + "lineNumber": 1532, "unknown": [ { "tagName": "@returns", @@ -28861,7 +28797,7 @@ } }, { - "__docId__": 1423, + "__docId__": 1419, "kind": "set", "name": "keyboardLayout", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28871,7 +28807,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#keyboardLayout", "access": "public", "description": "Sets the keyboard layout.\n\nSupported layouts are:\n\n* ````\"qwerty\"```` (default)\n* ````\"azerty\"````", - "lineNumber": 1548, + "lineNumber": 1547, "deprecated": true, "params": [ { @@ -28887,7 +28823,7 @@ ] }, { - "__docId__": 1425, + "__docId__": 1421, "kind": "get", "name": "keyboardLayout", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28897,7 +28833,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#keyboardLayout", "access": "public", "description": "Gets the keyboard layout.\n\nSupported layouts are:\n\n* ````\"qwerty\"```` (default)\n* ````\"azerty\"````", - "lineNumber": 1570, + "lineNumber": 1569, "deprecated": true, "unknown": [ { @@ -28920,7 +28856,7 @@ } }, { - "__docId__": 1426, + "__docId__": 1422, "kind": "set", "name": "smartPivot", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28930,7 +28866,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#smartPivot", "access": "public", "description": "Sets whether smart default pivoting is enabled.\n\nWhen ````true````, we'll pivot by default about the 3D position of the mouse/touch pointer on an\nimaginary sphere that's centered at {@link Camera#eye} and sized to the {@link Scene} boundary.\n\nWhen ````false````, we'll pivot by default about {@link Camera#look}.\n\nDefault is ````false````.", - "lineNumber": 1586, + "lineNumber": 1585, "params": [ { "nullable": null, @@ -28945,7 +28881,7 @@ ] }, { - "__docId__": 1427, + "__docId__": 1423, "kind": "get", "name": "smartPivot", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28955,7 +28891,7 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#smartPivot", "access": "public", "description": "Gets whether smart default pivoting is enabled.\n\nWhen ````true````, we'll pivot by default about the 3D position of the mouse/touch pointer on an\nimaginary sphere that's centered at {@link Camera#eye} and sized to the {@link Scene} boundary.\n\nWhen ````false````, we'll pivot by default about {@link Camera#look}.\n\nDefault is ````false````.", - "lineNumber": 1602, + "lineNumber": 1601, "unknown": [ { "tagName": "@returns", @@ -28977,7 +28913,7 @@ } }, { - "__docId__": 1428, + "__docId__": 1424, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -28987,13 +28923,13 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#destroy", "access": "private", "description": "Destroys this ````CameraControl````.", - "lineNumber": 1610, + "lineNumber": 1609, "ignore": true, "params": [], "return": null }, { - "__docId__": 1429, + "__docId__": 1425, "kind": "method", "name": "_destroyHandlers", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -29003,14 +28939,14 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#_destroyHandlers", "access": "private", "description": null, - "lineNumber": 1617, + "lineNumber": 1616, "undocument": true, "ignore": true, "params": [], "return": null }, { - "__docId__": 1430, + "__docId__": 1426, "kind": "method", "name": "_destroyControllers", "memberof": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl", @@ -29020,17 +28956,17 @@ "longname": "src/viewer/scene/CameraControl/CameraControl.js~CameraControl#_destroyControllers", "access": "private", "description": null, - "lineNumber": 1626, + "lineNumber": 1625, "undocument": true, "ignore": true, "params": [], "return": null }, { - "__docId__": 1431, + "__docId__": 1427, "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 }\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 updates.inputFromMouse = false;\n\n document.body.style.cursor = cursorType;\n });\n }\n\n\n destroy() {\n this._scene.off(this._onTick);\n }\n}\n\nexport {CameraUpdater};", + "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 }\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};", "static": true, "longname": "/home/lindsay/xeolabs/xeokit/xeokit-nov-18/xeokit-sdk/src/viewer/scene/CameraControl/lib/CameraUpdater.js", "access": "public", @@ -29038,7 +28974,7 @@ "lineNumber": 1 }, { - "__docId__": 1432, + "__docId__": 1428, "kind": "variable", "name": "SCALE_DOLLY_EACH_FRAME", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js", @@ -29059,7 +28995,7 @@ "ignore": true }, { - "__docId__": 1433, + "__docId__": 1429, "kind": "variable", "name": "EPSILON", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js", @@ -29080,7 +29016,7 @@ "ignore": true }, { - "__docId__": 1434, + "__docId__": 1430, "kind": "variable", "name": "tempVec3", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js", @@ -29101,7 +29037,7 @@ "ignore": true }, { - "__docId__": 1435, + "__docId__": 1431, "kind": "class", "name": "CameraUpdater", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js", @@ -29117,7 +29053,7 @@ "ignore": true }, { - "__docId__": 1436, + "__docId__": 1432, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js~CameraUpdater", @@ -29131,7 +29067,7 @@ "undocument": true }, { - "__docId__": 1437, + "__docId__": 1433, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js~CameraUpdater", @@ -29149,7 +29085,7 @@ } }, { - "__docId__": 1438, + "__docId__": 1434, "kind": "member", "name": "_onTick", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js~CameraUpdater", @@ -29167,7 +29103,7 @@ } }, { - "__docId__": 1439, + "__docId__": 1435, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/CameraUpdater.js~CameraUpdater", @@ -29177,13 +29113,13 @@ "longname": "src/viewer/scene/CameraControl/lib/CameraUpdater.js~CameraUpdater#destroy", "access": "public", "description": null, - "lineNumber": 309, + "lineNumber": 307, "undocument": true, "params": [], "return": null }, { - "__docId__": 1440, + "__docId__": 1436, "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};", @@ -29194,7 +29130,7 @@ "lineNumber": 1 }, { - "__docId__": 1441, + "__docId__": 1437, "kind": "variable", "name": "screenPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -29215,7 +29151,7 @@ "ignore": true }, { - "__docId__": 1442, + "__docId__": 1438, "kind": "variable", "name": "viewPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -29236,7 +29172,7 @@ "ignore": true }, { - "__docId__": 1443, + "__docId__": 1439, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -29257,7 +29193,7 @@ "ignore": true }, { - "__docId__": 1444, + "__docId__": 1440, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -29278,7 +29214,7 @@ "ignore": true }, { - "__docId__": 1445, + "__docId__": 1441, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -29299,7 +29235,7 @@ "ignore": true }, { - "__docId__": 1446, + "__docId__": 1442, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -29320,7 +29256,7 @@ "ignore": true }, { - "__docId__": 1447, + "__docId__": 1443, "kind": "variable", "name": "tempVec4b", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -29341,7 +29277,7 @@ "ignore": true }, { - "__docId__": 1448, + "__docId__": 1444, "kind": "variable", "name": "tempVec4c", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -29362,7 +29298,7 @@ "ignore": true }, { - "__docId__": 1449, + "__docId__": 1445, "kind": "class", "name": "PanController", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js", @@ -29378,7 +29314,7 @@ "ignore": true }, { - "__docId__": 1450, + "__docId__": 1446, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js~PanController", @@ -29392,7 +29328,7 @@ "undocument": true }, { - "__docId__": 1451, + "__docId__": 1447, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js~PanController", @@ -29410,7 +29346,7 @@ } }, { - "__docId__": 1452, + "__docId__": 1448, "kind": "method", "name": "dollyToCanvasPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js~PanController", @@ -29463,7 +29399,7 @@ } }, { - "__docId__": 1453, + "__docId__": 1449, "kind": "method", "name": "_unproject", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js~PanController", @@ -29497,7 +29433,7 @@ } }, { - "__docId__": 1454, + "__docId__": 1450, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PanController.js~PanController", @@ -29513,7 +29449,7 @@ "return": null }, { - "__docId__": 1455, + "__docId__": 1451, "kind": "file", "name": "src/viewer/scene/CameraControl/lib/controllers/PickController.js", "content": "import {math} from \"../../../math/math.js\";\nimport {PickResult} from \"../../../webgl/PickResult.js\";\n\n/**\n *\n * @private\n */\nclass PickController {\n\n constructor(cameraControl, configs) {\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 * 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._needFireEvents = false;\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 this.picked = false;\n this.pickedSurface = false;\n this._needFireEvents = false;\n\n const hasHoverSurfaceSubs = this._cameraControl.hasSubs(\"hoverSurface\");\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;\n this.schedulePickEntity = false;\n this.schedulePickSurface = false;\n return;\n }\n }\n }\n\n if (this.schedulePickEntity) {\n if (this.pickResult) {\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 = false;\n this._needFireEvents = false;\n this.schedulePickEntity = false;\n this.schedulePickSurface = false;\n return;\n }\n }\n }\n\n if (this.schedulePickSurface) {\n\n this.pickResult = this._scene.pick({\n pickSurface: true,\n pickSurfaceNormal: false,\n canvasPos: this.pickCursorPos\n });\n\n if (this.pickResult) {\n this.picked = true;\n this.pickedSurface = true;\n this._needFireEvents = true;\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 = true;\n }\n }\n\n this.schedulePickEntity = false;\n this.schedulePickSurface = false;\n }\n\n fireEvents() {\n\n if (!this._needFireEvents) {\n return;\n }\n\n if (this.picked && this.pickResult && 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 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 = false;\n }\n\n destroy() {\n }\n}\n\nexport {PickController};\n", @@ -29524,7 +29460,7 @@ "lineNumber": 1 }, { - "__docId__": 1456, + "__docId__": 1452, "kind": "class", "name": "PickController", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js", @@ -29540,7 +29476,7 @@ "ignore": true }, { - "__docId__": 1457, + "__docId__": 1453, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29554,7 +29490,7 @@ "undocument": true }, { - "__docId__": 1458, + "__docId__": 1454, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29572,7 +29508,7 @@ } }, { - "__docId__": 1459, + "__docId__": 1455, "kind": "member", "name": "_cameraControl", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29590,7 +29526,7 @@ } }, { - "__docId__": 1460, + "__docId__": 1456, "kind": "member", "name": "_configs", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29608,7 +29544,7 @@ } }, { - "__docId__": 1461, + "__docId__": 1457, "kind": "member", "name": "schedulePickEntity", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29627,7 +29563,7 @@ } }, { - "__docId__": 1462, + "__docId__": 1458, "kind": "member", "name": "schedulePickSurface", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29646,7 +29582,7 @@ } }, { - "__docId__": 1463, + "__docId__": 1459, "kind": "member", "name": "pickCursorPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29665,7 +29601,7 @@ } }, { - "__docId__": 1464, + "__docId__": 1460, "kind": "member", "name": "picked", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29684,7 +29620,7 @@ } }, { - "__docId__": 1465, + "__docId__": 1461, "kind": "member", "name": "pickedSurface", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29703,7 +29639,7 @@ } }, { - "__docId__": 1466, + "__docId__": 1462, "kind": "member", "name": "pickResult", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29722,7 +29658,7 @@ } }, { - "__docId__": 1467, + "__docId__": 1463, "kind": "member", "name": "_lastPickedEntityId", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29740,7 +29676,7 @@ } }, { - "__docId__": 1468, + "__docId__": 1464, "kind": "member", "name": "_needFireEvents", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29758,7 +29694,7 @@ } }, { - "__docId__": 1469, + "__docId__": 1465, "kind": "method", "name": "update", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29773,7 +29709,7 @@ "return": null }, { - "__docId__": 1493, + "__docId__": 1489, "kind": "method", "name": "fireEvents", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29789,7 +29725,7 @@ "return": null }, { - "__docId__": 1499, + "__docId__": 1495, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PickController.js~PickController", @@ -29805,7 +29741,7 @@ "return": null }, { - "__docId__": 1500, + "__docId__": 1496, "kind": "file", "name": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", "content": "import {math} from \"../../../math/math.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._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 });\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 const canvasElem = canvas.canvas;\n const canvasBoundingRect = canvasElem.getBoundingClientRect();\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 /**\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 * 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 * @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._hideTimeout !== null) {\n window.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n }\n if (this._pivotElement) {\n this.updatePivotElement();\n this._pivotElement.style.visibility = \"visible\";\n this._shown = true;\n this._hideTimeout = window.setTimeout(() => {\n this.hidePivot();\n }, 1000);\n }\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._hideTimeout !== null) {\n window.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n }\n if (this._pivotElement) {\n this._pivotElement.style.visibility = \"hidden\";\n }\n this._shown = false;\n }\n\n /**\n * Finishes pivoting.\n */\n endPivot() {\n this._pivoting = false;\n }\n\n destroy() {\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};\n", @@ -29816,7 +29752,7 @@ "lineNumber": 1 }, { - "__docId__": 1501, + "__docId__": 1497, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", @@ -29837,7 +29773,7 @@ "ignore": true }, { - "__docId__": 1502, + "__docId__": 1498, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", @@ -29858,7 +29794,7 @@ "ignore": true }, { - "__docId__": 1503, + "__docId__": 1499, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", @@ -29879,7 +29815,7 @@ "ignore": true }, { - "__docId__": 1504, + "__docId__": 1500, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", @@ -29900,7 +29836,7 @@ "ignore": true }, { - "__docId__": 1505, + "__docId__": 1501, "kind": "variable", "name": "tempVec4b", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", @@ -29921,7 +29857,7 @@ "ignore": true }, { - "__docId__": 1506, + "__docId__": 1502, "kind": "variable", "name": "tempVec4c", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", @@ -29942,7 +29878,7 @@ "ignore": true }, { - "__docId__": 1507, + "__docId__": 1503, "kind": "class", "name": "PivotController", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js", @@ -29958,7 +29894,7 @@ "ignore": true }, { - "__docId__": 1508, + "__docId__": 1504, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -29972,7 +29908,7 @@ "ignore": true }, { - "__docId__": 1509, + "__docId__": 1505, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -29990,7 +29926,7 @@ } }, { - "__docId__": 1510, + "__docId__": 1506, "kind": "member", "name": "_configs", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30008,7 +29944,7 @@ } }, { - "__docId__": 1511, + "__docId__": 1507, "kind": "member", "name": "_pivotWorldPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30026,7 +29962,7 @@ } }, { - "__docId__": 1512, + "__docId__": 1508, "kind": "member", "name": "_cameraOffset", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30044,7 +29980,7 @@ } }, { - "__docId__": 1513, + "__docId__": 1509, "kind": "member", "name": "_azimuth", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30062,7 +29998,7 @@ } }, { - "__docId__": 1514, + "__docId__": 1510, "kind": "member", "name": "_polar", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30080,7 +30016,7 @@ } }, { - "__docId__": 1515, + "__docId__": 1511, "kind": "member", "name": "_radius", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30098,7 +30034,7 @@ } }, { - "__docId__": 1516, + "__docId__": 1512, "kind": "member", "name": "_pivotPosSet", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30116,7 +30052,7 @@ } }, { - "__docId__": 1517, + "__docId__": 1513, "kind": "member", "name": "_pivoting", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30134,7 +30070,7 @@ } }, { - "__docId__": 1518, + "__docId__": 1514, "kind": "member", "name": "_shown", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30152,7 +30088,7 @@ } }, { - "__docId__": 1519, + "__docId__": 1515, "kind": "member", "name": "_pivotViewPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30170,7 +30106,7 @@ } }, { - "__docId__": 1520, + "__docId__": 1516, "kind": "member", "name": "_pivotProjPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30188,7 +30124,7 @@ } }, { - "__docId__": 1521, + "__docId__": 1517, "kind": "member", "name": "_pivotCanvasPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30206,7 +30142,7 @@ } }, { - "__docId__": 1522, + "__docId__": 1518, "kind": "member", "name": "_cameraDirty", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30224,7 +30160,7 @@ } }, { - "__docId__": 1523, + "__docId__": 1519, "kind": "member", "name": "_onViewMatrix", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30242,7 +30178,7 @@ } }, { - "__docId__": 1525, + "__docId__": 1521, "kind": "member", "name": "_onProjMatrix", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30260,7 +30196,7 @@ } }, { - "__docId__": 1527, + "__docId__": 1523, "kind": "member", "name": "_onTick", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30278,7 +30214,7 @@ } }, { - "__docId__": 1528, + "__docId__": 1524, "kind": "method", "name": "updatePivotElement", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30294,7 +30230,7 @@ "return": null }, { - "__docId__": 1530, + "__docId__": 1526, "kind": "method", "name": "setPivotElement", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30320,7 +30256,7 @@ "return": null }, { - "__docId__": 1531, + "__docId__": 1527, "kind": "member", "name": "_pivotElement", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30338,7 +30274,7 @@ } }, { - "__docId__": 1532, + "__docId__": 1528, "kind": "method", "name": "startPivot", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30357,7 +30293,7 @@ } }, { - "__docId__": 1538, + "__docId__": 1534, "kind": "method", "name": "_cameraLookingDownwards", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30378,7 +30314,7 @@ } }, { - "__docId__": 1539, + "__docId__": 1535, "kind": "method", "name": "getPivoting", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30406,7 +30342,7 @@ "params": [] }, { - "__docId__": 1540, + "__docId__": 1536, "kind": "method", "name": "setPivotPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30432,7 +30368,7 @@ "return": null }, { - "__docId__": 1542, + "__docId__": 1538, "kind": "method", "name": "setCanvasPivotPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30458,7 +30394,7 @@ "return": null }, { - "__docId__": 1543, + "__docId__": 1539, "kind": "method", "name": "getPivotPos", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30486,7 +30422,7 @@ "params": [] }, { - "__docId__": 1544, + "__docId__": 1540, "kind": "method", "name": "continuePivot", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30522,7 +30458,7 @@ "return": null }, { - "__docId__": 1548, + "__docId__": 1544, "kind": "method", "name": "showPivot", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30537,7 +30473,7 @@ "return": null }, { - "__docId__": 1549, + "__docId__": 1545, "kind": "member", "name": "_hideTimeout", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30555,7 +30491,7 @@ } }, { - "__docId__": 1552, + "__docId__": 1548, "kind": "method", "name": "hidePivot", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30570,7 +30506,7 @@ "return": null }, { - "__docId__": 1555, + "__docId__": 1551, "kind": "method", "name": "endPivot", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30585,7 +30521,7 @@ "return": null }, { - "__docId__": 1557, + "__docId__": 1553, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/controllers/PivotController.js~PivotController", @@ -30601,7 +30537,7 @@ "return": null }, { - "__docId__": 1558, + "__docId__": 1554, "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, updates) {\n\n this._scene = scene;\n const cameraControl = controllers.cameraControl;\n const camera = scene.camera;\n\n scene.input.on(\"keydown\", this._documentKeyDownHandler = (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 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 document.removeEventListener(\"keydown\", this._documentKeyDownHandler);\n }\n}\n\nexport {KeyboardAxisViewHandler};", @@ -30612,7 +30548,7 @@ "lineNumber": 1 }, { - "__docId__": 1559, + "__docId__": 1555, "kind": "variable", "name": "center", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", @@ -30633,7 +30569,7 @@ "ignore": true }, { - "__docId__": 1560, + "__docId__": 1556, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", @@ -30654,7 +30590,7 @@ "ignore": true }, { - "__docId__": 1561, + "__docId__": 1557, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", @@ -30675,7 +30611,7 @@ "ignore": true }, { - "__docId__": 1562, + "__docId__": 1558, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", @@ -30696,7 +30632,7 @@ "ignore": true }, { - "__docId__": 1563, + "__docId__": 1559, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", @@ -30717,7 +30653,7 @@ "ignore": true }, { - "__docId__": 1564, + "__docId__": 1560, "kind": "variable", "name": "tempCameraTarget", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", @@ -30738,7 +30674,7 @@ "ignore": true }, { - "__docId__": 1565, + "__docId__": 1561, "kind": "class", "name": "KeyboardAxisViewHandler", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js", @@ -30754,7 +30690,7 @@ "ignore": true }, { - "__docId__": 1566, + "__docId__": 1562, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js~KeyboardAxisViewHandler", @@ -30768,7 +30704,7 @@ "undocument": true }, { - "__docId__": 1567, + "__docId__": 1563, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js~KeyboardAxisViewHandler", @@ -30786,7 +30722,7 @@ } }, { - "__docId__": 1568, + "__docId__": 1564, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js~KeyboardAxisViewHandler", @@ -30802,7 +30738,7 @@ "return": null }, { - "__docId__": 1569, + "__docId__": 1565, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js~KeyboardAxisViewHandler", @@ -30818,7 +30754,7 @@ "return": null }, { - "__docId__": 1570, + "__docId__": 1566, "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 const pickController = controllers.pickController;\n\n let mouseMovedSinceLastKeyboardDolly = true;\n\n document.addEventListener(\"mousemove\", this._documentMouseMoveHandler = () => {\n mouseMovedSinceLastKeyboardDolly = true;\n });\n\n document.addEventListener(\"keydown\", this._documentKeyDownHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled) || (!scene.input.keyboardEnabled)) {\n return;\n }\n if (!states.mouseover) {\n return;\n }\n const keyCode = e.keyCode;\n keyDownMap[keyCode] = true;\n\n if (keyCode === input.KEY_SHIFT) {\n canvas.style.cursor = \"move\";\n }\n });\n\n document.addEventListener(\"keyup\", this._documentKeyUpHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled) || (!scene.input.keyboardEnabled)) {\n return;\n }\n if (!states.mouseover) {\n return;\n }\n const keyCode = e.keyCode;\n keyDownMap[keyCode] = false;\n\n if (keyCode === input.KEY_SHIFT) {\n canvas.style.cursor = null;\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 document.removeEventListener(\"mousemove\", this._documentMouseMoveHandler);\n document.removeEventListener(\"keydown\", this._documentKeyDownHandler);\n document.removeEventListener(\"keyup\", this._documentKeyUpHandler);\n }\n}\n\nexport {KeyboardPanRotateDollyHandler};", @@ -30829,7 +30765,7 @@ "lineNumber": 1 }, { - "__docId__": 1571, + "__docId__": 1567, "kind": "class", "name": "KeyboardPanRotateDollyHandler", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js", @@ -30845,7 +30781,7 @@ "ignore": true }, { - "__docId__": 1572, + "__docId__": 1568, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js~KeyboardPanRotateDollyHandler", @@ -30859,7 +30795,7 @@ "undocument": true }, { - "__docId__": 1573, + "__docId__": 1569, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js~KeyboardPanRotateDollyHandler", @@ -30877,7 +30813,7 @@ } }, { - "__docId__": 1574, + "__docId__": 1570, "kind": "member", "name": "_onTick", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js~KeyboardPanRotateDollyHandler", @@ -30895,7 +30831,7 @@ } }, { - "__docId__": 1575, + "__docId__": 1571, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js~KeyboardPanRotateDollyHandler", @@ -30911,7 +30847,7 @@ "return": null }, { - "__docId__": 1576, + "__docId__": 1572, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js~KeyboardPanRotateDollyHandler", @@ -30927,7 +30863,7 @@ "return": null }, { - "__docId__": 1577, + "__docId__": 1573, "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 { x, y } = canvas.getBoundingClientRect();\n canvasPos[0] = event.clientX - x;\n canvasPos[1] = event.clientY - y;\n }\n return canvasPos;\n}\n\nexport {MouseMiscHandler};\n", @@ -30938,7 +30874,7 @@ "lineNumber": 1 }, { - "__docId__": 1578, + "__docId__": 1574, "kind": "function", "name": "getCanvasPosFromEvent", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js", @@ -30981,7 +30917,7 @@ "ignore": true }, { - "__docId__": 1579, + "__docId__": 1575, "kind": "class", "name": "MouseMiscHandler", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js", @@ -30997,7 +30933,7 @@ "ignore": true }, { - "__docId__": 1580, + "__docId__": 1576, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js~MouseMiscHandler", @@ -31011,7 +30947,7 @@ "undocument": true }, { - "__docId__": 1581, + "__docId__": 1577, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js~MouseMiscHandler", @@ -31029,7 +30965,7 @@ } }, { - "__docId__": 1582, + "__docId__": 1578, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js~MouseMiscHandler", @@ -31045,7 +30981,7 @@ "return": null }, { - "__docId__": 1583, + "__docId__": 1579, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js~MouseMiscHandler", @@ -31061,10 +30997,10 @@ "return": null }, { - "__docId__": 1584, + "__docId__": 1580, "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 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 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 this._down = false;\n\n let mouseDownLeft;\n let mouseDownMiddle;\n let mouseDownRight;\n\n let mouseDownPicked = false;\n const pickedWorldPos = math.vec3();\n\n let mouseMovedSinceLastWheel = 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 this._down = true;\n\n switch (e.which) {\n\n case 1: // Left button\n\n if (keyDown[scene.input.KEY_SHIFT] || configs.planView) {\n\n setMousedownState();\n\n } else {\n\n mouseDownLeft = true;\n\n setMousedownState(false);\n\n }\n\n break;\n\n case 2: // Middle/both buttons\n\n mouseDownMiddle = true;\n\n if (!configs.panRightClick) {\n\n setMousedownState();\n\n }\n\n break;\n\n case 3: // Right button\n\n mouseDownRight = true;\n\n if (configs.panRightClick) {\n\n setMousedownState();\n\n }\n\n break;\n\n default:\n break;\n }\n\n document.addEventListener(\"mousemove\", this._documentMouseMoveHandler = () => {\n // Scaling drag-rotate to canvas boundary\n\n const canvasBoundary = scene.canvas.boundary;\n const canvasWidth = canvasBoundary[2] - canvasBoundary[0];\n const canvasHeight = canvasBoundary[3] - canvasBoundary[1];\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 if (panning) {\n\n const xPanDelta = (x - lastX);\n const yPanDelta = (y - lastY);\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 * xPanDelta * targetDistance / canvasHeight);\n updates.panDeltaY += (1.5 * yPanDelta * targetDistance / canvasHeight);\n\n } else {\n\n updates.panDeltaX += 0.5 * camera.ortho.scale * (xPanDelta / canvasHeight);\n updates.panDeltaY += 0.5 * camera.ortho.scale * (yPanDelta / canvasHeight);\n }\n\n } else if (!mouseDownMiddle && !mouseDownRight) {\n\n if (!configs.planView) { // No rotating in plan-view mode\n\n if (configs.firstPerson) {\n updates.rotateDeltaY -= ((x - lastX) / canvasWidth) * configs.dragRotationRate / 2;\n updates.rotateDeltaX += ((y - lastY) / canvasHeight) * (configs.dragRotationRate / 4);\n\n } else {\n updates.rotateDeltaY -= ((x - lastX) / canvasWidth) * (configs.dragRotationRate * 1.5);\n updates.rotateDeltaX += ((y - lastY) / canvasHeight) * (configs.dragRotationRate * 1.5);\n }\n }\n }\n\n lastX = x;\n lastY = y;\n });\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 updates.inputFromMouse = true;\n\n mouseMovedSinceLastWheel = true;\n\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 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 xRotateDelta = 0;\n yRotateDelta = 0;\n this._down = false;\n\n document.removeEventListener(\"mousemove\", this._documentMouseMoveHandler);\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 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 this._down = false;\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 (mouseMovedSinceLastWheel) {\n states.followPointerDirty = true;\n mouseMovedSinceLastWheel = false;\n }\n\n e.preventDefault();\n });\n }\n\n reset() {\n this._down = false;\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", + "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 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 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 = () => {\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 const canvasWidth = canvasBoundary[2] - canvasBoundary[0];\n const canvasHeight = canvasBoundary[3] - canvasBoundary[1];\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 if (panning) {\n\n const xPanDelta = (x - lastX);\n const yPanDelta = (y - lastY);\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 * xPanDelta * targetDistance / canvasHeight);\n updates.panDeltaY += (1.5 * yPanDelta * targetDistance / canvasHeight);\n\n } else {\n\n updates.panDeltaX += 0.5 * camera.ortho.scale * (xPanDelta / canvasHeight);\n updates.panDeltaY += 0.5 * camera.ortho.scale * (yPanDelta / 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 -= ((x - lastX) / canvasWidth) * configs.dragRotationRate / 2;\n updates.rotateDeltaX += ((y - lastY) / canvasHeight) * (configs.dragRotationRate / 4);\n\n } else {\n updates.rotateDeltaY -= ((x - lastX) / canvasWidth) * (configs.dragRotationRate * 1.5);\n updates.rotateDeltaX += ((y - lastY) / 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 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 e.preventDefault();\n });\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", "static": true, "longname": "/home/lindsay/xeolabs/xeokit/xeokit-nov-18/xeokit-sdk/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js", "access": "public", @@ -31072,7 +31008,7 @@ "lineNumber": 1 }, { - "__docId__": 1585, + "__docId__": 1581, "kind": "variable", "name": "canvasPos", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js", @@ -31093,7 +31029,7 @@ "ignore": true }, { - "__docId__": 1586, + "__docId__": 1582, "kind": "function", "name": "getCanvasPosFromEvent", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js", @@ -31130,7 +31066,7 @@ "ignore": true }, { - "__docId__": 1587, + "__docId__": 1583, "kind": "class", "name": "MousePanRotateDollyHandler", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js", @@ -31146,7 +31082,7 @@ "ignore": true }, { - "__docId__": 1588, + "__docId__": 1584, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js~MousePanRotateDollyHandler", @@ -31160,7 +31096,7 @@ "undocument": true }, { - "__docId__": 1589, + "__docId__": 1585, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js~MousePanRotateDollyHandler", @@ -31178,25 +31114,7 @@ } }, { - "__docId__": 1590, - "kind": "member", - "name": "_down", - "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js~MousePanRotateDollyHandler", - "static": false, - "longname": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js~MousePanRotateDollyHandler#_down", - "access": "private", - "description": null, - "lineNumber": 45, - "undocument": true, - "ignore": true, - "type": { - "types": [ - "boolean" - ] - } - }, - { - "__docId__": 1594, + "__docId__": 1586, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js~MousePanRotateDollyHandler", @@ -31212,7 +31130,7 @@ "return": null }, { - "__docId__": 1596, + "__docId__": 1587, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js~MousePanRotateDollyHandler", @@ -31222,16 +31140,16 @@ "longname": "src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js~MousePanRotateDollyHandler#destroy", "access": "public", "description": null, - "lineNumber": 325, + "lineNumber": 324, "undocument": true, "params": [], "return": null }, { - "__docId__": 1597, + "__docId__": 1588, "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.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 canvas.addEventListener(\"mousemove\", this._canvasMouseMoveHandler = (e) => {\n\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 hoverOutSubs = cameraControl.hasSubs(\"hoverOut\");\n const hoverOffSubs = cameraControl.hasSubs(\"hoverOff\");\n const hoverSurfaceSubs = cameraControl.hasSubs(\"hoverSurface\");\n\n if (hoverSubs || hoverOutSubs || hoverOffSubs || hoverSurfaceSubs) {\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickEntity = true;\n pickController.schedulePickSurface = hoverSurfaceSubs;\n\n pickController.update();\n\n if (pickController.pickResult) {\n\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 cameraControl.fire(\"hover\", pickController.pickResult, true);\n\n if (pickController.pickResult.worldPos) { // 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 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\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 this._timeout = setTimeout(() => {\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickEntity = configs.doublePickFlyTo;\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\n cameraControl.fire(\"pickedSurface\", pickController.pickResult, true);\n\n if ((!configs.firstPerson) && configs.followPointer) {\n controllers.pivotController.setPivotPos(pickController.pickResult.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 }, 250); // FIXME: Too short for track pads\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};", + "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 canvas.addEventListener(\"mousemove\", this._canvasMouseMoveHandler = (e) => {\n\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 hoverOutSubs = cameraControl.hasSubs(\"hoverOut\");\n const hoverOffSubs = cameraControl.hasSubs(\"hoverOff\");\n const hoverSurfaceSubs = cameraControl.hasSubs(\"hoverSurface\");\n\n if (hoverSubs || hoverOutSubs || hoverOffSubs || hoverSurfaceSubs) {\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickEntity = true;\n pickController.schedulePickSurface = hoverSurfaceSubs;\n\n pickController.update();\n\n if (pickController.pickResult) {\n\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 cameraControl.fire(\"hover\", pickController.pickResult, true);\n\n if (pickController.pickResult.worldPos) { // 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 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\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 this._timeout = setTimeout(() => {\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickEntity = configs.doublePickFlyTo;\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\n cameraControl.fire(\"pickedSurface\", pickController.pickResult, true);\n\n if ((!configs.firstPerson) && configs.followPointer) {\n controllers.pivotController.setPivotPos(pickController.pickResult.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 }, 250); // FIXME: Too short for track pads\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};", "static": true, "longname": "/home/lindsay/xeolabs/xeokit/xeokit-nov-18/xeokit-sdk/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js", "access": "public", @@ -31239,7 +31157,7 @@ "lineNumber": 1 }, { - "__docId__": 1598, + "__docId__": 1589, "kind": "class", "name": "MousePickHandler", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js", @@ -31255,7 +31173,7 @@ "ignore": true }, { - "__docId__": 1599, + "__docId__": 1590, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js~MousePickHandler", @@ -31269,7 +31187,7 @@ "undocument": true }, { - "__docId__": 1600, + "__docId__": 1591, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js~MousePickHandler", @@ -31287,7 +31205,7 @@ } }, { - "__docId__": 1601, + "__docId__": 1592, "kind": "member", "name": "_clicks", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js~MousePickHandler", @@ -31305,7 +31223,7 @@ } }, { - "__docId__": 1602, + "__docId__": 1593, "kind": "member", "name": "_timeout", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js~MousePickHandler", @@ -31323,7 +31241,7 @@ } }, { - "__docId__": 1603, + "__docId__": 1594, "kind": "member", "name": "_lastPickedEntityId", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js~MousePickHandler", @@ -31341,7 +31259,7 @@ } }, { - "__docId__": 1611, + "__docId__": 1602, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js~MousePickHandler", @@ -31357,7 +31275,7 @@ "return": null }, { - "__docId__": 1615, + "__docId__": 1606, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js~MousePickHandler", @@ -31373,7 +31291,7 @@ "return": null }, { - "__docId__": 1617, + "__docId__": 1608, "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 canvas.addEventListener(\"touchstart\", this._canvasTouchStartHandler = (event) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n event.stopPropagation();\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(\"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] - canvasBoundary[0];\n const canvasHeight = canvasBoundary[3] - canvasBoundary[1];\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 (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 updates.rotateDeltaY -= (xPanDelta / canvasWidth) * (configs.dragRotationRate * 1.0); // Full horizontal rotation\n updates.rotateDeltaX += (yPanDelta / canvasHeight) * (configs.dragRotationRate * 1.5); // Half vertical rotation\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(\"touchmove\", this._canvasTouchMoveHandler);\n this._scene.off(this._onTick);\n }\n}\n\nexport {TouchPanRotateAndDollyHandler};\n", @@ -31384,7 +31302,7 @@ "lineNumber": 1 }, { - "__docId__": 1618, + "__docId__": 1609, "kind": "function", "name": "getCanvasPosFromEvent", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js", @@ -31421,7 +31339,7 @@ "ignore": true }, { - "__docId__": 1619, + "__docId__": 1610, "kind": "class", "name": "TouchPanRotateAndDollyHandler", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js", @@ -31437,7 +31355,7 @@ "ignore": true }, { - "__docId__": 1620, + "__docId__": 1611, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js~TouchPanRotateAndDollyHandler", @@ -31451,7 +31369,7 @@ "undocument": true }, { - "__docId__": 1621, + "__docId__": 1612, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js~TouchPanRotateAndDollyHandler", @@ -31469,7 +31387,7 @@ } }, { - "__docId__": 1622, + "__docId__": 1613, "kind": "member", "name": "_onTick", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js~TouchPanRotateAndDollyHandler", @@ -31487,7 +31405,7 @@ } }, { - "__docId__": 1623, + "__docId__": 1614, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js~TouchPanRotateAndDollyHandler", @@ -31503,7 +31421,7 @@ "return": null }, { - "__docId__": 1624, + "__docId__": 1615, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js~TouchPanRotateAndDollyHandler", @@ -31519,7 +31437,7 @@ "return": null }, { - "__docId__": 1625, + "__docId__": 1616, "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\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 pivotController = controllers.pivotController;\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 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 tapStartPos[0] = touches[0].pageX;\n tapStartPos[1] = touches[0].pageY;\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 activeTouches[i][0] = touches[i].pageX;\n activeTouches[i][1] = touches[i].pageY;\n }\n\n activeTouches.length = touches.length;\n\n e.stopPropagation();\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 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 // 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 pickController.pickCursorPos[0] = Math.round(changedTouches[0].clientX);\n pickController.pickCursorPos[1] = Math.round(changedTouches[0].clientY);\n pickController.schedulePickEntity = true;\n pickController.schedulePickSurface = pickedSurfaceSubs;\n\n pickController.update();\n\n if (pickController.pickResult) {\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 pickController.pickCursorPos[0] = Math.round(changedTouches[0].clientX);\n pickController.pickCursorPos[1] = Math.round(changedTouches[0].clientY);\n pickController.schedulePickEntity = true;\n pickController.schedulePickSurface = pickedSurfaceSubs;\n\n pickController.update();\n\n if (pickController.pickResult) {\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};", @@ -31530,7 +31448,7 @@ "lineNumber": 1 }, { - "__docId__": 1626, + "__docId__": 1617, "kind": "variable", "name": "TAP_INTERVAL", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js", @@ -31551,7 +31469,7 @@ "ignore": true }, { - "__docId__": 1627, + "__docId__": 1618, "kind": "variable", "name": "DBL_TAP_INTERVAL", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js", @@ -31572,7 +31490,7 @@ "ignore": true }, { - "__docId__": 1628, + "__docId__": 1619, "kind": "variable", "name": "TAP_DISTANCE_THRESHOLD", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js", @@ -31593,7 +31511,7 @@ "ignore": true }, { - "__docId__": 1629, + "__docId__": 1620, "kind": "class", "name": "TouchPickHandler", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js", @@ -31609,7 +31527,7 @@ "ignore": true }, { - "__docId__": 1630, + "__docId__": 1621, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js~TouchPickHandler", @@ -31623,7 +31541,7 @@ "undocument": true }, { - "__docId__": 1631, + "__docId__": 1622, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js~TouchPickHandler", @@ -31641,7 +31559,7 @@ } }, { - "__docId__": 1632, + "__docId__": 1623, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js~TouchPickHandler", @@ -31657,7 +31575,7 @@ "return": null }, { - "__docId__": 1633, + "__docId__": 1624, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js~TouchPickHandler", @@ -31673,7 +31591,7 @@ "return": null }, { - "__docId__": 1634, + "__docId__": 1625, "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} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildTorusGeometry} from \"../src/scene/geometry/builders/buildTorusGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.js\";\n * import {Fresnel} from \"../src/scene/materials/Fresnel.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 this._renderer = this.scene._renderer;\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 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 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 * 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", @@ -31684,7 +31602,7 @@ "lineNumber": 1 }, { - "__docId__": 1635, + "__docId__": 1626, "kind": "class", "name": "Component", "memberof": "src/viewer/scene/Component.js", @@ -31699,7 +31617,7 @@ "interface": false }, { - "__docId__": 1636, + "__docId__": 1627, "kind": "get", "name": "type", "memberof": "src/viewer/scene/Component.js~Component", @@ -31718,7 +31636,7 @@ } }, { - "__docId__": 1637, + "__docId__": 1628, "kind": "get", "name": "isComponent", "memberof": "src/viewer/scene/Component.js~Component", @@ -31737,7 +31655,7 @@ } }, { - "__docId__": 1638, + "__docId__": 1629, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/Component.js~Component", @@ -31751,7 +31669,7 @@ "undocument": true }, { - "__docId__": 1639, + "__docId__": 1630, "kind": "member", "name": "scene", "memberof": "src/viewer/scene/Component.js~Component", @@ -31788,7 +31706,7 @@ } }, { - "__docId__": 1641, + "__docId__": 1632, "kind": "member", "name": "viewer", "memberof": "src/viewer/scene/Component.js~Component", @@ -31819,7 +31737,7 @@ } }, { - "__docId__": 1644, + "__docId__": 1635, "kind": "member", "name": "_owner", "memberof": "src/viewer/scene/Component.js~Component", @@ -31837,7 +31755,7 @@ } }, { - "__docId__": 1645, + "__docId__": 1636, "kind": "member", "name": "_renderer", "memberof": "src/viewer/scene/Component.js~Component", @@ -31855,7 +31773,7 @@ } }, { - "__docId__": 1646, + "__docId__": 1637, "kind": "member", "name": "_dontClear", "memberof": "src/viewer/scene/Component.js~Component", @@ -31873,7 +31791,7 @@ } }, { - "__docId__": 1648, + "__docId__": 1639, "kind": "member", "name": "meta", "memberof": "src/viewer/scene/Component.js~Component", @@ -31904,7 +31822,7 @@ } }, { - "__docId__": 1649, + "__docId__": 1640, "kind": "member", "name": "id", "memberof": "src/viewer/scene/Component.js~Component", @@ -31936,7 +31854,7 @@ } }, { - "__docId__": 1650, + "__docId__": 1641, "kind": "member", "name": "destroyed", "memberof": "src/viewer/scene/Component.js~Component", @@ -31967,7 +31885,7 @@ } }, { - "__docId__": 1651, + "__docId__": 1642, "kind": "member", "name": "_attached", "memberof": "src/viewer/scene/Component.js~Component", @@ -31985,7 +31903,7 @@ } }, { - "__docId__": 1652, + "__docId__": 1643, "kind": "member", "name": "_attachments", "memberof": "src/viewer/scene/Component.js~Component", @@ -32003,7 +31921,7 @@ } }, { - "__docId__": 1653, + "__docId__": 1644, "kind": "member", "name": "_subIdMap", "memberof": "src/viewer/scene/Component.js~Component", @@ -32021,7 +31939,7 @@ } }, { - "__docId__": 1654, + "__docId__": 1645, "kind": "member", "name": "_subIdEvents", "memberof": "src/viewer/scene/Component.js~Component", @@ -32039,7 +31957,7 @@ } }, { - "__docId__": 1655, + "__docId__": 1646, "kind": "member", "name": "_eventSubs", "memberof": "src/viewer/scene/Component.js~Component", @@ -32057,7 +31975,7 @@ } }, { - "__docId__": 1656, + "__docId__": 1647, "kind": "member", "name": "_eventSubsNum", "memberof": "src/viewer/scene/Component.js~Component", @@ -32075,7 +31993,7 @@ } }, { - "__docId__": 1657, + "__docId__": 1648, "kind": "member", "name": "_events", "memberof": "src/viewer/scene/Component.js~Component", @@ -32093,7 +32011,7 @@ } }, { - "__docId__": 1658, + "__docId__": 1649, "kind": "member", "name": "_eventCallDepth", "memberof": "src/viewer/scene/Component.js~Component", @@ -32111,7 +32029,7 @@ } }, { - "__docId__": 1659, + "__docId__": 1650, "kind": "member", "name": "_ownedComponents", "memberof": "src/viewer/scene/Component.js~Component", @@ -32129,7 +32047,7 @@ } }, { - "__docId__": 1660, + "__docId__": 1651, "kind": "member", "name": "_updateScheduled", "memberof": "src/viewer/scene/Component.js~Component", @@ -32147,7 +32065,7 @@ } }, { - "__docId__": 1661, + "__docId__": 1652, "kind": "method", "name": "glRedraw", "memberof": "src/viewer/scene/Component.js~Component", @@ -32163,7 +32081,7 @@ "return": null }, { - "__docId__": 1662, + "__docId__": 1653, "kind": "method", "name": "glResort", "memberof": "src/viewer/scene/Component.js~Component", @@ -32179,7 +32097,7 @@ "return": null }, { - "__docId__": 1663, + "__docId__": 1654, "kind": "get", "name": "owner", "memberof": "src/viewer/scene/Component.js~Component", @@ -32212,7 +32130,7 @@ } }, { - "__docId__": 1664, + "__docId__": 1655, "kind": "method", "name": "isType", "memberof": "src/viewer/scene/Component.js~Component", @@ -32246,7 +32164,7 @@ } }, { - "__docId__": 1665, + "__docId__": 1656, "kind": "method", "name": "fire", "memberof": "src/viewer/scene/Component.js~Component", @@ -32294,7 +32212,7 @@ "return": null }, { - "__docId__": 1669, + "__docId__": 1660, "kind": "method", "name": "on", "memberof": "src/viewer/scene/Component.js~Component", @@ -32349,7 +32267,7 @@ } }, { - "__docId__": 1675, + "__docId__": 1666, "kind": "method", "name": "off", "memberof": "src/viewer/scene/Component.js~Component", @@ -32375,7 +32293,7 @@ "return": null }, { - "__docId__": 1676, + "__docId__": 1667, "kind": "method", "name": "once", "memberof": "src/viewer/scene/Component.js~Component", @@ -32423,7 +32341,7 @@ "return": null }, { - "__docId__": 1677, + "__docId__": 1668, "kind": "method", "name": "hasSubs", "memberof": "src/viewer/scene/Component.js~Component", @@ -32456,7 +32374,7 @@ } }, { - "__docId__": 1678, + "__docId__": 1669, "kind": "method", "name": "log", "memberof": "src/viewer/scene/Component.js~Component", @@ -32482,7 +32400,7 @@ "return": null }, { - "__docId__": 1679, + "__docId__": 1670, "kind": "method", "name": "_message", "memberof": "src/viewer/scene/Component.js~Component", @@ -32510,7 +32428,7 @@ } }, { - "__docId__": 1680, + "__docId__": 1671, "kind": "method", "name": "warn", "memberof": "src/viewer/scene/Component.js~Component", @@ -32536,7 +32454,7 @@ "return": null }, { - "__docId__": 1681, + "__docId__": 1672, "kind": "method", "name": "error", "memberof": "src/viewer/scene/Component.js~Component", @@ -32562,7 +32480,7 @@ "return": null }, { - "__docId__": 1682, + "__docId__": 1673, "kind": "method", "name": "_attach", "memberof": "src/viewer/scene/Component.js~Component", @@ -32729,7 +32647,7 @@ } }, { - "__docId__": 1684, + "__docId__": 1675, "kind": "method", "name": "_checkComponent", "memberof": "src/viewer/scene/Component.js~Component", @@ -32763,7 +32681,7 @@ } }, { - "__docId__": 1685, + "__docId__": 1676, "kind": "method", "name": "_checkComponent2", "memberof": "src/viewer/scene/Component.js~Component", @@ -32797,7 +32715,7 @@ } }, { - "__docId__": 1686, + "__docId__": 1677, "kind": "method", "name": "_own", "memberof": "src/viewer/scene/Component.js~Component", @@ -32821,7 +32739,7 @@ "return": null }, { - "__docId__": 1688, + "__docId__": 1679, "kind": "method", "name": "_needUpdate", "memberof": "src/viewer/scene/Component.js~Component", @@ -32850,7 +32768,7 @@ "return": null }, { - "__docId__": 1690, + "__docId__": 1681, "kind": "method", "name": "_doUpdate", "memberof": "src/viewer/scene/Component.js~Component", @@ -32866,7 +32784,7 @@ "return": null }, { - "__docId__": 1692, + "__docId__": 1683, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/Component.js~Component", @@ -32882,7 +32800,7 @@ "return": null }, { - "__docId__": 1693, + "__docId__": 1684, "kind": "method", "name": "clear", "memberof": "src/viewer/scene/Component.js~Component", @@ -32897,7 +32815,7 @@ "return": null }, { - "__docId__": 1694, + "__docId__": 1685, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/Component.js~Component", @@ -32912,7 +32830,7 @@ "return": null }, { - "__docId__": 1704, + "__docId__": 1695, "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 * 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 * Destroys this Entity.\n */\n destroy() {\n\n }\n}\n\nexport {Entity};", @@ -32923,7 +32841,7 @@ "lineNumber": 1 }, { - "__docId__": 1705, + "__docId__": 1696, "kind": "class", "name": "Entity", "memberof": "src/viewer/scene/Entity.js", @@ -32939,7 +32857,7 @@ "interface": true }, { - "__docId__": 1706, + "__docId__": 1697, "kind": "get", "name": "id", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -32962,7 +32880,7 @@ "abstract": true }, { - "__docId__": 1707, + "__docId__": 1698, "kind": "get", "name": "originalSystemId", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -32984,7 +32902,7 @@ "abstract": true }, { - "__docId__": 1708, + "__docId__": 1699, "kind": "get", "name": "isEntity", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33016,7 +32934,7 @@ } }, { - "__docId__": 1709, + "__docId__": 1700, "kind": "get", "name": "isModel", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33038,7 +32956,7 @@ "abstract": true }, { - "__docId__": 1710, + "__docId__": 1701, "kind": "get", "name": "isObject", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33060,7 +32978,7 @@ "abstract": true }, { - "__docId__": 1711, + "__docId__": 1702, "kind": "get", "name": "parent", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33074,7 +32992,7 @@ "type": null }, { - "__docId__": 1712, + "__docId__": 1703, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33096,7 +33014,7 @@ "abstract": true }, { - "__docId__": 1713, + "__docId__": 1704, "kind": "get", "name": "numTriangles", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33118,7 +33036,7 @@ "abstract": true }, { - "__docId__": 1714, + "__docId__": 1705, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33140,7 +33058,7 @@ "abstract": true }, { - "__docId__": 1715, + "__docId__": 1706, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33162,7 +33080,7 @@ "abstract": true }, { - "__docId__": 1716, + "__docId__": 1707, "kind": "set", "name": "xrayed", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33184,7 +33102,7 @@ "abstract": true }, { - "__docId__": 1717, + "__docId__": 1708, "kind": "get", "name": "xrayed", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33206,7 +33124,7 @@ "abstract": true }, { - "__docId__": 1718, + "__docId__": 1709, "kind": "set", "name": "highlighted", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33228,7 +33146,7 @@ "abstract": true }, { - "__docId__": 1719, + "__docId__": 1710, "kind": "get", "name": "highlighted", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33250,7 +33168,7 @@ "abstract": true }, { - "__docId__": 1720, + "__docId__": 1711, "kind": "set", "name": "selected", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33272,7 +33190,7 @@ "abstract": true }, { - "__docId__": 1721, + "__docId__": 1712, "kind": "get", "name": "selected", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33294,7 +33212,7 @@ "abstract": true }, { - "__docId__": 1722, + "__docId__": 1713, "kind": "set", "name": "edges", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33316,7 +33234,7 @@ "abstract": true }, { - "__docId__": 1723, + "__docId__": 1714, "kind": "get", "name": "edges", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33338,7 +33256,7 @@ "abstract": true }, { - "__docId__": 1724, + "__docId__": 1715, "kind": "set", "name": "culled", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33360,7 +33278,7 @@ "abstract": true }, { - "__docId__": 1725, + "__docId__": 1716, "kind": "get", "name": "culled", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33382,7 +33300,7 @@ "abstract": true }, { - "__docId__": 1726, + "__docId__": 1717, "kind": "set", "name": "clippable", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33404,7 +33322,7 @@ "abstract": true }, { - "__docId__": 1727, + "__docId__": 1718, "kind": "get", "name": "clippable", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33426,7 +33344,7 @@ "abstract": true }, { - "__docId__": 1728, + "__docId__": 1719, "kind": "set", "name": "collidable", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33448,7 +33366,7 @@ "abstract": true }, { - "__docId__": 1729, + "__docId__": 1720, "kind": "get", "name": "collidable", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33470,7 +33388,7 @@ "abstract": true }, { - "__docId__": 1730, + "__docId__": 1721, "kind": "set", "name": "pickable", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33492,7 +33410,7 @@ "abstract": true }, { - "__docId__": 1731, + "__docId__": 1722, "kind": "get", "name": "pickable", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33514,7 +33432,7 @@ "abstract": true }, { - "__docId__": 1732, + "__docId__": 1723, "kind": "set", "name": "colorize", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33536,7 +33454,7 @@ "abstract": true }, { - "__docId__": 1733, + "__docId__": 1724, "kind": "get", "name": "colorize", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33558,7 +33476,7 @@ "abstract": true }, { - "__docId__": 1734, + "__docId__": 1725, "kind": "set", "name": "opacity", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33580,7 +33498,7 @@ "abstract": true }, { - "__docId__": 1735, + "__docId__": 1726, "kind": "get", "name": "opacity", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33602,7 +33520,7 @@ "abstract": true }, { - "__docId__": 1736, + "__docId__": 1727, "kind": "set", "name": "castsShadow", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33624,7 +33542,7 @@ "abstract": true }, { - "__docId__": 1737, + "__docId__": 1728, "kind": "get", "name": "castsShadow", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33646,7 +33564,7 @@ "abstract": true }, { - "__docId__": 1738, + "__docId__": 1729, "kind": "set", "name": "receivesShadow", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33668,7 +33586,7 @@ "abstract": true }, { - "__docId__": 1739, + "__docId__": 1730, "kind": "get", "name": "receivesShadow", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33690,7 +33608,7 @@ "abstract": true }, { - "__docId__": 1740, + "__docId__": 1731, "kind": "get", "name": "saoEnabled", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33712,7 +33630,7 @@ "abstract": true }, { - "__docId__": 1741, + "__docId__": 1732, "kind": "set", "name": "offset", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33734,7 +33652,7 @@ "abstract": true }, { - "__docId__": 1742, + "__docId__": 1733, "kind": "get", "name": "offset", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33756,7 +33674,7 @@ "abstract": true }, { - "__docId__": 1743, + "__docId__": 1734, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/Entity.js~Entity", @@ -33771,7 +33689,7 @@ "return": null }, { - "__docId__": 1744, + "__docId__": 1735, "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 * [](http://xeokit.github.io/xeokit-sdk/examples/#ImagePlane_groundPlane)\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#ImagePlane_groundPlane)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {ImagePlane} from \"../src/viewer/scene/ImagePlane/ImagePlane.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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/schependomlaan.xkt\",\n * metaModelSrc: \"./metaModels/schependomlaan/metaModel.json\",\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 * [](http://xeokit.github.io/xeokit-sdk/examples/#ImagePlane_imageInSectionPlane)\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#ImagePlane_imageInSectionPlane)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n * import {SectionPlanesPlugin} from \"../src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js\";\n * import {ImagePlane} from \"../src/viewer/scene/ImagePlane/ImagePlane.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._rtcCenter = 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._rtcCenter, this._rtcPos);\n this._node.rtcCenter = this._rtcCenter;\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 this._state.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 const aspect = height / width;\n if (width > height) {\n this._node.scale = [size, 1.0, size * aspect];\n } else {\n this._node.scale = [size * aspect, 1.0, size];\n }\n }\n}\n\nexport {ImagePlane};\n", @@ -33782,7 +33700,7 @@ "lineNumber": 1 }, { - "__docId__": 1745, + "__docId__": 1736, "kind": "variable", "name": "tempVec3", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js", @@ -33803,7 +33721,7 @@ "ignore": true }, { - "__docId__": 1746, + "__docId__": 1737, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js", @@ -33824,7 +33742,7 @@ "ignore": true }, { - "__docId__": 1747, + "__docId__": 1738, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js", @@ -33845,7 +33763,7 @@ "ignore": true }, { - "__docId__": 1748, + "__docId__": 1739, "kind": "variable", "name": "zeroVec", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js", @@ -33866,7 +33784,7 @@ "ignore": true }, { - "__docId__": 1749, + "__docId__": 1740, "kind": "variable", "name": "tempQuat", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js", @@ -33887,7 +33805,7 @@ "ignore": true }, { - "__docId__": 1750, + "__docId__": 1741, "kind": "class", "name": "ImagePlane", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js", @@ -33905,7 +33823,7 @@ ] }, { - "__docId__": 1751, + "__docId__": 1742, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34121,7 +34039,7 @@ ] }, { - "__docId__": 1752, + "__docId__": 1743, "kind": "member", "name": "_src", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34139,7 +34057,7 @@ } }, { - "__docId__": 1753, + "__docId__": 1744, "kind": "member", "name": "_image", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34157,7 +34075,7 @@ } }, { - "__docId__": 1754, + "__docId__": 1745, "kind": "member", "name": "_pos", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34175,7 +34093,7 @@ } }, { - "__docId__": 1755, + "__docId__": 1746, "kind": "member", "name": "_rtcCenter", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34193,7 +34111,7 @@ } }, { - "__docId__": 1756, + "__docId__": 1747, "kind": "member", "name": "_rtcPos", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34211,7 +34129,7 @@ } }, { - "__docId__": 1757, + "__docId__": 1748, "kind": "member", "name": "_dir", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34229,7 +34147,7 @@ } }, { - "__docId__": 1758, + "__docId__": 1749, "kind": "member", "name": "_size", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34247,7 +34165,7 @@ } }, { - "__docId__": 1759, + "__docId__": 1750, "kind": "member", "name": "_imageSize", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34265,7 +34183,7 @@ } }, { - "__docId__": 1760, + "__docId__": 1751, "kind": "member", "name": "_texture", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34283,7 +34201,7 @@ } }, { - "__docId__": 1761, + "__docId__": 1752, "kind": "member", "name": "_plane", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34301,7 +34219,7 @@ } }, { - "__docId__": 1762, + "__docId__": 1753, "kind": "member", "name": "_grid", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34319,7 +34237,7 @@ } }, { - "__docId__": 1763, + "__docId__": 1754, "kind": "member", "name": "_node", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34337,7 +34255,7 @@ } }, { - "__docId__": 1764, + "__docId__": 1755, "kind": "member", "name": "_gridVisible", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34355,7 +34273,7 @@ } }, { - "__docId__": 1777, + "__docId__": 1768, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34380,7 +34298,7 @@ ] }, { - "__docId__": 1778, + "__docId__": 1769, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34412,7 +34330,7 @@ } }, { - "__docId__": 1779, + "__docId__": 1770, "kind": "set", "name": "gridVisible", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34437,7 +34355,7 @@ ] }, { - "__docId__": 1781, + "__docId__": 1772, "kind": "get", "name": "gridVisible", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34469,7 +34387,7 @@ } }, { - "__docId__": 1782, + "__docId__": 1773, "kind": "set", "name": "image", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34490,7 +34408,7 @@ } }, { - "__docId__": 1785, + "__docId__": 1776, "kind": "get", "name": "image", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34511,7 +34429,7 @@ } }, { - "__docId__": 1786, + "__docId__": 1777, "kind": "set", "name": "src", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34532,7 +34450,7 @@ } }, { - "__docId__": 1789, + "__docId__": 1780, "kind": "get", "name": "src", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34553,7 +34471,7 @@ } }, { - "__docId__": 1790, + "__docId__": 1781, "kind": "set", "name": "position", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34578,7 +34496,7 @@ ] }, { - "__docId__": 1791, + "__docId__": 1782, "kind": "get", "name": "position", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34610,7 +34528,7 @@ } }, { - "__docId__": 1792, + "__docId__": 1783, "kind": "set", "name": "rotation", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34635,7 +34553,7 @@ ] }, { - "__docId__": 1793, + "__docId__": 1784, "kind": "get", "name": "rotation", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34667,7 +34585,7 @@ } }, { - "__docId__": 1794, + "__docId__": 1785, "kind": "set", "name": "size", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34692,7 +34610,7 @@ ] }, { - "__docId__": 1796, + "__docId__": 1787, "kind": "get", "name": "size", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34710,7 +34628,7 @@ } }, { - "__docId__": 1797, + "__docId__": 1788, "kind": "set", "name": "dir", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34735,7 +34653,7 @@ ] }, { - "__docId__": 1798, + "__docId__": 1789, "kind": "get", "name": "dir", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34767,7 +34685,7 @@ } }, { - "__docId__": 1799, + "__docId__": 1790, "kind": "set", "name": "collidable", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34788,7 +34706,7 @@ } }, { - "__docId__": 1800, + "__docId__": 1791, "kind": "get", "name": "collidable", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34809,7 +34727,7 @@ } }, { - "__docId__": 1801, + "__docId__": 1792, "kind": "set", "name": "clippable", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34830,7 +34748,7 @@ } }, { - "__docId__": 1802, + "__docId__": 1793, "kind": "get", "name": "clippable", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34851,7 +34769,7 @@ } }, { - "__docId__": 1803, + "__docId__": 1794, "kind": "set", "name": "pickable", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34872,7 +34790,7 @@ } }, { - "__docId__": 1804, + "__docId__": 1795, "kind": "get", "name": "pickable", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34893,7 +34811,7 @@ } }, { - "__docId__": 1805, + "__docId__": 1796, "kind": "set", "name": "opacity", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34914,7 +34832,7 @@ } }, { - "__docId__": 1806, + "__docId__": 1797, "kind": "get", "name": "opacity", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34935,7 +34853,7 @@ } }, { - "__docId__": 1807, + "__docId__": 1798, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34956,7 +34874,7 @@ "return": null }, { - "__docId__": 1808, + "__docId__": 1799, "kind": "method", "name": "_updatePlaneSizeFromImage", "memberof": "src/viewer/scene/ImagePlane/ImagePlane.js~ImagePlane", @@ -34973,7 +34891,7 @@ "return": null }, { - "__docId__": 1809, + "__docId__": 1800, "kind": "file", "name": "src/viewer/scene/PerformanceModel/PerformanceModel.js", "content": "import {Component} from \"../Component.js\";\nimport {math} from \"../math/math.js\";\nimport {buildEdgeIndices} from '../math/buildEdgeIndices.js';\nimport {WEBGL_INFO} from '../webglInfo.js';\nimport {PerformanceMesh} from './lib/PerformanceMesh.js';\nimport {PerformanceNode} from './lib/PerformanceNode.js';\nimport {getScratchMemory, putScratchMemory} from \"./lib/ScratchMemory.js\";\nimport {TrianglesBatchingLayer} from './lib/layers/trianglesBatching/TrianglesBatchingLayer.js';\nimport {TrianglesInstancingLayer} from './lib/layers/trianglesInstancing/TrianglesInstancingLayer.js';\nimport {LinesBatchingLayer} from './lib/layers/linesBatching/LinesBatchingLayer.js';\nimport {LinesInstancingLayer} from './lib/layers/linesInstancing/LinesInstancingLayer.js';\n\nimport {PointsBatchingLayer} from './lib/layers/pointsBatching/PointsBatchingLayer.js';\nimport {PointsInstancingLayer} from './lib/layers/pointsInstancing/PointsInstancingLayer.js';\n\n\nimport {ENTITY_FLAGS} from './lib/ENTITY_FLAGS.js';\nimport {utils} from \"../utils.js\";\nimport {RenderFlags} from \"../webgl/RenderFlags.js\";\n\nconst instancedArraysSupported = WEBGL_INFO.SUPPORTED_EXTENSIONS[\"ANGLE_instanced_arrays\"];\n\nconst tempMat4 = math.mat4();\n\nconst defaultScale = math.vec3([1, 1, 1]);\nconst defaultPosition = math.vec3([0, 0, 0]);\nconst defaultRotation = math.vec3([0, 0, 0]);\nconst defaultQuaternion = math.identityQuaternion();\n\n/**\n * @desc A high-performance model representation for efficient rendering and low memory usage.\n *\n * # Examples\n *\n * * [PerformanceModel using geometry batching](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_batching)\n * * [PerformanceModel using geometry batching and RTC coordinates](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_batching_rtcCenter)\n * * [PerformanceModel using geometry instancing](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_instancing)\n * * [PerformanceModel using geometry instancing and RTC coordinates](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_instancing_rtcCenter)\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 ````PerformanceModel```` representation, which is optimized to pack large amounts of geometry into memory and render it efficiently using WebGL.\n *\n * ````PerformanceModel```` is the default model representation loaded by {@link GLTFLoaderPlugin}, {@link XKTLoaderPlugin} and {@link BIMServerLoaderPlugin}.\n *\n * In this tutorial you'll learn how to use ````PerformanceModel```` to create high-detail content programmatically. Ordinarily you'd be learning about ````PerformanceModel```` if you were writing your own model loader plugins.\n *\n * # Contents\n *\n * - [PerformanceModel](#performancemodel)\n * - [GPU-Resident Geometry](#gpu-resident-geometry)\n * - [Picking](#picking)\n * - [Example 1: Geometry Instancing](#example-1--geometry-instancing)\n * - [Finalizing a PerformanceModel](#finalizing-a-performancemodel)\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)\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 * ## PerformanceModel\n *\n * ````PerformanceModel```` 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, ````PerformanceModel```` uses simple Lambertian shading without textures.\n * * Static transforms - transforms within a ````PerformanceModel```` 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, ````PerformanceModel```` is immutable,\n * since it packs its geometries into buffers and instanced arrays.\n *\n * ````PerformanceModel````'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 ````PerformanceModel```` is an {@link Entity} that represents a model.\n * * A ````PerformanceModel```` 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, ````PerformanceModel```` 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 ````PerformanceModel````\n * to build a simple table model using geometry instancing.\n *\n * We'll start by adding a reusable box-shaped geometry to our ````PerformanceModel````.\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/#sceneRepresentation_PerformanceModel_instancing)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_instancing)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {PerformanceModel} from \"../src/viewer/scene/PerformanceModels/PerformanceModel.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 PerformanceModel representing a table\n * // with four legs, using geometry instancing\n *\n * const performanceModel = new PerformanceModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers PerformanceModel 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 PerformanceModel\n * // We'll instance this geometry by five meshes\n *\n * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n * ````\n *\n * ## Finalizing a PerformanceModel\n *\n * Before we can view and interact with our ````PerformanceModel````, we need to **finalize** it. Internally, this causes the ````PerformanceModel```` to build the\n * vertex buffer objects (VBOs) that support our geometry instances. When using geometry batching (see next example),\n * this causes ````PerformanceModel```` to build the VBOs that combine the batched geometries. Note that you can do both instancing and\n * batching within the same ````PerformanceModel````.\n *\n * Once finalized, we can't add anything more to our ````PerformanceModel````.\n *\n * ```` javascript\n * performanceModel.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 ````PerformanceModel```` 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 ````PerformanceModel````\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/#sceneRepresentation_PerformanceModel_batching)\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_batching)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {PerformanceModel} from \"../src/viewer/scene/PerformanceModel/PerformanceModel.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 PerformanceModel representing a table with four legs, using geometry batching\n * const performanceModel = new PerformanceModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers PerformanceModel 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 * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.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 * performanceModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Finalize the PerformanceModel.\n *\n * performanceModel.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 ````PerformanceModel```` 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/#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 ````PerformanceModel````, 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 64-Bit Precision\n *\n * ````PerformanceModel```` 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 ````PerformanceModel```` geometry instancing, we specify an RTC center for the geometry. Then ````PerformanceModel```` 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 ````rtcCenter````.\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/#sceneRepresentation_PerformanceModel_batching)\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_instancing_rtcCenter)]\n *\n * ````javascript\n * const rtcCenter = [100000000, 0, 100000000];\n *\n * performanceModel.createGeometry({\n * id: \"box\",\n * rtcCenter: rtcCenter, // This geometry's positions, and the transforms of all meshes that instance the geometry, 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 * });\n *\n * performanceModel.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 * performanceModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * performanceModel.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 * performanceModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * performanceModel.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 * performanceModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * performanceModel.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 * performanceModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * performanceModel.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 * performanceModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## RTC Coordinates with Geometry Batching\n *\n * To use RTC with ````PerformanceModel```` geometry batching, we specify an RTC center (````rtcCenter````) for each mesh. For performance, we try to have as many meshes share the same value for ````rtcCenter```` as possible. Each mesh's ````positions````, ````position```` and ````rotation```` properties are assumed to be relative to ````rtcCenter````.\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/#sceneRepresentation_PerformanceModel_batching)\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_batching_rtcCenter)]\n *\n * ````javascript\n * const rtcCenter = [100000000, 0, 100000000];\n *\n * performanceModel.createMesh({\n * id: \"leg1\",\n * rtcCenter: rtcCenter, // 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 * performanceModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * performanceModel.createMesh({\n * id: \"leg2\",\n * rtcCenter: rtcCenter, // 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 * performanceModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * performanceModel.createMesh({\n * id: \"leg3\",\n * rtcCenter: rtcCenter, // 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 * performanceModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * performanceModel.createMesh({\n * id: \"leg4\",\n * rtcCenter: rtcCenter, // 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 * performanceModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * performanceModel.createMesh({\n * id: \"top\",\n * rtcCenter: rtcCenter, // 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 * performanceModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n ````\n *\n * @implements {Drawable}\n * @implements {Entity}\n */\nclass PerformanceModel 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 PerformanceModel represents a model, in which case the PerformanceModel will be registered by {@link PerformanceModel#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.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 {Boolean} [cfg.visible=true] Indicates if the PerformanceModel is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the PerformanceModel is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the PerformanceModel is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the PerformanceModel is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the PerformanceModel is initially included in boundary calculations.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the PerformanceModel is initially xrayed.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the PerformanceModel is initially highlighted.\n * @param {Boolean} [cfg.selected=false] Indicates if the PerformanceModel is initially selected.\n * @param {Boolean} [cfg.edges=false] Indicates if the PerformanceModel's edges are initially emphasized.\n * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] PerformanceModel's initial RGB colorize color, multiplies by the rendered fragment colors.\n * @param {Number} [cfg.opacity=1.0] PerformanceModel'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 PerformanceModel. 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 PerformanceModel. SAO is configured by the Scene's {@link SAO} component.\n * @param {Boolean} [cfg.pbrEnabled=false] Indicates if physically-based rendering (PBR) will apply to the PerformanceModel. Only works when {@link Scene#pbrEnabled} is also ````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 PerformanceModel 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 */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._maxGeometryBatchSize = cfg.maxGeometryBatchSize;\n\n this._aabb = math.collapseAABB3();\n this._aabbDirty = false;\n this._layerList = []; // For GL state efficiency when drawing, InstancingLayers are in first part, BatchingLayers are in second\n this._nodeList = [];\n\n this._lastRTCCenter = null;\n this._lastDecodeMatrix = null;\n\n this._instancingLayers = {};\n this._currentBatchingLayers = {};\n\n this._scratchMemory = getScratchMemory();\n\n this._meshes = {};\n this._nodes = {};\n\n /** @private **/\n this.renderFlags = new RenderFlags();\n\n /**\n * @private\n */\n this.numGeometries = 0; // Number of instance-able 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 * @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 /** @private */\n this.numEntities = 0;\n\n /** @private */\n this._numTriangles = 0;\n\n /** @private */\n this._numLines = 0;\n\n /** @private */\n this._numPoints = 0;\n\n this._edgeThreshold = cfg.edgeThreshold || 10;\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 // Build static matrix\n\n this._position = new Float32Array(cfg.position || [0, 0, 0]);\n this._rotation = new Float32Array(cfg.rotation || [0, 0, 0]);\n this._quaternion = new Float32Array(cfg.quaternion || [0, 0, 0, 1]);\n if (cfg.rotation) {\n math.eulerToQuaternion(this._rotation, \"XYZ\", this._quaternion);\n }\n this._scale = new Float32Array(cfg.scale || [1, 1, 1]);\n this._worldMatrix = math.mat4();\n math.composeMat4(this._position, this._quaternion, this._scale, this._worldMatrix);\n this._worldNormalMatrix = math.mat4();\n math.inverseMat4(this._worldMatrix, 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._worldMatrixNonIdentity = true;\n }\n\n this._opacity = 1.0;\n this._colorize = [1, 1, 1];\n\n this._saoEnabled = (cfg.saoEnabled !== false);\n\n this._pbrEnabled = (!!cfg.pbrEnabled);\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\n //------------------------------------------------------------------------------------------------------------------\n // PerformanceModel members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that this Component is a PerformanceModel.\n * @type {Boolean}\n */\n get isPerformanceModel() {\n return true;\n }\n\n /**\n * Gets the PerformanceModel'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 * Gets the PerformanceModel'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 * Gets the PerformanceModels'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 * Gets the PerformanceModel'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 * Gets the PerformanceModel'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 return this._worldMatrix;\n }\n\n /**\n * Gets the PerformanceModel's World matrix.\n *\n * @property worldMatrix\n * @type {Number[]}\n */\n get worldMatrix() {\n return this._worldMatrix;\n }\n\n /**\n * Gets the PerformanceModel'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 PerformanceModel. 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._viewMatrixDirty) {\n math.mulMat4(this.scene.camera.viewMatrix, this._worldMatrix, 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 picking view matrix with which to\n * ray-pick on this PerformanceModel.\n *\n * @private\n */\n getPickViewMatrix(pickViewMatrix) {\n if (!this._viewMatrix) {\n return pickViewMatrix;\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 PerformanceModel.\n *\n * @private\n */\n get viewNormalMatrix() {\n if (!this._viewNormalMatrix) {\n return this.scene.camera.viewNormalMatrix;\n }\n if (this._viewMatrixDirty) {\n math.mulMat4(this.scene.camera.viewMatrix, this._worldMatrix, this._viewMatrix);\n math.inverseMat4(this._viewMatrix, this._viewNormalMatrix);\n math.transposeMat4(this._viewNormalMatrix);\n this._viewMatrixDirty = false;\n }\n return this._viewNormalMatrix;\n }\n\n /**\n * Creates a reusable geometry within this PerformanceModel.\n *\n * We can then supply the geometry ID to {@link PerformanceModel#createMesh} when we want to create meshes that instance the geometry.\n *\n * If provide a ````positionsDecodeMatrix```` , then ````createGeometry()```` will assume\n * that the ````positions```` and ````normals```` arrays are compressed. When compressed, ````positions```` will be\n * quantized and in World-space, and ````normals```` will be oct-encoded and in World-space.\n *\n * Note that ````positions````, ````normals```` and ````indices```` are all required together.\n *\n * @param {*} cfg Geometry properties.\n * @param {String|Number} cfg.id Mandatory ID for the geometry, to refer to with {@link PerformanceModel#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 positions.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Required for 'triangles' primitives.\n * @param {Number[]} [cfg.indices] Array of indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only for Required for 'triangles' primitives. These are automatically generated internally if not supplied, using the ````edgeThreshold```` given to the ````PerformanceModel```` constructor.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positions````.\n * @param {Number[]} [cfg.rtcCenter] Relative-to-center (RTC) coordinate system center. When this is given, then ````positions```` are assumed to be relative to this center.\n */\n createGeometry(cfg) {\n if (!instancedArraysSupported) {\n this.error(\"WebGL instanced arrays not supported\"); // TODO: Gracefully use batching?\n return;\n }\n const geometryId = cfg.id;\n if (geometryId === undefined || geometryId === null) {\n this.error(\"Config missing: id\");\n return;\n }\n if (this._instancingLayers[geometryId]) {\n this.error(\"Geometry already created: \" + geometryId);\n return;\n }\n let instancingLayer;\n const primitive = cfg.primitive;\n if (primitive === undefined || primitive === null) {\n this.error(\"Config missing: primitive\");\n return;\n }\n switch (primitive) {\n case \"triangles\":\n instancingLayer = new TrianglesInstancingLayer(this, utils.apply({\n layerIndex: 0,\n solid: true\n }, cfg));\n this._numTriangles += (cfg.indices ? Math.round(cfg.indices.length / 3) : 0);\n break;\n case \"solid\":\n instancingLayer = new TrianglesInstancingLayer(this, utils.apply({\n layerIndex: 0,\n solid: true\n }, cfg));\n this._numTriangles += (cfg.indices ? Math.round(cfg.indices.length / 3) : 0);\n break;\n case \"surface\":\n instancingLayer = new TrianglesInstancingLayer(this, utils.apply({\n layerIndex: 0,\n solid: false\n }, cfg));\n this._numTriangles += (cfg.indices ? Math.round(cfg.indices.length / 3) : 0);\n break;\n case \"lines\":\n instancingLayer = new LinesInstancingLayer(this, utils.apply({\n layerIndex: 0\n }, cfg));\n this._numLines += (cfg.indices ? Math.round(cfg.indices.length / 2) : 0);\n break;\n case \"points\":\n instancingLayer = new PointsInstancingLayer(this, utils.apply({\n layerIndex: 0\n }, cfg));\n this._numPoints += (cfg.positions ? Math.round(cfg.positions.length / 3) : 0);\n break;\n }\n this._instancingLayers[geometryId] = instancingLayer;\n this._layerList.push(instancingLayer);\n this.numGeometries++;\n }\n\n /**\n * Creates a mesh within this PerformanceModel.\n *\n * A mesh can either share geometry with other meshes, or have its own unique geometry.\n *\n * To share a geometry with other meshes, provide the ID of a geometry created earlier\n * with {@link PerformanceModel#createGeometry}.\n *\n * To create unique geometry for the mesh, provide geometry data arrays.\n *\n * Internally, PerformanceModel will batch all unique mesh geometries into the same arrays, which improves\n * rendering performance.\n *\n * If you accompany the arrays with a ````positionsDecodeMatrix```` , then ````createMesh()```` will assume\n * that the ````positions```` and ````normals```` arrays are compressed. When compressed, ````positions```` will be\n * quantized and in World-space, and ````normals```` will be oct-encoded and in World-space.\n *\n * If you accompany the arrays with an ````rtcCenter````, then ````createMesh()```` will assume\n * that the ````positions```` are in relative-to-center (RTC) coordinates, with ````rtcCenter```` being the origin of their\n * RTC coordinate system.\n *\n * When providing either ````positionsDecodeMatrix```` or ````rtcCenter````, ````createMesh()```` will start a new\n * batch each time either of those two parameters change since the last call. Therefore, to combine arrays into the\n * minimum number of batches, it's best for performance to create your shared meshes in runs that have the same value\n * for ````positionsDecodeMatrix```` and ````rtcCenter````.\n *\n * Note that ````positions````, ````normals```` and ````indices```` are all required together.\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.geometryId] ID of a geometry to instance, previously created with {@link PerformanceModel#createGeometry:method\"}}createMesh(){{/crossLink}}. Overrides all other geometry parameters given to this method.\n * @param {String} [cfg.primitive=\"triangles\"] Geometry primitive type. Ignored when ````geometryId```` is given. Accepted values are 'points', 'lines' and 'triangles'.\n * @param {Number[]} [cfg.positions] Flat array of vertex positions. Ignored when ````geometryId```` is given.\n * @param {Number[]} [cfg.colors] Flat array of vertex colors. Ignored when ````geometryId```` is given, overriden by ````color````.\n * @param {Number[]} [cfg.normals] Flat array of vertex normals. Ignored when ````geometryId```` is given.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positions````.\n * @param {Number[]} [cfg.rtcCenter] Relative-to-center (RTC) coordinate system center. When this is given, then ````positions```` are assumed to be relative to this center.\n * @param {Number[]} [cfg.indices] Array of triangle indices. Ignored when ````geometryId```` is given.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. If ````geometryId```` is not given, edge line indices are\n * automatically generated internally if not given, using the ````edgeThreshold```` given to the ````PerformanceModel````\n * constructor. This parameter is ignored when ````geometryId```` is given.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position. of the mesh\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh.\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.\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.\n * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..`, 0..1]````. Overrides ````colors````.\n * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````.\n */\n createMesh(cfg) {\n\n let id = cfg.id;\n if (id === undefined || id === null) {\n this.error(\"Config missing: id\");\n return;\n }\n if (this._meshes[id]) {\n this.error(\"PerformanceModel already has a Mesh with this ID: \" + id + \"\");\n return;\n }\n\n const geometryId = cfg.geometryId;\n const instancing = (geometryId !== undefined);\n\n if (instancing) {\n if (!instancedArraysSupported) {\n this.error(\"WebGL instanced arrays not supported\"); // TODO: Gracefully use batching?\n return;\n }\n if (!this._instancingLayers[geometryId]) {\n this.error(\"Geometry not found: \" + geometryId + \" - ensure that you create it first with createGeometry()\");\n return;\n }\n }\n\n let layer;\n let portionId;\n\n const 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 const opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255;\n const metallic = (cfg.metallic !== undefined && cfg.metallic !== null) ? Math.floor(cfg.metallic * 255) : 0;\n const roughness = (cfg.roughness !== undefined && cfg.roughness !== null) ? Math.floor(cfg.roughness * 255) : 255;\n\n if (opacity < 255) {\n this.numTransparentLayerPortions++;\n }\n\n const mesh = new PerformanceMesh(this, id, color, opacity);\n\n const pickId = mesh.pickId;\n\n const a = pickId >> 24 & 0xFF;\n const b = pickId >> 16 & 0xFF;\n const g = pickId >> 8 & 0xFF;\n const r = pickId & 0xFF;\n\n const pickColor = new Uint8Array([r, g, b, a]); // Quantized pick color\n\n const aabb = math.collapseAABB3();\n\n if (instancing) {\n\n let meshMatrix;\n let worldMatrix = this._worldMatrixNonIdentity ? this._worldMatrix : null;\n\n if (cfg.matrix) {\n meshMatrix = cfg.matrix;\n } else {\n const scale = cfg.scale || defaultScale;\n const position = cfg.position || defaultPosition;\n const rotation = cfg.rotation || defaultRotation;\n math.eulerToQuaternion(rotation, \"XYZ\", defaultQuaternion);\n meshMatrix = math.composeMat4(position, defaultQuaternion, scale, tempMat4);\n }\n\n const instancingLayer = this._instancingLayers[geometryId];\n\n layer = instancingLayer;\n\n portionId = instancingLayer.createPortion({\n color: color,\n metallic: metallic,\n roughness: roughness,\n opacity: opacity,\n meshMatrix: meshMatrix,\n worldMatrix: worldMatrix,\n aabb: aabb,\n pickColor: pickColor\n });\n\n math.expandAABB3(this._aabb, aabb);\n\n const numTriangles = Math.round(instancingLayer.numIndices / 3);\n this._numTriangles += numTriangles;\n mesh.numTriangles = numTriangles;\n\n mesh.rtcCenter = instancingLayer.rtcCenter;\n\n } else { // Batching\n\n let primitive = cfg.primitive || \"triangles\";\n\n if (primitive !== \"points\" && primitive !== \"lines\" && primitive !== \"triangles\" && primitive !== \"solid\" && primitive !== \"surface\") {\n this.error(`Unsupported value for 'primitive': '${primitive}' - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'. Defaulting to 'triangles'.`);\n primitive = \"triangles\";\n }\n\n let positions = cfg.positions;\n\n if (!positions) {\n this.error(\"Config missing: positions (no meshIds provided, so expecting geometry arrays instead)\");\n return null;\n }\n\n let indices = cfg.indices;\n let edgeIndices = cfg.edgeIndices;\n\n if (!cfg.indices && primitive === \"triangles\") {\n this.error(\"Config missing for triangles primitive: indices (no meshIds provided, so expecting geometry arrays instead)\");\n return null;\n }\n\n let needNewBatchingLayers = false;\n\n if (cfg.rtcCenter) {\n if (!this._lastRTCCenter) {\n needNewBatchingLayers = true;\n this._lastRTCCenter = math.vec3(cfg.rtcCenter);\n } else {\n if (!math.compareVec3(this._lastRTCCenter, cfg.rtcCenter)) {\n needNewBatchingLayers = true;\n this._lastRTCCenter.set(cfg.rtcCenter)\n }\n }\n }\n\n if (cfg.positionsDecodeMatrix) {\n if (!this._lastDecodeMatrix) {\n needNewBatchingLayers = true;\n this._lastDecodeMatrix = math.mat4(cfg.positionsDecodeMatrix);\n\n } else {\n if (!math.compareMat4(this._lastDecodeMatrix, cfg.positionsDecodeMatrix)) {\n needNewBatchingLayers = true;\n this._lastDecodeMatrix.set(cfg.positionsDecodeMatrix)\n }\n }\n }\n\n if (needNewBatchingLayers) {\n for (let prim in this._currentBatchingLayers) {\n if (this._currentBatchingLayers.hasOwnProperty(prim)) {\n this._currentBatchingLayers[prim].finalize();\n }\n }\n this._currentBatchingLayers = {};\n }\n\n const worldMatrix = this._worldMatrixNonIdentity ? this._worldMatrix : null;\n let meshMatrix;\n\n if (!cfg.positionsDecodeMatrix) {\n if (cfg.matrix) {\n meshMatrix = cfg.matrix;\n } else {\n const scale = cfg.scale || defaultScale;\n const position = cfg.position || defaultPosition;\n const rotation = cfg.rotation || defaultRotation;\n math.eulerToQuaternion(rotation, \"XYZ\", defaultQuaternion);\n meshMatrix = math.composeMat4(position, defaultQuaternion, scale, tempMat4);\n }\n }\n\n layer = this._currentBatchingLayers[primitive];\n\n switch (primitive) {\n\n case \"triangles\":\n case \"solid\":\n case \"surface\":\n\n if (layer) {\n if (!layer.canCreatePortion(positions.length, indices.length)) {\n layer.finalize();\n delete this._currentBatchingLayers[primitive];\n layer = null;\n }\n }\n\n if (!layer) {\n layer = new TrianglesBatchingLayer(this, {\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._scratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n rtcCenter: cfg.rtcCenter, // Can be undefined\n maxGeometryBatchSize: this._maxGeometryBatchSize,\n solid: (primitive === \"solid\")\n });\n this._layerList.push(layer);\n this._currentBatchingLayers[primitive] = layer;\n }\n\n if (!edgeIndices) {\n edgeIndices = buildEdgeIndices(positions, indices, null, this._edgeThreshold);\n }\n\n portionId = layer.createPortion({\n positions: positions,\n normals: cfg.normals,\n indices: indices,\n edgeIndices: edgeIndices,\n color: color,\n metallic: metallic,\n roughness: roughness,\n colors: cfg.colors,\n opacity: opacity,\n meshMatrix: meshMatrix,\n worldMatrix: worldMatrix,\n worldAABB: aabb,\n pickColor: pickColor\n });\n\n const numTriangles = Math.round(indices.length / 3);\n this._numTriangles += numTriangles;\n mesh.numTriangles = numTriangles;\n\n break;\n\n case \"lines\":\n\n if (layer) {\n if (!layer.canCreatePortion(positions.length, indices.length)) {\n layer.finalize();\n delete this._currentBatchingLayers[primitive];\n layer = null;\n }\n }\n\n if (!layer) {\n layer = new LinesBatchingLayer(this, {\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._scratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n rtcCenter: cfg.rtcCenter, // Can be undefined\n maxGeometryBatchSize: this._maxGeometryBatchSize\n });\n this._layerList.push(layer);\n this._currentBatchingLayers[primitive] = layer;\n }\n\n portionId = layer.createPortion({\n positions: positions,\n indices: indices,\n color: color,\n colors: cfg.colors,\n opacity: opacity,\n meshMatrix: meshMatrix,\n worldMatrix: worldMatrix,\n worldAABB: aabb,\n pickColor: pickColor\n });\n\n this._numLines += Math.round(indices.length / 2);\n\n break;\n\n case \"points\":\n\n if (layer) {\n if (!layer.canCreatePortion(positions.length)) {\n layer.finalize();\n delete this._currentBatchingLayers[primitive];\n layer = null;\n }\n }\n\n if (!layer) {\n layer = new PointsBatchingLayer(this, {\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._scratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n rtcCenter: cfg.rtcCenter, // Can be undefined\n maxGeometryBatchSize: this._maxGeometryBatchSize\n });\n this._layerList.push(layer);\n this._currentBatchingLayers[primitive] = layer;\n }\n\n portionId = layer.createPortion({\n positions: positions,\n color: color,\n colors: cfg.colors,\n opacity: opacity,\n meshMatrix: meshMatrix,\n worldMatrix: worldMatrix,\n worldAABB: aabb,\n pickColor: pickColor\n });\n\n this._numPoints += Math.round(positions.length / 3);\n\n break;\n }\n\n math.expandAABB3(this._aabb, aabb);\n\n this.numGeometries++;\n\n mesh.rtcCenter = cfg.rtcCenter;\n }\n\n mesh.parent = null; // Will be set within PerformanceModelNode constructor\n mesh._layer = layer;\n mesh._portionId = portionId;\n mesh.aabb = aabb;\n\n this._meshes[id] = mesh;\n }\n\n /**\n * Creates an {@link Entity} within this PerformanceModel, giving it one or more meshes previously created with {@link PerformanceModel#createMesh}.\n *\n * A mesh can only belong to one {@link Entity}, so you'll get an error if you try to reuse a mesh among multiple {@link Entity}s.\n *\n * @param {Object} cfg Entity configuration.\n * @param {String} cfg.id Optional ID for the new Entity. 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 PerformanceModel@createMesh}.\n\n * @param {Boolean} [cfg.isObject] Set ````true```` if the {@link Entity} represents an object, in which case it will be registered by {@link Entity#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 Entity is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the Entity is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the Entity is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the Entity is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the Entity is initially included in boundary calculations.\n * @param {Boolean} [cfg.castsShadow=true] Indicates if the Entity initially casts shadows.\n * @param {Boolean} [cfg.receivesShadow=true] Indicates if the Entity initially receives shadows.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the Entity is initially xrayed. XRayed appearance is configured by {@link PerformanceModel#xrayMaterial}.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the Entity is initially highlighted. Highlighted appearance is configured by {@link PerformanceModel#highlightMaterial}.\n * @param {Boolean} [cfg.selected=false] Indicates if the Entity is initially selected. Selected appearance is configured by {@link PerformanceModel#selectedMaterial}.\n * @param {Boolean} [cfg.edges=false] Indicates if the Entity's edges are initially emphasized. Edges appearance is configured by {@link PerformanceModel#edgeMaterial}.\n * @returns {Entity}\n */\n createEntity(cfg) {\n // Validate or generate Entity ID\n let id = cfg.id;\n if (id === undefined) {\n id = math.createUUID();\n } else if (this.scene.components[id]) {\n this.error(\"Scene already has a Component with this ID: \" + id + \" - will assign random ID\");\n id = math.createUUID();\n }\n // Collect PerformanceModelNode's PerformanceModelMeshes\n const meshIds = cfg.meshIds;\n if (meshIds === undefined) {\n this.error(\"Config missing: meshIds\");\n return;\n }\n let meshes = [];\n for (let i = 0, len = meshIds.length; i < len; i++) {\n const meshId = meshIds[i];\n const mesh = this._meshes[meshId];\n if (!mesh) {\n this.error(\"Mesh with this ID not found: \" + meshId + \" - ignoring this mesh\");\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 }\n // Create PerformanceModelNode flags\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\n // Create PerformanceModelNode AABB\n let aabb;\n if (meshes.length === 1) {\n aabb = meshes[0].aabb;\n } else {\n aabb = math.collapseAABB3();\n for (let i = 0, len = meshes.length; i < len; i++) {\n math.expandAABB3(aabb, meshes[i].aabb);\n }\n }\n\n const node = new PerformanceNode(this, cfg.isObject, id, meshes, flags, aabb); // Internally sets PerformanceModelMesh#parent to this PerformanceModelNode\n this._nodeList.push(node);\n this._nodes[id] = node;\n this.numEntities++;\n return node;\n }\n\n /**\n * Finalizes this PerformanceModel.\n *\n * Immediately creates the PerformanceModel's {@link Entity}s within the {@link Scene}.\n *\n * Once finalized, you can't add anything more to this PerformanceModel.\n */\n finalize() {\n\n if (this.destroyed) {\n return;\n }\n\n for (const geometryId in this._instancingLayers) {\n if (this._instancingLayers.hasOwnProperty(geometryId)) {\n this._instancingLayers[geometryId].finalize();\n }\n }\n\n for (let primitive in this._currentBatchingLayers) {\n if (this._currentBatchingLayers.hasOwnProperty(primitive)) {\n this._currentBatchingLayers[primitive].finalize();\n }\n }\n this._currentBatchingLayers = {};\n\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n const node = this._nodeList[i];\n node._finalize();\n }\n\n // Sort layers to reduce WebGL shader switching when rendering them\n\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\n for (let i = 0, len = this._layerList.length; i < len; i++) {\n const layer = this._layerList[i];\n layer.layerIndex = i;\n }\n\n this.glRedraw();\n\n this.scene._aabbDirty = true;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // PerformanceModel members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Sets if backfaces are rendered for this PerformanceModel.\n *\n * Default is ````false````.\n *\n * When we set this ````true````, then backfaces are always rendered for this PerformanceModel.\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 * Sets if backfaces are rendered for this PerformanceModel.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._backfaces;\n }\n\n /**\n * Gets the list of {@link Entity}s within this PerformanceModel.\n *\n * @returns {Entity[]}\n */\n get entityList() {\n return this._nodeList;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Entity members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that PerformanceModel is an {@link Entity}.\n * @type {Boolean}\n */\n get isEntity() {\n return true;\n }\n\n /**\n * Returns ````true```` if this PerformanceModel represents a model.\n *\n * When ````true```` the PerformanceModel will be registered by {@link PerformanceModel#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 * Returns ````false```` to indicate that PerformanceModel never represents an object.\n *\n * @type {Boolean}\n */\n get isObject() {\n return false;\n }\n\n /**\n * Gets the PerformanceModel'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._rebuildAABB();\n }\n return this._aabb;\n }\n\n _rebuildAABB() {\n math.collapseAABB3(this._aabb);\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n const node = this._nodeList[i];\n math.expandAABB3(this._aabb, node.aabb);\n }\n this._aabbDirty = false;\n }\n\n /**\n * The approximate number of triangle primitives in this PerformanceModel.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numTriangles;\n }\n\n /**\n * The approximate number of line primitives in this PerformanceModel.\n *\n * @type {Number}\n */\n get numLines() {\n return this._numLines;\n }\n\n /**\n * The approximate number of point primitives in this PerformanceModel.\n *\n * @type {Number}\n */\n get numPoints() {\n return this._numPoints;\n }\n\n /**\n * Sets if this PerformanceModel is visible.\n *\n * The PerformanceModel is only rendered when {@link PerformanceModel#visible} is ````true```` and {@link PerformanceModel#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._nodeList.length; i < len; i++) {\n this._nodeList[i].visible = visible;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link Entity}s in this PerformanceModel are visible.\n *\n * The PerformanceModel is only rendered when {@link PerformanceModel#visible} is ````true```` and {@link PerformanceModel#culled} is ````false````.\n *\n * @type {Boolean}\n */\n get visible() {\n return (this.numVisibleLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link Entity}s in this PerformanceModel 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._nodeList.length; i < len; i++) {\n this._nodeList[i].xrayed = xrayed;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link Entity}s in this PerformanceModel are xrayed.\n *\n * @type {Boolean}\n */\n get xrayed() {\n return (this.numXRayedLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link Entity}s in this PerformanceModel 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._nodeList.length; i < len; i++) {\n this._nodeList[i].highlighted = highlighted;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link Entity}s in this PerformanceModel are highlighted.\n *\n * @type {Boolean}\n */\n get highlighted() {\n return (this.numHighlightedLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link Entity}s in this PerformanceModel 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._nodeList.length; i < len; i++) {\n this._nodeList[i].selected = selected;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link Entity}s in this PerformanceModel are selected.\n *\n * @type {Boolean}\n */\n get selected() {\n return (this.numSelectedLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link Entity}s in this PerformanceModel 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._nodeList.length; i < len; i++) {\n this._nodeList[i].edges = edges;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link Entity}s in this PerformanceModel have edges emphasised.\n *\n * @type {Boolean}\n */\n get edges() {\n return (this.numEdgesLayerPortions > 0);\n }\n\n /**\n * Sets if this PerformanceModel is culled from view.\n *\n * The PerformanceModel is only rendered when {@link PerformanceModel#visible} is true and {@link PerformanceModel#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._nodeList.length; i < len; i++) {\n this._nodeList[i].culled = culled;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if this PerformanceModel is culled from view.\n *\n * The PerformanceModel is only rendered when {@link PerformanceModel#visible} is true and {@link PerformanceModel#culled} is false.\n *\n * @type {Boolean}\n */\n get culled() {\n return this._culled;\n }\n\n /**\n * Sets if {@link Entity}s in this PerformanceModel 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._nodeList.length; i < len; i++) {\n this._nodeList[i].clippable = clippable;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if {@link Entity}s in this PerformanceModel 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 Entity}s in this PerformanceModel 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._nodeList.length; i < len; i++) {\n this._nodeList[i].collidable = collidable;\n }\n }\n\n /**\n * Gets if this PerformanceModel is collidable.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._collidable;\n }\n\n /**\n * Sets if {@link Entity}s in this PerformanceModel 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._nodeList.length; i < len; i++) {\n this._nodeList[i].pickable = pickable;\n }\n }\n\n /**\n * Gets if this PerformanceModel 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 the RGB colorize color for this PerformanceModel.\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._nodeList.length; i < len; i++) {\n this._nodeList[i].colorize = colorize;\n }\n }\n\n /**\n * Gets the RGB colorize color for this PerformanceModel.\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 opacity factor for this PerformanceModel.\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._nodeList.length; i < len; i++) {\n this._nodeList[i].opacity = opacity;\n }\n }\n\n /**\n * Gets this PerformanceModel'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 if this PerformanceModel 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 * Gets if this PerformanceModel casts a shadow.\n *\n * @type {Boolean}\n */\n get castsShadow() {\n return this._castsShadow;\n }\n\n /**\n * Sets if this PerformanceModel 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 * Sets if this PerformanceModel can have shadow cast upon it.\n *\n * @type {Boolean}\n */\n get receivesShadow() {\n return this._receivesShadow;\n }\n\n /**\n * Gets if Scalable Ambient Obscurance (SAO) will apply to this PerformanceModel.\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 PerformanceModel.\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 // Drawable members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that PerformanceModel 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 /** @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 _getActiveSectionPlanesForLayer(layer) {\n\n const renderFlags = this.renderFlags;\n const sectionPlanes = this.scene._sectionPlanesState.sectionPlanes;\n const numSectionPlanes = sectionPlanes.length;\n const baseIndex = layer.layerIndex * numSectionPlanes;\n\n if (numSectionPlanes > 0) {\n for (let i = 0; i < numSectionPlanes; i++) {\n\n const sectionPlane = sectionPlanes[i];\n\n if (!sectionPlane.active) {\n renderFlags.sectionPlanesActivePerLayer[baseIndex + i] = false;\n\n } else {\n renderFlags.sectionPlanesActivePerLayer[baseIndex + i] = true;\n renderFlags.sectioned = true;\n }\n }\n }\n\n return true;\n }\n\n /** @private */\n _updateRenderFlags() {\n\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n\n if (this.numCulledLayerPortions === this.numPortions) {\n return;\n }\n\n const renderFlags = this.renderFlags;\n\n renderFlags.colorOpaque = (this.numTransparentLayerPortions < this.numPortions);\n\n if (this.numTransparentLayerPortions > 0) {\n renderFlags.colorTransparent = true;\n }\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\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\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\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 /**\n * Configures the appearance of xrayed {@link Entity}s within this PerformanceModel.\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 Entity}s within this PerformanceModel.\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 Entity}s within this PerformanceModel.\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 Entity}s within this PerformanceModel.\n *\n * This is the {@link Scene#edgeMaterial}.\n *\n * @type {EdgeMaterial}\n */\n get edgeMaterial() {\n return this.scene.edgeMaterial;\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 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 PerformanceMesh.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 PerformanceMesh.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 // Component members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Destroys this PerformanceModel.\n */\n destroy() {\n for (let primitive in this._currentBatchingLayers) {\n if (this._currentBatchingLayers.hasOwnProperty(primitive)) {\n this._currentBatchingLayers[primitive].destroy();\n }\n }\n this._currentBatchingLayers = {};\n this.scene.camera.off(this._onCameraViewMatrix);\n for (let i = 0, len = this._layerList.length; i < len; i++) {\n this._layerList[i].destroy();\n }\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n this._nodeList[i]._destroy();\n }\n this.scene._aabbDirty = true;\n if (this._isModel) {\n this.scene._deregisterModel(this);\n }\n putScratchMemory();\n super.destroy();\n }\n}\n\nexport {PerformanceModel};", @@ -34984,7 +34902,7 @@ "lineNumber": 1 }, { - "__docId__": 1810, + "__docId__": 1801, "kind": "variable", "name": "instancedArraysSupported", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js", @@ -35005,7 +34923,7 @@ "ignore": true }, { - "__docId__": 1811, + "__docId__": 1802, "kind": "variable", "name": "tempMat4", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js", @@ -35026,7 +34944,7 @@ "ignore": true }, { - "__docId__": 1812, + "__docId__": 1803, "kind": "variable", "name": "defaultScale", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js", @@ -35047,7 +34965,7 @@ "ignore": true }, { - "__docId__": 1813, + "__docId__": 1804, "kind": "variable", "name": "defaultPosition", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js", @@ -35068,7 +34986,7 @@ "ignore": true }, { - "__docId__": 1814, + "__docId__": 1805, "kind": "variable", "name": "defaultRotation", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js", @@ -35089,7 +35007,7 @@ "ignore": true }, { - "__docId__": 1815, + "__docId__": 1806, "kind": "variable", "name": "defaultQuaternion", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js", @@ -35110,7 +35028,7 @@ "ignore": true }, { - "__docId__": 1816, + "__docId__": 1807, "kind": "class", "name": "PerformanceModel", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js", @@ -35132,7 +35050,7 @@ ] }, { - "__docId__": 1817, + "__docId__": 1808, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35449,7 +35367,7 @@ ] }, { - "__docId__": 1818, + "__docId__": 1809, "kind": "member", "name": "_maxGeometryBatchSize", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35467,7 +35385,7 @@ } }, { - "__docId__": 1819, + "__docId__": 1810, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35485,7 +35403,7 @@ } }, { - "__docId__": 1820, + "__docId__": 1811, "kind": "member", "name": "_aabbDirty", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35503,7 +35421,7 @@ } }, { - "__docId__": 1821, + "__docId__": 1812, "kind": "member", "name": "_layerList", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35521,7 +35439,7 @@ } }, { - "__docId__": 1822, + "__docId__": 1813, "kind": "member", "name": "_nodeList", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35539,7 +35457,7 @@ } }, { - "__docId__": 1823, + "__docId__": 1814, "kind": "member", "name": "_lastRTCCenter", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35557,7 +35475,7 @@ } }, { - "__docId__": 1824, + "__docId__": 1815, "kind": "member", "name": "_lastDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35575,7 +35493,7 @@ } }, { - "__docId__": 1825, + "__docId__": 1816, "kind": "member", "name": "_instancingLayers", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35593,7 +35511,7 @@ } }, { - "__docId__": 1826, + "__docId__": 1817, "kind": "member", "name": "_currentBatchingLayers", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35611,7 +35529,7 @@ } }, { - "__docId__": 1827, + "__docId__": 1818, "kind": "member", "name": "_scratchMemory", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35629,7 +35547,7 @@ } }, { - "__docId__": 1828, + "__docId__": 1819, "kind": "member", "name": "_meshes", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35647,7 +35565,7 @@ } }, { - "__docId__": 1829, + "__docId__": 1820, "kind": "member", "name": "_nodes", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35665,7 +35583,7 @@ } }, { - "__docId__": 1830, + "__docId__": 1821, "kind": "member", "name": "renderFlags", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35682,7 +35600,7 @@ } }, { - "__docId__": 1831, + "__docId__": 1822, "kind": "member", "name": "numGeometries", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35699,7 +35617,7 @@ } }, { - "__docId__": 1832, + "__docId__": 1823, "kind": "member", "name": "numPortions", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35716,7 +35634,7 @@ } }, { - "__docId__": 1833, + "__docId__": 1824, "kind": "member", "name": "numVisibleLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35733,7 +35651,7 @@ } }, { - "__docId__": 1834, + "__docId__": 1825, "kind": "member", "name": "numTransparentLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35750,7 +35668,7 @@ } }, { - "__docId__": 1835, + "__docId__": 1826, "kind": "member", "name": "numXRayedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35767,7 +35685,7 @@ } }, { - "__docId__": 1836, + "__docId__": 1827, "kind": "member", "name": "numHighlightedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35784,7 +35702,7 @@ } }, { - "__docId__": 1837, + "__docId__": 1828, "kind": "member", "name": "numSelectedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35801,7 +35719,7 @@ } }, { - "__docId__": 1838, + "__docId__": 1829, "kind": "member", "name": "numEdgesLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35818,7 +35736,7 @@ } }, { - "__docId__": 1839, + "__docId__": 1830, "kind": "member", "name": "numPickableLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35835,7 +35753,7 @@ } }, { - "__docId__": 1840, + "__docId__": 1831, "kind": "member", "name": "numClippableLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35852,7 +35770,7 @@ } }, { - "__docId__": 1841, + "__docId__": 1832, "kind": "member", "name": "numCulledLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35869,7 +35787,7 @@ } }, { - "__docId__": 1842, + "__docId__": 1833, "kind": "member", "name": "numEntities", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35886,7 +35804,7 @@ } }, { - "__docId__": 1843, + "__docId__": 1834, "kind": "member", "name": "_numTriangles", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35903,7 +35821,7 @@ } }, { - "__docId__": 1844, + "__docId__": 1835, "kind": "member", "name": "_numLines", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35920,7 +35838,7 @@ } }, { - "__docId__": 1845, + "__docId__": 1836, "kind": "member", "name": "_numPoints", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35937,7 +35855,7 @@ } }, { - "__docId__": 1846, + "__docId__": 1837, "kind": "member", "name": "_edgeThreshold", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35955,7 +35873,7 @@ } }, { - "__docId__": 1861, + "__docId__": 1852, "kind": "member", "name": "_position", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35973,7 +35891,7 @@ } }, { - "__docId__": 1862, + "__docId__": 1853, "kind": "member", "name": "_rotation", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -35991,7 +35909,7 @@ } }, { - "__docId__": 1863, + "__docId__": 1854, "kind": "member", "name": "_quaternion", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36009,7 +35927,7 @@ } }, { - "__docId__": 1864, + "__docId__": 1855, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36027,7 +35945,7 @@ } }, { - "__docId__": 1865, + "__docId__": 1856, "kind": "member", "name": "_worldMatrix", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36045,7 +35963,7 @@ } }, { - "__docId__": 1866, + "__docId__": 1857, "kind": "member", "name": "_worldNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36063,7 +35981,7 @@ } }, { - "__docId__": 1867, + "__docId__": 1858, "kind": "member", "name": "_viewMatrix", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36081,7 +35999,7 @@ } }, { - "__docId__": 1868, + "__docId__": 1859, "kind": "member", "name": "_viewNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36099,7 +36017,7 @@ } }, { - "__docId__": 1869, + "__docId__": 1860, "kind": "member", "name": "_viewMatrixDirty", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36117,7 +36035,7 @@ } }, { - "__docId__": 1870, + "__docId__": 1861, "kind": "member", "name": "_worldMatrixNonIdentity", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36135,7 +36053,7 @@ } }, { - "__docId__": 1871, + "__docId__": 1862, "kind": "member", "name": "_opacity", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36153,7 +36071,7 @@ } }, { - "__docId__": 1872, + "__docId__": 1863, "kind": "member", "name": "_colorize", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36171,7 +36089,7 @@ } }, { - "__docId__": 1873, + "__docId__": 1864, "kind": "member", "name": "_saoEnabled", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36189,7 +36107,7 @@ } }, { - "__docId__": 1874, + "__docId__": 1865, "kind": "member", "name": "_pbrEnabled", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36207,7 +36125,7 @@ } }, { - "__docId__": 1875, + "__docId__": 1866, "kind": "member", "name": "_isModel", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36225,7 +36143,7 @@ } }, { - "__docId__": 1876, + "__docId__": 1867, "kind": "member", "name": "_onCameraViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36243,7 +36161,7 @@ } }, { - "__docId__": 1878, + "__docId__": 1869, "kind": "get", "name": "isPerformanceModel", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36264,7 +36182,7 @@ } }, { - "__docId__": 1879, + "__docId__": 1870, "kind": "get", "name": "position", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36285,7 +36203,7 @@ } }, { - "__docId__": 1880, + "__docId__": 1871, "kind": "get", "name": "rotation", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36306,7 +36224,7 @@ } }, { - "__docId__": 1881, + "__docId__": 1872, "kind": "get", "name": "quaternion", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36327,7 +36245,7 @@ } }, { - "__docId__": 1882, + "__docId__": 1873, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36348,7 +36266,7 @@ } }, { - "__docId__": 1883, + "__docId__": 1874, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36369,7 +36287,7 @@ } }, { - "__docId__": 1884, + "__docId__": 1875, "kind": "get", "name": "worldMatrix", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36402,7 +36320,7 @@ } }, { - "__docId__": 1885, + "__docId__": 1876, "kind": "get", "name": "worldNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36423,7 +36341,7 @@ } }, { - "__docId__": 1886, + "__docId__": 1877, "kind": "get", "name": "viewMatrix", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36442,7 +36360,7 @@ } }, { - "__docId__": 1888, + "__docId__": 1879, "kind": "method", "name": "getPickViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36469,7 +36387,7 @@ } }, { - "__docId__": 1889, + "__docId__": 1880, "kind": "get", "name": "viewNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36488,7 +36406,7 @@ } }, { - "__docId__": 1891, + "__docId__": 1882, "kind": "method", "name": "createGeometry", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36595,7 +36513,7 @@ "return": null }, { - "__docId__": 1897, + "__docId__": 1888, "kind": "method", "name": "createMesh", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -36833,7 +36751,7 @@ } }, { - "__docId__": 1905, + "__docId__": 1896, "kind": "method", "name": "createEntity", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37034,7 +36952,7 @@ } }, { - "__docId__": 1906, + "__docId__": 1897, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37049,7 +36967,7 @@ "return": null }, { - "__docId__": 1908, + "__docId__": 1899, "kind": "set", "name": "backfaces", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37070,7 +36988,7 @@ } }, { - "__docId__": 1909, + "__docId__": 1900, "kind": "member", "name": "_backfaces", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37088,7 +37006,7 @@ } }, { - "__docId__": 1910, + "__docId__": 1901, "kind": "get", "name": "backfaces", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37109,7 +37027,7 @@ } }, { - "__docId__": 1911, + "__docId__": 1902, "kind": "get", "name": "entityList", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37141,7 +37059,7 @@ } }, { - "__docId__": 1912, + "__docId__": 1903, "kind": "get", "name": "isEntity", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37162,7 +37080,7 @@ } }, { - "__docId__": 1913, + "__docId__": 1904, "kind": "get", "name": "isModel", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37183,7 +37101,7 @@ } }, { - "__docId__": 1914, + "__docId__": 1905, "kind": "get", "name": "isObject", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37204,7 +37122,7 @@ } }, { - "__docId__": 1915, + "__docId__": 1906, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37225,7 +37143,7 @@ } }, { - "__docId__": 1916, + "__docId__": 1907, "kind": "method", "name": "_rebuildAABB", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37242,7 +37160,7 @@ "return": null }, { - "__docId__": 1918, + "__docId__": 1909, "kind": "get", "name": "numTriangles", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37263,7 +37181,7 @@ } }, { - "__docId__": 1919, + "__docId__": 1910, "kind": "get", "name": "numLines", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37284,7 +37202,7 @@ } }, { - "__docId__": 1920, + "__docId__": 1911, "kind": "get", "name": "numPoints", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37305,7 +37223,7 @@ } }, { - "__docId__": 1921, + "__docId__": 1912, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37326,7 +37244,7 @@ } }, { - "__docId__": 1922, + "__docId__": 1913, "kind": "member", "name": "_visible", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37344,7 +37262,7 @@ } }, { - "__docId__": 1923, + "__docId__": 1914, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37365,7 +37283,7 @@ } }, { - "__docId__": 1924, + "__docId__": 1915, "kind": "set", "name": "xrayed", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37386,7 +37304,7 @@ } }, { - "__docId__": 1925, + "__docId__": 1916, "kind": "member", "name": "_xrayed", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37404,7 +37322,7 @@ } }, { - "__docId__": 1926, + "__docId__": 1917, "kind": "get", "name": "xrayed", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37425,7 +37343,7 @@ } }, { - "__docId__": 1927, + "__docId__": 1918, "kind": "set", "name": "highlighted", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37446,7 +37364,7 @@ } }, { - "__docId__": 1928, + "__docId__": 1919, "kind": "member", "name": "_highlighted", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37464,7 +37382,7 @@ } }, { - "__docId__": 1929, + "__docId__": 1920, "kind": "get", "name": "highlighted", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37485,7 +37403,7 @@ } }, { - "__docId__": 1930, + "__docId__": 1921, "kind": "set", "name": "selected", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37506,7 +37424,7 @@ } }, { - "__docId__": 1931, + "__docId__": 1922, "kind": "member", "name": "_selected", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37524,7 +37442,7 @@ } }, { - "__docId__": 1932, + "__docId__": 1923, "kind": "get", "name": "selected", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37545,7 +37463,7 @@ } }, { - "__docId__": 1933, + "__docId__": 1924, "kind": "set", "name": "edges", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37566,7 +37484,7 @@ } }, { - "__docId__": 1934, + "__docId__": 1925, "kind": "member", "name": "_edges", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37584,7 +37502,7 @@ } }, { - "__docId__": 1935, + "__docId__": 1926, "kind": "get", "name": "edges", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37605,7 +37523,7 @@ } }, { - "__docId__": 1936, + "__docId__": 1927, "kind": "set", "name": "culled", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37626,7 +37544,7 @@ } }, { - "__docId__": 1937, + "__docId__": 1928, "kind": "member", "name": "_culled", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37644,7 +37562,7 @@ } }, { - "__docId__": 1938, + "__docId__": 1929, "kind": "get", "name": "culled", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37665,7 +37583,7 @@ } }, { - "__docId__": 1939, + "__docId__": 1930, "kind": "set", "name": "clippable", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37686,7 +37604,7 @@ } }, { - "__docId__": 1940, + "__docId__": 1931, "kind": "member", "name": "_clippable", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37704,7 +37622,7 @@ } }, { - "__docId__": 1941, + "__docId__": 1932, "kind": "get", "name": "clippable", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37725,7 +37643,7 @@ } }, { - "__docId__": 1942, + "__docId__": 1933, "kind": "set", "name": "collidable", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37746,7 +37664,7 @@ } }, { - "__docId__": 1943, + "__docId__": 1934, "kind": "member", "name": "_collidable", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37764,7 +37682,7 @@ } }, { - "__docId__": 1944, + "__docId__": 1935, "kind": "get", "name": "collidable", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37785,7 +37703,7 @@ } }, { - "__docId__": 1945, + "__docId__": 1936, "kind": "set", "name": "pickable", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37806,7 +37724,7 @@ } }, { - "__docId__": 1946, + "__docId__": 1937, "kind": "member", "name": "_pickable", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37824,7 +37742,7 @@ } }, { - "__docId__": 1947, + "__docId__": 1938, "kind": "get", "name": "pickable", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37845,7 +37763,7 @@ } }, { - "__docId__": 1948, + "__docId__": 1939, "kind": "set", "name": "colorize", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37866,7 +37784,7 @@ } }, { - "__docId__": 1950, + "__docId__": 1941, "kind": "get", "name": "colorize", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37887,7 +37805,7 @@ } }, { - "__docId__": 1951, + "__docId__": 1942, "kind": "set", "name": "opacity", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37908,7 +37826,7 @@ } }, { - "__docId__": 1953, + "__docId__": 1944, "kind": "get", "name": "opacity", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37929,7 +37847,7 @@ } }, { - "__docId__": 1954, + "__docId__": 1945, "kind": "set", "name": "castsShadow", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37950,7 +37868,7 @@ } }, { - "__docId__": 1955, + "__docId__": 1946, "kind": "member", "name": "_castsShadow", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37968,7 +37886,7 @@ } }, { - "__docId__": 1956, + "__docId__": 1947, "kind": "get", "name": "castsShadow", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -37989,7 +37907,7 @@ } }, { - "__docId__": 1957, + "__docId__": 1948, "kind": "set", "name": "receivesShadow", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38010,7 +37928,7 @@ } }, { - "__docId__": 1958, + "__docId__": 1949, "kind": "member", "name": "_receivesShadow", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38028,7 +37946,7 @@ } }, { - "__docId__": 1959, + "__docId__": 1950, "kind": "get", "name": "receivesShadow", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38049,7 +37967,7 @@ } }, { - "__docId__": 1960, + "__docId__": 1951, "kind": "get", "name": "saoEnabled", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38070,7 +37988,7 @@ } }, { - "__docId__": 1961, + "__docId__": 1952, "kind": "get", "name": "pbrEnabled", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38091,7 +38009,7 @@ } }, { - "__docId__": 1962, + "__docId__": 1953, "kind": "get", "name": "isDrawable", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38112,7 +38030,7 @@ } }, { - "__docId__": 1963, + "__docId__": 1954, "kind": "get", "name": "isStateSortable", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38131,7 +38049,7 @@ } }, { - "__docId__": 1964, + "__docId__": 1955, "kind": "method", "name": "stateSortCompare", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38160,7 +38078,7 @@ "return": null }, { - "__docId__": 1965, + "__docId__": 1956, "kind": "method", "name": "rebuildRenderFlags", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38176,7 +38094,7 @@ "return": null }, { - "__docId__": 1966, + "__docId__": 1957, "kind": "method", "name": "_updateRenderFlagsVisibleLayers", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38192,7 +38110,7 @@ "return": null }, { - "__docId__": 1967, + "__docId__": 1958, "kind": "method", "name": "_getActiveSectionPlanesForLayer", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38219,7 +38137,7 @@ } }, { - "__docId__": 1968, + "__docId__": 1959, "kind": "method", "name": "_updateRenderFlags", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38235,7 +38153,7 @@ "return": null }, { - "__docId__": 1969, + "__docId__": 1960, "kind": "get", "name": "xrayMaterial", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38256,7 +38174,7 @@ } }, { - "__docId__": 1970, + "__docId__": 1961, "kind": "get", "name": "highlightMaterial", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38277,7 +38195,7 @@ } }, { - "__docId__": 1971, + "__docId__": 1962, "kind": "get", "name": "selectedMaterial", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38298,7 +38216,7 @@ } }, { - "__docId__": 1972, + "__docId__": 1963, "kind": "get", "name": "edgeMaterial", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38319,7 +38237,7 @@ } }, { - "__docId__": 1973, + "__docId__": 1964, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38342,7 +38260,7 @@ "return": null }, { - "__docId__": 1974, + "__docId__": 1965, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38365,7 +38283,7 @@ "return": null }, { - "__docId__": 1975, + "__docId__": 1966, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38388,7 +38306,7 @@ "return": null }, { - "__docId__": 1976, + "__docId__": 1967, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38411,7 +38329,7 @@ "return": null }, { - "__docId__": 1977, + "__docId__": 1968, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38434,7 +38352,7 @@ "return": null }, { - "__docId__": 1978, + "__docId__": 1969, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38457,7 +38375,7 @@ "return": null }, { - "__docId__": 1979, + "__docId__": 1970, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38480,7 +38398,7 @@ "return": null }, { - "__docId__": 1980, + "__docId__": 1971, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38503,7 +38421,7 @@ "return": null }, { - "__docId__": 1981, + "__docId__": 1972, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38526,7 +38444,7 @@ "return": null }, { - "__docId__": 1982, + "__docId__": 1973, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38549,7 +38467,7 @@ "return": null }, { - "__docId__": 1983, + "__docId__": 1974, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38572,7 +38490,7 @@ "return": null }, { - "__docId__": 1984, + "__docId__": 1975, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38595,7 +38513,7 @@ "return": null }, { - "__docId__": 1985, + "__docId__": 1976, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38618,7 +38536,7 @@ "return": null }, { - "__docId__": 1986, + "__docId__": 1977, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38641,7 +38559,7 @@ "return": null }, { - "__docId__": 1987, + "__docId__": 1978, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38664,7 +38582,7 @@ "return": null }, { - "__docId__": 1988, + "__docId__": 1979, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38687,7 +38605,7 @@ "return": null }, { - "__docId__": 1989, + "__docId__": 1980, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38710,7 +38628,7 @@ "return": null }, { - "__docId__": 1990, + "__docId__": 1981, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/PerformanceModel.js~PerformanceModel", @@ -38725,7 +38643,7 @@ "return": null }, { - "__docId__": 1992, + "__docId__": 1983, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/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};", @@ -38736,7 +38654,7 @@ "lineNumber": 1 }, { - "__docId__": 1993, + "__docId__": 1984, "kind": "variable", "name": "ENTITY_FLAGS", "memberof": "src/viewer/scene/PerformanceModel/lib/ENTITY_FLAGS.js", @@ -38759,7 +38677,7 @@ "ignore": true }, { - "__docId__": 1994, + "__docId__": 1985, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js", "content": "import {math} from \"../../math/math.js\";\n\n/**\n * @private\n * @implements Pickable\n */\nclass PerformanceMesh {\n\n constructor(model, id, color, opacity, layer = null, portionId = 0) {\n\n /**\n * The PerformanceModel that contains this PerformanceModelMesh.\n *\n * A PerformanceModelMesh always belongs to exactly one PerformanceModel.\n *\n * @property model\n * @type {PerformanceModel}\n * @final\n */\n this.model = model;\n\n /**\n * The PerformanceNode that contains this PerformanceModelMesh.\n *\n * A PerformanceModelMesh always belongs to exactly one PerformanceNode.\n *\n * @property object\n * @type {PerformanceNode}\n * @final\n */\n this.object = null;\n\n /**\n * The PerformanceNode that contains this PerformanceModelMesh.\n *\n * A PerformanceModelMesh always belongs to exactly one PerformanceNode.\n *\n * @property object\n * @type {PerformanceNode}\n * @final\n */\n this.parent = null;\n\n /**\n * ID of this PerformanceModelMesh, unique within the xeokit.Scene.\n *\n * @property id\n * @type {String}\n * @final\n */\n this.id = id;\n\n /**\n *\n * @type {Number}\n * @private\n */\n this.pickId = this.model.scene._renderer.getPickID(this);\n\n /**\n * World-space 3D axis-aligned bounding box (AABB).\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 * @property aabb\n * @final\n * @type {Float64Array}\n */\n this.aabb = math.AABB3();\n\n this._layer = layer;\n this._portionId = portionId;\n\n this._color = [color[0], color[1], color[2], opacity]; // [0..255]\n this._colorize = [color[0], color[1], color[2], opacity]; // [0..255]\n this._colorizing = false;\n\n this._transparent = (opacity < 255);\n\n this.numTriangles = 0;\n\n /**\n * 3D origin of the PerformanceMesh'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 * @property rtcCenter\n * @type {Float64Array}\n */\n this.rtcCenter = null;\n }\n\n /**\n * @private\n */\n _finalize(entityFlags) {\n this._layer.initFlags(this._portionId, entityFlags, this._transparent);\n }\n\n /**\n * @private\n */\n _setVisible(entityFlags) {\n this._layer.setVisible(this._portionId, entityFlags, this._transparent);\n }\n\n /**\n * @private\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 /** @private */\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 /** @private */\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 /**\n * @private\n */\n _setOffset(offset) {\n this._layer.setOffset(this._portionId, offset);\n }\n\n /**\n * @private\n */\n _setHighlighted(entityFlags) {\n this._layer.setHighlighted(this._portionId, entityFlags, this._transparent);\n }\n\n /**\n * @private\n */\n _setXRayed(entityFlags) {\n this._layer.setXRayed(this._portionId, entityFlags, this._transparent);\n }\n\n /**\n * @private\n */\n _setSelected(entityFlags) {\n this._layer.setSelected(this._portionId, entityFlags, this._transparent);\n }\n\n /**\n * @private\n */\n _setEdges(entityFlags) {\n this._layer.setEdges(this._portionId, entityFlags, this._transparent);\n }\n\n /**\n * @private\n */\n _setClippable(entityFlags) {\n this._layer.setClippable(this._portionId, entityFlags, this._transparent);\n }\n\n /**\n * @private\n */\n _setCollidable(entityFlags) {\n this._layer.setCollidable(this._portionId, entityFlags);\n }\n\n /**\n * @private\n */\n _setPickable(flags) {\n this._layer.setPickable(this._portionId, flags, this._transparent);\n }\n\n /**\n * @private\n */\n _setCulled(flags) {\n this._layer.setCulled(this._portionId, flags, this._transparent);\n }\n\n /** @private */\n canPickTriangle() {\n return false;\n }\n\n /** @private */\n drawPickTriangles(renderFlags, frameCtx) {\n // NOP\n }\n\n /** @private */\n pickTriangleSurface(pickResult) {\n // NOP\n }\n\n /** @private */\n canPickWorldPos() {\n return true;\n }\n\n /** @private */\n drawPickDepths(frameCtx) {\n this.model.drawPickDepths(frameCtx);\n }\n\n /** @private */\n drawPickNormals(frameCtx) {\n this.model.drawPickNormals(frameCtx);\n }\n\n /**\n * @private\n * @returns {PerformanceNode}\n */\n delegatePickedEntity() {\n return this.parent;\n }\n\n /**\n * @private\n */\n _destroy() {\n this.model.scene._renderer.putPickID(this.pickId);\n }\n}\n\nexport {PerformanceMesh};", @@ -38770,7 +38688,7 @@ "lineNumber": 1 }, { - "__docId__": 1995, + "__docId__": 1986, "kind": "class", "name": "PerformanceMesh", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js", @@ -38789,7 +38707,7 @@ "ignore": true }, { - "__docId__": 1996, + "__docId__": 1987, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -38803,7 +38721,7 @@ "undocument": true }, { - "__docId__": 1997, + "__docId__": 1988, "kind": "member", "name": "model", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -38840,7 +38758,7 @@ } }, { - "__docId__": 1998, + "__docId__": 1989, "kind": "member", "name": "object", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -38877,7 +38795,7 @@ } }, { - "__docId__": 1999, + "__docId__": 1990, "kind": "member", "name": "parent", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -38914,7 +38832,7 @@ } }, { - "__docId__": 2000, + "__docId__": 1991, "kind": "member", "name": "id", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -38951,7 +38869,7 @@ } }, { - "__docId__": 2001, + "__docId__": 1992, "kind": "member", "name": "pickId", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -38971,7 +38889,7 @@ "ignore": true }, { - "__docId__": 2002, + "__docId__": 1993, "kind": "member", "name": "aabb", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39008,7 +38926,7 @@ } }, { - "__docId__": 2003, + "__docId__": 1994, "kind": "member", "name": "_layer", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39026,7 +38944,7 @@ } }, { - "__docId__": 2004, + "__docId__": 1995, "kind": "member", "name": "_portionId", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39044,7 +38962,7 @@ } }, { - "__docId__": 2005, + "__docId__": 1996, "kind": "member", "name": "_color", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39062,7 +38980,7 @@ } }, { - "__docId__": 2006, + "__docId__": 1997, "kind": "member", "name": "_colorize", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39080,7 +38998,7 @@ } }, { - "__docId__": 2007, + "__docId__": 1998, "kind": "member", "name": "_colorizing", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39098,7 +39016,7 @@ } }, { - "__docId__": 2008, + "__docId__": 1999, "kind": "member", "name": "_transparent", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39116,7 +39034,7 @@ } }, { - "__docId__": 2009, + "__docId__": 2000, "kind": "member", "name": "numTriangles", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39133,7 +39051,7 @@ } }, { - "__docId__": 2010, + "__docId__": 2001, "kind": "member", "name": "rtcCenter", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39164,7 +39082,7 @@ } }, { - "__docId__": 2011, + "__docId__": 2002, "kind": "method", "name": "_finalize", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39187,7 +39105,7 @@ "return": null }, { - "__docId__": 2012, + "__docId__": 2003, "kind": "method", "name": "_setVisible", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39210,7 +39128,7 @@ "return": null }, { - "__docId__": 2013, + "__docId__": 2004, "kind": "method", "name": "_setColor", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39233,7 +39151,7 @@ "return": null }, { - "__docId__": 2014, + "__docId__": 2005, "kind": "method", "name": "_setColorize", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39256,7 +39174,7 @@ "return": null }, { - "__docId__": 2017, + "__docId__": 2008, "kind": "method", "name": "_setOpacity", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39285,7 +39203,7 @@ "return": null }, { - "__docId__": 2019, + "__docId__": 2010, "kind": "method", "name": "_setOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39308,7 +39226,7 @@ "return": null }, { - "__docId__": 2020, + "__docId__": 2011, "kind": "method", "name": "_setHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39331,7 +39249,7 @@ "return": null }, { - "__docId__": 2021, + "__docId__": 2012, "kind": "method", "name": "_setXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39354,7 +39272,7 @@ "return": null }, { - "__docId__": 2022, + "__docId__": 2013, "kind": "method", "name": "_setSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39377,7 +39295,7 @@ "return": null }, { - "__docId__": 2023, + "__docId__": 2014, "kind": "method", "name": "_setEdges", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39400,7 +39318,7 @@ "return": null }, { - "__docId__": 2024, + "__docId__": 2015, "kind": "method", "name": "_setClippable", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39423,7 +39341,7 @@ "return": null }, { - "__docId__": 2025, + "__docId__": 2016, "kind": "method", "name": "_setCollidable", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39446,7 +39364,7 @@ "return": null }, { - "__docId__": 2026, + "__docId__": 2017, "kind": "method", "name": "_setPickable", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39469,7 +39387,7 @@ "return": null }, { - "__docId__": 2027, + "__docId__": 2018, "kind": "method", "name": "_setCulled", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39492,7 +39410,7 @@ "return": null }, { - "__docId__": 2028, + "__docId__": 2019, "kind": "method", "name": "canPickTriangle", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39512,7 +39430,7 @@ } }, { - "__docId__": 2029, + "__docId__": 2020, "kind": "method", "name": "drawPickTriangles", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39541,7 +39459,7 @@ "return": null }, { - "__docId__": 2030, + "__docId__": 2021, "kind": "method", "name": "pickTriangleSurface", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39564,7 +39482,7 @@ "return": null }, { - "__docId__": 2031, + "__docId__": 2022, "kind": "method", "name": "canPickWorldPos", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39584,7 +39502,7 @@ } }, { - "__docId__": 2032, + "__docId__": 2023, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39607,7 +39525,7 @@ "return": null }, { - "__docId__": 2033, + "__docId__": 2024, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39630,7 +39548,7 @@ "return": null }, { - "__docId__": 2034, + "__docId__": 2025, "kind": "method", "name": "delegatePickedEntity", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39659,7 +39577,7 @@ "params": [] }, { - "__docId__": 2035, + "__docId__": 2026, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js~PerformanceMesh", @@ -39675,7 +39593,7 @@ "return": null }, { - "__docId__": 2036, + "__docId__": 2027, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.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\n/**\n * @private\n */\nclass PerformanceNode {\n\n /**\n * @private\n */\n constructor(model, isObject, id, meshes, flags, aabb) {\n\n this._isObject = isObject;\n\n /**\n * The {@link Scene} that contains this PerformanceNode.\n *\n * @property scene\n * @type {Scene}\n * @final\n */\n this.scene = model.scene;\n\n /**\n * The PerformanceModel that contains this PerformanceNode.\n * @property model\n * @type {PerformanceModel}\n * @final\n */\n this.model = model;\n\n /**\n * The PerformanceModelMesh instances contained by this PerformanceNode\n * @property meshes\n * @type {{Array of PerformanceModelMesh}}\n * @final\n */\n this.meshes = meshes;\n\n this._numTriangles = 0;\n\n for (var i = 0, len = this.meshes.length; i < len; i++) { // TODO: tidier way? Refactor?\n const mesh = this.meshes[i];\n mesh.parent = this;\n this._numTriangles += mesh.numTriangles;\n }\n\n /**\n * ID of this PerformanceNode, unique within the {@link Scene}.\n * @property id\n * @type {String|Number}\n * @final\n */\n this.id = id;\n\n /**\n * ID of the corresponding object within the originating system.\n *\n * @type {String}\n * @abstract\n */\n this.originalSystemId = math.unglobalizeObjectId(model.id, id);\n\n this._flags = flags;\n this._aabb = aabb;\n this._offsetAABB = math.AABB3(aabb);\n\n this._offset = math.vec3();\n\n if (this._isObject) {\n model.scene._registerObject(this);\n }\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Entity members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that PerformanceNode is an {@link Entity}.\n * @type {Boolean}\n */\n get isEntity() {\n return true;\n }\n\n /**\n * Always returns ````false```` because a PerformanceNode can never represent a model.\n *\n * @type {Boolean}\n */\n get isModel() {\n return false;\n }\n\n /**\n * Returns ````true```` if this PerformanceNode represents an object.\n *\n * When ````true```` the PerformanceNode will be registered by {@link PerformanceNode#id} in\n * {@link Scene#objects} and may also have a {@link MetaObject} with matching {@link MetaObject#id}.\n *\n * @type {Boolean}\n */\n get isObject() {\n return this._isObject;\n }\n\n /**\n * World-space 3D axis-aligned bounding box (AABB) of this PerformanceNode.\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 return this._offsetAABB;\n }\n\n /**\n * The approximate number of triangles in this PerformanceNode.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numTriangles;\n }\n\n /**\n * Sets if this PerformanceNode is visible.\n *\n * Only rendered when {@link PerformanceNode#visible} is ````true```` and {@link PerformanceNode#culled} is ````false````.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#visible} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#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 PerformanceNode is visible.\n *\n * Only rendered when {@link PerformanceNode#visible} is ````true```` and {@link PerformanceNode#culled} is ````false````.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#visible} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n */\n get visible() {\n return this._getFlag(ENTITY_FLAGS.VISIBLE);\n }\n\n _getFlag(flag) {\n return !!(this._flags & flag);\n }\n\n /**\n * Sets if this PerformanceNode is highlighted.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#highlighted} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#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 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 PerformanceNode is highlighted.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#highlighted} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#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 PerformanceNode is xrayed.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#xrayed} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#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 PerformanceNode is xrayed.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#xrayed} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#id} in {@link Scene#xrayedObjects}.\n *\n * @type {Boolean}\n */\n get xrayed() {\n return this._getFlag(ENTITY_FLAGS.XRAYED);\n }\n\n /**\n * Gets if this PerformanceNode is selected.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#selected} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#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 * Sets if this PerformanceNode is selected.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#selected} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#id} in {@link Scene#selectedObjects}.\n *\n * @type {Boolean}\n */\n get selected() {\n return this._getFlag(ENTITY_FLAGS.SELECTED);\n }\n\n /**\n * Sets if this PerformanceNode'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 * Gets if this PerformanceNode'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 PerformanceNode is culled.\n *\n * Only rendered when {@link PerformanceNode#visible} is ````true```` and {@link PerformanceNode#culled} is ````false````.\n *\n * @type {Boolean}\n */\n set culled(culled) {\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 PerformanceNode is culled.\n *\n * Only rendered when {@link PerformanceNode#visible} is ````true```` and {@link PerformanceNode#culled} is ````false````.\n *\n * @type {Boolean}\n */\n get culled() {\n return this._getFlag(ENTITY_FLAGS.CULLED);\n }\n\n /**\n * Sets if this PerformanceNode 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 PerformanceNode 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 PerformanceNode 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 PerformanceNode 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 PerformanceNode 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 if this PerformanceNode 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 the PerformanceNode's RGB colorize color.\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 }\n this.model.glRedraw();\n }\n\n /**\n * Gets the PerformanceNode's RGB colorize color.\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 PerformanceNode's opacity factor, multiplies by the PerformanceNode's rendered fragment alphas.\n *\n * This is a factor in range ````[0..1]````.\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 }\n this.model.glRedraw();\n }\n\n /**\n * Gets the PerformanceNode'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 PerformanceNode's 3D World-space offset.\n *\n * The offset dynamically translates the PerformanceNode 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(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._offsetAABB[0] = this._aabb[0] + this._offset[0];\n this._offsetAABB[1] = this._aabb[1] + this._offset[1];\n this._offsetAABB[2] = this._aabb[2] + this._offset[2];\n this._offsetAABB[3] = this._aabb[3] + this._offset[0];\n this._offsetAABB[4] = this._aabb[4] + this._offset[1];\n this._offsetAABB[5] = this._aabb[5] + this._offset[2];\n this.scene._aabbDirty = true;\n this.scene._objectOffsetUpdated(this, offset);\n this.model._aabbDirty = true;\n this.model.glRedraw();\n }\n\n /**\n * Gets the PerformanceNode'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 if to this PerformanceNode casts shadows.\n *\n * @type {Boolean}\n */\n set castsShadow(pickable) { // TODO\n\n }\n\n /**\n * Gets if this PerformanceNode casts shadows.\n *\n * @type {Boolean}\n */\n get castsShadow() { // TODO\n return false;\n }\n\n /**\n * Whether or not this PerformanceNode can have shadows cast upon it\n *\n * @type {Boolean}\n */\n set receivesShadow(pickable) { // TODO\n\n }\n\n /**\n * Whether or not this PerformanceNode can have shadows cast upon it\n *\n * @type {Boolean}\n */\n get receivesShadow() { // TODO\n return false;\n }\n\n /**\n * Gets if Scalable Ambient Obscurance (SAO) will apply to this PerformanceNode.\n *\n * SAO is configured by the Scene's {@link SAO} component.\n *\n * @type {Boolean}\n * @abstract\n */\n get saoEnabled() {\n return this.model.saoEnabled;\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 _destroy() { // Called by PerformanceModel\n const scene = this.model.scene;\n if (this._isObject) {\n scene._deregisterObject(this);\n if (this.visible) {\n scene._objectVisibilityUpdated(this, false);\n }\n if (this.xrayed) {\n scene._objectXRayedUpdated(this);\n }\n if (this.selected) {\n scene._objectSelectedUpdated(this);\n }\n if (this.highlighted) {\n scene._objectHighlightedUpdated(this);\n }\n this.scene._objectColorizeUpdated(this, false);\n this.scene._objectOpacityUpdated(this, false);\n this.scene._objectOffsetUpdated(this, false);\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}\n\nexport {PerformanceNode};", @@ -39686,7 +39604,7 @@ "lineNumber": 1 }, { - "__docId__": 2037, + "__docId__": 2028, "kind": "variable", "name": "tempFloatRGB", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js", @@ -39707,7 +39625,7 @@ "ignore": true }, { - "__docId__": 2038, + "__docId__": 2029, "kind": "variable", "name": "tempIntRGB", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js", @@ -39728,7 +39646,7 @@ "ignore": true }, { - "__docId__": 2039, + "__docId__": 2030, "kind": "class", "name": "PerformanceNode", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js", @@ -39744,7 +39662,7 @@ "ignore": true }, { - "__docId__": 2040, + "__docId__": 2031, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -39758,7 +39676,7 @@ "ignore": true }, { - "__docId__": 2041, + "__docId__": 2032, "kind": "member", "name": "_isObject", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -39776,7 +39694,7 @@ } }, { - "__docId__": 2042, + "__docId__": 2033, "kind": "member", "name": "scene", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -39813,7 +39731,7 @@ } }, { - "__docId__": 2043, + "__docId__": 2034, "kind": "member", "name": "model", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -39850,7 +39768,7 @@ } }, { - "__docId__": 2044, + "__docId__": 2035, "kind": "member", "name": "meshes", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -39887,7 +39805,7 @@ } }, { - "__docId__": 2045, + "__docId__": 2036, "kind": "member", "name": "_numTriangles", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -39905,7 +39823,7 @@ } }, { - "__docId__": 2047, + "__docId__": 2038, "kind": "member", "name": "id", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -39943,7 +39861,7 @@ } }, { - "__docId__": 2048, + "__docId__": 2039, "kind": "member", "name": "originalSystemId", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -39963,7 +39881,7 @@ "abstract": true }, { - "__docId__": 2049, + "__docId__": 2040, "kind": "member", "name": "_flags", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -39981,7 +39899,7 @@ } }, { - "__docId__": 2050, + "__docId__": 2041, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -39999,7 +39917,7 @@ } }, { - "__docId__": 2051, + "__docId__": 2042, "kind": "member", "name": "_offsetAABB", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40017,7 +39935,7 @@ } }, { - "__docId__": 2052, + "__docId__": 2043, "kind": "member", "name": "_offset", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40035,7 +39953,7 @@ } }, { - "__docId__": 2053, + "__docId__": 2044, "kind": "get", "name": "isEntity", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40056,7 +39974,7 @@ } }, { - "__docId__": 2054, + "__docId__": 2045, "kind": "get", "name": "isModel", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40077,7 +39995,7 @@ } }, { - "__docId__": 2055, + "__docId__": 2046, "kind": "get", "name": "isObject", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40098,7 +40016,7 @@ } }, { - "__docId__": 2056, + "__docId__": 2047, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40119,7 +40037,7 @@ } }, { - "__docId__": 2057, + "__docId__": 2048, "kind": "get", "name": "numTriangles", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40140,7 +40058,7 @@ } }, { - "__docId__": 2058, + "__docId__": 2049, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40161,7 +40079,7 @@ } }, { - "__docId__": 2061, + "__docId__": 2052, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40182,7 +40100,7 @@ } }, { - "__docId__": 2062, + "__docId__": 2053, "kind": "method", "name": "_getFlag", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40210,7 +40128,7 @@ } }, { - "__docId__": 2063, + "__docId__": 2054, "kind": "set", "name": "highlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40231,7 +40149,7 @@ } }, { - "__docId__": 2066, + "__docId__": 2057, "kind": "get", "name": "highlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40252,7 +40170,7 @@ } }, { - "__docId__": 2067, + "__docId__": 2058, "kind": "set", "name": "xrayed", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40273,7 +40191,7 @@ } }, { - "__docId__": 2070, + "__docId__": 2061, "kind": "get", "name": "xrayed", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40294,7 +40212,7 @@ } }, { - "__docId__": 2071, + "__docId__": 2062, "kind": "set", "name": "selected", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40315,7 +40233,7 @@ } }, { - "__docId__": 2074, + "__docId__": 2065, "kind": "get", "name": "selected", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40336,7 +40254,7 @@ } }, { - "__docId__": 2075, + "__docId__": 2066, "kind": "set", "name": "edges", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40357,7 +40275,7 @@ } }, { - "__docId__": 2078, + "__docId__": 2069, "kind": "get", "name": "edges", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40378,7 +40296,7 @@ } }, { - "__docId__": 2079, + "__docId__": 2070, "kind": "set", "name": "culled", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40399,7 +40317,7 @@ } }, { - "__docId__": 2082, + "__docId__": 2073, "kind": "get", "name": "culled", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40420,7 +40338,7 @@ } }, { - "__docId__": 2083, + "__docId__": 2074, "kind": "set", "name": "clippable", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40441,7 +40359,7 @@ } }, { - "__docId__": 2086, + "__docId__": 2077, "kind": "get", "name": "clippable", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40462,7 +40380,7 @@ } }, { - "__docId__": 2087, + "__docId__": 2078, "kind": "set", "name": "collidable", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40483,7 +40401,7 @@ } }, { - "__docId__": 2090, + "__docId__": 2081, "kind": "get", "name": "collidable", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40504,7 +40422,7 @@ } }, { - "__docId__": 2091, + "__docId__": 2082, "kind": "set", "name": "pickable", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40525,7 +40443,7 @@ } }, { - "__docId__": 2094, + "__docId__": 2085, "kind": "get", "name": "pickable", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40546,7 +40464,7 @@ } }, { - "__docId__": 2095, + "__docId__": 2086, "kind": "set", "name": "colorize", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40567,7 +40485,7 @@ } }, { - "__docId__": 2096, + "__docId__": 2087, "kind": "get", "name": "colorize", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40588,7 +40506,7 @@ } }, { - "__docId__": 2097, + "__docId__": 2088, "kind": "set", "name": "opacity", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40609,7 +40527,7 @@ } }, { - "__docId__": 2098, + "__docId__": 2089, "kind": "get", "name": "opacity", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40630,7 +40548,7 @@ } }, { - "__docId__": 2099, + "__docId__": 2090, "kind": "set", "name": "offset", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40651,7 +40569,7 @@ } }, { - "__docId__": 2100, + "__docId__": 2091, "kind": "get", "name": "offset", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40672,7 +40590,7 @@ } }, { - "__docId__": 2101, + "__docId__": 2092, "kind": "set", "name": "castsShadow", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40693,7 +40611,7 @@ } }, { - "__docId__": 2102, + "__docId__": 2093, "kind": "get", "name": "castsShadow", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40714,7 +40632,7 @@ } }, { - "__docId__": 2103, + "__docId__": 2094, "kind": "set", "name": "receivesShadow", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40735,7 +40653,7 @@ } }, { - "__docId__": 2104, + "__docId__": 2095, "kind": "get", "name": "receivesShadow", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40756,7 +40674,7 @@ } }, { - "__docId__": 2105, + "__docId__": 2096, "kind": "get", "name": "saoEnabled", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40778,7 +40696,7 @@ "abstract": true }, { - "__docId__": 2106, + "__docId__": 2097, "kind": "method", "name": "_finalize", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40795,7 +40713,7 @@ "return": null }, { - "__docId__": 2107, + "__docId__": 2098, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/PerformanceNode.js~PerformanceNode", @@ -40812,7 +40730,7 @@ "return": null }, { - "__docId__": 2108, + "__docId__": 2099, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/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};", @@ -40823,7 +40741,7 @@ "lineNumber": 1 }, { - "__docId__": 2109, + "__docId__": 2100, "kind": "variable", "name": "RENDER_PASSES", "memberof": "src/viewer/scene/PerformanceModel/lib/RENDER_PASSES.js", @@ -40843,7 +40761,7 @@ } }, { - "__docId__": 2110, + "__docId__": 2101, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/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};", @@ -40854,7 +40772,7 @@ "lineNumber": 1 }, { - "__docId__": 2111, + "__docId__": 2102, "kind": "class", "name": "ScratchMemory", "memberof": "src/viewer/scene/PerformanceModel/lib/ScratchMemory.js", @@ -40870,7 +40788,7 @@ "ignore": true }, { - "__docId__": 2112, + "__docId__": 2103, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/ScratchMemory.js~ScratchMemory", @@ -40884,7 +40802,7 @@ "undocument": true }, { - "__docId__": 2113, + "__docId__": 2104, "kind": "member", "name": "_uint8Arrays", "memberof": "src/viewer/scene/PerformanceModel/lib/ScratchMemory.js~ScratchMemory", @@ -40902,7 +40820,7 @@ } }, { - "__docId__": 2114, + "__docId__": 2105, "kind": "member", "name": "_float32Arrays", "memberof": "src/viewer/scene/PerformanceModel/lib/ScratchMemory.js~ScratchMemory", @@ -40920,7 +40838,7 @@ } }, { - "__docId__": 2115, + "__docId__": 2106, "kind": "method", "name": "_clear", "memberof": "src/viewer/scene/PerformanceModel/lib/ScratchMemory.js~ScratchMemory", @@ -40937,7 +40855,7 @@ "return": null }, { - "__docId__": 2118, + "__docId__": 2109, "kind": "method", "name": "getUInt8Array", "memberof": "src/viewer/scene/PerformanceModel/lib/ScratchMemory.js~ScratchMemory", @@ -40964,7 +40882,7 @@ } }, { - "__docId__": 2119, + "__docId__": 2110, "kind": "method", "name": "getFloat32Array", "memberof": "src/viewer/scene/PerformanceModel/lib/ScratchMemory.js~ScratchMemory", @@ -40991,7 +40909,7 @@ } }, { - "__docId__": 2120, + "__docId__": 2111, "kind": "variable", "name": "batchingLayerScratchMemory", "memberof": "src/viewer/scene/PerformanceModel/lib/ScratchMemory.js", @@ -41012,7 +40930,7 @@ "ignore": true }, { - "__docId__": 2121, + "__docId__": 2112, "kind": "variable", "name": "countUsers", "memberof": "src/viewer/scene/PerformanceModel/lib/ScratchMemory.js", @@ -41033,7 +40951,7 @@ "ignore": true }, { - "__docId__": 2122, + "__docId__": 2113, "kind": "function", "name": "getScratchMemory", "memberof": "src/viewer/scene/PerformanceModel/lib/ScratchMemory.js", @@ -41056,7 +40974,7 @@ } }, { - "__docId__": 2123, + "__docId__": 2114, "kind": "function", "name": "putScratchMemory", "memberof": "src/viewer/scene/PerformanceModel/lib/ScratchMemory.js", @@ -41075,7 +40993,7 @@ "return": null }, { - "__docId__": 2124, + "__docId__": 2115, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/compression.js", "content": "import {math} from \"../../math/math.js\";\nimport {WEBGL_INFO} from \"../../webglInfo.js\";\n\nconst translate = math.mat4();\nconst scale = math.mat4();\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 = 2000000;\n const maxInt = 65525;\n const xMultiplier = maxInt / xwid;\n const yMultiplier = maxInt / ywid;\n const zMultiplier = maxInt / zwid;\n for (let i = 0; i < lenPositions; i += 3) {\n quantizedPositions[i + 0] = Math.floor((positions[i + 0] - xmin) * xMultiplier);\n quantizedPositions[i + 1] = Math.floor((positions[i + 1] - ymin) * yMultiplier);\n quantizedPositions[i + 2] = Math.floor((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\nfunction transformAndOctEncodeNormals(worldNormalMatrix, normals, lenNormals, compressedNormals, lenCompressedNormals) {\n // http://jcgt.org/published/0003/02/01/\n let oct, dec, best, currentCos, bestCos;\n let i, ei;\n let localNormal = 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\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 new Int8Array(compressedNormals)\n}\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\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\nfunction dot(p, vec3) { // Dot product of a normal in an array against a candidate decoding\n return p[0] * vec3[0] + p[1] * vec3[1] + p[2] * vec3[2];\n}\n\nexport {\n quantizePositions,\n octEncodeNormals,\n transformAndOctEncodeNormals,\n octEncodeVec3,\n octDecodeVec2\n\n};", @@ -41086,7 +41004,7 @@ "lineNumber": 1 }, { - "__docId__": 2125, + "__docId__": 2116, "kind": "variable", "name": "translate", "memberof": "src/viewer/scene/PerformanceModel/lib/compression.js", @@ -41107,7 +41025,7 @@ "ignore": true }, { - "__docId__": 2126, + "__docId__": 2117, "kind": "variable", "name": "scale", "memberof": "src/viewer/scene/PerformanceModel/lib/compression.js", @@ -41128,7 +41046,7 @@ "ignore": true }, { - "__docId__": 2127, + "__docId__": 2118, "kind": "function", "name": "octEncodeNormal", "memberof": "src/viewer/scene/PerformanceModel/lib/compression.js", @@ -41176,7 +41094,7 @@ } }, { - "__docId__": 2128, + "__docId__": 2119, "kind": "function", "name": "dot", "memberof": "src/viewer/scene/PerformanceModel/lib/compression.js", @@ -41213,7 +41131,7 @@ "ignore": true }, { - "__docId__": 2129, + "__docId__": 2120, "kind": "function", "name": "quantizePositions", "memberof": "src/viewer/scene/PerformanceModel/lib/compression.js", @@ -41255,7 +41173,7 @@ } }, { - "__docId__": 2130, + "__docId__": 2121, "kind": "function", "name": "octEncodeNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/compression.js", @@ -41285,7 +41203,7 @@ } }, { - "__docId__": 2131, + "__docId__": 2122, "kind": "function", "name": "transformAndOctEncodeNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/compression.js", @@ -41339,7 +41257,7 @@ } }, { - "__docId__": 2132, + "__docId__": 2123, "kind": "function", "name": "octEncodeVec3", "memberof": "src/viewer/scene/PerformanceModel/lib/compression.js", @@ -41381,7 +41299,7 @@ } }, { - "__docId__": 2133, + "__docId__": 2124, "kind": "function", "name": "octDecodeVec2", "memberof": "src/viewer/scene/PerformanceModel/lib/compression.js", @@ -41411,7 +41329,7 @@ } }, { - "__docId__": 2134, + "__docId__": 2125, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js", "content": "import {WEBGL_INFO} from \"../../../../webglInfo.js\";\n\nconst bigIndicesSupported = WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\n\n/**\n * @private\n */\nclass LinesBatchingBuffer {\n\n constructor(maxGeometryBatchSize = 5000000) {\n\n if (bigIndicesSupported) {\n if (maxGeometryBatchSize > 5000000) {\n maxGeometryBatchSize = 5000000;\n }\n } else {\n if (maxGeometryBatchSize > 65530) {\n maxGeometryBatchSize = 65530;\n }\n }\n\n this.maxVerts = maxGeometryBatchSize;\n this.maxIndices = maxGeometryBatchSize * 3; // Rough rule-of-thumb\n this.positions = [];\n this.colors = [];\n this.flags = [];\n this.flags2 = [];\n this.offsets = [];\n this.indices = [];\n }\n}\n\nexport {LinesBatchingBuffer};", @@ -41422,7 +41340,7 @@ "lineNumber": 1 }, { - "__docId__": 2135, + "__docId__": 2126, "kind": "variable", "name": "bigIndicesSupported", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js", @@ -41443,7 +41361,7 @@ "ignore": true }, { - "__docId__": 2136, + "__docId__": 2127, "kind": "class", "name": "LinesBatchingBuffer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js", @@ -41459,7 +41377,7 @@ "ignore": true }, { - "__docId__": 2137, + "__docId__": 2128, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js~LinesBatchingBuffer", @@ -41473,7 +41391,7 @@ "undocument": true }, { - "__docId__": 2138, + "__docId__": 2129, "kind": "member", "name": "maxVerts", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js~LinesBatchingBuffer", @@ -41490,7 +41408,7 @@ } }, { - "__docId__": 2139, + "__docId__": 2130, "kind": "member", "name": "maxIndices", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js~LinesBatchingBuffer", @@ -41507,7 +41425,7 @@ } }, { - "__docId__": 2140, + "__docId__": 2131, "kind": "member", "name": "positions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js~LinesBatchingBuffer", @@ -41524,7 +41442,7 @@ } }, { - "__docId__": 2141, + "__docId__": 2132, "kind": "member", "name": "colors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js~LinesBatchingBuffer", @@ -41541,7 +41459,7 @@ } }, { - "__docId__": 2142, + "__docId__": 2133, "kind": "member", "name": "flags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js~LinesBatchingBuffer", @@ -41558,7 +41476,7 @@ } }, { - "__docId__": 2143, + "__docId__": 2134, "kind": "member", "name": "flags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js~LinesBatchingBuffer", @@ -41575,7 +41493,7 @@ } }, { - "__docId__": 2144, + "__docId__": 2135, "kind": "member", "name": "offsets", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js~LinesBatchingBuffer", @@ -41592,7 +41510,7 @@ } }, { - "__docId__": 2145, + "__docId__": 2136, "kind": "member", "name": "indices", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js~LinesBatchingBuffer", @@ -41609,7 +41527,7 @@ } }, { - "__docId__": 2146, + "__docId__": 2137, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js", "content": "import {WEBGL_INFO} from \"../../../../webglInfo.js\";\nimport {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 {getBatchingRenderers} from \"./LinesBatchingRenderers.js\";\nimport {LinesBatchingBuffer} from \"./LinesBatchingBuffer.js\";\nimport {quantizePositions} from \"../../compression.js\";\n\nconst tempVec4a = math.vec4([0, 0, 0, 1]);\nconst tempVec4b = math.vec4([0, 0, 0, 1]);\nconst tempVec4c = math.vec4([0, 0, 0, 1]);\nconst tempOBB3 = math.OBB3();\n\n/**\n * @private\n */\nclass LinesBatchingLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.positionsDecodeMatrix\n * @param cfg.maxGeometryBatchSize\n * @param cfg.rtcCenter\n * @param cfg.scratchMemory\n */\n constructor(model, cfg) {\n\n /**\n * Index of this LinesBatchingLayer in {@link PerformanceModel#_layerList}.\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._batchingRenderers = getBatchingRenderers(model.scene);\n this.model = model;\n this._buffer = new LinesBatchingBuffer(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 flags2Buf: null,\n indicesBuf: null,\n positionsDecodeMatrix: math.mat4(),\n rtcCenter: 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\n this._finalized = false;\n this._positionsDecodeMatrix = cfg.positionsDecodeMatrix;\n this._preCompressed = (!!this._positionsDecodeMatrix);\n\n if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n }\n\n /**\n * The axis-aligned World-space boundary of this LinesBatchingLayer's positions.\n * @type {*|Float64Array}\n */\n this.aabb = math.collapseAABB3();\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 cfg.positions Flat float Local-space positions array.\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.worldMatrix] Flat float 4x4 matrix\n * @param cfg.worldAABB Flat float AABB World-space AABB\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID\n */\n createPortion(cfg) {\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n const positions = cfg.positions;\n const indices = cfg.indices;\n const color = cfg.color;\n const opacity = cfg.opacity;\n const meshMatrix = cfg.meshMatrix;\n const worldMatrix = cfg.worldMatrix;\n const worldAABB = cfg.worldAABB;\n const pickColor = cfg.pickColor;\n\n const buffer = this._buffer;\n const positionsIndex = buffer.positions.length;\n const vertsIndex = positionsIndex / 3;\n const numVerts = positions.length / 3;\n const lenPositions = positions.length;\n\n if (this._preCompressed) {\n\n for (let i = 0, len = positions.length; i < len; i++) {\n buffer.positions.push(positions[i]);\n }\n\n const bounds = geometryCompressionUtils.getPositionsBounds(positions);\n\n const min = geometryCompressionUtils.decompressPosition(bounds.min, this._positionsDecodeMatrix, []);\n const max = geometryCompressionUtils.decompressPosition(bounds.max, this._positionsDecodeMatrix, []);\n\n worldAABB[0] = min[0];\n worldAABB[1] = min[1];\n worldAABB[2] = min[2];\n worldAABB[3] = max[0];\n worldAABB[4] = max[1];\n worldAABB[5] = max[2];\n\n if (worldMatrix) {\n math.AABB3ToOBB3(worldAABB, tempOBB3);\n math.transformOBB3(worldMatrix, tempOBB3);\n math.OBB3ToAABB3(tempOBB3, worldAABB);\n }\n\n } else {\n\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 if (meshMatrix) {\n\n for (let i = positionsBase, len = positionsBase + lenPositions; i < len; i += 3) {\n\n tempVec4a[0] = buffer.positions[i + 0];\n tempVec4a[1] = buffer.positions[i + 1];\n tempVec4a[2] = buffer.positions[i + 2];\n\n math.transformPoint4(meshMatrix, tempVec4a, tempVec4b);\n\n buffer.positions[i + 0] = tempVec4b[0];\n buffer.positions[i + 1] = tempVec4b[1];\n buffer.positions[i + 2] = tempVec4b[2];\n\n math.expandAABB3Point3(this._modelAABB, tempVec4b);\n\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4b, tempVec4c);\n math.expandAABB3Point3(worldAABB, tempVec4c);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4b);\n }\n }\n\n } else {\n\n for (let i = positionsBase, len = positionsBase + lenPositions; i < len; i += 3) {\n\n tempVec4a[0] = buffer.positions[i + 0];\n tempVec4a[1] = buffer.positions[i + 1];\n tempVec4a[2] = buffer.positions[i + 2];\n\n math.expandAABB3Point3(this._modelAABB, tempVec4a);\n\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4a, tempVec4b);\n math.expandAABB3Point3(worldAABB, tempVec4b);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4a);\n }\n }\n }\n }\n\n if (this._state.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n worldAABB[0] += rtcCenter[0];\n worldAABB[1] += rtcCenter[1];\n worldAABB[2] += rtcCenter[2];\n worldAABB[3] += rtcCenter[0];\n worldAABB[4] += rtcCenter[1];\n worldAABB[5] += rtcCenter[2];\n }\n\n math.expandAABB3(this.aabb, worldAABB);\n\n if (color) {\n\n const r = color[0]; // Color is pre-quantized by PerformanceModel\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 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 this.model.error(\"Already 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._preCompressed) {\n state.positionsDecodeMatrix = this._positionsDecodeMatrix;\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;\n const flags = new Uint8Array(flagsLength);\n const flags2 = new Uint8Array(flagsLength);\n let notNormalized = false;\n let normalized = true;\n state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags, flags.length, 4, gl.DYNAMIC_DRAW, notNormalized);\n state.flags2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags2, flags2.length, 4, gl.DYNAMIC_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 const bigIndicesSupported = WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\n\n if (buffer.indices.length > 0) {\n const indices = bigIndicesSupported ? new Uint32Array(buffer.indices) : new Uint16Array(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 this._setFlags(portionId, flags, meshTransparent);\n this._setFlags2(portionId, flags);\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._setFlags2(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 _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 * 4;\n const lenFlags = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(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 edges = !!(flags & ENTITY_FLAGS.EDGES);\n const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);\n const culled = !!(flags & ENTITY_FLAGS.CULLED);\n\n // Color\n\n let f0;\n if (!visible || culled || xrayed) {\n f0 = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (transparent) {\n f0 = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n f0 = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n // Silhouette\n\n let f1;\n if (!visible || culled) {\n f1 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f1 = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n f1 = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n f1 = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n f1 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Pick\n\n let f3 = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n for (let i = 0; i < lenFlags; i += 4) {\n tempArray[i + 0] = f0; // x - color\n tempArray[i + 1] = f1; // y - silhouette - select/highlight/xray\n tempArray[i + 2] = 0; // z - edges\n tempArray[i + 3] = f3; // w - pickable\n }\n\n this._state.flagsBuf.setData(tempArray, firstFlag, lenFlags);\n }\n\n _setFlags2(portionId, flags) {\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 firstFlag = vertexBase * 4;\n const lenFlags = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenFlags);\n const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n for (let i = 0; i < lenFlags; i += 4) {\n tempArray[i + 0] = clippable;\n }\n this._state.flags2Buf.setData(tempArray, firstFlag, lenFlags);\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._batchingRenderers.colorRenderer) {\n this._batchingRenderers.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._batchingRenderers.colorRenderer) {\n this._batchingRenderers.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._batchingRenderers.silhouetteRenderer) {\n this._batchingRenderers.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._batchingRenderers.silhouetteRenderer) {\n this._batchingRenderers.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._batchingRenderers.silhouetteRenderer) {\n this._batchingRenderers.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 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.flags2Buf) {\n state.flags2Buf.destroy();\n state.flags2Buf = null;\n }\n if (state.indicesBuf) {\n state.indicesBuf.destroy();\n state.indicessBuf = null;\n }\n state.destroy();\n }\n}\n\nexport {LinesBatchingLayer};", @@ -41620,7 +41538,7 @@ "lineNumber": 1 }, { - "__docId__": 2147, + "__docId__": 2138, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js", @@ -41641,7 +41559,7 @@ "ignore": true }, { - "__docId__": 2148, + "__docId__": 2139, "kind": "variable", "name": "tempVec4b", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js", @@ -41662,7 +41580,7 @@ "ignore": true }, { - "__docId__": 2149, + "__docId__": 2140, "kind": "variable", "name": "tempVec4c", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js", @@ -41683,7 +41601,7 @@ "ignore": true }, { - "__docId__": 2150, + "__docId__": 2141, "kind": "variable", "name": "tempOBB3", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js", @@ -41704,7 +41622,7 @@ "ignore": true }, { - "__docId__": 2151, + "__docId__": 2142, "kind": "class", "name": "LinesBatchingLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js", @@ -41720,7 +41638,7 @@ "ignore": true }, { - "__docId__": 2152, + "__docId__": 2143, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -41805,7 +41723,7 @@ ] }, { - "__docId__": 2153, + "__docId__": 2144, "kind": "member", "name": "layerIndex", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -41824,7 +41742,7 @@ } }, { - "__docId__": 2154, + "__docId__": 2145, "kind": "member", "name": "_batchingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -41842,7 +41760,7 @@ } }, { - "__docId__": 2155, + "__docId__": 2146, "kind": "member", "name": "model", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -41859,7 +41777,7 @@ } }, { - "__docId__": 2156, + "__docId__": 2147, "kind": "member", "name": "_buffer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -41877,7 +41795,7 @@ } }, { - "__docId__": 2157, + "__docId__": 2148, "kind": "member", "name": "_scratchMemory", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -41895,7 +41813,7 @@ } }, { - "__docId__": 2158, + "__docId__": 2149, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -41913,7 +41831,7 @@ } }, { - "__docId__": 2159, + "__docId__": 2150, "kind": "member", "name": "_numPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -41931,7 +41849,7 @@ } }, { - "__docId__": 2160, + "__docId__": 2151, "kind": "member", "name": "_numVisibleLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -41949,7 +41867,7 @@ } }, { - "__docId__": 2161, + "__docId__": 2152, "kind": "member", "name": "_numTransparentLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -41967,7 +41885,7 @@ } }, { - "__docId__": 2162, + "__docId__": 2153, "kind": "member", "name": "_numXRayedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -41985,7 +41903,7 @@ } }, { - "__docId__": 2163, + "__docId__": 2154, "kind": "member", "name": "_numSelectedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42003,7 +41921,7 @@ } }, { - "__docId__": 2164, + "__docId__": 2155, "kind": "member", "name": "_numHighlightedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42021,7 +41939,7 @@ } }, { - "__docId__": 2165, + "__docId__": 2156, "kind": "member", "name": "_numClippableLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42039,7 +41957,7 @@ } }, { - "__docId__": 2166, + "__docId__": 2157, "kind": "member", "name": "_numEdgesLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42057,7 +41975,7 @@ } }, { - "__docId__": 2167, + "__docId__": 2158, "kind": "member", "name": "_numPickableLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42075,7 +41993,7 @@ } }, { - "__docId__": 2168, + "__docId__": 2159, "kind": "member", "name": "_numCulledLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42093,7 +42011,7 @@ } }, { - "__docId__": 2169, + "__docId__": 2160, "kind": "member", "name": "_modelAABB", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42111,7 +42029,7 @@ } }, { - "__docId__": 2170, + "__docId__": 2161, "kind": "member", "name": "_portions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42129,7 +42047,7 @@ } }, { - "__docId__": 2171, + "__docId__": 2162, "kind": "member", "name": "_finalized", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42147,7 +42065,7 @@ } }, { - "__docId__": 2172, + "__docId__": 2163, "kind": "member", "name": "_positionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42165,7 +42083,7 @@ } }, { - "__docId__": 2173, + "__docId__": 2164, "kind": "member", "name": "_preCompressed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42183,7 +42101,7 @@ } }, { - "__docId__": 2174, + "__docId__": 2165, "kind": "member", "name": "aabb", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42203,7 +42121,7 @@ } }, { - "__docId__": 2175, + "__docId__": 2166, "kind": "method", "name": "canCreatePortion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42252,7 +42170,7 @@ } }, { - "__docId__": 2176, + "__docId__": 2167, "kind": "method", "name": "createPortion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42361,7 +42279,7 @@ } }, { - "__docId__": 2177, + "__docId__": 2168, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42376,7 +42294,7 @@ "return": null }, { - "__docId__": 2180, + "__docId__": 2171, "kind": "method", "name": "initFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42411,7 +42329,7 @@ "return": null }, { - "__docId__": 2181, + "__docId__": 2172, "kind": "method", "name": "setVisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42446,7 +42364,7 @@ "return": null }, { - "__docId__": 2182, + "__docId__": 2173, "kind": "method", "name": "setHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42481,7 +42399,7 @@ "return": null }, { - "__docId__": 2183, + "__docId__": 2174, "kind": "method", "name": "setXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42516,7 +42434,7 @@ "return": null }, { - "__docId__": 2184, + "__docId__": 2175, "kind": "method", "name": "setSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42551,7 +42469,7 @@ "return": null }, { - "__docId__": 2185, + "__docId__": 2176, "kind": "method", "name": "setEdges", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42586,7 +42504,7 @@ "return": null }, { - "__docId__": 2186, + "__docId__": 2177, "kind": "method", "name": "setClippable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42615,7 +42533,7 @@ "return": null }, { - "__docId__": 2187, + "__docId__": 2178, "kind": "method", "name": "setCulled", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42650,7 +42568,7 @@ "return": null }, { - "__docId__": 2188, + "__docId__": 2179, "kind": "method", "name": "setCollidable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42679,7 +42597,7 @@ "return": null }, { - "__docId__": 2189, + "__docId__": 2180, "kind": "method", "name": "setPickable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42714,7 +42632,7 @@ "return": null }, { - "__docId__": 2190, + "__docId__": 2181, "kind": "method", "name": "setColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42743,7 +42661,7 @@ "return": null }, { - "__docId__": 2191, + "__docId__": 2182, "kind": "method", "name": "setTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42778,7 +42696,7 @@ "return": null }, { - "__docId__": 2192, + "__docId__": 2183, "kind": "method", "name": "_setFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42814,7 +42732,7 @@ "return": null }, { - "__docId__": 2193, + "__docId__": 2184, "kind": "method", "name": "_setFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42844,7 +42762,7 @@ "return": null }, { - "__docId__": 2194, + "__docId__": 2185, "kind": "method", "name": "setOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42873,7 +42791,7 @@ "return": null }, { - "__docId__": 2195, + "__docId__": 2186, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42902,7 +42820,7 @@ "return": null }, { - "__docId__": 2196, + "__docId__": 2187, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42931,7 +42849,7 @@ "return": null }, { - "__docId__": 2197, + "__docId__": 2188, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42960,7 +42878,7 @@ "return": null }, { - "__docId__": 2198, + "__docId__": 2189, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -42989,7 +42907,7 @@ "return": null }, { - "__docId__": 2199, + "__docId__": 2190, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -43018,7 +42936,7 @@ "return": null }, { - "__docId__": 2200, + "__docId__": 2191, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -43047,7 +42965,7 @@ "return": null }, { - "__docId__": 2201, + "__docId__": 2192, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -43076,7 +42994,7 @@ "return": null }, { - "__docId__": 2202, + "__docId__": 2193, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -43105,7 +43023,7 @@ "return": null }, { - "__docId__": 2203, + "__docId__": 2194, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -43134,7 +43052,7 @@ "return": null }, { - "__docId__": 2204, + "__docId__": 2195, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -43163,7 +43081,7 @@ "return": null }, { - "__docId__": 2205, + "__docId__": 2196, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -43192,7 +43110,7 @@ "return": null }, { - "__docId__": 2206, + "__docId__": 2197, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -43221,7 +43139,7 @@ "return": null }, { - "__docId__": 2207, + "__docId__": 2198, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -43244,7 +43162,7 @@ "return": null }, { - "__docId__": 2208, + "__docId__": 2199, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -43267,7 +43185,7 @@ "return": null }, { - "__docId__": 2209, + "__docId__": 2200, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -43290,7 +43208,7 @@ "return": null }, { - "__docId__": 2210, + "__docId__": 2201, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -43313,7 +43231,7 @@ "return": null }, { - "__docId__": 2211, + "__docId__": 2202, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -43336,7 +43254,7 @@ "return": null }, { - "__docId__": 2212, + "__docId__": 2203, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js~LinesBatchingLayer", @@ -43352,7 +43270,7 @@ "return": null }, { - "__docId__": 2213, + "__docId__": 2204, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js", "content": "import {LinesBatchingColorRenderer} from \"./renderers/LinesBatchingColorRenderer.js\";\nimport {LinesBatchingSilhouetteRenderer} from \"./renderers/LinesBatchingSilhouetteRenderer.js\";\n\n/**\n * @private\n */\nclass LinesBatchingRenderers {\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 }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new LinesBatchingColorRenderer(this._scene, false);\n }\n return this._colorRenderer;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new LinesBatchingSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n }\n}\n\nconst cachedRenderers = {};\n\nfunction getBatchingRenderers(scene) {\n const sceneId = scene.id;\n let batchingRenderers = cachedRenderers[sceneId];\n if (!batchingRenderers) {\n batchingRenderers = new LinesBatchingRenderers(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\nexport {getBatchingRenderers};", @@ -43363,7 +43281,7 @@ "lineNumber": 1 }, { - "__docId__": 2214, + "__docId__": 2205, "kind": "class", "name": "LinesBatchingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js", @@ -43379,7 +43297,7 @@ "ignore": true }, { - "__docId__": 2215, + "__docId__": 2206, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js~LinesBatchingRenderers", @@ -43393,7 +43311,7 @@ "undocument": true }, { - "__docId__": 2216, + "__docId__": 2207, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js~LinesBatchingRenderers", @@ -43411,7 +43329,7 @@ } }, { - "__docId__": 2217, + "__docId__": 2208, "kind": "method", "name": "_compile", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js~LinesBatchingRenderers", @@ -43428,7 +43346,7 @@ "return": null }, { - "__docId__": 2218, + "__docId__": 2209, "kind": "member", "name": "_colorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js~LinesBatchingRenderers", @@ -43446,7 +43364,7 @@ } }, { - "__docId__": 2219, + "__docId__": 2210, "kind": "member", "name": "_silhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js~LinesBatchingRenderers", @@ -43464,7 +43382,7 @@ } }, { - "__docId__": 2220, + "__docId__": 2211, "kind": "get", "name": "colorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js~LinesBatchingRenderers", @@ -43483,7 +43401,7 @@ } }, { - "__docId__": 2222, + "__docId__": 2213, "kind": "get", "name": "silhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js~LinesBatchingRenderers", @@ -43502,7 +43420,7 @@ } }, { - "__docId__": 2224, + "__docId__": 2215, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js~LinesBatchingRenderers", @@ -43519,7 +43437,7 @@ "return": null }, { - "__docId__": 2225, + "__docId__": 2216, "kind": "variable", "name": "cachedRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js", @@ -43540,7 +43458,7 @@ "ignore": true }, { - "__docId__": 2226, + "__docId__": 2217, "kind": "function", "name": "getBatchingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js", @@ -43570,7 +43488,7 @@ } }, { - "__docId__": 2227, + "__docId__": 2218, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js", "content": "import {Program} from \"../../../../../webgl/Program.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../../math/rtcCoords.js\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass LinesBatchingColorRenderer {\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, batchingLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = batchingLayer.model;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.lineWidth(scene.linesMaterial.lineWidth);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\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(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\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.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Lines batching color 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 src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\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 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(\"vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Lines batching color fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying vec4 vColor;\");\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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\" gl_FragColor = vColor;\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\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\nexport {LinesBatchingColorRenderer};", @@ -43581,7 +43499,7 @@ "lineNumber": 1 }, { - "__docId__": 2228, + "__docId__": 2219, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js", @@ -43602,7 +43520,7 @@ "ignore": true }, { - "__docId__": 2229, + "__docId__": 2220, "kind": "class", "name": "LinesBatchingColorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js", @@ -43618,7 +43536,7 @@ "ignore": true }, { - "__docId__": 2230, + "__docId__": 2221, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43632,7 +43550,7 @@ "undocument": true }, { - "__docId__": 2231, + "__docId__": 2222, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43650,7 +43568,7 @@ } }, { - "__docId__": 2232, + "__docId__": 2223, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43668,7 +43586,7 @@ } }, { - "__docId__": 2233, + "__docId__": 2224, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43688,7 +43606,7 @@ } }, { - "__docId__": 2234, + "__docId__": 2225, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43709,7 +43627,7 @@ } }, { - "__docId__": 2235, + "__docId__": 2226, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43744,7 +43662,7 @@ "return": null }, { - "__docId__": 2236, + "__docId__": 2227, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43761,7 +43679,7 @@ "return": null }, { - "__docId__": 2237, + "__docId__": 2228, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43779,7 +43697,7 @@ } }, { - "__docId__": 2238, + "__docId__": 2229, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43796,7 +43714,7 @@ } }, { - "__docId__": 2239, + "__docId__": 2230, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43814,7 +43732,7 @@ } }, { - "__docId__": 2240, + "__docId__": 2231, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43832,7 +43750,7 @@ } }, { - "__docId__": 2241, + "__docId__": 2232, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43850,7 +43768,7 @@ } }, { - "__docId__": 2242, + "__docId__": 2233, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43868,7 +43786,7 @@ } }, { - "__docId__": 2243, + "__docId__": 2234, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43886,7 +43804,7 @@ } }, { - "__docId__": 2244, + "__docId__": 2235, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43904,7 +43822,7 @@ } }, { - "__docId__": 2245, + "__docId__": 2236, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43922,7 +43840,7 @@ } }, { - "__docId__": 2246, + "__docId__": 2237, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43940,7 +43858,7 @@ } }, { - "__docId__": 2247, + "__docId__": 2238, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43958,7 +43876,7 @@ } }, { - "__docId__": 2248, + "__docId__": 2239, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43976,7 +43894,7 @@ } }, { - "__docId__": 2249, + "__docId__": 2240, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -43994,7 +43912,7 @@ } }, { - "__docId__": 2250, + "__docId__": 2241, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -44012,7 +43930,7 @@ } }, { - "__docId__": 2251, + "__docId__": 2242, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -44036,7 +43954,7 @@ "return": null }, { - "__docId__": 2252, + "__docId__": 2243, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -44057,7 +43975,7 @@ } }, { - "__docId__": 2253, + "__docId__": 2244, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -44078,7 +43996,7 @@ } }, { - "__docId__": 2254, + "__docId__": 2245, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -44099,7 +44017,7 @@ } }, { - "__docId__": 2255, + "__docId__": 2246, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -44115,7 +44033,7 @@ "return": null }, { - "__docId__": 2257, + "__docId__": 2248, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js~LinesBatchingColorRenderer", @@ -44131,7 +44049,7 @@ "return": null }, { - "__docId__": 2259, + "__docId__": 2250, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.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\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst defaultColor = new Float32Array([1, 1, 1]);\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass LinesBatchingSilhouetteRenderer {\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, batchingLayer, renderPass) {\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 rtcCenter = batchingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\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\n const viewMat = (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix;\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMat);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.lineWidth(scene.linesMaterial.lineWidth);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\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(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uColor = program.getLocation(\"color\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n\n const src = [];\n\n src.push(\"// Lines batching silhouette vertex shader\");\n\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\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n src.push(\"uniform vec4 color;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\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(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(\"vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Lines batching silhouette 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 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = 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\nexport {LinesBatchingSilhouetteRenderer};", @@ -44142,7 +44060,7 @@ "lineNumber": 1 }, { - "__docId__": 2260, + "__docId__": 2251, "kind": "variable", "name": "defaultColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js", @@ -44163,7 +44081,7 @@ "ignore": true }, { - "__docId__": 2261, + "__docId__": 2252, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js", @@ -44184,7 +44102,7 @@ "ignore": true }, { - "__docId__": 2262, + "__docId__": 2253, "kind": "class", "name": "LinesBatchingSilhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js", @@ -44200,7 +44118,7 @@ "ignore": true }, { - "__docId__": 2263, + "__docId__": 2254, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44214,7 +44132,7 @@ "undocument": true }, { - "__docId__": 2264, + "__docId__": 2255, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44232,7 +44150,7 @@ } }, { - "__docId__": 2265, + "__docId__": 2256, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44250,7 +44168,7 @@ } }, { - "__docId__": 2266, + "__docId__": 2257, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44270,7 +44188,7 @@ } }, { - "__docId__": 2267, + "__docId__": 2258, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44291,7 +44209,7 @@ } }, { - "__docId__": 2268, + "__docId__": 2259, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44326,7 +44244,7 @@ "return": null }, { - "__docId__": 2269, + "__docId__": 2260, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44343,7 +44261,7 @@ "return": null }, { - "__docId__": 2270, + "__docId__": 2261, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44361,7 +44279,7 @@ } }, { - "__docId__": 2271, + "__docId__": 2262, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44378,7 +44296,7 @@ } }, { - "__docId__": 2272, + "__docId__": 2263, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44396,7 +44314,7 @@ } }, { - "__docId__": 2273, + "__docId__": 2264, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44414,7 +44332,7 @@ } }, { - "__docId__": 2274, + "__docId__": 2265, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44432,7 +44350,7 @@ } }, { - "__docId__": 2275, + "__docId__": 2266, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44450,7 +44368,7 @@ } }, { - "__docId__": 2276, + "__docId__": 2267, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44468,7 +44386,7 @@ } }, { - "__docId__": 2277, + "__docId__": 2268, "kind": "member", "name": "_uColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44486,7 +44404,7 @@ } }, { - "__docId__": 2278, + "__docId__": 2269, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44504,7 +44422,7 @@ } }, { - "__docId__": 2279, + "__docId__": 2270, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44522,7 +44440,7 @@ } }, { - "__docId__": 2280, + "__docId__": 2271, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44540,7 +44458,7 @@ } }, { - "__docId__": 2281, + "__docId__": 2272, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44558,7 +44476,7 @@ } }, { - "__docId__": 2282, + "__docId__": 2273, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44576,7 +44494,7 @@ } }, { - "__docId__": 2283, + "__docId__": 2274, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44594,7 +44512,7 @@ } }, { - "__docId__": 2284, + "__docId__": 2275, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44611,7 +44529,7 @@ "return": null }, { - "__docId__": 2285, + "__docId__": 2276, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44632,7 +44550,7 @@ } }, { - "__docId__": 2286, + "__docId__": 2277, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44653,7 +44571,7 @@ } }, { - "__docId__": 2287, + "__docId__": 2278, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44674,7 +44592,7 @@ } }, { - "__docId__": 2288, + "__docId__": 2279, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44690,7 +44608,7 @@ "return": null }, { - "__docId__": 2290, + "__docId__": 2281, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js~LinesBatchingSilhouetteRenderer", @@ -44706,7 +44624,7 @@ "return": null }, { - "__docId__": 2292, + "__docId__": 2283, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js", "content": "import {WEBGL_INFO} from \"../../../../webglInfo.js\";\nimport {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 {getInstancingRenderers} from \"./LinesInstancingRenderers.js\";\nimport {quantizePositions} from \"../../compression.js\";\n\nconst bigIndicesSupported = WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\n\nconst tempUint8Vec4 = new Uint8Array(4);\n\nconst tempVec4a = math.vec4([0, 0, 0, 1]);\nconst tempVec4b = math.vec4([0, 0, 0, 1]);\nconst tempVec4c = math.vec4([0, 0, 0, 1]);\n\nconst tempVec3fa = new Float32Array(3);\n\n/**\n * @private\n */\nclass LinesInstancingLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.positions Flat float Local-space positions array.\n * @param cfg.indices Flat int indices array.\n * @param cfg.rtcCenter\n */\n constructor(model, cfg) {\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"LinesInstancingLayer\";\n\n /**\n * Index of this InstancingLayer in PerformanceModel#_layerList\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._linesInstancingRenderers = getInstancingRenderers(model.scene);\n this.model = model;\n this._aabb = math.collapseAABB3();\n\n const gl = model.scene.canvas.gl;\n\n const stateCfg = {\n positionsDecodeMatrix: math.mat4(),\n numInstances: 0,\n obb: math.OBB3(),\n rtcCenter: null\n };\n\n const preCompressed = (!!cfg.positionsDecodeMatrix);\n\n if (cfg.positions) {\n\n if (preCompressed) {\n\n let normalized = false;\n stateCfg.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, cfg.positions, cfg.positions.length, 3, gl.STATIC_DRAW, normalized);\n stateCfg.positionsDecodeMatrix.set(cfg.positionsDecodeMatrix);\n\n let localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, cfg.positions);\n geometryCompressionUtils.decompressAABB(localAABB, stateCfg.positionsDecodeMatrix);\n math.AABB3ToOBB3(localAABB, stateCfg.obb);\n\n } else {\n\n let lenPositions = cfg.positions.length;\n let localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, cfg.positions);\n math.AABB3ToOBB3(localAABB, stateCfg.obb);\n const quantizedPositions = quantizePositions(cfg.positions, localAABB, stateCfg.positionsDecodeMatrix);\n let normalized = false;\n stateCfg.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, lenPositions, 3, gl.STATIC_DRAW, normalized);\n }\n }\n\n if (cfg.indices) {\n stateCfg.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, bigIndicesSupported ? new Uint32Array(cfg.indices) : new Uint16Array(cfg.indices), cfg.indices.length, 1, gl.STATIC_DRAW);\n }\n\n this._state = new RenderState(stateCfg);\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.indices) ? cfg.indices.length / 3 : 0;\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\n if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n }\n\n this._finalized = false;\n\n /**\n * The axis-aligned World-space boundary of this InstancingLayer's positions.\n * @type {*|Float64Array}\n */\n this.aabb = math.collapseAABB3();\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 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 * @param [cfg.worldMatrix] Flat float 4x4 matrix.\n * @param cfg.aabb Flat float AABB.\n * @returns {number} Portion ID.\n */\n createPortion(cfg) {\n\n const color = cfg.color;\n const opacity = cfg.opacity;\n const meshMatrix = cfg.meshMatrix;\n const worldMatrix = cfg.worldMatrix;\n const worldAABB = cfg.aabb;\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n // TODO: find AABB for portion by transforming the geometry local AABB by the given meshMatrix?\n\n const r = color[0]; // Color is pre-quantized by PerformanceModel\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 // Expand AABB\n\n math.collapseAABB3(worldAABB);\n const obb = this._state.obb;\n const lenPositions = obb.length;\n for (let i = 0; i < lenPositions; i += 4) {\n tempVec4a[0] = obb[i + 0];\n tempVec4a[1] = obb[i + 1];\n tempVec4a[2] = obb[i + 2];\n math.transformPoint4(meshMatrix, tempVec4a, tempVec4b);\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4b, tempVec4c);\n math.expandAABB3Point3(worldAABB, tempVec4c);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4b);\n }\n }\n\n if (this._state.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n worldAABB[0] += rtcCenter[0];\n worldAABB[1] += rtcCenter[1];\n worldAABB[2] += rtcCenter[2];\n worldAABB[3] += rtcCenter[0];\n worldAABB[4] += rtcCenter[1];\n worldAABB[5] += rtcCenter[2];\n }\n\n math.expandAABB3(this.aabb, worldAABB);\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 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 colorsLength = this._colors.length;\n const flagsLength = colorsLength;\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 let normalized = true;\n this._state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(flagsLength), flagsLength, 4, gl.DYNAMIC_DRAW, notNormalized);\n this._state.flags2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(flagsLength), flagsLength, 4, gl.DYNAMIC_DRAW, normalized);\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 (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._finalized = true;\n }\n\n // The following setters are called by PerformanceMesh, in turn called by PerformanceNode, 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 this._setFlags2(portionId, flags);\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._setFlags2(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._setFlags2(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 _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 // Normal fill\n\n let f0;\n if (!visible || culled || xrayed) {\n f0 = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (meshTransparent) {\n f0 = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n f0 = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n // Emphasis fill\n\n let f1;\n if (!visible || culled) {\n f1 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f1 = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n f1 = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n f1 = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n f1 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Edges\n\n let f2 = 0;\n if (!visible || culled) {\n f2 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f2 = RENDER_PASSES.EDGES_SELECTED;\n } else if (highlighted) {\n f2 = RENDER_PASSES.EDGES_HIGHLIGHTED;\n } else if (xrayed) {\n f2 = RENDER_PASSES.EDGES_XRAYED;\n } else if (edges) {\n if (meshTransparent) {\n f2 = RENDER_PASSES.EDGES_COLOR_TRANSPARENT;\n } else {\n f2 = RENDER_PASSES.EDGES_COLOR_OPAQUE;\n }\n } else {\n f2 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Pick\n\n let f3 = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n tempUint8Vec4[0] = f0; // x - normal fill\n tempUint8Vec4[1] = f1; // y - emphasis fill\n tempUint8Vec4[2] = f2; // z - edges\n tempUint8Vec4[3] = f3; // w - pick\n\n this._state.flagsBuf.setData(tempUint8Vec4, portionId * 4, 4);\n }\n\n _setFlags2(portionId, flags) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n tempUint8Vec4[0] = clippable;\n\n this._state.flags2Buf.setData(tempUint8Vec4, portionId * 4, 4);\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 // ---------------------- 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._linesInstancingRenderers.colorRenderer) {\n this._linesInstancingRenderers.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._linesInstancingRenderers.colorRenderer) {\n this._linesInstancingRenderers.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._linesInstancingRenderers.silhouetteRenderer) {\n this._linesInstancingRenderers.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._linesInstancingRenderers.silhouetteRenderer) {\n this._linesInstancingRenderers.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._linesInstancingRenderers.silhouetteRenderer) {\n this._linesInstancingRenderers.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 // ---------------------- 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.flags2Buf) {\n state.flags2Buf.destroy();\n state.flags2Buf = 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.indicesBuf) {\n state.indicesBuf.destroy();\n state.indicessBuf = null;\n }\n state.destroy();\n }\n}\n\nexport {LinesInstancingLayer};", @@ -44717,7 +44635,7 @@ "lineNumber": 1 }, { - "__docId__": 2293, + "__docId__": 2284, "kind": "variable", "name": "bigIndicesSupported", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js", @@ -44738,7 +44656,7 @@ "ignore": true }, { - "__docId__": 2294, + "__docId__": 2285, "kind": "variable", "name": "tempUint8Vec4", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js", @@ -44759,7 +44677,7 @@ "ignore": true }, { - "__docId__": 2295, + "__docId__": 2286, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js", @@ -44780,7 +44698,7 @@ "ignore": true }, { - "__docId__": 2296, + "__docId__": 2287, "kind": "variable", "name": "tempVec4b", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js", @@ -44801,7 +44719,7 @@ "ignore": true }, { - "__docId__": 2297, + "__docId__": 2288, "kind": "variable", "name": "tempVec4c", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js", @@ -44822,7 +44740,7 @@ "ignore": true }, { - "__docId__": 2298, + "__docId__": 2289, "kind": "variable", "name": "tempVec3fa", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js", @@ -44843,7 +44761,7 @@ "ignore": true }, { - "__docId__": 2299, + "__docId__": 2290, "kind": "class", "name": "LinesInstancingLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js", @@ -44859,7 +44777,7 @@ "ignore": true }, { - "__docId__": 2300, + "__docId__": 2291, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -44934,7 +44852,7 @@ ] }, { - "__docId__": 2301, + "__docId__": 2292, "kind": "member", "name": "sortId", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -44953,7 +44871,7 @@ } }, { - "__docId__": 2302, + "__docId__": 2293, "kind": "member", "name": "layerIndex", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -44972,7 +44890,7 @@ } }, { - "__docId__": 2303, + "__docId__": 2294, "kind": "member", "name": "_linesInstancingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -44990,7 +44908,7 @@ } }, { - "__docId__": 2304, + "__docId__": 2295, "kind": "member", "name": "model", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45007,7 +44925,7 @@ } }, { - "__docId__": 2305, + "__docId__": 2296, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45025,7 +44943,7 @@ } }, { - "__docId__": 2306, + "__docId__": 2297, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45043,7 +44961,7 @@ } }, { - "__docId__": 2307, + "__docId__": 2298, "kind": "member", "name": "_numPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45061,7 +44979,7 @@ } }, { - "__docId__": 2308, + "__docId__": 2299, "kind": "member", "name": "_numVisibleLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45079,7 +44997,7 @@ } }, { - "__docId__": 2309, + "__docId__": 2300, "kind": "member", "name": "_numTransparentLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45097,7 +45015,7 @@ } }, { - "__docId__": 2310, + "__docId__": 2301, "kind": "member", "name": "_numXRayedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45115,7 +45033,7 @@ } }, { - "__docId__": 2311, + "__docId__": 2302, "kind": "member", "name": "_numHighlightedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45133,7 +45051,7 @@ } }, { - "__docId__": 2312, + "__docId__": 2303, "kind": "member", "name": "_numSelectedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45151,7 +45069,7 @@ } }, { - "__docId__": 2313, + "__docId__": 2304, "kind": "member", "name": "_numClippableLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45169,7 +45087,7 @@ } }, { - "__docId__": 2314, + "__docId__": 2305, "kind": "member", "name": "_numEdgesLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45187,7 +45105,7 @@ } }, { - "__docId__": 2315, + "__docId__": 2306, "kind": "member", "name": "_numPickableLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45205,7 +45123,7 @@ } }, { - "__docId__": 2316, + "__docId__": 2307, "kind": "member", "name": "_numCulledLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45223,7 +45141,7 @@ } }, { - "__docId__": 2317, + "__docId__": 2308, "kind": "member", "name": "numIndices", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45240,7 +45158,7 @@ } }, { - "__docId__": 2318, + "__docId__": 2309, "kind": "member", "name": "_colors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45258,7 +45176,7 @@ } }, { - "__docId__": 2319, + "__docId__": 2310, "kind": "member", "name": "_offsets", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45276,7 +45194,7 @@ } }, { - "__docId__": 2320, + "__docId__": 2311, "kind": "member", "name": "_modelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45294,7 +45212,7 @@ } }, { - "__docId__": 2321, + "__docId__": 2312, "kind": "member", "name": "_modelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45312,7 +45230,7 @@ } }, { - "__docId__": 2322, + "__docId__": 2313, "kind": "member", "name": "_modelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45330,7 +45248,7 @@ } }, { - "__docId__": 2323, + "__docId__": 2314, "kind": "member", "name": "_portions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45348,7 +45266,7 @@ } }, { - "__docId__": 2324, + "__docId__": 2315, "kind": "member", "name": "_finalized", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45366,7 +45284,7 @@ } }, { - "__docId__": 2325, + "__docId__": 2316, "kind": "member", "name": "aabb", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45386,7 +45304,7 @@ } }, { - "__docId__": 2326, + "__docId__": 2317, "kind": "method", "name": "createPortion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45475,7 +45393,7 @@ } }, { - "__docId__": 2327, + "__docId__": 2318, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45491,7 +45409,7 @@ "return": null }, { - "__docId__": 2334, + "__docId__": 2325, "kind": "method", "name": "initFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45526,7 +45444,7 @@ "return": null }, { - "__docId__": 2335, + "__docId__": 2326, "kind": "method", "name": "setVisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45561,7 +45479,7 @@ "return": null }, { - "__docId__": 2336, + "__docId__": 2327, "kind": "method", "name": "setHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45596,7 +45514,7 @@ "return": null }, { - "__docId__": 2337, + "__docId__": 2328, "kind": "method", "name": "setXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45631,7 +45549,7 @@ "return": null }, { - "__docId__": 2338, + "__docId__": 2329, "kind": "method", "name": "setSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45666,7 +45584,7 @@ "return": null }, { - "__docId__": 2339, + "__docId__": 2330, "kind": "method", "name": "setEdges", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45701,7 +45619,7 @@ "return": null }, { - "__docId__": 2340, + "__docId__": 2331, "kind": "method", "name": "setClippable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45730,7 +45648,7 @@ "return": null }, { - "__docId__": 2341, + "__docId__": 2332, "kind": "method", "name": "setCollidable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45759,7 +45677,7 @@ "return": null }, { - "__docId__": 2342, + "__docId__": 2333, "kind": "method", "name": "setPickable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45794,7 +45712,7 @@ "return": null }, { - "__docId__": 2343, + "__docId__": 2334, "kind": "method", "name": "setCulled", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45829,7 +45747,7 @@ "return": null }, { - "__docId__": 2344, + "__docId__": 2335, "kind": "method", "name": "setColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45858,7 +45776,7 @@ "return": null }, { - "__docId__": 2345, + "__docId__": 2336, "kind": "method", "name": "setTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45893,7 +45811,7 @@ "return": null }, { - "__docId__": 2346, + "__docId__": 2337, "kind": "method", "name": "_setFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45929,7 +45847,7 @@ "return": null }, { - "__docId__": 2347, + "__docId__": 2338, "kind": "method", "name": "_setFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45959,7 +45877,7 @@ "return": null }, { - "__docId__": 2348, + "__docId__": 2339, "kind": "method", "name": "setOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -45988,7 +45906,7 @@ "return": null }, { - "__docId__": 2349, + "__docId__": 2340, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46017,7 +45935,7 @@ "return": null }, { - "__docId__": 2350, + "__docId__": 2341, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46046,7 +45964,7 @@ "return": null }, { - "__docId__": 2351, + "__docId__": 2342, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46075,7 +45993,7 @@ "return": null }, { - "__docId__": 2352, + "__docId__": 2343, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46104,7 +46022,7 @@ "return": null }, { - "__docId__": 2353, + "__docId__": 2344, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46133,7 +46051,7 @@ "return": null }, { - "__docId__": 2354, + "__docId__": 2345, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46162,7 +46080,7 @@ "return": null }, { - "__docId__": 2355, + "__docId__": 2346, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46191,7 +46109,7 @@ "return": null }, { - "__docId__": 2356, + "__docId__": 2347, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46220,7 +46138,7 @@ "return": null }, { - "__docId__": 2357, + "__docId__": 2348, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46249,7 +46167,7 @@ "return": null }, { - "__docId__": 2358, + "__docId__": 2349, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46278,7 +46196,7 @@ "return": null }, { - "__docId__": 2359, + "__docId__": 2350, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46307,7 +46225,7 @@ "return": null }, { - "__docId__": 2360, + "__docId__": 2351, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46336,7 +46254,7 @@ "return": null }, { - "__docId__": 2361, + "__docId__": 2352, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46365,7 +46283,7 @@ "return": null }, { - "__docId__": 2362, + "__docId__": 2353, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46394,7 +46312,7 @@ "return": null }, { - "__docId__": 2363, + "__docId__": 2354, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46423,7 +46341,7 @@ "return": null }, { - "__docId__": 2364, + "__docId__": 2355, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46452,7 +46370,7 @@ "return": null }, { - "__docId__": 2365, + "__docId__": 2356, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46481,7 +46399,7 @@ "return": null }, { - "__docId__": 2366, + "__docId__": 2357, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js~LinesInstancingLayer", @@ -46497,7 +46415,7 @@ "return": null }, { - "__docId__": 2367, + "__docId__": 2358, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js", "content": "import {LinesInstancingColorRenderer} from \"./renderers/LinesInstancingColorRenderer.js\";\nimport {LinesInstancingSilhouetteRenderer} from \"./renderers/LinesInstancingSilhouetteRenderer.js\";\n\n/**\n * @private\n */\nclass LinesInstancingRenderers {\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 }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new LinesInstancingColorRenderer(this._scene);\n }\n return this._colorRenderer;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new LinesInstancingSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n }\n}\n\nconst cachedRenderers = {};\n\nfunction getInstancingRenderers(scene) {\n const sceneId = scene.id;\n let instancingRenderers = cachedRenderers[sceneId];\n if (!instancingRenderers) {\n instancingRenderers = new LinesInstancingRenderers(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\nexport {getInstancingRenderers};", @@ -46508,7 +46426,7 @@ "lineNumber": 1 }, { - "__docId__": 2368, + "__docId__": 2359, "kind": "class", "name": "LinesInstancingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js", @@ -46524,7 +46442,7 @@ "ignore": true }, { - "__docId__": 2369, + "__docId__": 2360, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js~LinesInstancingRenderers", @@ -46538,7 +46456,7 @@ "undocument": true }, { - "__docId__": 2370, + "__docId__": 2361, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js~LinesInstancingRenderers", @@ -46556,7 +46474,7 @@ } }, { - "__docId__": 2371, + "__docId__": 2362, "kind": "method", "name": "_compile", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js~LinesInstancingRenderers", @@ -46573,7 +46491,7 @@ "return": null }, { - "__docId__": 2372, + "__docId__": 2363, "kind": "member", "name": "_colorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js~LinesInstancingRenderers", @@ -46591,7 +46509,7 @@ } }, { - "__docId__": 2373, + "__docId__": 2364, "kind": "member", "name": "_silhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js~LinesInstancingRenderers", @@ -46609,7 +46527,7 @@ } }, { - "__docId__": 2374, + "__docId__": 2365, "kind": "get", "name": "colorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js~LinesInstancingRenderers", @@ -46628,7 +46546,7 @@ } }, { - "__docId__": 2376, + "__docId__": 2367, "kind": "get", "name": "silhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js~LinesInstancingRenderers", @@ -46647,7 +46565,7 @@ } }, { - "__docId__": 2378, + "__docId__": 2369, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js~LinesInstancingRenderers", @@ -46664,7 +46582,7 @@ "return": null }, { - "__docId__": 2379, + "__docId__": 2370, "kind": "variable", "name": "cachedRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js", @@ -46685,7 +46603,7 @@ "ignore": true }, { - "__docId__": 2380, + "__docId__": 2371, "kind": "function", "name": "getInstancingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js", @@ -46715,7 +46633,7 @@ } }, { - "__docId__": 2381, + "__docId__": 2372, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js", "content": "import {Program} from \"../../../../../webgl/Program.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../../math/rtcCoords.js\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass LinesInstancingColorRenderer {\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, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.lineWidth(scene.linesMaterial.lineWidth);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n\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.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._aPosition = program.getAttribute(\"position\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aOffset = program.getAttribute(\"offset\");\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uOcclusionTexture = \"uOcclusionTexture\";\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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Lines instancing color 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\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\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 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(\"vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Lines instancing color fragment 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(\"#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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying vec4 vColor;\");\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 (i = 0, len = sectionPlanesState.sectionPlanes.length; 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(texture2D(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" gl_FragColor = vec4(vColor.rgb * ambient, vColor.a);\");\n } else {\n src.push(\" gl_FragColor = vColor;\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\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\nexport {LinesInstancingColorRenderer};", @@ -46726,7 +46644,7 @@ "lineNumber": 1 }, { - "__docId__": 2382, + "__docId__": 2373, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js", @@ -46747,7 +46665,7 @@ "ignore": true }, { - "__docId__": 2383, + "__docId__": 2374, "kind": "class", "name": "LinesInstancingColorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js", @@ -46763,7 +46681,7 @@ "ignore": true }, { - "__docId__": 2384, + "__docId__": 2375, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -46777,7 +46695,7 @@ "undocument": true }, { - "__docId__": 2385, + "__docId__": 2376, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -46795,7 +46713,7 @@ } }, { - "__docId__": 2386, + "__docId__": 2377, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -46813,7 +46731,7 @@ } }, { - "__docId__": 2387, + "__docId__": 2378, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -46833,7 +46751,7 @@ } }, { - "__docId__": 2388, + "__docId__": 2379, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -46854,7 +46772,7 @@ } }, { - "__docId__": 2389, + "__docId__": 2380, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -46889,7 +46807,7 @@ "return": null }, { - "__docId__": 2390, + "__docId__": 2381, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -46906,7 +46824,7 @@ "return": null }, { - "__docId__": 2391, + "__docId__": 2382, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -46924,7 +46842,7 @@ } }, { - "__docId__": 2392, + "__docId__": 2383, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -46941,7 +46859,7 @@ } }, { - "__docId__": 2393, + "__docId__": 2384, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -46959,7 +46877,7 @@ } }, { - "__docId__": 2394, + "__docId__": 2385, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -46977,7 +46895,7 @@ } }, { - "__docId__": 2395, + "__docId__": 2386, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -46995,7 +46913,7 @@ } }, { - "__docId__": 2396, + "__docId__": 2387, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47013,7 +46931,7 @@ } }, { - "__docId__": 2397, + "__docId__": 2388, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47031,7 +46949,7 @@ } }, { - "__docId__": 2398, + "__docId__": 2389, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47049,7 +46967,7 @@ } }, { - "__docId__": 2399, + "__docId__": 2390, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47067,7 +46985,7 @@ } }, { - "__docId__": 2400, + "__docId__": 2391, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47085,7 +47003,7 @@ } }, { - "__docId__": 2401, + "__docId__": 2392, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47103,7 +47021,7 @@ } }, { - "__docId__": 2402, + "__docId__": 2393, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47121,7 +47039,7 @@ } }, { - "__docId__": 2403, + "__docId__": 2394, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47139,7 +47057,7 @@ } }, { - "__docId__": 2404, + "__docId__": 2395, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47157,7 +47075,7 @@ } }, { - "__docId__": 2405, + "__docId__": 2396, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47175,7 +47093,7 @@ } }, { - "__docId__": 2406, + "__docId__": 2397, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47193,7 +47111,7 @@ } }, { - "__docId__": 2407, + "__docId__": 2398, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47211,7 +47129,7 @@ } }, { - "__docId__": 2408, + "__docId__": 2399, "kind": "member", "name": "_uOcclusionTexture", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47229,7 +47147,7 @@ } }, { - "__docId__": 2409, + "__docId__": 2400, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47247,7 +47165,7 @@ } }, { - "__docId__": 2410, + "__docId__": 2401, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47264,7 +47182,7 @@ "return": null }, { - "__docId__": 2411, + "__docId__": 2402, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47285,7 +47203,7 @@ } }, { - "__docId__": 2412, + "__docId__": 2403, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47306,7 +47224,7 @@ } }, { - "__docId__": 2413, + "__docId__": 2404, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47327,7 +47245,7 @@ } }, { - "__docId__": 2414, + "__docId__": 2405, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47343,7 +47261,7 @@ "return": null }, { - "__docId__": 2416, + "__docId__": 2407, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js~LinesInstancingColorRenderer", @@ -47359,7 +47277,7 @@ "return": null }, { - "__docId__": 2418, + "__docId__": 2409, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.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\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass LinesInstancingSilhouetteRenderer {\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, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(instancingLayer.model.scene);\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 gl.uniform1i(this._uRenderPass, renderPass);\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, math.vec3([1, 1, 1]));\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.lineWidth(scene.linesMaterial.lineWidth);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0); // TODO: Is this needed\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n if (this._aFlags2) {\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uColor = program.getLocation(\"color\");\n this._uSectionPlanes = [];\n\n const clips = 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\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Lines instancing silhouette 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\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n src.push(\"uniform vec4 color;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\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(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(\"vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Lines instancing silhouette fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = 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\nexport {LinesInstancingSilhouetteRenderer};", @@ -47370,7 +47288,7 @@ "lineNumber": 1 }, { - "__docId__": 2419, + "__docId__": 2410, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js", @@ -47391,7 +47309,7 @@ "ignore": true }, { - "__docId__": 2420, + "__docId__": 2411, "kind": "class", "name": "LinesInstancingSilhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js", @@ -47407,7 +47325,7 @@ "ignore": true }, { - "__docId__": 2421, + "__docId__": 2412, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47421,7 +47339,7 @@ "undocument": true }, { - "__docId__": 2422, + "__docId__": 2413, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47439,7 +47357,7 @@ } }, { - "__docId__": 2423, + "__docId__": 2414, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47457,7 +47375,7 @@ } }, { - "__docId__": 2424, + "__docId__": 2415, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47477,7 +47395,7 @@ } }, { - "__docId__": 2425, + "__docId__": 2416, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47498,7 +47416,7 @@ } }, { - "__docId__": 2426, + "__docId__": 2417, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47533,7 +47451,7 @@ "return": null }, { - "__docId__": 2427, + "__docId__": 2418, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47550,7 +47468,7 @@ "return": null }, { - "__docId__": 2428, + "__docId__": 2419, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47568,7 +47486,7 @@ } }, { - "__docId__": 2429, + "__docId__": 2420, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47585,7 +47503,7 @@ } }, { - "__docId__": 2430, + "__docId__": 2421, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47603,7 +47521,7 @@ } }, { - "__docId__": 2431, + "__docId__": 2422, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47621,7 +47539,7 @@ } }, { - "__docId__": 2432, + "__docId__": 2423, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47639,7 +47557,7 @@ } }, { - "__docId__": 2433, + "__docId__": 2424, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47657,7 +47575,7 @@ } }, { - "__docId__": 2434, + "__docId__": 2425, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47675,7 +47593,7 @@ } }, { - "__docId__": 2435, + "__docId__": 2426, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47693,7 +47611,7 @@ } }, { - "__docId__": 2436, + "__docId__": 2427, "kind": "member", "name": "_uColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47711,7 +47629,7 @@ } }, { - "__docId__": 2437, + "__docId__": 2428, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47729,7 +47647,7 @@ } }, { - "__docId__": 2438, + "__docId__": 2429, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47747,7 +47665,7 @@ } }, { - "__docId__": 2439, + "__docId__": 2430, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47765,7 +47683,7 @@ } }, { - "__docId__": 2440, + "__docId__": 2431, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47783,7 +47701,7 @@ } }, { - "__docId__": 2441, + "__docId__": 2432, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47801,7 +47719,7 @@ } }, { - "__docId__": 2442, + "__docId__": 2433, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47819,7 +47737,7 @@ } }, { - "__docId__": 2443, + "__docId__": 2434, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47837,7 +47755,7 @@ } }, { - "__docId__": 2444, + "__docId__": 2435, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47855,7 +47773,7 @@ } }, { - "__docId__": 2445, + "__docId__": 2436, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47873,7 +47791,7 @@ } }, { - "__docId__": 2446, + "__docId__": 2437, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47890,7 +47808,7 @@ "return": null }, { - "__docId__": 2447, + "__docId__": 2438, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47911,7 +47829,7 @@ } }, { - "__docId__": 2448, + "__docId__": 2439, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47932,7 +47850,7 @@ } }, { - "__docId__": 2449, + "__docId__": 2440, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47953,7 +47871,7 @@ } }, { - "__docId__": 2450, + "__docId__": 2441, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47969,7 +47887,7 @@ "return": null }, { - "__docId__": 2452, + "__docId__": 2443, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js~LinesInstancingSilhouetteRenderer", @@ -47985,7 +47903,7 @@ "return": null }, { - "__docId__": 2454, + "__docId__": 2445, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js", "content": "import {WEBGL_INFO} from \"../../../../webglInfo.js\";\n\nconst bigIndicesSupported = WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\n\n/**\n * @private\n */\nclass PointsBatchingBuffer {\n\n constructor(maxGeometryBatchSize = 5000000) {\n\n if (bigIndicesSupported) {\n if (maxGeometryBatchSize > 5000000) {\n maxGeometryBatchSize = 5000000;\n }\n } else {\n if (maxGeometryBatchSize > 65530) {\n maxGeometryBatchSize = 65530;\n }\n }\n\n this.maxVerts = maxGeometryBatchSize;\n this.maxIndices = maxGeometryBatchSize * 3; // Rough rule-of-thumb\n this.positions = [];\n this.colors = [];\n this.pickColors = [];\n this.flags = [];\n this.flags2 = [];\n this.offsets = [];\n }\n}\n\nexport {PointsBatchingBuffer};", @@ -47996,7 +47914,7 @@ "lineNumber": 1 }, { - "__docId__": 2455, + "__docId__": 2446, "kind": "variable", "name": "bigIndicesSupported", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js", @@ -48017,7 +47935,7 @@ "ignore": true }, { - "__docId__": 2456, + "__docId__": 2447, "kind": "class", "name": "PointsBatchingBuffer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js", @@ -48033,7 +47951,7 @@ "ignore": true }, { - "__docId__": 2457, + "__docId__": 2448, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js~PointsBatchingBuffer", @@ -48047,7 +47965,7 @@ "undocument": true }, { - "__docId__": 2458, + "__docId__": 2449, "kind": "member", "name": "maxVerts", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js~PointsBatchingBuffer", @@ -48064,7 +47982,7 @@ } }, { - "__docId__": 2459, + "__docId__": 2450, "kind": "member", "name": "maxIndices", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js~PointsBatchingBuffer", @@ -48081,7 +47999,7 @@ } }, { - "__docId__": 2460, + "__docId__": 2451, "kind": "member", "name": "positions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js~PointsBatchingBuffer", @@ -48098,7 +48016,7 @@ } }, { - "__docId__": 2461, + "__docId__": 2452, "kind": "member", "name": "colors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js~PointsBatchingBuffer", @@ -48115,7 +48033,7 @@ } }, { - "__docId__": 2462, + "__docId__": 2453, "kind": "member", "name": "pickColors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js~PointsBatchingBuffer", @@ -48132,7 +48050,7 @@ } }, { - "__docId__": 2463, + "__docId__": 2454, "kind": "member", "name": "flags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js~PointsBatchingBuffer", @@ -48149,7 +48067,7 @@ } }, { - "__docId__": 2464, + "__docId__": 2455, "kind": "member", "name": "flags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js~PointsBatchingBuffer", @@ -48166,7 +48084,7 @@ } }, { - "__docId__": 2465, + "__docId__": 2456, "kind": "member", "name": "offsets", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js~PointsBatchingBuffer", @@ -48183,7 +48101,7 @@ } }, { - "__docId__": 2466, + "__docId__": 2457, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.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 {getPointsBatchingRenderers} from \"./PointsBatchingRenderers.js\";\nimport {PointsBatchingBuffer} from \"./PointsBatchingBuffer.js\";\nimport {quantizePositions} from \"../../compression.js\";\n\nconst tempVec3a = math.vec4();\nconst tempVec3b = math.vec4();\nconst tempVec4a = math.vec4([0, 0, 0, 1]);\nconst tempVec4b = math.vec4([0, 0, 0, 1]);\nconst tempVec4c = math.vec4([0, 0, 0, 1]);\nconst tempOBB3 = math.OBB3();\n\n/**\n * @private\n */\nclass PointsBatchingLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.positionsDecodeMatrix\n * @param cfg.maxGeometryBatchSize\n * @param cfg.rtcCenter\n * @param cfg.scratchMemory\n */\n constructor(model, cfg) {\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"PointsBatchingLayer\";\n\n /**\n * Index of this PointCloudLayer in {@link PerformanceModel#_layerList}.\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._pointsBatchingRenderers = getPointsBatchingRenderers(model.scene);\n this.model = model;\n this._buffer = new PointsBatchingBuffer(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 flags2Buf: null,\n positionsDecodeMatrix: math.mat4(),\n rtcCenter: 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\n this._finalized = false;\n this._positionsDecodeMatrix = cfg.positionsDecodeMatrix;\n this._preCompressed = (!!this._positionsDecodeMatrix);\n\n if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n }\n\n /**\n * The axis-aligned World-space boundary of this PointCloudLayer's positions.\n * @type {*|Float64Array}\n */\n this.aabb = math.collapseAABB3();\n }\n\n /**\n * Tests if there is room for another portion in this PointCloudLayer.\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 PointCloudLayer, returns the new portion ID.\n *\n * Gives the portion the specified geometry, color and matrix.\n *\n * @param cfg.positions Flat float Local-space positions array.\n * @param [cfg.colors] Flat float colors 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.worldMatrix] Flat float 4x4 matrix\n * @param cfg.worldAABB Flat float AABB World-space AABB\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID\n */\n createPortion(cfg) {\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n const positions = cfg.positions;\n const color = cfg.color;\n const colors = cfg.colors;\n const opacity = cfg.opacity;\n const meshMatrix = cfg.meshMatrix;\n const worldMatrix = cfg.worldMatrix;\n const worldAABB = cfg.worldAABB;\n const pickColor = cfg.pickColor;\n\n const buffer = this._buffer;\n const positionsIndex = buffer.positions.length;\n const vertsIndex = positionsIndex / 3;\n const numVerts = positions.length / 3;\n const lenPositions = positions.length;\n\n if (this._preCompressed) {\n\n for (let i = 0, len = positions.length; i < len; i++) {\n buffer.positions.push(positions[i]);\n }\n\n const bounds = geometryCompressionUtils.getPositionsBounds(positions);\n\n const min = geometryCompressionUtils.decompressPosition(bounds.min, this._positionsDecodeMatrix, tempVec3a);\n const max = geometryCompressionUtils.decompressPosition(bounds.max, this._positionsDecodeMatrix, tempVec3b);\n\n worldAABB[0] = min[0];\n worldAABB[1] = min[1];\n worldAABB[2] = min[2];\n worldAABB[3] = max[0];\n worldAABB[4] = max[1];\n worldAABB[5] = max[2];\n\n if (worldMatrix) {\n math.AABB3ToOBB3(worldAABB, tempOBB3);\n math.transformOBB3(worldMatrix, tempOBB3);\n math.OBB3ToAABB3(tempOBB3, worldAABB);\n }\n\n } else {\n\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 if (meshMatrix) {\n\n for (let i = positionsBase, len = positionsBase + lenPositions; i < len; i += 3) {\n\n tempVec4a[0] = buffer.positions[i + 0];\n tempVec4a[1] = buffer.positions[i + 1];\n tempVec4a[2] = buffer.positions[i + 2];\n\n math.transformPoint4(meshMatrix, tempVec4a, tempVec4b);\n\n buffer.positions[i + 0] = tempVec4b[0];\n buffer.positions[i + 1] = tempVec4b[1];\n buffer.positions[i + 2] = tempVec4b[2];\n\n math.expandAABB3Point3(this._modelAABB, tempVec4b);\n\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4b, tempVec4c);\n math.expandAABB3Point3(worldAABB, tempVec4c);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4b);\n }\n }\n\n } else {\n\n for (let i = positionsBase, len = positionsBase + lenPositions; i < len; i += 3) {\n\n tempVec4a[0] = buffer.positions[i + 0];\n tempVec4a[1] = buffer.positions[i + 1];\n tempVec4a[2] = buffer.positions[i + 2];\n\n math.expandAABB3Point3(this._modelAABB, tempVec4a);\n\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4a, tempVec4b);\n math.expandAABB3Point3(worldAABB, tempVec4b);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4a);\n }\n }\n }\n }\n\n if (this._state.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n worldAABB[0] += rtcCenter[0];\n worldAABB[1] += rtcCenter[1];\n worldAABB[2] += rtcCenter[2];\n worldAABB[3] += rtcCenter[0];\n worldAABB[4] += rtcCenter[1];\n worldAABB[5] += rtcCenter[2];\n }\n\n math.expandAABB3(this.aabb, worldAABB);\n\n if (colors) {\n\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\n } else if (color) {\n\n const r = color[0]; // Color is pre-quantized by PerformanceModel\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 {\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\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 this.model.error(\"Already 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._preCompressed) {\n state.positionsDecodeMatrix = this._positionsDecodeMatrix;\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;\n const flags = new Uint8Array(flagsLength);\n const flags2 = new Uint8Array(flagsLength);\n let notNormalized = false;\n let normalized = true;\n state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags, flags.length, 4, gl.DYNAMIC_DRAW, notNormalized);\n state.flags2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags2, flags2.length, 4, gl.DYNAMIC_DRAW, normalized);\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 this._setFlags2(portionId, flags);\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._setFlags2(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 _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 * 4;\n const lenFlags = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(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 // Normal fill\n\n let f0;\n if (!visible || culled || xrayed) {\n f0 = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (transparent) {\n f0 = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n f0 = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n // Emphasis fill\n\n let f1;\n if (!visible || culled) {\n f1 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f1 = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n f1 = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n f1 = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n f1 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Pick\n\n let f3 = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n for (let i = 0; i < lenFlags; i += 4) {\n tempArray[i + 0] = f0; // x - normal fill\n tempArray[i + 1] = f1; // y - emphasis fill\n tempArray[i + 2] = 0; // z - edges - don't care\n tempArray[i + 3] = f3; // w - pick\n }\n\n this._state.flagsBuf.setData(tempArray, firstFlag, lenFlags);\n }\n\n _setFlags2(portionId, flags) {\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 * 4;\n const lenFlags = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenFlags);\n\n const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n\n for (let i = 0; i < lenFlags; i += 4) {\n tempArray[i + 0] = clippable;\n }\n\n this._state.flags2Buf.setData(tempArray, firstFlag, lenFlags);\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._pointsBatchingRenderers.colorRenderer) {\n this._pointsBatchingRenderers.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._pointsBatchingRenderers.colorRenderer) {\n this._pointsBatchingRenderers.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._pointsBatchingRenderers.silhouetteRenderer) {\n this._pointsBatchingRenderers.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._pointsBatchingRenderers.silhouetteRenderer) {\n this._pointsBatchingRenderers.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._pointsBatchingRenderers.silhouetteRenderer) {\n this._pointsBatchingRenderers.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._pointsBatchingRenderers.pickMeshRenderer) {\n this._pointsBatchingRenderers.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._pointsBatchingRenderers.pickDepthRenderer) {\n this._pointsBatchingRenderers.pickDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickNormals(renderFlags, frameCtx) {\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._pointsBatchingRenderers.occlusionRenderer) {\n this._pointsBatchingRenderers.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.flags2Buf) {\n state.flags2Buf.destroy();\n state.flags2Buf = null;\n }\n if (state.pickColorsBuf) {\n state.pickColorsBuf.destroy();\n state.pickColorsBuf = null;\n }\n state.destroy();\n }\n}\n\nexport {PointsBatchingLayer};", @@ -48194,7 +48112,7 @@ "lineNumber": 1 }, { - "__docId__": 2467, + "__docId__": 2458, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js", @@ -48215,7 +48133,7 @@ "ignore": true }, { - "__docId__": 2468, + "__docId__": 2459, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js", @@ -48236,7 +48154,7 @@ "ignore": true }, { - "__docId__": 2469, + "__docId__": 2460, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js", @@ -48257,7 +48175,7 @@ "ignore": true }, { - "__docId__": 2470, + "__docId__": 2461, "kind": "variable", "name": "tempVec4b", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js", @@ -48278,7 +48196,7 @@ "ignore": true }, { - "__docId__": 2471, + "__docId__": 2462, "kind": "variable", "name": "tempVec4c", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js", @@ -48299,7 +48217,7 @@ "ignore": true }, { - "__docId__": 2472, + "__docId__": 2463, "kind": "variable", "name": "tempOBB3", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js", @@ -48320,7 +48238,7 @@ "ignore": true }, { - "__docId__": 2473, + "__docId__": 2464, "kind": "class", "name": "PointsBatchingLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js", @@ -48336,7 +48254,7 @@ "ignore": true }, { - "__docId__": 2474, + "__docId__": 2465, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48421,7 +48339,7 @@ ] }, { - "__docId__": 2475, + "__docId__": 2466, "kind": "member", "name": "sortId", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48440,7 +48358,7 @@ } }, { - "__docId__": 2476, + "__docId__": 2467, "kind": "member", "name": "layerIndex", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48459,7 +48377,7 @@ } }, { - "__docId__": 2477, + "__docId__": 2468, "kind": "member", "name": "_pointsBatchingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48477,7 +48395,7 @@ } }, { - "__docId__": 2478, + "__docId__": 2469, "kind": "member", "name": "model", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48494,7 +48412,7 @@ } }, { - "__docId__": 2479, + "__docId__": 2470, "kind": "member", "name": "_buffer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48512,7 +48430,7 @@ } }, { - "__docId__": 2480, + "__docId__": 2471, "kind": "member", "name": "_scratchMemory", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48530,7 +48448,7 @@ } }, { - "__docId__": 2481, + "__docId__": 2472, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48548,7 +48466,7 @@ } }, { - "__docId__": 2482, + "__docId__": 2473, "kind": "member", "name": "_numPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48566,7 +48484,7 @@ } }, { - "__docId__": 2483, + "__docId__": 2474, "kind": "member", "name": "_numVisibleLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48584,7 +48502,7 @@ } }, { - "__docId__": 2484, + "__docId__": 2475, "kind": "member", "name": "_numTransparentLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48602,7 +48520,7 @@ } }, { - "__docId__": 2485, + "__docId__": 2476, "kind": "member", "name": "_numXRayedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48620,7 +48538,7 @@ } }, { - "__docId__": 2486, + "__docId__": 2477, "kind": "member", "name": "_numSelectedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48638,7 +48556,7 @@ } }, { - "__docId__": 2487, + "__docId__": 2478, "kind": "member", "name": "_numHighlightedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48656,7 +48574,7 @@ } }, { - "__docId__": 2488, + "__docId__": 2479, "kind": "member", "name": "_numClippableLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48674,7 +48592,7 @@ } }, { - "__docId__": 2489, + "__docId__": 2480, "kind": "member", "name": "_numPickableLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48692,7 +48610,7 @@ } }, { - "__docId__": 2490, + "__docId__": 2481, "kind": "member", "name": "_numCulledLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48710,7 +48628,7 @@ } }, { - "__docId__": 2491, + "__docId__": 2482, "kind": "member", "name": "_modelAABB", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48728,7 +48646,7 @@ } }, { - "__docId__": 2492, + "__docId__": 2483, "kind": "member", "name": "_portions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48746,7 +48664,7 @@ } }, { - "__docId__": 2493, + "__docId__": 2484, "kind": "member", "name": "_finalized", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48764,7 +48682,7 @@ } }, { - "__docId__": 2494, + "__docId__": 2485, "kind": "member", "name": "_positionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48782,7 +48700,7 @@ } }, { - "__docId__": 2495, + "__docId__": 2486, "kind": "member", "name": "_preCompressed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48800,7 +48718,7 @@ } }, { - "__docId__": 2496, + "__docId__": 2487, "kind": "member", "name": "aabb", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48820,7 +48738,7 @@ } }, { - "__docId__": 2497, + "__docId__": 2488, "kind": "method", "name": "canCreatePortion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48859,7 +48777,7 @@ } }, { - "__docId__": 2498, + "__docId__": 2489, "kind": "method", "name": "createPortion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48968,7 +48886,7 @@ } }, { - "__docId__": 2499, + "__docId__": 2490, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -48983,7 +48901,7 @@ "return": null }, { - "__docId__": 2502, + "__docId__": 2493, "kind": "method", "name": "initFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49018,7 +48936,7 @@ "return": null }, { - "__docId__": 2503, + "__docId__": 2494, "kind": "method", "name": "setVisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49053,7 +48971,7 @@ "return": null }, { - "__docId__": 2504, + "__docId__": 2495, "kind": "method", "name": "setHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49088,7 +49006,7 @@ "return": null }, { - "__docId__": 2505, + "__docId__": 2496, "kind": "method", "name": "setXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49123,7 +49041,7 @@ "return": null }, { - "__docId__": 2506, + "__docId__": 2497, "kind": "method", "name": "setSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49158,7 +49076,7 @@ "return": null }, { - "__docId__": 2507, + "__docId__": 2498, "kind": "method", "name": "setEdges", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49193,7 +49111,7 @@ "return": null }, { - "__docId__": 2508, + "__docId__": 2499, "kind": "method", "name": "setClippable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49222,7 +49140,7 @@ "return": null }, { - "__docId__": 2509, + "__docId__": 2500, "kind": "method", "name": "setCulled", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49257,7 +49175,7 @@ "return": null }, { - "__docId__": 2510, + "__docId__": 2501, "kind": "method", "name": "setCollidable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49286,7 +49204,7 @@ "return": null }, { - "__docId__": 2511, + "__docId__": 2502, "kind": "method", "name": "setPickable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49321,7 +49239,7 @@ "return": null }, { - "__docId__": 2512, + "__docId__": 2503, "kind": "method", "name": "setColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49350,7 +49268,7 @@ "return": null }, { - "__docId__": 2513, + "__docId__": 2504, "kind": "method", "name": "setTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49385,7 +49303,7 @@ "return": null }, { - "__docId__": 2514, + "__docId__": 2505, "kind": "method", "name": "_setFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49421,7 +49339,7 @@ "return": null }, { - "__docId__": 2515, + "__docId__": 2506, "kind": "method", "name": "_setFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49451,7 +49369,7 @@ "return": null }, { - "__docId__": 2516, + "__docId__": 2507, "kind": "method", "name": "setOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49480,7 +49398,7 @@ "return": null }, { - "__docId__": 2517, + "__docId__": 2508, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49509,7 +49427,7 @@ "return": null }, { - "__docId__": 2518, + "__docId__": 2509, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49538,7 +49456,7 @@ "return": null }, { - "__docId__": 2519, + "__docId__": 2510, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49567,7 +49485,7 @@ "return": null }, { - "__docId__": 2520, + "__docId__": 2511, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49596,7 +49514,7 @@ "return": null }, { - "__docId__": 2521, + "__docId__": 2512, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49625,7 +49543,7 @@ "return": null }, { - "__docId__": 2522, + "__docId__": 2513, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49654,7 +49572,7 @@ "return": null }, { - "__docId__": 2523, + "__docId__": 2514, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49683,7 +49601,7 @@ "return": null }, { - "__docId__": 2524, + "__docId__": 2515, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49712,7 +49630,7 @@ "return": null }, { - "__docId__": 2525, + "__docId__": 2516, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49741,7 +49659,7 @@ "return": null }, { - "__docId__": 2526, + "__docId__": 2517, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49770,7 +49688,7 @@ "return": null }, { - "__docId__": 2527, + "__docId__": 2518, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49799,7 +49717,7 @@ "return": null }, { - "__docId__": 2528, + "__docId__": 2519, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49828,7 +49746,7 @@ "return": null }, { - "__docId__": 2529, + "__docId__": 2520, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49857,7 +49775,7 @@ "return": null }, { - "__docId__": 2530, + "__docId__": 2521, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49886,7 +49804,7 @@ "return": null }, { - "__docId__": 2531, + "__docId__": 2522, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49915,7 +49833,7 @@ "return": null }, { - "__docId__": 2532, + "__docId__": 2523, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49944,7 +49862,7 @@ "return": null }, { - "__docId__": 2533, + "__docId__": 2524, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49973,7 +49891,7 @@ "return": null }, { - "__docId__": 2534, + "__docId__": 2525, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js~PointsBatchingLayer", @@ -49989,7 +49907,7 @@ "return": null }, { - "__docId__": 2535, + "__docId__": 2526, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js", "content": "import {PointsBatchingColorRenderer} from \"./renderers/PointsBatchingColorRenderer.js\";\nimport {PointsBatchingSilhouetteRenderer} from \"./renderers/PointsBatchingSilhouetteRenderer.js\";\nimport {PointsBatchingPickMeshRenderer} from \"./renderers/PointsBatchingPickMeshRenderer.js\";\nimport {PointsBatchingPickDepthRenderer} from \"./renderers/PointsBatchingPickDepthRenderer.js\";\nimport {PointsBatchingOcclusionRenderer} from \"./renderers/PointsBatchingOcclusionRenderer.js\";\n\n/**\n * @private\n */\nclass PointsBatchingRenderers {\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 }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new PointsBatchingColorRenderer(this._scene);\n }\n return this._colorRenderer;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new PointsBatchingSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get pickMeshRenderer() {\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new PointsBatchingPickMeshRenderer(this._scene);\n }\n return this._pickMeshRenderer;\n }\n\n get pickDepthRenderer() {\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new PointsBatchingPickDepthRenderer(this._scene);\n }\n return this._pickDepthRenderer;\n }\n\n get occlusionRenderer() {\n if (!this._occlusionRenderer) {\n this._occlusionRenderer = new PointsBatchingOcclusionRenderer(this._scene);\n }\n return this._occlusionRenderer;\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 }\n}\n\nconst cachedRenderers = {};\n\nfunction getPointsBatchingRenderers(scene) {\n const sceneId = scene.id;\n let renderers = cachedRenderers[sceneId];\n if (!renderers) {\n renderers = new PointsBatchingRenderers(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\nexport {getPointsBatchingRenderers};", @@ -50000,7 +49918,7 @@ "lineNumber": 1 }, { - "__docId__": 2536, + "__docId__": 2527, "kind": "class", "name": "PointsBatchingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js", @@ -50016,7 +49934,7 @@ "ignore": true }, { - "__docId__": 2537, + "__docId__": 2528, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js~PointsBatchingRenderers", @@ -50030,7 +49948,7 @@ "undocument": true }, { - "__docId__": 2538, + "__docId__": 2529, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js~PointsBatchingRenderers", @@ -50048,7 +49966,7 @@ } }, { - "__docId__": 2539, + "__docId__": 2530, "kind": "method", "name": "_compile", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js~PointsBatchingRenderers", @@ -50065,7 +49983,7 @@ "return": null }, { - "__docId__": 2540, + "__docId__": 2531, "kind": "member", "name": "_colorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js~PointsBatchingRenderers", @@ -50083,7 +50001,7 @@ } }, { - "__docId__": 2541, + "__docId__": 2532, "kind": "member", "name": "_silhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js~PointsBatchingRenderers", @@ -50101,7 +50019,7 @@ } }, { - "__docId__": 2542, + "__docId__": 2533, "kind": "member", "name": "_pickMeshRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js~PointsBatchingRenderers", @@ -50119,7 +50037,7 @@ } }, { - "__docId__": 2543, + "__docId__": 2534, "kind": "member", "name": "_pickDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js~PointsBatchingRenderers", @@ -50137,7 +50055,7 @@ } }, { - "__docId__": 2544, + "__docId__": 2535, "kind": "member", "name": "_occlusionRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js~PointsBatchingRenderers", @@ -50155,7 +50073,7 @@ } }, { - "__docId__": 2545, + "__docId__": 2536, "kind": "get", "name": "colorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js~PointsBatchingRenderers", @@ -50174,7 +50092,7 @@ } }, { - "__docId__": 2547, + "__docId__": 2538, "kind": "get", "name": "silhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js~PointsBatchingRenderers", @@ -50193,7 +50111,7 @@ } }, { - "__docId__": 2549, + "__docId__": 2540, "kind": "get", "name": "pickMeshRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js~PointsBatchingRenderers", @@ -50212,7 +50130,7 @@ } }, { - "__docId__": 2551, + "__docId__": 2542, "kind": "get", "name": "pickDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js~PointsBatchingRenderers", @@ -50231,7 +50149,7 @@ } }, { - "__docId__": 2553, + "__docId__": 2544, "kind": "get", "name": "occlusionRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js~PointsBatchingRenderers", @@ -50250,7 +50168,7 @@ } }, { - "__docId__": 2555, + "__docId__": 2546, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js~PointsBatchingRenderers", @@ -50267,7 +50185,7 @@ "return": null }, { - "__docId__": 2556, + "__docId__": 2547, "kind": "variable", "name": "cachedRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js", @@ -50288,7 +50206,7 @@ "ignore": true }, { - "__docId__": 2557, + "__docId__": 2548, "kind": "function", "name": "getPointsBatchingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js", @@ -50318,7 +50236,7 @@ } }, { - "__docId__": 2558, + "__docId__": 2549, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js", "content": "import {Program} from \"../../../../../webgl/Program.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../../math/rtcCoords.js\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass PointsBatchingColorRenderer {\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() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, pointsBatchingLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = pointsBatchingLayer.model;\n const gl = scene.canvas.gl;\n const state = pointsBatchingLayer._state;\n const rtcCenter = pointsBatchingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = pointsBatchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, pointsBatchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\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(scene));\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(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\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.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial;\n const src = [];\n\n src.push(\"// Points batching color vertex 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(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"uniform mat4 worldMatrix;\");\n\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vColor;\");\n\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);\"); // 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(\"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(\"vFlags2 = flags2;\");\n }\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 }\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\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Points batching color 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 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(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying vec4 vColor;\");\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 = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\" gl_FragColor = vColor;\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\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\nexport {PointsBatchingColorRenderer};", @@ -50329,7 +50247,7 @@ "lineNumber": 1 }, { - "__docId__": 2559, + "__docId__": 2550, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js", @@ -50350,7 +50268,7 @@ "ignore": true }, { - "__docId__": 2560, + "__docId__": 2551, "kind": "class", "name": "PointsBatchingColorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js", @@ -50366,7 +50284,7 @@ "ignore": true }, { - "__docId__": 2561, + "__docId__": 2552, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50380,7 +50298,7 @@ "undocument": true }, { - "__docId__": 2562, + "__docId__": 2553, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50398,7 +50316,7 @@ } }, { - "__docId__": 2563, + "__docId__": 2554, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50416,7 +50334,7 @@ } }, { - "__docId__": 2564, + "__docId__": 2555, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50436,7 +50354,7 @@ } }, { - "__docId__": 2565, + "__docId__": 2556, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50457,7 +50375,7 @@ } }, { - "__docId__": 2566, + "__docId__": 2557, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50492,7 +50410,7 @@ "return": null }, { - "__docId__": 2567, + "__docId__": 2558, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50509,7 +50427,7 @@ "return": null }, { - "__docId__": 2568, + "__docId__": 2559, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50527,7 +50445,7 @@ } }, { - "__docId__": 2569, + "__docId__": 2560, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50544,7 +50462,7 @@ } }, { - "__docId__": 2570, + "__docId__": 2561, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50562,7 +50480,7 @@ } }, { - "__docId__": 2571, + "__docId__": 2562, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50580,7 +50498,7 @@ } }, { - "__docId__": 2572, + "__docId__": 2563, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50598,7 +50516,7 @@ } }, { - "__docId__": 2573, + "__docId__": 2564, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50616,7 +50534,7 @@ } }, { - "__docId__": 2574, + "__docId__": 2565, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50634,7 +50552,7 @@ } }, { - "__docId__": 2575, + "__docId__": 2566, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50652,7 +50570,7 @@ } }, { - "__docId__": 2576, + "__docId__": 2567, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50670,7 +50588,7 @@ } }, { - "__docId__": 2577, + "__docId__": 2568, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50688,7 +50606,7 @@ } }, { - "__docId__": 2578, + "__docId__": 2569, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50706,7 +50624,7 @@ } }, { - "__docId__": 2579, + "__docId__": 2570, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50724,7 +50642,7 @@ } }, { - "__docId__": 2580, + "__docId__": 2571, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50742,7 +50660,7 @@ } }, { - "__docId__": 2581, + "__docId__": 2572, "kind": "member", "name": "_uPointSize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50760,7 +50678,7 @@ } }, { - "__docId__": 2582, + "__docId__": 2573, "kind": "member", "name": "_uNearPlaneHeight", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50778,7 +50696,7 @@ } }, { - "__docId__": 2583, + "__docId__": 2574, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50796,7 +50714,7 @@ } }, { - "__docId__": 2584, + "__docId__": 2575, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50813,7 +50731,7 @@ "return": null }, { - "__docId__": 2585, + "__docId__": 2576, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50834,7 +50752,7 @@ } }, { - "__docId__": 2586, + "__docId__": 2577, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50855,7 +50773,7 @@ } }, { - "__docId__": 2587, + "__docId__": 2578, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50876,7 +50794,7 @@ } }, { - "__docId__": 2588, + "__docId__": 2579, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50892,7 +50810,7 @@ "return": null }, { - "__docId__": 2590, + "__docId__": 2581, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js~PointsBatchingColorRenderer", @@ -50908,7 +50826,7 @@ "return": null }, { - "__docId__": 2592, + "__docId__": 2583, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.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();\n\n/**\n * @private\n */\nclass PointsBatchingOcclusionRenderer {\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() + (this._scene.pointsMaterial.hash);\n }\n\n drawLayer(frameCtx, pointsBatchingLayer, renderPass) {\n\n const model = pointsBatchingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const state = pointsBatchingLayer._state;\n const camera = scene.camera;\n const rtcCenter = pointsBatchingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\n\n if (!this._program) {\n this._allocate(pointsBatchingLayer);\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = pointsBatchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, pointsBatchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\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(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push(\"// Points batching occlusion 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 vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"void main(void) {\");\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 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(\" vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points batching occlusion fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\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(\"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 = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let 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 src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = 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\nexport {PointsBatchingOcclusionRenderer};", @@ -50919,7 +50837,7 @@ "lineNumber": 1 }, { - "__docId__": 2593, + "__docId__": 2584, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js", @@ -50940,7 +50858,7 @@ "ignore": true }, { - "__docId__": 2594, + "__docId__": 2585, "kind": "class", "name": "PointsBatchingOcclusionRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js", @@ -50956,7 +50874,7 @@ "ignore": true }, { - "__docId__": 2595, + "__docId__": 2586, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -50970,7 +50888,7 @@ "undocument": true }, { - "__docId__": 2596, + "__docId__": 2587, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -50988,7 +50906,7 @@ } }, { - "__docId__": 2597, + "__docId__": 2588, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51006,7 +50924,7 @@ } }, { - "__docId__": 2598, + "__docId__": 2589, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51026,7 +50944,7 @@ } }, { - "__docId__": 2599, + "__docId__": 2590, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51047,7 +50965,7 @@ } }, { - "__docId__": 2600, + "__docId__": 2591, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51082,7 +51000,7 @@ "return": null }, { - "__docId__": 2601, + "__docId__": 2592, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51099,7 +51017,7 @@ "return": null }, { - "__docId__": 2602, + "__docId__": 2593, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51117,7 +51035,7 @@ } }, { - "__docId__": 2603, + "__docId__": 2594, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51134,7 +51052,7 @@ } }, { - "__docId__": 2604, + "__docId__": 2595, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51152,7 +51070,7 @@ } }, { - "__docId__": 2605, + "__docId__": 2596, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51170,7 +51088,7 @@ } }, { - "__docId__": 2606, + "__docId__": 2597, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51188,7 +51106,7 @@ } }, { - "__docId__": 2607, + "__docId__": 2598, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51206,7 +51124,7 @@ } }, { - "__docId__": 2608, + "__docId__": 2599, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51224,7 +51142,7 @@ } }, { - "__docId__": 2609, + "__docId__": 2600, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51242,7 +51160,7 @@ } }, { - "__docId__": 2610, + "__docId__": 2601, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51260,7 +51178,7 @@ } }, { - "__docId__": 2611, + "__docId__": 2602, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51278,7 +51196,7 @@ } }, { - "__docId__": 2612, + "__docId__": 2603, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51296,7 +51214,7 @@ } }, { - "__docId__": 2613, + "__docId__": 2604, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51314,7 +51232,7 @@ } }, { - "__docId__": 2614, + "__docId__": 2605, "kind": "member", "name": "_uPointSize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51332,7 +51250,7 @@ } }, { - "__docId__": 2615, + "__docId__": 2606, "kind": "member", "name": "_uNearPlaneHeight", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51350,7 +51268,7 @@ } }, { - "__docId__": 2616, + "__docId__": 2607, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51368,7 +51286,7 @@ } }, { - "__docId__": 2617, + "__docId__": 2608, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51385,7 +51303,7 @@ "return": null }, { - "__docId__": 2618, + "__docId__": 2609, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51406,7 +51324,7 @@ } }, { - "__docId__": 2619, + "__docId__": 2610, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51427,7 +51345,7 @@ } }, { - "__docId__": 2620, + "__docId__": 2611, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51448,7 +51366,7 @@ } }, { - "__docId__": 2621, + "__docId__": 2612, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51464,7 +51382,7 @@ "return": null }, { - "__docId__": 2623, + "__docId__": 2614, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js~PointsBatchingOcclusionRenderer", @@ -51480,7 +51398,7 @@ "return": null }, { - "__docId__": 2625, + "__docId__": 2616, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.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();\n\n/**\n * @private\n */\nclass PointsBatchingPickDepthRenderer {\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() + (this._scene.pointsMaterial.hash);\n }\n\n drawLayer(frameCtx, pointsBatchingLayer, renderPass) {\n\n const model = pointsBatchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = pointsBatchingLayer._state;\n const rtcCenter = pointsBatchingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const viewMatrix = rtcCenter ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n gl.uniform1f(this._uPickZNear, frameCtx.pickZNear);\n gl.uniform1f(this._uPickZFar, frameCtx.pickZFar);\n\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 numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = pointsBatchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n //=============================================================\n // TODO: Use drawElements count and offset to draw only one entity\n //=============================================================\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, pointsBatchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\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._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._uPickZNear = program.getLocation(\"pickZNear\");\n this._uPickZFar = program.getLocation(\"pickZFar\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points batched pick depth vertex 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(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\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(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(\" vFlags2 = flags2;\");\n }\n src.push(\"vViewPosition = viewPosition;\");\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 }\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(\"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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points batched pick depth 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(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n src.push(\"uniform float pickZNear;\");\n src.push(\"uniform float pickZFar;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\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(\"varying 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(\"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 = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\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 src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\");\n src.push(\" gl_FragColor = 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\nexport {PointsBatchingPickDepthRenderer};", @@ -51491,7 +51409,7 @@ "lineNumber": 1 }, { - "__docId__": 2626, + "__docId__": 2617, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js", @@ -51512,7 +51430,7 @@ "ignore": true }, { - "__docId__": 2627, + "__docId__": 2618, "kind": "class", "name": "PointsBatchingPickDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js", @@ -51528,7 +51446,7 @@ "ignore": true }, { - "__docId__": 2628, + "__docId__": 2619, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51542,7 +51460,7 @@ "undocument": true }, { - "__docId__": 2629, + "__docId__": 2620, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51560,7 +51478,7 @@ } }, { - "__docId__": 2630, + "__docId__": 2621, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51578,7 +51496,7 @@ } }, { - "__docId__": 2631, + "__docId__": 2622, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51598,7 +51516,7 @@ } }, { - "__docId__": 2632, + "__docId__": 2623, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51619,7 +51537,7 @@ } }, { - "__docId__": 2633, + "__docId__": 2624, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51654,7 +51572,7 @@ "return": null }, { - "__docId__": 2634, + "__docId__": 2625, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51671,7 +51589,7 @@ "return": null }, { - "__docId__": 2635, + "__docId__": 2626, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51689,7 +51607,7 @@ } }, { - "__docId__": 2636, + "__docId__": 2627, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51706,7 +51624,7 @@ } }, { - "__docId__": 2637, + "__docId__": 2628, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51724,7 +51642,7 @@ } }, { - "__docId__": 2638, + "__docId__": 2629, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51742,7 +51660,7 @@ } }, { - "__docId__": 2639, + "__docId__": 2630, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51760,7 +51678,7 @@ } }, { - "__docId__": 2640, + "__docId__": 2631, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51778,7 +51696,7 @@ } }, { - "__docId__": 2641, + "__docId__": 2632, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51796,7 +51714,7 @@ } }, { - "__docId__": 2642, + "__docId__": 2633, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51814,7 +51732,7 @@ } }, { - "__docId__": 2643, + "__docId__": 2634, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51832,7 +51750,7 @@ } }, { - "__docId__": 2644, + "__docId__": 2635, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51850,7 +51768,7 @@ } }, { - "__docId__": 2645, + "__docId__": 2636, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51868,7 +51786,7 @@ } }, { - "__docId__": 2646, + "__docId__": 2637, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51886,7 +51804,7 @@ } }, { - "__docId__": 2647, + "__docId__": 2638, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51904,7 +51822,7 @@ } }, { - "__docId__": 2648, + "__docId__": 2639, "kind": "member", "name": "_uPickZNear", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51922,7 +51840,7 @@ } }, { - "__docId__": 2649, + "__docId__": 2640, "kind": "member", "name": "_uPickZFar", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51940,7 +51858,7 @@ } }, { - "__docId__": 2650, + "__docId__": 2641, "kind": "member", "name": "_uPointSize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51958,7 +51876,7 @@ } }, { - "__docId__": 2651, + "__docId__": 2642, "kind": "member", "name": "_uNearPlaneHeight", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51976,7 +51894,7 @@ } }, { - "__docId__": 2652, + "__docId__": 2643, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -51994,7 +51912,7 @@ } }, { - "__docId__": 2653, + "__docId__": 2644, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -52011,7 +51929,7 @@ "return": null }, { - "__docId__": 2654, + "__docId__": 2645, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -52032,7 +51950,7 @@ } }, { - "__docId__": 2655, + "__docId__": 2646, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -52053,7 +51971,7 @@ } }, { - "__docId__": 2656, + "__docId__": 2647, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -52074,7 +51992,7 @@ } }, { - "__docId__": 2657, + "__docId__": 2648, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -52090,7 +52008,7 @@ "return": null }, { - "__docId__": 2659, + "__docId__": 2650, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js~PointsBatchingPickDepthRenderer", @@ -52106,7 +52024,7 @@ "return": null }, { - "__docId__": 2661, + "__docId__": 2652, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.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();\n\n/**\n * @private\n */\nclass PointsBatchingPickMeshRenderer {\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() + (this._scene.pointsMaterial.hash);\n }\n\n drawLayer(frameCtx, pointsBatchingLayer, renderPass) {\n\n const model = pointsBatchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = pointsBatchingLayer._state;\n const rtcCenter = pointsBatchingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\n\n if (!this._program) {\n this._allocate(pointsBatchingLayer);\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const viewMatrix = rtcCenter ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMatrix);\n\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\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = pointsBatchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, pointsBatchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n if (this._aPickColor) {\n this._aPickColor.bindArrayBuffer(state.pickColorsBuf);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\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._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\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.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aPickColor = program.getAttribute(\"pickColor\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points batching pick mesh vertex 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(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"attribute vec4 pickColor;\");\n\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vPickColor;\");\n\n src.push(\"void main(void) {\");\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(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(\" vFlags2 = flags2;\");\n }\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 }\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(\"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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points batching pick mesh 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (var 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(\"varying vec4 vPickColor;\");\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 = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\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 src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = 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\nexport {PointsBatchingPickMeshRenderer};", @@ -52117,7 +52035,7 @@ "lineNumber": 1 }, { - "__docId__": 2662, + "__docId__": 2653, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js", @@ -52138,7 +52056,7 @@ "ignore": true }, { - "__docId__": 2663, + "__docId__": 2654, "kind": "class", "name": "PointsBatchingPickMeshRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js", @@ -52154,7 +52072,7 @@ "ignore": true }, { - "__docId__": 2664, + "__docId__": 2655, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52168,7 +52086,7 @@ "undocument": true }, { - "__docId__": 2665, + "__docId__": 2656, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52186,7 +52104,7 @@ } }, { - "__docId__": 2666, + "__docId__": 2657, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52204,7 +52122,7 @@ } }, { - "__docId__": 2667, + "__docId__": 2658, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52224,7 +52142,7 @@ } }, { - "__docId__": 2668, + "__docId__": 2659, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52245,7 +52163,7 @@ } }, { - "__docId__": 2669, + "__docId__": 2660, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52280,7 +52198,7 @@ "return": null }, { - "__docId__": 2670, + "__docId__": 2661, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52297,7 +52215,7 @@ "return": null }, { - "__docId__": 2671, + "__docId__": 2662, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52315,7 +52233,7 @@ } }, { - "__docId__": 2672, + "__docId__": 2663, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52332,7 +52250,7 @@ } }, { - "__docId__": 2673, + "__docId__": 2664, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52350,7 +52268,7 @@ } }, { - "__docId__": 2674, + "__docId__": 2665, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52368,7 +52286,7 @@ } }, { - "__docId__": 2675, + "__docId__": 2666, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52386,7 +52304,7 @@ } }, { - "__docId__": 2676, + "__docId__": 2667, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52404,7 +52322,7 @@ } }, { - "__docId__": 2677, + "__docId__": 2668, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52422,7 +52340,7 @@ } }, { - "__docId__": 2678, + "__docId__": 2669, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52440,7 +52358,7 @@ } }, { - "__docId__": 2679, + "__docId__": 2670, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52458,7 +52376,7 @@ } }, { - "__docId__": 2680, + "__docId__": 2671, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52476,7 +52394,7 @@ } }, { - "__docId__": 2681, + "__docId__": 2672, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52494,7 +52412,7 @@ } }, { - "__docId__": 2682, + "__docId__": 2673, "kind": "member", "name": "_aPickColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52512,7 +52430,7 @@ } }, { - "__docId__": 2683, + "__docId__": 2674, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52530,7 +52448,7 @@ } }, { - "__docId__": 2684, + "__docId__": 2675, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52548,7 +52466,7 @@ } }, { - "__docId__": 2685, + "__docId__": 2676, "kind": "member", "name": "_uPointSize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52566,7 +52484,7 @@ } }, { - "__docId__": 2686, + "__docId__": 2677, "kind": "member", "name": "_uNearPlaneHeight", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52584,7 +52502,7 @@ } }, { - "__docId__": 2687, + "__docId__": 2678, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52602,7 +52520,7 @@ } }, { - "__docId__": 2688, + "__docId__": 2679, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52626,7 +52544,7 @@ "return": null }, { - "__docId__": 2689, + "__docId__": 2680, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52647,7 +52565,7 @@ } }, { - "__docId__": 2690, + "__docId__": 2681, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52668,7 +52586,7 @@ } }, { - "__docId__": 2691, + "__docId__": 2682, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52689,7 +52607,7 @@ } }, { - "__docId__": 2692, + "__docId__": 2683, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52705,7 +52623,7 @@ "return": null }, { - "__docId__": 2694, + "__docId__": 2685, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js~PointsBatchingPickMeshRenderer", @@ -52721,7 +52639,7 @@ "return": null }, { - "__docId__": 2696, + "__docId__": 2687, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js", "content": "import {Program} from \"../../../../../webgl/Program.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {getPlaneRTCPos} from \"../../../../../math/rtcCoords.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * Renders pointsBatchingLayer fragment depths to a shadow map.\n *\n * @private\n */\nclass PointsBatchingShadowRenderer {\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, pointsBatchingLayer) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const state = pointsBatchingLayer._state;\n const pointsMaterial = scene.pointsMaterial._state;\n if (!this._program) {\n this._allocate();\n }\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, pointsBatchingLayer._state.positionsDecodeMatrix);\n if (scene.logarithmicDepthBufferEnabled) {\n gl.uniform1f(this._uZFar, scene.camera.project.far)\n }\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n if (this._aColor) { // Needed for masking out transparent entities using alpha channel\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n // TODO: Section planes need to be set if RTC center has changed since last RTC center recorded on frameCtx\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = pointsBatchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n const rtcCenter = pointsBatchingLayer._state.rtcCenter;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\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._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uShadowViewMatrix = program.getLocation(\"shadowViewMatrix\");\n this._uShadowProjMatrix = program.getLocation(\"shadowProjMatrix\");\n if (scene.logarithmicDepthBufferEnabled) {\n this._uZFar = program.getLocation(\"zFar\");\n }\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 this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._uPointSize = program.getLocation(\"pointSize\");\n }\n\n _bindProgram(frameCtx) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n program.bind();\n gl.uniformMatrix4fv(this._uShadowViewMatrix, false, frameCtx.shadowViewMatrix);\n gl.uniformMatrix4fv(this._uShadowProjMatrix, false, frameCtx.shadowProjMatrix);\n this._lastLightId = null;\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry shadow vertex shader\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform mat4 shadowViewMatrix;\");\n src.push(\"uniform mat4 shadowProjMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\n src.push(\" bool visible = (float(flags.x) > 0.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(\" vFlags2 = flags2;\");\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.sectionPlanes.length > 0);\n const src = [];\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(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\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(\"varying 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\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 < 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 src.push(\" }\");\n }\n src.push(\" gl_FragColor = encodeFloat( gl_FragCoord.z); \");\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\nexport {PointsBatchingShadowRenderer};", @@ -52732,7 +52650,7 @@ "lineNumber": 1 }, { - "__docId__": 2697, + "__docId__": 2688, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js", @@ -52753,7 +52671,7 @@ "ignore": true }, { - "__docId__": 2698, + "__docId__": 2689, "kind": "class", "name": "PointsBatchingShadowRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js", @@ -52769,7 +52687,7 @@ "ignore": true }, { - "__docId__": 2699, + "__docId__": 2690, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -52783,7 +52701,7 @@ "undocument": true }, { - "__docId__": 2700, + "__docId__": 2691, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -52801,7 +52719,7 @@ } }, { - "__docId__": 2701, + "__docId__": 2692, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -52819,7 +52737,7 @@ } }, { - "__docId__": 2702, + "__docId__": 2693, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -52839,7 +52757,7 @@ } }, { - "__docId__": 2703, + "__docId__": 2694, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -52860,7 +52778,7 @@ } }, { - "__docId__": 2704, + "__docId__": 2695, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -52889,7 +52807,7 @@ "return": null }, { - "__docId__": 2705, + "__docId__": 2696, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -52906,7 +52824,7 @@ "return": null }, { - "__docId__": 2706, + "__docId__": 2697, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -52924,7 +52842,7 @@ } }, { - "__docId__": 2707, + "__docId__": 2698, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -52941,7 +52859,7 @@ } }, { - "__docId__": 2708, + "__docId__": 2699, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -52959,7 +52877,7 @@ } }, { - "__docId__": 2709, + "__docId__": 2700, "kind": "member", "name": "_uShadowViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -52977,7 +52895,7 @@ } }, { - "__docId__": 2710, + "__docId__": 2701, "kind": "member", "name": "_uShadowProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -52995,7 +52913,7 @@ } }, { - "__docId__": 2711, + "__docId__": 2702, "kind": "member", "name": "_uZFar", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53013,7 +52931,7 @@ } }, { - "__docId__": 2712, + "__docId__": 2703, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53031,7 +52949,7 @@ } }, { - "__docId__": 2713, + "__docId__": 2704, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53049,7 +52967,7 @@ } }, { - "__docId__": 2714, + "__docId__": 2705, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53067,7 +52985,7 @@ } }, { - "__docId__": 2715, + "__docId__": 2706, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53085,7 +53003,7 @@ } }, { - "__docId__": 2716, + "__docId__": 2707, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53103,7 +53021,7 @@ } }, { - "__docId__": 2717, + "__docId__": 2708, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53121,7 +53039,7 @@ } }, { - "__docId__": 2718, + "__docId__": 2709, "kind": "member", "name": "_uPointSize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53139,7 +53057,7 @@ } }, { - "__docId__": 2719, + "__docId__": 2710, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53163,7 +53081,7 @@ "return": null }, { - "__docId__": 2720, + "__docId__": 2711, "kind": "member", "name": "_lastLightId", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53181,7 +53099,7 @@ } }, { - "__docId__": 2721, + "__docId__": 2712, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53202,7 +53120,7 @@ } }, { - "__docId__": 2722, + "__docId__": 2713, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53223,7 +53141,7 @@ } }, { - "__docId__": 2723, + "__docId__": 2714, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53244,7 +53162,7 @@ } }, { - "__docId__": 2724, + "__docId__": 2715, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53260,7 +53178,7 @@ "return": null }, { - "__docId__": 2726, + "__docId__": 2717, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js~PointsBatchingShadowRenderer", @@ -53276,7 +53194,7 @@ "return": null }, { - "__docId__": 2728, + "__docId__": 2719, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.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\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst defaultColor = new Float32Array([1, 1, 1]);\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass PointsBatchingSilhouetteRenderer {\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() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, pointsBatchingLayer, renderPass) {\n\n const model = pointsBatchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = pointsBatchingLayer._state;\n const rtcCenter = pointsBatchingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\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 gl.uniform1i(this._uRenderPass, renderPass);\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\n const viewMat = (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix;\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMat);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = pointsBatchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, pointsBatchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\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(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uColor = program.getLocation(\"color\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points batching silhouette 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\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\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(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(\"vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points batching silhouette 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"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 = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = 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\nexport {PointsBatchingSilhouetteRenderer};", @@ -53287,7 +53205,7 @@ "lineNumber": 1 }, { - "__docId__": 2729, + "__docId__": 2720, "kind": "variable", "name": "defaultColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js", @@ -53308,7 +53226,7 @@ "ignore": true }, { - "__docId__": 2730, + "__docId__": 2721, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js", @@ -53329,7 +53247,7 @@ "ignore": true }, { - "__docId__": 2731, + "__docId__": 2722, "kind": "class", "name": "PointsBatchingSilhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js", @@ -53345,7 +53263,7 @@ "ignore": true }, { - "__docId__": 2732, + "__docId__": 2723, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53359,7 +53277,7 @@ "undocument": true }, { - "__docId__": 2733, + "__docId__": 2724, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53377,7 +53295,7 @@ } }, { - "__docId__": 2734, + "__docId__": 2725, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53395,7 +53313,7 @@ } }, { - "__docId__": 2735, + "__docId__": 2726, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53415,7 +53333,7 @@ } }, { - "__docId__": 2736, + "__docId__": 2727, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53436,7 +53354,7 @@ } }, { - "__docId__": 2737, + "__docId__": 2728, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53471,7 +53389,7 @@ "return": null }, { - "__docId__": 2738, + "__docId__": 2729, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53488,7 +53406,7 @@ "return": null }, { - "__docId__": 2739, + "__docId__": 2730, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53506,7 +53424,7 @@ } }, { - "__docId__": 2740, + "__docId__": 2731, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53523,7 +53441,7 @@ } }, { - "__docId__": 2741, + "__docId__": 2732, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53541,7 +53459,7 @@ } }, { - "__docId__": 2742, + "__docId__": 2733, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53559,7 +53477,7 @@ } }, { - "__docId__": 2743, + "__docId__": 2734, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53577,7 +53495,7 @@ } }, { - "__docId__": 2744, + "__docId__": 2735, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53595,7 +53513,7 @@ } }, { - "__docId__": 2745, + "__docId__": 2736, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53613,7 +53531,7 @@ } }, { - "__docId__": 2746, + "__docId__": 2737, "kind": "member", "name": "_uColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53631,7 +53549,7 @@ } }, { - "__docId__": 2747, + "__docId__": 2738, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53649,7 +53567,7 @@ } }, { - "__docId__": 2748, + "__docId__": 2739, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53667,7 +53585,7 @@ } }, { - "__docId__": 2749, + "__docId__": 2740, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53685,7 +53603,7 @@ } }, { - "__docId__": 2750, + "__docId__": 2741, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53703,7 +53621,7 @@ } }, { - "__docId__": 2751, + "__docId__": 2742, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53721,7 +53639,7 @@ } }, { - "__docId__": 2752, + "__docId__": 2743, "kind": "member", "name": "_uPointSize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53739,7 +53657,7 @@ } }, { - "__docId__": 2753, + "__docId__": 2744, "kind": "member", "name": "_uNearPlaneHeight", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53757,7 +53675,7 @@ } }, { - "__docId__": 2754, + "__docId__": 2745, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53775,7 +53693,7 @@ } }, { - "__docId__": 2755, + "__docId__": 2746, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53792,7 +53710,7 @@ "return": null }, { - "__docId__": 2756, + "__docId__": 2747, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53813,7 +53731,7 @@ } }, { - "__docId__": 2757, + "__docId__": 2748, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53834,7 +53752,7 @@ } }, { - "__docId__": 2758, + "__docId__": 2749, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53855,7 +53773,7 @@ } }, { - "__docId__": 2759, + "__docId__": 2750, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53871,7 +53789,7 @@ "return": null }, { - "__docId__": 2761, + "__docId__": 2752, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js~PointsBatchingSilhouetteRenderer", @@ -53887,10 +53805,10 @@ "return": null }, { - "__docId__": 2763, + "__docId__": 2754, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.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 {getPointsInstancingRenderers} from \"./PointsInstancingRenderers.js\";\nimport {quantizePositions} from \"../../compression.js\";\n\nconst tempUint8Vec4 = new Uint8Array(4);\nconst tempVec4a = math.vec4([0, 0, 0, 1]);\nconst tempVec4b = math.vec4([0, 0, 0, 1]);\nconst tempVec4c = math.vec4([0, 0, 0, 1]);\nconst tempVec3fa = new Float32Array(3);\n\n/**\n * @private\n */\nclass PointsInstancingLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.positions Flat float Local-space positions array.\n * @param cfg.rtcCenter\n */\n constructor(model, cfg) {\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"PointsInstancingLayer\";\n\n /**\n * Index of this InstancingLayer in PerformanceModel#_layerList\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._pointsInstancingRenderers = getPointsInstancingRenderers(model.scene);\n this.model = model;\n this._aabb = math.collapseAABB3();\n\n const gl = model.scene.canvas.gl;\n\n const stateCfg = {\n positionsDecodeMatrix: math.mat4(),\n numInstances: 0,\n obb: math.OBB3(),\n rtcCenter: null\n };\n\n const preCompressed = (!!cfg.positionsDecodeMatrix);\n\n if (cfg.positions) {\n\n if (preCompressed) {\n\n let normalized = false;\n stateCfg.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, cfg.positions, cfg.positions.length, 3, gl.STATIC_DRAW, normalized);\n stateCfg.positionsDecodeMatrix.set(cfg.positionsDecodeMatrix);\n\n let localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, cfg.positions);\n geometryCompressionUtils.decompressAABB(localAABB, stateCfg.positionsDecodeMatrix);\n math.AABB3ToOBB3(localAABB, stateCfg.obb);\n\n } else {\n\n let lenPositions = cfg.positions.length;\n let localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, cfg.positions);\n math.AABB3ToOBB3(localAABB, stateCfg.obb);\n const quantizedPositions = quantizePositions(cfg.positions, localAABB, stateCfg.positionsDecodeMatrix);\n let normalized = false;\n stateCfg.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, lenPositions, 3, gl.STATIC_DRAW, normalized);\n }\n }\n\n if (cfg.colors) {\n const colors = cfg.colors;\n const compressedColors = new Uint8Array((colors.length / 3) * 4);\n for (let i = 0, j = 0, len = colors.length; i < len; i += 3, j += 4) {\n compressedColors[i + 0] = colors[j + 0] * 255;\n compressedColors[j + 1] = colors[i + 1] * 255;\n compressedColors[j + 2] = colors[i + 2] * 255;\n compressedColors[j + 3] = 255;\n }\n let notNormalized = false;\n stateCfg.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, compressedColors, compressedColors.length, 4, gl.STATIC_DRAW, notNormalized);\n }\n\n this._state = new RenderState(stateCfg);\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 // Vertex 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\n if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n }\n\n this._finalized = false;\n\n /**\n * The axis-aligned World-space boundary of this InstancingLayer's positions.\n * @type {*|Float64Array}\n */\n this.aabb = math.collapseAABB3();\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 cfg Portion params\n * @param cfg.meshMatrix Flat float 4x4 matrix.\n * @param [cfg.worldMatrix] Flat float 4x4 matrix.\n * @param cfg.aabb Flat float AABB.\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID.\n */\n createPortion(cfg) {\n\n const meshMatrix = cfg.meshMatrix;\n const worldMatrix = cfg.worldMatrix;\n const worldAABB = cfg.aabb;\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-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 // Expand AABB\n\n math.collapseAABB3(worldAABB);\n const obb = this._state.obb;\n const lenPositions = obb.length;\n for (let i = 0; i < lenPositions; i += 4) {\n tempVec4a[0] = obb[i + 0];\n tempVec4a[1] = obb[i + 1];\n tempVec4a[2] = obb[i + 2];\n math.transformPoint4(meshMatrix, tempVec4a, tempVec4b);\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4b, tempVec4c);\n math.expandAABB3Point3(worldAABB, tempVec4c);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4b);\n }\n }\n\n if (this._state.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n worldAABB[0] += rtcCenter[0];\n worldAABB[1] += rtcCenter[1];\n worldAABB[2] += rtcCenter[2];\n worldAABB[3] += rtcCenter[0];\n worldAABB[4] += rtcCenter[1];\n worldAABB[5] += rtcCenter[2];\n }\n\n math.expandAABB3(this.aabb, worldAABB);\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 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;\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 let normalized = true;\n this._state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(flagsLength), flagsLength, 4, gl.DYNAMIC_DRAW, notNormalized);\n this._state.flags2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(flagsLength), flagsLength, 4, gl.DYNAMIC_DRAW, normalized);\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 (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 if (this._pickColors.length > 0) {\n const normalized = false;\n this._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 this._finalized = true;\n }\n\n // The following setters are called by PerformanceMesh, in turn called by PerformanceNode, 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 this._setFlags2(portionId, flags);\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._setFlags2(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._setFlags2(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 // 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, 4);\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, 4);\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, 4);\n // }\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 // Normal fill\n\n let f0;\n if (!visible || culled || xrayed) {\n f0 = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (meshTransparent) {\n f0 = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n f0 = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n // Emphasis fill\n\n let f1;\n if (!visible || culled) {\n f1 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f1 = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n f1 = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n f1 = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n f1 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Edges\n\n let f2 = 0;\n if (!visible || culled) {\n f2 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f2 = RENDER_PASSES.EDGES_SELECTED;\n } else if (highlighted) {\n f2 = RENDER_PASSES.EDGES_HIGHLIGHTED;\n } else if (xrayed) {\n f2 = RENDER_PASSES.EDGES_XRAYED;\n } else if (edges) {\n if (meshTransparent) {\n f2 = RENDER_PASSES.EDGES_COLOR_TRANSPARENT;\n } else {\n f2 = RENDER_PASSES.EDGES_COLOR_OPAQUE;\n }\n } else {\n f2 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Pick\n\n let f3 = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n tempUint8Vec4[0] = f0; // x - normal fill\n tempUint8Vec4[1] = f1; // y - emphasis fill\n tempUint8Vec4[2] = f2; // z - edges\n tempUint8Vec4[3] = f3; // w - pick\n\n this._state.flagsBuf.setData(tempUint8Vec4, portionId * 4, 4);\n }\n\n _setFlags2(portionId, flags) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n tempUint8Vec4[0] = clippable;\n\n this._state.flags2Buf.setData(tempUint8Vec4, portionId * 4, 4);\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 // ---------------------- 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._pointsInstancingRenderers.colorRenderer) {\n this._pointsInstancingRenderers.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._pointsInstancingRenderers.colorRenderer) {\n this._pointsInstancingRenderers.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._pointsInstancingRenderers.silhouetteRenderer) {\n this._pointsInstancingRenderers.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._pointsInstancingRenderers.silhouetteRenderer) {\n this._pointsInstancingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_HIGHLIGHTED);\n }\n }\n\n drawSilhouetteSelected(frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n if (this._pointsInstancingRenderers.silhouetteRenderer) {\n this._pointsInstancingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_SELECTED);\n }\n }\n\n //-- EDGES RENDERING -----------------------------------------------------------------------------------------------\n\n drawEdgesColorOpaque(frameCtx) {\n }\n\n drawEdgesColorTransparent(frameCtx) {\n }\n\n drawEdgesHighlighted(frameCtx) {\n }\n\n drawEdgesSelected(frameCtx) {\n }\n\n drawEdgesXRayed(frameCtx) {\n }\n\n // ---------------------- OCCLUSION CULL RENDERING -----------------------------------\n\n drawOcclusion(frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._pointsInstancingRenderers.occlusionRenderer) {\n // Only opaque, filled objects can be occluders\n this._pointsInstancingRenderers.occlusionRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n // ---------------------- SHADOW BUFFER RENDERING -----------------------------------\n\n drawShadow(frameCtx) {\n }\n\n //---- PICKING ----------------------------------------------------------------------------------------------------\n\n drawPickMesh(frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._pointsInstancingRenderers.pickMeshRenderer) {\n this._pointsInstancingRenderers.pickMeshRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickDepths(frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._pointsInstancingRenderers.pickDepthRenderer) {\n this._pointsInstancingRenderers.pickDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickNormals(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.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.flags2Buf) {\n state.flags2Buf.destroy();\n state.flags2Buf = 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\nexport {PointsInstancingLayer};", + "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 {getPointsInstancingRenderers} from \"./PointsInstancingRenderers.js\";\nimport {quantizePositions} from \"../../compression.js\";\n\nconst tempUint8Vec4 = new Uint8Array(4);\nconst tempVec4a = math.vec4([0, 0, 0, 1]);\nconst tempVec4b = math.vec4([0, 0, 0, 1]);\nconst tempVec4c = math.vec4([0, 0, 0, 1]);\nconst tempVec3fa = new Float32Array(3);\n\n/**\n * @private\n */\nclass PointsInstancingLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.positions Flat float Local-space positions array.\n * @param cfg.rtcCenter\n */\n constructor(model, cfg) {\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"PointsInstancingLayer\";\n\n /**\n * Index of this InstancingLayer in PerformanceModel#_layerList\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._pointsInstancingRenderers = getPointsInstancingRenderers(model.scene);\n this.model = model;\n this._aabb = math.collapseAABB3();\n\n const gl = model.scene.canvas.gl;\n\n const stateCfg = {\n positionsDecodeMatrix: math.mat4(),\n numInstances: 0,\n obb: math.OBB3(),\n rtcCenter: null\n };\n\n const preCompressed = (!!cfg.positionsDecodeMatrix);\n\n if (cfg.positions) {\n\n if (preCompressed) {\n\n let normalized = false;\n stateCfg.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, cfg.positions, cfg.positions.length, 3, gl.STATIC_DRAW, normalized);\n stateCfg.positionsDecodeMatrix.set(cfg.positionsDecodeMatrix);\n\n let localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, cfg.positions);\n geometryCompressionUtils.decompressAABB(localAABB, stateCfg.positionsDecodeMatrix);\n math.AABB3ToOBB3(localAABB, stateCfg.obb);\n\n } else {\n\n let lenPositions = cfg.positions.length;\n let localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, cfg.positions);\n math.AABB3ToOBB3(localAABB, stateCfg.obb);\n const quantizedPositions = quantizePositions(cfg.positions, localAABB, stateCfg.positionsDecodeMatrix);\n let normalized = false;\n stateCfg.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, lenPositions, 3, gl.STATIC_DRAW, normalized);\n }\n }\n\n if (cfg.colors) {\n const colors = cfg.colors;\n const compressedColors = new Uint8Array((colors.length / 3) * 4);\n for (let i = 0, j = 0, len = colors.length; i < len; i += 3, j += 4) {\n compressedColors[i + 0] = colors[j + 0] * 255;\n compressedColors[j + 1] = colors[i + 1] * 255;\n compressedColors[j + 2] = colors[i + 2] * 255;\n compressedColors[j + 3] = 255;\n }\n let notNormalized = false;\n stateCfg.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, compressedColors, compressedColors.length, 4, gl.STATIC_DRAW, notNormalized);\n }\n\n this._state = new RenderState(stateCfg);\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 // Vertex 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\n if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n }\n\n this._finalized = false;\n\n /**\n * The axis-aligned World-space boundary of this InstancingLayer's positions.\n * @type {*|Float64Array}\n */\n this.aabb = math.collapseAABB3();\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 cfg Portion params\n * @param cfg.meshMatrix Flat float 4x4 matrix.\n * @param [cfg.worldMatrix] Flat float 4x4 matrix.\n * @param cfg.aabb Flat float AABB.\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID.\n */\n createPortion(cfg) {\n\n const meshMatrix = cfg.meshMatrix;\n const worldMatrix = cfg.worldMatrix;\n const worldAABB = cfg.aabb;\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-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 // Expand AABB\n\n math.collapseAABB3(worldAABB);\n const obb = this._state.obb;\n const lenPositions = obb.length;\n for (let i = 0; i < lenPositions; i += 4) {\n tempVec4a[0] = obb[i + 0];\n tempVec4a[1] = obb[i + 1];\n tempVec4a[2] = obb[i + 2];\n math.transformPoint4(meshMatrix, tempVec4a, tempVec4b);\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4b, tempVec4c);\n math.expandAABB3Point3(worldAABB, tempVec4c);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4b);\n }\n }\n\n if (this._state.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n worldAABB[0] += rtcCenter[0];\n worldAABB[1] += rtcCenter[1];\n worldAABB[2] += rtcCenter[2];\n worldAABB[3] += rtcCenter[0];\n worldAABB[4] += rtcCenter[1];\n worldAABB[5] += rtcCenter[2];\n }\n\n math.expandAABB3(this.aabb, worldAABB);\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 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;\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 let normalized = true;\n this._state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(flagsLength), flagsLength, 4, gl.DYNAMIC_DRAW, notNormalized);\n this._state.flags2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(flagsLength), flagsLength, 4, gl.DYNAMIC_DRAW, normalized);\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 (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 if (this._pickColors.length > 0) {\n const normalized = false;\n this._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 this._finalized = true;\n }\n\n // The following setters are called by PerformanceMesh, in turn called by PerformanceNode, 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 this._setFlags2(portionId, flags);\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._setFlags2(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._setFlags2(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 // 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, 4);\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, 4);\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, 4);\n // }\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 // Normal fill\n\n let f0;\n if (!visible || culled || xrayed) {\n f0 = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (meshTransparent) {\n f0 = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n f0 = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n // Emphasis fill\n\n let f1;\n if (!visible || culled) {\n f1 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f1 = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n f1 = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n f1 = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n f1 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Edges\n\n let f2 = 0;\n if (!visible || culled) {\n f2 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f2 = RENDER_PASSES.EDGES_SELECTED;\n } else if (highlighted) {\n f2 = RENDER_PASSES.EDGES_HIGHLIGHTED;\n } else if (xrayed) {\n f2 = RENDER_PASSES.EDGES_XRAYED;\n } else if (edges) {\n if (meshTransparent) {\n f2 = RENDER_PASSES.EDGES_COLOR_TRANSPARENT;\n } else {\n f2 = RENDER_PASSES.EDGES_COLOR_OPAQUE;\n }\n } else {\n f2 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Pick\n\n let f3 = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n tempUint8Vec4[0] = f0; // x - normal fill\n tempUint8Vec4[1] = f1; // y - emphasis fill\n tempUint8Vec4[2] = f2; // z - edges\n tempUint8Vec4[3] = f3; // w - pick\n\n this._state.flagsBuf.setData(tempUint8Vec4, portionId * 4, 4);\n }\n\n _setFlags2(portionId, flags) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n tempUint8Vec4[0] = clippable;\n\n this._state.flags2Buf.setData(tempUint8Vec4, portionId * 4, 4);\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 // ---------------------- 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._pointsInstancingRenderers.colorRenderer) {\n this._pointsInstancingRenderers.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._pointsInstancingRenderers.colorRenderer) {\n this._pointsInstancingRenderers.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._pointsInstancingRenderers.silhouetteRenderer) {\n this._pointsInstancingRenderers.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._pointsInstancingRenderers.silhouetteRenderer) {\n this._pointsInstancingRenderers.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._pointsInstancingRenderers.silhouetteRenderer) {\n this._pointsInstancingRenderers.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._pointsInstancingRenderers.occlusionRenderer) {\n // Only opaque, filled objects can be occluders\n this._pointsInstancingRenderers.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._pointsInstancingRenderers.pickMeshRenderer) {\n this._pointsInstancingRenderers.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._pointsInstancingRenderers.pickDepthRenderer) {\n this._pointsInstancingRenderers.pickDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickNormals(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.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.flags2Buf) {\n state.flags2Buf.destroy();\n state.flags2Buf = 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\nexport {PointsInstancingLayer};", "static": true, "longname": "/home/lindsay/xeolabs/xeokit/xeokit-nov-18/xeokit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js", "access": "public", @@ -53898,7 +53816,7 @@ "lineNumber": 1 }, { - "__docId__": 2764, + "__docId__": 2755, "kind": "variable", "name": "tempUint8Vec4", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js", @@ -53919,7 +53837,7 @@ "ignore": true }, { - "__docId__": 2765, + "__docId__": 2756, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js", @@ -53940,7 +53858,7 @@ "ignore": true }, { - "__docId__": 2766, + "__docId__": 2757, "kind": "variable", "name": "tempVec4b", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js", @@ -53961,7 +53879,7 @@ "ignore": true }, { - "__docId__": 2767, + "__docId__": 2758, "kind": "variable", "name": "tempVec4c", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js", @@ -53982,7 +53900,7 @@ "ignore": true }, { - "__docId__": 2768, + "__docId__": 2759, "kind": "variable", "name": "tempVec3fa", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js", @@ -54003,7 +53921,7 @@ "ignore": true }, { - "__docId__": 2769, + "__docId__": 2760, "kind": "class", "name": "PointsInstancingLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js", @@ -54019,7 +53937,7 @@ "ignore": true }, { - "__docId__": 2770, + "__docId__": 2761, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54084,7 +54002,7 @@ ] }, { - "__docId__": 2771, + "__docId__": 2762, "kind": "member", "name": "sortId", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54103,7 +54021,7 @@ } }, { - "__docId__": 2772, + "__docId__": 2763, "kind": "member", "name": "layerIndex", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54122,7 +54040,7 @@ } }, { - "__docId__": 2773, + "__docId__": 2764, "kind": "member", "name": "_pointsInstancingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54140,7 +54058,7 @@ } }, { - "__docId__": 2774, + "__docId__": 2765, "kind": "member", "name": "model", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54157,7 +54075,7 @@ } }, { - "__docId__": 2775, + "__docId__": 2766, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54175,7 +54093,7 @@ } }, { - "__docId__": 2776, + "__docId__": 2767, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54193,7 +54111,7 @@ } }, { - "__docId__": 2777, + "__docId__": 2768, "kind": "member", "name": "_numPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54211,7 +54129,7 @@ } }, { - "__docId__": 2778, + "__docId__": 2769, "kind": "member", "name": "_numVisibleLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54229,7 +54147,7 @@ } }, { - "__docId__": 2779, + "__docId__": 2770, "kind": "member", "name": "_numTransparentLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54247,7 +54165,7 @@ } }, { - "__docId__": 2780, + "__docId__": 2771, "kind": "member", "name": "_numXRayedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54265,7 +54183,7 @@ } }, { - "__docId__": 2781, + "__docId__": 2772, "kind": "member", "name": "_numHighlightedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54283,7 +54201,7 @@ } }, { - "__docId__": 2782, + "__docId__": 2773, "kind": "member", "name": "_numSelectedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54301,7 +54219,7 @@ } }, { - "__docId__": 2783, + "__docId__": 2774, "kind": "member", "name": "_numClippableLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54319,7 +54237,7 @@ } }, { - "__docId__": 2784, + "__docId__": 2775, "kind": "member", "name": "_numEdgesLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54337,7 +54255,7 @@ } }, { - "__docId__": 2785, + "__docId__": 2776, "kind": "member", "name": "_numPickableLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54355,7 +54273,7 @@ } }, { - "__docId__": 2786, + "__docId__": 2777, "kind": "member", "name": "_numCulledLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54373,7 +54291,7 @@ } }, { - "__docId__": 2787, + "__docId__": 2778, "kind": "member", "name": "_pickColors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54391,7 +54309,7 @@ } }, { - "__docId__": 2788, + "__docId__": 2779, "kind": "member", "name": "_offsets", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54409,7 +54327,7 @@ } }, { - "__docId__": 2789, + "__docId__": 2780, "kind": "member", "name": "_modelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54427,7 +54345,7 @@ } }, { - "__docId__": 2790, + "__docId__": 2781, "kind": "member", "name": "_modelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54445,7 +54363,7 @@ } }, { - "__docId__": 2791, + "__docId__": 2782, "kind": "member", "name": "_modelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54463,7 +54381,7 @@ } }, { - "__docId__": 2792, + "__docId__": 2783, "kind": "member", "name": "_portions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54481,7 +54399,7 @@ } }, { - "__docId__": 2793, + "__docId__": 2784, "kind": "member", "name": "_finalized", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54499,7 +54417,7 @@ } }, { - "__docId__": 2794, + "__docId__": 2785, "kind": "member", "name": "aabb", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54519,7 +54437,7 @@ } }, { - "__docId__": 2795, + "__docId__": 2786, "kind": "method", "name": "createPortion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54598,7 +54516,7 @@ } }, { - "__docId__": 2796, + "__docId__": 2787, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54614,7 +54532,7 @@ "return": null }, { - "__docId__": 2803, + "__docId__": 2794, "kind": "method", "name": "initFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54649,7 +54567,7 @@ "return": null }, { - "__docId__": 2804, + "__docId__": 2795, "kind": "method", "name": "setVisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54684,7 +54602,7 @@ "return": null }, { - "__docId__": 2805, + "__docId__": 2796, "kind": "method", "name": "setHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54719,7 +54637,7 @@ "return": null }, { - "__docId__": 2806, + "__docId__": 2797, "kind": "method", "name": "setXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54754,7 +54672,7 @@ "return": null }, { - "__docId__": 2807, + "__docId__": 2798, "kind": "method", "name": "setSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54789,7 +54707,7 @@ "return": null }, { - "__docId__": 2808, + "__docId__": 2799, "kind": "method", "name": "setEdges", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54824,7 +54742,7 @@ "return": null }, { - "__docId__": 2809, + "__docId__": 2800, "kind": "method", "name": "setClippable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54853,7 +54771,7 @@ "return": null }, { - "__docId__": 2810, + "__docId__": 2801, "kind": "method", "name": "setCollidable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54882,7 +54800,7 @@ "return": null }, { - "__docId__": 2811, + "__docId__": 2802, "kind": "method", "name": "setPickable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54917,7 +54835,7 @@ "return": null }, { - "__docId__": 2812, + "__docId__": 2803, "kind": "method", "name": "setCulled", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54952,7 +54870,7 @@ "return": null }, { - "__docId__": 2813, + "__docId__": 2804, "kind": "method", "name": "setColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -54981,7 +54899,7 @@ "return": null }, { - "__docId__": 2814, + "__docId__": 2805, "kind": "method", "name": "setTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55016,7 +54934,7 @@ "return": null }, { - "__docId__": 2815, + "__docId__": 2806, "kind": "method", "name": "_setFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55052,7 +54970,7 @@ "return": null }, { - "__docId__": 2816, + "__docId__": 2807, "kind": "method", "name": "_setFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55082,7 +55000,7 @@ "return": null }, { - "__docId__": 2817, + "__docId__": 2808, "kind": "method", "name": "setOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55111,7 +55029,7 @@ "return": null }, { - "__docId__": 2818, + "__docId__": 2809, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55140,7 +55058,7 @@ "return": null }, { - "__docId__": 2819, + "__docId__": 2810, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55169,7 +55087,7 @@ "return": null }, { - "__docId__": 2820, + "__docId__": 2811, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55198,7 +55116,7 @@ "return": null }, { - "__docId__": 2821, + "__docId__": 2812, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55227,7 +55145,7 @@ "return": null }, { - "__docId__": 2822, + "__docId__": 2813, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55256,7 +55174,7 @@ "return": null }, { - "__docId__": 2823, + "__docId__": 2814, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55285,7 +55203,7 @@ "return": null }, { - "__docId__": 2824, + "__docId__": 2815, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55298,6 +55216,12 @@ "lineNumber": 629, "undocument": true, "params": [ + { + "name": "renderFlags", + "types": [ + "*" + ] + }, { "name": "frameCtx", "types": [ @@ -55308,7 +55232,7 @@ "return": null }, { - "__docId__": 2825, + "__docId__": 2816, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55321,6 +55245,12 @@ "lineNumber": 640, "undocument": true, "params": [ + { + "name": "renderFlags", + "types": [ + "*" + ] + }, { "name": "frameCtx", "types": [ @@ -55331,7 +55261,7 @@ "return": null }, { - "__docId__": 2826, + "__docId__": 2817, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55344,6 +55274,12 @@ "lineNumber": 643, "undocument": true, "params": [ + { + "name": "renderFlags", + "types": [ + "*" + ] + }, { "name": "frameCtx", "types": [ @@ -55354,7 +55290,7 @@ "return": null }, { - "__docId__": 2827, + "__docId__": 2818, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55367,6 +55303,12 @@ "lineNumber": 646, "undocument": true, "params": [ + { + "name": "renderFlags", + "types": [ + "*" + ] + }, { "name": "frameCtx", "types": [ @@ -55377,7 +55319,7 @@ "return": null }, { - "__docId__": 2828, + "__docId__": 2819, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55390,6 +55332,12 @@ "lineNumber": 649, "undocument": true, "params": [ + { + "name": "renderFlags", + "types": [ + "*" + ] + }, { "name": "frameCtx", "types": [ @@ -55400,7 +55348,7 @@ "return": null }, { - "__docId__": 2829, + "__docId__": 2820, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55413,6 +55361,12 @@ "lineNumber": 652, "undocument": true, "params": [ + { + "name": "renderFlags", + "types": [ + "*" + ] + }, { "name": "frameCtx", "types": [ @@ -55423,7 +55377,7 @@ "return": null }, { - "__docId__": 2830, + "__docId__": 2821, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55436,6 +55390,12 @@ "lineNumber": 657, "undocument": true, "params": [ + { + "name": "renderFlags", + "types": [ + "*" + ] + }, { "name": "frameCtx", "types": [ @@ -55446,7 +55406,7 @@ "return": null }, { - "__docId__": 2831, + "__docId__": 2822, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55459,6 +55419,12 @@ "lineNumber": 669, "undocument": true, "params": [ + { + "name": "renderFlags", + "types": [ + "*" + ] + }, { "name": "frameCtx", "types": [ @@ -55469,7 +55435,7 @@ "return": null }, { - "__docId__": 2832, + "__docId__": 2823, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55482,6 +55448,12 @@ "lineNumber": 674, "undocument": true, "params": [ + { + "name": "renderFlags", + "types": [ + "*" + ] + }, { "name": "frameCtx", "types": [ @@ -55492,7 +55464,7 @@ "return": null }, { - "__docId__": 2833, + "__docId__": 2824, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55505,6 +55477,12 @@ "lineNumber": 683, "undocument": true, "params": [ + { + "name": "renderFlags", + "types": [ + "*" + ] + }, { "name": "frameCtx", "types": [ @@ -55515,7 +55493,7 @@ "return": null }, { - "__docId__": 2834, + "__docId__": 2825, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55528,6 +55506,12 @@ "lineNumber": 692, "undocument": true, "params": [ + { + "name": "renderFlags", + "types": [ + "*" + ] + }, { "name": "frameCtx", "types": [ @@ -55538,7 +55522,7 @@ "return": null }, { - "__docId__": 2835, + "__docId__": 2826, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js~PointsInstancingLayer", @@ -55554,7 +55538,7 @@ "return": null }, { - "__docId__": 2836, + "__docId__": 2827, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js", "content": "import {PointsInstancingColorRenderer} from \"./renderers/PointsInstancingColorRenderer.js\";\nimport {PointsInstancingSilhouetteRenderer} from \"./renderers/PointsInstancingSilhouetteRenderer.js\";\nimport {PointsInstancingPickMeshRenderer} from \"./renderers/PointsInstancingPickMeshRenderer.js\";\nimport {PointsInstancingPickDepthRenderer} from \"./renderers/PointsInstancingPickDepthRenderer.js\";\nimport {PointsInstancingOcclusionRenderer} from \"./renderers/PointsInstancingOcclusionRenderer.js\";\nimport {PointsInstancingDepthRenderer} from \"./renderers/PointsInstancingDepthRenderer.js\";\nimport {PointsInstancingShadowRenderer} from \"./renderers/PointsInstancingShadowRenderer.js\";\n\n/**\n * @private\n */\nclass PointsInstancingRenderers {\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 }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new PointsInstancingColorRenderer(this._scene, false);\n }\n return this._colorRenderer;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new PointsInstancingSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get depthRenderer() {\n if (!this._depthRenderer) {\n this._depthRenderer = new PointsInstancingDepthRenderer(this._scene);\n }\n return this._depthRenderer;\n }\n\n get pickMeshRenderer() {\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new PointsInstancingPickMeshRenderer(this._scene);\n }\n return this._pickMeshRenderer;\n }\n\n get pickDepthRenderer() {\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new PointsInstancingPickDepthRenderer(this._scene);\n }\n return this._pickDepthRenderer;\n }\n\n get occlusionRenderer() {\n if (!this._occlusionRenderer) {\n this._occlusionRenderer = new PointsInstancingOcclusionRenderer(this._scene);\n }\n return this._occlusionRenderer;\n }\n\n get shadowRenderer() {\n if (!this._shadowRenderer) {\n this._shadowRenderer = new PointsInstancingShadowRenderer(this._scene);\n }\n return this._shadowRenderer;\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 }\n}\n\nconst cachedRenderers = {};\n\nfunction getPointsInstancingRenderers(scene) {\n const sceneId = scene.id;\n let instancingRenderers = cachedRenderers[sceneId];\n if (!instancingRenderers) {\n instancingRenderers = new PointsInstancingRenderers(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\nexport {getPointsInstancingRenderers};", @@ -55565,7 +55549,7 @@ "lineNumber": 1 }, { - "__docId__": 2837, + "__docId__": 2828, "kind": "class", "name": "PointsInstancingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js", @@ -55581,7 +55565,7 @@ "ignore": true }, { - "__docId__": 2838, + "__docId__": 2829, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55595,7 +55579,7 @@ "undocument": true }, { - "__docId__": 2839, + "__docId__": 2830, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55613,7 +55597,7 @@ } }, { - "__docId__": 2840, + "__docId__": 2831, "kind": "method", "name": "_compile", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55630,7 +55614,7 @@ "return": null }, { - "__docId__": 2841, + "__docId__": 2832, "kind": "member", "name": "_colorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55648,7 +55632,7 @@ } }, { - "__docId__": 2842, + "__docId__": 2833, "kind": "member", "name": "_depthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55666,7 +55650,7 @@ } }, { - "__docId__": 2843, + "__docId__": 2834, "kind": "member", "name": "_silhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55684,7 +55668,7 @@ } }, { - "__docId__": 2844, + "__docId__": 2835, "kind": "member", "name": "_pickMeshRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55702,7 +55686,7 @@ } }, { - "__docId__": 2845, + "__docId__": 2836, "kind": "member", "name": "_pickDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55720,7 +55704,7 @@ } }, { - "__docId__": 2846, + "__docId__": 2837, "kind": "member", "name": "_occlusionRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55738,7 +55722,7 @@ } }, { - "__docId__": 2847, + "__docId__": 2838, "kind": "member", "name": "_shadowRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55756,7 +55740,7 @@ } }, { - "__docId__": 2848, + "__docId__": 2839, "kind": "get", "name": "colorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55775,7 +55759,7 @@ } }, { - "__docId__": 2850, + "__docId__": 2841, "kind": "get", "name": "silhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55794,7 +55778,7 @@ } }, { - "__docId__": 2852, + "__docId__": 2843, "kind": "get", "name": "depthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55813,7 +55797,7 @@ } }, { - "__docId__": 2854, + "__docId__": 2845, "kind": "get", "name": "pickMeshRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55832,7 +55816,7 @@ } }, { - "__docId__": 2856, + "__docId__": 2847, "kind": "get", "name": "pickDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55851,7 +55835,7 @@ } }, { - "__docId__": 2858, + "__docId__": 2849, "kind": "get", "name": "occlusionRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55870,7 +55854,7 @@ } }, { - "__docId__": 2860, + "__docId__": 2851, "kind": "get", "name": "shadowRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55889,7 +55873,7 @@ } }, { - "__docId__": 2862, + "__docId__": 2853, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js~PointsInstancingRenderers", @@ -55906,7 +55890,7 @@ "return": null }, { - "__docId__": 2863, + "__docId__": 2854, "kind": "variable", "name": "cachedRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js", @@ -55927,7 +55911,7 @@ "ignore": true }, { - "__docId__": 2864, + "__docId__": 2855, "kind": "function", "name": "getPointsInstancingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js", @@ -55957,7 +55941,7 @@ } }, { - "__docId__": 2865, + "__docId__": 2856, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js", "content": "import {Program} from \"../../../../../webgl/Program.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../../math/rtcCoords.js\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass PointsInstancingColorRenderer {\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() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aColor.bindArrayBuffer(state.colorsBuf);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n instanceExt.drawArraysInstancedANGLE(gl.POINTS, 0, state.positionsBuf.numItems/3, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\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.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._aPosition = program.getAttribute(\"position\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aOffset = program.getAttribute(\"offset\");\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uOcclusionTexture = \"uOcclusionTexture\";\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points instancing color 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\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\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 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(\"vFlags2 = flags2;\");\n }\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points instancing color fragment 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(\"#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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying vec4 vColor;\");\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 = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\" gl_FragColor = vColor;\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\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\nexport {PointsInstancingColorRenderer};", @@ -55968,7 +55952,7 @@ "lineNumber": 1 }, { - "__docId__": 2866, + "__docId__": 2857, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js", @@ -55989,7 +55973,7 @@ "ignore": true }, { - "__docId__": 2867, + "__docId__": 2858, "kind": "class", "name": "PointsInstancingColorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js", @@ -56005,7 +55989,7 @@ "ignore": true }, { - "__docId__": 2868, + "__docId__": 2859, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56019,7 +56003,7 @@ "undocument": true }, { - "__docId__": 2869, + "__docId__": 2860, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56037,7 +56021,7 @@ } }, { - "__docId__": 2870, + "__docId__": 2861, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56055,7 +56039,7 @@ } }, { - "__docId__": 2871, + "__docId__": 2862, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56075,7 +56059,7 @@ } }, { - "__docId__": 2872, + "__docId__": 2863, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56096,7 +56080,7 @@ } }, { - "__docId__": 2873, + "__docId__": 2864, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56131,7 +56115,7 @@ "return": null }, { - "__docId__": 2874, + "__docId__": 2865, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56148,7 +56132,7 @@ "return": null }, { - "__docId__": 2875, + "__docId__": 2866, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56166,7 +56150,7 @@ } }, { - "__docId__": 2876, + "__docId__": 2867, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56183,7 +56167,7 @@ } }, { - "__docId__": 2877, + "__docId__": 2868, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56201,7 +56185,7 @@ } }, { - "__docId__": 2878, + "__docId__": 2869, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56219,7 +56203,7 @@ } }, { - "__docId__": 2879, + "__docId__": 2870, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56237,7 +56221,7 @@ } }, { - "__docId__": 2880, + "__docId__": 2871, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56255,7 +56239,7 @@ } }, { - "__docId__": 2881, + "__docId__": 2872, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56273,7 +56257,7 @@ } }, { - "__docId__": 2882, + "__docId__": 2873, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56291,7 +56275,7 @@ } }, { - "__docId__": 2883, + "__docId__": 2874, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56309,7 +56293,7 @@ } }, { - "__docId__": 2884, + "__docId__": 2875, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56327,7 +56311,7 @@ } }, { - "__docId__": 2885, + "__docId__": 2876, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56345,7 +56329,7 @@ } }, { - "__docId__": 2886, + "__docId__": 2877, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56363,7 +56347,7 @@ } }, { - "__docId__": 2887, + "__docId__": 2878, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56381,7 +56365,7 @@ } }, { - "__docId__": 2888, + "__docId__": 2879, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56399,7 +56383,7 @@ } }, { - "__docId__": 2889, + "__docId__": 2880, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56417,7 +56401,7 @@ } }, { - "__docId__": 2890, + "__docId__": 2881, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56435,7 +56419,7 @@ } }, { - "__docId__": 2891, + "__docId__": 2882, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56453,7 +56437,7 @@ } }, { - "__docId__": 2892, + "__docId__": 2883, "kind": "member", "name": "_uOcclusionTexture", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56471,7 +56455,7 @@ } }, { - "__docId__": 2893, + "__docId__": 2884, "kind": "member", "name": "_uPointSize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56489,7 +56473,7 @@ } }, { - "__docId__": 2894, + "__docId__": 2885, "kind": "member", "name": "_uNearPlaneHeight", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56507,7 +56491,7 @@ } }, { - "__docId__": 2895, + "__docId__": 2886, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56525,7 +56509,7 @@ } }, { - "__docId__": 2896, + "__docId__": 2887, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56549,7 +56533,7 @@ "return": null }, { - "__docId__": 2897, + "__docId__": 2888, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56570,7 +56554,7 @@ } }, { - "__docId__": 2898, + "__docId__": 2889, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56591,7 +56575,7 @@ } }, { - "__docId__": 2899, + "__docId__": 2890, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56612,7 +56596,7 @@ } }, { - "__docId__": 2900, + "__docId__": 2891, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56628,7 +56612,7 @@ "return": null }, { - "__docId__": 2902, + "__docId__": 2893, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js~PointsInstancingColorRenderer", @@ -56644,7 +56628,7 @@ "return": null }, { - "__docId__": 2904, + "__docId__": 2895, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.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();\n\n/**\n * @private\n */\nclass PointsInstancingDepthRenderer {\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() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n instanceExt.drawArraysInstancedANGLE(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\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.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push(\"// Points instancing depth 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 vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\");\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\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);\"); // 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(\"vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points instancing depth 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(\"#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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"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 = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\" gl_FragColor = packDepthToRGBA( gl_FragCoord.z); \"); // Must be linear depth\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\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\nexport {PointsInstancingDepthRenderer};", @@ -56655,7 +56639,7 @@ "lineNumber": 1 }, { - "__docId__": 2905, + "__docId__": 2896, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js", @@ -56676,7 +56660,7 @@ "ignore": true }, { - "__docId__": 2906, + "__docId__": 2897, "kind": "class", "name": "PointsInstancingDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js", @@ -56692,7 +56676,7 @@ "ignore": true }, { - "__docId__": 2907, + "__docId__": 2898, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56706,7 +56690,7 @@ "undocument": true }, { - "__docId__": 2908, + "__docId__": 2899, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56724,7 +56708,7 @@ } }, { - "__docId__": 2909, + "__docId__": 2900, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56742,7 +56726,7 @@ } }, { - "__docId__": 2910, + "__docId__": 2901, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56762,7 +56746,7 @@ } }, { - "__docId__": 2911, + "__docId__": 2902, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56783,7 +56767,7 @@ } }, { - "__docId__": 2912, + "__docId__": 2903, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56818,7 +56802,7 @@ "return": null }, { - "__docId__": 2913, + "__docId__": 2904, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56835,7 +56819,7 @@ "return": null }, { - "__docId__": 2914, + "__docId__": 2905, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56853,7 +56837,7 @@ } }, { - "__docId__": 2915, + "__docId__": 2906, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56870,7 +56854,7 @@ } }, { - "__docId__": 2916, + "__docId__": 2907, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56888,7 +56872,7 @@ } }, { - "__docId__": 2917, + "__docId__": 2908, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56906,7 +56890,7 @@ } }, { - "__docId__": 2918, + "__docId__": 2909, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56924,7 +56908,7 @@ } }, { - "__docId__": 2919, + "__docId__": 2910, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56942,7 +56926,7 @@ } }, { - "__docId__": 2920, + "__docId__": 2911, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56960,7 +56944,7 @@ } }, { - "__docId__": 2921, + "__docId__": 2912, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56978,7 +56962,7 @@ } }, { - "__docId__": 2922, + "__docId__": 2913, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -56996,7 +56980,7 @@ } }, { - "__docId__": 2923, + "__docId__": 2914, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57014,7 +56998,7 @@ } }, { - "__docId__": 2924, + "__docId__": 2915, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57032,7 +57016,7 @@ } }, { - "__docId__": 2925, + "__docId__": 2916, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57050,7 +57034,7 @@ } }, { - "__docId__": 2926, + "__docId__": 2917, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57068,7 +57052,7 @@ } }, { - "__docId__": 2927, + "__docId__": 2918, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57086,7 +57070,7 @@ } }, { - "__docId__": 2928, + "__docId__": 2919, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57104,7 +57088,7 @@ } }, { - "__docId__": 2929, + "__docId__": 2920, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57122,7 +57106,7 @@ } }, { - "__docId__": 2930, + "__docId__": 2921, "kind": "member", "name": "_uPointSize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57140,7 +57124,7 @@ } }, { - "__docId__": 2931, + "__docId__": 2922, "kind": "member", "name": "_uNearPlaneHeight", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57158,7 +57142,7 @@ } }, { - "__docId__": 2932, + "__docId__": 2923, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57176,7 +57160,7 @@ } }, { - "__docId__": 2933, + "__docId__": 2924, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57193,7 +57177,7 @@ "return": null }, { - "__docId__": 2934, + "__docId__": 2925, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57214,7 +57198,7 @@ } }, { - "__docId__": 2935, + "__docId__": 2926, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57235,7 +57219,7 @@ } }, { - "__docId__": 2936, + "__docId__": 2927, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57256,7 +57240,7 @@ } }, { - "__docId__": 2937, + "__docId__": 2928, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57272,7 +57256,7 @@ "return": null }, { - "__docId__": 2939, + "__docId__": 2930, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js~PointsInstancingDepthRenderer", @@ -57288,7 +57272,7 @@ "return": null }, { - "__docId__": 2941, + "__docId__": 2932, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.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();\n\n/**\n * @private\n */\nclass PointsInstancingOcclusionRenderer {\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() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n }\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n instanceExt.drawArraysInstancedANGLE(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n // Cleanup\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n if (this._aColor) {\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n }\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n const clips = 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\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points instancing occlusion vertex 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(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\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 = 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 }\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points instancing occlusion 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\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(\"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 = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let 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 src.push(\"}\");\n }\n src.push(\" gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); \"); // Occluders are blue\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\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\nexport {PointsInstancingOcclusionRenderer};", @@ -57299,7 +57283,7 @@ "lineNumber": 1 }, { - "__docId__": 2942, + "__docId__": 2933, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js", @@ -57320,7 +57304,7 @@ "ignore": true }, { - "__docId__": 2943, + "__docId__": 2934, "kind": "class", "name": "PointsInstancingOcclusionRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js", @@ -57336,7 +57320,7 @@ "ignore": true }, { - "__docId__": 2944, + "__docId__": 2935, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57350,7 +57334,7 @@ "undocument": true }, { - "__docId__": 2945, + "__docId__": 2936, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57368,7 +57352,7 @@ } }, { - "__docId__": 2946, + "__docId__": 2937, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57386,7 +57370,7 @@ } }, { - "__docId__": 2947, + "__docId__": 2938, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57406,7 +57390,7 @@ } }, { - "__docId__": 2948, + "__docId__": 2939, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57427,7 +57411,7 @@ } }, { - "__docId__": 2949, + "__docId__": 2940, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57462,7 +57446,7 @@ "return": null }, { - "__docId__": 2950, + "__docId__": 2941, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57479,7 +57463,7 @@ "return": null }, { - "__docId__": 2951, + "__docId__": 2942, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57497,7 +57481,7 @@ } }, { - "__docId__": 2952, + "__docId__": 2943, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57514,7 +57498,7 @@ } }, { - "__docId__": 2953, + "__docId__": 2944, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57532,7 +57516,7 @@ } }, { - "__docId__": 2954, + "__docId__": 2945, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57550,7 +57534,7 @@ } }, { - "__docId__": 2955, + "__docId__": 2946, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57568,7 +57552,7 @@ } }, { - "__docId__": 2956, + "__docId__": 2947, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57586,7 +57570,7 @@ } }, { - "__docId__": 2957, + "__docId__": 2948, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57604,7 +57588,7 @@ } }, { - "__docId__": 2958, + "__docId__": 2949, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57622,7 +57606,7 @@ } }, { - "__docId__": 2959, + "__docId__": 2950, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57640,7 +57624,7 @@ } }, { - "__docId__": 2960, + "__docId__": 2951, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57658,7 +57642,7 @@ } }, { - "__docId__": 2961, + "__docId__": 2952, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57676,7 +57660,7 @@ } }, { - "__docId__": 2962, + "__docId__": 2953, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57694,7 +57678,7 @@ } }, { - "__docId__": 2963, + "__docId__": 2954, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57712,7 +57696,7 @@ } }, { - "__docId__": 2964, + "__docId__": 2955, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57730,7 +57714,7 @@ } }, { - "__docId__": 2965, + "__docId__": 2956, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57748,7 +57732,7 @@ } }, { - "__docId__": 2966, + "__docId__": 2957, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57766,7 +57750,7 @@ } }, { - "__docId__": 2967, + "__docId__": 2958, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57784,7 +57768,7 @@ } }, { - "__docId__": 2968, + "__docId__": 2959, "kind": "member", "name": "_uPointSize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57802,7 +57786,7 @@ } }, { - "__docId__": 2969, + "__docId__": 2960, "kind": "member", "name": "_uNearPlaneHeight", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57820,7 +57804,7 @@ } }, { - "__docId__": 2970, + "__docId__": 2961, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57838,7 +57822,7 @@ } }, { - "__docId__": 2971, + "__docId__": 2962, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57855,7 +57839,7 @@ "return": null }, { - "__docId__": 2972, + "__docId__": 2963, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57876,7 +57860,7 @@ } }, { - "__docId__": 2973, + "__docId__": 2964, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57897,7 +57881,7 @@ } }, { - "__docId__": 2974, + "__docId__": 2965, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57918,7 +57902,7 @@ } }, { - "__docId__": 2975, + "__docId__": 2966, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57934,7 +57918,7 @@ "return": null }, { - "__docId__": 2977, + "__docId__": 2968, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js~PointsInstancingOcclusionRenderer", @@ -57950,7 +57934,7 @@ "return": null }, { - "__docId__": 2979, + "__docId__": 2970, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.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();\n\n/**\n * @private\n */\nclass PointsInstancingPickDepthRenderer {\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() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\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 camera = scene.camera;\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const rtcPickViewMatrix = (rtcCenter) ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcPickViewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n gl.uniform1f(this._uPickZNear, frameCtx.pickZNear);\n gl.uniform1f(this._uPickZFar, frameCtx.pickZFar);\n\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 numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n instanceExt.drawArraysInstancedANGLE(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n // Cleanup\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uPickZNear = program.getLocation(\"pickZNear\");\n this._uPickZFar = program.getLocation(\"pickZFar\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n this._program.bind();\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 clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points instancing pick depth vertex 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(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\")\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\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(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(\" vFlags2 = flags2;\");\n }\n src.push(\" vViewPosition = viewPosition;\");\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points instancing pick depth 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(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n src.push(\"uniform float pickZNear;\");\n src.push(\"uniform float pickZFar;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\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(\"varying 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(\"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 = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let 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 src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\");\n src.push(\" gl_FragColor = 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\nexport {PointsInstancingPickDepthRenderer};", @@ -57961,7 +57945,7 @@ "lineNumber": 1 }, { - "__docId__": 2980, + "__docId__": 2971, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js", @@ -57982,7 +57966,7 @@ "ignore": true }, { - "__docId__": 2981, + "__docId__": 2972, "kind": "class", "name": "PointsInstancingPickDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js", @@ -57998,7 +57982,7 @@ "ignore": true }, { - "__docId__": 2982, + "__docId__": 2973, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58012,7 +57996,7 @@ "undocument": true }, { - "__docId__": 2983, + "__docId__": 2974, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58030,7 +58014,7 @@ } }, { - "__docId__": 2984, + "__docId__": 2975, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58048,7 +58032,7 @@ } }, { - "__docId__": 2985, + "__docId__": 2976, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58068,7 +58052,7 @@ } }, { - "__docId__": 2986, + "__docId__": 2977, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58089,7 +58073,7 @@ } }, { - "__docId__": 2987, + "__docId__": 2978, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58124,7 +58108,7 @@ "return": null }, { - "__docId__": 2988, + "__docId__": 2979, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58141,7 +58125,7 @@ "return": null }, { - "__docId__": 2989, + "__docId__": 2980, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58159,7 +58143,7 @@ } }, { - "__docId__": 2990, + "__docId__": 2981, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58176,7 +58160,7 @@ } }, { - "__docId__": 2991, + "__docId__": 2982, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58194,7 +58178,7 @@ } }, { - "__docId__": 2992, + "__docId__": 2983, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58212,7 +58196,7 @@ } }, { - "__docId__": 2993, + "__docId__": 2984, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58230,7 +58214,7 @@ } }, { - "__docId__": 2994, + "__docId__": 2985, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58248,7 +58232,7 @@ } }, { - "__docId__": 2995, + "__docId__": 2986, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58266,7 +58250,7 @@ } }, { - "__docId__": 2996, + "__docId__": 2987, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58284,7 +58268,7 @@ } }, { - "__docId__": 2997, + "__docId__": 2988, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58302,7 +58286,7 @@ } }, { - "__docId__": 2998, + "__docId__": 2989, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58320,7 +58304,7 @@ } }, { - "__docId__": 2999, + "__docId__": 2990, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58338,7 +58322,7 @@ } }, { - "__docId__": 3000, + "__docId__": 2991, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58356,7 +58340,7 @@ } }, { - "__docId__": 3001, + "__docId__": 2992, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58374,7 +58358,7 @@ } }, { - "__docId__": 3002, + "__docId__": 2993, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58392,7 +58376,7 @@ } }, { - "__docId__": 3003, + "__docId__": 2994, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58410,7 +58394,7 @@ } }, { - "__docId__": 3004, + "__docId__": 2995, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58428,7 +58412,7 @@ } }, { - "__docId__": 3005, + "__docId__": 2996, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58446,7 +58430,7 @@ } }, { - "__docId__": 3006, + "__docId__": 2997, "kind": "member", "name": "_uPickZNear", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58464,7 +58448,7 @@ } }, { - "__docId__": 3007, + "__docId__": 2998, "kind": "member", "name": "_uPickZFar", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58482,7 +58466,7 @@ } }, { - "__docId__": 3008, + "__docId__": 2999, "kind": "member", "name": "_uPointSize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58500,7 +58484,7 @@ } }, { - "__docId__": 3009, + "__docId__": 3000, "kind": "member", "name": "_uNearPlaneHeight", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58518,7 +58502,7 @@ } }, { - "__docId__": 3010, + "__docId__": 3001, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58536,7 +58520,7 @@ } }, { - "__docId__": 3011, + "__docId__": 3002, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58553,7 +58537,7 @@ "return": null }, { - "__docId__": 3012, + "__docId__": 3003, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58574,7 +58558,7 @@ } }, { - "__docId__": 3013, + "__docId__": 3004, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58595,7 +58579,7 @@ } }, { - "__docId__": 3014, + "__docId__": 3005, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58616,7 +58600,7 @@ } }, { - "__docId__": 3015, + "__docId__": 3006, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58632,7 +58616,7 @@ "return": null }, { - "__docId__": 3017, + "__docId__": 3008, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js~PointsInstancingPickDepthRenderer", @@ -58648,7 +58632,7 @@ "return": null }, { - "__docId__": 3019, + "__docId__": 3010, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.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();\n\n/**\n * @private\n */\nclass PointsInstancingPickMeshRenderer {\n\n constructor(scene) {\n\n this._scene = scene;\n this._hash = this._getHash();\n\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const rtcPickViewMatrix = (rtcCenter) ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcPickViewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\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\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPickColor.bindArrayBuffer(state.pickColorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aPickColor.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n instanceExt.drawArraysInstancedANGLE(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n // Cleanup\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aPickColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n const clips = sectionPlanesState.sectionPlanes;\n\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\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aPickColor = program.getAttribute(\"pickColor\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n\n program.bind();\n\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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points instancing pick mesh 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 vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 pickColor;\");\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vPickColor;\");\n src.push(\"void main(void) {\");\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(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(\" vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points instancing pick mesh fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\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(\"varying vec4 vPickColor;\");\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 = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let 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 src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = 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\nexport {PointsInstancingPickMeshRenderer};", @@ -58659,7 +58643,7 @@ "lineNumber": 1 }, { - "__docId__": 3020, + "__docId__": 3011, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js", @@ -58680,7 +58664,7 @@ "ignore": true }, { - "__docId__": 3021, + "__docId__": 3012, "kind": "class", "name": "PointsInstancingPickMeshRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js", @@ -58696,7 +58680,7 @@ "ignore": true }, { - "__docId__": 3022, + "__docId__": 3013, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58710,7 +58694,7 @@ "undocument": true }, { - "__docId__": 3023, + "__docId__": 3014, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58728,7 +58712,7 @@ } }, { - "__docId__": 3024, + "__docId__": 3015, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58746,7 +58730,7 @@ } }, { - "__docId__": 3025, + "__docId__": 3016, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58766,7 +58750,7 @@ } }, { - "__docId__": 3026, + "__docId__": 3017, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58787,7 +58771,7 @@ } }, { - "__docId__": 3027, + "__docId__": 3018, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58822,7 +58806,7 @@ "return": null }, { - "__docId__": 3028, + "__docId__": 3019, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58839,7 +58823,7 @@ "return": null }, { - "__docId__": 3029, + "__docId__": 3020, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58857,7 +58841,7 @@ } }, { - "__docId__": 3030, + "__docId__": 3021, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58874,7 +58858,7 @@ } }, { - "__docId__": 3031, + "__docId__": 3022, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58892,7 +58876,7 @@ } }, { - "__docId__": 3032, + "__docId__": 3023, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58910,7 +58894,7 @@ } }, { - "__docId__": 3033, + "__docId__": 3024, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58928,7 +58912,7 @@ } }, { - "__docId__": 3034, + "__docId__": 3025, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58946,7 +58930,7 @@ } }, { - "__docId__": 3035, + "__docId__": 3026, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58964,7 +58948,7 @@ } }, { - "__docId__": 3036, + "__docId__": 3027, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -58982,7 +58966,7 @@ } }, { - "__docId__": 3037, + "__docId__": 3028, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59000,7 +58984,7 @@ } }, { - "__docId__": 3038, + "__docId__": 3029, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59018,7 +59002,7 @@ } }, { - "__docId__": 3039, + "__docId__": 3030, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59036,7 +59020,7 @@ } }, { - "__docId__": 3040, + "__docId__": 3031, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59054,7 +59038,7 @@ } }, { - "__docId__": 3041, + "__docId__": 3032, "kind": "member", "name": "_aPickColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59072,7 +59056,7 @@ } }, { - "__docId__": 3042, + "__docId__": 3033, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59090,7 +59074,7 @@ } }, { - "__docId__": 3043, + "__docId__": 3034, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59108,7 +59092,7 @@ } }, { - "__docId__": 3044, + "__docId__": 3035, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59126,7 +59110,7 @@ } }, { - "__docId__": 3045, + "__docId__": 3036, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59144,7 +59128,7 @@ } }, { - "__docId__": 3046, + "__docId__": 3037, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59162,7 +59146,7 @@ } }, { - "__docId__": 3047, + "__docId__": 3038, "kind": "member", "name": "_uPointSize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59180,7 +59164,7 @@ } }, { - "__docId__": 3048, + "__docId__": 3039, "kind": "member", "name": "_uNearPlaneHeight", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59198,7 +59182,7 @@ } }, { - "__docId__": 3049, + "__docId__": 3040, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59216,7 +59200,7 @@ } }, { - "__docId__": 3050, + "__docId__": 3041, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59240,7 +59224,7 @@ "return": null }, { - "__docId__": 3051, + "__docId__": 3042, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59261,7 +59245,7 @@ } }, { - "__docId__": 3052, + "__docId__": 3043, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59282,7 +59266,7 @@ } }, { - "__docId__": 3053, + "__docId__": 3044, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59303,7 +59287,7 @@ } }, { - "__docId__": 3054, + "__docId__": 3045, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59319,7 +59303,7 @@ "return": null }, { - "__docId__": 3056, + "__docId__": 3047, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js~PointsInstancingPickMeshRenderer", @@ -59335,7 +59319,7 @@ "return": null }, { - "__docId__": 3058, + "__docId__": 3049, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.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();\n\n/**\n * Renders InstancingLayer fragment depths to a shadow map.\n *\n * @private\n */\nclass PointsInstancingShadowRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._lastLightId = null;\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, instancingLayer) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\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, instancingLayer);\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n // TODO: Section planes need to be set if RTC center has changed since last RTC center recorded on frameCtx\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n const rtcCenter = instancingLayer._state.rtcCenter;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniform1f(this._uPointSize, 10);\n\n instanceExt.drawArraysInstancedANGLE(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uShadowViewMatrix = program.getLocation(\"shadowViewMatrix\");\n this._uShadowProjMatrix = program.getLocation(\"shadowProjMatrix\");\n this._uSectionPlanes = [];\n const clips = 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._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n this._uPointSize = program.getLocation(\"pointSize\");\n }\n\n _bindProgram(frameCtx, instancingLayer) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n program.bind();\n gl.uniformMatrix4fv(this._uShadowViewMatrix, false, frameCtx.shadowViewMatrix);\n gl.uniformMatrix4fv(this._uShadowProjMatrix, false, frameCtx.shadowProjMatrix);\n this._lastLightId = null;\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 clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry shadow drawing vertex shader\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\");\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 shadowViewMatrix;\");\n src.push(\"uniform mat4 shadowProjMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n src.push(\"uniform float pointSize;\");\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"void main(void) {\");\n src.push(\"bool visible = (float(flags.x) > 0.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(\"vFlags2 = flags2;\");\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry depth drawing fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying 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 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 = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = 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\nexport {PointsInstancingShadowRenderer};", @@ -59346,7 +59330,7 @@ "lineNumber": 1 }, { - "__docId__": 3059, + "__docId__": 3050, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js", @@ -59367,7 +59351,7 @@ "ignore": true }, { - "__docId__": 3060, + "__docId__": 3051, "kind": "class", "name": "PointsInstancingShadowRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js", @@ -59383,7 +59367,7 @@ "ignore": true }, { - "__docId__": 3061, + "__docId__": 3052, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59397,7 +59381,7 @@ "undocument": true }, { - "__docId__": 3062, + "__docId__": 3053, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59415,7 +59399,7 @@ } }, { - "__docId__": 3063, + "__docId__": 3054, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59433,7 +59417,7 @@ } }, { - "__docId__": 3064, + "__docId__": 3055, "kind": "member", "name": "_lastLightId", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59451,7 +59435,7 @@ } }, { - "__docId__": 3065, + "__docId__": 3056, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59471,7 +59455,7 @@ } }, { - "__docId__": 3066, + "__docId__": 3057, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59492,7 +59476,7 @@ } }, { - "__docId__": 3067, + "__docId__": 3058, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59521,7 +59505,7 @@ "return": null }, { - "__docId__": 3068, + "__docId__": 3059, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59538,7 +59522,7 @@ "return": null }, { - "__docId__": 3069, + "__docId__": 3060, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59556,7 +59540,7 @@ } }, { - "__docId__": 3070, + "__docId__": 3061, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59573,7 +59557,7 @@ } }, { - "__docId__": 3071, + "__docId__": 3062, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59591,7 +59575,7 @@ } }, { - "__docId__": 3072, + "__docId__": 3063, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59609,7 +59593,7 @@ } }, { - "__docId__": 3073, + "__docId__": 3064, "kind": "member", "name": "_uShadowViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59627,7 +59611,7 @@ } }, { - "__docId__": 3074, + "__docId__": 3065, "kind": "member", "name": "_uShadowProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59645,7 +59629,7 @@ } }, { - "__docId__": 3075, + "__docId__": 3066, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59663,7 +59647,7 @@ } }, { - "__docId__": 3076, + "__docId__": 3067, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59681,7 +59665,7 @@ } }, { - "__docId__": 3077, + "__docId__": 3068, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59699,7 +59683,7 @@ } }, { - "__docId__": 3078, + "__docId__": 3069, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59717,7 +59701,7 @@ } }, { - "__docId__": 3079, + "__docId__": 3070, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59735,7 +59719,7 @@ } }, { - "__docId__": 3080, + "__docId__": 3071, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59753,7 +59737,7 @@ } }, { - "__docId__": 3081, + "__docId__": 3072, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59771,7 +59755,7 @@ } }, { - "__docId__": 3082, + "__docId__": 3073, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59789,7 +59773,7 @@ } }, { - "__docId__": 3083, + "__docId__": 3074, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59807,7 +59791,7 @@ } }, { - "__docId__": 3084, + "__docId__": 3075, "kind": "member", "name": "_uPointSize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59825,7 +59809,7 @@ } }, { - "__docId__": 3085, + "__docId__": 3076, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59855,7 +59839,7 @@ "return": null }, { - "__docId__": 3087, + "__docId__": 3078, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59876,7 +59860,7 @@ } }, { - "__docId__": 3088, + "__docId__": 3079, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59897,7 +59881,7 @@ } }, { - "__docId__": 3089, + "__docId__": 3080, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59918,7 +59902,7 @@ } }, { - "__docId__": 3090, + "__docId__": 3081, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59934,7 +59918,7 @@ "return": null }, { - "__docId__": 3092, + "__docId__": 3083, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js~PointsInstancingShadowRenderer", @@ -59950,7 +59934,7 @@ "return": null }, { - "__docId__": 3094, + "__docId__": 3085, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.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\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass PointsInstancingSilhouetteRenderer {\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() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\n\n if (!this._program) {\n this._allocate(instancingLayer.model.scene);\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 gl.uniform1i(this._uRenderPass, renderPass);\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, math.vec3([1, 1, 1]));\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n instanceExt.drawArraysInstancedANGLE(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0); // TODO: Is this needed\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n if (this._aFlags2) {\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uColor = program.getLocation(\"color\");\n this._uSectionPlanes = [];\n\n const clips = 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\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points instancing silhouette vertex shader\");\n\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\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n src.push(\"uniform vec4 color;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\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(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(\"vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points instancing silhouette fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"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 = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = 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\nexport {PointsInstancingSilhouetteRenderer};", @@ -59961,7 +59945,7 @@ "lineNumber": 1 }, { - "__docId__": 3095, + "__docId__": 3086, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js", @@ -59982,7 +59966,7 @@ "ignore": true }, { - "__docId__": 3096, + "__docId__": 3087, "kind": "class", "name": "PointsInstancingSilhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js", @@ -59998,7 +59982,7 @@ "ignore": true }, { - "__docId__": 3097, + "__docId__": 3088, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60012,7 +59996,7 @@ "undocument": true }, { - "__docId__": 3098, + "__docId__": 3089, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60030,7 +60014,7 @@ } }, { - "__docId__": 3099, + "__docId__": 3090, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60048,7 +60032,7 @@ } }, { - "__docId__": 3100, + "__docId__": 3091, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60068,7 +60052,7 @@ } }, { - "__docId__": 3101, + "__docId__": 3092, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60089,7 +60073,7 @@ } }, { - "__docId__": 3102, + "__docId__": 3093, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60124,7 +60108,7 @@ "return": null }, { - "__docId__": 3103, + "__docId__": 3094, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60141,7 +60125,7 @@ "return": null }, { - "__docId__": 3104, + "__docId__": 3095, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60159,7 +60143,7 @@ } }, { - "__docId__": 3105, + "__docId__": 3096, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60176,7 +60160,7 @@ } }, { - "__docId__": 3106, + "__docId__": 3097, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60194,7 +60178,7 @@ } }, { - "__docId__": 3107, + "__docId__": 3098, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60212,7 +60196,7 @@ } }, { - "__docId__": 3108, + "__docId__": 3099, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60230,7 +60214,7 @@ } }, { - "__docId__": 3109, + "__docId__": 3100, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60248,7 +60232,7 @@ } }, { - "__docId__": 3110, + "__docId__": 3101, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60266,7 +60250,7 @@ } }, { - "__docId__": 3111, + "__docId__": 3102, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60284,7 +60268,7 @@ } }, { - "__docId__": 3112, + "__docId__": 3103, "kind": "member", "name": "_uColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60302,7 +60286,7 @@ } }, { - "__docId__": 3113, + "__docId__": 3104, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60320,7 +60304,7 @@ } }, { - "__docId__": 3114, + "__docId__": 3105, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60338,7 +60322,7 @@ } }, { - "__docId__": 3115, + "__docId__": 3106, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60356,7 +60340,7 @@ } }, { - "__docId__": 3116, + "__docId__": 3107, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60374,7 +60358,7 @@ } }, { - "__docId__": 3117, + "__docId__": 3108, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60392,7 +60376,7 @@ } }, { - "__docId__": 3118, + "__docId__": 3109, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60410,7 +60394,7 @@ } }, { - "__docId__": 3119, + "__docId__": 3110, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60428,7 +60412,7 @@ } }, { - "__docId__": 3120, + "__docId__": 3111, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60446,7 +60430,7 @@ } }, { - "__docId__": 3121, + "__docId__": 3112, "kind": "member", "name": "_uPointSize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60464,7 +60448,7 @@ } }, { - "__docId__": 3122, + "__docId__": 3113, "kind": "member", "name": "_uNearPlaneHeight", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60482,7 +60466,7 @@ } }, { - "__docId__": 3123, + "__docId__": 3114, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60500,7 +60484,7 @@ } }, { - "__docId__": 3124, + "__docId__": 3115, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60517,7 +60501,7 @@ "return": null }, { - "__docId__": 3125, + "__docId__": 3116, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60538,7 +60522,7 @@ } }, { - "__docId__": 3126, + "__docId__": 3117, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60559,7 +60543,7 @@ } }, { - "__docId__": 3127, + "__docId__": 3118, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60580,7 +60564,7 @@ } }, { - "__docId__": 3128, + "__docId__": 3119, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60596,7 +60580,7 @@ "return": null }, { - "__docId__": 3130, + "__docId__": 3121, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js~PointsInstancingSilhouetteRenderer", @@ -60612,7 +60596,7 @@ "return": null }, { - "__docId__": 3132, + "__docId__": 3123, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js", "content": "import {WEBGL_INFO} from \"../../../../webglInfo.js\";\n\nconst bigIndicesSupported = WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\n\n/**\n * @private\n */\nclass TrianglesBatchingBuffer {\n\n constructor(maxGeometryBatchSize = 5000000) {\n\n if (bigIndicesSupported) {\n if (maxGeometryBatchSize > 5000000) {\n maxGeometryBatchSize = 5000000;\n }\n } else {\n if (maxGeometryBatchSize > 65530) {\n maxGeometryBatchSize = 65530;\n }\n }\n\n this.maxVerts = maxGeometryBatchSize;\n this.maxIndices = maxGeometryBatchSize * 3; // Rough rule-of-thumb\n this.positions = [];\n this.colors = [];\n this.metallicRoughness = [];\n this.normals = [];\n this.pickColors = [];\n this.flags = [];\n this.flags2 = [];\n this.offsets = [];\n this.indices = [];\n this.edgeIndices = [];\n }\n}\n\nexport {TrianglesBatchingBuffer};", @@ -60623,7 +60607,7 @@ "lineNumber": 1 }, { - "__docId__": 3133, + "__docId__": 3124, "kind": "variable", "name": "bigIndicesSupported", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js", @@ -60644,7 +60628,7 @@ "ignore": true }, { - "__docId__": 3134, + "__docId__": 3125, "kind": "class", "name": "TrianglesBatchingBuffer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js", @@ -60660,7 +60644,7 @@ "ignore": true }, { - "__docId__": 3135, + "__docId__": 3126, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js~TrianglesBatchingBuffer", @@ -60674,7 +60658,7 @@ "undocument": true }, { - "__docId__": 3136, + "__docId__": 3127, "kind": "member", "name": "maxVerts", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js~TrianglesBatchingBuffer", @@ -60691,7 +60675,7 @@ } }, { - "__docId__": 3137, + "__docId__": 3128, "kind": "member", "name": "maxIndices", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js~TrianglesBatchingBuffer", @@ -60708,7 +60692,7 @@ } }, { - "__docId__": 3138, + "__docId__": 3129, "kind": "member", "name": "positions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js~TrianglesBatchingBuffer", @@ -60725,7 +60709,7 @@ } }, { - "__docId__": 3139, + "__docId__": 3130, "kind": "member", "name": "colors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js~TrianglesBatchingBuffer", @@ -60742,7 +60726,7 @@ } }, { - "__docId__": 3140, + "__docId__": 3131, "kind": "member", "name": "metallicRoughness", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js~TrianglesBatchingBuffer", @@ -60759,7 +60743,7 @@ } }, { - "__docId__": 3141, + "__docId__": 3132, "kind": "member", "name": "normals", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js~TrianglesBatchingBuffer", @@ -60776,7 +60760,7 @@ } }, { - "__docId__": 3142, + "__docId__": 3133, "kind": "member", "name": "pickColors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js~TrianglesBatchingBuffer", @@ -60793,7 +60777,7 @@ } }, { - "__docId__": 3143, + "__docId__": 3134, "kind": "member", "name": "flags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js~TrianglesBatchingBuffer", @@ -60810,7 +60794,7 @@ } }, { - "__docId__": 3144, + "__docId__": 3135, "kind": "member", "name": "flags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js~TrianglesBatchingBuffer", @@ -60827,7 +60811,7 @@ } }, { - "__docId__": 3145, + "__docId__": 3136, "kind": "member", "name": "offsets", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js~TrianglesBatchingBuffer", @@ -60844,7 +60828,7 @@ } }, { - "__docId__": 3146, + "__docId__": 3137, "kind": "member", "name": "indices", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js~TrianglesBatchingBuffer", @@ -60861,7 +60845,7 @@ } }, { - "__docId__": 3147, + "__docId__": 3138, "kind": "member", "name": "edgeIndices", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js~TrianglesBatchingBuffer", @@ -60878,7 +60862,7 @@ } }, { - "__docId__": 3148, + "__docId__": 3139, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js", "content": "import {WEBGL_INFO} from \"../../../../webglInfo.js\";\nimport {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 {getBatchingRenderers} from \"./TrianglesBatchingRenderers.js\";\nimport {TrianglesBatchingBuffer} from \"./TrianglesBatchingBuffer.js\";\nimport {quantizePositions, transformAndOctEncodeNormals} from \"../../compression.js\";\n\nconst tempMat4 = math.mat4();\nconst tempMat4b = math.mat4();\nconst tempVec4a = math.vec4([0, 0, 0, 1]);\nconst tempVec4b = math.vec4([0, 0, 0, 1]);\nconst tempVec4c = math.vec4([0, 0, 0, 1]);\nconst tempOBB3 = math.OBB3();\n\n/**\n * @private\n */\nclass TrianglesBatchingLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.positionsDecodeMatrix\n * @param cfg.maxGeometryBatchSize\n * @param cfg.rtcCenter\n * @param cfg.scratchMemory\n * @param cfg.solid\n */\n constructor(model, cfg) {\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"TrianglesBatchingLayer\" + cfg.solid ? \"-solid\" : \"-surface\";\n\n /**\n * Index of this TrianglesBatchingLayer in {@link PerformanceModel#_layerList}.\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._batchingRenderers = getBatchingRenderers(model.scene);\n this.model = model;\n this._buffer = new TrianglesBatchingBuffer(cfg.maxGeometryBatchSize);\n this._scratchMemory = cfg.scratchMemory;\n\n this._state = new RenderState({\n positionsBuf: null,\n offsetsBuf: null,\n normalsBuf: null,\n colorsBuf: null,\n metallicRoughnessBuf: null,\n flagsBuf: null,\n flags2Buf: null,\n indicesBuf: null,\n edgeIndicesBuf: null,\n positionsDecodeMatrix: math.mat4(),\n rtcCenter: 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\n this._finalized = false;\n this._positionsDecodeMatrix = cfg.positionsDecodeMatrix;\n this._preCompressed = (!!this._positionsDecodeMatrix);\n\n if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n }\n\n /**\n * The axis-aligned World-space boundary of this TrianglesBatchingLayer's positions.\n * @type {*|Float64Array}\n */\n this.aabb = math.collapseAABB3();\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 /**\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 cfg.positions Flat float Local-space positions array.\n * @param [cfg.normals] Flat float normals array.\n * @param [cfg.colors] Flat float colors array.\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.worldMatrix] Flat float 4x4 matrix\n * @param cfg.worldAABB Flat float AABB World-space AABB\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID\n */\n createPortion(cfg) {\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n const positions = cfg.positions;\n const normals = cfg.normals;\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 colors = cfg.colors;\n const opacity = cfg.opacity;\n const meshMatrix = cfg.meshMatrix;\n const worldMatrix = cfg.worldMatrix;\n const worldAABB = cfg.worldAABB;\n const pickColor = cfg.pickColor;\n\n const buffer = this._buffer;\n const positionsIndex = buffer.positions.length;\n const vertsIndex = positionsIndex / 3;\n const numVerts = positions.length / 3;\n const lenPositions = positions.length;\n\n if (this._preCompressed) {\n\n for (let i = 0, len = positions.length; i < len; i++) {\n buffer.positions.push(positions[i]);\n }\n\n const bounds = geometryCompressionUtils.getPositionsBounds(positions);\n\n const min = geometryCompressionUtils.decompressPosition(bounds.min, this._positionsDecodeMatrix, []);\n const max = geometryCompressionUtils.decompressPosition(bounds.max, this._positionsDecodeMatrix, []);\n\n worldAABB[0] = min[0];\n worldAABB[1] = min[1];\n worldAABB[2] = min[2];\n worldAABB[3] = max[0];\n worldAABB[4] = max[1];\n worldAABB[5] = max[2];\n\n if (worldMatrix) {\n math.AABB3ToOBB3(worldAABB, tempOBB3);\n math.transformOBB3(worldMatrix, tempOBB3);\n math.OBB3ToAABB3(tempOBB3, worldAABB);\n }\n\n } else {\n\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 if (meshMatrix) {\n\n for (let i = positionsBase, len = positionsBase + lenPositions; i < len; i += 3) {\n\n tempVec4a[0] = buffer.positions[i + 0];\n tempVec4a[1] = buffer.positions[i + 1];\n tempVec4a[2] = buffer.positions[i + 2];\n\n math.transformPoint4(meshMatrix, tempVec4a, tempVec4b);\n\n buffer.positions[i + 0] = tempVec4b[0];\n buffer.positions[i + 1] = tempVec4b[1];\n buffer.positions[i + 2] = tempVec4b[2];\n\n math.expandAABB3Point3(this._modelAABB, tempVec4b);\n\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4b, tempVec4c);\n math.expandAABB3Point3(worldAABB, tempVec4c);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4b);\n }\n }\n\n } else {\n\n for (let i = positionsBase, len = positionsBase + lenPositions; i < len; i += 3) {\n\n tempVec4a[0] = buffer.positions[i + 0];\n tempVec4a[1] = buffer.positions[i + 1];\n tempVec4a[2] = buffer.positions[i + 2];\n\n math.expandAABB3Point3(this._modelAABB, tempVec4a);\n\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4a, tempVec4b);\n math.expandAABB3Point3(worldAABB, tempVec4b);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4a);\n }\n }\n }\n }\n\n if (this._state.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n worldAABB[0] += rtcCenter[0];\n worldAABB[1] += rtcCenter[1];\n worldAABB[2] += rtcCenter[2];\n worldAABB[3] += rtcCenter[0];\n worldAABB[4] += rtcCenter[1];\n worldAABB[5] += rtcCenter[2];\n }\n\n math.expandAABB3(this.aabb, worldAABB);\n\n if (normals) {\n\n if (this._preCompressed) {\n\n for (let i = 0, len = normals.length; i < len; i++) {\n buffer.normals.push(normals[i]);\n }\n\n } else {\n\n const worldNormalMatrix = tempMat4;\n\n if (meshMatrix) {\n math.inverseMat4(math.transposeMat4(meshMatrix, tempMat4b), worldNormalMatrix); // Note: order of inverse and transpose doesn't matter\n\n } else {\n math.identityMat4(worldNormalMatrix, worldNormalMatrix);\n }\n\n transformAndOctEncodeNormals(worldNormalMatrix, normals, normals.length, buffer.normals, buffer.normals.length);\n }\n }\n\n if (colors) {\n\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\n } else if (color) {\n\n const r = color[0]; // Color is pre-quantized by PerformanceModel\n const g = color[1];\n const b = color[2];\n const a = opacity;\n\n const metallicValue = (metallic !== null && metallic !== undefined) ? metallic : 0;\n const roughnessValue = (roughness !== null && roughness !== undefined) ? roughness : 255;\n\n for (let i = 0; i < numVerts; i++) {\n\n buffer.colors.push(r);\n buffer.colors.push(g);\n buffer.colors.push(b);\n buffer.colors.push(a);\n\n buffer.metallicRoughness.push(metallicValue);\n buffer.metallicRoughness.push(roughnessValue);\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 (edgeIndices) {\n for (let i = 0, len = edgeIndices.length; i < len; i++) {\n buffer.edgeIndices.push(edgeIndices[i] + vertsIndex);\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\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 this.model.error(\"Already 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._preCompressed) {\n state.positionsDecodeMatrix = this._positionsDecodeMatrix;\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 quantizedPositions = quantizePositions(buffer.positions, this._modelAABB, state.positionsDecodeMatrix); // BOTTLENECK\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, buffer.positions.length, 3, gl.STATIC_DRAW);\n }\n }\n\n if (buffer.normals.length > 0) {\n const normals = new Int8Array(buffer.normals);\n let normalized = true; // For oct encoded UInts\n //let normalized = false; // For scaled\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) {\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.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.colors.length > 0) { // Because we build flags arrays here, get their length from the colors array\n const flagsLength = buffer.colors.length;\n const flags = new Uint8Array(flagsLength);\n const flags2 = new Uint8Array(flagsLength);\n let notNormalized = false;\n let normalized = true;\n state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags, flags.length, 4, gl.DYNAMIC_DRAW, notNormalized);\n state.flags2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags2, flags2.length, 4, gl.DYNAMIC_DRAW, normalized);\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 const bigIndicesSupported = WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\n\n if (buffer.indices.length > 0) {\n const indices = bigIndicesSupported ? new Uint32Array(buffer.indices) : new Uint16Array(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 = bigIndicesSupported ? new Uint32Array(buffer.edgeIndices) : new Uint16Array(buffer.edgeIndices);\n state.edgeIndicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, edgeIndices, buffer.edgeIndices.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 this._setFlags(portionId, flags, meshTransparent);\n this._setFlags2(portionId, flags);\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._setFlags2(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 _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 * 4;\n const lenFlags = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(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 edges = !!(flags & ENTITY_FLAGS.EDGES);\n const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);\n const culled = !!(flags & ENTITY_FLAGS.CULLED);\n\n // Color\n\n let f0;\n if (!visible || culled || xrayed) { // Highlight & select are layered on top of color - not mutually exclusive\n f0 = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (transparent) {\n f0 = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n f0 = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n // Silhouette\n\n let f1;\n if (!visible || culled) {\n f1 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f1 = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n f1 = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n f1 = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n f1 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Edges\n\n let f2 = 0;\n if (!visible || culled) {\n f2 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f2 = RENDER_PASSES.EDGES_SELECTED;\n } else if (highlighted) {\n f2 = RENDER_PASSES.EDGES_HIGHLIGHTED;\n } else if (xrayed) {\n f2 = RENDER_PASSES.EDGES_XRAYED;\n } else if (edges) {\n if (transparent) {\n f2 = RENDER_PASSES.EDGES_COLOR_TRANSPARENT;\n } else {\n f2 = RENDER_PASSES.EDGES_COLOR_OPAQUE;\n }\n } else {\n f2 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Pick\n\n let f3 = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n for (let i = 0; i < lenFlags; i += 4) {\n tempArray[i + 0] = f0; // x - normal fill\n tempArray[i + 1] = f1; // y - emphasis fill\n tempArray[i + 2] = f2; // z - edges\n tempArray[i + 3] = f3; // w - pick\n }\n\n this._state.flagsBuf.setData(tempArray, firstFlag, lenFlags);\n }\n\n _setFlags2(portionId, flags) {\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 * 4;\n const lenFlags = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenFlags);\n\n const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n\n for (let i = 0; i < lenFlags; i += 4) {\n tempArray[i + 0] = clippable;\n }\n\n this._state.flags2Buf.setData(tempArray, firstFlag, lenFlags);\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 // ---------------------- 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) {\n if (this._batchingRenderers.colorQualityRendererWithSAO) {\n this._batchingRenderers.colorQualityRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._batchingRenderers.colorRendererWithSAO) {\n this._batchingRenderers.colorRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n } else {\n if (frameCtx.pbrEnabled && this.model.pbrEnabled) {\n if (this._batchingRenderers.colorQualityRenderer) {\n this._batchingRenderers.colorQualityRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._batchingRenderers.colorRenderer) {\n this._batchingRenderers.colorRenderer.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) {\n if (this._batchingRenderers.colorQualityRenderer) {\n this._batchingRenderers.colorQualityRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n } else {\n if (this._batchingRenderers.colorRenderer) {\n this._batchingRenderers.colorRenderer.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._batchingRenderers.depthRenderer) {\n this._batchingRenderers.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._batchingRenderers.normalsRenderer) {\n this._batchingRenderers.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._batchingRenderers.silhouetteRenderer) {\n this._batchingRenderers.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._batchingRenderers.silhouetteRenderer) {\n this._batchingRenderers.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._batchingRenderers.silhouetteRenderer) {\n this._batchingRenderers.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._batchingRenderers.edgesColorRenderer) {\n this._batchingRenderers.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._batchingRenderers.edgesColorRenderer) {\n this._batchingRenderers.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._batchingRenderers.edgesRenderer) {\n this._batchingRenderers.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._batchingRenderers.edgesRenderer) {\n this._batchingRenderers.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._batchingRenderers.edgesRenderer) {\n this._batchingRenderers.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._batchingRenderers.occlusionRenderer) {\n this._batchingRenderers.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._batchingRenderers.shadowRenderer) {\n this._batchingRenderers.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._batchingRenderers.pickMeshRenderer) {\n this._batchingRenderers.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._batchingRenderers.pickDepthRenderer) {\n this._batchingRenderers.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 if (this._batchingRenderers.pickNormalsRenderer) {\n this._batchingRenderers.pickNormalsRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\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.flags2Buf) {\n state.flags2Buf.destroy();\n state.flags2Buf = 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\nexport {TrianglesBatchingLayer};", @@ -60889,7 +60873,7 @@ "lineNumber": 1 }, { - "__docId__": 3149, + "__docId__": 3140, "kind": "variable", "name": "tempMat4", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js", @@ -60910,7 +60894,7 @@ "ignore": true }, { - "__docId__": 3150, + "__docId__": 3141, "kind": "variable", "name": "tempMat4b", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js", @@ -60931,7 +60915,7 @@ "ignore": true }, { - "__docId__": 3151, + "__docId__": 3142, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js", @@ -60952,7 +60936,7 @@ "ignore": true }, { - "__docId__": 3152, + "__docId__": 3143, "kind": "variable", "name": "tempVec4b", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js", @@ -60973,7 +60957,7 @@ "ignore": true }, { - "__docId__": 3153, + "__docId__": 3144, "kind": "variable", "name": "tempVec4c", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js", @@ -60994,7 +60978,7 @@ "ignore": true }, { - "__docId__": 3154, + "__docId__": 3145, "kind": "variable", "name": "tempOBB3", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js", @@ -61015,7 +60999,7 @@ "ignore": true }, { - "__docId__": 3155, + "__docId__": 3146, "kind": "class", "name": "TrianglesBatchingLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js", @@ -61031,7 +61015,7 @@ "ignore": true }, { - "__docId__": 3156, + "__docId__": 3147, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61126,7 +61110,7 @@ ] }, { - "__docId__": 3157, + "__docId__": 3148, "kind": "member", "name": "sortId", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61145,7 +61129,7 @@ } }, { - "__docId__": 3158, + "__docId__": 3149, "kind": "member", "name": "layerIndex", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61164,7 +61148,7 @@ } }, { - "__docId__": 3159, + "__docId__": 3150, "kind": "member", "name": "_batchingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61182,7 +61166,7 @@ } }, { - "__docId__": 3160, + "__docId__": 3151, "kind": "member", "name": "model", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61199,7 +61183,7 @@ } }, { - "__docId__": 3161, + "__docId__": 3152, "kind": "member", "name": "_buffer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61217,7 +61201,7 @@ } }, { - "__docId__": 3162, + "__docId__": 3153, "kind": "member", "name": "_scratchMemory", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61235,7 +61219,7 @@ } }, { - "__docId__": 3163, + "__docId__": 3154, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61253,7 +61237,7 @@ } }, { - "__docId__": 3164, + "__docId__": 3155, "kind": "member", "name": "_numPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61271,7 +61255,7 @@ } }, { - "__docId__": 3165, + "__docId__": 3156, "kind": "member", "name": "_numVisibleLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61289,7 +61273,7 @@ } }, { - "__docId__": 3166, + "__docId__": 3157, "kind": "member", "name": "_numTransparentLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61307,7 +61291,7 @@ } }, { - "__docId__": 3167, + "__docId__": 3158, "kind": "member", "name": "_numXRayedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61325,7 +61309,7 @@ } }, { - "__docId__": 3168, + "__docId__": 3159, "kind": "member", "name": "_numSelectedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61343,7 +61327,7 @@ } }, { - "__docId__": 3169, + "__docId__": 3160, "kind": "member", "name": "_numHighlightedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61361,7 +61345,7 @@ } }, { - "__docId__": 3170, + "__docId__": 3161, "kind": "member", "name": "_numClippableLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61379,7 +61363,7 @@ } }, { - "__docId__": 3171, + "__docId__": 3162, "kind": "member", "name": "_numEdgesLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61397,7 +61381,7 @@ } }, { - "__docId__": 3172, + "__docId__": 3163, "kind": "member", "name": "_numPickableLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61415,7 +61399,7 @@ } }, { - "__docId__": 3173, + "__docId__": 3164, "kind": "member", "name": "_numCulledLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61433,7 +61417,7 @@ } }, { - "__docId__": 3174, + "__docId__": 3165, "kind": "member", "name": "_modelAABB", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61451,7 +61435,7 @@ } }, { - "__docId__": 3175, + "__docId__": 3166, "kind": "member", "name": "_portions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61469,7 +61453,7 @@ } }, { - "__docId__": 3176, + "__docId__": 3167, "kind": "member", "name": "_finalized", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61487,7 +61471,7 @@ } }, { - "__docId__": 3177, + "__docId__": 3168, "kind": "member", "name": "_positionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61505,7 +61489,7 @@ } }, { - "__docId__": 3178, + "__docId__": 3169, "kind": "member", "name": "_preCompressed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61523,7 +61507,7 @@ } }, { - "__docId__": 3179, + "__docId__": 3170, "kind": "member", "name": "aabb", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61543,7 +61527,7 @@ } }, { - "__docId__": 3180, + "__docId__": 3171, "kind": "member", "name": "solid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61562,7 +61546,7 @@ } }, { - "__docId__": 3181, + "__docId__": 3172, "kind": "method", "name": "canCreatePortion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61611,7 +61595,7 @@ } }, { - "__docId__": 3182, + "__docId__": 3173, "kind": "method", "name": "createPortion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61770,7 +61754,7 @@ } }, { - "__docId__": 3183, + "__docId__": 3174, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61785,7 +61769,7 @@ "return": null }, { - "__docId__": 3186, + "__docId__": 3177, "kind": "method", "name": "initFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61820,7 +61804,7 @@ "return": null }, { - "__docId__": 3187, + "__docId__": 3178, "kind": "method", "name": "setVisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61855,7 +61839,7 @@ "return": null }, { - "__docId__": 3188, + "__docId__": 3179, "kind": "method", "name": "setHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61890,7 +61874,7 @@ "return": null }, { - "__docId__": 3189, + "__docId__": 3180, "kind": "method", "name": "setXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61925,7 +61909,7 @@ "return": null }, { - "__docId__": 3190, + "__docId__": 3181, "kind": "method", "name": "setSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61960,7 +61944,7 @@ "return": null }, { - "__docId__": 3191, + "__docId__": 3182, "kind": "method", "name": "setEdges", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -61995,7 +61979,7 @@ "return": null }, { - "__docId__": 3192, + "__docId__": 3183, "kind": "method", "name": "setClippable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62024,7 +62008,7 @@ "return": null }, { - "__docId__": 3193, + "__docId__": 3184, "kind": "method", "name": "setCulled", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62059,7 +62043,7 @@ "return": null }, { - "__docId__": 3194, + "__docId__": 3185, "kind": "method", "name": "setCollidable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62088,7 +62072,7 @@ "return": null }, { - "__docId__": 3195, + "__docId__": 3186, "kind": "method", "name": "setPickable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62123,7 +62107,7 @@ "return": null }, { - "__docId__": 3196, + "__docId__": 3187, "kind": "method", "name": "setColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62152,7 +62136,7 @@ "return": null }, { - "__docId__": 3197, + "__docId__": 3188, "kind": "method", "name": "setTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62187,7 +62171,7 @@ "return": null }, { - "__docId__": 3198, + "__docId__": 3189, "kind": "method", "name": "_setFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62223,7 +62207,7 @@ "return": null }, { - "__docId__": 3199, + "__docId__": 3190, "kind": "method", "name": "_setFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62253,7 +62237,7 @@ "return": null }, { - "__docId__": 3200, + "__docId__": 3191, "kind": "method", "name": "setOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62282,7 +62266,7 @@ "return": null }, { - "__docId__": 3201, + "__docId__": 3192, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62311,7 +62295,7 @@ "return": null }, { - "__docId__": 3202, + "__docId__": 3193, "kind": "method", "name": "_updateBackfaceCull", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62341,7 +62325,7 @@ "return": null }, { - "__docId__": 3203, + "__docId__": 3194, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62370,7 +62354,7 @@ "return": null }, { - "__docId__": 3204, + "__docId__": 3195, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62399,7 +62383,7 @@ "return": null }, { - "__docId__": 3205, + "__docId__": 3196, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62428,7 +62412,7 @@ "return": null }, { - "__docId__": 3206, + "__docId__": 3197, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62457,7 +62441,7 @@ "return": null }, { - "__docId__": 3207, + "__docId__": 3198, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62486,7 +62470,7 @@ "return": null }, { - "__docId__": 3208, + "__docId__": 3199, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62515,7 +62499,7 @@ "return": null }, { - "__docId__": 3209, + "__docId__": 3200, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62544,7 +62528,7 @@ "return": null }, { - "__docId__": 3210, + "__docId__": 3201, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62573,7 +62557,7 @@ "return": null }, { - "__docId__": 3211, + "__docId__": 3202, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62602,7 +62586,7 @@ "return": null }, { - "__docId__": 3212, + "__docId__": 3203, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62631,7 +62615,7 @@ "return": null }, { - "__docId__": 3213, + "__docId__": 3204, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62660,7 +62644,7 @@ "return": null }, { - "__docId__": 3214, + "__docId__": 3205, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62689,7 +62673,7 @@ "return": null }, { - "__docId__": 3215, + "__docId__": 3206, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62718,7 +62702,7 @@ "return": null }, { - "__docId__": 3216, + "__docId__": 3207, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62747,7 +62731,7 @@ "return": null }, { - "__docId__": 3217, + "__docId__": 3208, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62776,7 +62760,7 @@ "return": null }, { - "__docId__": 3218, + "__docId__": 3209, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62805,7 +62789,7 @@ "return": null }, { - "__docId__": 3219, + "__docId__": 3210, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js~TrianglesBatchingLayer", @@ -62821,7 +62805,7 @@ "return": null }, { - "__docId__": 3220, + "__docId__": 3211, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js", "content": "import {TrianglesBatchingColorRenderer} from \"./renderers/TrianglesBatchingColorRenderer.js\";\nimport {TrianglesBatchingSilhouetteRenderer} from \"./renderers/TrianglesBatchingSilhouetteRenderer.js\";\nimport {TrianglesBatchingEdgesRenderer} from \"./renderers/TrianglesBatchingEdgesRenderer.js\";\nimport {TrianglesBatchingEdgesColorRenderer} from \"./renderers/TrianglesBatchingEdgesColorRenderer.js\";\nimport {TrianglesBatchingPickMeshRenderer} from \"./renderers/TrianglesBatchingPickMeshRenderer.js\";\nimport {TrianglesBatchingPickDepthRenderer} from \"./renderers/TrianglesBatchingPickDepthRenderer.js\";\nimport {TrianglesBatchingPickNormalsRenderer} from \"./renderers/TrianglesBatchingPickNormalsRenderer.js\";\nimport {TrianglesBatchingOcclusionRenderer} from \"./renderers/TrianglesBatchingOcclusionRenderer.js\";\nimport {TrianglesBatchingDepthRenderer} from \"./renderers/TrianglesBatchingDepthRenderer.js\";\nimport {TrianglesBatchingNormalsRenderer} from \"./renderers/TrianglesBatchingNormalsRenderer.js\";\nimport {TrianglesBatchingShadowRenderer} from \"./renderers/TrianglesBatchingShadowRenderer.js\";\nimport {TrianglesBatchingColorQualityRenderer} from \"./renderers/TrianglesBatchingColorQualityRenderer.js\";\n\n/**\n * @private\n */\nclass TrianglesBatchingRenderers {\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._colorQualityRenderer && (!this._colorQualityRenderer.getValid())) {\n this._colorQualityRenderer.destroy();\n this._colorQualityRenderer = 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._pickNormalsRenderer && this._pickNormalsRenderer.getValid() === false) {\n this._pickNormalsRenderer.destroy();\n this._pickNormalsRenderer = 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 }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new TrianglesBatchingColorRenderer(this._scene, false);\n }\n return this._colorRenderer;\n }\n\n get colorRendererWithSAO() {\n if (!this._colorRendererWithSAO) {\n this._colorRendererWithSAO = new TrianglesBatchingColorRenderer(this._scene, true);\n }\n return this._colorRendererWithSAO;\n }\n\n get colorQualityRenderer() {\n if (!this._colorQualityRenderer) {\n this._colorQualityRenderer = new TrianglesBatchingColorQualityRenderer(this._scene, false);\n }\n return this._colorQualityRenderer;\n }\n\n get colorQualityRendererWithSAO() {\n if (!this._colorQualityRendererWithSAO) {\n this._colorQualityRendererWithSAO = new TrianglesBatchingColorQualityRenderer(this._scene, true);\n }\n return this._colorQualityRendererWithSAO;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new TrianglesBatchingSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get depthRenderer() {\n if (!this._depthRenderer) {\n this._depthRenderer = new TrianglesBatchingDepthRenderer(this._scene);\n }\n return this._depthRenderer;\n }\n\n get normalsRenderer() {\n if (!this._normalsRenderer) {\n this._normalsRenderer = new TrianglesBatchingNormalsRenderer(this._scene);\n }\n return this._normalsRenderer;\n }\n\n get edgesRenderer() {\n if (!this._edgesRenderer) {\n this._edgesRenderer = new TrianglesBatchingEdgesRenderer(this._scene);\n }\n return this._edgesRenderer;\n }\n\n get edgesColorRenderer() {\n if (!this._edgesColorRenderer) {\n this._edgesColorRenderer = new TrianglesBatchingEdgesColorRenderer(this._scene);\n }\n return this._edgesColorRenderer;\n }\n\n get pickMeshRenderer() {\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new TrianglesBatchingPickMeshRenderer(this._scene);\n }\n return this._pickMeshRenderer;\n }\n\n get pickNormalsRenderer() {\n if (!this._pickNormalsRenderer) {\n this._pickNormalsRenderer = new TrianglesBatchingPickNormalsRenderer(this._scene);\n }\n return this._pickNormalsRenderer;\n }\n\n get pickDepthRenderer() {\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new TrianglesBatchingPickDepthRenderer(this._scene);\n }\n return this._pickDepthRenderer;\n }\n\n get occlusionRenderer() {\n if (!this._occlusionRenderer) {\n this._occlusionRenderer = new TrianglesBatchingOcclusionRenderer(this._scene);\n }\n return this._occlusionRenderer;\n }\n\n get shadowRenderer() {\n if (!this._shadowRenderer) {\n this._shadowRenderer = new TrianglesBatchingShadowRenderer(this._scene);\n }\n return this._shadowRenderer;\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._colorQualityRenderer) {\n this._colorQualityRenderer.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._pickNormalsRenderer) {\n this._pickNormalsRenderer.destroy();\n }\n if (this._occlusionRenderer) {\n this._occlusionRenderer.destroy();\n }\n if (this._shadowRenderer) {\n this._shadowRenderer.destroy();\n }\n }\n}\n\nconst cachdRenderers = {};\n\nfunction getBatchingRenderers(scene) {\n const sceneId = scene.id;\n let batchingRenderers = cachdRenderers[sceneId];\n if (!batchingRenderers) {\n batchingRenderers = new TrianglesBatchingRenderers(scene);\n cachdRenderers[sceneId] = batchingRenderers;\n batchingRenderers._compile();\n scene.on(\"compile\", () => {\n batchingRenderers._compile();\n });\n scene.on(\"destroyed\", () => {\n delete cachdRenderers[sceneId];\n batchingRenderers._destroy();\n });\n }\n return batchingRenderers;\n}\n\nexport {getBatchingRenderers};", @@ -62832,7 +62816,7 @@ "lineNumber": 1 }, { - "__docId__": 3221, + "__docId__": 3212, "kind": "class", "name": "TrianglesBatchingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js", @@ -62848,7 +62832,7 @@ "ignore": true }, { - "__docId__": 3222, + "__docId__": 3213, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -62862,7 +62846,7 @@ "undocument": true }, { - "__docId__": 3223, + "__docId__": 3214, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -62880,7 +62864,7 @@ } }, { - "__docId__": 3224, + "__docId__": 3215, "kind": "method", "name": "_compile", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -62897,7 +62881,7 @@ "return": null }, { - "__docId__": 3225, + "__docId__": 3216, "kind": "member", "name": "_colorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -62915,7 +62899,7 @@ } }, { - "__docId__": 3226, + "__docId__": 3217, "kind": "member", "name": "_colorRendererWithSAO", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -62933,7 +62917,7 @@ } }, { - "__docId__": 3227, + "__docId__": 3218, "kind": "member", "name": "_colorQualityRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -62951,7 +62935,7 @@ } }, { - "__docId__": 3228, + "__docId__": 3219, "kind": "member", "name": "_colorQualityRendererWithSAO", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -62969,7 +62953,7 @@ } }, { - "__docId__": 3229, + "__docId__": 3220, "kind": "member", "name": "_depthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -62987,7 +62971,7 @@ } }, { - "__docId__": 3230, + "__docId__": 3221, "kind": "member", "name": "_normalsRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63005,7 +62989,7 @@ } }, { - "__docId__": 3231, + "__docId__": 3222, "kind": "member", "name": "_silhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63023,7 +63007,7 @@ } }, { - "__docId__": 3232, + "__docId__": 3223, "kind": "member", "name": "_edgesRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63041,7 +63025,7 @@ } }, { - "__docId__": 3233, + "__docId__": 3224, "kind": "member", "name": "_edgesColorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63059,7 +63043,7 @@ } }, { - "__docId__": 3234, + "__docId__": 3225, "kind": "member", "name": "_pickMeshRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63077,7 +63061,7 @@ } }, { - "__docId__": 3235, + "__docId__": 3226, "kind": "member", "name": "_pickDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63095,7 +63079,7 @@ } }, { - "__docId__": 3236, + "__docId__": 3227, "kind": "member", "name": "_pickNormalsRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63113,7 +63097,7 @@ } }, { - "__docId__": 3237, + "__docId__": 3228, "kind": "member", "name": "_occlusionRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63131,7 +63115,7 @@ } }, { - "__docId__": 3238, + "__docId__": 3229, "kind": "member", "name": "_shadowRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63149,7 +63133,7 @@ } }, { - "__docId__": 3239, + "__docId__": 3230, "kind": "get", "name": "colorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63168,7 +63152,7 @@ } }, { - "__docId__": 3241, + "__docId__": 3232, "kind": "get", "name": "colorRendererWithSAO", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63187,7 +63171,7 @@ } }, { - "__docId__": 3243, + "__docId__": 3234, "kind": "get", "name": "colorQualityRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63206,7 +63190,7 @@ } }, { - "__docId__": 3245, + "__docId__": 3236, "kind": "get", "name": "colorQualityRendererWithSAO", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63225,7 +63209,7 @@ } }, { - "__docId__": 3247, + "__docId__": 3238, "kind": "get", "name": "silhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63244,7 +63228,7 @@ } }, { - "__docId__": 3249, + "__docId__": 3240, "kind": "get", "name": "depthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63263,7 +63247,7 @@ } }, { - "__docId__": 3251, + "__docId__": 3242, "kind": "get", "name": "normalsRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63282,7 +63266,7 @@ } }, { - "__docId__": 3253, + "__docId__": 3244, "kind": "get", "name": "edgesRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63301,7 +63285,7 @@ } }, { - "__docId__": 3255, + "__docId__": 3246, "kind": "get", "name": "edgesColorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63320,7 +63304,7 @@ } }, { - "__docId__": 3257, + "__docId__": 3248, "kind": "get", "name": "pickMeshRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63339,7 +63323,7 @@ } }, { - "__docId__": 3259, + "__docId__": 3250, "kind": "get", "name": "pickNormalsRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63358,7 +63342,7 @@ } }, { - "__docId__": 3261, + "__docId__": 3252, "kind": "get", "name": "pickDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63377,7 +63361,7 @@ } }, { - "__docId__": 3263, + "__docId__": 3254, "kind": "get", "name": "occlusionRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63396,7 +63380,7 @@ } }, { - "__docId__": 3265, + "__docId__": 3256, "kind": "get", "name": "shadowRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63415,7 +63399,7 @@ } }, { - "__docId__": 3267, + "__docId__": 3258, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js~TrianglesBatchingRenderers", @@ -63432,7 +63416,7 @@ "return": null }, { - "__docId__": 3268, + "__docId__": 3259, "kind": "variable", "name": "cachdRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js", @@ -63453,7 +63437,7 @@ "ignore": true }, { - "__docId__": 3269, + "__docId__": 3260, "kind": "function", "name": "getBatchingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js", @@ -63483,10 +63467,10 @@ } }, { - "__docId__": 3270, + "__docId__": 3261, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js", - "content": "import {Program} from \"../../../../../webgl/Program.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../../math/rtcCoords.js\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec4 = math.vec4();\nconst tempVec3a = math.vec3();\n\nconst TEXTURE_DECODE_FUNCS = {\n \"linear\": \"linearToLinear\",\n \"sRGB\": \"sRGBToLinear\",\n \"gamma\": \"gammaToLinear\"\n};\n\n/**\n * @private\n */\nclass TrianglesBatchingColorQualityRenderer {\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.gammaOutput, scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = batchingLayer.model;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aNormal) {\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n }\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n\n if (this._aMetallicRoughness) {\n this._aMetallicRoughness.bindArrayBuffer(state.metallicRoughnessBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\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 return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\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\n this._uGammaFactor = program.getLocation(\"gammaFactor\");\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 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.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aColor = program.getAttribute(\"color\");\n this._aMetallicRoughness = program.getAttribute(\"metallicRoughness\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\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\n _bindProgram(frameCtx) {\n\n const maxTextureUnits = WEBGL_INFO.MAX_TEXTURE_UNITS;\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 const project = scene.camera.project;\n\n program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix)\n\n if (this._uLightAmbient) {\n const ambientColor = scene._lightsState.getAmbientColor();\n gl.uniform4f(this._uLightAmbient, ambientColor[0], ambientColor[1], ambientColor[2], 1.0);\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 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 (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 (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 (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\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 sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n\n const src = [];\n\n src.push(\"// Triangles batching quality draw vertex 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(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec3 normal;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec2 metallicRoughness;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 worldNormalMatrix;\");\n\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\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 src.push(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"varying vec4 vColor;\");\n src.push(\"varying vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n if (clippingCaps) {\n src.push(\"varying vec4 vClipPosition;\");\n }\n }\n\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);\"); // 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 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 }\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\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(\"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.sectionPlanes.length > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n const src = [];\n\n src.push(\"// Triangles batching quality draw 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(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"varying vec4 vColor;\");\n src.push(\"varying vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n\n src.push(\"uniform mat4 viewMatrix;\");\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 unpackRGBAToDepth( 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 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(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n if (clippingCaps) {\n src.push(\"varying vec4 vClipPosition;\");\n }\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 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] + \"(textureCube(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] + \"(textureCube(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(\"void main(void) {\");\n\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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\" gl_FragColor=vec4(1.0, 0.0, 0.0, 1.0);\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = 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 alpha = float(vColor.a) / 255.0;\");\n\n src.push(\"vec3 diffuseColor = 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(\"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 src.push(\"geometry.position = vViewPosition.xyz;\");\n src.push(\"geometry.viewNormal = -vViewNormal;\");\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 outgoingLight = (lightAmbient.rgb * lightAmbient.a * rgb) + (reflectedLight.diffuse) + (reflectedLight.specular);\");\n\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, unpackRGBAToDepth(texture2D(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" fragColor = vec4(outgoingLight.rgb * ambient, alpha);\");\n } else {\n src.push(\" fragColor = vec4(outgoingLight.rgb, alpha);\");\n }\n\n if (gammaOutput) {\n src.push(\"fragColor = linearToGamma(fragColor, gammaFactor);\");\n }\n\n src.push(\"gl_FragColor = fragColor;\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\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\nexport {TrianglesBatchingColorQualityRenderer};", + "content": "import {Program} from \"../../../../../webgl/Program.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../../math/rtcCoords.js\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec4 = math.vec4();\nconst tempVec3a = math.vec3();\n\nconst TEXTURE_DECODE_FUNCS = {\n \"linear\": \"linearToLinear\",\n \"sRGB\": \"sRGBToLinear\",\n \"gamma\": \"gammaToLinear\"\n};\n\n/**\n * @private\n */\nclass TrianglesBatchingColorQualityRenderer {\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.gammaOutput, scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = batchingLayer.model;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aNormal) {\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n }\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n\n if (this._aMetallicRoughness) {\n this._aMetallicRoughness.bindArrayBuffer(state.metallicRoughnessBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\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 return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\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\n this._uGammaFactor = program.getLocation(\"gammaFactor\");\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 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.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aColor = program.getAttribute(\"color\");\n this._aMetallicRoughness = program.getAttribute(\"metallicRoughness\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\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\n _bindProgram(frameCtx) {\n\n const maxTextureUnits = WEBGL_INFO.MAX_TEXTURE_UNITS;\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 const project = scene.camera.project;\n\n program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix)\n\n if (this._uLightAmbient) {\n const ambientColor = scene._lightsState.getAmbientColor();\n gl.uniform4f(this._uLightAmbient, ambientColor[0], ambientColor[1], ambientColor[2], 1.0);\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 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 (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 (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 (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\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 sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n\n const src = [];\n\n src.push(\"// Triangles batching quality draw vertex 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(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec3 normal;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec2 metallicRoughness;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 worldNormalMatrix;\");\n\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\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 src.push(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"varying vec4 vColor;\");\n src.push(\"varying vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n if (clippingCaps) {\n src.push(\"varying vec4 vClipPosition;\");\n }\n }\n\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);\"); // 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 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 }\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\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(\"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.sectionPlanes.length > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n const src = [];\n\n src.push(\"// Triangles batching quality draw 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(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"varying vec4 vColor;\");\n src.push(\"varying vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n\n src.push(\"uniform mat4 viewMatrix;\");\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 unpackRGBAToDepth( 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 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(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n if (clippingCaps) {\n src.push(\"varying vec4 vClipPosition;\");\n }\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 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] + \"(textureCube(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] + \"(textureCube(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(\"void main(void) {\");\n\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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\" gl_FragColor=vec4(1.0, 0.0, 0.0, 1.0);\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = 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 alpha = float(vColor.a) / 255.0;\");\n\n src.push(\"vec3 diffuseColor = 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(\"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 src.push(\"geometry.position = vViewPosition.xyz;\");\n src.push(\"geometry.viewNormal = -normalize(vViewNormal);\");\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 outgoingLight = (lightAmbient.rgb * lightAmbient.a * rgb) + (reflectedLight.diffuse) + (reflectedLight.specular);\");\n\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, unpackRGBAToDepth(texture2D(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" fragColor = vec4(outgoingLight.rgb * ambient, alpha);\");\n } else {\n src.push(\" fragColor = vec4(outgoingLight.rgb, alpha);\");\n }\n\n if (gammaOutput) {\n src.push(\"fragColor = linearToGamma(fragColor, gammaFactor);\");\n }\n\n src.push(\"gl_FragColor = fragColor;\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\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\nexport {TrianglesBatchingColorQualityRenderer};", "static": true, "longname": "/home/lindsay/xeolabs/xeokit/xeokit-nov-18/xeokit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js", "access": "public", @@ -63494,7 +63478,7 @@ "lineNumber": 1 }, { - "__docId__": 3271, + "__docId__": 3262, "kind": "variable", "name": "tempVec4", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js", @@ -63515,7 +63499,7 @@ "ignore": true }, { - "__docId__": 3272, + "__docId__": 3263, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js", @@ -63536,7 +63520,7 @@ "ignore": true }, { - "__docId__": 3273, + "__docId__": 3264, "kind": "variable", "name": "TEXTURE_DECODE_FUNCS", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js", @@ -63557,7 +63541,7 @@ "ignore": true }, { - "__docId__": 3274, + "__docId__": 3265, "kind": "class", "name": "TrianglesBatchingColorQualityRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js", @@ -63573,7 +63557,7 @@ "ignore": true }, { - "__docId__": 3275, + "__docId__": 3266, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63587,7 +63571,7 @@ "undocument": true }, { - "__docId__": 3276, + "__docId__": 3267, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63605,7 +63589,7 @@ } }, { - "__docId__": 3277, + "__docId__": 3268, "kind": "member", "name": "_withSAO", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63623,7 +63607,7 @@ } }, { - "__docId__": 3278, + "__docId__": 3269, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63641,7 +63625,7 @@ } }, { - "__docId__": 3279, + "__docId__": 3270, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63661,7 +63645,7 @@ } }, { - "__docId__": 3280, + "__docId__": 3271, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63682,7 +63666,7 @@ } }, { - "__docId__": 3281, + "__docId__": 3272, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63717,7 +63701,7 @@ "return": null }, { - "__docId__": 3282, + "__docId__": 3273, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63734,7 +63718,7 @@ "return": null }, { - "__docId__": 3283, + "__docId__": 3274, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63752,7 +63736,7 @@ } }, { - "__docId__": 3284, + "__docId__": 3275, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63769,7 +63753,7 @@ } }, { - "__docId__": 3285, + "__docId__": 3276, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63787,7 +63771,7 @@ } }, { - "__docId__": 3286, + "__docId__": 3277, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63805,7 +63789,7 @@ } }, { - "__docId__": 3287, + "__docId__": 3278, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63823,7 +63807,7 @@ } }, { - "__docId__": 3288, + "__docId__": 3279, "kind": "member", "name": "_uWorldNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63841,7 +63825,7 @@ } }, { - "__docId__": 3289, + "__docId__": 3280, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63859,7 +63843,7 @@ } }, { - "__docId__": 3290, + "__docId__": 3281, "kind": "member", "name": "_uViewNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63877,7 +63861,7 @@ } }, { - "__docId__": 3291, + "__docId__": 3282, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63895,7 +63879,7 @@ } }, { - "__docId__": 3292, + "__docId__": 3283, "kind": "member", "name": "_uGammaFactor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63913,7 +63897,7 @@ } }, { - "__docId__": 3293, + "__docId__": 3284, "kind": "member", "name": "_uLightAmbient", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63931,7 +63915,7 @@ } }, { - "__docId__": 3294, + "__docId__": 3285, "kind": "member", "name": "_uLightColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63949,7 +63933,7 @@ } }, { - "__docId__": 3295, + "__docId__": 3286, "kind": "member", "name": "_uLightDir", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63967,7 +63951,7 @@ } }, { - "__docId__": 3296, + "__docId__": 3287, "kind": "member", "name": "_uLightPos", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -63985,7 +63969,7 @@ } }, { - "__docId__": 3297, + "__docId__": 3288, "kind": "member", "name": "_uLightAttenuation", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64003,7 +63987,7 @@ } }, { - "__docId__": 3298, + "__docId__": 3289, "kind": "member", "name": "_uReflectionMap", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64021,7 +64005,7 @@ } }, { - "__docId__": 3299, + "__docId__": 3290, "kind": "member", "name": "_uLightMap", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64039,7 +64023,7 @@ } }, { - "__docId__": 3300, + "__docId__": 3291, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64057,7 +64041,7 @@ } }, { - "__docId__": 3301, + "__docId__": 3292, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64075,7 +64059,7 @@ } }, { - "__docId__": 3302, + "__docId__": 3293, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64093,7 +64077,7 @@ } }, { - "__docId__": 3303, + "__docId__": 3294, "kind": "member", "name": "_aNormal", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64111,7 +64095,7 @@ } }, { - "__docId__": 3304, + "__docId__": 3295, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64129,7 +64113,7 @@ } }, { - "__docId__": 3305, + "__docId__": 3296, "kind": "member", "name": "_aMetallicRoughness", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64147,7 +64131,7 @@ } }, { - "__docId__": 3306, + "__docId__": 3297, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64165,7 +64149,7 @@ } }, { - "__docId__": 3307, + "__docId__": 3298, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64183,7 +64167,7 @@ } }, { - "__docId__": 3308, + "__docId__": 3299, "kind": "member", "name": "_uOcclusionTexture", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64201,7 +64185,7 @@ } }, { - "__docId__": 3309, + "__docId__": 3300, "kind": "member", "name": "_uSAOParams", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64219,7 +64203,7 @@ } }, { - "__docId__": 3310, + "__docId__": 3301, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64237,7 +64221,7 @@ } }, { - "__docId__": 3311, + "__docId__": 3302, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64261,7 +64245,7 @@ "return": null }, { - "__docId__": 3312, + "__docId__": 3303, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64282,7 +64266,7 @@ } }, { - "__docId__": 3313, + "__docId__": 3304, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64303,7 +64287,7 @@ } }, { - "__docId__": 3314, + "__docId__": 3305, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64324,7 +64308,7 @@ } }, { - "__docId__": 3315, + "__docId__": 3306, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64340,7 +64324,7 @@ "return": null }, { - "__docId__": 3317, + "__docId__": 3308, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js~TrianglesBatchingColorQualityRenderer", @@ -64356,7 +64340,7 @@ "return": null }, { - "__docId__": 3319, + "__docId__": 3310, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js", "content": "import {Program} from \"../../../../../webgl/Program.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../../math/rtcCoords.js\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec4 = math.vec4();\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesBatchingColorRenderer {\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, batchingLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = batchingLayer.model;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aNormal) {\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n }\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\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 return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\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\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._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._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 this._aFlags2 = program.getAttribute(\"flags2\");\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\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 gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix)\n\n if (this._uLightAmbient) {\n const ambientColor = scene._lightsState.getAmbientColor();\n gl.uniform4f(this._uLightAmbient, ambientColor[0], ambientColor[1], ambientColor[2], 1.0);\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 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, 0);\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.sectionPlanes.length > 0;\n let light;\n const src = [];\n\n src.push(\"// Triangles batching draw vertex 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(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\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\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 worldNormalMatrix;\");\n\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\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(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vColor;\");\n\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);\"); // 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 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 }\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching draw fragment 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(\"#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(\"uniform float logDepthBufFC;\");\n src.push(\"varying 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(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n\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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = 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(texture2D(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" gl_FragColor = vec4(vColor.rgb * ambient, 1.0);\");\n } else {\n src.push(\" gl_FragColor = 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\nexport {TrianglesBatchingColorRenderer};", @@ -64367,7 +64351,7 @@ "lineNumber": 1 }, { - "__docId__": 3320, + "__docId__": 3311, "kind": "variable", "name": "tempVec4", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js", @@ -64388,7 +64372,7 @@ "ignore": true }, { - "__docId__": 3321, + "__docId__": 3312, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js", @@ -64409,7 +64393,7 @@ "ignore": true }, { - "__docId__": 3322, + "__docId__": 3313, "kind": "class", "name": "TrianglesBatchingColorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js", @@ -64425,7 +64409,7 @@ "ignore": true }, { - "__docId__": 3323, + "__docId__": 3314, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64439,7 +64423,7 @@ "undocument": true }, { - "__docId__": 3324, + "__docId__": 3315, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64457,7 +64441,7 @@ } }, { - "__docId__": 3325, + "__docId__": 3316, "kind": "member", "name": "_withSAO", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64475,7 +64459,7 @@ } }, { - "__docId__": 3326, + "__docId__": 3317, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64493,7 +64477,7 @@ } }, { - "__docId__": 3327, + "__docId__": 3318, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64513,7 +64497,7 @@ } }, { - "__docId__": 3328, + "__docId__": 3319, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64534,7 +64518,7 @@ } }, { - "__docId__": 3329, + "__docId__": 3320, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64569,7 +64553,7 @@ "return": null }, { - "__docId__": 3330, + "__docId__": 3321, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64586,7 +64570,7 @@ "return": null }, { - "__docId__": 3331, + "__docId__": 3322, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64604,7 +64588,7 @@ } }, { - "__docId__": 3332, + "__docId__": 3323, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64621,7 +64605,7 @@ } }, { - "__docId__": 3333, + "__docId__": 3324, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64639,7 +64623,7 @@ } }, { - "__docId__": 3334, + "__docId__": 3325, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64657,7 +64641,7 @@ } }, { - "__docId__": 3335, + "__docId__": 3326, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64675,7 +64659,7 @@ } }, { - "__docId__": 3336, + "__docId__": 3327, "kind": "member", "name": "_uWorldNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64693,7 +64677,7 @@ } }, { - "__docId__": 3337, + "__docId__": 3328, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64711,7 +64695,7 @@ } }, { - "__docId__": 3338, + "__docId__": 3329, "kind": "member", "name": "_uViewNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64729,7 +64713,7 @@ } }, { - "__docId__": 3339, + "__docId__": 3330, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64747,7 +64731,7 @@ } }, { - "__docId__": 3340, + "__docId__": 3331, "kind": "member", "name": "_uLightAmbient", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64765,7 +64749,7 @@ } }, { - "__docId__": 3341, + "__docId__": 3332, "kind": "member", "name": "_uLightColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64783,7 +64767,7 @@ } }, { - "__docId__": 3342, + "__docId__": 3333, "kind": "member", "name": "_uLightDir", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64801,7 +64785,7 @@ } }, { - "__docId__": 3343, + "__docId__": 3334, "kind": "member", "name": "_uLightPos", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64819,7 +64803,7 @@ } }, { - "__docId__": 3344, + "__docId__": 3335, "kind": "member", "name": "_uLightAttenuation", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64837,7 +64821,7 @@ } }, { - "__docId__": 3345, + "__docId__": 3336, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64855,7 +64839,7 @@ } }, { - "__docId__": 3346, + "__docId__": 3337, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64873,7 +64857,7 @@ } }, { - "__docId__": 3347, + "__docId__": 3338, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64891,7 +64875,7 @@ } }, { - "__docId__": 3348, + "__docId__": 3339, "kind": "member", "name": "_aNormal", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64909,7 +64893,7 @@ } }, { - "__docId__": 3349, + "__docId__": 3340, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64927,7 +64911,7 @@ } }, { - "__docId__": 3350, + "__docId__": 3341, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64945,7 +64929,7 @@ } }, { - "__docId__": 3351, + "__docId__": 3342, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64963,7 +64947,7 @@ } }, { - "__docId__": 3352, + "__docId__": 3343, "kind": "member", "name": "_uOcclusionTexture", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64981,7 +64965,7 @@ } }, { - "__docId__": 3353, + "__docId__": 3344, "kind": "member", "name": "_uSAOParams", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -64999,7 +64983,7 @@ } }, { - "__docId__": 3354, + "__docId__": 3345, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -65017,7 +65001,7 @@ } }, { - "__docId__": 3355, + "__docId__": 3346, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -65041,7 +65025,7 @@ "return": null }, { - "__docId__": 3356, + "__docId__": 3347, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -65062,7 +65046,7 @@ } }, { - "__docId__": 3357, + "__docId__": 3348, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -65083,7 +65067,7 @@ } }, { - "__docId__": 3358, + "__docId__": 3349, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -65104,7 +65088,7 @@ } }, { - "__docId__": 3359, + "__docId__": 3350, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -65120,7 +65104,7 @@ "return": null }, { - "__docId__": 3361, + "__docId__": 3352, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js~TrianglesBatchingColorRenderer", @@ -65136,7 +65120,7 @@ "return": null }, { - "__docId__": 3363, + "__docId__": 3354, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js", "content": "import {stats} from \"../../../../../stats.js\"\nimport {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();\n\n/**\n * @private\n */\nclass TrianglesBatchingDepthRenderer {\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, batchingLayer, renderPass) {\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 rtcCenter = batchingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\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(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching depth 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 vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\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);\"); // 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(\" vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0);\n const src = [];\n src.push(\"// Triangles batching depth fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\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(\"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. / 256.;\");\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(\"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 < 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 src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = packDepthToRGBA(gl_FragCoord.z); \"); // 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 stats.memory.programs--;\n }\n}\n\nexport {TrianglesBatchingDepthRenderer};", @@ -65147,7 +65131,7 @@ "lineNumber": 1 }, { - "__docId__": 3364, + "__docId__": 3355, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js", @@ -65168,7 +65152,7 @@ "ignore": true }, { - "__docId__": 3365, + "__docId__": 3356, "kind": "class", "name": "TrianglesBatchingDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js", @@ -65184,7 +65168,7 @@ "ignore": true }, { - "__docId__": 3366, + "__docId__": 3357, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65198,7 +65182,7 @@ "undocument": true }, { - "__docId__": 3367, + "__docId__": 3358, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65216,7 +65200,7 @@ } }, { - "__docId__": 3368, + "__docId__": 3359, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65234,7 +65218,7 @@ } }, { - "__docId__": 3369, + "__docId__": 3360, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65254,7 +65238,7 @@ } }, { - "__docId__": 3370, + "__docId__": 3361, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65275,7 +65259,7 @@ } }, { - "__docId__": 3371, + "__docId__": 3362, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65310,7 +65294,7 @@ "return": null }, { - "__docId__": 3372, + "__docId__": 3363, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65327,7 +65311,7 @@ "return": null }, { - "__docId__": 3373, + "__docId__": 3364, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65345,7 +65329,7 @@ } }, { - "__docId__": 3374, + "__docId__": 3365, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65362,7 +65346,7 @@ } }, { - "__docId__": 3375, + "__docId__": 3366, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65380,7 +65364,7 @@ } }, { - "__docId__": 3376, + "__docId__": 3367, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65398,7 +65382,7 @@ } }, { - "__docId__": 3377, + "__docId__": 3368, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65416,7 +65400,7 @@ } }, { - "__docId__": 3378, + "__docId__": 3369, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65434,7 +65418,7 @@ } }, { - "__docId__": 3379, + "__docId__": 3370, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65452,7 +65436,7 @@ } }, { - "__docId__": 3380, + "__docId__": 3371, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65470,7 +65454,7 @@ } }, { - "__docId__": 3381, + "__docId__": 3372, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65488,7 +65472,7 @@ } }, { - "__docId__": 3382, + "__docId__": 3373, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65506,7 +65490,7 @@ } }, { - "__docId__": 3383, + "__docId__": 3374, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65524,7 +65508,7 @@ } }, { - "__docId__": 3384, + "__docId__": 3375, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65542,7 +65526,7 @@ } }, { - "__docId__": 3385, + "__docId__": 3376, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65560,7 +65544,7 @@ } }, { - "__docId__": 3386, + "__docId__": 3377, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65577,7 +65561,7 @@ "return": null }, { - "__docId__": 3387, + "__docId__": 3378, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65598,7 +65582,7 @@ } }, { - "__docId__": 3388, + "__docId__": 3379, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65619,7 +65603,7 @@ } }, { - "__docId__": 3389, + "__docId__": 3380, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65640,7 +65624,7 @@ } }, { - "__docId__": 3390, + "__docId__": 3381, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65656,7 +65640,7 @@ "return": null }, { - "__docId__": 3392, + "__docId__": 3383, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js~TrianglesBatchingDepthRenderer", @@ -65672,7 +65656,7 @@ "return": null }, { - "__docId__": 3394, + "__docId__": 3385, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.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();\n\n/**\n * @private\n */\nclass TrianglesBatchingEdgesColorRenderer {\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, batchingLayer, renderPass) {\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 rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(batchingLayer);\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aColor.bindArrayBuffer(state.colorsBuf);\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n state.edgeIndicesBuf.bind();\n\n gl.drawElements(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0);\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(\"positionsDecodeMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._aPosition = program.getAttribute(\"position\");\n this._aColor = program.getAttribute(\"color\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Batched geometry edges drawing vertex 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(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec4 color;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\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(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(\" vFlags2 = flags2;\");\n }\n\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry edges drawing fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying vec4 vColor;\");\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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = 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\nexport {TrianglesBatchingEdgesColorRenderer};", @@ -65683,7 +65667,7 @@ "lineNumber": 1 }, { - "__docId__": 3395, + "__docId__": 3386, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js", @@ -65704,7 +65688,7 @@ "ignore": true }, { - "__docId__": 3396, + "__docId__": 3387, "kind": "class", "name": "TrianglesBatchingEdgesColorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js", @@ -65720,7 +65704,7 @@ "ignore": true }, { - "__docId__": 3397, + "__docId__": 3388, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -65734,7 +65718,7 @@ "undocument": true }, { - "__docId__": 3398, + "__docId__": 3389, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -65752,7 +65736,7 @@ } }, { - "__docId__": 3399, + "__docId__": 3390, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -65770,7 +65754,7 @@ } }, { - "__docId__": 3400, + "__docId__": 3391, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -65790,7 +65774,7 @@ } }, { - "__docId__": 3401, + "__docId__": 3392, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -65811,7 +65795,7 @@ } }, { - "__docId__": 3402, + "__docId__": 3393, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -65846,7 +65830,7 @@ "return": null }, { - "__docId__": 3403, + "__docId__": 3394, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -65863,7 +65847,7 @@ "return": null }, { - "__docId__": 3404, + "__docId__": 3395, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -65881,7 +65865,7 @@ } }, { - "__docId__": 3405, + "__docId__": 3396, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -65898,7 +65882,7 @@ } }, { - "__docId__": 3406, + "__docId__": 3397, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -65916,7 +65900,7 @@ } }, { - "__docId__": 3407, + "__docId__": 3398, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -65934,7 +65918,7 @@ } }, { - "__docId__": 3408, + "__docId__": 3399, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -65952,7 +65936,7 @@ } }, { - "__docId__": 3409, + "__docId__": 3400, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -65970,7 +65954,7 @@ } }, { - "__docId__": 3410, + "__docId__": 3401, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -65988,7 +65972,7 @@ } }, { - "__docId__": 3411, + "__docId__": 3402, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -66006,7 +65990,7 @@ } }, { - "__docId__": 3412, + "__docId__": 3403, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -66024,7 +66008,7 @@ } }, { - "__docId__": 3413, + "__docId__": 3404, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -66042,7 +66026,7 @@ } }, { - "__docId__": 3414, + "__docId__": 3405, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -66060,7 +66044,7 @@ } }, { - "__docId__": 3415, + "__docId__": 3406, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -66078,7 +66062,7 @@ } }, { - "__docId__": 3416, + "__docId__": 3407, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -66096,7 +66080,7 @@ } }, { - "__docId__": 3417, + "__docId__": 3408, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -66114,7 +66098,7 @@ } }, { - "__docId__": 3418, + "__docId__": 3409, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -66131,7 +66115,7 @@ "return": null }, { - "__docId__": 3419, + "__docId__": 3410, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -66152,7 +66136,7 @@ } }, { - "__docId__": 3420, + "__docId__": 3411, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -66173,7 +66157,7 @@ } }, { - "__docId__": 3421, + "__docId__": 3412, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -66194,7 +66178,7 @@ } }, { - "__docId__": 3422, + "__docId__": 3413, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -66210,7 +66194,7 @@ "return": null }, { - "__docId__": 3424, + "__docId__": 3415, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js~TrianglesBatchingEdgesColorRenderer", @@ -66226,7 +66210,7 @@ "return": null }, { - "__docId__": 3426, + "__docId__": 3417, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.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\";\nimport {RENDER_PASSES} from \"../../../RENDER_PASSES.js\";\n\nconst tempVec3a = math.vec3();\nconst defaultColor = new Float32Array([0,0,0,1]);\n\n/**\n * @private\n */\nclass TrianglesBatchingEdgesRenderer {\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, batchingLayer, renderPass) {\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 rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(batchingLayer);\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 gl.uniform1i(this._uRenderPass, renderPass);\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 gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n state.edgeIndicesBuf.bind();\n\n gl.drawElements(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0);\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._uColor = program.getLocation(\"color\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Batched geometry edges drawing vertex 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(\"uniform int renderPass;\");\n src.push(\"uniform vec4 color;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\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(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(\" vFlags2 = flags2;\");\n }\n\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry edges drawing fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying vec4 vColor;\");\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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = 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\nexport {TrianglesBatchingEdgesRenderer};", @@ -66237,7 +66221,7 @@ "lineNumber": 1 }, { - "__docId__": 3427, + "__docId__": 3418, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js", @@ -66258,7 +66242,7 @@ "ignore": true }, { - "__docId__": 3428, + "__docId__": 3419, "kind": "variable", "name": "defaultColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js", @@ -66279,7 +66263,7 @@ "ignore": true }, { - "__docId__": 3429, + "__docId__": 3420, "kind": "class", "name": "TrianglesBatchingEdgesRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js", @@ -66295,7 +66279,7 @@ "ignore": true }, { - "__docId__": 3430, + "__docId__": 3421, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66309,7 +66293,7 @@ "undocument": true }, { - "__docId__": 3431, + "__docId__": 3422, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66327,7 +66311,7 @@ } }, { - "__docId__": 3432, + "__docId__": 3423, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66345,7 +66329,7 @@ } }, { - "__docId__": 3433, + "__docId__": 3424, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66365,7 +66349,7 @@ } }, { - "__docId__": 3434, + "__docId__": 3425, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66386,7 +66370,7 @@ } }, { - "__docId__": 3435, + "__docId__": 3426, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66421,7 +66405,7 @@ "return": null }, { - "__docId__": 3436, + "__docId__": 3427, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66438,7 +66422,7 @@ "return": null }, { - "__docId__": 3437, + "__docId__": 3428, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66456,7 +66440,7 @@ } }, { - "__docId__": 3438, + "__docId__": 3429, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66473,7 +66457,7 @@ } }, { - "__docId__": 3439, + "__docId__": 3430, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66491,7 +66475,7 @@ } }, { - "__docId__": 3440, + "__docId__": 3431, "kind": "member", "name": "_uColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66509,7 +66493,7 @@ } }, { - "__docId__": 3441, + "__docId__": 3432, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66527,7 +66511,7 @@ } }, { - "__docId__": 3442, + "__docId__": 3433, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66545,7 +66529,7 @@ } }, { - "__docId__": 3443, + "__docId__": 3434, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66563,7 +66547,7 @@ } }, { - "__docId__": 3444, + "__docId__": 3435, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66581,7 +66565,7 @@ } }, { - "__docId__": 3445, + "__docId__": 3436, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66599,7 +66583,7 @@ } }, { - "__docId__": 3446, + "__docId__": 3437, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66617,7 +66601,7 @@ } }, { - "__docId__": 3447, + "__docId__": 3438, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66635,7 +66619,7 @@ } }, { - "__docId__": 3448, + "__docId__": 3439, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66653,7 +66637,7 @@ } }, { - "__docId__": 3449, + "__docId__": 3440, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66671,7 +66655,7 @@ } }, { - "__docId__": 3450, + "__docId__": 3441, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66689,7 +66673,7 @@ } }, { - "__docId__": 3451, + "__docId__": 3442, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66706,7 +66690,7 @@ "return": null }, { - "__docId__": 3452, + "__docId__": 3443, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66727,7 +66711,7 @@ } }, { - "__docId__": 3453, + "__docId__": 3444, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66748,7 +66732,7 @@ } }, { - "__docId__": 3454, + "__docId__": 3445, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66769,7 +66753,7 @@ } }, { - "__docId__": 3455, + "__docId__": 3446, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66785,7 +66769,7 @@ "return": null }, { - "__docId__": 3457, + "__docId__": 3448, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js~TrianglesBatchingEdgesRenderer", @@ -66801,7 +66785,7 @@ "return": null }, { - "__docId__": 3459, + "__docId__": 3450, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.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();\n\n/**\n * @private\n */\nclass TrianglesBatchingNormalsRenderer {\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, batchingLayer, renderPass) {\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 rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(batchingLayer);\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(batchingLayer);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\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\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(\"positionsDecodeMatrix\");\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\n for (let i = 0, len = scene._sectionPlanesState.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._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\n if (this._aFlags2) { // Won't be in shader when not clipping\n this._aFlags2 = program.getAttribute(\"flags2\");\n }\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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.sectionPlanes.length > 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 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\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 if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying 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 * (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(\" 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 }\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.sectionPlanes.length > 0);\n const src = [];\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(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\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(\"varying 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 < 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 src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = 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\nexport {TrianglesBatchingNormalsRenderer};", @@ -66812,7 +66796,7 @@ "lineNumber": 1 }, { - "__docId__": 3460, + "__docId__": 3451, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js", @@ -66833,7 +66817,7 @@ "ignore": true }, { - "__docId__": 3461, + "__docId__": 3452, "kind": "class", "name": "TrianglesBatchingNormalsRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js", @@ -66849,7 +66833,7 @@ "ignore": true }, { - "__docId__": 3462, + "__docId__": 3453, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -66863,7 +66847,7 @@ "undocument": true }, { - "__docId__": 3463, + "__docId__": 3454, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -66881,7 +66865,7 @@ } }, { - "__docId__": 3464, + "__docId__": 3455, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -66899,7 +66883,7 @@ } }, { - "__docId__": 3465, + "__docId__": 3456, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -66919,7 +66903,7 @@ } }, { - "__docId__": 3466, + "__docId__": 3457, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -66940,7 +66924,7 @@ } }, { - "__docId__": 3467, + "__docId__": 3458, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -66975,7 +66959,7 @@ "return": null }, { - "__docId__": 3468, + "__docId__": 3459, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -66992,7 +66976,7 @@ "return": null }, { - "__docId__": 3469, + "__docId__": 3460, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67010,7 +66994,7 @@ } }, { - "__docId__": 3470, + "__docId__": 3461, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67027,7 +67011,7 @@ } }, { - "__docId__": 3471, + "__docId__": 3462, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67045,7 +67029,7 @@ } }, { - "__docId__": 3472, + "__docId__": 3463, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67063,7 +67047,7 @@ } }, { - "__docId__": 3473, + "__docId__": 3464, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67081,7 +67065,7 @@ } }, { - "__docId__": 3474, + "__docId__": 3465, "kind": "member", "name": "_uWorldNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67099,7 +67083,7 @@ } }, { - "__docId__": 3475, + "__docId__": 3466, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67117,7 +67101,7 @@ } }, { - "__docId__": 3476, + "__docId__": 3467, "kind": "member", "name": "_uViewNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67135,7 +67119,7 @@ } }, { - "__docId__": 3477, + "__docId__": 3468, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67153,7 +67137,7 @@ } }, { - "__docId__": 3478, + "__docId__": 3469, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67171,7 +67155,7 @@ } }, { - "__docId__": 3479, + "__docId__": 3470, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67189,7 +67173,7 @@ } }, { - "__docId__": 3480, + "__docId__": 3471, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67207,7 +67191,7 @@ } }, { - "__docId__": 3481, + "__docId__": 3472, "kind": "member", "name": "_aNormal", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67225,7 +67209,7 @@ } }, { - "__docId__": 3482, + "__docId__": 3473, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67243,7 +67227,7 @@ } }, { - "__docId__": 3483, + "__docId__": 3474, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67261,7 +67245,7 @@ } }, { - "__docId__": 3484, + "__docId__": 3475, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67279,7 +67263,7 @@ } }, { - "__docId__": 3485, + "__docId__": 3476, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67297,7 +67281,7 @@ } }, { - "__docId__": 3486, + "__docId__": 3477, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67314,7 +67298,7 @@ "return": null }, { - "__docId__": 3487, + "__docId__": 3478, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67335,7 +67319,7 @@ } }, { - "__docId__": 3488, + "__docId__": 3479, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67356,7 +67340,7 @@ } }, { - "__docId__": 3489, + "__docId__": 3480, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67377,7 +67361,7 @@ } }, { - "__docId__": 3490, + "__docId__": 3481, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67393,7 +67377,7 @@ "return": null }, { - "__docId__": 3492, + "__docId__": 3483, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js~TrianglesBatchingNormalsRenderer", @@ -67409,7 +67393,7 @@ "return": null }, { - "__docId__": 3494, + "__docId__": 3485, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.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();\n\n/**\n * @private\n */\nclass TrianglesBatchingOcclusionRenderer {\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, batchingLayer, renderPass) {\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const camera = scene.camera;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(batchingLayer);\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\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(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching occlusion 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 vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\")\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"void main(void) {\");\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 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(\" vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching occlusion fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\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(\"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 (let 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 src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = 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\nexport {TrianglesBatchingOcclusionRenderer};", @@ -67420,7 +67404,7 @@ "lineNumber": 1 }, { - "__docId__": 3495, + "__docId__": 3486, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js", @@ -67441,7 +67425,7 @@ "ignore": true }, { - "__docId__": 3496, + "__docId__": 3487, "kind": "class", "name": "TrianglesBatchingOcclusionRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js", @@ -67457,7 +67441,7 @@ "ignore": true }, { - "__docId__": 3497, + "__docId__": 3488, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67471,7 +67455,7 @@ "undocument": true }, { - "__docId__": 3498, + "__docId__": 3489, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67489,7 +67473,7 @@ } }, { - "__docId__": 3499, + "__docId__": 3490, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67507,7 +67491,7 @@ } }, { - "__docId__": 3500, + "__docId__": 3491, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67527,7 +67511,7 @@ } }, { - "__docId__": 3501, + "__docId__": 3492, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67548,7 +67532,7 @@ } }, { - "__docId__": 3502, + "__docId__": 3493, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67583,7 +67567,7 @@ "return": null }, { - "__docId__": 3503, + "__docId__": 3494, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67600,7 +67584,7 @@ "return": null }, { - "__docId__": 3504, + "__docId__": 3495, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67618,7 +67602,7 @@ } }, { - "__docId__": 3505, + "__docId__": 3496, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67635,7 +67619,7 @@ } }, { - "__docId__": 3506, + "__docId__": 3497, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67653,7 +67637,7 @@ } }, { - "__docId__": 3507, + "__docId__": 3498, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67671,7 +67655,7 @@ } }, { - "__docId__": 3508, + "__docId__": 3499, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67689,7 +67673,7 @@ } }, { - "__docId__": 3509, + "__docId__": 3500, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67707,7 +67691,7 @@ } }, { - "__docId__": 3510, + "__docId__": 3501, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67725,7 +67709,7 @@ } }, { - "__docId__": 3511, + "__docId__": 3502, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67743,7 +67727,7 @@ } }, { - "__docId__": 3512, + "__docId__": 3503, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67761,7 +67745,7 @@ } }, { - "__docId__": 3513, + "__docId__": 3504, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67779,7 +67763,7 @@ } }, { - "__docId__": 3514, + "__docId__": 3505, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67797,7 +67781,7 @@ } }, { - "__docId__": 3515, + "__docId__": 3506, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67815,7 +67799,7 @@ } }, { - "__docId__": 3516, + "__docId__": 3507, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67833,7 +67817,7 @@ } }, { - "__docId__": 3517, + "__docId__": 3508, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67851,7 +67835,7 @@ } }, { - "__docId__": 3518, + "__docId__": 3509, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67868,7 +67852,7 @@ "return": null }, { - "__docId__": 3519, + "__docId__": 3510, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67889,7 +67873,7 @@ } }, { - "__docId__": 3520, + "__docId__": 3511, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67910,7 +67894,7 @@ } }, { - "__docId__": 3521, + "__docId__": 3512, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67931,7 +67915,7 @@ } }, { - "__docId__": 3522, + "__docId__": 3513, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67947,7 +67931,7 @@ "return": null }, { - "__docId__": 3524, + "__docId__": 3515, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js~TrianglesBatchingOcclusionRenderer", @@ -67963,7 +67947,7 @@ "return": null }, { - "__docId__": 3526, + "__docId__": 3517, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.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();\n\n/**\n * @private\n */\nclass TrianglesBatchingPickDepthRenderer {\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, batchingLayer, renderPass) {\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 rtcCenter = batchingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const viewMatrix = rtcCenter ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n gl.uniform1f(this._uPickZNear, frameCtx.pickZNear);\n gl.uniform1f(this._uPickZFar, frameCtx.pickZFar);\n\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 numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n //=============================================================\n // TODO: Use drawElements count and offset to draw only one entity\n //=============================================================\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\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._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._uPickZNear = program.getLocation(\"pickZNear\");\n this._uPickZFar = program.getLocation(\"pickZFar\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Triangles batching pick depth vertex 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(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\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(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(\" vFlags2 = flags2;\");\n }\n src.push(\"vViewPosition = viewPosition;\");\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 }\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.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Triangles batching pick depth 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(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n src.push(\"uniform float pickZNear;\");\n src.push(\"uniform float pickZFar;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (var 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(\"varying 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(\"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 < 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 src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\");\n src.push(\" gl_FragColor = 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\nexport {TrianglesBatchingPickDepthRenderer};", @@ -67974,7 +67958,7 @@ "lineNumber": 1 }, { - "__docId__": 3527, + "__docId__": 3518, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js", @@ -67995,7 +67979,7 @@ "ignore": true }, { - "__docId__": 3528, + "__docId__": 3519, "kind": "class", "name": "TrianglesBatchingPickDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js", @@ -68011,7 +67995,7 @@ "ignore": true }, { - "__docId__": 3529, + "__docId__": 3520, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68025,7 +68009,7 @@ "undocument": true }, { - "__docId__": 3530, + "__docId__": 3521, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68043,7 +68027,7 @@ } }, { - "__docId__": 3531, + "__docId__": 3522, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68061,7 +68045,7 @@ } }, { - "__docId__": 3532, + "__docId__": 3523, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68081,7 +68065,7 @@ } }, { - "__docId__": 3533, + "__docId__": 3524, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68102,7 +68086,7 @@ } }, { - "__docId__": 3534, + "__docId__": 3525, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68137,7 +68121,7 @@ "return": null }, { - "__docId__": 3535, + "__docId__": 3526, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68154,7 +68138,7 @@ "return": null }, { - "__docId__": 3536, + "__docId__": 3527, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68172,7 +68156,7 @@ } }, { - "__docId__": 3537, + "__docId__": 3528, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68189,7 +68173,7 @@ } }, { - "__docId__": 3538, + "__docId__": 3529, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68207,7 +68191,7 @@ } }, { - "__docId__": 3539, + "__docId__": 3530, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68225,7 +68209,7 @@ } }, { - "__docId__": 3540, + "__docId__": 3531, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68243,7 +68227,7 @@ } }, { - "__docId__": 3541, + "__docId__": 3532, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68261,7 +68245,7 @@ } }, { - "__docId__": 3542, + "__docId__": 3533, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68279,7 +68263,7 @@ } }, { - "__docId__": 3543, + "__docId__": 3534, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68297,7 +68281,7 @@ } }, { - "__docId__": 3544, + "__docId__": 3535, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68315,7 +68299,7 @@ } }, { - "__docId__": 3545, + "__docId__": 3536, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68333,7 +68317,7 @@ } }, { - "__docId__": 3546, + "__docId__": 3537, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68351,7 +68335,7 @@ } }, { - "__docId__": 3547, + "__docId__": 3538, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68369,7 +68353,7 @@ } }, { - "__docId__": 3548, + "__docId__": 3539, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68387,7 +68371,7 @@ } }, { - "__docId__": 3549, + "__docId__": 3540, "kind": "member", "name": "_uPickZNear", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68405,7 +68389,7 @@ } }, { - "__docId__": 3550, + "__docId__": 3541, "kind": "member", "name": "_uPickZFar", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68423,7 +68407,7 @@ } }, { - "__docId__": 3551, + "__docId__": 3542, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68441,7 +68425,7 @@ } }, { - "__docId__": 3552, + "__docId__": 3543, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68458,7 +68442,7 @@ "return": null }, { - "__docId__": 3553, + "__docId__": 3544, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68479,7 +68463,7 @@ } }, { - "__docId__": 3554, + "__docId__": 3545, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68500,7 +68484,7 @@ } }, { - "__docId__": 3555, + "__docId__": 3546, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68521,7 +68505,7 @@ } }, { - "__docId__": 3556, + "__docId__": 3547, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68537,7 +68521,7 @@ "return": null }, { - "__docId__": 3558, + "__docId__": 3549, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js~TrianglesBatchingPickDepthRenderer", @@ -68553,7 +68537,7 @@ "return": null }, { - "__docId__": 3560, + "__docId__": 3551, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.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();\n\n/**\n * @private\n */\nclass TrianglesBatchingPickMeshRenderer {\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, batchingLayer, renderPass) {\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 rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(batchingLayer);\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const viewMatrix = rtcCenter ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMatrix);\n\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\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n if (this._aPickColor) {\n this._aPickColor.bindArrayBuffer(state.pickColorsBuf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\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._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\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.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aPickColor = program.getAttribute(\"pickColor\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program.bind();\n\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.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Batched geometry picking vertex shader\");\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(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"attribute vec4 pickColor;\");\n\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vPickColor;\");\n\n src.push(\"void main(void) {\");\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(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(\" vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry picking fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (var 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(\"varying vec4 vPickColor;\");\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 < 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 src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = 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\nexport {TrianglesBatchingPickMeshRenderer};", @@ -68564,7 +68548,7 @@ "lineNumber": 1 }, { - "__docId__": 3561, + "__docId__": 3552, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js", @@ -68585,7 +68569,7 @@ "ignore": true }, { - "__docId__": 3562, + "__docId__": 3553, "kind": "class", "name": "TrianglesBatchingPickMeshRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js", @@ -68601,7 +68585,7 @@ "ignore": true }, { - "__docId__": 3563, + "__docId__": 3554, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68615,7 +68599,7 @@ "undocument": true }, { - "__docId__": 3564, + "__docId__": 3555, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68633,7 +68617,7 @@ } }, { - "__docId__": 3565, + "__docId__": 3556, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68651,7 +68635,7 @@ } }, { - "__docId__": 3566, + "__docId__": 3557, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68671,7 +68655,7 @@ } }, { - "__docId__": 3567, + "__docId__": 3558, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68692,7 +68676,7 @@ } }, { - "__docId__": 3568, + "__docId__": 3559, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68727,7 +68711,7 @@ "return": null }, { - "__docId__": 3569, + "__docId__": 3560, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68744,7 +68728,7 @@ "return": null }, { - "__docId__": 3570, + "__docId__": 3561, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68762,7 +68746,7 @@ } }, { - "__docId__": 3571, + "__docId__": 3562, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68779,7 +68763,7 @@ } }, { - "__docId__": 3572, + "__docId__": 3563, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68797,7 +68781,7 @@ } }, { - "__docId__": 3573, + "__docId__": 3564, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68815,7 +68799,7 @@ } }, { - "__docId__": 3574, + "__docId__": 3565, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68833,7 +68817,7 @@ } }, { - "__docId__": 3575, + "__docId__": 3566, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68851,7 +68835,7 @@ } }, { - "__docId__": 3576, + "__docId__": 3567, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68869,7 +68853,7 @@ } }, { - "__docId__": 3577, + "__docId__": 3568, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68887,7 +68871,7 @@ } }, { - "__docId__": 3578, + "__docId__": 3569, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68905,7 +68889,7 @@ } }, { - "__docId__": 3579, + "__docId__": 3570, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68923,7 +68907,7 @@ } }, { - "__docId__": 3580, + "__docId__": 3571, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68941,7 +68925,7 @@ } }, { - "__docId__": 3581, + "__docId__": 3572, "kind": "member", "name": "_aPickColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68959,7 +68943,7 @@ } }, { - "__docId__": 3582, + "__docId__": 3573, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68977,7 +68961,7 @@ } }, { - "__docId__": 3583, + "__docId__": 3574, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -68995,7 +68979,7 @@ } }, { - "__docId__": 3584, + "__docId__": 3575, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -69013,7 +68997,7 @@ } }, { - "__docId__": 3585, + "__docId__": 3576, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -69037,7 +69021,7 @@ "return": null }, { - "__docId__": 3586, + "__docId__": 3577, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -69058,7 +69042,7 @@ } }, { - "__docId__": 3587, + "__docId__": 3578, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -69079,7 +69063,7 @@ } }, { - "__docId__": 3588, + "__docId__": 3579, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -69100,7 +69084,7 @@ } }, { - "__docId__": 3589, + "__docId__": 3580, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -69116,7 +69100,7 @@ "return": null }, { - "__docId__": 3591, + "__docId__": 3582, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js~TrianglesBatchingPickMeshRenderer", @@ -69132,7 +69116,7 @@ "return": null }, { - "__docId__": 3593, + "__docId__": 3584, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.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();\n\n/**\n * @private\n */\nclass TrianglesBatchingPickNormalsRenderer {\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, batchingLayer, renderPass) {\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 rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(batchingLayer);\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const viewMatrix = rtcCenter ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\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 matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n //=============================================================\n // TODO: Use drawElements count and offset to draw only one entity\n //=============================================================\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aNormal) {\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\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._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching pick 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 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\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 if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec3 vWorldNormal;\");\n src.push(\"void main(void) {\");\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`if (int(flags.w) != 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(\" vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching pick normals fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (var 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(\"varying vec3 vWorldNormal;\");\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 < 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 src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vec4((vWorldNormal * 0.5) + 0.5, 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\nexport {TrianglesBatchingPickNormalsRenderer};", @@ -69143,7 +69127,7 @@ "lineNumber": 1 }, { - "__docId__": 3594, + "__docId__": 3585, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js", @@ -69164,7 +69148,7 @@ "ignore": true }, { - "__docId__": 3595, + "__docId__": 3586, "kind": "class", "name": "TrianglesBatchingPickNormalsRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js", @@ -69180,7 +69164,7 @@ "ignore": true }, { - "__docId__": 3596, + "__docId__": 3587, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69194,7 +69178,7 @@ "undocument": true }, { - "__docId__": 3597, + "__docId__": 3588, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69212,7 +69196,7 @@ } }, { - "__docId__": 3598, + "__docId__": 3589, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69230,7 +69214,7 @@ } }, { - "__docId__": 3599, + "__docId__": 3590, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69250,7 +69234,7 @@ } }, { - "__docId__": 3600, + "__docId__": 3591, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69271,7 +69255,7 @@ } }, { - "__docId__": 3601, + "__docId__": 3592, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69306,7 +69290,7 @@ "return": null }, { - "__docId__": 3602, + "__docId__": 3593, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69323,7 +69307,7 @@ "return": null }, { - "__docId__": 3603, + "__docId__": 3594, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69341,7 +69325,7 @@ } }, { - "__docId__": 3604, + "__docId__": 3595, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69358,7 +69342,7 @@ } }, { - "__docId__": 3605, + "__docId__": 3596, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69376,7 +69360,7 @@ } }, { - "__docId__": 3606, + "__docId__": 3597, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69394,7 +69378,7 @@ } }, { - "__docId__": 3607, + "__docId__": 3598, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69412,7 +69396,7 @@ } }, { - "__docId__": 3608, + "__docId__": 3599, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69430,7 +69414,7 @@ } }, { - "__docId__": 3609, + "__docId__": 3600, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69448,7 +69432,7 @@ } }, { - "__docId__": 3610, + "__docId__": 3601, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69466,7 +69450,7 @@ } }, { - "__docId__": 3611, + "__docId__": 3602, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69484,7 +69468,7 @@ } }, { - "__docId__": 3612, + "__docId__": 3603, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69502,7 +69486,7 @@ } }, { - "__docId__": 3613, + "__docId__": 3604, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69520,7 +69504,7 @@ } }, { - "__docId__": 3614, + "__docId__": 3605, "kind": "member", "name": "_aNormal", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69538,7 +69522,7 @@ } }, { - "__docId__": 3615, + "__docId__": 3606, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69556,7 +69540,7 @@ } }, { - "__docId__": 3616, + "__docId__": 3607, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69574,7 +69558,7 @@ } }, { - "__docId__": 3617, + "__docId__": 3608, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69592,7 +69576,7 @@ } }, { - "__docId__": 3618, + "__docId__": 3609, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69609,7 +69593,7 @@ "return": null }, { - "__docId__": 3619, + "__docId__": 3610, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69630,7 +69614,7 @@ } }, { - "__docId__": 3620, + "__docId__": 3611, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69651,7 +69635,7 @@ } }, { - "__docId__": 3621, + "__docId__": 3612, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69672,7 +69656,7 @@ } }, { - "__docId__": 3622, + "__docId__": 3613, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69688,7 +69672,7 @@ "return": null }, { - "__docId__": 3624, + "__docId__": 3615, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js~TrianglesBatchingPickNormalsRenderer", @@ -69704,7 +69688,7 @@ "return": null }, { - "__docId__": 3626, + "__docId__": 3617, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js", "content": "import {Program} from \"../../../../../webgl/Program.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {getPlaneRTCPos} from \"../../../../../math/rtcCoords.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * Renders BatchingLayer fragment depths to a shadow map.\n *\n * @private\n */\nclass TrianglesBatchingShadowRenderer {\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, batchingLayer) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n if (!this._program) {\n this._allocate();\n }\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n if (scene.logarithmicDepthBufferEnabled) {\n gl.uniform1f(this._uZFar, scene.camera.project.far)\n }\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n if (this._aColor) { // Needed for masking out transparent entities using alpha channel\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n state.indicesBuf.bind();\n\n // TODO: Section planes need to be set if RTC center has changed since last RTC center recorded on frameCtx\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n const rtcCenter = batchingLayer._state.rtcCenter;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\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 const sectionPlanesState = scene._sectionPlanesState;\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._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uShadowViewMatrix = program.getLocation(\"shadowViewMatrix\");\n this._uShadowProjMatrix = program.getLocation(\"shadowProjMatrix\");\n if (scene.logarithmicDepthBufferEnabled) {\n this._uZFar = program.getLocation(\"zFar\");\n }\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 this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n }\n\n _bindProgram(frameCtx) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n program.bind();\n gl.uniformMatrix4fv(this._uShadowViewMatrix, false, frameCtx.shadowViewMatrix);\n gl.uniformMatrix4fv(this._uShadowProjMatrix, false, frameCtx.shadowProjMatrix);\n this._lastLightId = null;\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry shadow vertex shader\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform mat4 shadowViewMatrix;\");\n src.push(\"uniform mat4 shadowProjMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\n src.push(\" bool visible = (float(flags.x) > 0.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(\" vFlags2 = flags2;\");\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.sectionPlanes.length > 0);\n const src = [];\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(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\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(\"varying 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\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 < 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 src.push(\" }\");\n }\n src.push(\" gl_FragColor = encodeFloat( gl_FragCoord.z); \");\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\nexport {TrianglesBatchingShadowRenderer};", @@ -69715,7 +69699,7 @@ "lineNumber": 1 }, { - "__docId__": 3627, + "__docId__": 3618, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js", @@ -69736,7 +69720,7 @@ "ignore": true }, { - "__docId__": 3628, + "__docId__": 3619, "kind": "class", "name": "TrianglesBatchingShadowRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js", @@ -69752,7 +69736,7 @@ "ignore": true }, { - "__docId__": 3629, + "__docId__": 3620, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -69766,7 +69750,7 @@ "undocument": true }, { - "__docId__": 3630, + "__docId__": 3621, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -69784,7 +69768,7 @@ } }, { - "__docId__": 3631, + "__docId__": 3622, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -69802,7 +69786,7 @@ } }, { - "__docId__": 3632, + "__docId__": 3623, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -69822,7 +69806,7 @@ } }, { - "__docId__": 3633, + "__docId__": 3624, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -69843,7 +69827,7 @@ } }, { - "__docId__": 3634, + "__docId__": 3625, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -69872,7 +69856,7 @@ "return": null }, { - "__docId__": 3635, + "__docId__": 3626, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -69889,7 +69873,7 @@ "return": null }, { - "__docId__": 3636, + "__docId__": 3627, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -69907,7 +69891,7 @@ } }, { - "__docId__": 3637, + "__docId__": 3628, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -69924,7 +69908,7 @@ } }, { - "__docId__": 3638, + "__docId__": 3629, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -69942,7 +69926,7 @@ } }, { - "__docId__": 3639, + "__docId__": 3630, "kind": "member", "name": "_uShadowViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -69960,7 +69944,7 @@ } }, { - "__docId__": 3640, + "__docId__": 3631, "kind": "member", "name": "_uShadowProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -69978,7 +69962,7 @@ } }, { - "__docId__": 3641, + "__docId__": 3632, "kind": "member", "name": "_uZFar", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -69996,7 +69980,7 @@ } }, { - "__docId__": 3642, + "__docId__": 3633, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -70014,7 +69998,7 @@ } }, { - "__docId__": 3643, + "__docId__": 3634, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -70032,7 +70016,7 @@ } }, { - "__docId__": 3644, + "__docId__": 3635, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -70050,7 +70034,7 @@ } }, { - "__docId__": 3645, + "__docId__": 3636, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -70068,7 +70052,7 @@ } }, { - "__docId__": 3646, + "__docId__": 3637, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -70086,7 +70070,7 @@ } }, { - "__docId__": 3647, + "__docId__": 3638, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -70104,7 +70088,7 @@ } }, { - "__docId__": 3648, + "__docId__": 3639, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -70128,7 +70112,7 @@ "return": null }, { - "__docId__": 3649, + "__docId__": 3640, "kind": "member", "name": "_lastLightId", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -70146,7 +70130,7 @@ } }, { - "__docId__": 3650, + "__docId__": 3641, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -70167,7 +70151,7 @@ } }, { - "__docId__": 3651, + "__docId__": 3642, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -70188,7 +70172,7 @@ } }, { - "__docId__": 3652, + "__docId__": 3643, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -70209,7 +70193,7 @@ } }, { - "__docId__": 3653, + "__docId__": 3644, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -70225,7 +70209,7 @@ "return": null }, { - "__docId__": 3655, + "__docId__": 3646, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js~TrianglesBatchingShadowRenderer", @@ -70241,7 +70225,7 @@ "return": null }, { - "__docId__": 3657, + "__docId__": 3648, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.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\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst defaultColor = new Float32Array([1, 1, 1]);\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesBatchingSilhouetteRenderer {\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, batchingLayer, renderPass) {\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 rtcCenter = batchingLayer._state.rtcCenter\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 gl.uniform1i(this._uRenderPass, renderPass);\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\n const viewMat = (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix;\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMat);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\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(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uColor = program.getLocation(\"color\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n\n const src = [];\n\n src.push(\"// Triangles batching silhouette 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\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n src.push(\"uniform vec4 color;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\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(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(\"vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching silhouette fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"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 (i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = 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\nexport {TrianglesBatchingSilhouetteRenderer};", @@ -70252,7 +70236,7 @@ "lineNumber": 1 }, { - "__docId__": 3658, + "__docId__": 3649, "kind": "variable", "name": "defaultColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js", @@ -70273,7 +70257,7 @@ "ignore": true }, { - "__docId__": 3659, + "__docId__": 3650, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js", @@ -70294,7 +70278,7 @@ "ignore": true }, { - "__docId__": 3660, + "__docId__": 3651, "kind": "class", "name": "TrianglesBatchingSilhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js", @@ -70310,7 +70294,7 @@ "ignore": true }, { - "__docId__": 3661, + "__docId__": 3652, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70324,7 +70308,7 @@ "undocument": true }, { - "__docId__": 3662, + "__docId__": 3653, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70342,7 +70326,7 @@ } }, { - "__docId__": 3663, + "__docId__": 3654, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70360,7 +70344,7 @@ } }, { - "__docId__": 3664, + "__docId__": 3655, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70380,7 +70364,7 @@ } }, { - "__docId__": 3665, + "__docId__": 3656, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70401,7 +70385,7 @@ } }, { - "__docId__": 3666, + "__docId__": 3657, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70436,7 +70420,7 @@ "return": null }, { - "__docId__": 3667, + "__docId__": 3658, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70453,7 +70437,7 @@ "return": null }, { - "__docId__": 3668, + "__docId__": 3659, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70471,7 +70455,7 @@ } }, { - "__docId__": 3669, + "__docId__": 3660, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70488,7 +70472,7 @@ } }, { - "__docId__": 3670, + "__docId__": 3661, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70506,7 +70490,7 @@ } }, { - "__docId__": 3671, + "__docId__": 3662, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70524,7 +70508,7 @@ } }, { - "__docId__": 3672, + "__docId__": 3663, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70542,7 +70526,7 @@ } }, { - "__docId__": 3673, + "__docId__": 3664, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70560,7 +70544,7 @@ } }, { - "__docId__": 3674, + "__docId__": 3665, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70578,7 +70562,7 @@ } }, { - "__docId__": 3675, + "__docId__": 3666, "kind": "member", "name": "_uColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70596,7 +70580,7 @@ } }, { - "__docId__": 3676, + "__docId__": 3667, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70614,7 +70598,7 @@ } }, { - "__docId__": 3677, + "__docId__": 3668, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70632,7 +70616,7 @@ } }, { - "__docId__": 3678, + "__docId__": 3669, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70650,7 +70634,7 @@ } }, { - "__docId__": 3679, + "__docId__": 3670, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70668,7 +70652,7 @@ } }, { - "__docId__": 3680, + "__docId__": 3671, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70686,7 +70670,7 @@ } }, { - "__docId__": 3681, + "__docId__": 3672, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70704,7 +70688,7 @@ } }, { - "__docId__": 3682, + "__docId__": 3673, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70721,7 +70705,7 @@ "return": null }, { - "__docId__": 3683, + "__docId__": 3674, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70742,7 +70726,7 @@ } }, { - "__docId__": 3684, + "__docId__": 3675, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70763,7 +70747,7 @@ } }, { - "__docId__": 3685, + "__docId__": 3676, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70784,7 +70768,7 @@ } }, { - "__docId__": 3686, + "__docId__": 3677, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70800,7 +70784,7 @@ "return": null }, { - "__docId__": 3688, + "__docId__": 3679, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js~TrianglesBatchingSilhouetteRenderer", @@ -70816,7 +70800,7 @@ "return": null }, { - "__docId__": 3690, + "__docId__": 3681, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js", "content": "import {WEBGL_INFO} from \"../../../../webglInfo.js\";\nimport {ENTITY_FLAGS} from '../../ENTITY_FLAGS.js';\nimport {RENDER_PASSES} from '../../RENDER_PASSES.js';\n\nimport {math} from \"../../../../math/math.js\";\nimport {buildEdgeIndices} from '../../../../math/buildEdgeIndices.js';\nimport {RenderState} from \"../../../../webgl/RenderState.js\";\nimport {ArrayBuf} from \"../../../../webgl/ArrayBuf.js\";\nimport {geometryCompressionUtils} from \"../../../../math/geometryCompressionUtils.js\";\nimport {getInstancingRenderers} from \"./TrianglesInstancingRenderers.js\";\nimport {quantizePositions, octEncodeNormals} from \"../../compression.js\";\n\nconst bigIndicesSupported = WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\n\nconst tempUint8Vec4 = new Uint8Array(4);\nconst tempVec4a = math.vec4([0, 0, 0, 1]);\nconst tempVec4b = math.vec4([0, 0, 0, 1]);\nconst tempVec4c = math.vec4([0, 0, 0, 1]);\nconst tempVec3fa = new Float32Array(3);\n\n/**\n * @private\n */\nclass TrianglesInstancingLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.positions Flat float Local-space positions array.\n * @param [cfg.normals] Flat float normals array.\n * @param cfg.indices Flat int indices array.\n * @param [cfg.edgeIndices] Flat int edges indices array.\n * @param cfg.edgeThreshold\n * @param cfg.rtcCenter\n * @params cfg.solid\n */\n constructor(model, cfg) {\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"TrianglesInstancingLayer\" + cfg.solid ? \"-solid\" : \"-surface\";\n\n /**\n * Index of this InstancingLayer in PerformanceModel#_layerList\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._instancingRenderers = getInstancingRenderers(model.scene);\n this.model = model;\n this._aabb = math.collapseAABB3();\n\n const stateCfg = {\n positionsDecodeMatrix: math.mat4(),\n numInstances: 0,\n obb: math.OBB3(),\n rtcCenter: null\n };\n\n const preCompressed = (!!cfg.positionsDecodeMatrix);\n const gl = this.model.scene.canvas.gl;\n\n if (cfg.positions) {\n\n if (preCompressed) {\n\n let normalized = false;\n stateCfg.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, cfg.positions, cfg.positions.length, 3, gl.STATIC_DRAW, normalized);\n stateCfg.positionsDecodeMatrix.set(cfg.positionsDecodeMatrix);\n\n let localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, cfg.positions);\n geometryCompressionUtils.decompressAABB(localAABB, stateCfg.positionsDecodeMatrix);\n math.AABB3ToOBB3(localAABB, stateCfg.obb);\n\n } else {\n\n let lenPositions = cfg.positions.length;\n let localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, cfg.positions);\n math.AABB3ToOBB3(localAABB, stateCfg.obb);\n const quantizedPositions = quantizePositions(cfg.positions, localAABB, stateCfg.positionsDecodeMatrix);\n let normalized = false;\n stateCfg.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, lenPositions, 3, gl.STATIC_DRAW, normalized);\n }\n }\n\n if (cfg.normals) {\n\n if (preCompressed) {\n\n const normalized = true; // For oct-encoded UInt8\n stateCfg.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, cfg.normals, cfg.normals.length, 3, gl.STATIC_DRAW, normalized);\n\n } else {\n\n const compressedNormals = octEncodeNormals(cfg.normals);\n const normalized = true; // For oct-encoded UInt8\n stateCfg.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, compressedNormals, compressedNormals.length, 3, gl.STATIC_DRAW, normalized);\n }\n }\n\n if (cfg.indices) {\n stateCfg.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, bigIndicesSupported ? new Uint32Array(cfg.indices) : new Uint16Array(cfg.indices), cfg.indices.length, 1, gl.STATIC_DRAW);\n }\n\n let edgeIndices = cfg.edgeIndices;\n if (!edgeIndices) {\n edgeIndices = buildEdgeIndices(cfg.positions, cfg.indices, null, cfg.edgeThreshold || 10);\n }\n stateCfg.edgeIndicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, bigIndicesSupported ? new Uint32Array(edgeIndices) : new Uint16Array(edgeIndices), edgeIndices.length, 1, gl.STATIC_DRAW);\n\n\n this._state = new RenderState(stateCfg);\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.indices) ? cfg.indices.length / 3 : 0;\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 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\n if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n }\n\n this._finalized = false;\n\n /**\n * The axis-aligned World-space boundary of this InstancingLayer's positions.\n * @type {*|Float64Array}\n */\n this.aabb = math.collapseAABB3();\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 /**\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 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.worldAABB Flat float AABB.\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID.\n */\n createPortion(cfg) {\n\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 worldMatrix = cfg.worldMatrix;\n const worldAABB = cfg.aabb;\n const pickColor = cfg.pickColor;\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n // TODO: find AABB for portion by transforming the geometry local AABB by the given meshMatrix?\n\n const r = color[0]; // Color is pre-quantized by PerformanceModel\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 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 // 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 // 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 // Expand AABB\n\n math.collapseAABB3(worldAABB);\n const obb = this._state.obb;\n const lenPositions = obb.length;\n for (let i = 0; i < lenPositions; i += 4) {\n tempVec4a[0] = obb[i + 0];\n tempVec4a[1] = obb[i + 1];\n tempVec4a[2] = obb[i + 2];\n math.transformPoint4(meshMatrix, tempVec4a, tempVec4b);\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4b, tempVec4c);\n math.expandAABB3Point3(worldAABB, tempVec4c);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4b);\n }\n }\n\n if (this._state.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n worldAABB[0] += rtcCenter[0];\n worldAABB[1] += rtcCenter[1];\n worldAABB[2] += rtcCenter[2];\n worldAABB[3] += rtcCenter[0];\n worldAABB[4] += rtcCenter[1];\n worldAABB[5] += rtcCenter[2];\n }\n\n math.expandAABB3(this.aabb, worldAABB);\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 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 colorsLength = this._colors.length;\n const flagsLength = colorsLength;\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 (this._metallicRoughness.length > 0) {\n const metallicRoughness = new Uint8Array(this._metallicRoughness);\n let normalized = false;\n this._state.metallicRoughnessBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, metallicRoughness, this._metallicRoughness.length, 2, gl.STATIC_DRAW, normalized);\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 let normalized = true;\n this._state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(flagsLength), flagsLength, 4, gl.DYNAMIC_DRAW, notNormalized);\n this._state.flags2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(flagsLength), flagsLength, 4, gl.DYNAMIC_DRAW, normalized);\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 (this._modelMatrixCol0.length > 0) {\n\n const normalized = false;\n\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.modelNormalMatrixCol0Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelNormalMatrixCol0), this._modelNormalMatrixCol0.length, 4, gl.STATIC_DRAW, normalized);\n this._state.modelNormalMatrixCol1Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelNormalMatrixCol1), this._modelNormalMatrixCol1.length, 4, gl.STATIC_DRAW, normalized);\n this._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 if (this._pickColors.length > 0) {\n const normalized = false;\n this._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 this._finalized = true;\n }\n\n // The following setters are called by PerformanceMesh, in turn called by PerformanceNode, 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 this._setFlags2(portionId, flags);\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._setFlags2(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._setFlags2(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 // 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, 4);\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, 4);\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, 4);\n // }\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 // Normal fill\n\n let f0;\n if (!visible || culled || xrayed) { // Highlight & select are layered on top of color - not mutually exclusive\n f0 = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (meshTransparent) {\n f0 = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n f0 = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n // Emphasis fill\n\n let f1;\n if (!visible || culled) {\n f1 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f1 = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n f1 = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n f1 = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n f1 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Edges\n\n let f2 = 0;\n if (!visible || culled) {\n f2 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f2 = RENDER_PASSES.EDGES_SELECTED;\n } else if (highlighted) {\n f2 = RENDER_PASSES.EDGES_HIGHLIGHTED;\n } else if (xrayed) {\n f2 = RENDER_PASSES.EDGES_XRAYED;\n } else if (edges) {\n if (meshTransparent) {\n f2 = RENDER_PASSES.EDGES_COLOR_TRANSPARENT;\n } else {\n f2 = RENDER_PASSES.EDGES_COLOR_OPAQUE;\n }\n } else {\n f2 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Pick\n\n let f3 = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n tempUint8Vec4[0] = f0; // x - normal fill\n tempUint8Vec4[1] = f1; // y - emphasis fill\n tempUint8Vec4[2] = f2; // z - edges\n tempUint8Vec4[3] = f3; // w - pick\n\n this._state.flagsBuf.setData(tempUint8Vec4, portionId * 4, 4);\n }\n\n _setFlags2(portionId, flags) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n tempUint8Vec4[0] = clippable;\n\n this._state.flags2Buf.setData(tempUint8Vec4, portionId * 4, 4);\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 // ---------------------- 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) {\n if (this._instancingRenderers.colorQualityRendererWithSAO) {\n this._instancingRenderers.colorQualityRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._instancingRenderers.colorRendererWithSAO) {\n this._instancingRenderers.colorRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n } else {\n if (frameCtx.pbrEnabled && this.model.pbrEnabled) {\n if (this._instancingRenderers.colorQualityRenderer) {\n this._instancingRenderers.colorQualityRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._instancingRenderers.colorRenderer) {\n this._instancingRenderers.colorRenderer.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) {\n if (this._instancingRenderers.colorQualityRenderer) {\n this._instancingRenderers.colorQualityRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n } else {\n if (this._instancingRenderers.colorRenderer) {\n this._instancingRenderers.colorRenderer.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._instancingRenderers.depthRenderer) {\n this._instancingRenderers.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._instancingRenderers.normalsRenderer) {\n this._instancingRenderers.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._instancingRenderers.silhouetteRenderer) {\n this._instancingRenderers.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._instancingRenderers.silhouetteRenderer) {\n this._instancingRenderers.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._instancingRenderers.silhouetteRenderer) {\n this._instancingRenderers.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._instancingRenderers.edgesColorRenderer) {\n this._instancingRenderers.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._instancingRenderers.edgesColorRenderer) {\n this._instancingRenderers.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._instancingRenderers.edgesRenderer) {\n this._instancingRenderers.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._instancingRenderers.edgesRenderer) {\n this._instancingRenderers.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._instancingRenderers.edgesRenderer) {\n this._instancingRenderers.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._instancingRenderers.occlusionRenderer) {\n // Only opaque, filled objects can be occluders\n this._instancingRenderers.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._instancingRenderers.shadowRenderer) {\n this._instancingRenderers.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._instancingRenderers.pickMeshRenderer) {\n this._instancingRenderers.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._instancingRenderers.pickDepthRenderer) {\n this._instancingRenderers.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 if (this._instancingRenderers.pickNormalsRenderer) {\n this._instancingRenderers.pickNormalsRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\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.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.flags2Buf) {\n state.flags2Buf.destroy();\n state.flags2Buf = 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.indicesBuf) {\n state.indicesBuf.destroy();\n state.indicessBuf = null;\n }\n if (state.edgeIndicesBuf) {\n state.edgeIndicesBuf.destroy();\n state.edgeIndicessBuf = null;\n }\n if (state.pickColorsBuf) {\n state.pickColorsBuf.destroy();\n state.pickColorsBuf = null;\n }\n state.destroy();\n }\n}\n\nexport {TrianglesInstancingLayer};", @@ -70827,7 +70811,7 @@ "lineNumber": 1 }, { - "__docId__": 3691, + "__docId__": 3682, "kind": "variable", "name": "bigIndicesSupported", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js", @@ -70848,7 +70832,7 @@ "ignore": true }, { - "__docId__": 3692, + "__docId__": 3683, "kind": "variable", "name": "tempUint8Vec4", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js", @@ -70869,7 +70853,7 @@ "ignore": true }, { - "__docId__": 3693, + "__docId__": 3684, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js", @@ -70890,7 +70874,7 @@ "ignore": true }, { - "__docId__": 3694, + "__docId__": 3685, "kind": "variable", "name": "tempVec4b", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js", @@ -70911,7 +70895,7 @@ "ignore": true }, { - "__docId__": 3695, + "__docId__": 3686, "kind": "variable", "name": "tempVec4c", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js", @@ -70932,7 +70916,7 @@ "ignore": true }, { - "__docId__": 3696, + "__docId__": 3687, "kind": "variable", "name": "tempVec3fa", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js", @@ -70953,7 +70937,7 @@ "ignore": true }, { - "__docId__": 3697, + "__docId__": 3688, "kind": "class", "name": "TrianglesInstancingLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js", @@ -70969,7 +70953,7 @@ "ignore": true }, { - "__docId__": 3698, + "__docId__": 3689, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71080,7 +71064,7 @@ ] }, { - "__docId__": 3699, + "__docId__": 3690, "kind": "member", "name": "sortId", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71099,7 +71083,7 @@ } }, { - "__docId__": 3700, + "__docId__": 3691, "kind": "member", "name": "layerIndex", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71118,7 +71102,7 @@ } }, { - "__docId__": 3701, + "__docId__": 3692, "kind": "member", "name": "_instancingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71136,7 +71120,7 @@ } }, { - "__docId__": 3702, + "__docId__": 3693, "kind": "member", "name": "model", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71153,7 +71137,7 @@ } }, { - "__docId__": 3703, + "__docId__": 3694, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71171,7 +71155,7 @@ } }, { - "__docId__": 3704, + "__docId__": 3695, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71189,7 +71173,7 @@ } }, { - "__docId__": 3705, + "__docId__": 3696, "kind": "member", "name": "_numPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71207,7 +71191,7 @@ } }, { - "__docId__": 3706, + "__docId__": 3697, "kind": "member", "name": "_numVisibleLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71225,7 +71209,7 @@ } }, { - "__docId__": 3707, + "__docId__": 3698, "kind": "member", "name": "_numTransparentLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71243,7 +71227,7 @@ } }, { - "__docId__": 3708, + "__docId__": 3699, "kind": "member", "name": "_numXRayedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71261,7 +71245,7 @@ } }, { - "__docId__": 3709, + "__docId__": 3700, "kind": "member", "name": "_numHighlightedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71279,7 +71263,7 @@ } }, { - "__docId__": 3710, + "__docId__": 3701, "kind": "member", "name": "_numSelectedLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71297,7 +71281,7 @@ } }, { - "__docId__": 3711, + "__docId__": 3702, "kind": "member", "name": "_numClippableLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71315,7 +71299,7 @@ } }, { - "__docId__": 3712, + "__docId__": 3703, "kind": "member", "name": "_numEdgesLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71333,7 +71317,7 @@ } }, { - "__docId__": 3713, + "__docId__": 3704, "kind": "member", "name": "_numPickableLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71351,7 +71335,7 @@ } }, { - "__docId__": 3714, + "__docId__": 3705, "kind": "member", "name": "_numCulledLayerPortions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71369,7 +71353,7 @@ } }, { - "__docId__": 3715, + "__docId__": 3706, "kind": "member", "name": "numIndices", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71386,7 +71370,7 @@ } }, { - "__docId__": 3716, + "__docId__": 3707, "kind": "member", "name": "_colors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71404,7 +71388,7 @@ } }, { - "__docId__": 3717, + "__docId__": 3708, "kind": "member", "name": "_metallicRoughness", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71422,7 +71406,7 @@ } }, { - "__docId__": 3718, + "__docId__": 3709, "kind": "member", "name": "_pickColors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71440,7 +71424,7 @@ } }, { - "__docId__": 3719, + "__docId__": 3710, "kind": "member", "name": "_offsets", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71458,7 +71442,7 @@ } }, { - "__docId__": 3720, + "__docId__": 3711, "kind": "member", "name": "_modelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71476,7 +71460,7 @@ } }, { - "__docId__": 3721, + "__docId__": 3712, "kind": "member", "name": "_modelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71494,7 +71478,7 @@ } }, { - "__docId__": 3722, + "__docId__": 3713, "kind": "member", "name": "_modelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71512,7 +71496,7 @@ } }, { - "__docId__": 3723, + "__docId__": 3714, "kind": "member", "name": "_modelNormalMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71530,7 +71514,7 @@ } }, { - "__docId__": 3724, + "__docId__": 3715, "kind": "member", "name": "_modelNormalMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71548,7 +71532,7 @@ } }, { - "__docId__": 3725, + "__docId__": 3716, "kind": "member", "name": "_modelNormalMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71566,7 +71550,7 @@ } }, { - "__docId__": 3726, + "__docId__": 3717, "kind": "member", "name": "_portions", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71584,7 +71568,7 @@ } }, { - "__docId__": 3727, + "__docId__": 3718, "kind": "member", "name": "_finalized", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71602,7 +71586,7 @@ } }, { - "__docId__": 3728, + "__docId__": 3719, "kind": "member", "name": "aabb", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71622,7 +71606,7 @@ } }, { - "__docId__": 3729, + "__docId__": 3720, "kind": "member", "name": "solid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71641,7 +71625,7 @@ } }, { - "__docId__": 3730, + "__docId__": 3721, "kind": "method", "name": "createPortion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71760,7 +71744,7 @@ } }, { - "__docId__": 3731, + "__docId__": 3722, "kind": "method", "name": "finalize", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71776,7 +71760,7 @@ "return": null }, { - "__docId__": 3742, + "__docId__": 3733, "kind": "method", "name": "initFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71811,7 +71795,7 @@ "return": null }, { - "__docId__": 3743, + "__docId__": 3734, "kind": "method", "name": "setVisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71846,7 +71830,7 @@ "return": null }, { - "__docId__": 3744, + "__docId__": 3735, "kind": "method", "name": "setHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71881,7 +71865,7 @@ "return": null }, { - "__docId__": 3745, + "__docId__": 3736, "kind": "method", "name": "setXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71916,7 +71900,7 @@ "return": null }, { - "__docId__": 3746, + "__docId__": 3737, "kind": "method", "name": "setSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71951,7 +71935,7 @@ "return": null }, { - "__docId__": 3747, + "__docId__": 3738, "kind": "method", "name": "setEdges", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -71986,7 +71970,7 @@ "return": null }, { - "__docId__": 3748, + "__docId__": 3739, "kind": "method", "name": "setClippable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72015,7 +71999,7 @@ "return": null }, { - "__docId__": 3749, + "__docId__": 3740, "kind": "method", "name": "setCollidable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72044,7 +72028,7 @@ "return": null }, { - "__docId__": 3750, + "__docId__": 3741, "kind": "method", "name": "setPickable", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72079,7 +72063,7 @@ "return": null }, { - "__docId__": 3751, + "__docId__": 3742, "kind": "method", "name": "setCulled", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72114,7 +72098,7 @@ "return": null }, { - "__docId__": 3752, + "__docId__": 3743, "kind": "method", "name": "setColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72143,7 +72127,7 @@ "return": null }, { - "__docId__": 3753, + "__docId__": 3744, "kind": "method", "name": "setTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72178,7 +72162,7 @@ "return": null }, { - "__docId__": 3754, + "__docId__": 3745, "kind": "method", "name": "_setFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72214,7 +72198,7 @@ "return": null }, { - "__docId__": 3755, + "__docId__": 3746, "kind": "method", "name": "_setFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72244,7 +72228,7 @@ "return": null }, { - "__docId__": 3756, + "__docId__": 3747, "kind": "method", "name": "setOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72273,7 +72257,7 @@ "return": null }, { - "__docId__": 3757, + "__docId__": 3748, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72302,7 +72286,7 @@ "return": null }, { - "__docId__": 3758, + "__docId__": 3749, "kind": "method", "name": "_updateBackfaceCull", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72332,7 +72316,7 @@ "return": null }, { - "__docId__": 3759, + "__docId__": 3750, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72361,7 +72345,7 @@ "return": null }, { - "__docId__": 3760, + "__docId__": 3751, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72390,7 +72374,7 @@ "return": null }, { - "__docId__": 3761, + "__docId__": 3752, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72419,7 +72403,7 @@ "return": null }, { - "__docId__": 3762, + "__docId__": 3753, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72448,7 +72432,7 @@ "return": null }, { - "__docId__": 3763, + "__docId__": 3754, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72477,7 +72461,7 @@ "return": null }, { - "__docId__": 3764, + "__docId__": 3755, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72506,7 +72490,7 @@ "return": null }, { - "__docId__": 3765, + "__docId__": 3756, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72535,7 +72519,7 @@ "return": null }, { - "__docId__": 3766, + "__docId__": 3757, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72564,7 +72548,7 @@ "return": null }, { - "__docId__": 3767, + "__docId__": 3758, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72593,7 +72577,7 @@ "return": null }, { - "__docId__": 3768, + "__docId__": 3759, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72622,7 +72606,7 @@ "return": null }, { - "__docId__": 3769, + "__docId__": 3760, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72651,7 +72635,7 @@ "return": null }, { - "__docId__": 3770, + "__docId__": 3761, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72680,7 +72664,7 @@ "return": null }, { - "__docId__": 3771, + "__docId__": 3762, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72709,7 +72693,7 @@ "return": null }, { - "__docId__": 3772, + "__docId__": 3763, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72738,7 +72722,7 @@ "return": null }, { - "__docId__": 3773, + "__docId__": 3764, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72767,7 +72751,7 @@ "return": null }, { - "__docId__": 3774, + "__docId__": 3765, "kind": "method", "name": "drawPickNormals", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72796,7 +72780,7 @@ "return": null }, { - "__docId__": 3775, + "__docId__": 3766, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js~TrianglesInstancingLayer", @@ -72812,7 +72796,7 @@ "return": null }, { - "__docId__": 3776, + "__docId__": 3767, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js", "content": "import {TrianglesInstancingColorRenderer} from \"./renderers/TrianglesInstancingColorRenderer.js\";\nimport {TrianglesInstancingSilhouetteRenderer} from \"./renderers/TrianglesInstancingSilhouetteRenderer.js\";\nimport {TrianglesInstancingEdgesRenderer} from \"./renderers/TrianglesInstancingEdgesRenderer.js\";\nimport {TrianglesInstancingEdgesColorRenderer} from \"./renderers/TrianglesInstancingEdgesColorRenderer.js\";\nimport {TrianglesInstancingPickMeshRenderer} from \"./renderers/TrianglesInstancingPickMeshRenderer.js\";\nimport {TrianglesInstancingPickDepthRenderer} from \"./renderers/TrianglesInstancingPickDepthRenderer.js\";\nimport {TrianglesInstancingPickNormalsRenderer} from \"./renderers/TrianglesInstancingPickNormalsRenderer.js\";\nimport {TrianglesInstancingOcclusionRenderer} from \"./renderers/TrianglesInstancingOcclusionRenderer.js\";\nimport {TrianglesInstancingDepthRenderer} from \"./renderers/TrianglesInstancingDepthRenderer.js\";\nimport {TrianglesInstancingNormalsRenderer} from \"./renderers/TrianglesInstancingNormalsRenderer.js\";\nimport {TrianglesInstancingShadowRenderer} from \"./renderers/TrianglesInstancingShadowRenderer.js\";\nimport {TrianglesInstancingColorQualityRenderer} from \"./renderers/TrianglesInstancingColorQualityRenderer.js\";\n\n/**\n * @private\n */\nclass TrianglesInstancingRenderers {\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._colorQualityRenderer && (!this._colorQualityRenderer.getValid())) {\n this._colorQualityRenderer.destroy();\n this._colorQualityRenderer = 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._pickNormalsRenderer && this._pickNormalsRenderer.getValid() === false) {\n this._pickNormalsRenderer.destroy();\n this._pickNormalsRenderer = 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 }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new TrianglesInstancingColorRenderer(this._scene, false);\n }\n return this._colorRenderer;\n }\n\n get colorRendererWithSAO() {\n if (!this._colorRendererWithSAO) {\n this._colorRendererWithSAO = new TrianglesInstancingColorRenderer(this._scene, true);\n }\n return this._colorRendererWithSAO;\n }\n\n get colorQualityRenderer() {\n if (!this._colorQualityRenderer) {\n this._colorQualityRenderer = new TrianglesInstancingColorQualityRenderer(this._scene, false);\n }\n return this._colorQualityRenderer;\n }\n\n get colorQualityRendererWithSAO() {\n if (!this._colorQualityRendererWithSAO) {\n this._colorQualityRendererWithSAO = new TrianglesInstancingColorQualityRenderer(this._scene, true);\n }\n return this._colorQualityRendererWithSAO;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new TrianglesInstancingSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get depthRenderer() {\n if (!this._depthRenderer) {\n this._depthRenderer = new TrianglesInstancingDepthRenderer(this._scene);\n }\n return this._depthRenderer;\n }\n\n get normalsRenderer() {\n if (!this._normalsRenderer) {\n this._normalsRenderer = new TrianglesInstancingNormalsRenderer(this._scene);\n }\n return this._normalsRenderer;\n }\n\n get edgesRenderer() {\n if (!this._edgesRenderer) {\n this._edgesRenderer = new TrianglesInstancingEdgesRenderer(this._scene);\n }\n return this._edgesRenderer;\n }\n\n get edgesColorRenderer() {\n if (!this._edgesColorRenderer) {\n this._edgesColorRenderer = new TrianglesInstancingEdgesColorRenderer(this._scene);\n }\n return this._edgesColorRenderer;\n }\n\n get pickMeshRenderer() {\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new TrianglesInstancingPickMeshRenderer(this._scene);\n }\n return this._pickMeshRenderer;\n }\n\n get pickNormalsRenderer() {\n if (!this._pickNormalsRenderer) {\n this._pickNormalsRenderer = new TrianglesInstancingPickNormalsRenderer(this._scene);\n }\n return this._pickNormalsRenderer;\n }\n\n get pickDepthRenderer() {\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new TrianglesInstancingPickDepthRenderer(this._scene);\n }\n return this._pickDepthRenderer;\n }\n\n get occlusionRenderer() {\n if (!this._occlusionRenderer) {\n this._occlusionRenderer = new TrianglesInstancingOcclusionRenderer(this._scene);\n }\n return this._occlusionRenderer;\n }\n\n get shadowRenderer() {\n if (!this._shadowRenderer) {\n this._shadowRenderer = new TrianglesInstancingShadowRenderer(this._scene);\n }\n return this._shadowRenderer;\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._colorQualityRenderer) {\n this._colorQualityRenderer.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._pickNormalsRenderer) {\n this._pickNormalsRenderer.destroy();\n }\n if (this._occlusionRenderer) {\n this._occlusionRenderer.destroy();\n }\n if (this._shadowRenderer) {\n this._shadowRenderer.destroy();\n }\n }\n}\n\nconst cachedRenderers = {};\n\nfunction getInstancingRenderers(scene) {\n const sceneId = scene.id;\n let instancingRenderers = cachedRenderers[sceneId];\n if (!instancingRenderers) {\n instancingRenderers = new TrianglesInstancingRenderers(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\nexport {getInstancingRenderers};", @@ -72823,7 +72807,7 @@ "lineNumber": 1 }, { - "__docId__": 3777, + "__docId__": 3768, "kind": "class", "name": "TrianglesInstancingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js", @@ -72839,7 +72823,7 @@ "ignore": true }, { - "__docId__": 3778, + "__docId__": 3769, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -72853,7 +72837,7 @@ "undocument": true }, { - "__docId__": 3779, + "__docId__": 3770, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -72871,7 +72855,7 @@ } }, { - "__docId__": 3780, + "__docId__": 3771, "kind": "method", "name": "_compile", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -72888,7 +72872,7 @@ "return": null }, { - "__docId__": 3781, + "__docId__": 3772, "kind": "member", "name": "_colorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -72906,7 +72890,7 @@ } }, { - "__docId__": 3782, + "__docId__": 3773, "kind": "member", "name": "_colorRendererWithSAO", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -72924,7 +72908,7 @@ } }, { - "__docId__": 3783, + "__docId__": 3774, "kind": "member", "name": "_colorQualityRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -72942,7 +72926,7 @@ } }, { - "__docId__": 3784, + "__docId__": 3775, "kind": "member", "name": "_colorQualityRendererWithSAO", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -72960,7 +72944,7 @@ } }, { - "__docId__": 3785, + "__docId__": 3776, "kind": "member", "name": "_depthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -72978,7 +72962,7 @@ } }, { - "__docId__": 3786, + "__docId__": 3777, "kind": "member", "name": "_normalsRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -72996,7 +72980,7 @@ } }, { - "__docId__": 3787, + "__docId__": 3778, "kind": "member", "name": "_silhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73014,7 +72998,7 @@ } }, { - "__docId__": 3788, + "__docId__": 3779, "kind": "member", "name": "_edgesRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73032,7 +73016,7 @@ } }, { - "__docId__": 3789, + "__docId__": 3780, "kind": "member", "name": "_edgesColorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73050,7 +73034,7 @@ } }, { - "__docId__": 3790, + "__docId__": 3781, "kind": "member", "name": "_pickMeshRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73068,7 +73052,7 @@ } }, { - "__docId__": 3791, + "__docId__": 3782, "kind": "member", "name": "_pickDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73086,7 +73070,7 @@ } }, { - "__docId__": 3792, + "__docId__": 3783, "kind": "member", "name": "_pickNormalsRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73104,7 +73088,7 @@ } }, { - "__docId__": 3793, + "__docId__": 3784, "kind": "member", "name": "_occlusionRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73122,7 +73106,7 @@ } }, { - "__docId__": 3794, + "__docId__": 3785, "kind": "member", "name": "_shadowRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73140,7 +73124,7 @@ } }, { - "__docId__": 3795, + "__docId__": 3786, "kind": "get", "name": "colorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73159,7 +73143,7 @@ } }, { - "__docId__": 3797, + "__docId__": 3788, "kind": "get", "name": "colorRendererWithSAO", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73178,7 +73162,7 @@ } }, { - "__docId__": 3799, + "__docId__": 3790, "kind": "get", "name": "colorQualityRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73197,7 +73181,7 @@ } }, { - "__docId__": 3801, + "__docId__": 3792, "kind": "get", "name": "colorQualityRendererWithSAO", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73216,7 +73200,7 @@ } }, { - "__docId__": 3803, + "__docId__": 3794, "kind": "get", "name": "silhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73235,7 +73219,7 @@ } }, { - "__docId__": 3805, + "__docId__": 3796, "kind": "get", "name": "depthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73254,7 +73238,7 @@ } }, { - "__docId__": 3807, + "__docId__": 3798, "kind": "get", "name": "normalsRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73273,7 +73257,7 @@ } }, { - "__docId__": 3809, + "__docId__": 3800, "kind": "get", "name": "edgesRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73292,7 +73276,7 @@ } }, { - "__docId__": 3811, + "__docId__": 3802, "kind": "get", "name": "edgesColorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73311,7 +73295,7 @@ } }, { - "__docId__": 3813, + "__docId__": 3804, "kind": "get", "name": "pickMeshRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73330,7 +73314,7 @@ } }, { - "__docId__": 3815, + "__docId__": 3806, "kind": "get", "name": "pickNormalsRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73349,7 +73333,7 @@ } }, { - "__docId__": 3817, + "__docId__": 3808, "kind": "get", "name": "pickDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73368,7 +73352,7 @@ } }, { - "__docId__": 3819, + "__docId__": 3810, "kind": "get", "name": "occlusionRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73387,7 +73371,7 @@ } }, { - "__docId__": 3821, + "__docId__": 3812, "kind": "get", "name": "shadowRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73406,7 +73390,7 @@ } }, { - "__docId__": 3823, + "__docId__": 3814, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js~TrianglesInstancingRenderers", @@ -73423,7 +73407,7 @@ "return": null }, { - "__docId__": 3824, + "__docId__": 3815, "kind": "variable", "name": "cachedRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js", @@ -73444,7 +73428,7 @@ "ignore": true }, { - "__docId__": 3825, + "__docId__": 3816, "kind": "function", "name": "getInstancingRenderers", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js", @@ -73474,10 +73458,10 @@ } }, { - "__docId__": 3826, + "__docId__": 3817, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js", - "content": "import {Program} from \"../../../../../webgl/Program.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../../math/rtcCoords.js\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec4 = math.vec4();\nconst tempVec3a = math.vec3();\n\nconst TEXTURE_DECODE_FUNCS = {\n \"linear\": \"linearToLinear\",\n \"sRGB\": \"sRGBToLinear\",\n \"gamma\": \"gammaToLinear\"\n};\n\n/**\n * @private\n */\nclass TrianglesInstancingColorQualityRenderer {\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.gammaOutput, scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = this._scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aModelNormalMatrixCol0.bindArrayBuffer(state.modelNormalMatrixCol0Buf);\n this._aModelNormalMatrixCol1.bindArrayBuffer(state.modelNormalMatrixCol1Buf);\n this._aModelNormalMatrixCol2.bindArrayBuffer(state.modelNormalMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n this._aMetallicRoughness.bindArrayBuffer(state.metallicRoughnessBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aMetallicRoughness.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aMetallicRoughness.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\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 return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uWorldNormalMatrix = program.getLocation(\"worldNormalMatrix\");\n\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uGammaFactor = program.getLocation(\"gammaFactor\");\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 (var 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.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._aPosition = program.getAttribute(\"position\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aColor = program.getAttribute(\"color\");\n this._aMetallicRoughness = program.getAttribute(\"metallicRoughness\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aOffset = program.getAttribute(\"offset\");\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 this._uOcclusionTexture = \"uOcclusionTexture\";\n this._uSAOParams = program.getLocation(\"uSAOParams\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(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 lights = lightsState.lights;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (this._uLightAmbient) {\n const ambientColor = scene._lightsState.getAmbientColor();\n gl.uniform4f(this._uLightAmbient, ambientColor[0], ambientColor[1], ambientColor[2], 1.0);\n }\n\n for (let i = 0, len = lights.length; i < len; i++) {\n const light = lights[i];\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 (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 (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\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 sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n const src = [];\n\n src.push(\"// Instancing geometry quality drawing vertex shader\");\n\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\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec2 normal;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec2 metallicRoughness;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"attribute vec4 modelNormalMatrixCol0;\");\n src.push(\"attribute vec4 modelNormalMatrixCol1;\");\n src.push(\"attribute vec4 modelNormalMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 worldNormalMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\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 src.push(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"varying vec4 vColor;\");\n src.push(\"varying vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n if (clippingCaps) {\n src.push(\"varying vec4 vClipPosition;\");\n }\n }\n\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\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 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(\"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 }\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\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(\"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.sectionPlanes.length > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n const src = [];\n\n src.push(\"// Instancing geometry quality drawing 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) {\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\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 unpackRGBAToDepth( 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(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n if (clippingCaps) {\n src.push(\"varying vec4 vClipPosition;\");\n }\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"varying vec4 vColor;\");\n src.push(\"varying vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n\n src.push(\"uniform mat4 viewMatrix;\");\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 // 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] + \"(textureCube(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] + \"(textureCube(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(\"void main(void) {\");\n\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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\" gl_FragColor=vec4(1.0, 0.0, 0.0, 1.0);\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = 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 alpha = float(vColor.a) / 255.0;\");\n\n src.push(\"vec3 diffuseColor = 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(\"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 src.push(\"geometry.position = vViewPosition.xyz;\");\n src.push(\"geometry.viewNormal = -vViewNormal;\");\n src.push(\"geometry.viewEyeDir = normalize(vViewPosition.xyz);\");\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 outgoingLight = (lightAmbient.rgb * lightAmbient.a * rgb) + (reflectedLight.diffuse) + (reflectedLight.specular);\");\n\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, unpackRGBAToDepth(texture2D(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" fragColor = vec4(outgoingLight.rgb * ambient, alpha);\");\n } else {\n src.push(\" fragColor = vec4(outgoingLight.rgb, alpha);\");\n }\n\n if (gammaOutput) {\n src.push(\"fragColor = linearToGamma(fragColor, gammaFactor);\");\n }\n\n src.push(\"gl_FragColor = fragColor;\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\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\nexport {TrianglesInstancingColorQualityRenderer};", + "content": "import {Program} from \"../../../../../webgl/Program.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../../math/rtcCoords.js\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec4 = math.vec4();\nconst tempVec3a = math.vec3();\n\nconst TEXTURE_DECODE_FUNCS = {\n \"linear\": \"linearToLinear\",\n \"sRGB\": \"sRGBToLinear\",\n \"gamma\": \"gammaToLinear\"\n};\n\n/**\n * @private\n */\nclass TrianglesInstancingColorQualityRenderer {\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.gammaOutput, scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = this._scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aModelNormalMatrixCol0.bindArrayBuffer(state.modelNormalMatrixCol0Buf);\n this._aModelNormalMatrixCol1.bindArrayBuffer(state.modelNormalMatrixCol1Buf);\n this._aModelNormalMatrixCol2.bindArrayBuffer(state.modelNormalMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n this._aMetallicRoughness.bindArrayBuffer(state.metallicRoughnessBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aMetallicRoughness.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aMetallicRoughness.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\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 return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uWorldNormalMatrix = program.getLocation(\"worldNormalMatrix\");\n\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uGammaFactor = program.getLocation(\"gammaFactor\");\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 (var 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.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._aPosition = program.getAttribute(\"position\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aColor = program.getAttribute(\"color\");\n this._aMetallicRoughness = program.getAttribute(\"metallicRoughness\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aOffset = program.getAttribute(\"offset\");\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 this._uOcclusionTexture = \"uOcclusionTexture\";\n this._uSAOParams = program.getLocation(\"uSAOParams\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(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 lights = lightsState.lights;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (this._uLightAmbient) {\n const ambientColor = scene._lightsState.getAmbientColor();\n gl.uniform4f(this._uLightAmbient, ambientColor[0], ambientColor[1], ambientColor[2], 1.0);\n }\n\n for (let i = 0, len = lights.length; i < len; i++) {\n const light = lights[i];\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 (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 (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\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 sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n const src = [];\n\n src.push(\"// Instancing geometry quality drawing vertex shader\");\n\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\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec2 normal;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec2 metallicRoughness;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"attribute vec4 modelNormalMatrixCol0;\");\n src.push(\"attribute vec4 modelNormalMatrixCol1;\");\n src.push(\"attribute vec4 modelNormalMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 worldNormalMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\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 src.push(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"varying vec4 vColor;\");\n src.push(\"varying vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n if (clippingCaps) {\n src.push(\"varying vec4 vClipPosition;\");\n }\n }\n\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\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 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 = vec4(viewNormalMatrix * worldNormal).xyz;\");\n\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 }\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\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(\"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.sectionPlanes.length > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n const src = [];\n\n src.push(\"// Instancing geometry quality drawing 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) {\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\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 unpackRGBAToDepth( 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(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n if (clippingCaps) {\n src.push(\"varying vec4 vClipPosition;\");\n }\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"varying vec4 vColor;\");\n src.push(\"varying vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n\n src.push(\"uniform mat4 viewMatrix;\");\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 // 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] + \"(textureCube(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] + \"(textureCube(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(\"void main(void) {\");\n\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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\" gl_FragColor=vec4(1.0, 0.0, 0.0, 1.0);\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = 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 alpha = float(vColor.a) / 255.0;\");\n\n src.push(\"vec3 diffuseColor = 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(\"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 src.push(\"geometry.position = vViewPosition.xyz;\");\n src.push(\"geometry.viewNormal = -normalize(vViewNormal);\");\n src.push(\"geometry.viewEyeDir = normalize(vViewPosition.xyz);\");\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 outgoingLight = (lightAmbient.rgb * lightAmbient.a * rgb) + (reflectedLight.diffuse) + (reflectedLight.specular);\");\n\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, unpackRGBAToDepth(texture2D(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" fragColor = vec4(outgoingLight.rgb * ambient, alpha);\");\n } else {\n src.push(\" fragColor = vec4(outgoingLight.rgb, alpha);\");\n }\n\n if (gammaOutput) {\n src.push(\"fragColor = linearToGamma(fragColor, gammaFactor);\");\n }\n\n src.push(\"gl_FragColor = fragColor;\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\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\nexport {TrianglesInstancingColorQualityRenderer};", "static": true, "longname": "/home/lindsay/xeolabs/xeokit/xeokit-nov-18/xeokit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js", "access": "public", @@ -73485,7 +73469,7 @@ "lineNumber": 1 }, { - "__docId__": 3827, + "__docId__": 3818, "kind": "variable", "name": "tempVec4", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js", @@ -73506,7 +73490,7 @@ "ignore": true }, { - "__docId__": 3828, + "__docId__": 3819, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js", @@ -73527,7 +73511,7 @@ "ignore": true }, { - "__docId__": 3829, + "__docId__": 3820, "kind": "variable", "name": "TEXTURE_DECODE_FUNCS", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js", @@ -73548,7 +73532,7 @@ "ignore": true }, { - "__docId__": 3830, + "__docId__": 3821, "kind": "class", "name": "TrianglesInstancingColorQualityRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js", @@ -73564,7 +73548,7 @@ "ignore": true }, { - "__docId__": 3831, + "__docId__": 3822, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73578,7 +73562,7 @@ "undocument": true }, { - "__docId__": 3832, + "__docId__": 3823, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73596,7 +73580,7 @@ } }, { - "__docId__": 3833, + "__docId__": 3824, "kind": "member", "name": "_withSAO", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73614,7 +73598,7 @@ } }, { - "__docId__": 3834, + "__docId__": 3825, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73632,7 +73616,7 @@ } }, { - "__docId__": 3835, + "__docId__": 3826, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73652,7 +73636,7 @@ } }, { - "__docId__": 3836, + "__docId__": 3827, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73673,7 +73657,7 @@ } }, { - "__docId__": 3837, + "__docId__": 3828, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73708,7 +73692,7 @@ "return": null }, { - "__docId__": 3838, + "__docId__": 3829, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73725,7 +73709,7 @@ "return": null }, { - "__docId__": 3839, + "__docId__": 3830, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73743,7 +73727,7 @@ } }, { - "__docId__": 3840, + "__docId__": 3831, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73760,7 +73744,7 @@ } }, { - "__docId__": 3841, + "__docId__": 3832, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73778,7 +73762,7 @@ } }, { - "__docId__": 3842, + "__docId__": 3833, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73796,7 +73780,7 @@ } }, { - "__docId__": 3843, + "__docId__": 3834, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73814,7 +73798,7 @@ } }, { - "__docId__": 3844, + "__docId__": 3835, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73832,7 +73816,7 @@ } }, { - "__docId__": 3845, + "__docId__": 3836, "kind": "member", "name": "_uWorldNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73850,7 +73834,7 @@ } }, { - "__docId__": 3846, + "__docId__": 3837, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73868,7 +73852,7 @@ } }, { - "__docId__": 3847, + "__docId__": 3838, "kind": "member", "name": "_uViewNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73886,7 +73870,7 @@ } }, { - "__docId__": 3848, + "__docId__": 3839, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73904,7 +73888,7 @@ } }, { - "__docId__": 3849, + "__docId__": 3840, "kind": "member", "name": "_uGammaFactor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73922,7 +73906,7 @@ } }, { - "__docId__": 3850, + "__docId__": 3841, "kind": "member", "name": "_uLightAmbient", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73940,7 +73924,7 @@ } }, { - "__docId__": 3851, + "__docId__": 3842, "kind": "member", "name": "_uLightColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73958,7 +73942,7 @@ } }, { - "__docId__": 3852, + "__docId__": 3843, "kind": "member", "name": "_uLightDir", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73976,7 +73960,7 @@ } }, { - "__docId__": 3853, + "__docId__": 3844, "kind": "member", "name": "_uLightPos", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -73994,7 +73978,7 @@ } }, { - "__docId__": 3854, + "__docId__": 3845, "kind": "member", "name": "_uLightAttenuation", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74012,7 +73996,7 @@ } }, { - "__docId__": 3855, + "__docId__": 3846, "kind": "member", "name": "_uReflectionMap", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74030,7 +74014,7 @@ } }, { - "__docId__": 3856, + "__docId__": 3847, "kind": "member", "name": "_uLightMap", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74048,7 +74032,7 @@ } }, { - "__docId__": 3857, + "__docId__": 3848, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74066,7 +74050,7 @@ } }, { - "__docId__": 3858, + "__docId__": 3849, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74084,7 +74068,7 @@ } }, { - "__docId__": 3859, + "__docId__": 3850, "kind": "member", "name": "_aNormal", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74102,7 +74086,7 @@ } }, { - "__docId__": 3860, + "__docId__": 3851, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74120,7 +74104,7 @@ } }, { - "__docId__": 3861, + "__docId__": 3852, "kind": "member", "name": "_aMetallicRoughness", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74138,7 +74122,7 @@ } }, { - "__docId__": 3862, + "__docId__": 3853, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74156,7 +74140,7 @@ } }, { - "__docId__": 3863, + "__docId__": 3854, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74174,7 +74158,7 @@ } }, { - "__docId__": 3864, + "__docId__": 3855, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74192,7 +74176,7 @@ } }, { - "__docId__": 3865, + "__docId__": 3856, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74210,7 +74194,7 @@ } }, { - "__docId__": 3866, + "__docId__": 3857, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74228,7 +74212,7 @@ } }, { - "__docId__": 3867, + "__docId__": 3858, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74246,7 +74230,7 @@ } }, { - "__docId__": 3868, + "__docId__": 3859, "kind": "member", "name": "_aModelNormalMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74264,7 +74248,7 @@ } }, { - "__docId__": 3869, + "__docId__": 3860, "kind": "member", "name": "_aModelNormalMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74282,7 +74266,7 @@ } }, { - "__docId__": 3870, + "__docId__": 3861, "kind": "member", "name": "_aModelNormalMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74300,7 +74284,7 @@ } }, { - "__docId__": 3871, + "__docId__": 3862, "kind": "member", "name": "_uOcclusionTexture", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74318,7 +74302,7 @@ } }, { - "__docId__": 3872, + "__docId__": 3863, "kind": "member", "name": "_uSAOParams", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74336,7 +74320,7 @@ } }, { - "__docId__": 3873, + "__docId__": 3864, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74354,7 +74338,7 @@ } }, { - "__docId__": 3874, + "__docId__": 3865, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74378,7 +74362,7 @@ "return": null }, { - "__docId__": 3875, + "__docId__": 3866, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74399,7 +74383,7 @@ } }, { - "__docId__": 3876, + "__docId__": 3867, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74420,7 +74404,7 @@ } }, { - "__docId__": 3877, + "__docId__": 3868, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74441,7 +74425,7 @@ } }, { - "__docId__": 3878, + "__docId__": 3869, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74457,7 +74441,7 @@ "return": null }, { - "__docId__": 3880, + "__docId__": 3871, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js~TrianglesInstancingColorQualityRenderer", @@ -74473,7 +74457,7 @@ "return": null }, { - "__docId__": 3882, + "__docId__": 3873, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js", "content": "import {Program} from \"../../../../../webgl/Program.js\";\nimport {math} from \"../../../../../math/math.js\";\nimport {createRTCViewMat, getPlaneRTCPos} from \"../../../../../math/rtcCoords.js\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec4 = math.vec4();\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingColorRenderer {\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, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aModelNormalMatrixCol0.bindArrayBuffer(state.modelNormalMatrixCol0Buf);\n this._aModelNormalMatrixCol1.bindArrayBuffer(state.modelNormalMatrixCol1Buf);\n this._aModelNormalMatrixCol2.bindArrayBuffer(state.modelNormalMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\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 return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uWorldNormalMatrix = program.getLocation(\"worldNormalMatrix\");\n\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\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._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._aPosition = program.getAttribute(\"position\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aOffset = program.getAttribute(\"offset\");\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 this._uOcclusionTexture = \"uOcclusionTexture\";\n this._uSAOParams = program.getLocation(\"uSAOParams\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n const lights = lightsState.lights;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (this._uLightAmbient) {\n const ambientColor = scene._lightsState.getAmbientColor();\n gl.uniform4f(this._uLightAmbient, ambientColor[0], ambientColor[1], ambientColor[2], 1.0);\n }\n\n for (let i = 0, len = lights.length; i < len; i++) {\n const light = lights[i];\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 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, 0);\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.sectionPlanes.length > 0;\n let i;\n let len;\n let light;\n const src = [];\n\n src.push(\"// Instancing geometry drawing 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\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec2 normal;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"attribute vec4 modelNormalMatrixCol0;\");\n src.push(\"attribute vec4 modelNormalMatrixCol1;\");\n src.push(\"attribute vec4 modelNormalMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 worldNormalMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\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(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\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 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 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 }\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\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 let i;\n let len;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry drawing fragment 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(\"#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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying 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(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n\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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = 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(texture2D(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" gl_FragColor = vec4(vColor.rgb * ambient, 1.0);\");\n } else {\n src.push(\" gl_FragColor = vColor;\");\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\nexport {TrianglesInstancingColorRenderer};", @@ -74484,7 +74468,7 @@ "lineNumber": 1 }, { - "__docId__": 3883, + "__docId__": 3874, "kind": "variable", "name": "tempVec4", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js", @@ -74505,7 +74489,7 @@ "ignore": true }, { - "__docId__": 3884, + "__docId__": 3875, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js", @@ -74526,7 +74510,7 @@ "ignore": true }, { - "__docId__": 3885, + "__docId__": 3876, "kind": "class", "name": "TrianglesInstancingColorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js", @@ -74542,7 +74526,7 @@ "ignore": true }, { - "__docId__": 3886, + "__docId__": 3877, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74556,7 +74540,7 @@ "undocument": true }, { - "__docId__": 3887, + "__docId__": 3878, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74574,7 +74558,7 @@ } }, { - "__docId__": 3888, + "__docId__": 3879, "kind": "member", "name": "_withSAO", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74592,7 +74576,7 @@ } }, { - "__docId__": 3889, + "__docId__": 3880, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74610,7 +74594,7 @@ } }, { - "__docId__": 3890, + "__docId__": 3881, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74630,7 +74614,7 @@ } }, { - "__docId__": 3891, + "__docId__": 3882, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74651,7 +74635,7 @@ } }, { - "__docId__": 3892, + "__docId__": 3883, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74686,7 +74670,7 @@ "return": null }, { - "__docId__": 3893, + "__docId__": 3884, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74703,7 +74687,7 @@ "return": null }, { - "__docId__": 3894, + "__docId__": 3885, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74721,7 +74705,7 @@ } }, { - "__docId__": 3895, + "__docId__": 3886, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74738,7 +74722,7 @@ } }, { - "__docId__": 3896, + "__docId__": 3887, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74756,7 +74740,7 @@ } }, { - "__docId__": 3897, + "__docId__": 3888, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74774,7 +74758,7 @@ } }, { - "__docId__": 3898, + "__docId__": 3889, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74792,7 +74776,7 @@ } }, { - "__docId__": 3899, + "__docId__": 3890, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74810,7 +74794,7 @@ } }, { - "__docId__": 3900, + "__docId__": 3891, "kind": "member", "name": "_uWorldNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74828,7 +74812,7 @@ } }, { - "__docId__": 3901, + "__docId__": 3892, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74846,7 +74830,7 @@ } }, { - "__docId__": 3902, + "__docId__": 3893, "kind": "member", "name": "_uViewNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74864,7 +74848,7 @@ } }, { - "__docId__": 3903, + "__docId__": 3894, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74882,7 +74866,7 @@ } }, { - "__docId__": 3904, + "__docId__": 3895, "kind": "member", "name": "_uLightAmbient", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74900,7 +74884,7 @@ } }, { - "__docId__": 3905, + "__docId__": 3896, "kind": "member", "name": "_uLightColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74918,7 +74902,7 @@ } }, { - "__docId__": 3906, + "__docId__": 3897, "kind": "member", "name": "_uLightDir", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74936,7 +74920,7 @@ } }, { - "__docId__": 3907, + "__docId__": 3898, "kind": "member", "name": "_uLightPos", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74954,7 +74938,7 @@ } }, { - "__docId__": 3908, + "__docId__": 3899, "kind": "member", "name": "_uLightAttenuation", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74972,7 +74956,7 @@ } }, { - "__docId__": 3909, + "__docId__": 3900, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -74990,7 +74974,7 @@ } }, { - "__docId__": 3910, + "__docId__": 3901, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75008,7 +74992,7 @@ } }, { - "__docId__": 3911, + "__docId__": 3902, "kind": "member", "name": "_aNormal", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75026,7 +75010,7 @@ } }, { - "__docId__": 3912, + "__docId__": 3903, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75044,7 +75028,7 @@ } }, { - "__docId__": 3913, + "__docId__": 3904, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75062,7 +75046,7 @@ } }, { - "__docId__": 3914, + "__docId__": 3905, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75080,7 +75064,7 @@ } }, { - "__docId__": 3915, + "__docId__": 3906, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75098,7 +75082,7 @@ } }, { - "__docId__": 3916, + "__docId__": 3907, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75116,7 +75100,7 @@ } }, { - "__docId__": 3917, + "__docId__": 3908, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75134,7 +75118,7 @@ } }, { - "__docId__": 3918, + "__docId__": 3909, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75152,7 +75136,7 @@ } }, { - "__docId__": 3919, + "__docId__": 3910, "kind": "member", "name": "_aModelNormalMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75170,7 +75154,7 @@ } }, { - "__docId__": 3920, + "__docId__": 3911, "kind": "member", "name": "_aModelNormalMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75188,7 +75172,7 @@ } }, { - "__docId__": 3921, + "__docId__": 3912, "kind": "member", "name": "_aModelNormalMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75206,7 +75190,7 @@ } }, { - "__docId__": 3922, + "__docId__": 3913, "kind": "member", "name": "_uOcclusionTexture", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75224,7 +75208,7 @@ } }, { - "__docId__": 3923, + "__docId__": 3914, "kind": "member", "name": "_uSAOParams", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75242,7 +75226,7 @@ } }, { - "__docId__": 3924, + "__docId__": 3915, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75260,7 +75244,7 @@ } }, { - "__docId__": 3925, + "__docId__": 3916, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75284,7 +75268,7 @@ "return": null }, { - "__docId__": 3926, + "__docId__": 3917, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75305,7 +75289,7 @@ } }, { - "__docId__": 3927, + "__docId__": 3918, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75326,7 +75310,7 @@ } }, { - "__docId__": 3928, + "__docId__": 3919, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75347,7 +75331,7 @@ } }, { - "__docId__": 3929, + "__docId__": 3920, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75363,7 +75347,7 @@ "return": null }, { - "__docId__": 3931, + "__docId__": 3922, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js~TrianglesInstancingColorRenderer", @@ -75379,7 +75363,7 @@ "return": null }, { - "__docId__": 3933, + "__docId__": 3924, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.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();\n\n/**\n * @private\n */\nclass TrianglesInstancingDepthRenderer {\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, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\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.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry depth drawing 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 vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\");\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\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);\"); // 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(\"vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry depth drawing fragment 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(\"#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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"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 (i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\" gl_FragColor = packDepthToRGBA( gl_FragCoord.z); \"); // Must be linear depth\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\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\nexport {TrianglesInstancingDepthRenderer};", @@ -75390,7 +75374,7 @@ "lineNumber": 1 }, { - "__docId__": 3934, + "__docId__": 3925, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js", @@ -75411,7 +75395,7 @@ "ignore": true }, { - "__docId__": 3935, + "__docId__": 3926, "kind": "class", "name": "TrianglesInstancingDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js", @@ -75427,7 +75411,7 @@ "ignore": true }, { - "__docId__": 3936, + "__docId__": 3927, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75441,7 +75425,7 @@ "undocument": true }, { - "__docId__": 3937, + "__docId__": 3928, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75459,7 +75443,7 @@ } }, { - "__docId__": 3938, + "__docId__": 3929, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75477,7 +75461,7 @@ } }, { - "__docId__": 3939, + "__docId__": 3930, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75497,7 +75481,7 @@ } }, { - "__docId__": 3940, + "__docId__": 3931, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75518,7 +75502,7 @@ } }, { - "__docId__": 3941, + "__docId__": 3932, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75553,7 +75537,7 @@ "return": null }, { - "__docId__": 3942, + "__docId__": 3933, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75570,7 +75554,7 @@ "return": null }, { - "__docId__": 3943, + "__docId__": 3934, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75588,7 +75572,7 @@ } }, { - "__docId__": 3944, + "__docId__": 3935, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75605,7 +75589,7 @@ } }, { - "__docId__": 3945, + "__docId__": 3936, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75623,7 +75607,7 @@ } }, { - "__docId__": 3946, + "__docId__": 3937, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75641,7 +75625,7 @@ } }, { - "__docId__": 3947, + "__docId__": 3938, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75659,7 +75643,7 @@ } }, { - "__docId__": 3948, + "__docId__": 3939, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75677,7 +75661,7 @@ } }, { - "__docId__": 3949, + "__docId__": 3940, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75695,7 +75679,7 @@ } }, { - "__docId__": 3950, + "__docId__": 3941, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75713,7 +75697,7 @@ } }, { - "__docId__": 3951, + "__docId__": 3942, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75731,7 +75715,7 @@ } }, { - "__docId__": 3952, + "__docId__": 3943, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75749,7 +75733,7 @@ } }, { - "__docId__": 3953, + "__docId__": 3944, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75767,7 +75751,7 @@ } }, { - "__docId__": 3954, + "__docId__": 3945, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75785,7 +75769,7 @@ } }, { - "__docId__": 3955, + "__docId__": 3946, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75803,7 +75787,7 @@ } }, { - "__docId__": 3956, + "__docId__": 3947, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75821,7 +75805,7 @@ } }, { - "__docId__": 3957, + "__docId__": 3948, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75839,7 +75823,7 @@ } }, { - "__docId__": 3958, + "__docId__": 3949, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75857,7 +75841,7 @@ } }, { - "__docId__": 3959, + "__docId__": 3950, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75875,7 +75859,7 @@ } }, { - "__docId__": 3960, + "__docId__": 3951, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75892,7 +75876,7 @@ "return": null }, { - "__docId__": 3961, + "__docId__": 3952, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75913,7 +75897,7 @@ } }, { - "__docId__": 3962, + "__docId__": 3953, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75934,7 +75918,7 @@ } }, { - "__docId__": 3963, + "__docId__": 3954, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75955,7 +75939,7 @@ } }, { - "__docId__": 3964, + "__docId__": 3955, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75971,7 +75955,7 @@ "return": null }, { - "__docId__": 3966, + "__docId__": 3957, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js~TrianglesInstancingDepthRenderer", @@ -75987,7 +75971,7 @@ "return": null }, { - "__docId__": 3968, + "__docId__": 3959, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.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\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingEdgesColorRenderer {\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, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.edgeIndicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0); // TODO: Is this needed\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n\n if (this._aFlags) {\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n }\n\n if (this._aFlags2) {\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n const clips = 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\n this._aPosition = program.getAttribute(\"position\");\n this._aColor = program.getAttribute(\"color\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles instancing edges 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 src.push(\"attribute vec4 color;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.z = NOT_RENDERED | EDGES_COLOR_OPAQUE | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n // renderPass = EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n\n src.push(`if (int(flags.z) != 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(\"vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry edges drawing fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying vec4 vColor;\");\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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = 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\nexport {TrianglesInstancingEdgesColorRenderer};", @@ -75998,7 +75982,7 @@ "lineNumber": 1 }, { - "__docId__": 3969, + "__docId__": 3960, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js", @@ -76019,7 +76003,7 @@ "ignore": true }, { - "__docId__": 3970, + "__docId__": 3961, "kind": "class", "name": "TrianglesInstancingEdgesColorRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js", @@ -76035,7 +76019,7 @@ "ignore": true }, { - "__docId__": 3971, + "__docId__": 3962, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76049,7 +76033,7 @@ "undocument": true }, { - "__docId__": 3972, + "__docId__": 3963, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76067,7 +76051,7 @@ } }, { - "__docId__": 3973, + "__docId__": 3964, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76085,7 +76069,7 @@ } }, { - "__docId__": 3974, + "__docId__": 3965, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76105,7 +76089,7 @@ } }, { - "__docId__": 3975, + "__docId__": 3966, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76126,7 +76110,7 @@ } }, { - "__docId__": 3976, + "__docId__": 3967, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76161,7 +76145,7 @@ "return": null }, { - "__docId__": 3977, + "__docId__": 3968, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76178,7 +76162,7 @@ "return": null }, { - "__docId__": 3978, + "__docId__": 3969, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76196,7 +76180,7 @@ } }, { - "__docId__": 3979, + "__docId__": 3970, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76213,7 +76197,7 @@ } }, { - "__docId__": 3980, + "__docId__": 3971, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76231,7 +76215,7 @@ } }, { - "__docId__": 3981, + "__docId__": 3972, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76249,7 +76233,7 @@ } }, { - "__docId__": 3982, + "__docId__": 3973, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76267,7 +76251,7 @@ } }, { - "__docId__": 3983, + "__docId__": 3974, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76285,7 +76269,7 @@ } }, { - "__docId__": 3984, + "__docId__": 3975, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76303,7 +76287,7 @@ } }, { - "__docId__": 3985, + "__docId__": 3976, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76321,7 +76305,7 @@ } }, { - "__docId__": 3986, + "__docId__": 3977, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76339,7 +76323,7 @@ } }, { - "__docId__": 3987, + "__docId__": 3978, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76357,7 +76341,7 @@ } }, { - "__docId__": 3988, + "__docId__": 3979, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76375,7 +76359,7 @@ } }, { - "__docId__": 3989, + "__docId__": 3980, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76393,7 +76377,7 @@ } }, { - "__docId__": 3990, + "__docId__": 3981, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76411,7 +76395,7 @@ } }, { - "__docId__": 3991, + "__docId__": 3982, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76429,7 +76413,7 @@ } }, { - "__docId__": 3992, + "__docId__": 3983, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76447,7 +76431,7 @@ } }, { - "__docId__": 3993, + "__docId__": 3984, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76465,7 +76449,7 @@ } }, { - "__docId__": 3994, + "__docId__": 3985, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76483,7 +76467,7 @@ } }, { - "__docId__": 3995, + "__docId__": 3986, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76501,7 +76485,7 @@ } }, { - "__docId__": 3996, + "__docId__": 3987, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76518,7 +76502,7 @@ "return": null }, { - "__docId__": 3997, + "__docId__": 3988, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76539,7 +76523,7 @@ } }, { - "__docId__": 3998, + "__docId__": 3989, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76560,7 +76544,7 @@ } }, { - "__docId__": 3999, + "__docId__": 3990, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76581,7 +76565,7 @@ } }, { - "__docId__": 4000, + "__docId__": 3991, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76597,7 +76581,7 @@ "return": null }, { - "__docId__": 4002, + "__docId__": 3993, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js~TrianglesInstancingEdgesColorRenderer", @@ -76613,7 +76597,7 @@ "return": null }, { - "__docId__": 4004, + "__docId__": 3995, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.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\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec3a = math.vec3();\nconst defaultColor = new Float32Array([0,0,0,1]);\n\n/**\n * @private\n */\nclass TrianglesInstancingEdgesRenderer {\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, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\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 gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.edgeIndicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0); // TODO: Is this needed\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n\n if (this._aFlags) {\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n }\n\n if (this._aFlags2) {\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uColor = program.getLocation(\"color\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n const clips = 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\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles instancing edges 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(\"uniform vec4 color;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.z = NOT_RENDERED | EDGES_COLOR_OPAQUE | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n // renderPass = EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n\n src.push(`if (int(flags.z) != 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(\"vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry edges drawing fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying vec4 vColor;\");\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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = 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\nexport {TrianglesInstancingEdgesRenderer};", @@ -76624,7 +76608,7 @@ "lineNumber": 1 }, { - "__docId__": 4005, + "__docId__": 3996, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js", @@ -76645,7 +76629,7 @@ "ignore": true }, { - "__docId__": 4006, + "__docId__": 3997, "kind": "variable", "name": "defaultColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js", @@ -76666,7 +76650,7 @@ "ignore": true }, { - "__docId__": 4007, + "__docId__": 3998, "kind": "class", "name": "TrianglesInstancingEdgesRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js", @@ -76682,7 +76666,7 @@ "ignore": true }, { - "__docId__": 4008, + "__docId__": 3999, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76696,7 +76680,7 @@ "undocument": true }, { - "__docId__": 4009, + "__docId__": 4000, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76714,7 +76698,7 @@ } }, { - "__docId__": 4010, + "__docId__": 4001, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76732,7 +76716,7 @@ } }, { - "__docId__": 4011, + "__docId__": 4002, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76752,7 +76736,7 @@ } }, { - "__docId__": 4012, + "__docId__": 4003, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76773,7 +76757,7 @@ } }, { - "__docId__": 4013, + "__docId__": 4004, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76808,7 +76792,7 @@ "return": null }, { - "__docId__": 4014, + "__docId__": 4005, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76825,7 +76809,7 @@ "return": null }, { - "__docId__": 4015, + "__docId__": 4006, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76843,7 +76827,7 @@ } }, { - "__docId__": 4016, + "__docId__": 4007, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76860,7 +76844,7 @@ } }, { - "__docId__": 4017, + "__docId__": 4008, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76878,7 +76862,7 @@ } }, { - "__docId__": 4018, + "__docId__": 4009, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76896,7 +76880,7 @@ } }, { - "__docId__": 4019, + "__docId__": 4010, "kind": "member", "name": "_uColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76914,7 +76898,7 @@ } }, { - "__docId__": 4020, + "__docId__": 4011, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76932,7 +76916,7 @@ } }, { - "__docId__": 4021, + "__docId__": 4012, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76950,7 +76934,7 @@ } }, { - "__docId__": 4022, + "__docId__": 4013, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76968,7 +76952,7 @@ } }, { - "__docId__": 4023, + "__docId__": 4014, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -76986,7 +76970,7 @@ } }, { - "__docId__": 4024, + "__docId__": 4015, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77004,7 +76988,7 @@ } }, { - "__docId__": 4025, + "__docId__": 4016, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77022,7 +77006,7 @@ } }, { - "__docId__": 4026, + "__docId__": 4017, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77040,7 +77024,7 @@ } }, { - "__docId__": 4027, + "__docId__": 4018, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77058,7 +77042,7 @@ } }, { - "__docId__": 4028, + "__docId__": 4019, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77076,7 +77060,7 @@ } }, { - "__docId__": 4029, + "__docId__": 4020, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77094,7 +77078,7 @@ } }, { - "__docId__": 4030, + "__docId__": 4021, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77112,7 +77096,7 @@ } }, { - "__docId__": 4031, + "__docId__": 4022, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77130,7 +77114,7 @@ } }, { - "__docId__": 4032, + "__docId__": 4023, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77148,7 +77132,7 @@ } }, { - "__docId__": 4033, + "__docId__": 4024, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77165,7 +77149,7 @@ "return": null }, { - "__docId__": 4034, + "__docId__": 4025, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77186,7 +77170,7 @@ } }, { - "__docId__": 4035, + "__docId__": 4026, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77207,7 +77191,7 @@ } }, { - "__docId__": 4036, + "__docId__": 4027, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77228,7 +77212,7 @@ } }, { - "__docId__": 4037, + "__docId__": 4028, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77244,7 +77228,7 @@ "return": null }, { - "__docId__": 4039, + "__docId__": 4030, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js~TrianglesInstancingEdgesRenderer", @@ -77260,7 +77244,7 @@ "return": null }, { - "__docId__": 4041, + "__docId__": 4032, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.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();\n\n/**\n * @private\n */\nclass TrianglesInstancingNormalsRenderer {\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, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\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\n const clips = 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\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\n if (this._aFlags2) {\n this._aFlags2 = program.getAttribute(\"flags2\");\n }\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry normals drawing 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(\"attribute vec4 modelMatrixCol0;\");\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\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 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\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 if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying 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 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(\"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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry depth drawing fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying 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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = 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\nexport {TrianglesInstancingNormalsRenderer};", @@ -77271,7 +77255,7 @@ "lineNumber": 1 }, { - "__docId__": 4042, + "__docId__": 4033, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js", @@ -77292,7 +77276,7 @@ "ignore": true }, { - "__docId__": 4043, + "__docId__": 4034, "kind": "class", "name": "TrianglesInstancingNormalsRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js", @@ -77308,7 +77292,7 @@ "ignore": true }, { - "__docId__": 4044, + "__docId__": 4035, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77322,7 +77306,7 @@ "undocument": true }, { - "__docId__": 4045, + "__docId__": 4036, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77340,7 +77324,7 @@ } }, { - "__docId__": 4046, + "__docId__": 4037, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77358,7 +77342,7 @@ } }, { - "__docId__": 4047, + "__docId__": 4038, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77378,7 +77362,7 @@ } }, { - "__docId__": 4048, + "__docId__": 4039, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77399,7 +77383,7 @@ } }, { - "__docId__": 4049, + "__docId__": 4040, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77434,7 +77418,7 @@ "return": null }, { - "__docId__": 4050, + "__docId__": 4041, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77451,7 +77435,7 @@ "return": null }, { - "__docId__": 4051, + "__docId__": 4042, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77469,7 +77453,7 @@ } }, { - "__docId__": 4052, + "__docId__": 4043, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77486,7 +77470,7 @@ } }, { - "__docId__": 4053, + "__docId__": 4044, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77504,7 +77488,7 @@ } }, { - "__docId__": 4054, + "__docId__": 4045, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77522,7 +77506,7 @@ } }, { - "__docId__": 4055, + "__docId__": 4046, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77540,7 +77524,7 @@ } }, { - "__docId__": 4056, + "__docId__": 4047, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77558,7 +77542,7 @@ } }, { - "__docId__": 4057, + "__docId__": 4048, "kind": "member", "name": "_uWorldNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77576,7 +77560,7 @@ } }, { - "__docId__": 4058, + "__docId__": 4049, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77594,7 +77578,7 @@ } }, { - "__docId__": 4059, + "__docId__": 4050, "kind": "member", "name": "_uViewNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77612,7 +77596,7 @@ } }, { - "__docId__": 4060, + "__docId__": 4051, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77630,7 +77614,7 @@ } }, { - "__docId__": 4061, + "__docId__": 4052, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77648,7 +77632,7 @@ } }, { - "__docId__": 4062, + "__docId__": 4053, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77666,7 +77650,7 @@ } }, { - "__docId__": 4063, + "__docId__": 4054, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77684,7 +77668,7 @@ } }, { - "__docId__": 4064, + "__docId__": 4055, "kind": "member", "name": "_aNormal", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77702,7 +77686,7 @@ } }, { - "__docId__": 4065, + "__docId__": 4056, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77720,7 +77704,7 @@ } }, { - "__docId__": 4066, + "__docId__": 4057, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77738,7 +77722,7 @@ } }, { - "__docId__": 4067, + "__docId__": 4058, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77756,7 +77740,7 @@ } }, { - "__docId__": 4068, + "__docId__": 4059, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77774,7 +77758,7 @@ } }, { - "__docId__": 4069, + "__docId__": 4060, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77792,7 +77776,7 @@ } }, { - "__docId__": 4070, + "__docId__": 4061, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77810,7 +77794,7 @@ } }, { - "__docId__": 4071, + "__docId__": 4062, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77828,7 +77812,7 @@ } }, { - "__docId__": 4072, + "__docId__": 4063, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77845,7 +77829,7 @@ "return": null }, { - "__docId__": 4073, + "__docId__": 4064, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77866,7 +77850,7 @@ } }, { - "__docId__": 4074, + "__docId__": 4065, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77887,7 +77871,7 @@ } }, { - "__docId__": 4075, + "__docId__": 4066, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77908,7 +77892,7 @@ } }, { - "__docId__": 4076, + "__docId__": 4067, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77924,7 +77908,7 @@ "return": null }, { - "__docId__": 4078, + "__docId__": 4069, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js~TrianglesInstancingNormalsRenderer", @@ -77940,7 +77924,7 @@ "return": null }, { - "__docId__": 4080, + "__docId__": 4071, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.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();\n\n/**\n * @private\n */\nclass TrianglesInstancingOcclusionRenderer {\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, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n }\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n // Cleanup\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n if (this._aColor) {\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n }\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n const clips = 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\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing occlusion 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 vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\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 = 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 }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing occlusion fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\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(\"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 (let 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 src.push(\"}\");\n }\n src.push(\" gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); \"); // Occluders are blue\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\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\nexport {TrianglesInstancingOcclusionRenderer};", @@ -77951,7 +77935,7 @@ "lineNumber": 1 }, { - "__docId__": 4081, + "__docId__": 4072, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js", @@ -77972,7 +77956,7 @@ "ignore": true }, { - "__docId__": 4082, + "__docId__": 4073, "kind": "class", "name": "TrianglesInstancingOcclusionRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js", @@ -77988,7 +77972,7 @@ "ignore": true }, { - "__docId__": 4083, + "__docId__": 4074, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78002,7 +77986,7 @@ "undocument": true }, { - "__docId__": 4084, + "__docId__": 4075, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78020,7 +78004,7 @@ } }, { - "__docId__": 4085, + "__docId__": 4076, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78038,7 +78022,7 @@ } }, { - "__docId__": 4086, + "__docId__": 4077, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78058,7 +78042,7 @@ } }, { - "__docId__": 4087, + "__docId__": 4078, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78079,7 +78063,7 @@ } }, { - "__docId__": 4088, + "__docId__": 4079, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78114,7 +78098,7 @@ "return": null }, { - "__docId__": 4089, + "__docId__": 4080, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78131,7 +78115,7 @@ "return": null }, { - "__docId__": 4090, + "__docId__": 4081, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78149,7 +78133,7 @@ } }, { - "__docId__": 4091, + "__docId__": 4082, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78166,7 +78150,7 @@ } }, { - "__docId__": 4092, + "__docId__": 4083, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78184,7 +78168,7 @@ } }, { - "__docId__": 4093, + "__docId__": 4084, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78202,7 +78186,7 @@ } }, { - "__docId__": 4094, + "__docId__": 4085, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78220,7 +78204,7 @@ } }, { - "__docId__": 4095, + "__docId__": 4086, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78238,7 +78222,7 @@ } }, { - "__docId__": 4096, + "__docId__": 4087, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78256,7 +78240,7 @@ } }, { - "__docId__": 4097, + "__docId__": 4088, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78274,7 +78258,7 @@ } }, { - "__docId__": 4098, + "__docId__": 4089, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78292,7 +78276,7 @@ } }, { - "__docId__": 4099, + "__docId__": 4090, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78310,7 +78294,7 @@ } }, { - "__docId__": 4100, + "__docId__": 4091, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78328,7 +78312,7 @@ } }, { - "__docId__": 4101, + "__docId__": 4092, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78346,7 +78330,7 @@ } }, { - "__docId__": 4102, + "__docId__": 4093, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78364,7 +78348,7 @@ } }, { - "__docId__": 4103, + "__docId__": 4094, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78382,7 +78366,7 @@ } }, { - "__docId__": 4104, + "__docId__": 4095, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78400,7 +78384,7 @@ } }, { - "__docId__": 4105, + "__docId__": 4096, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78418,7 +78402,7 @@ } }, { - "__docId__": 4106, + "__docId__": 4097, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78436,7 +78420,7 @@ } }, { - "__docId__": 4107, + "__docId__": 4098, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78454,7 +78438,7 @@ } }, { - "__docId__": 4108, + "__docId__": 4099, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78471,7 +78455,7 @@ "return": null }, { - "__docId__": 4109, + "__docId__": 4100, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78492,7 +78476,7 @@ } }, { - "__docId__": 4110, + "__docId__": 4101, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78513,7 +78497,7 @@ } }, { - "__docId__": 4111, + "__docId__": 4102, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78534,7 +78518,7 @@ } }, { - "__docId__": 4112, + "__docId__": 4103, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78550,7 +78534,7 @@ "return": null }, { - "__docId__": 4114, + "__docId__": 4105, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js~TrianglesInstancingOcclusionRenderer", @@ -78566,7 +78550,7 @@ "return": null }, { - "__docId__": 4116, + "__docId__": 4107, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.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();\n\n/**\n * @private\n */\nclass TrianglesInstancingPickDepthRenderer {\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, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\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 camera = scene.camera;\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const rtcPickViewMatrix = (rtcCenter) ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcPickViewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n gl.uniform1f(this._uPickZNear, frameCtx.pickZNear);\n gl.uniform1f(this._uPickZFar, frameCtx.pickZFar);\n\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 numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n // Cleanup\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.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._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uPickZNear = program.getLocation(\"pickZNear\");\n this._uPickZFar = program.getLocation(\"pickZFar\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n this._program.bind();\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 clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Instancing geometry depth vertex 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(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\")\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\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(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(\" vFlags2 = flags2;\");\n }\n src.push(\" vViewPosition = viewPosition;\");\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry depth 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(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n src.push(\"uniform float pickZNear;\");\n src.push(\"uniform float pickZFar;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\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(\"varying 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(\"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 (let 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 src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\");\n src.push(\" gl_FragColor = 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\nexport {TrianglesInstancingPickDepthRenderer};", @@ -78577,7 +78561,7 @@ "lineNumber": 1 }, { - "__docId__": 4117, + "__docId__": 4108, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js", @@ -78598,7 +78582,7 @@ "ignore": true }, { - "__docId__": 4118, + "__docId__": 4109, "kind": "class", "name": "TrianglesInstancingPickDepthRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js", @@ -78614,7 +78598,7 @@ "ignore": true }, { - "__docId__": 4119, + "__docId__": 4110, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78628,7 +78612,7 @@ "undocument": true }, { - "__docId__": 4120, + "__docId__": 4111, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78646,7 +78630,7 @@ } }, { - "__docId__": 4121, + "__docId__": 4112, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78664,7 +78648,7 @@ } }, { - "__docId__": 4122, + "__docId__": 4113, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78684,7 +78668,7 @@ } }, { - "__docId__": 4123, + "__docId__": 4114, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78705,7 +78689,7 @@ } }, { - "__docId__": 4124, + "__docId__": 4115, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78740,7 +78724,7 @@ "return": null }, { - "__docId__": 4125, + "__docId__": 4116, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78757,7 +78741,7 @@ "return": null }, { - "__docId__": 4126, + "__docId__": 4117, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78775,7 +78759,7 @@ } }, { - "__docId__": 4127, + "__docId__": 4118, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78792,7 +78776,7 @@ } }, { - "__docId__": 4128, + "__docId__": 4119, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78810,7 +78794,7 @@ } }, { - "__docId__": 4129, + "__docId__": 4120, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78828,7 +78812,7 @@ } }, { - "__docId__": 4130, + "__docId__": 4121, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78846,7 +78830,7 @@ } }, { - "__docId__": 4131, + "__docId__": 4122, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78864,7 +78848,7 @@ } }, { - "__docId__": 4132, + "__docId__": 4123, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78882,7 +78866,7 @@ } }, { - "__docId__": 4133, + "__docId__": 4124, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78900,7 +78884,7 @@ } }, { - "__docId__": 4134, + "__docId__": 4125, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78918,7 +78902,7 @@ } }, { - "__docId__": 4135, + "__docId__": 4126, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78936,7 +78920,7 @@ } }, { - "__docId__": 4136, + "__docId__": 4127, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78954,7 +78938,7 @@ } }, { - "__docId__": 4137, + "__docId__": 4128, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78972,7 +78956,7 @@ } }, { - "__docId__": 4138, + "__docId__": 4129, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -78990,7 +78974,7 @@ } }, { - "__docId__": 4139, + "__docId__": 4130, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -79008,7 +78992,7 @@ } }, { - "__docId__": 4140, + "__docId__": 4131, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -79026,7 +79010,7 @@ } }, { - "__docId__": 4141, + "__docId__": 4132, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -79044,7 +79028,7 @@ } }, { - "__docId__": 4142, + "__docId__": 4133, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -79062,7 +79046,7 @@ } }, { - "__docId__": 4143, + "__docId__": 4134, "kind": "member", "name": "_uPickZNear", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -79080,7 +79064,7 @@ } }, { - "__docId__": 4144, + "__docId__": 4135, "kind": "member", "name": "_uPickZFar", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -79098,7 +79082,7 @@ } }, { - "__docId__": 4145, + "__docId__": 4136, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -79116,7 +79100,7 @@ } }, { - "__docId__": 4146, + "__docId__": 4137, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -79133,7 +79117,7 @@ "return": null }, { - "__docId__": 4147, + "__docId__": 4138, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -79154,7 +79138,7 @@ } }, { - "__docId__": 4148, + "__docId__": 4139, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -79175,7 +79159,7 @@ } }, { - "__docId__": 4149, + "__docId__": 4140, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -79196,7 +79180,7 @@ } }, { - "__docId__": 4150, + "__docId__": 4141, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -79212,7 +79196,7 @@ "return": null }, { - "__docId__": 4152, + "__docId__": 4143, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js~TrianglesInstancingPickDepthRenderer", @@ -79228,7 +79212,7 @@ "return": null }, { - "__docId__": 4154, + "__docId__": 4145, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.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();\n\n/**\n * @private\n */\nclass TrianglesInstancingPickMeshRenderer {\n\n constructor(scene) {\n\n this._scene = scene;\n this._hash = this._getHash();\n\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, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\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 gl.uniform1i(this._uRenderPass, renderPass);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const rtcPickViewMatrix = (rtcCenter) ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcPickViewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\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\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPickColor.bindArrayBuffer(state.pickColorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aPickColor.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n // Cleanup\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aPickColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n const clips = sectionPlanesState.sectionPlanes;\n\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\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aPickColor = program.getAttribute(\"pickColor\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n\n program.bind();\n\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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Instancing geometry picking 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 vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 pickColor;\");\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vPickColor;\");\n src.push(\"void main(void) {\");\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(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(\" vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry picking fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\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(\"varying vec4 vPickColor;\");\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 (let 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 src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = 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\nexport {TrianglesInstancingPickMeshRenderer};", @@ -79239,7 +79223,7 @@ "lineNumber": 1 }, { - "__docId__": 4155, + "__docId__": 4146, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js", @@ -79260,7 +79244,7 @@ "ignore": true }, { - "__docId__": 4156, + "__docId__": 4147, "kind": "class", "name": "TrianglesInstancingPickMeshRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js", @@ -79276,7 +79260,7 @@ "ignore": true }, { - "__docId__": 4157, + "__docId__": 4148, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79290,7 +79274,7 @@ "undocument": true }, { - "__docId__": 4158, + "__docId__": 4149, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79308,7 +79292,7 @@ } }, { - "__docId__": 4159, + "__docId__": 4150, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79326,7 +79310,7 @@ } }, { - "__docId__": 4160, + "__docId__": 4151, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79346,7 +79330,7 @@ } }, { - "__docId__": 4161, + "__docId__": 4152, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79367,7 +79351,7 @@ } }, { - "__docId__": 4162, + "__docId__": 4153, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79402,7 +79386,7 @@ "return": null }, { - "__docId__": 4163, + "__docId__": 4154, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79419,7 +79403,7 @@ "return": null }, { - "__docId__": 4164, + "__docId__": 4155, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79437,7 +79421,7 @@ } }, { - "__docId__": 4165, + "__docId__": 4156, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79454,7 +79438,7 @@ } }, { - "__docId__": 4166, + "__docId__": 4157, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79472,7 +79456,7 @@ } }, { - "__docId__": 4167, + "__docId__": 4158, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79490,7 +79474,7 @@ } }, { - "__docId__": 4168, + "__docId__": 4159, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79508,7 +79492,7 @@ } }, { - "__docId__": 4169, + "__docId__": 4160, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79526,7 +79510,7 @@ } }, { - "__docId__": 4170, + "__docId__": 4161, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79544,7 +79528,7 @@ } }, { - "__docId__": 4171, + "__docId__": 4162, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79562,7 +79546,7 @@ } }, { - "__docId__": 4172, + "__docId__": 4163, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79580,7 +79564,7 @@ } }, { - "__docId__": 4173, + "__docId__": 4164, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79598,7 +79582,7 @@ } }, { - "__docId__": 4174, + "__docId__": 4165, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79616,7 +79600,7 @@ } }, { - "__docId__": 4175, + "__docId__": 4166, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79634,7 +79618,7 @@ } }, { - "__docId__": 4176, + "__docId__": 4167, "kind": "member", "name": "_aPickColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79652,7 +79636,7 @@ } }, { - "__docId__": 4177, + "__docId__": 4168, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79670,7 +79654,7 @@ } }, { - "__docId__": 4178, + "__docId__": 4169, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79688,7 +79672,7 @@ } }, { - "__docId__": 4179, + "__docId__": 4170, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79706,7 +79690,7 @@ } }, { - "__docId__": 4180, + "__docId__": 4171, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79724,7 +79708,7 @@ } }, { - "__docId__": 4181, + "__docId__": 4172, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79742,7 +79726,7 @@ } }, { - "__docId__": 4182, + "__docId__": 4173, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79760,7 +79744,7 @@ } }, { - "__docId__": 4183, + "__docId__": 4174, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79784,7 +79768,7 @@ "return": null }, { - "__docId__": 4184, + "__docId__": 4175, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79805,7 +79789,7 @@ } }, { - "__docId__": 4185, + "__docId__": 4176, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79826,7 +79810,7 @@ } }, { - "__docId__": 4186, + "__docId__": 4177, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79847,7 +79831,7 @@ } }, { - "__docId__": 4187, + "__docId__": 4178, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79863,7 +79847,7 @@ "return": null }, { - "__docId__": 4189, + "__docId__": 4180, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js~TrianglesInstancingPickMeshRenderer", @@ -79879,7 +79863,7 @@ "return": null }, { - "__docId__": 4191, + "__docId__": 4182, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.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();\n\n/**\n * @private\n */\nclass TrianglesInstancingPickNormalsRenderer {\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, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\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 // In practice, these binds will only happen once per frame\n // because we pick normals on a single previously-picked mesh\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const rtcPickViewMatrix = (rtcCenter) ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcPickViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\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\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aModelNormalMatrixCol0.bindArrayBuffer(state.modelNormalMatrixCol0Buf);\n this._aModelNormalMatrixCol1.bindArrayBuffer(state.modelNormalMatrixCol1Buf);\n this._aModelNormalMatrixCol2.bindArrayBuffer(state.modelNormalMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\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\n this._uSectionPlanes = [];\n const clips = 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\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\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 if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing 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 vec2 normal;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"attribute vec4 modelNormalMatrixCol0;\");\n src.push(\"attribute vec4 modelNormalMatrixCol1;\");\n src.push(\"attribute vec4 modelNormalMatrixCol2;\");\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\")\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\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 if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec3 vWorldNormal;\");\n src.push(\"void main(void) {\");\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(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 }\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 }\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.sectionPlanes.length > 0;\n const src = [];\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(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\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(\"varying vec3 vWorldNormal;\");\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 < 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 src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vec4((vWorldNormal * 0.5) + 0.5, 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\nexport {TrianglesInstancingPickNormalsRenderer};", @@ -79890,7 +79874,7 @@ "lineNumber": 1 }, { - "__docId__": 4192, + "__docId__": 4183, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js", @@ -79911,7 +79895,7 @@ "ignore": true }, { - "__docId__": 4193, + "__docId__": 4184, "kind": "class", "name": "TrianglesInstancingPickNormalsRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js", @@ -79927,7 +79911,7 @@ "ignore": true }, { - "__docId__": 4194, + "__docId__": 4185, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -79941,7 +79925,7 @@ "undocument": true }, { - "__docId__": 4195, + "__docId__": 4186, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -79959,7 +79943,7 @@ } }, { - "__docId__": 4196, + "__docId__": 4187, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -79977,7 +79961,7 @@ } }, { - "__docId__": 4197, + "__docId__": 4188, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -79997,7 +79981,7 @@ } }, { - "__docId__": 4198, + "__docId__": 4189, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80018,7 +80002,7 @@ } }, { - "__docId__": 4199, + "__docId__": 4190, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80053,7 +80037,7 @@ "return": null }, { - "__docId__": 4200, + "__docId__": 4191, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80070,7 +80054,7 @@ "return": null }, { - "__docId__": 4201, + "__docId__": 4192, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80088,7 +80072,7 @@ } }, { - "__docId__": 4202, + "__docId__": 4193, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80105,7 +80089,7 @@ } }, { - "__docId__": 4203, + "__docId__": 4194, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80123,7 +80107,7 @@ } }, { - "__docId__": 4204, + "__docId__": 4195, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80141,7 +80125,7 @@ } }, { - "__docId__": 4205, + "__docId__": 4196, "kind": "member", "name": "_uPickInvisible", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80159,7 +80143,7 @@ } }, { - "__docId__": 4206, + "__docId__": 4197, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80177,7 +80161,7 @@ } }, { - "__docId__": 4207, + "__docId__": 4198, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80195,7 +80179,7 @@ } }, { - "__docId__": 4208, + "__docId__": 4199, "kind": "member", "name": "_uWorldNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80213,7 +80197,7 @@ } }, { - "__docId__": 4209, + "__docId__": 4200, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80231,7 +80215,7 @@ } }, { - "__docId__": 4210, + "__docId__": 4201, "kind": "member", "name": "_uViewNormalMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80249,7 +80233,7 @@ } }, { - "__docId__": 4211, + "__docId__": 4202, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80267,7 +80251,7 @@ } }, { - "__docId__": 4212, + "__docId__": 4203, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80285,7 +80269,7 @@ } }, { - "__docId__": 4213, + "__docId__": 4204, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80303,7 +80287,7 @@ } }, { - "__docId__": 4214, + "__docId__": 4205, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80321,7 +80305,7 @@ } }, { - "__docId__": 4215, + "__docId__": 4206, "kind": "member", "name": "_aNormal", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80339,7 +80323,7 @@ } }, { - "__docId__": 4216, + "__docId__": 4207, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80357,7 +80341,7 @@ } }, { - "__docId__": 4217, + "__docId__": 4208, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80375,7 +80359,7 @@ } }, { - "__docId__": 4218, + "__docId__": 4209, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80393,7 +80377,7 @@ } }, { - "__docId__": 4219, + "__docId__": 4210, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80411,7 +80395,7 @@ } }, { - "__docId__": 4220, + "__docId__": 4211, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80429,7 +80413,7 @@ } }, { - "__docId__": 4221, + "__docId__": 4212, "kind": "member", "name": "_aModelNormalMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80447,7 +80431,7 @@ } }, { - "__docId__": 4222, + "__docId__": 4213, "kind": "member", "name": "_aModelNormalMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80465,7 +80449,7 @@ } }, { - "__docId__": 4223, + "__docId__": 4214, "kind": "member", "name": "_aModelNormalMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80483,7 +80467,7 @@ } }, { - "__docId__": 4224, + "__docId__": 4215, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80501,7 +80485,7 @@ } }, { - "__docId__": 4225, + "__docId__": 4216, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80518,7 +80502,7 @@ "return": null }, { - "__docId__": 4226, + "__docId__": 4217, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80539,7 +80523,7 @@ } }, { - "__docId__": 4227, + "__docId__": 4218, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80560,7 +80544,7 @@ } }, { - "__docId__": 4228, + "__docId__": 4219, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80581,7 +80565,7 @@ } }, { - "__docId__": 4229, + "__docId__": 4220, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80597,7 +80581,7 @@ "return": null }, { - "__docId__": 4231, + "__docId__": 4222, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js~TrianglesInstancingPickNormalsRenderer", @@ -80613,7 +80597,7 @@ "return": null }, { - "__docId__": 4233, + "__docId__": 4224, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.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();\n\n/**\n * Renders InstancingLayer fragment depths to a shadow map.\n *\n * @private\n */\nclass TrianglesInstancingShadowRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._lastLightId = null;\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, instancingLayer) {\n const model = instancingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\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, instancingLayer);\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n // TODO: Section planes need to be set if RTC center has changed since last RTC center recorded on frameCtx\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n const rtcCenter = instancingLayer._state.rtcCenter;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uShadowViewMatrix = program.getLocation(\"shadowViewMatrix\");\n this._uShadowProjMatrix = program.getLocation(\"shadowProjMatrix\");\n this._uSectionPlanes = [];\n const clips = 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._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n }\n\n _bindProgram(frameCtx, instancingLayer) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n program.bind();\n gl.uniformMatrix4fv(this._uShadowViewMatrix, false, frameCtx.shadowViewMatrix);\n gl.uniformMatrix4fv(this._uShadowProjMatrix, false, frameCtx.shadowProjMatrix);\n this._lastLightId = null;\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 clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry shadow drawing vertex shader\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\");\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 shadowViewMatrix;\");\n src.push(\"uniform mat4 shadowProjMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"void main(void) {\");\n src.push(\"bool visible = (float(flags.x) > 0.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(\"vFlags2 = flags2;\");\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry depth drawing fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying 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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = 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\nexport {TrianglesInstancingShadowRenderer};", @@ -80624,7 +80608,7 @@ "lineNumber": 1 }, { - "__docId__": 4234, + "__docId__": 4225, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js", @@ -80645,7 +80629,7 @@ "ignore": true }, { - "__docId__": 4235, + "__docId__": 4226, "kind": "class", "name": "TrianglesInstancingShadowRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js", @@ -80661,7 +80645,7 @@ "ignore": true }, { - "__docId__": 4236, + "__docId__": 4227, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80675,7 +80659,7 @@ "undocument": true }, { - "__docId__": 4237, + "__docId__": 4228, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80693,7 +80677,7 @@ } }, { - "__docId__": 4238, + "__docId__": 4229, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80711,7 +80695,7 @@ } }, { - "__docId__": 4239, + "__docId__": 4230, "kind": "member", "name": "_lastLightId", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80729,7 +80713,7 @@ } }, { - "__docId__": 4240, + "__docId__": 4231, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80749,7 +80733,7 @@ } }, { - "__docId__": 4241, + "__docId__": 4232, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80770,7 +80754,7 @@ } }, { - "__docId__": 4242, + "__docId__": 4233, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80799,7 +80783,7 @@ "return": null }, { - "__docId__": 4243, + "__docId__": 4234, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80816,7 +80800,7 @@ "return": null }, { - "__docId__": 4244, + "__docId__": 4235, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80834,7 +80818,7 @@ } }, { - "__docId__": 4245, + "__docId__": 4236, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80851,7 +80835,7 @@ } }, { - "__docId__": 4246, + "__docId__": 4237, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80869,7 +80853,7 @@ } }, { - "__docId__": 4247, + "__docId__": 4238, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80887,7 +80871,7 @@ } }, { - "__docId__": 4248, + "__docId__": 4239, "kind": "member", "name": "_uShadowViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80905,7 +80889,7 @@ } }, { - "__docId__": 4249, + "__docId__": 4240, "kind": "member", "name": "_uShadowProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80923,7 +80907,7 @@ } }, { - "__docId__": 4250, + "__docId__": 4241, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80941,7 +80925,7 @@ } }, { - "__docId__": 4251, + "__docId__": 4242, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80959,7 +80943,7 @@ } }, { - "__docId__": 4252, + "__docId__": 4243, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80977,7 +80961,7 @@ } }, { - "__docId__": 4253, + "__docId__": 4244, "kind": "member", "name": "_aColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -80995,7 +80979,7 @@ } }, { - "__docId__": 4254, + "__docId__": 4245, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -81013,7 +80997,7 @@ } }, { - "__docId__": 4255, + "__docId__": 4246, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -81031,7 +81015,7 @@ } }, { - "__docId__": 4256, + "__docId__": 4247, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -81049,7 +81033,7 @@ } }, { - "__docId__": 4257, + "__docId__": 4248, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -81067,7 +81051,7 @@ } }, { - "__docId__": 4258, + "__docId__": 4249, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -81085,7 +81069,7 @@ } }, { - "__docId__": 4259, + "__docId__": 4250, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -81115,7 +81099,7 @@ "return": null }, { - "__docId__": 4261, + "__docId__": 4252, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -81136,7 +81120,7 @@ } }, { - "__docId__": 4262, + "__docId__": 4253, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -81157,7 +81141,7 @@ } }, { - "__docId__": 4263, + "__docId__": 4254, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -81178,7 +81162,7 @@ } }, { - "__docId__": 4264, + "__docId__": 4255, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -81194,7 +81178,7 @@ "return": null }, { - "__docId__": 4266, + "__docId__": 4257, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js~TrianglesInstancingShadowRenderer", @@ -81210,7 +81194,7 @@ "return": null }, { - "__docId__": 4268, + "__docId__": 4259, "kind": "file", "name": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.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\";\nimport {WEBGL_INFO} from \"../../../../../webglInfo.js\";\n\nconst tempVec3a = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingSilhouetteRenderer {\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, instancingLayer, renderPass) {\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 instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(instancingLayer.model.scene);\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 gl.uniform1i(this._uRenderPass, renderPass);\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, math.vec3([1, 1, 1]));\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\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 (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, 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 }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0); // TODO: Is this needed\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n if (this._aFlags2) {\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\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 this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uColor = program.getLocation(\"color\");\n this._uSectionPlanes = [];\n\n const clips = 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\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\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 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 sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Instancing fill 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\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n src.push(\"uniform vec4 color;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\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(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(\"vFlags2 = flags2;\");\n }\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 }\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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing fill fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"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 (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = 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\nexport {TrianglesInstancingSilhouetteRenderer};", @@ -81221,7 +81205,7 @@ "lineNumber": 1 }, { - "__docId__": 4269, + "__docId__": 4260, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js", @@ -81242,7 +81226,7 @@ "ignore": true }, { - "__docId__": 4270, + "__docId__": 4261, "kind": "class", "name": "TrianglesInstancingSilhouetteRenderer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js", @@ -81258,7 +81242,7 @@ "ignore": true }, { - "__docId__": 4271, + "__docId__": 4262, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81272,7 +81256,7 @@ "undocument": true }, { - "__docId__": 4272, + "__docId__": 4263, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81290,7 +81274,7 @@ } }, { - "__docId__": 4273, + "__docId__": 4264, "kind": "member", "name": "_hash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81308,7 +81292,7 @@ } }, { - "__docId__": 4274, + "__docId__": 4265, "kind": "method", "name": "getValid", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81328,7 +81312,7 @@ } }, { - "__docId__": 4275, + "__docId__": 4266, "kind": "method", "name": "_getHash", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81349,7 +81333,7 @@ } }, { - "__docId__": 4276, + "__docId__": 4267, "kind": "method", "name": "drawLayer", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81384,7 +81368,7 @@ "return": null }, { - "__docId__": 4277, + "__docId__": 4268, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81401,7 +81385,7 @@ "return": null }, { - "__docId__": 4278, + "__docId__": 4269, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81419,7 +81403,7 @@ } }, { - "__docId__": 4279, + "__docId__": 4270, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81436,7 +81420,7 @@ } }, { - "__docId__": 4280, + "__docId__": 4271, "kind": "member", "name": "_instanceExt", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81454,7 +81438,7 @@ } }, { - "__docId__": 4281, + "__docId__": 4272, "kind": "member", "name": "_uRenderPass", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81472,7 +81456,7 @@ } }, { - "__docId__": 4282, + "__docId__": 4273, "kind": "member", "name": "_uPositionsDecodeMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81490,7 +81474,7 @@ } }, { - "__docId__": 4283, + "__docId__": 4274, "kind": "member", "name": "_uWorldMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81508,7 +81492,7 @@ } }, { - "__docId__": 4284, + "__docId__": 4275, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81526,7 +81510,7 @@ } }, { - "__docId__": 4285, + "__docId__": 4276, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81544,7 +81528,7 @@ } }, { - "__docId__": 4286, + "__docId__": 4277, "kind": "member", "name": "_uColor", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81562,7 +81546,7 @@ } }, { - "__docId__": 4287, + "__docId__": 4278, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81580,7 +81564,7 @@ } }, { - "__docId__": 4288, + "__docId__": 4279, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81598,7 +81582,7 @@ } }, { - "__docId__": 4289, + "__docId__": 4280, "kind": "member", "name": "_aOffset", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81616,7 +81600,7 @@ } }, { - "__docId__": 4290, + "__docId__": 4281, "kind": "member", "name": "_aFlags", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81634,7 +81618,7 @@ } }, { - "__docId__": 4291, + "__docId__": 4282, "kind": "member", "name": "_aFlags2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81652,7 +81636,7 @@ } }, { - "__docId__": 4292, + "__docId__": 4283, "kind": "member", "name": "_aModelMatrixCol0", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81670,7 +81654,7 @@ } }, { - "__docId__": 4293, + "__docId__": 4284, "kind": "member", "name": "_aModelMatrixCol1", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81688,7 +81672,7 @@ } }, { - "__docId__": 4294, + "__docId__": 4285, "kind": "member", "name": "_aModelMatrixCol2", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81706,7 +81690,7 @@ } }, { - "__docId__": 4295, + "__docId__": 4286, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81724,7 +81708,7 @@ } }, { - "__docId__": 4296, + "__docId__": 4287, "kind": "method", "name": "_bindProgram", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81741,7 +81725,7 @@ "return": null }, { - "__docId__": 4297, + "__docId__": 4288, "kind": "method", "name": "_buildShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81762,7 +81746,7 @@ } }, { - "__docId__": 4298, + "__docId__": 4289, "kind": "method", "name": "_buildVertexShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81783,7 +81767,7 @@ } }, { - "__docId__": 4299, + "__docId__": 4290, "kind": "method", "name": "_buildFragmentShader", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81804,7 +81788,7 @@ } }, { - "__docId__": 4300, + "__docId__": 4291, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81820,7 +81804,7 @@ "return": null }, { - "__docId__": 4302, + "__docId__": 4293, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js~TrianglesInstancingSilhouetteRenderer", @@ -81836,7 +81820,7 @@ "return": null }, { - "__docId__": 4304, + "__docId__": 4295, "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 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 \"viewer/Viewer.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 * Destroys this Camera.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nexport {Camera};\n", @@ -81847,7 +81831,7 @@ "lineNumber": 1 }, { - "__docId__": 4305, + "__docId__": 4296, "kind": "variable", "name": "tempVec3", "memberof": "src/viewer/scene/camera/Camera.js", @@ -81868,7 +81852,7 @@ "ignore": true }, { - "__docId__": 4306, + "__docId__": 4297, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/camera/Camera.js", @@ -81889,7 +81873,7 @@ "ignore": true }, { - "__docId__": 4307, + "__docId__": 4298, "kind": "variable", "name": "tempVec3c", "memberof": "src/viewer/scene/camera/Camera.js", @@ -81910,7 +81894,7 @@ "ignore": true }, { - "__docId__": 4308, + "__docId__": 4299, "kind": "variable", "name": "tempVec3d", "memberof": "src/viewer/scene/camera/Camera.js", @@ -81931,7 +81915,7 @@ "ignore": true }, { - "__docId__": 4309, + "__docId__": 4300, "kind": "variable", "name": "tempVec3e", "memberof": "src/viewer/scene/camera/Camera.js", @@ -81952,7 +81936,7 @@ "ignore": true }, { - "__docId__": 4310, + "__docId__": 4301, "kind": "variable", "name": "tempVec3f", "memberof": "src/viewer/scene/camera/Camera.js", @@ -81973,7 +81957,7 @@ "ignore": true }, { - "__docId__": 4311, + "__docId__": 4302, "kind": "variable", "name": "tempMat", "memberof": "src/viewer/scene/camera/Camera.js", @@ -81994,7 +81978,7 @@ "ignore": true }, { - "__docId__": 4312, + "__docId__": 4303, "kind": "variable", "name": "tempMatb", "memberof": "src/viewer/scene/camera/Camera.js", @@ -82015,7 +81999,7 @@ "ignore": true }, { - "__docId__": 4313, + "__docId__": 4304, "kind": "variable", "name": "eyeLookVec", "memberof": "src/viewer/scene/camera/Camera.js", @@ -82036,7 +82020,7 @@ "ignore": true }, { - "__docId__": 4314, + "__docId__": 4305, "kind": "variable", "name": "eyeLookVecNorm", "memberof": "src/viewer/scene/camera/Camera.js", @@ -82057,7 +82041,7 @@ "ignore": true }, { - "__docId__": 4315, + "__docId__": 4306, "kind": "variable", "name": "eyeLookOffset", "memberof": "src/viewer/scene/camera/Camera.js", @@ -82078,7 +82062,7 @@ "ignore": true }, { - "__docId__": 4316, + "__docId__": 4307, "kind": "variable", "name": "offsetEye", "memberof": "src/viewer/scene/camera/Camera.js", @@ -82099,7 +82083,7 @@ "ignore": true }, { - "__docId__": 4317, + "__docId__": 4308, "kind": "class", "name": "Camera", "memberof": "src/viewer/scene/camera/Camera.js", @@ -82117,7 +82101,7 @@ ] }, { - "__docId__": 4318, + "__docId__": 4309, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82136,7 +82120,7 @@ } }, { - "__docId__": 4319, + "__docId__": 4310, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82156,7 +82140,7 @@ "ignore": true }, { - "__docId__": 4320, + "__docId__": 4311, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82174,7 +82158,7 @@ } }, { - "__docId__": 4321, + "__docId__": 4312, "kind": "member", "name": "_perspective", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82192,7 +82176,7 @@ } }, { - "__docId__": 4322, + "__docId__": 4313, "kind": "member", "name": "_ortho", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82210,7 +82194,7 @@ } }, { - "__docId__": 4323, + "__docId__": 4314, "kind": "member", "name": "_frustum", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82228,7 +82212,7 @@ } }, { - "__docId__": 4324, + "__docId__": 4315, "kind": "member", "name": "_customProjection", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82246,7 +82230,7 @@ } }, { - "__docId__": 4325, + "__docId__": 4316, "kind": "member", "name": "_project", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82264,7 +82248,7 @@ } }, { - "__docId__": 4326, + "__docId__": 4317, "kind": "member", "name": "_eye", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82282,7 +82266,7 @@ } }, { - "__docId__": 4327, + "__docId__": 4318, "kind": "member", "name": "_look", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82300,7 +82284,7 @@ } }, { - "__docId__": 4328, + "__docId__": 4319, "kind": "member", "name": "_up", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82318,7 +82302,7 @@ } }, { - "__docId__": 4329, + "__docId__": 4320, "kind": "member", "name": "_worldUp", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82336,7 +82320,7 @@ } }, { - "__docId__": 4330, + "__docId__": 4321, "kind": "member", "name": "_worldRight", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82354,7 +82338,7 @@ } }, { - "__docId__": 4331, + "__docId__": 4322, "kind": "member", "name": "_worldForward", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82372,7 +82356,7 @@ } }, { - "__docId__": 4340, + "__docId__": 4331, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82389,7 +82373,7 @@ "return": null }, { - "__docId__": 4341, + "__docId__": 4332, "kind": "method", "name": "orbitYaw", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82415,7 +82399,7 @@ "return": null }, { - "__docId__": 4344, + "__docId__": 4335, "kind": "method", "name": "orbitPitch", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82441,7 +82425,7 @@ "return": null }, { - "__docId__": 4347, + "__docId__": 4338, "kind": "method", "name": "yaw", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82467,7 +82451,7 @@ "return": null }, { - "__docId__": 4350, + "__docId__": 4341, "kind": "method", "name": "pitch", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82493,7 +82477,7 @@ "return": null }, { - "__docId__": 4353, + "__docId__": 4344, "kind": "method", "name": "pan", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82519,7 +82503,7 @@ "return": null }, { - "__docId__": 4356, + "__docId__": 4347, "kind": "method", "name": "zoom", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82545,7 +82529,7 @@ "return": null }, { - "__docId__": 4358, + "__docId__": 4349, "kind": "set", "name": "eye", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82574,7 +82558,7 @@ ] }, { - "__docId__": 4359, + "__docId__": 4350, "kind": "get", "name": "eye", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82595,7 +82579,7 @@ } }, { - "__docId__": 4360, + "__docId__": 4351, "kind": "set", "name": "look", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82628,7 +82612,7 @@ ] }, { - "__docId__": 4361, + "__docId__": 4352, "kind": "get", "name": "look", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82660,7 +82644,7 @@ } }, { - "__docId__": 4362, + "__docId__": 4353, "kind": "set", "name": "up", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82693,7 +82677,7 @@ ] }, { - "__docId__": 4363, + "__docId__": 4354, "kind": "get", "name": "up", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82725,7 +82709,7 @@ } }, { - "__docId__": 4364, + "__docId__": 4355, "kind": "set", "name": "deviceMatrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82750,7 +82734,7 @@ ] }, { - "__docId__": 4365, + "__docId__": 4356, "kind": "get", "name": "deviceMatrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82782,7 +82766,7 @@ } }, { - "__docId__": 4366, + "__docId__": 4357, "kind": "set", "name": "worldAxis", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82807,7 +82791,7 @@ ] }, { - "__docId__": 4367, + "__docId__": 4358, "kind": "member", "name": "_worldAxis", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82825,7 +82809,7 @@ } }, { - "__docId__": 4368, + "__docId__": 4359, "kind": "get", "name": "worldAxis", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82857,7 +82841,7 @@ } }, { - "__docId__": 4369, + "__docId__": 4360, "kind": "get", "name": "worldUp", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82889,7 +82873,7 @@ } }, { - "__docId__": 4370, + "__docId__": 4361, "kind": "get", "name": "xUp", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82921,7 +82905,7 @@ } }, { - "__docId__": 4371, + "__docId__": 4362, "kind": "get", "name": "yUp", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82953,7 +82937,7 @@ } }, { - "__docId__": 4372, + "__docId__": 4363, "kind": "get", "name": "zUp", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -82985,7 +82969,7 @@ } }, { - "__docId__": 4373, + "__docId__": 4364, "kind": "get", "name": "worldRight", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83017,7 +83001,7 @@ } }, { - "__docId__": 4374, + "__docId__": 4365, "kind": "get", "name": "worldForward", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83049,7 +83033,7 @@ } }, { - "__docId__": 4375, + "__docId__": 4366, "kind": "set", "name": "gimbalLock", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83068,7 +83052,7 @@ ] }, { - "__docId__": 4376, + "__docId__": 4367, "kind": "member", "name": "_gimbalLock", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83086,7 +83070,7 @@ } }, { - "__docId__": 4377, + "__docId__": 4368, "kind": "get", "name": "gimbalLock", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83118,7 +83102,7 @@ } }, { - "__docId__": 4378, + "__docId__": 4369, "kind": "set", "name": "constrainPitch", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83143,7 +83127,7 @@ ] }, { - "__docId__": 4379, + "__docId__": 4370, "kind": "member", "name": "_constrainPitch", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83161,7 +83145,7 @@ } }, { - "__docId__": 4380, + "__docId__": 4371, "kind": "get", "name": "eyeLookDist", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83197,7 +83181,7 @@ } }, { - "__docId__": 4381, + "__docId__": 4372, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83229,7 +83213,7 @@ } }, { - "__docId__": 4382, + "__docId__": 4373, "kind": "get", "name": "viewMatrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83261,7 +83245,7 @@ } }, { - "__docId__": 4383, + "__docId__": 4374, "kind": "get", "name": "normalMatrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83293,7 +83277,7 @@ } }, { - "__docId__": 4384, + "__docId__": 4375, "kind": "get", "name": "viewNormalMatrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83325,7 +83309,7 @@ } }, { - "__docId__": 4385, + "__docId__": 4376, "kind": "get", "name": "inverseViewMatrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83357,7 +83341,7 @@ } }, { - "__docId__": 4386, + "__docId__": 4377, "kind": "get", "name": "projMatrix", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83389,7 +83373,7 @@ } }, { - "__docId__": 4387, + "__docId__": 4378, "kind": "get", "name": "perspective", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83421,7 +83405,7 @@ } }, { - "__docId__": 4388, + "__docId__": 4379, "kind": "get", "name": "ortho", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83453,7 +83437,7 @@ } }, { - "__docId__": 4389, + "__docId__": 4380, "kind": "get", "name": "frustum", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83485,7 +83469,7 @@ } }, { - "__docId__": 4390, + "__docId__": 4381, "kind": "get", "name": "customProjection", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83517,7 +83501,7 @@ } }, { - "__docId__": 4391, + "__docId__": 4382, "kind": "set", "name": "projection", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83542,7 +83526,7 @@ ] }, { - "__docId__": 4397, + "__docId__": 4388, "kind": "member", "name": "_projectionType", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83560,7 +83544,7 @@ } }, { - "__docId__": 4398, + "__docId__": 4389, "kind": "get", "name": "projection", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83592,7 +83576,7 @@ } }, { - "__docId__": 4399, + "__docId__": 4390, "kind": "get", "name": "project", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83627,7 +83611,7 @@ } }, { - "__docId__": 4400, + "__docId__": 4391, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/camera/Camera.js~Camera", @@ -83642,7 +83626,7 @@ "return": null }, { - "__docId__": 4401, + "__docId__": 4392, "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](http://xeokit.github.io/xeokit-sdk/examples/#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 camera.ortho.scale = this._orthoScale2;\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 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", @@ -83653,7 +83637,7 @@ "lineNumber": 1 }, { - "__docId__": 4402, + "__docId__": 4393, "kind": "variable", "name": "tempVec3", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js", @@ -83674,7 +83658,7 @@ "ignore": true }, { - "__docId__": 4403, + "__docId__": 4394, "kind": "variable", "name": "newLook", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js", @@ -83695,7 +83679,7 @@ "ignore": true }, { - "__docId__": 4404, + "__docId__": 4395, "kind": "variable", "name": "newEye", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js", @@ -83716,7 +83700,7 @@ "ignore": true }, { - "__docId__": 4405, + "__docId__": 4396, "kind": "variable", "name": "newUp", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js", @@ -83737,7 +83721,7 @@ "ignore": true }, { - "__docId__": 4406, + "__docId__": 4397, "kind": "variable", "name": "newLookEyeVec", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js", @@ -83758,7 +83742,7 @@ "ignore": true }, { - "__docId__": 4407, + "__docId__": 4398, "kind": "class", "name": "CameraFlightAnimation", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js", @@ -83776,7 +83760,7 @@ ] }, { - "__docId__": 4408, + "__docId__": 4399, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -83795,7 +83779,7 @@ } }, { - "__docId__": 4409, + "__docId__": 4400, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -83815,7 +83799,7 @@ "ignore": true }, { - "__docId__": 4410, + "__docId__": 4401, "kind": "member", "name": "_look1", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -83833,7 +83817,7 @@ } }, { - "__docId__": 4411, + "__docId__": 4402, "kind": "member", "name": "_eye1", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -83851,7 +83835,7 @@ } }, { - "__docId__": 4412, + "__docId__": 4403, "kind": "member", "name": "_up1", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -83869,7 +83853,7 @@ } }, { - "__docId__": 4413, + "__docId__": 4404, "kind": "member", "name": "_look2", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -83887,7 +83871,7 @@ } }, { - "__docId__": 4414, + "__docId__": 4405, "kind": "member", "name": "_eye2", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -83905,7 +83889,7 @@ } }, { - "__docId__": 4415, + "__docId__": 4406, "kind": "member", "name": "_up2", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -83923,7 +83907,7 @@ } }, { - "__docId__": 4416, + "__docId__": 4407, "kind": "member", "name": "_orthoScale1", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -83941,7 +83925,7 @@ } }, { - "__docId__": 4417, + "__docId__": 4408, "kind": "member", "name": "_orthoScale2", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -83959,7 +83943,7 @@ } }, { - "__docId__": 4418, + "__docId__": 4409, "kind": "member", "name": "_flying", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -83977,7 +83961,7 @@ } }, { - "__docId__": 4419, + "__docId__": 4410, "kind": "member", "name": "_flyEyeLookUp", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -83995,7 +83979,7 @@ } }, { - "__docId__": 4420, + "__docId__": 4411, "kind": "member", "name": "_flyingEye", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84013,7 +83997,7 @@ } }, { - "__docId__": 4421, + "__docId__": 4412, "kind": "member", "name": "_flyingLook", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84031,7 +84015,7 @@ } }, { - "__docId__": 4422, + "__docId__": 4413, "kind": "member", "name": "_callback", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84049,7 +84033,7 @@ } }, { - "__docId__": 4423, + "__docId__": 4414, "kind": "member", "name": "_callbackScope", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84067,7 +84051,7 @@ } }, { - "__docId__": 4424, + "__docId__": 4415, "kind": "member", "name": "_time1", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84085,7 +84069,7 @@ } }, { - "__docId__": 4425, + "__docId__": 4416, "kind": "member", "name": "_time2", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84103,7 +84087,7 @@ } }, { - "__docId__": 4426, + "__docId__": 4417, "kind": "member", "name": "easing", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84120,7 +84104,7 @@ } }, { - "__docId__": 4431, + "__docId__": 4422, "kind": "method", "name": "flyTo", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84285,7 +84269,7 @@ "return": null }, { - "__docId__": 4435, + "__docId__": 4426, "kind": "member", "name": "_flyingEyeLookUp", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84303,7 +84287,7 @@ } }, { - "__docId__": 4446, + "__docId__": 4437, "kind": "member", "name": "_projection2", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84321,7 +84305,7 @@ } }, { - "__docId__": 4447, + "__docId__": 4438, "kind": "member", "name": "_projMatrix1", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84339,7 +84323,7 @@ } }, { - "__docId__": 4448, + "__docId__": 4439, "kind": "member", "name": "_projMatrix2", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84357,7 +84341,7 @@ } }, { - "__docId__": 4456, + "__docId__": 4447, "kind": "method", "name": "jumpTo", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84478,7 +84462,7 @@ "return": null }, { - "__docId__": 4457, + "__docId__": 4448, "kind": "method", "name": "_jumpTo", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84502,7 +84486,7 @@ "return": null }, { - "__docId__": 4458, + "__docId__": 4449, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84519,7 +84503,7 @@ "return": null }, { - "__docId__": 4459, + "__docId__": 4450, "kind": "method", "name": "_ease", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84565,7 +84549,7 @@ } }, { - "__docId__": 4460, + "__docId__": 4451, "kind": "method", "name": "_easeInCubic", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84611,7 +84595,7 @@ } }, { - "__docId__": 4461, + "__docId__": 4452, "kind": "method", "name": "_easeOutExpo", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84657,7 +84641,7 @@ } }, { - "__docId__": 4462, + "__docId__": 4453, "kind": "method", "name": "stop", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84672,7 +84656,7 @@ "return": null }, { - "__docId__": 4467, + "__docId__": 4458, "kind": "method", "name": "cancel", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84687,7 +84671,7 @@ "return": null }, { - "__docId__": 4472, + "__docId__": 4463, "kind": "set", "name": "duration", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84712,7 +84696,7 @@ ] }, { - "__docId__": 4473, + "__docId__": 4464, "kind": "member", "name": "_duration", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84730,7 +84714,7 @@ } }, { - "__docId__": 4474, + "__docId__": 4465, "kind": "get", "name": "duration", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84762,7 +84746,7 @@ } }, { - "__docId__": 4475, + "__docId__": 4466, "kind": "set", "name": "fit", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84787,7 +84771,7 @@ ] }, { - "__docId__": 4476, + "__docId__": 4467, "kind": "member", "name": "_fit", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84805,7 +84789,7 @@ } }, { - "__docId__": 4477, + "__docId__": 4468, "kind": "get", "name": "fit", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84837,7 +84821,7 @@ } }, { - "__docId__": 4478, + "__docId__": 4469, "kind": "set", "name": "fitFOV", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84862,7 +84846,7 @@ ] }, { - "__docId__": 4479, + "__docId__": 4470, "kind": "member", "name": "_fitFOV", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84880,7 +84864,7 @@ } }, { - "__docId__": 4480, + "__docId__": 4471, "kind": "get", "name": "fitFOV", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84912,7 +84896,7 @@ } }, { - "__docId__": 4481, + "__docId__": 4472, "kind": "set", "name": "trail", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84937,7 +84921,7 @@ ] }, { - "__docId__": 4482, + "__docId__": 4473, "kind": "member", "name": "_trail", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84955,7 +84939,7 @@ } }, { - "__docId__": 4483, + "__docId__": 4474, "kind": "get", "name": "trail", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -84987,7 +84971,7 @@ } }, { - "__docId__": 4484, + "__docId__": 4475, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/camera/CameraFlightAnimation.js~CameraFlightAnimation", @@ -85003,7 +84987,7 @@ "return": null }, { - "__docId__": 4485, + "__docId__": 4476, "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}", @@ -85014,7 +84998,7 @@ "lineNumber": 1 }, { - "__docId__": 4486, + "__docId__": 4477, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/camera/CameraPath.js", @@ -85035,7 +85019,7 @@ "ignore": true }, { - "__docId__": 4487, + "__docId__": 4478, "kind": "class", "name": "CameraPath", "memberof": "src/viewer/scene/camera/CameraPath.js", @@ -85053,7 +85037,7 @@ ] }, { - "__docId__": 4488, + "__docId__": 4479, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85086,7 +85070,7 @@ } }, { - "__docId__": 4489, + "__docId__": 4480, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85147,7 +85131,7 @@ ] }, { - "__docId__": 4490, + "__docId__": 4481, "kind": "member", "name": "_frames", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85165,7 +85149,7 @@ } }, { - "__docId__": 4491, + "__docId__": 4482, "kind": "member", "name": "_eyeCurve", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85183,7 +85167,7 @@ } }, { - "__docId__": 4492, + "__docId__": 4483, "kind": "member", "name": "_lookCurve", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85201,7 +85185,7 @@ } }, { - "__docId__": 4493, + "__docId__": 4484, "kind": "member", "name": "_upCurve", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85219,7 +85203,7 @@ } }, { - "__docId__": 4494, + "__docId__": 4485, "kind": "get", "name": "frames", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85251,7 +85235,7 @@ } }, { - "__docId__": 4495, + "__docId__": 4486, "kind": "get", "name": "eyeCurve", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85283,7 +85267,7 @@ } }, { - "__docId__": 4496, + "__docId__": 4487, "kind": "get", "name": "lookCurve", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85315,7 +85299,7 @@ } }, { - "__docId__": 4497, + "__docId__": 4488, "kind": "get", "name": "upCurve", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85347,7 +85331,7 @@ } }, { - "__docId__": 4498, + "__docId__": 4489, "kind": "method", "name": "saveFrame", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85373,7 +85357,7 @@ "return": null }, { - "__docId__": 4499, + "__docId__": 4490, "kind": "method", "name": "addFrame", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85429,7 +85413,7 @@ "return": null }, { - "__docId__": 4500, + "__docId__": 4491, "kind": "method", "name": "addFrames", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85455,7 +85439,7 @@ "return": null }, { - "__docId__": 4501, + "__docId__": 4492, "kind": "method", "name": "loadFrame", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85481,7 +85465,7 @@ "return": null }, { - "__docId__": 4502, + "__docId__": 4493, "kind": "method", "name": "sampleFrame", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85537,7 +85521,7 @@ "return": null }, { - "__docId__": 4503, + "__docId__": 4494, "kind": "method", "name": "smoothFrameTimes", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85563,7 +85547,7 @@ "return": null }, { - "__docId__": 4504, + "__docId__": 4495, "kind": "method", "name": "clearFrames", "memberof": "src/viewer/scene/camera/CameraPath.js~CameraPath", @@ -85578,7 +85562,7 @@ "return": null }, { - "__docId__": 4506, + "__docId__": 4497, "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](http://xeokit.github.io/xeokit-sdk/examples/#camera_CameraPathAnimation)]\n *\n * ````Javascript\n * import {Viewer} from \"viewer/Viewer.js\";\n * import {GLTFLoaderPlugin} from \"../src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js\";\n * import {CameraPath} from \"../src/scene/camera/CameraPath.js\";\n * import {CameraPathAnimation} from \"../src/scene/camera/CameraPathAnimation.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}", @@ -85589,7 +85573,7 @@ "lineNumber": 1 }, { - "__docId__": 4507, + "__docId__": 4498, "kind": "class", "name": "CameraPathAnimation", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js", @@ -85607,7 +85591,7 @@ ] }, { - "__docId__": 4508, + "__docId__": 4499, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85640,7 +85624,7 @@ } }, { - "__docId__": 4509, + "__docId__": 4500, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85701,7 +85685,7 @@ ] }, { - "__docId__": 4510, + "__docId__": 4501, "kind": "member", "name": "_cameraFlightAnimation", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85719,7 +85703,7 @@ } }, { - "__docId__": 4511, + "__docId__": 4502, "kind": "member", "name": "_t", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85737,7 +85721,7 @@ } }, { - "__docId__": 4512, + "__docId__": 4503, "kind": "member", "name": "state", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85754,7 +85738,7 @@ } }, { - "__docId__": 4513, + "__docId__": 4504, "kind": "member", "name": "_playingFromT", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85772,7 +85756,7 @@ } }, { - "__docId__": 4514, + "__docId__": 4505, "kind": "member", "name": "_playingToT", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85790,7 +85774,7 @@ } }, { - "__docId__": 4515, + "__docId__": 4506, "kind": "member", "name": "_playingRate", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85808,7 +85792,7 @@ } }, { - "__docId__": 4516, + "__docId__": 4507, "kind": "member", "name": "_playingDir", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85826,7 +85810,7 @@ } }, { - "__docId__": 4517, + "__docId__": 4508, "kind": "member", "name": "_lastTime", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85844,7 +85828,7 @@ } }, { - "__docId__": 4519, + "__docId__": 4510, "kind": "member", "name": "_tick", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85862,7 +85846,7 @@ } }, { - "__docId__": 4520, + "__docId__": 4511, "kind": "method", "name": "_updateT", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85879,7 +85863,7 @@ "return": null }, { - "__docId__": 4527, + "__docId__": 4518, "kind": "method", "name": "_ease", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85925,7 +85909,7 @@ } }, { - "__docId__": 4528, + "__docId__": 4519, "kind": "set", "name": "cameraPath", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85950,7 +85934,7 @@ ] }, { - "__docId__": 4529, + "__docId__": 4520, "kind": "member", "name": "_cameraPath", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -85968,7 +85952,7 @@ } }, { - "__docId__": 4530, + "__docId__": 4521, "kind": "get", "name": "cameraPath", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -86000,7 +85984,7 @@ } }, { - "__docId__": 4531, + "__docId__": 4522, "kind": "set", "name": "rate", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -86025,7 +86009,7 @@ ] }, { - "__docId__": 4533, + "__docId__": 4524, "kind": "get", "name": "rate", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -86058,7 +86042,7 @@ } }, { - "__docId__": 4534, + "__docId__": 4525, "kind": "method", "name": "play", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -86073,7 +86057,7 @@ "return": null }, { - "__docId__": 4537, + "__docId__": 4528, "kind": "method", "name": "playToT", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -86099,7 +86083,7 @@ "return": null }, { - "__docId__": 4543, + "__docId__": 4534, "kind": "method", "name": "playToFrame", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -86125,7 +86109,7 @@ "return": null }, { - "__docId__": 4544, + "__docId__": 4535, "kind": "method", "name": "flyToFrame", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -86161,7 +86145,7 @@ "return": null }, { - "__docId__": 4546, + "__docId__": 4537, "kind": "method", "name": "scrubToT", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -86187,7 +86171,7 @@ "return": null }, { - "__docId__": 4549, + "__docId__": 4540, "kind": "method", "name": "scrubToFrame", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -86213,7 +86197,7 @@ "return": null }, { - "__docId__": 4551, + "__docId__": 4542, "kind": "method", "name": "stop", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -86228,7 +86212,7 @@ "return": null }, { - "__docId__": 4553, + "__docId__": 4544, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/camera/CameraPathAnimation.js~CameraPathAnimation", @@ -86244,7 +86228,7 @@ "return": null }, { - "__docId__": 4554, + "__docId__": 4545, "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(\"far\", 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};", @@ -86255,7 +86239,7 @@ "lineNumber": 1 }, { - "__docId__": 4555, + "__docId__": 4546, "kind": "class", "name": "CustomProjection", "memberof": "src/viewer/scene/camera/CustomProjection.js", @@ -86273,7 +86257,7 @@ ] }, { - "__docId__": 4556, + "__docId__": 4547, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -86292,7 +86276,7 @@ } }, { - "__docId__": 4557, + "__docId__": 4548, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -86312,7 +86296,7 @@ "ignore": true }, { - "__docId__": 4558, + "__docId__": 4549, "kind": "member", "name": "camera", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -86349,7 +86333,7 @@ } }, { - "__docId__": 4559, + "__docId__": 4550, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -86367,7 +86351,7 @@ } }, { - "__docId__": 4560, + "__docId__": 4551, "kind": "member", "name": "_inverseMatrixDirty", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -86385,7 +86369,7 @@ } }, { - "__docId__": 4561, + "__docId__": 4552, "kind": "member", "name": "_transposedMatrixDirty", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -86403,7 +86387,7 @@ } }, { - "__docId__": 4563, + "__docId__": 4554, "kind": "set", "name": "matrix", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -86428,7 +86412,7 @@ ] }, { - "__docId__": 4566, + "__docId__": 4557, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -86454,7 +86438,7 @@ } }, { - "__docId__": 4567, + "__docId__": 4558, "kind": "get", "name": "inverseMatrix", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -86486,7 +86470,7 @@ } }, { - "__docId__": 4569, + "__docId__": 4560, "kind": "get", "name": "transposedMatrix", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -86518,7 +86502,7 @@ } }, { - "__docId__": 4571, + "__docId__": 4562, "kind": "method", "name": "unproject", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -86588,7 +86572,7 @@ } }, { - "__docId__": 4572, + "__docId__": 4563, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/camera/CustomProjection.js~CustomProjection", @@ -86604,7 +86588,7 @@ "return": null }, { - "__docId__": 4573, + "__docId__": 4564, "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};", @@ -86615,7 +86599,7 @@ "lineNumber": 1 }, { - "__docId__": 4574, + "__docId__": 4565, "kind": "class", "name": "Frustum", "memberof": "src/viewer/scene/camera/Frustum.js", @@ -86633,7 +86617,7 @@ ] }, { - "__docId__": 4575, + "__docId__": 4566, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86652,7 +86636,7 @@ } }, { - "__docId__": 4576, + "__docId__": 4567, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86672,7 +86656,7 @@ "ignore": true }, { - "__docId__": 4577, + "__docId__": 4568, "kind": "member", "name": "camera", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86709,7 +86693,7 @@ } }, { - "__docId__": 4578, + "__docId__": 4569, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86727,7 +86711,7 @@ } }, { - "__docId__": 4579, + "__docId__": 4570, "kind": "member", "name": "_left", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86745,7 +86729,7 @@ } }, { - "__docId__": 4580, + "__docId__": 4571, "kind": "member", "name": "_right", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86763,7 +86747,7 @@ } }, { - "__docId__": 4581, + "__docId__": 4572, "kind": "member", "name": "_bottom", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86781,7 +86765,7 @@ } }, { - "__docId__": 4582, + "__docId__": 4573, "kind": "member", "name": "_top", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86799,7 +86783,7 @@ } }, { - "__docId__": 4583, + "__docId__": 4574, "kind": "member", "name": "_inverseMatrixDirty", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86817,7 +86801,7 @@ } }, { - "__docId__": 4584, + "__docId__": 4575, "kind": "member", "name": "_transposedMatrixDirty", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86835,7 +86819,7 @@ } }, { - "__docId__": 4591, + "__docId__": 4582, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86852,7 +86836,7 @@ "return": null }, { - "__docId__": 4594, + "__docId__": 4585, "kind": "set", "name": "left", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86877,7 +86861,7 @@ ] }, { - "__docId__": 4596, + "__docId__": 4587, "kind": "get", "name": "left", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86903,7 +86887,7 @@ } }, { - "__docId__": 4597, + "__docId__": 4588, "kind": "set", "name": "right", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86928,7 +86912,7 @@ ] }, { - "__docId__": 4599, + "__docId__": 4590, "kind": "get", "name": "right", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86954,7 +86938,7 @@ } }, { - "__docId__": 4600, + "__docId__": 4591, "kind": "set", "name": "top", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -86979,7 +86963,7 @@ ] }, { - "__docId__": 4602, + "__docId__": 4593, "kind": "get", "name": "top", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -87005,7 +86989,7 @@ } }, { - "__docId__": 4603, + "__docId__": 4594, "kind": "set", "name": "bottom", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -87038,7 +87022,7 @@ ] }, { - "__docId__": 4605, + "__docId__": 4596, "kind": "get", "name": "bottom", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -87064,7 +87048,7 @@ } }, { - "__docId__": 4606, + "__docId__": 4597, "kind": "set", "name": "near", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -87089,7 +87073,7 @@ ] }, { - "__docId__": 4607, + "__docId__": 4598, "kind": "get", "name": "near", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -87115,7 +87099,7 @@ } }, { - "__docId__": 4608, + "__docId__": 4599, "kind": "set", "name": "far", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -87140,7 +87124,7 @@ ] }, { - "__docId__": 4609, + "__docId__": 4600, "kind": "get", "name": "far", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -87166,7 +87150,7 @@ } }, { - "__docId__": 4610, + "__docId__": 4601, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -87198,7 +87182,7 @@ } }, { - "__docId__": 4611, + "__docId__": 4602, "kind": "get", "name": "inverseMatrix", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -87230,7 +87214,7 @@ } }, { - "__docId__": 4613, + "__docId__": 4604, "kind": "get", "name": "transposedMatrix", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -87262,7 +87246,7 @@ } }, { - "__docId__": 4615, + "__docId__": 4606, "kind": "method", "name": "unproject", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -87332,7 +87316,7 @@ } }, { - "__docId__": 4616, + "__docId__": 4607, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/camera/Frustum.js~Frustum", @@ -87348,7 +87332,7 @@ "return": null }, { - "__docId__": 4617, + "__docId__": 4608, "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: 2000.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.viewport.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 ````2000.0````.\n *\n * @param {Number} value New far ortho plane position.\n */\n set far(value) {\n const far = (value !== undefined && value !== null) ? value : 2000.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};", @@ -87359,7 +87343,7 @@ "lineNumber": 1 }, { - "__docId__": 4618, + "__docId__": 4609, "kind": "class", "name": "Ortho", "memberof": "src/viewer/scene/camera/Ortho.js", @@ -87377,7 +87361,7 @@ ] }, { - "__docId__": 4619, + "__docId__": 4610, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87396,7 +87380,7 @@ } }, { - "__docId__": 4620, + "__docId__": 4611, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87416,7 +87400,7 @@ "ignore": true }, { - "__docId__": 4621, + "__docId__": 4612, "kind": "member", "name": "camera", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87453,7 +87437,7 @@ } }, { - "__docId__": 4622, + "__docId__": 4613, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87471,7 +87455,7 @@ } }, { - "__docId__": 4623, + "__docId__": 4614, "kind": "member", "name": "_inverseMatrixDirty", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87489,7 +87473,7 @@ } }, { - "__docId__": 4624, + "__docId__": 4615, "kind": "member", "name": "_transposedMatrixDirty", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87507,7 +87491,7 @@ } }, { - "__docId__": 4628, + "__docId__": 4619, "kind": "member", "name": "_onCanvasBoundary", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87525,7 +87509,7 @@ } }, { - "__docId__": 4629, + "__docId__": 4620, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87542,7 +87526,7 @@ "return": null }, { - "__docId__": 4632, + "__docId__": 4623, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87567,7 +87551,7 @@ ] }, { - "__docId__": 4633, + "__docId__": 4624, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87585,7 +87569,7 @@ } }, { - "__docId__": 4634, + "__docId__": 4625, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87617,7 +87601,7 @@ } }, { - "__docId__": 4635, + "__docId__": 4626, "kind": "set", "name": "near", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87642,7 +87626,7 @@ ] }, { - "__docId__": 4636, + "__docId__": 4627, "kind": "get", "name": "near", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87674,7 +87658,7 @@ } }, { - "__docId__": 4637, + "__docId__": 4628, "kind": "set", "name": "far", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87699,7 +87683,7 @@ ] }, { - "__docId__": 4638, + "__docId__": 4629, "kind": "get", "name": "far", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87731,7 +87715,7 @@ } }, { - "__docId__": 4639, + "__docId__": 4630, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87763,7 +87747,7 @@ } }, { - "__docId__": 4640, + "__docId__": 4631, "kind": "get", "name": "inverseMatrix", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87795,7 +87779,7 @@ } }, { - "__docId__": 4642, + "__docId__": 4633, "kind": "get", "name": "transposedMatrix", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87827,7 +87811,7 @@ } }, { - "__docId__": 4644, + "__docId__": 4635, "kind": "method", "name": "unproject", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87897,7 +87881,7 @@ } }, { - "__docId__": 4645, + "__docId__": 4636, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/camera/Ortho.js~Ortho", @@ -87913,7 +87897,7 @@ "return": null }, { - "__docId__": 4646, + "__docId__": 4637, "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: 2000.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.viewport.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.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 * @param {Number} value New Perspective far plane position.\n */\n set far(value) {\n const far = (value !== undefined && value !== null) ? value : 2000.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 * @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};", @@ -87924,7 +87908,7 @@ "lineNumber": 1 }, { - "__docId__": 4647, + "__docId__": 4638, "kind": "class", "name": "Perspective", "memberof": "src/viewer/scene/camera/Perspective.js", @@ -87942,7 +87926,7 @@ ] }, { - "__docId__": 4648, + "__docId__": 4639, "kind": "get", "name": "type", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -87961,7 +87945,7 @@ } }, { - "__docId__": 4649, + "__docId__": 4640, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -87981,7 +87965,7 @@ "ignore": true }, { - "__docId__": 4650, + "__docId__": 4641, "kind": "member", "name": "camera", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88018,7 +88002,7 @@ } }, { - "__docId__": 4651, + "__docId__": 4642, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88036,7 +88020,7 @@ } }, { - "__docId__": 4652, + "__docId__": 4643, "kind": "member", "name": "_inverseMatrixDirty", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88054,7 +88038,7 @@ } }, { - "__docId__": 4653, + "__docId__": 4644, "kind": "member", "name": "_transposedMatrixDirty", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88072,7 +88056,7 @@ } }, { - "__docId__": 4654, + "__docId__": 4645, "kind": "member", "name": "_fov", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88090,7 +88074,7 @@ } }, { - "__docId__": 4655, + "__docId__": 4646, "kind": "member", "name": "_canvasResized", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88108,7 +88092,7 @@ } }, { - "__docId__": 4660, + "__docId__": 4651, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88125,7 +88109,7 @@ "return": null }, { - "__docId__": 4663, + "__docId__": 4654, "kind": "set", "name": "fov", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88150,7 +88134,7 @@ ] }, { - "__docId__": 4665, + "__docId__": 4656, "kind": "get", "name": "fov", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88182,7 +88166,7 @@ } }, { - "__docId__": 4666, + "__docId__": 4657, "kind": "set", "name": "fovAxis", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88207,7 +88191,7 @@ ] }, { - "__docId__": 4667, + "__docId__": 4658, "kind": "member", "name": "_fovAxis", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88225,7 +88209,7 @@ } }, { - "__docId__": 4668, + "__docId__": 4659, "kind": "get", "name": "fovAxis", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88257,7 +88241,7 @@ } }, { - "__docId__": 4669, + "__docId__": 4660, "kind": "set", "name": "near", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88282,7 +88266,7 @@ ] }, { - "__docId__": 4670, + "__docId__": 4661, "kind": "get", "name": "near", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88314,7 +88298,7 @@ } }, { - "__docId__": 4671, + "__docId__": 4662, "kind": "set", "name": "far", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88339,7 +88323,7 @@ ] }, { - "__docId__": 4672, + "__docId__": 4663, "kind": "get", "name": "far", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88365,7 +88349,7 @@ } }, { - "__docId__": 4673, + "__docId__": 4664, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88397,7 +88381,7 @@ } }, { - "__docId__": 4674, + "__docId__": 4665, "kind": "get", "name": "inverseMatrix", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88429,7 +88413,7 @@ } }, { - "__docId__": 4676, + "__docId__": 4667, "kind": "get", "name": "transposedMatrix", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88461,7 +88445,7 @@ } }, { - "__docId__": 4678, + "__docId__": 4669, "kind": "method", "name": "unproject", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88531,7 +88515,7 @@ } }, { - "__docId__": 4679, + "__docId__": 4670, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/camera/Perspective.js~Perspective", @@ -88547,7 +88531,7 @@ "return": null }, { - "__docId__": 4680, + "__docId__": 4671, "kind": "file", "name": "src/viewer/scene/canvas/Canvas.js", "content": "import {core} from \"../core.js\";\nimport {math} from '../math/math.js';\nimport {stats} from '../stats.js';\nimport {Component} from '../Component.js';\nimport {Spinner} from './Spinner.js';\nimport {WEBGL_INFO} from '../webglInfo.js';\n\nconst WEBGL_CONTEXT_NAMES = [\n \"webgl\",\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 @private\n */\n get type() {\n return \"Canvas\";\n }\n\n /**\n * @constructor\n * @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\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.canvas.width = this.canvas.clientWidth;\n this.canvas.height = this.canvas.clientHeight;\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 // Publish canvas size and position changes on each scene tick\n\n let lastWindowWidth = null;\n let lastWindowHeight = null;\n\n let lastCanvasWidth = null;\n let lastCanvasHeight = null;\n\n let lastCanvasOffsetLeft = null;\n let lastCanvasOffsetTop = null;\n\n let lastParent = null;\n\n this._tick = this.scene.on(\"tick\", function () {\n\n const canvas = self.canvas;\n\n const newWindowSize = (window.innerWidth !== lastWindowWidth || window.innerHeight !== lastWindowHeight);\n const newCanvasSize = (canvas.clientWidth !== lastCanvasWidth || canvas.clientHeight !== lastCanvasHeight);\n const newCanvasPos = (canvas.offsetLeft !== lastCanvasOffsetLeft || canvas.offsetTop !== lastCanvasOffsetTop);\n\n const parent = canvas.parentElement;\n const newParent = (parent !== lastParent);\n\n if (newWindowSize || newCanvasSize || newCanvasPos || newParent) {\n\n self._spinner._adjustPosition();\n\n if (newCanvasSize || newCanvasPos) {\n\n const newWidth = canvas.clientWidth;\n const newHeight = canvas.clientHeight;\n\n // TODO: Wasteful to re-count pixel size of each canvas on each canvas' resize\n if (newCanvasSize) {\n let countPixels = 0;\n let scene;\n for (const sceneId in core.scenes) {\n if (core.scenes.hasOwnProperty(sceneId)) {\n scene = core.scenes[sceneId];\n countPixels += scene.canvas.canvas.clientWidth * scene.canvas.canvas.clientHeight;\n }\n }\n stats.memory.pixels = countPixels;\n\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n }\n\n const boundary = self.boundary;\n\n boundary[0] = canvas.offsetLeft;\n boundary[1] = canvas.offsetTop;\n boundary[2] = newWidth;\n boundary[3] = newHeight;\n\n /**\n * Fired whenever this Canvas's {@link Canvas/boundary} property changes.\n *\n * @event boundary\n * @param value The property's new value\n */\n self.fire(\"boundary\", boundary);\n\n lastCanvasWidth = newWidth;\n lastCanvasHeight = newHeight;\n }\n\n if (newWindowSize) {\n lastWindowWidth = window.innerWidth;\n lastWindowHeight = window.innerHeight;\n }\n\n if (newCanvasPos) {\n lastCanvasOffsetLeft = canvas.offsetLeft;\n lastCanvasOffsetTop = canvas.offsetTop;\n }\n\n lastParent = parent;\n }\n });\n\n this._spinner = new Spinner(this.scene, {\n canvas: this.canvas,\n elementId: cfg.spinnerElementId\n });\n\n this.clearColorAmbient = cfg.clearColorAmbient;\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 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 } else {\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_standard_derivatives\"]) {\n const ext = this.gl.getExtension(\"OES_standard_derivatives\");\n this.gl.hint(ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES, this.gl.FASTEST);\n }\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n const ext = this.gl.getExtension('EXT_frag_depth');\n }\n }\n }\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 ````false````.\n *\n * @type {Boolean}\n */\n set clearColorAmbient(clearColorAmbient) {\n this._clearColorAmbient = !!clearColorAmbient;\n }\n\n /**\n * Gets 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 ````false````.\n *\n * @type {Boolean}\n */\n\n get clearColorAmbient() {\n return this._clearColorAmbient;\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 /**\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 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};", @@ -88558,7 +88542,7 @@ "lineNumber": 1 }, { - "__docId__": 4681, + "__docId__": 4672, "kind": "variable", "name": "WEBGL_CONTEXT_NAMES", "memberof": "src/viewer/scene/canvas/Canvas.js", @@ -88579,7 +88563,7 @@ "ignore": true }, { - "__docId__": 4682, + "__docId__": 4673, "kind": "class", "name": "Canvas", "memberof": "src/viewer/scene/canvas/Canvas.js", @@ -88597,7 +88581,7 @@ ] }, { - "__docId__": 4683, + "__docId__": 4674, "kind": "get", "name": "type", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88616,7 +88600,7 @@ } }, { - "__docId__": 4684, + "__docId__": 4675, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88636,7 +88620,7 @@ "ignore": true }, { - "__docId__": 4685, + "__docId__": 4676, "kind": "member", "name": "canvas", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88673,7 +88657,7 @@ } }, { - "__docId__": 4686, + "__docId__": 4677, "kind": "member", "name": "gl", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88710,7 +88694,7 @@ } }, { - "__docId__": 4687, + "__docId__": 4678, "kind": "member", "name": "webgl2", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88747,7 +88731,7 @@ } }, { - "__docId__": 4688, + "__docId__": 4679, "kind": "member", "name": "transparent", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88788,7 +88772,7 @@ } }, { - "__docId__": 4689, + "__docId__": 4680, "kind": "member", "name": "contextAttr", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88807,7 +88791,7 @@ } }, { - "__docId__": 4690, + "__docId__": 4681, "kind": "member", "name": "boundary", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88844,7 +88828,7 @@ } }, { - "__docId__": 4691, + "__docId__": 4682, "kind": "member", "name": "_tick", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88862,7 +88846,7 @@ } }, { - "__docId__": 4692, + "__docId__": 4683, "kind": "member", "name": "_spinner", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88880,7 +88864,7 @@ } }, { - "__docId__": 4694, + "__docId__": 4685, "kind": "method", "name": "_createCanvas", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88896,7 +88880,7 @@ "return": null }, { - "__docId__": 4696, + "__docId__": 4687, "kind": "method", "name": "_getElementXY", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88924,7 +88908,7 @@ } }, { - "__docId__": 4697, + "__docId__": 4688, "kind": "method", "name": "_initWebGL", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88940,7 +88924,7 @@ "return": null }, { - "__docId__": 4699, + "__docId__": 4690, "kind": "set", "name": "clearColorAmbient", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88961,7 +88945,7 @@ } }, { - "__docId__": 4700, + "__docId__": 4691, "kind": "member", "name": "_clearColorAmbient", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -88979,7 +88963,7 @@ } }, { - "__docId__": 4701, + "__docId__": 4692, "kind": "get", "name": "clearColorAmbient", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -89000,7 +88984,7 @@ } }, { - "__docId__": 4702, + "__docId__": 4693, "kind": "method", "name": "getSnapshot", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -89024,7 +89008,7 @@ "return": null }, { - "__docId__": 4703, + "__docId__": 4694, "kind": "method", "name": "readPixels", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -89084,7 +89068,7 @@ } }, { - "__docId__": 4704, + "__docId__": 4695, "kind": "method", "name": "loseWebGLContext", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -89099,7 +89083,7 @@ "return": null }, { - "__docId__": 4705, + "__docId__": 4696, "kind": "get", "name": "spinner", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -89138,7 +89122,7 @@ } }, { - "__docId__": 4706, + "__docId__": 4697, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/canvas/Canvas.js~Canvas", @@ -89154,7 +89138,7 @@ "return": null }, { - "__docId__": 4708, + "__docId__": 4699, "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 }\n}\n\nexport {Spinner};", @@ -89165,7 +89149,7 @@ "lineNumber": 1 }, { - "__docId__": 4709, + "__docId__": 4700, "kind": "variable", "name": "defaultCSS", "memberof": "src/viewer/scene/canvas/Spinner.js", @@ -89186,7 +89170,7 @@ "ignore": true }, { - "__docId__": 4710, + "__docId__": 4701, "kind": "class", "name": "Spinner", "memberof": "src/viewer/scene/canvas/Spinner.js", @@ -89204,7 +89188,7 @@ ] }, { - "__docId__": 4711, + "__docId__": 4702, "kind": "get", "name": "type", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -89223,7 +89207,7 @@ } }, { - "__docId__": 4712, + "__docId__": 4703, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -89237,7 +89221,7 @@ "ignore": true }, { - "__docId__": 4713, + "__docId__": 4704, "kind": "member", "name": "_canvas", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -89255,7 +89239,7 @@ } }, { - "__docId__": 4714, + "__docId__": 4705, "kind": "member", "name": "_element", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -89273,7 +89257,7 @@ } }, { - "__docId__": 4715, + "__docId__": 4706, "kind": "member", "name": "_isCustom", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -89291,7 +89275,7 @@ } }, { - "__docId__": 4718, + "__docId__": 4709, "kind": "method", "name": "_createDefaultSpinner", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -89307,7 +89291,7 @@ "return": null }, { - "__docId__": 4721, + "__docId__": 4712, "kind": "method", "name": "_injectDefaultCSS", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -89323,7 +89307,7 @@ "return": null }, { - "__docId__": 4722, + "__docId__": 4713, "kind": "method", "name": "_adjustPosition", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -89339,7 +89323,7 @@ "return": null }, { - "__docId__": 4723, + "__docId__": 4714, "kind": "set", "name": "processes", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -89364,7 +89348,7 @@ ] }, { - "__docId__": 4724, + "__docId__": 4715, "kind": "member", "name": "_processes", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -89382,7 +89366,7 @@ } }, { - "__docId__": 4725, + "__docId__": 4716, "kind": "get", "name": "processes", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -89414,7 +89398,7 @@ } }, { - "__docId__": 4726, + "__docId__": 4717, "kind": "method", "name": "_destroy", "memberof": "src/viewer/scene/canvas/Spinner.js~Spinner", @@ -89431,7 +89415,7 @@ "return": null }, { - "__docId__": 4728, + "__docId__": 4719, "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 defaultScene = null;// Default singleton Scene, lazy-initialized in getter\nlet lastTime = 0;\nlet elapsedTime;\nlet totalFPS = 0;\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) {\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\n\nconst frame = function () {\n let time = Date.now();\n if (lastTime > 0) { // Log FPS stats\n elapsedTime = time - lastTime;\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 lastTime = time;\n window.requestAnimationFrame(frame);\n};\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\nwindow.requestAnimationFrame(frame);\n\nexport {core};", @@ -89442,7 +89426,7 @@ "lineNumber": 1 }, { - "__docId__": 4729, + "__docId__": 4720, "kind": "variable", "name": "scenesRenderInfo", "memberof": "src/viewer/scene/core.js", @@ -89463,7 +89447,7 @@ "ignore": true }, { - "__docId__": 4730, + "__docId__": 4721, "kind": "variable", "name": "sceneIDMap", "memberof": "src/viewer/scene/core.js", @@ -89484,7 +89468,7 @@ "ignore": true }, { - "__docId__": 4731, + "__docId__": 4722, "kind": "variable", "name": "taskQueue", "memberof": "src/viewer/scene/core.js", @@ -89505,7 +89489,7 @@ "ignore": true }, { - "__docId__": 4732, + "__docId__": 4723, "kind": "variable", "name": "tickEvent", "memberof": "src/viewer/scene/core.js", @@ -89526,7 +89510,7 @@ "ignore": true }, { - "__docId__": 4733, + "__docId__": 4724, "kind": "variable", "name": "taskBudget", "memberof": "src/viewer/scene/core.js", @@ -89547,7 +89531,7 @@ "ignore": true }, { - "__docId__": 4734, + "__docId__": 4725, "kind": "variable", "name": "fpsSamples", "memberof": "src/viewer/scene/core.js", @@ -89568,7 +89552,7 @@ "ignore": true }, { - "__docId__": 4735, + "__docId__": 4726, "kind": "variable", "name": "numFPSSamples", "memberof": "src/viewer/scene/core.js", @@ -89589,7 +89573,7 @@ "ignore": true }, { - "__docId__": 4736, + "__docId__": 4727, "kind": "variable", "name": "defaultScene", "memberof": "src/viewer/scene/core.js", @@ -89610,7 +89594,7 @@ "ignore": true }, { - "__docId__": 4737, + "__docId__": 4728, "kind": "variable", "name": "lastTime", "memberof": "src/viewer/scene/core.js", @@ -89631,7 +89615,7 @@ "ignore": true }, { - "__docId__": 4738, + "__docId__": 4729, "kind": "variable", "name": "totalFPS", "memberof": "src/viewer/scene/core.js", @@ -89652,7 +89636,7 @@ "ignore": true }, { - "__docId__": 4739, + "__docId__": 4730, "kind": "function", "name": "Core", "memberof": "src/viewer/scene/core.js", @@ -89671,7 +89655,7 @@ "return": null }, { - "__docId__": 4740, + "__docId__": 4731, "kind": "function", "name": "frame", "memberof": "src/viewer/scene/core.js", @@ -89691,7 +89675,7 @@ "ignore": true }, { - "__docId__": 4741, + "__docId__": 4732, "kind": "function", "name": "runTasks", "memberof": "src/viewer/scene/core.js", @@ -89718,7 +89702,7 @@ "ignore": true }, { - "__docId__": 4742, + "__docId__": 4733, "kind": "function", "name": "fireTickEvents", "memberof": "src/viewer/scene/core.js", @@ -89745,7 +89729,7 @@ "ignore": true }, { - "__docId__": 4743, + "__docId__": 4734, "kind": "function", "name": "renderScenes", "memberof": "src/viewer/scene/core.js", @@ -89765,7 +89749,7 @@ "ignore": true }, { - "__docId__": 4744, + "__docId__": 4735, "kind": "variable", "name": "core", "memberof": "src/viewer/scene/core.js", @@ -89788,7 +89772,7 @@ "ignore": true }, { - "__docId__": 4745, + "__docId__": 4736, "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", @@ -89799,7 +89783,7 @@ "lineNumber": 1 }, { - "__docId__": 4746, + "__docId__": 4737, "kind": "class", "name": "Geometry", "memberof": "src/viewer/scene/geometry/Geometry.js", @@ -89817,7 +89801,7 @@ ] }, { - "__docId__": 4747, + "__docId__": 4738, "kind": "get", "name": "type", "memberof": "src/viewer/scene/geometry/Geometry.js~Geometry", @@ -89836,7 +89820,7 @@ } }, { - "__docId__": 4748, + "__docId__": 4739, "kind": "get", "name": "isGeometry", "memberof": "src/viewer/scene/geometry/Geometry.js~Geometry", @@ -89855,7 +89839,7 @@ } }, { - "__docId__": 4749, + "__docId__": 4740, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/geometry/Geometry.js~Geometry", @@ -89869,7 +89853,7 @@ "undocument": true }, { - "__docId__": 4750, + "__docId__": 4741, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/geometry/Geometry.js~Geometry", @@ -89885,7 +89869,7 @@ "return": null }, { - "__docId__": 4751, + "__docId__": 4742, "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 {WEBGL_INFO} from '../webglInfo.js';\nimport {buildEdgeIndices} from '../math/buildEdgeIndices.js';\nimport {geometryCompressionUtils} from '../math/geometryCompressionUtils.js';\n\nconst memoryStats = stats.memory;\nconst bigIndicesSupported = WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\nconst IndexArrayType = bigIndicesSupported ? Uint32Array : Uint16Array;\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](http://xeokit.github.io/xeokit-sdk/examples/#geometry_ReadableGeometry)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\"\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.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 if (!bigIndicesSupported && cfg.indices.constructor === Uint32Array) {\n this.error(\"This WebGL implementation does not support Uint32Array\");\n return;\n }\n state.indices = (cfg.indices.constructor === Uint32Array || cfg.indices.constructor === Uint16Array) ? cfg.indices : new IndexArrayType(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};", @@ -89896,7 +89880,7 @@ "lineNumber": 1 }, { - "__docId__": 4752, + "__docId__": 4743, "kind": "variable", "name": "memoryStats", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js", @@ -89917,7 +89901,7 @@ "ignore": true }, { - "__docId__": 4753, + "__docId__": 4744, "kind": "variable", "name": "bigIndicesSupported", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js", @@ -89938,7 +89922,7 @@ "ignore": true }, { - "__docId__": 4754, + "__docId__": 4745, "kind": "variable", "name": "IndexArrayType", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js", @@ -89959,7 +89943,7 @@ "ignore": true }, { - "__docId__": 4755, + "__docId__": 4746, "kind": "variable", "name": "tempAABB", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js", @@ -89980,7 +89964,7 @@ "ignore": true }, { - "__docId__": 4756, + "__docId__": 4747, "kind": "class", "name": "ReadableGeometry", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js", @@ -89998,7 +89982,7 @@ ] }, { - "__docId__": 4757, + "__docId__": 4748, "kind": "get", "name": "type", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90017,7 +90001,7 @@ } }, { - "__docId__": 4758, + "__docId__": 4749, "kind": "get", "name": "isReadableGeometry", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90050,7 +90034,7 @@ } }, { - "__docId__": 4759, + "__docId__": 4750, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90245,7 +90229,7 @@ ] }, { - "__docId__": 4760, + "__docId__": 4751, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90263,7 +90247,7 @@ } }, { - "__docId__": 4761, + "__docId__": 4752, "kind": "member", "name": "_numTriangles", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90281,7 +90265,7 @@ } }, { - "__docId__": 4762, + "__docId__": 4753, "kind": "member", "name": "_edgeThreshold", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90299,7 +90283,7 @@ } }, { - "__docId__": 4763, + "__docId__": 4754, "kind": "member", "name": "_edgeIndicesBuf", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90317,7 +90301,7 @@ } }, { - "__docId__": 4764, + "__docId__": 4755, "kind": "member", "name": "_pickTrianglePositionsBuf", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90335,7 +90319,7 @@ } }, { - "__docId__": 4765, + "__docId__": 4756, "kind": "member", "name": "_pickTriangleColorsBuf", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90353,7 +90337,7 @@ } }, { - "__docId__": 4766, + "__docId__": 4757, "kind": "member", "name": "_aabbDirty", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90371,7 +90355,7 @@ } }, { - "__docId__": 4767, + "__docId__": 4758, "kind": "member", "name": "_boundingSphere", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90389,7 +90373,7 @@ } }, { - "__docId__": 4768, + "__docId__": 4759, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90407,7 +90391,7 @@ } }, { - "__docId__": 4770, + "__docId__": 4761, "kind": "member", "name": "_obb", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90425,7 +90409,7 @@ } }, { - "__docId__": 4771, + "__docId__": 4762, "kind": "member", "name": "_obbDirty", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90443,7 +90427,7 @@ } }, { - "__docId__": 4773, + "__docId__": 4764, "kind": "method", "name": "_buildVBOs", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90460,7 +90444,7 @@ "return": null }, { - "__docId__": 4774, + "__docId__": 4765, "kind": "method", "name": "_buildHash", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90477,7 +90461,7 @@ "return": null }, { - "__docId__": 4775, + "__docId__": 4766, "kind": "method", "name": "_getEdgeIndices", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90498,7 +90482,7 @@ } }, { - "__docId__": 4776, + "__docId__": 4767, "kind": "method", "name": "_getPickTrianglePositions", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90519,7 +90503,7 @@ } }, { - "__docId__": 4777, + "__docId__": 4768, "kind": "method", "name": "_getPickTriangleColors", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90540,7 +90524,7 @@ } }, { - "__docId__": 4778, + "__docId__": 4769, "kind": "method", "name": "_buildEdgeIndices", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90557,7 +90541,7 @@ "return": null }, { - "__docId__": 4780, + "__docId__": 4771, "kind": "method", "name": "_buildPickTriangleVBOs", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90574,7 +90558,7 @@ "return": null }, { - "__docId__": 4783, + "__docId__": 4774, "kind": "method", "name": "_buildPickVertexVBOs", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90591,7 +90575,7 @@ "return": null }, { - "__docId__": 4784, + "__docId__": 4775, "kind": "method", "name": "_webglContextLost", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90608,7 +90592,7 @@ "return": null }, { - "__docId__": 4785, + "__docId__": 4776, "kind": "method", "name": "_webglContextRestored", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90625,7 +90609,7 @@ "return": null }, { - "__docId__": 4787, + "__docId__": 4778, "kind": "member", "name": "_pickVertexPositionsBuf", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90643,7 +90627,7 @@ } }, { - "__docId__": 4791, + "__docId__": 4782, "kind": "member", "name": "_pickVertexColorsBuf", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90661,7 +90645,7 @@ } }, { - "__docId__": 4792, + "__docId__": 4783, "kind": "get", "name": "primitive", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90700,7 +90684,7 @@ } }, { - "__docId__": 4793, + "__docId__": 4784, "kind": "get", "name": "compressGeometry", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90743,7 +90727,7 @@ } }, { - "__docId__": 4794, + "__docId__": 4785, "kind": "get", "name": "positions", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90782,7 +90766,7 @@ } }, { - "__docId__": 4795, + "__docId__": 4786, "kind": "member", "name": "_decompressedPositions", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90800,7 +90784,7 @@ } }, { - "__docId__": 4796, + "__docId__": 4787, "kind": "set", "name": "positions", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90814,7 +90798,7 @@ "undocument": true }, { - "__docId__": 4797, + "__docId__": 4788, "kind": "get", "name": "normals", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90853,7 +90837,7 @@ } }, { - "__docId__": 4798, + "__docId__": 4789, "kind": "member", "name": "_decompressedNormals", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90871,7 +90855,7 @@ } }, { - "__docId__": 4799, + "__docId__": 4790, "kind": "set", "name": "normals", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90885,7 +90869,7 @@ "undocument": true }, { - "__docId__": 4800, + "__docId__": 4791, "kind": "get", "name": "uv", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90924,7 +90908,7 @@ } }, { - "__docId__": 4801, + "__docId__": 4792, "kind": "member", "name": "_decompressedUV", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90942,7 +90926,7 @@ } }, { - "__docId__": 4802, + "__docId__": 4793, "kind": "set", "name": "uv", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90956,7 +90940,7 @@ "undocument": true }, { - "__docId__": 4803, + "__docId__": 4794, "kind": "get", "name": "colors", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -90995,7 +90979,7 @@ } }, { - "__docId__": 4804, + "__docId__": 4795, "kind": "set", "name": "colors", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -91009,7 +90993,7 @@ "undocument": true }, { - "__docId__": 4805, + "__docId__": 4796, "kind": "get", "name": "indices", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -91052,7 +91036,7 @@ } }, { - "__docId__": 4806, + "__docId__": 4797, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -91091,7 +91075,7 @@ } }, { - "__docId__": 4809, + "__docId__": 4800, "kind": "get", "name": "obb", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -91130,7 +91114,7 @@ } }, { - "__docId__": 4812, + "__docId__": 4803, "kind": "get", "name": "numTriangles", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -91151,7 +91135,7 @@ } }, { - "__docId__": 4813, + "__docId__": 4804, "kind": "method", "name": "_setAABBDirty", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -91168,7 +91152,7 @@ "return": null }, { - "__docId__": 4817, + "__docId__": 4808, "kind": "method", "name": "_getState", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -91189,7 +91173,7 @@ } }, { - "__docId__": 4818, + "__docId__": 4809, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/geometry/ReadableGeometry.js~ReadableGeometry", @@ -91204,7 +91188,7 @@ "return": null }, { - "__docId__": 4819, + "__docId__": 4810, "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 {WEBGL_INFO} from '../webglInfo.js';\nimport {buildEdgeIndices} from '../math/buildEdgeIndices.js';\nimport {geometryCompressionUtils} from '../math/geometryCompressionUtils.js';\n\nconst memoryStats = stats.memory;\nconst bigIndicesSupported = WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\nconst IndexArrayType = bigIndicesSupported ? Uint32Array : Uint16Array;\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](http://xeokit.github.io/xeokit-sdk/examples/#geometry_VBOGeometry)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {VBOGeometry} from \"../src/scene/geometry/VBOGeometry.js\"\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.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 if (!bigIndicesSupported && cfg.indices.constructor === Uint32Array) {\n this.error(\"This WebGL implementation does not support Uint32Array\");\n return; // TODO: Recover?\n }\n\n {\n const indices = (cfg.indices.constructor === Uint32Array || cfg.indices.constructor === Uint16Array) ? cfg.indices : new IndexArrayType(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};", @@ -91215,7 +91199,7 @@ "lineNumber": 1 }, { - "__docId__": 4820, + "__docId__": 4811, "kind": "variable", "name": "memoryStats", "memberof": "src/viewer/scene/geometry/VBOGeometry.js", @@ -91236,7 +91220,7 @@ "ignore": true }, { - "__docId__": 4821, + "__docId__": 4812, "kind": "variable", "name": "bigIndicesSupported", "memberof": "src/viewer/scene/geometry/VBOGeometry.js", @@ -91257,7 +91241,7 @@ "ignore": true }, { - "__docId__": 4822, + "__docId__": 4813, "kind": "variable", "name": "IndexArrayType", "memberof": "src/viewer/scene/geometry/VBOGeometry.js", @@ -91278,7 +91262,7 @@ "ignore": true }, { - "__docId__": 4823, + "__docId__": 4814, "kind": "variable", "name": "tempAABB", "memberof": "src/viewer/scene/geometry/VBOGeometry.js", @@ -91299,7 +91283,7 @@ "ignore": true }, { - "__docId__": 4824, + "__docId__": 4815, "kind": "class", "name": "VBOGeometry", "memberof": "src/viewer/scene/geometry/VBOGeometry.js", @@ -91317,7 +91301,7 @@ ] }, { - "__docId__": 4825, + "__docId__": 4816, "kind": "get", "name": "type", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91336,7 +91320,7 @@ } }, { - "__docId__": 4826, + "__docId__": 4817, "kind": "get", "name": "isVBOGeometry", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91369,7 +91353,7 @@ } }, { - "__docId__": 4827, + "__docId__": 4818, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91494,7 +91478,7 @@ ] }, { - "__docId__": 4828, + "__docId__": 4819, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91512,7 +91496,7 @@ } }, { - "__docId__": 4829, + "__docId__": 4820, "kind": "member", "name": "_numTriangles", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91530,7 +91514,7 @@ } }, { - "__docId__": 4830, + "__docId__": 4821, "kind": "member", "name": "_edgeThreshold", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91548,7 +91532,7 @@ } }, { - "__docId__": 4831, + "__docId__": 4822, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91566,7 +91550,7 @@ } }, { - "__docId__": 4832, + "__docId__": 4823, "kind": "member", "name": "_obb", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91584,7 +91568,7 @@ } }, { - "__docId__": 4833, + "__docId__": 4824, "kind": "member", "name": "_edgeIndicesBuf", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91602,7 +91586,7 @@ } }, { - "__docId__": 4835, + "__docId__": 4826, "kind": "method", "name": "_buildHash", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91619,7 +91603,7 @@ "return": null }, { - "__docId__": 4836, + "__docId__": 4827, "kind": "method", "name": "_getEdgeIndices", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91640,7 +91624,7 @@ } }, { - "__docId__": 4837, + "__docId__": 4828, "kind": "get", "name": "primitive", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91661,7 +91645,7 @@ } }, { - "__docId__": 4838, + "__docId__": 4829, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91682,7 +91666,7 @@ } }, { - "__docId__": 4839, + "__docId__": 4830, "kind": "get", "name": "obb", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91703,7 +91687,7 @@ } }, { - "__docId__": 4840, + "__docId__": 4831, "kind": "get", "name": "numTriangles", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91724,7 +91708,7 @@ } }, { - "__docId__": 4841, + "__docId__": 4832, "kind": "method", "name": "_getState", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91744,7 +91728,7 @@ } }, { - "__docId__": 4842, + "__docId__": 4833, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/geometry/VBOGeometry.js~VBOGeometry", @@ -91759,7 +91743,7 @@ "return": null }, { - "__docId__": 4843, + "__docId__": 4834, "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](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildBoxGeometry)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildBoxGeometry} from \"../src/scene/geometry/builders/buildBoxGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.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", @@ -91770,7 +91754,7 @@ "lineNumber": 1 }, { - "__docId__": 4844, + "__docId__": 4835, "kind": "function", "name": "buildBoxGeometry", "memberof": "src/viewer/scene/geometry/builders/buildBoxGeometry.js", @@ -91872,7 +91856,7 @@ } }, { - "__docId__": 4845, + "__docId__": 4836, "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](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildBoxLinesGeometry)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildBoxLinesGeometry} from \"../src/scene/geometry/builders/buildBoxLinesGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.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\nexport {buildBoxLinesGeometry};\n", @@ -91883,7 +91867,7 @@ "lineNumber": 1 }, { - "__docId__": 4846, + "__docId__": 4837, "kind": "function", "name": "buildBoxLinesGeometry", "memberof": "src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js", @@ -91985,7 +91969,7 @@ } }, { - "__docId__": 4847, + "__docId__": 4838, "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](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildCylinderGeometry)]\n *\n * ````javascript\n *\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildCylinderGeometry} from \"../src/scene/geometry/builders/buildCylinderGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.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", @@ -91996,7 +91980,7 @@ "lineNumber": 1 }, { - "__docId__": 4848, + "__docId__": 4839, "kind": "function", "name": "buildCylinderGeometry", "memberof": "src/viewer/scene/geometry/builders/buildCylinderGeometry.js", @@ -92134,7 +92118,7 @@ } }, { - "__docId__": 4849, + "__docId__": 4840, "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](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildGridGeometry)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildGridGeometry} from \"../src/scene/geometry/builders/buildGridGeometry.js\";\n * import {VBOGeometry} from \"../src/scene/geometry/VBOGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.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", @@ -92145,7 +92129,7 @@ "lineNumber": 1 }, { - "__docId__": 4850, + "__docId__": 4841, "kind": "function", "name": "buildGridGeometry", "memberof": "src/viewer/scene/geometry/builders/buildGridGeometry.js", @@ -92225,7 +92209,7 @@ } }, { - "__docId__": 4851, + "__docId__": 4842, "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](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildPlaneGeometry)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildPlaneGeometry} from \"../src/scene/geometry/builders/buildPlaneGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.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", @@ -92236,7 +92220,7 @@ "lineNumber": 1 }, { - "__docId__": 4852, + "__docId__": 4843, "kind": "function", "name": "buildPlaneGeometry", "memberof": "src/viewer/scene/geometry/builders/buildPlaneGeometry.js", @@ -92350,7 +92334,7 @@ } }, { - "__docId__": 4853, + "__docId__": 4844, "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](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildSphereGeometry)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildSphereGeometry} from \"../src/scene/geometry/builders/buildSphereGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.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", @@ -92361,7 +92345,7 @@ "lineNumber": 1 }, { - "__docId__": 4854, + "__docId__": 4845, "kind": "function", "name": "buildSphereGeometry", "memberof": "src/viewer/scene/geometry/builders/buildSphereGeometry.js", @@ -92463,7 +92447,7 @@ } }, { - "__docId__": 4855, + "__docId__": 4846, "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](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildTorusGeometry)]\n * \n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildTorusGeometry} from \"../src/scene/geometry/builders/buildTorusGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.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", @@ -92474,7 +92458,7 @@ "lineNumber": 1 }, { - "__docId__": 4856, + "__docId__": 4847, "kind": "function", "name": "buildTorusGeometry", "memberof": "src/viewer/scene/geometry/builders/buildTorusGeometry.js", @@ -92600,7 +92584,7 @@ } }, { - "__docId__": 4857, + "__docId__": 4848, "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](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildVectorTextGeometry)]\n *\n * ````javascript\n *\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildVectorTextGeometry} from \"../src/scene/geometry/builders/buildVectorTextGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.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", @@ -92611,7 +92595,7 @@ "lineNumber": 1 }, { - "__docId__": 4858, + "__docId__": 4849, "kind": "variable", "name": "letters", "memberof": "src/viewer/scene/geometry/builders/buildVectorTextGeometry.js", @@ -92632,7 +92616,7 @@ "ignore": true }, { - "__docId__": 4859, + "__docId__": 4850, "kind": "function", "name": "buildVectorTextGeometry", "memberof": "src/viewer/scene/geometry/builders/buildVectorTextGeometry.js", @@ -92732,7 +92716,7 @@ } }, { - "__docId__": 4860, + "__docId__": 4851, "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 * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_loaders_3DS)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {load3DSGeometry} from \"../src/scene/geometry/loaders/load3DSGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.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", @@ -92743,7 +92727,7 @@ "lineNumber": 1 }, { - "__docId__": 4861, + "__docId__": 4852, "kind": "function", "name": "load3DSGeometry", "memberof": "src/viewer/scene/geometry/loaders/load3DSGeometry.js", @@ -92809,7 +92793,7 @@ } }, { - "__docId__": 4862, + "__docId__": 4853, "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 * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_loaders_OBJ)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {loadOBJGeometry} from \"../src/scene/geometry/loaders/loadOBJGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {MetallicMaterial} from \"../src/scene/materials/MetallicMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.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", @@ -92820,7 +92804,7 @@ "lineNumber": 1 }, { - "__docId__": 4863, + "__docId__": 4854, "kind": "function", "name": "loadOBJGeometry", "memberof": "src/viewer/scene/geometry/loaders/loadOBJGeometry.js", @@ -92886,7 +92870,7 @@ } }, { - "__docId__": 4864, + "__docId__": 4855, "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 \"../src/viewer/Viewer.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._bindEvents();\n }\n\n _bindEvents() {\n\n if (this._eventsBound) {\n return;\n }\n\n document.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 document.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 this.element.addEventListener(\"mousemove\", this._mouseMoveListener = (e) => {\n if (!this.enabled) {\n return;\n }\n this._getMouseCanvasPos(e);\n this.fire(\"mousemove\", this.mouseCanvasPos, true);\n if (this.mouseover) {\n e.preventDefault();\n }\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 this.fire(\"mousewheel\", delta, true);\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 // VR\n\n {\n\n const orientationAngleLookup = {\n 'landscape-primary': 90,\n 'landscape-secondary': -90,\n 'portrait-secondary': 180,\n 'portrait-primary': 0\n };\n\n let orientation;\n let orientationAngle;\n const acceleration = math.vec3();\n const accelerationIncludingGravity = math.vec3();\n\n const orientationChangeEvent = {\n orientation: null,\n orientationAngle: 0\n };\n\n const deviceMotionEvent = {\n orientationAngle: 0,\n acceleration: null,\n accelerationIncludingGravity: accelerationIncludingGravity,\n rotationRate: math.vec3(),\n interval: 0\n };\n\n const deviceOrientationEvent = {\n alpha: 0,\n beta: 0,\n gamma: 0,\n absolute: false\n };\n\n if (window.OrientationChangeEvent) {\n window.addEventListener('orientationchange', this._orientationchangedListener = () => {\n\n orientation = window.screen.orientation || window.screen.mozOrientation || window.msOrientation || null;\n orientationAngle = orientation ? (orientationAngleLookup[orientation] || 0) : 0;\n\n orientationChangeEvent.orientation = orientation;\n orientationChangeEvent.orientationAngle = orientationAngle;\n\n /**\n * Fired when the orientation of the device has changed.\n *\n * @event orientationchange\n * @param orientation The orientation: \"landscape-primary\", \"landscape-secondary\", \"portrait-secondary\" or \"portrait-primary\"\n * @param orientationAngle The orientation angle in degrees: 90 for landscape-primary, -90 for landscape-secondary, 180 for portrait-secondary or 0 for portrait-primary.\n */\n this.fire(\"orientationchange\", orientationChangeEvent);\n },\n false);\n }\n\n if (window.DeviceMotionEvent) {\n window.addEventListener('devicemotion', this._deviceMotionListener = (e) => {\n\n deviceMotionEvent.interval = e.interval;\n deviceMotionEvent.orientationAngle = orientationAngle;\n\n const accel = e.acceleration;\n\n if (accel) {\n acceleration[0] = accel.x;\n acceleration[1] = accel.y;\n acceleration[2] = accel.z;\n deviceMotionEvent.acceleration = acceleration;\n } else {\n deviceMotionEvent.acceleration = null;\n }\n\n const accelGrav = e.accelerationIncludingGravity;\n\n if (accelGrav) {\n accelerationIncludingGravity[0] = accelGrav.x;\n accelerationIncludingGravity[1] = accelGrav.y;\n accelerationIncludingGravity[2] = accelGrav.z;\n deviceMotionEvent.accelerationIncludingGravity = accelerationIncludingGravity;\n } else {\n deviceMotionEvent.accelerationIncludingGravity = null;\n }\n\n deviceMotionEvent.rotationRate = e.rotationRate;\n\n /**\n * Fires on a regular interval and returns data about the rotation\n * (in degrees per second) and acceleration (in meters per second squared) of the device, at that moment in\n * time. Some devices do not have the hardware to exclude the effect of gravity.\n *\n * @event devicemotion\n * @param Float32Array acceleration The acceleration of the device, in meters per second squared, as a 3-element vector. This value has taken into account the effect of gravity and removed it from the figures. This value may not exist if the hardware doesn't know how to remove gravity from the acceleration data.\n * @param Float32Array accelerationIncludingGravity The acceleration of the device, in meters per second squared, as a 3-element vector. This value includes the effect of gravity, and may be the only value available on devices that don't have a gyroscope to allow them to properly remove gravity from the data.\n * @param, Number interval The interval, in milliseconds, at which this event is fired. The next event will be fired in approximately this amount of time.\n * @param Float32Array rotationRate The rates of rotation of the device about each axis, in degrees per second.\n */\n this.fire(\"devicemotion\", deviceMotionEvent);\n },\n false);\n }\n\n if (window.DeviceOrientationEvent) {\n window.addEventListener(\"deviceorientation\", this._deviceOrientListener = (e) => {\n\n deviceOrientationEvent.gamma = e.gamma;\n deviceOrientationEvent.beta = e.beta;\n deviceOrientationEvent.alpha = e.alpha;\n deviceOrientationEvent.absolute = e.absolute;\n\n /**\n * Fired when fresh data is available from an orientation sensor about the current orientation\n * of the device as compared to the Earth coordinate frame. This data is gathered from a\n * magnetometer inside the device. See\n * Orientation and motion data explained for more info.\n *\n * @event deviceorientation\n * @param Number alpha The current orientation of the device around the Z axis in degrees; that is, how far the device is rotated around a line perpendicular to the device.\n * @param Number beta The current orientation of the device around the X axis in degrees; that is, how far the device is tipped forward or backward.\n * @param Number gamma The current orientation of the device around the Y axis in degrees; that is, how far the device is turned left or right.\n * @param Boolean absolute This value is true if the orientation is provided as a difference between the device coordinate frame and the Earth coordinate frame; if the device can't detect the Earth coordinate frame, this value is false.\n */\n this.fire(\"deviceorientation\", deviceOrientationEvent);\n },\n false);\n }\n }\n this._eventsBound = true;\n }\n\n _unbindEvents() {\n if (!this._eventsBound) {\n return;\n }\n document.removeEventListener(\"keydown\", this._keyDownListener);\n document.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", @@ -92897,7 +92881,7 @@ "lineNumber": 1 }, { - "__docId__": 4865, + "__docId__": 4856, "kind": "class", "name": "Input", "memberof": "src/viewer/scene/input/Input.js", @@ -92915,7 +92899,7 @@ ] }, { - "__docId__": 4866, + "__docId__": 4857, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -92929,7 +92913,7 @@ "ignore": true }, { - "__docId__": 4867, + "__docId__": 4858, "kind": "member", "name": "KEY_BACKSPACE", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -92966,7 +92950,7 @@ } }, { - "__docId__": 4868, + "__docId__": 4859, "kind": "member", "name": "KEY_TAB", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93003,7 +92987,7 @@ } }, { - "__docId__": 4869, + "__docId__": 4860, "kind": "member", "name": "KEY_ENTER", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93040,7 +93024,7 @@ } }, { - "__docId__": 4870, + "__docId__": 4861, "kind": "member", "name": "KEY_SHIFT", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93077,7 +93061,7 @@ } }, { - "__docId__": 4871, + "__docId__": 4862, "kind": "member", "name": "KEY_CTRL", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93114,7 +93098,7 @@ } }, { - "__docId__": 4872, + "__docId__": 4863, "kind": "member", "name": "KEY_ALT", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93151,7 +93135,7 @@ } }, { - "__docId__": 4873, + "__docId__": 4864, "kind": "member", "name": "KEY_PAUSE_BREAK", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93188,7 +93172,7 @@ } }, { - "__docId__": 4874, + "__docId__": 4865, "kind": "member", "name": "KEY_CAPS_LOCK", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93225,7 +93209,7 @@ } }, { - "__docId__": 4875, + "__docId__": 4866, "kind": "member", "name": "KEY_ESCAPE", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93262,7 +93246,7 @@ } }, { - "__docId__": 4876, + "__docId__": 4867, "kind": "member", "name": "KEY_PAGE_UP", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93299,7 +93283,7 @@ } }, { - "__docId__": 4877, + "__docId__": 4868, "kind": "member", "name": "KEY_PAGE_DOWN", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93336,7 +93320,7 @@ } }, { - "__docId__": 4878, + "__docId__": 4869, "kind": "member", "name": "KEY_END", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93373,7 +93357,7 @@ } }, { - "__docId__": 4879, + "__docId__": 4870, "kind": "member", "name": "KEY_HOME", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93410,7 +93394,7 @@ } }, { - "__docId__": 4880, + "__docId__": 4871, "kind": "member", "name": "KEY_LEFT_ARROW", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93447,7 +93431,7 @@ } }, { - "__docId__": 4881, + "__docId__": 4872, "kind": "member", "name": "KEY_UP_ARROW", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93484,7 +93468,7 @@ } }, { - "__docId__": 4882, + "__docId__": 4873, "kind": "member", "name": "KEY_RIGHT_ARROW", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93521,7 +93505,7 @@ } }, { - "__docId__": 4883, + "__docId__": 4874, "kind": "member", "name": "KEY_DOWN_ARROW", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93558,7 +93542,7 @@ } }, { - "__docId__": 4884, + "__docId__": 4875, "kind": "member", "name": "KEY_INSERT", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93595,7 +93579,7 @@ } }, { - "__docId__": 4885, + "__docId__": 4876, "kind": "member", "name": "KEY_DELETE", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93632,7 +93616,7 @@ } }, { - "__docId__": 4886, + "__docId__": 4877, "kind": "member", "name": "KEY_NUM_0", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93669,7 +93653,7 @@ } }, { - "__docId__": 4887, + "__docId__": 4878, "kind": "member", "name": "KEY_NUM_1", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93706,7 +93690,7 @@ } }, { - "__docId__": 4888, + "__docId__": 4879, "kind": "member", "name": "KEY_NUM_2", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93743,7 +93727,7 @@ } }, { - "__docId__": 4889, + "__docId__": 4880, "kind": "member", "name": "KEY_NUM_3", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93780,7 +93764,7 @@ } }, { - "__docId__": 4890, + "__docId__": 4881, "kind": "member", "name": "KEY_NUM_4", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93817,7 +93801,7 @@ } }, { - "__docId__": 4891, + "__docId__": 4882, "kind": "member", "name": "KEY_NUM_5", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93854,7 +93838,7 @@ } }, { - "__docId__": 4892, + "__docId__": 4883, "kind": "member", "name": "KEY_NUM_6", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93891,7 +93875,7 @@ } }, { - "__docId__": 4893, + "__docId__": 4884, "kind": "member", "name": "KEY_NUM_7", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93928,7 +93912,7 @@ } }, { - "__docId__": 4894, + "__docId__": 4885, "kind": "member", "name": "KEY_NUM_8", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -93965,7 +93949,7 @@ } }, { - "__docId__": 4895, + "__docId__": 4886, "kind": "member", "name": "KEY_NUM_9", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94002,7 +93986,7 @@ } }, { - "__docId__": 4896, + "__docId__": 4887, "kind": "member", "name": "KEY_A", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94039,7 +94023,7 @@ } }, { - "__docId__": 4897, + "__docId__": 4888, "kind": "member", "name": "KEY_B", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94076,7 +94060,7 @@ } }, { - "__docId__": 4898, + "__docId__": 4889, "kind": "member", "name": "KEY_C", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94113,7 +94097,7 @@ } }, { - "__docId__": 4899, + "__docId__": 4890, "kind": "member", "name": "KEY_D", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94150,7 +94134,7 @@ } }, { - "__docId__": 4900, + "__docId__": 4891, "kind": "member", "name": "KEY_E", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94187,7 +94171,7 @@ } }, { - "__docId__": 4901, + "__docId__": 4892, "kind": "member", "name": "KEY_F", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94224,7 +94208,7 @@ } }, { - "__docId__": 4902, + "__docId__": 4893, "kind": "member", "name": "KEY_G", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94261,7 +94245,7 @@ } }, { - "__docId__": 4903, + "__docId__": 4894, "kind": "member", "name": "KEY_H", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94298,7 +94282,7 @@ } }, { - "__docId__": 4904, + "__docId__": 4895, "kind": "member", "name": "KEY_I", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94335,7 +94319,7 @@ } }, { - "__docId__": 4905, + "__docId__": 4896, "kind": "member", "name": "KEY_J", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94372,7 +94356,7 @@ } }, { - "__docId__": 4906, + "__docId__": 4897, "kind": "member", "name": "KEY_K", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94409,7 +94393,7 @@ } }, { - "__docId__": 4907, + "__docId__": 4898, "kind": "member", "name": "KEY_L", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94446,7 +94430,7 @@ } }, { - "__docId__": 4908, + "__docId__": 4899, "kind": "member", "name": "KEY_M", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94483,7 +94467,7 @@ } }, { - "__docId__": 4909, + "__docId__": 4900, "kind": "member", "name": "KEY_N", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94520,7 +94504,7 @@ } }, { - "__docId__": 4910, + "__docId__": 4901, "kind": "member", "name": "KEY_O", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94557,7 +94541,7 @@ } }, { - "__docId__": 4911, + "__docId__": 4902, "kind": "member", "name": "KEY_P", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94594,7 +94578,7 @@ } }, { - "__docId__": 4912, + "__docId__": 4903, "kind": "member", "name": "KEY_Q", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94631,7 +94615,7 @@ } }, { - "__docId__": 4913, + "__docId__": 4904, "kind": "member", "name": "KEY_R", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94668,7 +94652,7 @@ } }, { - "__docId__": 4914, + "__docId__": 4905, "kind": "member", "name": "KEY_S", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94705,7 +94689,7 @@ } }, { - "__docId__": 4915, + "__docId__": 4906, "kind": "member", "name": "KEY_T", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94742,7 +94726,7 @@ } }, { - "__docId__": 4916, + "__docId__": 4907, "kind": "member", "name": "KEY_U", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94779,7 +94763,7 @@ } }, { - "__docId__": 4917, + "__docId__": 4908, "kind": "member", "name": "KEY_V", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94816,7 +94800,7 @@ } }, { - "__docId__": 4918, + "__docId__": 4909, "kind": "member", "name": "KEY_W", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94853,7 +94837,7 @@ } }, { - "__docId__": 4919, + "__docId__": 4910, "kind": "member", "name": "KEY_X", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94890,7 +94874,7 @@ } }, { - "__docId__": 4920, + "__docId__": 4911, "kind": "member", "name": "KEY_Y", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94927,7 +94911,7 @@ } }, { - "__docId__": 4921, + "__docId__": 4912, "kind": "member", "name": "KEY_Z", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -94964,7 +94948,7 @@ } }, { - "__docId__": 4922, + "__docId__": 4913, "kind": "member", "name": "KEY_LEFT_WINDOW", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95001,7 +94985,7 @@ } }, { - "__docId__": 4923, + "__docId__": 4914, "kind": "member", "name": "KEY_RIGHT_WINDOW", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95038,7 +95022,7 @@ } }, { - "__docId__": 4924, + "__docId__": 4915, "kind": "member", "name": "KEY_SELECT_KEY", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95075,7 +95059,7 @@ } }, { - "__docId__": 4925, + "__docId__": 4916, "kind": "member", "name": "KEY_NUMPAD_0", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95112,7 +95096,7 @@ } }, { - "__docId__": 4926, + "__docId__": 4917, "kind": "member", "name": "KEY_NUMPAD_1", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95149,7 +95133,7 @@ } }, { - "__docId__": 4927, + "__docId__": 4918, "kind": "member", "name": "KEY_NUMPAD_2", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95186,7 +95170,7 @@ } }, { - "__docId__": 4928, + "__docId__": 4919, "kind": "member", "name": "KEY_NUMPAD_3", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95223,7 +95207,7 @@ } }, { - "__docId__": 4929, + "__docId__": 4920, "kind": "member", "name": "KEY_NUMPAD_4", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95260,7 +95244,7 @@ } }, { - "__docId__": 4930, + "__docId__": 4921, "kind": "member", "name": "KEY_NUMPAD_5", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95297,7 +95281,7 @@ } }, { - "__docId__": 4931, + "__docId__": 4922, "kind": "member", "name": "KEY_NUMPAD_6", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95334,7 +95318,7 @@ } }, { - "__docId__": 4932, + "__docId__": 4923, "kind": "member", "name": "KEY_NUMPAD_7", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95371,7 +95355,7 @@ } }, { - "__docId__": 4933, + "__docId__": 4924, "kind": "member", "name": "KEY_NUMPAD_8", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95408,7 +95392,7 @@ } }, { - "__docId__": 4934, + "__docId__": 4925, "kind": "member", "name": "KEY_NUMPAD_9", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95445,7 +95429,7 @@ } }, { - "__docId__": 4935, + "__docId__": 4926, "kind": "member", "name": "KEY_MULTIPLY", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95482,7 +95466,7 @@ } }, { - "__docId__": 4936, + "__docId__": 4927, "kind": "member", "name": "KEY_ADD", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95519,7 +95503,7 @@ } }, { - "__docId__": 4937, + "__docId__": 4928, "kind": "member", "name": "KEY_SUBTRACT", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95556,7 +95540,7 @@ } }, { - "__docId__": 4938, + "__docId__": 4929, "kind": "member", "name": "KEY_DECIMAL_POINT", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95593,7 +95577,7 @@ } }, { - "__docId__": 4939, + "__docId__": 4930, "kind": "member", "name": "KEY_DIVIDE", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95630,7 +95614,7 @@ } }, { - "__docId__": 4940, + "__docId__": 4931, "kind": "member", "name": "KEY_F1", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95667,7 +95651,7 @@ } }, { - "__docId__": 4941, + "__docId__": 4932, "kind": "member", "name": "KEY_F2", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95704,7 +95688,7 @@ } }, { - "__docId__": 4942, + "__docId__": 4933, "kind": "member", "name": "KEY_F3", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95741,7 +95725,7 @@ } }, { - "__docId__": 4943, + "__docId__": 4934, "kind": "member", "name": "KEY_F4", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95778,7 +95762,7 @@ } }, { - "__docId__": 4944, + "__docId__": 4935, "kind": "member", "name": "KEY_F5", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95815,7 +95799,7 @@ } }, { - "__docId__": 4945, + "__docId__": 4936, "kind": "member", "name": "KEY_F6", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95852,7 +95836,7 @@ } }, { - "__docId__": 4946, + "__docId__": 4937, "kind": "member", "name": "KEY_F7", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95889,7 +95873,7 @@ } }, { - "__docId__": 4947, + "__docId__": 4938, "kind": "member", "name": "KEY_F8", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95926,7 +95910,7 @@ } }, { - "__docId__": 4948, + "__docId__": 4939, "kind": "member", "name": "KEY_F9", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -95963,7 +95947,7 @@ } }, { - "__docId__": 4949, + "__docId__": 4940, "kind": "member", "name": "KEY_F10", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96000,7 +95984,7 @@ } }, { - "__docId__": 4950, + "__docId__": 4941, "kind": "member", "name": "KEY_F11", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96037,7 +96021,7 @@ } }, { - "__docId__": 4951, + "__docId__": 4942, "kind": "member", "name": "KEY_F12", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96074,7 +96058,7 @@ } }, { - "__docId__": 4952, + "__docId__": 4943, "kind": "member", "name": "KEY_NUM_LOCK", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96111,7 +96095,7 @@ } }, { - "__docId__": 4953, + "__docId__": 4944, "kind": "member", "name": "KEY_SCROLL_LOCK", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96148,7 +96132,7 @@ } }, { - "__docId__": 4954, + "__docId__": 4945, "kind": "member", "name": "KEY_SEMI_COLON", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96185,7 +96169,7 @@ } }, { - "__docId__": 4955, + "__docId__": 4946, "kind": "member", "name": "KEY_EQUAL_SIGN", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96222,7 +96206,7 @@ } }, { - "__docId__": 4956, + "__docId__": 4947, "kind": "member", "name": "KEY_COMMA", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96259,7 +96243,7 @@ } }, { - "__docId__": 4957, + "__docId__": 4948, "kind": "member", "name": "KEY_DASH", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96296,7 +96280,7 @@ } }, { - "__docId__": 4958, + "__docId__": 4949, "kind": "member", "name": "KEY_PERIOD", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96333,7 +96317,7 @@ } }, { - "__docId__": 4959, + "__docId__": 4950, "kind": "member", "name": "KEY_FORWARD_SLASH", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96370,7 +96354,7 @@ } }, { - "__docId__": 4960, + "__docId__": 4951, "kind": "member", "name": "KEY_GRAVE_ACCENT", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96407,7 +96391,7 @@ } }, { - "__docId__": 4961, + "__docId__": 4952, "kind": "member", "name": "KEY_OPEN_BRACKET", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96444,7 +96428,7 @@ } }, { - "__docId__": 4962, + "__docId__": 4953, "kind": "member", "name": "KEY_BACK_SLASH", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96481,7 +96465,7 @@ } }, { - "__docId__": 4963, + "__docId__": 4954, "kind": "member", "name": "KEY_CLOSE_BRACKET", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96518,7 +96502,7 @@ } }, { - "__docId__": 4964, + "__docId__": 4955, "kind": "member", "name": "KEY_SINGLE_QUOTE", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96555,7 +96539,7 @@ } }, { - "__docId__": 4965, + "__docId__": 4956, "kind": "member", "name": "KEY_SPACE", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96592,7 +96576,7 @@ } }, { - "__docId__": 4966, + "__docId__": 4957, "kind": "member", "name": "element", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96617,7 +96601,7 @@ } }, { - "__docId__": 4967, + "__docId__": 4958, "kind": "member", "name": "altDown", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96636,7 +96620,7 @@ } }, { - "__docId__": 4968, + "__docId__": 4959, "kind": "member", "name": "ctrlDown", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96655,7 +96639,7 @@ } }, { - "__docId__": 4969, + "__docId__": 4960, "kind": "member", "name": "mouseDownLeft", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96674,7 +96658,7 @@ } }, { - "__docId__": 4970, + "__docId__": 4961, "kind": "member", "name": "mouseDownMiddle", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96693,7 +96677,7 @@ } }, { - "__docId__": 4971, + "__docId__": 4962, "kind": "member", "name": "mouseDownRight", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96712,7 +96696,7 @@ } }, { - "__docId__": 4972, + "__docId__": 4963, "kind": "member", "name": "keyDown", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96731,7 +96715,7 @@ } }, { - "__docId__": 4973, + "__docId__": 4964, "kind": "member", "name": "enabled", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96750,7 +96734,7 @@ } }, { - "__docId__": 4974, + "__docId__": 4965, "kind": "member", "name": "keyboardEnabled", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96769,7 +96753,7 @@ } }, { - "__docId__": 4975, + "__docId__": 4966, "kind": "member", "name": "mouseover", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96788,7 +96772,7 @@ } }, { - "__docId__": 4976, + "__docId__": 4967, "kind": "member", "name": "mouseCanvasPos", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96807,7 +96791,7 @@ } }, { - "__docId__": 4977, + "__docId__": 4968, "kind": "method", "name": "_bindEvents", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96824,7 +96808,7 @@ "return": null }, { - "__docId__": 4980, + "__docId__": 4971, "kind": "member", "name": "shiftDown", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96841,7 +96825,7 @@ } }, { - "__docId__": 5002, + "__docId__": 4993, "kind": "member", "name": "_eventsBound", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96859,7 +96843,7 @@ } }, { - "__docId__": 5003, + "__docId__": 4994, "kind": "method", "name": "_unbindEvents", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96876,7 +96860,7 @@ "return": null }, { - "__docId__": 5005, + "__docId__": 4996, "kind": "method", "name": "_getMouseCanvasPos", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96900,7 +96884,7 @@ "return": null }, { - "__docId__": 5006, + "__docId__": 4997, "kind": "method", "name": "setEnabled", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96926,7 +96910,7 @@ "return": null }, { - "__docId__": 5007, + "__docId__": 4998, "kind": "method", "name": "getEnabled", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96954,7 +96938,7 @@ "params": [] }, { - "__docId__": 5008, + "__docId__": 4999, "kind": "method", "name": "setKeyboardEnabled", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -96980,7 +96964,7 @@ "return": null }, { - "__docId__": 5010, + "__docId__": 5001, "kind": "method", "name": "getKeyboardEnabled", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -97008,7 +96992,7 @@ "params": [] }, { - "__docId__": 5011, + "__docId__": 5002, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/input/Input.js~Input", @@ -97024,7 +97008,7 @@ "return": null }, { - "__docId__": 5012, + "__docId__": 5003, "kind": "file", "name": "src/viewer/scene/libs/canvas2image.js", "content": "/*\n * Canvas2Image v0.1\n * Copyright (c) 2008 Jacob Seidelin, cupboy@gmail.com\n * MIT License [http://www.opensource.org/licenses/mit-license.php]\n *\n * Modified by @xeolabs to permit vertical flipping, so that snapshot can be taken from WebGL frame buffers,\n * which vertically flip image data as part of the way that WebGL renders textures.\n */\n\n/**\n * @private\n */\nconst Canvas2Image = (function () {\n // check if we have canvas support\n const oCanvas = document.createElement(\"canvas\"), sc = String.fromCharCode, strDownloadMime = \"image/octet-stream\",\n bReplaceDownloadMime = false;\n\n // no canvas, bail out.\n if (!oCanvas.getContext) {\n return {\n saveAsBMP: function () {\n },\n saveAsPNG: function () {\n },\n saveAsJPEG: function () {\n }\n }\n }\n\n const bHasImageData = !!(oCanvas.getContext(\"2d\").getImageData), bHasDataURL = !!(oCanvas.toDataURL),\n bHasBase64 = !!(window.btoa);\n\n // ok, we're good\n const readCanvasData = function (oCanvas) {\n const iWidth = parseInt(oCanvas.width), iHeight = parseInt(oCanvas.height);\n return oCanvas.getContext(\"2d\").getImageData(0, 0, iWidth, iHeight);\n };\n\n // base64 encodes either a string or an array of charcodes\n const encodeData = function (data) {\n let i, aData, strData = \"\";\n\n if (typeof data == \"string\") {\n strData = data;\n } else {\n aData = data;\n for (i = 0; i < aData.length; i++) {\n strData += sc(aData[i]);\n }\n }\n return btoa(strData);\n };\n\n // creates a base64 encoded string containing BMP data takes an imagedata object as argument\n const createBMP = function (oData) {\n let strHeader = '';\n const iWidth = oData.width;\n const iHeight = oData.height;\n\n strHeader += 'BM';\n\n let iFileSize = iWidth * iHeight * 4 + 54; // total header size = 54 bytes\n strHeader += sc(iFileSize % 256);\n iFileSize = Math.floor(iFileSize / 256);\n strHeader += sc(iFileSize % 256);\n iFileSize = Math.floor(iFileSize / 256);\n strHeader += sc(iFileSize % 256);\n iFileSize = Math.floor(iFileSize / 256);\n strHeader += sc(iFileSize % 256);\n\n strHeader += sc(0, 0, 0, 0, 54, 0, 0, 0); // data offset\n strHeader += sc(40, 0, 0, 0); // info header size\n\n let iImageWidth = iWidth;\n strHeader += sc(iImageWidth % 256);\n iImageWidth = Math.floor(iImageWidth / 256);\n strHeader += sc(iImageWidth % 256);\n iImageWidth = Math.floor(iImageWidth / 256);\n strHeader += sc(iImageWidth % 256);\n iImageWidth = Math.floor(iImageWidth / 256);\n strHeader += sc(iImageWidth % 256);\n\n let iImageHeight = iHeight;\n strHeader += sc(iImageHeight % 256);\n iImageHeight = Math.floor(iImageHeight / 256);\n strHeader += sc(iImageHeight % 256);\n iImageHeight = Math.floor(iImageHeight / 256);\n strHeader += sc(iImageHeight % 256);\n iImageHeight = Math.floor(iImageHeight / 256);\n strHeader += sc(iImageHeight % 256);\n\n strHeader += sc(1, 0, 32, 0); // num of planes & num of bits per pixel\n strHeader += sc(0, 0, 0, 0); // compression = none\n\n let iDataSize = iWidth * iHeight * 4;\n strHeader += sc(iDataSize % 256);\n iDataSize = Math.floor(iDataSize / 256);\n strHeader += sc(iDataSize % 256);\n iDataSize = Math.floor(iDataSize / 256);\n strHeader += sc(iDataSize % 256);\n iDataSize = Math.floor(iDataSize / 256);\n strHeader += sc(iDataSize % 256);\n\n strHeader += sc(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); // these bytes are not used\n\n const aImgData = oData.data;\n let strPixelData = \"\";\n let c;\n let x;\n let y = iHeight;\n let iOffsetX;\n let iOffsetY;\n let strPixelRow;\n\n do {\n iOffsetY = iWidth * (y - 1) * 4;\n strPixelRow = \"\";\n for (x = 0; x < iWidth; x++) {\n iOffsetX = 4 * x;\n strPixelRow += sc(\n aImgData[iOffsetY + iOffsetX + 2], // B\n aImgData[iOffsetY + iOffsetX + 1], // G\n aImgData[iOffsetY + iOffsetX], // R\n aImgData[iOffsetY + iOffsetX + 3] // A\n );\n }\n strPixelData += strPixelRow;\n } while (--y);\n\n return encodeData(strHeader + strPixelData);\n };\n\n // sends the generated file to the client\n const saveFile = function (strData) {\n if (!window.open(strData)) {\n document.location.href = strData;\n }\n };\n\n const makeDataURI = function (strData, strMime) {\n return \"data:\" + strMime + \";base64,\" + strData;\n };\n\n // generates a object containing the imagedata\n const makeImageObject = function (strSource) {\n const oImgElement = document.createElement(\"img\");\n oImgElement.src = strSource;\n return oImgElement;\n };\n\n const scaleCanvas = function (oCanvas, iWidth, iHeight, flipy) {\n if (iWidth && iHeight) {\n const oSaveCanvas = document.createElement(\"canvas\");\n oSaveCanvas.width = iWidth;\n oSaveCanvas.height = iHeight;\n oSaveCanvas.style.width = iWidth + \"px\";\n oSaveCanvas.style.height = iHeight + \"px\";\n const oSaveCtx = oSaveCanvas.getContext(\"2d\");\n if (flipy) {\n oSaveCtx.save();\n oSaveCtx.scale(1.0, -1.0);\n oSaveCtx.imageSmoothingEnabled = true;\n oSaveCtx.drawImage(oCanvas, 0, 0, oCanvas.width, oCanvas.height, 0, 0, iWidth, -iHeight);\n oSaveCtx.restore();\n } else {\n oSaveCtx.imageSmoothingEnabled = true;\n oSaveCtx.drawImage(oCanvas, 0, 0, oCanvas.width, oCanvas.height, 0, 0, iWidth, iHeight);\n }\n return oSaveCanvas;\n }\n return oCanvas;\n };\n\n return {\n saveAsPNG: function (oCanvas, bReturnImg, iWidth, iHeight, flipy) {\n if (!bHasDataURL) return false;\n const oScaledCanvas = scaleCanvas(oCanvas, iWidth, iHeight, flipy);\n const strMime = \"image/png\";\n const strData = oScaledCanvas.toDataURL(strMime);\n if (bReturnImg) {\n return makeImageObject(strData);\n } else {\n saveFile(bReplaceDownloadMime ? strData.replace(strMime, strDownloadMime) : strData);\n }\n return true;\n },\n\n saveAsJPEG: function (oCanvas, bReturnImg, iWidth, iHeight, flipy) {\n if (!bHasDataURL) return false;\n const oScaledCanvas = scaleCanvas(oCanvas, iWidth, iHeight, flipy);\n const strMime = \"image/jpeg\";\n const strData = oScaledCanvas.toDataURL(strMime);\n // check if browser actually supports jpeg by looking for the mime type in the data uri. if not, return false\n if (strData.indexOf(strMime) != 5) return false;\n if (bReturnImg) {\n return makeImageObject(strData);\n } else {\n saveFile(bReplaceDownloadMime ? strData.replace(strMime, strDownloadMime) : strData);\n }\n return true;\n },\n\n saveAsBMP: function (oCanvas, bReturnImg, iWidth, iHeight, flipy) {\n if (!(bHasDataURL && bHasImageData && bHasBase64)) return false;\n const oScaledCanvas = scaleCanvas(oCanvas, iWidth, iHeight, flipy);\n const strMime = \"image/bmp\";\n const oData = readCanvasData(oScaledCanvas), strImgData = createBMP(oData);\n if (bReturnImg) {\n return makeImageObject(makeDataURI(strImgData, strMime));\n } else {\n saveFile(makeDataURI(strImgData, strMime));\n }\n return true;\n }\n };\n})();\n\nexport {Canvas2Image};", @@ -97035,7 +97019,7 @@ "lineNumber": 1 }, { - "__docId__": 5013, + "__docId__": 5004, "kind": "variable", "name": "Canvas2Image", "memberof": "src/viewer/scene/libs/canvas2image.js", @@ -97055,7 +97039,7 @@ } }, { - "__docId__": 5014, + "__docId__": 5005, "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};", @@ -97066,7 +97050,7 @@ "lineNumber": 1 }, { - "__docId__": 5015, + "__docId__": 5006, "kind": "function", "name": "load", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97099,7 +97083,7 @@ "ignore": true }, { - "__docId__": 5016, + "__docId__": 5007, "kind": "function", "name": "save", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97132,7 +97116,7 @@ "ignore": true }, { - "__docId__": 5017, + "__docId__": 5008, "kind": "function", "name": "clone", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97163,7 +97147,7 @@ "ignore": true }, { - "__docId__": 5018, + "__docId__": 5009, "kind": "function", "name": "rf", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97200,7 +97184,7 @@ "ignore": true }, { - "__docId__": 5019, + "__docId__": 5010, "kind": "function", "name": "rsl", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97237,7 +97221,7 @@ "ignore": true }, { - "__docId__": 5020, + "__docId__": 5011, "kind": "function", "name": "ril", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97274,7 +97258,7 @@ "ignore": true }, { - "__docId__": 5021, + "__docId__": 5012, "kind": "function", "name": "rASCII0", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97311,7 +97295,7 @@ "ignore": true }, { - "__docId__": 5022, + "__docId__": 5013, "kind": "function", "name": "wf", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97350,7 +97334,7 @@ "ignore": true }, { - "__docId__": 5023, + "__docId__": 5014, "kind": "function", "name": "wsl", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97389,7 +97373,7 @@ "ignore": true }, { - "__docId__": 5024, + "__docId__": 5015, "kind": "function", "name": "wil", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97428,7 +97412,7 @@ "ignore": true }, { - "__docId__": 5025, + "__docId__": 5016, "kind": "function", "name": "_buffToStr", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97459,7 +97443,7 @@ } }, { - "__docId__": 5026, + "__docId__": 5017, "kind": "function", "name": "_strToBuff", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97490,7 +97474,7 @@ } }, { - "__docId__": 5027, + "__docId__": 5018, "kind": "function", "name": "_readLine", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97527,7 +97511,7 @@ } }, { - "__docId__": 5028, + "__docId__": 5019, "kind": "function", "name": "fromJSON", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97558,7 +97542,7 @@ "ignore": true }, { - "__docId__": 5029, + "__docId__": 5020, "kind": "function", "name": "toJSON", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97589,7 +97573,7 @@ "ignore": true }, { - "__docId__": 5030, + "__docId__": 5021, "kind": "function", "name": "fromOBJ", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97620,7 +97604,7 @@ "ignore": true }, { - "__docId__": 5031, + "__docId__": 5022, "kind": "function", "name": "fromMD2", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97651,7 +97635,7 @@ "ignore": true }, { - "__docId__": 5032, + "__docId__": 5023, "kind": "function", "name": "fromCollada", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97682,7 +97666,7 @@ "ignore": true }, { - "__docId__": 5033, + "__docId__": 5024, "kind": "function", "name": "_asset", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97713,7 +97697,7 @@ } }, { - "__docId__": 5034, + "__docId__": 5025, "kind": "function", "name": "_libGeometries", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97744,7 +97728,7 @@ } }, { - "__docId__": 5035, + "__docId__": 5026, "kind": "function", "name": "_getMesh", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97775,7 +97759,7 @@ } }, { - "__docId__": 5036, + "__docId__": 5027, "kind": "function", "name": "_libImages", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97806,7 +97790,7 @@ } }, { - "__docId__": 5037, + "__docId__": 5028, "kind": "function", "name": "_libMaterials", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97837,7 +97821,7 @@ } }, { - "__docId__": 5038, + "__docId__": 5029, "kind": "function", "name": "_libEffects", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97868,7 +97852,7 @@ } }, { - "__docId__": 5039, + "__docId__": 5030, "kind": "function", "name": "from3DS", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97899,7 +97883,7 @@ "ignore": true }, { - "__docId__": 5040, + "__docId__": 5031, "kind": "function", "name": "_edit3ds", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97942,7 +97926,7 @@ } }, { - "__docId__": 5041, + "__docId__": 5032, "kind": "function", "name": "_keyf3ds", "memberof": "src/viewer/scene/libs/k3d.js", @@ -97985,7 +97969,7 @@ } }, { - "__docId__": 5042, + "__docId__": 5033, "kind": "function", "name": "_keyf_objdes", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98028,7 +98012,7 @@ } }, { - "__docId__": 5043, + "__docId__": 5034, "kind": "function", "name": "_keyf_objhierarch", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98071,7 +98055,7 @@ } }, { - "__docId__": 5044, + "__docId__": 5035, "kind": "function", "name": "_edit_object", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98114,7 +98098,7 @@ } }, { - "__docId__": 5045, + "__docId__": 5036, "kind": "function", "name": "_obj_trimesh", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98157,7 +98141,7 @@ } }, { - "__docId__": 5046, + "__docId__": 5037, "kind": "function", "name": "_tri_vertexl", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98200,7 +98184,7 @@ } }, { - "__docId__": 5047, + "__docId__": 5038, "kind": "function", "name": "_tri_facel1", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98243,7 +98227,7 @@ } }, { - "__docId__": 5048, + "__docId__": 5039, "kind": "function", "name": "_tri_mappingcoors", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98286,7 +98270,7 @@ } }, { - "__docId__": 5049, + "__docId__": 5040, "kind": "function", "name": "_tri_local", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98329,7 +98313,7 @@ } }, { - "__docId__": 5050, + "__docId__": 5041, "kind": "function", "name": "fromBIV", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98360,7 +98344,7 @@ "ignore": true }, { - "__docId__": 5051, + "__docId__": 5042, "kind": "function", "name": "toBIV", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98391,7 +98375,7 @@ "ignore": true }, { - "__docId__": 5052, + "__docId__": 5043, "kind": "function", "name": "_readFloats", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98434,7 +98418,7 @@ } }, { - "__docId__": 5053, + "__docId__": 5044, "kind": "function", "name": "_writeFloats", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98473,7 +98457,7 @@ "return": null }, { - "__docId__": 5054, + "__docId__": 5045, "kind": "function", "name": "_readInts", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98522,7 +98506,7 @@ } }, { - "__docId__": 5055, + "__docId__": 5046, "kind": "function", "name": "_writeInts", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98567,7 +98551,7 @@ "return": null }, { - "__docId__": 5056, + "__docId__": 5047, "kind": "function", "name": "Plane", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98616,7 +98600,7 @@ "ignore": true }, { - "__docId__": 5057, + "__docId__": 5048, "kind": "function", "name": "Cube", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98640,7 +98624,7 @@ "ignore": true }, { - "__docId__": 5058, + "__docId__": 5049, "kind": "function", "name": "Sphere", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98677,7 +98661,7 @@ "ignore": true }, { - "__docId__": 5059, + "__docId__": 5050, "kind": "function", "name": "scale", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98720,7 +98704,7 @@ "ignore": true }, { - "__docId__": 5060, + "__docId__": 5051, "kind": "function", "name": "translate", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98763,7 +98747,7 @@ "ignore": true }, { - "__docId__": 5061, + "__docId__": 5052, "kind": "function", "name": "rotateDeg", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98806,7 +98790,7 @@ "ignore": true }, { - "__docId__": 5062, + "__docId__": 5053, "kind": "function", "name": "rotate", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98849,7 +98833,7 @@ "ignore": true }, { - "__docId__": 5063, + "__docId__": 5054, "kind": "function", "name": "interpolate", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98894,7 +98878,7 @@ "ignore": true }, { - "__docId__": 5064, + "__docId__": 5055, "kind": "function", "name": "transform", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98927,7 +98911,7 @@ "ignore": true }, { - "__docId__": 5065, + "__docId__": 5056, "kind": "function", "name": "unwrap", "memberof": "src/viewer/scene/libs/k3d.js", @@ -98970,7 +98954,7 @@ "ignore": true }, { - "__docId__": 5066, + "__docId__": 5057, "kind": "function", "name": "remap", "memberof": "src/viewer/scene/libs/k3d.js", @@ -99019,7 +99003,7 @@ "ignore": true }, { - "__docId__": 5067, + "__docId__": 5058, "kind": "function", "name": "getAABB", "memberof": "src/viewer/scene/libs/k3d.js", @@ -99050,7 +99034,7 @@ "ignore": true }, { - "__docId__": 5068, + "__docId__": 5059, "kind": "variable", "name": "K3D", "memberof": "src/viewer/scene/libs/k3d.js", @@ -99070,7 +99054,7 @@ } }, { - "__docId__": 5069, + "__docId__": 5060, "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](http://xeokit.github.io/xeokit-sdk/examples/#lights_AmbientLight)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildTorusGeometry} from \"../src/scene/geometry/builders/buildTorusGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.js\";\n * import {AmbientLight} from \"../src/scene/lights/AmbientLight.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", @@ -99081,7 +99065,7 @@ "lineNumber": 1 }, { - "__docId__": 5070, + "__docId__": 5061, "kind": "class", "name": "AmbientLight", "memberof": "src/viewer/scene/lights/AmbientLight.js", @@ -99099,7 +99083,7 @@ ] }, { - "__docId__": 5071, + "__docId__": 5062, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -99118,7 +99102,7 @@ } }, { - "__docId__": 5072, + "__docId__": 5063, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -99193,7 +99177,7 @@ ] }, { - "__docId__": 5073, + "__docId__": 5064, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -99211,7 +99195,7 @@ } }, { - "__docId__": 5076, + "__docId__": 5067, "kind": "set", "name": "color", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -99236,7 +99220,7 @@ ] }, { - "__docId__": 5077, + "__docId__": 5068, "kind": "get", "name": "color", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -99268,7 +99252,7 @@ } }, { - "__docId__": 5078, + "__docId__": 5069, "kind": "set", "name": "intensity", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -99293,7 +99277,7 @@ ] }, { - "__docId__": 5079, + "__docId__": 5070, "kind": "get", "name": "intensity", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -99325,7 +99309,7 @@ } }, { - "__docId__": 5080, + "__docId__": 5071, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/lights/AmbientLight.js~AmbientLight", @@ -99340,7 +99324,7 @@ "return": null }, { - "__docId__": 5081, + "__docId__": 5072, "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';\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 {String} [cfg.encoding=\"linear\"] Encoding format. See the {@link CubeTexture/encoding} property for more info.\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, gl.TEXTURE_CUBE_MAP),\n flipY: this._checkFlipY(cfg.minFilter),\n encoding: this._checkEncoding(cfg.encoding),\n minFilter: \"linearMipmapLinear\",\n magFilter: \"linear\",\n wrapS: \"clampToEdge\",\n wrapT: \"clampToEdge\",\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 || \"linear\";\n if (value !== \"linear\" && value !== \"sRGB\" && value !== \"gamma\") {\n this.error(\"Unsupported value for 'encoding': '\" + value + \"' - supported values are 'linear', 'sRGB', 'gamma'. Defaulting to 'linear'.\");\n value = \"linear\";\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, gl.TEXTURE_CUBE_MAP);\n self._state.texture = texture;\n }\n texture.setImage(self._images, self._state);\n texture.setProps(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};", @@ -99351,7 +99335,7 @@ "lineNumber": 1 }, { - "__docId__": 5082, + "__docId__": 5073, "kind": "function", "name": "ensureImageSizePowerOfTwo", "memberof": "src/viewer/scene/lights/CubeTexture.js", @@ -99382,7 +99366,7 @@ "ignore": true }, { - "__docId__": 5083, + "__docId__": 5074, "kind": "function", "name": "isPowerOfTwo", "memberof": "src/viewer/scene/lights/CubeTexture.js", @@ -99413,7 +99397,7 @@ "ignore": true }, { - "__docId__": 5084, + "__docId__": 5075, "kind": "function", "name": "nextHighestPowerOfTwo", "memberof": "src/viewer/scene/lights/CubeTexture.js", @@ -99444,7 +99428,7 @@ "ignore": true }, { - "__docId__": 5085, + "__docId__": 5076, "kind": "class", "name": "CubeTexture", "memberof": "src/viewer/scene/lights/CubeTexture.js", @@ -99462,7 +99446,7 @@ ] }, { - "__docId__": 5086, + "__docId__": 5077, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -99481,7 +99465,7 @@ } }, { - "__docId__": 5087, + "__docId__": 5078, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -99568,7 +99552,7 @@ ] }, { - "__docId__": 5088, + "__docId__": 5079, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -99586,7 +99570,7 @@ } }, { - "__docId__": 5089, + "__docId__": 5080, "kind": "member", "name": "_src", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -99604,7 +99588,7 @@ } }, { - "__docId__": 5090, + "__docId__": 5081, "kind": "member", "name": "_images", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -99622,7 +99606,7 @@ } }, { - "__docId__": 5091, + "__docId__": 5082, "kind": "method", "name": "_checkFlipY", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -99650,7 +99634,7 @@ } }, { - "__docId__": 5092, + "__docId__": 5083, "kind": "method", "name": "_checkEncoding", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -99678,7 +99662,7 @@ } }, { - "__docId__": 5093, + "__docId__": 5084, "kind": "method", "name": "_webglContextRestored", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -99695,7 +99679,7 @@ "return": null }, { - "__docId__": 5094, + "__docId__": 5085, "kind": "method", "name": "_loadSrc", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -99719,7 +99703,7 @@ "return": null }, { - "__docId__": 5096, + "__docId__": 5087, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/lights/CubeTexture.js~CubeTexture", @@ -99734,7 +99718,7 @@ "return": null }, { - "__docId__": 5097, + "__docId__": 5088, "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](http://xeokit.github.io/xeokit-sdk/examples/#lights_DirLight_view)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildSphereGeometry} from \"../src/scene/geometry/builders/buildSphereGeometry.js\";\n * import {buildPlaneGeometry} from \"../src/scene/geometry/builders/buildPlaneGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.js\";\n * import {DirLight} from \"../src/scene/lights/DirLight.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", @@ -99745,7 +99729,7 @@ "lineNumber": 1 }, { - "__docId__": 5098, + "__docId__": 5089, "kind": "class", "name": "DirLight", "memberof": "src/viewer/scene/lights/DirLight.js", @@ -99763,7 +99747,7 @@ ] }, { - "__docId__": 5099, + "__docId__": 5090, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -99782,7 +99766,7 @@ } }, { - "__docId__": 5100, + "__docId__": 5091, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -99895,7 +99879,7 @@ ] }, { - "__docId__": 5101, + "__docId__": 5092, "kind": "member", "name": "_shadowRenderBuf", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -99913,7 +99897,7 @@ } }, { - "__docId__": 5102, + "__docId__": 5093, "kind": "member", "name": "_shadowViewMatrix", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -99931,7 +99915,7 @@ } }, { - "__docId__": 5103, + "__docId__": 5094, "kind": "member", "name": "_shadowProjMatrix", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -99949,7 +99933,7 @@ } }, { - "__docId__": 5104, + "__docId__": 5095, "kind": "member", "name": "_shadowViewMatrixDirty", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -99967,7 +99951,7 @@ } }, { - "__docId__": 5105, + "__docId__": 5096, "kind": "member", "name": "_shadowProjMatrixDirty", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -99985,7 +99969,7 @@ } }, { - "__docId__": 5106, + "__docId__": 5097, "kind": "member", "name": "_onCameraViewMatrix", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -100003,7 +99987,7 @@ } }, { - "__docId__": 5108, + "__docId__": 5099, "kind": "member", "name": "_onCameraProjMatrix", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -100021,7 +100005,7 @@ } }, { - "__docId__": 5110, + "__docId__": 5101, "kind": "member", "name": "_onCanvasBoundary", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -100039,7 +100023,7 @@ } }, { - "__docId__": 5112, + "__docId__": 5103, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -100057,7 +100041,7 @@ } }, { - "__docId__": 5122, + "__docId__": 5113, "kind": "set", "name": "dir", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -100082,7 +100066,7 @@ ] }, { - "__docId__": 5124, + "__docId__": 5115, "kind": "get", "name": "dir", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -100114,7 +100098,7 @@ } }, { - "__docId__": 5125, + "__docId__": 5116, "kind": "set", "name": "color", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -100139,7 +100123,7 @@ ] }, { - "__docId__": 5126, + "__docId__": 5117, "kind": "get", "name": "color", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -100171,7 +100155,7 @@ } }, { - "__docId__": 5127, + "__docId__": 5118, "kind": "set", "name": "intensity", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -100196,7 +100180,7 @@ ] }, { - "__docId__": 5128, + "__docId__": 5119, "kind": "get", "name": "intensity", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -100228,7 +100212,7 @@ } }, { - "__docId__": 5129, + "__docId__": 5120, "kind": "set", "name": "castsShadow", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -100253,7 +100237,7 @@ ] }, { - "__docId__": 5131, + "__docId__": 5122, "kind": "get", "name": "castsShadow", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -100285,7 +100269,7 @@ } }, { - "__docId__": 5132, + "__docId__": 5123, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/lights/DirLight.js~DirLight", @@ -100300,7 +100284,7 @@ "return": null }, { - "__docId__": 5133, + "__docId__": 5124, "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", @@ -100311,7 +100295,7 @@ "lineNumber": 1 }, { - "__docId__": 5134, + "__docId__": 5125, "kind": "class", "name": "Light", "memberof": "src/viewer/scene/lights/Light.js", @@ -100329,7 +100313,7 @@ ] }, { - "__docId__": 5135, + "__docId__": 5126, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/Light.js~Light", @@ -100348,7 +100332,7 @@ } }, { - "__docId__": 5136, + "__docId__": 5127, "kind": "get", "name": "isLight", "memberof": "src/viewer/scene/lights/Light.js~Light", @@ -100367,7 +100351,7 @@ } }, { - "__docId__": 5137, + "__docId__": 5128, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/Light.js~Light", @@ -100381,7 +100365,7 @@ "undocument": true }, { - "__docId__": 5138, + "__docId__": 5129, "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} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildSphereGeometry} from \"../src/scene/geometry/builders/buildSphereGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {MetallicMaterial} from \"../src/scene/materials/MetallicMaterial.js\";\n * import {LightMap} from \"../src/scene/lights/LightMap.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 {String} [cfg.encoding=\"linear\"] Encoding format. See the {@link LightMap#encoding} property for more info.\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", @@ -100392,7 +100376,7 @@ "lineNumber": 1 }, { - "__docId__": 5139, + "__docId__": 5130, "kind": "class", "name": "LightMap", "memberof": "src/viewer/scene/lights/LightMap.js", @@ -100410,7 +100394,7 @@ ] }, { - "__docId__": 5140, + "__docId__": 5131, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/LightMap.js~LightMap", @@ -100429,7 +100413,7 @@ } }, { - "__docId__": 5141, + "__docId__": 5132, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/LightMap.js~LightMap", @@ -100526,7 +100510,7 @@ ] }, { - "__docId__": 5142, + "__docId__": 5133, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/lights/LightMap.js~LightMap", @@ -100542,7 +100526,7 @@ "return": null }, { - "__docId__": 5143, + "__docId__": 5134, "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](http://xeokit.github.io/xeokit-sdk/examples/#lights_PointLight_world)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildSphereGeometry} from \"../src/scene/geometry/builders/buildSphereGeometry.js\";\n * import {buildPlaneGeometry} from \"../src/scene/geometry/builders/buildPlaneGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.js\";\n * import {PointLight} from \"../src/scene/lights/PointLight.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", @@ -100553,7 +100537,7 @@ "lineNumber": 1 }, { - "__docId__": 5144, + "__docId__": 5135, "kind": "class", "name": "PointLight", "memberof": "src/viewer/scene/lights/PointLight.js", @@ -100571,7 +100555,7 @@ ] }, { - "__docId__": 5145, + "__docId__": 5136, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -100590,7 +100574,7 @@ } }, { - "__docId__": 5146, + "__docId__": 5137, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -100739,7 +100723,7 @@ ] }, { - "__docId__": 5147, + "__docId__": 5138, "kind": "member", "name": "_shadowRenderBuf", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -100757,7 +100741,7 @@ } }, { - "__docId__": 5148, + "__docId__": 5139, "kind": "member", "name": "_shadowViewMatrix", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -100775,7 +100759,7 @@ } }, { - "__docId__": 5149, + "__docId__": 5140, "kind": "member", "name": "_shadowProjMatrix", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -100793,7 +100777,7 @@ } }, { - "__docId__": 5150, + "__docId__": 5141, "kind": "member", "name": "_shadowViewMatrixDirty", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -100811,7 +100795,7 @@ } }, { - "__docId__": 5151, + "__docId__": 5142, "kind": "member", "name": "_shadowProjMatrixDirty", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -100829,7 +100813,7 @@ } }, { - "__docId__": 5152, + "__docId__": 5143, "kind": "member", "name": "_onCameraViewMatrix", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -100847,7 +100831,7 @@ } }, { - "__docId__": 5154, + "__docId__": 5145, "kind": "member", "name": "_onCameraProjMatrix", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -100865,7 +100849,7 @@ } }, { - "__docId__": 5156, + "__docId__": 5147, "kind": "member", "name": "_onCanvasBoundary", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -100883,7 +100867,7 @@ } }, { - "__docId__": 5158, + "__docId__": 5149, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -100901,7 +100885,7 @@ } }, { - "__docId__": 5166, + "__docId__": 5157, "kind": "set", "name": "pos", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -100926,7 +100910,7 @@ ] }, { - "__docId__": 5168, + "__docId__": 5159, "kind": "get", "name": "pos", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -100958,7 +100942,7 @@ } }, { - "__docId__": 5169, + "__docId__": 5160, "kind": "set", "name": "color", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -100983,7 +100967,7 @@ ] }, { - "__docId__": 5170, + "__docId__": 5161, "kind": "get", "name": "color", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -101015,7 +100999,7 @@ } }, { - "__docId__": 5171, + "__docId__": 5162, "kind": "set", "name": "intensity", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -101040,7 +101024,7 @@ ] }, { - "__docId__": 5172, + "__docId__": 5163, "kind": "get", "name": "intensity", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -101072,7 +101056,7 @@ } }, { - "__docId__": 5173, + "__docId__": 5164, "kind": "set", "name": "constantAttenuation", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -101097,7 +101081,7 @@ ] }, { - "__docId__": 5174, + "__docId__": 5165, "kind": "get", "name": "constantAttenuation", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -101129,7 +101113,7 @@ } }, { - "__docId__": 5175, + "__docId__": 5166, "kind": "set", "name": "linearAttenuation", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -101154,7 +101138,7 @@ ] }, { - "__docId__": 5176, + "__docId__": 5167, "kind": "get", "name": "linearAttenuation", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -101186,7 +101170,7 @@ } }, { - "__docId__": 5177, + "__docId__": 5168, "kind": "set", "name": "quadraticAttenuation", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -101211,7 +101195,7 @@ ] }, { - "__docId__": 5178, + "__docId__": 5169, "kind": "get", "name": "quadraticAttenuation", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -101243,7 +101227,7 @@ } }, { - "__docId__": 5179, + "__docId__": 5170, "kind": "set", "name": "castsShadow", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -101268,7 +101252,7 @@ ] }, { - "__docId__": 5181, + "__docId__": 5172, "kind": "get", "name": "castsShadow", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -101300,7 +101284,7 @@ } }, { - "__docId__": 5182, + "__docId__": 5173, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/lights/PointLight.js~PointLight", @@ -101315,7 +101299,7 @@ "return": null }, { - "__docId__": 5183, + "__docId__": 5174, "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} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildSphereGeometry} from \"../src/scene/geometry/builders/buildSphereGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {MetallicMaterial} from \"../src/scene/materials/MetallicMaterial.js\";\n * import {ReflectionMap} from \"../src/scene/lights/ReflectionMap.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 {String} [cfg.encoding=\"linear\"] Encoding format. See the {@link ReflectionMap/encoding} property for more info.\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", @@ -101326,7 +101310,7 @@ "lineNumber": 1 }, { - "__docId__": 5184, + "__docId__": 5175, "kind": "class", "name": "ReflectionMap", "memberof": "src/viewer/scene/lights/ReflectionMap.js", @@ -101344,7 +101328,7 @@ ] }, { - "__docId__": 5185, + "__docId__": 5176, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/ReflectionMap.js~ReflectionMap", @@ -101363,7 +101347,7 @@ } }, { - "__docId__": 5186, + "__docId__": 5177, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/ReflectionMap.js~ReflectionMap", @@ -101444,7 +101428,7 @@ ] }, { - "__docId__": 5187, + "__docId__": 5178, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/lights/ReflectionMap.js~ReflectionMap", @@ -101459,7 +101443,7 @@ "return": null }, { - "__docId__": 5188, + "__docId__": 5179, "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 @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", @@ -101470,7 +101454,7 @@ "lineNumber": 1 }, { - "__docId__": 5189, + "__docId__": 5180, "kind": "class", "name": "Shadow", "memberof": "src/viewer/scene/lights/Shadow.js", @@ -101489,7 +101473,7 @@ ] }, { - "__docId__": 5190, + "__docId__": 5181, "kind": "get", "name": "type", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -101508,7 +101492,7 @@ } }, { - "__docId__": 5191, + "__docId__": 5182, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -101522,7 +101506,7 @@ "undocument": true }, { - "__docId__": 5192, + "__docId__": 5183, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -101540,7 +101524,7 @@ } }, { - "__docId__": 5195, + "__docId__": 5186, "kind": "set", "name": "resolution", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -101579,7 +101563,7 @@ } }, { - "__docId__": 5196, + "__docId__": 5187, "kind": "get", "name": "resolution", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -101598,7 +101582,7 @@ } }, { - "__docId__": 5197, + "__docId__": 5188, "kind": "set", "name": "intensity", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -101637,7 +101621,7 @@ } }, { - "__docId__": 5198, + "__docId__": 5189, "kind": "get", "name": "intensity", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -101656,7 +101640,7 @@ } }, { - "__docId__": 5199, + "__docId__": 5190, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/lights/Shadow.js~Shadow", @@ -101672,7 +101656,7 @@ "return": null }, { - "__docId__": 5200, + "__docId__": 5191, "kind": "file", "name": "src/viewer/scene/logDepthBuf/LogDepthBuf.js", "content": "import {Component} from '../Component.js';\nimport {WEBGL_INFO} from \"../webglInfo.js\";\n\n/**\n * @desc Configures Scalable Ambient Obscurance (LogDepthBuf) for a {@link Scene}.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_LogDepthBuf_OTCConferenceCenter)]\n *\n * ## Overview\n *\n * LogDepthBuf 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 LogDepthBuf. When LogDepthBuf 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 * LogDepthBuf configurations.\n *\n * xeokit's implementation of LogDepthBuf is based on the paper [Scalable Ambient Obscurance](https://research.nvidia.com/sites/default/files/pubs/2012-06_Scalable-Ambient-Obscurance/McGuire12LogDepthBuf.pdf).\n *\n * ## Caveats\n *\n * Currently, LogDepthBuf only works with perspective and orthographic projections. Therefore, to use LogDepthBuf, make sure {@link Camera#projection} is\n * either \"perspective\" or \"ortho\".\n *\n * {@link LogDepthBuf#scale} and {@link LogDepthBuf#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/#postEeffects_LogDepthBuf_OTCConferenceCenter) 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 LogDepthBuf is not supported by the\n * system.\n *\n *Then we'll enable and configure LogDepthBuf, 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} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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(\"LogDepthBuf is not supported on this system - ignoring LogDepthBuf configs\")\n * }\n *\n * sao.enabled = true; // Enable LogDepthBuf - only works if supported (see above)\n * sao.intensity = 0.20;\n * sao.bias = 0.5;\n * sao.scale = 1000.0;\n * sao.minResolution = 0.0;\n * sao.kernelRadius = 100;\n * sao.blendCutoff = 0.2;\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/OTCConferenceCenter.xkt\",\n * metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\",\n * edges: true\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_LogDepthBuf_OTCConferenceCenter)]\n *\n * ## Efficiency\n *\n * LogDepthBuf 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 LogDepthBuf#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 LogDepthBuf for close objects\n * is more expensive than for objects far away, that occupy fewer pixels on the canvas.\n *\n * ## Selectively enabling LogDepthBuf for models\n *\n * When loading multiple models into a Scene, we sometimes only want LogDepthBuf on the models that are actually going to\n * show it, such as the architecture or structure, and not show LogDepthBuf 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 LogDepthBuf on the structure model,\n * but disable it on the electrical and plumbing.\n *\n * This will only apply LogDepthBuf to those models if {@link LogDepthBuf#supported} and {@link LogDepthBuf#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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/structure.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/electrical.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/plumbing.json\",\n * edges: true\n * });\n * });\n * });\n * });\n * ````\n *\n * ## Disabling LogDepthBuf while camera is moving\n *\n * For smoother interaction with large models on low-power hardware, we can disable LogDepthBuf 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/#techniques_nonInteractiveQuality)]\n */\nclass LogDepthBuf 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 LogDepthBuf 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.blur = cfg.blur;\n this.blendCutoff = cfg.blendCutoff;\n this.blendFactor = cfg.blendFactor;\n }\n\n /**\n * Gets whether or not logarithmic depth buffer is supported by this system.\n *\n * Even when enabled, logarithmic depth buffer will only work if supported.\n *\n * @type {Boolean}\n */\n get supported() {\n return this._supported;\n }\n\n /**\n * Sets whether logarithmic depth buffer is enabled for the {@link Scene}.\n *\n * Even when enabled, logarithmic depth buffer 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.scene._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets whether LogDepthBuf is enabled for the {@link Scene}.\n *\n * Even when enabled, LogDepthBuf 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 LogDepthBuf 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 LogDepthBuf takes into account when checking for possible occlusion.\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 LogDepthBuf takes into account when checking for possible occlusion.\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 LogDepthBuf effect.\n *\n * Default value is ````0.20````.\n *\n * @type {Number}\n */\n set intensity(value) {\n if (value === undefined || value === null) {\n value = 0.20;\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 LogDepthBuf effect.\n *\n * Default value is ````0.25````.\n * \n * @type {Number}\n */\n get intensity() {\n return this._intensity;\n }\n\n /**\n * Sets the LogDepthBuf 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 LogDepthBuf 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 LogDepthBuf occlusion scale.\n *\n * Default value is ````500.0````.\n *\n * @type {Number}\n */\n set scale(value) {\n if (value === undefined || value === null) {\n value = 500.0;\n }\n if (this._scale === value) {\n return;\n }\n this._scale = value;\n this.glRedraw();\n }\n\n /**\n * Gets the LogDepthBuf occlusion scale.\n *\n * Default value is ````500.0````.\n *\n * @type {Number}\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the LogDepthBuf 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 LogDepthBuf 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 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 LogDepthBuf blend cutoff.\n *\n * Default value is ````0.2````.\n *\n * Normally you don't need to alter this.\n *\n * @type {Number}\n * @private\n */\n set blendCutoff(value) {\n if (value === undefined || value === null) {\n value = 0.2;\n }\n if (this._blendCutoff === value) {\n return;\n }\n this._blendCutoff = value;\n this.glRedraw();\n }\n\n /**\n * Gets the LogDepthBuf blend cutoff.\n *\n * Default value is ````0.2````.\n *\n * Normally you don't need to alter this.\n *\n * @type {Number}\n * @private\n */\n get blendCutoff() {\n return this._blendCutoff;\n }\n\n /**\n * Sets the LogDepthBuf blend factor.\n *\n * Default value is ````1.0````.\n *\n * Normally you don't need to alter this.\n *\n * @type {Number}\n * @private\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 LogDepthBuf blend scale.\n *\n * Default value is ````1.0````.\n *\n * Normally you don't need to alter this.\n *\n * @type {Number}\n * @private\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 {LogDepthBuf};\n", @@ -101683,7 +101667,7 @@ "lineNumber": 1 }, { - "__docId__": 5201, + "__docId__": 5192, "kind": "class", "name": "LogDepthBuf", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js", @@ -101701,7 +101685,7 @@ ] }, { - "__docId__": 5202, + "__docId__": 5193, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -101715,7 +101699,7 @@ "ignore": true }, { - "__docId__": 5203, + "__docId__": 5194, "kind": "member", "name": "_supported", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -101733,7 +101717,7 @@ } }, { - "__docId__": 5213, + "__docId__": 5204, "kind": "get", "name": "supported", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -101754,7 +101738,7 @@ } }, { - "__docId__": 5214, + "__docId__": 5205, "kind": "set", "name": "enabled", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -101775,7 +101759,7 @@ } }, { - "__docId__": 5215, + "__docId__": 5206, "kind": "member", "name": "_enabled", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -101793,7 +101777,7 @@ } }, { - "__docId__": 5216, + "__docId__": 5207, "kind": "get", "name": "enabled", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -101814,7 +101798,7 @@ } }, { - "__docId__": 5217, + "__docId__": 5208, "kind": "get", "name": "possible", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -101847,7 +101831,7 @@ } }, { - "__docId__": 5218, + "__docId__": 5209, "kind": "get", "name": "active", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -101881,7 +101865,7 @@ } }, { - "__docId__": 5219, + "__docId__": 5210, "kind": "set", "name": "kernelRadius", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -101902,7 +101886,7 @@ } }, { - "__docId__": 5220, + "__docId__": 5211, "kind": "member", "name": "_kernelRadius", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -101920,7 +101904,7 @@ } }, { - "__docId__": 5221, + "__docId__": 5212, "kind": "get", "name": "kernelRadius", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -101941,7 +101925,7 @@ } }, { - "__docId__": 5222, + "__docId__": 5213, "kind": "set", "name": "intensity", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -101962,7 +101946,7 @@ } }, { - "__docId__": 5223, + "__docId__": 5214, "kind": "member", "name": "_intensity", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -101980,7 +101964,7 @@ } }, { - "__docId__": 5224, + "__docId__": 5215, "kind": "get", "name": "intensity", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102001,7 +101985,7 @@ } }, { - "__docId__": 5225, + "__docId__": 5216, "kind": "set", "name": "bias", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102022,7 +102006,7 @@ } }, { - "__docId__": 5226, + "__docId__": 5217, "kind": "member", "name": "_bias", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102040,7 +102024,7 @@ } }, { - "__docId__": 5227, + "__docId__": 5218, "kind": "get", "name": "bias", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102061,7 +102045,7 @@ } }, { - "__docId__": 5228, + "__docId__": 5219, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102082,7 +102066,7 @@ } }, { - "__docId__": 5229, + "__docId__": 5220, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102100,7 +102084,7 @@ } }, { - "__docId__": 5230, + "__docId__": 5221, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102121,7 +102105,7 @@ } }, { - "__docId__": 5231, + "__docId__": 5222, "kind": "set", "name": "minResolution", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102142,7 +102126,7 @@ } }, { - "__docId__": 5232, + "__docId__": 5223, "kind": "member", "name": "_minResolution", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102160,7 +102144,7 @@ } }, { - "__docId__": 5233, + "__docId__": 5224, "kind": "get", "name": "minResolution", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102181,7 +102165,7 @@ } }, { - "__docId__": 5234, + "__docId__": 5225, "kind": "set", "name": "blur", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102202,7 +102186,7 @@ } }, { - "__docId__": 5235, + "__docId__": 5226, "kind": "member", "name": "_blur", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102220,7 +102204,7 @@ } }, { - "__docId__": 5236, + "__docId__": 5227, "kind": "get", "name": "blur", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102241,7 +102225,7 @@ } }, { - "__docId__": 5237, + "__docId__": 5228, "kind": "set", "name": "blendCutoff", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102263,7 +102247,7 @@ "ignore": true }, { - "__docId__": 5238, + "__docId__": 5229, "kind": "member", "name": "_blendCutoff", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102281,7 +102265,7 @@ } }, { - "__docId__": 5239, + "__docId__": 5230, "kind": "get", "name": "blendCutoff", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102303,7 +102287,7 @@ "ignore": true }, { - "__docId__": 5240, + "__docId__": 5231, "kind": "set", "name": "blendFactor", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102325,7 +102309,7 @@ "ignore": true }, { - "__docId__": 5241, + "__docId__": 5232, "kind": "member", "name": "_blendFactor", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102343,7 +102327,7 @@ } }, { - "__docId__": 5242, + "__docId__": 5233, "kind": "get", "name": "blendFactor", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102365,7 +102349,7 @@ "ignore": true }, { - "__docId__": 5243, + "__docId__": 5234, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/logDepthBuf/LogDepthBuf.js~LogDepthBuf", @@ -102380,7 +102364,7 @@ "return": null }, { - "__docId__": 5244, + "__docId__": 5235, "kind": "file", "name": "src/viewer/scene/marker/Marker.js", "content": "import {math} from '../math/math.js';\nimport {Component} from '../Component.js';\nimport {PerformanceNode} from \"../PerformanceModel/lib/PerformanceNode.js\";\nimport {worldToRTCPos} from \"../math/rtcCoords.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 * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#Markers_SimpleExample)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {GLTFLoaderPlugin} from \"../src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js\";\n * import {Marker} from \"../src/scene/markers/Marker.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({\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._rtcCenter = 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.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 PerformanceNode) {\n this._onEntityModelDestroyed = this._entity.model.once(\"destroyed\", () => { // PerformanceNode does not fire events, and cannot exist beyond its PerformanceModel\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.once(\"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._rtcCenter, this._rtcPos);\n if (this._occludable) {\n this._renderer.markerWorldPosUpdated(this);\n }\n this._viewPosDirty = true;\n this.fire(\"worldPos\", this._worldPos);\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 rtcCenter() {\n return this._rtcCenter;\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", @@ -102391,7 +102375,7 @@ "lineNumber": 1 }, { - "__docId__": 5245, + "__docId__": 5236, "kind": "variable", "name": "tempVec4a", "memberof": "src/viewer/scene/marker/Marker.js", @@ -102412,7 +102396,7 @@ "ignore": true }, { - "__docId__": 5246, + "__docId__": 5237, "kind": "variable", "name": "tempVec4b", "memberof": "src/viewer/scene/marker/Marker.js", @@ -102433,7 +102417,7 @@ "ignore": true }, { - "__docId__": 5247, + "__docId__": 5238, "kind": "class", "name": "Marker", "memberof": "src/viewer/scene/marker/Marker.js", @@ -102451,7 +102435,7 @@ ] }, { - "__docId__": 5248, + "__docId__": 5239, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102540,7 +102524,7 @@ ] }, { - "__docId__": 5249, + "__docId__": 5240, "kind": "member", "name": "_entity", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102558,7 +102542,7 @@ } }, { - "__docId__": 5250, + "__docId__": 5241, "kind": "member", "name": "_visible", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102576,7 +102560,7 @@ } }, { - "__docId__": 5251, + "__docId__": 5242, "kind": "member", "name": "_worldPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102594,7 +102578,7 @@ } }, { - "__docId__": 5252, + "__docId__": 5243, "kind": "member", "name": "_rtcCenter", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102612,7 +102596,7 @@ } }, { - "__docId__": 5253, + "__docId__": 5244, "kind": "member", "name": "_rtcPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102630,7 +102614,7 @@ } }, { - "__docId__": 5254, + "__docId__": 5245, "kind": "member", "name": "_viewPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102648,7 +102632,7 @@ } }, { - "__docId__": 5255, + "__docId__": 5246, "kind": "member", "name": "_canvasPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102666,7 +102650,7 @@ } }, { - "__docId__": 5256, + "__docId__": 5247, "kind": "member", "name": "_occludable", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102684,7 +102668,7 @@ } }, { - "__docId__": 5257, + "__docId__": 5248, "kind": "member", "name": "_onCameraViewMatrix", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102702,7 +102686,7 @@ } }, { - "__docId__": 5258, + "__docId__": 5249, "kind": "member", "name": "_viewPosDirty", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102720,7 +102704,7 @@ } }, { - "__docId__": 5259, + "__docId__": 5250, "kind": "member", "name": "_onCameraProjMatrix", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102738,7 +102722,7 @@ } }, { - "__docId__": 5260, + "__docId__": 5251, "kind": "member", "name": "_canvasPosDirty", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102756,7 +102740,7 @@ } }, { - "__docId__": 5261, + "__docId__": 5252, "kind": "member", "name": "_onEntityDestroyed", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102774,7 +102758,7 @@ } }, { - "__docId__": 5262, + "__docId__": 5253, "kind": "member", "name": "_onEntityModelDestroyed", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102792,7 +102776,7 @@ } }, { - "__docId__": 5266, + "__docId__": 5257, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102809,7 +102793,7 @@ "return": null }, { - "__docId__": 5270, + "__docId__": 5261, "kind": "method", "name": "_setVisible", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102833,7 +102817,7 @@ "return": null }, { - "__docId__": 5272, + "__docId__": 5263, "kind": "set", "name": "entity", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102854,7 +102838,7 @@ } }, { - "__docId__": 5282, + "__docId__": 5273, "kind": "get", "name": "entity", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102875,7 +102859,7 @@ } }, { - "__docId__": 5283, + "__docId__": 5274, "kind": "set", "name": "occludable", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102896,7 +102880,7 @@ } }, { - "__docId__": 5285, + "__docId__": 5276, "kind": "get", "name": "occludable", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102917,7 +102901,7 @@ } }, { - "__docId__": 5286, + "__docId__": 5277, "kind": "set", "name": "worldPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102938,7 +102922,7 @@ } }, { - "__docId__": 5288, + "__docId__": 5279, "kind": "get", "name": "worldPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102959,7 +102943,7 @@ } }, { - "__docId__": 5289, + "__docId__": 5280, "kind": "get", "name": "rtcCenter", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -102980,7 +102964,7 @@ } }, { - "__docId__": 5290, + "__docId__": 5281, "kind": "get", "name": "rtcPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -103001,7 +102985,7 @@ } }, { - "__docId__": 5291, + "__docId__": 5282, "kind": "get", "name": "viewPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -103028,7 +103012,7 @@ } }, { - "__docId__": 5292, + "__docId__": 5283, "kind": "get", "name": "canvasPos", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -103055,7 +103039,7 @@ } }, { - "__docId__": 5293, + "__docId__": 5284, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -103082,7 +103066,7 @@ } }, { - "__docId__": 5294, + "__docId__": 5285, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/marker/Marker.js~Marker", @@ -103097,7 +103081,7 @@ "return": null }, { - "__docId__": 5295, + "__docId__": 5286, "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](http://xeokit.github.io/xeokit-sdk/examples/#materials_EdgeMaterial)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildSphereGeometry} from \"../src/scene/geometry/builders/buildSphereGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {EdgeMaterial} from \"../src/scene/materials/EdgeMaterial.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};", @@ -103108,7 +103092,7 @@ "lineNumber": 1 }, { - "__docId__": 5296, + "__docId__": 5287, "kind": "variable", "name": "PRESETS", "memberof": "src/viewer/scene/materials/EdgeMaterial.js", @@ -103129,7 +103113,7 @@ "ignore": true }, { - "__docId__": 5297, + "__docId__": 5288, "kind": "class", "name": "EdgeMaterial", "memberof": "src/viewer/scene/materials/EdgeMaterial.js", @@ -103147,7 +103131,7 @@ ] }, { - "__docId__": 5298, + "__docId__": 5289, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103166,7 +103150,7 @@ } }, { - "__docId__": 5299, + "__docId__": 5290, "kind": "get", "name": "presets", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103187,7 +103171,7 @@ } }, { - "__docId__": 5300, + "__docId__": 5291, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103288,7 +103272,7 @@ ] }, { - "__docId__": 5301, + "__docId__": 5292, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103306,7 +103290,7 @@ } }, { - "__docId__": 5302, + "__docId__": 5293, "kind": "member", "name": "_preset", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103324,7 +103308,7 @@ } }, { - "__docId__": 5311, + "__docId__": 5302, "kind": "set", "name": "edges", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103345,7 +103329,7 @@ } }, { - "__docId__": 5312, + "__docId__": 5303, "kind": "get", "name": "edges", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103366,7 +103350,7 @@ } }, { - "__docId__": 5313, + "__docId__": 5304, "kind": "set", "name": "edgeColor", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103387,7 +103371,7 @@ } }, { - "__docId__": 5314, + "__docId__": 5305, "kind": "get", "name": "edgeColor", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103408,7 +103392,7 @@ } }, { - "__docId__": 5315, + "__docId__": 5306, "kind": "set", "name": "edgeAlpha", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103429,7 +103413,7 @@ } }, { - "__docId__": 5316, + "__docId__": 5307, "kind": "get", "name": "edgeAlpha", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103450,7 +103434,7 @@ } }, { - "__docId__": 5317, + "__docId__": 5308, "kind": "set", "name": "edgeWidth", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103471,7 +103455,7 @@ } }, { - "__docId__": 5318, + "__docId__": 5309, "kind": "get", "name": "edgeWidth", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103492,7 +103476,7 @@ } }, { - "__docId__": 5319, + "__docId__": 5310, "kind": "set", "name": "preset", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103513,7 +103497,7 @@ } }, { - "__docId__": 5324, + "__docId__": 5315, "kind": "get", "name": "preset", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103534,7 +103518,7 @@ } }, { - "__docId__": 5325, + "__docId__": 5316, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/EdgeMaterial.js~EdgeMaterial", @@ -103549,7 +103533,7 @@ "return": null }, { - "__docId__": 5326, + "__docId__": 5317, "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: [0.529411792755127, 0.4577854573726654, 0.4100345969200134],\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: [0.4577854573726654, 0.529411792755127, 0.4100345969200134],\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 */\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 });\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 } 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 }\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 ````false````.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._state.backfaces;\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._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};", @@ -103560,7 +103544,7 @@ "lineNumber": 1 }, { - "__docId__": 5327, + "__docId__": 5318, "kind": "variable", "name": "PRESETS", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js", @@ -103581,7 +103565,7 @@ "ignore": true }, { - "__docId__": 5328, + "__docId__": 5319, "kind": "class", "name": "EmphasisMaterial", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js", @@ -103599,7 +103583,7 @@ ] }, { - "__docId__": 5329, + "__docId__": 5320, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -103618,7 +103602,7 @@ } }, { - "__docId__": 5330, + "__docId__": 5321, "kind": "get", "name": "presets", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -103639,7 +103623,7 @@ } }, { - "__docId__": 5331, + "__docId__": 5322, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -103804,7 +103788,7 @@ ] }, { - "__docId__": 5332, + "__docId__": 5323, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -103822,7 +103806,7 @@ } }, { - "__docId__": 5333, + "__docId__": 5324, "kind": "member", "name": "_preset", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -103840,7 +103824,7 @@ } }, { - "__docId__": 5351, + "__docId__": 5342, "kind": "set", "name": "fill", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -103861,7 +103845,7 @@ } }, { - "__docId__": 5352, + "__docId__": 5343, "kind": "get", "name": "fill", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -103882,7 +103866,7 @@ } }, { - "__docId__": 5353, + "__docId__": 5344, "kind": "set", "name": "fillColor", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -103903,7 +103887,7 @@ } }, { - "__docId__": 5354, + "__docId__": 5345, "kind": "get", "name": "fillColor", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -103924,7 +103908,7 @@ } }, { - "__docId__": 5355, + "__docId__": 5346, "kind": "set", "name": "fillAlpha", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -103945,7 +103929,7 @@ } }, { - "__docId__": 5356, + "__docId__": 5347, "kind": "get", "name": "fillAlpha", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -103966,7 +103950,7 @@ } }, { - "__docId__": 5357, + "__docId__": 5348, "kind": "set", "name": "edges", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -103987,7 +103971,7 @@ } }, { - "__docId__": 5358, + "__docId__": 5349, "kind": "get", "name": "edges", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -104008,7 +103992,7 @@ } }, { - "__docId__": 5359, + "__docId__": 5350, "kind": "set", "name": "edgeColor", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -104029,7 +104013,7 @@ } }, { - "__docId__": 5360, + "__docId__": 5351, "kind": "get", "name": "edgeColor", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -104050,7 +104034,7 @@ } }, { - "__docId__": 5361, + "__docId__": 5352, "kind": "set", "name": "edgeAlpha", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -104071,7 +104055,7 @@ } }, { - "__docId__": 5362, + "__docId__": 5353, "kind": "get", "name": "edgeAlpha", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -104092,7 +104076,7 @@ } }, { - "__docId__": 5363, + "__docId__": 5354, "kind": "set", "name": "edgeWidth", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -104113,7 +104097,7 @@ } }, { - "__docId__": 5364, + "__docId__": 5355, "kind": "get", "name": "edgeWidth", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -104134,7 +104118,7 @@ } }, { - "__docId__": 5365, + "__docId__": 5356, "kind": "set", "name": "backfaces", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -104155,7 +104139,7 @@ } }, { - "__docId__": 5366, + "__docId__": 5357, "kind": "get", "name": "backfaces", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -104176,7 +104160,7 @@ } }, { - "__docId__": 5367, + "__docId__": 5358, "kind": "set", "name": "preset", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -104197,7 +104181,7 @@ } }, { - "__docId__": 5376, + "__docId__": 5367, "kind": "get", "name": "preset", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -104218,7 +104202,7 @@ } }, { - "__docId__": 5377, + "__docId__": 5368, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/EmphasisMaterial.js~EmphasisMaterial", @@ -104233,7 +104217,7 @@ "return": null }, { - "__docId__": 5378, + "__docId__": 5369, "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](http://xeokit.github.io/xeokit-sdk/examples/#materials_Fresnel)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildTorusGeometry} from \"../src/scene/geometry/builders/buildTorusGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.js\";\n * import {Fresnel} from \"../src/scene/materials/Fresnel.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};", @@ -104244,7 +104228,7 @@ "lineNumber": 1 }, { - "__docId__": 5379, + "__docId__": 5370, "kind": "class", "name": "Fresnel", "memberof": "src/viewer/scene/materials/Fresnel.js", @@ -104262,7 +104246,7 @@ ] }, { - "__docId__": 5380, + "__docId__": 5371, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -104283,7 +104267,7 @@ } }, { - "__docId__": 5381, + "__docId__": 5372, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -104402,7 +104386,7 @@ ] }, { - "__docId__": 5382, + "__docId__": 5373, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -104420,7 +104404,7 @@ } }, { - "__docId__": 5388, + "__docId__": 5379, "kind": "set", "name": "edgeColor", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -104441,7 +104425,7 @@ } }, { - "__docId__": 5389, + "__docId__": 5380, "kind": "get", "name": "edgeColor", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -104462,7 +104446,7 @@ } }, { - "__docId__": 5390, + "__docId__": 5381, "kind": "set", "name": "centerColor", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -104483,7 +104467,7 @@ } }, { - "__docId__": 5391, + "__docId__": 5382, "kind": "get", "name": "centerColor", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -104504,7 +104488,7 @@ } }, { - "__docId__": 5392, + "__docId__": 5383, "kind": "set", "name": "edgeBias", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -104525,7 +104509,7 @@ } }, { - "__docId__": 5393, + "__docId__": 5384, "kind": "get", "name": "edgeBias", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -104546,7 +104530,7 @@ } }, { - "__docId__": 5394, + "__docId__": 5385, "kind": "set", "name": "centerBias", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -104567,7 +104551,7 @@ } }, { - "__docId__": 5395, + "__docId__": 5386, "kind": "get", "name": "centerBias", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -104588,7 +104572,7 @@ } }, { - "__docId__": 5396, + "__docId__": 5387, "kind": "set", "name": "power", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -104609,7 +104593,7 @@ } }, { - "__docId__": 5397, + "__docId__": 5388, "kind": "get", "name": "power", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -104630,7 +104614,7 @@ } }, { - "__docId__": 5398, + "__docId__": 5389, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/Fresnel.js~Fresnel", @@ -104645,7 +104629,7 @@ "return": null }, { - "__docId__": 5399, + "__docId__": 5390, "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](http://xeokit.github.io/xeokit-sdk/examples/#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} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildTorusGeometry} from \"../src/scene/geometry/builders/buildTorusGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {LambertMaterial} from \"../src/scene/materials/LambertMaterial.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};", @@ -104656,7 +104640,7 @@ "lineNumber": 1 }, { - "__docId__": 5400, + "__docId__": 5391, "kind": "class", "name": "LambertMaterial", "memberof": "src/viewer/scene/materials/LambertMaterial.js", @@ -104674,7 +104658,7 @@ ] }, { - "__docId__": 5401, + "__docId__": 5392, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -104693,7 +104677,7 @@ } }, { - "__docId__": 5402, + "__docId__": 5393, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -104876,7 +104860,7 @@ ] }, { - "__docId__": 5403, + "__docId__": 5394, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -104894,7 +104878,7 @@ } }, { - "__docId__": 5412, + "__docId__": 5403, "kind": "set", "name": "ambient", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -104915,7 +104899,7 @@ } }, { - "__docId__": 5413, + "__docId__": 5404, "kind": "get", "name": "ambient", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -104936,7 +104920,7 @@ } }, { - "__docId__": 5414, + "__docId__": 5405, "kind": "set", "name": "color", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -104957,7 +104941,7 @@ } }, { - "__docId__": 5415, + "__docId__": 5406, "kind": "get", "name": "color", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -104978,7 +104962,7 @@ } }, { - "__docId__": 5416, + "__docId__": 5407, "kind": "set", "name": "emissive", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -104999,7 +104983,7 @@ } }, { - "__docId__": 5417, + "__docId__": 5408, "kind": "get", "name": "emissive", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -105020,7 +105004,7 @@ } }, { - "__docId__": 5418, + "__docId__": 5409, "kind": "set", "name": "alpha", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -105041,7 +105025,7 @@ } }, { - "__docId__": 5419, + "__docId__": 5410, "kind": "get", "name": "alpha", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -105062,7 +105046,7 @@ } }, { - "__docId__": 5420, + "__docId__": 5411, "kind": "set", "name": "lineWidth", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -105083,7 +105067,7 @@ } }, { - "__docId__": 5421, + "__docId__": 5412, "kind": "get", "name": "lineWidth", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -105104,7 +105088,7 @@ } }, { - "__docId__": 5422, + "__docId__": 5413, "kind": "set", "name": "pointSize", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -105125,7 +105109,7 @@ } }, { - "__docId__": 5423, + "__docId__": 5414, "kind": "get", "name": "pointSize", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -105146,7 +105130,7 @@ } }, { - "__docId__": 5424, + "__docId__": 5415, "kind": "set", "name": "backfaces", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -105167,7 +105151,7 @@ } }, { - "__docId__": 5425, + "__docId__": 5416, "kind": "get", "name": "backfaces", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -105188,7 +105172,7 @@ } }, { - "__docId__": 5426, + "__docId__": 5417, "kind": "set", "name": "frontface", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -105209,7 +105193,7 @@ } }, { - "__docId__": 5427, + "__docId__": 5418, "kind": "get", "name": "frontface", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -105230,7 +105214,7 @@ } }, { - "__docId__": 5428, + "__docId__": 5419, "kind": "method", "name": "_getState", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -105251,7 +105235,7 @@ } }, { - "__docId__": 5429, + "__docId__": 5420, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/LambertMaterial.js~LambertMaterial", @@ -105266,7 +105250,7 @@ "return": null }, { - "__docId__": 5430, + "__docId__": 5421, "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 PerformanceModel}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](http://xeokit.github.io/xeokit-sdk/examples/#materials_LinesMaterial)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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/duplex.xkt\",\n * metaModelSrc: \"./metaModels/duplex/metaModel.json\"\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};", @@ -105277,7 +105261,7 @@ "lineNumber": 1 }, { - "__docId__": 5431, + "__docId__": 5422, "kind": "variable", "name": "PRESETS", "memberof": "src/viewer/scene/materials/LinesMaterial.js", @@ -105298,7 +105282,7 @@ "ignore": true }, { - "__docId__": 5432, + "__docId__": 5423, "kind": "class", "name": "LinesMaterial", "memberof": "src/viewer/scene/materials/LinesMaterial.js", @@ -105316,7 +105300,7 @@ ] }, { - "__docId__": 5433, + "__docId__": 5424, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -105335,7 +105319,7 @@ } }, { - "__docId__": 5434, + "__docId__": 5425, "kind": "get", "name": "presets", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -105356,7 +105340,7 @@ } }, { - "__docId__": 5435, + "__docId__": 5426, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -105429,7 +105413,7 @@ ] }, { - "__docId__": 5436, + "__docId__": 5427, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -105447,7 +105431,7 @@ } }, { - "__docId__": 5439, + "__docId__": 5430, "kind": "member", "name": "_preset", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -105465,7 +105449,7 @@ } }, { - "__docId__": 5441, + "__docId__": 5432, "kind": "set", "name": "lineWidth", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -105486,7 +105470,7 @@ } }, { - "__docId__": 5442, + "__docId__": 5433, "kind": "get", "name": "lineWidth", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -105507,7 +105491,7 @@ } }, { - "__docId__": 5443, + "__docId__": 5434, "kind": "set", "name": "preset", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -105528,7 +105512,7 @@ } }, { - "__docId__": 5446, + "__docId__": 5437, "kind": "get", "name": "preset", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -105549,7 +105533,7 @@ } }, { - "__docId__": 5447, + "__docId__": 5438, "kind": "get", "name": "hash", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -105576,7 +105560,7 @@ } }, { - "__docId__": 5448, + "__docId__": 5439, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/LinesMaterial.js~LinesMaterial", @@ -105591,7 +105575,7 @@ "return": null }, { - "__docId__": 5449, + "__docId__": 5440, "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", @@ -105602,7 +105586,7 @@ "lineNumber": 1 }, { - "__docId__": 5450, + "__docId__": 5441, "kind": "class", "name": "Material", "memberof": "src/viewer/scene/materials/Material.js", @@ -105621,7 +105605,7 @@ ] }, { - "__docId__": 5451, + "__docId__": 5442, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/Material.js~Material", @@ -105640,7 +105624,7 @@ } }, { - "__docId__": 5452, + "__docId__": 5443, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/Material.js~Material", @@ -105654,7 +105638,7 @@ "undocument": true }, { - "__docId__": 5453, + "__docId__": 5444, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/Material.js~Material", @@ -105670,7 +105654,7 @@ "return": null }, { - "__docId__": 5454, + "__docId__": 5445, "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](http://xeokit.github.io/xeokit-sdk/examples/#materials_MetallicMaterial)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {loadOBJGeometry} from \"../src/scene/geometry/loaders/loadOBJGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {MetallicMaterial} from \"../src/scene/materials/MetallicMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.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};", @@ -105681,7 +105665,7 @@ "lineNumber": 1 }, { - "__docId__": 5455, + "__docId__": 5446, "kind": "variable", "name": "modes", "memberof": "src/viewer/scene/materials/MetallicMaterial.js", @@ -105702,7 +105686,7 @@ "ignore": true }, { - "__docId__": 5456, + "__docId__": 5447, "kind": "variable", "name": "modeNames", "memberof": "src/viewer/scene/materials/MetallicMaterial.js", @@ -105723,7 +105707,7 @@ "ignore": true }, { - "__docId__": 5457, + "__docId__": 5448, "kind": "class", "name": "MetallicMaterial", "memberof": "src/viewer/scene/materials/MetallicMaterial.js", @@ -105741,7 +105725,7 @@ ] }, { - "__docId__": 5458, + "__docId__": 5449, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -105760,7 +105744,7 @@ } }, { - "__docId__": 5459, + "__docId__": 5450, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106059,7 +106043,7 @@ ] }, { - "__docId__": 5460, + "__docId__": 5451, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106077,7 +106061,7 @@ } }, { - "__docId__": 5467, + "__docId__": 5458, "kind": "member", "name": "_baseColorMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106095,7 +106079,7 @@ } }, { - "__docId__": 5468, + "__docId__": 5459, "kind": "member", "name": "_metallicMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106113,7 +106097,7 @@ } }, { - "__docId__": 5469, + "__docId__": 5460, "kind": "member", "name": "_roughnessMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106131,7 +106115,7 @@ } }, { - "__docId__": 5470, + "__docId__": 5461, "kind": "member", "name": "_metallicRoughnessMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106149,7 +106133,7 @@ } }, { - "__docId__": 5471, + "__docId__": 5462, "kind": "member", "name": "_emissiveMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106167,7 +106151,7 @@ } }, { - "__docId__": 5472, + "__docId__": 5463, "kind": "member", "name": "_occlusionMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106185,7 +106169,7 @@ } }, { - "__docId__": 5473, + "__docId__": 5464, "kind": "member", "name": "_alphaMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106203,7 +106187,7 @@ } }, { - "__docId__": 5474, + "__docId__": 5465, "kind": "member", "name": "_normalMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106221,7 +106205,7 @@ } }, { - "__docId__": 5481, + "__docId__": 5472, "kind": "method", "name": "_makeHash", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106238,7 +106222,7 @@ "return": null }, { - "__docId__": 5482, + "__docId__": 5473, "kind": "set", "name": "baseColor", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106259,7 +106243,7 @@ } }, { - "__docId__": 5483, + "__docId__": 5474, "kind": "get", "name": "baseColor", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106280,7 +106264,7 @@ } }, { - "__docId__": 5484, + "__docId__": 5475, "kind": "get", "name": "baseColorMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106301,7 +106285,7 @@ } }, { - "__docId__": 5485, + "__docId__": 5476, "kind": "set", "name": "metallic", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106322,7 +106306,7 @@ } }, { - "__docId__": 5486, + "__docId__": 5477, "kind": "get", "name": "metallic", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106343,7 +106327,7 @@ } }, { - "__docId__": 5487, + "__docId__": 5478, "kind": "get", "name": "metallicMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106364,7 +106348,7 @@ } }, { - "__docId__": 5488, + "__docId__": 5479, "kind": "set", "name": "roughness", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106385,7 +106369,7 @@ } }, { - "__docId__": 5489, + "__docId__": 5480, "kind": "get", "name": "roughness", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106406,7 +106390,7 @@ } }, { - "__docId__": 5490, + "__docId__": 5481, "kind": "get", "name": "roughnessMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106427,7 +106411,7 @@ } }, { - "__docId__": 5491, + "__docId__": 5482, "kind": "get", "name": "metallicRoughnessMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106448,7 +106432,7 @@ } }, { - "__docId__": 5492, + "__docId__": 5483, "kind": "set", "name": "specularF0", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106469,7 +106453,7 @@ } }, { - "__docId__": 5493, + "__docId__": 5484, "kind": "get", "name": "specularF0", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106490,7 +106474,7 @@ } }, { - "__docId__": 5494, + "__docId__": 5485, "kind": "set", "name": "emissive", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106511,7 +106495,7 @@ } }, { - "__docId__": 5495, + "__docId__": 5486, "kind": "get", "name": "emissive", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106532,7 +106516,7 @@ } }, { - "__docId__": 5496, + "__docId__": 5487, "kind": "get", "name": "emissiveMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106553,7 +106537,7 @@ } }, { - "__docId__": 5497, + "__docId__": 5488, "kind": "get", "name": "occlusionMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106574,7 +106558,7 @@ } }, { - "__docId__": 5498, + "__docId__": 5489, "kind": "set", "name": "alpha", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106595,7 +106579,7 @@ } }, { - "__docId__": 5499, + "__docId__": 5490, "kind": "get", "name": "alpha", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106616,7 +106600,7 @@ } }, { - "__docId__": 5500, + "__docId__": 5491, "kind": "get", "name": "alphaMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106637,7 +106621,7 @@ } }, { - "__docId__": 5501, + "__docId__": 5492, "kind": "get", "name": "normalMap", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106658,7 +106642,7 @@ } }, { - "__docId__": 5502, + "__docId__": 5493, "kind": "set", "name": "alphaMode", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106679,7 +106663,7 @@ } }, { - "__docId__": 5503, + "__docId__": 5494, "kind": "get", "name": "alphaMode", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106700,7 +106684,7 @@ } }, { - "__docId__": 5504, + "__docId__": 5495, "kind": "set", "name": "alphaCutoff", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106721,7 +106705,7 @@ } }, { - "__docId__": 5505, + "__docId__": 5496, "kind": "get", "name": "alphaCutoff", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106742,7 +106726,7 @@ } }, { - "__docId__": 5506, + "__docId__": 5497, "kind": "set", "name": "backfaces", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106763,7 +106747,7 @@ } }, { - "__docId__": 5507, + "__docId__": 5498, "kind": "get", "name": "backfaces", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106784,7 +106768,7 @@ } }, { - "__docId__": 5508, + "__docId__": 5499, "kind": "set", "name": "frontface", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106805,7 +106789,7 @@ } }, { - "__docId__": 5509, + "__docId__": 5500, "kind": "get", "name": "frontface", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106826,7 +106810,7 @@ } }, { - "__docId__": 5510, + "__docId__": 5501, "kind": "set", "name": "lineWidth", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106847,7 +106831,7 @@ } }, { - "__docId__": 5511, + "__docId__": 5502, "kind": "get", "name": "lineWidth", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106868,7 +106852,7 @@ } }, { - "__docId__": 5512, + "__docId__": 5503, "kind": "set", "name": "pointSize", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106889,7 +106873,7 @@ } }, { - "__docId__": 5513, + "__docId__": 5504, "kind": "get", "name": "pointSize", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106910,7 +106894,7 @@ } }, { - "__docId__": 5514, + "__docId__": 5505, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/MetallicMaterial.js~MetallicMaterial", @@ -106925,7 +106909,7 @@ "return": null }, { - "__docId__": 5515, + "__docId__": 5506, "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](http://xeokit.github.io/xeokit-sdk/examples/#materials_PhongMaterial)]\n *\n * ```` javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildTorusGeometry} from \"../src/scene/geometry/builders/buildTorusGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.js\";\n * import {Fresnel} from \"../src/scene/materials/Fresnel.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};", @@ -106936,7 +106920,7 @@ "lineNumber": 1 }, { - "__docId__": 5516, + "__docId__": 5507, "kind": "variable", "name": "alphaModes", "memberof": "src/viewer/scene/materials/PhongMaterial.js", @@ -106957,7 +106941,7 @@ "ignore": true }, { - "__docId__": 5517, + "__docId__": 5508, "kind": "variable", "name": "alphaModeNames", "memberof": "src/viewer/scene/materials/PhongMaterial.js", @@ -106978,7 +106962,7 @@ "ignore": true }, { - "__docId__": 5518, + "__docId__": 5509, "kind": "class", "name": "PhongMaterial", "memberof": "src/viewer/scene/materials/PhongMaterial.js", @@ -106996,7 +106980,7 @@ ] }, { - "__docId__": 5519, + "__docId__": 5510, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107015,7 +106999,7 @@ } }, { - "__docId__": 5520, + "__docId__": 5511, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107388,7 +107372,7 @@ ] }, { - "__docId__": 5521, + "__docId__": 5512, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107406,7 +107390,7 @@ } }, { - "__docId__": 5531, + "__docId__": 5522, "kind": "member", "name": "_ambientMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107424,7 +107408,7 @@ } }, { - "__docId__": 5532, + "__docId__": 5523, "kind": "member", "name": "_diffuseMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107442,7 +107426,7 @@ } }, { - "__docId__": 5533, + "__docId__": 5524, "kind": "member", "name": "_specularMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107460,7 +107444,7 @@ } }, { - "__docId__": 5534, + "__docId__": 5525, "kind": "member", "name": "_emissiveMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107478,7 +107462,7 @@ } }, { - "__docId__": 5535, + "__docId__": 5526, "kind": "member", "name": "_alphaMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107496,7 +107480,7 @@ } }, { - "__docId__": 5536, + "__docId__": 5527, "kind": "member", "name": "_reflectivityMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107514,7 +107498,7 @@ } }, { - "__docId__": 5537, + "__docId__": 5528, "kind": "member", "name": "_normalMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107532,7 +107516,7 @@ } }, { - "__docId__": 5538, + "__docId__": 5529, "kind": "member", "name": "_occlusionMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107550,7 +107534,7 @@ } }, { - "__docId__": 5539, + "__docId__": 5530, "kind": "member", "name": "_diffuseFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107568,7 +107552,7 @@ } }, { - "__docId__": 5540, + "__docId__": 5531, "kind": "member", "name": "_specularFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107586,7 +107570,7 @@ } }, { - "__docId__": 5541, + "__docId__": 5532, "kind": "member", "name": "_emissiveFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107604,7 +107588,7 @@ } }, { - "__docId__": 5542, + "__docId__": 5533, "kind": "member", "name": "_alphaFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107622,7 +107606,7 @@ } }, { - "__docId__": 5543, + "__docId__": 5534, "kind": "member", "name": "_reflectivityFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107640,7 +107624,7 @@ } }, { - "__docId__": 5548, + "__docId__": 5539, "kind": "method", "name": "_makeHash", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107657,7 +107641,7 @@ "return": null }, { - "__docId__": 5549, + "__docId__": 5540, "kind": "set", "name": "ambient", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107678,7 +107662,7 @@ } }, { - "__docId__": 5550, + "__docId__": 5541, "kind": "get", "name": "ambient", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107699,7 +107683,7 @@ } }, { - "__docId__": 5551, + "__docId__": 5542, "kind": "set", "name": "diffuse", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107720,7 +107704,7 @@ } }, { - "__docId__": 5552, + "__docId__": 5543, "kind": "get", "name": "diffuse", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107741,7 +107725,7 @@ } }, { - "__docId__": 5553, + "__docId__": 5544, "kind": "set", "name": "specular", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107762,7 +107746,7 @@ } }, { - "__docId__": 5554, + "__docId__": 5545, "kind": "get", "name": "specular", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107783,7 +107767,7 @@ } }, { - "__docId__": 5555, + "__docId__": 5546, "kind": "set", "name": "emissive", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107804,7 +107788,7 @@ } }, { - "__docId__": 5556, + "__docId__": 5547, "kind": "get", "name": "emissive", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107825,7 +107809,7 @@ } }, { - "__docId__": 5557, + "__docId__": 5548, "kind": "set", "name": "alpha", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107846,7 +107830,7 @@ } }, { - "__docId__": 5558, + "__docId__": 5549, "kind": "get", "name": "alpha", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107867,7 +107851,7 @@ } }, { - "__docId__": 5559, + "__docId__": 5550, "kind": "set", "name": "shininess", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107888,7 +107872,7 @@ } }, { - "__docId__": 5560, + "__docId__": 5551, "kind": "get", "name": "shininess", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107909,7 +107893,7 @@ } }, { - "__docId__": 5561, + "__docId__": 5552, "kind": "set", "name": "lineWidth", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107930,7 +107914,7 @@ } }, { - "__docId__": 5562, + "__docId__": 5553, "kind": "get", "name": "lineWidth", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107951,7 +107935,7 @@ } }, { - "__docId__": 5563, + "__docId__": 5554, "kind": "set", "name": "pointSize", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107972,7 +107956,7 @@ } }, { - "__docId__": 5564, + "__docId__": 5555, "kind": "get", "name": "pointSize", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -107993,7 +107977,7 @@ } }, { - "__docId__": 5565, + "__docId__": 5556, "kind": "set", "name": "reflectivity", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108014,7 +107998,7 @@ } }, { - "__docId__": 5566, + "__docId__": 5557, "kind": "get", "name": "reflectivity", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108035,7 +108019,7 @@ } }, { - "__docId__": 5567, + "__docId__": 5558, "kind": "get", "name": "normalMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108056,7 +108040,7 @@ } }, { - "__docId__": 5568, + "__docId__": 5559, "kind": "get", "name": "ambientMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108077,7 +108061,7 @@ } }, { - "__docId__": 5569, + "__docId__": 5560, "kind": "get", "name": "diffuseMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108098,7 +108082,7 @@ } }, { - "__docId__": 5570, + "__docId__": 5561, "kind": "get", "name": "specularMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108119,7 +108103,7 @@ } }, { - "__docId__": 5571, + "__docId__": 5562, "kind": "get", "name": "emissiveMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108140,7 +108124,7 @@ } }, { - "__docId__": 5572, + "__docId__": 5563, "kind": "get", "name": "alphaMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108161,7 +108145,7 @@ } }, { - "__docId__": 5573, + "__docId__": 5564, "kind": "get", "name": "reflectivityMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108182,7 +108166,7 @@ } }, { - "__docId__": 5574, + "__docId__": 5565, "kind": "get", "name": "occlusionMap", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108203,7 +108187,7 @@ } }, { - "__docId__": 5575, + "__docId__": 5566, "kind": "get", "name": "diffuseFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108224,7 +108208,7 @@ } }, { - "__docId__": 5576, + "__docId__": 5567, "kind": "get", "name": "specularFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108245,7 +108229,7 @@ } }, { - "__docId__": 5577, + "__docId__": 5568, "kind": "get", "name": "emissiveFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108266,7 +108250,7 @@ } }, { - "__docId__": 5578, + "__docId__": 5569, "kind": "get", "name": "alphaFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108287,7 +108271,7 @@ } }, { - "__docId__": 5579, + "__docId__": 5570, "kind": "get", "name": "reflectivityFresnel", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108308,7 +108292,7 @@ } }, { - "__docId__": 5580, + "__docId__": 5571, "kind": "set", "name": "alphaMode", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108329,7 +108313,7 @@ } }, { - "__docId__": 5581, + "__docId__": 5572, "kind": "get", "name": "alphaMode", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108350,7 +108334,7 @@ } }, { - "__docId__": 5582, + "__docId__": 5573, "kind": "set", "name": "alphaCutoff", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108371,7 +108355,7 @@ } }, { - "__docId__": 5583, + "__docId__": 5574, "kind": "get", "name": "alphaCutoff", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108392,7 +108376,7 @@ } }, { - "__docId__": 5584, + "__docId__": 5575, "kind": "set", "name": "backfaces", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108413,7 +108397,7 @@ } }, { - "__docId__": 5585, + "__docId__": 5576, "kind": "get", "name": "backfaces", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108434,7 +108418,7 @@ } }, { - "__docId__": 5586, + "__docId__": 5577, "kind": "set", "name": "frontface", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108455,7 +108439,7 @@ } }, { - "__docId__": 5587, + "__docId__": 5578, "kind": "get", "name": "frontface", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108476,7 +108460,7 @@ } }, { - "__docId__": 5588, + "__docId__": 5579, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/PhongMaterial.js~PhongMaterial", @@ -108491,7 +108475,7 @@ "return": null }, { - "__docId__": 5589, + "__docId__": 5580, "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 PerformanceModel}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](http://xeokit.github.io/xeokit-sdk/examples/#materials_PointsMaterial)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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 *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/duplex/duplex.xkt\",\n * metaModelSrc: \"./metaModels/duplex/metaModel.json\"\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 {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 });\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 this.perspectivePoints = cfg.perspectivePoints;\n this.minPerspectivePointSize = cfg.minPerspectivePointSize;\n this.maxPerspectivePointSize = cfg.maxPerspectivePointSize;\n }\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 * 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 ].join((\";\"));\n }\n\n /**\n * Destroys this ````PointsMaterial````.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nexport {PointsMaterial};", @@ -108502,7 +108486,7 @@ "lineNumber": 1 }, { - "__docId__": 5590, + "__docId__": 5581, "kind": "variable", "name": "PRESETS", "memberof": "src/viewer/scene/materials/PointsMaterial.js", @@ -108523,7 +108507,7 @@ "ignore": true }, { - "__docId__": 5591, + "__docId__": 5582, "kind": "class", "name": "PointsMaterial", "memberof": "src/viewer/scene/materials/PointsMaterial.js", @@ -108541,7 +108525,7 @@ ] }, { - "__docId__": 5592, + "__docId__": 5583, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108560,7 +108544,7 @@ } }, { - "__docId__": 5593, + "__docId__": 5584, "kind": "get", "name": "presets", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108581,7 +108565,7 @@ } }, { - "__docId__": 5594, + "__docId__": 5585, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108702,7 +108686,7 @@ ] }, { - "__docId__": 5595, + "__docId__": 5586, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108720,7 +108704,7 @@ } }, { - "__docId__": 5602, + "__docId__": 5593, "kind": "member", "name": "_preset", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108738,7 +108722,7 @@ } }, { - "__docId__": 5608, + "__docId__": 5599, "kind": "set", "name": "pointSize", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108759,7 +108743,7 @@ } }, { - "__docId__": 5609, + "__docId__": 5600, "kind": "get", "name": "pointSize", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108780,7 +108764,7 @@ } }, { - "__docId__": 5610, + "__docId__": 5601, "kind": "set", "name": "roundPoints", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108801,7 +108785,7 @@ } }, { - "__docId__": 5611, + "__docId__": 5602, "kind": "get", "name": "roundPoints", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108822,7 +108806,7 @@ } }, { - "__docId__": 5612, + "__docId__": 5603, "kind": "set", "name": "perspectivePoints", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108843,7 +108827,7 @@ } }, { - "__docId__": 5613, + "__docId__": 5604, "kind": "get", "name": "perspectivePoints", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108864,7 +108848,7 @@ } }, { - "__docId__": 5614, + "__docId__": 5605, "kind": "set", "name": "minPerspectivePointSize", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108885,7 +108869,7 @@ } }, { - "__docId__": 5615, + "__docId__": 5606, "kind": "get", "name": "minPerspectivePointSize", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108906,7 +108890,7 @@ } }, { - "__docId__": 5616, + "__docId__": 5607, "kind": "set", "name": "maxPerspectivePointSize", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108927,7 +108911,7 @@ } }, { - "__docId__": 5617, + "__docId__": 5608, "kind": "get", "name": "maxPerspectivePointSize", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108948,7 +108932,7 @@ } }, { - "__docId__": 5618, + "__docId__": 5609, "kind": "set", "name": "preset", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108969,7 +108953,7 @@ } }, { - "__docId__": 5625, + "__docId__": 5616, "kind": "get", "name": "preset", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -108990,7 +108974,7 @@ } }, { - "__docId__": 5626, + "__docId__": 5617, "kind": "get", "name": "hash", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -109017,7 +109001,7 @@ } }, { - "__docId__": 5627, + "__docId__": 5618, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/PointsMaterial.js~PointsMaterial", @@ -109032,7 +109016,7 @@ "return": null }, { - "__docId__": 5628, + "__docId__": 5619, "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} from \"src/viewer/Viewer.js\";\n * import {Mesh} from \"src/scene/mesh/Mesh.js\";\n * import {buildTorusGeometry} from \"src/scene/geometry/builders/buildTorusGeometry.js\";\n * import {SpecularMaterial} from \"src/scene/materials/SpecularMaterial.js\";\n * import {Texture} from \"src/scene/materials/Texture.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};", @@ -109043,7 +109027,7 @@ "lineNumber": 1 }, { - "__docId__": 5629, + "__docId__": 5620, "kind": "variable", "name": "alphaModes", "memberof": "src/viewer/scene/materials/SpecularMaterial.js", @@ -109064,7 +109048,7 @@ "ignore": true }, { - "__docId__": 5630, + "__docId__": 5621, "kind": "variable", "name": "alphaModeNames", "memberof": "src/viewer/scene/materials/SpecularMaterial.js", @@ -109085,7 +109069,7 @@ "ignore": true }, { - "__docId__": 5631, + "__docId__": 5622, "kind": "class", "name": "SpecularMaterial", "memberof": "src/viewer/scene/materials/SpecularMaterial.js", @@ -109103,7 +109087,7 @@ ] }, { - "__docId__": 5632, + "__docId__": 5623, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109122,7 +109106,7 @@ } }, { - "__docId__": 5633, + "__docId__": 5624, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109413,7 +109397,7 @@ ] }, { - "__docId__": 5634, + "__docId__": 5625, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109431,7 +109415,7 @@ } }, { - "__docId__": 5641, + "__docId__": 5632, "kind": "member", "name": "_diffuseMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109449,7 +109433,7 @@ } }, { - "__docId__": 5642, + "__docId__": 5633, "kind": "member", "name": "_emissiveMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109467,7 +109451,7 @@ } }, { - "__docId__": 5643, + "__docId__": 5634, "kind": "member", "name": "_specularMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109485,7 +109469,7 @@ } }, { - "__docId__": 5644, + "__docId__": 5635, "kind": "member", "name": "_glossinessMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109503,7 +109487,7 @@ } }, { - "__docId__": 5645, + "__docId__": 5636, "kind": "member", "name": "_specularGlossinessMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109521,7 +109505,7 @@ } }, { - "__docId__": 5646, + "__docId__": 5637, "kind": "member", "name": "_occlusionMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109539,7 +109523,7 @@ } }, { - "__docId__": 5647, + "__docId__": 5638, "kind": "member", "name": "_alphaMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109557,7 +109541,7 @@ } }, { - "__docId__": 5648, + "__docId__": 5639, "kind": "member", "name": "_normalMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109575,7 +109559,7 @@ } }, { - "__docId__": 5655, + "__docId__": 5646, "kind": "method", "name": "_makeHash", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109592,7 +109576,7 @@ "return": null }, { - "__docId__": 5656, + "__docId__": 5647, "kind": "set", "name": "diffuse", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109613,7 +109597,7 @@ } }, { - "__docId__": 5657, + "__docId__": 5648, "kind": "get", "name": "diffuse", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109634,7 +109618,7 @@ } }, { - "__docId__": 5658, + "__docId__": 5649, "kind": "get", "name": "diffuseMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109655,7 +109639,7 @@ } }, { - "__docId__": 5659, + "__docId__": 5650, "kind": "set", "name": "specular", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109676,7 +109660,7 @@ } }, { - "__docId__": 5660, + "__docId__": 5651, "kind": "get", "name": "specular", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109697,7 +109681,7 @@ } }, { - "__docId__": 5661, + "__docId__": 5652, "kind": "get", "name": "specularMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109718,7 +109702,7 @@ } }, { - "__docId__": 5662, + "__docId__": 5653, "kind": "get", "name": "specularGlossinessMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109739,7 +109723,7 @@ } }, { - "__docId__": 5663, + "__docId__": 5654, "kind": "set", "name": "glossiness", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109760,7 +109744,7 @@ } }, { - "__docId__": 5664, + "__docId__": 5655, "kind": "get", "name": "glossiness", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109781,7 +109765,7 @@ } }, { - "__docId__": 5665, + "__docId__": 5656, "kind": "get", "name": "glossinessMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109799,7 +109783,7 @@ } }, { - "__docId__": 5666, + "__docId__": 5657, "kind": "set", "name": "specularF0", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109820,7 +109804,7 @@ } }, { - "__docId__": 5667, + "__docId__": 5658, "kind": "get", "name": "specularF0", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109841,7 +109825,7 @@ } }, { - "__docId__": 5668, + "__docId__": 5659, "kind": "set", "name": "emissive", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109862,7 +109846,7 @@ } }, { - "__docId__": 5669, + "__docId__": 5660, "kind": "get", "name": "emissive", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109883,7 +109867,7 @@ } }, { - "__docId__": 5670, + "__docId__": 5661, "kind": "get", "name": "emissiveMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109904,7 +109888,7 @@ } }, { - "__docId__": 5671, + "__docId__": 5662, "kind": "set", "name": "alpha", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109925,7 +109909,7 @@ } }, { - "__docId__": 5672, + "__docId__": 5663, "kind": "get", "name": "alpha", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109946,7 +109930,7 @@ } }, { - "__docId__": 5673, + "__docId__": 5664, "kind": "get", "name": "alphaMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109967,7 +109951,7 @@ } }, { - "__docId__": 5674, + "__docId__": 5665, "kind": "get", "name": "normalMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -109988,7 +109972,7 @@ } }, { - "__docId__": 5675, + "__docId__": 5666, "kind": "get", "name": "occlusionMap", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -110009,7 +109993,7 @@ } }, { - "__docId__": 5676, + "__docId__": 5667, "kind": "set", "name": "alphaMode", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -110030,7 +110014,7 @@ } }, { - "__docId__": 5677, + "__docId__": 5668, "kind": "get", "name": "alphaMode", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -110049,7 +110033,7 @@ } }, { - "__docId__": 5678, + "__docId__": 5669, "kind": "set", "name": "alphaCutoff", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -110070,7 +110054,7 @@ } }, { - "__docId__": 5679, + "__docId__": 5670, "kind": "get", "name": "alphaCutoff", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -110091,7 +110075,7 @@ } }, { - "__docId__": 5680, + "__docId__": 5671, "kind": "set", "name": "backfaces", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -110112,7 +110096,7 @@ } }, { - "__docId__": 5681, + "__docId__": 5672, "kind": "get", "name": "backfaces", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -110133,7 +110117,7 @@ } }, { - "__docId__": 5682, + "__docId__": 5673, "kind": "set", "name": "frontface", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -110154,7 +110138,7 @@ } }, { - "__docId__": 5683, + "__docId__": 5674, "kind": "get", "name": "frontface", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -110175,7 +110159,7 @@ } }, { - "__docId__": 5684, + "__docId__": 5675, "kind": "set", "name": "lineWidth", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -110196,7 +110180,7 @@ } }, { - "__docId__": 5685, + "__docId__": 5676, "kind": "get", "name": "lineWidth", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -110217,7 +110201,7 @@ } }, { - "__docId__": 5686, + "__docId__": 5677, "kind": "set", "name": "pointSize", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -110238,7 +110222,7 @@ } }, { - "__docId__": 5687, + "__docId__": 5678, "kind": "get", "name": "pointSize", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -110259,7 +110243,7 @@ } }, { - "__docId__": 5688, + "__docId__": 5679, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/SpecularMaterial.js~SpecularMaterial", @@ -110274,7 +110258,7 @@ "return": null }, { - "__docId__": 5689, + "__docId__": 5680, "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';\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](http://xeokit.github.io/xeokit-sdk/examples/#materials_Texture)]\n *\n * ```` javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {buildTorusGeometry} from \"../src/scene/geometry/builders/buildTorusGeometry.js\";\n * import {ReadableGeometry} from \"../src/scene/geometry/ReadableGeometry.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {Texture} from \"../src/scene/materials/Texture.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 {String} [cfg.minFilter=\"linearMipmapLinear\"] How the texture is sampled when a texel covers less than one pixel. See the {@link Texture#minFilter} property for more info.\n * @param {String} [cfg.magFilter=\"linear\"] How the texture is sampled when a texel covers more than one pixel. See the {@link Texture#magFilter} property for more info.\n * @param {String} [cfg.wrapS=\"repeat\"] Wrap parameter for texture coordinate *S*. See the {@link Texture#wrapS} property for more info.\n * @param {String} [cfg.wrapT=\"repeat\"] Wrap parameter for texture coordinate *S*. See the {@link Texture#wrapT} property for more info.\n * @param {Boolean} [cfg.flipY=false] Flips this Texture's source data along its vertical axis when true.\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 * @param {String} [cfg.encoding=\"linear\"] Encoding format. See the {@link Texture#encoding} property for more info.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n texture: new Texture2D(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 || \"linearMipmapLinear\";\n if (value !== \"linear\" &&\n value !== \"linearMipmapNearest\" &&\n value !== \"linearMipmapLinear\" &&\n value !== \"nearestMipmapLinear\" &&\n value !== \"nearestMipmapNearest\") {\n this.error(\"Unsupported value for 'minFilter': '\" + value +\n \"' - supported values are 'linear', 'linearMipmapNearest', 'nearestMipmapNearest', \" +\n \"'nearestMipmapLinear' and 'linearMipmapLinear'. Defaulting to 'linearMipmapLinear'.\");\n value = \"linearMipmapLinear\";\n }\n return value;\n }\n\n _checkMagFilter(value) {\n value = value || \"linear\";\n if (value !== \"linear\" && value !== \"nearest\") {\n this.error(\"Unsupported value for 'magFilter': '\" + value +\n \"' - supported values are 'linear' and 'nearest'. Defaulting to 'linear'.\");\n value = \"linear\";\n }\n return value;\n }\n\n _checkFilter(value) {\n value = value || \"linear\";\n if (value !== \"linear\" && value !== \"nearest\") {\n this.error(\"Unsupported value for 'magFilter': '\" + value +\n \"' - supported values are 'linear' and 'nearest'. Defaulting to 'linear'.\");\n value = \"linear\";\n }\n return value;\n }\n\n _checkWrapS(value) {\n value = value || \"repeat\";\n if (value !== \"clampToEdge\" && value !== \"mirroredRepeat\" && value !== \"repeat\") {\n this.error(\"Unsupported value for 'wrapS': '\" + value +\n \"' - supported values are 'clampToEdge', 'mirroredRepeat' and 'repeat'. Defaulting to 'repeat'.\");\n value = \"repeat\";\n }\n return value;\n }\n\n _checkWrapT(value) {\n value = value || \"repeat\";\n if (value !== \"clampToEdge\" && value !== \"mirroredRepeat\" && value !== \"repeat\") {\n this.error(\"Unsupported value for 'wrapT': '\" + value +\n \"' - supported values are 'clampToEdge', 'mirroredRepeat' and 'repeat'. Defaulting to 'repeat'.\");\n value = \"repeat\";\n }\n return value;\n }\n\n _checkFlipY(value) {\n return !!value;\n }\n\n _checkEncoding(value) {\n value = value || \"linear\";\n if (value !== \"linear\" && value !== \"sRGB\" && value !== \"gamma\") {\n this.error(\"Unsupported value for 'encoding': '\" + value + \"' - supported values are 'linear', 'sRGB', 'gamma'. Defaulting to 'linear'.\");\n value = \"linear\";\n }\n return value;\n }\n\n _webglContextRestored() {\n this._state.texture = new Texture2D(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._state.texture.setProps(this._state); // Generate mipmaps\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._image = image; // For faster WebGL context restore - memory inefficient?\n self._state.texture.setImage(image, self._state);\n self._state.texture.setProps(self._state); // Generate mipmaps\n self.scene.loading--;\n self.scene.canvas.spinner.processes--;\n self.glRedraw();\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 * * \"nearest\" - Uses the value of the texture element that is nearest\n * (in Manhattan distance) to the center of the pixel being textured.\n *\n * * \"linear\" - Uses the weighted average of the four texture elements that are\n * closest to the center of the pixel being textured.\n *\n * * \"nearestMipmapNearest\" - 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 * * \"linearMipmapNearest\" - 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 * * \"nearestMipmapLinear\" - 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 * * \"linearMipmapLinear\" - (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 \"linearMipmapLinear\".\n *\n * @type {String}\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 * * \"nearest\" - Uses the value of the texture element that is nearest\n * (in Manhattan distance) to the center of the pixel being textured.\n * * \"linear\" - (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 \"linearMipmapLinear\".\n *\n * @type {String}\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 * * \"clampToEdge\" - causes *S* coordinates to be clamped to the size of the texture.\n * * \"mirroredRepeat\" - 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 * * \"repeat\" - (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 \"repeat\".\n *\n * @type {String}\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 * * \"clampToEdge\" - causes *S* coordinates to be clamped to the size of the texture.\n * * \"mirroredRepeat\" - 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 * * \"repeat\" - (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 \"repeat\".\n *\n * @type {String}\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 {Boolean}\n */\n get flipY() {\n return this._state.flipY;\n }\n\n /**\n * Gets the Texture's encoding format.\n *\n * @type {String}\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};", @@ -110285,7 +110269,7 @@ "lineNumber": 1 }, { - "__docId__": 5690, + "__docId__": 5681, "kind": "function", "name": "ensureImageSizePowerOfTwo", "memberof": "src/viewer/scene/materials/Texture.js", @@ -110316,7 +110300,7 @@ "ignore": true }, { - "__docId__": 5691, + "__docId__": 5682, "kind": "function", "name": "isPowerOfTwo", "memberof": "src/viewer/scene/materials/Texture.js", @@ -110347,7 +110331,7 @@ "ignore": true }, { - "__docId__": 5692, + "__docId__": 5683, "kind": "function", "name": "nextHighestPowerOfTwo", "memberof": "src/viewer/scene/materials/Texture.js", @@ -110378,7 +110362,7 @@ "ignore": true }, { - "__docId__": 5693, + "__docId__": 5684, "kind": "class", "name": "Texture", "memberof": "src/viewer/scene/materials/Texture.js", @@ -110396,7 +110380,7 @@ ] }, { - "__docId__": 5694, + "__docId__": 5685, "kind": "get", "name": "type", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110415,7 +110399,7 @@ } }, { - "__docId__": 5695, + "__docId__": 5686, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110604,7 +110588,7 @@ ] }, { - "__docId__": 5696, + "__docId__": 5687, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110622,7 +110606,7 @@ } }, { - "__docId__": 5697, + "__docId__": 5688, "kind": "member", "name": "_src", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110640,7 +110624,7 @@ } }, { - "__docId__": 5698, + "__docId__": 5689, "kind": "member", "name": "_image", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110658,7 +110642,7 @@ } }, { - "__docId__": 5699, + "__docId__": 5690, "kind": "member", "name": "_translate", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110676,7 +110660,7 @@ } }, { - "__docId__": 5700, + "__docId__": 5691, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110694,7 +110678,7 @@ } }, { - "__docId__": 5701, + "__docId__": 5692, "kind": "member", "name": "_rotate", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110712,7 +110696,7 @@ } }, { - "__docId__": 5702, + "__docId__": 5693, "kind": "member", "name": "_matrixDirty", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110730,7 +110714,7 @@ } }, { - "__docId__": 5708, + "__docId__": 5699, "kind": "method", "name": "_checkMinFilter", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110758,7 +110742,7 @@ } }, { - "__docId__": 5709, + "__docId__": 5700, "kind": "method", "name": "_checkMagFilter", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110786,7 +110770,7 @@ } }, { - "__docId__": 5710, + "__docId__": 5701, "kind": "method", "name": "_checkFilter", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110814,7 +110798,7 @@ } }, { - "__docId__": 5711, + "__docId__": 5702, "kind": "method", "name": "_checkWrapS", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110842,7 +110826,7 @@ } }, { - "__docId__": 5712, + "__docId__": 5703, "kind": "method", "name": "_checkWrapT", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110870,7 +110854,7 @@ } }, { - "__docId__": 5713, + "__docId__": 5704, "kind": "method", "name": "_checkFlipY", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110898,7 +110882,7 @@ } }, { - "__docId__": 5714, + "__docId__": 5705, "kind": "method", "name": "_checkEncoding", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110926,7 +110910,7 @@ } }, { - "__docId__": 5715, + "__docId__": 5706, "kind": "method", "name": "_webglContextRestored", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110943,7 +110927,7 @@ "return": null }, { - "__docId__": 5718, + "__docId__": 5709, "kind": "method", "name": "_update", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110960,7 +110944,7 @@ "return": null }, { - "__docId__": 5720, + "__docId__": 5711, "kind": "set", "name": "image", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -110981,7 +110965,7 @@ } }, { - "__docId__": 5723, + "__docId__": 5714, "kind": "get", "name": "image", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111002,7 +110986,7 @@ } }, { - "__docId__": 5724, + "__docId__": 5715, "kind": "set", "name": "src", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111023,7 +111007,7 @@ } }, { - "__docId__": 5727, + "__docId__": 5718, "kind": "get", "name": "src", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111044,7 +111028,7 @@ } }, { - "__docId__": 5728, + "__docId__": 5719, "kind": "set", "name": "translate", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111065,7 +111049,7 @@ } }, { - "__docId__": 5730, + "__docId__": 5721, "kind": "get", "name": "translate", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111086,7 +111070,7 @@ } }, { - "__docId__": 5731, + "__docId__": 5722, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111107,7 +111091,7 @@ } }, { - "__docId__": 5733, + "__docId__": 5724, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111128,7 +111112,7 @@ } }, { - "__docId__": 5734, + "__docId__": 5725, "kind": "set", "name": "rotate", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111149,7 +111133,7 @@ } }, { - "__docId__": 5737, + "__docId__": 5728, "kind": "get", "name": "rotate", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111170,7 +111154,7 @@ } }, { - "__docId__": 5738, + "__docId__": 5729, "kind": "get", "name": "minFilter", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111191,7 +111175,7 @@ } }, { - "__docId__": 5739, + "__docId__": 5730, "kind": "get", "name": "magFilter", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111212,7 +111196,7 @@ } }, { - "__docId__": 5740, + "__docId__": 5731, "kind": "get", "name": "wrapS", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111233,7 +111217,7 @@ } }, { - "__docId__": 5741, + "__docId__": 5732, "kind": "get", "name": "wrapT", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111254,7 +111238,7 @@ } }, { - "__docId__": 5742, + "__docId__": 5733, "kind": "get", "name": "flipY", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111275,7 +111259,7 @@ } }, { - "__docId__": 5743, + "__docId__": 5734, "kind": "get", "name": "encoding", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111296,7 +111280,7 @@ } }, { - "__docId__": 5744, + "__docId__": 5735, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/materials/Texture.js~Texture", @@ -111311,7 +111295,7 @@ "return": null }, { - "__docId__": 5745, + "__docId__": 5736, "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", @@ -111322,7 +111306,7 @@ "lineNumber": 1 }, { - "__docId__": 5746, + "__docId__": 5737, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/math/Frustum.js", @@ -111343,7 +111327,7 @@ "ignore": true }, { - "__docId__": 5747, + "__docId__": 5738, "kind": "variable", "name": "tempVec3b", "memberof": "src/viewer/scene/math/Frustum.js", @@ -111364,7 +111348,7 @@ "ignore": true }, { - "__docId__": 5748, + "__docId__": 5739, "kind": "variable", "name": "tempMat4a", "memberof": "src/viewer/scene/math/Frustum.js", @@ -111385,7 +111369,7 @@ "ignore": true }, { - "__docId__": 5749, + "__docId__": 5740, "kind": "class", "name": "Frustum", "memberof": "src/viewer/scene/math/Frustum.js", @@ -111401,7 +111385,7 @@ "ignore": true }, { - "__docId__": 5750, + "__docId__": 5741, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/math/Frustum.js~Frustum", @@ -111415,7 +111399,7 @@ "undocument": true }, { - "__docId__": 5751, + "__docId__": 5742, "kind": "member", "name": "planes", "memberof": "src/viewer/scene/math/Frustum.js~Frustum", @@ -111432,7 +111416,7 @@ } }, { - "__docId__": 5752, + "__docId__": 5743, "kind": "class", "name": "FrustumPlane", "memberof": "src/viewer/scene/math/Frustum.js", @@ -111448,7 +111432,7 @@ "ignore": true }, { - "__docId__": 5753, + "__docId__": 5744, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/math/Frustum.js~FrustumPlane", @@ -111462,7 +111446,7 @@ "undocument": true }, { - "__docId__": 5754, + "__docId__": 5745, "kind": "member", "name": "normal", "memberof": "src/viewer/scene/math/Frustum.js~FrustumPlane", @@ -111479,7 +111463,7 @@ } }, { - "__docId__": 5755, + "__docId__": 5746, "kind": "member", "name": "offset", "memberof": "src/viewer/scene/math/Frustum.js~FrustumPlane", @@ -111496,7 +111480,7 @@ } }, { - "__docId__": 5756, + "__docId__": 5747, "kind": "member", "name": "testVertex", "memberof": "src/viewer/scene/math/Frustum.js~FrustumPlane", @@ -111513,7 +111497,7 @@ } }, { - "__docId__": 5757, + "__docId__": 5748, "kind": "method", "name": "set", "memberof": "src/viewer/scene/math/Frustum.js~FrustumPlane", @@ -111554,7 +111538,7 @@ "return": null }, { - "__docId__": 5759, + "__docId__": 5750, "kind": "function", "name": "frustumIntersectsAABB3", "memberof": "src/viewer/scene/math/Frustum.js", @@ -111590,7 +111574,7 @@ } }, { - "__docId__": 5760, + "__docId__": 5751, "kind": "function", "name": "setFrustum", "memberof": "src/viewer/scene/math/Frustum.js", @@ -111628,7 +111612,7 @@ "return": null }, { - "__docId__": 5761, + "__docId__": 5752, "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};", @@ -111639,7 +111623,7 @@ "lineNumber": 1 }, { - "__docId__": 5762, + "__docId__": 5753, "kind": "variable", "name": "buildEdgeIndices", "memberof": "src/viewer/scene/math/buildEdgeIndices.js", @@ -111659,7 +111643,7 @@ } }, { - "__docId__": 5763, + "__docId__": 5754, "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 var 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.floor((array[i + 0] - min[0]) * multiplier[0]);\n quantized[i + 1] = Math.floor((array[i + 1] - min[1]) * multiplier[1]);\n quantized[i + 2] = 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 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.floor((array[i + 0] - min[0]) * multiplier[0]);\n quantized[i + 1] = 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 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};", @@ -111670,7 +111654,7 @@ "lineNumber": 1 }, { - "__docId__": 5764, + "__docId__": 5755, "kind": "function", "name": "getPositionsBounds", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -111713,7 +111697,7 @@ "ignore": true }, { - "__docId__": 5765, + "__docId__": 5756, "kind": "variable", "name": "createPositionsDecodeMatrix", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -111734,7 +111718,7 @@ "ignore": true }, { - "__docId__": 5766, + "__docId__": 5757, "kind": "variable", "name": "compressPositions", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -111754,7 +111738,7 @@ } }, { - "__docId__": 5767, + "__docId__": 5758, "kind": "function", "name": "decompressPosition", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -111797,7 +111781,7 @@ "ignore": true }, { - "__docId__": 5768, + "__docId__": 5759, "kind": "function", "name": "decompressAABB", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -111843,7 +111827,7 @@ "ignore": true }, { - "__docId__": 5769, + "__docId__": 5760, "kind": "function", "name": "decompressPositions", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -111886,7 +111870,7 @@ } }, { - "__docId__": 5770, + "__docId__": 5761, "kind": "function", "name": "getUVBounds", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -111929,7 +111913,7 @@ "ignore": true }, { - "__docId__": 5771, + "__docId__": 5762, "kind": "variable", "name": "compressUVs", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -111949,7 +111933,7 @@ } }, { - "__docId__": 5772, + "__docId__": 5763, "kind": "function", "name": "compressNormals", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -111979,7 +111963,7 @@ } }, { - "__docId__": 5773, + "__docId__": 5764, "kind": "function", "name": "octEncodeVec3", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -112027,7 +112011,7 @@ } }, { - "__docId__": 5774, + "__docId__": 5765, "kind": "function", "name": "octDecodeVec2", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -112057,7 +112041,7 @@ "ignore": true }, { - "__docId__": 5775, + "__docId__": 5766, "kind": "function", "name": "dot", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -112099,7 +112083,7 @@ } }, { - "__docId__": 5776, + "__docId__": 5767, "kind": "function", "name": "decompressUV", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -112137,7 +112121,7 @@ "return": null }, { - "__docId__": 5777, + "__docId__": 5768, "kind": "function", "name": "decompressUVs", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -112180,7 +112164,7 @@ } }, { - "__docId__": 5778, + "__docId__": 5769, "kind": "function", "name": "decompressNormal", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -112216,7 +112200,7 @@ } }, { - "__docId__": 5779, + "__docId__": 5770, "kind": "function", "name": "decompressNormals", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -112252,7 +112236,7 @@ } }, { - "__docId__": 5780, + "__docId__": 5771, "kind": "variable", "name": "geometryCompressionUtils", "memberof": "src/viewer/scene/math/geometryCompressionUtils.js", @@ -112272,7 +112256,7 @@ } }, { - "__docId__": 5781, + "__docId__": 5772, "kind": "file", "name": "src/viewer/scene/math/math.js", "content": "// Some temporary vars to help avoid garbage collection\n\nconst doublePrecision = true;\nconst FloatArrayType = doublePrecision ? Float64Array : Float32Array;\n\nconst tempMat1 = new FloatArrayType(16);\nconst tempMat2 = new FloatArrayType(16);\nconst tempVec4 = new FloatArrayType(4);\n\n\n/**\n * @private\n */\nconst math = {\n\n MIN_DOUBLE: -Number.MAX_SAFE_INTEGER,\n MAX_DOUBLE: Number.MAX_SAFE_INTEGER,\n\n /**\n * The number of radiians in a degree (0.0174532925).\n * @property DEGTORAD\n * @type {Number}\n */\n DEGTORAD: 0.0174532925,\n\n /**\n * The number of degrees in a radian.\n * @property RADTODEG\n * @type {Number}\n */\n RADTODEG: 57.295779513,\n\n 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 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 Float32Array(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 = Float32Array.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 self = {};\n const lut = [];\n for (let i = 0; i < 256; i++) {\n lut[i] = (i < 16 ? '0' : '') + (i).toString(16);\n }\n return () => {\n const d0 = Math.random() * 0xffffffff | 0;\n const d1 = Math.random() * 0xffffffff | 0;\n const d2 = Math.random() * 0xffffffff | 0;\n const d3 = Math.random() * 0xffffffff | 0;\n return `${lut[d0 & 0xff] + lut[d0 >> 8 & 0xff] + lut[d0 >> 16 & 0xff] + lut[d0 >> 24 & 0xff]}-${lut[d1 & 0xff]}${lut[d1 >> 8 & 0xff]}-${lut[d1 >> 16 & 0x0f | 0x40]}${lut[d1 >> 24 & 0xff]}-${lut[d2 & 0x3f | 0x80]}${lut[d2 >> 8 & 0xff]}-${lut[d2 >> 16 & 0xff]}${lut[d2 >> 24 & 0xff]}${lut[d3 & 0xff]}${lut[d3 >> 8 & 0xff]}${lut[d3 >> 16 & 0xff]}${lut[d3 >> 24 & 0xff]}`;\n };\n }))(),\n\n /**\n * Clamps a value to the given range.\n * @param {Number} value Value to clamp.\n * @param {Number} min Lower bound.\n * @param {Number} max Upper bound.\n * @returns {Number} Clamped result.\n */\n clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n },\n\n /**\n * Floating-point modulus\n * @method fmod\n * @static\n * @param {Number} a\n * @param {Number} b\n * @returns {*}\n */\n fmod(a, b) {\n if (a < b) {\n console.error(\"math.fmod : Attempting to find modulus within negative range - would be infinite loop - ignoring\");\n return a;\n }\n while (b <= a) {\n a -= b;\n }\n return a;\n },\n\n /**\n * 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 || new FloatArrayType(3);\n arry[0] = xyz.x;\n arry[1] = xyz.y;\n arry[2] = xyz.z;\n return arry;\n },\n\n /**\n * Duplicates a 4x4 identity matrix.\n * @method dupMat4\n * @static\n */\n dupMat4(m) {\n return m.slice(0, 16);\n },\n\n /**\n * Extracts a 3x3 matrix from a 4x4 matrix.\n * @method mat4To3\n * @static\n */\n mat4To3(m) {\n return [\n m[0], m[1], m[2],\n m[4], m[5], m[6],\n m[8], m[9], m[10]\n ];\n },\n\n /**\n * Returns a 4x4 matrix with each element set to the given scalar value.\n * @method m4s\n * @static\n */\n m4s(s) {\n return [\n s, s, s, s,\n s, s, s, s,\n s, s, s, s,\n s, s, s, s\n ];\n },\n\n /**\n * Returns a 4x4 matrix with each element set to zero.\n * @method setMat4ToZeroes\n * @static\n */\n setMat4ToZeroes() {\n return math.m4s(0.0);\n },\n\n /**\n * Returns a 4x4 matrix with each element set to 1.0.\n * @method setMat4ToOnes\n * @static\n */\n setMat4ToOnes() {\n return math.m4s(1.0);\n },\n\n /**\n * Returns a 4x4 matrix with each element set to 1.0.\n * @method setMat4ToOnes\n * @static\n */\n diagonalMat4v(v) {\n return new FloatArrayType([\n v[0], 0.0, 0.0, 0.0,\n 0.0, v[1], 0.0, 0.0,\n 0.0, 0.0, v[2], 0.0,\n 0.0, 0.0, 0.0, v[3]\n ]);\n },\n\n /**\n * Returns a 4x4 matrix with diagonal elements set to the given vector.\n * @method diagonalMat4c\n * @static\n */\n diagonalMat4c(x, y, z, w) {\n return math.diagonalMat4v([x, y, z, w]);\n },\n\n /**\n * Returns a 4x4 matrix with diagonal elements set to the given scalar.\n * @method diagonalMat4s\n * @static\n */\n diagonalMat4s(s) {\n return math.diagonalMat4c(s, s, s, s);\n },\n\n /**\n * Returns a 4x4 identity matrix.\n * @method identityMat4\n * @static\n */\n identityMat4(mat = new FloatArrayType(16)) {\n mat[0] = 1.0;\n mat[1] = 0.0;\n mat[2] = 0.0;\n mat[3] = 0.0;\n\n mat[4] = 0.0;\n mat[5] = 1.0;\n mat[6] = 0.0;\n mat[7] = 0.0;\n\n mat[8] = 0.0;\n mat[9] = 0.0;\n mat[10] = 1.0;\n mat[11] = 0.0;\n\n mat[12] = 0.0;\n mat[13] = 0.0;\n mat[14] = 0.0;\n mat[15] = 1.0;\n\n return mat;\n },\n\n /**\n * Returns a 3x3 identity matrix.\n * @method identityMat3\n * @static\n */\n identityMat3(mat = new FloatArrayType(9)) {\n mat[0] = 1.0;\n mat[1] = 0.0;\n mat[2] = 0.0;\n\n mat[3] = 0.0;\n mat[4] = 1.0;\n mat[5] = 0.0;\n\n mat[6] = 0.0;\n mat[7] = 0.0;\n mat[8] = 1.0;\n\n return mat;\n },\n\n /**\n * Tests if the given 4x4 matrix is the identity matrix.\n * @method isIdentityMat4\n * @static\n */\n isIdentityMat4(m) {\n if (m[0] !== 1.0 || m[1] !== 0.0 || m[2] !== 0.0 || m[3] !== 0.0 ||\n m[4] !== 0.0 || m[5] !== 1.0 || m[6] !== 0.0 || m[7] !== 0.0 ||\n m[8] !== 0.0 || m[9] !== 0.0 || m[10] !== 1.0 || m[11] !== 0.0 ||\n m[12] !== 0.0 || m[13] !== 0.0 || m[14] !== 0.0 || m[15] !== 1.0) {\n return false;\n }\n return true;\n },\n\n /**\n * Negates the given 4x4 matrix.\n * @method negateMat4\n * @static\n */\n negateMat4(m, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = -m[0];\n dest[1] = -m[1];\n dest[2] = -m[2];\n dest[3] = -m[3];\n dest[4] = -m[4];\n dest[5] = -m[5];\n dest[6] = -m[6];\n dest[7] = -m[7];\n dest[8] = -m[8];\n dest[9] = -m[9];\n dest[10] = -m[10];\n dest[11] = -m[11];\n dest[12] = -m[12];\n dest[13] = -m[13];\n dest[14] = -m[14];\n dest[15] = -m[15];\n return dest;\n },\n\n /**\n * Adds the given 4x4 matrices together.\n * @method addMat4\n * @static\n */\n addMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n dest[0] = a[0] + b[0];\n dest[1] = a[1] + b[1];\n dest[2] = a[2] + b[2];\n dest[3] = a[3] + b[3];\n dest[4] = a[4] + b[4];\n dest[5] = a[5] + b[5];\n dest[6] = a[6] + b[6];\n dest[7] = a[7] + b[7];\n dest[8] = a[8] + b[8];\n dest[9] = a[9] + b[9];\n dest[10] = a[10] + b[10];\n dest[11] = a[11] + b[11];\n dest[12] = a[12] + b[12];\n dest[13] = a[13] + b[13];\n dest[14] = a[14] + b[14];\n dest[15] = a[15] + b[15];\n return dest;\n },\n\n /**\n * Adds the given scalar to each element of the given 4x4 matrix.\n * @method addMat4Scalar\n * @static\n */\n addMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] + s;\n dest[1] = m[1] + s;\n dest[2] = m[2] + s;\n dest[3] = m[3] + s;\n dest[4] = m[4] + s;\n dest[5] = m[5] + s;\n dest[6] = m[6] + s;\n dest[7] = m[7] + s;\n dest[8] = m[8] + s;\n dest[9] = m[9] + s;\n dest[10] = m[10] + s;\n dest[11] = m[11] + s;\n dest[12] = m[12] + s;\n dest[13] = m[13] + s;\n dest[14] = m[14] + s;\n dest[15] = m[15] + s;\n return dest;\n },\n\n /**\n * Adds the given scalar to each element of the given 4x4 matrix.\n * @method addScalarMat4\n * @static\n */\n addScalarMat4(s, m, dest) {\n return math.addMat4Scalar(m, s, dest);\n },\n\n /**\n * Subtracts the second 4x4 matrix from the first.\n * @method subMat4\n * @static\n */\n subMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n dest[0] = a[0] - b[0];\n dest[1] = a[1] - b[1];\n dest[2] = a[2] - b[2];\n dest[3] = a[3] - b[3];\n dest[4] = a[4] - b[4];\n dest[5] = a[5] - b[5];\n dest[6] = a[6] - b[6];\n dest[7] = a[7] - b[7];\n dest[8] = a[8] - b[8];\n dest[9] = a[9] - b[9];\n dest[10] = a[10] - b[10];\n dest[11] = a[11] - b[11];\n dest[12] = a[12] - b[12];\n dest[13] = a[13] - b[13];\n dest[14] = a[14] - b[14];\n dest[15] = a[15] - b[15];\n return dest;\n },\n\n /**\n * Subtracts the given scalar from each element of the given 4x4 matrix.\n * @method subMat4Scalar\n * @static\n */\n subMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] - s;\n dest[1] = m[1] - s;\n dest[2] = m[2] - s;\n dest[3] = m[3] - s;\n dest[4] = m[4] - s;\n dest[5] = m[5] - s;\n dest[6] = m[6] - s;\n dest[7] = m[7] - s;\n dest[8] = m[8] - s;\n dest[9] = m[9] - s;\n dest[10] = m[10] - s;\n dest[11] = m[11] - s;\n dest[12] = m[12] - s;\n dest[13] = m[13] - s;\n dest[14] = m[14] - s;\n dest[15] = m[15] - s;\n return dest;\n },\n\n /**\n * Subtracts the given scalar from each element of the given 4x4 matrix.\n * @method subScalarMat4\n * @static\n */\n subScalarMat4(s, m, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = s - m[0];\n dest[1] = s - m[1];\n dest[2] = s - m[2];\n dest[3] = s - m[3];\n dest[4] = s - m[4];\n dest[5] = s - m[5];\n dest[6] = s - m[6];\n dest[7] = s - m[7];\n dest[8] = s - m[8];\n dest[9] = s - m[9];\n dest[10] = s - m[10];\n dest[11] = s - m[11];\n dest[12] = s - m[12];\n dest[13] = s - m[13];\n dest[14] = s - m[14];\n dest[15] = s - m[15];\n return dest;\n },\n\n /**\n * Multiplies the two given 4x4 matrix by each other.\n * @method mulMat4\n * @static\n */\n mulMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = a[0];\n\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a10 = a[4];\n const a11 = a[5];\n const a12 = a[6];\n const a13 = a[7];\n const a20 = a[8];\n const a21 = a[9];\n const a22 = a[10];\n const a23 = a[11];\n const a30 = a[12];\n const a31 = a[13];\n const a32 = a[14];\n const a33 = a[15];\n const b00 = b[0];\n const b01 = b[1];\n const b02 = b[2];\n const b03 = b[3];\n const b10 = b[4];\n const b11 = b[5];\n const b12 = b[6];\n const b13 = b[7];\n const b20 = b[8];\n const b21 = b[9];\n const b22 = b[10];\n const b23 = b[11];\n const b30 = b[12];\n const b31 = b[13];\n const b32 = b[14];\n const b33 = b[15];\n\n dest[0] = b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30;\n dest[1] = b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31;\n dest[2] = b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32;\n dest[3] = b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33;\n dest[4] = b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30;\n dest[5] = b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31;\n dest[6] = b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32;\n dest[7] = b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33;\n dest[8] = b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30;\n dest[9] = b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31;\n dest[10] = b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32;\n dest[11] = b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33;\n dest[12] = b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30;\n dest[13] = b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31;\n dest[14] = b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32;\n dest[15] = b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33;\n\n return dest;\n },\n\n /**\n * Multiplies the two given 3x3 matrices by each other.\n * @method mulMat4\n * @static\n */\n mulMat3(a, b, dest) {\n if (!dest) {\n dest = new FloatArrayType(9);\n }\n\n const a11 = a[0];\n const a12 = a[3];\n const a13 = a[6];\n const a21 = a[1];\n const a22 = a[4];\n const a23 = a[7];\n const a31 = a[2];\n const a32 = a[5];\n const a33 = a[8];\n const b11 = b[0];\n const b12 = b[3];\n const b13 = b[6];\n const b21 = b[1];\n const b22 = b[4];\n const b23 = b[7];\n const b31 = b[2];\n const b32 = b[5];\n const b33 = b[8];\n\n dest[0] = a11 * b11 + a12 * b21 + a13 * b31;\n dest[3] = a11 * b12 + a12 * b22 + a13 * b32;\n dest[6] = a11 * b13 + a12 * b23 + a13 * b33;\n\n dest[1] = a21 * b11 + a22 * b21 + a23 * b31;\n dest[4] = a21 * b12 + a22 * b22 + a23 * b32;\n dest[7] = a21 * b13 + a22 * b23 + a23 * b33;\n\n dest[2] = a31 * b11 + a32 * b21 + a33 * b31;\n dest[5] = a31 * b12 + a32 * b22 + a33 * b32;\n dest[8] = a31 * b13 + a32 * b23 + a33 * b33;\n\n return dest;\n },\n\n /**\n * Multiplies each element of the given 4x4 matrix by the given scalar.\n * @method mulMat4Scalar\n * @static\n */\n mulMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] * s;\n dest[1] = m[1] * s;\n dest[2] = m[2] * s;\n dest[3] = m[3] * s;\n dest[4] = m[4] * s;\n dest[5] = m[5] * s;\n dest[6] = m[6] * s;\n dest[7] = m[7] * s;\n dest[8] = m[8] * s;\n dest[9] = m[9] * s;\n dest[10] = m[10] * s;\n dest[11] = m[11] * s;\n dest[12] = m[12] * s;\n dest[13] = m[13] * s;\n dest[14] = m[14] * s;\n dest[15] = m[15] * s;\n return dest;\n },\n\n /**\n * Multiplies the given 4x4 matrix by the given four-element vector.\n * @method mulMat4v4\n * @static\n */\n mulMat4v4(m, v, dest = math.vec4()) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n const v3 = v[3];\n dest[0] = m[0] * v0 + m[4] * v1 + m[8] * v2 + m[12] * v3;\n dest[1] = m[1] * v0 + m[5] * v1 + m[9] * v2 + m[13] * v3;\n dest[2] = m[2] * v0 + m[6] * v1 + m[10] * v2 + m[14] * v3;\n dest[3] = m[3] * v0 + m[7] * v1 + m[11] * v2 + m[15] * v3;\n return dest;\n },\n\n /**\n * Transposes the given 4x4 matrix.\n * @method transposeMat4\n * @static\n */\n transposeMat4(mat, dest) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n const m4 = mat[4];\n\n const m14 = mat[14];\n const m8 = mat[8];\n const m13 = mat[13];\n const m12 = mat[12];\n const m9 = mat[9];\n if (!dest || mat === dest) {\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a12 = mat[6];\n const a13 = mat[7];\n const a23 = mat[11];\n mat[1] = m4;\n mat[2] = m8;\n mat[3] = m12;\n mat[4] = a01;\n mat[6] = m9;\n mat[7] = m13;\n mat[8] = a02;\n mat[9] = a12;\n mat[11] = m14;\n mat[12] = a03;\n mat[13] = a13;\n mat[14] = a23;\n return mat;\n }\n dest[0] = mat[0];\n dest[1] = m4;\n dest[2] = m8;\n dest[3] = m12;\n dest[4] = mat[1];\n dest[5] = mat[5];\n dest[6] = m9;\n dest[7] = m13;\n dest[8] = mat[2];\n dest[9] = mat[6];\n dest[10] = mat[10];\n dest[11] = m14;\n dest[12] = mat[3];\n dest[13] = mat[7];\n dest[14] = mat[11];\n dest[15] = mat[15];\n return dest;\n },\n\n /**\n * Transposes the given 3x3 matrix.\n *\n * @method transposeMat3\n * @static\n */\n transposeMat3(mat, dest) {\n if (dest === mat) {\n const a01 = mat[1];\n const a02 = mat[2];\n const a12 = mat[5];\n dest[1] = mat[3];\n dest[2] = mat[6];\n dest[3] = a01;\n dest[5] = mat[7];\n dest[6] = a02;\n dest[7] = a12;\n } else {\n dest[0] = mat[0];\n dest[1] = mat[3];\n dest[2] = mat[6];\n dest[3] = mat[1];\n dest[4] = mat[4];\n dest[5] = mat[7];\n dest[6] = mat[2];\n dest[7] = mat[5];\n dest[8] = mat[8];\n }\n return dest;\n },\n\n /**\n * Returns the determinant of the given 4x4 matrix.\n * @method determinantMat4\n * @static\n */\n determinantMat4(mat) {\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = mat[0];\n\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a10 = mat[4];\n const a11 = mat[5];\n const a12 = mat[6];\n const a13 = mat[7];\n const a20 = mat[8];\n const a21 = mat[9];\n const a22 = mat[10];\n const a23 = mat[11];\n const a30 = mat[12];\n const a31 = mat[13];\n const a32 = mat[14];\n const a33 = mat[15];\n return a30 * a21 * a12 * a03 - a20 * a31 * a12 * a03 - a30 * a11 * a22 * a03 + a10 * a31 * a22 * a03 +\n a20 * a11 * a32 * a03 - a10 * a21 * a32 * a03 - a30 * a21 * a02 * a13 + a20 * a31 * a02 * a13 +\n a30 * a01 * a22 * a13 - a00 * a31 * a22 * a13 - a20 * a01 * a32 * a13 + a00 * a21 * a32 * a13 +\n a30 * a11 * a02 * a23 - a10 * a31 * a02 * a23 - a30 * a01 * a12 * a23 + a00 * a31 * a12 * a23 +\n a10 * a01 * a32 * a23 - a00 * a11 * a32 * a23 - a20 * a11 * a02 * a33 + a10 * a21 * a02 * a33 +\n a20 * a01 * a12 * a33 - a00 * a21 * a12 * a33 - a10 * a01 * a22 * a33 + a00 * a11 * a22 * a33;\n },\n\n /**\n * Returns the inverse of the given 4x4 matrix.\n * @method inverseMat4\n * @static\n */\n inverseMat4(mat, dest) {\n if (!dest) {\n dest = mat;\n }\n\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = mat[0];\n\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a10 = mat[4];\n const a11 = mat[5];\n const a12 = mat[6];\n const a13 = mat[7];\n const a20 = mat[8];\n const a21 = mat[9];\n const a22 = mat[10];\n const a23 = mat[11];\n const a30 = mat[12];\n const a31 = mat[13];\n const a32 = mat[14];\n const a33 = mat[15];\n const b00 = a00 * a11 - a01 * a10;\n const b01 = a00 * a12 - a02 * a10;\n const b02 = a00 * a13 - a03 * a10;\n const b03 = a01 * a12 - a02 * a11;\n const b04 = a01 * a13 - a03 * a11;\n const b05 = a02 * a13 - a03 * a12;\n const b06 = a20 * a31 - a21 * a30;\n const b07 = a20 * a32 - a22 * a30;\n const b08 = a20 * a33 - a23 * a30;\n const b09 = a21 * a32 - a22 * a31;\n const b10 = a21 * a33 - a23 * a31;\n const b11 = a22 * a33 - a23 * a32;\n\n // Calculate the determinant (inlined to avoid double-caching)\n const invDet = 1 / (b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06);\n\n dest[0] = (a11 * b11 - a12 * b10 + a13 * b09) * invDet;\n dest[1] = (-a01 * b11 + a02 * b10 - a03 * b09) * invDet;\n dest[2] = (a31 * b05 - a32 * b04 + a33 * b03) * invDet;\n dest[3] = (-a21 * b05 + a22 * b04 - a23 * b03) * invDet;\n dest[4] = (-a10 * b11 + a12 * b08 - a13 * b07) * invDet;\n dest[5] = (a00 * b11 - a02 * b08 + a03 * b07) * invDet;\n dest[6] = (-a30 * b05 + a32 * b02 - a33 * b01) * invDet;\n dest[7] = (a20 * b05 - a22 * b02 + a23 * b01) * invDet;\n dest[8] = (a10 * b10 - a11 * b08 + a13 * b06) * invDet;\n dest[9] = (-a00 * b10 + a01 * b08 - a03 * b06) * invDet;\n dest[10] = (a30 * b04 - a31 * b02 + a33 * b00) * invDet;\n dest[11] = (-a20 * b04 + a21 * b02 - a23 * b00) * invDet;\n dest[12] = (-a10 * b09 + a11 * b07 - a12 * b06) * invDet;\n dest[13] = (a00 * b09 - a01 * b07 + a02 * b06) * invDet;\n dest[14] = (-a30 * b03 + a31 * b01 - a32 * b00) * invDet;\n dest[15] = (a20 * b03 - a21 * b01 + a22 * b00) * invDet;\n\n return dest;\n },\n\n /**\n * Returns the trace of the given 4x4 matrix.\n * @method traceMat4\n * @static\n */\n traceMat4(m) {\n return (m[0] + m[5] + m[10] + m[15]);\n },\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4\n * @static\n */\n translationMat4v(v, dest) {\n const m = dest || math.identityMat4();\n m[12] = v[0];\n m[13] = v[1];\n m[14] = v[2];\n return m;\n },\n\n /**\n * Returns 3x3 translation matrix.\n * @method translationMat3\n * @static\n */\n translationMat3v(v, dest) {\n const m = dest || math.identityMat3();\n m[6] = v[0];\n m[7] = v[1];\n return m;\n },\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4c\n * @static\n */\n translationMat4c: ((() => {\n const xyz = new FloatArrayType(3);\n return (x, y, z, dest) => {\n xyz[0] = x;\n xyz[1] = y;\n xyz[2] = z;\n return math.translationMat4v(xyz, dest);\n };\n }))(),\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4s\n * @static\n */\n translationMat4s(s, dest) {\n return math.translationMat4c(s, s, s, dest);\n },\n\n /**\n * Efficiently post-concatenates a translation to the given matrix.\n * @param v\n * @param m\n */\n translateMat4v(xyz, m) {\n return math.translateMat4c(xyz[0], xyz[1], xyz[2], m);\n },\n\n /**\n * Efficiently post-concatenates a translation to the given matrix.\n * @param x\n * @param y\n * @param z\n * @param m\n */\n OLDtranslateMat4c(x, y, z, m) {\n\n const m12 = m[12];\n m[0] += m12 * x;\n m[4] += m12 * y;\n m[8] += m12 * z;\n\n const m13 = m[13];\n m[1] += m13 * x;\n m[5] += m13 * y;\n m[9] += m13 * z;\n\n const m14 = m[14];\n m[2] += m14 * x;\n m[6] += m14 * y;\n m[10] += m14 * z;\n\n const m15 = m[15];\n m[3] += m15 * x;\n m[7] += m15 * y;\n m[11] += m15 * z;\n\n return m;\n },\n\n translateMat4c(x, y, z, m) {\n\n const m3 = m[3];\n m[0] += m3 * x;\n m[1] += m3 * y;\n m[2] += m3 * z;\n\n const m7 = m[7];\n m[4] += m7 * x;\n m[5] += m7 * y;\n m[6] += m7 * z;\n\n const m11 = m[11];\n m[8] += m11 * x;\n m[9] += m11 * y;\n m[10] += m11 * z;\n\n const m15 = m[15];\n m[12] += m15 * x;\n m[13] += m15 * y;\n m[14] += m15 * z;\n\n return m;\n },\n\n /**\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 p2[i + 3] = (m3 * x) + (m7 * y) + (m11 * z) + m15;\n }\n\n return p2;\n },\n\n /**\n * Transforms an array of positions by a 4x4 matrix.\n * @method transformPositions4\n * @static\n */\n transformPositions4(m, p, p2 = p) {\n let i;\n const len = p.length;\n\n let x;\n let y;\n let z;\n\n const m0 = m[0];\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n for (i = 0; i < len; i += 4) {\n\n x = p[i + 0];\n y = p[i + 1];\n z = p[i + 2];\n\n p2[i + 0] = (m0 * x) + (m4 * y) + (m8 * z) + m12;\n p2[i + 1] = (m1 * x) + (m5 * y) + (m9 * z) + m13;\n p2[i + 2] = (m2 * x) + (m6 * y) + (m10 * z) + m14;\n p2[i + 3] = (m3 * x) + (m7 * y) + (m11 * z) + m15;\n }\n\n return p2;\n },\n\n /**\n * Transforms a three-element vector by a 4x4 matrix.\n * @method transformVec3\n * @static\n */\n transformVec3(m, v, dest) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n dest = dest || this.vec3();\n dest[0] = (m[0] * v0) + (m[4] * v1) + (m[8] * v2);\n dest[1] = (m[1] * v0) + (m[5] * v1) + (m[9] * v2);\n dest[2] = (m[2] * v0) + (m[6] * v1) + (m[10] * v2);\n return dest;\n },\n\n /**\n * Transforms a four-element vector by a 4x4 matrix.\n * @method transformVec4\n * @static\n */\n transformVec4(m, v, dest) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n const v3 = v[3];\n dest = dest || math.vec4();\n dest[0] = m[0] * v0 + m[4] * v1 + m[8] * v2 + m[12] * v3;\n dest[1] = m[1] * v0 + m[5] * v1 + m[9] * v2 + m[13] * v3;\n dest[2] = m[2] * v0 + m[6] * v1 + m[10] * v2 + m[14] * v3;\n dest[3] = m[3] * v0 + m[7] * v1 + m[11] * v2 + m[15] * v3;\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the x-axis\n *\n * @method rotateVec3X\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3X(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[0];\n r[1] = p[1] * Math.cos(c) - p[2] * Math.sin(c);\n r[2] = p[1] * Math.sin(c) + p[2] * Math.cos(c);\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the y-axis\n *\n * @method rotateVec3Y\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3Y(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[2] * Math.sin(c) + p[0] * Math.cos(c);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(c) - p[0] * Math.sin(c);\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the z-axis\n *\n * @method rotateVec3Z\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3Z(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[0] * Math.cos(c) - p[1] * Math.sin(c);\n r[1] = p[0] * Math.sin(c) + p[1] * Math.cos(c);\n r[2] = p[2];\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Transforms a four-element vector by a 4x4 projection matrix.\n *\n * @method projectVec4\n * @param {Number[]} p 3D View-space coordinate\n * @param {Number[]} q 2D Projected coordinate\n * @returns {Number[]} 2D Projected coordinate\n * @static\n */\n projectVec4(p, q) {\n const f = 1.0 / p[3];\n q = q || math.vec2();\n q[0] = 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 Float32Array(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 Float32Array(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 Float32Array(3);\n const tempVec3b = new Float32Array(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 Float32Array(3);\n const tempVec3 = new Float32Array(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 Float32Array(3);\n const tempVec3b = new Float32Array(3);\n const tempVec3c = new Float32Array(3);\n const tempVec3d = new Float32Array(3);\n const tempVec3e = new Float32Array(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 Float32Array(3);\n const tempVec3b = new Float32Array(3);\n const tempVec3c = new Float32Array(3);\n const tempVec3d = new Float32Array(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 Float32Array(3);\n const tempVec3b = new Float32Array(3);\n const tempVec3c = new Float32Array(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 Float32Array(3);\n const b = new Float32Array(3);\n const c = new Float32Array(3);\n const ab = new Float32Array(3);\n const ac = new Float32Array(3);\n const crossVec = new Float32Array(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 = new Float32Array(3);\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 Float32Array(3);\n const tempVec3b = new Float32Array(3);\n const tempVec3c = new Float32Array(3);\n const tempVec3d = new Float32Array(3);\n const tempVec3e = new Float32Array(3);\n const tempVec3f = new Float32Array(3);\n const tempVec3g = new Float32Array(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 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 Float32Array(16);\n const tempMat4c = new Float32Array(16);\n const tempVec4a = new Float32Array(4);\n const tempVec4b = new Float32Array(4);\n const tempVec4c = new Float32Array(4);\n const tempVec4d = new Float32Array(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 Float32Array(3);\n const worldRayDir = new Float32Array(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 Float32Array(16);\n const tempVec4a = new Float32Array(4);\n const tempVec4b = new Float32Array(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 Float32Array(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[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\nexport {math};\n", @@ -112283,7 +112267,7 @@ "lineNumber": 1 }, { - "__docId__": 5782, + "__docId__": 5773, "kind": "variable", "name": "doublePrecision", "memberof": "src/viewer/scene/math/math.js", @@ -112304,7 +112288,7 @@ "ignore": true }, { - "__docId__": 5783, + "__docId__": 5774, "kind": "variable", "name": "FloatArrayType", "memberof": "src/viewer/scene/math/math.js", @@ -112325,7 +112309,7 @@ "ignore": true }, { - "__docId__": 5784, + "__docId__": 5775, "kind": "variable", "name": "tempMat1", "memberof": "src/viewer/scene/math/math.js", @@ -112346,7 +112330,7 @@ "ignore": true }, { - "__docId__": 5785, + "__docId__": 5776, "kind": "variable", "name": "tempMat2", "memberof": "src/viewer/scene/math/math.js", @@ -112367,7 +112351,7 @@ "ignore": true }, { - "__docId__": 5786, + "__docId__": 5777, "kind": "variable", "name": "tempVec4", "memberof": "src/viewer/scene/math/math.js", @@ -112388,7 +112372,7 @@ "ignore": true }, { - "__docId__": 5787, + "__docId__": 5778, "kind": "variable", "name": "math", "memberof": "src/viewer/scene/math/math.js", @@ -112408,7 +112392,7 @@ } }, { - "__docId__": 5788, + "__docId__": 5779, "kind": "file", "name": "src/viewer/scene/math/rtcCoords.js", "content": "import {math} from './math.js';\n\nconst tempVec3a = math.vec3();\nconst tempAABB3 = math.AABB3();\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 Float32Array(16);\n const rtcCenterWorld = new Float64Array(4);\n const rtcCenterView = new Float64Array(4);\n\n return function (viewMat, rtcCenter, 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;\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 *\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.\n *\n * Returns the RTC positions, along with a computed RTC center for those positions.\n *\n * When computing the RTC position, this function uses a modulus operation to ensure that, whenever possible,\n * identical RTC positions are reused for different positions arrays.\n *\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 = 10000000) {\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 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 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 return rtcNeeded;\n}\n\n/**\n * Converts an RTC 3D position to World-space.\n *\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 * @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};", @@ -112419,7 +112403,7 @@ "lineNumber": 1 }, { - "__docId__": 5789, + "__docId__": 5780, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/math/rtcCoords.js", @@ -112440,7 +112424,7 @@ "ignore": true }, { - "__docId__": 5790, + "__docId__": 5781, "kind": "variable", "name": "tempAABB3", "memberof": "src/viewer/scene/math/rtcCoords.js", @@ -112461,7 +112445,7 @@ "ignore": true }, { - "__docId__": 5791, + "__docId__": 5782, "kind": "variable", "name": "createRTCViewMat", "memberof": "src/viewer/scene/math/rtcCoords.js", @@ -112481,7 +112465,7 @@ } }, { - "__docId__": 5792, + "__docId__": 5783, "kind": "function", "name": "worldToRTCPos", "memberof": "src/viewer/scene/math/rtcCoords.js", @@ -112530,7 +112514,7 @@ "return": null }, { - "__docId__": 5793, + "__docId__": 5784, "kind": "function", "name": "worldToRTCPositions", "memberof": "src/viewer/scene/math/rtcCoords.js", @@ -112604,7 +112588,7 @@ } }, { - "__docId__": 5794, + "__docId__": 5785, "kind": "function", "name": "rtcToWorldPos", "memberof": "src/viewer/scene/math/rtcCoords.js", @@ -112657,7 +112641,7 @@ } }, { - "__docId__": 5795, + "__docId__": 5786, "kind": "function", "name": "getPlaneRTCPos", "memberof": "src/viewer/scene/math/rtcCoords.js", @@ -112729,7 +112713,7 @@ } }, { - "__docId__": 5796, + "__docId__": 5787, "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} from \"../src/viewer/Viewer.js\";\n * import {CameraMemento} from \"../src/scene/mementos/CameraMemento.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};", @@ -112740,7 +112724,7 @@ "lineNumber": 1 }, { - "__docId__": 5797, + "__docId__": 5788, "kind": "class", "name": "CameraMemento", "memberof": "src/viewer/scene/mementos/CameraMemento.js", @@ -112755,7 +112739,7 @@ "interface": false }, { - "__docId__": 5798, + "__docId__": 5789, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mementos/CameraMemento.js~CameraMemento", @@ -112780,7 +112764,7 @@ ] }, { - "__docId__": 5799, + "__docId__": 5790, "kind": "member", "name": "_eye", "memberof": "src/viewer/scene/mementos/CameraMemento.js~CameraMemento", @@ -112797,7 +112781,7 @@ } }, { - "__docId__": 5800, + "__docId__": 5791, "kind": "member", "name": "_look", "memberof": "src/viewer/scene/mementos/CameraMemento.js~CameraMemento", @@ -112814,7 +112798,7 @@ } }, { - "__docId__": 5801, + "__docId__": 5792, "kind": "member", "name": "_up", "memberof": "src/viewer/scene/mementos/CameraMemento.js~CameraMemento", @@ -112831,7 +112815,7 @@ } }, { - "__docId__": 5802, + "__docId__": 5793, "kind": "member", "name": "_projection", "memberof": "src/viewer/scene/mementos/CameraMemento.js~CameraMemento", @@ -112848,7 +112832,7 @@ } }, { - "__docId__": 5803, + "__docId__": 5794, "kind": "method", "name": "saveCamera", "memberof": "src/viewer/scene/mementos/CameraMemento.js~CameraMemento", @@ -112874,7 +112858,7 @@ "return": null }, { - "__docId__": 5808, + "__docId__": 5799, "kind": "method", "name": "restoreCamera", "memberof": "src/viewer/scene/mementos/CameraMemento.js~CameraMemento", @@ -112910,7 +112894,7 @@ "return": null }, { - "__docId__": 5809, + "__docId__": 5800, "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} from \"../src/viewer/Viewer.js\";\n * import {ModelMemento} from \"../src/scene/mementos/ModelMemento.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 const rootMetaObject = metaModel.rootMetaObject;\n if (!rootMetaObject) {\n return;\n }\n\n const objectIds = rootMetaObject.getObjectIDsInSubtree();\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 (var i = 0, len = objectIds.length; i < len; i++) {\n const objectId = objectIds[i];\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 rootMetaObject = metaModel.rootMetaObject;\n if (!rootMetaObject) {\n return;\n }\n\n const objectIds = rootMetaObject.getObjectIDsInSubtree();\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 objects = scene.objects;\n\n for (var i = 0, len = objectIds.length; i < len; i++) {\n const objectId = objectIds[i];\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};", @@ -112921,7 +112905,7 @@ "lineNumber": 1 }, { - "__docId__": 5810, + "__docId__": 5801, "kind": "variable", "name": "color", "memberof": "src/viewer/scene/mementos/ModelMemento.js", @@ -112942,7 +112926,7 @@ "ignore": true }, { - "__docId__": 5811, + "__docId__": 5802, "kind": "class", "name": "ModelMemento", "memberof": "src/viewer/scene/mementos/ModelMemento.js", @@ -112957,7 +112941,7 @@ "interface": false }, { - "__docId__": 5812, + "__docId__": 5803, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -112982,7 +112966,7 @@ ] }, { - "__docId__": 5813, + "__docId__": 5804, "kind": "member", "name": "objectsVisible", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -112999,7 +112983,7 @@ } }, { - "__docId__": 5814, + "__docId__": 5805, "kind": "member", "name": "objectsEdges", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -113016,7 +113000,7 @@ } }, { - "__docId__": 5815, + "__docId__": 5806, "kind": "member", "name": "objectsXrayed", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -113033,7 +113017,7 @@ } }, { - "__docId__": 5816, + "__docId__": 5807, "kind": "member", "name": "objectsHighlighted", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -113050,7 +113034,7 @@ } }, { - "__docId__": 5817, + "__docId__": 5808, "kind": "member", "name": "objectsSelected", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -113067,7 +113051,7 @@ } }, { - "__docId__": 5818, + "__docId__": 5809, "kind": "member", "name": "objectsClippable", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -113084,7 +113068,7 @@ } }, { - "__docId__": 5819, + "__docId__": 5810, "kind": "member", "name": "objectsPickable", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -113101,7 +113085,7 @@ } }, { - "__docId__": 5820, + "__docId__": 5811, "kind": "member", "name": "objectsColorize", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -113118,7 +113102,7 @@ } }, { - "__docId__": 5821, + "__docId__": 5812, "kind": "member", "name": "objectsOpacity", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -113135,7 +113119,7 @@ } }, { - "__docId__": 5822, + "__docId__": 5813, "kind": "member", "name": "numObjects", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -113152,7 +113136,7 @@ } }, { - "__docId__": 5823, + "__docId__": 5814, "kind": "method", "name": "saveObjects", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -113298,7 +113282,7 @@ "return": null }, { - "__docId__": 5825, + "__docId__": 5816, "kind": "member", "name": "_mask", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -113316,7 +113300,7 @@ } }, { - "__docId__": 5826, + "__docId__": 5817, "kind": "method", "name": "restoreObjects", "memberof": "src/viewer/scene/mementos/ModelMemento.js~ModelMemento", @@ -113352,7 +113336,7 @@ "return": null }, { - "__docId__": 5827, + "__docId__": 5818, "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} from \"../src/viewer/Viewer.js\";\n * import {ObjectsMemento} from \"../src/scene/mementos/ObjectsMemento.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};", @@ -113363,7 +113347,7 @@ "lineNumber": 1 }, { - "__docId__": 5828, + "__docId__": 5819, "kind": "variable", "name": "color", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js", @@ -113384,7 +113368,7 @@ "ignore": true }, { - "__docId__": 5829, + "__docId__": 5820, "kind": "class", "name": "ObjectsMemento", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js", @@ -113399,7 +113383,7 @@ "interface": false }, { - "__docId__": 5830, + "__docId__": 5821, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113412,7 +113396,7 @@ "lineNumber": 82 }, { - "__docId__": 5831, + "__docId__": 5822, "kind": "member", "name": "objectsVisible", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113429,7 +113413,7 @@ } }, { - "__docId__": 5832, + "__docId__": 5823, "kind": "member", "name": "objectsEdges", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113446,7 +113430,7 @@ } }, { - "__docId__": 5833, + "__docId__": 5824, "kind": "member", "name": "objectsXrayed", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113463,7 +113447,7 @@ } }, { - "__docId__": 5834, + "__docId__": 5825, "kind": "member", "name": "objectsHighlighted", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113480,7 +113464,7 @@ } }, { - "__docId__": 5835, + "__docId__": 5826, "kind": "member", "name": "objectsSelected", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113497,7 +113481,7 @@ } }, { - "__docId__": 5836, + "__docId__": 5827, "kind": "member", "name": "objectsClippable", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113514,7 +113498,7 @@ } }, { - "__docId__": 5837, + "__docId__": 5828, "kind": "member", "name": "objectsPickable", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113531,7 +113515,7 @@ } }, { - "__docId__": 5838, + "__docId__": 5829, "kind": "member", "name": "objectsColorize", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113548,7 +113532,7 @@ } }, { - "__docId__": 5839, + "__docId__": 5830, "kind": "member", "name": "objectsHasColorize", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113565,7 +113549,7 @@ } }, { - "__docId__": 5840, + "__docId__": 5831, "kind": "member", "name": "objectsOpacity", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113582,7 +113566,7 @@ } }, { - "__docId__": 5841, + "__docId__": 5832, "kind": "member", "name": "numObjects", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113599,7 +113583,7 @@ } }, { - "__docId__": 5842, + "__docId__": 5833, "kind": "method", "name": "saveObjects", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113735,7 +113719,7 @@ "return": null }, { - "__docId__": 5844, + "__docId__": 5835, "kind": "member", "name": "_mask", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113753,7 +113737,7 @@ } }, { - "__docId__": 5845, + "__docId__": 5836, "kind": "method", "name": "restoreObjects", "memberof": "src/viewer/scene/mementos/ObjectsMemento.js~ObjectsMemento", @@ -113779,7 +113763,7 @@ "return": null }, { - "__docId__": 5846, + "__docId__": 5837, "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 {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](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_SceneGraph)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {Node} from \"../src/scene/nodes/Node.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.js\";\n * import {buildBoxGeometry} from \"../src/viewer/scene/geometry/builders/buildBoxGeometry.js\";\n * import {ReadableGeometry} from \"../src/viewer/scene/geometry/ReadableGeometry.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 @private\n */\n get type() {\n return \"Mesh\";\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 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.rtcCenter] Relative-to-center (RTC) coordinate system center 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.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 Mesh in World space, after modelling transforms.\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 {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 castsShadow: null,\n receivesShadow: null,\n xrayed: false,\n highlighted: false,\n selected: false,\n edges: false,\n stationary: !!cfg.stationary,\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 rtcCenter: null,\n rtcCenterHash: 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 if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n this._state.rtcCenterHash = cfg.rtcCenter.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 // 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 _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 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 _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 PerformanceModel\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.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n aabb[0] += rtcCenter[0];\n aabb[1] += rtcCenter[1];\n aabb[2] += rtcCenter[2];\n aabb[3] += rtcCenter[0];\n aabb[4] += rtcCenter[1];\n aabb[5] += rtcCenter[2];\n }\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 * 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 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 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, 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 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 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 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 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 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 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 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 * 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 * 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 // Entity members\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 * Center of the relative-to-center (RTC) coordinate system for this Mesh.\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 rtcCenter(rtcCenter) {\n if (rtcCenter) {\n if (!this._state.rtcCenter) {\n this._state.rtcCenter = math.vec3();\n }\n this._state.rtcCenter.set(rtcCenter);\n this._state.rtcCenterHash = rtcCenter.join();\n this._setAABBDirty();\n this.scene._aabbDirty = true;\n } else {\n if (this._state.rtcCenter) {\n this._state.rtcCenter = null;\n this._state.rtcCenterHash = null;\n this._setAABBDirty();\n this.scene._aabbDirty = true;\n }\n }\n }\n\n /**\n * 3D origin of the Mesh's {@link Geometry}'s vertex positions.\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 rtcCenter() {\n return this._state.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 * 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);\n }\n this.glRedraw();\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 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);\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 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);\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 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);\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 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 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 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 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 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 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 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 * 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 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 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 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 casts shadows.\n *\n * @type {Boolean}\n */\n get castsShadow() {\n return this._state.castsShadow;\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 shadows cast upon it.\n *\n * @type {Boolean}\n */\n get receivesShadow() {\n return this._state.receivesShadow;\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 * 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 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 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 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 * 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 * 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 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 * 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 * 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 * 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 // Drawable members\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 * 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.rtcCenter) {\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 /**\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 // ---------------------- 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._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);\n }\n if (this._xrayed) {\n this.scene._objectXRayedUpdated(this, false);\n }\n if (this._selected) {\n this.scene._objectSelectedUpdated(this, false);\n }\n if (this._highlighted) {\n this.scene._objectHighlightedUpdated(this, false);\n }\n this.scene._objectColorizeUpdated(this, false);\n this.scene._objectOpacityUpdated(this, false);\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 let canvasPos;\n\n if (pickResult.canvasPos) {\n canvasPos = pickResult.canvasPos;\n math.canvasPosToLocalRay(canvas.canvas, pickViewMatrix, pickProjMatrix, mesh.worldMatrix, 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 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};", @@ -113790,7 +113774,7 @@ "lineNumber": 1 }, { - "__docId__": 5847, + "__docId__": 5838, "kind": "variable", "name": "obb", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -113811,7 +113795,7 @@ "ignore": true }, { - "__docId__": 5848, + "__docId__": 5839, "kind": "variable", "name": "angleAxis", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -113832,7 +113816,7 @@ "ignore": true }, { - "__docId__": 5849, + "__docId__": 5840, "kind": "variable", "name": "q1", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -113853,7 +113837,7 @@ "ignore": true }, { - "__docId__": 5850, + "__docId__": 5841, "kind": "variable", "name": "q2", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -113874,7 +113858,7 @@ "ignore": true }, { - "__docId__": 5851, + "__docId__": 5842, "kind": "variable", "name": "xAxis", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -113895,7 +113879,7 @@ "ignore": true }, { - "__docId__": 5852, + "__docId__": 5843, "kind": "variable", "name": "yAxis", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -113916,7 +113900,7 @@ "ignore": true }, { - "__docId__": 5853, + "__docId__": 5844, "kind": "variable", "name": "zAxis", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -113937,7 +113921,7 @@ "ignore": true }, { - "__docId__": 5854, + "__docId__": 5845, "kind": "variable", "name": "veca", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -113958,7 +113942,7 @@ "ignore": true }, { - "__docId__": 5855, + "__docId__": 5846, "kind": "variable", "name": "vecb", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -113979,7 +113963,7 @@ "ignore": true }, { - "__docId__": 5856, + "__docId__": 5847, "kind": "variable", "name": "identityMat", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -114000,7 +113984,7 @@ "ignore": true }, { - "__docId__": 5857, + "__docId__": 5848, "kind": "variable", "name": "pickTriangleSurface", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -114021,7 +114005,7 @@ "ignore": true }, { - "__docId__": 5858, + "__docId__": 5849, "kind": "class", "name": "Mesh", "memberof": "src/viewer/scene/mesh/Mesh.js", @@ -114043,7 +114027,7 @@ ] }, { - "__docId__": 5859, + "__docId__": 5850, "kind": "get", "name": "type", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114062,7 +114046,7 @@ } }, { - "__docId__": 5860, + "__docId__": 5851, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114488,7 +114472,7 @@ ] }, { - "__docId__": 5861, + "__docId__": 5852, "kind": "member", "name": "originalSystemId", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114508,7 +114492,7 @@ "abstract": true }, { - "__docId__": 5862, + "__docId__": 5853, "kind": "member", "name": "renderFlags", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114525,7 +114509,7 @@ } }, { - "__docId__": 5863, + "__docId__": 5854, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114543,7 +114527,7 @@ } }, { - "__docId__": 5864, + "__docId__": 5855, "kind": "member", "name": "_drawRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114561,7 +114545,7 @@ } }, { - "__docId__": 5865, + "__docId__": 5856, "kind": "member", "name": "_shadowRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114579,7 +114563,7 @@ } }, { - "__docId__": 5866, + "__docId__": 5857, "kind": "member", "name": "_emphasisFillRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114597,7 +114581,7 @@ } }, { - "__docId__": 5867, + "__docId__": 5858, "kind": "member", "name": "_emphasisEdgesRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114615,7 +114599,7 @@ } }, { - "__docId__": 5868, + "__docId__": 5859, "kind": "member", "name": "_pickMeshRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114633,7 +114617,7 @@ } }, { - "__docId__": 5869, + "__docId__": 5860, "kind": "member", "name": "_pickTriangleRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114651,7 +114635,7 @@ } }, { - "__docId__": 5870, + "__docId__": 5861, "kind": "member", "name": "_occlusionRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114669,7 +114653,7 @@ } }, { - "__docId__": 5871, + "__docId__": 5862, "kind": "member", "name": "_geometry", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114687,7 +114671,7 @@ } }, { - "__docId__": 5872, + "__docId__": 5863, "kind": "member", "name": "_material", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114705,7 +114689,7 @@ } }, { - "__docId__": 5873, + "__docId__": 5864, "kind": "member", "name": "_xrayMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114723,7 +114707,7 @@ } }, { - "__docId__": 5874, + "__docId__": 5865, "kind": "member", "name": "_highlightMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114741,7 +114725,7 @@ } }, { - "__docId__": 5875, + "__docId__": 5866, "kind": "member", "name": "_selectedMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114759,7 +114743,7 @@ } }, { - "__docId__": 5876, + "__docId__": 5867, "kind": "member", "name": "_edgeMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114777,7 +114761,7 @@ } }, { - "__docId__": 5877, + "__docId__": 5868, "kind": "member", "name": "_parentNode", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114795,7 +114779,7 @@ } }, { - "__docId__": 5878, + "__docId__": 5869, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114813,7 +114797,7 @@ } }, { - "__docId__": 5879, + "__docId__": 5870, "kind": "member", "name": "_aabbDirty", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114831,7 +114815,7 @@ } }, { - "__docId__": 5880, + "__docId__": 5871, "kind": "member", "name": "_numTriangles", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114849,7 +114833,7 @@ } }, { - "__docId__": 5881, + "__docId__": 5872, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114867,7 +114851,7 @@ } }, { - "__docId__": 5882, + "__docId__": 5873, "kind": "member", "name": "_quaternion", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114885,7 +114869,7 @@ } }, { - "__docId__": 5883, + "__docId__": 5874, "kind": "member", "name": "_rotation", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114903,7 +114887,7 @@ } }, { - "__docId__": 5884, + "__docId__": 5875, "kind": "member", "name": "_position", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114921,7 +114905,7 @@ } }, { - "__docId__": 5885, + "__docId__": 5876, "kind": "member", "name": "_worldMatrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114939,7 +114923,7 @@ } }, { - "__docId__": 5886, + "__docId__": 5877, "kind": "member", "name": "_worldNormalMatrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114957,7 +114941,7 @@ } }, { - "__docId__": 5887, + "__docId__": 5878, "kind": "member", "name": "_localMatrixDirty", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114975,7 +114959,7 @@ } }, { - "__docId__": 5888, + "__docId__": 5879, "kind": "member", "name": "_worldMatrixDirty", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -114993,7 +114977,7 @@ } }, { - "__docId__": 5889, + "__docId__": 5880, "kind": "member", "name": "_worldNormalMatrixDirty", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115011,7 +114995,7 @@ } }, { - "__docId__": 5894, + "__docId__": 5885, "kind": "member", "name": "_isObject", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115029,7 +115013,7 @@ } }, { - "__docId__": 5895, + "__docId__": 5886, "kind": "member", "name": "_isModel", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115047,7 +115031,7 @@ } }, { - "__docId__": 5913, + "__docId__": 5904, "kind": "get", "name": "isMesh", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115074,7 +115058,7 @@ } }, { - "__docId__": 5914, + "__docId__": 5905, "kind": "get", "name": "parent", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115095,7 +115079,7 @@ } }, { - "__docId__": 5915, + "__docId__": 5906, "kind": "method", "name": "_checkBillboard", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115123,7 +115107,7 @@ } }, { - "__docId__": 5916, + "__docId__": 5907, "kind": "method", "name": "compile", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115139,7 +115123,7 @@ "return": null }, { - "__docId__": 5922, + "__docId__": 5913, "kind": "method", "name": "_setLocalMatrixDirty", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115156,7 +115140,7 @@ "return": null }, { - "__docId__": 5924, + "__docId__": 5915, "kind": "method", "name": "_setWorldMatrixDirty", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115173,7 +115157,7 @@ "return": null }, { - "__docId__": 5927, + "__docId__": 5918, "kind": "method", "name": "_buildWorldMatrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115190,7 +115174,7 @@ "return": null }, { - "__docId__": 5929, + "__docId__": 5920, "kind": "method", "name": "_buildWorldNormalMatrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115207,7 +115191,7 @@ "return": null }, { - "__docId__": 5932, + "__docId__": 5923, "kind": "method", "name": "_setAABBDirty", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115224,7 +115208,7 @@ "return": null }, { - "__docId__": 5933, + "__docId__": 5924, "kind": "method", "name": "_updateAABB", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115241,7 +115225,7 @@ "return": null }, { - "__docId__": 5936, + "__docId__": 5927, "kind": "method", "name": "_webglContextRestored", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115258,7 +115242,7 @@ "return": null }, { - "__docId__": 5937, + "__docId__": 5928, "kind": "method", "name": "_makeDrawHash", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115279,7 +115263,7 @@ } }, { - "__docId__": 5938, + "__docId__": 5929, "kind": "method", "name": "_makePickHash", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115300,7 +115284,7 @@ } }, { - "__docId__": 5939, + "__docId__": 5930, "kind": "method", "name": "_makeOcclusionHash", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115321,7 +115305,7 @@ } }, { - "__docId__": 5940, + "__docId__": 5931, "kind": "method", "name": "_buildAABB", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115351,7 +115335,7 @@ "return": null }, { - "__docId__": 5941, + "__docId__": 5932, "kind": "get", "name": "geometry", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115372,7 +115356,7 @@ } }, { - "__docId__": 5942, + "__docId__": 5933, "kind": "get", "name": "material", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115393,7 +115377,7 @@ } }, { - "__docId__": 5943, + "__docId__": 5934, "kind": "set", "name": "position", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115414,7 +115398,7 @@ } }, { - "__docId__": 5944, + "__docId__": 5935, "kind": "get", "name": "position", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115435,7 +115419,7 @@ } }, { - "__docId__": 5945, + "__docId__": 5936, "kind": "set", "name": "rotation", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115456,7 +115440,7 @@ } }, { - "__docId__": 5946, + "__docId__": 5937, "kind": "get", "name": "rotation", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115477,7 +115461,7 @@ } }, { - "__docId__": 5947, + "__docId__": 5938, "kind": "set", "name": "quaternion", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115498,7 +115482,7 @@ } }, { - "__docId__": 5948, + "__docId__": 5939, "kind": "get", "name": "quaternion", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115519,7 +115503,7 @@ } }, { - "__docId__": 5949, + "__docId__": 5940, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115540,7 +115524,7 @@ } }, { - "__docId__": 5950, + "__docId__": 5941, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115561,7 +115545,7 @@ } }, { - "__docId__": 5951, + "__docId__": 5942, "kind": "set", "name": "matrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115582,7 +115566,7 @@ } }, { - "__docId__": 5952, + "__docId__": 5943, "kind": "member", "name": "__localMatrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115600,7 +115584,7 @@ } }, { - "__docId__": 5954, + "__docId__": 5945, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115621,7 +115605,7 @@ } }, { - "__docId__": 5957, + "__docId__": 5948, "kind": "get", "name": "worldMatrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115654,7 +115638,7 @@ } }, { - "__docId__": 5958, + "__docId__": 5949, "kind": "get", "name": "worldNormalMatrix", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115675,7 +115659,7 @@ } }, { - "__docId__": 5959, + "__docId__": 5950, "kind": "method", "name": "rotate", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115715,7 +115699,7 @@ } }, { - "__docId__": 5961, + "__docId__": 5952, "kind": "method", "name": "rotateOnWorldAxis", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115755,7 +115739,7 @@ } }, { - "__docId__": 5962, + "__docId__": 5953, "kind": "method", "name": "rotateX", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115785,7 +115769,7 @@ } }, { - "__docId__": 5963, + "__docId__": 5954, "kind": "method", "name": "rotateY", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115815,7 +115799,7 @@ } }, { - "__docId__": 5964, + "__docId__": 5955, "kind": "method", "name": "rotateZ", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115845,7 +115829,7 @@ } }, { - "__docId__": 5965, + "__docId__": 5956, "kind": "method", "name": "translate", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115885,7 +115869,7 @@ } }, { - "__docId__": 5966, + "__docId__": 5957, "kind": "method", "name": "translateX", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115915,7 +115899,7 @@ } }, { - "__docId__": 5967, + "__docId__": 5958, "kind": "method", "name": "translateY", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115945,7 +115929,7 @@ } }, { - "__docId__": 5968, + "__docId__": 5959, "kind": "method", "name": "translateZ", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115975,7 +115959,7 @@ } }, { - "__docId__": 5969, + "__docId__": 5960, "kind": "method", "name": "_putDrawRenderers", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -115992,7 +115976,7 @@ "return": null }, { - "__docId__": 5974, + "__docId__": 5965, "kind": "method", "name": "_putPickRenderers", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116009,7 +115993,7 @@ "return": null }, { - "__docId__": 5977, + "__docId__": 5968, "kind": "method", "name": "_putOcclusionRenderer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116026,7 +116010,7 @@ "return": null }, { - "__docId__": 5979, + "__docId__": 5970, "kind": "get", "name": "isEntity", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116058,7 +116042,7 @@ } }, { - "__docId__": 5980, + "__docId__": 5971, "kind": "get", "name": "isModel", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116079,7 +116063,7 @@ } }, { - "__docId__": 5981, + "__docId__": 5972, "kind": "get", "name": "isObject", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116100,7 +116084,7 @@ } }, { - "__docId__": 5982, + "__docId__": 5973, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116121,7 +116105,7 @@ } }, { - "__docId__": 5983, + "__docId__": 5974, "kind": "set", "name": "rtcCenter", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116142,7 +116126,7 @@ } }, { - "__docId__": 5984, + "__docId__": 5975, "kind": "get", "name": "rtcCenter", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116163,7 +116147,7 @@ } }, { - "__docId__": 5985, + "__docId__": 5976, "kind": "get", "name": "numTriangles", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116184,7 +116168,7 @@ } }, { - "__docId__": 5986, + "__docId__": 5977, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116205,7 +116189,7 @@ } }, { - "__docId__": 5987, + "__docId__": 5978, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116226,7 +116210,7 @@ } }, { - "__docId__": 5988, + "__docId__": 5979, "kind": "set", "name": "xrayed", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116247,7 +116231,7 @@ } }, { - "__docId__": 5989, + "__docId__": 5980, "kind": "get", "name": "xrayed", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116268,7 +116252,7 @@ } }, { - "__docId__": 5990, + "__docId__": 5981, "kind": "set", "name": "highlighted", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116289,7 +116273,7 @@ } }, { - "__docId__": 5991, + "__docId__": 5982, "kind": "get", "name": "highlighted", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116310,7 +116294,7 @@ } }, { - "__docId__": 5992, + "__docId__": 5983, "kind": "set", "name": "selected", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116331,7 +116315,7 @@ } }, { - "__docId__": 5993, + "__docId__": 5984, "kind": "get", "name": "selected", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116352,7 +116336,7 @@ } }, { - "__docId__": 5994, + "__docId__": 5985, "kind": "set", "name": "edges", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116373,7 +116357,7 @@ } }, { - "__docId__": 5995, + "__docId__": 5986, "kind": "get", "name": "edges", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116394,7 +116378,7 @@ } }, { - "__docId__": 5996, + "__docId__": 5987, "kind": "set", "name": "culled", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116415,7 +116399,7 @@ } }, { - "__docId__": 5997, + "__docId__": 5988, "kind": "get", "name": "culled", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116436,7 +116420,7 @@ } }, { - "__docId__": 5998, + "__docId__": 5989, "kind": "set", "name": "clippable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116457,7 +116441,7 @@ } }, { - "__docId__": 5999, + "__docId__": 5990, "kind": "get", "name": "clippable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116478,7 +116462,7 @@ } }, { - "__docId__": 6000, + "__docId__": 5991, "kind": "set", "name": "collidable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116499,7 +116483,7 @@ } }, { - "__docId__": 6001, + "__docId__": 5992, "kind": "get", "name": "collidable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116520,7 +116504,7 @@ } }, { - "__docId__": 6002, + "__docId__": 5993, "kind": "set", "name": "pickable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116541,7 +116525,7 @@ } }, { - "__docId__": 6003, + "__docId__": 5994, "kind": "get", "name": "pickable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116562,7 +116546,7 @@ } }, { - "__docId__": 6004, + "__docId__": 5995, "kind": "set", "name": "castsShadow", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116583,7 +116567,7 @@ } }, { - "__docId__": 6005, + "__docId__": 5996, "kind": "get", "name": "castsShadow", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116604,7 +116588,7 @@ } }, { - "__docId__": 6006, + "__docId__": 5997, "kind": "set", "name": "receivesShadow", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116625,7 +116609,7 @@ } }, { - "__docId__": 6007, + "__docId__": 5998, "kind": "get", "name": "receivesShadow", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116646,7 +116630,7 @@ } }, { - "__docId__": 6008, + "__docId__": 5999, "kind": "get", "name": "saoEnabled", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116668,7 +116652,7 @@ "abstract": true }, { - "__docId__": 6009, + "__docId__": 6000, "kind": "set", "name": "colorize", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116689,7 +116673,7 @@ } }, { - "__docId__": 6010, + "__docId__": 6001, "kind": "get", "name": "colorize", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116710,7 +116694,7 @@ } }, { - "__docId__": 6011, + "__docId__": 6002, "kind": "set", "name": "opacity", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116731,7 +116715,7 @@ } }, { - "__docId__": 6012, + "__docId__": 6003, "kind": "get", "name": "opacity", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116752,7 +116736,7 @@ } }, { - "__docId__": 6013, + "__docId__": 6004, "kind": "get", "name": "transparent", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116784,7 +116768,7 @@ } }, { - "__docId__": 6014, + "__docId__": 6005, "kind": "set", "name": "layer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116805,7 +116789,7 @@ } }, { - "__docId__": 6015, + "__docId__": 6006, "kind": "get", "name": "layer", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116826,7 +116810,7 @@ } }, { - "__docId__": 6016, + "__docId__": 6007, "kind": "get", "name": "stationary", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116847,7 +116831,7 @@ } }, { - "__docId__": 6017, + "__docId__": 6008, "kind": "get", "name": "billboard", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116868,7 +116852,7 @@ } }, { - "__docId__": 6018, + "__docId__": 6009, "kind": "set", "name": "offset", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116889,7 +116873,7 @@ } }, { - "__docId__": 6019, + "__docId__": 6010, "kind": "get", "name": "offset", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116910,7 +116894,7 @@ } }, { - "__docId__": 6020, + "__docId__": 6011, "kind": "get", "name": "isDrawable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116937,7 +116921,7 @@ } }, { - "__docId__": 6021, + "__docId__": 6012, "kind": "get", "name": "isStateSortable", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -116958,7 +116942,7 @@ } }, { - "__docId__": 6022, + "__docId__": 6013, "kind": "method", "name": "stateSortCompare", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117007,7 +116991,7 @@ } }, { - "__docId__": 6023, + "__docId__": 6014, "kind": "method", "name": "rebuildRenderFlags", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117023,7 +117007,7 @@ "return": null }, { - "__docId__": 6024, + "__docId__": 6015, "kind": "method", "name": "_updateRenderFlags", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117039,7 +117023,7 @@ "return": null }, { - "__docId__": 6025, + "__docId__": 6016, "kind": "method", "name": "_getActiveSectionPlanes", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117060,7 +117044,7 @@ } }, { - "__docId__": 6026, + "__docId__": 6017, "kind": "get", "name": "xrayMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117081,7 +117065,7 @@ } }, { - "__docId__": 6027, + "__docId__": 6018, "kind": "get", "name": "highlightMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117102,7 +117086,7 @@ } }, { - "__docId__": 6028, + "__docId__": 6019, "kind": "get", "name": "selectedMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117123,7 +117107,7 @@ } }, { - "__docId__": 6029, + "__docId__": 6020, "kind": "get", "name": "edgeMaterial", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117144,7 +117128,7 @@ } }, { - "__docId__": 6030, + "__docId__": 6021, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117167,7 +117151,7 @@ "return": null }, { - "__docId__": 6031, + "__docId__": 6022, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117190,7 +117174,7 @@ "return": null }, { - "__docId__": 6032, + "__docId__": 6023, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117213,7 +117197,7 @@ "return": null }, { - "__docId__": 6033, + "__docId__": 6024, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117236,7 +117220,7 @@ "return": null }, { - "__docId__": 6034, + "__docId__": 6025, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117259,7 +117243,7 @@ "return": null }, { - "__docId__": 6035, + "__docId__": 6026, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117282,7 +117266,7 @@ "return": null }, { - "__docId__": 6036, + "__docId__": 6027, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117305,7 +117289,7 @@ "return": null }, { - "__docId__": 6037, + "__docId__": 6028, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117328,7 +117312,7 @@ "return": null }, { - "__docId__": 6038, + "__docId__": 6029, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117351,7 +117335,7 @@ "return": null }, { - "__docId__": 6039, + "__docId__": 6030, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117374,7 +117358,7 @@ "return": null }, { - "__docId__": 6040, + "__docId__": 6031, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117397,7 +117381,7 @@ "return": null }, { - "__docId__": 6041, + "__docId__": 6032, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117420,7 +117404,7 @@ "return": null }, { - "__docId__": 6042, + "__docId__": 6033, "kind": "method", "name": "drawPickMesh", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117443,7 +117427,7 @@ "return": null }, { - "__docId__": 6043, + "__docId__": 6034, "kind": "method", "name": "canPickTriangle", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117463,7 +117447,7 @@ } }, { - "__docId__": 6044, + "__docId__": 6035, "kind": "method", "name": "drawPickTriangles", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117486,7 +117470,7 @@ "return": null }, { - "__docId__": 6045, + "__docId__": 6036, "kind": "method", "name": "pickTriangleSurface", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117521,7 +117505,7 @@ "return": null }, { - "__docId__": 6046, + "__docId__": 6037, "kind": "method", "name": "drawPickVertices", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117544,7 +117528,7 @@ "return": null }, { - "__docId__": 6047, + "__docId__": 6038, "kind": "method", "name": "delegatePickedEntity", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117573,7 +117557,7 @@ "params": [] }, { - "__docId__": 6048, + "__docId__": 6039, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/mesh/Mesh.js~Mesh", @@ -117588,7 +117572,7 @@ "return": null }, { - "__docId__": 6049, + "__docId__": 6040, "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 rtcCenter = mesh.rtcCenter;\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, rtcCenter ? frameCtx.getRTCViewMatrix(meshState.rtcCenterHash, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n if (meshState.clippable) {\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcCenter ? getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a) : sectionPlane.pos);\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\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\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};", @@ -117599,7 +117583,7 @@ "lineNumber": 1 }, { - "__docId__": 6050, + "__docId__": 6041, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -117620,7 +117604,7 @@ "ignore": true }, { - "__docId__": 6051, + "__docId__": 6042, "kind": "variable", "name": "ids", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -117641,7 +117625,7 @@ "ignore": true }, { - "__docId__": 6052, + "__docId__": 6043, "kind": "variable", "name": "drawRenderers", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -117662,7 +117646,7 @@ "ignore": true }, { - "__docId__": 6053, + "__docId__": 6044, "kind": "function", "name": "get", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -117693,7 +117677,7 @@ "ignore": true }, { - "__docId__": 6054, + "__docId__": 6045, "kind": "function", "name": "put", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -117713,7 +117697,7 @@ "ignore": true }, { - "__docId__": 6055, + "__docId__": 6046, "kind": "function", "name": "webglContextRestored", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -117733,7 +117717,7 @@ "ignore": true }, { - "__docId__": 6056, + "__docId__": 6047, "kind": "function", "name": "drawMesh", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -117766,7 +117750,7 @@ "ignore": true }, { - "__docId__": 6057, + "__docId__": 6048, "kind": "function", "name": "_allocate", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -117793,7 +117777,7 @@ "return": null }, { - "__docId__": 6058, + "__docId__": 6049, "kind": "function", "name": "_bindProgram", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -117820,7 +117804,7 @@ "return": null }, { - "__docId__": 6059, + "__docId__": 6050, "kind": "function", "name": "DrawRenderer", "memberof": "src/viewer/scene/mesh/draw/DrawRenderer.js", @@ -117852,7 +117836,7 @@ "return": null }, { - "__docId__": 6060, + "__docId__": 6051, "kind": "file", "name": "src/viewer/scene/mesh/draw/DrawShaderSource.js", "content": "/**\n * @private\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 = {\n \"linear\": \"linearToLinear\",\n \"sRGB\": \"sRGBToLinear\",\n \"gamma\": \"gammaToLinear\"\n};\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.sectionPlanes.length > 0;\n const quantizedGeometry = !!geometryState.compressGeometry;\n\n const src = [];\n src.push(\"// Lambertian drawing vertex shader\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"attribute 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(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying 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(\"attribute 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(\"varying 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((reflectedColor * materialColor) + (lightAmbient.rgb * lightAmbient.a), 1.0) * colorize;\");\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 }\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.sectionPlanes.length > 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(\"// Lambertian drawing 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(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"uniform bool clippable;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying 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(\"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.sectionPlanes.length; 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(\" gl_FragColor = 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_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n if (gammaOutput) {\n src.push(\"gl_FragColor = linearToGamma(vColor, gammaFactor);\");\n } else {\n src.push(\"gl_FragColor = 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 stationary = meshState.stationary;\n const texturing = hasTextures(mesh);\n const normals = hasNormals(mesh);\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const receivesShadow = getReceivesShadow(mesh);\n const quantizedGeometry = !!geometryState.compressGeometry;\n const src = [];\n src.push(\"// Drawing vertex shader\");\n if (normals && material._normalMap) {\n src.push(\"#extension GL_OES_standard_derivatives : enable\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"attribute 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(\"varying vec3 vViewPosition;\");\n src.push(\"uniform vec3 offset;\");\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n if (normals) {\n src.push(\"attribute vec3 normal;\");\n src.push(\"uniform mat4 modelNormalMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"varying 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(\"varying 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(\"attribute vec2 uv;\");\n src.push(\"varying vec2 vUV;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat3 uvDecodeMatrix;\")\n }\n }\n if (geometryState.colors) {\n src.push(\"attribute vec4 color;\");\n src.push(\"varying 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(\"varying 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 }\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 }\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.sectionPlanes.length > 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\n src.push(\"// Drawing fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n if (normals && material._normalMap) {\n src.push(\"#extension GL_OES_standard_derivatives : 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) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying 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(\"varying vec4 vWorldPosition;\");\n src.push(\"uniform bool clippable;\");\n for (var 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\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] + \"(textureCube(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 = textureCube(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] + \"(textureCube(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(textureCube(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(\"varying vec3 vViewPosition;\");\n\n if (geometryState.colors) {\n src.push(\"varying 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(\"varying vec2 vUV;\");\n }\n\n if (normals) {\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n src.push(\"varying 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 = texture2D( 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(\"varying 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 = texture2D(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(\"varying 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\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.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 if (solid) {\n src.push(\" if (gl_FrontFacing == false) {\");\n src.push(\" gl_FragColor = 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 = texture2D(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 = texture2D(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 = texture2D(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 = texture2D(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 *= texture2D(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 *= texture2D(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 *= texture2D(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 *= texture2D(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 = texture2D(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 *= texture2D(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 *= texture2D(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 = texture2D(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(texture2D(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(texture2D(shadowMap' + i + ', shadowCoord.xy + vec2( -0.94201624, -0.39906216 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');\n // src.push('shadow -= (shadowCoord.z > unpackDepth(texture2D(shadowMap' + i + ', shadowCoord.xy + vec2( 0.94558609, -0.76890725 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');\n // src.push('shadow -= (shadowCoord.z > unpackDepth(texture2D(shadowMap' + i + ', shadowCoord.xy + vec2( -0.094184101, -0.92938870 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');\n // src.push('shadow -= (shadowCoord.z > unpackDepth(texture2D(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(\"gl_FragColor = vec4(outgoingLight, alpha) * colorize;\");\n\n if (gammaOutput) {\n src.push(\"gl_FragColor = linearToGamma(gl_FragColor, gammaFactor);\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n\n return src;\n}\n\nexport {DrawShaderSource};", @@ -117863,7 +117847,7 @@ "lineNumber": 1 }, { - "__docId__": 6061, + "__docId__": 6052, "kind": "variable", "name": "TEXTURE_DECODE_FUNCS", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -117884,7 +117868,7 @@ "ignore": true }, { - "__docId__": 6062, + "__docId__": 6053, "kind": "function", "name": "getReceivesShadow", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -117915,7 +117899,7 @@ "ignore": true }, { - "__docId__": 6063, + "__docId__": 6054, "kind": "function", "name": "hasTextures", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -117946,7 +117930,7 @@ "ignore": true }, { - "__docId__": 6064, + "__docId__": 6055, "kind": "function", "name": "hasNormals", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -117977,7 +117961,7 @@ "ignore": true }, { - "__docId__": 6065, + "__docId__": 6056, "kind": "function", "name": "buildVertexLambert", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -118008,7 +117992,7 @@ "ignore": true }, { - "__docId__": 6066, + "__docId__": 6057, "kind": "function", "name": "buildFragmentLambert", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -118039,7 +118023,7 @@ "ignore": true }, { - "__docId__": 6067, + "__docId__": 6058, "kind": "function", "name": "buildVertexDraw", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -118070,7 +118054,7 @@ "ignore": true }, { - "__docId__": 6068, + "__docId__": 6059, "kind": "function", "name": "buildFragmentDraw", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -118101,7 +118085,7 @@ "ignore": true }, { - "__docId__": 6069, + "__docId__": 6060, "kind": "function", "name": "DrawShaderSource", "memberof": "src/viewer/scene/mesh/draw/DrawShaderSource.js", @@ -118127,7 +118111,7 @@ "return": null }, { - "__docId__": 6070, + "__docId__": 6061, "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 rtcCenter = mesh.rtcCenter;\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, rtcCenter ? frameCtx.getRTCViewMatrix(meshState.rtcCenterHash, rtcCenter) : camera.viewMatrix);\n\n if (meshState.clippable) {\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcCenter ? getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a) : sectionPlane.pos);\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\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.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._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", @@ -118138,7 +118122,7 @@ "lineNumber": 1 }, { - "__docId__": 6071, + "__docId__": 6062, "kind": "variable", "name": "ids", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -118159,7 +118143,7 @@ "ignore": true }, { - "__docId__": 6072, + "__docId__": 6063, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -118180,7 +118164,7 @@ "ignore": true }, { - "__docId__": 6073, + "__docId__": 6064, "kind": "variable", "name": "renderers", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -118201,7 +118185,7 @@ "ignore": true }, { - "__docId__": 6074, + "__docId__": 6065, "kind": "function", "name": "get", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -118232,7 +118216,7 @@ "ignore": true }, { - "__docId__": 6075, + "__docId__": 6066, "kind": "function", "name": "put", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -118252,7 +118236,7 @@ "ignore": true }, { - "__docId__": 6076, + "__docId__": 6067, "kind": "function", "name": "webglContextRestored", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -118272,7 +118256,7 @@ "ignore": true }, { - "__docId__": 6077, + "__docId__": 6068, "kind": "function", "name": "drawMesh", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -118311,7 +118295,7 @@ "ignore": true }, { - "__docId__": 6078, + "__docId__": 6069, "kind": "function", "name": "_allocate", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -118338,7 +118322,7 @@ "return": null }, { - "__docId__": 6079, + "__docId__": 6070, "kind": "function", "name": "_bindProgram", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -118365,7 +118349,7 @@ "return": null }, { - "__docId__": 6080, + "__docId__": 6071, "kind": "function", "name": "EmphasisEdgesRenderer", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js", @@ -118397,7 +118381,7 @@ "return": null }, { - "__docId__": 6081, + "__docId__": 6072, "kind": "file", "name": "src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js", "content": "import {WEBGL_INFO} from \"../../webglInfo.js\";\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 clipping = scene._sectionPlanesState.sectionPlanes.length > 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(\"// Edges drawing 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(\"attribute 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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n }\n src.push(\"varying 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 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 }\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.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Edges drawing fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying 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(\"varying vec4 vWorldPosition;\");\n src.push(\"uniform bool clippable;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying vec4 vColor;\");\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.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n if (gammaOutput) {\n src.push(\"gl_FragColor = linearToGamma(vColor, gammaFactor);\");\n } else {\n src.push(\"gl_FragColor = vColor;\");\n }\n src.push(\"}\");\n return src;\n}\n\nexport {EmphasisEdgesShaderSource};", @@ -118408,7 +118392,7 @@ "lineNumber": 1 }, { - "__docId__": 6082, + "__docId__": 6073, "kind": "function", "name": "buildVertex", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js", @@ -118439,7 +118423,7 @@ "ignore": true }, { - "__docId__": 6083, + "__docId__": 6074, "kind": "function", "name": "buildFragment", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js", @@ -118470,7 +118454,7 @@ "ignore": true }, { - "__docId__": 6084, + "__docId__": 6075, "kind": "class", "name": "EmphasisEdgesShaderSource", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js", @@ -118486,7 +118470,7 @@ "ignore": true }, { - "__docId__": 6085, + "__docId__": 6076, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js~EmphasisEdgesShaderSource", @@ -118500,7 +118484,7 @@ "undocument": true }, { - "__docId__": 6086, + "__docId__": 6077, "kind": "member", "name": "vertex", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js~EmphasisEdgesShaderSource", @@ -118517,7 +118501,7 @@ } }, { - "__docId__": 6087, + "__docId__": 6078, "kind": "member", "name": "fragment", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js~EmphasisEdgesShaderSource", @@ -118534,7 +118518,7 @@ } }, { - "__docId__": 6088, + "__docId__": 6079, "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 rtcCenter = mesh.rtcCenter;\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, rtcCenter ? frameCtx.getRTCViewMatrix(meshState.rtcCenterHash, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n if (meshState.clippable) {\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcCenter ? getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a) : sectionPlane.pos);\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\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.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._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", @@ -118545,7 +118529,7 @@ "lineNumber": 1 }, { - "__docId__": 6089, + "__docId__": 6080, "kind": "variable", "name": "ids", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -118566,7 +118550,7 @@ "ignore": true }, { - "__docId__": 6090, + "__docId__": 6081, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -118587,7 +118571,7 @@ "ignore": true }, { - "__docId__": 6091, + "__docId__": 6082, "kind": "variable", "name": "xrayFillRenderers", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -118608,7 +118592,7 @@ "ignore": true }, { - "__docId__": 6092, + "__docId__": 6083, "kind": "function", "name": "get", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -118639,7 +118623,7 @@ "ignore": true }, { - "__docId__": 6093, + "__docId__": 6084, "kind": "function", "name": "put", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -118659,7 +118643,7 @@ "ignore": true }, { - "__docId__": 6094, + "__docId__": 6085, "kind": "function", "name": "webglContextRestored", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -118679,7 +118663,7 @@ "ignore": true }, { - "__docId__": 6095, + "__docId__": 6086, "kind": "function", "name": "drawMesh", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -118718,7 +118702,7 @@ "ignore": true }, { - "__docId__": 6096, + "__docId__": 6087, "kind": "function", "name": "_allocate", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -118745,7 +118729,7 @@ "return": null }, { - "__docId__": 6097, + "__docId__": 6088, "kind": "function", "name": "_bindProgram", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -118772,7 +118756,7 @@ "return": null }, { - "__docId__": 6098, + "__docId__": 6089, "kind": "function", "name": "EmphasisFillRenderer", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js", @@ -118804,7 +118788,7 @@ "return": null }, { - "__docId__": 6099, + "__docId__": 6090, "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 clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const quantizedGeometry = !!mesh._geometry._state.compressGeometry;\n const billboard = mesh._state.billboard;\n const stationary = mesh._state.stationary;\n const src = [];\n\n src.push(\"// EmphasisFillShaderSource 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(\"attribute 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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n }\n src.push(\"uniform vec4 lightAmbient;\");\n src.push(\"uniform vec4 fillColor;\");\n if (normals) {\n src.push(\"attribute 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(\"varying 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 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 }\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.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Lambertian drawing 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(\"uniform float logDepthBufFC;\");\n src.push(\"varying 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(\"varying vec4 vWorldPosition;\");\n src.push(\"uniform bool clippable;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; 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(\"varying vec4 vColor;\");\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.sectionPlanes.length; 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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n if (gammaOutput) {\n src.push(\"gl_FragColor = linearToGamma(vColor, gammaFactor);\");\n } else {\n src.push(\"gl_FragColor = vColor;\");\n }\n src.push(\"}\");\n return src;\n}\n\nexport {EmphasisFillShaderSource};", @@ -118815,7 +118799,7 @@ "lineNumber": 1 }, { - "__docId__": 6100, + "__docId__": 6091, "kind": "function", "name": "buildVertex", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js", @@ -118846,7 +118830,7 @@ "ignore": true }, { - "__docId__": 6101, + "__docId__": 6092, "kind": "function", "name": "hasNormals", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js", @@ -118877,7 +118861,7 @@ "ignore": true }, { - "__docId__": 6102, + "__docId__": 6093, "kind": "function", "name": "buildFragment", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js", @@ -118908,7 +118892,7 @@ "ignore": true }, { - "__docId__": 6103, + "__docId__": 6094, "kind": "class", "name": "EmphasisFillShaderSource", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js", @@ -118924,7 +118908,7 @@ "ignore": true }, { - "__docId__": 6104, + "__docId__": 6095, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js~EmphasisFillShaderSource", @@ -118938,7 +118922,7 @@ "undocument": true }, { - "__docId__": 6105, + "__docId__": 6096, "kind": "member", "name": "vertex", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js~EmphasisFillShaderSource", @@ -118955,7 +118939,7 @@ } }, { - "__docId__": 6106, + "__docId__": 6097, "kind": "member", "name": "fragment", "memberof": "src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js~EmphasisFillShaderSource", @@ -118972,7 +118956,7 @@ } }, { - "__docId__": 6107, + "__docId__": 6098, "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.hash\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 rtcCenter = mesh.rtcCenter;\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, rtcCenter ? frameCtx.getRTCViewMatrix(meshState.rtcCenterHash, rtcCenter) : camera.viewMatrix);\n\n if (meshState.clippable) {\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcCenter ? getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a) : sectionPlane.pos);\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\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", @@ -118983,7 +118967,7 @@ "lineNumber": 1 }, { - "__docId__": 6108, + "__docId__": 6099, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -119004,7 +118988,7 @@ "ignore": true }, { - "__docId__": 6109, + "__docId__": 6100, "kind": "variable", "name": "renderers", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -119025,7 +119009,7 @@ "ignore": true }, { - "__docId__": 6110, + "__docId__": 6101, "kind": "function", "name": "get", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -119056,7 +119040,7 @@ "ignore": true }, { - "__docId__": 6111, + "__docId__": 6102, "kind": "function", "name": "put", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -119076,7 +119060,7 @@ "ignore": true }, { - "__docId__": 6112, + "__docId__": 6103, "kind": "function", "name": "webglContextRestored", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -119096,7 +119080,7 @@ "ignore": true }, { - "__docId__": 6113, + "__docId__": 6104, "kind": "function", "name": "drawMesh", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -119129,7 +119113,7 @@ "ignore": true }, { - "__docId__": 6114, + "__docId__": 6105, "kind": "function", "name": "_allocate", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -119156,7 +119140,7 @@ "return": null }, { - "__docId__": 6115, + "__docId__": 6106, "kind": "function", "name": "_bindProgram", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -119183,7 +119167,7 @@ "return": null }, { - "__docId__": 6116, + "__docId__": 6107, "kind": "function", "name": "OcclusionRenderer", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionRenderer.js", @@ -119215,7 +119199,7 @@ "return": null }, { - "__docId__": 6117, + "__docId__": 6108, "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 clipping = scene._sectionPlanesState.sectionPlanes.length > 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(\"// Mesh occlusion 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(\"attribute 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(\"varying vec4 vWorldPosition;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\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 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 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 }\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.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Mesh occlusion 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(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"uniform bool clippable;\");\n src.push(\"varying vec4 vWorldPosition;\");\n for (var 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\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.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 src.push(\"}\");\n }\n\n src.push(\" gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); \");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n\n return src;\n}\n\nexport {OcclusionShaderSource};", @@ -119226,7 +119210,7 @@ "lineNumber": 1 }, { - "__docId__": 6118, + "__docId__": 6109, "kind": "function", "name": "buildVertex", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js", @@ -119257,7 +119241,7 @@ "ignore": true }, { - "__docId__": 6119, + "__docId__": 6110, "kind": "function", "name": "buildFragment", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js", @@ -119288,7 +119272,7 @@ "ignore": true }, { - "__docId__": 6120, + "__docId__": 6111, "kind": "class", "name": "OcclusionShaderSource", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js", @@ -119304,7 +119288,7 @@ "ignore": true }, { - "__docId__": 6121, + "__docId__": 6112, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js~OcclusionShaderSource", @@ -119318,7 +119302,7 @@ "undocument": true }, { - "__docId__": 6122, + "__docId__": 6113, "kind": "member", "name": "vertex", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js~OcclusionShaderSource", @@ -119335,7 +119319,7 @@ } }, { - "__docId__": 6123, + "__docId__": 6114, "kind": "member", "name": "fragment", "memberof": "src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js~OcclusionShaderSource", @@ -119352,7 +119336,7 @@ } }, { - "__docId__": 6124, + "__docId__": 6115, "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 rtcCenter = mesh.rtcCenter;\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, rtcCenter ? frameCtx.getRTCPickViewMatrix(meshState.rtcCenterHash, rtcCenter) : frameCtx.pickViewMatrix);\n\n if (meshState.clippable) {\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcCenter ? getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a) : sectionPlane.pos);\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\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 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._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", @@ -119363,7 +119347,7 @@ "lineNumber": 1 }, { - "__docId__": 6125, + "__docId__": 6116, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -119384,7 +119368,7 @@ "ignore": true }, { - "__docId__": 6126, + "__docId__": 6117, "kind": "variable", "name": "renderers", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -119405,7 +119389,7 @@ "ignore": true }, { - "__docId__": 6127, + "__docId__": 6118, "kind": "function", "name": "get", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -119436,7 +119420,7 @@ "ignore": true }, { - "__docId__": 6128, + "__docId__": 6119, "kind": "function", "name": "put", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -119456,7 +119440,7 @@ "ignore": true }, { - "__docId__": 6129, + "__docId__": 6120, "kind": "function", "name": "webglContextRestored", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -119476,7 +119460,7 @@ "ignore": true }, { - "__docId__": 6130, + "__docId__": 6121, "kind": "function", "name": "drawMesh", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -119509,7 +119493,7 @@ "ignore": true }, { - "__docId__": 6131, + "__docId__": 6122, "kind": "function", "name": "_allocate", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -119536,7 +119520,7 @@ "return": null }, { - "__docId__": 6132, + "__docId__": 6123, "kind": "function", "name": "_bindProgram", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -119563,7 +119547,7 @@ "return": null }, { - "__docId__": 6133, + "__docId__": 6124, "kind": "function", "name": "PickMeshRenderer", "memberof": "src/viewer/scene/mesh/pick/PickMeshRenderer.js", @@ -119595,7 +119579,7 @@ "return": null }, { - "__docId__": 6134, + "__docId__": 6125, "kind": "file", "name": "src/viewer/scene/mesh/pick/PickMeshShaderSource.js", "content": "/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\nimport {WEBGL_INFO} from \"../../webglInfo.js\";\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 clipping = scene._sectionPlanesState.sectionPlanes.length > 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(\"// Mesh picking 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(\"attribute vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"uniform vec3 offset;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\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 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 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 }\n src.push(\"gl_Position = 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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Mesh picking fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"uniform vec4 pickColor;\");\n if (clipping) {\n src.push(\"uniform bool clippable;\");\n src.push(\"varying vec4 vWorldPosition;\");\n for (var 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(\"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.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 src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = pickColor; \");\n src.push(\"}\");\n return src;\n}\n\nexport {PickMeshShaderSource};", @@ -119606,7 +119590,7 @@ "lineNumber": 1 }, { - "__docId__": 6135, + "__docId__": 6126, "kind": "function", "name": "buildVertex", "memberof": "src/viewer/scene/mesh/pick/PickMeshShaderSource.js", @@ -119637,7 +119621,7 @@ "ignore": true }, { - "__docId__": 6136, + "__docId__": 6127, "kind": "function", "name": "buildFragment", "memberof": "src/viewer/scene/mesh/pick/PickMeshShaderSource.js", @@ -119668,7 +119652,7 @@ "ignore": true }, { - "__docId__": 6137, + "__docId__": 6128, "kind": "class", "name": "PickMeshShaderSource", "memberof": "src/viewer/scene/mesh/pick/PickMeshShaderSource.js", @@ -119684,7 +119668,7 @@ "ignore": true }, { - "__docId__": 6138, + "__docId__": 6129, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mesh/pick/PickMeshShaderSource.js~PickMeshShaderSource", @@ -119698,7 +119682,7 @@ "undocument": true }, { - "__docId__": 6139, + "__docId__": 6130, "kind": "member", "name": "vertex", "memberof": "src/viewer/scene/mesh/pick/PickMeshShaderSource.js~PickMeshShaderSource", @@ -119715,7 +119699,7 @@ } }, { - "__docId__": 6140, + "__docId__": 6131, "kind": "member", "name": "fragment", "memberof": "src/viewer/scene/mesh/pick/PickMeshShaderSource.js~PickMeshShaderSource", @@ -119732,7 +119716,7 @@ } }, { - "__docId__": 6141, + "__docId__": 6132, "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 rtcCenter = mesh.rtcCenter;\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, rtcCenter ? frameCtx.getRTCPickViewMatrix(meshState.rtcCenterHash, rtcCenter) : frameCtx.pickViewMatrix);\n\n if (meshState.clippable) {\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcCenter ? getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a) : sectionPlane.pos);\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\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 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._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", @@ -119743,7 +119727,7 @@ "lineNumber": 1 }, { - "__docId__": 6142, + "__docId__": 6133, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -119764,7 +119748,7 @@ "ignore": true }, { - "__docId__": 6143, + "__docId__": 6134, "kind": "variable", "name": "renderers", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -119785,7 +119769,7 @@ "ignore": true }, { - "__docId__": 6144, + "__docId__": 6135, "kind": "function", "name": "get", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -119816,7 +119800,7 @@ "ignore": true }, { - "__docId__": 6145, + "__docId__": 6136, "kind": "function", "name": "put", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -119836,7 +119820,7 @@ "ignore": true }, { - "__docId__": 6146, + "__docId__": 6137, "kind": "function", "name": "webglContextRestored", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -119856,7 +119840,7 @@ "ignore": true }, { - "__docId__": 6147, + "__docId__": 6138, "kind": "function", "name": "drawMesh", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -119889,7 +119873,7 @@ "ignore": true }, { - "__docId__": 6148, + "__docId__": 6139, "kind": "function", "name": "_allocate", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -119916,7 +119900,7 @@ "return": null }, { - "__docId__": 6149, + "__docId__": 6140, "kind": "function", "name": "PickTriangleRenderer", "memberof": "src/viewer/scene/mesh/pick/PickTriangleRenderer.js", @@ -119948,7 +119932,7 @@ "return": null }, { - "__docId__": 6150, + "__docId__": 6141, "kind": "file", "name": "src/viewer/scene/mesh/pick/PickTriangleShaderSource.js", "content": "/**\n * @private\n */\nimport {WEBGL_INFO} from \"../../webglInfo.js\";\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 clipping = scene._sectionPlanesState.sectionPlanes.length > 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(\"// Surface picking 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(\"attribute vec3 position;\");\n src.push(\"attribute 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(\"varying vec4 vWorldPosition;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n src.push(\"varying 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 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 }\n src.push(\"gl_Position = 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.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Surface picking fragment 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(\"#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(\"varying vec4 vColor;\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"uniform bool clippable;\");\n src.push(\"varying 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(\"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.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 src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vColor;\");\n src.push(\"}\");\n return src;\n}\n\nexport {PickTriangleShaderSource};", @@ -119959,7 +119943,7 @@ "lineNumber": 1 }, { - "__docId__": 6151, + "__docId__": 6142, "kind": "function", "name": "buildVertex", "memberof": "src/viewer/scene/mesh/pick/PickTriangleShaderSource.js", @@ -119990,7 +119974,7 @@ "ignore": true }, { - "__docId__": 6152, + "__docId__": 6143, "kind": "function", "name": "buildFragment", "memberof": "src/viewer/scene/mesh/pick/PickTriangleShaderSource.js", @@ -120021,7 +120005,7 @@ "ignore": true }, { - "__docId__": 6153, + "__docId__": 6144, "kind": "class", "name": "PickTriangleShaderSource", "memberof": "src/viewer/scene/mesh/pick/PickTriangleShaderSource.js", @@ -120037,7 +120021,7 @@ "interface": false }, { - "__docId__": 6154, + "__docId__": 6145, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mesh/pick/PickTriangleShaderSource.js~PickTriangleShaderSource", @@ -120051,7 +120035,7 @@ "undocument": true }, { - "__docId__": 6155, + "__docId__": 6146, "kind": "member", "name": "vertex", "memberof": "src/viewer/scene/mesh/pick/PickTriangleShaderSource.js~PickTriangleShaderSource", @@ -120068,7 +120052,7 @@ } }, { - "__docId__": 6156, + "__docId__": 6147, "kind": "member", "name": "fragment", "memberof": "src/viewer/scene/mesh/pick/PickTriangleShaderSource.js~PickTriangleShaderSource", @@ -120085,7 +120069,7 @@ } }, { - "__docId__": 6157, + "__docId__": 6148, "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.sectionPlanes.length > 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", @@ -120096,7 +120080,7 @@ "lineNumber": 1 }, { - "__docId__": 6158, + "__docId__": 6149, "kind": "variable", "name": "renderers", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -120117,7 +120101,7 @@ "ignore": true }, { - "__docId__": 6159, + "__docId__": 6150, "kind": "function", "name": "get", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -120148,7 +120132,7 @@ "ignore": true }, { - "__docId__": 6160, + "__docId__": 6151, "kind": "function", "name": "put", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -120168,7 +120152,7 @@ "ignore": true }, { - "__docId__": 6161, + "__docId__": 6152, "kind": "function", "name": "webglContextRestored", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -120188,7 +120172,7 @@ "ignore": true }, { - "__docId__": 6162, + "__docId__": 6153, "kind": "function", "name": "drawMesh", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -120221,7 +120205,7 @@ "ignore": true }, { - "__docId__": 6163, + "__docId__": 6154, "kind": "function", "name": "_allocate", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -120248,7 +120232,7 @@ "return": null }, { - "__docId__": 6164, + "__docId__": 6155, "kind": "function", "name": "_bindProgram", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -120275,7 +120259,7 @@ "return": null }, { - "__docId__": 6165, + "__docId__": 6156, "kind": "function", "name": "ShadowRenderer", "memberof": "src/viewer/scene/mesh/shadow/ShadowRenderer.js", @@ -120307,7 +120291,7 @@ "return": null }, { - "__docId__": 6166, + "__docId__": 6157, "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(\"attribute 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(\"varying 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.sectionPlanes.length > 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(\"varying vec4 vWorldPosition;\");\n for (var 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\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(\"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.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 src.push(\"}\");\n }\n src.push(\"gl_FragColor = encodeFloat(gl_FragCoord.z);\");\n src.push(\"}\");\n return src;\n}\n\nexport {ShadowShaderSource};", @@ -120318,7 +120302,7 @@ "lineNumber": 1 }, { - "__docId__": 6167, + "__docId__": 6158, "kind": "function", "name": "buildVertex", "memberof": "src/viewer/scene/mesh/shadow/ShadowShaderSource.js", @@ -120349,7 +120333,7 @@ "ignore": true }, { - "__docId__": 6168, + "__docId__": 6159, "kind": "function", "name": "buildFragment", "memberof": "src/viewer/scene/mesh/shadow/ShadowShaderSource.js", @@ -120380,7 +120364,7 @@ "ignore": true }, { - "__docId__": 6169, + "__docId__": 6160, "kind": "class", "name": "ShadowShaderSource", "memberof": "src/viewer/scene/mesh/shadow/ShadowShaderSource.js", @@ -120396,7 +120380,7 @@ "ignore": true }, { - "__docId__": 6170, + "__docId__": 6161, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/mesh/shadow/ShadowShaderSource.js~ShadowShaderSource", @@ -120410,7 +120394,7 @@ "undocument": true }, { - "__docId__": 6171, + "__docId__": 6162, "kind": "member", "name": "vertex", "memberof": "src/viewer/scene/mesh/shadow/ShadowShaderSource.js~ShadowShaderSource", @@ -120427,7 +120411,7 @@ } }, { - "__docId__": 6172, + "__docId__": 6163, "kind": "member", "name": "fragment", "memberof": "src/viewer/scene/mesh/shadow/ShadowShaderSource.js~ShadowShaderSource", @@ -120444,7 +120428,7 @@ } }, { - "__docId__": 6173, + "__docId__": 6164, "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} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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};", @@ -120455,7 +120439,7 @@ "lineNumber": 1 }, { - "__docId__": 6174, + "__docId__": 6165, "kind": "variable", "name": "unitsInfo", "memberof": "src/viewer/scene/metriqs/Metriqs.js", @@ -120476,7 +120460,7 @@ "ignore": true }, { - "__docId__": 6175, + "__docId__": 6166, "kind": "class", "name": "Metrics", "memberof": "src/viewer/scene/metriqs/Metriqs.js", @@ -120494,7 +120478,7 @@ ] }, { - "__docId__": 6176, + "__docId__": 6167, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -120514,7 +120498,7 @@ "ignore": true }, { - "__docId__": 6177, + "__docId__": 6168, "kind": "member", "name": "_units", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -120532,7 +120516,7 @@ } }, { - "__docId__": 6178, + "__docId__": 6169, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -120550,7 +120534,7 @@ } }, { - "__docId__": 6179, + "__docId__": 6170, "kind": "member", "name": "_origin", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -120568,7 +120552,7 @@ } }, { - "__docId__": 6183, + "__docId__": 6174, "kind": "get", "name": "unitsInfo", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -120589,7 +120573,7 @@ } }, { - "__docId__": 6184, + "__docId__": 6175, "kind": "set", "name": "units", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -120618,7 +120602,7 @@ ] }, { - "__docId__": 6186, + "__docId__": 6177, "kind": "get", "name": "units", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -120639,7 +120623,7 @@ } }, { - "__docId__": 6187, + "__docId__": 6178, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -120668,7 +120652,7 @@ ] }, { - "__docId__": 6189, + "__docId__": 6180, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -120689,7 +120673,7 @@ } }, { - "__docId__": 6190, + "__docId__": 6181, "kind": "set", "name": "origin", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -120718,7 +120702,7 @@ ] }, { - "__docId__": 6191, + "__docId__": 6182, "kind": "get", "name": "origin", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -120739,7 +120723,7 @@ } }, { - "__docId__": 6192, + "__docId__": 6183, "kind": "method", "name": "worldToRealPos", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -120788,7 +120772,7 @@ } }, { - "__docId__": 6193, + "__docId__": 6184, "kind": "method", "name": "realToWorldPos", "memberof": "src/viewer/scene/metriqs/Metriqs.js~Metrics", @@ -120837,7 +120821,7 @@ } }, { - "__docId__": 6194, + "__docId__": 6185, "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](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_SceneGraph)]\n *\n * ````javascript\n * import {Viewer} from \"../src/viewer/Viewer.js\";\n * import {Mesh} from \"../src/scene/mesh/Mesh.js\";\n * import {Node} from \"../src/scene/nodes/Node.js\";\n * import {PhongMaterial} from \"../src/scene/materials/PhongMaterial.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.rtcCenter] Relative-to-center (RTC) coordinate system center for this Node.\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.rtcCenter = cfg.rtcCenter;\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 center of the relative-to-center (RTC) coordinate system for this Node and all child Nodes and {@link Mesh}s.\n *\n * @type {Float64Array}\n */\n set rtcCenter(rtcCenter) {\n if (rtcCenter) {\n if (!this._rtcCenter) {\n this._rtcCenter = math.vec3();\n }\n this._rtcCenter.set(rtcCenter);\n } else {\n if (this._rtcCenter) {\n this._rtcCenter = null;\n }\n }\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].rtcCenter = rtcCenter;\n }\n }\n\n /**\n * Gets the center of the relative-to-center (RTC) coordinate system for this Node and all child Nodes and {@link Mesh}s.\n *\n * @type {Float64Array}\n */\n get rtcCenter() {\n return this._rtcCenter;\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 PerformanceModel\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);\n }\n if (this._xrayed) {\n this.scene._objectXRayedUpdated(this, false);\n }\n if (this._selected) {\n this.scene._objectSelectedUpdated(this, false);\n }\n if (this._highlighted) {\n this.scene._objectHighlightedUpdated(this, false);\n }\n this.scene._objectColorizeUpdated(this, false);\n this.scene._objectOpacityUpdated(this, false);\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", @@ -120848,7 +120832,7 @@ "lineNumber": 1 }, { - "__docId__": 6195, + "__docId__": 6186, "kind": "variable", "name": "angleAxis", "memberof": "src/viewer/scene/nodes/Node.js", @@ -120869,7 +120853,7 @@ "ignore": true }, { - "__docId__": 6196, + "__docId__": 6187, "kind": "variable", "name": "q1", "memberof": "src/viewer/scene/nodes/Node.js", @@ -120890,7 +120874,7 @@ "ignore": true }, { - "__docId__": 6197, + "__docId__": 6188, "kind": "variable", "name": "q2", "memberof": "src/viewer/scene/nodes/Node.js", @@ -120911,7 +120895,7 @@ "ignore": true }, { - "__docId__": 6198, + "__docId__": 6189, "kind": "variable", "name": "xAxis", "memberof": "src/viewer/scene/nodes/Node.js", @@ -120932,7 +120916,7 @@ "ignore": true }, { - "__docId__": 6199, + "__docId__": 6190, "kind": "variable", "name": "yAxis", "memberof": "src/viewer/scene/nodes/Node.js", @@ -120953,7 +120937,7 @@ "ignore": true }, { - "__docId__": 6200, + "__docId__": 6191, "kind": "variable", "name": "zAxis", "memberof": "src/viewer/scene/nodes/Node.js", @@ -120974,7 +120958,7 @@ "ignore": true }, { - "__docId__": 6201, + "__docId__": 6192, "kind": "variable", "name": "veca", "memberof": "src/viewer/scene/nodes/Node.js", @@ -120995,7 +120979,7 @@ "ignore": true }, { - "__docId__": 6202, + "__docId__": 6193, "kind": "variable", "name": "vecb", "memberof": "src/viewer/scene/nodes/Node.js", @@ -121016,7 +121000,7 @@ "ignore": true }, { - "__docId__": 6203, + "__docId__": 6194, "kind": "variable", "name": "identityMat", "memberof": "src/viewer/scene/nodes/Node.js", @@ -121037,7 +121021,7 @@ "ignore": true }, { - "__docId__": 6204, + "__docId__": 6195, "kind": "class", "name": "Node", "memberof": "src/viewer/scene/nodes/Node.js", @@ -121058,7 +121042,7 @@ ] }, { - "__docId__": 6205, + "__docId__": 6196, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121407,7 +121391,7 @@ ] }, { - "__docId__": 6206, + "__docId__": 6197, "kind": "member", "name": "_parentNode", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121425,7 +121409,7 @@ } }, { - "__docId__": 6207, + "__docId__": 6198, "kind": "member", "name": "_children", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121443,7 +121427,7 @@ } }, { - "__docId__": 6208, + "__docId__": 6199, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121461,7 +121445,7 @@ } }, { - "__docId__": 6209, + "__docId__": 6200, "kind": "member", "name": "_aabbDirty", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121479,7 +121463,7 @@ } }, { - "__docId__": 6210, + "__docId__": 6201, "kind": "member", "name": "_numTriangles", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121497,7 +121481,7 @@ } }, { - "__docId__": 6211, + "__docId__": 6202, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121515,7 +121499,7 @@ } }, { - "__docId__": 6212, + "__docId__": 6203, "kind": "member", "name": "_quaternion", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121533,7 +121517,7 @@ } }, { - "__docId__": 6213, + "__docId__": 6204, "kind": "member", "name": "_rotation", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121551,7 +121535,7 @@ } }, { - "__docId__": 6214, + "__docId__": 6205, "kind": "member", "name": "_position", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121569,7 +121553,7 @@ } }, { - "__docId__": 6215, + "__docId__": 6206, "kind": "member", "name": "_offset", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121587,7 +121571,7 @@ } }, { - "__docId__": 6216, + "__docId__": 6207, "kind": "member", "name": "_localMatrix", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121605,7 +121589,7 @@ } }, { - "__docId__": 6217, + "__docId__": 6208, "kind": "member", "name": "_worldMatrix", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121623,7 +121607,7 @@ } }, { - "__docId__": 6218, + "__docId__": 6209, "kind": "member", "name": "_localMatrixDirty", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121641,7 +121625,7 @@ } }, { - "__docId__": 6219, + "__docId__": 6210, "kind": "member", "name": "_worldMatrixDirty", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121659,7 +121643,7 @@ } }, { - "__docId__": 6224, + "__docId__": 6215, "kind": "member", "name": "_isModel", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121677,7 +121661,7 @@ } }, { - "__docId__": 6225, + "__docId__": 6216, "kind": "member", "name": "_isObject", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121695,7 +121679,7 @@ } }, { - "__docId__": 6241, + "__docId__": 6232, "kind": "get", "name": "isEntity", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121716,7 +121700,7 @@ } }, { - "__docId__": 6242, + "__docId__": 6233, "kind": "get", "name": "isModel", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121737,7 +121721,7 @@ } }, { - "__docId__": 6243, + "__docId__": 6234, "kind": "get", "name": "isObject", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121759,7 +121743,7 @@ "abstract": true }, { - "__docId__": 6244, + "__docId__": 6235, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121780,7 +121764,7 @@ } }, { - "__docId__": 6245, + "__docId__": 6236, "kind": "set", "name": "rtcCenter", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121801,7 +121785,7 @@ } }, { - "__docId__": 6246, + "__docId__": 6237, "kind": "member", "name": "_rtcCenter", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121819,7 +121803,7 @@ } }, { - "__docId__": 6248, + "__docId__": 6239, "kind": "get", "name": "rtcCenter", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121840,7 +121824,7 @@ } }, { - "__docId__": 6249, + "__docId__": 6240, "kind": "get", "name": "numTriangles", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121861,7 +121845,7 @@ } }, { - "__docId__": 6250, + "__docId__": 6241, "kind": "set", "name": "visible", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121882,7 +121866,7 @@ } }, { - "__docId__": 6251, + "__docId__": 6242, "kind": "member", "name": "_visible", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121900,7 +121884,7 @@ } }, { - "__docId__": 6252, + "__docId__": 6243, "kind": "get", "name": "visible", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121921,7 +121905,7 @@ } }, { - "__docId__": 6253, + "__docId__": 6244, "kind": "set", "name": "xrayed", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121942,7 +121926,7 @@ } }, { - "__docId__": 6254, + "__docId__": 6245, "kind": "member", "name": "_xrayed", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121960,7 +121944,7 @@ } }, { - "__docId__": 6255, + "__docId__": 6246, "kind": "get", "name": "xrayed", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -121981,7 +121965,7 @@ } }, { - "__docId__": 6256, + "__docId__": 6247, "kind": "set", "name": "highlighted", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122002,7 +121986,7 @@ } }, { - "__docId__": 6257, + "__docId__": 6248, "kind": "member", "name": "_highlighted", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122020,7 +122004,7 @@ } }, { - "__docId__": 6258, + "__docId__": 6249, "kind": "get", "name": "highlighted", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122041,7 +122025,7 @@ } }, { - "__docId__": 6259, + "__docId__": 6250, "kind": "set", "name": "selected", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122062,7 +122046,7 @@ } }, { - "__docId__": 6260, + "__docId__": 6251, "kind": "member", "name": "_selected", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122080,7 +122064,7 @@ } }, { - "__docId__": 6261, + "__docId__": 6252, "kind": "get", "name": "selected", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122101,7 +122085,7 @@ } }, { - "__docId__": 6262, + "__docId__": 6253, "kind": "set", "name": "edges", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122122,7 +122106,7 @@ } }, { - "__docId__": 6263, + "__docId__": 6254, "kind": "member", "name": "_edges", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122140,7 +122124,7 @@ } }, { - "__docId__": 6264, + "__docId__": 6255, "kind": "get", "name": "edges", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122161,7 +122145,7 @@ } }, { - "__docId__": 6265, + "__docId__": 6256, "kind": "set", "name": "culled", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122182,7 +122166,7 @@ } }, { - "__docId__": 6266, + "__docId__": 6257, "kind": "member", "name": "_culled", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122200,7 +122184,7 @@ } }, { - "__docId__": 6267, + "__docId__": 6258, "kind": "get", "name": "culled", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122221,7 +122205,7 @@ } }, { - "__docId__": 6268, + "__docId__": 6259, "kind": "set", "name": "clippable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122242,7 +122226,7 @@ } }, { - "__docId__": 6269, + "__docId__": 6260, "kind": "member", "name": "_clippable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122260,7 +122244,7 @@ } }, { - "__docId__": 6270, + "__docId__": 6261, "kind": "get", "name": "clippable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122281,7 +122265,7 @@ } }, { - "__docId__": 6271, + "__docId__": 6262, "kind": "set", "name": "collidable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122302,7 +122286,7 @@ } }, { - "__docId__": 6272, + "__docId__": 6263, "kind": "member", "name": "_collidable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122320,7 +122304,7 @@ } }, { - "__docId__": 6273, + "__docId__": 6264, "kind": "get", "name": "collidable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122341,7 +122325,7 @@ } }, { - "__docId__": 6274, + "__docId__": 6265, "kind": "set", "name": "pickable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122362,7 +122346,7 @@ } }, { - "__docId__": 6275, + "__docId__": 6266, "kind": "member", "name": "_pickable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122380,7 +122364,7 @@ } }, { - "__docId__": 6276, + "__docId__": 6267, "kind": "get", "name": "pickable", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122401,7 +122385,7 @@ } }, { - "__docId__": 6277, + "__docId__": 6268, "kind": "set", "name": "colorize", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122422,7 +122406,7 @@ } }, { - "__docId__": 6278, + "__docId__": 6269, "kind": "get", "name": "colorize", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122443,7 +122427,7 @@ } }, { - "__docId__": 6279, + "__docId__": 6270, "kind": "set", "name": "opacity", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122464,7 +122448,7 @@ } }, { - "__docId__": 6280, + "__docId__": 6271, "kind": "get", "name": "opacity", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122485,7 +122469,7 @@ } }, { - "__docId__": 6281, + "__docId__": 6272, "kind": "set", "name": "castsShadow", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122506,7 +122490,7 @@ } }, { - "__docId__": 6282, + "__docId__": 6273, "kind": "member", "name": "_castsShadow", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122524,7 +122508,7 @@ } }, { - "__docId__": 6283, + "__docId__": 6274, "kind": "get", "name": "castsShadow", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122545,7 +122529,7 @@ } }, { - "__docId__": 6284, + "__docId__": 6275, "kind": "set", "name": "receivesShadow", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122566,7 +122550,7 @@ } }, { - "__docId__": 6285, + "__docId__": 6276, "kind": "member", "name": "_receivesShadow", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122584,7 +122568,7 @@ } }, { - "__docId__": 6286, + "__docId__": 6277, "kind": "get", "name": "receivesShadow", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122605,7 +122589,7 @@ } }, { - "__docId__": 6287, + "__docId__": 6278, "kind": "get", "name": "saoEnabled", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122627,7 +122611,7 @@ "abstract": true }, { - "__docId__": 6288, + "__docId__": 6279, "kind": "set", "name": "offset", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122648,7 +122632,7 @@ } }, { - "__docId__": 6289, + "__docId__": 6280, "kind": "get", "name": "offset", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122669,7 +122653,7 @@ } }, { - "__docId__": 6290, + "__docId__": 6281, "kind": "get", "name": "isNode", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122690,7 +122674,7 @@ } }, { - "__docId__": 6291, + "__docId__": 6282, "kind": "method", "name": "_setLocalMatrixDirty", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122707,7 +122691,7 @@ "return": null }, { - "__docId__": 6293, + "__docId__": 6284, "kind": "method", "name": "_setWorldMatrixDirty", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122724,7 +122708,7 @@ "return": null }, { - "__docId__": 6295, + "__docId__": 6286, "kind": "method", "name": "_buildWorldMatrix", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122741,7 +122725,7 @@ "return": null }, { - "__docId__": 6297, + "__docId__": 6288, "kind": "method", "name": "_setSubtreeAABBsDirty", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122765,7 +122749,7 @@ "return": null }, { - "__docId__": 6298, + "__docId__": 6289, "kind": "method", "name": "_setAABBDirty", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122782,7 +122766,7 @@ "return": null }, { - "__docId__": 6299, + "__docId__": 6290, "kind": "method", "name": "_updateAABB", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122799,7 +122783,7 @@ "return": null }, { - "__docId__": 6302, + "__docId__": 6293, "kind": "method", "name": "addChild", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122853,7 +122837,7 @@ } }, { - "__docId__": 6304, + "__docId__": 6295, "kind": "method", "name": "removeChild", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122880,7 +122864,7 @@ "return": null }, { - "__docId__": 6307, + "__docId__": 6298, "kind": "method", "name": "removeChildren", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122895,7 +122879,7 @@ "return": null }, { - "__docId__": 6310, + "__docId__": 6301, "kind": "get", "name": "numChildren", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122916,7 +122900,7 @@ } }, { - "__docId__": 6311, + "__docId__": 6302, "kind": "get", "name": "children", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122937,7 +122921,7 @@ } }, { - "__docId__": 6312, + "__docId__": 6303, "kind": "set", "name": "parent", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122958,7 +122942,7 @@ } }, { - "__docId__": 6313, + "__docId__": 6304, "kind": "get", "name": "parent", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -122979,7 +122963,7 @@ } }, { - "__docId__": 6314, + "__docId__": 6305, "kind": "set", "name": "position", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123000,7 +122984,7 @@ } }, { - "__docId__": 6315, + "__docId__": 6306, "kind": "get", "name": "position", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123021,7 +123005,7 @@ } }, { - "__docId__": 6316, + "__docId__": 6307, "kind": "set", "name": "rotation", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123042,7 +123026,7 @@ } }, { - "__docId__": 6317, + "__docId__": 6308, "kind": "get", "name": "rotation", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123063,7 +123047,7 @@ } }, { - "__docId__": 6318, + "__docId__": 6309, "kind": "set", "name": "quaternion", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123084,7 +123068,7 @@ } }, { - "__docId__": 6319, + "__docId__": 6310, "kind": "get", "name": "quaternion", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123105,7 +123089,7 @@ } }, { - "__docId__": 6320, + "__docId__": 6311, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123126,7 +123110,7 @@ } }, { - "__docId__": 6321, + "__docId__": 6312, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123147,7 +123131,7 @@ } }, { - "__docId__": 6322, + "__docId__": 6313, "kind": "set", "name": "matrix", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123168,7 +123152,7 @@ } }, { - "__docId__": 6325, + "__docId__": 6316, "kind": "get", "name": "matrix", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123189,7 +123173,7 @@ } }, { - "__docId__": 6328, + "__docId__": 6319, "kind": "get", "name": "worldMatrix", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123222,7 +123206,7 @@ } }, { - "__docId__": 6329, + "__docId__": 6320, "kind": "method", "name": "rotate", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123262,7 +123246,7 @@ } }, { - "__docId__": 6331, + "__docId__": 6322, "kind": "method", "name": "rotateOnWorldAxis", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123302,7 +123286,7 @@ } }, { - "__docId__": 6332, + "__docId__": 6323, "kind": "method", "name": "rotateX", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123332,7 +123316,7 @@ } }, { - "__docId__": 6333, + "__docId__": 6324, "kind": "method", "name": "rotateY", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123362,7 +123346,7 @@ } }, { - "__docId__": 6334, + "__docId__": 6325, "kind": "method", "name": "rotateZ", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123392,7 +123376,7 @@ } }, { - "__docId__": 6335, + "__docId__": 6326, "kind": "method", "name": "translate", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123432,7 +123416,7 @@ } }, { - "__docId__": 6336, + "__docId__": 6327, "kind": "method", "name": "translateX", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123462,7 +123446,7 @@ } }, { - "__docId__": 6337, + "__docId__": 6328, "kind": "method", "name": "translateY", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123492,7 +123476,7 @@ } }, { - "__docId__": 6338, + "__docId__": 6329, "kind": "method", "name": "translateZ", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123522,7 +123506,7 @@ } }, { - "__docId__": 6339, + "__docId__": 6330, "kind": "get", "name": "type", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123541,7 +123525,7 @@ } }, { - "__docId__": 6340, + "__docId__": 6331, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/nodes/Node.js~Node", @@ -123556,7 +123540,7 @@ "return": null }, { - "__docId__": 6342, + "__docId__": 6333, "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", @@ -123567,7 +123551,7 @@ "lineNumber": 1 }, { - "__docId__": 6343, + "__docId__": 6334, "kind": "class", "name": "CubicBezierCurve", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js", @@ -123585,7 +123569,7 @@ ] }, { - "__docId__": 6344, + "__docId__": 6335, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -123712,7 +123696,7 @@ ] }, { - "__docId__": 6350, + "__docId__": 6341, "kind": "set", "name": "v0", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -123737,7 +123721,7 @@ ] }, { - "__docId__": 6351, + "__docId__": 6342, "kind": "member", "name": "_v0", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -123755,7 +123739,7 @@ } }, { - "__docId__": 6352, + "__docId__": 6343, "kind": "get", "name": "v0", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -123787,7 +123771,7 @@ } }, { - "__docId__": 6353, + "__docId__": 6344, "kind": "set", "name": "v1", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -123812,7 +123796,7 @@ ] }, { - "__docId__": 6354, + "__docId__": 6345, "kind": "member", "name": "_v1", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -123830,7 +123814,7 @@ } }, { - "__docId__": 6355, + "__docId__": 6346, "kind": "get", "name": "v1", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -123862,7 +123846,7 @@ } }, { - "__docId__": 6356, + "__docId__": 6347, "kind": "set", "name": "v2", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -123887,7 +123871,7 @@ ] }, { - "__docId__": 6357, + "__docId__": 6348, "kind": "member", "name": "_v2", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -123905,7 +123889,7 @@ } }, { - "__docId__": 6358, + "__docId__": 6349, "kind": "get", "name": "v2", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -123937,7 +123921,7 @@ } }, { - "__docId__": 6359, + "__docId__": 6350, "kind": "set", "name": "v3", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -123962,7 +123946,7 @@ ] }, { - "__docId__": 6360, + "__docId__": 6351, "kind": "get", "name": "v3", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -123994,7 +123978,7 @@ } }, { - "__docId__": 6361, + "__docId__": 6352, "kind": "set", "name": "t", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -124019,7 +124003,7 @@ ] }, { - "__docId__": 6362, + "__docId__": 6353, "kind": "member", "name": "_t", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -124037,7 +124021,7 @@ } }, { - "__docId__": 6363, + "__docId__": 6354, "kind": "get", "name": "t", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -124069,7 +124053,7 @@ } }, { - "__docId__": 6364, + "__docId__": 6355, "kind": "get", "name": "point", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -124113,7 +124097,7 @@ } }, { - "__docId__": 6365, + "__docId__": 6356, "kind": "method", "name": "getPoint", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -124152,7 +124136,7 @@ } }, { - "__docId__": 6366, + "__docId__": 6357, "kind": "method", "name": "getJSON", "memberof": "src/viewer/scene/paths/CubicBezierCurve.js~CubicBezierCurve", @@ -124172,7 +124156,7 @@ } }, { - "__docId__": 6367, + "__docId__": 6358, "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}", @@ -124183,7 +124167,7 @@ "lineNumber": 1 }, { - "__docId__": 6368, + "__docId__": 6359, "kind": "class", "name": "Curve", "memberof": "src/viewer/scene/paths/Curve.js", @@ -124201,7 +124185,7 @@ ] }, { - "__docId__": 6369, + "__docId__": 6360, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -124274,7 +124258,7 @@ ] }, { - "__docId__": 6371, + "__docId__": 6362, "kind": "set", "name": "t", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -124299,7 +124283,7 @@ ] }, { - "__docId__": 6372, + "__docId__": 6363, "kind": "member", "name": "_t", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -124317,7 +124301,7 @@ } }, { - "__docId__": 6373, + "__docId__": 6364, "kind": "get", "name": "t", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -124349,7 +124333,7 @@ } }, { - "__docId__": 6374, + "__docId__": 6365, "kind": "get", "name": "tangent", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -124381,7 +124365,7 @@ } }, { - "__docId__": 6375, + "__docId__": 6366, "kind": "get", "name": "length", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -124413,7 +124397,7 @@ } }, { - "__docId__": 6376, + "__docId__": 6367, "kind": "method", "name": "getTangent", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -124452,7 +124436,7 @@ } }, { - "__docId__": 6377, + "__docId__": 6368, "kind": "method", "name": "getPointAt", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -124479,7 +124463,7 @@ } }, { - "__docId__": 6378, + "__docId__": 6369, "kind": "method", "name": "getPoints", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -124518,7 +124502,7 @@ } }, { - "__docId__": 6379, + "__docId__": 6370, "kind": "method", "name": "_getLengths", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -124546,7 +124530,7 @@ } }, { - "__docId__": 6380, + "__docId__": 6371, "kind": "member", "name": "needsUpdate", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -124563,7 +124547,7 @@ } }, { - "__docId__": 6381, + "__docId__": 6372, "kind": "member", "name": "cacheArcLengths", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -124580,7 +124564,7 @@ } }, { - "__docId__": 6382, + "__docId__": 6373, "kind": "method", "name": "_updateArcLengths", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -124597,7 +124581,7 @@ "return": null }, { - "__docId__": 6384, + "__docId__": 6375, "kind": "method", "name": "getUToTMapping", "memberof": "src/viewer/scene/paths/Curve.js~Curve", @@ -124630,7 +124614,7 @@ } }, { - "__docId__": 6385, + "__docId__": 6376, "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}", @@ -124641,7 +124625,7 @@ "lineNumber": 1 }, { - "__docId__": 6386, + "__docId__": 6377, "kind": "class", "name": "Path", "memberof": "src/viewer/scene/paths/Path.js", @@ -124659,7 +124643,7 @@ ] }, { - "__docId__": 6387, + "__docId__": 6378, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -124734,7 +124718,7 @@ ] }, { - "__docId__": 6388, + "__docId__": 6379, "kind": "member", "name": "_cachedLengths", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -124752,7 +124736,7 @@ } }, { - "__docId__": 6389, + "__docId__": 6380, "kind": "member", "name": "_dirty", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -124770,7 +124754,7 @@ } }, { - "__docId__": 6390, + "__docId__": 6381, "kind": "member", "name": "_curves", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -124788,7 +124772,7 @@ } }, { - "__docId__": 6391, + "__docId__": 6382, "kind": "member", "name": "_t", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -124806,7 +124790,7 @@ } }, { - "__docId__": 6392, + "__docId__": 6383, "kind": "member", "name": "_dirtySubs", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -124824,7 +124808,7 @@ } }, { - "__docId__": 6393, + "__docId__": 6384, "kind": "member", "name": "_destroyedSubs", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -124842,7 +124826,7 @@ } }, { - "__docId__": 6396, + "__docId__": 6387, "kind": "method", "name": "addCurve", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -124868,7 +124852,7 @@ "return": null }, { - "__docId__": 6398, + "__docId__": 6389, "kind": "set", "name": "curves", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -124893,7 +124877,7 @@ ] }, { - "__docId__": 6403, + "__docId__": 6394, "kind": "get", "name": "curves", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -124925,7 +124909,7 @@ } }, { - "__docId__": 6404, + "__docId__": 6395, "kind": "set", "name": "t", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -124950,7 +124934,7 @@ ] }, { - "__docId__": 6406, + "__docId__": 6397, "kind": "get", "name": "t", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -124982,7 +124966,7 @@ } }, { - "__docId__": 6407, + "__docId__": 6398, "kind": "get", "name": "point", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -125014,7 +124998,7 @@ } }, { - "__docId__": 6408, + "__docId__": 6399, "kind": "get", "name": "length", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -125040,7 +125024,7 @@ } }, { - "__docId__": 6409, + "__docId__": 6400, "kind": "method", "name": "getPoint", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -125079,7 +125063,7 @@ } }, { - "__docId__": 6410, + "__docId__": 6401, "kind": "method", "name": "_getCurveLengths", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -125100,7 +125084,7 @@ } }, { - "__docId__": 6413, + "__docId__": 6404, "kind": "method", "name": "_getJSON", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -125121,7 +125105,7 @@ } }, { - "__docId__": 6414, + "__docId__": 6405, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/paths/Path.js~Path", @@ -125136,7 +125120,7 @@ "return": null }, { - "__docId__": 6415, + "__docId__": 6406, "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}", @@ -125147,7 +125131,7 @@ "lineNumber": 1 }, { - "__docId__": 6416, + "__docId__": 6407, "kind": "class", "name": "QuadraticBezierCurve", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js", @@ -125165,7 +125149,7 @@ ] }, { - "__docId__": 6417, + "__docId__": 6408, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125276,7 +125260,7 @@ ] }, { - "__docId__": 6422, + "__docId__": 6413, "kind": "set", "name": "v0", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125301,7 +125285,7 @@ ] }, { - "__docId__": 6423, + "__docId__": 6414, "kind": "member", "name": "_v0", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125319,7 +125303,7 @@ } }, { - "__docId__": 6424, + "__docId__": 6415, "kind": "get", "name": "v0", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125351,7 +125335,7 @@ } }, { - "__docId__": 6425, + "__docId__": 6416, "kind": "set", "name": "v1", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125376,7 +125360,7 @@ ] }, { - "__docId__": 6426, + "__docId__": 6417, "kind": "member", "name": "_v1", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125394,7 +125378,7 @@ } }, { - "__docId__": 6427, + "__docId__": 6418, "kind": "get", "name": "v1", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125426,7 +125410,7 @@ } }, { - "__docId__": 6428, + "__docId__": 6419, "kind": "set", "name": "v2", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125451,7 +125435,7 @@ ] }, { - "__docId__": 6429, + "__docId__": 6420, "kind": "member", "name": "_v2", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125469,7 +125453,7 @@ } }, { - "__docId__": 6430, + "__docId__": 6421, "kind": "get", "name": "v2", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125501,7 +125485,7 @@ } }, { - "__docId__": 6431, + "__docId__": 6422, "kind": "set", "name": "t", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125526,7 +125510,7 @@ ] }, { - "__docId__": 6432, + "__docId__": 6423, "kind": "member", "name": "_t", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125544,7 +125528,7 @@ } }, { - "__docId__": 6433, + "__docId__": 6424, "kind": "get", "name": "t", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125576,7 +125560,7 @@ } }, { - "__docId__": 6434, + "__docId__": 6425, "kind": "get", "name": "point", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125609,7 +125593,7 @@ } }, { - "__docId__": 6435, + "__docId__": 6426, "kind": "method", "name": "getPoint", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125648,7 +125632,7 @@ } }, { - "__docId__": 6436, + "__docId__": 6427, "kind": "method", "name": "getJSON", "memberof": "src/viewer/scene/paths/QuadraticBezierCurve.js~QuadraticBezierCurve", @@ -125668,7 +125652,7 @@ } }, { - "__docId__": 6437, + "__docId__": 6428, "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}", @@ -125679,7 +125663,7 @@ "lineNumber": 1 }, { - "__docId__": 6438, + "__docId__": 6429, "kind": "class", "name": "SplineCurve", "memberof": "src/viewer/scene/paths/SplineCurve.js", @@ -125697,7 +125681,7 @@ ] }, { - "__docId__": 6439, + "__docId__": 6430, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -125784,7 +125768,7 @@ ] }, { - "__docId__": 6442, + "__docId__": 6433, "kind": "set", "name": "points", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -125809,7 +125793,7 @@ ] }, { - "__docId__": 6443, + "__docId__": 6434, "kind": "member", "name": "_points", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -125827,7 +125811,7 @@ } }, { - "__docId__": 6444, + "__docId__": 6435, "kind": "get", "name": "points", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -125859,7 +125843,7 @@ } }, { - "__docId__": 6445, + "__docId__": 6436, "kind": "set", "name": "t", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -125884,7 +125868,7 @@ ] }, { - "__docId__": 6446, + "__docId__": 6437, "kind": "member", "name": "_t", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -125902,7 +125886,7 @@ } }, { - "__docId__": 6447, + "__docId__": 6438, "kind": "get", "name": "t", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -125934,7 +125918,7 @@ } }, { - "__docId__": 6448, + "__docId__": 6439, "kind": "get", "name": "point", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -125966,7 +125950,7 @@ } }, { - "__docId__": 6449, + "__docId__": 6440, "kind": "method", "name": "getPoint", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -126005,7 +125989,7 @@ } }, { - "__docId__": 6450, + "__docId__": 6441, "kind": "method", "name": "getJSON", "memberof": "src/viewer/scene/paths/SplineCurve.js~SplineCurve", @@ -126025,10 +126009,10 @@ } }, { - "__docId__": 6451, + "__docId__": 6442, "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/#postEeffects_SAO_OTCConferenceCenter)]\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/#postEeffects_SAO_OTCConferenceCenter) 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} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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.20;\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/OTCConferenceCenter.xkt\",\n * metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\",\n * edges: true\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/structure.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/electrical.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/plumbing.json\",\n * edges: true\n * });\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/#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.20````.\n *\n * @type {Number}\n */\n set intensity(value) {\n if (value === undefined || value === null) {\n value = 0.20;\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.25````.\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", + "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/#postEeffects_SAO_OTCConferenceCenter)]\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/#postEeffects_SAO_OTCConferenceCenter) 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} from \"../src/viewer/Viewer.js\";\n * import {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.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/OTCConferenceCenter.xkt\",\n * metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\",\n * edges: true\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/structure.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/electrical.json\",\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 * metaModelSrc: \"./metaModels/WestRiverSideHospital/plumbing.json\",\n * edges: true\n * });\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/#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", "static": true, "longname": "/home/lindsay/xeolabs/xeokit/xeokit-nov-18/xeokit-sdk/src/viewer/scene/postfx/SAO.js", "access": "public", @@ -126036,7 +126020,7 @@ "lineNumber": 1 }, { - "__docId__": 6452, + "__docId__": 6443, "kind": "class", "name": "SAO", "memberof": "src/viewer/scene/postfx/SAO.js", @@ -126046,7 +126030,7 @@ "export": true, "importPath": "@xeokit/xeokit-sdk/src/viewer/scene/postfx/SAO.js", "importStyle": "{SAO}", - "description": "Configures Scalable Ambient Obscurance (SAO) for a {@link Scene}.\n\n \n\n[[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\n\n## Overview\n\nSAO approximates [Ambient Occlusion](https://en.wikipedia.org/wiki/Ambient_occlusion) in realtime. It darkens creases, cavities and surfaces\nthat are close to each other, which tend to be occluded from ambient light and appear darker.\n\nThe animated GIF above shows the effect as we repeatedly enable and disable SAO. When SAO is enabled, we can see darkening\nin regions such as the corners, and the crevices between stairs. This increases the amount of detail we can see when ambient\nlight is high, or when objects have uniform colors across their surfaces. Run the example to experiment with the various\nSAO configurations.\n\nxeokit'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\nCurrently, SAO only works with perspective and orthographic projections. Therefore, to use SAO, make sure {@link Camera#projection} is\neither \"perspective\" or \"ortho\".\n\n{@link SAO#scale} and {@link SAO#intensity} must be tuned to the distance\nbetween {@link Perspective#near} and {@link Perspective#far}, or the distance\nbetween {@link Ortho#near} and {@link Ortho#far}, depending on which of those two projections the {@link Camera} is currently\nusing. Use the [live example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter) to get a\nfeel for that.\n\n## Usage\n\nIn the example below, we'll start by logging a warning message to the console if SAO is not supported by the\nsystem.\n\nThen we'll enable and configure SAO, position the camera, and configure the near and far perspective and orthographic\nclipping planes. Finally, we'll use {@link XKTLoaderPlugin} to load the OTC Conference Center model.\n\n````javascript\nimport {Viewer} from \"../src/viewer/Viewer.js\";\nimport {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true\n});\n\nconst sao = viewer.scene.sao;\n\nif (!sao.supported) {\n sao.warn(\"SAO is not supported on this system - ignoring SAO configs\")\n}\n\nsao.enabled = true; // Enable SAO - only works if supported (see above)\nsao.intensity = 0.20;\nsao.bias = 0.5;\nsao.scale = 1.0;\nsao.minResolution = 0.0;\nsao.numSamples = 10;\nsao.kernelRadius = 100;\nsao.blendCutoff = 0.1;\n\nconst camera = viewer.scene.camera;\n\ncamera.eye = [3.69, 5.83, -23.98];\ncamera.look = [84.31, -29.88, -116.21];\ncamera.up = [0.18, 0.96, -0.21];\n\ncamera.perspective.near = 0.1;\ncamera.perspective.far = 2000.0;\n\ncamera.ortho.near = 0.1;\ncamera.ortho.far = 2000.0;\ncamera.projection = \"perspective\";\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nconst model = xktLoader.load({\n id: \"myModel\",\n src: \"./models/xkt/OTCConferenceCenter/OTCConferenceCenter.xkt\",\n metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\",\n edges: true\n});\n````\n\n[[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\n\n## Efficiency\n\nSAO can incur some rendering overhead, especially on objects that are viewed close to the camera. For this reason,\nit's recommended to use a low value for {@link SAO#kernelRadius}. A low radius will sample pixels that are close\nto the source pixel, which will allow the GPU to efficiently cache those pixels. When {@link Camera#projection} is \"perspective\",\nobjects near to the viewpoint will use larger radii than farther pixels. Therefore, computing SAO for close objects\nis more expensive than for objects far away, that occupy fewer pixels on the canvas.\n\n## Selectively enabling SAO for models\n\nWhen loading multiple models into a Scene, we sometimes only want SAO on the models that are actually going to\nshow it, such as the architecture or structure, and not show SAO on models that won't show it well, such as the\nelectrical wiring, or plumbing.\n\nTo illustrate, lets load some of the models for the West Riverside Hospital. We'll enable SAO on the structure model,\nbut disable it on the electrical and plumbing.\n\nThis will only apply SAO to those models if {@link SAO#supported} and {@link SAO#enabled} are both true.\n\nNote, by the way, how we load the models in sequence. Since XKTLoaderPlugin uses scratch memory as part of its loading\nprocess, this allows the plugin to reuse that same memory across multiple loads, instead of having to create multiple\npools of scratch memory.\n\n````javascript\nconst structure = xktLoader.load({\n id: \"structure\",\n src: \"./models/xkt/WestRiverSideHospital/structure.xkt\",\n metaModelSrc: \"./metaModels/WestRiverSideHospital/structure.json\",\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 metaModelSrc: \"./metaModels/WestRiverSideHospital/electrical.json\",\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 metaModelSrc: \"./metaModels/WestRiverSideHospital/plumbing.json\",\n edges: true\n });\n });\n });\n});\n````\n\n## Disabling SAO while camera is moving\n\nFor smoother interaction with large models on low-power hardware, we can disable SAO while the {@link Camera} is moving:\n\n````javascript\nconst timeoutDuration = 150; // Milliseconds\nvar timer = timeoutDuration;\nvar saoDisabled = false;\n\nconst onCameraMatrix = scene.camera.on(\"matrix\", () => {\n timer = timeoutDuration;\n if (!saoDisabled) {\n scene.sao.enabled = false;\n saoDisabled = true;\n }\n});\n\nconst 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/#techniques_nonInteractiveQuality)]", + "description": "Configures Scalable Ambient Obscurance (SAO) for a {@link Scene}.\n\n \n\n[[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\n\n## Overview\n\nSAO approximates [Ambient Occlusion](https://en.wikipedia.org/wiki/Ambient_occlusion) in realtime. It darkens creases, cavities and surfaces\nthat are close to each other, which tend to be occluded from ambient light and appear darker.\n\nThe animated GIF above shows the effect as we repeatedly enable and disable SAO. When SAO is enabled, we can see darkening\nin regions such as the corners, and the crevices between stairs. This increases the amount of detail we can see when ambient\nlight is high, or when objects have uniform colors across their surfaces. Run the example to experiment with the various\nSAO configurations.\n\nxeokit'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\nCurrently, SAO only works with perspective and orthographic projections. Therefore, to use SAO, make sure {@link Camera#projection} is\neither \"perspective\" or \"ortho\".\n\n{@link SAO#scale} and {@link SAO#intensity} must be tuned to the distance\nbetween {@link Perspective#near} and {@link Perspective#far}, or the distance\nbetween {@link Ortho#near} and {@link Ortho#far}, depending on which of those two projections the {@link Camera} is currently\nusing. Use the [live example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter) to get a\nfeel for that.\n\n## Usage\n\nIn the example below, we'll start by logging a warning message to the console if SAO is not supported by the\nsystem.\n\nThen we'll enable and configure SAO, position the camera, and configure the near and far perspective and orthographic\nclipping planes. Finally, we'll use {@link XKTLoaderPlugin} to load the OTC Conference Center model.\n\n````javascript\nimport {Viewer} from \"../src/viewer/Viewer.js\";\nimport {XKTLoaderPlugin} from \"../src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js\";\n\nconst viewer = new Viewer({\n canvasId: \"myCanvas\",\n transparent: true\n});\n\nconst sao = viewer.scene.sao;\n\nif (!sao.supported) {\n sao.warn(\"SAO is not supported on this system - ignoring SAO configs\")\n}\n\nsao.enabled = true; // Enable SAO - only works if supported (see above)\nsao.intensity = 0.15;\nsao.bias = 0.5;\nsao.scale = 1.0;\nsao.minResolution = 0.0;\nsao.numSamples = 10;\nsao.kernelRadius = 100;\nsao.blendCutoff = 0.1;\n\nconst camera = viewer.scene.camera;\n\ncamera.eye = [3.69, 5.83, -23.98];\ncamera.look = [84.31, -29.88, -116.21];\ncamera.up = [0.18, 0.96, -0.21];\n\ncamera.perspective.near = 0.1;\ncamera.perspective.far = 2000.0;\n\ncamera.ortho.near = 0.1;\ncamera.ortho.far = 2000.0;\ncamera.projection = \"perspective\";\n\nconst xktLoader = new XKTLoaderPlugin(viewer);\n\nconst model = xktLoader.load({\n id: \"myModel\",\n src: \"./models/xkt/OTCConferenceCenter/OTCConferenceCenter.xkt\",\n metaModelSrc: \"./metaModels/OTCConferenceCenter/metaModel.json\",\n edges: true\n});\n````\n\n[[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\n\n## Efficiency\n\nSAO can incur some rendering overhead, especially on objects that are viewed close to the camera. For this reason,\nit's recommended to use a low value for {@link SAO#kernelRadius}. A low radius will sample pixels that are close\nto the source pixel, which will allow the GPU to efficiently cache those pixels. When {@link Camera#projection} is \"perspective\",\nobjects near to the viewpoint will use larger radii than farther pixels. Therefore, computing SAO for close objects\nis more expensive than for objects far away, that occupy fewer pixels on the canvas.\n\n## Selectively enabling SAO for models\n\nWhen loading multiple models into a Scene, we sometimes only want SAO on the models that are actually going to\nshow it, such as the architecture or structure, and not show SAO on models that won't show it well, such as the\nelectrical wiring, or plumbing.\n\nTo illustrate, lets load some of the models for the West Riverside Hospital. We'll enable SAO on the structure model,\nbut disable it on the electrical and plumbing.\n\nThis will only apply SAO to those models if {@link SAO#supported} and {@link SAO#enabled} are both true.\n\nNote, by the way, how we load the models in sequence. Since XKTLoaderPlugin uses scratch memory as part of its loading\nprocess, this allows the plugin to reuse that same memory across multiple loads, instead of having to create multiple\npools of scratch memory.\n\n````javascript\nconst structure = xktLoader.load({\n id: \"structure\",\n src: \"./models/xkt/WestRiverSideHospital/structure.xkt\",\n metaModelSrc: \"./metaModels/WestRiverSideHospital/structure.json\",\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 metaModelSrc: \"./metaModels/WestRiverSideHospital/electrical.json\",\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 metaModelSrc: \"./metaModels/WestRiverSideHospital/plumbing.json\",\n edges: true\n });\n });\n });\n});\n````\n\n## Disabling SAO while camera is moving\n\nFor smoother interaction with large models on low-power hardware, we can disable SAO while the {@link Camera} is moving:\n\n````javascript\nconst timeoutDuration = 150; // Milliseconds\nvar timer = timeoutDuration;\nvar saoDisabled = false;\n\nconst onCameraMatrix = scene.camera.on(\"matrix\", () => {\n timer = timeoutDuration;\n if (!saoDisabled) {\n scene.sao.enabled = false;\n saoDisabled = true;\n }\n});\n\nconst 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/#techniques_nonInteractiveQuality)]", "lineNumber": 178, "interface": false, "extends": [ @@ -126054,7 +126038,7 @@ ] }, { - "__docId__": 6453, + "__docId__": 6444, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126068,7 +126052,7 @@ "ignore": true }, { - "__docId__": 6454, + "__docId__": 6445, "kind": "member", "name": "_supported", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126086,7 +126070,7 @@ } }, { - "__docId__": 6465, + "__docId__": 6456, "kind": "get", "name": "supported", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126107,7 +126091,7 @@ } }, { - "__docId__": 6466, + "__docId__": 6457, "kind": "set", "name": "enabled", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126128,7 +126112,7 @@ } }, { - "__docId__": 6467, + "__docId__": 6458, "kind": "member", "name": "_enabled", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126146,7 +126130,7 @@ } }, { - "__docId__": 6468, + "__docId__": 6459, "kind": "get", "name": "enabled", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126167,7 +126151,7 @@ } }, { - "__docId__": 6469, + "__docId__": 6460, "kind": "get", "name": "possible", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126200,7 +126184,7 @@ } }, { - "__docId__": 6470, + "__docId__": 6461, "kind": "get", "name": "active", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126234,7 +126218,7 @@ } }, { - "__docId__": 6471, + "__docId__": 6462, "kind": "set", "name": "kernelRadius", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126255,7 +126239,7 @@ } }, { - "__docId__": 6472, + "__docId__": 6463, "kind": "member", "name": "_kernelRadius", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126273,7 +126257,7 @@ } }, { - "__docId__": 6473, + "__docId__": 6464, "kind": "get", "name": "kernelRadius", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126294,7 +126278,7 @@ } }, { - "__docId__": 6474, + "__docId__": 6465, "kind": "set", "name": "intensity", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126303,7 +126287,7 @@ "static": false, "longname": "src/viewer/scene/postfx/SAO.js~SAO#intensity", "access": "public", - "description": "Sets the degree of darkening (ambient obscurance) produced by the SAO effect.\n\nDefault value is ````0.20````.", + "description": "Sets the degree of darkening (ambient obscurance) produced by the SAO effect.\n\nDefault value is ````0.15````.", "lineNumber": 308, "type": { "nullable": null, @@ -126315,7 +126299,7 @@ } }, { - "__docId__": 6475, + "__docId__": 6466, "kind": "member", "name": "_intensity", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126333,7 +126317,7 @@ } }, { - "__docId__": 6476, + "__docId__": 6467, "kind": "get", "name": "intensity", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126342,7 +126326,7 @@ "static": false, "longname": "src/viewer/scene/postfx/SAO.js~SAO#intensity", "access": "public", - "description": "Gets the degree of darkening (ambient obscurance) produced by the SAO effect.\n\nDefault value is ````0.25````.", + "description": "Gets the degree of darkening (ambient obscurance) produced by the SAO effect.\n\nDefault value is ````0.15````.", "lineNumber": 326, "type": { "nullable": null, @@ -126354,7 +126338,7 @@ } }, { - "__docId__": 6477, + "__docId__": 6468, "kind": "set", "name": "bias", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126375,7 +126359,7 @@ } }, { - "__docId__": 6478, + "__docId__": 6469, "kind": "member", "name": "_bias", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126393,7 +126377,7 @@ } }, { - "__docId__": 6479, + "__docId__": 6470, "kind": "get", "name": "bias", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126414,7 +126398,7 @@ } }, { - "__docId__": 6480, + "__docId__": 6471, "kind": "set", "name": "scale", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126435,7 +126419,7 @@ } }, { - "__docId__": 6481, + "__docId__": 6472, "kind": "member", "name": "_scale", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126453,7 +126437,7 @@ } }, { - "__docId__": 6482, + "__docId__": 6473, "kind": "get", "name": "scale", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126474,7 +126458,7 @@ } }, { - "__docId__": 6483, + "__docId__": 6474, "kind": "set", "name": "minResolution", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126495,7 +126479,7 @@ } }, { - "__docId__": 6484, + "__docId__": 6475, "kind": "member", "name": "_minResolution", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126513,7 +126497,7 @@ } }, { - "__docId__": 6485, + "__docId__": 6476, "kind": "get", "name": "minResolution", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126534,7 +126518,7 @@ } }, { - "__docId__": 6486, + "__docId__": 6477, "kind": "set", "name": "numSamples", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126555,7 +126539,7 @@ } }, { - "__docId__": 6487, + "__docId__": 6478, "kind": "member", "name": "_numSamples", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126573,7 +126557,7 @@ } }, { - "__docId__": 6488, + "__docId__": 6479, "kind": "get", "name": "numSamples", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126594,7 +126578,7 @@ } }, { - "__docId__": 6489, + "__docId__": 6480, "kind": "set", "name": "blur", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126615,7 +126599,7 @@ } }, { - "__docId__": 6490, + "__docId__": 6481, "kind": "member", "name": "_blur", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126633,7 +126617,7 @@ } }, { - "__docId__": 6491, + "__docId__": 6482, "kind": "get", "name": "blur", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126654,7 +126638,7 @@ } }, { - "__docId__": 6492, + "__docId__": 6483, "kind": "set", "name": "blendCutoff", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126675,7 +126659,7 @@ } }, { - "__docId__": 6493, + "__docId__": 6484, "kind": "member", "name": "_blendCutoff", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126693,7 +126677,7 @@ } }, { - "__docId__": 6494, + "__docId__": 6485, "kind": "get", "name": "blendCutoff", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126714,7 +126698,7 @@ } }, { - "__docId__": 6495, + "__docId__": 6486, "kind": "set", "name": "blendFactor", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126735,7 +126719,7 @@ } }, { - "__docId__": 6496, + "__docId__": 6487, "kind": "member", "name": "_blendFactor", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126753,7 +126737,7 @@ } }, { - "__docId__": 6497, + "__docId__": 6488, "kind": "get", "name": "blendFactor", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126774,7 +126758,7 @@ } }, { - "__docId__": 6498, + "__docId__": 6489, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/postfx/SAO.js~SAO", @@ -126789,7 +126773,7 @@ "return": null }, { - "__docId__": 6499, + "__docId__": 6490, "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 {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.component[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 * @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 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 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 backgroundColor: cfg.backgroundColor,\n webgl2: cfg.webgl2 !== false,\n contextAttr: cfg.contextAttr || {},\n clearColorAmbient: cfg.clearColorAmbient,\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 let hash = null;\n\n this.getHash = function () {\n if (hash) {\n return hash;\n }\n const sectionPlanes = this.sectionPlanes;\n if (sectionPlanes.length === 0) {\n return this.hash = \";\";\n }\n let sectionPlane;\n\n const hashParts = [];\n for (let i = 0, len = sectionPlanes.length; 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\n this._lightsState = new (function () {\n\n const DEFAULT_AMBIENT = math.vec3([0, 0, 0]);\n const ambientColor = math.vec3();\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.getAmbientColor = 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 ambientColor[0] = color[0] * intensity;\n ambientColor[1] = color[1] * intensity;\n ambientColor[2] = color[2] * intensity;\n return ambientColor;\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 });\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 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._pbrEnabled = !!cfg.pbrEnabled;\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: [0.9, 0.9, 0.9],\n intensity: 0.9\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 _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 _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 delete this.models[entity.id];\n this._modelIds = null; // Lazy regenerate\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 _objectXRayedUpdated(entity) {\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 }\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 _objectSelectedUpdated(entity) {\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 }\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 _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 _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 _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 * 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 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 whether physically-based rendering is enabled.\n *\n * Default is ````false````.\n *\n * @returns {Boolean} True if quality rendering is enabled.\n */\n set pbrEnabled(pbrEnabled) {\n this._pbrEnabled = !!pbrEnabled;\n this.glRedraw();\n }\n \n /**\n * Sets whether quality 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 * 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 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 _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 ambientColor = this._lightsState.getAmbientColor();\n if (!this._lastAmbientColor ||\n this._lastAmbientColor[0] !== ambientColor[0] ||\n this._lastAmbientColor[1] !== ambientColor[1] ||\n this._lastAmbientColor[2] !== ambientColor[2] ||\n this._lastAmbientColor[3] !== ambientColor[3]) {\n canvas.backgroundColor = ambientColor;\n if (!this._lastAmbientColor) {\n this._lastAmbientColor = math.vec4([0, 0, 0, 1]);\n }\n this._lastAmbientColor.set(ambientColor);\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.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 {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 pickResult = this._renderer.pick(params, pickResult);\n\n if (pickResult) {\n if (pickResult.entity && pickResult.entity.fire) {\n pickResult.entity.fire(\"picked\", pickResult); // TODO: PerformanceModelNode doesn't fire events\n }\n return pickResult;\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 * 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 cull.\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 cull.\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, this.objects, 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 highlight.\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 * Each {@link Entity} on which both {@link Entity#isObject} and {@link Entity#xrayed} are ````true```` is\n * registered by {@link Entity#id} in {@link Scene#xrayedObjects}.\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 enable picking.\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#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 {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 * 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};\n", @@ -126800,7 +126784,7 @@ "lineNumber": 1 }, { - "__docId__": 6500, + "__docId__": 6491, "kind": "variable", "name": "ASSERT_OBJECT_STATE_UPDATE", "memberof": "src/viewer/scene/scene/Scene.js", @@ -126821,7 +126805,7 @@ "ignore": true }, { - "__docId__": 6501, + "__docId__": 6492, "kind": "function", "name": "getEntityIDMap", "memberof": "src/viewer/scene/scene/Scene.js", @@ -126858,7 +126842,7 @@ "ignore": true }, { - "__docId__": 6502, + "__docId__": 6493, "kind": "class", "name": "Scene", "memberof": "src/viewer/scene/scene/Scene.js", @@ -126882,7 +126866,7 @@ ] }, { - "__docId__": 6503, + "__docId__": 6494, "kind": "get", "name": "type", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -126901,7 +126885,7 @@ } }, { - "__docId__": 6504, + "__docId__": 6495, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -126971,7 +126955,7 @@ "ignore": true }, { - "__docId__": 6505, + "__docId__": 6496, "kind": "member", "name": "_aabbDirty", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -126989,7 +126973,7 @@ } }, { - "__docId__": 6506, + "__docId__": 6497, "kind": "member", "name": "viewer", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127008,7 +126992,7 @@ } }, { - "__docId__": 6507, + "__docId__": 6498, "kind": "member", "name": "occlusionTestCountdown", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127028,7 +127012,7 @@ "ignore": true }, { - "__docId__": 6508, + "__docId__": 6499, "kind": "member", "name": "loading", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127065,7 +127049,7 @@ } }, { - "__docId__": 6509, + "__docId__": 6500, "kind": "member", "name": "startTime", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127102,7 +127086,7 @@ } }, { - "__docId__": 6510, + "__docId__": 6501, "kind": "member", "name": "models", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127139,7 +127123,7 @@ } }, { - "__docId__": 6511, + "__docId__": 6502, "kind": "member", "name": "objects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127176,7 +127160,7 @@ } }, { - "__docId__": 6512, + "__docId__": 6503, "kind": "member", "name": "_numObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127194,7 +127178,7 @@ } }, { - "__docId__": 6513, + "__docId__": 6504, "kind": "member", "name": "visibleObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127231,7 +127215,7 @@ } }, { - "__docId__": 6514, + "__docId__": 6505, "kind": "member", "name": "_numVisibleObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127249,7 +127233,7 @@ } }, { - "__docId__": 6515, + "__docId__": 6506, "kind": "member", "name": "xrayedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127286,7 +127270,7 @@ } }, { - "__docId__": 6516, + "__docId__": 6507, "kind": "member", "name": "_numXRayedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127304,7 +127288,7 @@ } }, { - "__docId__": 6517, + "__docId__": 6508, "kind": "member", "name": "highlightedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127341,7 +127325,7 @@ } }, { - "__docId__": 6518, + "__docId__": 6509, "kind": "member", "name": "_numHighlightedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127359,7 +127343,7 @@ } }, { - "__docId__": 6519, + "__docId__": 6510, "kind": "member", "name": "selectedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127396,7 +127380,7 @@ } }, { - "__docId__": 6520, + "__docId__": 6511, "kind": "member", "name": "_numSelectedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127414,7 +127398,7 @@ } }, { - "__docId__": 6521, + "__docId__": 6512, "kind": "member", "name": "colorizedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127451,7 +127435,7 @@ } }, { - "__docId__": 6522, + "__docId__": 6513, "kind": "member", "name": "_numColorizedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127469,7 +127453,7 @@ } }, { - "__docId__": 6523, + "__docId__": 6514, "kind": "member", "name": "opacityObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127506,7 +127490,7 @@ } }, { - "__docId__": 6524, + "__docId__": 6515, "kind": "member", "name": "_numOpacityObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127524,7 +127508,7 @@ } }, { - "__docId__": 6525, + "__docId__": 6516, "kind": "member", "name": "offsetObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127561,7 +127545,7 @@ } }, { - "__docId__": 6526, + "__docId__": 6517, "kind": "member", "name": "_numOffsetObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127579,7 +127563,7 @@ } }, { - "__docId__": 6527, + "__docId__": 6518, "kind": "member", "name": "_modelIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127596,7 +127580,7 @@ } }, { - "__docId__": 6528, + "__docId__": 6519, "kind": "member", "name": "_objectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127614,7 +127598,7 @@ } }, { - "__docId__": 6529, + "__docId__": 6520, "kind": "member", "name": "_visibleObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127632,7 +127616,7 @@ } }, { - "__docId__": 6530, + "__docId__": 6521, "kind": "member", "name": "_xrayedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127650,7 +127634,7 @@ } }, { - "__docId__": 6531, + "__docId__": 6522, "kind": "member", "name": "_highlightedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127668,7 +127652,7 @@ } }, { - "__docId__": 6532, + "__docId__": 6523, "kind": "member", "name": "_selectedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127686,7 +127670,7 @@ } }, { - "__docId__": 6533, + "__docId__": 6524, "kind": "member", "name": "_colorizedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127704,7 +127688,7 @@ } }, { - "__docId__": 6534, + "__docId__": 6525, "kind": "member", "name": "_opacityObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127722,7 +127706,7 @@ } }, { - "__docId__": 6535, + "__docId__": 6526, "kind": "member", "name": "_offsetObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127740,7 +127724,7 @@ } }, { - "__docId__": 6536, + "__docId__": 6527, "kind": "member", "name": "_collidables", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127758,7 +127742,7 @@ } }, { - "__docId__": 6537, + "__docId__": 6528, "kind": "member", "name": "_compilables", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127776,7 +127760,7 @@ } }, { - "__docId__": 6538, + "__docId__": 6529, "kind": "member", "name": "_needRecompile", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127794,7 +127778,7 @@ } }, { - "__docId__": 6539, + "__docId__": 6530, "kind": "member", "name": "types", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127813,7 +127797,7 @@ } }, { - "__docId__": 6540, + "__docId__": 6531, "kind": "member", "name": "components", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127829,7 +127813,7 @@ } }, { - "__docId__": 6541, + "__docId__": 6532, "kind": "member", "name": "sectionPlanes", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127848,7 +127832,7 @@ } }, { - "__docId__": 6542, + "__docId__": 6533, "kind": "member", "name": "lights", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127867,7 +127851,7 @@ } }, { - "__docId__": 6543, + "__docId__": 6534, "kind": "member", "name": "lightMaps", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127886,7 +127870,7 @@ } }, { - "__docId__": 6544, + "__docId__": 6535, "kind": "member", "name": "reflectionMaps", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127905,7 +127889,7 @@ } }, { - "__docId__": 6545, + "__docId__": 6536, "kind": "member", "name": "realWorldOffset", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127924,7 +127908,7 @@ } }, { - "__docId__": 6546, + "__docId__": 6537, "kind": "member", "name": "canvas", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127943,7 +127927,7 @@ } }, { - "__docId__": 6547, + "__docId__": 6538, "kind": "member", "name": "_renderer", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127961,7 +127945,7 @@ } }, { - "__docId__": 6548, + "__docId__": 6539, "kind": "member", "name": "_sectionPlanesState", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127979,7 +127963,7 @@ } }, { - "__docId__": 6550, + "__docId__": 6541, "kind": "member", "name": "clippingCaps", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -127996,7 +127980,7 @@ } }, { - "__docId__": 6551, + "__docId__": 6542, "kind": "member", "name": "_lightsState", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128014,7 +127998,7 @@ } }, { - "__docId__": 6555, + "__docId__": 6546, "kind": "member", "name": "input", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128051,7 +128035,7 @@ } }, { - "__docId__": 6556, + "__docId__": 6547, "kind": "member", "name": "metrics", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128088,7 +128072,7 @@ } }, { - "__docId__": 6557, + "__docId__": 6548, "kind": "member", "name": "sao", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128113,7 +128097,7 @@ } }, { - "__docId__": 6565, + "__docId__": 6556, "kind": "member", "name": "_entityOffsetsEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128131,7 +128115,7 @@ } }, { - "__docId__": 6566, + "__docId__": 6557, "kind": "member", "name": "_logarithmicDepthBufferEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128149,7 +128133,7 @@ } }, { - "__docId__": 6567, + "__docId__": 6558, "kind": "member", "name": "_pbrEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128167,7 +128151,7 @@ } }, { - "__docId__": 6568, + "__docId__": 6559, "kind": "member", "name": "_viewport", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128185,7 +128169,7 @@ } }, { - "__docId__": 6569, + "__docId__": 6560, "kind": "member", "name": "_camera", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128203,7 +128187,7 @@ } }, { - "__docId__": 6570, + "__docId__": 6561, "kind": "method", "name": "_initDefaults", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128220,7 +128204,7 @@ "return": null }, { - "__docId__": 6571, + "__docId__": 6562, "kind": "method", "name": "_addComponent", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128244,7 +128228,7 @@ "return": null }, { - "__docId__": 6572, + "__docId__": 6563, "kind": "method", "name": "_removeComponent", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128268,7 +128252,7 @@ "return": null }, { - "__docId__": 6573, + "__docId__": 6564, "kind": "method", "name": "_sectionPlaneCreated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128292,7 +128276,7 @@ "return": null }, { - "__docId__": 6575, + "__docId__": 6566, "kind": "method", "name": "_lightCreated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128316,7 +128300,7 @@ "return": null }, { - "__docId__": 6577, + "__docId__": 6568, "kind": "method", "name": "_lightMapCreated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128340,7 +128324,7 @@ "return": null }, { - "__docId__": 6579, + "__docId__": 6570, "kind": "method", "name": "_reflectionMapCreated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128364,7 +128348,7 @@ "return": null }, { - "__docId__": 6581, + "__docId__": 6572, "kind": "method", "name": "_sectionPlaneDestroyed", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128388,7 +128372,7 @@ "return": null }, { - "__docId__": 6583, + "__docId__": 6574, "kind": "method", "name": "_lightDestroyed", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128412,7 +128396,7 @@ "return": null }, { - "__docId__": 6585, + "__docId__": 6576, "kind": "method", "name": "_lightMapDestroyed", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128436,7 +128420,7 @@ "return": null }, { - "__docId__": 6587, + "__docId__": 6578, "kind": "method", "name": "_reflectionMapDestroyed", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128460,7 +128444,7 @@ "return": null }, { - "__docId__": 6589, + "__docId__": 6580, "kind": "method", "name": "_registerModel", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128484,7 +128468,7 @@ "return": null }, { - "__docId__": 6591, + "__docId__": 6582, "kind": "method", "name": "_deregisterModel", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128508,7 +128492,7 @@ "return": null }, { - "__docId__": 6593, + "__docId__": 6584, "kind": "method", "name": "_registerObject", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128532,7 +128516,7 @@ "return": null }, { - "__docId__": 6595, + "__docId__": 6586, "kind": "method", "name": "_deregisterObject", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128556,7 +128540,7 @@ "return": null }, { - "__docId__": 6597, + "__docId__": 6588, "kind": "method", "name": "_objectVisibilityUpdated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128589,7 +128573,7 @@ "return": null }, { - "__docId__": 6599, + "__docId__": 6590, "kind": "method", "name": "_objectXRayedUpdated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128613,7 +128597,7 @@ "return": null }, { - "__docId__": 6601, + "__docId__": 6592, "kind": "method", "name": "_objectHighlightedUpdated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128637,7 +128621,7 @@ "return": null }, { - "__docId__": 6603, + "__docId__": 6594, "kind": "method", "name": "_objectSelectedUpdated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128661,7 +128645,7 @@ "return": null }, { - "__docId__": 6605, + "__docId__": 6596, "kind": "method", "name": "_objectColorizeUpdated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128691,7 +128675,7 @@ "return": null }, { - "__docId__": 6607, + "__docId__": 6598, "kind": "method", "name": "_objectOpacityUpdated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128721,7 +128705,7 @@ "return": null }, { - "__docId__": 6609, + "__docId__": 6600, "kind": "method", "name": "_objectOffsetUpdated", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128751,7 +128735,7 @@ "return": null }, { - "__docId__": 6611, + "__docId__": 6602, "kind": "method", "name": "_webglContextLost", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128768,7 +128752,7 @@ "return": null }, { - "__docId__": 6612, + "__docId__": 6603, "kind": "method", "name": "_webglContextRestored", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128785,7 +128769,7 @@ "return": null }, { - "__docId__": 6613, + "__docId__": 6604, "kind": "get", "name": "entityOffsetsEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128817,7 +128801,7 @@ } }, { - "__docId__": 6614, + "__docId__": 6605, "kind": "get", "name": "logarithmicDepthBufferEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128849,7 +128833,7 @@ } }, { - "__docId__": 6615, + "__docId__": 6606, "kind": "set", "name": "pbrEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128876,7 +128860,7 @@ } }, { - "__docId__": 6617, + "__docId__": 6608, "kind": "get", "name": "pbrEnabled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128908,7 +128892,7 @@ } }, { - "__docId__": 6618, + "__docId__": 6609, "kind": "method", "name": "doOcclusionTest", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128923,7 +128907,7 @@ "return": null }, { - "__docId__": 6620, + "__docId__": 6611, "kind": "method", "name": "render", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128951,7 +128935,7 @@ "return": null }, { - "__docId__": 6622, + "__docId__": 6613, "kind": "method", "name": "_recompile", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128968,7 +128952,7 @@ "return": null }, { - "__docId__": 6623, + "__docId__": 6614, "kind": "method", "name": "_saveAmbientColor", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -128985,7 +128969,7 @@ "return": null }, { - "__docId__": 6624, + "__docId__": 6615, "kind": "member", "name": "_lastAmbientColor", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129003,7 +128987,7 @@ } }, { - "__docId__": 6626, + "__docId__": 6617, "kind": "get", "name": "modelIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129024,7 +129008,7 @@ } }, { - "__docId__": 6628, + "__docId__": 6619, "kind": "get", "name": "numObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129045,7 +129029,7 @@ } }, { - "__docId__": 6629, + "__docId__": 6620, "kind": "get", "name": "objectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129066,7 +129050,7 @@ } }, { - "__docId__": 6631, + "__docId__": 6622, "kind": "get", "name": "numVisibleObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129087,7 +129071,7 @@ } }, { - "__docId__": 6632, + "__docId__": 6623, "kind": "get", "name": "visibleObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129108,7 +129092,7 @@ } }, { - "__docId__": 6634, + "__docId__": 6625, "kind": "get", "name": "numXRayedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129129,7 +129113,7 @@ } }, { - "__docId__": 6635, + "__docId__": 6626, "kind": "get", "name": "xrayedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129150,7 +129134,7 @@ } }, { - "__docId__": 6637, + "__docId__": 6628, "kind": "get", "name": "numHighlightedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129171,7 +129155,7 @@ } }, { - "__docId__": 6638, + "__docId__": 6629, "kind": "get", "name": "highlightedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129192,7 +129176,7 @@ } }, { - "__docId__": 6640, + "__docId__": 6631, "kind": "get", "name": "numSelectedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129213,7 +129197,7 @@ } }, { - "__docId__": 6641, + "__docId__": 6632, "kind": "get", "name": "selectedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129234,7 +129218,7 @@ } }, { - "__docId__": 6643, + "__docId__": 6634, "kind": "get", "name": "numColorizedObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129255,7 +129239,7 @@ } }, { - "__docId__": 6644, + "__docId__": 6635, "kind": "get", "name": "colorizedObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129276,7 +129260,7 @@ } }, { - "__docId__": 6646, + "__docId__": 6637, "kind": "get", "name": "opacityObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129297,7 +129281,7 @@ } }, { - "__docId__": 6648, + "__docId__": 6639, "kind": "get", "name": "offsetObjectIds", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129318,7 +129302,7 @@ } }, { - "__docId__": 6650, + "__docId__": 6641, "kind": "set", "name": "ticksPerRender", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129339,7 +129323,7 @@ } }, { - "__docId__": 6651, + "__docId__": 6642, "kind": "member", "name": "_ticksPerRender", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129357,7 +129341,7 @@ } }, { - "__docId__": 6652, + "__docId__": 6643, "kind": "get", "name": "ticksPerRender", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129378,7 +129362,7 @@ } }, { - "__docId__": 6653, + "__docId__": 6644, "kind": "set", "name": "ticksPerOcclusionTest", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129399,7 +129383,7 @@ } }, { - "__docId__": 6654, + "__docId__": 6645, "kind": "member", "name": "_ticksPerOcclusionTest", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129417,7 +129401,7 @@ } }, { - "__docId__": 6655, + "__docId__": 6646, "kind": "get", "name": "ticksPerOcclusionTest", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129438,7 +129422,7 @@ } }, { - "__docId__": 6656, + "__docId__": 6647, "kind": "set", "name": "passes", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129459,7 +129443,7 @@ } }, { - "__docId__": 6657, + "__docId__": 6648, "kind": "member", "name": "_passes", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129477,7 +129461,7 @@ } }, { - "__docId__": 6658, + "__docId__": 6649, "kind": "get", "name": "passes", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129498,7 +129482,7 @@ } }, { - "__docId__": 6659, + "__docId__": 6650, "kind": "set", "name": "clearEachPass", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129519,7 +129503,7 @@ } }, { - "__docId__": 6660, + "__docId__": 6651, "kind": "member", "name": "_clearEachPass", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129537,7 +129521,7 @@ } }, { - "__docId__": 6661, + "__docId__": 6652, "kind": "get", "name": "clearEachPass", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129558,7 +129542,7 @@ } }, { - "__docId__": 6662, + "__docId__": 6653, "kind": "set", "name": "gammaInput", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129579,7 +129563,7 @@ } }, { - "__docId__": 6664, + "__docId__": 6655, "kind": "get", "name": "gammaInput", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129600,7 +129584,7 @@ } }, { - "__docId__": 6665, + "__docId__": 6656, "kind": "set", "name": "gammaOutput", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129621,7 +129605,7 @@ } }, { - "__docId__": 6667, + "__docId__": 6658, "kind": "get", "name": "gammaOutput", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129642,7 +129626,7 @@ } }, { - "__docId__": 6668, + "__docId__": 6659, "kind": "set", "name": "gammaFactor", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129663,7 +129647,7 @@ } }, { - "__docId__": 6669, + "__docId__": 6660, "kind": "get", "name": "gammaFactor", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129684,7 +129668,7 @@ } }, { - "__docId__": 6670, + "__docId__": 6661, "kind": "get", "name": "geometry", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129705,7 +129689,7 @@ } }, { - "__docId__": 6671, + "__docId__": 6662, "kind": "get", "name": "material", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129726,7 +129710,7 @@ } }, { - "__docId__": 6672, + "__docId__": 6663, "kind": "get", "name": "xrayMaterial", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129747,7 +129731,7 @@ } }, { - "__docId__": 6673, + "__docId__": 6664, "kind": "get", "name": "highlightMaterial", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129768,7 +129752,7 @@ } }, { - "__docId__": 6674, + "__docId__": 6665, "kind": "get", "name": "selectedMaterial", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129789,7 +129773,7 @@ } }, { - "__docId__": 6675, + "__docId__": 6666, "kind": "get", "name": "edgeMaterial", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129810,7 +129794,7 @@ } }, { - "__docId__": 6676, + "__docId__": 6667, "kind": "get", "name": "pointsMaterial", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129831,7 +129815,7 @@ } }, { - "__docId__": 6677, + "__docId__": 6668, "kind": "get", "name": "linesMaterial", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129852,7 +129836,7 @@ } }, { - "__docId__": 6678, + "__docId__": 6669, "kind": "get", "name": "viewport", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129873,7 +129857,7 @@ } }, { - "__docId__": 6679, + "__docId__": 6670, "kind": "get", "name": "camera", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129894,7 +129878,7 @@ } }, { - "__docId__": 6680, + "__docId__": 6671, "kind": "get", "name": "center", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129915,7 +129899,7 @@ } }, { - "__docId__": 6681, + "__docId__": 6672, "kind": "member", "name": "_center", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129933,7 +129917,7 @@ } }, { - "__docId__": 6682, + "__docId__": 6673, "kind": "get", "name": "aabb", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129954,7 +129938,7 @@ } }, { - "__docId__": 6683, + "__docId__": 6674, "kind": "member", "name": "_aabb", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129972,7 +129956,7 @@ } }, { - "__docId__": 6685, + "__docId__": 6676, "kind": "method", "name": "_setAABBDirty", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -129989,7 +129973,7 @@ "return": null }, { - "__docId__": 6687, + "__docId__": 6678, "kind": "method", "name": "pick", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130122,7 +130106,7 @@ } }, { - "__docId__": 6689, + "__docId__": 6680, "kind": "method", "name": "clear", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130137,7 +130121,7 @@ "return": null }, { - "__docId__": 6690, + "__docId__": 6681, "kind": "method", "name": "clearLights", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130152,7 +130136,7 @@ "return": null }, { - "__docId__": 6691, + "__docId__": 6682, "kind": "method", "name": "clearSectionPlanes", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130167,7 +130151,7 @@ "return": null }, { - "__docId__": 6692, + "__docId__": 6683, "kind": "method", "name": "getAABB", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130206,7 +130190,7 @@ } }, { - "__docId__": 6693, + "__docId__": 6684, "kind": "method", "name": "setObjectsVisible", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130255,7 +130239,7 @@ } }, { - "__docId__": 6694, + "__docId__": 6685, "kind": "method", "name": "setObjectsCollidable", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130304,7 +130288,7 @@ } }, { - "__docId__": 6695, + "__docId__": 6686, "kind": "method", "name": "setObjectsCulled", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130353,7 +130337,7 @@ } }, { - "__docId__": 6696, + "__docId__": 6687, "kind": "method", "name": "setObjectsSelected", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130402,7 +130386,7 @@ } }, { - "__docId__": 6697, + "__docId__": 6688, "kind": "method", "name": "setObjectsHighlighted", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130451,7 +130435,7 @@ } }, { - "__docId__": 6698, + "__docId__": 6689, "kind": "method", "name": "setObjectsXRayed", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130500,7 +130484,7 @@ } }, { - "__docId__": 6699, + "__docId__": 6690, "kind": "method", "name": "setObjectsEdges", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130549,7 +130533,7 @@ } }, { - "__docId__": 6700, + "__docId__": 6691, "kind": "method", "name": "setObjectsColorized", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130600,7 +130584,7 @@ } }, { - "__docId__": 6701, + "__docId__": 6692, "kind": "method", "name": "setObjectsOpacity", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130651,7 +130635,7 @@ } }, { - "__docId__": 6702, + "__docId__": 6693, "kind": "method", "name": "setObjectsPickable", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130700,7 +130684,7 @@ } }, { - "__docId__": 6703, + "__docId__": 6694, "kind": "method", "name": "setObjectsOffset", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130736,7 +130720,7 @@ "return": null }, { - "__docId__": 6704, + "__docId__": 6695, "kind": "method", "name": "withObjects", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130785,7 +130769,7 @@ } }, { - "__docId__": 6705, + "__docId__": 6696, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/scene/Scene.js~Scene", @@ -130800,7 +130784,7 @@ "return": null }, { - "__docId__": 6732, + "__docId__": 6723, "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\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} from \"../src/viewer/Viewer.js\";\n * import {GLTFLoaderPlugin} from \"../src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js\";\n * import {SectionPlane} from \"../src/sectionPlane/SectionPlane.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 }\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 }\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", @@ -130811,7 +130795,7 @@ "lineNumber": 1 }, { - "__docId__": 6733, + "__docId__": 6724, "kind": "class", "name": "SectionPlane", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js", @@ -130829,7 +130813,7 @@ ] }, { - "__docId__": 6734, + "__docId__": 6725, "kind": "get", "name": "type", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -130848,7 +130832,7 @@ } }, { - "__docId__": 6735, + "__docId__": 6726, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -130943,7 +130927,7 @@ ] }, { - "__docId__": 6736, + "__docId__": 6727, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -130961,7 +130945,7 @@ } }, { - "__docId__": 6740, + "__docId__": 6731, "kind": "set", "name": "active", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -130986,7 +130970,7 @@ ] }, { - "__docId__": 6741, + "__docId__": 6732, "kind": "get", "name": "active", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -131018,7 +131002,7 @@ } }, { - "__docId__": 6742, + "__docId__": 6733, "kind": "set", "name": "pos", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -131043,7 +131027,7 @@ ] }, { - "__docId__": 6743, + "__docId__": 6734, "kind": "get", "name": "pos", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -131075,7 +131059,7 @@ } }, { - "__docId__": 6744, + "__docId__": 6735, "kind": "set", "name": "dir", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -131100,7 +131084,7 @@ ] }, { - "__docId__": 6745, + "__docId__": 6736, "kind": "get", "name": "dir", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -131132,7 +131116,7 @@ } }, { - "__docId__": 6746, + "__docId__": 6737, "kind": "get", "name": "dist", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -131164,7 +131148,7 @@ } }, { - "__docId__": 6747, + "__docId__": 6738, "kind": "method", "name": "flipDir", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -131179,7 +131163,7 @@ "return": null }, { - "__docId__": 6748, + "__docId__": 6739, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/sectionPlane/SectionPlane.js~SectionPlane", @@ -131200,7 +131184,7 @@ "return": null }, { - "__docId__": 6749, + "__docId__": 6740, "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 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 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 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}", @@ -131211,7 +131195,7 @@ "lineNumber": 1 }, { - "__docId__": 6750, + "__docId__": 6741, "kind": "class", "name": "Skybox", "memberof": "src/viewer/scene/skybox/Skybox.js", @@ -131229,7 +131213,7 @@ ] }, { - "__docId__": 6751, + "__docId__": 6742, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/skybox/Skybox.js~Skybox", @@ -131328,7 +131312,7 @@ ] }, { - "__docId__": 6752, + "__docId__": 6743, "kind": "member", "name": "_skyboxMesh", "memberof": "src/viewer/scene/skybox/Skybox.js~Skybox", @@ -131346,7 +131330,7 @@ } }, { - "__docId__": 6755, + "__docId__": 6746, "kind": "set", "name": "size", "memberof": "src/viewer/scene/skybox/Skybox.js~Skybox", @@ -131371,7 +131355,7 @@ ] }, { - "__docId__": 6756, + "__docId__": 6747, "kind": "member", "name": "_size", "memberof": "src/viewer/scene/skybox/Skybox.js~Skybox", @@ -131389,7 +131373,7 @@ } }, { - "__docId__": 6757, + "__docId__": 6748, "kind": "get", "name": "size", "memberof": "src/viewer/scene/skybox/Skybox.js~Skybox", @@ -131421,7 +131405,7 @@ } }, { - "__docId__": 6758, + "__docId__": 6749, "kind": "set", "name": "active", "memberof": "src/viewer/scene/skybox/Skybox.js~Skybox", @@ -131446,7 +131430,7 @@ ] }, { - "__docId__": 6759, + "__docId__": 6750, "kind": "get", "name": "active", "memberof": "src/viewer/scene/skybox/Skybox.js~Skybox", @@ -131478,7 +131462,7 @@ } }, { - "__docId__": 6760, + "__docId__": 6751, "kind": "file", "name": "src/viewer/scene/stats.js", "content": "/**\n * xeokit runtime statistics.\n * @private\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};", @@ -131489,7 +131473,7 @@ "lineNumber": 1 }, { - "__docId__": 6761, + "__docId__": 6752, "kind": "variable", "name": "stats", "memberof": "src/viewer/scene/stats.js", @@ -131512,7 +131496,7 @@ "ignore": true }, { - "__docId__": 6762, + "__docId__": 6753, "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", @@ -131523,7 +131507,7 @@ "lineNumber": 1 }, { - "__docId__": 6763, + "__docId__": 6754, "kind": "class", "name": "Map", "memberof": "src/viewer/scene/utils/Map.js", @@ -131539,7 +131523,7 @@ "ignore": true }, { - "__docId__": 6764, + "__docId__": 6755, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/utils/Map.js~Map", @@ -131553,7 +131537,7 @@ "undocument": true }, { - "__docId__": 6765, + "__docId__": 6756, "kind": "member", "name": "items", "memberof": "src/viewer/scene/utils/Map.js~Map", @@ -131570,7 +131554,7 @@ } }, { - "__docId__": 6766, + "__docId__": 6757, "kind": "member", "name": "_lastUniqueId", "memberof": "src/viewer/scene/utils/Map.js~Map", @@ -131588,7 +131572,7 @@ } }, { - "__docId__": 6767, + "__docId__": 6758, "kind": "method", "name": "addItem", "memberof": "src/viewer/scene/utils/Map.js~Map", @@ -131607,7 +131591,7 @@ } }, { - "__docId__": 6768, + "__docId__": 6759, "kind": "method", "name": "removeItem", "memberof": "src/viewer/scene/utils/Map.js~Map", @@ -131634,7 +131618,7 @@ } }, { - "__docId__": 6769, + "__docId__": 6760, "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};", @@ -131645,7 +131629,7 @@ "lineNumber": 1 }, { - "__docId__": 6770, + "__docId__": 6761, "kind": "class", "name": "Queue", "memberof": "src/viewer/scene/utils/Queue.js", @@ -131661,7 +131645,7 @@ "ignore": true }, { - "__docId__": 6771, + "__docId__": 6762, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -131675,7 +131659,7 @@ "undocument": true }, { - "__docId__": 6772, + "__docId__": 6763, "kind": "member", "name": "_head", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -131693,7 +131677,7 @@ } }, { - "__docId__": 6773, + "__docId__": 6764, "kind": "member", "name": "_headLength", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -131711,7 +131695,7 @@ } }, { - "__docId__": 6774, + "__docId__": 6765, "kind": "member", "name": "_tail", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -131729,7 +131713,7 @@ } }, { - "__docId__": 6775, + "__docId__": 6766, "kind": "member", "name": "_index", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -131747,7 +131731,7 @@ } }, { - "__docId__": 6776, + "__docId__": 6767, "kind": "member", "name": "_length", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -131765,7 +131749,7 @@ } }, { - "__docId__": 6777, + "__docId__": 6768, "kind": "get", "name": "length", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -131784,7 +131768,7 @@ } }, { - "__docId__": 6778, + "__docId__": 6769, "kind": "method", "name": "shift", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -131804,7 +131788,7 @@ } }, { - "__docId__": 6783, + "__docId__": 6774, "kind": "method", "name": "push", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -131831,7 +131815,7 @@ } }, { - "__docId__": 6784, + "__docId__": 6775, "kind": "method", "name": "unshift", "memberof": "src/viewer/scene/utils/Queue.js~Queue", @@ -131858,7 +131842,7 @@ } }, { - "__docId__": 6785, + "__docId__": 6776, "kind": "file", "name": "src/viewer/scene/utils.js", "content": "/**\n * @private\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 console.log(args.url, xhr.readyState, xhr.status);\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 window.setTimeout(function () {\n ok(buffer);\n }, 0);\n } catch (error) {\n window.setTimeout(function () {\n err(error);\n }, 0);\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", @@ -131869,7 +131853,7 @@ "lineNumber": 1 }, { - "__docId__": 6786, + "__docId__": 6777, "kind": "function", "name": "xmlToJson", "memberof": "src/viewer/scene/utils.js", @@ -131905,7 +131889,7 @@ } }, { - "__docId__": 6787, + "__docId__": 6778, "kind": "function", "name": "clone", "memberof": "src/viewer/scene/utils.js", @@ -131935,7 +131919,7 @@ } }, { - "__docId__": 6788, + "__docId__": 6779, "kind": "variable", "name": "guidChars", "memberof": "src/viewer/scene/utils.js", @@ -131955,7 +131939,7 @@ } }, { - "__docId__": 6789, + "__docId__": 6780, "kind": "function", "name": "b64", "memberof": "src/viewer/scene/utils.js", @@ -131991,7 +131975,7 @@ } }, { - "__docId__": 6790, + "__docId__": 6781, "kind": "function", "name": "compressGuid", "memberof": "src/viewer/scene/utils.js", @@ -132021,7 +132005,7 @@ } }, { - "__docId__": 6791, + "__docId__": 6782, "kind": "function", "name": "findNodeOfType", "memberof": "src/viewer/scene/utils.js", @@ -132057,7 +132041,7 @@ } }, { - "__docId__": 6792, + "__docId__": 6783, "kind": "function", "name": "timeout", "memberof": "src/viewer/scene/utils.js", @@ -132087,7 +132071,7 @@ } }, { - "__docId__": 6793, + "__docId__": 6784, "kind": "function", "name": "httpRequest", "memberof": "src/viewer/scene/utils.js", @@ -132117,7 +132101,7 @@ } }, { - "__docId__": 6794, + "__docId__": 6785, "kind": "variable", "name": "queryString", "memberof": "src/viewer/scene/utils.js", @@ -132137,7 +132121,7 @@ } }, { - "__docId__": 6795, + "__docId__": 6786, "kind": "function", "name": "loadJSON", "memberof": "src/viewer/scene/utils.js", @@ -132175,7 +132159,7 @@ "return": null }, { - "__docId__": 6796, + "__docId__": 6787, "kind": "function", "name": "loadArraybuffer", "memberof": "src/viewer/scene/utils.js", @@ -132213,7 +132197,7 @@ "return": null }, { - "__docId__": 6797, + "__docId__": 6788, "kind": "function", "name": "isArray", "memberof": "src/viewer/scene/utils.js", @@ -132243,7 +132227,7 @@ } }, { - "__docId__": 6798, + "__docId__": 6789, "kind": "function", "name": "isString", "memberof": "src/viewer/scene/utils.js", @@ -132286,7 +132270,7 @@ "ignore": true }, { - "__docId__": 6799, + "__docId__": 6790, "kind": "function", "name": "isNumeric", "memberof": "src/viewer/scene/utils.js", @@ -132329,7 +132313,7 @@ "ignore": true }, { - "__docId__": 6800, + "__docId__": 6791, "kind": "function", "name": "isID", "memberof": "src/viewer/scene/utils.js", @@ -132372,7 +132356,7 @@ "ignore": true }, { - "__docId__": 6801, + "__docId__": 6792, "kind": "function", "name": "isSameComponent", "memberof": "src/viewer/scene/utils.js", @@ -132425,7 +132409,7 @@ "ignore": true }, { - "__docId__": 6802, + "__docId__": 6793, "kind": "function", "name": "isFunction", "memberof": "src/viewer/scene/utils.js", @@ -132468,7 +132452,7 @@ "ignore": true }, { - "__docId__": 6803, + "__docId__": 6794, "kind": "function", "name": "isObject", "memberof": "src/viewer/scene/utils.js", @@ -132511,7 +132495,7 @@ "ignore": true }, { - "__docId__": 6804, + "__docId__": 6795, "kind": "function", "name": "copy", "memberof": "src/viewer/scene/utils.js", @@ -132541,7 +132525,7 @@ "ignore": true }, { - "__docId__": 6805, + "__docId__": 6796, "kind": "function", "name": "apply", "memberof": "src/viewer/scene/utils.js", @@ -132577,7 +132561,7 @@ "ignore": true }, { - "__docId__": 6806, + "__docId__": 6797, "kind": "function", "name": "apply2", "memberof": "src/viewer/scene/utils.js", @@ -132613,7 +132597,7 @@ } }, { - "__docId__": 6807, + "__docId__": 6798, "kind": "function", "name": "applyIf", "memberof": "src/viewer/scene/utils.js", @@ -132649,7 +132633,7 @@ } }, { - "__docId__": 6808, + "__docId__": 6799, "kind": "function", "name": "isEmptyObject", "memberof": "src/viewer/scene/utils.js", @@ -132692,7 +132676,7 @@ "ignore": true }, { - "__docId__": 6809, + "__docId__": 6800, "kind": "function", "name": "inQuotes", "memberof": "src/viewer/scene/utils.js", @@ -132736,7 +132720,7 @@ "ignore": true }, { - "__docId__": 6810, + "__docId__": 6801, "kind": "function", "name": "concat", "memberof": "src/viewer/scene/utils.js", @@ -132790,7 +132774,7 @@ "ignore": true }, { - "__docId__": 6811, + "__docId__": 6802, "kind": "function", "name": "flattenParentChildHierarchy", "memberof": "src/viewer/scene/utils.js", @@ -132821,7 +132805,7 @@ "ignore": true }, { - "__docId__": 6812, + "__docId__": 6803, "kind": "variable", "name": "utils", "memberof": "src/viewer/scene/utils.js", @@ -132841,7 +132825,7 @@ } }, { - "__docId__": 6813, + "__docId__": 6804, "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};", @@ -132852,7 +132836,7 @@ "lineNumber": 1 }, { - "__docId__": 6814, + "__docId__": 6805, "kind": "class", "name": "Viewport", "memberof": "src/viewer/scene/viewport/Viewport.js", @@ -132871,7 +132855,7 @@ ] }, { - "__docId__": 6815, + "__docId__": 6806, "kind": "get", "name": "type", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -132890,7 +132874,7 @@ } }, { - "__docId__": 6816, + "__docId__": 6807, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -132904,7 +132888,7 @@ "ignore": true }, { - "__docId__": 6817, + "__docId__": 6808, "kind": "member", "name": "_state", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -132922,7 +132906,7 @@ } }, { - "__docId__": 6820, + "__docId__": 6811, "kind": "set", "name": "boundary", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -132947,7 +132931,7 @@ ] }, { - "__docId__": 6821, + "__docId__": 6812, "kind": "get", "name": "boundary", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -132979,7 +132963,7 @@ } }, { - "__docId__": 6822, + "__docId__": 6813, "kind": "set", "name": "autoBoundary", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -133004,7 +132988,7 @@ ] }, { - "__docId__": 6823, + "__docId__": 6814, "kind": "member", "name": "_autoBoundary", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -133022,7 +133006,7 @@ } }, { - "__docId__": 6824, + "__docId__": 6815, "kind": "member", "name": "_onCanvasSize", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -133040,7 +133024,7 @@ } }, { - "__docId__": 6826, + "__docId__": 6817, "kind": "get", "name": "autoBoundary", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -133072,7 +133056,7 @@ } }, { - "__docId__": 6827, + "__docId__": 6818, "kind": "method", "name": "_getState", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -133093,7 +133077,7 @@ } }, { - "__docId__": 6828, + "__docId__": 6819, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/viewport/Viewport.js~Viewport", @@ -133109,7 +133093,7 @@ "return": null }, { - "__docId__": 6829, + "__docId__": 6820, "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", @@ -133120,7 +133104,7 @@ "lineNumber": 1 }, { - "__docId__": 6830, + "__docId__": 6821, "kind": "class", "name": "ArrayBuf", "memberof": "src/viewer/scene/webgl/ArrayBuf.js", @@ -133136,7 +133120,7 @@ "ignore": true }, { - "__docId__": 6831, + "__docId__": 6822, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133150,7 +133134,7 @@ "undocument": true }, { - "__docId__": 6832, + "__docId__": 6823, "kind": "member", "name": "_gl", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133168,7 +133152,7 @@ } }, { - "__docId__": 6833, + "__docId__": 6824, "kind": "member", "name": "type", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133185,7 +133169,7 @@ } }, { - "__docId__": 6834, + "__docId__": 6825, "kind": "member", "name": "allocated", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133202,7 +133186,7 @@ } }, { - "__docId__": 6835, + "__docId__": 6826, "kind": "member", "name": "itemType", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133219,7 +133203,7 @@ } }, { - "__docId__": 6836, + "__docId__": 6827, "kind": "member", "name": "itemByteSize", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133236,7 +133220,7 @@ } }, { - "__docId__": 6849, + "__docId__": 6840, "kind": "member", "name": "usage", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133253,7 +133237,7 @@ } }, { - "__docId__": 6850, + "__docId__": 6841, "kind": "member", "name": "length", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133270,7 +133254,7 @@ } }, { - "__docId__": 6851, + "__docId__": 6842, "kind": "member", "name": "dataLength", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133287,7 +133271,7 @@ } }, { - "__docId__": 6852, + "__docId__": 6843, "kind": "member", "name": "numItems", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133304,7 +133288,7 @@ } }, { - "__docId__": 6853, + "__docId__": 6844, "kind": "member", "name": "itemSize", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133321,7 +133305,7 @@ } }, { - "__docId__": 6854, + "__docId__": 6845, "kind": "member", "name": "normalized", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133338,7 +133322,7 @@ } }, { - "__docId__": 6855, + "__docId__": 6846, "kind": "member", "name": "stride", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133355,7 +133339,7 @@ } }, { - "__docId__": 6856, + "__docId__": 6847, "kind": "member", "name": "offset", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133372,7 +133356,7 @@ } }, { - "__docId__": 6857, + "__docId__": 6848, "kind": "method", "name": "_allocate", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133396,7 +133380,7 @@ "return": null }, { - "__docId__": 6859, + "__docId__": 6850, "kind": "member", "name": "_handle", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133414,7 +133398,7 @@ } }, { - "__docId__": 6863, + "__docId__": 6854, "kind": "method", "name": "setData", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133443,7 +133427,7 @@ "return": null }, { - "__docId__": 6864, + "__docId__": 6855, "kind": "method", "name": "bind", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133459,7 +133443,7 @@ "return": null }, { - "__docId__": 6865, + "__docId__": 6856, "kind": "method", "name": "unbind", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133475,7 +133459,7 @@ "return": null }, { - "__docId__": 6866, + "__docId__": 6857, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/ArrayBuf.js~ArrayBuf", @@ -133491,7 +133475,7 @@ "return": null }, { - "__docId__": 6869, + "__docId__": 6860, "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", @@ -133502,7 +133486,7 @@ "lineNumber": 1 }, { - "__docId__": 6870, + "__docId__": 6861, "kind": "class", "name": "Attribute", "memberof": "src/viewer/scene/webgl/Attribute.js", @@ -133530,7 +133514,7 @@ "ignore": true }, { - "__docId__": 6871, + "__docId__": 6862, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/Attribute.js~Attribute", @@ -133544,7 +133528,7 @@ "undocument": true }, { - "__docId__": 6872, + "__docId__": 6863, "kind": "member", "name": "_gl", "memberof": "src/viewer/scene/webgl/Attribute.js~Attribute", @@ -133562,7 +133546,7 @@ } }, { - "__docId__": 6873, + "__docId__": 6864, "kind": "member", "name": "location", "memberof": "src/viewer/scene/webgl/Attribute.js~Attribute", @@ -133579,7 +133563,7 @@ } }, { - "__docId__": 6874, + "__docId__": 6865, "kind": "method", "name": "bindArrayBuffer", "memberof": "src/viewer/scene/webgl/Attribute.js~Attribute", @@ -133602,7 +133586,7 @@ "return": null }, { - "__docId__": 6875, + "__docId__": 6866, "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};", @@ -133613,7 +133597,7 @@ "lineNumber": 1 }, { - "__docId__": 6876, + "__docId__": 6867, "kind": "class", "name": "Drawable", "memberof": "src/viewer/scene/webgl/Drawable.js", @@ -133630,7 +133614,7 @@ "ignore": true }, { - "__docId__": 6877, + "__docId__": 6868, "kind": "get", "name": "isDrawable", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -133652,7 +133636,7 @@ "abstract": true }, { - "__docId__": 6878, + "__docId__": 6869, "kind": "get", "name": "xrayMaterial", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -133674,7 +133658,7 @@ "abstract": true }, { - "__docId__": 6879, + "__docId__": 6870, "kind": "get", "name": "highlightMaterial", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -133696,7 +133680,7 @@ "abstract": true }, { - "__docId__": 6880, + "__docId__": 6871, "kind": "get", "name": "selectedMaterial", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -133718,7 +133702,7 @@ "abstract": true }, { - "__docId__": 6881, + "__docId__": 6872, "kind": "get", "name": "edgeMaterial", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -133740,7 +133724,7 @@ "abstract": true }, { - "__docId__": 6882, + "__docId__": 6873, "kind": "get", "name": "isStateSortable", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -133762,7 +133746,7 @@ "abstract": true }, { - "__docId__": 6883, + "__docId__": 6874, "kind": "method", "name": "stateSortCompare", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -133812,7 +133796,7 @@ "abstract": true }, { - "__docId__": 6884, + "__docId__": 6875, "kind": "method", "name": "rebuildRenderFlags", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -133835,7 +133819,7 @@ "return": null }, { - "__docId__": 6885, + "__docId__": 6876, "kind": "get", "name": "renderFlags", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -133857,7 +133841,7 @@ "abstract": true }, { - "__docId__": 6886, + "__docId__": 6877, "kind": "method", "name": "drawColorOpaque", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -133884,7 +133868,7 @@ "return": null }, { - "__docId__": 6887, + "__docId__": 6878, "kind": "method", "name": "drawColorTransparent", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -133911,7 +133895,7 @@ "return": null }, { - "__docId__": 6888, + "__docId__": 6879, "kind": "method", "name": "drawDepth", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -133938,7 +133922,7 @@ "return": null }, { - "__docId__": 6889, + "__docId__": 6880, "kind": "method", "name": "drawNormals", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -133965,7 +133949,7 @@ "return": null }, { - "__docId__": 6890, + "__docId__": 6881, "kind": "method", "name": "drawSilhouetteXRayed", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -133992,7 +133976,7 @@ "return": null }, { - "__docId__": 6891, + "__docId__": 6882, "kind": "method", "name": "drawSilhouetteHighlighted", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -134019,7 +134003,7 @@ "return": null }, { - "__docId__": 6892, + "__docId__": 6883, "kind": "method", "name": "drawSilhouetteSelected", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -134046,7 +134030,7 @@ "return": null }, { - "__docId__": 6893, + "__docId__": 6884, "kind": "method", "name": "drawEdgesColorOpaque", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -134073,7 +134057,7 @@ "return": null }, { - "__docId__": 6894, + "__docId__": 6885, "kind": "method", "name": "drawEdgesColorTransparent", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -134100,7 +134084,7 @@ "return": null }, { - "__docId__": 6895, + "__docId__": 6886, "kind": "method", "name": "drawEdgesXRayed", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -134127,7 +134111,7 @@ "return": null }, { - "__docId__": 6896, + "__docId__": 6887, "kind": "method", "name": "drawEdgesHighlighted", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -134154,7 +134138,7 @@ "return": null }, { - "__docId__": 6897, + "__docId__": 6888, "kind": "method", "name": "drawEdgesSelected", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -134181,7 +134165,7 @@ "return": null }, { - "__docId__": 6898, + "__docId__": 6889, "kind": "method", "name": "drawOcclusion", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -134208,7 +134192,7 @@ "return": null }, { - "__docId__": 6899, + "__docId__": 6890, "kind": "method", "name": "drawShadow", "memberof": "src/viewer/scene/webgl/Drawable.js~Drawable", @@ -134235,7 +134219,7 @@ "return": null }, { - "__docId__": 6900, + "__docId__": 6891, "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 quality 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 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 /** The current line width.\n *\n * @property lineWidth\n * @type Number\n */\n this.lineWidth = 1;\n }\n\n /**\n * Get View matrix for the given RTC center.\n */\n getRTCViewMatrix(rtcCenterHash, rtcCenter) {\n let rtcViewMat = this._rtcViewMats[rtcCenterHash];\n if (!rtcViewMat) {\n rtcViewMat = this._getNewMat();\n createRTCViewMat(this._scene.camera.viewMatrix, rtcCenter, rtcViewMat);\n this._rtcViewMats[rtcCenterHash] = rtcViewMat;\n }\n return rtcViewMat;\n }\n\n /**\n * Get picking View RTC matrix for the given RTC center.\n */\n getRTCPickViewMatrix(rtcCenterHash, rtcCenter) {\n let rtcPickViewMat = this._rtcPickViewMats[rtcCenterHash];\n if (!rtcPickViewMat) {\n rtcPickViewMat = this._getNewMat();\n const pickViewMat = this.pickViewMatrix || this._scene.camera.viewMatrix;\n createRTCViewMat(pickViewMat, rtcCenter, rtcPickViewMat);\n this._rtcPickViewMats[rtcCenterHash] = 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};", @@ -134246,7 +134230,7 @@ "lineNumber": 1 }, { - "__docId__": 6901, + "__docId__": 6892, "kind": "class", "name": "FrameContext", "memberof": "src/viewer/scene/webgl/FrameContext.js", @@ -134262,7 +134246,7 @@ "ignore": true }, { - "__docId__": 6902, + "__docId__": 6893, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134276,7 +134260,7 @@ "undocument": true }, { - "__docId__": 6903, + "__docId__": 6894, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134294,7 +134278,7 @@ } }, { - "__docId__": 6904, + "__docId__": 6895, "kind": "member", "name": "_matPool", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134312,7 +134296,7 @@ } }, { - "__docId__": 6905, + "__docId__": 6896, "kind": "member", "name": "_matPoolNextFreeIndex", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134330,7 +134314,7 @@ } }, { - "__docId__": 6906, + "__docId__": 6897, "kind": "member", "name": "_rtcViewMats", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134348,7 +134332,7 @@ } }, { - "__docId__": 6907, + "__docId__": 6898, "kind": "member", "name": "_rtcPickViewMats", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134366,7 +134350,7 @@ } }, { - "__docId__": 6908, + "__docId__": 6899, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134382,7 +134366,7 @@ "return": null }, { - "__docId__": 6912, + "__docId__": 6903, "kind": "member", "name": "gl", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134401,7 +134385,7 @@ } }, { - "__docId__": 6913, + "__docId__": 6904, "kind": "member", "name": "lastProgramId", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134432,7 +134416,7 @@ } }, { - "__docId__": 6914, + "__docId__": 6905, "kind": "member", "name": "pbrEnabled", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134469,7 +134453,7 @@ } }, { - "__docId__": 6915, + "__docId__": 6906, "kind": "member", "name": "withSAO", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134506,7 +134490,7 @@ } }, { - "__docId__": 6916, + "__docId__": 6907, "kind": "member", "name": "backfaces", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134543,7 +134527,7 @@ } }, { - "__docId__": 6917, + "__docId__": 6908, "kind": "member", "name": "frontface", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134580,7 +134564,7 @@ } }, { - "__docId__": 6918, + "__docId__": 6909, "kind": "member", "name": "textureUnit", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134617,7 +134601,7 @@ } }, { - "__docId__": 6919, + "__docId__": 6910, "kind": "member", "name": "drawElements", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134654,7 +134638,7 @@ } }, { - "__docId__": 6920, + "__docId__": 6911, "kind": "member", "name": "drawArrays", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134691,7 +134675,7 @@ } }, { - "__docId__": 6921, + "__docId__": 6912, "kind": "member", "name": "useProgram", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134728,7 +134712,7 @@ } }, { - "__docId__": 6922, + "__docId__": 6913, "kind": "member", "name": "bindTexture", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134765,7 +134749,7 @@ } }, { - "__docId__": 6923, + "__docId__": 6914, "kind": "member", "name": "bindArray", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134802,7 +134786,7 @@ } }, { - "__docId__": 6924, + "__docId__": 6915, "kind": "member", "name": "pass", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134833,7 +134817,7 @@ } }, { - "__docId__": 6925, + "__docId__": 6916, "kind": "member", "name": "shadowViewMatrix", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134864,7 +134848,7 @@ } }, { - "__docId__": 6926, + "__docId__": 6917, "kind": "member", "name": "shadowProjMatrix", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134895,7 +134879,7 @@ } }, { - "__docId__": 6927, + "__docId__": 6918, "kind": "member", "name": "pickViewMatrix", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134926,7 +134910,7 @@ } }, { - "__docId__": 6928, + "__docId__": 6919, "kind": "member", "name": "pickProjMatrix", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134957,7 +134941,7 @@ } }, { - "__docId__": 6929, + "__docId__": 6920, "kind": "member", "name": "pickZNear", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -134989,7 +134973,7 @@ } }, { - "__docId__": 6930, + "__docId__": 6921, "kind": "member", "name": "pickZFar", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -135021,7 +135005,7 @@ } }, { - "__docId__": 6931, + "__docId__": 6922, "kind": "member", "name": "pickInvisible", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -135052,7 +135036,7 @@ } }, { - "__docId__": 6932, + "__docId__": 6923, "kind": "member", "name": "lineWidth", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -135083,7 +135067,7 @@ } }, { - "__docId__": 6933, + "__docId__": 6924, "kind": "method", "name": "getRTCViewMatrix", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -135115,7 +135099,7 @@ } }, { - "__docId__": 6934, + "__docId__": 6925, "kind": "method", "name": "getRTCPickViewMatrix", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -135147,7 +135131,7 @@ } }, { - "__docId__": 6935, + "__docId__": 6926, "kind": "method", "name": "_getNewMat", "memberof": "src/viewer/scene/webgl/FrameContext.js~FrameContext", @@ -135168,7 +135152,7 @@ } }, { - "__docId__": 6936, + "__docId__": 6927, "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 * @param value\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 this._canvasPos = new Int16Array([0, 0]);\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._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 coordinates when picking with a 2D pointer.\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 * Only defined when an entity and triangle was picked.\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 on surface.\n * Only defined when an entity and a point on its surface was picked.\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 * Picked World-space point on surface.\n * Only defined when an entity and a point on its surface was picked.\n * @property worldPos\n * @type {Number[]}\n */\n get worldPos() {\n return this.entity && 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 on surface.\n * Only defined when an entity and a point on its surface was picked.\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 * Only defined when an entity and a point on its surface was picked.\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 * Only defined when an entity and a point on its surface was picked.\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 * Only defined when an entity and a point on its surface was picked.\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 * @private\n * @param value\n */\n reset() {\n this.entity = null;\n this.primIndex = -1;\n this.primitive = null;\n this._gotCanvasPos = 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 }\n}\n\nexport {PickResult};", @@ -135179,7 +135163,7 @@ "lineNumber": 1 }, { - "__docId__": 6937, + "__docId__": 6928, "kind": "class", "name": "PickResult", "memberof": "src/viewer/scene/webgl/PickResult.js", @@ -135194,7 +135178,7 @@ "interface": false }, { - "__docId__": 6938, + "__docId__": 6929, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135220,7 +135204,7 @@ "ignore": true }, { - "__docId__": 6939, + "__docId__": 6930, "kind": "member", "name": "entity", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135252,7 +135236,7 @@ } }, { - "__docId__": 6940, + "__docId__": 6931, "kind": "member", "name": "primitive", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135283,7 +135267,7 @@ } }, { - "__docId__": 6941, + "__docId__": 6932, "kind": "member", "name": "primIndex", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135314,7 +135298,7 @@ } }, { - "__docId__": 6942, + "__docId__": 6933, "kind": "member", "name": "_canvasPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135332,7 +135316,7 @@ } }, { - "__docId__": 6943, + "__docId__": 6934, "kind": "member", "name": "_origin", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135350,7 +135334,7 @@ } }, { - "__docId__": 6944, + "__docId__": 6935, "kind": "member", "name": "_direction", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135368,7 +135352,7 @@ } }, { - "__docId__": 6945, + "__docId__": 6936, "kind": "member", "name": "_indices", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135386,7 +135370,7 @@ } }, { - "__docId__": 6946, + "__docId__": 6937, "kind": "member", "name": "_localPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135404,7 +135388,7 @@ } }, { - "__docId__": 6947, + "__docId__": 6938, "kind": "member", "name": "_worldPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135422,7 +135406,7 @@ } }, { - "__docId__": 6948, + "__docId__": 6939, "kind": "member", "name": "_viewPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135440,7 +135424,7 @@ } }, { - "__docId__": 6949, + "__docId__": 6940, "kind": "member", "name": "_bary", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135458,7 +135442,7 @@ } }, { - "__docId__": 6950, + "__docId__": 6941, "kind": "member", "name": "_worldNormal", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135476,7 +135460,7 @@ } }, { - "__docId__": 6951, + "__docId__": 6942, "kind": "member", "name": "_uv", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135494,7 +135478,7 @@ } }, { - "__docId__": 6952, + "__docId__": 6943, "kind": "get", "name": "canvasPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135527,7 +135511,7 @@ } }, { - "__docId__": 6953, + "__docId__": 6944, "kind": "set", "name": "canvasPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135553,7 +135537,7 @@ "ignore": true }, { - "__docId__": 6954, + "__docId__": 6945, "kind": "member", "name": "_gotCanvasPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135571,7 +135555,7 @@ } }, { - "__docId__": 6956, + "__docId__": 6947, "kind": "get", "name": "origin", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135604,7 +135588,7 @@ } }, { - "__docId__": 6957, + "__docId__": 6948, "kind": "set", "name": "origin", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135630,7 +135614,7 @@ "ignore": true }, { - "__docId__": 6958, + "__docId__": 6949, "kind": "member", "name": "_gotOrigin", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135648,7 +135632,7 @@ } }, { - "__docId__": 6960, + "__docId__": 6951, "kind": "get", "name": "direction", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135681,7 +135665,7 @@ } }, { - "__docId__": 6961, + "__docId__": 6952, "kind": "set", "name": "direction", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135707,7 +135691,7 @@ "ignore": true }, { - "__docId__": 6962, + "__docId__": 6953, "kind": "member", "name": "_gotDirection", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135725,7 +135709,7 @@ } }, { - "__docId__": 6964, + "__docId__": 6955, "kind": "get", "name": "indices", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135758,7 +135742,7 @@ } }, { - "__docId__": 6965, + "__docId__": 6956, "kind": "set", "name": "indices", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135784,7 +135768,7 @@ "ignore": true }, { - "__docId__": 6966, + "__docId__": 6957, "kind": "member", "name": "_gotIndices", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135802,7 +135786,7 @@ } }, { - "__docId__": 6968, + "__docId__": 6959, "kind": "get", "name": "localPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135835,7 +135819,7 @@ } }, { - "__docId__": 6969, + "__docId__": 6960, "kind": "set", "name": "localPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135861,7 +135845,7 @@ "ignore": true }, { - "__docId__": 6970, + "__docId__": 6961, "kind": "member", "name": "_gotLocalPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135879,7 +135863,7 @@ } }, { - "__docId__": 6972, + "__docId__": 6963, "kind": "get", "name": "worldPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135912,7 +135896,7 @@ } }, { - "__docId__": 6973, + "__docId__": 6964, "kind": "set", "name": "worldPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135938,7 +135922,7 @@ "ignore": true }, { - "__docId__": 6974, + "__docId__": 6965, "kind": "member", "name": "_gotWorldPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135956,7 +135940,7 @@ } }, { - "__docId__": 6976, + "__docId__": 6967, "kind": "get", "name": "viewPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -135989,7 +135973,7 @@ } }, { - "__docId__": 6977, + "__docId__": 6968, "kind": "set", "name": "viewPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -136015,7 +135999,7 @@ "ignore": true }, { - "__docId__": 6978, + "__docId__": 6969, "kind": "member", "name": "_gotViewPos", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -136033,7 +136017,7 @@ } }, { - "__docId__": 6980, + "__docId__": 6971, "kind": "get", "name": "bary", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -136066,7 +136050,7 @@ } }, { - "__docId__": 6981, + "__docId__": 6972, "kind": "set", "name": "bary", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -136092,7 +136076,7 @@ "ignore": true }, { - "__docId__": 6982, + "__docId__": 6973, "kind": "member", "name": "_gotBary", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -136110,7 +136094,7 @@ } }, { - "__docId__": 6984, + "__docId__": 6975, "kind": "get", "name": "worldNormal", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -136143,7 +136127,7 @@ } }, { - "__docId__": 6985, + "__docId__": 6976, "kind": "set", "name": "worldNormal", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -136169,7 +136153,7 @@ "ignore": true }, { - "__docId__": 6986, + "__docId__": 6977, "kind": "member", "name": "_gotWorldNormal", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -136187,7 +136171,7 @@ } }, { - "__docId__": 6988, + "__docId__": 6979, "kind": "get", "name": "uv", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -136220,7 +136204,7 @@ } }, { - "__docId__": 6989, + "__docId__": 6980, "kind": "set", "name": "uv", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -136246,7 +136230,7 @@ "ignore": true }, { - "__docId__": 6990, + "__docId__": 6981, "kind": "member", "name": "_gotUV", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -136264,7 +136248,7 @@ } }, { - "__docId__": 6992, + "__docId__": 6983, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/webgl/PickResult.js~PickResult", @@ -136291,7 +136275,7 @@ "return": null }, { - "__docId__": 7006, + "__docId__": 6997, "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 rtcCenter() {\n }\n}\n\nexport {Pickable};", @@ -136302,7 +136286,7 @@ "lineNumber": 1 }, { - "__docId__": 7007, + "__docId__": 6998, "kind": "class", "name": "Pickable", "memberof": "src/viewer/scene/webgl/Pickable.js", @@ -136319,7 +136303,7 @@ "ignore": true }, { - "__docId__": 7008, + "__docId__": 6999, "kind": "method", "name": "canPickTriangle", "memberof": "src/viewer/scene/webgl/Pickable.js~Pickable", @@ -136334,7 +136318,7 @@ "return": null }, { - "__docId__": 7009, + "__docId__": 7000, "kind": "method", "name": "drawPickTriangles", "memberof": "src/viewer/scene/webgl/Pickable.js~Pickable", @@ -136362,7 +136346,7 @@ "return": null }, { - "__docId__": 7010, + "__docId__": 7001, "kind": "method", "name": "pickTriangleSurface", "memberof": "src/viewer/scene/webgl/Pickable.js~Pickable", @@ -136428,7 +136412,7 @@ "return": null }, { - "__docId__": 7011, + "__docId__": 7002, "kind": "method", "name": "canPickWorldPos", "memberof": "src/viewer/scene/webgl/Pickable.js~Pickable", @@ -136443,7 +136427,7 @@ "return": null }, { - "__docId__": 7012, + "__docId__": 7003, "kind": "method", "name": "drawPickDepths", "memberof": "src/viewer/scene/webgl/Pickable.js~Pickable", @@ -136469,7 +136453,7 @@ "return": null }, { - "__docId__": 7013, + "__docId__": 7004, "kind": "method", "name": "delegatePickedEntity", "memberof": "src/viewer/scene/webgl/Pickable.js~Pickable", @@ -136497,7 +136481,7 @@ "params": [] }, { - "__docId__": 7014, + "__docId__": 7005, "kind": "get", "name": "rtcCenter", "memberof": "src/viewer/scene/webgl/Pickable.js~Pickable", @@ -136518,7 +136502,7 @@ } }, { - "__docId__": 7015, + "__docId__": 7006, "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: https://github.com/xeolabs/xeokit/issues/5\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 {\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};", @@ -136529,7 +136513,7 @@ "lineNumber": 1 }, { - "__docId__": 7016, + "__docId__": 7007, "kind": "variable", "name": "ids", "memberof": "src/viewer/scene/webgl/Program.js", @@ -136550,7 +136534,7 @@ "ignore": true }, { - "__docId__": 7017, + "__docId__": 7008, "kind": "function", "name": "joinSansComments", "memberof": "src/viewer/scene/webgl/Program.js", @@ -136581,7 +136565,7 @@ "ignore": true }, { - "__docId__": 7018, + "__docId__": 7009, "kind": "function", "name": "logErrors", "memberof": "src/viewer/scene/webgl/Program.js", @@ -136608,7 +136592,7 @@ "ignore": true }, { - "__docId__": 7019, + "__docId__": 7010, "kind": "class", "name": "Program", "memberof": "src/viewer/scene/webgl/Program.js", @@ -136624,7 +136608,7 @@ "ignore": true }, { - "__docId__": 7020, + "__docId__": 7011, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136638,7 +136622,7 @@ "undocument": true }, { - "__docId__": 7021, + "__docId__": 7012, "kind": "member", "name": "id", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136655,7 +136639,7 @@ } }, { - "__docId__": 7022, + "__docId__": 7013, "kind": "member", "name": "source", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136672,7 +136656,7 @@ } }, { - "__docId__": 7023, + "__docId__": 7014, "kind": "method", "name": "init", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136695,7 +136679,7 @@ "return": null }, { - "__docId__": 7024, + "__docId__": 7015, "kind": "member", "name": "gl", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136712,7 +136696,7 @@ } }, { - "__docId__": 7025, + "__docId__": 7016, "kind": "member", "name": "allocated", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136729,7 +136713,7 @@ } }, { - "__docId__": 7026, + "__docId__": 7017, "kind": "member", "name": "compiled", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136746,7 +136730,7 @@ } }, { - "__docId__": 7027, + "__docId__": 7018, "kind": "member", "name": "linked", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136763,7 +136747,7 @@ } }, { - "__docId__": 7028, + "__docId__": 7019, "kind": "member", "name": "validated", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136780,7 +136764,7 @@ } }, { - "__docId__": 7029, + "__docId__": 7020, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136797,7 +136781,7 @@ } }, { - "__docId__": 7030, + "__docId__": 7021, "kind": "member", "name": "uniforms", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136814,7 +136798,7 @@ } }, { - "__docId__": 7031, + "__docId__": 7022, "kind": "member", "name": "samplers", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136831,7 +136815,7 @@ } }, { - "__docId__": 7032, + "__docId__": 7023, "kind": "member", "name": "attributes", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136848,7 +136832,7 @@ } }, { - "__docId__": 7033, + "__docId__": 7024, "kind": "member", "name": "_vertexShader", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136866,7 +136850,7 @@ } }, { - "__docId__": 7034, + "__docId__": 7025, "kind": "member", "name": "_fragmentShader", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136884,7 +136868,7 @@ } }, { - "__docId__": 7041, + "__docId__": 7032, "kind": "member", "name": "handle", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136901,7 +136885,7 @@ } }, { - "__docId__": 7049, + "__docId__": 7040, "kind": "method", "name": "bind", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136917,7 +136901,7 @@ "return": null }, { - "__docId__": 7050, + "__docId__": 7041, "kind": "method", "name": "getLocation", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136944,7 +136928,7 @@ } }, { - "__docId__": 7051, + "__docId__": 7042, "kind": "method", "name": "getAttribute", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -136971,7 +136955,7 @@ } }, { - "__docId__": 7052, + "__docId__": 7043, "kind": "method", "name": "bindTexture", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -137010,7 +136994,7 @@ } }, { - "__docId__": 7053, + "__docId__": 7044, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/Program.js~Program", @@ -137026,7 +137010,7 @@ "return": null }, { - "__docId__": 7059, + "__docId__": 7050, "kind": "file", "name": "src/viewer/scene/webgl/RenderBuffer.js", "content": "import {Canvas2Image} from \"../libs/canvas2image.js\";\n\n/**\n * @desc Represents a WebGL render buffer.\n * @private\n */\nclass RenderBuffer {\n\n constructor(canvas, gl, options) {\n options = options || {};\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 }\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() {\n this._touch();\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 _touch() {\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 gl.deleteTexture(this.buffer.texture);\n gl.deleteFramebuffer(this.buffer.framebuf);\n gl.deleteRenderbuffer(this.buffer.renderbuf);\n }\n }\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n\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\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 gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n const renderbuf = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuf);\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, width, height);\n\n const framebuf = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuf);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, renderbuf);\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: texture,\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) {\n const x = pickX;\n const y = this.gl.drawingBufferHeight - pickY;\n const pix = new Uint8Array(4);\n const gl = this.gl;\n gl.readPixels(x, y, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pix);\n return pix;\n }\n\n readImage(params) {\n\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\n gl.readPixels(0, 0, this.buffer.width, this.buffer.height, gl.RGBA, gl.UNSIGNED_BYTE, pixelData);\n\n imageData.data.set(pixelData);\n context.putImageData(imageData, 0, 0);\n\n const imageWidth = params.width || canvas.width;\n const imageHeight = params.height || canvas.height;\n const format = params.format || \"jpeg\";\n const flipy = true; // Account for WebGL texture flipping\n\n let image;\n\n switch (format) {\n case \"jpeg\":\n image = Canvas2Image.saveAsJPEG(canvas, true, imageWidth, imageHeight, flipy);\n break;\n case \"png\":\n image = Canvas2Image.saveAsPNG(canvas, true, imageWidth, imageHeight, flipy);\n break;\n case \"bmp\":\n image = Canvas2Image.saveAsBMP(canvas, true, imageWidth, imageHeight, flipy);\n break;\n default:\n console.error(\"Unsupported image format: '\" + format + \"' - supported types are 'jpeg', 'bmp' and 'png' - defaulting to 'jpeg'\");\n image = Canvas2Image.saveAsJPEG(canvas, true, imageWidth, imageHeight, flipy);\n }\n\n return image.src;\n }\n\n _getImageDataCache() {\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\n const canvas = document.createElement('canvas');\n canvas.width = bufferWidth;\n canvas.height = bufferHeight;\n\n const context = canvas.getContext('2d');\n const imageData = context.createImageData(bufferWidth, bufferHeight);\n\n imageDataCache = {\n pixelData: new Uint8Array(bufferWidth * bufferHeight * 4),\n canvas: canvas,\n context: context,\n imageData: imageData,\n width: bufferWidth,\n height: bufferHeight\n };\n\n this._imageDataCache = imageDataCache;\n }\n\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() {\n const self = this;\n return this._texture || (this._texture = {\n renderBuffer: this,\n bind: function (unit) {\n if (self.buffer && self.buffer.texture) {\n self.gl.activeTexture(self.gl[\"TEXTURE\" + unit]);\n self.gl.bindTexture(self.gl.TEXTURE_2D, self.buffer.texture);\n return true;\n }\n return false;\n },\n unbind: function (unit) {\n if (self.buffer && self.buffer.texture) {\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 gl.deleteTexture(this.buffer.texture);\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 }\n}\n\nexport {RenderBuffer};", @@ -137037,7 +137021,7 @@ "lineNumber": 1 }, { - "__docId__": 7060, + "__docId__": 7051, "kind": "class", "name": "RenderBuffer", "memberof": "src/viewer/scene/webgl/RenderBuffer.js", @@ -137053,7 +137037,7 @@ "ignore": true }, { - "__docId__": 7061, + "__docId__": 7052, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137067,7 +137051,7 @@ "undocument": true }, { - "__docId__": 7062, + "__docId__": 7053, "kind": "member", "name": "gl", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137084,7 +137068,7 @@ } }, { - "__docId__": 7063, + "__docId__": 7054, "kind": "member", "name": "allocated", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137101,7 +137085,7 @@ } }, { - "__docId__": 7064, + "__docId__": 7055, "kind": "member", "name": "canvas", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137118,7 +137102,7 @@ } }, { - "__docId__": 7065, + "__docId__": 7056, "kind": "member", "name": "buffer", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137135,7 +137119,7 @@ } }, { - "__docId__": 7066, + "__docId__": 7057, "kind": "member", "name": "bound", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137152,7 +137136,7 @@ } }, { - "__docId__": 7067, + "__docId__": 7058, "kind": "member", "name": "size", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137169,7 +137153,7 @@ } }, { - "__docId__": 7068, + "__docId__": 7059, "kind": "method", "name": "setSize", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137192,7 +137176,7 @@ "return": null }, { - "__docId__": 7070, + "__docId__": 7061, "kind": "method", "name": "webglContextRestored", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137215,7 +137199,7 @@ "return": null }, { - "__docId__": 7075, + "__docId__": 7066, "kind": "method", "name": "bind", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137231,7 +137215,7 @@ "return": null }, { - "__docId__": 7077, + "__docId__": 7068, "kind": "method", "name": "_touch", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137248,7 +137232,7 @@ "return": null }, { - "__docId__": 7080, + "__docId__": 7071, "kind": "method", "name": "clear", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137264,7 +137248,7 @@ "return": null }, { - "__docId__": 7081, + "__docId__": 7072, "kind": "method", "name": "read", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137297,7 +137281,7 @@ } }, { - "__docId__": 7082, + "__docId__": 7073, "kind": "method", "name": "readImage", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137324,7 +137308,7 @@ } }, { - "__docId__": 7083, + "__docId__": 7074, "kind": "method", "name": "_getImageDataCache", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137345,7 +137329,7 @@ } }, { - "__docId__": 7084, + "__docId__": 7075, "kind": "member", "name": "_imageDataCache", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137363,7 +137347,7 @@ } }, { - "__docId__": 7086, + "__docId__": 7077, "kind": "method", "name": "unbind", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137379,7 +137363,7 @@ "return": null }, { - "__docId__": 7088, + "__docId__": 7079, "kind": "method", "name": "getTexture", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137399,7 +137383,7 @@ } }, { - "__docId__": 7089, + "__docId__": 7080, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137415,7 +137399,7 @@ "return": null }, { - "__docId__": 7094, + "__docId__": 7085, "kind": "member", "name": "_texture", "memberof": "src/viewer/scene/webgl/RenderBuffer.js~RenderBuffer", @@ -137433,7 +137417,7 @@ } }, { - "__docId__": 7095, + "__docId__": 7086, "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};", @@ -137444,7 +137428,7 @@ "lineNumber": 1 }, { - "__docId__": 7096, + "__docId__": 7087, "kind": "class", "name": "RenderFlags", "memberof": "src/viewer/scene/webgl/RenderFlags.js", @@ -137460,7 +137444,7 @@ "ignore": true }, { - "__docId__": 7097, + "__docId__": 7088, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137474,7 +137458,7 @@ "ignore": true }, { - "__docId__": 7098, + "__docId__": 7089, "kind": "member", "name": "visibleLayers", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137505,7 +137489,7 @@ } }, { - "__docId__": 7099, + "__docId__": 7090, "kind": "member", "name": "sectionPlanesActivePerLayer", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137536,7 +137520,7 @@ } }, { - "__docId__": 7100, + "__docId__": 7091, "kind": "method", "name": "reset", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137552,7 +137536,7 @@ "return": null }, { - "__docId__": 7101, + "__docId__": 7092, "kind": "member", "name": "culled", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137583,7 +137567,7 @@ } }, { - "__docId__": 7102, + "__docId__": 7093, "kind": "member", "name": "sectioned", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137614,7 +137598,7 @@ } }, { - "__docId__": 7103, + "__docId__": 7094, "kind": "member", "name": "numLayers", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137645,7 +137629,7 @@ } }, { - "__docId__": 7104, + "__docId__": 7095, "kind": "member", "name": "numVisibleLayers", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137676,7 +137660,7 @@ } }, { - "__docId__": 7105, + "__docId__": 7096, "kind": "member", "name": "colorOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137707,7 +137691,7 @@ } }, { - "__docId__": 7106, + "__docId__": 7097, "kind": "member", "name": "colorTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137738,7 +137722,7 @@ } }, { - "__docId__": 7107, + "__docId__": 7098, "kind": "member", "name": "edgesOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137769,7 +137753,7 @@ } }, { - "__docId__": 7108, + "__docId__": 7099, "kind": "member", "name": "edgesTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137800,7 +137784,7 @@ } }, { - "__docId__": 7109, + "__docId__": 7100, "kind": "member", "name": "xrayedSilhouetteOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137831,7 +137815,7 @@ } }, { - "__docId__": 7110, + "__docId__": 7101, "kind": "member", "name": "xrayedEdgesOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137862,7 +137846,7 @@ } }, { - "__docId__": 7111, + "__docId__": 7102, "kind": "member", "name": "xrayedSilhouetteTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137893,7 +137877,7 @@ } }, { - "__docId__": 7112, + "__docId__": 7103, "kind": "member", "name": "xrayedEdgesTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137924,7 +137908,7 @@ } }, { - "__docId__": 7113, + "__docId__": 7104, "kind": "member", "name": "highlightedSilhouetteOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137955,7 +137939,7 @@ } }, { - "__docId__": 7114, + "__docId__": 7105, "kind": "member", "name": "highlightedEdgesOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -137986,7 +137970,7 @@ } }, { - "__docId__": 7115, + "__docId__": 7106, "kind": "member", "name": "highlightedSilhouetteTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -138017,7 +138001,7 @@ } }, { - "__docId__": 7116, + "__docId__": 7107, "kind": "member", "name": "highlightedEdgesTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -138048,7 +138032,7 @@ } }, { - "__docId__": 7117, + "__docId__": 7108, "kind": "member", "name": "selectedSilhouetteOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -138079,7 +138063,7 @@ } }, { - "__docId__": 7118, + "__docId__": 7109, "kind": "member", "name": "selectedEdgesOpaque", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -138110,7 +138094,7 @@ } }, { - "__docId__": 7119, + "__docId__": 7110, "kind": "member", "name": "selectedSilhouetteTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -138141,7 +138125,7 @@ } }, { - "__docId__": 7120, + "__docId__": 7111, "kind": "member", "name": "selectedEdgesTransparent", "memberof": "src/viewer/scene/webgl/RenderFlags.js~RenderFlags", @@ -138172,7 +138156,7 @@ } }, { - "__docId__": 7121, + "__docId__": 7112, "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};", @@ -138183,7 +138167,7 @@ "lineNumber": 1 }, { - "__docId__": 7122, + "__docId__": 7113, "kind": "variable", "name": "ids", "memberof": "src/viewer/scene/webgl/RenderState.js", @@ -138204,7 +138188,7 @@ "ignore": true }, { - "__docId__": 7123, + "__docId__": 7114, "kind": "class", "name": "RenderState", "memberof": "src/viewer/scene/webgl/RenderState.js", @@ -138220,7 +138204,7 @@ "ignore": true }, { - "__docId__": 7124, + "__docId__": 7115, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/RenderState.js~RenderState", @@ -138234,7 +138218,7 @@ "undocument": true }, { - "__docId__": 7125, + "__docId__": 7116, "kind": "member", "name": "id", "memberof": "src/viewer/scene/webgl/RenderState.js~RenderState", @@ -138271,7 +138255,7 @@ } }, { - "__docId__": 7126, + "__docId__": 7117, "kind": "member", "name": "[key]", "memberof": "src/viewer/scene/webgl/RenderState.js~RenderState", @@ -138288,7 +138272,7 @@ } }, { - "__docId__": 7127, + "__docId__": 7118, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/RenderState.js~RenderState", @@ -138303,7 +138287,7 @@ "return": null }, { - "__docId__": 7128, + "__docId__": 7119, "kind": "file", "name": "src/viewer/scene/webgl/Renderer.js", "content": "import {FrameContext} from './FrameContext.js';\nimport {RenderBuffer} from './RenderBuffer.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\";\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 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 const saoDepthBuffer = new RenderBuffer(canvas, gl);\n const occlusionBuffer1 = new RenderBuffer(canvas, gl);\n const occlusionBuffer2 = new RenderBuffer(canvas, gl);\n\n const pickBuffer = new RenderBuffer(canvas, gl);\n const snapshotBuffer = new RenderBuffer(canvas, gl);\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._occlusionTester = null; // Lazy-created in #addMarker()\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 pickBuffer.webglContextRestored(gl);\n snapshotBuffer.webglContextRestored(gl);\n saoDepthBuffer.webglContextRestored(gl);\n occlusionBuffer1.webglContextRestored(gl);\n occlusionBuffer2.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(0, 0, 0, 0);\n } else {\n const color = params.ambientColor || scene.canvas.backgroundColor || this.lights.getAmbientColor();\n gl.clearColor(color[0], color[1], color[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 * 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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"]) { // In case context lost/recovered\n gl.getExtension(\"OES_element_index_uint\");\n }\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n gl.getExtension('EXT_frag_depth');\n }\n\n const sao = scene.sao;\n\n if (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 saoDepthBuffer.bind();\n saoDepthBuffer.clear();\n drawDepth(params);\n saoDepthBuffer.unbind();\n\n // Render occlusion buffer\n\n occlusionBuffer1.bind();\n occlusionBuffer1.clear();\n saoOcclusionRenderer.render(saoDepthBuffer.getTexture(), null);\n occlusionBuffer1.unbind();\n\n if (sao.blur) {\n\n // Horizontally blur occlusion buffer 1 into occlusion buffer 2\n\n occlusionBuffer2.bind();\n occlusionBuffer2.clear();\n saoDepthLimitedBlurRenderer.render(saoDepthBuffer.getTexture(), occlusionBuffer1.getTexture(), 0);\n occlusionBuffer2.unbind();\n\n // Vertically blur occlusion buffer 2 back into occlusion buffer 1\n\n occlusionBuffer1.bind();\n occlusionBuffer1.clear();\n saoDepthLimitedBlurRenderer.render(saoDepthBuffer.getTexture(), occlusionBuffer2.getTexture(), 1);\n occlusionBuffer1.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) {\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 const drawColor = (function () { // Draws the drawables in drawableListSorted\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 return function (params) {\n\n const ambientColor = scene._lightsState.getAmbientColor();\n\n frameCtx.reset();\n frameCtx.pass = params.pass;\n frameCtx.withSAO = false;\n frameCtx.pbrEnabled = !!scene.pbrEnabled;\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 clearColor = scene.canvas.backgroundColor || ambientColor;\n gl.clearColor(clearColor[0], clearColor[1], clearColor[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 frameCtx.occlusionTexture = saoPossible ? occlusionBuffer1.getTexture() : null;\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 (saoPossible && drawable.saoEnabled) {\n normalDrawSAOBin[normalDrawSAOBinLen++] = drawable;\n } else {\n drawable.drawColorOpaque(frameCtx);\n }\n }\n\n if (renderFlags.colorTransparent) {\n normalFillTransparentBin[normalFillTransparentBinLen++] = drawable;\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 (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 // Render deferred bins\n //------------------------------------------------------------------------------------------------------\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 if (normalEdgesOpaqueBinLen > 0) {\n for (i = 0; i < normalEdgesOpaqueBinLen; i++) {\n normalEdgesOpaqueBin[i].drawEdgesColorOpaque(frameCtx);\n }\n }\n\n if (xrayedFillOpaqueBinLen > 0) {\n for (i = 0; i < xrayedFillOpaqueBinLen; i++) {\n xrayedFillOpaqueBin[i].drawSilhouetteXRayed(frameCtx);\n }\n }\n\n if (xrayEdgesOpaqueBinLen > 0) {\n for (i = 0; i < xrayEdgesOpaqueBinLen; i++) {\n xrayEdgesOpaqueBin[i].drawEdgesXRayed(frameCtx);\n }\n }\n\n if (xrayedFillTransparentBinLen > 0 || xrayEdgesTransparentBinLen > 0 || normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) {\n gl.enable(gl.CULL_FACE);\n gl.enable(gl.BLEND);\n\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\n frameCtx.backfaces = false;\n if (!alphaDepthMask) {\n gl.depthMask(false);\n }\n if (xrayEdgesTransparentBinLen > 0) {\n for (i = 0; i < xrayEdgesTransparentBinLen; i++) {\n xrayEdgesTransparentBin[i].drawEdgesXRayed(frameCtx);\n }\n }\n if (xrayedFillTransparentBinLen > 0) {\n for (i = 0; i < xrayedFillTransparentBinLen; i++) {\n xrayedFillTransparentBin[i].drawSilhouetteXRayed(frameCtx);\n }\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 if (normalFillTransparentBinLen > 0) {\n for (i = 0; i < normalFillTransparentBinLen; i++) {\n drawable = normalFillTransparentBin[i];\n drawable.drawColorTransparent(frameCtx);\n }\n }\n gl.disable(gl.BLEND);\n if (!alphaDepthMask) {\n gl.depthMask(true);\n }\n }\n\n if (highlightedFillOpaqueBinLen > 0 || highlightedEdgesOpaqueBinLen > 0) {\n frameCtx.lastProgramId = null;\n gl.clear(gl.DEPTH_BUFFER_BIT);\n if (highlightedEdgesOpaqueBinLen > 0) {\n for (i = 0; i < highlightedEdgesOpaqueBinLen; i++) {\n highlightedEdgesOpaqueBin[i].drawEdgesHighlighted(frameCtx);\n }\n }\n if (highlightedFillOpaqueBinLen > 0) {\n for (i = 0; i < highlightedFillOpaqueBinLen; i++) {\n highlightedFillOpaqueBin[i].drawSilhouetteHighlighted(frameCtx);\n }\n }\n }\n\n if (highlightedFillTransparentBinLen > 0 || highlightedEdgesTransparentBinLen > 0 || highlightedFillOpaqueBinLen > 0) {\n frameCtx.lastProgramId = null;\n gl.clear(gl.DEPTH_BUFFER_BIT);\n gl.enable(gl.CULL_FACE);\n gl.enable(gl.BLEND);\n\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 if (highlightedEdgesTransparentBinLen > 0) {\n for (i = 0; i < highlightedEdgesTransparentBinLen; i++) {\n highlightedEdgesTransparentBin[i].drawEdgesHighlighted(frameCtx);\n }\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 if (selectedFillOpaqueBinLen > 0 || selectedEdgesOpaqueBinLen > 0) {\n frameCtx.lastProgramId = null;\n gl.clear(gl.DEPTH_BUFFER_BIT);\n if (selectedEdgesOpaqueBinLen > 0) {\n for (i = 0; i < selectedEdgesOpaqueBinLen; i++) {\n selectedEdgesOpaqueBin[i].drawEdgesSelected(frameCtx);\n }\n }\n if (selectedFillOpaqueBinLen > 0) {\n for (i = 0; i < selectedFillOpaqueBinLen; i++) {\n selectedFillOpaqueBin[i].drawSilhouetteSelected(frameCtx);\n }\n }\n }\n\n if (selectedFillTransparentBinLen > 0 || selectedEdgesTransparentBinLen > 0) {\n frameCtx.lastProgramId = null;\n gl.clear(gl.DEPTH_BUFFER_BIT);\n gl.enable(gl.CULL_FACE);\n gl.enable(gl.BLEND);\n\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 if (selectedEdgesTransparentBinLen > 0) {\n for (i = 0; i < selectedEdgesTransparentBinLen; i++) {\n selectedEdgesTransparentBin[i].drawEdgesSelected(frameCtx);\n }\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.useProgram = frameCtx.useProgram;\n frameStats.bindTexture = frameCtx.bindTexture;\n frameStats.bindArray = frameCtx.bindArray;\n\n const numTextureUnits = WEBGL_INFO.MAX_TEXTURE_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 /**\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 up = math.vec3([0, 1, 0]);\n const _pickResult = new PickResult();\n\n const nearAndFar = math.vec2();\n\n return function (params, pickResult = _pickResult) {\n\n pickResult.reset();\n\n updateDrawlist();\n\n if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"]) { // In case context lost/recovered\n gl.getExtension(\"OES_element_index_uint\");\n }\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n gl.getExtension('EXT_frag_depth');\n }\n\n let canvasX;\n let canvasY;\n let origin;\n let direction;\n let look;\n let pickViewMatrix = null;\n let pickProjMatrix = null;\n\n pickResult.pickSurface = params.pickSurface;\n\n if (params.canvasPos) {\n\n canvasX = params.canvasPos[0];\n canvasY = 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 const pickFrustumMatrix = math.frustumMat4(-1, 1, -1, 1, scene.camera.project.near, scene.camera.project.far, tempMat4a);\n\n if (params.matrix) {\n\n pickViewMatrix = params.matrix;\n pickProjMatrix = pickFrustumMatrix;\n\n } else {\n\n origin = params.origin || math.vec3([0, 0, 0]);\n direction = params.direction || math.vec3([0, 0, 1]);\n look = math.addVec3(origin, direction, tempVec3a);\n\n pickViewMatrix = math.lookAtMat4v(origin, look, up, tempMat4b);\n pickProjMatrix = pickFrustumMatrix;\n\n pickResult.origin = origin;\n pickResult.direction = direction;\n }\n\n canvasX = canvas.clientWidth * 0.5;\n canvasY = canvas.clientHeight * 0.5;\n }\n\n pickBuffer.bind();\n\n const pickable = pickPickable(canvasX, canvasY, pickViewMatrix, pickProjMatrix, params);\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 return null;\n }\n\n if (params.pickSurface) {\n\n if (pickable.canPickTriangle && pickable.canPickTriangle()) {\n pickTriangle(pickable, canvasX, canvasY, pickViewMatrix, pickProjMatrix, pickResult);\n pickable.pickTriangleSurface(pickViewMatrix, pickProjMatrix, pickResult);\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 pickWorldPos(pickable, canvasX, canvasY, pickViewMatrix, pickProjMatrix, nearAndFar, pickResult);\n if (params.pickSurfaceNormal !== false) {\n pickWorldNormal(pickable, canvasX, canvasY, pickViewMatrix, pickProjMatrix, nearAndFar, pickResult);\n }\n }\n }\n }\n\n pickBuffer.unbind();\n\n pickResult.entity = pickedEntity;\n\n return pickResult;\n };\n })();\n\n function pickPickable(canvasX, canvasY, pickViewMatrix, pickProjMatrix, params) {\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n frameCtx.pickViewMatrix = pickViewMatrix;\n frameCtx.pickProjMatrix = pickProjMatrix;\n frameCtx.pickInvisible = !!params.pickInvisible;\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.disable(gl.CULL_FACE);\n gl.disable(gl.BLEND);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n let i;\n let len;\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 (i = 0, len = drawableList.length; i < len; i++) {\n\n const drawable = drawableList[i];\n\n if (!drawable.drawPickMesh || drawable.culled === true || (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\n const pix = pickBuffer.read(Math.round(canvasX), Math.round(canvasY));\n let pickID = pix[0] + (pix[1] * 256) + (pix[2] * 256 * 256) + (pix[3] * 256 * 256 * 256);\n\n if (pickID < 0) {\n return;\n }\n\n const pickable = pickIDs.items[pickID];\n\n return pickable;\n }\n\n function pickTriangle(pickable, canvasX, canvasY, pickViewMatrix, pickProjMatrix, pickResult) {\n\n if (!pickable.drawPickTriangles) {\n return;\n }\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n frameCtx.pickViewMatrix = pickViewMatrix; // Can be null\n frameCtx.pickProjMatrix = pickProjMatrix; // Can be null\n // frameCtx.pickInvisible = !!params.pickInvisible;\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.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(canvasX, canvasY);\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 pickWorldPos = (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 (pickable, canvasX, canvasY, pickViewMatrix, pickProjMatrix, nearAndFar, pickResult) {\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n frameCtx.pickViewMatrix = pickViewMatrix;\n frameCtx.pickProjMatrix = pickProjMatrix;\n frameCtx.pickZNear = nearAndFar[0];\n frameCtx.pickZFar = nearAndFar[1];\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.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(Math.round(canvasX), Math.round(canvasY));\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 = (canvasX - canvas.width / 2) / (canvas.width / 2);\n const y = -(canvasY - canvas.height / 2) / (canvas.height / 2);\n\n const rtcCenter = pickable.rtcCenter;\n let pvMat;\n\n if (rtcCenter) {\n const rtcPickViewMat = createRTCViewMat(pickViewMatrix, rtcCenter, 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 (rtcCenter) {\n math.addVec3(worldPos, rtcCenter);\n }\n\n pickResult.worldPos = worldPos;\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 pickWorldNormal(pickable, canvasX, canvasY, pickViewMatrix, pickProjMatrix, nearAndFar, pickResult) {\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n frameCtx.pickViewMatrix = pickViewMatrix;\n frameCtx.pickProjMatrix = pickProjMatrix;\n frameCtx.pickZNear = nearAndFar[0];\n frameCtx.pickZFar = nearAndFar[1];\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.disable(gl.CULL_FACE);\n gl.disable(gl.BLEND);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n pickable.drawPickNormals(frameCtx); // Draw color-encoded fragment World-space normals\n\n const pix = pickBuffer.read(Math.round(canvasX), Math.round(canvasY));\n\n const worldNormal = [(pix[0] / 256.0) - 0.5, (pix[1] / 256.0) - 0.5, (pix[2] / 256.0) - 0.5];\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);\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 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 () {\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 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 imageDataURI = snapshotBuffer.readImage(params);\n return imageDataURI;\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 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 pickBuffer.destroy();\n snapshotBuffer.destroy();\n saoDepthBuffer.destroy();\n occlusionBuffer1.destroy();\n occlusionBuffer2.destroy();\n\n saoOcclusionRenderer.destroy();\n saoDepthLimitedBlurRenderer.destroy();\n\n if (this._occlusionTester) {\n this._occlusionTester.destroy();\n }\n };\n};\n\nexport {Renderer};\n", @@ -138314,7 +138298,7 @@ "lineNumber": 1 }, { - "__docId__": 7129, + "__docId__": 7120, "kind": "function", "name": "Renderer", "memberof": "src/viewer/scene/webgl/Renderer.js", @@ -138346,7 +138330,7 @@ "return": null }, { - "__docId__": 7130, + "__docId__": 7121, "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};", @@ -138357,7 +138341,7 @@ "lineNumber": 1 }, { - "__docId__": 7131, + "__docId__": 7122, "kind": "class", "name": "Sampler", "memberof": "src/viewer/scene/webgl/Sampler.js", @@ -138373,7 +138357,7 @@ "ignore": true }, { - "__docId__": 7132, + "__docId__": 7123, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/Sampler.js~Sampler", @@ -138387,7 +138371,7 @@ "undocument": true }, { - "__docId__": 7133, + "__docId__": 7124, "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};", @@ -138398,7 +138382,7 @@ "lineNumber": 1 }, { - "__docId__": 7134, + "__docId__": 7125, "kind": "class", "name": "Shader", "memberof": "src/viewer/scene/webgl/Shader.js", @@ -138414,7 +138398,7 @@ "ignore": true }, { - "__docId__": 7135, + "__docId__": 7126, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/Shader.js~Shader", @@ -138428,7 +138412,7 @@ "undocument": true }, { - "__docId__": 7136, + "__docId__": 7127, "kind": "member", "name": "allocated", "memberof": "src/viewer/scene/webgl/Shader.js~Shader", @@ -138445,7 +138429,7 @@ } }, { - "__docId__": 7137, + "__docId__": 7128, "kind": "member", "name": "compiled", "memberof": "src/viewer/scene/webgl/Shader.js~Shader", @@ -138462,7 +138446,7 @@ } }, { - "__docId__": 7138, + "__docId__": 7129, "kind": "member", "name": "handle", "memberof": "src/viewer/scene/webgl/Shader.js~Shader", @@ -138479,7 +138463,7 @@ } }, { - "__docId__": 7139, + "__docId__": 7130, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/webgl/Shader.js~Shader", @@ -138496,7 +138480,7 @@ } }, { - "__docId__": 7144, + "__docId__": 7135, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/Shader.js~Shader", @@ -138512,7 +138496,7 @@ "return": null }, { - "__docId__": 7145, + "__docId__": 7136, "kind": "file", "name": "src/viewer/scene/webgl/Texture2D.js", "content": "import {utils} from '../utils.js';\nimport {webglEnums} from './webglEnums.js';\n\nfunction getGLEnum(gl, name, defaultVal) {\n if (name === undefined) {\n return defaultVal;\n }\n const glName = webglEnums[name];\n if (glName === undefined) {\n return defaultVal;\n }\n return gl[glName];\n}\n\nconst color = new Uint8Array([0, 0, 0, 1]);\n\nfunction clampImageSize(image, numPixels) {\n const n = image.width * image.height;\n if (n > numPixels) {\n const ratio = numPixels / n;\n const width = image.width * ratio;\n const height = image.height * ratio;\n const canvas = document.createElement(\"canvas\");\n canvas.width = nextHighestPowerOfTwo(width);\n canvas.height = nextHighestPowerOfTwo(height);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height);\n image = canvas;\n }\n return image;\n}\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 low-level component that represents a 2D WebGL texture.\n *\n * @private\n */\nclass Texture2D {\n\n constructor(gl, target) {\n this.gl = gl;\n this.target = target || gl.TEXTURE_2D;\n this.texture = gl.createTexture();\n this.setPreloadColor([0, 0, 0, 0]); // Prevents \"there is no texture bound to the unit 0\" error\n this.allocated = true;\n }\n\n setPreloadColor(value) {\n\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\n const gl = this.gl;\n\n gl.bindTexture(this.target, this.texture);\n gl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n\n if (this.target === gl.TEXTURE_CUBE_MAP) {\n\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\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\n } else {\n gl.texImage2D(this.target, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, color);\n }\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 const gl = this.gl;\n gl.bindTexture(this.target, this.texture);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, props.flipY);\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, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, images[i]);\n }\n }\n } else {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\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 if (props.minFilter) {\n const minFilter = getGLEnum(gl, props.minFilter);\n if (minFilter) {\n gl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, minFilter);\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\n gl.generateMipmap(this.target);\n }\n }\n }\n if (props.magFilter) {\n const magFilter = getGLEnum(gl, props.magFilter);\n if (magFilter) {\n gl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, magFilter);\n }\n }\n if (props.wrapS) {\n const wrapS = getGLEnum(gl, props.wrapS);\n if (wrapS) {\n gl.texParameteri(this.target, gl.TEXTURE_WRAP_S, wrapS);\n }\n }\n if (props.wrapT) {\n const wrapT = getGLEnum(gl, props.wrapT);\n if (wrapT) {\n gl.texParameteri(this.target, gl.TEXTURE_WRAP_T, wrapT);\n }\n }\n gl.bindTexture(this.target, null);\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\nexport {Texture2D};", @@ -138523,7 +138507,7 @@ "lineNumber": 1 }, { - "__docId__": 7146, + "__docId__": 7137, "kind": "function", "name": "getGLEnum", "memberof": "src/viewer/scene/webgl/Texture2D.js", @@ -138566,7 +138550,7 @@ "ignore": true }, { - "__docId__": 7147, + "__docId__": 7138, "kind": "variable", "name": "color", "memberof": "src/viewer/scene/webgl/Texture2D.js", @@ -138587,7 +138571,7 @@ "ignore": true }, { - "__docId__": 7148, + "__docId__": 7139, "kind": "function", "name": "clampImageSize", "memberof": "src/viewer/scene/webgl/Texture2D.js", @@ -138624,7 +138608,7 @@ "ignore": true }, { - "__docId__": 7149, + "__docId__": 7140, "kind": "function", "name": "ensureImageSizePowerOfTwo", "memberof": "src/viewer/scene/webgl/Texture2D.js", @@ -138655,7 +138639,7 @@ "ignore": true }, { - "__docId__": 7150, + "__docId__": 7141, "kind": "function", "name": "isPowerOfTwo", "memberof": "src/viewer/scene/webgl/Texture2D.js", @@ -138686,7 +138670,7 @@ "ignore": true }, { - "__docId__": 7151, + "__docId__": 7142, "kind": "function", "name": "nextHighestPowerOfTwo", "memberof": "src/viewer/scene/webgl/Texture2D.js", @@ -138717,7 +138701,7 @@ "ignore": true }, { - "__docId__": 7152, + "__docId__": 7143, "kind": "class", "name": "Texture2D", "memberof": "src/viewer/scene/webgl/Texture2D.js", @@ -138733,7 +138717,7 @@ "ignore": true }, { - "__docId__": 7153, + "__docId__": 7144, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -138747,7 +138731,7 @@ "undocument": true }, { - "__docId__": 7154, + "__docId__": 7145, "kind": "member", "name": "gl", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -138764,7 +138748,7 @@ } }, { - "__docId__": 7155, + "__docId__": 7146, "kind": "member", "name": "target", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -138781,7 +138765,7 @@ } }, { - "__docId__": 7156, + "__docId__": 7147, "kind": "member", "name": "texture", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -138798,7 +138782,7 @@ } }, { - "__docId__": 7157, + "__docId__": 7148, "kind": "member", "name": "allocated", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -138815,7 +138799,7 @@ } }, { - "__docId__": 7158, + "__docId__": 7149, "kind": "method", "name": "setPreloadColor", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -138838,7 +138822,7 @@ "return": null }, { - "__docId__": 7159, + "__docId__": 7150, "kind": "method", "name": "setTarget", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -138861,7 +138845,7 @@ "return": null }, { - "__docId__": 7161, + "__docId__": 7152, "kind": "method", "name": "setImage", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -138890,7 +138874,7 @@ "return": null }, { - "__docId__": 7162, + "__docId__": 7153, "kind": "method", "name": "setProps", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -138913,7 +138897,7 @@ "return": null }, { - "__docId__": 7163, + "__docId__": 7154, "kind": "method", "name": "bind", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -138940,7 +138924,7 @@ } }, { - "__docId__": 7164, + "__docId__": 7155, "kind": "method", "name": "unbind", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -138963,7 +138947,7 @@ "return": null }, { - "__docId__": 7165, + "__docId__": 7156, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/Texture2D.js~Texture2D", @@ -138979,7 +138963,7 @@ "return": null }, { - "__docId__": 7167, + "__docId__": 7158, "kind": "file", "name": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js", "content": "import {math} from \"../../math/math.js\";\nimport {ArrayBuf} from \"../ArrayBuf.js\";\n\nclass OcclusionLayer {\n\n constructor(scene, rtcCenter) {\n\n this.scene = scene;\n this.aabb = math.AABB3();\n this.rtcCenter = math.vec3(rtcCenter);\n this.rtcCenterHash = this.rtcCenter.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 rtcCenter = this.rtcCenter;\n aabb[0] += rtcCenter[0];\n aabb[1] += rtcCenter[1];\n aabb[2] += rtcCenter[2];\n aabb[3] += rtcCenter[0];\n aabb[4] += rtcCenter[1];\n aabb[5] += rtcCenter[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};", @@ -138990,7 +138974,7 @@ "lineNumber": 1 }, { - "__docId__": 7168, + "__docId__": 7159, "kind": "class", "name": "OcclusionLayer", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js", @@ -139006,7 +138990,7 @@ "interface": false }, { - "__docId__": 7169, + "__docId__": 7160, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139020,7 +139004,7 @@ "undocument": true }, { - "__docId__": 7170, + "__docId__": 7161, "kind": "member", "name": "scene", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139037,7 +139021,7 @@ } }, { - "__docId__": 7171, + "__docId__": 7162, "kind": "member", "name": "aabb", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139054,7 +139038,7 @@ } }, { - "__docId__": 7172, + "__docId__": 7163, "kind": "member", "name": "rtcCenter", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139071,7 +139055,7 @@ } }, { - "__docId__": 7173, + "__docId__": 7164, "kind": "member", "name": "rtcCenterHash", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139088,7 +139072,7 @@ } }, { - "__docId__": 7174, + "__docId__": 7165, "kind": "member", "name": "numMarkers", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139105,7 +139089,7 @@ } }, { - "__docId__": 7175, + "__docId__": 7166, "kind": "member", "name": "markers", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139122,7 +139106,7 @@ } }, { - "__docId__": 7176, + "__docId__": 7167, "kind": "member", "name": "markerList", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139139,7 +139123,7 @@ } }, { - "__docId__": 7177, + "__docId__": 7168, "kind": "member", "name": "markerIndices", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139156,7 +139140,7 @@ } }, { - "__docId__": 7178, + "__docId__": 7169, "kind": "member", "name": "positions", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139173,7 +139157,7 @@ } }, { - "__docId__": 7179, + "__docId__": 7170, "kind": "member", "name": "indices", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139190,7 +139174,7 @@ } }, { - "__docId__": 7180, + "__docId__": 7171, "kind": "member", "name": "positionsBuf", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139207,7 +139191,7 @@ } }, { - "__docId__": 7181, + "__docId__": 7172, "kind": "member", "name": "lenPositionsBuf", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139224,7 +139208,7 @@ } }, { - "__docId__": 7182, + "__docId__": 7173, "kind": "member", "name": "indicesBuf", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139241,7 +139225,7 @@ } }, { - "__docId__": 7183, + "__docId__": 7174, "kind": "member", "name": "sectionPlanesActive", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139258,7 +139242,7 @@ } }, { - "__docId__": 7184, + "__docId__": 7175, "kind": "member", "name": "culledBySectionPlanes", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139275,7 +139259,7 @@ } }, { - "__docId__": 7185, + "__docId__": 7176, "kind": "member", "name": "occlusionTestList", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139292,7 +139276,7 @@ } }, { - "__docId__": 7186, + "__docId__": 7177, "kind": "member", "name": "lenOcclusionTestList", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139309,7 +139293,7 @@ } }, { - "__docId__": 7187, + "__docId__": 7178, "kind": "member", "name": "pixels", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139326,7 +139310,7 @@ } }, { - "__docId__": 7188, + "__docId__": 7179, "kind": "member", "name": "aabbDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139343,7 +139327,7 @@ } }, { - "__docId__": 7189, + "__docId__": 7180, "kind": "member", "name": "markerListDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139360,7 +139344,7 @@ } }, { - "__docId__": 7190, + "__docId__": 7181, "kind": "member", "name": "positionsDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139377,7 +139361,7 @@ } }, { - "__docId__": 7191, + "__docId__": 7182, "kind": "member", "name": "occlusionTestListDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139394,7 +139378,7 @@ } }, { - "__docId__": 7192, + "__docId__": 7183, "kind": "method", "name": "addMarker", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139417,7 +139401,7 @@ "return": null }, { - "__docId__": 7194, + "__docId__": 7185, "kind": "method", "name": "markerWorldPosUpdated", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139440,7 +139424,7 @@ "return": null }, { - "__docId__": 7196, + "__docId__": 7187, "kind": "method", "name": "removeMarker", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139463,7 +139447,7 @@ "return": null }, { - "__docId__": 7198, + "__docId__": 7189, "kind": "method", "name": "update", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139479,7 +139463,7 @@ "return": null }, { - "__docId__": 7204, + "__docId__": 7195, "kind": "member", "name": "vbosDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139496,7 +139480,7 @@ } }, { - "__docId__": 7207, + "__docId__": 7198, "kind": "method", "name": "_buildMarkerList", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139513,7 +139497,7 @@ "return": null }, { - "__docId__": 7209, + "__docId__": 7200, "kind": "method", "name": "_buildPositions", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139530,7 +139514,7 @@ "return": null }, { - "__docId__": 7210, + "__docId__": 7201, "kind": "method", "name": "_buildAABB", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139547,7 +139531,7 @@ "return": null }, { - "__docId__": 7211, + "__docId__": 7202, "kind": "method", "name": "_buildVBOs", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139564,7 +139548,7 @@ "return": null }, { - "__docId__": 7217, + "__docId__": 7208, "kind": "method", "name": "_buildOcclusionTestList", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139581,7 +139565,7 @@ "return": null }, { - "__docId__": 7219, + "__docId__": 7210, "kind": "method", "name": "_updateActiveSectionPlanes", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139598,7 +139582,7 @@ "return": null }, { - "__docId__": 7222, + "__docId__": 7213, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionLayer.js~OcclusionLayer", @@ -139614,7 +139598,7 @@ "return": null }, { - "__docId__": 7224, + "__docId__": 7215, "kind": "file", "name": "src/viewer/scene/webgl/occlusion/OcclusionTester.js", "content": "import {math} from '../../math/math.js';\nimport {Program} from \"./../Program.js\";\nimport {RenderBuffer} from \"./../RenderBuffer.js\";\nimport {OcclusionLayer} from \"./OcclusionLayer.js\";\nimport {createRTCViewMat, getPlaneRTCPos, worldToRTCPos} 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;\n\nconst tempVec3a = math.vec3();\n\n/**\n * Manages occlusion testing. Private member of a Renderer.\n */\nclass OcclusionTester {\n\n constructor(scene) {\n\n this._scene = scene;\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 rtcCenterHash = marker.rtcCenter.join();\n let occlusionLayer = this._occlusionLayers[rtcCenterHash];\n if (!occlusionLayer) {\n occlusionLayer = new OcclusionLayer(this._scene, marker.rtcCenter);\n this._occlusionLayers[occlusionLayer.rtcCenterHash] = 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 rtcCenterHash = marker.rtcCenter.join();\n if (rtcCenterHash !== occlusionLayer.rtcCenterHash) {\n if (occlusionLayer.numMarkers === 1) {\n occlusionLayer.destroy();\n delete this._occlusionLayers[occlusionLayer.rtcCenterHash];\n this._occlusionLayersListDirty = true;\n } else {\n occlusionLayer.removeMarker(marker);\n }\n let newOcclusionLayer = this._occlusionLayers[rtcCenterHash];\n if (!newOcclusionLayer) {\n newOcclusionLayer = new OcclusionLayer(this._scene, marker.rtcCenter);\n this._occlusionLayers[rtcCenterHash] = 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 rtcCenterHash = marker.rtcCenter.join();\n let occlusionLayer = this._occlusionLayers[rtcCenterHash];\n if (!occlusionLayer) {\n return;\n }\n if (occlusionLayer.numMarkers === 1) {\n occlusionLayer.destroy();\n delete this._occlusionLayers[occlusionLayer.rtcCenterHash];\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._readPixelBuf || (this._readPixelBuf = new RenderBuffer(this._scene.canvas.canvas, this._scene.canvas.gl));\n this._readPixelBuf.bind();\n this._readPixelBuf.clear();\n }\n }\n\n _buildOcclusionLayersList() {\n let numOcclusionLayers = 0;\n for (let rtcCenterHash in this._occlusionLayers) {\n if (this._occlusionLayers.hasOwnProperty(rtcCenterHash)) {\n this._occlusionLayersList[numOcclusionLayers++] = this._occlusionLayers[rtcCenterHash];\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(\"// OcclusionTester 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(\"attribute 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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying 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_Position = clipPos;\");\n src.push(\" gl_PointSize = \" + POINT_SIZE + \".0;\");\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 }\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(\"// OcclusionTester fragment 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(\"#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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying 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(\"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 && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = 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 if (WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"] && scene.logarithmicDepthBufferEnabled) {\n gl.getExtension('EXT_frag_depth');\n }\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 rtcCenter = occlusionLayer.rtcCenter;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, createRTCViewMat(camera.viewMatrix, rtcCenter));\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 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, rtcCenter, tempVec3a));\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\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 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(occlusionLayer.pixels[j], occlusionLayer.pixels[j + 1]);\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};", @@ -139625,7 +139609,7 @@ "lineNumber": 1 }, { - "__docId__": 7225, + "__docId__": 7216, "kind": "variable", "name": "TEST_MODE", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js", @@ -139646,7 +139630,7 @@ "ignore": true }, { - "__docId__": 7226, + "__docId__": 7217, "kind": "variable", "name": "MARKER_COLOR", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js", @@ -139667,7 +139651,7 @@ "ignore": true }, { - "__docId__": 7227, + "__docId__": 7218, "kind": "variable", "name": "POINT_SIZE", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js", @@ -139688,7 +139672,7 @@ "ignore": true }, { - "__docId__": 7228, + "__docId__": 7219, "kind": "variable", "name": "tempVec3a", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js", @@ -139709,7 +139693,7 @@ "ignore": true }, { - "__docId__": 7229, + "__docId__": 7220, "kind": "class", "name": "OcclusionTester", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js", @@ -139724,7 +139708,7 @@ "interface": false }, { - "__docId__": 7230, + "__docId__": 7221, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139738,7 +139722,7 @@ "undocument": true }, { - "__docId__": 7231, + "__docId__": 7222, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139756,7 +139740,7 @@ } }, { - "__docId__": 7232, + "__docId__": 7223, "kind": "member", "name": "_occlusionLayers", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139774,7 +139758,7 @@ } }, { - "__docId__": 7233, + "__docId__": 7224, "kind": "member", "name": "_occlusionLayersList", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139792,7 +139776,7 @@ } }, { - "__docId__": 7234, + "__docId__": 7225, "kind": "member", "name": "_occlusionLayersListDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139810,7 +139794,7 @@ } }, { - "__docId__": 7235, + "__docId__": 7226, "kind": "member", "name": "_shaderSource", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139828,7 +139812,7 @@ } }, { - "__docId__": 7236, + "__docId__": 7227, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139846,7 +139830,7 @@ } }, { - "__docId__": 7237, + "__docId__": 7228, "kind": "member", "name": "_shaderSourceHash", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139864,7 +139848,7 @@ } }, { - "__docId__": 7238, + "__docId__": 7229, "kind": "member", "name": "_shaderSourceDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139882,7 +139866,7 @@ } }, { - "__docId__": 7239, + "__docId__": 7230, "kind": "member", "name": "_programDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139900,7 +139884,7 @@ } }, { - "__docId__": 7240, + "__docId__": 7231, "kind": "member", "name": "_markersToOcclusionLayersMap", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139918,7 +139902,7 @@ } }, { - "__docId__": 7241, + "__docId__": 7232, "kind": "member", "name": "_onCameraViewMatrix", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139936,7 +139920,7 @@ } }, { - "__docId__": 7242, + "__docId__": 7233, "kind": "member", "name": "_occlusionTestListDirty", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139954,7 +139938,7 @@ } }, { - "__docId__": 7243, + "__docId__": 7234, "kind": "member", "name": "_onCameraProjMatrix", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139972,7 +139956,7 @@ } }, { - "__docId__": 7245, + "__docId__": 7236, "kind": "member", "name": "_onCanvasBoundary", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -139990,7 +139974,7 @@ } }, { - "__docId__": 7247, + "__docId__": 7238, "kind": "method", "name": "addMarker", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140016,7 +140000,7 @@ "return": null }, { - "__docId__": 7250, + "__docId__": 7241, "kind": "method", "name": "markerWorldPosUpdated", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140042,7 +140026,7 @@ "return": null }, { - "__docId__": 7253, + "__docId__": 7244, "kind": "method", "name": "removeMarker", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140068,7 +140052,7 @@ "return": null }, { - "__docId__": 7255, + "__docId__": 7246, "kind": "get", "name": "needOcclusionTest", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140100,7 +140084,7 @@ } }, { - "__docId__": 7256, + "__docId__": 7247, "kind": "method", "name": "bindRenderBuf", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140115,7 +140099,7 @@ "return": null }, { - "__docId__": 7265, + "__docId__": 7256, "kind": "member", "name": "_readPixelBuf", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140133,7 +140117,7 @@ } }, { - "__docId__": 7266, + "__docId__": 7257, "kind": "method", "name": "_buildOcclusionLayersList", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140150,7 +140134,7 @@ "return": null }, { - "__docId__": 7267, + "__docId__": 7258, "kind": "method", "name": "_buildShaderSource", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140167,7 +140151,7 @@ "return": null }, { - "__docId__": 7269, + "__docId__": 7260, "kind": "method", "name": "_buildVertexShaderSource", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140188,7 +140172,7 @@ } }, { - "__docId__": 7270, + "__docId__": 7261, "kind": "method", "name": "_buildFragmentShaderSource", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140209,7 +140193,7 @@ } }, { - "__docId__": 7271, + "__docId__": 7262, "kind": "method", "name": "_buildProgram", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140226,7 +140210,7 @@ "return": null }, { - "__docId__": 7273, + "__docId__": 7264, "kind": "member", "name": "errors", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140243,7 +140227,7 @@ } }, { - "__docId__": 7274, + "__docId__": 7265, "kind": "member", "name": "_uViewMatrix", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140261,7 +140245,7 @@ } }, { - "__docId__": 7275, + "__docId__": 7266, "kind": "member", "name": "_uProjMatrix", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140279,7 +140263,7 @@ } }, { - "__docId__": 7276, + "__docId__": 7267, "kind": "member", "name": "_uSectionPlanes", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140297,7 +140281,7 @@ } }, { - "__docId__": 7277, + "__docId__": 7268, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140315,7 +140299,7 @@ } }, { - "__docId__": 7278, + "__docId__": 7269, "kind": "member", "name": "_uLogDepthBufFC", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140333,7 +140317,7 @@ } }, { - "__docId__": 7279, + "__docId__": 7270, "kind": "method", "name": "drawMarkers", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140348,7 +140332,7 @@ "return": null }, { - "__docId__": 7280, + "__docId__": 7271, "kind": "method", "name": "doOcclusionTest", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140363,7 +140347,7 @@ "return": null }, { - "__docId__": 7281, + "__docId__": 7272, "kind": "method", "name": "unbindRenderBuf", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140378,7 +140362,7 @@ "return": null }, { - "__docId__": 7282, + "__docId__": 7273, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140393,7 +140377,7 @@ "return": null }, { - "__docId__": 7283, + "__docId__": 7274, "kind": "member", "name": "destroyed", "memberof": "src/viewer/scene/webgl/occlusion/OcclusionTester.js~OcclusionTester", @@ -140410,7 +140394,7 @@ } }, { - "__docId__": 7284, + "__docId__": 7275, "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\";\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 this._uScale = null;\n this._uIntensity = null;\n this._uBias = null;\n this._uKernelRadius = null;\n this._uMinResolution = 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 `#ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n precision highp int;\n #else\n precision mediump float;\n precision mediump int;\n #endif\n \n attribute vec3 aPosition;\n attribute vec2 aUV;\n uniform vec2 uViewport;\n varying vec2 vUV;\n varying 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 `#ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n precision highp int;\n #else\n precision mediump float;\n precision mediump int;\n #endif\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 varying vec2 vUV;\n varying 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( v, 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 \treturn unpackRGBAToFloat( texture2D( uDepthTexture, screenPosition ) );\n }\n\n float getViewZ( const in float depth ) {\n return perspectiveDepthToViewZ( depth );\n }\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(texture2D( 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(texture2D( 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(texture2D( uOcclusionTexture, sampleUV )) * sampleWeight;\n weightSum += sampleWeight;\n }\n }\n\n gl_FragColor = packFloatToRGBA(occlusionSum / weightSum);\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 const indices = new Uint8Array([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(depthTexture, occlusionTexture, 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 program.bindTexture(this._uDepthTexture, depthTexture, 0);\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};", @@ -140421,7 +140405,7 @@ "lineNumber": 1 }, { - "__docId__": 7285, + "__docId__": 7276, "kind": "variable", "name": "blurStdDev", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -140442,7 +140426,7 @@ "ignore": true }, { - "__docId__": 7286, + "__docId__": 7277, "kind": "variable", "name": "blurDepthCutoff", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -140463,7 +140447,7 @@ "ignore": true }, { - "__docId__": 7287, + "__docId__": 7278, "kind": "variable", "name": "KERNEL_RADIUS", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -140484,7 +140468,7 @@ "ignore": true }, { - "__docId__": 7288, + "__docId__": 7279, "kind": "variable", "name": "sampleOffsetsVert", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -140505,7 +140489,7 @@ "ignore": true }, { - "__docId__": 7289, + "__docId__": 7280, "kind": "variable", "name": "sampleOffsetsHor", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -140526,7 +140510,7 @@ "ignore": true }, { - "__docId__": 7290, + "__docId__": 7281, "kind": "variable", "name": "sampleWeights", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -140547,7 +140531,7 @@ "ignore": true }, { - "__docId__": 7291, + "__docId__": 7282, "kind": "variable", "name": "tempVec2a", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -140568,7 +140552,7 @@ "ignore": true }, { - "__docId__": 7292, + "__docId__": 7283, "kind": "function", "name": "createSampleWeights", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -140605,7 +140589,7 @@ "ignore": true }, { - "__docId__": 7293, + "__docId__": 7284, "kind": "function", "name": "gaussian", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -140642,7 +140626,7 @@ "ignore": true }, { - "__docId__": 7294, + "__docId__": 7285, "kind": "function", "name": "createSampleOffsets", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -140679,7 +140663,7 @@ "ignore": true }, { - "__docId__": 7295, + "__docId__": 7286, "kind": "class", "name": "SAODepthLimitedBlurRenderer", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js", @@ -140695,7 +140679,7 @@ "ignore": true }, { - "__docId__": 7296, + "__docId__": 7287, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140709,7 +140693,7 @@ "undocument": true }, { - "__docId__": 7297, + "__docId__": 7288, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140727,7 +140711,7 @@ } }, { - "__docId__": 7298, + "__docId__": 7289, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140745,7 +140729,7 @@ } }, { - "__docId__": 7299, + "__docId__": 7290, "kind": "member", "name": "_programError", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140763,7 +140747,7 @@ } }, { - "__docId__": 7300, + "__docId__": 7291, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140781,7 +140765,7 @@ } }, { - "__docId__": 7301, + "__docId__": 7292, "kind": "member", "name": "_aUV", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140799,7 +140783,7 @@ } }, { - "__docId__": 7302, + "__docId__": 7293, "kind": "member", "name": "_uDepthTexture", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140817,7 +140801,7 @@ } }, { - "__docId__": 7303, + "__docId__": 7294, "kind": "member", "name": "_uOcclusionTexture", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140835,7 +140819,7 @@ } }, { - "__docId__": 7304, + "__docId__": 7295, "kind": "member", "name": "_uViewport", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140853,7 +140837,7 @@ } }, { - "__docId__": 7305, + "__docId__": 7296, "kind": "member", "name": "_uCameraNear", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140871,7 +140855,7 @@ } }, { - "__docId__": 7306, + "__docId__": 7297, "kind": "member", "name": "_uCameraFar", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140889,7 +140873,7 @@ } }, { - "__docId__": 7307, + "__docId__": 7298, "kind": "member", "name": "_uCameraProjectionMatrix", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140907,7 +140891,7 @@ } }, { - "__docId__": 7308, + "__docId__": 7299, "kind": "member", "name": "_uCameraInverseProjectionMatrix", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140925,7 +140909,7 @@ } }, { - "__docId__": 7309, + "__docId__": 7300, "kind": "member", "name": "_uScale", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140943,7 +140927,7 @@ } }, { - "__docId__": 7310, + "__docId__": 7301, "kind": "member", "name": "_uIntensity", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140961,7 +140945,7 @@ } }, { - "__docId__": 7311, + "__docId__": 7302, "kind": "member", "name": "_uBias", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140979,7 +140963,7 @@ } }, { - "__docId__": 7312, + "__docId__": 7303, "kind": "member", "name": "_uKernelRadius", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -140997,7 +140981,7 @@ } }, { - "__docId__": 7313, + "__docId__": 7304, "kind": "member", "name": "_uMinResolution", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -141015,7 +140999,7 @@ } }, { - "__docId__": 7314, + "__docId__": 7305, "kind": "member", "name": "_uvBuf", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -141033,7 +141017,7 @@ } }, { - "__docId__": 7315, + "__docId__": 7306, "kind": "member", "name": "_positionsBuf", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -141051,7 +141035,7 @@ } }, { - "__docId__": 7316, + "__docId__": 7307, "kind": "member", "name": "_indicesBuf", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -141069,7 +141053,7 @@ } }, { - "__docId__": 7317, + "__docId__": 7308, "kind": "method", "name": "init", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -141085,7 +141069,7 @@ "return": null }, { - "__docId__": 7326, + "__docId__": 7317, "kind": "member", "name": "_uDepthCutoff", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -141103,7 +141087,7 @@ } }, { - "__docId__": 7327, + "__docId__": 7318, "kind": "member", "name": "_uSampleOffsets", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -141121,7 +141105,7 @@ } }, { - "__docId__": 7328, + "__docId__": 7319, "kind": "member", "name": "_uSampleWeights", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -141139,7 +141123,7 @@ } }, { - "__docId__": 7331, + "__docId__": 7322, "kind": "method", "name": "render", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -141174,7 +141158,7 @@ "return": null }, { - "__docId__": 7332, + "__docId__": 7323, "kind": "member", "name": "_getInverseProjectMat", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -141192,7 +141176,7 @@ } }, { - "__docId__": 7333, + "__docId__": 7324, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js~SAODepthLimitedBlurRenderer", @@ -141208,7 +141192,7 @@ "return": null }, { - "__docId__": 7334, + "__docId__": 7325, "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\";\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(depthTexture) {\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.getExtension(\"OES_standard_derivatives\");\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 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: [`#ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n precision highp int;\n #else\n precision mediump float;\n precision mediump int;\n #endif\n \n attribute vec3 aPosition;\n attribute vec2 aUV; \n \n varying vec2 vUV;\n \n void main () {\n gl_Position = vec4(aPosition, 1.0);\n vUV = aUV;\n }`],\n\n fragment: [\n `#extension GL_OES_standard_derivatives : require\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n precision highp int;\n #else\n precision mediump float;\n precision mediump int;\n #endif \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 varying 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( v, 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 screenPos ) {\n \treturn unpackRGBAToFloat( texture2D( uDepthTexture, screenPos ) );\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 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 \tgl_FragColor = 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 const indices = new Uint8Array([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};", @@ -141219,7 +141203,7 @@ "lineNumber": 1 }, { - "__docId__": 7335, + "__docId__": 7326, "kind": "variable", "name": "tempVec2", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js", @@ -141240,7 +141224,7 @@ "ignore": true }, { - "__docId__": 7336, + "__docId__": 7327, "kind": "class", "name": "SAOOcclusionRenderer", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js", @@ -141256,7 +141240,7 @@ "ignore": true }, { - "__docId__": 7337, + "__docId__": 7328, "kind": "constructor", "name": "constructor", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141270,7 +141254,7 @@ "undocument": true }, { - "__docId__": 7338, + "__docId__": 7329, "kind": "member", "name": "_scene", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141288,7 +141272,7 @@ } }, { - "__docId__": 7339, + "__docId__": 7330, "kind": "member", "name": "_numSamples", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141306,7 +141290,7 @@ } }, { - "__docId__": 7340, + "__docId__": 7331, "kind": "member", "name": "_program", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141324,7 +141308,7 @@ } }, { - "__docId__": 7341, + "__docId__": 7332, "kind": "member", "name": "_programError", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141342,7 +141326,7 @@ } }, { - "__docId__": 7342, + "__docId__": 7333, "kind": "member", "name": "_aPosition", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141360,7 +141344,7 @@ } }, { - "__docId__": 7343, + "__docId__": 7334, "kind": "member", "name": "_aUV", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141378,7 +141362,7 @@ } }, { - "__docId__": 7344, + "__docId__": 7335, "kind": "member", "name": "_uDepthTexture", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141396,7 +141380,7 @@ } }, { - "__docId__": 7345, + "__docId__": 7336, "kind": "member", "name": "_uCameraNear", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141414,7 +141398,7 @@ } }, { - "__docId__": 7346, + "__docId__": 7337, "kind": "member", "name": "_uCameraFar", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141432,7 +141416,7 @@ } }, { - "__docId__": 7347, + "__docId__": 7338, "kind": "member", "name": "_uCameraProjectionMatrix", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141450,7 +141434,7 @@ } }, { - "__docId__": 7348, + "__docId__": 7339, "kind": "member", "name": "_uCameraInverseProjectionMatrix", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141468,7 +141452,7 @@ } }, { - "__docId__": 7349, + "__docId__": 7340, "kind": "member", "name": "_uScale", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141486,7 +141470,7 @@ } }, { - "__docId__": 7350, + "__docId__": 7341, "kind": "member", "name": "_uIntensity", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141504,7 +141488,7 @@ } }, { - "__docId__": 7351, + "__docId__": 7342, "kind": "member", "name": "_uBias", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141522,7 +141506,7 @@ } }, { - "__docId__": 7352, + "__docId__": 7343, "kind": "member", "name": "_uKernelRadius", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141540,7 +141524,7 @@ } }, { - "__docId__": 7353, + "__docId__": 7344, "kind": "member", "name": "_uMinResolution", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141558,7 +141542,7 @@ } }, { - "__docId__": 7354, + "__docId__": 7345, "kind": "member", "name": "_uRandomSeed", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141576,7 +141560,7 @@ } }, { - "__docId__": 7355, + "__docId__": 7346, "kind": "member", "name": "_uvBuf", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141594,7 +141578,7 @@ } }, { - "__docId__": 7356, + "__docId__": 7347, "kind": "member", "name": "_positionsBuf", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141612,7 +141596,7 @@ } }, { - "__docId__": 7357, + "__docId__": 7348, "kind": "member", "name": "_indicesBuf", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141630,7 +141614,7 @@ } }, { - "__docId__": 7358, + "__docId__": 7349, "kind": "method", "name": "render", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141653,7 +141637,7 @@ "return": null }, { - "__docId__": 7359, + "__docId__": 7350, "kind": "member", "name": "_getInverseProjectMat", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141671,7 +141655,7 @@ } }, { - "__docId__": 7360, + "__docId__": 7351, "kind": "method", "name": "_build", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141688,7 +141672,7 @@ "return": null }, { - "__docId__": 7372, + "__docId__": 7363, "kind": "member", "name": "_uPerspective", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141706,7 +141690,7 @@ } }, { - "__docId__": 7378, + "__docId__": 7369, "kind": "member", "name": "_uViewport", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141724,7 +141708,7 @@ } }, { - "__docId__": 7382, + "__docId__": 7373, "kind": "member", "name": "_dirty", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141742,7 +141726,7 @@ } }, { - "__docId__": 7383, + "__docId__": 7374, "kind": "method", "name": "destroy", "memberof": "src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js~SAOOcclusionRenderer", @@ -141758,7 +141742,7 @@ "return": null }, { - "__docId__": 7385, + "__docId__": 7376, "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};", @@ -141769,7 +141753,7 @@ "lineNumber": 1 }, { - "__docId__": 7386, + "__docId__": 7377, "kind": "variable", "name": "webglEnums", "memberof": "src/viewer/scene/webgl/webglEnums.js", @@ -141789,7 +141773,7 @@ } }, { - "__docId__": 7387, + "__docId__": 7378, "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 WEBGL_INFO.depthTexturesSupported = WEBGL_INFO.SUPPORTED_EXTENSIONS[\"WEBGL_depth_texture\"];\n }\n}\n\nexport {WEBGL_INFO};", @@ -141800,7 +141784,7 @@ "lineNumber": 1 }, { - "__docId__": 7388, + "__docId__": 7379, "kind": "variable", "name": "canvas", "memberof": "src/viewer/scene/webglInfo.js", @@ -141821,7 +141805,7 @@ "ignore": true }, { - "__docId__": 7389, + "__docId__": 7380, "kind": "variable", "name": "WEBGL_INFO", "memberof": "src/viewer/scene/webglInfo.js", @@ -141853,7 +141837,7 @@ }, { "kind": "packageJSON", - "content": "{\n \"name\": \"@xeokit/xeokit-sdk\",\n \"version\": \"1.8.0-alpha.3\",\n \"description\": \"Web Programming Toolkit for 3D/2D BIM and AEC Graphics\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"percy exec -- node ./snapshots.js\",\n \"docs\": \"./node_modules/.bin/esdoc\",\n \"publish\": \"npm publish --access public\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/xeokit/xeokit-sdk.git\"\n },\n \"keywords\": [\n \"webgl\",\n \"javascript\",\n \"xeokit\",\n \"xeolabs\",\n \"ifc\",\n \"bim\",\n \"cad\",\n \"buildingsmart\",\n \"openbim\",\n \"opensource\",\n \"solidworks\",\n \"gltf\",\n \"3dxml\",\n \"obj\",\n \"stl\",\n \"3d-viewer\"\n ],\n \"author\": \"Lindsay Kay\",\n \"license\": \"See LICENSE.txt\",\n \"bugs\": {\n \"url\": \"https://github.com/xeokit/xeokit-sdk/issues\"\n },\n \"homepage\": \"https://xeokit.io\",\n \"devDependencies\": {\n \"@percy/script\": \"^1.1.0\",\n \"http-server\": \"^0.12.3\",\n \"esdoc\": \"^1.1.0\",\n \"esdoc-standard-plugin\": \"^1.0.0\",\n \"eslint\": \"^5.16.0\"\n },\n \"files\": [\n \"/src\"\n ]\n}\n", + "content": "{\n \"name\": \"@xeokit/xeokit-sdk\",\n \"version\": \"1.8.2\",\n \"description\": \"Web Programming Toolkit for 3D/2D BIM and AEC Graphics\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"percy exec -- node ./snapshots.js\",\n \"docs\": \"./node_modules/.bin/esdoc\",\n \"publish\": \"npm publish --access public\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/xeokit/xeokit-sdk.git\"\n },\n \"keywords\": [\n \"webgl\",\n \"javascript\",\n \"xeokit\",\n \"xeolabs\",\n \"ifc\",\n \"bim\",\n \"cad\",\n \"buildingsmart\",\n \"openbim\",\n \"opensource\",\n \"solidworks\",\n \"gltf\",\n \"3dxml\",\n \"obj\",\n \"stl\",\n \"3d-viewer\"\n ],\n \"author\": \"Lindsay Kay\",\n \"license\": \"See LICENSE.txt\",\n \"bugs\": {\n \"url\": \"https://github.com/xeokit/xeokit-sdk/issues\"\n },\n \"homepage\": \"https://xeokit.io\",\n \"devDependencies\": {\n \"@percy/script\": \"^1.1.0\",\n \"esdoc\": \"^1.1.0\",\n \"esdoc-custom-theme\": \"^1.4.2\",\n \"esdoc-publish-html-plugin\": \"^1.1.2\",\n \"esdoc-standard-plugin\": \"^1.0.0\",\n \"eslint\": \"^5.16.0\",\n \"http-server\": \"^0.12.3\"\n },\n \"files\": [\n \"/src\"\n ]\n}\n", "longname": "/home/lindsay/xeolabs/xeokit/xeokit-nov-18/xeokit-sdk/package.json", "name": "package.json", "static": true, diff --git a/docs/script/search_index.js b/docs/script/search_index.js index 8ca3559cda..ba6b57f14c 100644 --- a/docs/script/search_index.js +++ b/docs/script/search_index.js @@ -203,12 +203,6 @@ window.esdocSearchIndex = [ "Geometry @xeokit/xeokit-sdk/src/viewer/scene/geometry/Geometry.js", "class" ], - [ - "@xeokit/xeokit-sdk/src/plugins/groundshadowplugin/groundshadowplugin.js~groundshadowplugin", - "class/src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin.html", - "GroundShadowPlugin @xeokit/xeokit-sdk/src/plugins/GroundShadowPlugin/GroundShadowPlugin.js", - "class" - ], [ "@xeokit/xeokit-sdk/src/viewer/metadata/ifcobjectdefaultcolors.js~ifcobjectdefaultcolors", "variable/index.html#static-variable-IFCObjectDefaultColors", @@ -317,12 +311,6 @@ window.esdocSearchIndex = [ "Metrics @xeokit/xeokit-sdk/src/viewer/scene/metriqs/Metriqs.js", "class" ], - [ - "@xeokit/xeokit-sdk/src/plugins/groundshadowplugin/modelgroundshadow.js~modelgroundshadow", - "class/src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow.html", - "ModelGroundShadow @xeokit/xeokit-sdk/src/plugins/GroundShadowPlugin/ModelGroundShadow.js", - "class" - ], [ "@xeokit/xeokit-sdk/src/viewer/scene/mementos/modelmemento.js~modelmemento", "class/src/viewer/scene/mementos/ModelMemento.js~ModelMemento.html", @@ -1757,6 +1745,42 @@ window.esdocSearchIndex = [ "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#destroy", "method" ], + [ + "src/plugins/fastnavplugin/fastnavplugin.js~fastnavplugin#edgesenabled", + "class/src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin.html#instance-set-edgesEnabled", + "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#edgesEnabled", + "member" + ], + [ + "src/plugins/fastnavplugin/fastnavplugin.js~fastnavplugin#edgesenabled", + "class/src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin.html#instance-get-edgesEnabled", + "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#edgesEnabled", + "member" + ], + [ + "src/plugins/fastnavplugin/fastnavplugin.js~fastnavplugin#pbrenabled", + "class/src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin.html#instance-set-pbrEnabled", + "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#pbrEnabled", + "member" + ], + [ + "src/plugins/fastnavplugin/fastnavplugin.js~fastnavplugin#pbrenabled", + "class/src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin.html#instance-get-pbrEnabled", + "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#pbrEnabled", + "member" + ], + [ + "src/plugins/fastnavplugin/fastnavplugin.js~fastnavplugin#saoenabled", + "class/src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin.html#instance-set-saoEnabled", + "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#saoEnabled", + "member" + ], + [ + "src/plugins/fastnavplugin/fastnavplugin.js~fastnavplugin#saoenabled", + "class/src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin.html#instance-get-saoEnabled", + "src/plugins/FastNavPlugin/FastNavPlugin.js~FastNavPlugin#saoEnabled", + "member" + ], [ "src/plugins/gltfloaderplugin/gltfdefaultdatasource.js", "file/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js.html", @@ -1847,54 +1871,6 @@ window.esdocSearchIndex = [ "src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js", "file" ], - [ - "src/plugins/groundshadowplugin/groundshadowplugin.js", - "file/src/plugins/GroundShadowPlugin/GroundShadowPlugin.js.html", - "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js", - "file" - ], - [ - "src/plugins/groundshadowplugin/groundshadowplugin.js~groundshadowplugin#constructor", - "class/src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin.html#instance-constructor-constructor", - "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin#constructor", - "method" - ], - [ - "src/plugins/groundshadowplugin/groundshadowplugin.js~groundshadowplugin#destroy", - "class/src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin.html#instance-method-destroy", - "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin#destroy", - "method" - ], - [ - "src/plugins/groundshadowplugin/groundshadowplugin.js~groundshadowplugin#groundshadows", - "class/src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin.html#instance-member-groundShadows", - "src/plugins/GroundShadowPlugin/GroundShadowPlugin.js~GroundShadowPlugin#groundShadows", - "member" - ], - [ - "src/plugins/groundshadowplugin/modelgroundshadow.js", - "file/src/plugins/GroundShadowPlugin/ModelGroundShadow.js.html", - "src/plugins/GroundShadowPlugin/ModelGroundShadow.js", - "file" - ], - [ - "src/plugins/groundshadowplugin/modelgroundshadow.js~modelgroundshadow#constructor", - "class/src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow.html#instance-constructor-constructor", - "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow#constructor", - "method" - ], - [ - "src/plugins/groundshadowplugin/modelgroundshadow.js~modelgroundshadow#destroy", - "class/src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow.html#instance-method-destroy", - "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow#destroy", - "method" - ], - [ - "src/plugins/groundshadowplugin/modelgroundshadow.js~modelgroundshadow#image", - "class/src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow.html#instance-set-image", - "src/plugins/GroundShadowPlugin/ModelGroundShadow.js~ModelGroundShadow#image", - "member" - ], [ "src/plugins/navcubeplugin/cubetexturecanvas.js", "file/src/plugins/NavCubePlugin/CubeTextureCanvas.js.html", diff --git a/docs/source.html b/docs/source.html index 202c3ebdcb..ec1064d34a 100644 --- a/docs/source.html +++ b/docs/source.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • @@ -162,7 +160,7 @@ -

    Source 2185/5822

    +

    Source 2192/5831

    summary
    - public - - - - - -
    -

    - C - - - GroundShadowPlugin -

    -
    -
    - - -

    A Viewer plugin that provides methods for visualizing IfcBuildingStoreys.

    -
    -
    -
    - - -
    - public - - - - - -
    -

    - C - - - ModelGroundShadow -

    -
    -
    - - - -
    -
    - -
    @@ -199,15 +197,15 @@ - + - + - + @@ -266,12 +264,12 @@ - + - - - - + + + + @@ -305,22 +303,6 @@ - - - - - - - - - - - - - - - - @@ -407,7 +389,7 @@ - + @@ -450,12 +432,12 @@ - + - - - + + + @@ -631,9 +613,9 @@ - + - + @@ -676,20 +658,20 @@ - + - - - + + + - + - - - + + + @@ -740,20 +722,20 @@ - + - - - - + + + + - + - + @@ -1003,9 +985,9 @@ - + - + @@ -1085,7 +1067,7 @@ - + @@ -1099,9 +1081,9 @@ - + - + @@ -1109,7 +1091,7 @@ - + @@ -1211,9 +1193,9 @@ - + - + @@ -1373,7 +1355,7 @@ - + @@ -1936,7 +1918,7 @@ - + @@ -2064,7 +2046,7 @@ - + @@ -2088,7 +2070,7 @@ - + diff --git a/docs/variable/index.html b/docs/variable/index.html index 9282a3381b..dd455047c3 100644 --- a/docs/variable/index.html +++ b/docs/variable/index.html @@ -43,8 +43,6 @@
  • plugins/FastNavPluginCFastNavPlugin
  • plugins/GLTFLoaderPluginCGLTFDefaultDataSource
  • CGLTFLoaderPlugin
  • -
  • plugins/GroundShadowPluginCGroundShadowPlugin
  • -
  • CModelGroundShadow
  • plugins/NavCubePluginCNavCubePlugin
  • plugins/OBJLoaderPluginCOBJLoaderPlugin
  • plugins/STLLoaderPluginCSTLDefaultDataSource
  • diff --git a/package.json b/package.json index bca348a164..95c60945be 100644 --- a/package.json +++ b/package.json @@ -38,10 +38,12 @@ "homepage": "https://xeokit.io", "devDependencies": { "@percy/script": "^1.1.0", - "http-server": "^0.12.3", "esdoc": "^1.1.0", + "esdoc-custom-theme": "^1.4.2", + "esdoc-publish-html-plugin": "^1.1.2", "esdoc-standard-plugin": "^1.0.0", - "eslint": "^5.16.0" + "eslint": "^5.16.0", + "http-server": "^0.12.3" }, "files": [ "/src"
    36 %8/22 10297 byte 2782021-04-03 12:02:29 (UTC)2021-04-04 11:06:37 (UTC)
    src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js AngleMeasurementsPlugin 75 %9/1210388 byte10389 byte 2662020-11-04 10:18:18 (UTC)2021-04-05 21:39:35 (UTC)
    src/plugins/AnnotationsPlugin/Annotation.js2020-11-04 10:18:18 (UTC)
    src/plugins/FastNavPlugin/FastNavPlugin.jssrc/plugins/FastNavPlugin/FastNavPlugin.js FastNavPlugin17 %3/178104 byte2562021-04-03 14:07:26 (UTC)37 %10/2711490 byte3392021-04-05 15:27:09 (UTC)
    src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js922 2021-03-06 20:36:33 (UTC)
    src/plugins/GroundShadowPlugin/GroundShadowPlugin.jsGroundShadowPlugin44 %4/93705 byte1062021-04-02 14:36:56 (UTC)
    src/plugins/GroundShadowPlugin/ModelGroundShadow.jsModelGroundShadow0 %0/71203 byte432021-03-01 12:25:33 (UTC)
    src/plugins/NavCubePlugin/CubeTextureCanvas.js -56 %14/25 14145 byte 4052021-03-04 15:07:15 (UTC)2021-04-05 21:24:51 (UTC)
    src/plugins/SkyboxesPlugin/SkyboxesPlugin.js2021-04-05 01:44:38 (UTC)
    src/plugins/TreeViewPlugin/ModelTreeView.jssrc/plugins/TreeViewPlugin/ModelTreeView.js ModelTreeView 21 %12/5631140 byte8512021-03-05 16:46:33 (UTC)31190 byte8522021-04-03 17:36:50 (UTC)
    src/plugins/TreeViewPlugin/TreeViewNode.jssrc/viewer/Viewer.js Viewer 92 %24/2613529 byte13528 byte 3692021-04-05 01:44:38 (UTC)2021-04-04 19:13:41 (UTC)
    src/viewer/metadata/IFCObjectDefaultColors.js2021-02-06 12:59:11 (UTC)
    src/viewer/scene/CameraControl/CameraControl.jssrc/viewer/scene/CameraControl/CameraControl.js CameraControl 88 %77/8756452 byte16382021-04-05 07:51:17 (UTC)56392 byte16372021-04-04 17:53:01 (UTC)
    src/viewer/scene/CameraControl/lib/CameraUpdater.jssrc/viewer/scene/CameraControl/lib/CameraUpdater.js - 12 %1/812599 byte3132020-12-05 12:38:43 (UTC)12554 byte3112021-04-04 17:53:01 (UTC)
    src/viewer/scene/CameraControl/lib/controllers/PanController.js2021-03-06 01:14:35 (UTC)
    src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.jssrc/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js -12 %1/811122 byte3412021-04-05 07:08:31 (UTC)14 %1/711188 byte3402021-04-05 10:53:36 (UTC)
    src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js - 12 %1/812948 byte12969 byte 3602021-04-05 07:14:12 (UTC)2021-04-06 15:07:58 (UTC)
    src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.jssrc/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js - 9 %6/6626149 byte26292 byte 7362021-03-02 11:37:10 (UTC)2021-04-06 21:18:17 (UTC)
    src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js13 %9/69 38529 byte 10162021-04-03 12:19:42 (UTC)2021-04-04 16:49:39 (UTC)
    src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.jssrc/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js - 2 %1/4634497 byte34507 byte 8072021-03-02 17:25:24 (UTC)2021-04-04 00:05:06 (UTC)
    src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js2 %1/41 19889 byte 5022021-04-04 15:02:37 (UTC)2021-04-04 17:00:15 (UTC)
    src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.jssrc/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js - 1 %1/5338051 byte38050 byte 8572021-03-02 17:25:59 (UTC)2021-04-03 23:58:36 (UTC)
    src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js73 %17/23 13131 byte 4222021-04-03 00:03:34 (UTC)2021-04-03 20:57:27 (UTC)
    src/viewer/scene/canvas/Spinner.js70 %26/37 15037 byte 5492021-03-01 20:37:24 (UTC)2021-04-07 00:15:04 (UTC)
    src/viewer/scene/scene/Scene.js4 %1/21 8305 byte 2682020-11-04 10:18:18 (UTC)2021-04-04 23:00:54 (UTC)
    src/viewer/scene/webgl/RenderFlags.js100 %1/1 44816 byte 12882021-04-05 01:44:38 (UTC)2021-04-04 19:32:35 (UTC)
    src/viewer/scene/webgl/Sampler.js